From 59cf6b97399bc8c9fe39926fa13aa39cbd827270 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期六, 21 十二月 2024 15:39:01 +0800
Subject: [PATCH] 出库提取界面加搜索条件,提取出来包装一个木箱明细全部出来

---
 src/main/java/com/zy/asrs/task/handler/GhjtHandler.java |  533 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 479 insertions(+), 54 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..b9cef6a 100644
--- a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
@@ -1,23 +1,30 @@
 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.WrkMast;
-import com.zy.asrs.mapper.OrderMapper;
-import com.zy.asrs.mapper.WrkMastMapper;
+import com.zy.asrs.entity.*;
+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.asrs.utils.Utils;
 import com.zy.common.constant.MesConstant;
+import com.zy.common.model.StartupDto;
+import com.zy.common.properties.SlaveProperties;
+import com.zy.common.service.CommonService;
 import com.zy.common.utils.HttpHandler;
+import com.zy.system.entity.Config;
+import com.zy.system.mapper.ConfigMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 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
@@ -26,6 +33,7 @@
  */
 @Slf4j
 @Service
+@Transactional
 public class GhjtHandler {
 
     @Resource
@@ -37,32 +45,77 @@
     @Resource
     private WrkMastMapper wrkMastMapper;
 
-    @Transactional
+    @Resource
+    private WrkDetlService wrkDetlService;
+
+    @Resource
+    private OrderDetlMapper orderDetlMapper;
+
+    @Resource
+    private LocDetlMapper locDetlMapper;
+
+    @Resource
+    private LocMastMapper locMastMapper;
+
+    @Resource
+    private WorkService workService;
+
+    @Resource
+    private ConfigMapper configMapper;
+
+    @Autowired
+    private SlaveProperties slaveProperties;
+
+    @Resource
+    private CommonService commonService;
+
+    // 鍫嗗灈鏈哄搴斾竴妤煎嚭搴撶珯鐐�
+    private static final int[] oneFloorOutSite = new int[]{0,3002,3003,3006,3008,3009,3012};
+
+    // 鍫嗗灈鏈哄搴斾竴妤煎叆搴撶珯鐐�
+    private static final int[] oneFloorInSite = new int[]{0,3001,3004,3005,3007,3010,3011};
+
     public void startCkrwPushGwcs(WrkMast wrkMast) {
 
         // 鑾峰彇璇锋眰澶�
         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());
+                } else if(wrkMast.getIoType() == 12) { // 璺ㄥ贩閬撹浆绉�
+                    wrkMast.setWrkSts(1L); // 鐘舵�佹敼涓�1.鐢熸垚鍏ュ簱id
+                    wrkMast.setCrnNo(Arrays.binarySearch(oneFloorInSite,wrkMast.getStaNo()));// 鍫嗗灈鏈鸿浆鎹负鍏ュ簱鐨勫爢鍨涙満
+                    wrkMast.setModiTime(new Date());
+                }
                 wrkMastMapper.updateById(wrkMast);
                 success = true;
             } else {
@@ -89,54 +142,426 @@
         }
     }
 
-    @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;
+        }
+        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).orderBy("lev1,bay1,row1"));
+            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).orderBy("lev1,bay1,row1"));
+                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);
+        }
+
     }
