From 285deae97a62db611ee2485d3940e24307594f2a Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 22 九月 2025 20:09:42 +0800 Subject: [PATCH] 数据结构修改 任务工作档修改 组托工作档修改 --- src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 148 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 140 insertions(+), 8 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..9048fa9 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.*; @@ -96,6 +97,8 @@ @Resource private OrderDetlPakoutService orderDetlPakoutService; + @Autowired + private LocCacheService locCacheService; @Override @Transactional @@ -118,8 +121,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 +248,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 +382,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"); // 婊℃澘锛歒 @@ -650,6 +653,7 @@ BeanUtils.copyProperties(mat, waitPakin); // waitPakin.sync(mat); waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿 + waitPakin.setOrderId(order.getId()); waitPakin.setBatch(detlDto.getBatch()); // 搴忓垪鐮� waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮� waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� @@ -1072,8 +1076,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 +1120,132 @@ 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/22 + * @description: 鐢熸垚AGV鎼繍浠诲姟 + * @version 1.0 + */ + @Transactional(rollbackFor = Exception.class) + public void generateAgvTask(String type, LocCache loc, String orgSite, String barcode, Long userId) { + WaitPakin pakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", barcode)); + if (Objects.isNull(pakin)) { + throw new CoolException("缁勬墭淇℃伅涓嶅瓨鍦紒锛�"); + } + OrderPakin orderPakin = orderPakinService.selectById(pakin.getOrderId()); + if (Objects.isNull(orderPakin)) { + throw new CoolException("鍗曟嵁涓嶈兘涓虹┖锛侊紒"); + } + + List<OrderDetlPakin> detls = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_id", pakin.getOrderId())); + if (Objects.isNull(detls) || detls.isEmpty()) { + throw new CoolException("鏁版嵁閿欒锛氬崟鎹槑缁嗕笉瀛樺湪锛侊紒"); + } + + Date now = new Date(); + // 鑾峰彇宸ヤ綔鍙� + int workNo = commonService.getWorkNo(WorkNoType.PICK.type); + // 淇濆瓨宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 + wrkMast.setTaskType("agv"); + wrkMast.setIoPri(10D); + wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅 + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setSourceStaNo(orgSite); + wrkMast.setEmptyMk(loc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘 + wrkMast.setBarcode(barcode); // 鎵樼洏鐮� + wrkMast.setLinkMis("N"); + wrkMast.setAppeUser(userId); + wrkMast.setAppeTime(now); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + if (!wrkMastService.insert(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + List<WrkDetl> taskDetls = new ArrayList<>(); + detls.forEach(detl -> { + WrkDetl wrkDetl = new WrkDetl(); + BeanUtils.copyProperties(detl, wrkDetl); + wrkDetl.setWrkNo(workNo) + .setIoTime(new Date()) + .setAnfme(detl.getAnfme()) + .setZpallet(pakin.getZpallet()) + .setBatch(detl.getBatch()) + .setMatnr(detl.getMatnr()) + .setMaktx(detl.getMaktx()) + .setAppeUser(userId) + .setUnit(detl.getUnit()) + .setModel(detl.getModel()) + .setAppeTime(new Date()) + .setModiUser(userId); + taskDetls.add(wrkDetl); + }); + //淇濆瓨宸ヤ綔妗f槑缁� + if (!wrkDetlService.insertBatch(taskDetls)) { + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } + // 淇敼鐩爣搴撲綅鐘舵�� + if (loc.getLocSts().equals("O")) { + loc.setLocSts("S"); // S.鍏ュ簱棰勭害 + loc.setModiTime(now); + loc.setModiUser(userId); + if (!locCacheService.updateById(loc)) { + throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); + } + } else { + throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$()); + } + } } -- Gitblit v1.9.1