From 59cf6b97399bc8c9fe39926fa13aa39cbd827270 Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期六, 21 十二月 2024 15:39:01 +0800 Subject: [PATCH] 出库提取界面加搜索条件,提取出来包装一个木箱明细全部出来 --- src/main/java/com/zy/asrs/task/handler/GhjtHandler.java | 215 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 203 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java index 3d61ebe..b9cef6a 100644 --- a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java @@ -11,7 +11,9 @@ import com.zy.asrs.service.WrkDetlService; import com.zy.asrs.utils.Utils; import com.zy.common.constant.MesConstant; +import com.zy.common.model.StartupDto; import com.zy.common.properties.SlaveProperties; +import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import com.zy.system.entity.Config; import com.zy.system.mapper.ConfigMapper; @@ -31,6 +33,7 @@ */ @Slf4j @Service +@Transactional public class GhjtHandler { @Resource @@ -63,7 +66,15 @@ @Autowired private SlaveProperties slaveProperties; - @Transactional + @Resource + private CommonService commonService; + + // 鍫嗗灈鏈哄搴斾竴妤煎嚭搴撶珯鐐� + private static final int[] oneFloorOutSite = new int[]{0,3002,3003,3006,3008,3009,3012}; + + // 鍫嗗灈鏈哄搴斾竴妤煎叆搴撶珯鐐� + private static final int[] oneFloorInSite = new int[]{0,3001,3004,3005,3007,3010,3011}; + public void startCkrwPushGwcs(WrkMast wrkMast) { // 鑾峰彇璇锋眰澶� @@ -102,6 +113,7 @@ wrkMast.setModiTime(new Date()); } else if(wrkMast.getIoType() == 12) { // 璺ㄥ贩閬撹浆绉� wrkMast.setWrkSts(1L); // 鐘舵�佹敼涓�1.鐢熸垚鍏ュ簱id + wrkMast.setCrnNo(Arrays.binarySearch(oneFloorInSite,wrkMast.getStaNo()));// 鍫嗗灈鏈鸿浆鎹负鍏ュ簱鐨勫爢鍨涙満 wrkMast.setModiTime(new Date()); } wrkMastMapper.updateById(wrkMast); @@ -166,11 +178,6 @@ } else if (wrkMast.getIoType() == 103 && (wrkMast.getStaNo() == 3077 || wrkMast.getStaNo() == 3106)) { // 涓ょ鍑轰竴绠憋紝闇�妗佹灦鐞嗚揣 // 閮借鍏堝幓鐞嗚揣 flag = 2; -// if (wrkDetls.size() == 1) { // 涓�鍗疯创鏍囧嚭搴� -// flag = 4; -// } else { // 澶氬嵎鐩存帴鍑哄簱 -// -// } } return flag; } @@ -178,7 +185,6 @@ /** * 鑷姩澶囪揣澶勭悊 */ - @Transactional public void autoStockUpHandler(List<String> list,int columnNum) { // 鏍规嵁鍖呰缁勫彿鑾峰彇鎵�鍦ㄥ簱浣� @@ -206,7 +212,7 @@ String staLocNo = null; Integer wrkCount = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", i)); if(wrkCount > 0) { - log.warn("{}鍙峰爢鍨涙満宸插瓨鍦ㄤ换鍔�",i); +// log.warn("{}鍙峰爢鍨涙満宸插瓨鍦ㄤ换鍔�",i); continue; } // 鏍规嵁鍫嗗灈鏈哄彿鏌ヨ鍒板搴旂殑娣卞簱浣嶅拰娴呭簱浣� 娣卞簱浣�4*n-3鍜�4*n 娴呭簱浣�4*n-2鍜�4*n-1 @@ -235,16 +241,16 @@ } // 娌℃湁鎵惧埌婧愬簱浣� if (sourceLocNo == null) { - log.warn("娌℃湁鎵惧埌婧愬簱浣�,鍫嗗灈鏈猴細{}",i); +// log.warn("娌℃湁鎵惧埌婧愬簱浣�,鍫嗗灈鏈猴細{}",i); continue; } // 瀵绘壘涓�涓璐х殑鐩爣搴撲綅锛屽厛娣卞悗娴� List<LocMast> locMasts1 = locMastMapper.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", i).in("row1", s1, s2) - .le("bay1", columnNum)); + .le("bay1", columnNum).orderBy("lev1,bay1,row1")); if (locMasts1.isEmpty()) { // 娣卞簱浣嶄负绌轰簡锛屽彇娴呭簱浣� List<LocMast> locMasts2 = locMastMapper.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", i).in("row1", q1, q2) - .le("bay1", columnNum)); + .le("bay1", columnNum).orderBy("lev1,bay1,row1")); if (!locMasts2.isEmpty()) { staLocNo = locMasts2.get(0).getLocNo(); } @@ -269,7 +275,6 @@ } - @Transactional public void autoMoveLoc(List<OrderDetl> orderDetlList) { // 鍒ゆ柇鏄惁宸茬粡鏈夋墽琛岀殑绉诲簱浠诲姟 @@ -373,4 +378,190 @@ orderMapper.updatePendingSettleByOrderNo(detl.getOrderNo(),2L); } + /** + * 缁欐寚瀹氭鏋剁敓鎴愮悊璐т换鍔�,鎸夎鍒欏鎵惧埌鑳界悊璐х殑涓や釜搴撲綅 + * 1.鑳界悊璐х殑閮芥槸涓�绠变竴鍗风殑 + * 2.瑙勫垯锛氭湪绠卞瀷鍙风浉鍚�-绠¤姱绫诲瀷鐩稿悓-瀹炴祴瀹藉箙鐩稿悓-鐢熺當鍘氬害鐩稿悓-鍒嗗垏涓嬫枡鏃堕棿鐩歌繎 + */ + public void autoTallyGoods(int flag) { + + // 鑾峰彇澶囪揣鍖洪厤缃� + Config config = configMapper.selectConfigByCode("auto_stock_up"); + if (config == null) { + throw new CoolException("鐞嗚揣鑾峰彇澶囪揣鍖洪厤缃敊璇紒锛侊紒"); + } + // 鍓嶅嚑鍒楁槸澶囪揣鍖� + int columnNum = Integer.parseInt(config.getValue()); + + // 瀵绘壘涓�绠变竴鍗风殑锛屾病鏈夌悊璐х殑锛屼笉鍦ㄥ璐у尯鐨勭墿鏂欐槑缁� + List<LocDetl> tallyGoosList = locDetlMapper.selectTallyGoosList(columnNum); + + // 杩囨护鎺夋湪绠辫鏍煎搴﹀ぇ浜�600鐨�(澶т簬600涓�涓墭鐩樺彧鑳芥斁涓�绠�) + tallyGoosList = tallyGoosList.stream().filter(locDetl -> { + String[] split = locDetl.getColor().split("\\*"); + if (split.length == 3) { + return Integer.parseInt(split[1]) <= 600; + } else { + return false; + } + }).collect(Collectors.toList()); + + // 瀵绘壘婊¤冻鐞嗚揣鏉′欢鐨勪袱涓湪绠� + LocDetl leftLocDetl = null; + LocDetl rightLocDetl = null; + for (int i = 0; i < tallyGoosList.size(); i++) { + leftLocDetl = tallyGoosList.get(i); + for (int j = i + 1; j < tallyGoosList.size(); j++) { + LocDetl tempLocDetl = tallyGoosList.get(j); + if (leftLocDetl.getColor().equals(tempLocDetl.getColor()) && leftLocDetl.getManu().equals(tempLocDetl.getManu()) && + leftLocDetl.getSku().equals(tempLocDetl.getSku()) && leftLocDetl.getItemNum().equals(tempLocDetl.getItemNum())) { + rightLocDetl = tempLocDetl; + break; + } + } + if (rightLocDetl != null) { + break; + } + } + + if (leftLocDetl == null || rightLocDetl == null) { +// log.warn("娌℃湁鎵惧埌涓や釜鑳界悊璐х殑鏈ㄧ"); + return; + } + + // 鎵惧埌鐨勪袱涓湪绠卞垰濂藉湪涓�涓墭鐩樹笂锛岀洿鎺ユ洿鏀圭悊璐х姸鎬佷负2 + if (leftLocDetl.getLocNo().equals(rightLocDetl.getLocNo())) { + locDetlMapper.updateLhStsByLocNo(leftLocDetl.getLocNo(), 2); + } else { + + // 鍒ゆ柇鏄幓鍝妗佹灦鐨勫摢涓珯鐐� t0缁勭洏鐐�,t1宸︽崲鐩樼偣,t2鍙虫崲鐩樼偣 + int t0 = 3046, t1 = 3045, t2 = 3044; + if (flag == 2) { + t0 = 3042; + t1 = 3041; + t2 = 3040; + } + + // 鐢熸垚绌洪棽鐞嗚揣浠诲姟 + WrkDetl wrkDetl1 = tallyGoodsGenerate(t1, leftLocDetl); + WrkDetl wrkDetl2 = tallyGoodsGenerate(t2, rightLocDetl); + + Date now = new Date(); + + // 瀵绘壘涓�涓┖搴撲綅 + StartupDto dto = commonService.getLocNo(1, t0, null, 0); + // 鐢熸垚缁勭洏鍏ュ簱浠诲姟 + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(dto.getWorkNo()); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�� + wrkMast.setIoType(1); // 鍏ュ嚭搴撶被鍨� + wrkMast.setIoPri(13D); // 浼樺厛绾э細13 + wrkMast.setCrnNo(dto.getCrnNo()); + wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯 + wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔� + wrkMast.setSourceLocNo(""); // 婧愬簱浣� + wrkMast.setLocNo(dto.getLocNo()); + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("N"); + wrkMast.setBarcode(""); // zwcs鎵ц鍏ュ簱鏃舵洿鏂版墭鐩樼爜 + wrkMast.setAppeUser(29L); // 鎿嶄綔浜哄憳 root + wrkMast.setAppeTime(now); + wrkMast.setModiUser(29L); + wrkMast.setModiTime(now); + if (wrkMastMapper.insert(wrkMast) != 1) { + throw new CoolException("绌洪棽鐞嗚揣缁勭洏淇濆瓨宸ヤ綔妗eけ璐ワ紝璇︽儏锛�" + wrkMast); + } + + // 鐢熸垚宸ヤ綔鏄庣粏 + wrkDetl1.setWrkNo(wrkMast.getWrkNo()); + wrkDetl1.setOrigin("宸�"); // 鍥哄畾鎷嗗埌宸﹁竟 + wrkDetl1.setDeadWarn(2); // 宸茬悊璐ф爣璇� + wrkDetl2.setWrkNo(wrkMast.getWrkNo()); + wrkDetl2.setOrigin("鍙�"); + wrkDetl2.setDeadWarn(2); + wrkDetlService.insert(wrkDetl1); // 鍏ュ簱瀹屾垚鏃舵洿鏂版墭鐩樼爜 + wrkDetlService.insert(wrkDetl2); + + // 鏇存柊鐩爣搴撲綅鐘舵�� + LocMast locMast = locMastMapper.selectById(dto.getLocNo()); + locMast.setLocSts("S"); + locMastMapper.updateById(locMast); // 鍏ュ簱瀹屾垚鏃舵洿鏂版墭鐩樼爜 + } + } + + /** + * 鐢熸垚绌洪棽鐞嗚揣鍒版崲鐩樻鏋剁殑浠诲姟 + * + * @param site 鎹㈢洏鐐� + * @param locDetl 搴撳瓨鏄庣粏 + */ + private WrkDetl tallyGoodsGenerate(int site, LocDetl locDetl) { + + // 鍒ゆ柇搴撲綅鐘舵�� + LocMast locMast = locMastMapper.selectById(locDetl.getLocNo()); + if (!locMast.getLocSts().equals("F")) { + throw new CoolException("鐞嗚揣搴撲綅鐘舵�佹湁璇紝涓嶄负F锛屽簱浣嶅彿锛�" + locMast.getLocNo()); + } + + Date now = new Date(); + + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + // 鑾峰彇宸ヤ綔鍙� + int workNo = commonService.getWorkNo(5); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(109); // 鍏ュ嚭搴撶姸鎬� 109.绌洪棽鐞嗚揣 + wrkMast.setIoPri(13D); // 浼樺厛绾э細13 + wrkMast.setCrnNo(locMast.getCrnNo()); + wrkMast.setSourceStaNo(oneFloorOutSite[locMast.getCrnNo()]); // 婧愮珯 + wrkMast.setStaNo(site); // 鐩爣绔� + wrkMast.setSourceLocNo(locDetl.getLocNo()); // 婧愬簱浣� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("N"); + wrkMast.setSheetNo("0"); + wrkMast.setBarcode(locDetl.getZpallet()); + wrkMast.setAppeUser(29L); // 鎿嶄綔浜哄憳 root + wrkMast.setAppeTime(now); + wrkMast.setModiUser(29L); + wrkMast.setModiTime(now); + if (wrkMastMapper.insert(wrkMast) != 1) { + throw new CoolException("绌洪棽鐞嗚揣淇濆瓨宸ヤ綔妗eけ璐ワ紝璇︽儏锛�" + wrkMast); + } + + // 鐢熸垚宸ヤ綔鏄庣粏 + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(locDetl); + wrkDetl.setWrkNo(workNo); + wrkDetl.setIoTime(now); + wrkDetl.setAppeTime(now); + wrkDetl.setAppeUser(29L); + wrkDetl.setModiTime(now); + wrkDetl.setModiUser(29L); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("绌洪棽鐞嗚揣淇濆瓨宸ヤ綔妗f槑缁嗗け璐�,璇︽儏锛�" + wrkDetl); + } + + // 淇敼鍑哄簱鐘舵�� + locMast.setLocSts("R"); + locMast.setModiUser(29L); + locMast.setModiTime(now); + if (locMastMapper.updateById(locMast) != 1) { + throw new CoolException("绌洪棽鐞嗚揣棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + locMast.getLocNo()); + } + + // 鏇存柊搴撳瓨鏄庣粏涓虹悊璐т腑 + locDetlMapper.updateLhStsByLocNo(locDetl.getLocNo(), 1); + + return wrkDetl; + } + } -- Gitblit v1.9.1