From f6bde002739b7f7a1f48dddab9fab4959f286668 Mon Sep 17 00:00:00 2001 From: pjb <pjb123456> Date: 星期二, 22 七月 2025 16:36:06 +0800 Subject: [PATCH] 回滚订单完成扣减数量 --- src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 186 +++++++++++++++++++++++++++++++--------------- 1 files changed, 124 insertions(+), 62 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java index b2146e7..5dd01a3 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -14,6 +14,7 @@ import com.zy.asrs.entity.param.StockOutParam; import com.zy.asrs.mapper.LocMastMapper; import com.zy.asrs.entity.result.FindLocNoAttributeVo; +import com.zy.asrs.mapper.OrderDetlPakoutMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.OrderInAndOutUtil; import com.zy.asrs.utils.Utils; @@ -94,6 +95,9 @@ @Resource private OrderPakoutService orderPakOutService; + @Resource + private OrderDetlPakoutMapper orderDetlPakoutMapper; + @Override @Transactional public String startupFullPutStore(FullStoreParam param, Long userId) { @@ -106,9 +110,9 @@ BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true); // 妫�绱㈠簱浣� LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); - List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList()); +// List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList()); // List<String> batchs = param.getList().stream().map(FullStoreParam.MatCodeStore::getBatch).distinct().collect(Collectors.toList()); - FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(matnrs.get(0)); + FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(param.getList().get(0)); StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), findLocNoAttributeVo,locTypeDto); if (Cools.isEmpty(dto)){ throw new CoolException("鏌ヨ搴撲綅澶辫触锛侊紒==銆媠tartupFullPutStore ==銆� commonService.getLocNo"); @@ -347,6 +351,7 @@ wrkMast.setEmptyMk("N"); // 绌烘澘 wrkMast.setLinkMis("N"); wrkMast.setBarcode(locMast.getBarcode()); + wrkMast.setPdcType(dto.getLocDetlDtos().get(0).getLocDetl().getModel()); wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); @@ -554,16 +559,19 @@ throw new CoolException(firstFrozenLocNo + "搴撲綅宸茶鍐荤粨!"); } + if (Cools.isEmpty(param.getOutSite())) { + throw new CoolException("绔欑偣涓嶅瓨鍦�"); + } for (String locNo : param.getLocNos()) { // 鑾峰彇宸ヤ綔鍙� - int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type); + int workNo = commonService.getWorkNo(2); // 鑾峰彇搴撲綅 LocMast locMast = locMastService.selectById(locNo); if (Cools.isEmpty(locMast)) { throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�"); } - if (!locMast.getLocSts().equals("D")){ - throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$()); + if (!locMast.getLocSts().equals("M") && !locMast.getLocSts().equals("Z")) { + throw new CoolException("搴撲綅鐘舵�佹湁璇細" + locMast.getLocSts()); } // 鑾峰彇婧愮珯 Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() @@ -581,8 +589,8 @@ wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID - wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱 - wrkMast.setIoPri(10D); + wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬� + wrkMast.setIoPri(14D); wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯 wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔� wrkMast.setCrnNo(locMast.getCrnNo()); @@ -601,7 +609,7 @@ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害 - if (locMast.getLocSts().equals("D")){ + if (locMast.getLocSts().equals("M") || locMast.getLocSts().equals("Z")){ locMast.setLocSts("R"); locMast.setModiUser(userId); locMast.setModiTime(now); @@ -643,8 +651,8 @@ wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID - wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱 - wrkMast.setIoPri(10D); + wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬� + wrkMast.setIoPri(14D); wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯 wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔� wrkMast.setCrnNo(locMast.getCrnNo()); @@ -658,13 +666,12 @@ wrkMast.setAppeTime(now); wrkMast.setModiUser(1L); wrkMast.setModiTime(now); - wrkMast.setMemo("鐢熸垚鑷姩绌烘澘鍑哄簱"); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害 - if (locMast.getLocSts().equals("D")){ + if (locMast.getLocSts().equals("M") || locMast.getLocSts().equals("Z")){ locMast.setLocSts("R"); locMast.setModiUser(1L); locMast.setModiTime(now); @@ -734,7 +741,7 @@ throw new CoolException(locDetl.getLocNo() + "," + locDetl.getMatnr() + "," + locDetl.getBatch() + "搴撳瓨鏄庣粏宸茶鍐荤粨!"); } - if (!loc.getLocSts().equals("O") || (!sourceLoc.getLocSts().equals("F") && !sourceLoc.getLocSts().equals("D"))){ + if (!loc.getLocSts().equals("O") || (!sourceLoc.getLocSts().equals("F") && !sourceLoc.getLocSts().equals("M") && !sourceLoc.getLocSts().equals("Z"))){ throw new CoolException("搴撲綅鐘舵�佸凡鏀瑰彉"); } if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) { @@ -756,7 +763,7 @@ wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 婊℃澘锛歒 wrkMast.setPicking("N"); // 鎷f枡 wrkMast.setExitMk("N"); // 閫�鍑� - wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘 + wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("M") ? "M" : sourceLoc.getLocSts().equals("Z") ? "Z" : "N"); // 绌烘澘 wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮� wrkMast.setLinkMis("N"); wrkMast.setAppeUser(userId); @@ -783,7 +790,7 @@ } } // 淇敼婧愬簱浣嶇姸鎬� - if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) { + if (sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("M") || sourceLoc.getLocSts().equals("Z")) { sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害 sourceLoc.setModiUser(userId); sourceLoc.setModiTime(now); @@ -813,15 +820,30 @@ if (Cools.isEmpty(wrkMast)){ throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); } + if (wrkMast.getStaNo() == 1090 && wrkMast.getLocNo() == null) { + throw new CoolException(workNo+"宸ヤ綔妗f棤娉曞畬鎴�,搴撲綅鍙蜂负绌猴紒"); + } if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) { throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚"); } + // 瀹屾垚绌烘《搴撳叆鍑哄簱浠诲姟鍙︿竴涓换鍔� + int workNoOther = 0; // 鍏ュ簱 + 搴撲綅杞Щ - if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) { + if ((wrkMast.getWrkSts() < 4 && wrkMast.getIoType() != 101 && wrkMast.getIoType() != 110) || (wrkMast.getWrkSts() > 10 + && wrkMast.getIoType()==11) || wrkMast.getIoType() == 10 || (wrkMast.getIoType() == 3)) { wrkMast.setWrkSts(4L); + workNoOther = wrkMast.getWorkNoOther(); // 鍑哄簱 - } else if (wrkMast.getWrkSts() > 10) { - wrkMast.setWrkSts(14L); + } else if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 110) { + if(wrkMast.getWrkSts() == 2) { + wrkMast.setWrkSts(15L); + } else { + wrkMast.setWrkSts(14L); + } + workNoOther = wrkMast.getWorkNoOther(); + } else if(wrkMast.getIoType() == 1 && wrkMast.getWrkSts() == 10) { + wrkMast.setWrkSts(2L); + wrkMast.setRgvFinishTime(new Date()); } Date now = new Date(); wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true)); @@ -833,12 +855,24 @@ if (!wrkMastService.updateById(wrkMast)) { throw new CoolException("淇敼宸ヤ綔妗eけ璐�"); } + if(workNoOther != 0) { + WrkMast wrkMast1 = wrkMastService.selectById(workNoOther); + if (wrkMast1 != null) { + wrkMast1.setWrkSts(wrkMast.getWrkSts()); + wrkMast1.setCrnStrTime(wrkMast.getCrnStrTime()); + wrkMast1.setCrnEndTime(now); + wrkMast1.setModiTime(now); + wrkMast1.setModiUser(userId); + wrkMast1.setManuType("鎵嬪姩瀹屾垚"); + wrkMastService.updateById(wrkMast1); + } + } } @Override @Transactional public void adjustLocDetl(LocDetlAdjustParam param, Long userId) { - param.integrate(); +// param.integrate(); LocMast locMast = locMastService.selectById(param.getLocNo()); if (Cools.isEmpty(locMast)) { throw new CoolException("搴撲綅涓嶅瓨鍦�"); @@ -1067,7 +1101,7 @@ String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣� String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬� // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級 - if (wrkMast.getWrkSts() < 4) { + if (wrkMast.getWrkSts() <= 10) { locNo = wrkMast.getLocNo(); locSts = "O"; @@ -1078,7 +1112,7 @@ if (Cools.isEmpty(locMast)) { throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo()); } - locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"); + locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N")?wrkMast.getEmptyMk():"F"); locMast.setModiTime(now); locMast.setModiUser(userId); locMastService.updateById(locMast); @@ -1086,13 +1120,17 @@ // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛� } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) { locNo = wrkMast.getSourceLocNo(); - // 鍑哄簱 ===>> F.鍦ㄥ簱 - if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { + if (wrkMast.getIoType() == 110) { + if(wrkMast.getStaNo() == 1035) { // 瀛愭媶鐩樻満绔欑偣 + locSts = "Z"; + }else { + locSts = "M"; + } +// locSts = "D"; + } else if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { + // 鍑哄簱 ===>> F.鍦ㄥ簱 locSts = "F"; - // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉� - } else if (wrkMast.getIoType() == 110) { - locSts = "D"; - // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉� + // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉� } else if (wrkMast.getIoType() == 11) { locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"; // 搴撲綅杞Щ锛氱洰鏍囧簱浣� @@ -1109,21 +1147,9 @@ throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�"); } - //鍙栨秷鍏ュ簱宸ヤ綔妗f椂锛屾煡璇㈢粍鎵樿〃锛屽鏋滄湁灏嗙姸鎬佹敼涓哄緟澶勭悊 - if(wrkMast.getIoType() == 1) { - List<WaitPakin> waitPakins=waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode())); - for (WaitPakin waitPakin:waitPakins){ - if (!Cools.isEmpty(waitPakin)) { - waitPakin.setIoStatus("N"); - waitPakin.setLocNo(""); - waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>() -// .eq("order_no", waitPakin.getOrderNo()) - .eq("zpallet",waitPakin.getZpallet()) - .eq("matnr", waitPakin.getMatnr()) - .eq("batch", waitPakin.getBatch())); - } - } - } + // 鍒犻櫎缁勬墭閫氱煡妗� + waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet",wrkMast.getBarcode())); + //鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺 if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) { @@ -1133,9 +1159,11 @@ // if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { // throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); // } - OrderInAndOutUtil.decrease(Boolean.FALSE,wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(), - wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), - wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(), wrkDetl.getAnfme()); +// OrderInAndOutUtil.decrease(Boolean.FALSE,wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(), +// wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), +// wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(), wrkDetl.getAnfme()); + orderDetlPakoutMapper.increaseQtyByOrderNoNew(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), + wrkDetl.getBatch(),wrkDetl.getModel(),wrkDetl.getVolume(),wrkDetl.getAnfme()); //淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼 boolean flag = true; @@ -1189,27 +1217,61 @@ } // 鍒犻櫎宸ヤ綔涓绘。 boolean wrkMastRes = wrkMastService.deleteById(wrkMast); + // 淇濆瓨鏄庣粏 + wrkDetlLogService.save(wrkMast.getWrkNo()); + // 鍒犻櫎宸ヤ綔妗f槑缁� + boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo)); - if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) { - // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 - if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { -// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); + // 绌烘《搴撲换鍔� + if(wrkMast.getWorkNoOther() != null && wrkMast.getWorkNoOther() != 0) { + WrkMast wrkMast1 = wrkMastService.selectById(wrkMast.getWorkNoOther()); + if (wrkMast1 != null) { + if(wrkMast1.getIoType() == 1) { + wrkMast1.setLocSts("O"); + } else { + wrkMast1.setLocSts("F"); + } + // 鍙栨秷鎿嶄綔浜哄憳璁板綍 + wrkMast1.setManuType("鎵嬪姩鍙栨秷"); + wrkMast1.setModiUser(userId); + wrkMast1.setModiTime(now); + + // 鍒犻櫎缁勬墭閫氱煡妗� + waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet",wrkMast1.getBarcode())); + // 鍒犻櫎宸ヤ綔涓绘。 + wrkMastService.deleteById(wrkMast1); + // 淇濆瓨宸ヤ綔鏄庣粏 + wrkDetlLogService.save(wrkMast1.getWrkNo()); + // 鍒犻櫎宸ヤ綔鏄庣粏 + wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast1.getWrkNo())); + // 淇敼搴撲綅鐘舵�� + LocMast locMast = locMastService.selectById(wrkMast1.getIoType() == 1 ? wrkMast1.getLocNo() : wrkMast1.getSourceLocNo()); + if (Cools.isEmpty(locMast)) { + throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:" + locNo); + } + locMast.setLocSts(locSts); + locMast.setModiTime(now); + locMast.setModiUser(userId); + locMastService.updateById(locMast); } - // 鍒犻櫎宸ヤ綔妗f槑缁� - boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo)); } + // 淇敼搴撲綅鐘舵�� - LocMast locMast = locMastService.selectById(locNo); - if (Cools.isEmpty(locMast)) { - throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo); - } - locMast.setLocSts(locSts); - locMast.setModiTime(now); - locMast.setModiUser(userId); - boolean locMastRes = locMastService.updateById(locMast); - if (!wrkMastRes || !locMastRes) { - throw new CoolException("淇濆瓨鏁版嵁澶辫触"); + if (locNo != null) { + if (wrkMast.getIoType() != 3) { + LocMast locMast = locMastService.selectById(locNo); + if (Cools.isEmpty(locMast)) { + throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:" + locNo); + } + locMast.setLocSts(locSts); + locMast.setModiTime(now); + locMast.setModiUser(userId); + boolean locMastRes = locMastService.updateById(locMast); + if (!wrkMastRes || !locMastRes) { + throw new CoolException("淇濆瓨鏁版嵁澶辫触"); + } + } } } @@ -1277,7 +1339,7 @@ } LocTypeDto locTypeDto = new LocTypeDto(); locTypeDto.setLocType1((short) 1); - return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list); + return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list.get(0),false); } @Override -- Gitblit v1.9.1