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 |  215 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 203 insertions(+), 12 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 3d61ebe..b9cef6a 100644
--- a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
@@ -11,7 +11,9 @@
 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;
@@ -31,6 +33,7 @@
  */
 @Slf4j
 @Service
+@Transactional
 public class GhjtHandler {
 
     @Resource
@@ -63,7 +66,15 @@
     @Autowired
     private SlaveProperties slaveProperties;
 
-    @Transactional
+    @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) {
 
         // 鑾峰彇璇锋眰澶�
@@ -102,6 +113,7 @@
                     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);
@@ -166,11 +178,6 @@
         } else if (wrkMast.getIoType() == 103 && (wrkMast.getStaNo() == 3077 || wrkMast.getStaNo() == 3106)) { // 涓ょ鍑轰竴绠憋紝闇�妗佹灦鐞嗚揣
             // 閮借鍏堝幓鐞嗚揣
             flag = 2;
-//            if (wrkDetls.size() == 1) { // 涓�鍗疯创鏍囧嚭搴�
-//                flag = 4;
-//            } else { // 澶氬嵎鐩存帴鍑哄簱
-//
-//            }
         }
         return flag;
     }
@@ -178,7 +185,6 @@
     /**
      * 鑷姩澶囪揣澶勭悊
      */
-    @Transactional
     public void autoStockUpHandler(List<String> list,int columnNum) {
 
         // 鏍规嵁鍖呰缁勫彿鑾峰彇鎵�鍦ㄥ簱浣�
@@ -206,7 +212,7 @@
             String staLocNo = null;
             Integer wrkCount = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", i));
             if(wrkCount > 0) {
-                log.warn("{}鍙峰爢鍨涙満宸插瓨鍦ㄤ换鍔�",i);
+//                log.warn("{}鍙峰爢鍨涙満宸插瓨鍦ㄤ换鍔�",i);
                 continue;
             }
             // 鏍规嵁鍫嗗灈鏈哄彿鏌ヨ鍒板搴旂殑娣卞簱浣嶅拰娴呭簱浣�  娣卞簱浣�4*n-3鍜�4*n 娴呭簱浣�4*n-2鍜�4*n-1
@@ -235,16 +241,16 @@
             }
             // 娌℃湁鎵惧埌婧愬簱浣�
             if (sourceLocNo == null) {
-                log.warn("娌℃湁鎵惧埌婧愬簱浣�,鍫嗗灈鏈猴細{}",i);
+//                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));
+                    .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));
+                        .le("bay1", columnNum).orderBy("lev1,bay1,row1"));
                 if (!locMasts2.isEmpty()) {
                     staLocNo = locMasts2.get(0).getLocNo();
                 }
@@ -269,7 +275,6 @@
 
     }
 
-    @Transactional
     public void autoMoveLoc(List<OrderDetl> orderDetlList) {
 
         // 鍒ゆ柇鏄惁宸茬粡鏈夋墽琛岀殑绉诲簱浠诲姟
@@ -373,4 +378,190 @@
         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