From aef500a5cebed741c69e2bc3426bc8342db30bf1 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 24 四月 2026 16:10:53 +0800
Subject: [PATCH] #堆垛机命令增加排映射关系V3.0.0.8
---
src/main/java/com/zy/asrs/controller/OpenController.java | 150 ++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 138 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 9bbe2f5..eb65d3b 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -4,7 +4,9 @@
import com.core.common.Cools;
import com.core.common.R;
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;
@@ -20,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;
@@ -34,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
@@ -110,19 +115,11 @@
if (param == null) {
return R.error("鍙傛暟涓嶈兘涓虹┖");
}
-
- List<CreateOutTaskParam> taskList = param.getTaskList();
- if (taskList == null || taskList.size() == 0) {
- return R.error("浠诲姟鍒楄〃涓嶈兘涓虹┖");
+ boolean result = commonService.createOutTaskBatch(param);
+ if (result) {
+ return R.ok();
}
-
- for (CreateOutTaskParam createOutTaskParam : taskList) {
- if (createOutTaskParam == null) {
- throw new CoolException("浠诲姟鍙傛暟涓嶈兘涓虹┖");
- }
- commonService.createOutTask(createOutTaskParam);
- }
- return R.ok();
+ return R.error("鐢熸垚鎵归噺鍑哄簱浠诲姟澶辫触");
}
@PostMapping("/completeTask")
@@ -149,6 +146,52 @@
return R.ok();
}
return R.error("浠诲姟鍙栨秷澶辫触");
+ }
+
+ @PostMapping("/manualRollbackTask")
+ @OpenApiLog(memo = "浠诲姟浜哄伐鍥炴粴")
+ public R manualRollbackTask(@RequestBody ManualRollbackTaskParam param) {
+ if (param == null) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖");
+ }
+ boolean rollback = commonService.manualRollbackTask(param);
+ if (rollback) {
+ return R.ok();
+ }
+ return R.error("浠诲姟浜哄伐鍥炴粴澶辫触");
+ }
+
+ @PostMapping("/cancelTaskBatch")
+ @OpenApiLog(memo = "浠诲姟鎵归噺鍙栨秷")
+ public R cancelTaskBatch(@RequestBody CancelTaskBatchParam param) {
+ if (param == null) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖");
+ }
+ CancelTaskBatchResult result = commonService.cancelTaskBatch(param);
+ return R.ok().add(result);
+ }
+
+ @PostMapping("/updateTaskPriorityAndBatchSeq")
+ @OpenApiLog(memo = "淇敼浠诲姟浼樺厛绾у拰鎵规搴忓彿")
+ public R updateTaskPriorityAndBatchSeq(@RequestBody UpdateTaskPriorityAndBatchSeqParam param) {
+ if (param == null) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖");
+ }
+ boolean result = commonService.updateTaskPriorityAndBatchSeq(param);
+ if (result) {
+ return R.ok();
+ }
+ return R.error("淇敼浠诲姟浼樺厛绾у拰鎵规搴忓彿澶辫触");
+ }
+
+ @PostMapping("/cancelOutTaskBatchInfo")
+ @OpenApiLog(memo = "鍙栨秷鍑哄簱浠诲姟鎵规鍜屾壒娆″簭鍙�")
+ public R cancelOutTaskBatchInfo(@RequestBody CancelTaskBatchParam param) {
+ if (param == null) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖");
+ }
+ CancelTaskBatchResult result = commonService.cancelOutTaskBatchInfo(param);
+ return R.ok().add(result);
}
@PostMapping("/deviceStatus")
@@ -385,4 +428,87 @@
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;
+ Map<String, String> normalizedMap = new LinkedHashMap<>();
+ for (Map.Entry<String, Object> entry : param.getConfigMap().entrySet()) {
+ String key = entry.getKey();
+ if (!allowKeys.contains(key)) {
+ return R.error("涓嶆敮鎸佺殑閰嶇疆椤�: " + key);
+ }
+ normalizedMap.put(key, normalizeFakeConfigValue(key, entry.getValue()));
+ }
+ validateFakeCrnLaserConfig(normalizedMap);
+ for (Map.Entry<String, String> entry : normalizedMap.entrySet()) {
+ if (!configService.saveConfigValue(entry.getKey(), entry.getValue())) {
+ return R.error("淇濆瓨澶辫触: " + entry.getKey());
+ }
+ }
+ configService.refreshSystemConfigCache();
+ return getFakeConfig();
+ }
+
+ private void validateFakeCrnLaserConfig(Map<String, String> normalizedMap) {
+ long bayMin = resolveFakeLongValue(normalizedMap, FakeConfigKeys.FAKE_CRN_BAY_MIN);
+ long bayMax = resolveFakeLongValue(normalizedMap, FakeConfigKeys.FAKE_CRN_BAY_MAX);
+ long laserMin = resolveFakeLongValue(normalizedMap, FakeConfigKeys.FAKE_CRN_LASER_MIN);
+ long laserMax = resolveFakeLongValue(normalizedMap, FakeConfigKeys.FAKE_CRN_LASER_MAX);
+ if (bayMax <= bayMin) {
+ throw new CoolException("鍫嗗灈鏈� bay 鏈�澶у�煎繀椤诲ぇ浜庢渶灏忓��");
+ }
+ if (laserMax <= laserMin) {
+ throw new CoolException("鍫嗗灈鏈洪暛灏勬渶澶у�煎繀椤诲ぇ浜庢渶灏忓��");
+ }
+ }
+
+ private long resolveFakeLongValue(Map<String, String> normalizedMap, String key) {
+ String value = normalizedMap.get(key);
+ if (value == null) {
+ value = configService.getConfigValue(key, FakeConfigKeys.DEFAULTS.get(key));
+ }
+ return Long.parseLong(value);
+ }
+
+ 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