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