zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
@@ -391,10 +391,28 @@ return; } //判断x轴货位是否放满 boolean flag = true; for (Loc loc : locService.list(new LambdaQueryWrapper<Loc>() .eq(Loc::getHostId, device.getHostId()) .eq(Loc::getRow, xCurrent) .ge(Loc::getBay, shuttleProtocol.getYStart()) .le(Loc::getBay, shuttleProtocol.getYTarget()))) { if (loc.getLocSts() != LocStsType.F.val()) { flag = false;//未满 break; } } if (flag) { shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); return; } //搜索有货库位 List<Loc> list = locService.list(new LambdaQueryWrapper<Loc>() .eq(Loc::getLocSts, LocStsType.F.val()) .eq(Loc::getHostId, device.getHostId()) .notIn(Loc::getRow, xCurrent) .eq(Loc::getStatus, 1)); if (list.isEmpty()) { return; @@ -402,30 +420,28 @@ Loc start = list.get(0); Integer yCurrent = shuttleProtocol.getYCurrent(); String locNo = Utils.getLocNo(xCurrent, yCurrent, lev); Loc target = locService.getOne(new LambdaQueryWrapper<Loc>() .eq(Loc::getLocNo, locNo) List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>() .eq(Loc::getHostId, device.getHostId()) .eq(Loc::getStatus, 1)); if (target == null) { shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); .eq(Loc::getStatus, 1) .eq(Loc::getLocSts, LocStsType.O.val()) .eq(Loc::getRow, xCurrent) .orderByDesc(Loc::getBay) .orderByAsc(Loc::getRow)); if (locList.isEmpty()) { return; } if (target.getLocSts() != LocStsType.O.val()) { shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); Loc target = locList.get(0); if (target == null) { return; } //调度去目标位置 if (shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) { shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);//小车和目标位置一致,跳过 } else { if (!shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) { Task task = shuttleDispatcher.generateManuaTakeMoveTask(device, start.getLocNo(), target.getLocNo()); if(task != null) {//调度成功 shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); } // if(task != null) {//调度成功 // shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); // } } } } zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasShuttleController.java
@@ -193,7 +193,7 @@ task.setMemo("manual"); task.setShuttleNo(param.getShuttleNo()); if (param.getShuttleTaskMode().equals("taskMove")) { if (param.getShuttleTaskMode().equals("takeMove")) { task.setRecordLoc("Y");//记录库存信息 } boolean result = taskService.save(task); zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Task.java
@@ -190,7 +190,6 @@ * 是否删除 1: 是 0: 否 */ @ApiModelProperty(value= "是否删除 1: 是 0: 否 ") @TableLogic private Integer deleted; /** zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
@@ -992,6 +992,7 @@ // 判断穿梭车是否在目标层 if (Utils.getLev(shuttleLocNo) == Utils.getLev(locNo)) { if (!shuttleLocNo.equals(locNo)) {//小车不在目标库位 // 穿梭车走行至目标库位 motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { @@ -1004,6 +1005,7 @@ })), MotionCtgType.SHUTTLE_MOVE )); } } else { //小车跨层 @@ -1198,6 +1200,7 @@ // 判断穿梭车是否在目标层 if (Utils.getLev(shuttleLocNo) == Utils.getLev(targetLoc)) { if (!shuttleLocNo.equals(sourceLoc)) {//小车不在目标库位 // 穿梭车走行至源库位 motionList.addAll(kernelService.shuttleMove( MotionDto.build((dto -> { @@ -1210,6 +1213,7 @@ })), MotionCtgType.SHUTTLE_MOVE )); } //托盘顶升 motionList.add(Motion.build(motion -> { zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
@@ -285,12 +285,14 @@ //充电任务 if (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl())).equals(MotionCtgType.SHUTTLE_CHARGE_ON)) { if (shuttleProtocol.getHasCharge() || shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.CHARGING_WAITING)) { // 复位穿梭车 shuttleThread.setSyncTaskNo(0); shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE); shuttleThread.setPakMk(true); return true; } } if (!shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.WAITING) && !shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.CHARGING_WAITING) zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/LocStsType.java
@@ -7,10 +7,13 @@ public enum LocStsType { D, F, O, X, D,//空板 F,//在库 O,//空库 X,//禁用 E,//不可放货通道 W,//母轨道 C,//充电桩 ; LocStsType() { zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java
@@ -55,6 +55,10 @@ //更新库存信息 @Transactional public void updateRecordLoc(Task task) { if (task.getRecordLoc() == null) { return; } if (task.getRecordLoc().equals("Y")) {//记录库存信息 //源库位 => 空库 //目标库位 => 在库 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
@@ -235,6 +235,7 @@ task.setMemo("manual"); task.setShuttleNo(Integer.valueOf(device.getDeviceNo())); task.setRecordLoc("Y");//记录库存信息 task.setHostId(device.getHostId()); // generate motion list List<Motion> motionList = analyzeService.generateShuttleManualMotion(task);