From 0329286b3ba1ddbdcad4769b9ccd4d5b3f5d1e64 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期二, 24 九月 2024 09:20:49 +0800
Subject: [PATCH] 备货定时任务

---
 src/main/resources/mapper/OrderDetlMapper.xml               |    6 +
 src/main/resources/mapper/OrderMapper.xml                   |   16 ++++
 src/main/java/com/zy/asrs/mapper/LocDetlMapper.java         |    5 +
 src/main/java/com/zy/asrs/entity/OrderDetl.java             |   10 +-
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java |   25 ++++++
 src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java       |    5 +
 src/main/java/com/zy/asrs/task/GhjtScheduler.java           |   31 ++++---
 src/main/java/com/zy/asrs/task/handler/GhjtHandler.java     |  113 ++++++++++++++++++++++++++-
 src/main/java/com/zy/asrs/mapper/OrderMapper.java           |   10 ++
 src/main/resources/mapper/LocDetlMapper.xml                 |    6 +
 src/main/webapp/static/js/order/order.js                    |    4 
 11 files changed, 203 insertions(+), 28 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java
index a6dfdc7..89b83ed 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -397,14 +397,14 @@
     }
 
     public String getInspect$(){
-        if (null == this.inspect){ return null; }
+        if (null == this.inspect){ return "寰呭璐�"; }
         switch (this.inspect){
             case 1:
-                return "鏄�";
-            case 0:
-                return "鍚�";
+                return "澶囪揣涓�";
+            case 2:
+                return "宸插璐�";
             default:
-                return String.valueOf(this.inspect);
+                return "寰呭璐�";
         }
     }
 
diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
index 51be533..3103277 100644
--- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -86,4 +86,9 @@
      * 鏌ヨ鍖呰缁勫彿鍦ㄥ簱鏃堕棿
      */
     List<InLocTimeDto> queryInLocTime(@Param("param") List<String> param);
+
+    /**
+     * 鎸夊寘瑁呯粍鍙峰垪琛ㄦ煡璇㈠簱浣嶅彿鍒楄〃
+     */
+    List<LocDetl> selectLocNoByGroupNo(@Param("packageGroupNos") List<String> packageGroupNos);
 }
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index 3346fd9..fef98cd 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -48,4 +48,9 @@
      * 鎸夊寘瑁呯粍鍙锋爣璁扮洏鐐硅褰曞紓甯�
      */
     void updateCheckExceptionByGroup(@Param("groups") List<String> groups);
+
+    /**
+     * 鎸夊寘瑁呯粍鍙锋洿鏂拌鍗曟槑缁嗙姸鎬�
+     */
+    void updateOrderDetlStatusByPackageNo(@Param("brands") List<String> brands,@Param("status") int status);
 }
diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
index bfc089f..5c42005 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -21,4 +21,14 @@
     List<Order> selectorderNoL(@Param("orderNo")String orderNo);
 
     void updateSettleByOrderNo(@Param("orderNo") String orderNo, @Param("status") long status, @Param("userId") Long userId);
+
+    /**
+     * 鏌ヨ鍑哄簱鐢宠鍗曚腑娌℃湁澶囪揣鐨勮鍗曟槑缁嗙殑鍖呰缁勫彿
+     */
+    List<String> selectStockUpOrderDetl();
+
+    /**
+     * 鏇存柊璁㈠崟澶囪揣鐘舵��
+     */
+    void updateStatusByOrderNo(@Param("orderNo") String orderNo,@Param("status") int status,@Param("userId") int userId);
 }
diff --git a/src/main/java/com/zy/asrs/task/GhjtScheduler.java b/src/main/java/com/zy/asrs/task/GhjtScheduler.java
index f145c11..f3366d6 100644
--- a/src/main/java/com/zy/asrs/task/GhjtScheduler.java
+++ b/src/main/java/com/zy/asrs/task/GhjtScheduler.java
@@ -1,7 +1,6 @@
 package com.zy.asrs.task;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.Order;
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.mapper.OrderMapper;
 import com.zy.asrs.mapper.WrkMastMapper;
@@ -36,20 +35,24 @@
     @Resource
     private ConfigMapper configMapper;
 
