package com.mes.storagetask.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mes.loadposition.entity.LoadPosition; import com.mes.loadposition.mapper.LoadPositionMapper; import com.mes.rawusage.entity.RawUsage; import com.mes.rawusage.mapper.RawUsageMapper; import com.mes.shelfrack.entity.ShelfRack; import com.mes.shelfrack.entity.request.RawUsageAndShelfRack; import com.mes.shelfrack.mapper.ShelfRackMapper; import com.mes.storagetask.entity.request.StorageTaskRequest; import com.mes.storagetask.mapper.StorageTaskMapper; import com.mes.storagetask.entity.StorageTask; import com.mes.storagetask.service.StorageTaskService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; /** * @author system * @since 2024-07-09 14:51:27 */ @Service @Slf4j public class StorageTaskServiceImpl extends ServiceImpl implements StorageTaskService { @Autowired private StorageTaskMapper storageTaskMapper; @Autowired private LoadPositionMapper loadPositionMapper; @Autowired private ShelfRackMapper shelfRackMapper; @Autowired private RawUsageMapper rawUsageMapper; @Override public List findList(StorageTask params){ LambdaQueryWrapper query = Wrappers.lambdaQuery(StorageTask.class); return storageTaskMapper.selectList(query); } public Map> findLatestTasks() { Map> latestTasks = new HashMap<>(); // 查询最新的已完成任务 LambdaQueryWrapper completedWrapper = new LambdaQueryWrapper<>(); completedWrapper.eq(StorageTask::getTaskType, "已完成") .orderByDesc(StorageTask::getId) .last("LIMIT 1"); Optional latestCompletedTask = Optional.ofNullable(storageTaskMapper.selectOne(completedWrapper)); latestTasks.put("已完成", latestCompletedTask); // 查询最新的等待中任务 LambdaQueryWrapper pendingWrapper = new LambdaQueryWrapper<>(); pendingWrapper.eq(StorageTask::getTaskType, "等待中") .orderByDesc(StorageTask::getId); Optional latestPendingTask = Optional.ofNullable(storageTaskMapper.selectOne(pendingWrapper)); latestTasks.put("等待中", latestPendingTask); log.info(latestTasks+""); return latestTasks; } @Override public List Tasks() { return baseMapper.selectTasks(); } @Override public void taskUpdate(StorageTask request) { Integer taskId = request.getId(); String taskType = request.getTaskType(); String Type = request.getType(); String taskState = request.getTaskState(); String shelfRack = request.getShelfRack(); String loadRack = request.getLoadRack(); if ("重新开始".equals(Type)) { StorageTask storageTask = new StorageTask(); storageTask.setTaskState("等待中"); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(StorageTask.class) .eq(StorageTask::getId, request.getId()); storageTaskMapper.update(request,queryWrapper); } else if ("完成".equals(Type)) { StorageTask existingTask = storageTaskMapper.selectById(taskId); if (existingTask != null && "正在工作".equals(existingTask.getTaskState())) { if ("从仓位到上片位".equals(taskType) || "从仓位到吊装位".equals(taskType)) { LoadPosition loadPosition = new LoadPosition(); loadPosition.setState("正在使用"); loadPosition.setStorageTaskId(request.getId()); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(LoadPosition.class) .eq(LoadPosition::getNumber, request.getLoadRack()); loadPositionMapper.update(loadPosition, queryWrapper); StorageTask storageTask = new StorageTask(); storageTask.setTaskState("正在使用"); LambdaQueryWrapper StorageTaskqueryWrapper = Wrappers.lambdaQuery(StorageTask.class) .eq(StorageTask::getId, request.getId()); storageTaskMapper.update(request,StorageTaskqueryWrapper); } else if ("从上片位到仓位".equals(taskType)) { LoadPosition loadPosition = new LoadPosition(); loadPosition.setState("使用中"); loadPosition.setStorageTaskId(null); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(LoadPosition.class) .eq(LoadPosition::getNumber, request.getLoadRack()); loadPositionMapper.update(loadPosition, queryWrapper); ShelfRack loshelfRack = new ShelfRack(); LambdaQueryWrapper RawUsagequeryWrapper = Wrappers.lambdaQuery(RawUsage.class) .eq(RawUsage::getId,loshelfRack.getRawPackageId()); RawUsage RawUsage = rawUsageMapper.selectOne(RawUsagequeryWrapper); if(RawUsage.getLeftPieces()==0){ loshelfRack.setState("空闲"); }else { loshelfRack.setState("使用中"); } LambdaQueryWrapper loshelfRackqueryWrapper = Wrappers.lambdaQuery(ShelfRack.class) .eq(ShelfRack::getNumber, request.getLoadRack()); shelfRackMapper.update(loshelfRack, loshelfRackqueryWrapper); } else if ("从吊装位到仓位".equals(taskType)) { LoadPosition loadPosition = new LoadPosition(); loadPosition.setState("空闲"); loadPosition.setStorageTaskId(null); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(LoadPosition.class) .eq(LoadPosition::getNumber, request.getLoadRack()); loadPositionMapper.update(loadPosition, queryWrapper); ShelfRack loshelfRack = new ShelfRack(); LambdaQueryWrapper RawUsagequeryWrapper = Wrappers.lambdaQuery(RawUsage.class) .eq(RawUsage::getId,loshelfRack.getRawPackageId()); RawUsage RawUsage = rawUsageMapper.selectOne(RawUsagequeryWrapper); if(RawUsage.getLeftPieces()==1){ loshelfRack.setEnableState("启用"); }else { loshelfRack.setEnableState(loshelfRack.getEnableState()); } loadPosition.setState("使用中"); LambdaQueryWrapper loshelfRackqueryWrapper = Wrappers.lambdaQuery(ShelfRack.class) .eq(ShelfRack::getNumber, request.getLoadRack()); shelfRackMapper.update(loshelfRack, loshelfRackqueryWrapper); } StorageTask storageTask = new StorageTask(); storageTask.setTaskState("已完成"); LambdaQueryWrapper StorageTaskqueryWrapper = Wrappers.lambdaQuery(StorageTask.class) .eq(StorageTask::getId, request.getId()); storageTaskMapper.update(storageTask, StorageTaskqueryWrapper); } } else if ("删除".equals(Type)) { LambdaQueryWrapper StorageTaskqueryWrapper = Wrappers.lambdaQuery(StorageTask.class) .eq(StorageTask::getId, request.getId()); storageTaskMapper.delete(StorageTaskqueryWrapper); } } }