From b6c0ffd5380fb4c9b7324298bade1bc0210b565d Mon Sep 17 00:00:00 2001 From: dubin <bindu_bean@163.com> Date: 星期日, 05 十月 2025 10:32:08 +0800 Subject: [PATCH] 联调 --- src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 282 ++++++++++++++++++++++++++++++------------------------- 1 files changed, 153 insertions(+), 129 deletions(-) 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 adae54a..5833612 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -7,7 +7,10 @@ import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import com.zy.asrs.entity.*; -import com.zy.asrs.entity.param.*; +import com.zy.asrs.entity.param.EmptyPlateOutParam; +import com.zy.asrs.entity.param.FullStoreParam; +import com.zy.asrs.entity.param.LocDetlAdjustParam; +import com.zy.asrs.entity.param.StockOutParam; import com.zy.asrs.service.*; import com.zy.asrs.utils.Utils; import com.zy.common.model.*; @@ -152,81 +155,31 @@ return null; } -// @Override -// @Transactional -// public void startupFullTakeStore(StockOutFloorParam param, Long userId) { -// // 鐩爣绔欑偣鐘舵�佹娴� -// BasDevp staNo = null; -// // 鑾峰彇搴撲綅鏄庣粏 -// List<LocDetlDto> locDetlDtos = new ArrayList<>(); -// for (StockOutFloorParam.LocDetl paramLocDetl : param.getLocDetls()) { -// staNo = basDevpService.checkSiteStatus(paramLocDetl.getSiteId()); -// -// if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { -// LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl); -// 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") || locMast.getLocSts().equals("D")) { -// // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱 -// stockOut(staNo, locDetlDtos, null, userId); -// } else { -// throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎銆丏鐨勫簱浣嶏紝搴撲綅鍙凤細" + locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$()); -// } -// } else { -// throw new CoolException("搴撳瓨涓嶅瓨鍦�"); -// } -// } - @Override @Transactional - public void startupFullTakeStore(StockOutFloorParam param, Long userId) { - // 鎸� siteId 鍒嗙粍 - Map<Integer, List<LocDetlDto>> siteIdToLocDetlsMap = new HashMap<>(); - - for (StockOutFloorParam.LocDetl paramLocDetl : param.getLocDetls()) { + public void startupFullTakeStore(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); - if (one != null) { - LocDetlDto dto = new LocDetlDto(one, paramLocDetl.getCount()); - Integer siteId = paramLocDetl.getSiteId(); - - if (siteId != null) { - siteIdToLocDetlsMap.computeIfAbsent(siteId, k -> new ArrayList<>()).add(dto); - } - } + if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); } } - - if (siteIdToLocDetlsMap.isEmpty()) { - throw new CoolException("搴撳瓨涓嶅瓨鍦�"); - } - - // 閬嶅巻鍒嗙粍鍚庣殑姣忎釜 siteId锛岄�愪釜鍑哄簱 - for (Map.Entry<Integer, List<LocDetlDto>> entry : siteIdToLocDetlsMap.entrySet()) { - Integer siteId = entry.getKey(); - List<LocDetlDto> locDetlDtos = entry.getValue(); - - // 鏍¢獙搴撲綅鐘舵�� - LocMast locMast = locMastService.selectOne( - new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()) - ); - + if (!locDetlDtos.isEmpty()) { + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo())); if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) { - // 鏍¢獙鐩爣绔欑偣 - BasDevp staNo = basDevpService.checkSiteStatus(siteId); - - // 鎵ц鍑哄簱 + // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱 stockOut(staNo, locDetlDtos, null, userId); } else { - throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎銆丏鐨勫簱浣嶏紝搴撲綅鍙凤細" + - locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$()); + throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎銆丏鐨勫簱浣嶏紝搴撲綅鍙凤細" + locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$()); } + } else { + throw new CoolException("搴撳瓨涓嶅瓨鍦�"); } } - @Override @Transactional @@ -652,9 +605,10 @@ throw new CoolException(locNo + "搴撲綅涓嶅瓨鍦�"); } // 鑾峰彇婧愮珯 - Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() + Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() .eq("type_no", 110) - .eq("stn_no", param.getOutSite()) + //.eq("stn_no", param.getOutSite()) + .eq("crn_stn", param.getOutSite()) .eq("crn_no", locMast.getCrnNo()); StaDesc staDesc = staDescService.selectOne(wrapper); Integer sourceStaNo = staDesc.getCrnStn(); @@ -670,7 +624,8 @@ wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱 wrkMast.setIoPri(10D); wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯 - wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔� + //wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔� + wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔� wrkMast.setCrnNo(locMast.getCrnNo()); wrkMast.setSourceLocNo(locNo); // 婧愬簱浣� wrkMast.setFullPlt("N"); // 婊℃澘锛歒 @@ -700,77 +655,29 @@ return wrkMast; } -// @Override -// @Transactional -// public void locCheckOut(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); -// 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.鐩樼偣鍑哄簱 -// stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId); -// } else { -// throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎鐨勫簱浣嶏紝搴撲綅鍙凤細" + locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$()); -// } -// } else { -// throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�"); -// } -// } - @Override @Transactional - public void locCheckOut(StockOutFloorParam param, Long userId) { - - // 鎸� siteId 鍒嗙粍 - Map<Integer, List<LocDetlDto>> siteIdToLocDetlsMap = new HashMap<>(); - - for (StockOutFloorParam.LocDetl paramLocDetl : param.getLocDetls()) { + public void locCheckOut(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); - if (one != null) { - LocDetlDto dto = new LocDetlDto(one, paramLocDetl.getCount()); - Integer siteId = paramLocDetl.getSiteId(); - - if (siteId != null) { - siteIdToLocDetlsMap.computeIfAbsent(siteId, k -> new ArrayList<>()).add(dto); - } - } + if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); } } - - if (siteIdToLocDetlsMap.isEmpty()) { - throw new CoolException("搴撳瓨涓嶅瓨鍦�"); - } - - // 閬嶅巻鍒嗙粍鍚庣殑姣忎釜 siteId锛岄�愪釜鍑哄簱 - for (Map.Entry<Integer, List<LocDetlDto>> entry : siteIdToLocDetlsMap.entrySet()) { - Integer siteId = entry.getKey(); - List<LocDetlDto> locDetlDtos = entry.getValue(); - - // 鏍¢獙搴撲綅鐘舵�� - LocMast locMast = locMastService.selectOne( - new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()) - ); - - if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) { - // 鏍¢獙鐩爣绔欑偣 - BasDevp staNo = basDevpService.checkSiteStatus(siteId); - - // 鎵ц鍑哄簱 + if (!locDetlDtos.isEmpty()) { + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo())); + if (locMast.getLocSts().equals("F")) { + // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱 stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId); } else { - throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎銆丏鐨勫簱浣嶏紝搴撲綅鍙凤細" + - locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$()); + throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎鐨勫簱浣嶏紝搴撲綅鍙凤細" + locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$()); } + } else { + throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�"); } } @@ -1352,4 +1259,121 @@ } } + @Override + public void locClampOut(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); + 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.鐩樼偣鍑哄簱 + clampOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId); + } else { + throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎鐨勫簱浣嶏紝搴撲綅鍙凤細" + locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$()); + } + } else { + throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�"); + } + } + + + @Transactional + public void clampOut(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) { + ioType = 104; + assert ioType != null; + // 鑾峰彇搴撲綅 + LocMast locMast = locMastService.selectById(dto.getLocNo()); + + Integer outSta = staNo.getDevNo(); + // 鑾峰彇璺緞 + 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槑缁� + 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() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��"); + } + } + } } -- Gitblit v1.9.1