luxiaotao1123
2024-04-09 3bb8c58c42badd5768cacfda3c9a5ccce9136e4e
Merge branch 'Four-Way-Rack' of http://47.97.1.152:5880/r/zy-asrs-master into Four-Way-Rack
4个文件已修改
1个文件已添加
123 ■■■■ 已修改文件
zy-asrs-flow/src/pages/device/shuttle/index.jsx 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/ShuttleMoveLocParam.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/DeviceTimer.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/device/shuttle/index.jsx
@@ -13,6 +13,11 @@
    const [openOpera, setOpenOpera] = useState(false);
    const [currentData, setCurrentData] = useState(null);
    const [targetLoc, setTargetLoc] = useState("");
    const [xStart, setXStart] = useState(1);
    const [xTarget, setXTarget] = useState(1);
    const [yStart, setYStart] = useState(1);
    const [yTarget, setYTarget] = useState(1);
    const [moveLocType, setMoveLocType] = useState(1);
    useEffect(() => {
        var newWs = new WebSocket("ws://127.0.0.1:9090/wcs/ws/shuttle/websocket");
@@ -112,6 +117,54 @@
            message.warning("请求失败");
            return false;
        }
    }
    const shuttleMoveLoc = async () => {
        if (xStart == '' || xTarget == '' || yStart == '' || yTarget == '') {
            message.warning('请输入参数');
            return;
        }
        try {
            const resp = await Http.doPost('api/basShuttle/moveLoc', {
                shuttleNo: currentData.shuttleNo,
                moveType: moveLocType,
                startX: xStart,
                targetX: xTarget,
                startY: yStart,
                targetY: yTarget,
            });
            if (resp.code === 200) {
                message.success("请求成功");
                return true;
            } else {
                message.warning(resp.msg);
                return false;
            }
        } catch (error) {
            message.warning("请求失败");
            return false;
        }
    }
    const xStartChange = (e) => {
        setXStart(e.target.value)
    }
    const xTargetChange = (e) => {
        setXTarget(e.target.value)
    }
    const yStartChange = (e) => {
        setYStart(e.target.value)
    }
    const yTargetChange = (e) => {
        setYTarget(e.target.value)
    }
    const moveLocTypeChange = (e) => {
        setMoveLocType(e)
    }
    let codeContent = (<PageContainer
@@ -230,18 +283,19 @@
                    <div style={{ marginBottom: '15px' }}>
                        <Card title="跑库系统" style={{ width: 300 }}>
                            <div className="commandItem">
                                <div><Input addonBefore="X起点" defaultValue="1" /></div>
                                <div><Input addonBefore="X终点" defaultValue="1" /></div>
                                <div><Input addonBefore="Y起点" defaultValue="1" /></div>
                                <div><Input addonBefore="Y终点" defaultValue="1" /></div>
                                <div><Input addonBefore="X起点" defaultValue="1" onChange={xStartChange} /></div>
                                <div><Input addonBefore="X终点" defaultValue="1" onChange={xTargetChange} /></div>
                                <div><Input addonBefore="Y起点" defaultValue="1" onChange={yStartChange} /></div>
                                <div><Input addonBefore="Y终点" defaultValue="1" onChange={yTargetChange} /></div>
                                <div>
                                    <Select
                                        defaultValue="0"
                                        onChange={moveLocTypeChange}
                                        style={{ width: 120 }}
                                        options={[{ value: '0', label: '跑轨道' }, { value: '1', label: '跑库位' }, { value: '2', label: '母轨道循环跑' }, { value: '3', label: '子轨道循环跑' }]}
                                    />
                                </div>
                                <Button>跑库</Button>
                                <Button onClick={() => shuttleMoveLoc()}>跑库</Button>
                            </div>
                        </Card>
                    </div>
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
@@ -217,8 +217,13 @@
            return;
        }
        //小车空闲且有跑库程序
        if (!(shuttleThread.isIdle() && shuttleProtocol.getMoveLoc())) {
        //小车开启跑库模式
        if (!shuttleProtocol.getMoveLoc()) {
            return;
        }
        //小车空闲
        if (!shuttleThread.isIdle()) {
            return;
        }
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java
@@ -10,6 +10,7 @@
import com.zy.asrs.wcs.common.domain.BaseParam;
import com.zy.asrs.wcs.common.domain.KeyValVo;
import com.zy.asrs.wcs.common.domain.PageParam;
import com.zy.asrs.wcs.core.domain.param.ShuttleMoveLocParam;
import com.zy.asrs.wcs.core.domain.param.ShuttleOperatorParam;
import com.zy.asrs.wcs.core.entity.BasShuttle;
import com.zy.asrs.wcs.core.entity.Motion;
@@ -200,12 +201,7 @@
    @PreAuthorize("hasAuthority('core:basShuttle:operator')")
    @PostMapping("/basShuttle/moveLoc")
    @Transactional
    public synchronized R shuttleMoveLoc(@RequestParam Integer shuttleNo,
                            @RequestParam Integer moveType,
                            @RequestParam Integer xStart,
                            @RequestParam Integer xTarget,
                            @RequestParam Integer yStart,
                            @RequestParam Integer yTarget) {
    public synchronized R shuttleMoveLoc(@RequestBody ShuttleMoveLocParam param) {
        DeviceType deviceType = deviceTypeService.getOne(new LambdaQueryWrapper<DeviceType>()
                .eq(DeviceType::getFlag, String.valueOf(SlaveType.Shuttle))
                .eq(DeviceType::getStatus, 1)
@@ -218,7 +214,7 @@
                .eq(Device::getDeviceType, deviceType.getId())
                .eq(Device::getStatus, 1)
                .eq(Device::getHostId, getHostId())
                .eq(Device::getDeviceNo, shuttleNo));
                .eq(Device::getDeviceNo, param.getShuttleNo()));
        if (device == null) {
            return R.error();
        }
@@ -238,13 +234,13 @@
        }
        shuttleProtocol.setMoveLoc(true);//开启跑库
        shuttleProtocol.setMoveType(moveType);
        shuttleProtocol.setXStart(xStart);
        shuttleProtocol.setXTarget(xTarget);
        shuttleProtocol.setXCurrent(xStart);
        shuttleProtocol.setYStart(yStart);
        shuttleProtocol.setYTarget(yTarget);
        shuttleProtocol.setYCurrent(yStart);
        shuttleProtocol.setMoveType(param.getMoveType());
        shuttleProtocol.setXStart(param.getStartX());
        shuttleProtocol.setXTarget(param.getTargetX());
        shuttleProtocol.setXCurrent(param.getStartX());
        shuttleProtocol.setYStart(param.getStartY());
        shuttleProtocol.setYTarget(param.getTargetY());
        shuttleProtocol.setYCurrent(param.getStartY());
        return R.ok();
    }
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/ShuttleMoveLocParam.java
New file
@@ -0,0 +1,20 @@
package com.zy.asrs.wcs.core.domain.param;
import lombok.Data;
@Data
public class ShuttleMoveLocParam {
    private Integer shuttleNo;
    private Integer moveType;
    private Integer startX;
    private Integer targetX;
    private Integer startY;
    private Integer targetY;
}
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/DeviceTimer.java
@@ -48,6 +48,9 @@
                .eq(Device::getStatus, 1)
                .eq(Device::getDeviceType, deviceType.getId()));
        for (Device device : list) {
            //小车空闲且有跑库程序
            shuttleAction.moveLoc(device);
            Object object = redisUtil.get(DeviceRedisConstant.SHUTTLE_FLAG + device.getDeviceNo());
            if (object == null) {
                continue;
@@ -58,9 +61,6 @@
                //存在任务需要执行
                boolean result = shuttleAction.executeWork(device, taskNo);
            }
            //小车空闲且有跑库程序
            shuttleAction.moveLoc(device);
        }
    }