From e4fead2e56d729d91be4ad9d7241bbe30f5af378 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期日, 29 九月 2024 10:40:54 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/MissionServiceImpl.java | 79 +++++++++++++++++++++++++++++++++++---- 1 files changed, 70 insertions(+), 9 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/MissionServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/MissionServiceImpl.java index 7a0f298..9a1959f 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/MissionServiceImpl.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/MissionServiceImpl.java @@ -1,14 +1,20 @@ package com.zy.acs.manager.manager.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.manager.controller.result.MissionVo; +import com.zy.acs.manager.manager.entity.Action; +import com.zy.acs.manager.manager.entity.AgvDetail; +import com.zy.acs.manager.manager.entity.Code; +import com.zy.acs.manager.manager.entity.Segment; import com.zy.acs.manager.manager.enums.SegmentStateType; -import com.zy.acs.manager.manager.service.MissionService; -import com.zy.acs.manager.manager.service.SegmentService; +import com.zy.acs.manager.manager.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * Created by vincent on 9/27/2024 @@ -18,19 +24,74 @@ @Autowired private SegmentService segmentService; + @Autowired + private ActionService actionService; + @Autowired + private CodeService codeService; + @Autowired + private AgvDetailService agvDetailService; @Override - public List<MissionVo> getList() { + public List<MissionVo> getList(Long agvId, String groupNo) { List<MissionVo> result = new ArrayList<>(); - List<String> runningGroupNos = segmentService.getGroupNo(SegmentStateType.RUNNING); - for (String groupNo : runningGroupNos) { - MissionVo vo = new MissionVo(); - - vo.setGroupNo(groupNo); - result.add(vo); + List<String> runningGroupNos = segmentService.getGroupNo(SegmentStateType.RUNNING, agvId, groupNo); + for (String runningGroupNo : runningGroupNos) { + MissionVo vo = generate(runningGroupNo); + if (null != vo) { + result.add(vo); + } } return result; } + public MissionVo generate(String groupNo) { + List<Segment> list = segmentService.list(new LambdaQueryWrapper<Segment>().eq(Segment::getGroupId, groupNo).orderByAsc(Segment::getSerial)); + if (Cools.isEmpty(list)) { + return null; + } + Segment segment = list.get(0); + + MissionVo vo = new MissionVo(); + vo.setGroupNo(groupNo); + vo.setId(segment.getId()); + vo.setPosType(segment.getPosType()); + vo.setAgv(segment.getAgvId$()); + vo.setTaskNos(list.stream().map(Segment::getTaskId$).collect(Collectors.toList())); + vo.setBackpack(segment.getBackpack()); + vo.setDestCode(segment.getEndNode$()); + vo.setProgress(calcProgress(groupNo)); + return vo; + } + + public Double calcProgress(String groupNo) { + double progress = 0D; + List<Action> actionList = actionService.list(new LambdaQueryWrapper<Action>() + .eq(Action::getGroupId, groupNo). + orderByDesc(Action::getPriority)); + + if (Cools.isEmpty(actionList)) { + return progress; + } + + Action action = actionList.get(0); + AgvDetail agvDetail = agvDetailService.selectByAgvId(action.getAgvId()); + Long recentCode = agvDetail.getRecentCode(); + if (null == recentCode) { + return progress; + } + Code code = codeService.getById(recentCode); + + List<String> codeList = actionList.stream().map(Action::getCode).collect(Collectors.toList()); + + int totalCodes = codeList.size(); + int currentIndex = codeList.indexOf(code.getData()); + + if (currentIndex >= 0) { + progress = (currentIndex + 1) * 100.0 / totalCodes; + } + + return progress; + } + } -- Gitblit v1.9.1