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<StorageTaskMapper, StorageTask> implements StorageTaskService {
|
|
@Autowired
|
private StorageTaskMapper storageTaskMapper;
|
@Autowired
|
private LoadPositionMapper loadPositionMapper;
|
@Autowired
|
private ShelfRackMapper shelfRackMapper;
|
@Autowired
|
private RawUsageMapper rawUsageMapper;
|
|
|
@Override
|
public List<StorageTask> findList(StorageTask params){
|
LambdaQueryWrapper<StorageTask> query = Wrappers.lambdaQuery(StorageTask.class);
|
return storageTaskMapper.selectList(query);
|
}
|
|
|
public Map<String, Optional<StorageTask>> findLatestTasks() {
|
Map<String, Optional<StorageTask>> latestTasks = new HashMap<>();
|
|
// 查询最新的已完成任务
|
LambdaQueryWrapper<StorageTask> completedWrapper = new LambdaQueryWrapper<>();
|
completedWrapper.eq(StorageTask::getTaskType, "已完成")
|
.orderByDesc(StorageTask::getId)
|
.last("LIMIT 1");
|
Optional<StorageTask> latestCompletedTask = Optional.ofNullable(storageTaskMapper.selectOne(completedWrapper));
|
latestTasks.put("已完成", latestCompletedTask);
|
|
// 查询最新的等待中任务
|
LambdaQueryWrapper<StorageTask> pendingWrapper = new LambdaQueryWrapper<>();
|
pendingWrapper.eq(StorageTask::getTaskType, "等待中")
|
.orderByDesc(StorageTask::getId);
|
Optional<StorageTask> latestPendingTask = Optional.ofNullable(storageTaskMapper.selectOne(pendingWrapper));
|
latestTasks.put("等待中", latestPendingTask);
|
log.info(latestTasks+"");
|
return latestTasks;
|
}
|
|
|
@Override
|
public List<StorageTaskRequest> 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<StorageTask> 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<LoadPosition> queryWrapper = Wrappers.lambdaQuery(LoadPosition.class)
|
.eq(LoadPosition::getNumber, request.getLoadRack());
|
loadPositionMapper.update(loadPosition, queryWrapper);
|
StorageTask storageTask = new StorageTask();
|
storageTask.setTaskState("正在使用");
|
LambdaQueryWrapper<StorageTask> 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<LoadPosition> queryWrapper = Wrappers.lambdaQuery(LoadPosition.class)
|
.eq(LoadPosition::getNumber, request.getLoadRack());
|
loadPositionMapper.update(loadPosition, queryWrapper);
|
ShelfRack loshelfRack = new ShelfRack();
|
LambdaQueryWrapper<RawUsage> 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<ShelfRack> 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<LoadPosition> queryWrapper = Wrappers.lambdaQuery(LoadPosition.class)
|
.eq(LoadPosition::getNumber, request.getLoadRack());
|
loadPositionMapper.update(loadPosition, queryWrapper);
|
ShelfRack loshelfRack = new ShelfRack();
|
LambdaQueryWrapper<RawUsage> 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<ShelfRack> loshelfRackqueryWrapper = Wrappers.lambdaQuery(ShelfRack.class)
|
.eq(ShelfRack::getNumber, request.getLoadRack());
|
shelfRackMapper.update(loshelfRack, loshelfRackqueryWrapper);
|
}
|
StorageTask storageTask = new StorageTask();
|
storageTask.setTaskState("已完成");
|
LambdaQueryWrapper<StorageTask> StorageTaskqueryWrapper = Wrappers.lambdaQuery(StorageTask.class)
|
.eq(StorageTask::getId, request.getId());
|
storageTaskMapper.update(storageTask, StorageTaskqueryWrapper);
|
}
|
} else if ("删除".equals(Type)) {
|
|
LambdaQueryWrapper<StorageTask> StorageTaskqueryWrapper = Wrappers.lambdaQuery(StorageTask.class)
|
.eq(StorageTask::getId, request.getId());
|
storageTaskMapper.delete(StorageTaskqueryWrapper);
|
}
|
}
|
|
|
|
|
}
|