zy-asrs-flow/src/pages/device/shuttle/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/ShuttleMoveLocParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/DeviceTimer.java | ●●●●● 补丁 | 查看 | 原始文档 | 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); } }