From 756fa60cebfb82ba824e87d080d44fc9ec34ecc8 Mon Sep 17 00:00:00 2001
From: Administrator <335182714>
Date: 星期二, 02 九月 2025 14:01:09 +0800
Subject: [PATCH] 订单出库显示明细是否完成修复
---
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 208 ++++++++++++++++++++++++++++++++-------------------
1 files changed, 131 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..8d9a908 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) {
@@ -1262,6 +1241,21 @@
int barcodeCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode()));
if (barcodeCount > 0) {
throw new CoolException("宸ヤ綔妗e凡瀛樺湪璇ユ墭鐩樼爜锛�" + param.getBarcode());
+ }
+ if (!Cools.isEmpty(param.getMatList())) {
+ HashMap<String, Object> xx = new HashMap<>();
+ List<GwmsGenerateInventoryDto.MatList> matList = param.getMatList();
+ for (GwmsGenerateInventoryDto.MatList obj : matList) {
+ int zpalletCount2 = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("brand", obj.getPackageGroupNo()));
+ if (zpalletCount2 > 0) {
+ throw new CoolException("鍖呰缁勫彿宸插瓨鍦細" + obj.getPackageGroupNo());
+ }
+ if (xx.get(obj.getPackageGroupNo()) != null) {
+ throw new CoolException("鏄庣粏涓瓨鍦�2鏉$浉鍚岀殑鍖呰缁勫彿锛�" + obj.getPackageGroupNo());
+ } else {
+ xx.put(obj.getPackageGroupNo(), obj);
+ }
+ }
}
}
LocTypeDto locTypeDto = new LocTypeDto();
@@ -1385,7 +1379,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 +1533,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 +2286,63 @@
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);
+ }
+ orderDetlMapper.delete(
+ new EntityWrapper<OrderDetl>().eq("order_no", param.getGroupOrderNumber())
+ );
+
+ // 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