From 6695e0e3e9b166a692b2f430ec09a3245b22a078 Mon Sep 17 00:00:00 2001
From: zc <zc>
Date: 星期五, 03 四月 2026 10:21:34 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/third/lk/task/LKInTBScheduler.java |   86 ++++++++++++++++++++++++++++--------------
 1 files changed, 57 insertions(+), 29 deletions(-)

diff --git a/src/main/java/com/zy/third/lk/task/LKInTBScheduler.java b/src/main/java/com/zy/third/lk/task/LKInTBScheduler.java
index 82eae19..d11a5c9 100644
--- a/src/main/java/com/zy/third/lk/task/LKInTBScheduler.java
+++ b/src/main/java/com/zy/third/lk/task/LKInTBScheduler.java
@@ -2,12 +2,14 @@
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.DocType;
 import com.zy.asrs.entity.Order;
 import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.mapper.OrderMapper;
 import com.zy.asrs.service.DocTypeService;
 import com.zy.asrs.service.MatService;
 import com.zy.asrs.service.OrderDetlService;
@@ -20,10 +22,12 @@
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.locks.ReentrantLock;
 
 /**
  * 鍏ュ簱鏇存柊瀹屾垚鍥炴姤
@@ -47,40 +51,64 @@
     @Autowired
     private ErpSqlServer erpSqlServer;
 
+    private final ReentrantLock lock = new ReentrantLock();
+
+    @Resource
+    private OrderMapper orderMapper;
+
     @Transactional(rollbackFor = Throwable.class)
-    @Scheduled(cron = "${erp.refreshtime}")
+    @Scheduled(cron = "0/10 * * * * ?")
     public void pakinOrderComplete() {
         //log.info("寮�濮嬪叆搴撴洿鏂板畬鎴愬洖鎶�");
-        // 鎵�鏈夎鍗�
-        List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
-        DocType docType;
-        for (Order order : orders) {
+        // 鎷夸笉鍒伴攣鐩存帴璺宠繃锛堝叧閿級
+        if (!lock.tryLock()) {
+            System.out.println("涓婁竴娆′换鍔℃湭鎵ц瀹岋紝璺宠繃鏈");
+            return;
+        }
 
-            docType = docTypeService.selectById(order.getDocType());
-            if (docType == null) {
-                log.error("璇ヨ鍗曠被鍨嬩笉瀛樺湪:" + order.getDocType());
-                throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
-            }
-            List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
-            if (docType.getPakin() == 1) {
-                //鍏ュ簱鍗�
-                for (OrderDetl orderDetl : orderDetls) {
-                    log.info("璇ュ叆搴撳崟瀵硅薄:" + orderDetl);
-                    insertInDet(orderDetl);
+        // 鎵�鏈夎鍗�
+        try {
+//            List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
+            // 鍒涘缓鍒嗛〉瀵硅薄锛氶〉鐮� 1锛屾瘡椤� 2 鏉�
+            Page<Order> page = new Page<>(1, 10); // 涓�娆�10鏉★紝閬垮厤澶勭悊涓嶈繃鏉�
+            // 浣跨敤 selectPage 鑾峰彇鍓� 2 鏉¤褰�
+            Page<Order> result = orderService.selectPage(
+                    page,
+                    new EntityWrapper<Order>().eq("settle", 4L)
+            );
+
+            List<Order> orders = result.getRecords(); // 杩欏氨鏄墠 2 鏉�
+            DocType docType;
+            for (Order order : orders) {
+
+                docType = docTypeService.selectById(order.getDocType());
+                if (docType == null) {
+                    log.error("璇ヨ鍗曠被鍨嬩笉瀛樺湪:" + order.getDocType());
+                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
                 }
-                insertInHed(order);
-            } else {
-                //鍑哄簱鍗�
-                for (OrderDetl orderDetl : orderDetls) {
-                    log.info("璇ュ嚭搴撳崟瀵硅薄:" + orderDetl);
-                    insertOutDet(orderDetl);
+                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
+                if (docType.getPakin() == 1) {
+                    //鍏ュ簱鍗�
+                    for (OrderDetl orderDetl : orderDetls) {
+                        log.info("璇ュ叆搴撳崟瀵硅薄:" + orderDetl);
+                        insertInDet(orderDetl);
+                    }
+                    insertInHed(order);
+                } else {
+                    //鍑哄簱鍗�
+                    for (OrderDetl orderDetl : orderDetls) {
+                        log.info("璇ュ嚭搴撳崟瀵硅薄:" + orderDetl);
+                        insertOutDet(orderDetl);
+                    }
+                    insertOutHed(order);
                 }
-                insertOutHed(order);
+                // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
+                if (!orderService.updateSettle(order.getId(), 6L, null)) {
+                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                }
             }
-            // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
-            if (!orderService.updateSettle(order.getId(), 6L, null)) {
-                throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
-            }
+        } finally {
+            lock.unlock();
         }
     }
 
@@ -93,9 +121,9 @@
      */
     @Transactional(rollbackFor = Throwable.class)
     public boolean insertInDet(OrderDetl orderDetl) {
-        String sqlInDetTb = "select * from lk_InDetTB where BillNo='" + orderDetl.getOrderNo() + "' and " + " ItemId='" + orderDetl.getMatnr() + "' and ItemBatch='" + orderDetl.getBatch() + "' and proType='" + orderDetl.getSpecs() + "'";
+        String sqlInDetTb = "select * from lk_InDetTB where BillNo='" + orderDetl.getOrderNo() + "' and " + " ItemId='" + orderDetl.getMatnr() + "' and ItemBatch='" + orderDetl.getBatch() + "'";
         List<InDetTB> inDets = erpSqlServer.select(sqlInDetTb, InDetTB.class);
-        String sqlInDetTbBak = "select * from lk_InDetTB_Bak where BillNo='" + orderDetl.getOrderNo() + "' and " + " ItemId='" + orderDetl.getMatnr() + "' and ItemBatch='" + orderDetl.getBatch() + "' and proType='" + orderDetl.getSpecs() + "'";
+        String sqlInDetTbBak = "select * from lk_InDetTB_Bak where BillNo='" + orderDetl.getOrderNo() + "' and " + " ItemId='" + orderDetl.getMatnr() + "' and ItemBatch='" + orderDetl.getBatch() + "'";
         List<InDetTBBak> inDetBaks = erpSqlServer.select(sqlInDetTbBak, InDetTBBak.class);
         if (!inDets.isEmpty() || !inDetBaks.isEmpty()) {
             log.error("璇ュ崟鍙锋枡鍙蜂腑闂磋〃琛ㄨ韩宸插瓨鍦�:" + orderDetl.getOrderNo() + "==>>" + orderDetl.getOrderNo());

--
Gitblit v1.9.1