zy-acs-flow/src/map/MapPage.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-flow/src/map/http.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-manager/src/main/java/com/zy/acs/manager/common/CodeBuilder.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/MapDataParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Map.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/MapMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-manager/src/main/resources/mapper/manager/MapMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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); }} /> </> 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); } // 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); // } // } // }) } }) } else { notify.error(msg); } }).catch((error) => { notify.error(error.message); console.error(error.message); }) } export const saveMapData = async (zone, mapContainer) => { export const saveMapData = async (zone) => { if (!mapContainer) { return; } 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(); 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"); } 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; } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Map.java
New file @@ -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: 正常 0: 冻结 */ @ApiModelProperty(value= "状态 1: 正常 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; } } } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/MapMapper.java
New file @@ -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); } zy-acs-manager/src/main/resources/mapper/manager/MapMapper.xml
New file @@ -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>