From 31b586dbc4dd87c88ac585f00071df32798e8d42 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期三, 24 九月 2025 15:43:11 +0800 Subject: [PATCH] 缓冲库区修改 --- src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 199 +++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 182 insertions(+), 17 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 12c145f..c02566b 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,7 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.*; +import com.zy.asrs.enums.LocStsType; import com.zy.asrs.mapper.LocMastMapper; import com.zy.asrs.mapper.ManLocDetlMapper; import com.zy.asrs.service.*; @@ -28,6 +29,7 @@ import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; /** * 绉诲姩绔湇鍔℃牳蹇冪被 @@ -97,6 +99,15 @@ @Resource private OrderDetlPakoutService orderDetlPakoutService; + @Autowired + private LocCacheService locCacheService; + + @Autowired + private TaskService taskService; + + @Autowired + private TaskDetlService taskDetlService; + @Override @Transactional public R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId, Long userId) { @@ -118,8 +129,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"); // 婊℃澘锛歒 @@ -245,8 +256,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枡 @@ -379,8 +390,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"); // 婊℃澘锛歒 @@ -550,7 +561,8 @@ } // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁 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湪杩涜鍏ュ簱"); } @@ -569,7 +581,6 @@ // 鏃犲崟缁勬墭 if (Cools.isEmpty(param.getOrderNo())) { - // 鐢熸垚鍏ュ簱閫氱煡妗� List<DetlDto> detlDtos = new ArrayList<>(); param.getCombMats().forEach(elem -> { @@ -608,13 +619,13 @@ // 鍏宠仈缁勬墭 } 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 -> { + Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, elem.getOrderNo()); + if (Cools.isEmpty(order) || order.getSettle() > 2) { + 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()); @@ -633,6 +644,8 @@ 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; @@ -649,7 +662,8 @@ WaitPakin waitPakin = new WaitPakin(); BeanUtils.copyProperties(mat, waitPakin); // waitPakin.sync(mat); - waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿 + waitPakin.setOrderNo(detlDto.getOrderNo()); // 鍗曟嵁缂栧彿 + waitPakin.setOrderId(detlDto.getOrderId()); waitPakin.setBatch(detlDto.getBatch()); // 搴忓垪鐮� waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮� waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� @@ -663,8 +677,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); + }); } } @@ -1072,8 +1090,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枡 @@ -1116,4 +1134,151 @@ 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/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(11L) // 宸ヤ綔鐘舵�侊細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