#
Junjie
2024-06-22 7b5ea29f32106ea9b0105063cd74adeb25736e98
#
8个文件已修改
1个文件已添加
203 ■■■■■ 已修改文件
zy-asrs-flow/src/pages/deviceConfig/basConveyorSta/components/edit.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/deviceConfig/basConveyorSta/index.jsx 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/map/components/configSettings.jsx 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/map/utils.js 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/BasConveyorSta.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/entity/MapWsVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/websocket/MapRealTimeDataScheduler.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/SiteStatusType.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateSolution.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/deviceConfig/basConveyorSta/components/edit.jsx
@@ -217,6 +217,11 @@
                            label="四向穿梭车所识别的二维码"
                            colProps={{ md: 12, xl: 12 }}
                        />
                        <ProFormText
                            name="taskNo"
                            label="工作号"
                            colProps={{ md: 12, xl: 12 }}
                        />
                    </ProForm.Group>
                </ProForm>
zy-asrs-flow/src/pages/deviceConfig/basConveyorSta/index.jsx
@@ -224,6 +224,19 @@
            />,
        },
        {
            title: '工作号',
            dataIndex: 'taskNo',
            valueType: 'text',
            hidden: false,
            width: 140,
            filterDropdown: (props) => <TextFilter
                name='taskNo'
                {...props}
                actionRef={actionRef}
                setSearchParam={setSearchParam}
            />,
        },
        {
            title: '可入(checkBox)',
            dataIndex: 'inEnable',
            valueType: 'text',
zy-asrs-flow/src/pages/map/components/configSettings.jsx
@@ -14,6 +14,7 @@
    const { curSprite, configForm: form } = props;
    const [showLiftNoItem, setShowLiftNoItem] = React.useState(false);
    const [showConveyorNoItem, setShowConveyorNoItem] = React.useState(false);
    useEffect(() => {
        form.resetFields();
@@ -23,6 +24,7 @@
                ...curSprite.data
            })
            setShowLiftNoItem(form.getFieldValue('shelfType') === Utils.SHELF_TYPE.LIFT);
            setShowConveyorNoItem(form.getFieldValue('shelfType') === Utils.SHELF_TYPE.CONVEYOR);
        }
    }, [props, form]);
@@ -83,6 +85,7 @@
                        case 'shelfType':
                            const shelfType = form.getFieldValue('shelfType');
                            setShowLiftNoItem(shelfType === Utils.SHELF_TYPE.LIFT);
                            setShowConveyorNoItem(shelfType === Utils.SHELF_TYPE.CONVEYOR);
                            break;
                        default:
                            break;
@@ -229,6 +232,10 @@
                                        value: Utils.SHELF_TYPE.CHARGE
                                    },
                                    {
                                        label: intl.formatMessage({ id: 'map.settings.shelf.conveyor', defaultMessage: '输送线' }),
                                        value: Utils.SHELF_TYPE.CONVEYOR
                                    },
                                    {
                                        label: intl.formatMessage({ id: 'map.settings.shelf.diable', defaultMessage: '禁用' }),
                                        value: Utils.SHELF_TYPE.DISABLE
                                    },
@@ -256,6 +263,26 @@
                            </>
                        )}
                        {showConveyorNoItem && (
                            <>
                                <Form.Item
                                    name='conveyorNo'
                                    label={intl.formatMessage({ id: 'map.settings.conveyor.no', defaultMessage: '输送站号' })}
                                    rules={[
                                        {
                                            required: true,
                                        },
                                    ]}
                                >
                                    <InputNumber
                                        style={{
                                            width: '50%',
                                        }}
                                    />
                                </Form.Item>
                            </>
                        )}
                        <Form.Item
                            label={intl.formatMessage({ id: 'map.settings.shelf.space', defaultMessage: '间距' })}
                        >
zy-asrs-flow/src/pages/map/utils.js
@@ -59,6 +59,7 @@
    TRACK: 3,
    LIFT: 67,
    CHARGE: 5,
    CONVEYOR: 4,
    DISABLE: -1,
})
@@ -562,6 +563,9 @@
        case SHELF_TYPE.CHARGE:
            showColor = '#D4EFDF';
            break;
        case SHELF_TYPE.CONVEYOR:
            showColor = '#54FF9F';
            break;
        case SHELF_TYPE.DISABLE:
            showColor = '#ffc8c8';
            break;
