Browse Source

rev:堆垛机、输送线逻辑

master
耿宝印 1 year ago
parent
commit
fb590f1269
  1. 108
      nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/appearance_inspection_scannner_conveyor/AppearanceInspectionScannerConveyorDeviceDriver.java
  2. 342
      nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/stacker/double_stacker/StandardStackerDeviceDriver.java
  3. 37
      nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/station/with_station/WithStationDeviceDriver.java
  4. 15
      nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java
  5. 175
      nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java
  6. 157
      nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java
  7. 425
      nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java

108
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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> response = acsToWmsService.applyTaskToWms(requestParam);
CommonRequest request =
CommonRequest.builder()
.service("InStorage")
.type("palletInStorageTask")
.data(param)
.build();
UnifiedResponse<JSONObject> 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<JSONObject> 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<JSONObject> response = acsToWmsService.apply(request);
// if (response.isSuccess()) {
// this.requireSuccess = true;
// }
}
}
@ -320,11 +347,22 @@ public class AppearanceInspectionScannerConveyorDeviceDriver extends AbstractOpc
* @return
*/
private UnifiedResponse<JSONObject> 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<JSONObject> response = this.applyAgvTask(instruction.getVehicle_code());
if (!response.isSuccess()) {
if (response == null || !response.isSuccess()) {
return;
}
}

342
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<Integer> 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<Integer> 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<String> 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<Object> 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<String> 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<Object> 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<String> 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<Object> 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<String> 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<Object> 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<String> 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<Object> 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<String> 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<Object> 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<String> 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<Object> 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<String> 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<Object> 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<TaskDto> 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<Instruction> 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<Instruction> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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"));

