From b42da56f5b8fa7a2c7b78485142ed96ac4ea3571 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期日, 10 十一月 2024 13:58:59 +0800
Subject: [PATCH] 修改堆垛机库出入库限制

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java   |    7 ++
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |   22 ++++++-
 src/main/java/com/zy/asrs/task/IoModelChangeScheduler.java    |   43 ++++++++++++++
 src/main/java/com/zy/asrs/controller/OutController.java       |    3 +
 src/main/java/com/zy/common/utils/OutStockInterceptUtil.java  |   56 ++++++++++++++++++
 5 files changed, 127 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index f1d0ebc..b91a344 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -12,6 +12,7 @@
 import com.zy.asrs.service.*;
 import com.zy.common.model.LocDto;
 import com.zy.common.model.TaskDto;
+import com.zy.common.utils.OutStockInterceptUtil;
 import com.zy.common.utils.RoleUtils;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -163,6 +164,8 @@
         }
         boolean lack = true;
         for (LocDto locDto : locDtos) {
+            // 鍒ゆ柇鍏ュ簱妯″紡
+            OutStockInterceptUtil.outStockIntercept(locDto.getStaNo());
             if (!locDto.isLack()) {
                 lack = false;
                 break;
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index f948a7b..2c35100 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -8,6 +8,7 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.*;
+import com.zy.asrs.mapper.BasDevpMapper;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.MatUtils;
@@ -24,6 +25,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.*;
 
 /**
@@ -73,13 +75,25 @@
     @Autowired
     private ManLocDetlMapper manLocDetlMapper;
 
+    @Resource
+    private BasDevpMapper basDevpMapper;
 
     @Override
     public R inLocCallAgv(String sta, String inSta) {
-        // 鍒ゆ柇鍏ュ簱绔欑偣鏈夋棤鍑哄簱浠诲姟杩囨护鐩樼偣鎹℃枡
-        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", inSta).ne("wrk_sts",15).notIn("io_type",103,107));
-        if (count > 0) {
-            return R.parse(inSta + "绔欑偣瀛樺湪鍑哄簱浠诲姟");
+
+        BasDevp basDevp = basDevpMapper.selectById(inSta);
+        // 0.鍑哄簱妯″紡锛�1.agv鍏ュ簱涓紝2.鐢熸垚鍏ュ簱浠诲姟
+        if (basDevp.getDevMk().equals("0")) { // 鏄嚭搴�
+             // 鍒ゆ柇鏄惁鏈夊嚭搴撲换鍔�
+            int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>()
+                    .eq("sta_no", inSta).lt("wrk_sts",14).in("io_type",101,103,107,110));
+            if (count == 0) {
+                // 娌℃湁鍑哄簱浠诲姟锛屾洿鏀逛负鍏ュ簱妯″紡
+                basDevp.setDevMk("1");
+                basDevpMapper.updateById(basDevp);
+            } else {
+                return R.parse(inSta + "绔欑偣瀛樺湪鍑哄簱浠诲姟");
+            }
         }
 
         // 鍏堢粦瀹�
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 27212ad..9870586 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -19,6 +19,7 @@
 import com.zy.common.model.enums.WorkNoType;
 import com.zy.common.properties.SlaveProperties;
 import com.zy.common.service.CommonService;
+import com.zy.common.utils.OutStockInterceptUtil;
 import com.zy.common.web.WcsController;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -165,6 +166,8 @@
     public void startupFullTakeStore(StockOutParam param, Long userId) {
         // 鐩爣绔欑偣鐘舵�佹娴�
         BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+        // 鍒ゆ柇鍏ュ簱妯″紡
+        OutStockInterceptUtil.outStockIntercept(param.getOutSite());
         // 鑾峰彇搴撲綅鏄庣粏
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
@@ -556,6 +559,8 @@
         if (Cools.isEmpty(param.getOutSite())) {
             throw new CoolException("绔欑偣涓嶅瓨鍦�");
         }
+        // 鍒ゆ柇鍏ュ簱妯″紡
+        OutStockInterceptUtil.outStockIntercept(param.getOutSite());
         for (String locNo : param.getLocNos()) {
             // 鑾峰彇宸ヤ綔鍙�
             int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
@@ -683,6 +688,8 @@
     public void locCheckOut(StockOutParam param, Long userId) {
         // 鐩爣绔欑偣鐘舵�佹娴�
         BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+        // 鍒ゆ柇鍏ュ簱妯″紡
+        OutStockInterceptUtil.outStockIntercept(param.getOutSite());
         // 鑾峰彇搴撲綅鏄庣粏
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
diff --git a/src/main/java/com/zy/asrs/task/IoModelChangeScheduler.java b/src/main/java/com/zy/asrs/task/IoModelChangeScheduler.java
new file mode 100644
index 0000000..1c44f6e
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/IoModelChangeScheduler.java
@@ -0,0 +1,43 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.mapper.BasDevpMapper;
+import com.zy.asrs.mapper.WrkMastMapper;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description 鍏ュ簱妯″紡浠�1鍒囨崲鍒�2
+ * @createDate 2024/11/9 16:31
+ */
+@Component
+public class IoModelChangeScheduler {
+
+    @Resource
+    private WrkMastMapper wrkMastMapper;
+
+    @Resource
+    private BasDevpMapper basDevpMapper;
+
+    // agv浠庢殏瀛樼偣鍒扮粡杩囨壂鐮佸櫒鐢熸垚浠诲姟鏈夊欢杩燂紝鏃犳硶鍒ゆ柇浠�涔堟椂鍊欑敓鎴愪簡浠诲姟锛屽畾鏃朵换鍔″幓璇诲埌鍏ュ簱浠诲姟锛屾洿鏀规ā寮�1->2
+    @Scheduled(cron = "0/3 * * * * ? ")
+    private void execute(){
+        List<BasDevp> devps = basDevpMapper.selectList(new EntityWrapper<BasDevp>()
+                .in("dev_no", 1040, 2010, 2000, 3010));
+        for (BasDevp basDevp:devps) {
+            if (basDevp.getDevMk().equals("1")) {
+                int count = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("source_sta_no", basDevp.getDevNo()));
+                if (count > 0) {
+                    basDevp.setDevMk("2");
+                    basDevpMapper.updateById(basDevp);
+                }
+            }
+        }
+    }
+}
diff --git a/src/main/java/com/zy/common/utils/OutStockInterceptUtil.java b/src/main/java/com/zy/common/utils/OutStockInterceptUtil.java
new file mode 100644
index 0000000..2f34c5a
--- /dev/null
+++ b/src/main/java/com/zy/common/utils/OutStockInterceptUtil.java
@@ -0,0 +1,56 @@
+package com.zy.common.utils;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.SpringUtils;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.mapper.BasDevpMapper;
+import com.zy.asrs.mapper.WrkMastMapper;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author pang.jiabao
+ * @description 鍑哄簱鎷︽埅宸ュ叿绫�
+ * @createDate 2024/11/9 14:29
+ */
+public class OutStockInterceptUtil {
+
+    /**
+     * 鍫嗗灈鏈哄簱鍏ュ簱绔欑偣
+     */
+    public static final Map<Integer,Boolean> inSiteMap = new HashMap<Integer,Boolean>(){{
+        inSiteMap.put(1040,true);
+        inSiteMap.put(2010,true);inSiteMap.put(2000,true);
+        inSiteMap.put(3010,true);
+    }};
+
+    /**
+     * 鍫嗗灈鏈哄嚭搴撴搷浣滄椂鎷︽埅鍑哄簱绔欑偣锛屽垽鏂嚭鍏ュ簱妯″紡
+     * @param site 鍑哄簱绔欑偣
+     */
+    public static void outStockIntercept(Integer site){
+        // 鍙垽鏂爢鍨涙満搴撶殑鍏ュ簱绔欑偣
+        if (inSiteMap.get(site)) {
+            BasDevpMapper basDevpMapper = SpringUtils.getBean(BasDevpMapper.class);
+            BasDevp basDevp = basDevpMapper.selectById(site);
+            String devMk = basDevp.getDevMk();
+            if (devMk.equals("1")) {
+                 throw new CoolException("璇ュ嚭搴撶珯鐐筧gv姝e湪鎵ц鍏ュ簱涓�");
+            } else if (devMk.equals("2")) {
+                 // 鍒ゆ柇璇ョ珯鐐瑰叆搴撲换鍔℃槸鍚﹀畬鎴�
+                WrkMastMapper wrkMastMapper = SpringUtils.getBean(WrkMastMapper.class);
+                int count = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>()
+                        .eq("source_sta_no", site).in("io_type",1,10,53,57));
+                if (count == 0) {
+                    basDevp.setDevMk("0"); // 娌℃湁鍏ュ簱浠诲姟锛屽垏鎹㈡垚鍑哄簱妯″紡
+                    basDevpMapper.updateById(basDevp);
+                } else {
+                    throw new CoolException("璇ュ嚭搴撶珯鐐瑰瓨鍦ㄦ墽琛岀殑鍏ュ簱浠诲姟");
+                }
+            }
+        }
+    }
+}

--
Gitblit v1.9.1