From b5ca846c41affe2c41d719be38be326a1931b3de Mon Sep 17 00:00:00 2001 From: pjb <pjb123456> Date: 星期一, 21 七月 2025 09:47:22 +0800 Subject: [PATCH] 手动完成空桶库任务问题修复 --- src/main/java/com/zy/common/web/WcsController.java | 162 +++++++++++++++++++++++++++++++++++------------------ 1 files changed, 106 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java index e070559..1f22cba 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 @@ -103,7 +117,7 @@ if(param.getIoType() == 1) { List<SearchLocParam.WantBucket> wantBucketFlag = param.getWantBucketFlag(); for(SearchLocParam.WantBucket wantBucket: wantBucketFlag) { - if(wantBucket.getBucketType() != 0 && wantBucket.getBucketType() == param.getBucketType()) { // 缃愯绾挎湁瑕佹《淇″彿骞朵笖褰撳墠妗舵槸缃愯绾胯鐨勬《 + if(wantBucket.getBucketType() != 0 && wantBucket.getBucketType() == param.getBucketType() && wantBucket.getWantBucketCount() >= 1) { // 缃愯绾挎湁瑕佹《淇″彿骞朵笖褰撳墠妗舵槸缃愯绾胯鐨勬《 if(waitPakin == null) { return R.error("鍏ュ簱閫氱煡妗d负绌�"); } else { @@ -248,52 +262,52 @@ StartupDto dto; // 鍒ゆ柇璐存爣寮傚父锛屽妫�閲嶉噺寮傚父鐨勶紝涓嶅垎閰嶅簱浣嶏紝鍘诲線寮傚父鍙�1090 -// if ( !param.isTbFlag() || !param.isReinspection()) { -// -// // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------ -// WrkMast wrkMast = new WrkMast(); -// wrkMast.setWrkNo(commonService.getWorkNo(0)); -// wrkMast.setIoTime(now); -// wrkMast.setIoType(3); // 鍏ュ嚭搴撶被鍨�3.绔欏埌绔� -// wrkMast.setWrkSts(2L); -// wrkMast.setIoPri(13D); // 浼樺厛绾� -//// wrkMast.setCrnNo(dto.getCrnNo()); -// wrkMast.setSourceStaNo(param.getSourceStaNo()); -// wrkMast.setStaNo(1090); -//// wrkMast.setLocNo(dto.getLocNo()); -// wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮� -// wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 -//// wrkMast.setPicking("N"); // 鎷f枡 -//// wrkMast.setExitMk("N"); // 閫�鍑� -//// wrkMast.setEmptyMk("N"); // 绌烘澘 -//// wrkMast.setLinkMis("Y"); -//// wrkMast.setCtnType(wrkMast1.getCtnType()); // 灏炬墭鏍囪瘑 -// wrkMast.setPdcType(wrkMast1.getPdcType()); // 绌烘《绫诲瀷 -// wrkMast.setAppeTime(now); -// wrkMastService.insert(wrkMast); -// -// // 鐢熸垚宸ヤ綔妗f槑缁�---------------------------------------------------- -// WrkDetl wrkDetl = new WrkDetl(); -// wrkDetl.sync(mat); -// wrkDetl.setWrkNo(wrkMast.getWrkNo()); -// wrkDetl.setAnfme(wrkDetl1.getAnfme()); -// wrkDetl.setZpallet(wrkMast1.getBarcode()); -// wrkDetl.setBatch(param.getBatch()); -// wrkDetl.setManuDate(param.getManuDate()); -// wrkDetl.setWeight(param.getWeight()); -// wrkDetl.setManLength(param.getGrossWeight()); -// wrkDetl.setVolume(param.getCannedVolume()); // 缃愯閲� -// wrkDetl.setInspect(param.isTbFlag()?1:0); // 璐存爣鎴愬姛 -// wrkDetl.setIoTime(now); -// wrkDetl.setAppeTime(now); -// wrkDetl.setModel(wrkDetl1.getMaktx()); // 淇濆瓨绌烘《鍚嶇О -// wrkDetlService.insert(wrkDetl); -// -// dto = new StartupDto(); -// dto.setWorkNo(wrkMast.getWrkNo()); -// dto.setSourceStaNo(wrkMast.getSourceStaNo()); -// dto.setStaNo(wrkMast.getStaNo()); -// } else + if ( !param.isTbFlag() || !param.isReinspection()) { + + // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------ + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(commonService.getWorkNo(0)); + wrkMast.setIoTime(now); + wrkMast.setIoType(3); // 鍏ュ嚭搴撶被鍨�3.绔欏埌绔� + wrkMast.setWrkSts(2L); + wrkMast.setIoPri(13D); // 浼樺厛绾� +// wrkMast.setCrnNo(dto.getCrnNo()); + wrkMast.setSourceStaNo(param.getSourceStaNo()); + wrkMast.setStaNo(1090); + wrkMast.setLocNo(!param.isTbFlag() ? "璐存爣澶辫触" : "澶嶆閲嶉噺寮傚父"); + wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 +// wrkMast.setPicking("N"); // 鎷f枡 +// wrkMast.setExitMk("N"); // 閫�鍑� +// wrkMast.setEmptyMk("N"); // 绌烘澘 +// wrkMast.setLinkMis("Y"); +// wrkMast.setCtnType(wrkMast1.getCtnType()); // 灏炬墭鏍囪瘑 + wrkMast.setPdcType(wrkMast1.getPdcType()); // 绌烘《绫诲瀷 + wrkMast.setAppeTime(now); + wrkMastService.insert(wrkMast); + + // 鐢熸垚宸ヤ綔妗f槑缁�---------------------------------------------------- + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(mat); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setAnfme(wrkDetl1.getAnfme()); + wrkDetl.setZpallet(wrkMast1.getBarcode()); + wrkDetl.setBatch(param.getBatch()); + wrkDetl.setManuDate(param.getManuDate()); + wrkDetl.setWeight(param.getWeight()); + wrkDetl.setManLength(param.getGrossWeight()); + wrkDetl.setVolume(param.getCannedVolume()); // 缃愯閲� + wrkDetl.setInspect(param.isTbFlag()?1:0); // 璐存爣鎴愬姛 + wrkDetl.setIoTime(now); + wrkDetl.setAppeTime(now); + wrkDetl.setModel(wrkDetl1.getMaktx()); // 淇濆瓨绌烘《鍚嶇О + wrkDetlService.insert(wrkDetl); + + dto = new StartupDto(); + dto.setWorkNo(wrkMast.getWrkNo()); + dto.setSourceStaNo(wrkMast.getSourceStaNo()); + dto.setStaNo(wrkMast.getStaNo()); + } else if(fhFlag) { // 鐩存帴鍙戣揣 // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------ WrkMast wrkMast = new WrkMast(); @@ -450,14 +464,20 @@ WrkMast wrkMast = wrkMastService.selectById(wrkNo); if (wrkMast == null) { throw new CoolException("寮傚父鍙e叆搴撲换鍔″彿鏃犱换鍔★細" + wrkNo); - } else if (wrkMast.getLocNo() != null) { + } else if (wrkMast.getLocNo() != null && wrkMast.getLocNo().length() == 7) { throw new CoolException("寮傚父鍙e叆搴撳簱浣嶅凡鍒嗛厤锛�" + wrkMast.getLocNo()); } if(!param.isTbFlag()) { //涓嬬嚎鍑哄簱 + Config config = configService.selectConfigByCode("gzxfh" + wrkMast.getSourceStaNo()); wrkMast.setSourceStaNo(1090); - wrkMast.setStaNo(1024); // 寮傚父涓嬬嚎榛樿鍏ュ簱绔欑偣涓�1016 + wrkMast.setStaNo(1024); // 寮傚父涓嬬嚎榛樿鍏ュ簱绔欑偣涓�1024 + // 鑾峰彇绯荤粺閰嶇疆锛岀湅鎴愬搧缃愯瀹屾垚鏄惁鐩存帴鍑哄埌鍙戣揣鍙� + if (config != null && config.getStatus() == 1 && !Cools.isEmpty(config.getValue())) { + wrkMast.setStaNo(Integer.parseInt(config.getValue())); + } wrkMastService.updateById(wrkMast); + log.info("WCS寮傚父鍙e叆搴撴帴鍙h繑鍙�:{},鐩爣绔欑偣:{}", "涓嬬嚎鍑哄簱", wrkMast.getStaNo()); return R.ok(); } @@ -679,6 +699,7 @@ @PostMapping("/autoOutEmptyBucket") @ResponseBody public R autoOutEmptyBucket(@RequestBody StockOutParam param){ + log.info("鏀跺埌WCS鑷姩鍑虹┖妗舵帴鍙h姹�====>>鍏ュ弬:{}", param); workService.startupFullTakeStore(param, 29L); return R.ok("鍑哄簱鍚姩鎴愬姛"); } @@ -691,18 +712,47 @@ // 鍑哄簱绔欑偣 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) { - return R.error("搴撳瓨娌℃湁"+type+"绫诲瀷绌烘墭鐩�"); + return R.error("搴撳瓨娌℃湁"+type+"绫诲瀷绌烘墭鐩樻垨鏃犲彲鐢ㄥ爢鍨涙満"); } String locNo = locMast.getLocNo(); -- Gitblit v1.9.1