From 5447ff1e5abeb1d45c9e331f78a0e523695b2561 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 05 五月 2026 16:02:12 +0800
Subject: [PATCH] #WCS系统自定义上传LOGO、标题、名称V3.0.1.8
---
src/main/java/com/zy/asrs/controller/OpenController.java | 230 +++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 205 insertions(+), 25 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index abc031f..6b5e291 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -1,15 +1,18 @@
package com.zy.asrs.controller;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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;
import com.zy.asrs.service.DeviceConfigService;
import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.RuntimeConfigService;
import com.zy.asrs.service.WrkMastService;
import com.zy.common.annotations.OpenApiLog;
import com.zy.common.service.CommonService;
@@ -20,6 +23,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,8 +38,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
@@ -58,6 +65,8 @@
private ConfigService configService;
@Autowired
private DeviceConfigService deviceConfigService;
+ @Autowired
+ private RuntimeConfigService runtimeConfigService;
// 绉诲簱浠诲姟
@PostMapping("/createLocMoveTask")
@@ -109,19 +118,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")
@@ -150,13 +151,59 @@
return R.error("浠诲姟鍙栨秷澶辫触");
}
- @RequestMapping("/deviceStatus")
+ @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")
// @OpenApiLog(memo = "鑾峰彇璁惧鐘舵��")
public R getDeviceStatus() {
HashMap<String, Object> map = new HashMap<>();
// 鑾峰彇鍫嗗灈鏈烘暟鎹�
ArrayList<CrnProtocol> crnProtocols = new ArrayList<>();
- List<DeviceConfig> crnList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+ List<DeviceConfig> crnList = deviceConfigService.list(new QueryWrapper<DeviceConfig>()
.eq("device_type", String.valueOf(SlaveType.Crn)));
for (DeviceConfig device : crnList) {
CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, device.getDeviceNo());
@@ -173,7 +220,7 @@
// 鑾峰彇RGV鏁版嵁
ArrayList<RgvProtocol> rgvProtocols = new ArrayList<>();
- List<DeviceConfig> rgvList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+ List<DeviceConfig> rgvList = deviceConfigService.list(new QueryWrapper<DeviceConfig>()
.eq("device_type", String.valueOf(SlaveType.Rgv)));
for (DeviceConfig device : rgvList) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, device.getDeviceNo());
@@ -190,7 +237,7 @@
// 鑾峰彇鍙屽伐浣嶅爢鍨涙満鏁版嵁
ArrayList<DualCrnProtocol> dualCrnProtocols = new ArrayList<>();
- List<DeviceConfig> dualCrnList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+ List<DeviceConfig> dualCrnList = deviceConfigService.list(new QueryWrapper<DeviceConfig>()
.eq("device_type", String.valueOf(SlaveType.DualCrn)));
for (DeviceConfig device : dualCrnList) {
DualCrnThread dualCrnThread = (DualCrnThread) SlaveConnection.get(SlaveType.DualCrn, device.getDeviceNo());
@@ -207,7 +254,7 @@
// 鑾峰彇杈撻�佺珯鐐规暟鎹�
ArrayList<StationProtocol> stationProtocols = new ArrayList<>();
- List<DeviceConfig> stationList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+ List<DeviceConfig> stationList = deviceConfigService.list(new QueryWrapper<DeviceConfig>()
.eq("device_type", String.valueOf(SlaveType.Devp)));
for (DeviceConfig device : stationList) {
StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, device.getDeviceNo());
@@ -227,6 +274,38 @@
map.put("dualCrnList", dualCrnProtocols);
map.put("stationList", stationProtocols);
return R.ok().add(map);
+ }
+
+ @PostMapping("/stationStatus")
+ public R getStationStatus(@RequestBody GetStationStatusParam param) {
+ // 鑾峰彇杈撻�佺珯鐐规暟鎹�
+ List<StationProtocol> stationProtocols = new ArrayList<>();
+ List<DeviceConfig> devpList = deviceConfigService.list(new QueryWrapper<DeviceConfig>()
+ .eq("device_type", String.valueOf(SlaveType.Devp))
+ );
+ for (DeviceConfig device : devpList) {
+ StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, device.getDeviceNo());
+ if (stationThread == null) {
+ continue;
+ }
+
+ List<StationProtocol> tmp = new ArrayList<>();
+ if(param.getStationIds() == null || param.getStationIds().isEmpty()) {
+ tmp.addAll(stationThread.getStatus());
+ }else {
+ Map<Integer, StationProtocol> statusMap = stationThread.getStatusMap();
+ for (Integer stationId : param.getStationIds()) {
+ StationProtocol stationProtocol = statusMap.get(stationId);
+ if (stationProtocol == null) {
+ continue;
+ }
+ tmp.add(stationProtocol);
+ }
+ }
+ stationProtocols.addAll(tmp);
+ }
+
+ return R.ok().add(stationProtocols);
}
@PostMapping("/getLocInformation")
@@ -251,7 +330,7 @@
@OpenApiLog(memo = "鑾峰彇鍏ㄩ儴搴撲綅淇℃伅")
public R getAllLocInformation(@RequestBody GetAllLocInformationParam param) {
List<HashMap<String, Object>> list = new ArrayList<>();
- EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
+ QueryWrapper<LocMast> wrapper = new QueryWrapper<>();
if (!Cools.isEmpty(param.getRow())) {
wrapper.eq("row1", param.getRow());
@@ -261,7 +340,7 @@
wrapper.eq("lev1", param.getLev());
}
- List<LocMast> locMasts = locMastService.selectList(wrapper);
+ List<LocMast> locMasts = locMastService.list(wrapper);
if (locMasts.isEmpty()) {
return R.ok().add(list);
}
@@ -283,7 +362,7 @@
@PostMapping("/queryTask")
@OpenApiLog(memo = "鏌ヨ浠诲姟")
public R queryTask(@RequestBody QueryTaskParam param) {
- EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
+ QueryWrapper<WrkMast> wrapper = new QueryWrapper<>();
if (param.getTaskNo() != null) {
wrapper.eq("wms_wrk_no", param.getTaskNo());
}
@@ -295,7 +374,7 @@
}
wrapper.eq("io_type", ioType.id);
}
- List<WrkMast> wrkMasts = wrkMastService.selectList(wrapper);
+ List<WrkMast> wrkMasts = wrkMastService.list(wrapper);
return R.ok().add(wrkMasts);
}
@@ -312,13 +391,31 @@
return R.ok().add(map);
}
+ @GetMapping("/getBranding")
+ public R getBranding() {
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("logo", configService.getConfigValue("system.logo", "/static/images/zy-logo.png"));
+ map.put("title", configService.getConfigValue("system.title", "娴欐睙涓壃 - 鑷姩鍖栫珛浣撲粨搴� - WCS"));
+ map.put("copyright", configService.getConfigValue("system.copyright", "漏 2026 娴欐睙涓壃绔嬪簱鎶�鏈湁闄愬叕鍙�"));
+ return R.ok().add(map);
+ }
+
+ @PostMapping("/runtimeConfig/update")
+ @OpenApiLog(memo = "淇敼杩愯鍙傛暟")
+ public R updateRuntimeConfig(@RequestBody RuntimeConfigUpdateParam param) {
+ if (param == null || param.getConfigMap() == null || param.getConfigMap().isEmpty()) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖");
+ }
+ return R.ok().add(runtimeConfigService.updateRuntimeConfig(param.getConfigMap()));
+ }
+
@GetMapping("/getFakeSystemRunStatus")
public R getFakeSystemRunStatus() {
HashMap<String, Object> map = new HashMap<>();
if (mainProcessPlugin.contains("Fake")) {
map.put("running", false);
map.put("isFake", true);
- Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "enableFake"));
+ Config config = configService.getOne(new QueryWrapper<Config>().eq("code", "enableFake"));
if (config != null) {
if (config.getValue().equals("Y")) {
map.put("running", true);
@@ -333,7 +430,7 @@
@PostMapping("/startFakeSystem")
@OpenApiLog(memo = "鍚姩浠跨湡妯℃嫙")
public R startFakeSystem() {
- Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "enableFake"));
+ Config config = configService.getOne(new QueryWrapper<Config>().eq("code", "enableFake"));
if (config != null) {
config.setValue("Y");
configService.updateById(config);
@@ -344,7 +441,7 @@
@PostMapping("/stopFakeSystem")
@OpenApiLog(memo = "鍋滄浠跨湡妯℃嫙")
public R stopFakeSystem() {
- Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "enableFake"));
+ Config config = configService.getOne(new QueryWrapper<Config>().eq("code", "enableFake"));
if (config != null) {
config.setValue("N");
configService.updateById(config);
@@ -352,4 +449,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