From a57445f55e84b7cf6bd26cf152a0ffa7f62f54f2 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期四, 25 九月 2025 20:06:59 +0800 Subject: [PATCH] 添加容器管理 商品档案管理 --- src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 397 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 356 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java index 09fcff6..716a7ed 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -8,6 +8,8 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.*; +import com.zy.asrs.enums.CommonEnum; +import com.zy.asrs.enums.LocStsType; import com.zy.asrs.mapper.LocMastMapper; import com.zy.asrs.mapper.ManLocDetlMapper; import com.zy.asrs.service.*; @@ -21,12 +23,16 @@ import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; +import java.util.stream.Collectors; /** * 绉诲姩绔湇鍔℃牳蹇冪被 @@ -96,6 +102,19 @@ @Resource private OrderDetlPakoutService orderDetlPakoutService; + @Autowired + private LocCacheService locCacheService; + + @Autowired + private TaskService taskService; + + @Autowired + private TaskDetlService taskDetlService; + @Autowired + private BasStationService basStationService; + @Autowired + private BasContainerService basContainerService; + @Override @Transactional public R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId, Long userId) { @@ -117,8 +136,8 @@ wrkMast.setIoType(8); // 鍏ュ嚭搴撶姸鎬侊細8.鎷f枡閫斾腑骞舵澘 wrkMast.setIoPri(13D); // 浼樺厛绾� wrkMast.setCrnNo(1); - wrkMast.setSourceStaNo(1); - wrkMast.setStaNo(1); + wrkMast.setSourceStaNo(1 + ""); + wrkMast.setStaNo(1 + ""); wrkMast.setLocNo(param.getLocNo()); wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮� wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 @@ -244,8 +263,8 @@ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細101.鐢熸垚鍑哄簱 wrkMast.setIoType(104); // 鍏ュ嚭搴撶姸鎬� wrkMast.setIoPri(13D); // 浼樺厛绾э細13 - wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯 - wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔� + wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯 + wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔� wrkMast.setSourceLocNo(param.getLocNo()); // 婧愬簱浣� wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 wrkMast.setPicking("Y"); // 鎷f枡 @@ -378,8 +397,8 @@ wrkMast.setIoType(108); // 鍏ュ嚭搴撶姸鎬侊細鍑哄簱锛屾嫞鏂欏叆搴� wrkMast.setIoPri(13D); // 浼樺厛绾� wrkMast.setCrnNo(1); - wrkMast.setSourceStaNo(1); - wrkMast.setStaNo(1); + wrkMast.setSourceStaNo(1 + ""); + wrkMast.setStaNo(1 + ""); wrkMast.setSourceLocNo(combParam.getLocNo()); wrkMast.setBarcode(combParam.getBarcode()); // 鎵樼洏鐮� wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 @@ -544,20 +563,18 @@ if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { throw new CoolException(BaseRes.PARAM); } - if (param.getCombMats().size() > 1) { + if (param.getCombMats().size() < 1) { throw new CoolException("璇锋彁鍙栦竴涓晢鍝侊紝鎴栬�呭埛鏂伴噸鏂扮粍鎵橈紒"); } // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁 if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). - eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { + eq("zpallet", param.getBarcode()) + .eq("io_status", "N")) > 0) { throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱"); } if (param.getBarcode().length() != 8) { throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + param.getBarcode()); - } - if (param.getCombMats().size() > 1) { - throw new CoolException("涓嶅厑璁告贩鏂�===>>" + param.getBarcode()); } int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode())); @@ -568,10 +585,8 @@ } Date now = new Date(); - // 鏃犲崟缁勬墭 if (Cools.isEmpty(param.getOrderNo())) { - // 鐢熸垚鍏ュ簱閫氱煡妗� List<DetlDto> detlDtos = new ArrayList<>(); param.getCombMats().forEach(elem -> { @@ -586,19 +601,21 @@ } }); - for (DetlDto detlDto : detlDtos) { Mat mat = matService.selectByMatnr(detlDto.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); } + if (mat.getUpQty().compareTo(detlDto.getAnfme()) < 0) { + throw new CoolException("鐗╂枡锛�" + detlDto.getMatnr() + "鍗曟鏈�澶х粍鎵樹笂闄愪负锛�" + mat.getUpQty()); + } WaitPakin waitPakin = new WaitPakin(); - waitPakin.sync(mat); + BeanUtils.copyProperties(mat, waitPakin); waitPakin.setBatch(detlDto.getBatch()); - waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮� - waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� - waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺 - waitPakin.setStatus("Y"); // 鐘舵�� + waitPakin.setZpallet(param.getBarcode()); + waitPakin.setIoStatus("N"); + waitPakin.setAnfme(detlDto.getAnfme()); + waitPakin.setStatus("Y"); waitPakin.setAppeUser(userId); waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); @@ -610,29 +627,33 @@ // 鍏宠仈缁勬墭 } else { // Order order = orderService.selectByNo(param.getOrderNo()); - Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, param.getOrderNo()); - if (Cools.isEmpty(order) || order.getSettle() > 2) { - throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�"); - } // 鐢熸垚鍏ュ簱閫氱煡妗� List<DetlDto> detlDtos = new ArrayList<>(); param.getCombMats().forEach(elem -> { - - // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙 -// OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch()); - OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(), - elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3()); - if (elem.getAnfme() > orderDetl.getEnableQty()) { - throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�"); + Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, elem.getOrderNo()); + if (Cools.isEmpty(order) || order.getSettle() > 2) { + throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�"); } - // 淇敼璁㈠崟浣滀笟鏁伴噺 -// if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) { -// throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触"); -// } + // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙 +// OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(), +// elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3()); + OrderDetlPakin detls = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>() + .eq("order_id", order.getId()) + .eq("matnr", elem.getMatnr())); + + if (Objects.isNull(detls)) { + throw new CoolException("鏁版嵁閿欒锛氬崟鎹槑缁嗕笉瀛樺湪锛侊紒"); + } + + if (elem.getAnfme() > detls.getEnableQty()) { + throw new CoolException(detls.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�"); + } OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(), elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme()); DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(), elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme()); + detlDto.setOrderId(order.getId()); + detlDto.setOrderNo(order.getOrderNo()); if (DetlDto.has(detlDtos, detlDto)) { DetlDto one = DetlDto.findDto(detlDtos, detlDto); assert one != null; @@ -641,14 +662,46 @@ detlDtos.add(detlDto); } }); + + BasContainer container = basContainerService.selectOne(new EntityWrapper<BasContainer>().eq("barcode", param.getBarcode())); + if (Objects.isNull(container)) { + throw new CoolException("鏁版嵁閿欒锛氬鍣ㄧ爜涓嶅瓨鍦紒锛�"); + } + if (container.getMixMax() < detlDtos.size()) { + throw new CoolException("瓒呭嚭瀹瑰櫒鏈�澶ф贩瑁呮暟閲忥紝褰撳墠瀹瑰櫒鏈�澶ф暟閲忎负锛�" + container.getMixMax() + "!!"); + } + Set<String> matnrs = detlDtos.stream().map(DetlDto::getMatnr).collect(Collectors.toSet()); + List<Mat> mats = matService.selectList(new EntityWrapper<Mat>().in("matnr", matnrs)); + Set<Long> tagIds = mats.stream().map(Mat::getTagId).collect(Collectors.toSet()); + if (tagIds.size() > 1) { + throw new CoolException("缁勬墭鐗╂枡绫诲瀷涓嶄竴鑷达紝鍙湁鐩稿悓鐨勭墿鏂欏垎绫绘墠鍙互缁勬墭锛侊紒"); + } + //杩樺彲浠ユ斁鍏ュ灏戠鐗╂枡 + Integer suplus = container.getMixMax(); for (DetlDto detlDto : detlDtos) { Mat mat = matService.selectByMatnr(detlDto.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); } + + //鏈�澶氬彲鏀炬暟閲� + Double singleMax = mat.getUpQty() * suplus; + if (singleMax.compareTo(detlDto.getAnfme()) < 0) { + throw new CoolException("鍗曟鏈�澶х粍鎵樹笂闄愪负锛�" + singleMax); + } + BigDecimal decimal = new BigDecimal(detlDto.getAnfme() / mat.getUpQty()); + //褰撳墠鐗╂枡闇�瑕佸崰鐢ㄦ枡绠辨牸鏁� + Integer curr = decimal.setScale(0, RoundingMode.CEILING).intValue(); + suplus = suplus - curr; + if (suplus == 0 || suplus < 0) { + throw new CoolException("鐗╂枡锛�" + detlDto.getMatnr() + ", 瓒呭嚭褰撳墠鎵樼洏瑁呰浇涓婇檺锛侊紒"); + } + WaitPakin waitPakin = new WaitPakin(); - waitPakin.sync(mat); - waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿 + BeanUtils.copyProperties(mat, waitPakin); +// waitPakin.sync(mat); + waitPakin.setOrderNo(detlDto.getOrderNo()); // 鍗曟嵁缂栧彿 + waitPakin.setOrderId(detlDto.getOrderId()); waitPakin.setBatch(detlDto.getBatch()); // 搴忓垪鐮� waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮� waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� @@ -662,8 +715,12 @@ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); } } -// orderService.updateSettle(order.getId(), 2L, userId); - OrderInAndOutUtil.updateOrder(Boolean.TRUE, order.getId(), 2L, userId); + + Set<String> stringSet = param.getCombMats().stream().map(CombParam.CombMat::getOrderNo).collect(Collectors.toSet()); + stringSet.forEach(orderNo -> { + Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, orderNo); + OrderInAndOutUtil.updateOrder(Boolean.TRUE, order.getId(), 2L, userId); + }); } } @@ -945,7 +1002,7 @@ throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); } WaitPakin waitPakin = new WaitPakin(); - waitPakin.sync(mat); + BeanUtils.copyProperties(mat, waitPakin); waitPakin.setOrderNo(orderNo); waitPakin.setBatch(detlDto.getBatch()); waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮� @@ -1071,8 +1128,8 @@ wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬� wrkMast.setIoPri(13D); // 浼樺厛绾э細13 wrkMast.setCrnNo(locMast.getCrnNo()); - wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯 - wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔� + wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯 + wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔� wrkMast.setSourceLocNo(locDetl.getLocNo()); // 婧愬簱浣� wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 wrkMast.setPicking("N"); // 鎷f枡 @@ -1115,4 +1172,262 @@ throw new CoolException(locDetl.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��"); } } + + /** + * @author Ryan + * @date 2025/9/22 + * @description: 鑾峰彇缂撳啿鍖哄簱浣嶄俊鎭� + * @version 1.0 + */ + @Override + public R getCacheLocs() { + return R.ok().add(locCacheService.selectList(new EntityWrapper<LocCache>() + .eq("frozen", 0) + .ne("full_plt", "Y") + .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type).orderAsc(Arrays.asList("row1")))); + + } + + /** + * @author Ryan + * @date 2025/9/22 + * @description: 鍛煎彨AGV鎼繍 + * @version 1.0 + */ + @Override + public R callAgvMove(AgvCallParams params, Long userId) { + if (Objects.isNull(params.getTarSite())) { + throw new CoolException("鐩爣鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + if (Objects.isNull(params.getOrgSite())) { + throw new CoolException("婧愮珯鐐逛笉鑳戒负绌猴紒锛�"); + } + LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>() + .eq("frozen", 0) + .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type) + .eq("loc_no", params.getTarSite()) + .orderAsc(Arrays.asList("loc_no")) + .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY")); + if (Objects.isNull(locCache)) { + throw new CoolException("璇锋鏌ョ洰鏍囧簱浣嶆槸鍚﹂棽缃腑锛侊紒"); + } + + generateAgvTask("agv", locCache, params.getOrgSite(), params.getBarcode(), userId); + + return R.ok(); + } + + /** + * @author Ryan + * @date 2025/9/24 + * @description: 鑾峰彇璁㈠崟鐗╂枡淇℃伅 + * @version 1.0 + */ + @Override + public R getMatsByQRcode(PakinMatsByQRParams params) { + if (Objects.isNull(params)) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + if (Objects.isNull(params.getOrderNo())) { + throw new CoolException("鍗曞彿涓嶈兘涓虹┖锛侊紒"); + } + OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("order_no", params.getOrderNo())); + if (Objects.isNull(orderPakin)) { + throw new CoolException("鏁版嵁閿欒锛氬崟鎹笉瀛樺湪锛侊紒"); + } + List<OrderDetlPakin> detlPakins = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>() + .eq(!Cools.isEmpty(params.getMatnr()), "matnr", params.getMatnr()) + .eq("order_id", orderPakin.getId())); + if (Objects.isNull(detlPakins) || detlPakins.isEmpty()) { + throw new CoolException("鏁版嵁閿欒锛� 鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); + } + + return R.ok().add(detlPakins); + } + + /** + * @author Ryan + * @date 2025/9/24 + * @description: AGV鍛煎彨鎼繍 + * @version 1.0 + */ + @Override + public R OutCallAgv(AgvCallParams params, Long userId) { + LocCache locCaches = locCacheService.selectOne(new EntityWrapper<LocCache>() + .eq("loc_sts", LocStsType.LOC_STS_TYPE_F.type) + .eq("frozen", 0) + .orderDesc(Arrays.asList("sort", "first_time")) + .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY")); + if (Objects.isNull(locCaches)) { + throw new CoolException("鏆傛棤婊¤冻闇�姹傚簱浣嶏紒"); + } + BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>() + .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type) + .eq("dev_no", params.getTarSite())); + if (Objects.isNull(station)) { + throw new CoolException("绔欑偣姝e湪鎵ц浠诲姟锛侊紒"); + } + + generateOutTask(station, locCaches, userId); + + return R.ok(); + } + + /** + * @author Ryan + * @date 2025/9/25 + * @description: 鍛煎彨AGV鐢熸垚鍑哄簱浠诲姟 + * @version 1.0 + */ + @Transactional(rollbackFor = Exception.class) + public void generateOutTask(BasStation station, LocCache loc, Long userId) { + // 鑾峰彇宸ヤ綔鍙� + int workNo = commonService.getWorkNo(WorkNoType.PICK.type); + // 淇濆瓨宸ヤ綔妗� + Task task = new Task(); + task.setWrkNo(workNo) + .setIoTime(new Date()) + .setWrkSts(11L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + .setIoType(101) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 + .setTaskType("agv") + .setIoPri(10D) + .setFullPlt("Y") // 婊℃澘锛歒 + .setPicking("N") // 鎷f枡 + .setExitMk("N")// 閫�鍑� + .setStaNo(station.getDevNo()) + .setSourceLocNo(loc.getLocNo()) + .setEmptyMk(loc.getLocSts().equals("D") ? "Y" : "N")// 绌烘澘 + .setBarcode(loc.getBarcode())// 鎵樼洏鐮� + .setLinkMis("N") + .setAppeUser(userId) + .setAppeTime(new Date()) + .setModiUser(userId) + .setModiTime(new Date()); + if (!taskService.insert(task)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + List<LocDetl> detls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_id", loc.getId())); + if (Objects.isNull(detls) || detls.isEmpty()) { + throw new CoolException("鏁版嵁閿欒锛氬簱浣嶆槑缁嗕负绌猴紒锛�"); + } + List<TaskDetl> taskDetls = new ArrayList<>(); + detls.forEach(pakin -> { + TaskDetl wrkDetl = new TaskDetl(); + BeanUtils.copyProperties(pakin, wrkDetl); + wrkDetl.setWrkNo(workNo) + .setIoTime(new Date()) + .setOrderNo(pakin.getOrderNo()) + .setAnfme(pakin.getAnfme()) + .setZpallet(pakin.getZpallet()) + .setBatch(pakin.getBatch()) + .setMatnr(pakin.getMatnr()) + .setMaktx(pakin.getMaktx()) + .setAppeUser(userId) + .setUnit(pakin.getUnit()) + .setModel(pakin.getModel()) + .setAppeTime(new Date()) + .setModiUser(userId); + taskDetls.add(wrkDetl); + }); + + //淇濆瓨宸ヤ綔妗f槑缁� + if (!taskDetlService.insertBatch(taskDetls)) { + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } + + loc.setLocSts(LocStsType.LOC_STS_TYPE_R.type); + loc.setModiUser(userId); + loc.setModiTime(new Date()); + + if (!locCacheService.updateById(loc)) { + throw new CoolException("鏇存柊搴撲綅鐘舵�佷俊鎭紒锛�"); + } + + // 淇敼鐩爣绔欑偣淇℃伅 + if (station.getLocSts().equals("O")) { + station.setLocSts("S"); // S.鍏ュ簱棰勭害 + station.setModiTime(new Date()); + station.setModiUser(userId); + if (!basStationService.updateById(station)) { + throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); + } + } else { + throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + station.getLocSts()); + } + } + + /** + * @author Ryan + * @date 2025/9/22 + * @description: 鐢熸垚AGV鎼繍浠诲姟 + * @version 1.0 + */ + @Transactional(rollbackFor = Exception.class) + public void generateAgvTask(String type, LocCache loc, String orgSite, String barcode, Long userId) { + List<WaitPakin> pakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode)); + if (Objects.isNull(pakins) || pakins.isEmpty()) { + throw new CoolException("缁勬墭淇℃伅涓嶅瓨鍦紒锛�"); + } + // 鑾峰彇宸ヤ綔鍙� + int workNo = commonService.getWorkNo(WorkNoType.PICK.type); + // 淇濆瓨宸ヤ綔妗� + Task task = new Task(); + task.setWrkNo(workNo) + .setIoTime(new Date()) + .setWrkSts(1L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + .setIoType(11) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 + .setTaskType("agv") + .setIoPri(10D) + .setLocNo(loc.getLocNo()) // 鐩爣搴撲綅 + .setFullPlt("Y") // 婊℃澘锛歒 + .setPicking("N") // 鎷f枡 + .setExitMk("N")// 閫�鍑� + .setSourceStaNo(orgSite) + .setEmptyMk(loc.getLocSts().equals("D") ? "Y" : "N")// 绌烘澘 + .setBarcode(barcode)// 鎵樼洏鐮� + .setLinkMis("N") + .setAppeUser(userId) + .setAppeTime(new Date()) + .setModiUser(userId) + .setModiTime(new Date()); + if (!taskService.insert(task)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + List<TaskDetl> taskDetls = new ArrayList<>(); + pakins.forEach(pakin -> { + TaskDetl wrkDetl = new TaskDetl(); + BeanUtils.copyProperties(pakin, wrkDetl); + wrkDetl.setWrkNo(workNo) + .setIoTime(new Date()) + .setOrderNo(pakin.getOrderNo()) + .setAnfme(pakin.getAnfme()) + .setZpallet(pakin.getZpallet()) + .setBatch(pakin.getBatch()) + .setMatnr(pakin.getMatnr()) + .setMaktx(pakin.getMaktx()) + .setAppeUser(userId) + .setUnit(pakin.getUnit()) + .setModel(pakin.getModel()) + .setAppeTime(new Date()) + .setModiUser(userId); + taskDetls.add(wrkDetl); + }); + + //淇濆瓨宸ヤ綔妗f槑缁� + if (!taskDetlService.insertBatch(taskDetls)) { + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } + // 淇敼鐩爣搴撲綅鐘舵�� + if (loc.getLocSts().equals("O")) { + loc.setLocSts("S"); // S.鍏ュ簱棰勭害 + loc.setModiTime(new Date()); + loc.setModiUser(userId); + if (!locCacheService.updateById(loc)) { + throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); + } + } else { + throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$()); + } + } } -- Gitblit v1.9.1