-    // 澶囪揣(鏍规嵁鍑哄簱鍗曪紝鎶婅鍑虹殑璐ф彁鍓嶆斁鍒伴潬杩戝嚭搴撳彛浣嶇疆)
-//    @Scheduled(cron = "0/4 * * * * ? ")
-    public void stockUp() {
-        // 鏌ヨ寰呭嚭搴撹鍗�
-        List<Order> orderList = orderMapper.selectList(new EntityWrapper<Order>().eq("settle", 1));
-//        ghjtHandler.stockUp();
-        List<Order> orders = orderMapper.selectComplete();
-        for (Order order : orders) {
-            try {
-//                ghjtHandler.OutBoundCompleteReport(order);
-            } catch (Exception e) {
-                log.error("鍑哄簱璁㈠崟瀹屾垚鍒欎笂鎶ES澶辫触锛屽紓甯镐俊鎭細" + e);
-            }
+    // 鑷姩澶囪揣(鏍规嵁鍑哄簱鍗曪紝鎶婅鍑虹殑璐ф彁鍓嶆斁鍒伴潬杩戝嚭搴撳彛浣嶇疆)
+    // 瀹氭椂浠诲姟鑾峰彇寰呭璐ц鍗曟槑缁�->鑾峰彇鍫嗗灈鏈哄搴旂殑婧愬簱浣嶏紝鑾峰彇澶囪揣鍖哄簱浣�->鐢熸垚绉诲簱浠诲姟11->
+    // 鎵ц绉诲簱浠诲姟12->鍏ュ簱瀹屾垚4->鏇存柊宸ヤ綔妗e畾鏃朵换鍔′腑鏇存柊璁㈠崟澶囪揣鐘舵�佸拰璁㈠崟鏄庣粏澶囪揣鐘舵��5->杞偍鍘嗗彶
+    @Scheduled(cron = "0/10 * * * * ?")
+    public synchronized void autoStockUp() {
+        // 鏌ヨ鑷姩澶囪揣閰嶇疆
+        Config config = configMapper.selectConfigByCode("auto_stock_up");
+        if (config == null || config.getStatus() == 0) {
+            return;
         }
+        // 鏌ヨ鍑哄簱鐢宠鍗曚腑娌℃湁澶囪揣鐨勮鍗曟槑缁嗙殑鍖呰缁勫彿
+        List<String> list = orderMapper.selectStockUpOrderDetl();
+        if (list.isEmpty()) {
+            return;
+        }
+
+        ghjtHandler.autoStockUpHandler(list, Integer.parseInt(config.getValue()));
+
     }
 
     // 涓嬪彂鍑哄簱浠诲姟缁橤WCS(浠庡嚭搴撶爜澶村埌鍑哄簱鍙�)
diff --git a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
index 60150c6..a3f5e4b 100644
--- a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
@@ -4,12 +4,13 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
+import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.WrkDetl;
 import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.mapper.OrderDetlMapper;
-import com.zy.asrs.mapper.OrderMapper;
-import com.zy.asrs.mapper.WrkMastMapper;
+import com.zy.asrs.mapper.*;
 import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.WorkService;
 import com.zy.asrs.service.WrkDetlService;
 import com.zy.common.constant.MesConstant;
 import com.zy.common.utils.HttpHandler;
@@ -19,10 +20,7 @@
 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.*;
 import java.util.stream.Collectors;
 
 /**
@@ -48,6 +46,15 @@
 
     @Resource
     private OrderDetlMapper orderDetlMapper;
+
+    @Resource
+    private LocDetlMapper locDetlMapper;
+
+    @Resource
+    private LocMastMapper locMastMapper;
+
+    @Resource
+    private WorkService workService;
 
     @Transactional
     public void startCkrwPushGwcs(WrkMast wrkMast) {
@@ -158,4 +165,96 @@
         return flag;
     }
 
+    /**
+     * 鑷姩澶囪揣澶勭悊
+     */
+    public void autoStockUpHandler(List<String> list,int columnNum) {
+
+        // 鏍规嵁鍖呰缁勫彿鑾峰彇鎵�鍦ㄥ簱浣�
+        List<LocDetl> locDetls = locDetlMapper.selectLocNoByGroupNo(list);
+        if (locDetls.isEmpty()) {
+            return;
+        }
+        // 鐩稿悓鍒欏悎骞讹紝涓�涓簱浣嶄袱涓寘瑁呯粍鍙�
+        Map<String,List<String>> map = new HashMap<>();
+        for(LocDetl locDetl : locDetls) {
+            List<String> brand = map.get(locDetl.getLocNo());
+            if (brand == null) {
+                map.put(locDetl.getLocNo(),new ArrayList<String>(){{add(locDetl.getBrand());}});
+            } else {
+                brand.add(locDetl.getBrand());
+                map.put(locDetl.getLocNo(),brand);
+            }
+        }
+
+        // 閬嶅巻鍫嗗灈鏈哄苟涓斿垽鏂槸鍚﹀瓨鍦ㄤ换鍔�
+        for (int i = 1; i <= 6; i++) {
+            // 瑕佸璐х殑搴撲綅
+            String sourceLocNo = null;
+            // 澶囪揣鐩爣搴撲綅
+            String staLocNo = null;
+            Integer wrkCount = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", i));
+            if(wrkCount > 0) {
+                log.warn("{}鍙峰爢鍨涙満宸插瓨鍦ㄤ换鍔�",i);
+                continue;
+            }
+            // 鏍规嵁鍫嗗灈鏈哄彿鏌ヨ鍒板搴旂殑娣卞簱浣嶅拰娴呭簱浣�  娣卞簱浣�4*n-3鍜�4*n 娴呭簱浣�4*n-2鍜�4*n-1
+            int s1 = 4*i-3;
+            int s2 = 4*i;
+            int q1 = 4 * i - 2;
+            int q2 = 4 * i -1;
+
+            // 鏍规嵁鍫嗗灈鏈哄彿鑾峰彇涓�涓祬搴撲綅
+            for(String key : map.keySet()) {
+                int row = Integer.parseInt(key.substring(0, 2));
+                if (row == q1 || row == q2) {
+                    sourceLocNo = key;
+                    break;
+                }
+            }
+            // 娴呭簱浣嶆病鏈夊垯鎵句竴涓繁搴撲綅
+            if (sourceLocNo == null) {
+                for(String key : map.keySet()) {
+                    int row = Integer.parseInt(key.substring(0, 2));
+                    if (row == s1 || row == s2) {
+                        sourceLocNo = key;
+                        break;
+                    }
+                }
+            }
+            // 娌℃湁鎵惧埌婧愬簱浣�
+            if (sourceLocNo == null) {
+                log.warn("娌℃湁鎵惧埌婧愬簱浣�,鍫嗗灈鏈猴細{}",i);
+                continue;
+            }
+            // 瀵绘壘涓�涓璐х殑鐩爣搴撲綅锛屽厛娣卞悗娴�
+            List<LocMast> locMasts1 = locMastMapper.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", i).in("row1", s1, s2)
+                    .le("bay1", columnNum));
+            if (locMasts1.isEmpty()) {
+                // 娣卞簱浣嶄负绌轰簡锛屽彇娴呭簱浣�
+                List<LocMast> locMasts2 = locMastMapper.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", i).in("row1", q1, q2)
+                        .le("bay1", columnNum));
+                if (!locMasts2.isEmpty()) {
+                    staLocNo = locMasts2.get(0).getLocNo();
+                }
+            } else {
+                staLocNo = locMasts1.get(0).getLocNo();
+            }
+
+            if(staLocNo == null) {
+                log.warn("{}鍙峰爢鍨涙満澶囪揣鍖烘弧浜�",i);
+                continue;
+            }
+
+            // 澶囪揣鐨勬簮搴撲綅锛岀洰鏍囧簱浣嶉兘鑾峰彇鍒颁簡,鐢熸垚绉诲簱浠诲姟
+            workService.locMove(sourceLocNo,staLocNo,29L);
+
+            // 璁㈠崟鏄庣粏鏀规垚澶囪揣涓紝鍦ㄤ换鍔″畬鎴愭椂鍊欐敼鎴愬璐у畬鎴愶紝骞跺垽鏂暣涓鍗曟槸鍚﹀畬鎴�
+            orderDetlMapper.updateOrderDetlStatusByPackageNo(map.get(sourceLocNo), 1);
+
+            // 绉婚櫎宸茬敓鎴愬璐у簱浣�
+            map.remove(sourceLocNo);
+        }
+
+    }
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 042a645..93032b4 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -4,6 +4,7 @@
 import com.core.common.Cools;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.OrderDetlMapper;
