#
luxiaotao1123
2024-10-12 28647ecb12f0dc6558c0c299d99e9a450d97fa22
#
7个文件已修改
2个文件已添加
167 ■■■■■ 已修改文件
zy-acs-flow/src/i18n/en.js 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/i18n/zh.js 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/MapPage.jsx 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/http.js 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/tool.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/page/components/ConfirmButton.jsx 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/MapDataParam.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/MapItem.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/i18n/en.js
@@ -73,7 +73,7 @@
        msg: {
            confirm: {
                tip: 'Tip',
                desc: 'Are you sure you wanna do this?',
                desc: 'Are you sure you want to proceed?',
            },
        },
    },
@@ -629,6 +629,9 @@
                station: 'STATION',
                direction: 'DIRECTION',
            },
            action: {
                save: 'Save Map',
            },
            settings: {
                title: 'Settings',
                map: {
zy-acs-flow/src/i18n/zh.js
@@ -72,7 +72,7 @@
        msg: {
            confirm: {
                tip: '提示',
                desc: '你确定要操作此项吗?',
                desc: '您确定要执行此操作吗?',
            },
        },
    },
@@ -627,6 +627,9 @@
                station: '输送线',
                direction: '方向',
            },
            action: {
                save: '保存地图',
            },
            settings: {
                title: '设置',
                map: {
zy-acs-flow/src/map/MapPage.jsx
@@ -27,6 +27,7 @@
import Settings from "./settings";
import * as Http from './http';
import WebSocketClient from './websocket'
import ConfirmButton from "../page/components/ConfirmButton";
let player;
let websocket;
@@ -48,7 +49,12 @@
    const [settingsVisible, setSettingsVisible] = useState(false);
    const [spriteSettings, setSpriteSettings] = useState(null);
    const prevSpriteSettingsRef = React.useRef();
    const prevSpriteSettingsRef = useRef();
    const [curZone, setCurZone] = useState(() => {
        const storedValue = localStorage.getItem('curZone');
        return storedValue !== null ? JSON.parse(storedValue) : null;
    });
    useEffect(() => {
        Tool.patchRaLayout('0px');
@@ -250,6 +256,13 @@
                {mode === MapMode.SETTINGS_MODE && (
                    <>
                        <ConfirmButton
                            label="page.map.action.save"
                            variant="contained"
                            onConfirm={() => {
                                Http.saveMapData(curZone, mapContainer);
                            }}
                        />
                    </>
                )}
zy-acs-flow/src/map/http.js
@@ -1,5 +1,6 @@
import request from '@/utils/request';
import * as Tool from './tool';
import { DEVICE_TYPE } from './constants';
let notify;
@@ -9,7 +10,7 @@
export const fetchMapData = async (zoneId) => {
    Tool.clearMapData();
    await request.post('/map/data', {
    await request.post('/map/data/fetch', {
        zoneId: zoneId
    }, {
        headers: {
@@ -19,8 +20,6 @@
        const { code, msg, data } = res.data;
        if (code === 200) {
            const mapItemList = eval(data);
        } else {
            notify(msg, "error")
        }
        // mapItemList.forEach(item => {
@@ -52,10 +51,50 @@
        // })
    }).catch((error) => {
        notify(error.message, "error")
        notify.error(error.message);
        console.error(error.message);
    })
}
export const saveMapData = async (zone, mapContainer) => {
    if (!mapContainer) {
        return;
    }
    const sprites = [];
    mapContainer.children.forEach(child => {
        if (child.data?.uuid) {
            const { type, uuid, no, ...property } = child.data;
            if (type !== DEVICE_TYPE.AGV) {
                sprites.push({
                    // graph
                    positionX: child.position.x,
                    positionY: child.position.y,
                    scaleX: child.scale.x,
                    scaleY: child.scale.y,
                    rotation: Tool.rotationToNum(child.rotation),
                    // data
                    type: type,
                    uuid: uuid,
                    no: no,
                    property: property,
                })
            }
        }
    })
    await request.post('/map/data/save', {
        zoneId: zone,
        itemList: sprites
    }).then(res => {
        const { code, msg, data } = res.data;
        if (code === 200) {
            notify.success(msg);
        } else {
            notify.error(msg);
        }
    }).catch((error) => {
        notify.error(error.message);
        console.error(error.message);
    })
}
zy-acs-flow/src/map/tool.js
@@ -324,6 +324,20 @@
    effectHalfCircle.position.set(sprite.x, sprite.y);
}
export const rotationToNum = (rotation) => {
    let res = rotation * 180 / Math.PI;
    if (res < 0) {
        res += 360;
    } else if (res > 360) {
        res -= 360;
    }
    return res;
}
export const rotationParseNum = (num) => {
    return num * Math.PI / 180;
}
export const incrementSpriteNo = (str, incrementValue) => {
    const match = str.match(/(\D*)(\d+)/);
    if (match) {
zy-acs-flow/src/page/components/ConfirmButton.jsx
@@ -7,6 +7,7 @@
const ConfirmButton = (props) => {
    const { label, onConfirm, data, ...rest } = props;
    const translate = useTranslate();
    const buttonRef = useRef(null);
    const [open, setOpen] = useState(false);
    const handleClickOpen = (event) => {
@@ -27,12 +28,19 @@
    return (
        <>
            <Button
                ref={buttonRef}
                onClick={handleClickOpen}
                aria-label={translate(label)}
                {...rest}
            >
                {translate(label)}
            </Button>
            <Dialog open={open} onClose={handleClose}>
            <Dialog
                aria-labelledby="dialog-title"
                aria-describedby="dialog-description"
                open={open}
                onClose={handleClose}
            >
                <DialogTitle>{translate('common.msg.confirm.tip')}</DialogTitle>
                <DialogContent>
                    <DialogContentText>
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java
@@ -2,6 +2,8 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.framework.common.R;
import com.zy.acs.manager.common.domain.MapAgvDto;
import com.zy.acs.manager.common.domain.MapCodeDto;
import com.zy.acs.manager.common.domain.MapDto;
@@ -9,13 +11,12 @@
import com.zy.acs.manager.common.exception.BusinessException;
import com.zy.acs.manager.core.service.MapService;
import com.zy.acs.manager.core.service.floyd.FloydNavigateService;
import com.zy.acs.manager.manager.controller.param.MapDataParam;
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.service.*;
import com.zy.acs.manager.system.controller.BaseController;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.framework.common.R;
import com.zy.acs.manager.system.service.ConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -56,12 +57,19 @@
    @PreAuthorize("hasAuthority('manager:loc:list')")
    @PostMapping("/data")
    public R mapData(@RequestParam(required = false) Long zoneId) {
    @PostMapping("/data/fetch")
    public R fetch(@RequestParam(required = false) Long zoneId) {
        String mapData = configService.getVal("mapData", String.class);
        return R.ok().add(mapData);
    }
    @PreAuthorize("hasAuthority('manager:loc:update')")
    @PostMapping("/data/save")
    public R save(@RequestBody MapDataParam param) {
        return R.ok("Save Success");
    }
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/MapDataParam.java
New file
@@ -0,0 +1,19 @@
package com.zy.acs.manager.manager.controller.param;
import com.zy.acs.manager.manager.entity.MapItem;
import lombok.Data;
import java.util.List;
/**
 * Created by vincent on 3/15/2024
 */
@Data
public class MapDataParam {
    private Long zoneId;
    private List<MapItem> itemList;
}
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/MapItem.java
New file
@@ -0,0 +1,36 @@
package com.zy.acs.manager.manager.entity;
import lombok.Data;
import java.util.Map;
/**
 * Created by vincent on 3/15/2024
 */
@Data
public class MapItem {
    // data ------------------------------------------
    private String type;
    private String uuid;
    private String no;
    // dynamical data
    private Map<String, Object> property;
    // graph -----------------------------------------
    private Double positionX;
    private Double positionY;
    private Double scaleX;
    private Double scaleY;
    private Double rotation;
}