From 70a47fd91119a6b40147b8bf094ec70f09a998e3 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 12 十月 2024 14:35:34 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/map/http.js | 63 +++++-----
zy-acs-manager/src/main/java/com/zy/acs/manager/common/CodeBuilder.java | 4
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/MapDataParam.java | 2
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/MapMapper.java | 15 ++
zy-acs-manager/src/main/resources/mapper/manager/MapMapper.xml | 29 ++++
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java | 43 ++++++-
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Map.java | 140 +++++++++++++++++++++++
zy-acs-flow/src/map/MapPage.jsx | 5
8 files changed, 259 insertions(+), 42 deletions(-)
diff --git a/zy-acs-flow/src/map/MapPage.jsx b/zy-acs-flow/src/map/MapPage.jsx
index cf185ce..613becc 100644
--- a/zy-acs-flow/src/map/MapPage.jsx
+++ b/zy-acs-flow/src/map/MapPage.jsx
@@ -66,9 +66,10 @@
Tool.setMapContainer(player.mapContainer);
Tool.setThemeMode(themeMode);
Http.setNotify(notify);
+ Http.setMapContainer(player.mapContainer);
// websocket = new WebSocketClient('/ws/map/websocket');
- await Http.fetchMapData(0);
+ await Http.fetchMapData();
// websocket.connect();
// websocket.onMessage = (data) => {
// Tool.updateMapStatusInRealTime(data, () => curFloorRef.current, setCurSPrite);
@@ -260,7 +261,7 @@
label="page.map.action.save"
variant="contained"
onConfirm={() => {
- Http.saveMapData(curZone, mapContainer);
+ Http.saveMapData(curZone);
}}
/>
</>
diff --git a/zy-acs-flow/src/map/http.js b/zy-acs-flow/src/map/http.js
index aea7868..89d6129 100644
--- a/zy-acs-flow/src/map/http.js
+++ b/zy-acs-flow/src/map/http.js
@@ -3,9 +3,14 @@
import { DEVICE_TYPE } from './constants';
let notify;
+let mapContainer;
export function setNotify(param) {
notify = param;
+}
+
+export function setMapContainer(param) {
+ mapContainer = param;
}
export const fetchMapData = async (zoneId) => {
@@ -17,46 +22,42 @@
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then((res) => {
- const { code, msg, data } = res.data;
+ const { code, msg, data: { data } } = res.data;
if (code === 200) {
const mapItemList = eval(data);
+ mapItemList.forEach(item => {
+ if (item.type !== DEVICE_TYPE.AGV) {
+ const sprite = Tool.generateSprite(item.type);
+ if (sprite) {
+ Tool.initSprite(sprite, item.type);
+ // data
+ sprite.data.uuid = item.uuid;
+ sprite.data.no = item.no;
+
+ // dynamical data
+ Object.assign(sprite.data, item.property);
+
+ // graph
+ setTimeout(() => {
+ sprite.position.set(item.positionX, item.positionY);
+ sprite.scale.set(item.scaleX, item.scaleY);
+ sprite.rotation = Tool.rotationParseNum(item.rotation);
+ }, 50);
+
+ mapContainer.addChild(sprite);
+ }
+ }
+ })
+ } else {
+ notify.error(msg);
}
-
- // mapItemList.forEach(item => {
- // if (!(
- // item.type === SENSOR_TYPE.SHUTTLE
- // || item.type === SENSOR_TYPE.AGV
- // )) {
- // const sprite = generateSprite(item.type);
- // if (sprite) {
- // initSprite(sprite, item.type);
- // // data
- // sprite.data.uuid = item.uuid;
- // sprite.data.no = item.no;
-
- // // dynamical data
- // Object.assign(sprite.data, item.property);
-
- // showSheflType(sprite);
- // // graph
- // setTimeout(() => {
- // sprite.position.set(item.positionX, item.positionY);
- // sprite.scale.set(item.scaleX, item.scaleY);
- // sprite.rotation = rotationParseNum(item.rotation);
- // }, 50);
-
- // mapContainer.addChild(sprite);
- // }
- // }
- // })
-
}).catch((error) => {
notify.error(error.message);
console.error(error.message);
})
}
-export const saveMapData = async (zone, mapContainer) => {
+export const saveMapData = async (zone) => {
if (!mapContainer) {
return;
}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/CodeBuilder.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/CodeBuilder.java
index 7f02d91..3dc1241 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/CodeBuilder.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/CodeBuilder.java
@@ -22,8 +22,8 @@
// generator.username="sa";
// generator.password="Zoneyung@zy56$";
- generator.table="man_action";
- generator.tableDesc="Action";
+ generator.table="man_map";
+ generator.tableDesc="Map";
generator.packagePath="com.zy.acs.manager.manager";
generator.build();
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 2861c4d..69f147e 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,8 +2,11 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.acs.common.utils.GsonUtils;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.framework.common.R;
+import com.zy.acs.framework.common.SnowflakeIdWorker;
+import com.zy.acs.framework.exception.CoolException;
import com.zy.acs.manager.common.domain.MapAgvDto;
import com.zy.acs.manager.common.domain.MapCodeDto;
import com.zy.acs.manager.common.domain.MapDto;
@@ -15,6 +18,7 @@
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.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;
@@ -51,21 +55,46 @@
private MapService mapService;
@Autowired
private ConfigService configService;
-
-
-
-
+ @Autowired
+ private MapMapper mapMapper;
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
@PreAuthorize("hasAuthority('manager:loc:list')")
@PostMapping("/data/fetch")
- public R fetch(@RequestParam(required = false) Long zoneId) {
- String mapData = configService.getVal("mapData", String.class);
- return R.ok().add(mapData);
+ public R fetch(@RequestParam(required = false) Long zoneId, @RequestParam(required = false) Integer floor) {
+ Map activeMap = mapMapper.selectActive(zoneId, floor);
+ return R.ok().add(activeMap);
}
@PreAuthorize("hasAuthority('manager:loc:update')")
@PostMapping("/data/save")
+ @Transactional
public R save(@RequestBody MapDataParam param) {
+ Date now = new Date();
+ Long userId = getLoginUserId();
+ // previous
+ Map previousMap = mapMapper.selectActive(param.getZoneId(), param.getFloor());
+ if (null != previousMap) {
+ previousMap.setActive(0);
+ previousMap.setUpdateTime(now);
+ previousMap.setUpdateBy(userId);
+ if (0 == mapMapper.updateById(previousMap)) {
+ throw new CoolException("Save Fail");
+ }
+ }
+ // current
+ Map map = new Map();
+ map.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3));
+ map.setZoneId(param.getZoneId());
+ map.setFloor(param.getFloor());
+ map.setData(GsonUtils.toJson(param.getItemList()));
+ map.setActive(1);
+ map.setUpdateBy(userId);
+ map.setCreateBy(userId);
+ if (0 == mapMapper.insert(map)) {
+ throw new CoolException("Save Fail");
+ }
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
index 1b1b1b0..7526107 100644
--- 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
@@ -14,6 +14,8 @@
private Long zoneId;
+ private Integer floor;
+
private List<MapItem> itemList;
}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Map.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Map.java
new file mode 100644
index 0000000..984c0b7
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Map.java
@@ -0,0 +1,140 @@
+package com.zy.acs.manager.manager.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("man_map")
+public class Map implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @ApiModelProperty(value= "ID")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 缂栧彿
+ */
+ @ApiModelProperty(value= "缂栧彿")
+ private String uuid;
+
+ /**
+ * 搴撳尯
+ */
+ @ApiModelProperty(value= "搴撳尯")
+ private Long zoneId;
+
+ /**
+ * 鎵�鍦ㄥ眰
+ */
+ @ApiModelProperty(value= "鎵�鍦ㄥ眰")
+ private Integer floor;
+
+ /**
+ * 鐗堟湰
+ */
+ @ApiModelProperty(value= "鐗堟湰")
+ private String version;
+
+ /**
+ * 鏁版嵁鍐呭
+ */
+ @ApiModelProperty(value= "鏁版嵁鍐呭")
+ private String data;
+
+ /**
+ * 婵�娲� 1: 鏄� 0: 鍚�
+ */
+ @ApiModelProperty(value= "婵�娲� 1: 鏄� 0: 鍚� ")
+ private Integer active;
+
+ /**
+ * 鐘舵�� 1: 姝e父 0: 鍐荤粨
+ */
+ @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 鍐荤粨 ")
+ private Integer status;
+
+ /**
+ * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
+ */
+ @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ")
+ @TableLogic
+ private Integer deleted;
+
+ /**
+ * 绉熸埛
+ */
+ @ApiModelProperty(value= "绉熸埛")
+ private Integer tenantId;
+
+ /**
+ * 娣诲姞浜哄憳
+ */
+ @ApiModelProperty(value= "娣诲姞浜哄憳")
+ private Long createBy;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 淇敼浜哄憳
+ */
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ private Long updateBy;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ public Map() {}
+
+ public Boolean getActiveBool(){
+ if (null == this.active){ return null; }
+ switch (this.active){
+ case 1:
+ return true;
+ case 0:
+ return false;
+ default:
+ return null;
+ }
+ }
+
+ public Boolean getStatusBool(){
+ if (null == this.status){ return null; }
+ switch (this.status){
+ case 1:
+ return true;
+ case 0:
+ return false;
+ default:
+ return null;
+ }
+ }
+
+}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/MapMapper.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/MapMapper.java
new file mode 100644
index 0000000..ee226d5
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/MapMapper.java
@@ -0,0 +1,15 @@
+package com.zy.acs.manager.manager.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zy.acs.manager.manager.entity.Map;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface MapMapper extends BaseMapper<Map> {
+
+ Map selectActive(@Param("zoneId") Long zoneId, @Param("floor") Integer floor);
+
+}
diff --git a/zy-acs-manager/src/main/resources/mapper/manager/MapMapper.xml b/zy-acs-manager/src/main/resources/mapper/manager/MapMapper.xml
new file mode 100644
index 0000000..9136982
--- /dev/null
+++ b/zy-acs-manager/src/main/resources/mapper/manager/MapMapper.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.acs.manager.manager.mapper.MapMapper">
+
+ <select id="selectActive" resultType="com.zy.acs.manager.manager.entity.Map">
+ select * from man_map
+ where 1=1
+ and active = 1
+ <choose>
+ <when test="zoneId != null">
+ and zone_id = #{zoneId}
+ </when>
+ <otherwise>
+ and zone_id IS NULL
+ </otherwise>
+ </choose>
+ <choose>
+ <when test="floor != null">
+ and floor = #{floor}
+ </when>
+ <otherwise>
+ and floor IS NULL
+ </otherwise>
+ </choose>
+ order by create_time desc
+ limit 0, 1
+ </select>
+
+</mapper>
--
Gitblit v1.9.1