#
luxiaotao1123
2024-10-12 70a47fd91119a6b40147b8bf094ec70f09a998e3
#
5个文件已修改
3个文件已添加
301 ■■■■ 已修改文件
zy-acs-flow/src/map/MapPage.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/http.js 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/common/CodeBuilder.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/MapDataParam.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Map.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/MapMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/resources/mapper/manager/MapMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | 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>