37
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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> 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<JSONObject> response = acsToWmsService.apply(request);
if (response.isSuccess()) {
appearanceInspectionScannerConveyorDeviceDriver.setRequireSuccess(true);
this.requireSuccess = true;

15
nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java

@ -159,6 +159,9 @@ public interface InstructionService extends CommonService<InstructionMybatis> {
*/
Instruction findByTaskcode(String code);
Instruction findByTaskCodeFromCache(String code);
/**
* 根据任务code查询
*
@ -266,6 +269,8 @@ public interface InstructionService extends CommonService<InstructionMybatis> {
*/
void cancel(String id) throws Exception;
void cancelInstAndTask(String id) throws Exception;
/**
* 取消指令
*
@ -393,14 +398,6 @@ public interface InstructionService extends CommonService<InstructionMybatis> {
*/
boolean removeByCodeFromCache(String code);
/**
* 创建关联指令
*
* @param type
* @param inst
* @return
*/
boolean createLkInst(String type, Instruction inst);
/**
* 初始化指令
@ -544,4 +541,6 @@ public interface InstructionService extends CommonService<InstructionMybatis> {
List<Instruction> findReadyInstBySpecialDevice(List<String> getDeviceCodeList, List<String> specialGetDevice, List<String> specialPutDevice);
Instruction findReadyInstBySpecialDeviceAndStartDeviceCode(List<String> getDeviceCodeList, List<String> specialGetDevice, List<String> specialPutDevice, String front_start_device_code);
void cancelInstAndTaskNoSendWms(String instruction_id);
}

175
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<InstructionMapper,
@Autowired
private TaskService taskService;
@Autowired
private AcsToLiKuService acsToLiKuService;
@Autowired
private XianGongAgvService xiangGongAgvService;
@Autowired
private LimitRegionalService limitRegionalService;
@ -315,6 +310,16 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
return ConvertUtil.convert(ins, Instruction.class);
}
@Override
public Instruction findByTaskCodeFromCache(String task_code) {
return Optional.ofNullable(this.instructions)
.orElse(new CopyOnWriteArrayList<>())
.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<InstructionMapper,
e.printStackTrace();
log.warn("下发AGV指令异常:" + e);
}
} else {
// Boolean result = createLkInst(task.getStorage_task_type(),dto);
Resp resp = acsToLiKuService.sendInst(task.getStorage_task_type(), dto);
if (StrUtil.equals(resp.result, "true")) {
dto.setSend_status("1");
} else {
dto.setSend_status("2");
}
}
}
//判断是否是仙工AGV
@ -606,13 +603,6 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
&& ObjectUtil.isNotEmpty(task.getAgv_system_type())) {
NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvService.class);
ndcAgvService.sendAgvInstToNDC(task.getAgv_system_type(), dto);
} else {
Resp resp = acsToLiKuService.sendInst(task.getStorage_task_type(), dto);
if (StrUtil.equals(resp.result, "true")) {
dto.setSend_status("1");
} else {
dto.setSend_status("2");
}
}
}
} catch (Exception e) {
@ -1102,29 +1092,6 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
if (flag) {
if (StrUtil.equals(entity.getInstruction_type(), "7")) {
CancelTaskRequest cancelTaskRequest = new CancelTaskRequest();
cancelTaskRequest.setOrderId(entity.getInstruction_code());
cancelTaskRequest.setPalletCode(entity.getVehicle_code());
cancelTaskRequest.setSrcLocation(entity.getStart_point_code());
cancelTaskRequest.setDestLocation(entity.getNext_point_code());
// 1 入库,2 出库,3 移库,4 空托盘入库,5 空托盘出库
int type = 0;
if (StrUtil.equals(task.getStorage_task_type(), CommonFinalParam.ONE)) {
type = 1;
} else if (StrUtil.equals(task.getStorage_task_type(), "2")) {
type = 4;
} else if (StrUtil.equals(task.getStorage_task_type(), "3")) {
type = 2;
} else if (StrUtil.equals(task.getStorage_task_type(), "4")) {
type = 5;
} else if (StrUtil.equals(task.getStorage_task_type(), "5")) {
type = 3;
}
cancelTaskRequest.setTaskType(type);
acsToLiKuService.cancelTask(cancelTaskRequest);
}
String currentUsername = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
entity.setUpdate_time(now);
@ -1170,6 +1137,26 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
// this.reload();
}
@Override
public void cancelInstAndTask(String id) throws Exception {
InstructionDto entity = this.findById(id);
if (entity == null) {
throw new BadRequestException(LangProcess.msg("error_sysAuth"));
}
String currentUsername = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
entity.setUpdate_time(now);
entity.setUpdate_by(currentUsername);
entity.setInstruction_status(InstructionStatusEnum.CANCEL.getIndex());
InstructionMybatis ins = ConvertUtil.convert(entity, InstructionMybatis.class);
instructionMapper.updateById(ins);
removeByCodeFromCache(entity.getInstruction_code());
TaskDto taskDto = taskService.findByCodeFromCache(entity.getTask_code());
if (taskDto != null) {
taskService.cancel(entity.getTask_id());
}
}
@Override
public void forceCancel(String id) throws Exception {
// flag= true时取消指令
@ -1518,88 +1505,6 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
return true;
}
@Override
public boolean createLkInst(String type, Instruction dto) {
Class var3 = TaskInstructionLock.class;
synchronized (TaskInstructionLock.class) {
// 入库
AcsToLiKuService acsToLiKuService = SpringContextHolder.getBean(AcsToLiKuService.class);
Resp resp = null;
if (StrUtil.equals(type, CommonFinalParam.ONE)) {
InStoreRequest request = new InStoreRequest();
request.setFloorNo(Integer.parseInt(dto.getTo_z()));
request.setType(1);
request.setPalletCode(dto.getVehicle_code());
request.setOrderId(dto.getInstruction_code());
request.setSrcLocation(dto.getStart_point_code());
request.setDestLocation(dto.getNext_point_code());
resp = acsToLiKuService.inStore(request);
// 空托入库
} else if (StrUtil.equals(type, "2")) {
InStoreRequest request = new InStoreRequest();
request.setFloorNo(Integer.parseInt(dto.getTo_z()));
request.setType(2);
request.setPalletCode(dto.getVehicle_code());
request.setOrderId(dto.getInstruction_code());
request.setSrcLocation(dto.getStart_point_code());
request.setDestLocation(dto.getNext_point_code());
resp = acsToLiKuService.inStore(request);
// 出库
} else if (StrUtil.equals(type, "3")) {
OutStoreRequest outStore = new OutStoreRequest();
BaseStoreRequest baseReq = new BaseStoreRequest();
List<BaseStoreRequest> 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<BaseStoreRequest> 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<InstructionMapper,
return null;
}
@Override
public void cancelInstAndTaskNoSendWms(String instruction_id) {
InstructionDto entity = this.findById(instruction_id);
if (entity == null) {
throw new BadRequestException(LangProcess.msg("error_sysAuth"));
}
String currentUsername = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
entity.setUpdate_time(now);
entity.setUpdate_by(currentUsername);
entity.setInstruction_status(InstructionStatusEnum.CANCEL.getIndex());
InstructionMybatis ins = ConvertUtil.convert(entity, InstructionMybatis.class);
instructionMapper.updateById(ins);
removeByCodeFromCache(entity.getInstruction_code());
TaskDto taskDto = taskService.findByCodeFromCache(entity.getTask_code());
if (taskDto != null) {
taskService.cancelNoSendWms(entity.getTask_id());
}
}
}

157
nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java

@ -21,8 +21,6 @@ import java.util.Set;
*/
public interface TaskService extends CommonService<Task> {
static final String CACHE_KEY = "task";
/**
* 查询数据分页
*
@ -48,14 +46,6 @@ public interface TaskService extends CommonService<Task> {
*/
Task getById(String id);
/**
* 根据设备号和任务状态查询
*
* @param device_code
* @return
*/
List<TaskDto> queryTaskByDeviceCodeAndStatus2(String device_code);
/**
* 根据ID查询
*
@ -96,14 +86,6 @@ public interface TaskService extends CommonService<Task> {
*/
int removeByIds(Set<String> ids);
/**
* 导出数据
* @param all 待导出的数据
* @param response /
* @throws IOException /
*/
// void download(List<TaskDto> all, HttpServletResponse response) throws IOException;
/**
* 查询数据分页
*
@ -113,15 +95,6 @@ public interface TaskService extends CommonService<Task> {
*/
Map<String, Object> queryAll(Map whereJson, Pageable page);
/**
* 在缓存中查询所有任务列表
*
* @param whereJson 条件
* @param page 分页参数
* @return
*/
Map<String, Object> queryAllByCache(Map whereJson, Pageable page);
/**
* 数据同步
*/
@ -160,37 +133,7 @@ public interface TaskService extends CommonService<Task> {
*/
List<TaskDto> queryAll(Map whereJson);
/**
* 根据ID查询
*
* @param task_id ID
* @return AcsTask
*/
// TaskDto findById(String task_id);
/**
* 查询所有未完成任务
*
* @param whereJson 条件参数
* @return List<AcsTaskDto>
*/
List<TaskDto> queryAllUnfinished(Map whereJson);
/**
* 根据状态查询
*
* @param task_status task_status
* @return AcsTask
*/
List<TaskDto> queryByStauts(String task_status);
/**
* 根绝状态查询缓存
*
* @param task_status
* @return
*/
List<TaskDto> findByTaskStatus(String task_status);
/**
* 根据编码查询
@ -200,55 +143,6 @@ public interface TaskService extends CommonService<Task> {
*/
TaskDto findByCode(String code);
/**
* 根据设备号查询未执行的任务
*
* @param device_code
* @return
*/
List<TaskDto> queryTaskByDeviceCode(String device_code);
/**
* 根据设备号查询未执行的任务
*
* @param start_device_code
* @return List<TaskDto>
*/
List<TaskDto> queryTaskByStartDeviceCode(String start_device_code);
/**
* 根据设备号查询未执行的任务
*
* @param back_start_device_code
* @return List<TaskDto></TaskDto>
*/
List<TaskDto> queryTaskByBackDeviceCode(String back_start_device_code);
/**
* 根据设备号和任务状态查询
*
* @param device_code
* @return List<TaskDto></TaskDto>
*/
List<TaskDto> queryTaskByDeviceCodeAndStatus(String device_code);
/**
* 根据前工位取货点查找执行中的任务
*
* @param head_start_device_code
* @return List<TaskDto></TaskDto>
*/
List<TaskDto> queryTaskByStartAndIntStatus(String head_start_device_code);
/**
* 根据后工位取货点查找执行中的任务
*
* @param head_next_device_code
* @return List<TaskDto></TaskDto>
*/
List<TaskDto> queryTaskByNextAndIntStatus(String head_next_device_code);
/**
* 创建
*
@ -382,27 +276,9 @@ public interface TaskService extends CommonService<Task> {
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<Task> {
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<Task> {
*/
List<JSONObject> getTaskList(Map whereJson);
List<TaskDto> 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<Task> {
List<TaskDto> findReadyTaskByXDeviceCode(List<String> xDeviceCodeList, String noY);
TaskDto findReadyTaskByFrontTask(TaskDto frontTaskDto, List<String> xDeviceCodeList, String backNoY);
/**
* 移库任务根据前叉任务信息查找后叉可以一起取放的任务信息
*
@ -540,4 +384,5 @@ public interface TaskService extends CommonService<Task> {
*/
TaskDto findFrontBindTask(TaskDto frontTask, String backNoY);
void cancelNoSendWms(String task_id);
}

425
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<TaskMapper, Task> 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<TaskMapper, Task> impleme
*/
private CopyOnWriteArrayList<TaskDto> tasks = new CopyOnWriteArrayList<>();
/**
* 烘箱任务类型
*/
private static final String TASK_TYPE = "8";
@Override
public PageInfo<TaskDto> queryAll(TaskQueryParam query, Pageable pageable) {
IPage<Task> queryPage = PageUtil.toMybatisPage(pageable);
@ -135,32 +128,6 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
return taskMapper.selectById(id);
}
@Override
public List<TaskDto> queryTaskByDeviceCodeAndStatus2(String device_code) {
List<TaskDto> list = new ArrayList<>();
// Iterator<TaskDto> 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<TaskMapper, Task> impleme
return json;
}
@Override
public Map<String, Object> 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<TaskDto> 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<TaskDto> 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<String, Object> getAll(Map whereJson, Pageable page) {
String task_code = (String) whereJson.get("task_code");
@ -392,14 +296,6 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
}
@Override
public List<TaskDto> queryAllUnfinished(Map whereJson) {
List<Task> 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<TaskMapper, Task> impleme
return ConvertUtil.convert(task, TaskDto.class);
}
@Override
public List<TaskDto> 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<TaskDto> 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<TaskDto> 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<TaskDto> queryTaskByDeviceCodeAndStatus(String device_code) {
List<TaskDto> 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<TaskDto> 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<TaskDto> 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<TaskDto> queryByStauts(String status) {
List<Task> taskList = new LambdaQueryChainWrapper<>(taskMapper)
.eq(Task::getTask_status, status)
.list();
return ConvertUtil.convertList(taskList, TaskDto.class);
}
@Override
public List<TaskDto> findByTaskStatus(String status) {
List<TaskDto> taskDtoList = new ArrayList<>();
Iterator<TaskDto> 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<TaskMapper, Task> 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<TaskMapper, Task> impleme
}
@Override
public TaskDto findReadyByStartDeviceCode(String start_device_code) {
Optional<TaskDto> 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<TaskDto> optionalTask = tasks.stream()
@ -1085,17 +848,6 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
}
@Override
public TaskDto findByEndCodeAndReady(String device_code) {
Optional<TaskDto> 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<TaskMapper, Task> impleme
.collect(Collectors.toList());
}
@Override
public List<TaskDto> 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<TaskMapper, Task> impleme
return num;
}
@Override
public String queryAssignedByDeviceCode(String device_code, String task_nextDeice_code) {
List<DeviceAssignedDto> 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<String> 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<TaskDto> list = new ArrayList<>();
Iterator<TaskDto> 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<String> 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<TaskMapper, Task> 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<TaskMapper, Task> impleme
}
@Override
public List<TaskDto> findReadyTaskByXDeviceCode(List<String> xDeviceCodeList, String noY) {
String currentNoY = noY == null ? "" : noY;
public TaskDto findReadyTaskByNextDeviceCode(String next_device_code, List<String> 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<String> xDeviceCodeList, String backNoY) {
String currentBackNoY = backNoY == null ? "" : backNoY;
public List<TaskDto> findReadyTaskByXDeviceCode(List<String> 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<TaskMapper, Task> 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<TaskMapper, Task> 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<TaskMapper, Task> 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());
}
}

Loading…
Cancel
Save