+import com.zy.asrs.mapper.OrderMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
@@ -16,6 +17,7 @@
 import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * Created by vincent on 2020/7/4
@@ -39,6 +41,9 @@
     private OrderDetlService orderDetlService;
     @Resource
     private OrderDetlMapper orderDetlMapper;
+
+    @Resource
+    private OrderMapper orderMapper;
     public ReturnT<String> start(WrkMast wrkMast) {
         // 4.鍏ュ簱瀹屾垚
         if (wrkMast.getWrkSts() == 4) {
@@ -313,6 +318,26 @@
                             return FAIL.setMsg("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                         }
                     }
+                    // 澶囪揣锛屾洿鏂拌鍗曟槑缁嗗強璁㈠崟鐘舵��
+                    List<WrkDetl> wrkDetlList = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+                    if (!wrkDetlList.isEmpty()) {
+                        List<String> brands = wrkDetlList.stream().map(WrkDetl::getBrand).distinct().collect(Collectors.toList());
+                        // 鏌ヨ璁㈠崟鏄庣粏
+                        List<OrderDetl> orderDetlList = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().in("brand", brands));
+                        if (!orderDetlList.isEmpty()) {
+                            // 鏇存柊鏄庣粏涓哄凡澶囪揣
+                            orderDetlMapper.updateOrderDetlStatusByPackageNo(brands,2);
+                            // 鑾峰彇璁㈠崟鍙�
+                            String orderNo = orderDetlList.get(0).getOrderNo();
+                            // 鍒ゆ柇璇ヨ鍗曟槑缁嗘槸鍚﹀叏閮ㄥ凡澶囪揣
+                            Integer selectCount = orderDetlMapper.selectCount(new EntityWrapper<OrderDetl>().eq("order_no", orderNo).ne("inspect", 2));
+                            if (selectCount == 0) {
+                                // 鏇存柊璁㈠崟涓哄璐у畬鎴�
+                                orderMapper.updateStatusByOrderNo(orderNo,2,29);
+                            }
+                        }
+                    }
+
                     // 淇敼婧愬簱浣嶇姸鎬� ==> O
                     LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
                     if (null != sourceLoc) {
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index da73127..ef44e99 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -388,6 +388,12 @@
             brand,
             appe_time
     </select>
+    <select id="selectLocNoByGroupNo" resultType="com.zy.asrs.entity.LocDetl">
+        select distinct ald.loc_no as locNo,ald.brand from asr_loc_detl ald where ald.brand in
+        <foreach collection="packageGroupNos" item="item" index="index" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+    </select>
 
     <update id="updateMatTurn">
         UPDATE a
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index dede67e..84b5fb9 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -237,5 +237,11 @@
             #{item}
         </foreach>
     </update>
+    <update id="updateOrderDetlStatusByPackageNo">
+        update man_order_detl set inspect = #{status} where brand in
+        <foreach collection="brands" open="(" separator="," close=")" item="item"  index="index">
+            #{item}
+        </foreach>
+    </update>
 
 </mapper>
diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml
index 2bc2a3c..9a84bc0 100644
--- a/src/main/resources/mapper/OrderMapper.xml
+++ b/src/main/resources/mapper/OrderMapper.xml
@@ -63,6 +63,9 @@
         and order_no = #{orderNo}
         and settle != #{status}
     </update>
+    <update id="updateStatusByOrderNo">
+        update man_order set account_day = #{status},update_time = getdate(),update_by = #{userId} where order_no = #{orderNo}
+    </update>
 
     <select id="selectComplete" resultMap="BaseResultMap">
         select
@@ -91,5 +94,18 @@
             and order_no = #{orderNo}
         </if>
     </select>
+    <select id="selectStockUpOrderDetl" resultType="java.lang.String">
+        select
+            DISTINCT md.brand
+        from
+            man_order mo
+                left join man_order_detl md on
+                mo.order_no = md.order_no
+        where
+            mo.doc_type = 21
+          and mo.account_day = 1
+          and md.inspect = 0
+          and mo.settle = 1
+    </select>
 
 </mapper>
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index 20b90d0..2f5ff3d 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -260,8 +260,8 @@
                             // {field: 'inQty', title: '宸插叆搴撻噺'},
                             // {field: 'color', title: '棰滆壊'},
                             // {field: 'specs', title: '鎺ュご'},
-                            {field: 'qty$', title: '鐘舵��', style: 'font-weight: bold'},
-                            {field: 'source$', title: '鏄惁纭', style: 'font-weight: bold'}
+                            {field: 'qty$', title: '鍑哄簱鐘舵��', style: 'font-weight: bold'},
+                            {field: 'inspect$', title: '澶囪揣鐘舵��', style: 'font-weight: bold'}
                         ]],
                         request: {
                             pageName: 'curr',

--
Gitblit v1.9.1