From 28647ecb12f0dc6558c0c299d99e9a450d97fa22 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 12 十月 2024 13:50:12 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/map/http.js | 47 ++++++++++++++-
zy-acs-flow/src/i18n/en.js | 5 +
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/MapDataParam.java | 19 ++++++
zy-acs-flow/src/map/tool.js | 14 ++++
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/MapItem.java | 36 ++++++++++++
zy-acs-flow/src/i18n/zh.js | 5 +
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java | 16 ++++-
zy-acs-flow/src/map/MapPage.jsx | 15 ++++
zy-acs-flow/src/page/components/ConfirmButton.jsx | 10 +++
9 files changed, 155 insertions(+), 12 deletions(-)
diff --git a/zy-acs-flow/src/i18n/en.js b/zy-acs-flow/src/i18n/en.js
index abbbd94..42823d1 100644
--- a/zy-acs-flow/src/i18n/en.js
+++ b/zy-acs-flow/src/i18n/en.js
@@ -73,7 +73,7 @@
msg: {
confirm: {
tip: 'Tip',
- desc: 'Are you sure you wanna do this?',
+ desc: 'Are you sure you want to proceed?',
},
},
},
@@ -629,6 +629,9 @@
station: 'STATION',
direction: 'DIRECTION',
},
+ action: {
+ save: 'Save Map',
+ },
settings: {
title: 'Settings',
map: {
diff --git a/zy-acs-flow/src/i18n/zh.js b/zy-acs-flow/src/i18n/zh.js
index 7b893b2..b0bbe0f 100644
--- a/zy-acs-flow/src/i18n/zh.js
+++ b/zy-acs-flow/src/i18n/zh.js
@@ -72,7 +72,7 @@
msg: {
confirm: {
tip: '鎻愮ず',
- desc: '浣犵‘瀹氳鎿嶄綔姝ら」鍚�?',
+ desc: '鎮ㄧ‘瀹氳鎵ц姝ゆ搷浣滃悧锛�',
},
},
},
@@ -627,6 +627,9 @@
station: '杈撻�佺嚎',
direction: '鏂瑰悜',
},
+ action: {
+ save: '淇濆瓨鍦板浘',
+ },
settings: {
title: '璁剧疆',
map: {
diff --git a/zy-acs-flow/src/map/MapPage.jsx b/zy-acs-flow/src/map/MapPage.jsx
index 2e50171..cf185ce 100644
--- a/zy-acs-flow/src/map/MapPage.jsx
+++ b/zy-acs-flow/src/map/MapPage.jsx
@@ -27,6 +27,7 @@
import Settings from "./settings";
import * as Http from './http';
import WebSocketClient from './websocket'
+import ConfirmButton from "../page/components/ConfirmButton";
let player;
let websocket;
@@ -48,7 +49,12 @@
const [settingsVisible, setSettingsVisible] = useState(false);
const [spriteSettings, setSpriteSettings] = useState(null);
- const prevSpriteSettingsRef = React.useRef();
+ const prevSpriteSettingsRef = useRef();
+
+ const [curZone, setCurZone] = useState(() => {
+ const storedValue = localStorage.getItem('curZone');
+ return storedValue !== null ? JSON.parse(storedValue) : null;
+ });
useEffect(() => {
Tool.patchRaLayout('0px');
@@ -250,6 +256,13 @@
{mode === MapMode.SETTINGS_MODE && (
<>
+ <ConfirmButton
+ label="page.map.action.save"
+ variant="contained"
+ onConfirm={() => {
+ Http.saveMapData(curZone, mapContainer);
+ }}
+ />
</>
)}
diff --git a/zy-acs-flow/src/map/http.js b/zy-acs-flow/src/map/http.js
index 7cdea35..aea7868 100644
--- a/zy-acs-flow/src/map/http.js
+++ b/zy-acs-flow/src/map/http.js
@@ -1,5 +1,6 @@
import request from '@/utils/request';
import * as Tool from './tool';
+import { DEVICE_TYPE } from './constants';
let notify;
@@ -9,7 +10,7 @@
export const fetchMapData = async (zoneId) => {
Tool.clearMapData();
- await request.post('/map/data', {
+ await request.post('/map/data/fetch', {
zoneId: zoneId
}, {
headers: {
@@ -19,8 +20,6 @@
const { code, msg, data } = res.data;
if (code === 200) {
const mapItemList = eval(data);
- } else {
- notify(msg, "error")
}
// mapItemList.forEach(item => {
@@ -52,10 +51,50 @@
// })
}).catch((error) => {
- notify(error.message, "error")
+ notify.error(error.message);
console.error(error.message);
})
}
+export const saveMapData = async (zone, mapContainer) => {
+ if (!mapContainer) {
+ return;
+ }
+ const sprites = [];
+ mapContainer.children.forEach(child => {
+ if (child.data?.uuid) {
+ const { type, uuid, no, ...property } = child.data;
+ if (type !== DEVICE_TYPE.AGV) {
+ sprites.push({
+ // graph
+ positionX: child.position.x,
+ positionY: child.position.y,
+ scaleX: child.scale.x,
+ scaleY: child.scale.y,
+ rotation: Tool.rotationToNum(child.rotation),
+ // data
+ type: type,
+ uuid: uuid,
+ no: no,
+ property: property,
+ })
+ }
+ }
+ })
+ await request.post('/map/data/save', {
+ zoneId: zone,
+ itemList: sprites
+ }).then(res => {
+ const { code, msg, data } = res.data;
+ if (code === 200) {
+ notify.success(msg);
+ } else {
+ notify.error(msg);
+ }
+ }).catch((error) => {
+ notify.error(error.message);
+ console.error(error.message);
+ })
+}
diff --git a/zy-acs-flow/src/map/tool.js b/zy-acs-flow/src/map/tool.js
index 7bcd534..04a40b6 100644
--- a/zy-acs-flow/src/map/tool.js
+++ b/zy-acs-flow/src/map/tool.js
@@ -324,6 +324,20 @@
effectHalfCircle.position.set(sprite.x, sprite.y);
}
+export const rotationToNum = (rotation) => {
+ let res = rotation * 180 / Math.PI;
+ if (res < 0) {
+ res += 360;
+ } else if (res > 360) {
+ res -= 360;
+ }
+ return res;
+}
+
+export const rotationParseNum = (num) => {
+ return num * Math.PI / 180;
+}
+
export const incrementSpriteNo = (str, incrementValue) => {
const match = str.match(/(\D*)(\d+)/);
if (match) {
diff --git a/zy-acs-flow/src/page/components/ConfirmButton.jsx b/zy-acs-flow/src/page/components/ConfirmButton.jsx
index 595c6fd..e39fe98 100644
--- a/zy-acs-flow/src/page/components/ConfirmButton.jsx
+++ b/zy-acs-flow/src/page/components/ConfirmButton.jsx
@@ -7,6 +7,7 @@
const ConfirmButton = (props) => {
const { label, onConfirm, data, ...rest } = props;
const translate = useTranslate();
+ const buttonRef = useRef(null);
const [open, setOpen] = useState(false);
const handleClickOpen = (event) => {
@@ -27,12 +28,19 @@
return (
<>
<Button
+ ref={buttonRef}
onClick={handleClickOpen}
+ aria-label={translate(label)}
{...rest}
>
{translate(label)}
</Button>
- <Dialog open={open} onClose={handleClose}>
+ <Dialog
+ aria-labelledby="dialog-title"
+ aria-describedby="dialog-description"
+ open={open}
+ onClose={handleClose}
+ >
<DialogTitle>{translate('common.msg.confirm.tip')}</DialogTitle>
<DialogContent>
<DialogContentText>
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 a31ff55..2861c4d 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
@@ -2,6 +2,8 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.acs.framework.common.Cools;
+import com.zy.acs.framework.common.R;
import com.zy.acs.manager.common.domain.MapAgvDto;
import com.zy.acs.manager.common.domain.MapCodeDto;
import com.zy.acs.manager.common.domain.MapDto;
@@ -9,13 +11,12 @@
import com.zy.acs.manager.common.exception.BusinessException;
import com.zy.acs.manager.core.service.MapService;
import com.zy.acs.manager.core.service.floyd.FloydNavigateService;
+import com.zy.acs.manager.manager.controller.param.MapDataParam;
import com.zy.acs.manager.manager.controller.param.MapParam;
import com.zy.acs.manager.manager.entity.*;
import com.zy.acs.manager.manager.enums.AgvStsType;
import com.zy.acs.manager.manager.service.*;
import com.zy.acs.manager.system.controller.BaseController;
-import com.zy.acs.framework.common.Cools;
-import com.zy.acs.framework.common.R;
import com.zy.acs.manager.system.service.ConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -56,12 +57,19 @@
@PreAuthorize("hasAuthority('manager:loc:list')")
- @PostMapping("/data")
- public R mapData(@RequestParam(required = false) Long zoneId) {
+ @PostMapping("/data/fetch")
+ public R fetch(@RequestParam(required = false) Long zoneId) {
String mapData = configService.getVal("mapData", String.class);
return R.ok().add(mapData);
}
+ @PreAuthorize("hasAuthority('manager:loc:update')")
+ @PostMapping("/data/save")
+ public R save(@RequestBody MapDataParam param) {
+ return R.ok("Save Success");
+ }
+
+
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/MapDataParam.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/MapDataParam.java
new file mode 100644
index 0000000..1b1b1b0
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/MapDataParam.java
@@ -0,0 +1,19 @@
+package com.zy.acs.manager.manager.controller.param;
+
+import com.zy.acs.manager.manager.entity.MapItem;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * Created by vincent on 3/15/2024
+ */
+@Data
+public class MapDataParam {
+
+ private Long zoneId;
+
+ private List<MapItem> itemList;
+
+}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/MapItem.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/MapItem.java
new file mode 100644
index 0000000..76deb26
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/MapItem.java
@@ -0,0 +1,36 @@
+package com.zy.acs.manager.manager.entity;
+
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * Created by vincent on 3/15/2024
+ */
+@Data
+public class MapItem {
+
+ // data ------------------------------------------
+
+ private String type;
+
+ private String uuid;
+
+ private String no;
+
+ // dynamical data
+ private Map<String, Object> property;
+
+ // graph -----------------------------------------
+
+ private Double positionX;
+
+ private Double positionY;
+
+ private Double scaleX;
+
+ private Double scaleY;
+
+ private Double rotation;
+
+}
--
Gitblit v1.9.1