fix
This commit is contained in:
@@ -6,18 +6,15 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import net.sf.json.JSONArray;
|
||||
import net.sf.json.JSONObject;
|
||||
import org.nl.acs.ext.wms.service.AcsToWmsService;
|
||||
import org.nl.acs.ext.wms.service.impl.AcsToWmsZDServiceImpl;
|
||||
import org.nl.acs.instruction.service.InstructionService;
|
||||
import org.nl.acs.instruction.service.dto.Instruction;
|
||||
import org.nl.acs.log.service.LogServer;
|
||||
import org.nl.acs.opc.DeviceAppService;
|
||||
import org.nl.exception.BadRequestException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author: geng by
|
||||
* @createDate: 2022/12/5
|
||||
* @author zhangjiangwei
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@@ -27,6 +24,9 @@ public class AgvWaitUtil {
|
||||
@Autowired
|
||||
LogServer logServer;
|
||||
|
||||
@Autowired
|
||||
InstructionService instructionService;
|
||||
|
||||
//取货前等待
|
||||
public JSONObject waitInGet(String startDeviceCode, Instruction inst) {
|
||||
log.info("仙工AGV请求取货,设备号 - {}", startDeviceCode);
|
||||
@@ -55,24 +55,14 @@ public class AgvWaitUtil {
|
||||
public JSONObject waitOutGet(String startDeviceCode, Instruction inst) {
|
||||
log.info("仙工AGV取货完成后请求离开,设备号 - {}", startDeviceCode);
|
||||
|
||||
JSONObject responseBody = acsToWmsService.gccQueryStationState(inst);
|
||||
inst.setExecute_status("2");
|
||||
instructionService.update(inst);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(responseBody) && 200 == responseBody.optInt("status")) {
|
||||
JSONArray data = responseBody.optJSONArray("data");
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
JSONObject datum = data.getJSONObject(i);
|
||||
if (startDeviceCode.equals(datum.optString("Station_Code"))
|
||||
&& !datum.optBoolean("IsHasGoods", true)) {
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("status", 200);
|
||||
map.put("message", "允许离开!");
|
||||
log.info("允许仙工AGV取货完成后请求离开,设备号 - {}", startDeviceCode);
|
||||
return map;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
throw new BadRequestException("请求失败!");
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("status", 200);
|
||||
map.put("message", "允许离开!");
|
||||
log.info("允许仙工AGV取货完成后请求离开,设备号 - {}", startDeviceCode);
|
||||
return map;
|
||||
}
|
||||
|
||||
//放货前等待
|
||||
|
||||
@@ -663,6 +663,21 @@ public class AgvServiceImpl implements AgvService {
|
||||
String agvport = acsConfigService.findConfigFromCache().get(AcsConfig.AGVPORT);
|
||||
|
||||
agvurl = agvurl + ":" + agvport + "/orders?page=1&size=9999";
|
||||
List<Instruction> insts = instructionService.findAllInstFromCache();
|
||||
if (!insts.isEmpty()) {
|
||||
JSONObject where = new JSONObject();
|
||||
where.put("relation", "OR");
|
||||
JSONArray predicates = new JSONArray();
|
||||
where.put("predicates", predicates);
|
||||
for (Instruction instruction : insts) {
|
||||
JSONArray row = new JSONArray();
|
||||
row.add("id");
|
||||
row.add("EQ");
|
||||
row.add(instruction.getInstruction_code());
|
||||
predicates.add(row);
|
||||
}
|
||||
agvurl = agvurl+ "&where=" + where;
|
||||
}
|
||||
|
||||
HttpResponse result = HttpRequest.get(agvurl)
|
||||
.timeout(20000)//超时,毫秒
|
||||
@@ -2132,26 +2147,24 @@ public class AgvServiceImpl implements AgvService {
|
||||
jo1.put("operation", "JackLoad");
|
||||
ja.add(jo1);
|
||||
|
||||
// if ("true".equals(startDevice.getExtraValue().get("ignore_pickup_check"))) {
|
||||
// //取货完成等待
|
||||
// com.alibaba.fastjson.JSONObject jo2 = new com.alibaba.fastjson.JSONObject();
|
||||
// jo2.put("blockId", IdUtil.simpleUUID());
|
||||
// jo2.put("location", inst.getStart_point_code() + "OUTGET");
|
||||
// jo2.put("operation", "script");
|
||||
// jo2.put("id", inst.getStart_point_code() + "OUTGET");
|
||||
// jo2.put("script_name", "userpy/interact.py");
|
||||
// com.alibaba.fastjson.JSONObject script_args2 = new com.alibaba.fastjson.JSONObject();
|
||||
// script_args2.put("addr", addr);
|
||||
// com.alibaba.fastjson.JSONObject data2 = new com.alibaba.fastjson.JSONObject();
|
||||
// com.alibaba.fastjson.JSONObject reach2 = new com.alibaba.fastjson.JSONObject();
|
||||
// reach2.put("task_code", inst.getInstruction_code());
|
||||
// reach2.put("address", inst.getStart_point_code() + "OUTGET");
|
||||
// data2.put("reach", reach2);
|
||||
// script_args2.put("data", data2);
|
||||
// script_args2.put("protocol", "HTTP");
|
||||
// jo2.put("script_args", script_args2);
|
||||
// ja.add(jo2);
|
||||
// }
|
||||
//取货完成等待
|
||||
com.alibaba.fastjson.JSONObject jo2 = new com.alibaba.fastjson.JSONObject();
|
||||
jo2.put("blockId", IdUtil.simpleUUID());
|
||||
jo2.put("location", inst.getStart_point_code() + "OUTGET");
|
||||
jo2.put("operation", "script");
|
||||
jo2.put("id", inst.getStart_point_code() + "OUTGET");
|
||||
jo2.put("script_name", "userpy/interact.py");
|
||||
com.alibaba.fastjson.JSONObject script_args2 = new com.alibaba.fastjson.JSONObject();
|
||||
script_args2.put("addr", addr);
|
||||
com.alibaba.fastjson.JSONObject data2 = new com.alibaba.fastjson.JSONObject();
|
||||
com.alibaba.fastjson.JSONObject reach2 = new com.alibaba.fastjson.JSONObject();
|
||||
reach2.put("task_code", inst.getInstruction_code());
|
||||
reach2.put("address", inst.getStart_point_code() + "OUTGET");
|
||||
data2.put("reach", reach2);
|
||||
script_args2.put("data", data2);
|
||||
script_args2.put("protocol", "HTTP");
|
||||
jo2.put("script_args", script_args2);
|
||||
ja.add(jo2);
|
||||
|
||||
Device nextDevice = deviceAppService.findDeviceByCode(inst.getNext_device_code());
|
||||
if ("true".equals(nextDevice.getExtraValue().get("ignore_release_check"))) {
|
||||
|
||||
@@ -70,4 +70,10 @@ public class WmsToAcsController {
|
||||
return new ResponseEntity<>(wmstoacsService.queryDevice(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/gccCancelTask")
|
||||
@Log("广钞厂取消任务")
|
||||
@ApiOperation("广钞厂取消任务")
|
||||
public ResponseEntity<Object> gccCancelTask(@RequestBody String whereJson) {
|
||||
return new ResponseEntity<>(wmstoacsService.gccCancelTask(whereJson), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,4 +52,6 @@ public interface WmsToAcsService {
|
||||
* @return Map<String, Object>
|
||||
*/
|
||||
Map<String, Object> queryDevice(String jsonObject) throws Exception;
|
||||
|
||||
Map<String, Object> gccCancelTask(String whereJson);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.acs.ext.wms.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -41,6 +42,8 @@ import org.nl.acs.route.service.RouteLineService;
|
||||
import org.nl.acs.route.service.dto.RouteLineDto;
|
||||
import org.nl.acs.task.service.TaskService;
|
||||
import org.nl.acs.task.service.dto.TaskDto;
|
||||
import org.nl.exception.BadRequestException;
|
||||
import org.nl.utils.SecurityUtils;
|
||||
import org.nl.utils.SpringContextHolder;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -69,7 +72,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
JSONObject resultJson = new JSONObject();
|
||||
log.info("createFromWms--------------:输入参数:" + tasks.toString());
|
||||
logServer.log("", "createFromWms", "info", tasks.toString(), "", "", "", "");
|
||||
try{
|
||||
try {
|
||||
JSONArray errArr = new JSONArray();
|
||||
for (int i = 0; i < tasks.size(); i++) {
|
||||
JSONObject task = tasks.getJSONObject(i);
|
||||
@@ -153,7 +156,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(TaskService.checkSameTaskByCode(task_code)){
|
||||
if (TaskService.checkSameTaskByCode(task_code)) {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("task_code", task_code);
|
||||
json.put("message", "不能存在相同的任务号!");
|
||||
@@ -227,7 +230,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
resultJson.put("message", "操作成功");
|
||||
resultJson.put("data", new JSONObject());
|
||||
log.info("createFromWms--------------:输出参数:" + resultJson.toString());
|
||||
logServer.log("", "createFromWms", "info",tasks.toString(), resultJson.toString(), "200", "", "");
|
||||
logServer.log("", "createFromWms", "info", tasks.toString(), resultJson.toString(), "200", "", "");
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
@@ -236,7 +239,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
resultJson.put("message", e.getMessage());
|
||||
resultJson.put("data", new JSONObject());
|
||||
log.info("createFromWms--------------:输出参数:" + resultJson.toString());
|
||||
logServer.log("", "createFromWms", "error",tasks.toString(), resultJson.toString(), "400", "", "");
|
||||
logServer.log("", "createFromWms", "error", tasks.toString(), resultJson.toString(), "400", "", "");
|
||||
|
||||
}
|
||||
|
||||
@@ -330,9 +333,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
electricFenceDeviceDriver = (ElectricFenceDeviceDriver) device.getDeviceDriver();
|
||||
if (electricFenceDeviceDriver.getSuspended()) {
|
||||
throw new RuntimeException("交通管制无法进入");
|
||||
} else if (StrUtil.equals(type,"1")) {
|
||||
} else if (StrUtil.equals(type, "1")) {
|
||||
electricFenceDeviceDriver.setSuspended(true);
|
||||
} else if (StrUtil.equals(type,"2")) {
|
||||
} else if (StrUtil.equals(type, "2")) {
|
||||
electricFenceDeviceDriver.setSuspended(false);
|
||||
}
|
||||
}
|
||||
@@ -938,4 +941,60 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
return resultJson;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> gccCancelTask(String whereJson) {
|
||||
try {
|
||||
log.info("gccCancelTask 请求参数:{}", whereJson);
|
||||
JSONObject param = JSONObject.fromObject(whereJson);
|
||||
String taskCode = param.optString("task_code");
|
||||
if (StrUtil.isBlank(taskCode)) {
|
||||
throw new BadRequestException("任务号不能为空,操作失败!");
|
||||
}
|
||||
|
||||
TaskDto task = TaskService.findByCode(taskCode);
|
||||
if (task == null) {
|
||||
throw new BadRequestException(taskCode + "不存在,操作失败!");
|
||||
}
|
||||
if ("2".equals(task.getTask_status())) {
|
||||
throw new BadRequestException(taskCode + "已完成,操作失败!");
|
||||
}
|
||||
|
||||
Instruction inst = InstructionService.findByTaskcode(taskCode);
|
||||
if (ObjectUtil.isNotEmpty(inst)) {
|
||||
if (Integer.parseInt(inst.getExecute_status()) >= 2) {
|
||||
throw new BadRequestException("AGV已取货完成,无法取消!");
|
||||
}
|
||||
InstructionService.cancel(inst.getInstruction_id());
|
||||
}
|
||||
|
||||
String currentUsername = SecurityUtils.getCurrentUsername();
|
||||
String now = DateUtil.now();
|
||||
task.setUpdate_time(now);
|
||||
task.setUpdate_by(currentUsername);
|
||||
task.setTask_status("3");
|
||||
|
||||
WQLObject wo = WQLObject.getWQLObject("acs_task");
|
||||
JSONObject json = JSONObject.fromObject(task);
|
||||
wo.update(json);
|
||||
//清理缓存
|
||||
for (int i = 0; i < TaskService.findAllTaskFromCache().size(); i++) {
|
||||
TaskDto taskDto = TaskService.findAllTaskFromCache().get(i);
|
||||
if (taskDto.getTask_code().equals(taskCode)) {
|
||||
TaskService.findAllTaskFromCache().remove(i);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
JSONObject resultJson = new JSONObject();
|
||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
resultJson.put("message", e.getMessage());
|
||||
log.info("gccCancelTask 响应参数:{}", resultJson);
|
||||
return resultJson;
|
||||
}
|
||||
|
||||
JSONObject resultJson = new JSONObject();
|
||||
resultJson.put("status", HttpStatus.OK.value());
|
||||
resultJson.put("message", "操作成功!");
|
||||
log.info("gccCancelTask 响应参数:{}", resultJson);
|
||||
return resultJson;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class InstructionDto implements Serializable {
|
||||
* 执行状态
|
||||
*/
|
||||
//暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域
|
||||
private String execute_status;
|
||||
private String execute_status = "0";
|
||||
|
||||
/**
|
||||
* 执行状态描述
|
||||
|
||||
@@ -42,6 +42,8 @@ public class AutoCreateInst {
|
||||
protected BusinessLogger execute_log;
|
||||
protected NoRepeatBusinessLogger device_log;
|
||||
|
||||
private volatile boolean lock = false;
|
||||
|
||||
public AutoCreateInst() {
|
||||
this.execute_log = new BusinessLoggerImpl(BusinessDomain.device_execute.name());
|
||||
this.device_log = BusinessLoggerFactory.getNoRepeatBusinessLogger(BusinessDomain.device_execute.name());
|
||||
@@ -53,48 +55,51 @@ public class AutoCreateInst {
|
||||
* 创建指令前需要判断是否条件具备:起始位置是否有货、目标位置是否有货
|
||||
*/
|
||||
public void run() throws Exception {
|
||||
TaskService taskserver = SpringContextHolder.getBean(TaskService.class);
|
||||
InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class);
|
||||
RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class);
|
||||
AcsConfigService acsConfigService = SpringContextHolder.getBean(AcsConfigService.class);
|
||||
List<TaskDto> list = taskserver.queryByStauts("0");
|
||||
DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class);
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
if (!lock) {
|
||||
lock = true;
|
||||
try {
|
||||
TaskService taskserver = SpringContextHolder.getBean(TaskService.class);
|
||||
InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class);
|
||||
RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class);
|
||||
AcsConfigService acsConfigService = SpringContextHolder.getBean(AcsConfigService.class);
|
||||
List<TaskDto> list = taskserver.queryByStauts("0");
|
||||
DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class);
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
|
||||
TaskDto acsTask = list.get(i);
|
||||
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();
|
||||
TaskDto acsTask = list.get(i);
|
||||
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();
|
||||
if (StrUtil.isEmpty(start_device_code)) {
|
||||
acsTask.setRemark("起始设备不能为空");
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
continue;
|
||||
}
|
||||
if (StrUtil.isEmpty(next_device_code)) {
|
||||
acsTask.setRemark("目标设备不能为空");
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
continue;
|
||||
}
|
||||
String maxInstnumber = acsConfigService.findConfigFromCache().get(AcsConfig.MAXINSTNUMBER);
|
||||
if (ObjectUtils.isNotEmpty(maxInstnumber)) {
|
||||
if (i >= Integer.parseInt(maxInstnumber)) {
|
||||
acsTask.setRemark("系统参数配置最大指令数为:" + maxInstnumber + "无法生成指令");
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
//是否复合任务 =0非复合任务
|
||||
String compound_task = acsTask.getCompound_task();
|
||||
String next_point_code = acsTask.getNext_point_code();
|
||||
String next_device_code = acsTask.getNext_device_code();
|
||||
if (StrUtil.isEmpty(start_device_code)) {
|
||||
acsTask.setRemark("起始设备不能为空");
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
continue;
|
||||
}
|
||||
if (StrUtil.isEmpty(next_device_code)) {
|
||||
acsTask.setRemark("目标设备不能为空");
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
continue;
|
||||
}
|
||||
String maxInstnumber = acsConfigService.findConfigFromCache().get(AcsConfig.MAXINSTNUMBER);
|
||||
if (ObjectUtils.isNotEmpty(maxInstnumber)) {
|
||||
if (i >= Integer.parseInt(maxInstnumber)) {
|
||||
acsTask.setRemark("系统参数配置最大指令数为:" + maxInstnumber + "无法生成指令");
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//特殊任务 起点终点处理
|
||||
//特殊任务 起点终点处理
|
||||
// if (StrUtil.equals("2", acsTask.getTask_type())) {
|
||||
// next_device_code = acsTask.getNext_device_code();
|
||||
// if (StrUtil.equals(appService.findDeviceTypeByCode(next_device_code), "storage")) {
|
||||
@@ -110,299 +115,305 @@ public class AutoCreateInst {
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* 开始平均分解校验
|
||||
*/
|
||||
String this_device_code = taskserver.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;
|
||||
/**
|
||||
* 开始平均分解校验
|
||||
*/
|
||||
String this_device_code = taskserver.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;
|
||||
}
|
||||
}
|
||||
next_device_code = pathlist.get(index);
|
||||
} else {
|
||||
next_device_code = this_device_code;
|
||||
}
|
||||
//校验路由关系
|
||||
List<RouteLineDto> shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code);
|
||||
if (ObjectUtils.isEmpty(shortPathsList)) {
|
||||
acsTask.setRemark("路由不通无法生成指令");
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!StrUtil.equals(shortPathsList.get(0).getType(), "1")) {
|
||||
continue;
|
||||
}
|
||||
Device startdevice = appService.findDeviceByCode(start_device_code);
|
||||
Device nextdevice = appService.findDeviceByCode(next_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;
|
||||
}
|
||||
if (ObjectUtils.isEmpty(appService)) {
|
||||
log.info("地址对应设备未找到");
|
||||
continue;
|
||||
}
|
||||
if (ObjectUtils.isEmpty(startdevice)) {
|
||||
log.info("地址对应设备未找到");
|
||||
continue;
|
||||
}
|
||||
//普通站点
|
||||
StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver;
|
||||
StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver;
|
||||
StandardEmptyPalletSiteDeviceDriver standardEmptsyPalletSiteDeviceDriver;
|
||||
StandardManipulatorInspectSiteDeviceDriver standardManipulatorInspectSiteDeviceDriver;
|
||||
LampThreecolorDeviceDriver lampThreecolorDeviceDriver;
|
||||
|
||||
String createTaskCheck = acsConfigService.findConfigFromCache().get(AcsConfig.CREATETASKCHECK);
|
||||
|
||||
if (StrUtil.equals(createTaskCheck, "1")) {
|
||||
if (startdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
||||
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) startdevice.getDeviceDriver();
|
||||
if (standardInspectSiteDeviceDriver.getMode() != 2) {
|
||||
log.info("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
acsTask.setRemark("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
//校验路由关系
|
||||
List<RouteLineDto> shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code);
|
||||
if (ObjectUtils.isEmpty(shortPathsList)) {
|
||||
acsTask.setRemark("路由不通无法生成指令");
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(startdevice.getDevice_code(), startdevice.getDevice_code());
|
||||
this.execute_log.log("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
if (standardInspectSiteDeviceDriver.getMove() == 0) {
|
||||
log.info("目标设备:" + startdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + startdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(startdevice.getDevice_code(), startdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + startdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (startdevice.getDeviceDriver() instanceof StandardManipulatorInspectSiteDeviceDriver) {
|
||||
standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) startdevice.getDeviceDriver();
|
||||
if (standardManipulatorInspectSiteDeviceDriver.getMode() != 2) {
|
||||
log.info("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
acsTask.setRemark("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(startdevice.getDevice_code(), startdevice.getDevice_code());
|
||||
this.execute_log.log("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
if (standardManipulatorInspectSiteDeviceDriver.getMove() == 0) {
|
||||
log.info("目标设备:" + startdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + startdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(startdevice.getDevice_code(), startdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + startdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (startdevice.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) {
|
||||
standardEmptsyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) startdevice.getDeviceDriver();
|
||||
if (standardEmptsyPalletSiteDeviceDriver.getMode() != 2) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (StrUtil.equals(acsTask.getTask_type(), TaskTypeEnum.APPLY_EMPTY.getCode())) {
|
||||
if (!StrUtil.equals(shortPathsList.get(0).getType(), "1")) {
|
||||
continue;
|
||||
}
|
||||
Device startdevice = appService.findDeviceByCode(start_device_code);
|
||||
Device nextdevice = appService.findDeviceByCode(next_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;
|
||||
}
|
||||
if (ObjectUtils.isEmpty(appService)) {
|
||||
log.info("地址对应设备未找到");
|
||||
continue;
|
||||
}
|
||||
if (ObjectUtils.isEmpty(startdevice)) {
|
||||
log.info("地址对应设备未找到");
|
||||
continue;
|
||||
}
|
||||
//普通站点
|
||||
StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver;
|
||||
StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver;
|
||||
StandardEmptyPalletSiteDeviceDriver standardEmptsyPalletSiteDeviceDriver;
|
||||
StandardManipulatorInspectSiteDeviceDriver standardManipulatorInspectSiteDeviceDriver;
|
||||
LampThreecolorDeviceDriver lampThreecolorDeviceDriver;
|
||||
|
||||
String createTaskCheck = acsConfigService.findConfigFromCache().get(AcsConfig.CREATETASKCHECK);
|
||||
|
||||
if (StrUtil.equals(createTaskCheck, "1")) {
|
||||
if (startdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
||||
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) startdevice.getDeviceDriver();
|
||||
if (standardInspectSiteDeviceDriver.getMode() != 2) {
|
||||
log.info("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
acsTask.setRemark("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(startdevice.getDevice_code(), startdevice.getDevice_code());
|
||||
this.execute_log.log("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
if (standardInspectSiteDeviceDriver.getMove() == 0) {
|
||||
log.info("目标设备:" + startdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + startdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(startdevice.getDevice_code(), startdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + startdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (startdevice.getDeviceDriver() instanceof StandardManipulatorInspectSiteDeviceDriver) {
|
||||
standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) startdevice.getDeviceDriver();
|
||||
if (standardManipulatorInspectSiteDeviceDriver.getMode() != 2) {
|
||||
log.info("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
acsTask.setRemark("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(startdevice.getDevice_code(), startdevice.getDevice_code());
|
||||
this.execute_log.log("起点设备:" + startdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
if (standardManipulatorInspectSiteDeviceDriver.getMove() == 0) {
|
||||
log.info("目标设备:" + startdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + startdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(startdevice.getDevice_code(), startdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + startdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (startdevice.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) {
|
||||
standardEmptsyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) startdevice.getDeviceDriver();
|
||||
if (standardEmptsyPalletSiteDeviceDriver.getMode() != 2) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (StrUtil.equals(acsTask.getTask_type(), TaskTypeEnum.APPLY_EMPTY.getCode())) {
|
||||
int nowNumber = standardEmptsyPalletSiteDeviceDriver.getNumber();
|
||||
start_point_code = start_point_code + "." + nowNumber;
|
||||
}
|
||||
}
|
||||
|
||||
//目的点校验
|
||||
if (nextdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
||||
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) nextdevice.getDeviceDriver();
|
||||
if (standardInspectSiteDeviceDriver.getMode() != 2) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
if (standardInspectSiteDeviceDriver.getMove() != 0) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
if (startdevice.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) {
|
||||
standardEmptsyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) startdevice.getDeviceDriver();
|
||||
if (next_device_code.equals("Q1") || next_device_code.equals("P1")) {
|
||||
int number = standardEmptsyPalletSiteDeviceDriver.getNumber();
|
||||
start_device_code = start_device_code + "." + number;
|
||||
start_point_code = start_point_code + "." + number;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (nextdevice.getDeviceDriver() instanceof StandardManipulatorInspectSiteDeviceDriver) {
|
||||
standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) nextdevice.getDeviceDriver();
|
||||
if (standardManipulatorInspectSiteDeviceDriver.getMode() != 2) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
if (standardManipulatorInspectSiteDeviceDriver.getMove() != 0) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (nextdevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) {
|
||||
standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) nextdevice.getDeviceDriver();
|
||||
if (standardOrdinarySiteDeviceDriver.getHasGoods() != 0) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "有货,无法生成任务,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "有货,无法生成任务,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "有货,无法生成任务,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//校验 是否同任务是否存在相同终点、未完成的指令
|
||||
int sameqty = instructionService.querySameDestinationInst(next_point_code);
|
||||
if (sameqty > 0) {
|
||||
log.info("存在相同终点的指令,任务号:" + taskcode);
|
||||
acsTask.setRemark("存在相同终点的指令,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("存在相同终点的指令,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//空盘位生成指令需要另外逻辑
|
||||
if (nextdevice.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) {
|
||||
standardEmptsyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) nextdevice.getDeviceDriver();
|
||||
if (standardEmptsyPalletSiteDeviceDriver.getMode() != 2) {
|
||||
log.info(("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode));
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备未待机");
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
int max_emptypalletnum = Integer.parseInt(nextdevice.getExtraValue().get("max_emptypalletnum").toString());
|
||||
int nowNumber = standardEmptsyPalletSiteDeviceDriver.getNumber();
|
||||
start_point_code = start_point_code + "." + nowNumber;
|
||||
if (nowNumber == max_emptypalletnum) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "空盘位已满等待入库,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "空盘位已满等待入库,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "空盘位已满等待入库,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
// 查看是否有相同终点的指令
|
||||
int sameqty = instructionService.querySameDestinationInst(next_point_code);
|
||||
if (sameqty > 0) {
|
||||
log.info("存在相同终点的指令,任务号:" + taskcode);
|
||||
acsTask.setRemark("存在相同终点的指令,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("存在相同终点的指令,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
next_point_code = next_point_code + "." + (nowNumber + sameqty + 1);
|
||||
}
|
||||
}
|
||||
|
||||
//目的点校验
|
||||
if (nextdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
||||
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) nextdevice.getDeviceDriver();
|
||||
if (standardInspectSiteDeviceDriver.getMode() != 2) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
if (standardInspectSiteDeviceDriver.getMove() != 0) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
if (startdevice.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver){
|
||||
if (startdevice.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) {
|
||||
standardEmptsyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) startdevice.getDeviceDriver();
|
||||
if (next_device_code.equals("Q1") || next_device_code.equals("P1")){
|
||||
int number = standardEmptsyPalletSiteDeviceDriver.getNumber();
|
||||
start_device_code = start_device_code + "." + number;
|
||||
start_point_code = start_point_code + "." + number;
|
||||
|
||||
int sameqty = instructionService.querySameOriginInst(start_point_code);
|
||||
if (sameqty > 0) {
|
||||
log.info("存在相同终点的指令,任务号:" + taskcode);
|
||||
acsTask.setRemark("存在相同终点的指令,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("存在相同终点的指令,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!StrUtil.equals(acsTask.getEmptypallet_num(), "0")) {
|
||||
Integer.parseInt(acsTask.getEmptypallet_num());
|
||||
int num = standardEmptsyPalletSiteDeviceDriver.getNumber() - Integer.parseInt(acsTask.getEmptypallet_num()) + 1 - sameqty;
|
||||
if (num <= 0) {
|
||||
acsTask.setRemark("叠盘位可用空盘数量不足无法生成");
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
continue;
|
||||
} else {
|
||||
start_point_code = start_point_code + "." + num;
|
||||
}
|
||||
} else {
|
||||
//目的点校验
|
||||
if (nextdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
||||
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) nextdevice.getDeviceDriver();
|
||||
if (next_device_code.equals("Q1") || next_device_code.equals("P1")) {
|
||||
int number = standardEmptsyPalletSiteDeviceDriver.getNumber();
|
||||
start_device_code = start_device_code + "." + number;
|
||||
start_point_code = start_point_code + "." + number;
|
||||
}
|
||||
} else {
|
||||
start_point_code = start_point_code + "." + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Instruction instdto = new Instruction();
|
||||
instdto.setInstruction_type(acsTask.getTask_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);
|
||||
instdto.setRoute_plan_code(route_plan_code);
|
||||
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.setMaterial(acsTask.getMaterial());
|
||||
|
||||
if (nextdevice.getDeviceDriver() instanceof StandardManipulatorInspectSiteDeviceDriver) {
|
||||
standardManipulatorInspectSiteDeviceDriver = (StandardManipulatorInspectSiteDeviceDriver) nextdevice.getDeviceDriver();
|
||||
if (standardManipulatorInspectSiteDeviceDriver.getMode() != 2) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
if (standardManipulatorInspectSiteDeviceDriver.getMove() != 0) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "设备不满足放货条件,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (nextdevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) {
|
||||
standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) nextdevice.getDeviceDriver();
|
||||
if (standardOrdinarySiteDeviceDriver.getHasGoods() != 0) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "有货,无法生成任务,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "有货,无法生成任务,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "有货,无法生成任务,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//校验 是否同任务是否存在相同终点、未完成的指令
|
||||
int sameqty = instructionService.querySameDestinationInst(next_point_code);
|
||||
if (sameqty > 0) {
|
||||
log.info("存在相同终点的指令,任务号:" + taskcode);
|
||||
acsTask.setRemark("存在相同终点的指令,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("存在相同终点的指令,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//空盘位生成指令需要另外逻辑
|
||||
if (nextdevice.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) {
|
||||
standardEmptsyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) nextdevice.getDeviceDriver();
|
||||
if (standardEmptsyPalletSiteDeviceDriver.getMode() != 2) {
|
||||
log.info(("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode));
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备未待机");
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
int max_emptypalletnum = Integer.parseInt(nextdevice.getExtraValue().get("max_emptypalletnum").toString());
|
||||
int nowNumber = standardEmptsyPalletSiteDeviceDriver.getNumber();
|
||||
if (nowNumber == max_emptypalletnum) {
|
||||
log.info("目标设备:" + nextdevice.getDevice_code() + "空盘位已满等待入库,任务号:" + taskcode);
|
||||
acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "空盘位已满等待入库,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("目标设备:" + nextdevice.getDevice_code() + "空盘位已满等待入库,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
// 查看是否有相同终点的指令
|
||||
int sameqty = instructionService.querySameDestinationInst(next_point_code);
|
||||
if (sameqty > 0) {
|
||||
log.info("存在相同终点的指令,任务号:" + taskcode);
|
||||
acsTask.setRemark("存在相同终点的指令,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("存在相同终点的指令,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
next_point_code = next_point_code + "." + (nowNumber + sameqty + 1);
|
||||
}
|
||||
if (startdevice.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) {
|
||||
standardEmptsyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) startdevice.getDeviceDriver();
|
||||
|
||||
int sameqty = instructionService.querySameOriginInst(start_point_code);
|
||||
if (sameqty > 0) {
|
||||
log.info("存在相同终点的指令,任务号:" + taskcode);
|
||||
acsTask.setRemark("存在相同终点的指令,任务号:" + taskcode);
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
|
||||
this.execute_log.log("存在相同终点的指令,任务号:" + taskcode);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!StrUtil.equals(acsTask.getEmptypallet_num(), "0")) {
|
||||
Integer.parseInt(acsTask.getEmptypallet_num());
|
||||
int num = standardEmptsyPalletSiteDeviceDriver.getNumber() - Integer.parseInt(acsTask.getEmptypallet_num()) + 1 - sameqty;
|
||||
if (num <= 0) {
|
||||
acsTask.setRemark("叠盘位可用空盘数量不足无法生成");
|
||||
try {
|
||||
instructionService.create(instdto);
|
||||
} catch (Exception e) {
|
||||
acsTask.setRemark(e.getMessage());
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
continue;
|
||||
} else {
|
||||
start_point_code = start_point_code + "." + num;
|
||||
}
|
||||
} else {
|
||||
//目的点校验
|
||||
if (nextdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
||||
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) nextdevice.getDeviceDriver();
|
||||
if (next_device_code.equals("Q1") || next_device_code.equals("P1")){
|
||||
int number = standardEmptsyPalletSiteDeviceDriver.getNumber();
|
||||
start_device_code = start_device_code + "." + number;
|
||||
start_point_code = start_point_code + "." + number;
|
||||
}
|
||||
} else {
|
||||
start_point_code = start_point_code + "." + 1;
|
||||
}
|
||||
|
||||
//创建指令后修改任务状态
|
||||
acsTask.setTask_status("1");
|
||||
taskserver.update(acsTask);
|
||||
|
||||
}
|
||||
} finally {
|
||||
if (lock) {
|
||||
lock = false;
|
||||
}
|
||||
}
|
||||
Instruction instdto = new Instruction();
|
||||
instdto.setInstruction_type(acsTask.getTask_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);
|
||||
instdto.setRoute_plan_code(route_plan_code);
|
||||
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.setMaterial(acsTask.getMaterial());
|
||||
|
||||
try {
|
||||
instructionService.create(instdto);
|
||||
} catch (Exception e) {
|
||||
acsTask.setRemark(e.getMessage());
|
||||
taskserver.updateByCodeFromCache(acsTask);
|
||||
continue;
|
||||
}
|
||||
|
||||
//创建指令后修改任务状态
|
||||
acsTask.setTask_status("1");
|
||||
taskserver.update(acsTask);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ import org.springframework.stereotype.Component;
|
||||
* 查询AGV任务状态
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Component("queryXZAgvTaskStatus")
|
||||
public class QueryXZAgvTaskStatus {
|
||||
|
||||
@Autowired
|
||||
@@ -33,33 +33,23 @@ public class QueryXZAgvTaskStatus {
|
||||
@Autowired
|
||||
TaskService taskService;
|
||||
|
||||
private boolean lock = false;
|
||||
private volatile boolean lock = false;
|
||||
|
||||
public void run() throws Exception {
|
||||
|
||||
if (!this.lock) {
|
||||
if (!lock) {
|
||||
lock = true;
|
||||
try {
|
||||
this.lock = true;
|
||||
|
||||
HttpResponse response = agvService.queryXZAgvInstStatus();
|
||||
JSONObject jo = JSONArray.parseObject(response.body());
|
||||
|
||||
JSONArray ja = JSONArray.parseArray(jo.getString("list"));
|
||||
for (int i = 0; i < ja.size(); i++) {
|
||||
JSONObject one = ja.getJSONObject(i);
|
||||
JSONObject one = (JSONObject) ja.get(i);
|
||||
String inst_code = one.getString("id");
|
||||
Instruction inst = instructionService.findByInstCodeFromCache(inst_code);
|
||||
if (ObjectUtil.isEmpty(inst)) {
|
||||
Instruction inst = instructionService.findByCodeFromCache(inst_code);
|
||||
if (ObjectUtil.isEmpty(inst))
|
||||
continue;
|
||||
}
|
||||
// //子任务状态 待以后处理
|
||||
// JSONArray blocks = JSONArray.parseArray(one.getString("blocks"));
|
||||
// for(int j=0;j<blocks.size();j++){
|
||||
// com.alibaba.fastjson.JSONObject blocksjo = (JSONObject) blocks.get(j);
|
||||
// String blockId = blocksjo.getString("blockId");
|
||||
// String device_code = blocksjo.getString("location");
|
||||
// String state = blocksjo.getString("state");
|
||||
//
|
||||
// }
|
||||
|
||||
String state = one.getString("state");
|
||||
if (!StrUtil.isEmpty(one.getString("vehicle"))) {
|
||||
@@ -93,19 +83,13 @@ public class QueryXZAgvTaskStatus {
|
||||
instructionService.update(inst);
|
||||
}
|
||||
}
|
||||
// else if ("STOPPED".equals(state)){
|
||||
// if (inst != null) {
|
||||
// instructionService.cancel(inst.getInstruction_id());
|
||||
//
|
||||
// TaskDto taskDto = taskService.findByCode(inst.getTask_code());
|
||||
// taskService.cancel(taskDto.getTask_id());
|
||||
// }
|
||||
// }
|
||||
}
|
||||
} finally {
|
||||
this.lock = false;
|
||||
if (lock) {
|
||||
lock = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user