diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java
index fb91d9c..2ec4619 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java
@@ -1,6 +1,7 @@
package org.nl.acs.agv.server;
import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.acs.agv.server.dto.AgvDto;
import org.nl.acs.instruction.service.dto.Instruction;
@@ -45,7 +46,7 @@ public interface XianGongAgvService {
*/
public HttpResponse queryXZAgvDeviceStatus();
- public HttpResponse queryXZAgvInstStatus(String instCode);
+ public HttpResponse queryXZAgvInstStatus();
/**
* 删除先知任务
@@ -67,6 +68,7 @@ public interface XianGongAgvService {
public HttpResponse addOrderSequences(Instruction inst) throws Exception;
+ public JSONArray createBlocksData(Instruction inst);
/**
* 组织json数据
*
diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java
index b4832e6..42830f3 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java
@@ -1,5 +1,6 @@
package org.nl.acs.agv.server.impl;
+import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
@@ -168,19 +169,17 @@ public class XianGongAgvServiceImpl implements XianGongAgvService {
@LokiLog(type = LokiLogType.AGV)
@Override
- public HttpResponse queryXZAgvInstStatus(String instCode) {
-
+ public HttpResponse queryXZAgvInstStatus() {
if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) {
String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue();
String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue();
- agvurl = agvurl + ":" + agvport + "/api/route/transportOrders/" + instCode;
+ agvurl = agvurl + ":" + agvport + "/orders?page=1&size=9999";
HttpResponse result = HttpRequest.get(agvurl)
.timeout(20000)//超时,毫秒
.execute();
- System.out.println("查询agv指令数据:" + result.body());
-
+ log.info("queryXZAgvInstStatus----查询agv指令数据:{}" + result.body());
return result;
} else {
@@ -211,31 +210,16 @@ public class XianGongAgvServiceImpl implements XianGongAgvService {
@Override
public HttpResponse sendOrderSequencesToXZ(Instruction inst) throws Exception {
JSONObject jo = new JSONObject();
- jo.put("intendedVehicle", "");
- jo.put("category", "");
- jo.put("failureFatal", false);
- jo.put("complete", false);
- JSONArray transports = new JSONArray();
- JSONObject orderjo = new JSONObject();
- orderjo.put("name", inst.getInstruction_code());
- orderjo.put("order", createOrederData(inst, "1"));
- transports.add(orderjo);
- jo.put("transports", transports);
-
- JSONArray ja1 = new JSONArray();
- JSONObject jo1 = new JSONObject();
- jo1.put("key", "");
- jo1.put("value", "");
- ja1.add(jo1);
- jo.put("properties", ja1);
-
+ jo.put("id", inst.getInstruction_code());
+ jo.put("complete", true);
+ jo.put("blocks", createBlocksData(inst));
+ jo.put("priority", inst.getPriority());
log.info("任务号:{},指令号{},下发agv订单序列参数:{}", inst.getTask_code(), inst.getInstruction_code(), jo.toString());
if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) {
String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue();
String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue();
-
- agvurl = agvurl + ":" + agvport + "/api/route/orderSequences/" + inst.getTask_code();
+ agvurl = agvurl + ":" + agvport + "/setOrder";
HttpResponse result = HttpRequest.post(agvurl)
.body(String.valueOf(jo))//表单内容
@@ -243,13 +227,28 @@ public class XianGongAgvServiceImpl implements XianGongAgvService {
.execute();
log.info(agvurl);
log.info("任务号:{},指令号{},状态{},下发agv订单序列反馈:{}", inst.getTask_code(), inst.getInstruction_code(), result.getStatus(), result.body());
-
return result;
} else {
return null;
}
}
+ @Override
+ public JSONArray createBlocksData(Instruction inst) {
+ JSONArray ja = new JSONArray();
+ JSONObject jo = new JSONObject();
+ jo.put("blockId", IdUtil.simpleUUID());
+ jo.put("location",inst.getStart_point_code());
+ jo.put("operation","JackLoad");
+ ja.add(jo);
+ JSONObject jo1 = new JSONObject();
+ jo1.put("blockId",IdUtil.simpleUUID());
+ jo1.put("location",inst.getNext_point_code());
+ jo1.put("operation","JackUnload");
+ ja.add(jo1);
+ return ja;
+ }
+
@LokiLog(type = LokiLogType.AGV)
@Override
public HttpResponse addOrderSequences(Instruction inst) throws Exception {
diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java
index fa8a5fd..46960c5 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java
@@ -266,4 +266,13 @@ public interface InstructionService {
boolean removeByCodeFromCache(String code);
+
+ /**
+ * 根据指令号缓存查询
+ *
+ * @param inst_code inst_code
+ * @return Instruction
+ */
+ Instruction findByInstCodeFromCache(String inst_code);
+
}
diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java
index 3ec7fee..dee7aaa 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java
@@ -301,59 +301,6 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
CargoLiftConveyorDeviceDriver cargoLiftConveyorDeviceDriver;
HaoKaiAutoConveyorDeviceDriver haoKaiAutoConveyorDeviceDriver;
StandardCoveyorControlWithScannerDeviceDriver standardCoveyorControlWithScannerDeviceDriver;
- //输送线相关需要给任务字段进行赋值,通过任务来判断输送线当前执行到哪一步
- if (startdevice.getDeviceDriver() instanceof CargoLiftConveyorDeviceDriver) {
- cargoLiftConveyorDeviceDriver = (CargoLiftConveyorDeviceDriver) startdevice.getDeviceDriver();
- cargoLiftConveyorDeviceDriver.writing(3, Integer.valueOf(dto.getInstruction_code()));
- if (nextdevice.getDeviceDriver() instanceof StandardCoveyorControlWithScannerDeviceDriver){
- standardCoveyorControlWithScannerDeviceDriver = (StandardCoveyorControlWithScannerDeviceDriver) nextdevice.getDeviceDriver();
- standardCoveyorControlWithScannerDeviceDriver.writing(1,1);
- String address = standardCoveyorControlWithScannerDeviceDriver.getExtraValue().get("address").toString();
- if (StrUtil.isEmpty(address)){
- throw new BadRequestException("设备:"+nextdevice.getDevice_code()+"未设置电气调度号!");
- }
- String door = standardCoveyorControlWithScannerDeviceDriver.getExtraValue().get("door").toString();
- if (StrUtil.isEmpty(door)){
- throw new BadRequestException("设备:"+nextdevice.getDevice_code()+"未设置门!");
- }
- String floor = standardCoveyorControlWithScannerDeviceDriver.getExtraValue().get("floor").toString();
- if (StrUtil.isEmpty(floor)){
- throw new BadRequestException("设备:"+nextdevice.getDevice_code()+"未设置楼层!");
- }
- standardCoveyorControlWithScannerDeviceDriver.writing(2, Integer.parseInt(address));
- standardCoveyorControlWithScannerDeviceDriver.writing(3, Integer.parseInt(task_code));
- standardCoveyorControlWithScannerDeviceDriver.writing(4, Integer.parseInt(door));
- standardCoveyorControlWithScannerDeviceDriver.writing(5, Integer.parseInt(floor));
- }
- }
- if (startdevice.getDeviceDriver() instanceof StandardCoveyorControlWithScannerDeviceDriver) {
- standardCoveyorControlWithScannerDeviceDriver = (StandardCoveyorControlWithScannerDeviceDriver) startdevice.getDeviceDriver();
- standardCoveyorControlWithScannerDeviceDriver.writing(3, Integer.valueOf(dto.getInstruction_code()));
- if (nextdevice.getDeviceDriver() instanceof CargoLiftConveyorDeviceDriver){
- cargoLiftConveyorDeviceDriver = (CargoLiftConveyorDeviceDriver) nextdevice.getDeviceDriver();
- cargoLiftConveyorDeviceDriver.writing(1,1);
- String address = cargoLiftConveyorDeviceDriver.getExtraValue().get("address").toString();
- if (StrUtil.isEmpty(address)){
- throw new BadRequestException("设备:"+nextdevice.getDevice_code()+"未设置电气调度号!");
- }
- String door = cargoLiftConveyorDeviceDriver.getExtraValue().get("door").toString();
- if (StrUtil.isEmpty(door)){
- throw new BadRequestException("设备:"+nextdevice.getDevice_code()+"未设置门!");
- }
- String floor = cargoLiftConveyorDeviceDriver.getExtraValue().get("floor").toString();
- if (StrUtil.isEmpty(floor)){
- throw new BadRequestException("设备:"+nextdevice.getDevice_code()+"未设置楼层!");
- }
- cargoLiftConveyorDeviceDriver.writing(2, Integer.parseInt(address));
- cargoLiftConveyorDeviceDriver.writing(3, Integer.parseInt(task_code));
- cargoLiftConveyorDeviceDriver.writing(4, Integer.parseInt(door));
- cargoLiftConveyorDeviceDriver.writing(5, Integer.parseInt(floor));
- }
- }
- if (startdevice.getDeviceDriver() instanceof HaoKaiAutoConveyorDeviceDriver) {
- haoKaiAutoConveyorDeviceDriver = (HaoKaiAutoConveyorDeviceDriver) startdevice.getDeviceDriver();
- haoKaiAutoConveyorDeviceDriver.writing(3, Integer.valueOf(dto.getInstruction_code()));
- }
try {
String start_device_code = task.getStart_device_code();
@@ -374,13 +321,26 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
throw new BadRequestException("未查询到相关路由!");
}
if (StrUtil.equals(route.getType(), "1")) {
- ZheDaAgvService zheDaAgvService = SpringContextHolder.getBean(ZheDaAgvService.class);
- HttpResponse result = zheDaAgvService.sendAgvInstToAgv(dto);
- if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) {
- dto.setSend_status("2");
+ XianGongAgvService xgAgvService = SpringContextHolder.getBean(XianGongAgvService.class);
+
+ if (StrUtil.equals(task.getRequest_again_success(), "1")) {
+ //追加订单
+ HttpResponse result = xgAgvService.sendOrderSequencesToXZ(dto);
+ if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) {
+ dto.setSend_status("2");
+ } else {
+ dto.setSend_status("1");
+ }
} else {
- dto.setSend_status("1");
+ //创建订单序列
+ HttpResponse result = xgAgvService.sendOrderSequencesToXZ(dto);
+ if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) {
+ dto.setSend_status("2");
+ } else {
+ dto.setSend_status("1");
+ }
}
+
}
} catch (Exception e) {
@@ -1231,6 +1191,20 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
return false;
}
+
+
+ @Override
+ public Instruction findByInstCodeFromCache(String inst_code) {
+ for (int i = 0; i < this.instructions.size(); i++) {
+ Instruction inst = instructions.get(i);
+ if (StrUtil.equals(inst_code, inst.getInstruction_code())) {
+ return inst;
+ }
+ }
+ return null;
+ }
+
+
public Instruction findByContainer(String container_code) {
Iterator var3 = instructions.iterator();
diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryXZAgvTaskStatus.java b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryXZAgvTaskStatus.java
new file mode 100644
index 0000000..c1e7d16
--- /dev/null
+++ b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryXZAgvTaskStatus.java
@@ -0,0 +1,101 @@
+package org.nl.modules.quartz.task;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.nl.acs.agv.server.XianGongAgvService;
+import org.nl.acs.ext.wms.service.AcsToWmsService;
+import org.nl.acs.instruction.service.InstructionService;
+import org.nl.acs.instruction.service.dto.Instruction;
+import org.nl.acs.task.service.TaskService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 查询AGV任务状态
+ */
+@Slf4j
+@Component
+public class QueryXZAgvTaskStatus {
+
+ @Autowired
+ InstructionService instructionService;
+
+ @Autowired
+ XianGongAgvService agvService;
+
+ @Autowired
+ AcsToWmsService acsToWmsService;
+
+ @Autowired
+ TaskService taskService;
+
+ public void run() throws Exception {
+
+ 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 = (JSONObject) ja.get(i);
+ String inst_code = one.getString("id");
+ Instruction inst = instructionService.findByInstCodeFromCache(inst_code);
+ if (ObjectUtil.isEmpty(inst))
+ continue;
+ //子任务状态 待以后处理
+ JSONArray blocks = JSONArray.parseArray(one.getString("blocks"));
+ for(int j=0;j
-
-
-
+
@@ -39,6 +30,8 @@ https://juejin.cn/post/6844903775631572999
+
+
@@ -55,6 +48,7 @@ https://juejin.cn/post/6844903775631572999
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
+
@@ -72,7 +66,7 @@ https://juejin.cn/post/6844903775631572999
${log.pattern}
@@ -81,101 +75,128 @@ https://juejin.cn/post/6844903775631572999
-
-
+
-
-
-
+
+
-
+
-
-
+
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
+
+
-
+
-
-
+
+
+
+
+
-
+
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+