|
@ -1142,120 +1142,52 @@ public class AgvServiceImpl implements AgvService { |
|
|
@Override |
|
|
@Override |
|
|
public JSONObject xgAGVWaitPointRequest(JSONObject requestParam) { |
|
|
public JSONObject xgAGVWaitPointRequest(JSONObject requestParam) { |
|
|
log.info("仙工AGV请求取放货,请求参数 - {}", requestParam); |
|
|
log.info("仙工AGV请求取放货,请求参数 - {}", requestParam); |
|
|
|
|
|
JSONObject resp = new JSONObject(); |
|
|
String instCode = requestParam.getString("task_code"); |
|
|
String instCode = requestParam.getString("task_code"); |
|
|
Instruction inst = instructionService.findByCodeFromCache(instCode); |
|
|
Instruction inst = instructionService.findByCodeFromCache(instCode); |
|
|
instcode = instCode; |
|
|
instcode = instCode; |
|
|
if (ObjectUtil.isEmpty(inst)) { |
|
|
if (ObjectUtil.isEmpty(inst)) { |
|
|
throw new BadRequestException("请求失败,未找到指令!"); |
|
|
resp.put("code", 400); |
|
|
|
|
|
resp.put("status", 400); |
|
|
|
|
|
resp.put("message", "请求失败,请求任务信息不存在!"); |
|
|
|
|
|
log.info("仙工AGV请求取放货,响应参数 - {}", resp); |
|
|
|
|
|
return resp; |
|
|
} |
|
|
} |
|
|
TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); |
|
|
TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); |
|
|
if (ObjectUtil.isEmpty(task)) { |
|
|
if (ObjectUtil.isEmpty(task)) { |
|
|
throw new BadRequestException("请求失败,未找到指令对应任务!"); |
|
|
resp.put("code", 400); |
|
|
|
|
|
resp.put("status", 400); |
|
|
|
|
|
resp.put("message", "请求失败,请求任务信息不存在!"); |
|
|
|
|
|
log.info("仙工AGV请求取放货,响应参数 - {}", resp); |
|
|
|
|
|
return resp; |
|
|
} |
|
|
} |
|
|
String address = requestParam.getString("address"); |
|
|
String address = requestParam.getString("address"); |
|
|
if (StrUtil.isBlank(address)) { |
|
|
if (StrUtil.isBlank(address)) { |
|
|
throw new BadRequestException("请求失败,地址为空!"); |
|
|
resp.put("code", 400); |
|
|
} |
|
|
resp.put("status", 400); |
|
|
String startcode = inst.getStart_device_code(); |
|
|
resp.put("message", "请求失败,地址为空!"); |
|
|
//请求取货
|
|
|
log.info("仙工AGV请求取放货,响应参数 - {}", resp); |
|
|
if (address.contains("INGET")) { |
|
|
return resp; |
|
|
JSONObject jo = new JSONObject(); |
|
|
|
|
|
jo.put("device_code", inst.getStart_device_code()); |
|
|
|
|
|
jo.put("task_code", inst.getTask_code()); |
|
|
|
|
|
jo.put("status", "1"); |
|
|
|
|
|
jo.put("vehicle_code", inst.getVehicle_code()); |
|
|
|
|
|
JSONArray ja = new JSONArray(); |
|
|
|
|
|
ja.add(jo); |
|
|
|
|
|
HttpResponse result = acsToWmsService.vehicle(ja); |
|
|
|
|
|
log.info("请求取货请求参数:{}", ja); |
|
|
|
|
|
com.alibaba.fastjson.JSONObject response = com.alibaba.fastjson.JSONObject.parseObject(result.body()); |
|
|
|
|
|
log.info("上位反馈请求取货请求参数:{}", response); |
|
|
|
|
|
int responseCode = response.getInteger("status"); |
|
|
|
|
|
if (responseCode == 200) { |
|
|
|
|
|
JSONObject jo2 = new JSONObject(); |
|
|
|
|
|
jo2.put("status", 200); |
|
|
|
|
|
startPointInget = true; |
|
|
|
|
|
log.info("上位允许取货 请求结果{}", responseCode); |
|
|
|
|
|
return jo2; |
|
|
|
|
|
} else { |
|
|
|
|
|
throw new BadRequestException("上位系统不允许取货"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
//取货完成离开
|
|
|
|
|
|
if (address.contains("OUTGET")) { |
|
|
|
|
|
JSONObject jo = new JSONObject(); |
|
|
|
|
|
jo.put("device_code", inst.getStart_device_code()); |
|
|
|
|
|
jo.put("task_code", inst.getTask_code()); |
|
|
|
|
|
jo.put("status", "2"); |
|
|
|
|
|
jo.put("vehicle_code", inst.getVehicle_code()); |
|
|
|
|
|
JSONArray ja = new JSONArray(); |
|
|
|
|
|
ja.add(jo); |
|
|
|
|
|
log.info("取货完成离开请求参数:{}", ja); |
|
|
|
|
|
HttpResponse result = acsToWmsService.vehicle(ja); |
|
|
|
|
|
com.alibaba.fastjson.JSONObject response = com.alibaba.fastjson.JSONObject.parseObject(result.body()); |
|
|
|
|
|
log.info("上位反馈取货完成离开请求参数:{}", response); |
|
|
|
|
|
int responseCode = response.getInteger("status"); |
|
|
|
|
|
if (responseCode == 200) { |
|
|
|
|
|
JSONObject jo2 = new JSONObject(); |
|
|
|
|
|
jo2.put("status", 200); |
|
|
|
|
|
startPointOutget = true; |
|
|
|
|
|
log.info("上位允许取货离开 请求结果{}", responseCode); |
|
|
|
|
|
return jo2; |
|
|
|
|
|
} else { |
|
|
|
|
|
throw new BadRequestException("上位系统不允许取货完成离开"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
//请求放货
|
|
|
|
|
|
if (address.contains("INPUT")) { |
|
|
|
|
|
JSONObject jo = new JSONObject(); |
|
|
|
|
|
jo.put("device_code", inst.getNext_device_code()); |
|
|
|
|
|
jo.put("task_code", inst.getTask_code()); |
|
|
|
|
|
jo.put("status", "3"); |
|
|
|
|
|
jo.put("vehicle_code", inst.getVehicle_code()); |
|
|
|
|
|
JSONArray ja = new JSONArray(); |
|
|
|
|
|
ja.add(jo); |
|
|
|
|
|
log.info("请求放货请求参数:{}", ja); |
|
|
|
|
|
HttpResponse result = acsToWmsService.vehicle(ja); |
|
|
|
|
|
com.alibaba.fastjson.JSONObject response = com.alibaba.fastjson.JSONObject.parseObject(result.body()); |
|
|
|
|
|
log.info("上位反馈请求放货请求参数:{}", response); |
|
|
|
|
|
int responseCode = response.getInteger("status"); |
|
|
|
|
|
if (responseCode == 200) { |
|
|
|
|
|
JSONObject jo2 = new JSONObject(); |
|
|
|
|
|
jo2.put("status", 200); |
|
|
|
|
|
endPointInput = true; |
|
|
|
|
|
log.info("上位允许放货 请求结果{}", responseCode); |
|
|
|
|
|
return jo2; |
|
|
|
|
|
} else { |
|
|
|
|
|
throw new BadRequestException("上位系统不允许请求放货"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//放货完成离开
|
|
|
//放货完成离开
|
|
|
if (address.contains("OUTPUT")) { |
|
|
if (address.contains("OUTPUT")) { |
|
|
JSONObject jo = new JSONObject(); |
|
|
String next_device_code = inst.getNext_device_code(); |
|
|
jo.put("device_code", inst.getNext_device_code()); |
|
|
Device device = deviceAppService.findDeviceByCode(next_device_code); |
|
|
jo.put("task_code", inst.getTask_code()); |
|
|
if (device != null && device.getDeviceDriver() instanceof YqGRLDeviceDriver) { |
|
|
jo.put("status", "4"); |
|
|
YqGRLDeviceDriver grlDeviceDriver = (YqGRLDeviceDriver) device.getDeviceDriver(); |
|
|
jo.put("vehicle_code", inst.getVehicle_code()); |
|
|
grlDeviceDriver.writing(3); |
|
|
JSONArray ja = new JSONArray(); |
|
|
log.info("AGV放货完成给{}下发{}", next_device_code, 3); |
|
|
ja.add(jo); |
|
|
} else if (device != null && device.getDeviceDriver() instanceof YqSXLDeviceDriver) { |
|
|
log.info("放货完成离开:{}", ja); |
|
|
YqSXLDeviceDriver sxlDeviceDriver = (YqSXLDeviceDriver) device.getDeviceDriver(); |
|
|
HttpResponse result = acsToWmsService.vehicle(ja); |
|
|
sxlDeviceDriver.writing(3); |
|
|
com.alibaba.fastjson.JSONObject response = com.alibaba.fastjson.JSONObject.parseObject(result.body()); |
|
|
log.info("AGV放货完成给{}下发{}", next_device_code, 3); |
|
|
log.info("上位反馈放货完成离开请求参数:{}", response); |
|
|
|
|
|
int responseCode = response.getInteger("status"); |
|
|
|
|
|
if (responseCode == 200) { |
|
|
|
|
|
JSONObject jo2 = new JSONObject(); |
|
|
|
|
|
endPointOutput = true; |
|
|
|
|
|
jo2.put("status", 200); |
|
|
|
|
|
log.info("上位允许放货离开 请求结果{}", responseCode); |
|
|
|
|
|
return jo2; |
|
|
|
|
|
} else { |
|
|
|
|
|
throw new BadRequestException("上位系统不允许放货完成离开"); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
throw new BadRequestException("请求失败,IN OUT 站点错误!"); |
|
|
resp.put("code", 200); |
|
|
|
|
|
resp.put("status", 200); |
|
|
|
|
|
resp.put("message", "请求成功!"); |
|
|
|
|
|
log.info("仙工AGV请求取放货,响应参数 - {}", resp); |
|
|
|
|
|
return resp; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
@ -1647,7 +1579,7 @@ public class AgvServiceImpl implements AgvService { |
|
|
|
|
|
|
|
|
public JSONArray createBlocksData(Instruction inst) { |
|
|
public JSONArray createBlocksData(Instruction inst) { |
|
|
// String ip = paramService.findByCode("local_host").getValue();
|
|
|
// String ip = paramService.findByCode("local_host").getValue();
|
|
|
String addr = "http://192.168.81.251:8010"; |
|
|
String addr = "http://10.186.139.24:8010"; |
|
|
|
|
|
|
|
|
JSONArray blocks = new JSONArray(); |
|
|
JSONArray blocks = new JSONArray(); |
|
|
|
|
|
|
|
@ -1714,23 +1646,23 @@ public class AgvServiceImpl implements AgvService { |
|
|
Device device2 = deviceAppService.findDeviceByCode(inst.getNext_device_code()); |
|
|
Device device2 = deviceAppService.findDeviceByCode(inst.getNext_device_code()); |
|
|
if ("true".equals(device2.getExtraValue().get("ignore_release_check"))) { |
|
|
if ("true".equals(device2.getExtraValue().get("ignore_release_check"))) { |
|
|
//放货前等待
|
|
|
//放货前等待
|
|
|
block = new JSONObject(); |
|
|
// block = new JSONObject();
|
|
|
block.put("blockId", IdUtil.simpleUUID()); |
|
|
// block.put("blockId", IdUtil.simpleUUID());
|
|
|
block.put("location", inst.getNext_point_code() + "INPUT"); |
|
|
// block.put("location", inst.getNext_point_code() + "INPUT");
|
|
|
block.put("operation", "script"); |
|
|
// block.put("operation", "script");
|
|
|
block.put("id", inst.getNext_point_code() + "INPUT"); |
|
|
// block.put("id", inst.getNext_point_code() + "INPUT");
|
|
|
block.put("script_name", "userpy/interact.py"); |
|
|
// block.put("script_name", "userpy/interact.py");
|
|
|
JSONObject scriptArgs = new JSONObject(); |
|
|
// JSONObject scriptArgs = new JSONObject();
|
|
|
scriptArgs.put("addr", addr); |
|
|
// scriptArgs.put("addr", addr);
|
|
|
JSONObject data = new JSONObject(); |
|
|
// JSONObject data = new JSONObject();
|
|
|
JSONObject reach = new JSONObject(); |
|
|
// JSONObject reach = new JSONObject();
|
|
|
reach.put("task_code", inst.getInstruction_code()); |
|
|
// reach.put("task_code", inst.getInstruction_code());
|
|
|
reach.put("address", inst.getNext_point_code() + "INPUT"); |
|
|
// reach.put("address", inst.getNext_point_code() + "INPUT");
|
|
|
data.put("reach", reach); |
|
|
// data.put("reach", reach);
|
|
|
scriptArgs.put("data", data); |
|
|
// scriptArgs.put("data", data);
|
|
|
scriptArgs.put("protocol", "HTTP"); |
|
|
// scriptArgs.put("protocol", "HTTP");
|
|
|
block.put("script_args", scriptArgs); |
|
|
// block.put("script_args", scriptArgs);
|
|
|
blocks.add(block); |
|
|
// blocks.add(block);
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
block = new JSONObject(); |
|
|
block = new JSONObject(); |
|
@ -2163,6 +2095,7 @@ public class AgvServiceImpl implements AgvService { |
|
|
} else { |
|
|
} else { |
|
|
//到达固熔炉
|
|
|
//到达固熔炉
|
|
|
grlDeviceDriver.writing(1); |
|
|
grlDeviceDriver.writing(1); |
|
|
|
|
|
log.info("AGV到达{}下发{}", grlDeviceDriver.getDevice_code(), 1); |
|
|
//返回AGV失败
|
|
|
//返回AGV失败
|
|
|
resp.put("code", 400); |
|
|
resp.put("code", 400); |
|
|
resp.put("message", "安全门未开到位||固熔炉门未开到位||卷扬机未到达中位"); |
|
|
resp.put("message", "安全门未开到位||固熔炉门未开到位||卷扬机未到达中位"); |
|
@ -2178,6 +2111,7 @@ public class AgvServiceImpl implements AgvService { |
|
|
return resp; |
|
|
return resp; |
|
|
} else { |
|
|
} else { |
|
|
sxlDeviceDriver.writing(1); |
|
|
sxlDeviceDriver.writing(1); |
|
|
|
|
|
log.info("AGV到达{}下发{}", sxlDeviceDriver.getDevice_code(), 1); |
|
|
resp.put("code", 400); |
|
|
resp.put("code", 400); |
|
|
resp.put("message", "时效炉门未开到位"); |
|
|
resp.put("message", "时效炉门未开到位"); |
|
|
log.info("上位不允许仙工AGV请求进入自动门区域 请求结果{}", resp); |
|
|
log.info("上位不允许仙工AGV请求进入自动门区域 请求结果{}", resp); |
|
@ -2216,6 +2150,7 @@ public class AgvServiceImpl implements AgvService { |
|
|
YqGRLDeviceDriver grlDeviceDriver = (YqGRLDeviceDriver) device.getDeviceDriver(); |
|
|
YqGRLDeviceDriver grlDeviceDriver = (YqGRLDeviceDriver) device.getDeviceDriver(); |
|
|
//离开固熔炉
|
|
|
//离开固熔炉
|
|
|
grlDeviceDriver.writing(2); |
|
|
grlDeviceDriver.writing(2); |
|
|
|
|
|
log.info("AGV离开{}下发{}", grlDeviceDriver.getDevice_code(), 2); |
|
|
//返回AGV失败
|
|
|
//返回AGV失败
|
|
|
resp.put("code", 200); |
|
|
resp.put("code", 200); |
|
|
resp.put("message", "ok"); |
|
|
resp.put("message", "ok"); |
|
@ -2225,6 +2160,7 @@ public class AgvServiceImpl implements AgvService { |
|
|
YqSXLDeviceDriver sxlDeviceDriver = (YqSXLDeviceDriver) device.getDeviceDriver(); |
|
|
YqSXLDeviceDriver sxlDeviceDriver = (YqSXLDeviceDriver) device.getDeviceDriver(); |
|
|
//离开时效炉
|
|
|
//离开时效炉
|
|
|
sxlDeviceDriver.writing(2); |
|
|
sxlDeviceDriver.writing(2); |
|
|
|
|
|
log.info("AGV离开{}下发{}", sxlDeviceDriver.getDevice_code(), 2); |
|
|
resp.put("code", 200); |
|
|
resp.put("code", 200); |
|
|
resp.put("message", "ok"); |
|
|
resp.put("message", "ok"); |
|
|
log.info("上位允许仙工AGV请求离开自动门区域 请求结果{}", resp); |
|
|
log.info("上位允许仙工AGV请求离开自动门区域 请求结果{}", resp); |
|
|