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