|
|
@ -12,6 +12,7 @@ import com.alibaba.fastjson.JSONObject; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.Synchronized; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.apache.commons.lang3.ObjectUtils; |
|
|
|
import org.nl.acs.AcsConfig; |
|
|
|
import org.nl.acs.agv.server.XianGongAgvService; |
|
|
|
import org.nl.acs.auto.initial.ApplicationAutoInitial; |
|
|
@ -1085,64 +1086,145 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { |
|
|
|
return instdto; |
|
|
|
} |
|
|
|
|
|
|
|
// @Override
|
|
|
|
// public Instruction createInst(String ids) throws Exception {
|
|
|
|
// TaskDto acsTask = this.findById(ids);
|
|
|
|
// if (acsTask == null) {
|
|
|
|
// throw new BadRequestException("被删除或无权限,操作失败!");
|
|
|
|
// }
|
|
|
|
// DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class);
|
|
|
|
// InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl");
|
|
|
|
// InstructionDto inst = instructionservice.findByTaskid(ids, "instruction_status < 2 ");
|
|
|
|
// if (inst != null) {
|
|
|
|
// throw new BadRequestException("有指令未完成!");
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// String taskid = acsTask.getTask_id();
|
|
|
|
// String taskcode = acsTask.getTask_code();
|
|
|
|
// String vehiclecode = acsTask.getVehicle_code();
|
|
|
|
// String priority = acsTask.getPriority();
|
|
|
|
// String start_point_code = acsTask.getStart_point_code();
|
|
|
|
// String start_device_code = acsTask.getStart_device_code();
|
|
|
|
// String route_plan_code = acsTask.getRoute_plan_code();
|
|
|
|
// String vehicleType = acsTask.getVehicle_type();
|
|
|
|
// // 是否复合任务 =0非复合任务
|
|
|
|
// String compound_task = acsTask.getCompound_task();
|
|
|
|
// String next_point_code = acsTask.getNext_point_code();
|
|
|
|
// String next_device_code = acsTask.getNext_device_code();
|
|
|
|
// String start_point_code2 = acsTask.getStart_point_code2();
|
|
|
|
// String next_point_code2 = acsTask.getNext_point_code2();
|
|
|
|
// String agv_system_type = acsTask.getAgv_system_type();
|
|
|
|
// String task_type = acsTask.getTask_type();
|
|
|
|
// /** 开始平均分解校验 */
|
|
|
|
// String this_device_code =
|
|
|
|
// this.queryAssignedByDevice(acsTask.getStart_device_code(), acsTask.getNext_device_code());
|
|
|
|
// if (StrUtil.isEmpty(this_device_code)) {
|
|
|
|
// List<RouteLineDto> shortPathsList =
|
|
|
|
// routeLineService.getShortPathLines(
|
|
|
|
// start_device_code, acsTask.getNext_device_code(), route_plan_code);
|
|
|
|
// RouteLineDto routeLineDto = shortPathsList.get(0);
|
|
|
|
// String path = routeLineDto.getPath();
|
|
|
|
// String type = routeLineDto.getType();
|
|
|
|
// String[] str = path.split("->");
|
|
|
|
// List<String> pathlist = Arrays.asList(str);
|
|
|
|
// int index = 0;
|
|
|
|
// for (int m = 0; m < pathlist.size(); m++) {
|
|
|
|
// if (pathlist.get(m).equals(start_device_code)) {
|
|
|
|
// index = m + 1;
|
|
|
|
// break;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// next_device_code = pathlist.get(index);
|
|
|
|
// } else {
|
|
|
|
// next_device_code = this_device_code;
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// if (StrUtil.equals(appService.findDeviceTypeByCode(next_device_code), "storage")) {
|
|
|
|
// next_point_code = next_device_code + "-" + acsTask.getTo_y() + "-" + acsTask.getTo_z();
|
|
|
|
// } else {
|
|
|
|
// next_point_code = next_device_code;
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// Instruction instdto = new Instruction();
|
|
|
|
// instdto.setInstruction_type(task_type);
|
|
|
|
// instdto.setInstruction_id(IdUtil.simpleUUID());
|
|
|
|
// instdto.setRoute_plan_code(route_plan_code);
|
|
|
|
// instdto.setRemark(acsTask.getRemark());
|
|
|
|
// instdto.setMaterial(acsTask.getMaterial());
|
|
|
|
// instdto.setQuantity(acsTask.getQuantity());
|
|
|
|
// instdto.setTask_id(taskid);
|
|
|
|
// instdto.setTask_code(taskcode);
|
|
|
|
// instdto.setVehicle_code(vehiclecode);
|
|
|
|
// String now = DateUtil.now();
|
|
|
|
// instdto.setCreate_time(now);
|
|
|
|
// instdto.setCreate_by("auto");
|
|
|
|
// instdto.setStart_device_code(start_device_code);
|
|
|
|
// instdto.setNext_device_code(next_device_code);
|
|
|
|
// instdto.setStart_point_code(start_point_code);
|
|
|
|
// instdto.setNext_point_code(next_point_code);
|
|
|
|
// instdto.setPriority(priority);
|
|
|
|
// instdto.setInstruction_status("0");
|
|
|
|
// instdto.setExecute_device_code(start_point_code);
|
|
|
|
// instdto.setVehicle_type(vehicleType);
|
|
|
|
// instdto.setStart_point_code2(start_point_code2);
|
|
|
|
// instdto.setStart_device_code2(start_point_code2);
|
|
|
|
// instdto.setNext_device_code2(next_point_code2);
|
|
|
|
// instdto.setNext_point_code2(next_point_code2);
|
|
|
|
// instdto.setAgv_system_type(agv_system_type);
|
|
|
|
// instdto.setAgv_inst_type("1");
|
|
|
|
// instructionservice.create2(instdto);
|
|
|
|
//
|
|
|
|
// // acsTask.setTask_status("1");
|
|
|
|
// // this.update(acsTask);
|
|
|
|
// return instdto;
|
|
|
|
// }
|
|
|
|
|
|
|
|
@Override |
|
|
|
public Instruction createInst(String ids) throws Exception { |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void createInst(String ids) throws Exception { |
|
|
|
TaskDto acsTask = this.findById(ids); |
|
|
|
if (acsTask == null) { |
|
|
|
throw new BadRequestException("被删除或无权限,操作失败!"); |
|
|
|
} |
|
|
|
DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); |
|
|
|
if (acsTask == null) throw new BadRequestException("被删除或无权限,操作失败!"); |
|
|
|
InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl"); |
|
|
|
InstructionDto inst = instructionservice.findByTaskid(ids, "instruction_status < 2 "); |
|
|
|
if (inst != null) { |
|
|
|
throw new BadRequestException("有指令未完成!"); |
|
|
|
} |
|
|
|
|
|
|
|
String taskid = acsTask.getTask_id(); |
|
|
|
String taskcode = acsTask.getTask_code(); |
|
|
|
String task_type = acsTask.getTask_type(); |
|
|
|
String vehiclecode = acsTask.getVehicle_code(); |
|
|
|
String storage_task_type = acsTask.getStorage_task_type(); |
|
|
|
String priority = acsTask.getPriority(); |
|
|
|
String start_point_code = acsTask.getStart_point_code(); |
|
|
|
String is_send = acsTask.getIs_send(); |
|
|
|
|
|
|
|
String start_device_code = acsTask.getStart_device_code(); |
|
|
|
String route_plan_code = acsTask.getRoute_plan_code(); |
|
|
|
String vehicleType = acsTask.getVehicle_type(); |
|
|
|
// 是否复合任务 =0非复合任务
|
|
|
|
String compound_task = acsTask.getCompound_task(); |
|
|
|
String next_point_code = acsTask.getNext_point_code(); |
|
|
|
String start_point_code = acsTask.getStart_point_code(); |
|
|
|
|
|
|
|
String put_device_code = acsTask.getPut_device_code(); |
|
|
|
String put_point_code = acsTask.getPut_point_code(); |
|
|
|
|
|
|
|
String next_device_code = acsTask.getNext_device_code(); |
|
|
|
String next_point_code = acsTask.getNext_point_code(); |
|
|
|
|
|
|
|
String start_point_code2 = acsTask.getStart_point_code2(); |
|
|
|
String start_device_code2 = acsTask.getStart_device_code2(); |
|
|
|
|
|
|
|
String next_point_code2 = acsTask.getNext_point_code2(); |
|
|
|
String next_device_code2 = acsTask.getNext_device_code2(); |
|
|
|
|
|
|
|
|
|
|
|
String route_plan_code = acsTask.getRoute_plan_code(); |
|
|
|
String vehicleType = acsTask.getVehicle_type(); |
|
|
|
String agv_system_type = acsTask.getAgv_system_type(); |
|
|
|
String task_type = acsTask.getTask_type(); |
|
|
|
/** 开始平均分解校验 */ |
|
|
|
String this_device_code = |
|
|
|
this.queryAssignedByDevice(acsTask.getStart_device_code(), acsTask.getNext_device_code()); |
|
|
|
if (StrUtil.isEmpty(this_device_code)) { |
|
|
|
List<RouteLineDto> shortPathsList = |
|
|
|
routeLineService.getShortPathLines( |
|
|
|
start_device_code, acsTask.getNext_device_code(), route_plan_code); |
|
|
|
RouteLineDto routeLineDto = shortPathsList.get(0); |
|
|
|
String path = routeLineDto.getPath(); |
|
|
|
String type = routeLineDto.getType(); |
|
|
|
String[] str = path.split("->"); |
|
|
|
List<String> pathlist = Arrays.asList(str); |
|
|
|
int index = 0; |
|
|
|
for (int m = 0; m < pathlist.size(); m++) { |
|
|
|
if (pathlist.get(m).equals(start_device_code)) { |
|
|
|
index = m + 1; |
|
|
|
break; |
|
|
|
} |
|
|
|
if (StrUtil.isEmpty(start_device_code)) { |
|
|
|
throw new BadRequestException("起点设备为空,无法生成指令。"); |
|
|
|
} |
|
|
|
next_device_code = pathlist.get(index); |
|
|
|
} else { |
|
|
|
next_device_code = this_device_code; |
|
|
|
if (StrUtil.isEmpty(next_device_code)) { |
|
|
|
throw new BadRequestException("终点设备为空,无法生成指令。"); |
|
|
|
} |
|
|
|
|
|
|
|
if (StrUtil.equals(appService.findDeviceTypeByCode(next_device_code), "storage")) { |
|
|
|
next_point_code = next_device_code + "-" + acsTask.getTo_y() + "-" + acsTask.getTo_z(); |
|
|
|
} else { |
|
|
|
next_point_code = next_device_code; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Instruction instdto = new Instruction(); |
|
|
|
instdto.setInstruction_type(task_type); |
|
|
@ -1157,25 +1239,32 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { |
|
|
|
String now = DateUtil.now(); |
|
|
|
instdto.setCreate_time(now); |
|
|
|
instdto.setCreate_by("auto"); |
|
|
|
|
|
|
|
instdto.setStart_device_code(start_device_code); |
|
|
|
instdto.setNext_device_code(next_device_code); |
|
|
|
instdto.setStart_point_code(start_point_code); |
|
|
|
instdto.setPut_device_code(put_device_code); |
|
|
|
instdto.setPut_point_code(put_point_code); |
|
|
|
instdto.setNext_device_code(next_device_code); |
|
|
|
instdto.setNext_point_code(next_point_code); |
|
|
|
|
|
|
|
instdto.setStart_point_code2(start_point_code2); |
|
|
|
instdto.setStart_device_code2(start_device_code2); |
|
|
|
instdto.setNext_point_code2(next_point_code2); |
|
|
|
instdto.setNext_device_code2(next_device_code2); |
|
|
|
|
|
|
|
instdto.setPriority(priority); |
|
|
|
instdto.setInstruction_status("0"); |
|
|
|
instdto.setExecute_device_code(start_point_code); |
|
|
|
instdto.setVehicle_type(vehicleType); |
|
|
|
instdto.setStart_point_code2(start_point_code2); |
|
|
|
instdto.setStart_device_code2(start_point_code2); |
|
|
|
instdto.setNext_device_code2(next_point_code2); |
|
|
|
instdto.setNext_point_code2(next_point_code2); |
|
|
|
instdto.setAgv_system_type(agv_system_type); |
|
|
|
instdto.setAgv_inst_type("1"); |
|
|
|
instructionservice.create2(instdto); |
|
|
|
|
|
|
|
// acsTask.setTask_status("1");
|
|
|
|
// this.update(acsTask);
|
|
|
|
return instdto; |
|
|
|
|
|
|
|
try { |
|
|
|
instructionService.create(instdto); |
|
|
|
} catch (Exception e) { |
|
|
|
acsTask.setRemark(e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|