From d6cb644d0ccc0f73f68d60b3a43e82320d8c97f0 Mon Sep 17 00:00:00 2001 From: pjb <pjb123456> Date: 星期一, 23 六月 2025 08:57:04 +0800 Subject: [PATCH] 米多泉州wms功能完善 --- src/main/java/com/zy/common/web/WcsController.java | 162 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 135 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java index bbe9aa6..e070559 100644 --- a/src/main/java/com/zy/common/web/WcsController.java +++ b/src/main/java/com/zy/common/web/WcsController.java @@ -8,8 +8,10 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.*; 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.LocMastMapper; +import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.*; import com.zy.common.model.LocTypeDto; import com.zy.common.model.StartupDto; @@ -63,6 +65,9 @@ @Resource private ConfigService configService; + @Resource + private WrkMastMapper wrkMastMapper; + @PostMapping("/pakin/loc/v1") @ResponseBody @Transactional @@ -90,20 +95,38 @@ StartupDto dto = null; + // 鍏ュ簱鏈夊紓甯稿嚭鍒板嚭搴撳彛1024 + if(!Cools.isEmpty(param.getErrMsg())){ + return exceptionIsOutOfTheWarehouse(param,sourceStaNo,waitPakin); + } + if(param.getIoType() == 1) { List<SearchLocParam.WantBucket> wantBucketFlag = param.getWantBucketFlag(); - Optional<SearchLocParam.WantBucket> first = wantBucketFlag.stream().filter(wantBucket -> wantBucket.getBucketType() == param.getBucketType()).findFirst(); - if (first.isPresent()) { - if(waitPakin == null) { - return R.error("鍏ュ簱閫氱煡妗d负绌�"); - } else { - dto = startupFullPutStore(param,waitPakin,first.get()); // 鐩翠緵缃愯绾夸换鍔� - if (dto != null) { - log.info("WCS鍏ュ簱鐩翠緵缃愯绾挎帴鍙h繑鍙�:{},鎵樼洏鐮�:{}", dto, param.getBarcode()); - return R.ok().add(dto); + for(SearchLocParam.WantBucket wantBucket: wantBucketFlag) { + if(wantBucket.getBucketType() != 0 && wantBucket.getBucketType() == param.getBucketType()) { // 缃愯绾挎湁瑕佹《淇″彿骞朵笖褰撳墠妗舵槸缃愯绾胯鐨勬《 + if(waitPakin == null) { + return R.error("鍏ュ簱閫氱煡妗d负绌�"); + } else { + // <4 < 2 < 4 + int count = wrkMastMapper.selectInGzxCount(wantBucket.getSite()); +// int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", wantBucket.getSite())); + if(wantBucket.getSite() == 1071 && count < 4 || wantBucket.getSite() == 1064 && count < 2 || wantBucket.getSite() == 1078 && count < 4) { + dto = startupFullPutStore(param,waitPakin,wantBucket); // 鐩翠緵缃愯绾夸换鍔� + if (dto != null) { + log.info("WCS鍏ュ簱鐩翠緵缃愯绾挎帴鍙h繑鍙�:{},鎵樼洏鐮�:{}", dto, param.getBarcode()); + return R.ok().add(dto); + } + } else { + log.warn("鐩翠緵鐏岃绾夸换鍔″凡婊★紝鍏ユ垚鍝佸簱,鍏ュ簱鐩爣绔欑偣{}锛屼换鍔℃暟锛歿}",wantBucket.getSite(),count); + } } } } + } + // 1.姣嶆墭鐩橈紝2瀛愭墭鐩� + int flag = 0; + if(param.getIoType() == 10) { + flag = param.getBucketType() == 21 ? 1 : 2 ; } switch (param.getIoType()) { @@ -112,13 +135,80 @@ dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakin, param.isTailSupportFlag()); break; case 10://绌烘墭鐩樺叆搴� - dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode(), 1); + dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode(), 1, flag); break; default: break; } log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, param.getBarcode()); return R.ok().add(dto); + } + + /** + * 鍏ュ簱寮傚父鍑哄埌鍑哄簱鍙�1024 + */ + @Transactional(propagation = Propagation.REQUIRED) + public R exceptionIsOutOfTheWarehouse(SearchLocParam param, BasDevp sourceStaNo,WaitPakin waitPakin) { + + StartupDto dto = commonService.getLocNo(param,1024); + int workNo = dto.getWorkNo(); + Date now = new Date(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(2L); + wrkMast.setIoType(3); // 鍏ュ嚭搴撶姸鎬侊細3.绔欏埌绔� + wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setSourceStaNo(dto.getSourceStaNo()); + wrkMast.setStaNo(dto.getStaNo()); + wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setCtnType(0); // 灏炬墭鏍囪瘑 + wrkMast.setPdcType(waitPakin != null ? waitPakin.getMaktx() : ""); // 绌烘《绫诲瀷 + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + wrkMast.setLocNo(param.getErrMsg()); // 寮傚父鎻忚堪浣撶幇鍦ㄧ洰鏍囧簱浣嶄笂 + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 鐢熸垚宸ヤ綔妗f槑缁� + if(waitPakin != null) { + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(waitPakin); + 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", param.getBarcode()); + 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("鏇存柊婧愮珯澶辫触"); + } + + return R.ok(dto); } // 缃愯瀹屾垚鍏ュ簱 @@ -146,17 +236,19 @@ } // 鑾峰彇绯荤粺閰嶇疆锛岀湅鎴愬搧缃愯瀹屾垚鏄惁鐩存帴鍑哄埌鍙戣揣鍙� - Config config = configService.selectConfigByCode("gzwcfh"); - String fhFlag = ""; + Config config = configService.selectConfigByCode("gzxfh" + param.getSourceStaNo()); + boolean fhFlag = false; + int fhk = 0; // 鍙戣揣鍙� if (config != null && config.getStatus() == 1 && !Cools.isEmpty(config.getValue())) { - fhFlag = config.getValue(); + fhFlag = true; + fhk = Integer.parseInt(config.getValue()); } Date now = new Date(); StartupDto dto; // 鍒ゆ柇璐存爣寮傚父锛屽妫�閲嶉噺寮傚父鐨勶紝涓嶅垎閰嶅簱浣嶏紝鍘诲線寮傚父鍙�1090 -// if ( !param.isTbFlag() || param.getGrossWeight() < param.getWeight()) { +// if ( !param.isTbFlag() || !param.isReinspection()) { // // // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------ // WrkMast wrkMast = new WrkMast(); @@ -190,9 +282,11 @@ // wrkDetl.setManuDate(param.getManuDate()); // wrkDetl.setWeight(param.getWeight()); // wrkDetl.setManLength(param.getGrossWeight()); -// wrkDetl.setInspect(1); // 璐存爣鎴愬姛 +// 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(); @@ -200,7 +294,7 @@ // dto.setSourceStaNo(wrkMast.getSourceStaNo()); // dto.setStaNo(wrkMast.getStaNo()); // } else - if(param.getMatnr().equals(fhFlag)) { // 鐩存帴鍙戣揣 + if(fhFlag) { // 鐩存帴鍙戣揣 // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------ WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(commonService.getWorkNo(0)); @@ -210,7 +304,7 @@ wrkMast.setIoPri(13D); // 浼樺厛绾� // wrkMast.setCrnNo(dto.getCrnNo()); wrkMast.setSourceStaNo(param.getSourceStaNo()); - wrkMast.setStaNo(1016); + wrkMast.setStaNo(fhk); // wrkMast.setLocNo(dto.getLocNo()); wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮� wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 @@ -233,9 +327,11 @@ wrkDetl.setManuDate(param.getManuDate()); wrkDetl.setWeight(param.getWeight()); wrkDetl.setManLength(param.getGrossWeight()); + wrkDetl.setVolume(param.getCannedVolume()); // 缃愯閲� wrkDetl.setInspect(1); wrkDetl.setIoTime(now); wrkDetl.setAppeTime(now); + wrkDetl.setModel(wrkDetl1.getMaktx()); // 淇濆瓨绌烘《鍚嶇О wrkDetlService.insert(wrkDetl); dto = new StartupDto(); @@ -285,9 +381,12 @@ wrkDetl.setManuDate(param.getManuDate()); wrkDetl.setWeight(param.getWeight()); wrkDetl.setManLength(param.getGrossWeight()); + wrkDetl.setVolume(param.getCannedVolume()); wrkDetl.setInspect(1); // 璐存爣鎴愬姛 wrkDetl.setIoTime(now); wrkDetl.setAppeTime(now); + log.warn("鎴愬搧缃愯瀹屾垚锛屾《绫诲瀷淇濆瓨锛屾柊浠诲姟鍙凤細{},鏃т换鍔″彿:{},鏃т换鍔℃《鍨�:{}",workNo,wrkMast1.getWrkNo(),wrkDetl1.getMaktx()); + wrkDetl.setModel(wrkDetl1.getMaktx()); // 淇濆瓨绌烘《鍚嶇О wrkDetlService.insert(wrkDetl); // 鏇存柊鐩爣搴撲綅鐘舵�� @@ -357,7 +456,7 @@ if(!param.isTbFlag()) { //涓嬬嚎鍑哄簱 wrkMast.setSourceStaNo(1090); - wrkMast.setStaNo(1016); // 寮傚父涓嬬嚎榛樿鍏ュ簱绔欑偣涓�1016 + wrkMast.setStaNo(1024); // 寮傚父涓嬬嚎榛樿鍏ュ簱绔欑偣涓�1016 wrkMastService.updateById(wrkMast); return R.ok(); } @@ -576,6 +675,14 @@ return wrkMastService.insert(wrkMast) ? R.ok("鑷姩绌烘墭鍏ュ簱鎴愬姛,宸ヤ綔鍙�:"+wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍏ュ簱澶辫触"); } + // 鑷姩鍑虹┖妗� + @PostMapping("/autoOutEmptyBucket") + @ResponseBody + public R autoOutEmptyBucket(@RequestBody StockOutParam param){ + workService.startupFullTakeStore(param, 29L); + return R.ok("鍑哄簱鍚姩鎴愬姛"); + } + @PostMapping("auto/emptyOut/v1") @ResponseBody public R autoEmptyOut(@RequestBody Map<String,String> emptyPalletSite){ @@ -694,13 +801,13 @@ // 婧愮珯鐐圭姸鎬佹娴� BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true); - // 鍒ゆ柇绌烘《搴撴湁澶氬皯杩欑妗跺瀷 - int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("matnr", param.getBucketType()).where("CAST(SUBSTRING(loc_no, 1, 2) as int) >= 9")); - - // 灏忎簬10涓垯鐩翠緵缃愯绾匡紝閬垮厤鍏ョ┖妗跺簱鍚庡湪鍑哄簱 - if (count > 10) { - return null; - } +// // 鍒ゆ柇绌烘《搴撴湁澶氬皯杩欑妗跺瀷 +// int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("matnr", param.getBucketType()).where("CAST(SUBSTRING(loc_no, 1, 2) as int) >= 9")); +// +// // 灏忎簬10涓垯鐩翠緵缃愯绾匡紝閬垮厤鍏ョ┖妗跺簱鍚庡湪鍑哄簱 +// if (count > 10) { +// return null; +// } StartupDto dto = commonService.getLocNo(param,wantBucket.getSite()); int workNo = dto.getWorkNo(); @@ -762,7 +869,7 @@ } @Transactional - public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode, int locArea) { + public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode, int locArea, int flag) { // 婧愮珯鐐圭姸鎬佹娴� BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); // 妫�绱㈠簱浣� @@ -776,7 +883,7 @@ wrkMast.setIoTime(new Date()); wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱 - wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setIoPri(14D); // 浼樺厛绾� wrkMast.setCrnNo(dto.getCrnNo()); wrkMast.setSourceStaNo(dto.getSourceStaNo()); wrkMast.setStaNo(dto.getStaNo()); @@ -786,6 +893,7 @@ wrkMast.setExitMk("N"); // 閫�鍑� wrkMast.setEmptyMk("Y"); // 绌烘澘 wrkMast.setLinkMis("Y"); + wrkMast.setPltType(flag); // 绌烘嫋绫诲瀷 // wrkMast.setBarcode(barcode); // wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷 // 鎿嶄綔浜哄憳鏁版嵁 -- Gitblit v1.9.1