From 00b0ec55e1b0eef82b3a31166e8273ecea776568 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 19 十月 2024 14:34:51 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/map/http.js | 22 ++++++++++-
zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/ConfigService.java | 2 +
zy-acs-flow/src/map/insight/index.jsx | 2
zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/impl/ConfigServiceImpl.java | 45 ++++++++++++++++++++++
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java | 11 +++++
zy-acs-flow/src/map/MapPage.jsx | 13 +++++-
6 files changed, 88 insertions(+), 7 deletions(-)
diff --git a/zy-acs-flow/src/map/MapPage.jsx b/zy-acs-flow/src/map/MapPage.jsx
index 205aadd..1564c27 100644
--- a/zy-acs-flow/src/map/MapPage.jsx
+++ b/zy-acs-flow/src/map/MapPage.jsx
@@ -21,6 +21,7 @@
import ConfirmButton from "../page/components/ConfirmButton";
import { FitScreen } from '@mui/icons-material';
import MapSearch from "./header/MapSearch";
+import { startupOrShutdown } from "./http";
let player;
let websocket;
@@ -48,6 +49,7 @@
const prevCurSpriteRef = useRef();
const [batchSprites, setBatchSprites] = useState([]);
+ const [rcsStatus, setRcsStatus] = useState(null);
const [curZone, setCurZone] = useState(() => {
const storedValue = localStorage.getItem('curZone');
return storedValue !== null ? JSON.parse(storedValue) : null;
@@ -73,7 +75,7 @@
Http.setMapContainer(player.mapContainer);
websocket = new WebSocketClient('/ws/map/websocket');
- await Http.fetchMapData();
+ await Http.fetchMapData(curZone, setRcsStatus);
websocket.connect();
websocket.onMessage = (wsMsg) => {
Tool.generateDynamicGraphic(curZone, JSON.parse(wsMsg), setCurSprite);
@@ -261,10 +263,15 @@
<>
<Button
variant="contained"
- color="primary"
+ color={rcsStatus ? 'inherit' : 'primary'}
sx={{ mr: 2 }}
+ onClick={() => {
+ startupOrShutdown(() => {
+ setRcsStatus(!rcsStatus);
+ });
+ }}
>
- {translate('page.map.action.startup')}
+ {rcsStatus ? translate('page.map.action.shutdown') : translate('page.map.action.startup')}
</Button>
<Button variant="contained" color="primary">
{translate('page.map.action.monitor')}
diff --git a/zy-acs-flow/src/map/http.js b/zy-acs-flow/src/map/http.js
index c6d34e1..22fe804 100644
--- a/zy-acs-flow/src/map/http.js
+++ b/zy-acs-flow/src/map/http.js
@@ -14,15 +14,16 @@
mapContainer = param;
}
-export const fetchMapData = (zoneId) => {
+export const fetchMapData = (zoneId, setRcsStatus) => {
Tool.clearMapData();
return request.post('/map/data/fetch', {
zoneId: zoneId
}, {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}).then((res) => {
- const { code, msg, data: { common, point } } = res.data;
+ const { code, msg, data: { rcsStatus, common, point } } = res.data;
if (code === 200) {
+ setRcsStatus(rcsStatus);
const mapItemList = [...eval(common), ...eval(point)];
mapItemList.forEach(item => {
if (item.type !== DEVICE_TYPE.AGV) {
@@ -108,6 +109,23 @@
})
}
+export const startupOrShutdown = async (callback) => {
+ try {
+ const res = await request.post('/map/startupOrShutdown');
+ const { code, msg, data } = res.data;
+ if (code === 200) {
+ if (callback) {
+ callback();
+ }
+ } else {
+ notify.error(msg);
+ }
+ } catch (error) {
+ notify.error(error.message);
+ console.error(error.message);
+ }
+}
+
export const getLocGroup = async (row, bay, callback) => {
await request.post('/map/shelf/group', {
row: row,
diff --git a/zy-acs-flow/src/map/insight/index.jsx b/zy-acs-flow/src/map/insight/index.jsx
index 8fcbcc8..be7a97f 100644
--- a/zy-acs-flow/src/map/insight/index.jsx
+++ b/zy-acs-flow/src/map/insight/index.jsx
@@ -39,7 +39,7 @@
}}>
<Stack direction="row" p={2} pt={3}>
<Typography variant="h6" flex="1">
- {title || translate('page.map.insight.title')}
+ {title || ''}
</Typography>
<IconButton onClick={handleClose} size="small">
<CloseIcon />
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java
index e8b4498..1ca13bb 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java
@@ -26,6 +26,7 @@
import com.zy.acs.manager.manager.mapper.MapMapper;
import com.zy.acs.manager.manager.service.*;
import com.zy.acs.manager.system.controller.BaseController;
+import com.zy.acs.manager.system.service.ConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
@@ -63,6 +64,15 @@
private SnowflakeIdWorker snowflakeIdWorker;
@Autowired
private LocService locService;
+ @Autowired
+ private ConfigService configService;
+
+ @PreAuthorize("hasAuthority('manager:loc:update')")
+ @PostMapping("/startupOrShutdown")
+ public synchronized R startupOrShutdown() {
+ Boolean taskAssignMode = configService.getVal("TaskAssignMode", Boolean.class);
+ return configService.setVal("TaskAssignMode", !taskAssignMode) ? R.ok() : R.error();
+ }
@PreAuthorize("hasAuthority('manager:loc:list')")
@PostMapping("/data/fetch")
@@ -82,6 +92,7 @@
// common
Map activeMap = mapMapper.selectActive(zoneId, floor);
return R.ok().add(Cools
+ .add("rcsStatus", configService.getVal("TaskAssignMode", Boolean.class))
.add("point", GsonUtils.toJson(mapCodeItems))
.add("common", activeMap.getData())
);
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/ConfigService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/ConfigService.java
index f8c45ba..8ede185 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/ConfigService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/ConfigService.java
@@ -7,4 +7,6 @@
<T> T getVal(String key, Class<T> clazz);
+ <T> boolean setVal(String key, T val);
+
}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/impl/ConfigServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/impl/ConfigServiceImpl.java
index 29230e8..2f65707 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/impl/ConfigServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/impl/ConfigServiceImpl.java
@@ -8,7 +8,6 @@
import com.zy.acs.manager.system.enums.ConfigType;
import com.zy.acs.manager.system.mapper.ConfigMapper;
import com.zy.acs.manager.system.service.ConfigService;
-import com.zy.acs.framework.exception.CoolException;
import org.springframework.stereotype.Service;
import java.util.Date;
@@ -57,4 +56,48 @@
}
}
+ @Override
+ public <T> boolean setVal(String key, T val) {
+ List<Config> list = this.list(new LambdaQueryWrapper<Config>().eq(Config::getFlag, key));
+ Config config = list.stream().findFirst().orElse(null);
+ if (config == null) {
+ return false;
+ }
+ ConfigType configType = ConfigType.query(config.getType());
+ switch (configType) {
+ case BOOLEAN:
+ if (!(val instanceof Boolean)) {
+ throw new IllegalArgumentException("Expected Boolean value for key: " + key);
+ }
+ config.setVal((Boolean) val ? "TRUE" : "FALSE");
+ break;
+ case NUMBER:
+ if (val instanceof Integer || val instanceof Short || val instanceof Long || val instanceof Double) {
+ config.setVal(String.valueOf(val));
+ } else {
+ throw new IllegalArgumentException("Expected a numeric value for key: " + key);
+ }
+ break;
+ case STRING:
+ if (!(val instanceof String)) {
+ throw new IllegalArgumentException("Expected a String value for key: " + key);
+ }
+ config.setVal((String) val);
+ break;
+ case JSON:
+ config.setVal(GsonUtils.toJson(val));
+ break;
+ case DATE:
+ if (!(val instanceof Date)) {
+ throw new IllegalArgumentException("Expected a Date value for key: " + key);
+ }
+ config.setVal(DateUtils.convert((Date) val));
+ break;
+ default:
+ throw new UnsupportedOperationException("Unsupported ConfigType: " + configType);
+ }
+
+ return this.updateById(config);
+ }
+
}
--
Gitblit v1.9.1