diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/appearance_inspection_scannner_conveyor/AppearanceInspectionScannerConveyorDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/appearance_inspection_scannner_conveyor/AppearanceInspectionScannerConveyorDeviceDriver.java index 8d0a42c..1a14659 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/appearance_inspection_scannner_conveyor/AppearanceInspectionScannerConveyorDeviceDriver.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/appearance_inspection_scannner_conveyor/AppearanceInspectionScannerConveyorDeviceDriver.java @@ -18,8 +18,8 @@ import org.nl.acs.device.device.service.dto.DeviceAssignedDto; import org.nl.acs.device.driver.*; import org.nl.acs.device.driver.conveyor.appearance_inspection_scannner_conveyor.enums.CommandEnum; import org.nl.acs.device.driver.conveyor.strip_conveyor.StripConveyorDeviceDriver; -import org.nl.acs.device.enums.RequestTypeEnum; import org.nl.acs.ext.UnifiedResponse; +import org.nl.acs.ext.wms.data.req.CommonRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.enums.InstructionStatusEnum; @@ -198,12 +198,24 @@ public class AppearanceInspectionScannerConveyorDeviceDriver extends AbstractOpc this.update_instruction_status_by_task(); } if (this.mode != this.lastMode) { + //反馈拣选工位启停状态 boolean pinkFlag = Optional.ofNullable(this.getExtraValue().get("pinkDevicePoint")).map(Object::toString).map(Boolean::parseBoolean).orElse(false); if (pinkFlag) { - JSONObject req = new JSONObject(); - req.put("device_code", this.currentDeviceCode); - req.put("type", this.mode); - //acsToWmsService.feedPinkStartStop(req); + JSONObject param = new JSONObject(); + param.put("devicePoint", this.currentDeviceCode); + // TODO 拣选工位启停状态尚未定义 + //0和1 代表mode的0和2 + param.put("status", ""); + CommonRequest request = + CommonRequest.builder() + .service("Device") + .type("status") + .data(param) + .build(); + UnifiedResponse response = acsToWmsService.apply(request); + if (!response.isSuccess()) { + logService.deviceExecuteLog(new LuceneLogDto(this.currentDeviceCode, "反馈拣选工位启停状态失败, 原因:" + response.getMessage())); + } } } } @@ -252,26 +264,35 @@ public class AppearanceInspectionScannerConveyorDeviceDriver extends AbstractOpc return currentTimeMillis - this.requireTime >= this.requireTimeOut; } + /** + * 获取载具高度类型 + */ private void getHeightByVehicleCode() { long currentTimeMillis = System.currentTimeMillis(); if (!isTimeValid(currentTimeMillis)) { log.trace("触发时间因为小于{}毫秒,而被无视", this.requireTimeOut); } else { this.requireTime = currentTimeMillis; -// JSONObject requestParam = new JSONObject(); -// requestParam.put("type", RequestTypeEnum.APPLY_IN_TASK.getType()); -// JSONObject param = new JSONObject(); -// param.put(this.barcode, this.currentDeviceCode); -// requestParam.put("param", param); -// UnifiedResponse response = acsToWmsService.applyTaskToWms(requestParam); -// if (response.isSuccess()) { -// this.requireSuccess = true; -// } + JSONObject param = new JSONObject(); + param.put("vehicle", this.barcode); + CommonRequest request = CommonRequest + .builder() + .service("DeviceInfo") + .type("vehicle") + .data(param) + .build(); + UnifiedResponse response = acsToWmsService.apply(request, JSONObject.class); + if (response.isSuccess()) { + JSONObject data = response.getData(); + Integer type = data.getInteger("type"); + this.writing("toHeight", type); + this.requireSuccess = true; + } } } /** - * 申请入库任务 + * 申请托盘入库任务 */ private void applyInTask() { long currentTimeMillis = System.currentTimeMillis(); @@ -279,12 +300,15 @@ public class AppearanceInspectionScannerConveyorDeviceDriver extends AbstractOpc log.trace("触发时间因为小于{}毫秒,而被无视", this.requireTimeOut); } else { this.requireTime = currentTimeMillis; - JSONObject requestParam = new JSONObject(); - requestParam.put("type", RequestTypeEnum.APPLY_IN_TASK.getType()); JSONObject param = new JSONObject(); param.put(this.barcode, this.currentDeviceCode); - requestParam.put("param", param); - UnifiedResponse response = acsToWmsService.applyTaskToWms(requestParam); + CommonRequest request = + CommonRequest.builder() + .service("InStorage") + .type("palletInStorageTask") + .data(param) + .build(); + UnifiedResponse response = acsToWmsService.apply(request); if (response.isSuccess()) { this.requireSuccess = true; } @@ -300,15 +324,18 @@ public class AppearanceInspectionScannerConveyorDeviceDriver extends AbstractOpc log.trace("触发时间因为小于{}毫秒,而被无视", this.requireTimeOut); } else { this.requireTime = currentTimeMillis; - JSONObject requestParam = new JSONObject(); - requestParam.put("type", RequestTypeEnum.APPLY_AGV_TASK.getType()); - JSONObject param = new JSONObject(); - param.put(this.barcode, this.currentDeviceCode); - requestParam.put("param", param); - UnifiedResponse response = acsToWmsService.applyTaskToWms(requestParam); - if (response.isSuccess()) { - this.requireSuccess = true; - } +// JSONObject param = new JSONObject(); +// param.put(this.barcode, this.currentDeviceCode); +// CommonRequest request = +// CommonRequest.builder() +// .service("InStorage") +// .type("groupInStorage") +// .data(param) +// .build(); +// UnifiedResponse response = acsToWmsService.apply(request); +// if (response.isSuccess()) { +// this.requireSuccess = true; +// } } } @@ -320,11 +347,22 @@ public class AppearanceInspectionScannerConveyorDeviceDriver extends AbstractOpc * @return */ private UnifiedResponse applyAgvTask(String barcode) { - JSONObject requestParam = new JSONObject(); - JSONObject param = new JSONObject(); - param.put(barcode, this.currentDeviceCode); - requestParam.put("param", param); - return acsToWmsService.applyTaskToWms(requestParam); + long currentTimeMillis = System.currentTimeMillis(); + if (!isTimeValid(currentTimeMillis)) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.requireTimeOut); + } else { + this.requireTime = currentTimeMillis; +// JSONObject param = new JSONObject(); +// param.put(barcode, this.currentDeviceCode); +// CommonRequest request = +// CommonRequest.builder() +// .service("InStorage") +// .type("groupInStorage") +// .data(param) +// .build(); +// return acsToWmsService.apply(request); + } + return null; } @@ -632,10 +670,10 @@ public class AppearanceInspectionScannerConveyorDeviceDriver extends AbstractOpc instructionService.update(instruction); logService.deviceExecuteLog(new LuceneLogDto(this.currentDeviceCode, "指令号:" + instruction.getInstruction_code() + ", 修改指令状态为 -> " + InstructionStatusEnum.BUSY.getName())); } else if ((InstructionStatusEnum.BUSY.getIndex().equals(instruction.getInstruction_status()) || InstructionStatusEnum.READY.getIndex().equals(instruction.getInstruction_status())) && this.currentDeviceCode.equals(instruction.getNext_device_code())) { - Boolean applyTaskFlag = Optional.ofNullable(this.getExtraValue().get("applyTask")).map(Object::toString).map(Boolean::parseBoolean).orElse(false); + boolean applyTaskFlag = Optional.ofNullable(this.getExtraValue().get("applyTask")).map(Object::toString).map(Boolean::parseBoolean).orElse(false); if (applyTaskFlag) { UnifiedResponse response = this.applyAgvTask(instruction.getVehicle_code()); - if (!response.isSuccess()) { + if (response == null || !response.isSuccess()) { return; } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/stacker/double_stacker/StandardStackerDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/stacker/double_stacker/StandardStackerDeviceDriver.java index 8da0c77..272bf5f 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/stacker/double_stacker/StandardStackerDeviceDriver.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/stacker/double_stacker/StandardStackerDeviceDriver.java @@ -15,11 +15,11 @@ import org.nl.acs.device.device.domain.Device; import org.nl.acs.device.device.service.DeviceAppService; import org.nl.acs.device.driver.*; import org.nl.acs.device.driver.conveyor.appearance_inspection_scannner_conveyor.AppearanceInspectionScannerConveyorDeviceDriver; -import org.nl.acs.device.driver.stacker.double_stacker.enums.CommandEnum; -import org.nl.acs.device.driver.stacker.double_stacker.enums.ModeEnum; -import org.nl.acs.device.driver.stacker.double_stacker.enums.SendSignalEnum; -import org.nl.acs.device.driver.stacker.double_stacker.enums.StrategyEnum; +import org.nl.acs.device.driver.stacker.double_stacker.enums.*; import org.nl.acs.device.driver.storage.standard_storage.StandardStorageDeviceDriver; +import org.nl.acs.ext.UnifiedResponse; +import org.nl.acs.ext.wms.data.req.CommonRequest; +import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.enums.InstructionStatusEnum; import org.nl.acs.instruction.service.InstructionService; @@ -54,6 +54,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme private final InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); private final DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); private final TaskService taskService = SpringContextHolder.getBean(TaskService.class); + private final AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsService.class); private static final Lock LOCK = new ReentrantLock(); @@ -290,6 +291,9 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme */ private int stackerNum = 1; + /** + * 空出、满入、阻挡请求标记 + */ private boolean againRequireSuccess = false; @@ -385,125 +389,109 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme return device == null ? false : device.getDeviceDriver() instanceof StandardStorageDeviceDriver; } - private static final List AGAIN_ERROR = Arrays.asList(5, 6, 16); + private Integer getX(String devicePoint) { + return Integer.parseInt(devicePoint.split("-")[0].replaceAll("[^0-9]", "")); + } + + private Integer getY(String devicePoint) { + return Integer.parseInt(devicePoint.split("-")[1]); + } + + private Integer getZ(String devicePoint) { + return Integer.parseInt(devicePoint.split("-")[2]); + } + + private static final List AGAIN_ERROR = Arrays.asList(ErrorEnum.MR.getCode(), ErrorEnum.KC.getCode(), ErrorEnum.ZD.getCode()); @SneakyThrows @Override public void executeLogic() { - stackerNum = Optional.ofNullable(this.getExtraValue().get("stackerNum")).map(Object::toString).map(Integer::parseInt).orElse(1); - + this.stackerNum = Optional.ofNullable(this.getExtraValue().get("stackerNum")).map(Object::toString).map(Integer::parseInt).orElse(1); + if (this.back_command != this.lastBack_command || this.front_command != this.lastFront_command) { this.requireSuccess = false; } - if (front_Zerror != lastFront_Zerror || back_Zerror != lastBack_Zerror) { - if (AGAIN_ERROR.contains(front_Zerror) || AGAIN_ERROR.contains(back_Zerror)) { + if (this.front_Zerror != this.lastFront_Zerror || this.back_Zerror != this.lastBack_Zerror) { + if (AGAIN_ERROR.contains(this.front_Zerror) || AGAIN_ERROR.contains(this.back_Zerror)) { this.againRequireSuccess = false; } } //前叉满入 - if (front_Zerror == 5) { - //先解警 - //重新下发放货点位信息 - // - if (!againRequireSuccess) { - List keys = Arrays.asList(ItemProtocol.TO_Z.getKey(), ItemProtocol.TO_X.getKey(), ItemProtocol.TO_Y.getKey(), ItemProtocol.TO_FRONT_TASK.getKey(), ItemProtocol.TO_CHOOSE_FORK.getKey(), ItemProtocol.TO_COMMAND.getKey()); - List values = Arrays.asList(2, 25, 5, this.front_task, SendSignalEnum.CHOOSE_FORK_ONE.getSignalNum(), SendSignalEnum.COMMAND_TWO.getSignalNum()); - this.writing(ItemProtocol.TO_COMMAND.getKey(), 5); - this.writing(keys, values); - this.againRequireSuccess = true; + if (this.front_Zerror == ErrorEnum.MR.getCode()) { + if (!this.againRequireSuccess) { + this.mR(this.front_task, ForkTypeEnum.FRONT.getCode()); } return; } //后叉满入 - else if (back_Zerror == 5) { - //先解警 - //重新下发放货点位信息 - if (!againRequireSuccess) { - List keys = Arrays.asList(ItemProtocol.TO_Z.getKey(), ItemProtocol.TO_X.getKey(), ItemProtocol.TO_Y.getKey(), ItemProtocol.TO_BACK_TASK.getKey(), ItemProtocol.TO_CHOOSE_FORK.getKey(), ItemProtocol.TO_COMMAND.getKey()); - List values = Arrays.asList(2, 30, 6, this.back_task, SendSignalEnum.CHOOSE_FORK_TWO.getSignalNum(), SendSignalEnum.COMMAND_TWO.getSignalNum()); - this.writing(ItemProtocol.TO_COMMAND.getKey(), 5); - this.writing(keys, values); - this.againRequireSuccess = true; + else if (this.back_Zerror == ErrorEnum.MR.getCode()) { + if (!this.againRequireSuccess) { + this.mR(this.back_task, ForkTypeEnum.BACK.getCode()); } return; } - + //前叉和后叉都空出 + if (this.front_Zerror == ErrorEnum.KC.getCode() && this.back_Zerror == ErrorEnum.KC.getCode()) { + if (!this.againRequireSuccess) { + this.kC(this.front_task); + this.kC(this.back_task); + } + return; + } //前叉空出 - if (front_Zerror == 6) { - //先解警 - //重新下发取货点位信息 - if (!againRequireSuccess) { - List keys = Arrays.asList(ItemProtocol.TO_Z.getKey(), ItemProtocol.TO_X.getKey(), ItemProtocol.TO_Y.getKey(), ItemProtocol.TO_FRONT_TASK.getKey(), ItemProtocol.TO_CHOOSE_FORK.getKey(), ItemProtocol.TO_COMMAND.getKey()); - List values = Arrays.asList(2, 25, 5, this.front_task, SendSignalEnum.CHOOSE_FORK_ONE.getSignalNum(), SendSignalEnum.COMMAND_ONE.getSignalNum()); - this.writing(ItemProtocol.TO_COMMAND.getKey(), 5); - this.writing(keys, values); - this.againRequireSuccess = true; + else if (this.front_Zerror == ErrorEnum.KC.getCode()) { + if (!this.againRequireSuccess) { + this.kC(this.front_task); + Instruction back_inst = instructionService.findByCodeFromCache(String.valueOf(this.back_task)); + if (ObjectUtil.isNotEmpty(back_inst)) { + this.backWrite(back_inst); + } } return; } //后叉空出 - else if (back_Zerror == 6) { - //先解警 - //重新下发取货点位信息 - if (!againRequireSuccess) { - List keys = Arrays.asList(ItemProtocol.TO_Z.getKey(), ItemProtocol.TO_X.getKey(), ItemProtocol.TO_Y.getKey(), ItemProtocol.TO_BACK_TASK.getKey(), ItemProtocol.TO_CHOOSE_FORK.getKey(), ItemProtocol.TO_COMMAND.getKey()); - List values = Arrays.asList(2, 30, 5, this.front_task, SendSignalEnum.CHOOSE_FORK_TWO.getSignalNum(), SendSignalEnum.COMMAND_ONE.getSignalNum()); - this.writing(ItemProtocol.TO_COMMAND.getKey(), 5); - this.writing(keys, values); - this.againRequireSuccess = true; + else if (this.back_Zerror == ErrorEnum.KC.getCode()) { + if (!this.againRequireSuccess) { + this.kC(this.back_task); + Instruction front_inst = instructionService.findByCodeFromCache(String.valueOf(this.front_task)); + if (ObjectUtil.isNotEmpty(front_inst)) { + this.frontWrite(front_inst); + } } return; } //前叉浅货位有货 - if (front_Zerror == 16) { - //先解警 - //重新下发取放货点位信息 - if (!againRequireSuccess) { - //判断是取货阻挡还是放货阻挡 - //取货阻挡 - if (this.front_command == 1) { - List keys = Arrays.asList(ItemProtocol.TO_Z.getKey(), ItemProtocol.TO_X.getKey(), ItemProtocol.TO_Y.getKey(), ItemProtocol.TO_FRONT_TASK.getKey(), ItemProtocol.TO_CHOOSE_FORK.getKey(), ItemProtocol.TO_COMMAND.getKey()); - List values = Arrays.asList(3, 18, 6, this.front_task, SendSignalEnum.CHOOSE_FORK_ONE.getSignalNum(), SendSignalEnum.COMMAND_ONE.getSignalNum()); - this.writing(ItemProtocol.TO_COMMAND.getKey(), 5); - this.writing(keys, values); - this.againRequireSuccess = true; - } - //放货阻挡 - else if (this.front_command == 3) { - List keys = Arrays.asList(ItemProtocol.TO_Z.getKey(), ItemProtocol.TO_X.getKey(), ItemProtocol.TO_Y.getKey(), ItemProtocol.TO_FRONT_TASK.getKey(), ItemProtocol.TO_CHOOSE_FORK.getKey(), ItemProtocol.TO_COMMAND.getKey()); - List values = Arrays.asList(3, 22, 6, this.front_task, SendSignalEnum.CHOOSE_FORK_ONE.getSignalNum(), SendSignalEnum.COMMAND_TWO.getSignalNum()); - this.writing(ItemProtocol.TO_COMMAND.getKey(), 5); - this.writing(keys, values); - this.againRequireSuccess = true; + if (this.front_Zerror == ErrorEnum.ZD.getCode()) { + if (!this.againRequireSuccess) { + if (this.front_command == CommandEnum.PICKUP.getStatus()) { + this.getzD(this.front_task); + Instruction back_inst = instructionService.findByCodeFromCache(String.valueOf(this.back_task)); + if (ObjectUtil.isNotEmpty(back_inst)) { + this.backWrite(back_inst); + Thread.sleep(1000); + } + } else if (this.front_command == CommandEnum.RELEASE.getStatus()) { + this.putzD(this.front_task, ForkTypeEnum.FRONT.getCode()); } } return; } - //后叉前货位有货 - else if (back_Zerror == 16) { - //先解警 - //重新下发取放货点位信息 - if (!againRequireSuccess) { - //判断是取货阻挡还是放货阻挡 - //取货阻挡 - if (this.back_command == 1) { - List keys = Arrays.asList(ItemProtocol.TO_Z.getKey(), ItemProtocol.TO_X.getKey(), ItemProtocol.TO_Y.getKey(), ItemProtocol.TO_BACK_TASK.getKey(), ItemProtocol.TO_CHOOSE_FORK.getKey(), ItemProtocol.TO_COMMAND.getKey()); - List values = Arrays.asList(3, 50, 2, this.front_task, SendSignalEnum.CHOOSE_FORK_TWO.getSignalNum(), SendSignalEnum.COMMAND_ONE.getSignalNum()); - this.writing(ItemProtocol.TO_COMMAND.getKey(), 5); - this.writing(keys, values); - this.againRequireSuccess = true; - } - //放货阻挡 - else if (this.back_command == 3) { - List keys = Arrays.asList(ItemProtocol.TO_Z.getKey(), ItemProtocol.TO_X.getKey(), ItemProtocol.TO_Y.getKey(), ItemProtocol.TO_BACK_TASK.getKey(), ItemProtocol.TO_CHOOSE_FORK.getKey(), ItemProtocol.TO_COMMAND.getKey()); - List values = Arrays.asList(3, 60, 2, this.back_task, SendSignalEnum.CHOOSE_FORK_TWO.getSignalNum(), SendSignalEnum.COMMAND_TWO.getSignalNum()); - this.writing(ItemProtocol.TO_COMMAND.getKey(), 5); - this.writing(keys, values); - this.againRequireSuccess = true; + //后叉浅货位有货 + else if (this.back_Zerror == ErrorEnum.ZD.getCode()) { + if (!this.againRequireSuccess) { + if (this.back_command == CommandEnum.PICKUP.getStatus()) { + this.getzD(this.back_task); + Instruction front_inst = instructionService.findByCodeFromCache(String.valueOf(this.front_task)); + if (ObjectUtil.isNotEmpty(front_inst)) { + this.frontWrite(front_inst); + Thread.sleep(1000); + } + } else if (this.back_command == CommandEnum.RELEASE.getStatus()) { + this.putzD(this.back_task, ForkTypeEnum.BACK.getCode()); } } return; @@ -516,7 +504,13 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme } else if (this.mode != ModeEnum.MODE_3.getNum()) { this.message = "设备未联机"; } else if (this.stacker_error != 0) { - this.message = "设备报警"; + this.message = "设备主体报警"; + this.isError = true; + } else if (this.front_Zerror != 0) { + this.message = "设备前叉报警"; + this.isError = true; + } else if (this.back_Zerror != 0) { + this.message = "设备后叉报警"; this.isError = true; } else { this.message = ""; @@ -531,6 +525,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme this.writing(ItemProtocol.TO_COMMAND.getKey(), 0); Thread.sleep(1000); } + if (this.stopReceiveTask) return; this.applyTask(); } else { this.sendPutInfoToPlc(frontInst, backInst); @@ -699,6 +694,27 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme } } + private void updateNextPointCode(String devicePoint, Instruction inst) { + Integer x = getX(devicePoint); + Integer y = getY(devicePoint); + Integer z = getZ(devicePoint); + inst.setTo_x(x.toString()); + inst.setTo_y(y.toString()); + inst.setTo_z(z.toString()); + inst.setNext_device_code(devicePoint.split("-")[0]); + inst.setNext_point_code(devicePoint); + instructionService.update(inst); + TaskDto taskDto = taskService.findByCode(inst.getTask_code()); + if (taskDto != null) { + taskDto.setTo_x(x.toString()); + taskDto.setTo_y(y.toString()); + taskDto.setTo_z(z.toString()); + taskDto.setNext_device_code(devicePoint.split("-")[0]); + taskDto.setNext_point_code(devicePoint); + taskService.update(taskDto); + } + } + private void applyTask() { long currentTimeMillis = System.currentTimeMillis(); @@ -728,7 +744,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme TaskDto backTaskDto = null; if (CollectionUtil.isNotEmpty(frontTaskDtos)) { //如果当前堆垛机是双叉 - if (stackerNum == 2) { + if (this.stackerNum == 2) { for (TaskDto frontTask : frontTaskDtos) { //查找一起取放的移库任务 TaskDto backTask = taskService.findAllBindTask(frontTask, backNoY); @@ -749,7 +765,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme } } else { //查找后叉移库任务 - if (stackerNum == 2) { + if (this.stackerNum == 2) { List backTaskDtos = taskService.findReadyTaskByXDeviceCode(xDeviceCodeList, backNoY); if (CollectionUtil.isNotEmpty(backTaskDtos)) { backTaskDto = backTaskDtos.get(0); @@ -904,7 +920,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme } } } else { - if (stackerNum == 2) { + if (this.stackerNum == 2) { List backInsts = instructionService.findReadyInstByStartDeviceCode(getBackDeviceCodeList, backNoY); if (CollectionUtil.isNotEmpty(backInsts)) { backInst = backInsts.get(0); @@ -955,7 +971,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme Instruction backInst = null; if (CollectionUtil.isNotEmpty(frontInsts)) { frontInst = frontInsts.get(0); - if (ObjectUtil.isNotEmpty(frontInst) && stackerNum == 2) { + if (ObjectUtil.isNotEmpty(frontInst) && this.stackerNum == 2) { String front_next_device_code = frontInst.getNext_device_code(); Device front_next_device = deviceAppService.findDeviceByCode(front_next_device_code); if (front_next_device != null) { @@ -964,7 +980,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme } } } else { - if (stackerNum == 2) { + if (this.stackerNum == 2) { List backInsts = instructionService.findReadyInstByNextDeviceCode(getBackDeviceCodeList, backNoY); if (CollectionUtil.isNotEmpty(backInsts)) { backInst = backInsts.get(0); @@ -1094,16 +1110,16 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme * 更新指令状态 */ private void updateInstStatus() { - if (this.mode == 3 && this.back_task > 0) { + if (this.mode == ModeEnum.MODE_3.getNum() && this.back_task > 0) { this.updateInstStatusBusy(this.back_task); } - if (this.mode == 3 && this.front_task > 0) { + if (this.mode == ModeEnum.MODE_3.getNum() && this.front_task > 0) { this.updateInstStatusBusy(this.front_task); } - if (this.mode == 3 && this.back_task > 0 && CommandEnum.UNLOAD_COMPLETE.getStatus() == this.back_command) { + if (this.mode == ModeEnum.MODE_3.getNum() && this.back_task > 0 && CommandEnum.UNLOAD_COMPLETE.getStatus() == this.back_command) { this.updateInstStatusFinish(this.back_task); } - if (this.mode == 3 && this.front_task > 0 && CommandEnum.UNLOAD_COMPLETE.getStatus() == this.front_command) { + if (this.mode == ModeEnum.MODE_3.getNum() && this.front_task > 0 && CommandEnum.UNLOAD_COMPLETE.getStatus() == this.front_command) { this.updateInstStatusFinish(this.front_task); } } @@ -1206,6 +1222,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme } } + private boolean isBindPut(Instruction frontInst, Instruction backInst) { if (ObjectUtil.isNotEmpty(frontInst) && ObjectUtil.isNotEmpty(backInst)) { String front_next_device_code = frontInst.getNext_device_code(); @@ -1235,6 +1252,9 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme return false; } + /** + * PLC信号清0 + */ private void clearInfoToPlc() { boolean isFrontPickup = this.front_command == CommandEnum.PICKUP.getStatus(); boolean isBackPickup = this.back_command == CommandEnum.PICKUP.getStatus(); @@ -1251,6 +1271,132 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme this.requireSuccess = true; } + /** + * 满入 + */ + private void mR(Integer task, String type) { + Instruction inst = instructionService.findByCodeFromCache(String.valueOf(task)); + if (inst != null) { + JSONObject param = new JSONObject(); + param.put("taskCode", inst.getTask_code()); + CommonRequest request = + CommonRequest.builder() + .service("ErrorTask") + .type("rm") + .data(param) + .build(); + // UnifiedResponse response = acsToWmsService.apply(request, JSONObject.class); + // if (response.isSuccess()) { + // JSONObject data = response.getData(); + JSONObject data = new JSONObject(); + if (this.stackerNum == 1) { + data.put("devicePoint", "T02-89-03"); + } else { + data.put("devicePoint", "L02-22-03"); + } + String devicePoint = data.getString("devicePoint"); + if (devicePoint != null && devicePoint.contains("-") && devicePoint.split("-").length == 3) { + this.updateNextPointCode(devicePoint, inst); + //清警 + this.writing(ItemProtocol.TO_COMMAND.getKey(), 5); + if ("1".equals(type)) { + this.sendPutInfoToPlc(inst, null); + } else { + this.sendPutInfoToPlc(null, inst); + } + this.againRequireSuccess = true; + } + // } + } + } + + /** + * 空出 + */ + @SneakyThrows + private void kC(Integer task) { + Instruction inst = instructionService.findByCodeFromCache(String.valueOf(task)); + if (inst != null) { + JSONObject param = new JSONObject(); + param.put("taskCode", inst.getTask_code()); + CommonRequest request = CommonRequest + .builder() + .service("ErrorTask") + .type("ck") + .data(param) + .build(); + // acsToWmsService.apply(request); + instructionService.cancelInstAndTask(inst.getInstruction_id()); + } + this.writing(ItemProtocol.TO_COMMAND.getKey(), SendSignalEnum.COMMAND_FIVE.getSignalNum()); + this.againRequireSuccess = true; + } + + /** + * 取货阻挡 + */ + private void getzD(Integer task) { + Instruction inst = instructionService.findByCodeFromCache(String.valueOf(task)); + if (inst != null) { + JSONObject param = new JSONObject(); + param.put("taskCode", task); + //通知WMS取货阻挡 + CommonRequest request = + CommonRequest.builder() + .service("ErrorTask") + .type("czd") + .data(param) + .build(); + //UnifiedResponse response = acsToWmsService.apply(request, JSONObject.class); + // if (response.isSuccess()) { + //取消ACS指令和任务 + instructionService.cancelInstAndTaskNoSendWms(inst.getInstruction_id()); + this.writing(ItemProtocol.TO_COMMAND.getKey(), SendSignalEnum.COMMAND_FIVE.getSignalNum()); + this.againRequireSuccess = true; + // } + } + } + + /** + * 放货阻挡 + */ + private void putzD(Integer task, String type) { + Instruction inst = instructionService.findByCodeFromCache(String.valueOf(task)); + if (inst != null) { + JSONObject param = new JSONObject(); + param.put("taskCode", task); + CommonRequest request = + CommonRequest.builder() + .service("ErrorTask") + .type("rzd") + .data(param) + .build(); + // UnifiedResponse response = acsToWmsService.apply(request, JSONObject.class); + // if (response.isSuccess()) { + // JSONObject data = response.getData(); + JSONObject data = new JSONObject(); + data.put("devicePoint", "L03-89-03"); + String devicePoint = data.getString("devicePoint"); + if (devicePoint != null && devicePoint.contains("-") && devicePoint.split("-").length == 3) { + this.updateNextPointCode(devicePoint, inst); + this.writing(ItemProtocol.TO_COMMAND.getKey(), SendSignalEnum.COMMAND_FIVE.getSignalNum()); + if ("1".equals(type)) { + this.sendPutInfoToPlc(inst, null); + } else { + this.sendPutInfoToPlc(null, inst); + } + this.againRequireSuccess = true; + } + // } + } + } + + /** + * 封装指令 + * + * @param instdto + * @param taskDto + */ private void setInstruction(Instruction instdto, TaskDto taskDto) { instdto.setInstruction_id(IdUtil.simpleUUID()); instdto.setInstruction_code(CodeUtil.getNewCode("INSTRUCT_NO")); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/station/with_station/WithStationDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/station/with_station/WithStationDeviceDriver.java index c719c4e..15c8527 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/station/with_station/WithStationDeviceDriver.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/station/with_station/WithStationDeviceDriver.java @@ -13,8 +13,8 @@ import org.nl.acs.device.driver.DeviceDriver; import org.nl.acs.device.driver.ExecutableDeviceDriver; import org.nl.acs.device.driver.RouteableDeviceDriver; import org.nl.acs.device.driver.conveyor.appearance_inspection_scannner_conveyor.AppearanceInspectionScannerConveyorDeviceDriver; -import org.nl.acs.device.enums.RequestTypeEnum; import org.nl.acs.ext.UnifiedResponse; +import org.nl.acs.ext.wms.data.req.CommonRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.monitor.DeviceStageMonitor; @@ -90,15 +90,18 @@ public class WithStationDeviceDriver extends AbstractOpcDeviceDriver implements && !appearanceInspectionScannerConveyorDeviceDriver.isRequireSuccess()) { TaskDto taskDto = taskServer.findByContainer(appearanceInspectionScannerConveyorDeviceDriver.getBarcode()); if (ObjectUtil.isEmpty(taskDto)) { - JSONObject requestParam = new JSONObject(); - requestParam.put("type", RequestTypeEnum.APPLY_IN_TASK.getType()); String getLinkDeviceCode = Optional.ofNullable(device.getExtraValue().get("getLinkDeviceCode")).map(Object::toString).orElse(null); if (StrUtil.isEmpty(getLinkDeviceCode)) { JSONObject param = new JSONObject(); param.put(appearanceInspectionScannerConveyorDeviceDriver.getBarcode(), deviceCode); - requestParam.put("param", param); - logServer.deviceExecuteLog(new LuceneLogDto(this.device_code, "申请任务...." + requestParam.toString())); - UnifiedResponse response = acsToWmsService.applyTaskToWms(requestParam); + CommonRequest request = + CommonRequest.builder() + .service("InStorage") + .type("groupInStorage") + .data(param) + .build(); + logServer.deviceExecuteLog(new LuceneLogDto(this.device_code, "申请任务...." + request.toString())); + UnifiedResponse response = acsToWmsService.apply(request); if (response.isSuccess()) { appearanceInspectionScannerConveyorDeviceDriver.setRequireSuccess(true); this.requireSuccess = true; @@ -113,9 +116,14 @@ public class WithStationDeviceDriver extends AbstractOpcDeviceDriver implements JSONObject param = new JSONObject(); param.put(appearanceInspectionScannerConveyorDeviceDriver.getBarcode(), deviceCode); param.put(appearanceInspectionScannerConveyorDeviceDriver2.getBarcode(), getLinkDeviceCode); - requestParam.put("param", param); - logServer.deviceExecuteLog(new LuceneLogDto(this.device_code, "申请任务...." + requestParam.toString())); - UnifiedResponse response = acsToWmsService.applyTaskToWms(requestParam); + CommonRequest request = + CommonRequest.builder() + .service("InStorage") + .type("groupInStorage") + .data(param) + .build(); + logServer.deviceExecuteLog(new LuceneLogDto(this.device_code, "申请任务...." + request.toString())); + UnifiedResponse response = acsToWmsService.apply(request); if (response.isSuccess()) { this.requireSuccess = true; appearanceInspectionScannerConveyorDeviceDriver.setRequireSuccess(true); @@ -126,9 +134,14 @@ public class WithStationDeviceDriver extends AbstractOpcDeviceDriver implements if (System.currentTimeMillis() - appearanceInspectionScannerConveyorDeviceDriver.getRequireInTaskTime() > waitTime * 1000) { JSONObject param = new JSONObject(); param.put(appearanceInspectionScannerConveyorDeviceDriver.getBarcode(), deviceCode); - requestParam.put("param", param); - logServer.deviceExecuteLog(new LuceneLogDto(this.device_code, "申请任务...." + requestParam.toString())); - UnifiedResponse response = acsToWmsService.applyTaskToWms(requestParam); + CommonRequest request = + CommonRequest.builder() + .service("InStorage") + .type("groupInStorage") + .data(param) + .build(); + logServer.deviceExecuteLog(new LuceneLogDto(this.device_code, "申请任务...." + request.toString())); + UnifiedResponse response = acsToWmsService.apply(request); if (response.isSuccess()) { appearanceInspectionScannerConveyorDeviceDriver.setRequireSuccess(true); this.requireSuccess = true; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java index 3f56864..046c4fa 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java @@ -159,6 +159,9 @@ public interface InstructionService extends CommonService { */ Instruction findByTaskcode(String code); + + Instruction findByTaskCodeFromCache(String code); + /** * 根据任务code查询 * @@ -266,6 +269,8 @@ public interface InstructionService extends CommonService { */ void cancel(String id) throws Exception; + void cancelInstAndTask(String id) throws Exception; + /** * 取消指令 * @@ -393,14 +398,6 @@ public interface InstructionService extends CommonService { */ boolean removeByCodeFromCache(String code); - /** - * 创建关联指令 - * - * @param type - * @param inst - * @return - */ - boolean createLkInst(String type, Instruction inst); /** * 初始化指令 @@ -544,4 +541,6 @@ public interface InstructionService extends CommonService { List findReadyInstBySpecialDevice(List getDeviceCodeList, List specialGetDevice, List specialPutDevice); Instruction findReadyInstBySpecialDeviceAndStartDeviceCode(List getDeviceCodeList, List specialGetDevice, List specialPutDevice, String front_start_device_code); + + void cancelInstAndTaskNoSendWms(String instruction_id); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index 8df0ed0..9b4e441 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -28,12 +28,9 @@ import org.nl.acs.device.device.domain.Device; import org.nl.acs.device.device.enums.DeviceType; import org.nl.acs.device.device.service.DeviceService; import org.nl.acs.device.device.service.impl.DeviceServiceImpl; -import org.nl.acs.device.driver.DeviceDriver; import org.nl.acs.device.driver.DeviceDriverDefination; import org.nl.acs.device.driver.conveyor.standard_conveyor_control_with_scanner.StandardCoveyorControlWithScannerDeviceDriver; import org.nl.acs.device.driver.conveyor.standard_inspect_site.StandardInspectSiteDeviceDriver; -import org.nl.acs.ext.wms.liKuData.*; -import org.nl.acs.ext.wms.service.AcsToLiKuService; import org.nl.acs.instruction.domain.InstructionMybatis; import org.nl.acs.instruction.enums.InstructionStatusEnum; import org.nl.acs.instruction.service.dto.InstructionDto; @@ -106,8 +103,6 @@ public class InstructionServiceImpl extends CommonServiceImpl()) + .stream() + .filter(instruction -> instruction.getTask_code().equals(task_code)) + .findFirst() + .orElse(null); + } + @Override public Instruction findByTaskcode(String code) { InstructionMybatis ins = new LambdaQueryChainWrapper<>(instructionMapper) @@ -475,14 +480,6 @@ public class InstructionServiceImpl extends CommonServiceImpl list = new ArrayList(); - baseReq.setOrderId(dto.getInstruction_code()); - baseReq.setSrcLocation(dto.getStart_point_code()); - baseReq.setDestLocation(dto.getNext_point_code()); - baseReq.setFloorNo(Integer.parseInt(dto.getFrom_z())); - baseReq.setPalletCode(dto.getVehicle_code()); - list.add(baseReq); - outStore.setOrderInfos(list); - outStore.setGroupId(dto.getInstruction_code()); - resp = acsToLiKuService.outStore(outStore); - // 空托出库 - } else if (StrUtil.equals(type, "4")) { - EmptyVehicleOutStoreRequest emptyVehicleOutStoreRequest = new EmptyVehicleOutStoreRequest(); - emptyVehicleOutStoreRequest.setOrderId(dto.getInstruction_code()); - emptyVehicleOutStoreRequest.setFloorNo(Integer.parseInt(dto.getFrom_z())); - emptyVehicleOutStoreRequest.setSrcLocation(dto.getStart_point_code()); - emptyVehicleOutStoreRequest.setDestLocation(dto.getNext_point_code()); - emptyVehicleOutStoreRequest.setPalletCode(dto.getVehicle_code()); - resp = acsToLiKuService.emptyVehicleOutStore(emptyVehicleOutStoreRequest); - // 转库 - } else if (StrUtil.equals(type, "5")) { - MoveStoreRequest moveStoreRequest = new MoveStoreRequest(); - BaseStoreRequest baseReq = new BaseStoreRequest(); - List list = new ArrayList(); - baseReq.setFloorNo(Integer.parseInt(dto.getFrom_z())); - baseReq.setPalletCode(dto.getVehicle_code()); - baseReq.setOrderId(dto.getInstruction_code()); - baseReq.setSrcLocation(dto.getStart_point_code()); - baseReq.setDestLocation(dto.getNext_point_code()); - list.add(baseReq); - moveStoreRequest.setGroupId(dto.getInstruction_code()); - moveStoreRequest.setOrderInfos(list); - resp = acsToLiKuService.moveStore(moveStoreRequest); - } - - if (ObjectUtil.isNotEmpty(resp)) { - if (StrUtil.equals(resp.getResult(), "true")) { - dto.setSend_status(CommonFinalParam.ONE); - } else { - dto.setSend_status("2"); - dto.setRemark(resp.getData().toString()); - return false; - } - } else { - dto.setSend_status("2"); - dto.setRemark("ERROR"); - return false; - } - return true; - } - } - /* * 判断是否为整数 * @param str 传入的字符串 @@ -2031,5 +1936,25 @@ public class InstructionServiceImpl extends CommonServiceImpl { - static final String CACHE_KEY = "task"; - /** * 查询数据分页 * @@ -48,14 +46,6 @@ public interface TaskService extends CommonService { */ Task getById(String id); - /** - * 根据设备号和任务状态查询 - * - * @param device_code - * @return - */ - List queryTaskByDeviceCodeAndStatus2(String device_code); - /** * 根据ID查询 * @@ -96,14 +86,6 @@ public interface TaskService extends CommonService { */ int removeByIds(Set ids); - /** - * 导出数据 - * @param all 待导出的数据 - * @param response / - * @throws IOException / - */ - // void download(List all, HttpServletResponse response) throws IOException; - /** * 查询数据分页 * @@ -113,15 +95,6 @@ public interface TaskService extends CommonService { */ Map queryAll(Map whereJson, Pageable page); - /** - * 在缓存中查询所有任务列表 - * - * @param whereJson 条件 - * @param page 分页参数 - * @return - */ - Map queryAllByCache(Map whereJson, Pageable page); - /** * 数据同步 */ @@ -160,37 +133,7 @@ public interface TaskService extends CommonService { */ List queryAll(Map whereJson); - /** - * 根据ID查询 - * - * @param task_id ID - * @return AcsTask - */ -// TaskDto findById(String task_id); - /** - * 查询所有未完成任务 - * - * @param whereJson 条件参数 - * @return List - */ - List queryAllUnfinished(Map whereJson); - - /** - * 根据状态查询 - * - * @param task_status task_status - * @return AcsTask - */ - List queryByStauts(String task_status); - - /** - * 根绝状态查询缓存 - * - * @param task_status - * @return - */ - List findByTaskStatus(String task_status); /** * 根据编码查询 @@ -200,55 +143,6 @@ public interface TaskService extends CommonService { */ TaskDto findByCode(String code); - /** - * 根据设备号查询未执行的任务 - * - * @param device_code - * @return - */ - List queryTaskByDeviceCode(String device_code); - - /** - * 根据设备号查询未执行的任务 - * - * @param start_device_code - * @return List - */ - List queryTaskByStartDeviceCode(String start_device_code); - - /** - * 根据设备号查询未执行的任务 - * - * @param back_start_device_code - * @return List - */ - List queryTaskByBackDeviceCode(String back_start_device_code); - - /** - * 根据设备号和任务状态查询 - * - * @param device_code - * @return List - */ - List queryTaskByDeviceCodeAndStatus(String device_code); - - /** - * 根据前工位取货点查找执行中的任务 - * - * @param head_start_device_code - * @return List - */ - List queryTaskByStartAndIntStatus(String head_start_device_code); - - /** - * 根据后工位取货点查找执行中的任务 - * - * @param head_next_device_code - * @return List - */ - List queryTaskByNextAndIntStatus(String head_next_device_code); - - /** * 创建 * @@ -382,27 +276,9 @@ public interface TaskService extends CommonService { TaskDto findByStartCode(String device_code); - /** - * 根据起点设备编号查询当前是否有就绪任务 - * - * @param start_device_code - * @return - */ - TaskDto findReadyByStartDeviceCode(String start_device_code); - - TaskDto findReadyByVehicleCode(String vehicleCode); - /** - * 根据终点设备编号查询当前是否有就绪任务 - * - * @param device_code - * @return - */ - TaskDto findByEndCodeAndReady(String device_code); - - /** * 查询内存任务 * @@ -435,22 +311,6 @@ public interface TaskService extends CommonService { String queryAssignedByDevice(String device_code, String task_nextdevice_code); - /** - * 查询相同起点任务的数量 - * - * @param code - * @return - */ - Integer querySameOriginTask(String code); - - /** - * 查询相同终点任务的数量 - * - * @param code - * @return - */ - Integer querySameDestinationTask(String code); - /** * 查询相同起终任务的数量 * @@ -494,20 +354,6 @@ public interface TaskService extends CommonService { */ List getTaskList(Map whereJson); - List findByStartCodeAndBusy(String deviceCode); - - /** - * 任务平均分配原则 根据任务起点和终点去找对应的指令终点 - * 除了包含之前的分配原则外 - * 新增了立库堆叠机双向点位出入库点位分配的逻辑 - * 即任务信息A->C,则拆分成指令信息为A->B,B->C - * - * @param device_code A - * @param task_nextDeice_code C - * @return 指令终点 B - */ - String queryAssignedByDeviceCode(String device_code, String task_nextDeice_code); - /** * 根据编号查询 * @@ -520,8 +366,6 @@ public interface TaskService extends CommonService { List findReadyTaskByXDeviceCode(List xDeviceCodeList, String noY); - TaskDto findReadyTaskByFrontTask(TaskDto frontTaskDto, List xDeviceCodeList, String backNoY); - /** * 移库任务根据前叉任务信息,查找后叉可以一起取放的任务信息 * @@ -540,4 +384,5 @@ public interface TaskService extends CommonService { */ TaskDto findFrontBindTask(TaskDto frontTask, String backNoY); + void cancelNoSendWms(String task_id); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 208bc68..e7fb321 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -27,6 +27,7 @@ import org.nl.acs.device.device.service.DeviceService; import org.nl.acs.device.device.service.dto.DeviceAssignedDto; import org.nl.acs.device.device.service.impl.DeviceServiceImpl; import org.nl.acs.device.driver.DeviceDriverDefination; +import org.nl.acs.ext.wms.data.req.CommonRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.domain.InstructionMybatis; @@ -94,8 +95,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme @Autowired private AcsToWmsService acstowmsService; @Autowired - private TaskFeedbackService taskFeedbackService; - @Autowired private ISysParamService paramService; @Autowired private XianGongAgvService agvService; @@ -112,12 +111,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme */ private CopyOnWriteArrayList tasks = new CopyOnWriteArrayList<>(); - /** - * 烘箱任务类型 - */ - private static final String TASK_TYPE = "8"; - - @Override public PageInfo queryAll(TaskQueryParam query, Pageable pageable) { IPage queryPage = PageUtil.toMybatisPage(pageable); @@ -135,32 +128,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme return taskMapper.selectById(id); } - @Override - public List queryTaskByDeviceCodeAndStatus2(String device_code) { - List list = new ArrayList<>(); -// Iterator iterator = tasks.iterator(); -// while (iterator.hasNext()) { -// TaskDto task = iterator.next(); -// if (task.getStart_device_code().equals(device_code) -// && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) { -// Instruction instruction = instructionService.findByTaskcodeAndStatus(task.getTask_code()); -// if (ObjectUtil.isNotEmpty(instruction)) { -// list.add(task); -// } -// } else { -// if (StrUtil.equals(task.getTask_type(), TaskTypeEnum.Inner_Truss_Task.getIndex()) && StrUtil.isNotEmpty(task.getPut_device_code())) { -// Instruction instruction = instructionService.findByDeviceCodeFromCache(task.getNext_device_code()); -// if (ObjectUtil.isNotEmpty(instruction)) { -// if (StrUtil.equals(instruction.getStart_device_code(), device_code)) { -// list.add(task); -// } -// } -// } -// } -// } - return list; - } - @Override public TaskDto findById(String id) { @@ -274,69 +241,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme return json; } - @Override - public Map queryAllByCache(Map whereJson, Pageable page) { - String task_code = (String) whereJson.get("task_code"); - String vehicle_code = (String) whereJson.get("vehicle_code"); - String material_type = (String) whereJson.get("material_type"); - String status = (String) whereJson.get("status"); - String point_code = (String) whereJson.get("point_code"); - String task_type = (String) whereJson.get("task_type"); - String is_over = (String) whereJson.get("is_over"); - Integer currentPageNumber = page.getPageNumber() + 1; - Integer pageMaxSize = page.getPageSize(); - List taskList = - Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(t -> { - if (StrUtil.isNotEmpty(task_code)) { - return t.getTask_code().contains(task_code); - } - return true; - }) - .filter(t -> { - if (StrUtil.isNotEmpty(vehicle_code)) { - return t.getVehicle_code().contains(vehicle_code); - } - return true; - }) - .filter(t -> { - if (StrUtil.isNotEmpty(material_type)) { - return t.getMaterial().contains(material_type); - } - return true; - }) - .filter(t -> { - if (StrUtil.isNotEmpty(status)) { - return t.getTask_status().contains(status); - } - return true; - }) - .filter(t -> { - if (StrUtil.isNotEmpty(point_code)) { - return t.getStart_point_code().contains(point_code) || t.getNext_point_code().equals(point_code) || t.getPut_point_code().equals(point_code); - } - return true; - }) - .filter(t -> { - if (StrUtil.isNotEmpty(task_type)) { - return t.getTask_type().contains(task_type); - } - return true; - }) - .sorted((task1, task2) -> DateUtil.compare(DateUtil.parseDate(task1.getCreate_time()), DateUtil.parse(task2.getCreate_time()))) - .collect(Collectors.toList()); - List skipList = taskList.stream().skip((currentPageNumber - 1) * pageMaxSize) - .limit(pageMaxSize) - .collect(Collectors.toList()); - JSONObject jo = new JSONObject(); - jo.put("content", skipList); - jo.put("totalElements", taskList.size()); - return jo; - } - @Override public Map getAll(Map whereJson, Pageable page) { String task_code = (String) whereJson.get("task_code"); @@ -392,14 +296,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme } - @Override - public List queryAllUnfinished(Map whereJson) { - List taskList = new LambdaQueryChainWrapper<>(taskMapper) - .lt(Task::getTask_status, TaskStatusEnum.FINISHED.getIndex()) - .list(); - return ConvertUtil.convertList(taskList, TaskDto.class); - } - @Override public TaskDto findByCode(String code) { Task task = new LambdaQueryChainWrapper<>(taskMapper) @@ -408,121 +304,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme return ConvertUtil.convert(task, TaskDto.class); } - @Override - public List queryTaskByDeviceCode(String device_code) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(taskDto -> taskDto.getStart_device_code().equals(device_code) - && StrUtil.equals(taskDto.getTask_status(), TaskStatusEnum.READY.getIndex())) - .collect(Collectors.toList()); - } - - @Override - public List queryTaskByStartDeviceCode(String start_device_code) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> StrUtil.equals(task.getTask_type(), "6") - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.READY.getIndex()) - && (task.getStart_device_code().equals(start_device_code) - || task.getStart_device_code2().equals(start_device_code))) - .collect(Collectors.toList()); - } - - @Override - public List queryTaskByBackDeviceCode(String back_start_device_code) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> StrUtil.equals(task.getTask_type(), "6") - && task.getStart_device_code().equals(back_start_device_code) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.READY.getIndex())) - .collect(Collectors.toList()); - } - - @Override - public List queryTaskByDeviceCodeAndStatus(String device_code) { - - List collect = Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> task.getStart_device_code().equals(device_code) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) - .filter(task -> instructionService.findByTaskcodeAndStatus(task.getTask_code()) != null) - .collect(Collectors.toList()); - if (CollUtil.isEmpty(collect)) { - tasks.forEach( - task -> { - if (TASK_TYPE.equals(task.getTask_type()) && StrUtil.isNotEmpty(task.getPut_device_code())) { - Instruction instruction = instructionService.findByDeviceCodeFromCache(task.getNext_device_code()); - if (ObjectUtil.isNotEmpty(instruction)) { - if (StrUtil.equals(instruction.getStart_device_code(), device_code)) { - collect.add(task); - } - } - } - } - ); - } - return collect; - - } - - @Override - public List queryTaskByStartAndIntStatus(String head_start_device_code) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> StrUtil.equals(task.getTask_type(), "6") - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex()) - && (task.getStart_device_code().equals(head_start_device_code) - || task.getStart_device_code2().equals(head_start_device_code))) - .filter(task -> instructionService.findByTaskcodeAndStatus(task.getTask_code()) != null) - .collect(Collectors.toList()); - } - - @Override - public List queryTaskByNextAndIntStatus(String back_start_device_code) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> StrUtil.equals(task.getTask_type(), "6") - && task.getStart_device_code().equals(back_start_device_code) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) - .filter(task -> instructionService.findByTaskcodeAndStatus(task.getTask_code()) != null) - .collect(Collectors.toList()); - } - - - @Override - public List queryByStauts(String status) { - List taskList = new LambdaQueryChainWrapper<>(taskMapper) - .eq(Task::getTask_status, status) - .list(); - return ConvertUtil.convertList(taskList, TaskDto.class); - } - - - @Override - public List findByTaskStatus(String status) { - List taskDtoList = new ArrayList<>(); - Iterator iterator = tasks.iterator(); - if (iterator.hasNext()) { - TaskDto task = iterator.next(); - if (StrUtil.equals(task.getTask_status(), status)) { - taskDtoList.add(task); - } - } - return taskDtoList; - } - @Override public void create(TaskDto dto) throws Exception { @@ -609,15 +390,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme } if (StrUtil.equals(DeviceType.conveyor.toString(), nextDeviceType)) { - // if (nextdevice.getDeviceDriver() instanceof - // XgAgvCarDeviceDriver) { - // standardOrdinarySiteDeviceDriver = (XgAgvCarDeviceDriver) - // nextdevice.getDeviceDriver(); - // if (nextdevice.getHas_goods() != 0) { - // throw new Exception("任务终点需满足无货!"); - // } - // } - JSONObject jo = new JSONObject(); JSONObject jo2 = new JSONObject(); if (!StrUtil.isEmpty(dto.getMaterial())) { @@ -1066,15 +838,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme } - @Override - public TaskDto findReadyByStartDeviceCode(String start_device_code) { - Optional optionalTask = tasks.stream() - .filter(task -> StrUtil.equals(task.getStart_device_code(), start_device_code) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.READY.getIndex())) - .findFirst(); - return optionalTask.orElse(null); - } - @Override public TaskDto findReadyByVehicleCode(String vehicleCode) { Optional optionalTask = tasks.stream() @@ -1085,17 +848,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme } - @Override - public TaskDto findByEndCodeAndReady(String device_code) { - Optional optionalTask = tasks.stream() - .filter(task -> StrUtil.equals(task.getNext_device_code(), device_code) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.READY.getIndex()) - ) - .findFirst(); - return optionalTask.orElse(null); - } - - @Override public TaskDto findByStartCode(String device_code) { return Optional @@ -1442,39 +1194,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme .collect(Collectors.toList()); } - @Override - public List findByStartCodeAndBusy(String deviceCode) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> StrUtil.equals(task.getStart_device_code(), deviceCode) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) - .limit(2) - .collect(Collectors.toList()); - } - - - @Override - public Integer querySameOriginTask(String code) { - return (int) Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> StrUtil.equals(task.getStart_device_code(), code)) - .count(); - } - - @Override - public Integer querySameDestinationTask(String code) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(taskDto -> StrUtil.equals(taskDto.getNext_device_code(), code)) - .collect(Collectors.toList()) - .size(); - } @Override public Integer querySameDeviceReadyTask(String start_device, String next_device, String status) { @@ -1492,68 +1211,13 @@ public class TaskServiceImpl extends CommonServiceImpl impleme return num; } - @Override - public String queryAssignedByDeviceCode(String device_code, String task_nextDeice_code) { - List list = - deviceAssignedService.queryAssignedByDevice(device_code, task_nextDeice_code); - for (int i = 0; i < list.size(); i++) { - DeviceAssignedDto dto = list.get(i); - String deviceCode = dto.getDevice_code(); - String inst_nextDevice_code = dto.getInst_nextDevice_code(); - JSONObject param = JSON.parseObject(dto.getParam()); - List pathList = this.getPathList(inst_nextDevice_code); - for (int j = 0; j < pathList.size(); j++) { - String inst_next_device_code = pathList.get(j); - String limit = param.getString("limit"); - Boolean inOut = param.getBoolean("inOut"); - if (inOut) { - Device device = deviceAppService.findDeviceByCode(deviceCode); - if (device != null) { - if (StrUtil.equals(device.getDevice_type(), DeviceType.storage.toString())) { - if (instructionService.querySameNextDeviceCodeInstByIn(inst_next_device_code)) { - return inst_next_device_code; - } - } else { - if (instructionService.querySameNextDeviceCodeInstByOut(inst_next_device_code)) { - return inst_next_device_code; - } - } - } - } else { - Integer sameInstNum = instructionService.querySameDestinationInst(inst_next_device_code); - if (sameInstNum < Integer.parseInt(limit)) { - return inst_next_device_code; - } - } - } - } - return null; - } @Override public TaskDto findByTaskCode(String task_code) { - - List list = new ArrayList<>(); - Iterator iterator = tasks.iterator(); - while (iterator.hasNext()) { - TaskDto task = iterator.next(); - if (StrUtil.equals(task.getTask_code(), task_code)) { - return task; - } - } - return null; - } - - @Override - public TaskDto findReadyTaskByNextDeviceCode(String next_device_code, List checkoutStartDeviceCode) { return Optional.ofNullable(this.tasks) .orElse(new CopyOnWriteArrayList<>()) .stream() - .filter(taskDto -> TaskStatusEnum.READY.getIndex().equals(taskDto.getTask_status())) - .filter(taskDto -> taskDto.getNext_device_code().equals(next_device_code)) - .filter(taskDto -> !checkoutStartDeviceCode.contains(taskDto.getStart_device_code())) - .sorted(Comparator.comparing(TaskDto::getPriority) - .thenComparing(taskDto -> LocalDateTime.parse(taskDto.getCreate_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))) + .filter(taskDto -> taskDto.getTask_code().equals(task_code)) .findFirst() .orElse(null); } @@ -1586,20 +1250,17 @@ public class TaskServiceImpl extends CommonServiceImpl impleme TaskDto entity = this.findById(taskDto.getTask_id()); String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue(); if (!StrUtil.startWith(taskDto.getTask_code(), CommonFinalParam.HYPHEN_) && StrUtil.equals(hasWms, CommonFinalParam.ONE)) { -// FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest(); -// request.setTask_id(taskDto.getExt_task_id()); -// request.setTask_code(taskDto.getTask_code()); -// request.setTask_status(taskDto.getTask_status()); -// request.setRequest_medthod_code(RequestMethodEnum.feedback_task_status.getCode()); -// request.setRequest_medthod_name(RequestMethodEnum.feedback_task_status.getName()); - JSONObject feed_jo = new JSONObject(); - feed_jo.put("task_id", entity.getExt_task_id()); - feed_jo.put("task_code", entity.getTask_code()); - feed_jo.put("task_status", entity.getTask_status()); - JSONArray ja = new JSONArray(); - ja.add(feed_jo); - //TODO 有需要根据上位系统反馈的信息再做进一步处理 - acstowmsService.feedbackTaskStatusToWms(ja); + JSONObject param = new JSONObject(); + param.put("taskCode", entity.getTask_code()); + param.put("status", ""); + CommonRequest request = + CommonRequest + .builder() + .service("Task") + .type("status") + .data(param) + .build(); + acstowmsService.apply(request); } } @@ -1631,38 +1292,35 @@ public class TaskServiceImpl extends CommonServiceImpl impleme } @Override - public List findReadyTaskByXDeviceCode(List xDeviceCodeList, String noY) { - String currentNoY = noY == null ? "" : noY; + public TaskDto findReadyTaskByNextDeviceCode(String next_device_code, List checkoutStartDeviceCode) { return Optional.ofNullable(this.tasks) .orElse(new CopyOnWriteArrayList<>()) .stream() - .filter(taskDto -> xDeviceCodeList.contains(taskDto.getStart_device_code())) - .filter(taskDto -> xDeviceCodeList.contains(taskDto.getNext_device_code())) - .filter(taskDto -> StrUtil.isNotBlank(taskDto.getFrom_y()) && StrUtil.isNotBlank(taskDto.getTo_y()) && !currentNoY.contains(String.valueOf(Integer.parseInt(taskDto.getFrom_y()))) && !currentNoY.contains(String.valueOf(Integer.parseInt(taskDto.getTo_y())))) + .filter(taskDto -> TaskStatusEnum.READY.getIndex().equals(taskDto.getTask_status())) + .filter(taskDto -> taskDto.getNext_device_code().equals(next_device_code)) + .filter(taskDto -> !checkoutStartDeviceCode.contains(taskDto.getStart_device_code())) .sorted(Comparator.comparing(TaskDto::getPriority) .thenComparing(taskDto -> LocalDateTime.parse(taskDto.getCreate_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))) - .collect(Collectors.toList()); + .findFirst() + .orElse(null); } @Override - public TaskDto findReadyTaskByFrontTask(TaskDto frontTaskDto, List xDeviceCodeList, String backNoY) { - String currentBackNoY = backNoY == null ? "" : backNoY; + public List findReadyTaskByXDeviceCode(List xDeviceCodeList, String noY) { + String currentNoY = noY == null ? "" : noY; return Optional.ofNullable(this.tasks) .orElse(new CopyOnWriteArrayList<>()) .stream() + .filter(taskDto -> taskDto.getTask_status().equals(TaskStatusEnum.READY.getIndex()) || (ObjectUtil.isEmpty(instructionService.findByTaskCodeFromCache(taskDto.getTask_code())) && taskDto.getTask_status().equals(TaskStatusEnum.BUSY.getIndex()))) .filter(taskDto -> xDeviceCodeList.contains(taskDto.getStart_device_code())) .filter(taskDto -> xDeviceCodeList.contains(taskDto.getNext_device_code())) - .filter(taskDto -> !currentBackNoY.contains(String.valueOf(Integer.parseInt(taskDto.getFrom_y()))) && !currentBackNoY.contains(String.valueOf(Integer.parseInt(taskDto.getTo_y())))) - .filter(taskDto -> Integer.parseInt(frontTaskDto.getFrom_x()) == Integer.parseInt(taskDto.getFrom_x())) - .filter(taskDto -> Integer.parseInt(frontTaskDto.getFrom_z()) == Integer.parseInt(taskDto.getFrom_z())) - .filter(taskDto -> Integer.parseInt(frontTaskDto.getTo_x()) == Integer.parseInt(taskDto.getTo_x())) - .filter(taskDto -> Integer.parseInt(frontTaskDto.getTo_z()) == Integer.parseInt(taskDto.getTo_z())) - .filter(taskDto -> (Integer.parseInt(frontTaskDto.getTo_y()) / 4 == Integer.parseInt(taskDto.getTo_y()) / 4) && (((Integer.parseInt(frontTaskDto.getTo_y()) % 4) + (Integer.parseInt(taskDto.getTo_y()) % 4) == 2) || (Integer.parseInt(frontTaskDto.getTo_y()) % 4) + (Integer.parseInt(taskDto.getTo_y()) % 4) == 4)) - .filter(taskDto -> (Integer.parseInt(frontTaskDto.getFrom_y()) / 4 == Integer.parseInt(taskDto.getFrom_y()) / 4) && (((Integer.parseInt(frontTaskDto.getFrom_y()) % 4) + (Integer.parseInt(taskDto.getFrom_y()) % 4) == 2) || (Integer.parseInt(frontTaskDto.getFrom_y()) % 4) + (Integer.parseInt(taskDto.getFrom_y()) % 4) == 4)) - .findFirst() - .orElse(null); + .filter(taskDto -> StrUtil.isNotBlank(taskDto.getFrom_y()) && StrUtil.isNotBlank(taskDto.getTo_y()) && !currentNoY.contains(String.valueOf(Integer.parseInt(taskDto.getFrom_y()))) && !currentNoY.contains(String.valueOf(Integer.parseInt(taskDto.getTo_y())))) + .sorted(Comparator.comparing(TaskDto::getPriority) + .thenComparing(taskDto -> LocalDateTime.parse(taskDto.getCreate_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))) + .collect(Collectors.toList()); } + @Override public TaskDto findAllBindTask(TaskDto frontTask, String backNoY) { String front_task_code = frontTask.getTask_code(); @@ -1676,6 +1334,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme return Optional.ofNullable(this.tasks) .orElse(new CopyOnWriteArrayList<>()) .stream() + .filter(taskDto -> taskDto.getTask_status().equals(TaskStatusEnum.READY.getIndex())) .filter(taskDto -> !taskDto.getTask_code().equals(front_task_code)) .filter(taskDto -> taskDto.getFrom_x().equals(front_from_x) && taskDto.getFrom_z().equals(front_from_z)) .filter(taskDto -> taskDto.getTo_x().equals(front_to_x) && taskDto.getTo_z().equals(front_to_z)) @@ -1694,13 +1353,11 @@ public class TaskServiceImpl extends CommonServiceImpl impleme String front_from_x = frontTask.getFrom_x(); String front_from_y = frontTask.getFrom_y(); String front_from_z = frontTask.getFrom_z(); - String front_to_x = frontTask.getTo_x(); - String front_to_y = frontTask.getTo_y(); - String front_to_z = frontTask.getTo_z(); String currentBackNoY = backNoY == null ? "" : backNoY; return Optional.ofNullable(this.tasks) .orElse(new CopyOnWriteArrayList<>()) .stream() + .filter(taskDto -> taskDto.getTask_status().equals(TaskStatusEnum.READY.getIndex())) .filter(taskDto -> !taskDto.getTask_code().equals(front_task_code)) .filter(taskDto -> taskDto.getFrom_x().equals(front_from_x) && taskDto.getFrom_z().equals(front_from_z)) .filter(taskDto -> StrUtil.isNotBlank(taskDto.getFrom_y()) && StrUtil.isNotBlank(taskDto.getTo_y()) && !currentBackNoY.contains(String.valueOf(Integer.parseInt(taskDto.getFrom_y()))) && !currentBackNoY.contains(String.valueOf(Integer.parseInt(taskDto.getTo_y())))) @@ -1710,4 +1367,28 @@ public class TaskServiceImpl extends CommonServiceImpl impleme .findFirst() .orElse(null); } + + @Override + public void cancelNoSendWms(String task_id) { + TaskDto entity = this.findById(task_id); + if (entity == null) { + throw new BadRequestException(LangProcess.msg("error_sysAuth")); + } + + InstructionDto instdto = instructionService.findByTaskid(task_id, "instruction_status <2 "); + if (instdto != null) { + throw new BadRequestException(LangProcess.msg("task_insRun")); + } + + String currentUsername = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_time(now); + entity.setUpdate_by(currentUsername); + entity.setTask_status(TaskStatusEnum.CANCEL.getIndex()); + + Task task = ConvertUtil.convert(entity, Task.class); + taskMapper.updateById(task); + //移除任务缓存信息 + this.removeByCodeFromCache(entity.getTask_code()); + } }