From db91e03deeaac1bb3344d0b5cb9e1240f1f8caac Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期六, 16 八月 2025 10:39:15 +0800 Subject: [PATCH] #计划组货单下发上报 --- src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 190 ++++++++++++++++++++++++++++------------------- 1 files changed, 113 insertions(+), 77 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java index 053ea12..6b0c862 100644 --- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java @@ -30,11 +30,11 @@ import com.zy.system.mapper.ConfigMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -110,6 +110,9 @@ @Resource private OrderMapper orderMapper; + + @Resource + private OrderDetlMapper orderDetlMapper; @Resource private BasCrnpMapper basCrnpMapper; @@ -1137,88 +1140,64 @@ return "鍏ュ簱鎴愬姛"; } - @Autowired - private StringRedisTemplate redisTemplate; - @Override @Transactional public R kthl(KthlParam param) { - String barcode = param.getBarcode(); - String lockKey = "kthl:lock:" + barcode; - String lockVal = UUID.randomUUID().toString(); // 闃叉璇垹浠栦汉閿� - // 鍒嗗竷寮忛攣锛�5绉掕繃鏈� - Boolean locked = redisTemplate.opsForValue().setIfAbsent(lockKey, lockVal, 5, TimeUnit.SECONDS); - if (locked == null || !locked) { - return R.error("閲嶅鎻愪氦锛氳鎵樼洏宸插湪澶勭悊锛岃鍕块噸澶嶆搷浣�"); + // 鑾峰彇妯″紡涓虹數鑴戞ā寮忥紝鏃犱换鍔$殑鍫嗗灈鏈哄垪琛�:闃叉鍒嗛厤鍒板爢鍨涙満涓嶅彲鐢� + List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3) + .eq("wrk_no",0).eq("in_enable","Y").eq("out_enable","Y")); + if (basCrnps.isEmpty()) { + // 閮芥湁浠诲姟鍒欒幏鍙栫數鑴戞ā寮忕殑鍫嗗灈鏈哄垪琛� + basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3).eq("in_enable","Y") + .eq("out_enable","Y")); } - - try { - // 鑾峰彇绌洪棽鍫嗗灈鏈猴紙鐢佃剳妯″紡銆佹棤浠诲姟锛� - List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>() - .eq("crn_sts", 3).eq("wrk_no", 0) - .eq("in_enable", "Y").eq("out_enable", "Y")); - - // 濡傛灉娌℃湁绌洪棽鍫嗗灈鏈猴紝灏濊瘯鎵�鏈夊彲鐢ㄥ爢鍨涙満 - if (basCrnps.isEmpty()) { - basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>() - .eq("crn_sts", 3) - .eq("in_enable", "Y").eq("out_enable", "Y")); - } - - if (basCrnps.isEmpty()) { - throw new CoolException("娌℃湁鍙敤鍫嗗灈鏈�,鍫嗗灈鏈哄仠姝㈡垨寮傚父鎴栫鐢�"); - } - - // 鑾峰彇绗竴涓彲鐢ㄥ爢鍨涙満 - List<Integer> crnNoList = basCrnps.stream() - .map(BasCrnp::getCrnNo) - .collect(Collectors.toList()); - Integer crnNo = crnNoList.get(0); - - int workNo = commonService.getWorkNo(5); - Date now = new Date(); - - // 鐢熸垚宸ヤ綔妗� - WrkMast wrkMast = new WrkMast(); - wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(now); - wrkMast.setWrkSts(1L); - wrkMast.setIoType(3); // 绔欏埌绔� - wrkMast.setIoPri(14D); - wrkMast.setCrnNo(crnNo); - wrkMast.setSourceStaNo(secondFloorIn[crnNo]); - wrkMast.setStaNo(secondFloorOut[crnNo]); - wrkMast.setLocNo(""); - wrkMast.setBarcode(barcode); - wrkMast.setFullPlt("N"); - wrkMast.setPicking("N"); - wrkMast.setExitMk("N"); - wrkMast.setEmptyMk("Y"); - wrkMast.setLinkMis("Y"); - wrkMast.setCtnType(1); - wrkMast.setAppeTime(now); - wrkMast.setModiTime(now); - - boolean res = wrkMastService.insert(wrkMast); - if (!res) { - throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); - } - - // 鎺ㄩ�佺珯鐐瑰埌GWCS - pushStaNoToGwcs(param.getPalletizingNo(), wrkMast.getSourceStaNo(), workNo, barcode, "浜屾ゼ绌烘墭鍥炴祦鎺ㄩ�乬wcs"); - - return R.ok("绌烘墭鍥炴祦璇锋眰鎴愬姛"); - - } finally { - // 瑙i攣锛岀‘淇濆彧閲婃斁鑷繁鍔犵殑閿� - String val = redisTemplate.opsForValue().get(lockKey); - if (lockVal.equals(val)) { - redisTemplate.delete(lockKey); - } + WrkMast exist = wrkMastService.selectOne( + new EntityWrapper<WrkMast>() + .eq("barcode", param.getBarcode()) + .eq("io_type", 3)); + if (exist != null) { + return R.error("浠诲姟宸插瓨鍦紝涓嶅彲閲嶅鎻愪氦"); } + if (basCrnps.isEmpty()) { + throw new CoolException("娌℃湁鍙敤鍫嗗灈鏈�,鍫嗗灈鏈哄仠姝㈡垨寮傚父鎴栫鐢�"); + } + // 鍙敤鍫嗗灈鏈哄垪琛� + List<Integer> crnNoList = basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList()); + Integer crnNo = crnNoList.get(0); + + int workNo = commonService.getWorkNo(5); + Date now = new Date(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(1L); // + wrkMast.setIoType(3); // 绔欏埌绔� + wrkMast.setIoPri(14D); // 浼樺厛绾� + wrkMast.setCrnNo(crnNo); + wrkMast.setSourceStaNo(secondFloorIn[crnNo]); + wrkMast.setStaNo(secondFloorOut[crnNo]); + wrkMast.setLocNo(""); + wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("N"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("Y"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷 + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 杩斿洖GWCS鐩爣淇℃伅 + pushStaNoToGwcs(param.getPalletizingNo(),wrkMast.getSourceStaNo(),workNo,param.getBarcode(),"浜屾ゼ绌烘墭鍥炴祦鎺ㄩ�乬wcs"); + + return R.ok("绌烘墭鍥炴祦璇锋眰鎴愬姛"); } - @Override public R tb(TbParam param) { @@ -1385,7 +1364,7 @@ if (wrkMast == null) { throw new CoolException("涓嶅瓨鍦ㄨ宸ヤ綔鍙凤細" + param.getWorkNo()); } - if (wrkMast.getWrkSts() == 3) { + if (wrkMast.getWrkSts() == 3||wrkMast.getWrkSts() == 4) { throw new CoolException("宸ヤ綔妗g姸鎬佷笉瀵癸細" + param.getWorkNo()); } wrkMast.setWrkSts(2L); @@ -1539,8 +1518,10 @@ private void ckjgsbPushMes(WrkMast wrkMast, List<WrkDetl> wrkDetls) { GwmsGenerateInventoryDto gwmsGenerateInventoryDto = new GwmsGenerateInventoryDto(); + gwmsGenerateInventoryDto.setWarehouseType(4); gwmsGenerateInventoryDto.setBarcode(wrkMast.getBarcode()); gwmsGenerateInventoryDto.setPalletizingNo(wrkMast.getStaNo()); + gwmsGenerateInventoryDto.setGroupOrderNumber(wrkMast.getMemo()); List<GwmsGenerateInventoryDto.MatList> matLists = new ArrayList<>(); for (WrkDetl wrkDetl : wrkDetls) { boolean flag = true; @@ -2290,5 +2271,60 @@ return crnStn; } + @Override + @Transactional + public R groupOrderConfirm(GroupOrderConfirmParam param) { + // 1. 鏌ヨ鍗曟嵁鏄惁瀛樺湪 + Order order = orderMapper.selectOrderByOrderNo(param.getGroupOrderNumber()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + if (order == null) { + // 1.1 涓嶅瓨鍦紝鏂板缓鍗曟嵁 + order = new Order(); + order.setOrderNo(param.getGroupOrderNumber()); + order.setStatus(Integer.valueOf(param.getGroupStatus())); + order.setOrderTime(sdf.format(new Date())); + order.setCreateTime(new Date()); + order.setSettle(1L); + order.setDocType(25L); + orderMapper.insert(order); + } else { + // 1.2 瀛樺湪锛屾洿鏂板崟鎹姸鎬� + order.setStatus(Integer.valueOf(param.getGroupStatus())); + orderMapper.updateById(order); + } + + // 2. 涓�涓�瀵瑰簲閬嶅巻 + List<GroupOrderConfirmParam.PackageGroupNo> pkgList = param.getPackageGroupNos(); + List<GroupOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers(); + + int size = Math.min(pkgList.size(), volList.size()); // 闃叉瓒婄晫 + for (int i = 0; i < size; i++) { + GroupOrderConfirmParam.PackageGroupNo pg = pkgList.get(i); + GroupOrderConfirmParam.VolumeNumber vn = volList.get(i); + + // 鏌ヨ鏄惁宸插瓨鍦ㄨ detl + OrderDetl detl = orderDetlMapper.selectByOrderNoAndPkgGroupNoAndVolumeNo( + param.getGroupOrderNumber(), pg.getPackageGroupNo(), vn.getVolumeNumber() + ); + + if (detl == null) { + detl = new OrderDetl(); + detl.setOrderId(order.getId()); + detl.setOrderNo(param.getGroupOrderNumber()); + detl.setCreateTime(new Date()); + detl.setAnfme(1.0); + detl.setBrand(pg.getPackageGroupNo()); // 鍖呰缁勫彿 + detl.setModel(vn.getVolumeNumber()); // 鍗峰彿 + orderDetlMapper.insert(detl); + } + } + + return R.ok("缁勮揣纭鎴愬姛"); + } + + + + /*...........................涓婇ザ姹熼摐..............浠ヤ笂.............寰愬伐姹変簯...........................*/ } -- Gitblit v1.9.1