From 89c7f6e5bcc21b0e8f83a2bc6d680e2ffe431e6f Mon Sep 17 00:00:00 2001 From: vincentlu <t1341870251@gmail.com> Date: 星期一, 13 一月 2025 09:38:29 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java | 199 +++++++++++++++++++++++++++++++++++-------------- 1 files changed, 142 insertions(+), 57 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java index 2e9a36d..9074ef0 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java @@ -7,16 +7,12 @@ import com.zy.acs.framework.common.SnowflakeIdWorker; import com.zy.acs.framework.exception.CoolException; import com.zy.acs.manager.common.exception.BusinessException; -import com.zy.acs.manager.manager.entity.FuncSta; -import com.zy.acs.manager.manager.entity.Loc; -import com.zy.acs.manager.manager.entity.Sta; -import com.zy.acs.manager.manager.entity.Task; +import com.zy.acs.manager.core.domain.Lane; +import com.zy.acs.manager.core.service.LaneService; +import com.zy.acs.manager.manager.entity.*; import com.zy.acs.manager.manager.enums.*; import com.zy.acs.manager.manager.mapper.TaskMapper; -import com.zy.acs.manager.manager.service.CodeService; -import com.zy.acs.manager.manager.service.FuncStaService; -import com.zy.acs.manager.manager.service.LocService; -import com.zy.acs.manager.manager.service.TaskService; +import com.zy.acs.manager.manager.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,13 +25,19 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements TaskService { @Autowired + private BusService busService; + @Autowired private CodeService codeService; @Autowired private LocService locService; @Autowired + private StaService staService; + @Autowired private FuncStaService funcStaService; @Autowired private SnowflakeIdWorker snowflakeIdWorker; + @Autowired + private LaneService laneService; @Override public synchronized String generateSeqNum() { @@ -75,9 +77,135 @@ } @Override + public List<Map<String, Object>> selectStatByLastSevenDays() { + return this.baseMapper.selectStatByLastSevenDays(); + } + + @Override @Transactional - public void operateTaskSts(Integer taskId, Boolean finish) { + public Boolean complete(Long taskId, Long userId) { Task task = this.getById(taskId); + if (null == task) { + return Boolean.FALSE; + } + this.maintainLocSts(task, Boolean.TRUE); + + task.setTaskSts(TaskStsType.COMPLETE.val()); + task.setUpdateTime(new Date()); + task.setUpdateBy(userId); + if (!this.updateById(task)) { + throw new CoolException(BaseRes.ERROR); + } + busService.checkoutComplete(task.getBusId()); + return Boolean.TRUE; + } + + @Override + @Transactional + public Boolean cancel(Long taskId, Long userId) { + Task task = this.getById(taskId); + if (null == task) { + return Boolean.FALSE; + } + this.maintainLocSts(task, Boolean.FALSE); + + task.setTaskSts(TaskStsType.CANCEL.val()); + task.setUpdateTime(new Date()); + task.setUpdateBy(userId); + if (!this.updateById(task)) { + throw new CoolException(BaseRes.ERROR); + } + busService.checkoutComplete(task.getBusId()); + return Boolean.TRUE; + } + + @Override + public Lane checkoutOriginLane(Task task) { + Long codeId = null; + TaskTypeType typeType = TaskTypeType.get(task.getTaskTypeEl()); + switch (Objects.requireNonNull(typeType)) { + case LOC_TO_LOC: + case LOC_TO_STA: + codeId = locService.getById(task.getOriLoc()).getCode(); + break; + case STA_TO_LOC: + case STA_TO_STA: + codeId = staService.getById(task.getOriSta()).getCode(); + break; + default: + break; + } + + if (null == codeId) { + return null; + } + return laneService.search(codeService.getById(codeId).getData()); + } + + @Override + public Lane checkoutDestinationLane(Task task) { + Long codeId = null; + TaskTypeType typeType = TaskTypeType.get(task.getTaskTypeEl()); + switch (Objects.requireNonNull(typeType)) { + case LOC_TO_LOC: + case STA_TO_LOC: + codeId = locService.getById(task.getDestLoc()).getCode(); + break; + case LOC_TO_STA: + case STA_TO_STA: + codeId = staService.getById(task.getDestSta()).getCode(); + break; + default: + break; + } + + if (null == codeId) { + return null; + } + return laneService.search(codeService.getById(codeId).getData()); + } + + @Override + public List<Task> findRunningTasksByLaneHash(String laneHash) { + if (Cools.isEmpty(laneHash)) { + return new ArrayList<>(); + } + return this.list(new LambdaQueryWrapper<Task>() + .in(Task::getTaskSts, TaskStsType.WAITING.val(), TaskStsType.ASSIGN.val(), TaskStsType.PROGRESS.val()) + .and(i -> { + i.eq(Task::getOriLaneHash, laneHash).or().eq(Task::getDestLaneHash, laneHash); + }) + + ); + } + + @Override + public List<Task> findTransportTasksByAgv(Long agvId) { + if (null == agvId) { + return new ArrayList<>(); + } + LambdaQueryWrapper<Task> wrapper = new LambdaQueryWrapper<Task>().eq(Task::getAgvId, agvId); + wrapper.in(Task::getTaskSts, TaskStsType.WAITING.val(), TaskStsType.ASSIGN.val(), TaskStsType.PROGRESS.val()); + wrapper.notIn(Task::getTaskType, TaskTypeType.MOVE.val(), TaskTypeType.TO_CHARGE.val(), TaskTypeType.TO_STANDBY.val()); + return this.list(wrapper); + } + + @Override + public Task findLatestTask(Long agvId, TaskStsType taskSts) { + LambdaQueryWrapper<Task> wrapper = new LambdaQueryWrapper<Task>() + .orderByDesc(Task::getCreateTime) + .last("limit 0, 1"); + if (null != agvId) { + wrapper.eq(Task::getAgvId, agvId); + } + if (null != taskSts) { + wrapper.eq(Task::getTaskSts, taskSts.val()); + } + return this.list(wrapper).stream().findFirst().orElse(null); + } + + @Transactional + public void maintainLocSts(Task task, Boolean complete) { Loc oriLoc = null; Loc destLoc = null; Sta oriSta = null; Sta destSta = null; Date now = new Date(); @@ -87,13 +215,13 @@ oriLoc = locService.getById(task.getOriLoc()); destLoc = locService.getById(task.getDestLoc()); - oriLoc.setLocSts(finish?LocStsType.IDLE.val():LocStsType.STOCK.val()); + oriLoc.setLocSts(complete?LocStsType.IDLE.val():LocStsType.STOCK.val()); oriLoc.setUpdateTime(now); if (!locService.updateById(oriLoc)) { throw new BusinessException("Loc [" + task.getOriLoc$() + "] 搴撲綅淇敼鐘舵�佸け璐� 锛侊紒锛�"); } - destLoc.setLocSts(finish?LocStsType.STOCK.val():LocStsType.IDLE.val()); + destLoc.setLocSts(complete?LocStsType.STOCK.val():LocStsType.IDLE.val()); destLoc.setUpdateTime(now); if (!locService.updateById(destLoc)) { throw new BusinessException("Loc [" + task.getDestLoc$() + "] 搴撲綅淇敼鐘舵�佸け璐� 锛侊紒锛�"); @@ -101,7 +229,7 @@ break; case LOC_TO_STA: oriLoc = locService.getById(task.getOriLoc()); - oriLoc.setLocSts(finish?LocStsType.IDLE.val():LocStsType.STOCK.val()); + oriLoc.setLocSts(complete?LocStsType.IDLE.val():LocStsType.STOCK.val()); oriLoc.setUpdateTime(now); if (!locService.updateById(oriLoc)) { throw new BusinessException("Loc [" + task.getOriLoc$() + "] 搴撲綅淇敼鐘舵�佸け璐� 锛侊紒锛�"); @@ -109,7 +237,7 @@ break; case STA_TO_LOC: destLoc = locService.getById(task.getDestLoc()); - destLoc.setLocSts(finish?LocStsType.STOCK.val():LocStsType.IDLE.val()); + destLoc.setLocSts(complete?LocStsType.STOCK.val():LocStsType.IDLE.val()); destLoc.setUpdateTime(now); if (!locService.updateById(destLoc)) { throw new BusinessException("Loc [" + task.getDestLoc$() + "] 搴撲綅淇敼鐘舵�佸け璐� 锛侊紒锛�"); @@ -120,7 +248,7 @@ case TO_CHARGE: case TO_STANDBY: FuncSta funcSta = funcStaService.getByCodeAndType(task.getDestCode(), FuncStaType.query(typeType).toString()); - if (!finish) { + if (!complete) { funcSta.setState(FuncStaStateType.IDLE.toString()); funcSta.setUpdateTime(now); if (!funcStaService.updateById(funcSta)) { @@ -131,49 +259,6 @@ default: break; } - task.setTaskSts(TaskStsType.COMPLETE.val()); - task.setUpdateTime(now); - if (!this.updateById(task)) { - throw new BusinessException(task.getSeqNum() + "浠诲姟鏇存柊鐘舵�佸け璐�"); - } } - - @Override - public List<Map<String, Object>> selectStatByLastSevenDays() { - return this.baseMapper.selectStatByLastSevenDays(); - } - - @Override - public Boolean complete(Long taskId, Long userId) { - Task task = this.getById(taskId); - if (null == task) { - return Boolean.FALSE; - } - - task.setTaskSts(TaskStsType.COMPLETE.val()); - task.setUpdateTime(new Date()); - task.setUpdateBy(userId); - if (!this.updateById(task)) { - throw new CoolException(BaseRes.ERROR); - } - return Boolean.TRUE; - } - - @Override - public Boolean cancel(Long taskId, Long userId) { - Task task = this.getById(taskId); - if (null == task) { - return Boolean.FALSE; - } - - task.setTaskSts(TaskStsType.CANCEL.val()); - task.setUpdateTime(new Date()); - task.setUpdateBy(userId); - if (!this.updateById(task)) { - throw new CoolException(BaseRes.ERROR); - } - return Boolean.TRUE; - } - } -- Gitblit v1.9.1