From b376fc91290633b6ff5c51aba95e8b70d30a992c Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期日, 22 三月 2026 12:49:23 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java                   |   30 ++++++++++++++
 src/main/resources/sql/20260322_add_crn_out_require_station_out_enable_config.sql |   16 ++++++++
 src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java                       |   32 +++++++++++++++-
 3 files changed, 75 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
index 52cc748..be93a48 100644
--- a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
@@ -64,6 +64,8 @@
     @Autowired
     private StationOperateProcessUtils stationOperateProcessUtils;
 
+    private static final String CRN_OUT_REQUIRE_STATION_OUT_ENABLE_CONFIG = "crnOutRequireStationOutEnable";
+
     public synchronized void crnIoExecute() {
         Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
         if (systemConfigMapObj != null) {
@@ -374,7 +376,7 @@
                     continue;
                 }
 
-                if (!stationProtocol.isOutEnable()) {
+                if (isRequireOutboundStationOutEnable() && !stationProtocol.isOutEnable()) {
                     News.taskInfo(wrkMast.getWrkNo(), "鏀捐揣绔欑偣:{} 娌℃湁鍙嚭淇″彿", stationObjModel.getStationId());
                     continue;
                 }
@@ -565,7 +567,7 @@
                 continue;
             }
 
-            if (!stationProtocol.isOutEnable()) {
+            if (isRequireOutboundStationOutEnable() && !stationProtocol.isOutEnable()) {
                 News.taskInfo(wrkMast.getWrkNo(), "鏀捐揣绔欑偣:{} 娌℃湁鍙嚭淇″彿", stationObjModel.getStationId());
                 continue;
             }
@@ -707,6 +709,32 @@
         }
     }
 
+    private boolean isRequireOutboundStationOutEnable() {
+        return getSystemConfigBoolean(CRN_OUT_REQUIRE_STATION_OUT_ENABLE_CONFIG, true);
+    }
+
+    private boolean getSystemConfigBoolean(String code, boolean defaultValue) {
+        Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
+        if (!(systemConfigMapObj instanceof Map)) {
+            return defaultValue;
+        }
+        try {
+            Object value = ((Map<?, ?>) systemConfigMapObj).get(code);
+            if (value == null) {
+                return defaultValue;
+            }
+            String text = String.valueOf(value).trim();
+            if ("Y".equalsIgnoreCase(text) || "true".equalsIgnoreCase(text) || "1".equals(text)) {
+                return true;
+            }
+            if ("N".equalsIgnoreCase(text) || "false".equalsIgnoreCase(text) || "0".equals(text)) {
+                return false;
+            }
+        } catch (Exception ignore) {
+        }
+        return defaultValue;
+    }
+
     private synchronized boolean crnExecuteLocTransfer(BasCrnp basCrnp, CrnThread crnThread) {
         CrnProtocol crnProtocol = crnThread.getStatus();
         if(crnProtocol == null){
diff --git a/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
index dda96a1..e4ee5c4 100644
--- a/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
@@ -67,6 +67,8 @@
     @Autowired
     private StationOperateProcessUtils stationOperateProcessUtils;
 
+    private static final String CRN_OUT_REQUIRE_STATION_OUT_ENABLE_CONFIG = "crnOutRequireStationOutEnable";
+
     //鍏ュ嚭搴�  ===>>  鍙屽伐浣嶅爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙�
     public synchronized void dualCrnIoExecute() {
         List<BasDualCrnp> basDualCrnps = basDualCrnpService.list(new QueryWrapper<>());
@@ -587,7 +589,7 @@
                 continue;
             }
 
-            if (!stationProtocol.isOutEnable()) {
+            if (isRequireOutboundStationOutEnable() && !stationProtocol.isOutEnable()) {
                 News.taskInfo(wrkMast.getWrkNo(), "鏀捐揣绔欑偣:{} 娌℃湁鍙嚭淇″彿", stationObjModel.getStationId());
                 continue;
             }
@@ -901,6 +903,32 @@
         return false;
     }
 
+    private boolean isRequireOutboundStationOutEnable() {
+        return getSystemConfigBoolean(CRN_OUT_REQUIRE_STATION_OUT_ENABLE_CONFIG, true);
+    }
+
+    private boolean getSystemConfigBoolean(String code, boolean defaultValue) {
+        Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
+        if (!(systemConfigMapObj instanceof Map)) {
+            return defaultValue;
+        }
+        try {
+            Object value = ((Map<?, ?>) systemConfigMapObj).get(code);
+            if (value == null) {
+                return defaultValue;
+            }
+            String text = String.valueOf(value).trim();
+            if ("Y".equalsIgnoreCase(text) || "true".equalsIgnoreCase(text) || "1".equals(text)) {
+                return true;
+            }
+            if ("N".equalsIgnoreCase(text) || "false".equalsIgnoreCase(text) || "0".equals(text)) {
+                return false;
+            }
+        } catch (Exception ignore) {
+        }
+        return defaultValue;
+    }
+
     private boolean reassignTaskLocNo(WrkMast wrkMast, StationObjModel stationObjModel) {
         StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, stationObjModel.getDeviceNo());
         if (stationThread == null) {
diff --git a/src/main/resources/sql/20260322_add_crn_out_require_station_out_enable_config.sql b/src/main/resources/sql/20260322_add_crn_out_require_station_out_enable_config.sql
new file mode 100644
index 0000000..4044f35
--- /dev/null
+++ b/src/main/resources/sql/20260322_add_crn_out_require_station_out_enable_config.sql
@@ -0,0 +1,16 @@
+-- 鍫嗗灈鏈哄嚭搴撴槸鍚﹀繀椤绘牎楠屽嚭搴撶珯鍙嚭淇″彿
+-- Y: 蹇呴』鏍¢獙绔欑偣鍙嚭淇″彿鍚庢墠鍏佽涓嬪彂鍑哄簱浠诲姟
+-- N: 涓嶆牎楠岀珯鐐瑰彲鍑轰俊鍙凤紝鍫嗗灈鏈虹洿鎺ヤ笅鍙戝嚭搴撲换鍔�
+
+INSERT INTO sys_config(name, code, value, type, status, select_type)
+SELECT '鍫嗗灈鏈哄嚭搴撴牎楠屽嚭搴撶珯鍙嚭淇″彿', 'crnOutRequireStationOutEnable', 'Y', 1, 1, 'crn'
+FROM dual
+WHERE NOT EXISTS (
+    SELECT 1
+    FROM sys_config
+    WHERE code = 'crnOutRequireStationOutEnable'
+);
+
+SELECT id, name, code, value, type, status, select_type
+FROM sys_config
+WHERE code = 'crnOutRequireStationOutEnable';

--
Gitblit v1.9.1