From 0089be186795036fe12ad2b5ef8dd81f602071a0 Mon Sep 17 00:00:00 2001 From: zhangc <zc@123> Date: 星期日, 13 四月 2025 15:41:00 +0800 Subject: [PATCH] 1 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 340 ++++++++++++++++++++++++++++++++----------------------- 1 files changed, 197 insertions(+), 143 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 448f885..87ba996 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -109,26 +109,21 @@ switch (staNo) { case 1011: case 1012: - devpThread.getStation().get(1012).isInEnable(); - break; + return devpThread.getStation().get(1012).isInEnable(); case 1021: case 1022: case 1023: - devpThread.getStation().get(1022).isInEnable(); - break; + return devpThread.getStation().get(1022).isInEnable(); case 1031: case 1032: - devpThread.getStation().get(1032).isInEnable(); - break; + return devpThread.getStation().get(1032).isInEnable(); case 1025: case 1026: - devpThread.getStation().get(1025).isInEnable(); - break; + return devpThread.getStation().get(1025).isInEnable(); case 1013: case 1014: case 1015: - devpThread.getStation().get(1014).isInEnable(); - break; + return devpThread.getStation().get(1014).isInEnable(); } return false; } @@ -141,26 +136,21 @@ switch (staNo) { case 1011: case 1012: - devpThread.getStation().get(1012).isOutEnable(); - break; + return devpThread.getStation().get(1012).isOutEnable(); case 1021: case 1022: case 1023: - devpThread.getStation().get(1022).isOutEnable(); - break; + return devpThread.getStation().get(1022).isOutEnable(); case 1031: case 1032: - devpThread.getStation().get(1032).isOutEnable(); - break; + return devpThread.getStation().get(1032).isOutEnable(); case 1025: case 1026: - devpThread.getStation().get(1025).isOutEnable(); - break; + return devpThread.getStation().get(1025).isOutEnable(); case 1013: case 1014: case 1015: - devpThread.getStation().get(1014).isOutEnable(); - break; + return devpThread.getStation().get(1014).isOutEnable(); } return false; } @@ -171,85 +161,78 @@ */ public synchronized void generateInboundWrk() { try { - DevpSlave devpSlave = slaveProperties.getDevp().get(0); // 閬嶅巻鍏ュ簱鍙� - for (DevpSlave.Sta inSta : devpSlave.getInSta()) { - // 鑾峰彇鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpSlave.getId()); - StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - Short workNo = staProtocol.getWorkNo(); - // 灏哄妫�娴嬪紓甯� - boolean back = false; - String errMsg = "寮傚父锛�"; - if (staProtocol.isFrontErr()) { - errMsg = errMsg + "鍓嶈秴闄愶紱"; - back = true; - } - if (staProtocol.isBackErr()) { - errMsg = errMsg + "鍚庤秴闄�"; - back = true; - } - if (staProtocol.isHighErr()) { - errMsg = errMsg + "楂樿秴闄�"; - back = true; - } - if (staProtocol.isLeftErr()) { - errMsg = errMsg + "宸﹁秴闄�"; - back = true; - } - if (staProtocol.isRightErr()) { - errMsg = errMsg + "鍙宠秴闄�"; - back = true; - } - if (staProtocol.isWeightErr()) { - errMsg = errMsg + "瓒呴噸"; - back = true; - } - if (staProtocol.isBarcodeErr()) { - errMsg = errMsg + "鎵爜澶辫触"; - back = true; - } - // 閫�鍥� - if (back) { - // led 寮傚父鏄剧ず - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); - if (ledThread != null) { - ledThread.error(errMsg); + for (DevpSlave.Sta inSta : slaveProperties.getDevp().get(0).getInSta()) { + if (inSta.getStaNo() == 1014 || inSta.getStaNo() == 1025) { + // 鑾峰彇鍏ュ簱绔欎俊鎭� + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); + StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); } - continue; - } - // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 - if (staProtocol.isAutoing() && staProtocol.isLoading() && isInEnable(devpThread, inSta.getStaNo()) && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) && staProtocol.isPakMk()) { - String barcode = staProtocol.getBarcode(); - if (!Cools.isEmpty(barcode)) { - News.info("鏉$爜鎵弿鍣ㄦ娴嬫潯鐮佷俊鎭細{}", barcode); + Short workNo = staProtocol.getWorkNo(); + // 灏哄妫�娴嬪紓甯� + boolean back = false; + String errMsg = "寮傚父锛�"; + if (staProtocol.isFrontErr()) { + errMsg = errMsg + "鍓嶈秴闄愶紱"; + back = true; } - // 鍒ゆ柇閲嶅宸ヤ綔妗� - WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", inSta.getStaNo()).eq("wrk_sts", WrkStsType.NEW_INBOUND).eq("barcode", barcode)); - if (wrkMast != null) { - News.error("宸ヤ綔妗e凡瀛樺湪,宸ヤ綔鍙�={}", wrkMast.getWrkNo()); - if (staProtocol.getWorkNo().intValue() != wrkMast.getWrkNo()) { - //鍒ゆ柇鏃舵彁鍗囨満渚э紝杩樻槸鏃犳彁鍗囨満娴� - if (inSta.getStaNo() == 1014 || inSta.getStaNo() == 1025) { - staProtocol.setWorkNo(Short.parseShort(String.valueOf(wrkMast.getWrkNo()))); - staProtocol.setStaNo(Short.parseShort(String.valueOf(wrkMast.getStaNo()))); - MessageQueue.offer(SlaveType.Devp, devpSlave.getId(), new Task(2, staProtocol)); - News.info("杈撻�佺嚎鍏ュ簱鍛戒护涓嬪彂锛屼换鍔℃暟鎹�={}", JSON.toJSON(wrkMast)); - wrkMast.setWrkSts(WrkStsType.INBOUND_DEVICE_RUN.sts); - wrkMast.setModiTime(new Date()); - wrkMastService.updateById(wrkMast); - } else { - - } + if (staProtocol.isBackErr()) { + errMsg = errMsg + "鍚庤秴闄�"; + back = true; + } + if (staProtocol.isHighErr()) { + errMsg = errMsg + "楂樿秴闄�"; + back = true; + } + if (staProtocol.isLeftErr()) { + errMsg = errMsg + "宸﹁秴闄�"; + back = true; + } + if (staProtocol.isRightErr()) { + errMsg = errMsg + "鍙宠秴闄�"; + back = true; + } + if (staProtocol.isWeightErr()) { + errMsg = errMsg + "瓒呴噸"; + back = true; + } + if (staProtocol.isBarcodeErr()) { + errMsg = errMsg + "鎵爜澶辫触"; + back = true; + } + // 閫�鍥� + if (back) { + // led 寮傚父鏄剧ず + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); + if (ledThread != null) { + ledThread.error(errMsg); } continue; } - try { + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 + if (staProtocol.isAutoing() && staProtocol.isLoading() && isInEnable(devpThread, inSta.getStaNo()) && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) && staProtocol.isPakMk()) { + String barcode = staProtocol.getBarcode(); + if (!Cools.isEmpty(barcode)) { + News.info("鏉$爜鎵弿鍣ㄦ娴嬫潯鐮佷俊鎭細{}", barcode); + } + // 鍒ゆ柇閲嶅宸ヤ綔妗� + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", inSta.getStaNo()).eq("wrk_sts", WrkStsType.NEW_INBOUND.sts).eq("barcode", barcode)); + if (wrkMast != null) { + News.error("宸ヤ綔妗e凡瀛樺湪,宸ヤ綔鍙�={}", wrkMast.getWrkNo()); + //鍒ゆ柇鏃舵彁鍗囨満渚э紝杩樻槸鏃犳彁鍗囨満娴� + staProtocol.setWorkNo(Short.parseShort(String.valueOf(wrkMast.getWrkNo()))); + staProtocol.setStaNo(Short.parseShort(String.valueOf(inSta.getStaNo() + 1))); + MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); + News.info("杈撻�佺嚎鍏ュ簱鍛戒护涓嬪彂锛屼换鍔℃暟鎹�={}", JSON.toJSON(wrkMast)); + wrkMast.setWrkSts(WrkStsType.INBOUND_DEVICE_RUN.sts); + wrkMast.setModiTime(new Date()); + wrkMastService.updateById(wrkMast); + } + try { /*String wmsUrl = "127.0.0.1:8080/fyxcwms"; SearchLocParam param = new SearchLocParam(); param.setBarcode(barcode); @@ -310,9 +293,11 @@ .doPost(); News.error("鍏ュ簱鐢宠澶辫触锛屼换鍔℃暟鎹�={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject)); }*/ - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } } + } } } catch (Exception e) { @@ -320,38 +305,87 @@ } } - public synchronized void generateInboundWrk2() { - DevpSlave devpSlave = slaveProperties.getDevp().get(0); - // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯 - for (DevpSlave.Sta inSta : devpSlave.getInSta()) { - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); - StaProtocol staProtocol = devpThread.getStation().get(inSta); - if (staProtocol == null) { - return; - } else { - staProtocol = staProtocol.clone(); - } - Short finishWorkNo = staProtocol.getFinishWorkNo(); - WrkMast wrkMast = wrkMastService.selectByWorkNo(Integer.valueOf(finishWorkNo)); - if (wrkMast != null) { - if (wrkMast.getSourceStaNo() == 1015 || wrkMast.getSourceStaNo() == 1026) { - - //璋冨害杞﹁締 -// boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(null, staProtocol.getLocNo(), wrkMast.getLocNo(), param.getShuttleNo(), "TRANSPORT_DEVP"); -// if (!dispatchShuttle) { -// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃皟搴﹁嚦鍙栬揣鐐瑰け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); -// return; -// } + public synchronized void noLiftIn() { + List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", WrkStsType.NEW_INBOUND.sts, WrkStsType.INBOUND_DEVICE_RUN.sts).in("source_sta_no", 1014, 1025)); + for (WrkMast wrkMast : wrkMasts) { + if (wrkMast.getWrkSts() == WrkStsType.INBOUND_DEVICE_RUN.sts) { + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); + StaProtocol staProtocol = devpThread.getStation().get(wrkMast.getSourceStaNo() + 1); + if (staProtocol == null) { + continue; } else { - //鍒ゆ柇鎻愬崌鏈� - - + staProtocol = staProtocol.clone(); + } + Short finishWorkNo = staProtocol.getFinishWorkNo(); + if (finishWorkNo == null) { + continue; + } + String locNo = "1200301"; + if (wrkMast.getStaNo() == 1025) { + locNo = "1200305"; + } + boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttle(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_DEVP"); + if (!dispatchShuttle) { + News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo()); + return; + } + wrkMast.setWrkSts(WrkStsType.INBOUND_SHUTTLE_RUN.sts); + wrkMast.setLiftNo(null); + wrkMast.setSystemMsg("");//娓呯┖娑堟伅 + wrkMast.setModiTime(new Date()); + if (wrkMastService.updateById(wrkMast)) { + return; } } - } + + } } + + public void outFirst() { + DevpSlave devpSlave = slaveProperties.getDevp().get(0); + // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯 + Date now = new Date(); + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpSlave.getId()); + List<WrkMast> wrkSts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.NEW_OUTBOUND.sts).in("sta_no", 1014, 1025)); + for (WrkMast wrkMast : wrkSts) { + if (devpThread == null) { + return; + } + Map<Integer, StaProtocol> station = devpThread.getStation(); + StaProtocol staProtocol = station.get(wrkMast.getStaNo()); + if (staProtocol == null) { + return; + } + + if (!staProtocol.isAutoing()) { + News.info("{}浠诲姟锛寋}绔欑偣锛屼笉鍦ㄨ嚜鍔ㄧ姸鎬�", wrkMast.getWrkNo(), staProtocol.getSiteId()); + return; + } + + if (!staProtocol.isOutEnable()) { + News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夊彲鍑轰俊鍙�", wrkMast.getWrkNo(), staProtocol.getSiteId()); + return; + } + String locNo = "1200301"; + if (wrkMast.getStaNo() == 1025) { + locNo = "1200305"; + } + boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), locNo, "TRANSPORT_DEVP"); + if (!dispatchShuttle) { + News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo()); + return; + } + + wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts); + wrkMast.setSystemMsg("");//娓呯┖娑堟伅 + wrkMast.setModiTime(now); + if (wrkMastService.updateById(wrkMast)) { + return; + } + } + } /** * 鍑哄簱鍒板嚭搴撳彛 @@ -359,17 +393,18 @@ public synchronized void stnToOutStn() { DevpSlave devpSlave = slaveProperties.getDevp().get(0); // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯 - for (DevpSlave.Sta inSta : devpSlave.getInSta()) { - if (inSta.getStaNo() == 1014 || inSta.getStaNo() == 1025) { - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpSlave.getId()); - List<WrkMast> wrkSts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts)); + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpSlave.getId()); + for (DevpSlave.Sta outSta : devpSlave.getOutSta()) { + if (outSta.getStaNo() == 1013 || outSta.getStaNo() == 1024) { + List<WrkMast> wrkSts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts).eq("sta_no", outSta.getStaNo())); for (WrkMast wrkMast : wrkSts) { - StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); + StaProtocol staProtocol = devpThread.getStation().get(outSta.getStaNo() + 2); if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); } + if (staProtocol.isAutoing() && !staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) { // 鏌ヨ宸ヤ綔妗� if (wrkMast == null) { @@ -379,14 +414,12 @@ staProtocol.setStaNo(Short.parseShort(String.valueOf(wrkMast.getStaNo()))); MessageQueue.offer(SlaveType.Devp, devpSlave.getId(), new Task(2, staProtocol)); News.info("杈撻�佺嚎鍏ュ簱鍛戒护涓嬪彂锛屼换鍔℃暟鎹�={}", JSON.toJSON(wrkMast)); - wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts); + wrkMast.setWrkSts(WrkStsType.OUTBOUND_DEVP_RUN.sts); wrkMast.setModiTime(new Date()); wrkMastService.updateById(wrkMast); } } - } else { - } } } @@ -709,10 +742,7 @@ public synchronized void liftInExecute() { try { - List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() - .in("wrk_sts", WrkStsType.NEW_INBOUND.sts, WrkStsType.INBOUND_DEVICE_RUN.sts, WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts) - .in("source_sta_no", 1012, 1022) - ); + List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", WrkStsType.NEW_INBOUND.sts, WrkStsType.INBOUND_DEVICE_RUN.sts, WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts).in("source_sta_no", 1012, 1022)); for (WrkMast wrkMast : wrkMasts) { boolean step0 = this.liftInExecuteStep0(wrkMast);//璁惧涓婅蛋 if (!step0) { @@ -738,7 +768,7 @@ Date now = new Date(); if (wrkMast.getWrkSts() == WrkStsType.NEW_INBOUND.sts) { FyDevpThread devpThread = (FyDevpThread) SlaveConnection.get(SlaveType.Devp, 1); - if(devpThread == null) { + if (devpThread == null) { return false; } @@ -823,7 +853,7 @@ } FyDevpThread devpThread = (FyDevpThread) SlaveConnection.get(SlaveType.Devp, 1); - if(devpThread == null) { + if (devpThread == null) { return false; } @@ -922,7 +952,7 @@ } boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttle(wrkMast.getWrkNo(), "0200301", wrkMast.getLocNo(), "TRANSPORT_LIFT"); - if(!dispatchShuttle) { + if (!dispatchShuttle) { News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo()); return false; } @@ -942,10 +972,7 @@ public synchronized void liftOutExecute() { try { - List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() - .in("wrk_sts", WrkStsType.NEW_OUTBOUND.sts, WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts) - .in("sta_no", 1011, 1021) - ); + List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", WrkStsType.NEW_OUTBOUND.sts, WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts).in("sta_no", 1011, 1021)); for (WrkMast wrkMast : wrkMasts) { boolean step1 = this.liftOutExecuteStep1(wrkMast);//瑙﹀彂鎼繍浠诲姟 if (!step1) { @@ -966,7 +993,7 @@ Date now = new Date(); if (wrkMast.getWrkSts() == WrkStsType.NEW_OUTBOUND.sts) { FyDevpThread devpThread = (FyDevpThread) SlaveConnection.get(SlaveType.Devp, 1); - if(devpThread == null) { + if (devpThread == null) { return false; } @@ -988,7 +1015,7 @@ boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), "0200301", "TRANSPORT_LIFT"); - if(!dispatchShuttle) { + if (!dispatchShuttle) { News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo()); return false; } @@ -1042,7 +1069,7 @@ } FyDevpThread devpThread = (FyDevpThread) SlaveConnection.get(SlaveType.Devp, 1); - if(devpThread == null) { + if (devpThread == null) { return false; } @@ -1465,6 +1492,33 @@ } /** + * 杈撻�佺嚎浠诲姟瀹屾垚 + */ + public synchronized void devpFinished() { + try { + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); + Map<Integer, StaProtocol> station = devpThread.getStation(); + WrkMast wrkMast = null; + for (StaProtocol staProtocol : station.values()) { + if (staProtocol.getSiteId() == 1014 || staProtocol.getSiteId() == 1015) { + wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getFinishWorkNo()).eq("wrk_sts", WrkStsType.OUTBOUND_DEVP_RUN.sts)); + if (wrkMast != null) { + wrkMast.setWrkSts(WrkStsType.OUTBOUND_DEVP_RUN_COMPLETE.sts); + wrkMast.setModiTime(new Date()); + if (wrkMastService.updateById(wrkMast)) { + News.info("杈撻�佺嚎宸茬‘璁や笖浠诲姟瀹屾垚鐘舵�併�傝緭閫佺嚎鍙�={},瀹岀粨宸ヤ綔鍙�={}", staProtocol.getSiteId(), staProtocol.getFinishWorkNo()); + } else { + News.error("杈撻�佺嚎宸茬‘璁や笖浠诲姟瀹屾垚鐘舵��,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傝緭閫佺嚎鍙�={}锛屽畬缁撳伐浣滃彿={}", staProtocol.getSiteId(), staProtocol.getFinishWorkNo()); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** * 寮傚父淇℃伅璁板綍 */ public void recErr() { -- Gitblit v1.9.1