From e4ce58dbf41ba490d9c68bfd90a078c229a93bc7 Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期三, 15 三月 2023 13:04:24 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 128 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 126 insertions(+), 2 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 34b993d..36f2230 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -689,9 +689,133 @@ /** * 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣� - * 鏍规嵁鍏ュ簱鏃堕棿杩涜鎺掑簭鍏ュ簱 + * 鏍规嵁浼樺厛绾э紝鍏ュ簱鏃堕棿杩涜鎺掑簭鍏ュ簱 */ public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) { + String methodName = Thread.currentThread().getStackTrace()[1].getMethodName(); + List<Integer> wrkMasts= new ArrayList<>(); + for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) { + // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅 + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + // 鏌ヨ绔欑偣璇︾粏淇℃伅 + BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); + if (staDetl == null) { + News.error(methodName + ":鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); + continue; + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() >= 9990 && staProtocol.isInEnable() + && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { + // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。 + WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo()); + if (null == wrkMast) { +// News.error("鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); + continue; + } + wrkMasts.add(wrkMast.getWrkNo()); + } + } + WrkMast wrkMast=wrkMastService.selectTop1(wrkMasts); + + + // 鑾峰彇搴撲綅淇℃伅 + LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); + if (locMast != null) { + if (locMast.getLocSts().equals("S") && locMast.getLocSts().equals("Q")) { + // 鍫嗗灈鏈烘帶鍒惰繃婊� + if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) { + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (wrkMastMapper.selectWorking(slave.getId()) == null) { +// // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� + if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) { +//// String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo()); +//// LocMast shallowLoc = locMastService.selectById(shallowLocNo); +//// // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒 +//// if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) { +//// WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo); +//// if (null == waitWrkMast) { +//// News.error(methodName + ":{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo); +//// } else { +//// waitWrkMast.setIoPri(15D); +//// waitWrkMast.setModiTime(new Date()); +//// if (wrkMastMapper.updateById(waitWrkMast) == 0) { +//// News.error(methodName + ":璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo()); +//// } +//// continue; +//// } +//// +//// } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) { +//// // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔� +//// if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) { +//// wrkMast.setUpdMk("Y"); +//// wrkMast.setIoPri(14D); +//// wrkMastMapper.updateById(wrkMast); +//// // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑 +//// moveLocForDeepLoc(slave, shallowLoc); +//// // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�) +////// moveLocForDeepLocPakin(slave, shallowLoc, wrkMast); +//// } +//// continue; +//// } else if (shallowLoc.getLocSts().equals("Q")) { +//// WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo); +//// if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) { +//// continue; +//// } +//// } +//// } +// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- +// CrnCommand crnCommand = new CrnCommand(); +// crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� +// crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� +// crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� +// crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 +// crnCommand.setSourcePosX(crnStn1.getRow().shortValue()); // 婧愬簱浣嶆帓 +// crnCommand.setSourcePosY(crnStn1.getBay().shortValue()); // 婧愬簱浣嶅垪 +// crnCommand.setSourcePosZ(crnStn1.getLev().shortValue()); // 婧愬簱浣嶅眰 +// crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 鐩爣搴撲綅鎺� +// crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� +// crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� +// if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { +// News.error(methodName + ":鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); +// } else { +// +//// long startTime = System.currentTimeMillis(); +//// while ((System.currentTimeMillis() - startTime) < COMMAND_TIMEOUT) { +//// +//// if (true) { +//// break; +//// } +//// +//// try{ +//// Thread.sleep(500); +//// }catch(Exception ignore){} +//// } +// +// // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� +// Date now = new Date(); +// wrkMast.setWrkSts(3L); +// wrkMast.setCrnStrTime(now); +// wrkMast.setModiTime(now); +// if (wrkMastMapper.updateById(wrkMast) == 0) { +// News.error(methodName + ":淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); +// } + } + } + } + }else News.error(methodName + ":鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts()); + }else News.error(methodName + ":鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo()); + } + + /** + * 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣� + * 鏍规嵁鍏ュ簱鏃堕棿杩涜鎺掑簭鍏ュ簱 + */ + public synchronized void crnStnToLoc2(CrnSlave slave, CrnProtocol crnProtocol) { String methodName = Thread.currentThread().getStackTrace()[1].getMethodName(); List<WrkMast> wrkMasts= new ArrayList<>(); //鎸囬拡 @@ -729,7 +853,7 @@ wrkMasts.add(wrkMast); count++; if(count==0) continue; - if(wrkMast.getWrkDate().getTime()<wrkMasts.get(i).getWrkDate().getTime() && wrkMast.getIoPri()<wrkMasts.get(i).getIoPri()) + if(wrkMast.getWrkDate().getTime()<wrkMasts.get(i).getWrkDate().getTime() && wrkMast.getIoPri()>=wrkMasts.get(i).getIoPri()) i=count; crnStn1=crnStn; } -- Gitblit v1.9.1