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/java/com/zy/asrs/task/handler/GhjtHandler.java |  222 ++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 170 insertions(+), 52 deletions(-)

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 278e8c1..a3f5e4b 100644
--- a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
@@ -1,13 +1,17 @@
 package com.zy.asrs.task.handler;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.Order;
+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.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;
 import lombok.extern.slf4j.Slf4j;
@@ -16,8 +20,8 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author pang.jiabao
@@ -37,6 +41,21 @@
     @Resource
     private WrkMastMapper wrkMastMapper;
 
+    @Resource
+    private WrkDetlService wrkDetlService;
+
+    @Resource
+    private OrderDetlMapper orderDetlMapper;
+
+    @Resource
+    private LocDetlMapper locDetlMapper;
+
+    @Resource
+    private LocMastMapper locMastMapper;
+
+    @Resource
+    private WorkService workService;
+
     @Transactional
     public void startCkrwPushGwcs(WrkMast wrkMast) {
 
@@ -44,25 +63,37 @@
         Map<String, Object> headers = new HashMap<>();
         headers.put("Content-Type", "application/json;charset=UTF-8");
 
+        // 涓嬪彂缁檊wcs瑕佽蛋鐨勮矾寰勬爣璇�
+        int descFlag = getDescToGwcs(wrkMast);
+
         // 鏋勯�犺姹備綋
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("workNo", wrkMast.getWrkNo());
-        jsonObject.put("staNo", wrkMast.getStaNo());
-        jsonObject.put("sourceStaNo", wrkMast.getSourceStaNo());
+        jsonObject.put("staNo", wrkMast.getIoType() == 3 ? 3013 :wrkMast.getStaNo());
+        jsonObject.put("barcode", wrkMast.getBarcode());
+        jsonObject.put("sourceStaNo", wrkMast.getIoType() == 3 ? wrkMast.getStaNo() : wrkMast.getSourceStaNo());
+        jsonObject.put("descFlag", descFlag); // 101鍑哄簱鏃剁敤锛�0鍙湁涓�鏉¤矾寰勶紝1鐞嗚揣璐存爣璺緞锛�2璐存爣鎵撳甫璺緞
         String body = jsonObject.toJSONString();
 
         boolean success = false;
         String response = "";
         try {
             response = new HttpHandler.Builder()
-                    .setUri(MesConstant.URL)
-                    .setPath(MesConstant.PAKIN_URL)
+                    .setUri(MesConstant.GWCS_IP_PORT)
+                    .setPath(MesConstant.GWCS_DCKK_URL)
                     .setHeaders(headers)
                     .setJson(body)
                     .build()
                     .doPost();
             if (!Cools.isEmpty(response)) {
                 wrkMast.setWrkSts(2L); // 鏇存柊涓鸿澶囦笂璧�
+                if (wrkMast.getIoType() == 110) { // 绌烘墭鐩樺嚭搴撶洿鎺ュ畬鎴愪换鍔�
+                    wrkMast.setWrkSts(14L);
+                } else if (wrkMast.getIoType() == 3) {
+                    // 淇敼宸ヤ綔涓绘。鐘舵��
+                    wrkMast.setWrkSts(15L);
+                    wrkMast.setModiTime(new Date());
+                }
                 wrkMastMapper.updateById(wrkMast);
                 success = true;
             } else {
@@ -89,54 +120,141 @@
         }
     }
 
-    @Transactional
-    public void OutBoundCompleteReport(Order order) {
+    /**
+     * 鍏ㄦ澘鍑哄簱鍒�3077鎴�3106鐨勪换鍔★紝鍒ゆ柇鍑哄簱瑕佽蛋鐨勮矾寰�
+     * @param wrkMast 宸ヤ綔涓绘。
+     * @return 1.鐩存帴鍑哄簱,鍙湁涓�鏉¤矾寰� 2.鐞嗚揣璐存爣鍑哄簱 3.璐存爣鎵撳甫鍑哄簱 4.璐存爣鍑哄簱
+     */
+    private int getDescToGwcs(WrkMast wrkMast) {
+        // todo 涓ゆ潯璺嚎鎬庝箞閫�
+        int flag = 1;
+        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+        List<String> collect = wrkDetls.stream().map(WrkDetl::getBrand).distinct().collect(Collectors.toList());
 
-        // 鑾峰彇璇锋眰澶�
-        Map<String, Object> headers = new HashMap<>();
-        headers.put("Content-Type", "application/json;charset=UTF-8");
+        if (wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 3077 || wrkMast.getStaNo() == 3106)) {
+            // 鏈夊嚑涓湪绠�
+            if (collect.size() == 1) { // 涓�绠�
+                if (wrkDetls.size() == 1) { // 涓�鍗峰幓璐存爣
+                     flag = 4;
+                } else { // 澶氬嵎鐩存帴鍑�
 
-        // 鏋勯�犺姹備綋
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("orderNo", order.getOrderNo());
-        jsonObject.put("complete", 1); // 璁㈠崟瀹屾垚涓�1锛屽叾浠�...
-        String body = jsonObject.toJSONString();
+                }
+            } else if(collect.size() == 2) { // 涓ょ鍘昏创鏍囨墦甯�
 
-        boolean success = false;
-        String response = "";
-        try {
-            response = new HttpHandler.Builder()
-                    .setUri(MesConstant.URL)
-                    .setPath(MesConstant.PAKIN_URL)
-                    .setHeaders(headers)
-                    .setJson(body)
-                    .build()
-                    .doPost();
-            if (!Cools.isEmpty(response)) {
-                order.setSettle(6L);
-                orderMapper.updateById(order);
-                success = true;
-            } else {
-                log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PAKIN_URL, body, response);
-                throw new CoolException("涓嬪彂鍑哄簱浠诲姟缁橤WCS(浠庡嚭搴撶爜澶村埌鍑哄簱鍙�)澶辫触");
+                // 涓ょ鑲畾閮芥槸鍗曞嵎鎯呭喌 鍚屽瀷鍙�(鏈ㄧ鍨嬪彿-绠¤姱绫诲瀷-瀹炴祴瀹藉箙-鐢熺當鍘氬害-鍒嗗垏涓嬫枡鏃堕棿)鍘昏创鏍囷紝鎵撳甫锛屼笉鍚屽瀷鍙疯创鏍囧嚭搴�
+                WrkDetl wrkDetl1 = wrkDetls.get(0);
+                WrkDetl wrkDetl2 = wrkDetls.get(1);
+                if (wrkDetl1.getColor().equals(wrkDetl2.getColor())&&
+                wrkDetl1.getSku().equals(wrkDetl2.getSku())&&
+                wrkDetl1.getManu().equals(wrkDetl2.getManu())&&
+                wrkDetl1.getItemNum().equals(wrkDetl2.getItemNum())) {
+                    flag = 3;
+                } else {
+                    flag = 4;
+                }
             }
-        } catch (Exception e) {
-            log.error("鍑哄簱璁㈠崟瀹屾垚涓婃姤MES寮傚父锛屽伐浣滃彿锛歿}锛寋}", order.getOrderNo(), e.getMessage());
-        } finally {
-            try {
-                // 淇濆瓨鎺ュ彛鏃ュ織
-                apiLogService.save(
-                        "鍑哄簱璁㈠崟瀹屾垚涓婃姤MES",
-                        MesConstant.URL + MesConstant.PAKIN_URL,
-                        null,
-                        "127.0.0.1",
-                        jsonObject.toJSONString(),
-                        response,
-                        success
-                );
-            } catch (Exception e) {
-                log.error("鎺ュ彛鏃ュ織淇濆瓨寮傚父", e);
+        } else if (wrkMast.getIoType() == 103 && (wrkMast.getStaNo() == 3077 || wrkMast.getStaNo() == 3106)) { // 涓ょ鍑轰竴绠憋紝闇�妗佹灦鐞嗚揣
+            // 閮借鍏堝幓鐞嗚揣
+            flag = 2;
+//            if (wrkDetls.size() == 1) { // 涓�鍗疯创鏍囧嚭搴�
+//                flag = 4;
+//            } else { // 澶氬嵎鐩存帴鍑哄簱
+//
+//            }
+        }
+        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);
+        }
+
     }
 }

--
Gitblit v1.9.1