@@ -621,6 +625,7 @@
    }
    showLockPath(mapVo.lockPath, curFloor, setCurSPrite);
    showConveyorSta(mapVo.conveyorSta, curFloor, setCurSPrite);
}
export const drawTravelPath = (shuttleVo, curFloor) => {
@@ -697,7 +702,7 @@
    pathLine.zIndex = SENSOR_ZINDEX.TRAVEL_PATH;
    let firstNode = true;
    for(let i = 0; i < nodes.length; i++) {
    for (let i = 0; i < nodes.length; i++) {
        const node = nodes[i];
        if (node.z !== curFloor) { continue }
        const shelf = querySprite(SENSOR_TYPE.SHELF, node.x + '-' + node.y);
@@ -712,8 +717,67 @@
        } else {
            pathLine.lineTo(x, y);
        }
    }
    mapContainer.addChild(pathLine);
}
export const showConveyorSta = (conveyorSta, curFloor, setCurSPrite) => {
    for (let i = 0; i < conveyorSta.length; i++) {
        const sta = conveyorSta[i];
        if (!sta.locNo) { continue }
        const { row, bay, lev } = parseLocNo(sta.locNo);
        if (Number(lev) !== curFloor) { continue }
        const sprite = querySprite(SENSOR_TYPE.SHELF, row + '-' + bay);
        if (!sprite) { continue }
        if (sprite.data.conveyorNo !== sta.siteNo) { continue }
        const conveyorName = 'conveyorSta-' + sprite.data.conveyorNo;
        let conveyorChild = sprite.getChildByName(conveyorName);
        if (conveyorChild) {
            sprite.removeChild(conveyorChild);
        }
        let textColor;
        let staText;
        let positionX = -11;
        let positionY = -6;
        if (sta.siteStatusType$ == 'site-auto-run') {
            textColor = 0xfa51f6;
            staText = sprite.data.conveyorNo;
        } else if (sta.siteStatusType$ == 'site-unauto') {
            textColor = 0xb8b8b8;
            staText = sprite.data.conveyorNo;
        } else if (sta.siteStatusType$ == 'site-auto-id') {
            textColor = 0xc4c40;
            staText = sprite.data.conveyorNo + '(' + sta.taskNo + ')';
            positionX = -20;
            positionY = -6;
        } else if (sta.siteStatusType$ == 'site-auto-run-id') {
            textColor = 0xfc3030;
            staText = sprite.data.conveyorNo + '(' + sta.taskNo + ')';
            positionX = -20;
            positionY = -6;
        }else {
            textColor = '#54FF9F';
            staText = sprite.data.conveyorNo;
        }
        const text = new PIXI.Text(staText, {
            fill: 0x000000,
            fontSize: 13,
            fontFamily: 'MicrosoftYaHei',
        });
        text.name = conveyorName;
        text.position.set(positionX, positionY);
        sprite.addChild(text);
        sprite.textObj = text;
        sprite.tint = textColor;
        // sprite.tint = showColor;
        // let position = shelf.position;
        // let x = position.x;
        // let y = position.y;
        // conveyorChild.lineTo(x, y);
    }
}
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/BasConveyorSta.java
@@ -3,6 +3,7 @@
import java.text.SimpleDateFormat;
import java.util.Date;
import com.zy.asrs.wcs.core.model.enums.SiteStatusType;
import com.zy.asrs.wcs.core.service.BasConveyorService;
import com.zy.asrs.wcs.rcs.model.enums.WorkModeType;
import com.zy.asrs.wcs.system.entity.Host;
@@ -341,5 +342,9 @@
        return null;
    }
    public String getSiteStatusType$() {
        String siteStatus = String.valueOf(SiteStatusType.process(this));
        return siteStatus.toLowerCase().replaceAll("_", "-");
    }
}
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/entity/MapWsVo.java
@@ -1,5 +1,6 @@
package com.zy.asrs.wcs.core.map.entity;
import com.zy.asrs.wcs.core.entity.BasConveyorSta;
import com.zy.asrs.wcs.core.model.NavigateNode;
import lombok.Data;
@@ -16,4 +17,6 @@
    private List<NavigateNode> lockPath = new ArrayList<>();
    private List<BasConveyorSta> conveyorSta = new ArrayList<>();
}
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/websocket/MapRealTimeDataScheduler.java
@@ -4,11 +4,13 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.wcs.core.entity.BasConveyorSta;
import com.zy.asrs.wcs.core.entity.BasShuttle;
import com.zy.asrs.wcs.core.map.entity.MapWsShuttleVo;
import com.zy.asrs.wcs.core.map.entity.MapWsVo;
import com.zy.asrs.wcs.core.model.NavigateNode;
import com.zy.asrs.wcs.core.model.enums.DeviceCtgType;
import com.zy.asrs.wcs.core.service.BasConveyorStaService;
import com.zy.asrs.wcs.core.service.BasShuttleService;
import com.zy.asrs.wcs.core.utils.NavigateMapUtils;
import com.zy.asrs.wcs.core.utils.Utils;
@@ -46,6 +48,8 @@
    private DictService dictService;
    @Autowired
    private NavigateMapUtils navigateMapUtils;
    @Autowired
    private BasConveyorStaService basConveyorStaService;
    @Scheduled(cron = "0/1 * * * * ? ")
    public void sync() {
@@ -53,6 +57,7 @@
        // shuttle
        wsVo.setShuttleVos(syncShuttle());
        wsVo.setLockPath(getMapLocPath());
        wsVo.setConveyorSta(getMapConveyorSta());
        MapWebSocket.broadcast(JSON.toJSONString(wsVo));
    }
