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/AgvServiceImpl.java | 99 ++++++++++++++++++++++++++++++++----------------- 1 files changed, 65 insertions(+), 34 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java index 844be39..95f8cbf 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java @@ -11,9 +11,11 @@ import com.zy.acs.manager.common.domain.PageResult; import com.zy.acs.manager.core.domain.VehicleDto; import com.zy.acs.manager.manager.controller.result.AgvResult; -import com.zy.acs.manager.manager.entity.*; +import com.zy.acs.manager.manager.entity.Agv; +import com.zy.acs.manager.manager.entity.AgvDetail; +import com.zy.acs.manager.manager.entity.AgvModel; +import com.zy.acs.manager.manager.entity.Segment; import com.zy.acs.manager.manager.enums.SegmentStateType; -import com.zy.acs.manager.manager.enums.StatusType; import com.zy.acs.manager.manager.mapper.AgvMapper; import com.zy.acs.manager.manager.service.*; import com.zy.acs.manager.system.service.ConfigService; @@ -21,8 +23,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.PostConstruct; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 瀛楀吀鏁版嵁Service瀹炵幇 @@ -36,6 +41,10 @@ private final RedisSupport redis = RedisSupport.defaultRedisSupport; + private static final Map<String, Long> AGV_ID_MAP = new HashMap<>(); + + private static final Map<Long, String> AGV_NO_MAP = new HashMap<>(); + @Autowired private AgvDetailService agvDetailService; @Autowired @@ -46,6 +55,16 @@ private CodeService codeService; @Autowired private SegmentService segmentService; + @Autowired + private TaskService taskService; + + @PostConstruct + public void init() { + for (Agv agv : this.list()) { + AGV_ID_MAP.put(agv.getUuid(), agv.getId()); + AGV_NO_MAP.put(agv.getId(), agv.getUuid()); + } + } @Override public PageResult<AgvResult> pageRel(PageParam<Agv, BaseParam> pageParam) { @@ -58,12 +77,21 @@ } @Override - public Agv queryIdle(Task task) { - if (Cools.isEmpty(task)) { + public Long getAgvId(String uuid) { + if (Cools.isEmpty(uuid)) { return null; } - return null; + return AGV_ID_MAP.get(uuid); } + + @Override + public String getAgvNo(Long agvId) { + if (Cools.isEmpty(agvId)) { + return null; + } + return AGV_NO_MAP.get(agvId); + } + @Override public Boolean judgeEnable(Long agvId) { @@ -71,54 +99,52 @@ } @Override - public Boolean judgeEnable(Long agvId, Boolean withBattery) { - Agv agv = this.getById(agvId); - AgvModel agvModel = agvModelService.getById(agv.getAgvModel()); - if (segmentService.count(new LambdaQueryWrapper<Segment>() + public Boolean judgeEnable(Long agvId, Boolean isLowBattery) { + String agvNo = this.getAgvNo(agvId); + AgvModel agvModel = agvModelService.getByAgvId(agvId); + if (0 < segmentService.count(new LambdaQueryWrapper<Segment>() .eq(Segment::getAgvId, agvId) - .and( i -> { -// i.eq(Segment::getState, SegmentStateType.WAITING.toString()).or() - i.eq(Segment::getState, SegmentStateType.RUNNING.toString()); - }) - ) > 0) { - log.warn("[{}]鍙稟gv姝e湪蹇欑 -segment......", agv.getUuid()); + .eq(Segment::getState, SegmentStateType.RUNNING.toString()) + )) { + log.warn("[{}]鍙稟gv姝e湪蹇欑 - segment......", agvNo); return false; } - if (!this.judgeOnline(agv.getId())) { - log.warn("[{}]鍙稟gv涓嶆槸鍦ㄧ嚎鐘舵��......", agv.getUuid()); + if (!this.judgeOnline(agvId)) { + log.warn("[{}]鍙稟gv涓嶆槸鍦ㄧ嚎鐘舵��......", agvNo); return false; } - AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId()); + AgvDetail agvDetail = agvDetailService.selectMajorByAgvId(agvId); if (null == agvDetail) { - log.warn("[{}]鍙稟gv鏈敹鍒扮姸鎬佸寘......", agv.getUuid()); + log.warn("[{}]鍙稟gv鏈敹鍒扮姸鎬佸寘......", agvNo); return false; } if (agvDetail.getVol() == 0) { return false; } if (!agvDetail.getAgvStatus().equals(AgvStatusType.IDLE) && !agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) { - log.warn("[{}]鍙稟gv涓嶆槸绌洪棽鐘舵��......", agv.getUuid()); + log.warn("[{}]鍙稟gv涓嶆槸绌洪棽鐘舵��......", agvNo); return false; } if (agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) { - if (agvDetail.getVol() <= agvModel.getQuaBattery()) { + if (agvDetail.getVol() < agvModel.getQuaBattery()) { return false; } } if (!agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) { if (agvDetail.getPos() != 1) { - log.warn("[{}]鍙稟gv褰撳墠涓嶅湪瀹氫綅......", agv.getUuid()); + log.warn("[{}]鍙稟gv褰撳墠涓嶅湪瀹氫綅......", agvNo); + return false; + } + if (null == agvDetail.getRecentCode()) { + log.warn("[{}]鍙稟gv褰撳墠涓嶅湪瀹氫綅......", agvNo); return false; } } // with battery - if (withBattery) { - if (agvDetail.getVol() < agv.getChargeLine()) { - log.warn("[{}]鍙稟gv鐢甸噺涓嶈冻......", agv.getUuid()); - return false; - } - if (agvDetail.getVol() < agvModel.getLowBattery()) { - log.warn("[{}]鍙稟gv鐢甸噺涓嶈冻......", agv.getUuid()); + if (isLowBattery) { + Agv agv = this.getById(agvId); + if (agvDetailService.isPowerLoss(agv, agvDetail, agvModel)) { + log.warn("[{}]鍙稟gv鐢甸噺涓嶈冻......", agvNo); return false; } } @@ -153,22 +179,27 @@ @Override public Integer getBackpack(Agv agv) { - if (null != agv.getStage()) { - return agv.getStage(); - } - AgvModel agvModel = agvModelService.getById(agv.getAgvModel()); +// if (null != agv.getStage()) { +// return agv.getStage(); +// } + AgvModel agvModel = agvModelService.getByAgvId(agv.getId()); assert null != agvModel; return agvModel.getBackpack(); } @Override public Agv findByPosition(Long codeId) { - List<Agv> agvList = this.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, StatusType.ENABLE.val)); + List<Agv> agvList = this.list(new LambdaQueryWrapper<Agv>() +// .eq(Agv::getStatus, StatusType.ENABLE.val) + ); for (Agv agv : agvList) { AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId()); if (null == agvDetail) { continue; } + if (null == agvDetail.getRecentCode()) { + continue; + } if (agvDetail.getRecentCode().equals(codeId)) { return agv; } -- Gitblit v1.9.1