From 413b42a497ed1b695ceb0acada0122e553021ddb Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 16 四月 2026 16:29:19 +0800
Subject: [PATCH] #仿真系统优化V3.0.0.2

---
 src/main/java/com/zy/asrs/controller/OpenController.java |   62 +++++++++++++++++++++++++++++++
 1 files changed, 62 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 062ca37..6cda1e6 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -6,6 +6,7 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.domain.Result.CancelTaskBatchResult;
 import com.zy.asrs.domain.param.*;
+import com.core.annotations.ManagerAuth;
 import com.zy.asrs.entity.DeviceConfig;
 import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.WrkMast;
@@ -21,6 +22,7 @@
 import com.zy.core.model.protocol.DualCrnProtocol;
 import com.zy.core.model.protocol.RgvProtocol;
 import com.zy.core.model.protocol.StationProtocol;
+import com.zy.core.network.fake.FakeConfigKeys;
 import com.zy.core.thread.CrnThread;
 import com.zy.core.thread.DualCrnThread;
 import com.zy.core.thread.RgvThread;
@@ -35,9 +37,11 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 @Slf4j
 @RestController
@@ -424,4 +428,62 @@
         return R.ok();
     }
 
+    @GetMapping("/fakeConfig/auth")
+    @ManagerAuth
+    public R getFakeConfig() {
+        LinkedHashMap<String, Object> map = new LinkedHashMap<>();
+        for (String key : FakeConfigKeys.ALL_KEYS) {
+            String defaultValue = FakeConfigKeys.DEFAULTS.get(key);
+            map.put(key, configService.getConfigValue(key, defaultValue));
+        }
+        return R.ok().add(map);
+    }
+
+    @PostMapping("/fakeConfig/save/auth")
+    @ManagerAuth
+    public R saveFakeConfig(@RequestBody FakeConfigSaveParam param) {
+        if (param == null || param.getConfigMap() == null || param.getConfigMap().isEmpty()) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖");
+        }
+        Set<String> allowKeys = FakeConfigKeys.ALL_KEYS;
+        for (Map.Entry<String, Object> entry : param.getConfigMap().entrySet()) {
+            String key = entry.getKey();
+            if (!allowKeys.contains(key)) {
+                return R.error("涓嶆敮鎸佺殑閰嶇疆椤�: " + key);
+            }
+            String normalized = normalizeFakeConfigValue(key, entry.getValue());
+            if (!configService.saveConfigValue(key, normalized)) {
+                return R.error("淇濆瓨澶辫触: " + key);
+            }
+        }
+        configService.refreshSystemConfigCache();
+        return getFakeConfig();
+    }
+
+    private String normalizeFakeConfigValue(String key, Object rawValue) {
+        if (rawValue == null) {
+            throw new CoolException(key + " 鍙傛暟涓嶈兘涓虹┖");
+        }
+        String value = String.valueOf(rawValue).trim();
+        if (FakeConfigKeys.BOOLEAN_KEYS.contains(key)) {
+            if (!"Y".equalsIgnoreCase(value) && !"N".equalsIgnoreCase(value)) {
+                throw new CoolException(key + " 浠呮敮鎸� Y/N");
+            }
+            return value.toUpperCase();
+        }
+        if (FakeConfigKeys.LONG_KEYS.contains(key)) {
+            long parsed;
+            try {
+                parsed = Long.parseLong(value);
+            } catch (Exception e) {
+                throw new CoolException(key + " 蹇呴』涓洪潪璐熸暣鏁�");
+            }
+            if (parsed < 0) {
+                throw new CoolException(key + " 蹇呴』涓洪潪璐熸暣鏁�");
+            }
+            return String.valueOf(parsed);
+        }
+        throw new CoolException("涓嶆敮鎸佺殑閰嶇疆椤�: " + key);
+    }
+
 }

--
Gitblit v1.9.1