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.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 implements RawGlassStorageTaskService { @Autowired RedisUtil redisUtil; @Resource RawGlassStorageDetailsService rawGlassStorageDetailsService; @Override public List queryRawGlassHistoryTask(RawGlassTaskRequest request) { if (null == request) { request = new RawGlassTaskRequest(); } if (request.getBeginDate() == null) { //设置默认时间 startDate:开始时间 endDate:结束时间 request.setBeginDate(DateUtil.getBeginDate()); request.setEndDate(DateUtil.getEndDate()); } return list(new LambdaQueryWrapper() .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 listRawGlassTask() { RawGlassTaskRequest request = redisUtil.getCacheObject("rawGlassTaskRequest"); return queryRawGlassHistoryTask(request); } @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() .ne(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT).eq(RawGlassStorageDetails::getSlot, task.getStartSlot()) ); RawGlassStorageDetails targetDetails = rawGlassStorageDetailsService.generateDetails(details, task.getEndSlot()); int deviceId = details.getDeviceId(); Integer taskType = task.getTaskType(); log.info("将详情表的状态改为已出库"); rawGlassStorageDetailsService.update(new LambdaUpdateWrapper() .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() .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() .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() .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() .eq(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW) .set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_FAILURE)); return Boolean.TRUE; } }