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