From 2ded9514aa9a93ee440af0b1437d788fb052028b Mon Sep 17 00:00:00 2001 From: pjb <pjb123456> Date: 星期六, 23 八月 2025 08:36:59 +0800 Subject: [PATCH] wms功能完善 --- src/main/java/com/zy/common/web/WcsController.java | 157 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 146 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java index 0f37693..5a1e540 100644 --- a/src/main/java/com/zy/common/web/WcsController.java +++ b/src/main/java/com/zy/common/web/WcsController.java @@ -10,6 +10,7 @@ import com.zy.asrs.entity.param.EmptyPlateOutParam; import com.zy.asrs.entity.param.StockOutParam; import com.zy.asrs.entity.result.FindLocNoAttributeVo; +import com.zy.asrs.mapper.BasCrnpMapper; import com.zy.asrs.mapper.LocMastMapper; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.*; @@ -28,6 +29,7 @@ import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; /** * Created by vincent on 2020/10/30 @@ -68,6 +70,18 @@ @Resource private WrkMastMapper wrkMastMapper; + @Resource + private BasCrnpMapper basCrnpMapper; + + public static final Map<Integer,ArrayList<Integer>> crnOutSite; + + static { + crnOutSite = new HashMap<>(); + crnOutSite.put(1,new ArrayList<Integer>(){{add(1091);add(1092);add(1093);}}); + crnOutSite.put(2,new ArrayList<Integer>(){{add(1097);add(1098);add(1099);}}); + crnOutSite.put(3,new ArrayList<Integer>(){{add(1105);add(1106);add(1107);}}); + } + @PostMapping("/pakin/loc/v1") @ResponseBody @Transactional @@ -79,7 +93,14 @@ if (Cools.isEmpty(param.getSourceStaNo())) { return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖"); } - WaitPakin waitPakin = null; + + WaitPakin waitPakin; + // 鍒ゆ柇鏄笉鏄垚鍝佸叆搴� + waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>(). + eq("zpallet", param.getBarcode()).eq("danger", 1)); + if (waitPakin != null) { + param.setIoType(0); + } if (param.getIoType() == 1) { // 鍏堝垱寤哄叆搴撻�氱煡妗� waitPakin = comb(param.getBarcode(),param.getBucketType(),param.getBucketCount()); @@ -130,6 +151,9 @@ } switch (param.getIoType()) { + case 0: // 鎴愬搧鍏ュ簱 + dto = finishedProductIn(param.getSourceStaNo(), param.getBarcode(), waitPakin); + break; case 1://婊℃墭鐩樺叆搴� assert waitPakin != null; dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakin, param.isTailSupportFlag()); @@ -256,7 +280,7 @@ wrkMast.setIoTime(now); wrkMast.setIoType(3); // 鍏ュ嚭搴撶被鍨�3.绔欏埌绔� wrkMast.setWrkSts(2L); - wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setIoPri(14D); // 浼樺厛绾� // wrkMast.setCrnNo(dto.getCrnNo()); wrkMast.setSourceStaNo(param.getSourceStaNo()); wrkMast.setStaNo(1090); @@ -301,7 +325,7 @@ wrkMast.setIoTime(now); wrkMast.setIoType(3); // 鍏ュ嚭搴撶被鍨�3.绔欏埌绔� wrkMast.setWrkSts(2L); - wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setIoPri(14D); // 浼樺厛绾� // wrkMast.setCrnNo(dto.getCrnNo()); wrkMast.setSourceStaNo(param.getSourceStaNo()); wrkMast.setStaNo(fhk); @@ -355,7 +379,7 @@ wrkMast.setIoTime(now); wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 - wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setIoPri(14D); // 浼樺厛绾� wrkMast.setCrnNo(dto.getCrnNo()); wrkMast.setSourceStaNo(dto.getSourceStaNo()); wrkMast.setStaNo(dto.getStaNo()); @@ -484,6 +508,7 @@ wrkMast.setLocNo(dto.getLocNo()); wrkMast.setSourceStaNo(dto.getSourceStaNo()); wrkMast.setStaNo(dto.getStaNo()); + wrkMast.setIoPri(15D); wrkMastService.updateById(wrkMast); // 鏇存柊鐩爣搴撲綅鐘舵�� @@ -698,14 +723,43 @@ // 鍑哄簱绔欑偣 Integer site = Integer.valueOf(emptyPalletSite.get("site")); - LocMast locMast; + LocMast locMast = null; - // 鍏堟壘娴呭簱浣� - locMast = locMastMapper.queryLocMasterByLocStsAndRow(Arrays.asList(2, 3), type); + List<BasCrnp> basCrnps = basCrnpMapper.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("crn_err", 0).in("crn_no",1,2,3) + .eq("out_enable","Y")); + if (basCrnps.size() == 0) { + log.error("绌烘嫋鍑哄簱璇锋眰搴撲綅澶辫触锛屾病鏈夎仈鏈哄爢鍨涙満鎴栧爢鍨涙満寮傚父"); + throw new CoolException("绌烘嫋鍑哄簱璇锋眰搴撲綅澶辫触锛屾病鏈夎仈鏈哄爢鍨涙満鎴栧爢鍨涙満寮傚父"); + } - // 娴呭簱浣嶆病鏈夊垯鏌ヨ鎵�鏈� - if (locMast == null) { - locMast = locMastMapper.queryLocMasterByLocStsAndRow(null, type); + List<BasCrnp> basCrnpList = new ArrayList<>(); + for(BasCrnp basCrnp: basCrnps) { + List<BasDevp> devps = basDevpService.selectList(new EntityWrapper<BasDevp>().in("dev_no", crnOutSite.get(basCrnp.getCrnNo())).ne("wrk_no", 0)); + long count = devps.stream().map(BasDevp::getWrkNo).distinct().count(); + basCrnp.setWrkNo(count + basCrnp.getWrkNo() >= 5001 && basCrnp.getWrkNo() <= 9000 ? 1 : 0); + basCrnpList.add(basCrnp); + } + + basCrnpList = basCrnpList.stream().sorted(Comparator.comparing(BasCrnp::getWrkNo).thenComparing(BasCrnp::getCrnNo,Comparator.reverseOrder())).collect(Collectors.toList()); + + for(BasCrnp basCrnp:basCrnpList) { + Integer crnNo = basCrnp.getCrnNo(); + Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq("loc_sts", type) + .eq("crn_no", crnNo).orderBy("lev1").orderBy("bay1").orderBy("row1"); + if (crnNo == 1) { + wrapper.in("row1", 1, 4); + } + locMast = locMastService.selectOne(wrapper); + if (locMast != null) { + break; + } + // 娣卞簱浣嶆病鏈変簡鍒欒幏鍙栦竴涓祬搴撲綅 + if (crnNo == 1) { + locMast = locMastService.selectOne(wrapper.in("row1", 2, 3)); + if (locMast != null) { + break; + } + } } if (locMast == null) { @@ -750,7 +804,7 @@ wrkMast.setExitMk("N"); // 閫�鍑� wrkMast.setEmptyMk("N"); // 绌烘澘 wrkMast.setLinkMis("Y"); - wrkMast.setCtnType(tailSupportFlag ? 1 : 0); // 灏炬墭鏍囪瘑 + wrkMast.setCtnType(0); // 灏炬墭鏍囪瘑 wrkMast.setPdcType(waitPakins.getMatnr()); // 绌烘《绫诲瀷 // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeTime(now); @@ -785,6 +839,87 @@ if (!basDevpService.updateById(sourceStaNo)){ throw new CoolException("鏇存柊婧愮珯澶辫触"); } + if(!dto.getLocNo().isEmpty()) { + // 鏇存柊鐩爣搴撲綅鐘舵�� + LocMast locMast = locMastService.selectById(dto.getLocNo()); + if (locMast.getLocSts().equals("O")){ + locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 + locMast.setModiTime(now); + if (!locMastService.updateById(locMast)){ + throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); + } + } else { + throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); + } + } + + return dto; + } + + /** + * 鎴愬搧鍏ュ簱 + */ + @Transactional(propagation = Propagation.REQUIRED) + public StartupDto finishedProductIn(Integer devpNo, String barcode, WaitPakin waitPakins) { + // 婧愮珯鐐圭姸鎬佹娴� + BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); + // 妫�绱㈠簱浣� + FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins); + StartupDto dto = commonService.getLocNoNew( 1, devpNo,findLocNoAttributeVo,1); + int workNo = dto.getWorkNo(); + Date now = new Date(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 + wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setCrnNo(dto.getCrnNo()); + wrkMast.setSourceStaNo(dto.getSourceStaNo()); + wrkMast.setStaNo(dto.getStaNo()); + wrkMast.setLocNo(dto.getLocNo()); + wrkMast.setBarcode(barcode); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("Y"); +// wrkMast.setCtnType(tailSupportFlag ? 1 : 0); // 灏炬墭鏍囪瘑 + wrkMast.setPdcType(waitPakins.getModel()); // 绌烘《绫诲瀷 + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 鐢熸垚宸ヤ綔妗f槑缁� + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(waitPakins); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setIoTime(wrkMast.getIoTime()); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y + Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>() + .eq("zpallet", barcode); + WaitPakin setParam = new WaitPakin(); + setParam.setLocNo(dto.getLocNo()); + setParam.setIoStatus("Y"); + setParam.setModiTime(now); + if (!waitPakinService.update(setParam, wrapper)) { + throw new CoolException("鏇存柊閫氱煡妗eけ璐�"); + } + // 鏇存柊婧愮珯鐐逛俊鎭� + sourceStaNo.setWrkNo(workNo); + sourceStaNo.setModiTime(now); + if (!basDevpService.updateById(sourceStaNo)){ + throw new CoolException("鏇存柊婧愮珯澶辫触"); + } // 鏇存柊鐩爣搴撲綅鐘舵�� LocMast locMast = locMastService.selectById(dto.getLocNo()); if (locMast.getLocSts().equals("O")){ -- Gitblit v1.9.1