From e9648272bcaee5f64273aca8e41f830a3644628d Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期四, 20 三月 2025 15:41:38 +0800 Subject: [PATCH] 初始化 --- src/main/java/com/zy/common/web/WcsController.java | 182 +++++++++++++++++++++++++++++--------------- 1 files changed, 119 insertions(+), 63 deletions(-) diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java index 06099a0..72cd9a1 100644 --- a/src/main/java/com/zy/common/web/WcsController.java +++ b/src/main/java/com/zy/common/web/WcsController.java @@ -6,6 +6,7 @@ import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.*; +import com.zy.asrs.entity.result.StorageResult; import com.zy.asrs.service.*; import com.zy.common.CodeRes; import com.zy.common.model.LocTypeDto; @@ -43,72 +44,67 @@ private WaitPakinService waitPakinService; @Autowired private LocDetlService locDetlService; + @Autowired + private BasCrnpService basCrnpService; @PostMapping("/pakin/loc/v1") @ResponseBody - public synchronized R getLocNo(@RequestBody SearchLocParam param) { + public synchronized R getLocNo(@RequestBody(required = false) SearchLocParam param) { + StorageResult storageResult=new StorageResult(); log.info("鏀跺埌WCS鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param); - if (Cools.isEmpty(param.getIoType())) { + if (Cools.isEmpty(param.getWcsIoType())) { return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�"); } - if (Cools.isEmpty(param.getSourceStaNo())) { + if (Cools.isEmpty(param.getWcsSourceStaNo())) { return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖"); } List<WaitPakin> waitPakins = null; - if (param.getIoType() == 1) { - if (Cools.isEmpty(param.getBarcode())) { + if (param.getWcsIoType() == 1) { + if (Cools.isEmpty(param.getBoxNo())) { return R.error("鏉$爜涓嶈兘涓虹┖"); } - waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode())); + waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBoxNo())); if (Cools.isEmpty(waitPakins)) { - WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); + WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBoxNo()); if (wrkMast != null && wrkMast.getIoType() == 103) { return R.parse(CodeRes.PICK_600); } return R.parse(CodeRes.NO_COMB_700); } - int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); - int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); + int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBoxNo())); + int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBoxNo())); if (countLoc > 0 || countWrk > 0) { return R.error(CodeRes.EXIST_500); } } - if (Cools.isEmpty(param.getLocType1())){ - return R.error("楂樹綆妫�娴嬩俊鍙蜂笉鑳戒负绌�"); - } - // 婧愮珯鐐圭姸鎬佹娴� - BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true); - sourceStaNo.setLocType1(param.getLocType1()); - LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); - StartupDto dto = null; - switch (param.getIoType()) { + switch (param.getWcsIoType()) { case 1://婊℃墭鐩樺叆搴� assert waitPakins != null; - dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins); + storageResult = startupFullPutStore(param.getWcsSourceStaNo(), param.getBoxNo(), waitPakins); break; - case 10://绌烘墭鐩樺叆搴� - dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode()); + case 2://绌烘墭鐩樺叆搴� + storageResult = emptyPlateIn(param.getWcsSourceStaNo(), param.getBoxNo()); break; default: break; } - log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, param.getBarcode()); - return R.ok().add(dto); + log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", storageResult, param.getBoxNo()); + return R.ok().add(storageResult); } /** * 鍏ㄦ澘鍏ュ簱 */ @Transactional - public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins) { - // 婧愮珯鐐圭姸鎬佹娴� - BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); + public StorageResult startupFullPutStore(Integer devpNo, String barcode, List<WaitPakin> waitPakins) { + StorageResult storageResult=new StorageResult(); + Integer[] arr=arr(); + int type=Cools.isEmpty(waitPakins.get(0).getBeBatch())?1:waitPakins.get(0).getBeBatch(); // 妫�绱㈠簱浣� - List<String> matNos = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList()); - StartupDto dto = commonService.getLocNo(1, 1, devpNo, matNos, locTypeDto,0); - int workNo = dto.getWorkNo(); + LocMast locMast1 =commonService.getLocNo2(waitPakins.get(0),arr,0,type,1); + int workNo = commonService.getWorkNo(0); Date now = new Date(); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); @@ -117,17 +113,15 @@ 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.setSourceStaNo(devpNo); + wrkMast.setLocNo(locMast1.getLocNo()); wrkMast.setBarcode(barcode); // 鎵樼洏鐮� wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 wrkMast.setPicking("N"); // 鎷f枡 wrkMast.setExitMk("N"); // 閫�鍑� wrkMast.setEmptyMk("N"); // 绌烘澘 wrkMast.setLinkMis("Y"); - wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷 + wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷 // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeTime(now); wrkMast.setModiTime(now); @@ -151,20 +145,14 @@ Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>() .eq("zpallet", barcode); WaitPakin setParam = new WaitPakin(); - setParam.setLocNo(dto.getLocNo()); + setParam.setLocNo(locMast1.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()); + LocMast locMast = locMastService.selectById(locMast1.getLocNo()); if (locMast.getLocSts().equals("O")){ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 locMast.setModiTime(now); @@ -172,18 +160,23 @@ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); } } else { - throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); + throw new CoolException(locMast1.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); } - return dto; + StorageResult.Results results=new StorageResult.Results(); + results.setTaskNo(workNo); + results.setShelfUnitId(locMast1.getLocNo()); + storageResult.setResults(results); + return storageResult; } @Transactional - public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode) { - // 婧愮珯鐐圭姸鎬佹娴� - BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); + public StorageResult emptyPlateIn(Integer devpNo, String barcode) { + StorageResult storageResult=new StorageResult(); // 妫�绱㈠簱浣� - StartupDto dto = commonService.getLocNo(1, 10, devpNo, null, locTypeDto,0); - int workNo = dto.getWorkNo(); + Integer[] arr=arr(); + // 妫�绱㈠簱浣� + LocMast locMast1 =commonService.getLocNo2(null,arr,0,1,2); + int workNo = commonService.getWorkNo(0); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); @@ -191,17 +184,15 @@ wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱 wrkMast.setIoPri(13D); // 浼樺厛绾� - wrkMast.setCrnNo(dto.getCrnNo()); - wrkMast.setSourceStaNo(dto.getSourceStaNo()); - wrkMast.setStaNo(dto.getStaNo()); - wrkMast.setLocNo(dto.getLocNo()); + wrkMast.setSourceStaNo(devpNo); + wrkMast.setLocNo(locMast1.getLocNo()); wrkMast.setFullPlt("N"); // 婊℃澘 wrkMast.setPicking("N"); // 鎷f枡 wrkMast.setExitMk("N"); // 閫�鍑� wrkMast.setEmptyMk("Y"); // 绌烘澘 wrkMast.setLinkMis("Y"); wrkMast.setBarcode(barcode); - wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷 + wrkMast.setCtnType(2); // 瀹瑰櫒绫诲瀷 // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeTime(new Date()); wrkMast.setModiTime(new Date()); @@ -209,14 +200,8 @@ if (!res) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } - // 鏇存柊婧愮珯鐐逛俊鎭� - sourceStaNo.setWrkNo(workNo); - sourceStaNo.setModiTime(new Date()); - if (!basDevpService.updateById(sourceStaNo)){ - throw new CoolException("鏇存柊婧愮珯澶辫触"); - } // 鏇存柊鐩爣搴撲綅鐘舵�� - LocMast locMast = locMastService.selectById(dto.getLocNo()); + LocMast locMast = locMastService.selectById(locMast1.getLocNo()); if (locMast.getLocSts().equals("O")){ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 locMast.setModiTime(new Date()); @@ -224,9 +209,80 @@ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); } } else { - throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); + throw new CoolException(locMast1.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); } - return dto; + StorageResult.Results results=new StorageResult.Results(); + results.setTaskNo(workNo); + results.setShelfUnitId(locMast1.getLocNo()); + storageResult.setResults(results); + return storageResult; + } + + @Transactional + public Integer[] arr() { + //鑾峰彇鏈夋爣璁扮殑灏忚溅锛屾寜椤哄簭杩涜璁板綍 + int count =basCrnpService.selectCount(new EntityWrapper<BasCrnp>()); + //鍒濆鍖栨暟缁� + Integer [] arr=new Integer[7]; + //鏁扮粍鏍囪 + int i=0; + BasCrnp basCrnp=basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("tank_qty",1)); + //娌℃湁鎵惧埌鏍囪鏃舵寜榛樿涓�鍙峰皬杞︽墍鍦ㄥ眰寮�濮嬫帓 + if(Cools.isEmpty(basCrnp)){ + for(int q=1;q<=count;q++){ + basCrnp=basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no",q)); + if(Cools.isEmpty(basCrnp)){ + log.error(q+"鍙峰皬杞︽病鏈夋壘鍒�"); + continue; + } + if(basCrnp.getCrnErr()>0||basCrnp.getCrnSts()!=1){ + log.error(q+"鍙峰皬杞︽姤璀︽垨鑰呭湪鍏呯數璺宠繃姝よ溅"); + continue; + } + arr[i]=basCrnp.getLev1(); + i++; + if(q==1){ + basCrnp.setTankQty(0); + basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",1)); + }else if(q==2){ + basCrnp.setTankQty(1); + basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",2)); + } + } + }else{ + basCrnp.setTankQty(0); + basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",basCrnp.getCrnNo())); + arr[i]=basCrnp.getLev1(); + i++; + int o=basCrnp.getCrnNo(); + for(int q=1;q<count;q++){ + if(++o>count){ + o=1; + } + basCrnp=basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no",o)); + if(q==1){ + basCrnp.setTankQty(1); + basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",o)); + } + arr[i]=basCrnp.getLev1(); + i++; + } + + } + for (int w=1;w<=7;w++){ + boolean boo=true; + for(int g=0;g<count;g++){ + if(arr[g]==w){ + boo=false; + break; + } + } + if(boo){ + arr[i]=w; + i++; + } + } + return arr; } } -- Gitblit v1.9.1