From d25daa625c821b214a83609361fdd42f58f521ab Mon Sep 17 00:00:00 2001 From: Junjie <xjj@123> Date: 星期六, 11 十月 2025 11:56:19 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 219 +++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 151 insertions(+), 68 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 44a69da..06acf8f 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; /** @@ -72,7 +69,11 @@ @Autowired private WrkMastMapper wrkMastMapper; @Autowired + private WrkMastLogService wrkMastLogService; + @Autowired private WrkDetlService wrkDetlService; + @Autowired + private WrkDetlLogService wrkDetlLogService; @Autowired private WaitPakinMapper waitPakinMapper; @Autowired @@ -91,8 +92,6 @@ private BasCrnErrorMapper basCrnErrorMapper; @Autowired private WrkMastService wrkMastService; - @Autowired - private WrkMastLogService wrkMastLogService; @Autowired private ConfigService configService; @Autowired @@ -198,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; } } @@ -709,9 +708,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; @@ -1045,7 +1049,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); @@ -1133,6 +1137,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) { @@ -1170,11 +1181,11 @@ 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) + .in("source_sta_no", 1002, 1007) ); if (!inWrkMasts.isEmpty()) { News.error("" + mark + " - 2" + " - 妫�娴嬪瓨鍦ㄥ叆搴撲换鍔★紝绛夊緟鍏ュ簱浠诲姟鎵ц瀹屾垚鍐嶅嚭搴擄紝宸ヤ綔鍙�={}" + wrkMast.getWrkNo()); @@ -1202,6 +1213,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; } } @@ -1302,7 +1321,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); @@ -2018,6 +2037,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(); @@ -2067,8 +2096,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); @@ -2077,20 +2107,48 @@ } 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; } if (null == wrkMast) { - continue; + List<WrkMastLog> wrkMastLogs = wrkMastLogService.selectList(new EntityWrapper<WrkMastLog>() + .eq("wrk_no", staProtocol.getWorkNo()) + .orderBy("modi_time", false) + ); + if (wrkMastLogs.isEmpty()) { + continue; + } + + WrkMastLog wrkMastLog = wrkMastLogs.get(0); + 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; @@ -2123,30 +2181,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); @@ -2187,28 +2231,54 @@ , 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(wrkNo); + if(!wrkDetlLogs.isEmpty()) { + WrkDetlLog wrkDetlLog = wrkDetlLogs.get(0); + + double anfme = 0D; + double weight = 0D; + for (WrkDetlLog detl : wrkDetlLogs) { + anfme += detl.getAnfme(); + weight += detl.getWeight(); + wrkDetlLog.setAnfme(anfme); + wrkDetlLog.setWeight(weight); + } + + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() + .eq("loc_no", sourceLocNo)); + double totalAnfme = 0D; + double totalWeight = 0D; + for (LocDetl locDetl : locDetls) { + totalAnfme += locDetl.getAnfme(); + totalWeight += locDetl.getWeight(); + } + wrkDetlLog.setStockNum(totalAnfme); + wrkDetlLog.setStockNum2(totalWeight); + + ledCommand.getMatDtos().add(new MatDto( + wrkDetlLog.getMatnr() + , wrkDetlLog.getMaktx() + , wrkDetlLog.getAnfme() + , wrkDetlLog.getWeight() + , wrkDetlLog.getStockNum() + , wrkDetlLog.getStockNum2() + , wrkDetlLog.getSpecs() + , wrkDetlLog.getSku() + , wrkDetlLog.getZpallet() + , wrkDetlLog.getModel() + , wrkDetlLog.getSupp() + , wrkDetlLog.getKpCstmrName() + , wrkDetlLog.getOrderNo() + , wrkDetlLog.getCstateid$() + )); + } } } 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()); // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护 @@ -2246,12 +2316,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け璐�"); + } } } @@ -2386,8 +2459,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()); @@ -2395,8 +2467,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); @@ -2416,6 +2493,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