From a35b9acb89c73bf6fee0b4d48c72dc7240cffcf7 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期三, 23 十月 2024 13:56:39 +0800
Subject: [PATCH] 自动生成入库通知档

---
 src/main/java/com/zy/asrs/task/handler/AutoGroupingHandler.java |   92 ++++++++++++++++++++++++++++++
 src/main/resources/mapper/OrderMapper.xml                       |   23 +++++++
 src/main/java/com/zy/asrs/controller/OpenController.java        |    2 
 src/main/java/com/zy/asrs/mapper/OrderMapper.java               |   10 +++
 src/main/java/com/zy/asrs/entity/Order.java                     |    2 
 src/main/java/com/zy/asrs/task/AutoGroupingScheduler.java       |   40 +++++++++++++
 6 files changed, 167 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 7bb5801..30bd744 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -55,7 +55,7 @@
         return openService.grouping(param);
     }
 
-        @PostMapping("/barcodeVerificatio")
+    @PostMapping("/barcodeVerificatio")
     @AppAuth(memo = "AGV璋冪敤鏍¢獙鏉$爜")
     public synchronized R barcodeVerificatio(@RequestHeader(required = false) String appkey,
                                    @RequestBody(required = false) Map<String,String> param,
diff --git a/src/main/java/com/zy/asrs/entity/Order.java b/src/main/java/com/zy/asrs/entity/Order.java
index fd13474..4b170de 100644
--- a/src/main/java/com/zy/asrs/entity/Order.java
+++ b/src/main/java/com/zy/asrs/entity/Order.java
@@ -165,7 +165,7 @@
     /**
      * 缁撶畻澶╂暟
      */
-    @ApiModelProperty(value= "缁撶畻澶╂暟")
+    @ApiModelProperty(value= "0榛樿锛�1宸茬敓鎴愬叆搴撻�氱煡妗�")
     @TableField("account_day")
     private Integer accountDay;
 
diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
index eb249f6..c975faf 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -23,4 +23,14 @@
 
     Order selectOrderMoveStatus();
     Order selectOrderMoveStatusInitial();
+
+    /**
+     * 鎵弿鍑哄緟澶勭悊锛屾湭鐢熸垚鍏ュ簱閫氱煡妗g殑鍏ュ簱鍗曟嵁
+     */
+    List<Order> selectNotGroupingList();
+
+    /**
+     * 鏇存柊璁㈠崟鐘舵�佸拰缁勬墭鐘舵��
+     */
+    int updateSettleAndGroupingFlag(@Param("orderId")Long orderId, @Param("settle")Long settle, @Param("account_day")Integer flag);
 }