+
+    public void autoMoveLoc(List<OrderDetl> orderDetlList) {
+
+        // 鍒ゆ柇鏄惁宸茬粡鏈夋墽琛岀殑绉诲簱浠诲姟
+        Integer count = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().in("io_type", 11, 12));
+        if (count > 0) {
+            return;
+        }
+
+        OrderDetl detl = null; // 瑕佺Щ搴撶殑鏄庣粏
+        String staLoc = null; // 绉诲簱鐩爣搴撲綅
+
+        // 浠庡緟绉诲簱浣嶅垪琛ㄤ腑鍏堟祬鍚庢繁鑾峰彇涓�涓緟绉诲簱浣�
+        Optional<OrderDetl> any = orderDetlList.stream().filter(orderDetl -> Utils.isShallowLoc(slaveProperties,orderDetl.getSpecs())).findAny();
+
+        if (any.isPresent()){
+            detl = any.get();
+        }
+        // 鍓╀笅鐨勫簲璇ラ兘鏄繁搴撲綅锛岃幏鍙栫涓�涓�
+        if (detl == null) {
+            detl = orderDetlList.get(0);
+            // 瀵瑰簲娴呭簱浣嶆湁璐э紝鍦ㄥ爢鍨涙満鍑哄簱鐨勬椂鍊欎細妫�娴嬪埌锛屽湪閭i噷鐢熸垚绉诲簱浠诲姟
+        }
+
+        // 鑾峰彇澶囪揣鍖洪厤缃�
+        Config config = configMapper.selectConfigByCode("auto_stock_up");
+        if (config == null) {
+            return;
+        }
+        // 澶囪揣鍙栨槸鍓嶅嚑鍒�
+        int bay1 = Integer.parseInt(config.getValue());
+        // 鎸囧畾鐨勭洰鏍囧簱浣�
+        String model = detl.getModel();
+
+        // 鎸囧畾鐩爣搴撲綅
+        if (!Cools.isEmpty(model)) {
+            // 鐩爣搴撲綅鏄繁搴撲綅
+            if (Utils.isDeepLoc(slaveProperties,model)) {
+                // 鐩爣搴撲綅
+                LocMast locMast2 = locMastMapper.selectById(model);
+                if (locMast2 == null || !locMast2.getLocSts().equals("O")) {
+                    log.error("鎸囧畾鐨勭洰鏍囧簱浣嶃�恵}銆戠姸涓嶄负绌�", model);
+                    return;
+                }
+                // 鑾峰彇鍒板搴旀祬搴撲綅
+                String shallowLoc = Utils.getShallowLoc(slaveProperties, model);
+                LocMast locMast = locMastMapper.selectById(shallowLoc);
+                // 娴呭簱浣嶆湁璐�
+                if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) {
+                    log.error("閫夋嫨鐨勬繁搴撲綅銆恵}銆戯紝浣嗘槸娴呭簱浣嶃�恵}銆戞湁璐�", model, locMast.getLocNo());
+                    return;
+                }
+                // 閬垮紑澶囪揣鍖�
+                if (Utils.getBay(model) <= bay1) {
+                    log.error("鎸囧畾鐨勭洰鏍囧簱浣嶃�恵}銆戝湪澶囪揣鍖猴紝涓嶈兘杞Щ", model);
+                    return;
+                }
+            }
+            // 娣卞簱浣嶆娴嬮�氳繃锛屾垨鑰呮槸娴呭簱浣�
+            staLoc = model;
+        } else if ( detl.getBeBatch() != null) { // 鎸囧畾鐩爣宸烽亾
+            // 鐩爣宸烽亾
+            Integer beBatch = detl.getBeBatch();
+            // 浠庡贩閬撻噷闈㈠厛娣卞悗娴呭彇涓�涓┖搴撲綅锛屼笉瑕佸崰鐢ㄥ璐у尯
+            List<LocMast> locMasts = locMastMapper.selectList(new EntityWrapper<LocMast>().eq("crn_no", beBatch).eq("loc_sts", "O").gt("bay1", bay1));
+            if (locMasts.isEmpty()) {
+                log.error("鎸囧畾宸烽亾銆恵}銆戞病鏈夎兘绉诲簱鐨勭┖搴撲綅浜�",beBatch);
+                return;
+            }
+            // 鍏堣繃婊ゅ嚭娣卞簱浣�
+            Optional<LocMast> a = locMasts.stream().filter(locMast -> Utils.isDeepLoc(slaveProperties,locMast.getLocNo())).findAny();
+            if (a.isPresent()){
+                staLoc = a.get().getLocNo();
+                // 鑾峰彇鍒板搴旀祬搴撲綅
+                String shallowLoc = Utils.getShallowLoc(slaveProperties, staLoc);
+                LocMast locMast = locMastMapper.selectById(shallowLoc);
+                // 娴呭簱浣嶆湁璐�
+                if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) {
+                    log.error("鎸囧畾鐨勭洰鏍囧贩閬撴繁搴撲綅銆恵}銆戯紝浣嗘槸娴呭簱浣嶃�恵}銆戞湁璐�",staLoc,locMast.getLocNo());
+                    return;
+                }
+            }
+            // 娣卞簱浣嶆病鏈夊垯鍙栨祬搴撲綅
+            if (staLoc == null) {
+                staLoc = locMasts.get(0).getLocNo();
+            }
+        } else {
+            log.error("鐩爣搴撲綅鎴栫洰鏍囧贩閬撴湁璇細{}",detl);
+            return;
+        }
+
+        // 鐢熸垚璺ㄥ贩閬撶Щ搴撲换鍔�
+        workService.autoLocMove(detl.getOrderNo(),detl.getSpecs(),staLoc,29L);
+
+        // 鏇存柊鍗曟嵁鏄庣粏绉诲簱鐘舵�佷负绉诲簱涓�
+        detl.setDanger(1);
+        if (detl.getBeBatch() != null) {
+            detl.setModel(staLoc); // 琛ュ厖鐩爣搴撲綅
+        }
+        orderDetlMapper.updateById(detl);
+        // 鏇存柊鍗曟嵁鐘舵�佷负2澶勭悊涓�
+        orderMapper.updatePendingSettleByOrderNo(detl.getOrderNo(),2L);
+    }
+
+    /**
+     * 缁欐寚瀹氭鏋剁敓鎴愮悊璐т换鍔�,鎸夎鍒欏鎵惧埌鑳界悊璐х殑涓や釜搴撲綅
+     * 1.鑳界悊璐х殑閮芥槸涓�绠变竴鍗风殑
+     * 2.瑙勫垯锛氭湪绠卞瀷鍙风浉鍚�-绠¤姱绫诲瀷鐩稿悓-瀹炴祴瀹藉箙鐩稿悓-鐢熺當鍘氬害鐩稿悓-鍒嗗垏涓嬫枡鏃堕棿鐩歌繎
+     */
+    public void autoTallyGoods(int flag) {
+
+        // 鑾峰彇澶囪揣鍖洪厤缃�
+        Config config = configMapper.selectConfigByCode("auto_stock_up");
+        if (config == null) {
+            throw new CoolException("鐞嗚揣鑾峰彇澶囪揣鍖洪厤缃敊璇紒锛侊紒");
+        }
+        // 鍓嶅嚑鍒楁槸澶囪揣鍖�
+        int columnNum = Integer.parseInt(config.getValue());
+
+        // 瀵绘壘涓�绠变竴鍗风殑锛屾病鏈夌悊璐х殑锛屼笉鍦ㄥ璐у尯鐨勭墿鏂欐槑缁�
+        List<LocDetl> tallyGoosList = locDetlMapper.selectTallyGoosList(columnNum);
+
+        // 杩囨护鎺夋湪绠辫鏍煎搴﹀ぇ浜�600鐨�(澶т簬600涓�涓墭鐩樺彧鑳芥斁涓�绠�)
+        tallyGoosList = tallyGoosList.stream().filter(locDetl -> {
+            String[] split = locDetl.getColor().split("\\*");
+            if (split.length == 3) {
+                return Integer.parseInt(split[1]) <= 600;
+            } else {
+                return false;
+            }
+        }).collect(Collectors.toList());
+
+        // 瀵绘壘婊¤冻鐞嗚揣鏉′欢鐨勪袱涓湪绠�
+        LocDetl leftLocDetl = null;
+        LocDetl rightLocDetl = null;
+        for (int i = 0; i < tallyGoosList.size(); i++) {
+            leftLocDetl = tallyGoosList.get(i);
+            for (int j = i + 1; j < tallyGoosList.size(); j++) {
+                LocDetl tempLocDetl = tallyGoosList.get(j);
+                if (leftLocDetl.getColor().equals(tempLocDetl.getColor()) && leftLocDetl.getManu().equals(tempLocDetl.getManu()) &&
+                        leftLocDetl.getSku().equals(tempLocDetl.getSku()) && leftLocDetl.getItemNum().equals(tempLocDetl.getItemNum())) {
+                    rightLocDetl = tempLocDetl;
+                    break;
+                }
+            }
+            if (rightLocDetl != null) {
+                break;
+            }
+        }
+
+        if (leftLocDetl == null || rightLocDetl == null) {
+//            log.warn("娌℃湁鎵惧埌涓や釜鑳界悊璐х殑鏈ㄧ");
+            return;
+        }
+
+        // 鎵惧埌鐨勪袱涓湪绠卞垰濂藉湪涓�涓墭鐩樹笂锛岀洿鎺ユ洿鏀圭悊璐х姸鎬佷负2
+        if (leftLocDetl.getLocNo().equals(rightLocDetl.getLocNo())) {
+            locDetlMapper.updateLhStsByLocNo(leftLocDetl.getLocNo(), 2);
+        } else {
+
+            // 鍒ゆ柇鏄幓鍝妗佹灦鐨勫摢涓珯鐐� t0缁勭洏鐐�,t1宸︽崲鐩樼偣,t2鍙虫崲鐩樼偣
+            int t0 = 3046, t1 = 3045, t2 = 3044;
+            if (flag == 2) {
+                t0 = 3042;
+                t1 = 3041;
+                t2 = 3040;
+            }
+
+            // 鐢熸垚绌洪棽鐞嗚揣浠诲姟
+            WrkDetl wrkDetl1 = tallyGoodsGenerate(t1, leftLocDetl);
+            WrkDetl wrkDetl2 = tallyGoodsGenerate(t2, rightLocDetl);
+
+            Date now = new Date();
+
+            // 瀵绘壘涓�涓┖搴撲綅
+            StartupDto dto = commonService.getLocNo(1, t0, null, 0);
+            // 鐢熸垚缁勭洏鍏ュ簱浠诲姟
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(dto.getWorkNo());
+            wrkMast.setIoTime(now);
+            wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵��
+            wrkMast.setIoType(1); // 鍏ュ嚭搴撶被鍨�
+            wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+            wrkMast.setCrnNo(dto.getCrnNo());
+            wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯
+            wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔�
+            wrkMast.setSourceLocNo(""); // 婧愬簱浣�
+            wrkMast.setLocNo(dto.getLocNo());
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("N");
+            wrkMast.setBarcode(""); // zwcs鎵ц鍏ュ簱鏃舵洿鏂版墭鐩樼爜
+            wrkMast.setAppeUser(29L); // 鎿嶄綔浜哄憳 root
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiUser(29L);
+            wrkMast.setModiTime(now);
+            if (wrkMastMapper.insert(wrkMast) != 1) {
+                throw new CoolException("绌洪棽鐞嗚揣缁勭洏淇濆瓨宸ヤ綔妗eけ璐ワ紝璇︽儏锛�" + wrkMast);
+            }
+
+            // 鐢熸垚宸ヤ綔鏄庣粏
+            wrkDetl1.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl1.setOrigin("宸�"); // 鍥哄畾鎷嗗埌宸﹁竟
+            wrkDetl1.setDeadWarn(2); // 宸茬悊璐ф爣璇�
+            wrkDetl2.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl2.setOrigin("鍙�");
+            wrkDetl2.setDeadWarn(2);
+            wrkDetlService.insert(wrkDetl1); // 鍏ュ簱瀹屾垚鏃舵洿鏂版墭鐩樼爜
+            wrkDetlService.insert(wrkDetl2);
+
+            // 鏇存柊鐩爣搴撲綅鐘舵��
+            LocMast locMast = locMastMapper.selectById(dto.getLocNo());
+            locMast.setLocSts("S");
+            locMastMapper.updateById(locMast); // 鍏ュ簱瀹屾垚鏃舵洿鏂版墭鐩樼爜
+        }
+    }
+
+    /**
+     * 鐢熸垚绌洪棽鐞嗚揣鍒版崲鐩樻鏋剁殑浠诲姟
+     *
+     * @param site    鎹㈢洏鐐�
+     * @param locDetl 搴撳瓨鏄庣粏
+     */
+    private WrkDetl tallyGoodsGenerate(int site, LocDetl locDetl) {
+
+        // 鍒ゆ柇搴撲綅鐘舵��
+        LocMast locMast = locMastMapper.selectById(locDetl.getLocNo());
+        if (!locMast.getLocSts().equals("F")) {
+            throw new CoolException("鐞嗚揣搴撲綅鐘舵�佹湁璇紝涓嶄负F锛屽簱浣嶅彿锛�" + locMast.getLocNo());
+        }
+
+        Date now = new Date();
+
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        // 鑾峰彇宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(5);
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+        wrkMast.setIoType(109); // 鍏ュ嚭搴撶姸鎬� 109.绌洪棽鐞嗚揣
+        wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+        wrkMast.setCrnNo(locMast.getCrnNo());
+        wrkMast.setSourceStaNo(oneFloorOutSite[locMast.getCrnNo()]); // 婧愮珯
+        wrkMast.setStaNo(site); // 鐩爣绔�
+        wrkMast.setSourceLocNo(locDetl.getLocNo()); // 婧愬簱浣�
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("N"); // 绌烘澘
+        wrkMast.setLinkMis("N");
+        wrkMast.setSheetNo("0");
+        wrkMast.setBarcode(locDetl.getZpallet());
+        wrkMast.setAppeUser(29L); // 鎿嶄綔浜哄憳 root
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(29L);
+        wrkMast.setModiTime(now);
+        if (wrkMastMapper.insert(wrkMast) != 1) {
+            throw new CoolException("绌洪棽鐞嗚揣淇濆瓨宸ヤ綔妗eけ璐ワ紝璇︽儏锛�" + wrkMast);
+        }
+
+        // 鐢熸垚宸ヤ綔鏄庣粏
+        WrkDetl wrkDetl = new WrkDetl();
+        wrkDetl.sync(locDetl);
+        wrkDetl.setWrkNo(workNo);
+        wrkDetl.setIoTime(now);
+        wrkDetl.setAppeTime(now);
+        wrkDetl.setAppeUser(29L);
+        wrkDetl.setModiTime(now);
+        wrkDetl.setModiUser(29L);
+        if (!wrkDetlService.insert(wrkDetl)) {
+            throw new CoolException("绌洪棽鐞嗚揣淇濆瓨宸ヤ綔妗f槑缁嗗け璐�,璇︽儏锛�" + wrkDetl);
+        }
+
+        // 淇敼鍑哄簱鐘舵��
+        locMast.setLocSts("R");
+        locMast.setModiUser(29L);
+        locMast.setModiTime(now);
+        if (locMastMapper.updateById(locMast) != 1) {
+            throw new CoolException("绌洪棽鐞嗚揣棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + locMast.getLocNo());
+        }
+
+        // 鏇存柊搴撳瓨鏄庣粏涓虹悊璐т腑
+        locDetlMapper.updateLhStsByLocNo(locDetl.getLocNo(), 1);
+
+        return wrkDetl;
+    }
+
 }

--
Gitblit v1.9.1