From 0f769b47d8d71bd419ddf1733b0b2f21c82e86b1 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 07 十月 2024 10:33:30 +0800
Subject: [PATCH] 跨巷道移库

---
 src/main/java/com/zy/asrs/task/handler/GhjtHandler.java |  124 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 120 insertions(+), 4 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 a3f5e4b..3d61ebe 100644
--- a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
@@ -4,16 +4,17 @@
 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.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.properties.SlaveProperties;
 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;
@@ -56,6 +57,12 @@
     @Resource
     private WorkService workService;
 
+    @Resource
+    private ConfigMapper configMapper;
+
+    @Autowired
+    private SlaveProperties slaveProperties;
+
     @Transactional
     public void startCkrwPushGwcs(WrkMast wrkMast) {
 
@@ -92,6 +99,9 @@
                 } else if (wrkMast.getIoType() == 3) {
                     // 淇敼宸ヤ綔涓绘。鐘舵��
                     wrkMast.setWrkSts(15L);
+                    wrkMast.setModiTime(new Date());
+                } else if(wrkMast.getIoType() == 12) { // 璺ㄥ贩閬撹浆绉�
+                    wrkMast.setWrkSts(1L); // 鐘舵�佹敼涓�1.鐢熸垚鍏ュ簱id
                     wrkMast.setModiTime(new Date());
                 }
                 wrkMastMapper.updateById(wrkMast);
@@ -168,6 +178,7 @@
     /**
      * 鑷姩澶囪揣澶勭悊
      */
+    @Transactional
     public void autoStockUpHandler(List<String> list,int columnNum) {
 
         // 鏍规嵁鍖呰缁勫彿鑾峰彇鎵�鍦ㄥ簱浣�
@@ -257,4 +268,109 @@
         }
 
     }
+
+    @Transactional
+    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);
+    }
+
 }

--
Gitblit v1.9.1