From e156048b1ea844434ca7675af45e37a2dfad6e8c Mon Sep 17 00:00:00 2001 From: pjb <pjb123456> Date: 星期一, 16 六月 2025 14:18:55 +0800 Subject: [PATCH] rgv调度优化 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 121 +++++++++++++++------------------------ 1 files changed, 47 insertions(+), 74 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index d451a62..86f45c2 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -1,26 +1,24 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; -import com.core.common.R; -import com.core.exception.CoolException; -import com.zy.asrs.entity.*; +import com.zy.asrs.entity.BasCircularShuttle; +import com.zy.asrs.entity.BasDevpPosition; +import com.zy.asrs.entity.BasRgv; +import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.BasCircularShuttleService; import com.zy.asrs.service.BasDevpPositionService; import com.zy.asrs.service.WrkMastService; -import com.zy.asrs.task.core.ReturnT; -import com.zy.asrs.task.escalationParam.RgvTaskReportingParam; -import com.zy.asrs.utils.PostMesDataUtils; import com.zy.asrs.utils.SortTheExecutionOfTheCarUtil; import com.zy.asrs.utils.TimeCalculatorUtils; -import com.zy.common.CodeRes; import com.zy.common.service.CommonService; -import com.zy.common.utils.HttpHandler; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.SlaveConnection; -import com.zy.core.enums.*; +import com.zy.core.enums.RgvModeType; +import com.zy.core.enums.RgvStatusType; +import com.zy.core.enums.RgvTaskModeType; +import com.zy.core.enums.SlaveType; import com.zy.core.model.RgvSlave; import com.zy.core.model.Task; import com.zy.core.model.command.RgvCommand; @@ -34,7 +32,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; /** * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔� @@ -68,6 +68,14 @@ private Long rgvCount; @Value("${constant-parameters.rgvDate}") private Double rgvDate; + @Value("${wms.url}") + private String wmsUrl; + @Value("${wms.reportOutPath}") + private String wmsOutPath; + @Value("${wms.reportSwitch}") + private boolean reportSwitch; + @Value("${wms.reportSwitchAuto}") + private boolean reportSwitchAuto; /* * 楠岃瘉璁稿彲璇佹槸鍚︽湁鏁� @@ -90,7 +98,7 @@ */ public synchronized void updateStePositionNearby() { try { - List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 1L)); + List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 9L).eq("rgv_no",0)); if (wrkMasts.isEmpty()) { return; } @@ -217,7 +225,7 @@ */ public synchronized void DevpTaskNoRun() { try { - List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 1L).orderBy("modi_time", true)); + List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("rgv_no", 0).eq("wrk_sts",9).orderBy("modi_time", true)); if (wrkMasts.isEmpty()) { return; } @@ -251,7 +259,7 @@ List<WrkMast> wrkMastlistA = new ArrayList<>(); List<WrkMast> wrkMastlistB = new ArrayList<>(); for (BasDevpPosition basDevpPosition : basDevpPositionsListUN) { - List<WrkMast> wrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("sta_no", basDevpPosition.getDevNo()).eq("wrk_sts", 1L).orderBy("modi_time", true)); + List<WrkMast> wrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("rgv_ssta_no", basDevpPosition.getDevNo()).eq("rgv_no", 0).orderBy("modi_time", true)); for (WrkMast wrkMast : wrkMastList) { if (!Cools.isEmpty(wrkMast)) { if (SortTheExecutionOfTheCarUtil.devpNoSortbj(basDevpPositionsListUN, wrkMast.getSourceStaNo(), wrkMast.getStaNo())) { @@ -292,20 +300,19 @@ continue; } - List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("rgv_no", rgvProtocol.getRgvNo()).eq("wrk_sts", 2L)); + List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("rgv_no", rgvProtocol.getRgvNo()).eq("wrk_sts",10)); if (!wrkMasts.isEmpty()) { continue; } - if (rgvProtocol != null - && rgvProtocol.modeType == RgvModeType.AUTO + if (rgvProtocol.modeType == RgvModeType.AUTO && (rgvProtocol.getStatusType() == RgvStatusType.IDLE || rgvProtocol.getStatusType() == RgvStatusType.ROAM) && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getAlarm() == 0) { - if (rgvProtocol.getStatusType() == RgvStatusType.ROAM) { - double finalVelocity = 0.0; // 鏈�缁堥�熷害 (m/s) - double distance = (Math.pow(finalVelocity, 2) - Math.pow(rgvProtocol.instantaneousSpeed / 60, 2)) / (2 * acceleration); - BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast.getSourceStaNo())); - if ((distance * proportion + (rgvProtocol.instantaneousSpeed / 60) * proportion * rgvDate) > (SortTheExecutionOfTheCarUtil.LatelyAndLessThan(basDevpPosition.getPlcPosition(), rgvProtocol.getRgvPos(), perimeter) )) { +// if (rgvProtocol.getStatusType() == RgvStatusType.ROAM) { +// double finalVelocity = 0.0; // 鏈�缁堥�熷害 (m/s) +// double distance = (Math.pow(finalVelocity, 2) - Math.pow(rgvProtocol.instantaneousSpeed / 60, 2)) / (2 * acceleration); +// BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast.getSourceStaNo())); +// if ((distance * proportion + (rgvProtocol.instantaneousSpeed / 60) * proportion * rgvDate) > (SortTheExecutionOfTheCarUtil.LatelyAndLessThan(basDevpPosition.getPlcPosition(), rgvProtocol.getRgvPos(), perimeter) )) { // List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("plc_position", true)); // if (basDevpPositions.isEmpty()) { // log.error("鑾峰彇鎵�鏈夌珯鐐逛俊鎭紓甯�,RGV浠诲姟涓嬪彂澶辫触锛岃鑱旂郴绠$悊鍛橈紒锛侊紒"); @@ -314,17 +321,17 @@ // List<Integer> devpList = SortTheExecutionOfTheCarUtil.BasDevpPositionExtractSites(basDevpPositions); // // if (!SortTheExecutionOfTheCarUtil.calculateShortestDistanceDirection(devpList,rgvProtocol.getEndStaM(),wrkMast.getSourceStaNo())){ - continue; +// continue; // } - } - } +// } +// } RgvCommand rgvCommand = new RgvCommand(); rgvCommand.setRgvNo(rgvProtocol.getRgvNo()); rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setSourceStaNo1(wrkMast.getSourceStaNo().shortValue()); //宸ヤ綅1璧风偣 - rgvCommand.setDestinationStaNo1(wrkMast.getStaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣 + rgvCommand.setSourceStaNo1(wrkMast.getRgvSstaNo().shortValue()); //宸ヤ綅1璧风偣 + rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣 rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(2, rgvCommand))) { // @@ -333,8 +340,8 @@ } log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); - wrkMast.setWrkSts(2L); wrkMast.setRgvNo(rgvProtocol.getRgvNo()); + wrkMast.setWrkSts(10L); wrkMast.setAppeTime(new Date()); try { wrkMastService.updateById(wrkMast); @@ -352,7 +359,7 @@ } //浠诲姟瀹屾垚 - public synchronized void rgvCompleteWrkMastSta() { + public synchronized void rgvCompleteWrkMastSta(int[] autoZ) { try { for (RgvSlave rgvSlave : slaveProperties.getRgv()) { RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); @@ -365,63 +372,29 @@ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId()); continue; } - if (rgvProtocol.getStatusType() == RgvStatusType.WAITING) { - log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}", rgvProtocol.getRgvNo(), rgvProtocol.getStatusType(), rgvProtocol); - } + // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔� if (rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getTaskNo1() != 0 ) { -// log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); + log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", rgvProtocol.getTaskNo1().longValue())); - if (Cools.isEmpty(wrkMast) || !wrkMast.getWrkSts().equals(2L)) { - log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�" + wrkMast); + if (Cools.isEmpty(wrkMast)) { + log.error("鏈煡鍒板皬杞︽墽琛屼换鍔★紒" + rgvProtocol.getTaskNo1()); + continue; + } else if(wrkMast.getWrkSts() != 10) { + log.error("鎵ц浠诲姟鐘舵�佷笉绗﹀悎锛�" + rgvProtocol.getTaskNo1()); continue; } boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); if (!rgvComplete) { - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); + log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); break; } - wrkMast.setWrkSts(3L); + wrkMast.setWrkSts(2L); Date now = new Date(); - wrkMast.setAppeTime(now); - try{ - try{ - if (true){ - RgvTaskReportingParam rgvTaskReportingParam = new RgvTaskReportingParam(wrkMast); - ReturnT<String> result = new PostMesDataUtils().postMesDataWcs("", "", rgvTaskReportingParam); - if (result.getCode()==200){ - wrkMast.setWrkSts(4L); - wrkMast.setAppeTime(now); - wrkMastService.updateById(wrkMast); - continue; - }else { - log.error("宸ヤ綔鍙�"+wrkMast.getWrkNo()+"浠诲姟瀹屾垚淇℃伅涓婁紶澶勭悊澶辫触"); - } - } else { - //娴嬭瘯鐢� - wrkMast.setWrkSts(5L); - wrkMast.setAppeTime(now); - wrkMastService.updateById(wrkMast); - WrkMast wrkMast1 = new WrkMast(); - int workNo = commonService.getWorkNo(0); - wrkMast1.setWrkNo((long) workNo); - wrkMast1.setSourceStaNo(wrkMast.getStaNoCs()); - wrkMast1.setStaNo(wrkMast.getSourceNoCs()); - wrkMast1.setWrkSts(1L); - wrkMast1.setIoType(1); - wrkMast1.setModiTime(now); - wrkMast1.setAppeTime(now); - wrkMast1.setMemo("娴嬭瘯鏁版嵁"); - wrkMastService.insert(wrkMast1); - continue; - } - } catch (Exception e){ - log.error("宸ヤ綔鍙�"+wrkMast.getWrkNo()+"浠诲姟瀹屾垚淇℃伅涓婁紶澶勭悊澶辫触锛屽紓甯镐俊鎭細"+e); - } - } catch (Exception e){} + wrkMast.setModiTime(now); wrkMastService.updateById(wrkMast); } } @@ -437,7 +410,7 @@ try { // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- if (!MessageQueue.offer(SlaveType.Rgv, rgvNo, new Task(3, new RgvCommand()))) { - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}", rgvNo); + log.error("灏忚溅澶嶄綅RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}", rgvNo); return false; } else { log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}", rgvNo); -- Gitblit v1.9.1