From 907f0b5fca853fcffb0754e4a57d819803b7f46d Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期五, 21 二月 2025 08:30:48 +0800 Subject: [PATCH] #四向库盘点、并板移库 --- src/main/java/com/zy/asrs/service/WorkService.java | 10 + src/main/webapp/static/js/pakStore/locCheckOut.js | 2 src/main/webapp/static/js/mergeStore/mergeStore.js | 2 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 328 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/zy/asrs/controller/WorkController.java | 14 ++ 5 files changed, 354 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/WorkController.java b/src/main/java/com/zy/asrs/controller/WorkController.java index 7231322..2e5d066 100644 --- a/src/main/java/com/zy/asrs/controller/WorkController.java +++ b/src/main/java/com/zy/asrs/controller/WorkController.java @@ -47,6 +47,13 @@ return R.ok("鍑哄簱鍚姩鎴愬姛"); } + @RequestMapping("/locMerge/out/start/sxk") + @ManagerAuth(memo = "骞舵澘鍑哄簱") + public R locMergeOutStartSxk(@RequestBody StockOutParam param) { + workService.locMergeOut(param, getUserId()); + return R.ok("鍑哄簱鍚姩鎴愬姛"); + } + @RequestMapping("/available/put/site") @ManagerAuth() public R availablePutSite(){ @@ -221,6 +228,13 @@ return R.ok("鍑哄簱鍚姩鎴愬姛"); } + @RequestMapping("/locCheck/out/start/sxk") + @ManagerAuth(memo = "鐩樼偣鍑哄簱") + public R locCheckOutStartsxk(@RequestBody StockOutParam param) { + workService.locCheckOut(param, getUserId()); + return R.ok("鍑哄簱鍚姩鎴愬姛"); + } + @RequestMapping("/loc/move/start") @ManagerAuth(memo = "搴撲綅绉昏浆") public R locMoveStart(@RequestParam String sourceLocNo, diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java index e5e0110..df6c1c3 100644 --- a/src/main/java/com/zy/asrs/service/WorkService.java +++ b/src/main/java/com/zy/asrs/service/WorkService.java @@ -62,6 +62,11 @@ void locCheckOut(StockOutParam param, Long userId); /** + * 鐩樼偣鍑哄簱 + */ + void locCheckOutsxk(StockOutParam param, Long userId); + + /** * 搴撲綅绉昏浆 */ void locMove(String sourceLocNo, String locNo, Long userId); @@ -102,4 +107,9 @@ * 骞舵澘鍑哄簱 */ void locMergeOut(StockOutParam param, Long userId); + + /** + * sxk骞舵澘鍑哄簱 + */ + void locMergeOutSxk(StockOutParam param, Long userId); } diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java index 23ef650..82a2642 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -909,6 +909,180 @@ @Override @Transactional + public void locCheckOutsxk(StockOutParam param, Long userId) { + // 鐩爣绔欑偣鐘舵�佹娴� + BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); + // 鍒ゆ柇鍏ュ簱妯″紡 + OutStockInterceptUtil.outStockIntercept(param.getOutSite()); + // 鑾峰彇搴撲綅鏄庣粏 + List<LocDetlDto> locDetlDtos = new ArrayList<>(); + for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { + if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { + LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch()); + if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); + } + } + if (!locDetlDtos.isEmpty()) { + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo())); + if (locMast.getLocSts().equals("F")){ + // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱 + inventoryCheckStockOutsxk(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId,param); + }else { + throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$()); + } + } else { + throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�"); + } + } + + @Transactional + public void inventoryCheckStockOutsxk(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId,StockOutParam param) { + Date now = new Date(); + // 鍚堝苟鍚岀被椤� + Set<String> locNos = new HashSet<>(); + List<OutLocDto> dtos = new ArrayList<>(); + for (LocDetlDto locDetlDto : locDetlDtos) { + String locNo = locDetlDto.getLocDetl().getLocNo(); + if (locNos.contains(locNo)) { + for (OutLocDto dto : dtos) { + if (dto.getLocNo().equals(locNo)) { + dto.getLocDetlDtos().add(locDetlDto); + break; + } + } + } else { + locNos.add(locNo); + dtos.add(new OutLocDto(locNo, locDetlDto)); + } + } + Integer ioType = null; + // 鐢熸垚宸ヤ綔妗� + for (OutLocDto dto : dtos) { + // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱 + if (ioWorkType == null) { + ioType = dto.isAll() ? 101 : 103; + } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) { + ioType = 107; + } + assert ioType != null; + // 鑾峰彇搴撲綅 + LocMast locMast = locMastService.selectById(dto.getLocNo()); + + List<LocMast> locMasts = new ArrayList<>(); + if ((locMast.getBay1() >=1 && locMast.getBay1()<=2) || (locMast.getBay1() >=6 && locMast.getBay1()<=7 && locMast.getRow1() !=36 && locMast.getRow1() !=29 ) || (locMast.getBay1() >=11 && locMast.getBay1()<=12)){ + locMasts = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("gro1", locMast.getGro1()) + .eq("crn_no", 7) + .eq("loc_type1",locMast.getLocType1()) + .orderBy("bay1", false)); + }else { + locMasts = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("gro1", locMast.getGro1()) + .eq("crn_no", 7) + .eq("loc_type1",locMast.getLocType1()) + .orderBy("bay1", true)); + } + for (LocMast locMast1 : locMasts) { + if (locMast1.getLocNo().equals(dto.getLocNo())){ + break; + } + if (locMast1.getLocSts().equals("X")){ + throw new CoolException(dto.getLocNo()+"搴撲綅鍓嶆柟鏈夐攣瀹氬簱浣嶏紝绂佹鍑哄簱"); + } + if (locMast1.getLocSts().equals("F")) { + moveLocForDeepLoc(locMast1); + } + } + + Integer outSta = staNo.getDevNo(); +// //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202 +// if(locMast.getCrnNo()==2){ +// outSta = ioType == 101 ? 204 : 202; +// } + + // 鑾峰彇璺緞 + StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta); + + + // 鐢熸垚宸ヤ綔鍙� + int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬� + wrkMast.setIoPri(13D); // 浼樺厛绾э細13 + wrkMast.setCrnNo(locMast.getCrnNo()); + wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯 + wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔� + wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("N"); + wrkMast.setBarcode(locMast.getBarcode()); + wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + if (ioType == 107){ + wrkMast.setSheetNo(param.getOrderNo()); + } + if (!wrkMastService.insert(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo()); + } + // 鐢熸垚宸ヤ綔妗f槑缁� + for (LocDetlDto detlDto : dto.getLocDetlDtos()) { + + InventoryCheckOrderDetl inventoryCheckOrderDetl = new InventoryCheckOrderDetl(); + inventoryCheckOrderDetl.setOrderNo(param.getOrderNo()); + inventoryCheckOrderDetl.setMatnr(detlDto.getLocDetl().getMatnr()); + inventoryCheckOrderDetl.setMaktx(detlDto.getLocDetl().getMaktx()); + inventoryCheckOrderDetl.setBatch(detlDto.getLocDetl().getBatch()); + inventoryCheckOrderDetl.setLocNo(detlDto.getLocDetl().getLocNo()); + inventoryCheckOrderDetl.setArea(detlDto.getLocDetl().getOrigin()); + inventoryCheckOrderDetl.setAnfme(detlDto.getLocDetl().getAnfme()); + inventoryCheckOrderDetl.setIoTime(now); + inventoryCheckOrderDetl.setStatus("1"); + if (!inventoryCheckOrderDetlService.insert(inventoryCheckOrderDetl)) { + throw new CoolException("淇濆瓨鐩樼偣鏄庣粏澶辫触"); + } + + if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;} + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(detlDto.getLocDetl()); + wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙� + wrkDetl.setWrkNo(workNo); + wrkDetl.setIoTime(now); + Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount(); + wrkDetl.setAnfme(anfme); // 鏁伴噺 + wrkDetl.setAppeTime(now); + wrkDetl.setAppeUser(userId); + wrkDetl.setModiTime(now); + wrkDetl.setModiUser(userId); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } + } + // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓� + locMast = locMastService.selectById(dto.getLocNo()); + if (locMast.getLocSts().equals("F")) { + locMast.setLocSts(ioType==101?"R":"P"); + locMast.setModiUser(userId); + locMast.setModiTime(now); + if (!locMastService.updateById(locMast)) { + throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo()); + } + } else { + throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��"); + } + } + } + + @Override + @Transactional public void locMove(String sourceLocNo, String locNo, Long userId) { LocMast sourceLoc = locMastService.selectById(sourceLocNo); List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); @@ -1511,4 +1685,158 @@ } } + @Override + @Transactional + public void locMergeOutSxk(StockOutParam param, Long userId) { + // 鐩爣绔欑偣鐘舵�佹娴� + BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); + // 鑾峰彇搴撲綅鏄庣粏 + List<LocDetlDto> locDetlDtos = new ArrayList<>(); + for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { + if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { + LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch()); + if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); + } + } + if (!locDetlDtos.isEmpty()) { + // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱 + stockOutSXK(staNo, locDetlDtos, IoWorkType.MERGE_OUT, userId); + } else { + throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�"); + } + } + + + + @Transactional + public void stockOutSXK(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) { + Date now = new Date(); + // 鍚堝苟鍚岀被椤� + Set<String> locNos = new HashSet<>(); + List<OutLocDto> dtos = new ArrayList<>(); + for (LocDetlDto locDetlDto : locDetlDtos) { + String locNo = locDetlDto.getLocDetl().getLocNo(); + if (locNos.contains(locNo)) { + for (OutLocDto dto : dtos) { + if (dto.getLocNo().equals(locNo)) { + dto.getLocDetlDtos().add(locDetlDto); + break; + } + } + } else { + locNos.add(locNo); + dtos.add(new OutLocDto(locNo, locDetlDto)); + } + } + Integer ioType = null; + // 鐢熸垚宸ヤ綔妗� + for (OutLocDto dto : dtos) { + // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱 + if (ioWorkType == null) { + ioType = dto.isAll() ? 101 : 103; + } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) { + ioType = 107; + }else if (ioWorkType.equals(IoWorkType.MERGE_OUT)) { + ioType = 104; + } + assert ioType != null; + // 鑾峰彇搴撲綅 + LocMast locMast = locMastService.selectById(dto.getLocNo()); + + List<LocMast> locMasts = new ArrayList<>(); + if ((locMast.getBay1() >=1 && locMast.getBay1()<=2) || (locMast.getBay1() >=6 && locMast.getBay1()<=7 && locMast.getRow1() !=36 && locMast.getRow1() !=29 ) || (locMast.getBay1() >=11 && locMast.getBay1()<=12)){ + locMasts = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("gro1", locMast.getGro1()) + .eq("crn_no", 7) + .eq("loc_type1",locMast.getLocType1()) + .orderBy("bay1", false)); + }else { + locMasts = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("gro1", locMast.getGro1()) + .eq("crn_no", 7) + .eq("loc_type1",locMast.getLocType1()) + .orderBy("bay1", true)); + } + for (LocMast locMast1 : locMasts) { + if (locMast1.getLocNo().equals(dto.getLocNo())){ + break; + } + if (locMast1.getLocSts().equals("X")){ + throw new CoolException(dto.getLocNo()+"搴撲綅鍓嶆柟鏈夐攣瀹氬簱浣嶏紝绂佹鍑哄簱"); + } + if (locMast1.getLocSts().equals("F")) { + moveLocForDeepLoc(locMast1); + } + } + + Integer outSta = staNo.getDevNo(); +// //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202 +// if(locMast.getCrnNo()==2){ +// outSta = ioType == 101 ? 204 : 202; +// } + + // 鑾峰彇璺緞 + StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta); + // 鐢熸垚宸ヤ綔鍙� + int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬� + wrkMast.setIoPri(13D); // 浼樺厛绾э細13 + wrkMast.setCrnNo(locMast.getCrnNo()); + wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯 + wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔� + wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("N"); + wrkMast.setBarcode(locMast.getBarcode()); + wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + if (!wrkMastService.insert(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo()); + } + // 鐢熸垚宸ヤ綔妗f槑缁� + if (ioType != 104){ + for (LocDetlDto detlDto : dto.getLocDetlDtos()) { + if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;} + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(detlDto.getLocDetl()); + wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙� + wrkDetl.setWrkNo(workNo); + wrkDetl.setIoTime(now); + Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount(); + wrkDetl.setAnfme(anfme); // 鏁伴噺 + wrkDetl.setAppeTime(now); + wrkDetl.setAppeUser(userId); + wrkDetl.setModiTime(now); + wrkDetl.setModiUser(userId); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } + } + } + + // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓� + locMast = locMastService.selectById(dto.getLocNo()); + if (locMast.getLocSts().equals("F")) { + locMast.setLocSts(ioType==101?"R":"P"); + locMast.setModiUser(userId); + locMast.setModiTime(now); + if (!locMastService.updateById(locMast)) { + throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo()); + } + } else { + throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��"); + } + } + } + } diff --git a/src/main/webapp/static/js/mergeStore/mergeStore.js b/src/main/webapp/static/js/mergeStore/mergeStore.js index c60d61e..8775f38 100644 --- a/src/main/webapp/static/js/mergeStore/mergeStore.js +++ b/src/main/webapp/static/js/mergeStore/mergeStore.js @@ -52,7 +52,7 @@ locDetls: locDetlData } $.ajax({ - url: baseUrl+"/locMerge/out/start", + url: baseUrl+"/locMerge/out/start/sxk", headers: {'token': localStorage.getItem('token')}, data: JSON.stringify(param), contentType:'application/json;charset=UTF-8', diff --git a/src/main/webapp/static/js/pakStore/locCheckOut.js b/src/main/webapp/static/js/pakStore/locCheckOut.js index 8bbcf0d..6e8e5f0 100644 --- a/src/main/webapp/static/js/pakStore/locCheckOut.js +++ b/src/main/webapp/static/js/pakStore/locCheckOut.js @@ -52,7 +52,7 @@ locDetls: locDetlData } $.ajax({ - url: baseUrl+"/locCheck/out/start", + url: baseUrl+"/locCheck/out/start/sxk", headers: {'token': localStorage.getItem('token')}, data: JSON.stringify(param), contentType:'application/json;charset=UTF-8', -- Gitblit v1.9.1