From 641f7bb8b2d2e23f1f5192fecf030a567151c7b5 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期二, 15 七月 2025 17:50:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/ghjtasrs' into ghjtasrs

---
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java |  127 +++++++++++++++++-------------------------
 1 files changed, 51 insertions(+), 76 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..36d2382 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -30,7 +30,6 @@
 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;
 
@@ -1137,88 +1136,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) {

--
Gitblit v1.9.1