package com.mes.rawglasstask.service.impl;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.mes.common.config.Const;
|
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
|
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
|
import com.mes.rawglassstation.entity.RawGlassStorageStation;
|
import com.mes.rawglasstask.entity.RawGlassStorageTask;
|
import com.mes.rawglasstask.entity.request.RawGlassTaskRequest;
|
import com.mes.rawglasstask.mapper.RawGlassStorageTaskMapper;
|
import com.mes.rawglasstask.service.RawGlassStorageTaskService;
|
import com.mes.tools.DateUtil;
|
import com.mes.utils.RedisUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @author system
|
* @since 2024-07-09 14:51:27
|
*/
|
@Service
|
@Slf4j
|
public class RawGlassRawGlassStorageTaskServiceImpl extends ServiceImpl<RawGlassStorageTaskMapper, RawGlassStorageTask> implements RawGlassStorageTaskService {
|
|
@Autowired
|
RedisUtil redisUtil;
|
|
@Resource
|
RawGlassStorageDetailsService rawGlassStorageDetailsService;
|
|
@Override
|
public Page<RawGlassStorageTask> queryRawGlassHistoryTask(RawGlassTaskRequest request) {
|
if (request.getBeginDate() == null) {
|
//设置默认时间 startDate:开始时间 endDate:结束时间
|
request.setBeginDate(DateUtil.getBeginDate());
|
request.setEndDate(DateUtil.getEndDate());
|
}
|
Page<RawGlassStorageTask> page = new Page<>(request.getPageNo(), request.getPageSize());
|
return page(page, new LambdaQueryWrapper<RawGlassStorageTask>()
|
.between(RawGlassStorageTask::getCreateTime, request.getBeginDate(), request.getEndDate())
|
.in(CollectionUtil.isNotEmpty(request.getTaskState()), RawGlassStorageTask::getTaskState, request.getTaskState())
|
.in(CollectionUtil.isNotEmpty(request.getTaskType()), RawGlassStorageTask::getTaskType, request.getTaskType())
|
.orderByDesc(RawGlassStorageTask::getCreateTime));
|
}
|
|
@Override
|
public List<RawGlassStorageTask> listRawGlassTask() {
|
RawGlassTaskRequest request = redisUtil.getCacheObject("rawGlassTaskRequest");
|
if (null == request) {
|
request = new RawGlassTaskRequest();
|
}
|
if (request.getBeginDate() == null) {
|
//设置默认时间 startDate:开始时间 endDate:结束时间
|
request.setBeginDate(DateUtil.getBeginDate());
|
request.setEndDate(DateUtil.getEndDate());
|
}
|
return list(new LambdaQueryWrapper<RawGlassStorageTask>()
|
.between(RawGlassStorageTask::getCreateTime, request.getBeginDate(), request.getEndDate())
|
.in(CollectionUtil.isNotEmpty(request.getTaskState()), RawGlassStorageTask::getTaskState, request.getTaskState())
|
.in(CollectionUtil.isNotEmpty(request.getTaskType()), RawGlassStorageTask::getTaskType, request.getTaskType())
|
.orderByDesc(RawGlassStorageTask::getCreateTime));
|
|
}
|
|
@Override
|
public String setRawGlassTaskRequest(RawGlassTaskRequest request) {
|
if (request == null) {
|
redisUtil.deleteObject("rawGlassTaskRequest");
|
} else {
|
redisUtil.setCacheObject("rawGlassTaskRequest", request);
|
}
|
log.info("前端传入参数:{}", request);
|
return "success";
|
}
|
|
@Override
|
public Boolean taskSuccess(Long taskId) {
|
//获取任务正在执行的任务信息
|
RawGlassStorageTask task = this.getById(taskId);
|
//去详情表获取正在执行的原片详情信息
|
RawGlassStorageDetails details = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
|
.ne(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT).eq(RawGlassStorageDetails::getSlot, task.getStartSlot())
|
);
|
if(details!=null){
|
RawGlassStorageDetails targetDetails = rawGlassStorageDetailsService.generateDetails(details, task.getEndSlot());
|
int deviceId = details.getDeviceId();
|
Integer taskType = task.getTaskType();
|
log.info("将详情表的状态改为已出库");
|
rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
|
.set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
|
.ne(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
|
.eq(RawGlassStorageDetails::getSlot, task.getStartSlot()));
|
log.info("任务状态已更改为:已完成");
|
this.update(new LambdaUpdateWrapper<RawGlassStorageTask>()
|
.eq(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW)
|
.set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_SUCCESS));
|
switch (taskType) {
|
case 1:
|
case 3:
|
log.info("1、入库,3、调度任务。{}", taskType);
|
if (details.getRemainQuantity() > 0) {
|
rawGlassStorageDetailsService.save(targetDetails);
|
}
|
break;
|
case 2:
|
case 4:
|
log.info("2、出片,4、入库请求。{}", taskType);
|
targetDetails = new RawGlassStorageDetails();
|
targetDetails.setSlot(task.getEndSlot());
|
targetDetails.setDeviceId(deviceId);
|
targetDetails.setShelf(task.getStartSlot());
|
targetDetails.setState(Const.RAW_GLASS_STATE_IN);
|
rawGlassStorageDetailsService.save(targetDetails);
|
break;
|
default:
|
break;
|
}
|
}
|
return Boolean.TRUE;
|
}
|
|
|
@Override
|
public Boolean taskError(Long taskId) {
|
//获取任务正在执行的任务信息
|
RawGlassStorageTask task = this.getById(taskId);
|
Integer taskType = task.getTaskType();
|
if (taskType.equals(Const.RAW_GLASS_TASK_TYPE_IN_REQUEST)) {
|
rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
|
.set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
|
.eq(RawGlassStorageDetails::getSlot, task.getStartSlot())
|
.in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING, Const.RAW_GLASS_STATE_CAR));
|
} else {
|
rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
|
.set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
|
.eq(RawGlassStorageDetails::getSlot, task.getStartSlot())
|
.in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING, Const.RAW_GLASS_STATE_CAR));
|
}
|
this.update(new LambdaUpdateWrapper<RawGlassStorageTask>()
|
.eq(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW)
|
.set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_FAILURE));
|
return Boolean.TRUE;
|
}
|
|
|
}
|