diff --git a/src/main/java/com/zy/asrs/task/AutoGroupingScheduler.java b/src/main/java/com/zy/asrs/task/AutoGroupingScheduler.java
new file mode 100644
index 0000000..94c4812
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/AutoGroupingScheduler.java
@@ -0,0 +1,40 @@
+package com.zy.asrs.task;
+
+import com.zy.asrs.entity.Order;
+import com.zy.asrs.mapper.OrderMapper;
+import com.zy.asrs.task.handler.AutoGroupingHandler;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description 鑷姩缁勬墭瀹氭椂浠诲姟
+ * @createDate 2024/10/23 13:13
+ */
+@Component
+public class AutoGroupingScheduler {
+
+    @Resource
+    private OrderMapper orderMapper;
+
+    @Resource
+    private AutoGroupingHandler autoGroupingHandler;
+
+
+    // 鑷姩缁勬墭
+    // 鎵弿鍗曟嵁杩涜缁勬墭 order琛� account_day 0榛樿锛�1宸茬敓鎴愬叆搴撻�氱煡妗�
+    @Scheduled(cron = "0/3 * * * * ? ")
+    private void autoGrouping() {
+
+        // 鎵弿鏈敓鎴愬叆搴撻�氱煡妗e崟鎹�
+        List<Order> orderList = orderMapper.selectNotGroupingList();
+
+        for (Order order : orderList) {
+            autoGroupingHandler.autoGrouping(order);
+        }
+
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/AutoGroupingHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoGroupingHandler.java
new file mode 100644
index 0000000..5e5f7d8
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/AutoGroupingHandler.java
@@ -0,0 +1,92 @@
+package com.zy.asrs.task.handler;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.Mat;
+import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.entity.WaitPakin;
+import com.zy.asrs.mapper.OrderMapper;
+import com.zy.asrs.service.MatService;
+import com.zy.asrs.service.OrderDetlService;
+import com.zy.asrs.service.OrderService;
+import com.zy.asrs.service.WaitPakinService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description 鑷姩缁勬墭瀹氭椂浠诲姟澶勭悊鍣�
+ * @createDate 2024/10/23 13:14
+ */
+@Slf4j
+@Service
+public class AutoGroupingHandler {
+
+    @Resource
+    private OrderDetlService orderDetlService;
+
+    @Resource
+    private MatService matService;
+
+    @Resource
+    private WaitPakinService waitPakinService;
+
+    @Resource
+    private OrderService orderService;
+
+    @Resource
+    private OrderMapper orderMapper;
+
+    public void autoGrouping(Order order) {
+
+        Date now = new Date();
+
+        // 鑾峰彇璁㈠崟鏄庣粏
+        List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()));
+
+        // 鐢熸垚鍏ュ簱閫氱煡妗�
+        for (OrderDetl orderDetl : orderDetlList) {
+            if (orderDetl.getAnfme() > orderDetl.getEnableQty()) {
+                throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
+            }
+            // 淇敼璁㈠崟浣滀笟鏁伴噺
+            if (!orderDetlService.increaseWorkQty(orderDetl, orderDetl.getAnfme())) {
+                throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
+            }
+
+            Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
+            if (Cools.isEmpty(mat)) {
+                throw new CoolException(orderDetl.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+            }
+            WaitPakin waitPakin = new WaitPakin();
+            waitPakin.sync(mat);
+            waitPakin.setOrderNo(order.getOrderNo());   // 鍗曟嵁缂栧彿
+            waitPakin.setBatch(orderDetl.getBatch());     // 搴忓垪鐮�
+            waitPakin.setZpallet(orderDetlList.size() == 1 ? order.getTemp2() : orderDetl.getTemp2());   // 鎵樼洏鐮�
+            waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+            waitPakin.setAnfme(orderDetl.getAnfme());  // 鏁伴噺
+            waitPakin.setStatus("Y");    // 鐘舵��
+            waitPakin.setAppeTime(now);
+            waitPakin.setModiTime(now);
+            // @鍙互浜嗕富銆佷粠琛ㄤ腑Temp2瀛樼殑灏辨槸鎵樼洏鍙凤紝濡傛灉涓�鎵樹竴涓崟瀛愬瓨鐨勫氨鏄富琛ㄧ殑Temp2瀛楁锛�
+            // 鍚﹀垯瀛樼殑灏辨槸浠庤〃鐨凾emp2瀛楁锛屼粠琛ㄤ腑锛氫骇鍝両D:ItemId,浜у搧浠e彿:ItemCode,鎵瑰彿:ItemBatch,
+            // 灞炴��:ProType,棰滆壊:sColor,璁㈠崟鍙�:OrderNo,鐐夊彿:LuHao,瀹㈡埛ID:Packing,宸ュ崟鍙凤細sPgNo
+            waitPakin.setSPgNO(orderDetl.getSPgNO());
+            waitPakin.setOutOrderNo(orderDetl.getOutOrderNo());
+            waitPakin.setProType(orderDetl.getProType());
+            waitPakin.setLuHao(orderDetl.getLuHao());
+            waitPakin.setPacking(orderDetl.getPacking());
+            if (!waitPakinService.insert(waitPakin)) {
+                throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+            }
+        }
+
+        orderMapper.updateSettleAndGroupingFlag(order.getId(), 2L, 1);
+    }
+}
diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml
index 06a13d9..d74bcb9 100644
--- a/src/main/resources/mapper/OrderMapper.xml
+++ b/src/main/resources/mapper/OrderMapper.xml
@@ -58,6 +58,17 @@
         where 1=1
         and id = #{orderId}
     </update>
+    <update id="updateSettleAndGroupingFlag">
+        update
+            man_order
+        set
+            settle = #{settle},
+            account_day = #{account_day} ,
+            update_time = getdate()
+        where
+            1 = 1
+          and id = #{orderId}
+    </update>
 
     <select id="selectWork" resultMap="BaseResultMap">
         select top 5 *
@@ -113,5 +124,17 @@
         and move_status = 1
         order by update_time
     </select>
+    <select id="selectNotGroupingList" resultMap="BaseResultMap">
+        select
+            *
+        from
+            man_order mo
+                left join man_doc_type mdt on
+                mo.doc_type = mdt.doc_id
+        where
+            mdt.pakin = 1
+          and mo.account_day = 0
+          and mo.settle = 1
+    </select>
 
 </mapper>

--
Gitblit v1.9.1