From 3c0129480a0493bd87bf38273b23eae3099c3f3d Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期二, 21 十月 2025 15:03:39 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 248 ++++++++++++++++++++++++------------------------ 1 files changed, 124 insertions(+), 124 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 596db23..c525150 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -49,10 +49,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -200,14 +197,14 @@ continue; } - if (inSta.getStaNo() == 1005) { + if (inSta.getStaNo() == 1002 || inSta.getStaNo() == 1007) { //妫�娴嬫槸鍚︽湁鍑哄簱浠诲姟 List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() .in("io_type", 101, 103, 107) - .in("sta_no", 1003, 1007) + .in("sta_no", 1003, 1004) ); if (!wrkMasts.isEmpty()) { - News.error("" + mark + " - 4" + " - 1003绔欏叆搴擄紝妫�娴嬪瓨鍦ㄥ嚭搴撲换鍔★紝绛夊緟鍑哄簱浠诲姟鎵ц瀹屾垚,鎵樼洏鐮�={}", barcode); + News.error("" + mark + " - 4" + " - 鍏ュ簱锛屾娴嬪瓨鍦ㄥ嚭搴撲换鍔★紝绛夊緟鍑哄簱浠诲姟鎵ц瀹屾垚,鎵樼洏鐮�={}", barcode); continue; } } @@ -417,15 +414,6 @@ continue; } - // 鎷c�佺洏銆佸苟 浣滀笟绔欒浆鎹� -// int stnNo = 0; -// if (wrkMast.getStaNo() == 109) { -// stnNo = 127; -// } else if (wrkMast.getStaNo() == 113) { -// stnNo = 128; -// } else { -// log.error("{}鍙蜂换鍔℃暟鎹紓甯革紒", wrkMast.getWrkNo()); -// } // 鑾峰彇鐩爣绔� Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() .eq("type_no", wrkMast.getIoType() - 50) @@ -449,62 +437,41 @@ } try { - // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 - if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) { - throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); - } - // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { - throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); - } + LocTypeDto locTypeDto = new LocTypeDto(staProtocol); - Date now = new Date(); - // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�) - Integer staNo = staDesc.getCrnStn(); - // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� - wrkMast.setIoTime(now); - wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 - wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 - wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯 - wrkMast.setStaNo(staNo); // 鐩爣绔� - wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� - wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌� - wrkMast.setModiTime(now); - wrkMast.setUpdMk("");//鍏佽鍐嶆绉诲簱 - if (wrkMastMapper.updateById(wrkMast) == 0) { - throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); - } - // 鏇存柊鏄庣粏妗o_time (鍘嗗彶妗e叧鑱斾娇鐢級 - wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now); - // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� - LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); - locMast.setLocSts("Q"); - locMast.setModiTime(new Date()); - if (!locMastService.updateById(locMast)) { - throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�"); + SearchLocParam param = new SearchLocParam(); + param.setBarcode(wrkMast.getBarcode()); + param.setSourceStaNo(pickSta.getStaNo()); + param.setLocType1(locTypeDto.getLocType1()); + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/pakin/pick/loc/v1") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); + // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 + staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); + staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + staProtocol.setPalletSize(locMast.getLocType2()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + if (!result) { + News.error("" + mark + " - 3" + " - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); + } + } else { + News.error("" + mark + " - 5" + " - 璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/pick/loc/v1", JSON.toJSONString(param), response); } } catch (Exception e) { e.printStackTrace(); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - continue; - } - - LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); - // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 - staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); - staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); - staProtocol.setPalletSize(locMast.getLocType2()); - devpThread.setPakMk(staProtocol.getSiteId(), false); - boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); - if (!result) { - News.error("" + mark + " - 3" + " - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); } } else { News.errorNoLog("" + mark + " - 6" + " - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 鑷姩淇″彿锛�" + staProtocol.isLoading() + "銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable() + "銆佺┖鏉夸俊鍙凤細" + staProtocol.isEmptyMk()); } - } } @@ -711,9 +678,14 @@ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() .eq("loc_no", wrkMast.getSourceLocNo())); + short staNo = wrkMast.getStaNo().shortValue(); + if (wrkMast.getStaNo() == 1004) { + staNo = 2003; + } + // 涓嬪彂绔欑偣淇℃伅 staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); - staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + staProtocol.setStaNo(staNo); staProtocol.setPalletSize(locMast.getLocType2()); if (!MessageQueue.offer(SlaveType.Devp, devpId, new Task(2, staProtocol))) { continue; @@ -1047,7 +1019,7 @@ News.warn("" + mark + " - 1" + " - 12" + " - // F銆丏 搴撲綅={},搴撲綅鐘舵��={}", shallowLoc.getLocNo(), shallowLoc.getLocSts()); // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔� if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) { - if (moveLocForDeepLoc(slave, shallowLoc, mark)) { + if (moveLocForDeepLoc(slave, crnProtocol, shallowLoc, mark)) { wrkMast.setUpdMk("Y"); wrkMast.setIoPri(14D); wrkMastMapper.updateById(wrkMast); @@ -1135,6 +1107,13 @@ devpCheckTaskStackOver = Integer.parseInt(config2.getValue()); } + int outNumber = 13; + Config config3 = configService.selectOne(new EntityWrapper<Config>() + .eq("code", "fullBoardOutboundNumber")); + if (config3 != null) { + outNumber = Integer.parseInt(config3.getValue()); + } + Integer devpWorkingCount = commonService.queryDevpWorkingCount(); if (devpWorkingCount > devpTaskStackOver) { @@ -1172,11 +1151,12 @@ staProtocol = staProtocol.clone(); } - if (wrkMast.getStaNo() == 1003 || wrkMast.getStaNo() == 1007) { + if (wrkMast.getStaNo() == 1003 || wrkMast.getStaNo() == 1007 || wrkMast.getStaNo() == 1004) { //妫�娴嬫槸鍚︽湁鍏ュ簱浠诲姟 List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() .in("io_type", 1, 53, 57) - .in("source_sta_no", 1005) + .notIn("wrk_sts", 3, 4, 5) + .in("source_sta_no", 1002, 1007) ); if (!inWrkMasts.isEmpty()) { News.error("" + mark + " - 2" + " - 妫�娴嬪瓨鍦ㄥ叆搴撲换鍔★紝绛夊緟鍏ュ簱浠诲姟鎵ц瀹屾垚鍐嶅嚭搴擄紝宸ヤ綔鍙�={}" + wrkMast.getWrkNo()); @@ -1204,6 +1184,14 @@ News.error("" + mark + " - 2" + " - 妫�娴嬪瓨鍦�1062绔欑偣锛屽瓨鍦ㄤ袱绗斿伐浣滀腑鐨勪换鍔★紝宸ヤ綔鍙�={}" + wrkMast.getWrkNo()); continue; } + } + }else if (wrkMast.getIoType() == 101) { + List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() + .in("wrk_sts", 12, 14) + ); + if (!Cools.isEmpty(inWrkMasts) && inWrkMasts.size() >= outNumber) { + News.error("" + mark + " - 4" + " - 妫�娴嬪埌鍏ㄦ澘鍑哄簱鐨勪换鍔″凡缁忓埌杈句笂绾匡紝宸ヤ綔鍙�={}" + wrkMast.getWrkNo()); + continue; } } @@ -1304,7 +1292,7 @@ // if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk()) // || Cools.isEmpty(waitWrkMast)) { if (Cools.isEmpty(waitWrkMast)) { - if (moveLocForDeepLoc(slave, shallowLoc, mark)) { + if (moveLocForDeepLoc(slave, crnProtocol, shallowLoc, mark)) { wrkMast.setUpdMk("Y"); // wrkMast.setIoPri(14D); wrkMastMapper.updateById(wrkMast); @@ -2020,6 +2008,16 @@ continue; } + //妫�娴嬫槸鍚︽湁鍏ュ簱浠诲姟 + List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() + .in("io_type", 1, 53, 57) + .in("source_sta_no", 1002, 1007) + ); + if (!inWrkMasts.isEmpty()) { + News.error("" + mark + " - 2" + " - 妫�娴嬪瓨鍦ㄥ叆搴撲换鍔★紝绛夊緟鍏ュ簱浠诲姟鎵ц瀹屾垚鍐嶅叆绌烘墭锛屽伐浣滃彿={}"); + continue; + } + int workNo = commonService.getWorkNo(3); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast1 = new WrkMast(); @@ -2069,8 +2067,9 @@ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId()); // 鍛戒护闆嗗悎 List<LedCommand> commands = new ArrayList<>(); - // 宸ヤ綔妗i泦鍚� - List<WrkMast> wrkMasts = new ArrayList<>(); +// // 宸ヤ綔妗i泦鍚� +// List<WrkMast> wrkMasts = new ArrayList<>(); + List<Integer> workNoList = new ArrayList<>(); for (Integer staNo : led.getStaArr()) { // 鑾峰彇鍙夎溅绔欑偣 StaProtocol staProtocol = devpThread.getStation().get(staNo); @@ -2079,6 +2078,13 @@ } else { staProtocol = staProtocol.clone(); } + Integer wrkNo = null; + Integer ioType = null; + Integer targetStaNo = null; + String sourceLocNo = null; + String locNo = null; + String barcode = null; + // 鑾峰彇宸ヤ綔妗f暟鎹� WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo()); // if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; } @@ -2092,17 +2098,28 @@ } WrkMastLog wrkMastLog = wrkMastLogs.get(0); - wrkMast = new WrkMast(); - wrkMast.sync(wrkMastLog); + wrkNo = wrkMastLog.getWrkNo(); + ioType = wrkMastLog.getIoType(); + sourceLocNo = wrkMastLog.getSourceLocNo(); + locNo = wrkMastLog.getLocNo(); + targetStaNo = wrkMastLog.getStaNo(); + barcode = wrkMastLog.getBarcode(); + }else { + wrkNo = wrkMast.getWrkNo(); + ioType = wrkMast.getIoType(); + sourceLocNo = wrkMast.getSourceLocNo(); + locNo = wrkMast.getLocNo(); + targetStaNo = wrkMast.getStaNo(); + barcode = wrkMast.getBarcode(); } News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�:鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�"); - wrkMasts.add(wrkMast); + workNoList.add(wrkNo); // 缁勮鍛戒护 LedCommand ledCommand = new LedCommand(); - ledCommand.setWorkNo(wrkMast.getWrkNo()); - ledCommand.setIoType(wrkMast.getIoType()); + ledCommand.setWorkNo(wrkNo); + ledCommand.setIoType(ioType); // 鍑哄簱妯″紡 - switch (wrkMast.getIoType()) { + switch (ioType) { case 1: ledCommand.setTitle("鍏ㄦ澘鍏ュ簱"); break; @@ -2135,30 +2152,16 @@ ledCommand.setTitle("骞舵澘鍏ュ簱"); break; default: - News.error("" + mark + " - 1" + " - 浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType()); + News.error("" + mark + " - 1" + " - 浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkNo, ioType); break; } - ledCommand.setSourceLocNo(wrkMast.getSourceLocNo()); - ledCommand.setLocNo(wrkMast.getLocNo()); - ledCommand.setStaNo(wrkMast.getStaNo()); - ledCommand.setBarcode(wrkMast.getBarcode()); + ledCommand.setSourceLocNo(sourceLocNo); + ledCommand.setLocNo(locNo); + ledCommand.setStaNo(targetStaNo); + ledCommand.setBarcode(barcode); // ledCommand.setSourceStaNo(wrkMast.getSourceStaNo()); - if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) { - List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo()); -// try{ -// if (wrkMast.getIoType()>100){ -// for (WrkDetl wrkDetl : wrkDetls){ -// LocDetl locDetl = locDetlService.selectMatnrSpecs(wrkDetl.getMatnr(), wrkDetl.getSpecs(), wrkMast.getSourceLocNo()); -// wrkDetl.setWeight(locDetl.getAnfme()); -// } -// }else { -// for (WrkDetl wrkDetl : wrkDetls){ -// wrkDetl.setWeight(wrkDetl.getAnfme()); -// } -// } -// }catch (Exception e){ -// log.error("宸ヤ綔妗f鏄庣粏杈撳叆鐢佃鏈哄け璐�1锛氬紓甯镐俊鎭�==銆�"+e); -// } + if (ioType != 110 && ioType != 10) { + List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkNo); if (!wrkDetls.isEmpty()) { WrkDetl wrkDetl = wrkDetls.get(0); @@ -2199,24 +2202,8 @@ , wrkDetl.getCstateid$() )); -// wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto( -// wrkDetl.getMatnr() -// , wrkDetl.getMaktx() -// , wrkDetl.getAnfme() -// , wrkDetl.getWeight() -// , wrkDetl.getStockNum() -// , wrkDetl.getStockNum2() -// , wrkDetl.getSpecs() -// , wrkDetl.getSku() -// , wrkDetl.getZpallet() -// , wrkDetl.getModel() -// , wrkDetl.getSupp() -// , wrkDetl.getKpCstmrName() -// , wrkDetl.getOrderNo() -// , wrkDetl.getCstateid$() -// ))); }else { - List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectTodayByWrkNo(wrkMast.getWrkNo()); + List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectTodayByWrkNo(wrkNo); if(!wrkDetlLogs.isEmpty()) { WrkDetlLog wrkDetlLog = wrkDetlLogs.get(0); @@ -2230,7 +2217,7 @@ } List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() - .eq("loc_no", wrkMast.getSourceLocNo())); + .eq("loc_no", sourceLocNo)); double totalAnfme = 0D; double totalWeight = 0D; for (LocDetl locDetl : locDetls) { @@ -2262,7 +2249,7 @@ } commands.add(ledCommand); } - Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet()); + Set<Integer> workNos = new HashSet<>(workNoList); // 鑾峰彇LED绾跨▼ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId()); // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护 @@ -2300,12 +2287,15 @@ try { // 淇敼涓绘。led鏍囪 - for (WrkMast wrkMast : wrkMasts) { - wrkMast.setOveMk("Y"); - wrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(wrkMast) == 0) { - News.errorNoLog("" + mark + " - 4" + " - 鏇存柊宸ヤ綔妗eけ璐�"); - throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�"); + for (Integer wrkNo : workNoList) { + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkNo)); + if (wrkMast != null) { + wrkMast.setOveMk("Y"); + wrkMast.setModiTime(new Date()); + if (wrkMastMapper.updateById(wrkMast) == 0) { + News.errorNoLog("" + mark + " - 4" + " - 鏇存柊宸ヤ綔妗eけ璐�"); + throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�"); + } } } @@ -2440,8 +2430,7 @@ * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増) * tip锛氬悓姝� */ - private synchronized boolean moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc, Integer mark) { - + private synchronized boolean moveLocForDeepLoc(CrnSlave crn, CrnProtocol crnProtocol, LocMast shallowLoc, Integer mark) { try { News.warnNoLog("" + mark + "moveLocForDeepLoc" + " - 0" + " - 寮�濮嬫墽琛�:鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)"); List<Integer> rows = locMastService.queryDistinctRow(crn.getId()); @@ -2449,8 +2438,13 @@ for (Integer row : rows) { if (Utils.isDeepLoc(slaveProperties, row)) { loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1()); - if (loc != null) { + if (crn.getId() == 1) { + if (Utils.getLaneByLocNo(loc.getLocNo()) != crnProtocol.getCrnLane()) { + continue; + } + } + if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())) { String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo()); LocMast shallowLoc1 = locMastService.selectById(shallowLocNo); @@ -2470,6 +2464,12 @@ loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1()); if (null != loc) {//瀵瑰簲娣卞簱浣嶉潪鍦ㄥ簱鐘舵��,涓嶈兘绉诲簱 + if (crn.getId() == 1) { + if (Utils.getLaneByLocNo(loc.getLocNo()) != crnProtocol.getCrnLane()) { + continue; + } + } + String deepLoc = Utils.getDeepLoc(slaveProperties, loc.getLocNo()); LocMast deepLoc1 = locMastService.selectById(deepLoc); if (!deepLoc1.getLocSts().equals("F") && !deepLoc1.getLocSts().equals("D")) { -- Gitblit v1.9.1