@@ -117,4 +122,8 @@
        return navigateNodes;
    }
    private List<BasConveyorSta> getMapConveyorSta() {
        return basConveyorStaService.list();
    }
}
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/SiteStatusType.java
New file
@@ -0,0 +1,71 @@
package com.zy.asrs.wcs.core.model.enums;
import com.zy.asrs.wcs.core.entity.BasConveyorSta;
import com.zy.asrs.wcs.rcs.model.protocol.StaProtocol;
/**
 * 站点状态枚举
 */
public enum SiteStatusType {
    // 自动
    SITE_AUTO,
    // 非自动
    SITE_UNAUTO,
    // 自动+有物+ID
    SITE_AUTO_RUN_ID,
    // 自动+有物
    SITE_AUTO_RUN,
    // 自动+ID
    SITE_AUTO_ID,
    ;
    public static SiteStatusType process(StaProtocol staProtocol){
        if (staProtocol == null) {
            return null;
        }
        if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0) {
            return SITE_AUTO_RUN_ID;
        }
        if (staProtocol.isAutoing() && staProtocol.isLoading()) {
            return SITE_AUTO_RUN;
        }
        if (staProtocol.isAutoing() && staProtocol.getWorkNo() > 0) {
            return SITE_AUTO_ID;
        }
        if (staProtocol.isAutoing()) {
            return SITE_AUTO;
        }
        if (!staProtocol.isAutoing()) {
            return SITE_UNAUTO;
        }
        return null;
    }
    public static SiteStatusType process(BasConveyorSta basConveyorSta){
        if (basConveyorSta == null) {
            return SITE_UNAUTO;
        }
        if (basConveyorSta.getAutoing() == null || basConveyorSta.getLoading() == null || basConveyorSta.getTaskNo() == null) {
            return SITE_UNAUTO;
        }
        if (basConveyorSta.getAutoing().equals("Y") && basConveyorSta.getLoading().equals("Y") && basConveyorSta.getTaskNo() > 0) {
            return SITE_AUTO_RUN_ID;
        }
        if (basConveyorSta.getAutoing().equals("Y") && basConveyorSta.getLoading().equals("Y")) {
            return SITE_AUTO_RUN;
        }
        if (basConveyorSta.getAutoing().equals("Y") && basConveyorSta.getTaskNo() > 0) {
            return SITE_AUTO_ID;
        }
        if (basConveyorSta.getAutoing().equals("Y")) {
            return SITE_AUTO;
        }
        if (!basConveyorSta.getAutoing().equals("Y")) {
            return SITE_UNAUTO;
        }
        return SITE_UNAUTO;
    }
}
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateSolution.java
@@ -17,7 +17,7 @@
 */
public class NavigateSolution {
    // -1 -> 墙壁, 0 -> 货位, 1 -> 起点  2 -> 终点  3-> 母轨  4->站点
    // -1 -> 墙壁, 0 -> 货位, 1 -> 起点  2 -> 终点  3-> 母轨  4->输送站点  5->充电桩  66->小车  67->提升机
    int[][] map = {{}};