任务取消/故障反馈/位置反馈接口实现
This commit is contained in:
@@ -216,7 +216,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
|||||||
} else {
|
} else {
|
||||||
//上报异常信息
|
//上报异常信息
|
||||||
//(不需要WCS反馈)
|
//(不需要WCS反馈)
|
||||||
if (phase == 0x67) {
|
if (phase == 0x67 || phase == 0x74) {
|
||||||
device = deviceAppService.findDeviceByCode(Integer.toString(arr[27]));
|
device = deviceAppService.findDeviceByCode(Integer.toString(arr[27]));
|
||||||
} else {
|
} else {
|
||||||
device = deviceAppService.findDeviceByCode(Integer.toString(arr[20]));
|
device = deviceAppService.findDeviceByCode(Integer.toString(arr[20]));
|
||||||
|
|||||||
@@ -18,7 +18,9 @@ import org.nl.acs.device_driver.basedriver.siemens_conveyor.SiemensConveyorDevic
|
|||||||
import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver;
|
import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver;
|
||||||
import org.nl.acs.device_driver.basedriver.standard_storage.StandardStorageDeviceDriver;
|
import org.nl.acs.device_driver.basedriver.standard_storage.StandardStorageDeviceDriver;
|
||||||
import org.nl.acs.device_driver.driver.AbstractDeviceDriver;
|
import org.nl.acs.device_driver.driver.AbstractDeviceDriver;
|
||||||
|
import org.nl.acs.ext.wms.data.JDFaultRequest;
|
||||||
import org.nl.acs.ext.wms.service.AcsToWmsService;
|
import org.nl.acs.ext.wms.service.AcsToWmsService;
|
||||||
|
import org.nl.acs.ext.wms.service.JDToAcsService;
|
||||||
import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl;
|
import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl;
|
||||||
import org.nl.acs.instruction.service.InstructionService;
|
import org.nl.acs.instruction.service.InstructionService;
|
||||||
import org.nl.acs.instruction.service.dto.Instruction;
|
import org.nl.acs.instruction.service.dto.Instruction;
|
||||||
@@ -30,6 +32,7 @@ import org.nl.acs.opc.Device;
|
|||||||
import org.nl.acs.opc.DeviceAppService;
|
import org.nl.acs.opc.DeviceAppService;
|
||||||
import org.nl.acs.task.service.TaskService;
|
import org.nl.acs.task.service.TaskService;
|
||||||
import org.nl.acs.task.service.impl.TaskServiceImpl;
|
import org.nl.acs.task.service.impl.TaskServiceImpl;
|
||||||
|
import org.nl.modules.common.utils.enums.DeviceStatusEnum;
|
||||||
import org.nl.modules.system.service.ParamService;
|
import org.nl.modules.system.service.ParamService;
|
||||||
import org.nl.modules.system.service.impl.ParamServiceImpl;
|
import org.nl.modules.system.service.impl.ParamServiceImpl;
|
||||||
import org.nl.modules.wql.util.SpringContextHolder;
|
import org.nl.modules.wql.util.SpringContextHolder;
|
||||||
@@ -55,6 +58,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class);
|
DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class);
|
||||||
DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class);
|
DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class);
|
||||||
DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class);
|
DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class);
|
||||||
|
JDToAcsService jdToAcsService=SpringContextHolder.getBean(JDToAcsService.class);
|
||||||
int agvaddr = 0;
|
int agvaddr = 0;
|
||||||
int agvaddr_copy = 0;
|
int agvaddr_copy = 0;
|
||||||
int weight = 0;
|
int weight = 0;
|
||||||
@@ -75,6 +79,13 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
int last_status = 0;
|
int last_status = 0;
|
||||||
int last_error = 0;
|
int last_error = 0;
|
||||||
|
|
||||||
|
int goods =0;
|
||||||
|
|
||||||
|
//0-初始;1-取货中;2-取货完成;3-放货中;4-放货完成
|
||||||
|
int inst_status = 0;
|
||||||
|
|
||||||
|
Instruction global_inst = null;
|
||||||
|
|
||||||
@LokiLog(type = LokiLogType.ACS_TO_LMS)
|
@LokiLog(type = LokiLogType.ACS_TO_LMS)
|
||||||
public synchronized void processSocket(int[] arr) throws Exception {
|
public synchronized void processSocket(int[] arr) throws Exception {
|
||||||
device_code = this.getDeviceCode();
|
device_code = this.getDeviceCode();
|
||||||
@@ -98,6 +109,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
}
|
}
|
||||||
if (ikey != 0) {
|
if (ikey != 0) {
|
||||||
inst = instructionService.findByCodeFromCache(String.valueOf(ikey));
|
inst = instructionService.findByCodeFromCache(String.valueOf(ikey));
|
||||||
|
global_inst=inst;
|
||||||
// if (ObjectUtil.isEmpty(inst)) {
|
// if (ObjectUtil.isEmpty(inst)) {
|
||||||
// inst = instructionService.findByCode(String.valueOf(ikey));
|
// inst = instructionService.findByCode(String.valueOf(ikey));
|
||||||
// }
|
// }
|
||||||
@@ -112,6 +124,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
String device_code = null;
|
String device_code = null;
|
||||||
|
|
||||||
if (phase == 0x67) {
|
if (phase == 0x67) {
|
||||||
|
error= ikey;
|
||||||
//故障信息
|
//故障信息
|
||||||
if (arr[18] * 256 + arr[19] == 0) {
|
if (arr[18] * 256 + arr[19] == 0) {
|
||||||
|
|
||||||
@@ -141,6 +154,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
map.put("deviceNo",inst.getCarno());
|
map.put("deviceNo",inst.getCarno());
|
||||||
// req.add(map);
|
// req.add(map);
|
||||||
HttpResponse httpResponse = acsToWmsService.feedAgvTaskStatus(map);
|
HttpResponse httpResponse = acsToWmsService.feedAgvTaskStatus(map);
|
||||||
|
inst_status=0;
|
||||||
//到达取货点
|
//到达取货点
|
||||||
//(需要WCS反馈)
|
//(需要WCS反馈)
|
||||||
} else if (phase == 0x03) {
|
} else if (phase == 0x03) {
|
||||||
@@ -179,6 +193,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0);
|
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0);
|
||||||
|
inst_status=1;
|
||||||
//取货完毕
|
//取货完毕
|
||||||
//(需要WCS反馈)
|
//(需要WCS反馈)
|
||||||
} else if (phase == 0x05) {
|
} else if (phase == 0x05) {
|
||||||
@@ -242,6 +257,8 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
log.warn("指令号:{},acs反馈wms取货完成离开失败,连接被拒绝,未反馈agv取货完成离开", inst.getInstruction_code());
|
log.warn("指令号:{},acs反馈wms取货完成离开失败,连接被拒绝,未反馈agv取货完成离开", inst.getInstruction_code());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
goods=1;
|
||||||
|
inst_status=2;
|
||||||
//到达放货点
|
//到达放货点
|
||||||
//(需要WCS反馈)
|
//(需要WCS反馈)
|
||||||
} else if (phase == 0x07) {
|
} else if (phase == 0x07) {
|
||||||
@@ -277,7 +294,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
}
|
}
|
||||||
|
|
||||||
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0);
|
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0);
|
||||||
|
inst_status=3;
|
||||||
//放货完毕
|
//放货完毕
|
||||||
//(需要WCS反馈)
|
//(需要WCS反馈)
|
||||||
} else if (phase == 0x09) {
|
} else if (phase == 0x09) {
|
||||||
@@ -338,7 +355,8 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
log.warn("指令号:{},acs请求wms放货完成离开失败,连接被拒绝,未反馈agv放货完成离开", inst.getInstruction_code());
|
log.warn("指令号:{},acs请求wms放货完成离开失败,连接被拒绝,未反馈agv放货完成离开", inst.getInstruction_code());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
goods=0;
|
||||||
|
inst_status=4;
|
||||||
}
|
}
|
||||||
//到达位置点
|
//到达位置点
|
||||||
//(需要WCS反馈)
|
//(需要WCS反馈)
|
||||||
@@ -354,6 +372,26 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
} else if (phase == 0x51) {//离开交通灯区域
|
} else if (phase == 0x51) {//离开交通灯区域
|
||||||
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0);
|
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0);
|
||||||
logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + data);
|
logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + data);
|
||||||
|
} else if (phase == 0x70) {
|
||||||
|
//x坐标
|
||||||
|
x = ikey;
|
||||||
|
} else if (phase == 0x71) {
|
||||||
|
//y坐标
|
||||||
|
y = ikey;
|
||||||
|
} else if (phase == 0x72) {
|
||||||
|
//车辆角度
|
||||||
|
angle = ikey;
|
||||||
|
} else if (phase == 0x73) {
|
||||||
|
//agv电量
|
||||||
|
electric_qty = ikey;
|
||||||
|
} else if (phase == 0x74) {
|
||||||
|
status = ikey;
|
||||||
|
JDFaultRequest jdFaultRequest=new JDFaultRequest();
|
||||||
|
jdFaultRequest.setUuid(IdUtil.simpleUUID());
|
||||||
|
jdFaultRequest.setStatus(ikey==2?"0":"2");
|
||||||
|
jdFaultRequest.setFaultType(DeviceStatusEnum.getEnumValue(ikey).getDesc());
|
||||||
|
jdFaultRequest.setDesc(DeviceStatusEnum.getEnumValue(ikey).getDesc());
|
||||||
|
jdToAcsService.feedbackDeviceFault(jdFaultRequest);
|
||||||
}
|
}
|
||||||
if (!ObjectUtil.isEmpty(data)) {
|
if (!ObjectUtil.isEmpty(data)) {
|
||||||
logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + data);
|
logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + data);
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package org.nl.acs.ext.wms.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DeviceMotion{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车头方向
|
||||||
|
*/
|
||||||
|
private String direction;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 逻辑位置 Z
|
||||||
|
*/
|
||||||
|
private String logicalZ;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 逻辑位置 X
|
||||||
|
*/
|
||||||
|
private String logicalX;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 逻辑位置 Y
|
||||||
|
*/
|
||||||
|
private String logicalY;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 水平速度
|
||||||
|
*/
|
||||||
|
private Double speedH;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 垂直速度
|
||||||
|
*/
|
||||||
|
private Double speedV;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前行程点
|
||||||
|
*/
|
||||||
|
private String planPath;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package org.nl.acs.ext.wms.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class JDCancelTaskRequest extends BaseRequest {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 场景编号
|
||||||
|
*/
|
||||||
|
private String scenarioNo;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 防重码
|
||||||
|
*/
|
||||||
|
String uuid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前时间
|
||||||
|
*/
|
||||||
|
Long currentTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务号
|
||||||
|
*/
|
||||||
|
String taskNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 容器号
|
||||||
|
*/
|
||||||
|
String containerNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
String remark;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "JDCancelTaskRequest{" +
|
||||||
|
"scenarioNo='" + scenarioNo + '\'' +
|
||||||
|
", uuid='" + uuid + '\'' +
|
||||||
|
", currentTime=" + currentTime +
|
||||||
|
", taskNo='" + taskNo + '\'' +
|
||||||
|
", containerNo='" + containerNo + '\'' +
|
||||||
|
", remark='" + remark + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package org.nl.acs.ext.wms.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class JDCancelTaskResponse extends BaseRequest {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否成功
|
||||||
|
*/
|
||||||
|
private Boolean result=true;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异常码
|
||||||
|
*/
|
||||||
|
Integer code=200;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异常消息
|
||||||
|
*/
|
||||||
|
String message="取消任务成功";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据对象
|
||||||
|
*/
|
||||||
|
Object data;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
package org.nl.acs.ext.wms.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class JDChangeTaskRequest extends BaseRequest {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 场景编号
|
||||||
|
*/
|
||||||
|
private String scenarioNo;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 防重码
|
||||||
|
*/
|
||||||
|
String uuid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前时间
|
||||||
|
*/
|
||||||
|
Long currentTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务号
|
||||||
|
*/
|
||||||
|
String taskNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 容器号
|
||||||
|
*/
|
||||||
|
String containerNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 优先级
|
||||||
|
*/
|
||||||
|
Integer priority;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
String remark;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "JDChangeTaskRequest{" +
|
||||||
|
"scenarioNo='" + scenarioNo + '\'' +
|
||||||
|
", uuid='" + uuid + '\'' +
|
||||||
|
", currentTime=" + currentTime +
|
||||||
|
", taskNo='" + taskNo + '\'' +
|
||||||
|
", containerNo='" + containerNo + '\'' +
|
||||||
|
", priority=" + priority +
|
||||||
|
", remark='" + remark + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package org.nl.acs.ext.wms.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class JDChangeTaskResponse extends BaseRequest {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否成功
|
||||||
|
*/
|
||||||
|
private Boolean result=true;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异常码
|
||||||
|
*/
|
||||||
|
Integer code=200;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异常消息
|
||||||
|
*/
|
||||||
|
String message="取消任务成功";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据对象
|
||||||
|
*/
|
||||||
|
Object data;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
package org.nl.acs.ext.wms.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class JDFaultRequest extends BaseRequest {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 场景编号
|
||||||
|
*/
|
||||||
|
private String scenarioNo;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 防重码
|
||||||
|
*/
|
||||||
|
String uuid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 故障类型
|
||||||
|
*/
|
||||||
|
String faultType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 故障对象
|
||||||
|
*/
|
||||||
|
String faultNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 故障状态
|
||||||
|
*/
|
||||||
|
String status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 故障描述
|
||||||
|
*/
|
||||||
|
String desc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前位置
|
||||||
|
*/
|
||||||
|
String location;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "JDFaultRequest{" +
|
||||||
|
"scenarioNo='" + scenarioNo + '\'' +
|
||||||
|
", uuid='" + uuid + '\'' +
|
||||||
|
", faultType=" + faultType +
|
||||||
|
", faultNo='" + faultNo + '\'' +
|
||||||
|
", status='" + status + '\'' +
|
||||||
|
", desc='" + desc + '\'' +
|
||||||
|
", location='" + location + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package org.nl.acs.ext.wms.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class JDFaultResponse extends BaseRequest {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否成功
|
||||||
|
*/
|
||||||
|
private Boolean result=true;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异常码
|
||||||
|
*/
|
||||||
|
Integer code=200;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异常消息
|
||||||
|
*/
|
||||||
|
String message="操作成功";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据对象
|
||||||
|
*/
|
||||||
|
Object data;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package org.nl.acs.ext.wms.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class JDFeedbackRequest{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调用码
|
||||||
|
*/
|
||||||
|
private String callCode;
|
||||||
|
|
||||||
|
private List<Payload> payload;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "JDFeedbackRequest{" +
|
||||||
|
"callCode='" + callCode + '\'' +
|
||||||
|
", payload=" + payload +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
package org.nl.acs.ext.wms.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class Payload{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备类型
|
||||||
|
*/
|
||||||
|
private String deviceType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备代码
|
||||||
|
*/
|
||||||
|
private String deviceNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前时间
|
||||||
|
*/
|
||||||
|
private Long currentTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作模式
|
||||||
|
*/
|
||||||
|
private String workMode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作状态
|
||||||
|
*/
|
||||||
|
private String workStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 故障状态
|
||||||
|
*/
|
||||||
|
private String faultStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 故障码
|
||||||
|
*/
|
||||||
|
private String faultCodes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通讯状态
|
||||||
|
*/
|
||||||
|
private String connectStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否载货
|
||||||
|
*/
|
||||||
|
private String existGoods;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充电状态
|
||||||
|
*/
|
||||||
|
private String charging;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电池电量
|
||||||
|
*/
|
||||||
|
private String battery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运动信息
|
||||||
|
*/
|
||||||
|
private DeviceMotion deviceMotion;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务信息
|
||||||
|
*/
|
||||||
|
private List<TaskList> taskList;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Payload{" +
|
||||||
|
"deviceType='" + deviceType + '\'' +
|
||||||
|
", deviceNo='" + deviceNo + '\'' +
|
||||||
|
", currentTime=" + currentTime +
|
||||||
|
", workMode='" + workMode + '\'' +
|
||||||
|
", workStatus='" + workStatus + '\'' +
|
||||||
|
", faultStatus='" + faultStatus + '\'' +
|
||||||
|
", faultCodes='" + faultCodes + '\'' +
|
||||||
|
", connectStatus='" + connectStatus + '\'' +
|
||||||
|
", existGoods='" + existGoods + '\'' +
|
||||||
|
", charging='" + charging + '\'' +
|
||||||
|
", battery='" + battery + '\'' +
|
||||||
|
", deviceMotion=" + deviceMotion +
|
||||||
|
", taskList=" + taskList +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package org.nl.acs.ext.wms.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class TaskList {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 容器编号
|
||||||
|
*/
|
||||||
|
private String containerNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否载货
|
||||||
|
*/
|
||||||
|
private String existGoods;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 位置序号
|
||||||
|
*/
|
||||||
|
private String sequence;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 地图号
|
||||||
|
*/
|
||||||
|
private String mapNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 起始位
|
||||||
|
*/
|
||||||
|
private String fromPoint;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目标位
|
||||||
|
*/
|
||||||
|
private String toPoint;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务状态
|
||||||
|
*/
|
||||||
|
private String taskStatus;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -10,6 +10,8 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.acs.ext.wms.data.CancelTaskRequest;
|
import org.nl.acs.ext.wms.data.CancelTaskRequest;
|
||||||
import org.nl.acs.ext.wms.data.CreateTaskRequest;
|
import org.nl.acs.ext.wms.data.CreateTaskRequest;
|
||||||
|
import org.nl.acs.ext.wms.data.JDCancelTaskRequest;
|
||||||
|
import org.nl.acs.ext.wms.data.JDChangeTaskRequest;
|
||||||
import org.nl.acs.ext.wms.data.JDCreateTaskRequest;
|
import org.nl.acs.ext.wms.data.JDCreateTaskRequest;
|
||||||
import org.nl.acs.ext.wms.service.JDToAcsService;
|
import org.nl.acs.ext.wms.service.JDToAcsService;
|
||||||
import org.nl.acs.ext.wms.service.WmsToAcsService;
|
import org.nl.acs.ext.wms.service.WmsToAcsService;
|
||||||
@@ -44,5 +46,21 @@ public class JDToAcsController {
|
|||||||
return new ResponseEntity<>(jDtoacsService.crateTask(reqs), HttpStatus.OK);
|
return new ResponseEntity<>(jDtoacsService.crateTask(reqs), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/task_cancel")
|
||||||
|
@Log(value = "ACS接收WMS任务取消",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LMS_TO_ACS)
|
||||||
|
@ApiOperation("接收WMS任务取消")
|
||||||
|
@SaIgnore
|
||||||
|
public ResponseEntity<Object> cancelFromWms(@RequestBody JDCancelTaskRequest reqs) {
|
||||||
|
return new ResponseEntity<>(jDtoacsService.cancelFromWms(reqs), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/task_priority_change")
|
||||||
|
@Log(value = "任务优先级变更",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LMS_TO_ACS)
|
||||||
|
@ApiOperation("任务优先级变更")
|
||||||
|
@SaIgnore
|
||||||
|
public ResponseEntity<Object> changeFromWms(@RequestBody JDChangeTaskRequest reqs) {
|
||||||
|
return new ResponseEntity<>(jDtoacsService.changeFromWms(reqs), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,22 @@
|
|||||||
package org.nl.acs.ext.wms.service;
|
package org.nl.acs.ext.wms.service;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.http.HttpResponse;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import org.nl.acs.ext.wms.data.CancelTaskRequest;
|
import org.nl.acs.ext.wms.data.CancelTaskRequest;
|
||||||
import org.nl.acs.ext.wms.data.CancelTaskResponse;
|
import org.nl.acs.ext.wms.data.CancelTaskResponse;
|
||||||
import org.nl.acs.ext.wms.data.CreateTaskRequest;
|
import org.nl.acs.ext.wms.data.CreateTaskRequest;
|
||||||
import org.nl.acs.ext.wms.data.CreateTaskResponse;
|
import org.nl.acs.ext.wms.data.CreateTaskResponse;
|
||||||
|
import org.nl.acs.ext.wms.data.JDCancelTaskRequest;
|
||||||
|
import org.nl.acs.ext.wms.data.JDCancelTaskResponse;
|
||||||
|
import org.nl.acs.ext.wms.data.JDChangeTaskRequest;
|
||||||
|
import org.nl.acs.ext.wms.data.JDChangeTaskResponse;
|
||||||
import org.nl.acs.ext.wms.data.JDCreateTaskRequest;
|
import org.nl.acs.ext.wms.data.JDCreateTaskRequest;
|
||||||
import org.nl.acs.ext.wms.data.JDCreateTaskResponse;
|
import org.nl.acs.ext.wms.data.JDCreateTaskResponse;
|
||||||
|
import org.nl.acs.ext.wms.data.JDFaultRequest;
|
||||||
|
import org.nl.acs.ext.wms.data.JDFaultResponse;
|
||||||
|
import org.nl.acs.ext.wms.data.JDFeedbackRequest;
|
||||||
import org.nl.acs.ext.wms.data.PutActionResponse;
|
import org.nl.acs.ext.wms.data.PutActionResponse;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -28,64 +37,22 @@ public interface JDToAcsService {
|
|||||||
*
|
*
|
||||||
* @param reqs 条件
|
* @param reqs 条件
|
||||||
*/
|
*/
|
||||||
CancelTaskResponse cancelFromWms(List<CancelTaskRequest> reqs) throws Exception;
|
JDCancelTaskResponse cancelFromWms(JDCancelTaskRequest reqs);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改设置有无货属性
|
* 更改优先级
|
||||||
*
|
*
|
||||||
* @param jsonObject 条件
|
* @param reqs 条件
|
||||||
* @return Map<String, Object>
|
|
||||||
*/
|
*/
|
||||||
Map<String, Object> updateDeviceGoodsFromWms(String jsonObject);
|
JDChangeTaskResponse changeFromWms(JDChangeTaskRequest reqs);
|
||||||
|
|
||||||
|
void feedbackDeviceFault(JDFaultRequest reqs);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 区域控制
|
* 反馈AGV设备信息
|
||||||
*
|
*
|
||||||
* @param jsonObject 条件
|
* @param from
|
||||||
* @return Map<String, Object>
|
|
||||||
*/
|
|
||||||
Map<String, Object> areaControl(JSONObject jsonObject);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下发动作
|
|
||||||
*
|
|
||||||
* @param jsonObject 条件
|
|
||||||
* @return Map<String, Object>
|
|
||||||
*/
|
|
||||||
PutActionResponse putAction(String jsonObject) throws Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询设备状态
|
|
||||||
*
|
|
||||||
* @param jsonObject 条件
|
|
||||||
* @return Map<String, Object>
|
|
||||||
*/
|
|
||||||
Map<String, Object> queryDevice(String jsonObject) throws Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询设备DB值
|
|
||||||
* @param whereJson
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Map<String, Object> queryDeviceDBValue(String whereJson);
|
HttpResponse feedbackAgv(JDFeedbackRequest jdFeedbackRequest);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ACS系统在获取空的托盘号
|
|
||||||
* @param whereJson
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
Map<String, Object> querydevice(String whereJson);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下发插拔轴动作
|
|
||||||
*
|
|
||||||
* @param whereJson 条件
|
|
||||||
* @return Map<String, Object>
|
|
||||||
*/
|
|
||||||
Map<String, Object> putPlusPullAction(String whereJson);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package org.nl.acs.ext.wms.service.impl;
|
|||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.http.HttpRequest;
|
||||||
|
import cn.hutool.http.HttpResponse;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
@@ -10,20 +12,32 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.acs.AcsConfig;
|
import org.nl.acs.AcsConfig;
|
||||||
import org.nl.acs.common.IDriverService;
|
import org.nl.acs.common.IDriverService;
|
||||||
|
import org.nl.acs.device.address.service.AddressService;
|
||||||
|
import org.nl.acs.device.address.service.dto.AddressDto;
|
||||||
import org.nl.acs.device.service.DeviceService;
|
import org.nl.acs.device.service.DeviceService;
|
||||||
import org.nl.acs.device_driver.basedriver.hongxiang_conveyor.HongXiangStationDeviceDriver;
|
import org.nl.acs.device_driver.basedriver.hongxiang_conveyor.HongXiangStationDeviceDriver;
|
||||||
import org.nl.acs.device_driver.basedriver.hongxiang_device.HongXiangConveyorDeviceDriver;
|
import org.nl.acs.device_driver.basedriver.hongxiang_device.HongXiangConveyorDeviceDriver;
|
||||||
import org.nl.acs.device_driver.basedriver.plug_pull_device_site.PlugPullDeviceSiteDeviceDriver;
|
import org.nl.acs.device_driver.basedriver.plug_pull_device_site.PlugPullDeviceSiteDeviceDriver;
|
||||||
import org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanner.StandardCoveyorControlWithScannerDeviceDriver;
|
import org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanner.StandardCoveyorControlWithScannerDeviceDriver;
|
||||||
|
import org.nl.acs.ext.wms.AcsUtil;
|
||||||
|
import org.nl.acs.ext.wms.RespUtil;
|
||||||
import org.nl.acs.ext.wms.data.CancelTaskRequest;
|
import org.nl.acs.ext.wms.data.CancelTaskRequest;
|
||||||
import org.nl.acs.ext.wms.data.CancelTaskResponse;
|
import org.nl.acs.ext.wms.data.CancelTaskResponse;
|
||||||
import org.nl.acs.ext.wms.data.CreateTaskRequest;
|
import org.nl.acs.ext.wms.data.CreateTaskRequest;
|
||||||
import org.nl.acs.ext.wms.data.CreateTaskResponse;
|
import org.nl.acs.ext.wms.data.CreateTaskResponse;
|
||||||
|
import org.nl.acs.ext.wms.data.JDCancelTaskRequest;
|
||||||
|
import org.nl.acs.ext.wms.data.JDCancelTaskResponse;
|
||||||
|
import org.nl.acs.ext.wms.data.JDChangeTaskRequest;
|
||||||
|
import org.nl.acs.ext.wms.data.JDChangeTaskResponse;
|
||||||
import org.nl.acs.ext.wms.data.JDCreateTaskRequest;
|
import org.nl.acs.ext.wms.data.JDCreateTaskRequest;
|
||||||
import org.nl.acs.ext.wms.data.JDCreateTaskResponse;
|
import org.nl.acs.ext.wms.data.JDCreateTaskResponse;
|
||||||
|
import org.nl.acs.ext.wms.data.JDFaultRequest;
|
||||||
|
import org.nl.acs.ext.wms.data.JDFaultResponse;
|
||||||
|
import org.nl.acs.ext.wms.data.JDFeedbackRequest;
|
||||||
import org.nl.acs.ext.wms.data.JsonUtl;
|
import org.nl.acs.ext.wms.data.JsonUtl;
|
||||||
import org.nl.acs.ext.wms.data.PutActionRequest;
|
import org.nl.acs.ext.wms.data.PutActionRequest;
|
||||||
import org.nl.acs.ext.wms.data.PutActionResponse;
|
import org.nl.acs.ext.wms.data.PutActionResponse;
|
||||||
|
import org.nl.acs.ext.wms.liKuData.OutStoreResponse;
|
||||||
import org.nl.acs.ext.wms.service.AcsToLiKuService;
|
import org.nl.acs.ext.wms.service.AcsToLiKuService;
|
||||||
import org.nl.acs.ext.wms.service.JDToAcsService;
|
import org.nl.acs.ext.wms.service.JDToAcsService;
|
||||||
import org.nl.acs.ext.wms.service.WmsToAcsService;
|
import org.nl.acs.ext.wms.service.WmsToAcsService;
|
||||||
@@ -41,10 +55,12 @@ import org.nl.modules.wql.core.bean.WQLObject;
|
|||||||
import org.nl.modules.wql.exception.WDKException;
|
import org.nl.modules.wql.exception.WDKException;
|
||||||
import org.nl.modules.wql.util.SpringContextHolder;
|
import org.nl.modules.wql.util.SpringContextHolder;
|
||||||
import org.slf4j.MDC;
|
import org.slf4j.MDC;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -55,407 +71,22 @@ import java.util.Map;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class JDToAcsServiceImpl implements JDToAcsService {
|
public class JDToAcsServiceImpl implements JDToAcsService {
|
||||||
|
|
||||||
private final ApplicationContext applicationContext;
|
@Resource
|
||||||
|
private TaskService taskService;
|
||||||
|
|
||||||
private final InstructionService InstructionService;
|
@Resource
|
||||||
private final TaskService taskService;
|
private InstructionService instructionService;
|
||||||
private final DeviceService deviceService;
|
|
||||||
private final DeviceAppService deviceAppService;
|
@Resource
|
||||||
private final RouteLineService routeLineService;
|
private ParamService paramService;
|
||||||
private final AcsToLiKuService acsToLiKuService;
|
|
||||||
|
@Resource
|
||||||
|
private AddressService addressService;
|
||||||
|
|
||||||
|
|
||||||
private String log_file_type = "log_file_type";
|
private String log_file_type = "log_file_type";
|
||||||
private String log_type = "LMS请求ACS";
|
private String log_type = "LMS请求ACS";
|
||||||
|
|
||||||
@Override
|
|
||||||
public CancelTaskResponse cancelFromWms(List<CancelTaskRequest> reqs) throws Exception {
|
|
||||||
ParamService paramService = SpringContextHolder.getBean(ParamService.class);
|
|
||||||
InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class);
|
|
||||||
CancelTaskResponse response = new CancelTaskResponse();
|
|
||||||
JSONArray errArr = new JSONArray();
|
|
||||||
for (int i = 0; i < reqs.size(); i++) {
|
|
||||||
CancelTaskRequest request = reqs.get(i);
|
|
||||||
String task_code = request.getTask_code();
|
|
||||||
String vehicle_code = request.getVehicle_code();
|
|
||||||
Map<String, String> params = request.getParams();
|
|
||||||
if (StrUtil.isEmpty(task_code)) {
|
|
||||||
throw new WDKException("任务号不能为空");
|
|
||||||
}
|
|
||||||
TaskDto taskDto = taskService.findByCodeFromCache(task_code);
|
|
||||||
String cancelTaskCheck = paramService.findByCode(AcsConfig.CANCELTASKCHECK).getValue();
|
|
||||||
if (StrUtil.equals(cancelTaskCheck, "1")) {
|
|
||||||
taskService.cancelNoSendWms(taskDto.getTask_id());
|
|
||||||
} else if (StrUtil.equals(cancelTaskCheck, "0")) {
|
|
||||||
Instruction inst = instructionService.findByTaskcode(task_code);
|
|
||||||
if (inst == null) {
|
|
||||||
taskService.cancelNoSendWms(taskDto.getTask_id());
|
|
||||||
} else {
|
|
||||||
throw new RuntimeException("指令正在执行中,操作失败!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(errArr)) {
|
|
||||||
response.setStatus(200);
|
|
||||||
} else {
|
|
||||||
response.setStatus(400);
|
|
||||||
}
|
|
||||||
response.setMessage("success");
|
|
||||||
response.setErrArr(errArr);
|
|
||||||
log.info("cancelFromWms--------------:输出参数:" + response);
|
|
||||||
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, Object> updateDeviceGoodsFromWms(String param) {
|
|
||||||
JSONArray datas = JSONArray.parseArray(param);
|
|
||||||
log.info("updateDeviceGoodsFromWms--------------:输入参数" + datas.toString());
|
|
||||||
for (int i = 0; i < datas.size(); i++) {
|
|
||||||
JSONObject data = datas.getJSONObject(i);
|
|
||||||
String device_code = data.getString("point_code");
|
|
||||||
String has_goods = data.getString("has_goods");
|
|
||||||
|
|
||||||
JSONObject jo = new JSONObject();
|
|
||||||
jo.put("device_code", device_code);
|
|
||||||
jo.put("hasGoodStatus", has_goods);
|
|
||||||
deviceService.changeDeviceStatus(jo);
|
|
||||||
|
|
||||||
}
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.OK);
|
|
||||||
resultJson.put("message", "操作成功");
|
|
||||||
resultJson.put("data", new JSONObject());
|
|
||||||
log.info("updateDeviceGoodsFromWms--------------:输出参数" + resultJson.toString());
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, Object> areaControl(JSONObject form) {
|
|
||||||
String device_code = form.getString("device_code");
|
|
||||||
String type = form.getString("type");
|
|
||||||
|
|
||||||
Device device = deviceAppService.findDeviceByCode(device_code);
|
|
||||||
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.OK);
|
|
||||||
resultJson.put("message", "操作成功");
|
|
||||||
resultJson.put("data", new JSONObject());
|
|
||||||
log.info("updateDeviceGoodsFromWms--------------:输出参数" + resultJson.toString());
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public PutActionResponse putAction(String jsonObject) throws Exception {
|
|
||||||
try {
|
|
||||||
MDC.put(log_file_type, log_type);
|
|
||||||
log.info("putAction--------------:输出参数" + jsonObject);
|
|
||||||
JSONArray datas = JSONArray.parseArray(jsonObject);
|
|
||||||
PutActionResponse response = new PutActionResponse();
|
|
||||||
JSONArray errArr = new JSONArray();
|
|
||||||
for (int i = 0; i < datas.size(); i++) {
|
|
||||||
String data = datas.get(i).toString();
|
|
||||||
PutActionRequest request = JsonUtl.format(data, PutActionRequest.class);
|
|
||||||
String device_code = request.getDevice_code();
|
|
||||||
String code = request.getCode();
|
|
||||||
String value = request.getValue();
|
|
||||||
Device device = deviceAppService.findDeviceByCode(device_code);
|
|
||||||
if (ObjectUtil.isEmpty(device)) {
|
|
||||||
throw new Exception("未找到对应设备:" + device_code);
|
|
||||||
}
|
|
||||||
HongXiangStationDeviceDriver hongXiangStationDeviceDriver;
|
|
||||||
PlugPullDeviceSiteDeviceDriver plugPullDeviceSiteDeviceDriver;
|
|
||||||
if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) {
|
|
||||||
hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver();
|
|
||||||
hongXiangStationDeviceDriver.writing(code, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
response.setStatus(200);
|
|
||||||
response.setMessage("success");
|
|
||||||
log.info("putAction--------------:输出参数:" + response);
|
|
||||||
return response;
|
|
||||||
} finally {
|
|
||||||
MDC.remove(log_file_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, Object> queryDevice(String jsonObject) throws Exception {
|
|
||||||
try {
|
|
||||||
MDC.put(log_file_type, log_type);
|
|
||||||
// log.info("queryDevice--------------:输入参数" + jsonObject.toString());
|
|
||||||
JSONArray backja = new JSONArray();
|
|
||||||
JSONArray datas = JSONArray.parseArray(jsonObject);
|
|
||||||
|
|
||||||
//AGV烘箱对接位
|
|
||||||
HongXiangStationDeviceDriver hongXiangStationDeviceDriver;
|
|
||||||
//烘箱工位
|
|
||||||
HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver;
|
|
||||||
//货梯对接线-带扫码器
|
|
||||||
StandardCoveyorControlWithScannerDeviceDriver standardCoveyorControlWithScannerDeviceDriver;
|
|
||||||
|
|
||||||
if (datas.size() == 0) {
|
|
||||||
throw new BadRequestException("缺少输入参数!");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < datas.size(); i++) {
|
|
||||||
JSONObject jo = new JSONObject();
|
|
||||||
JSONObject data = datas.getJSONObject(i);
|
|
||||||
String parent_device_code = data.getString("device_code");
|
|
||||||
String device_code = "";
|
|
||||||
JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("parent_storage_code ='" + parent_device_code + "'").uniqueResult(0);
|
|
||||||
if (!ObjectUtil.isEmpty(device_json)) {
|
|
||||||
device_code = (String) device_json.get("parent_storage_code") == null ? parent_device_code : (String) device_json.get("storage_code");
|
|
||||||
}
|
|
||||||
Device device = deviceAppService.findDeviceByCode(device_code);
|
|
||||||
if (ObjectUtil.isEmpty(device)) {
|
|
||||||
throw new Exception("未找到对应设备:" + parent_device_code);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (device.getDeviceDriver() instanceof HongXiangStationDeviceDriver) {
|
|
||||||
hongXiangStationDeviceDriver = (HongXiangStationDeviceDriver) device.getDeviceDriver();
|
|
||||||
jo.put("device_code", parent_device_code);
|
|
||||||
jo.put("mode", hongXiangStationDeviceDriver.getMode());
|
|
||||||
jo.put("move", hongXiangStationDeviceDriver.getMove());
|
|
||||||
|
|
||||||
} else if (device.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) {
|
|
||||||
hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) device.getDeviceDriver();
|
|
||||||
jo.put("device_code", parent_device_code);
|
|
||||||
jo.put("mode", hongXiangConveyorDeviceDriver.getMode());
|
|
||||||
jo.put("move", hongXiangConveyorDeviceDriver.getMove());
|
|
||||||
jo.put("countdown_house", hongXiangConveyorDeviceDriver.getCountdown_house());
|
|
||||||
jo.put("countdown_min", hongXiangConveyorDeviceDriver.getCountdown_min());
|
|
||||||
jo.put("countdown_sec", hongXiangConveyorDeviceDriver.getCountdown_sec());
|
|
||||||
//温度需要除以10
|
|
||||||
jo.put("temperature", hongXiangConveyorDeviceDriver.getTemperature() / 10);
|
|
||||||
jo.put("door", hongXiangConveyorDeviceDriver.getDoor());
|
|
||||||
jo.put("finish", hongXiangConveyorDeviceDriver.getFinish());
|
|
||||||
jo.put("task", hongXiangConveyorDeviceDriver.getTask());
|
|
||||||
jo.put("error", hongXiangConveyorDeviceDriver.getError());
|
|
||||||
} else if (device.getDeviceDriver() instanceof StandardCoveyorControlWithScannerDeviceDriver) {
|
|
||||||
standardCoveyorControlWithScannerDeviceDriver = (StandardCoveyorControlWithScannerDeviceDriver) device.getDeviceDriver();
|
|
||||||
jo.put("device_code", parent_device_code);
|
|
||||||
jo.put("move", standardCoveyorControlWithScannerDeviceDriver.getMove());
|
|
||||||
jo.put("action", standardCoveyorControlWithScannerDeviceDriver.getAction());
|
|
||||||
jo.put("error", standardCoveyorControlWithScannerDeviceDriver.getError());
|
|
||||||
} else {
|
|
||||||
jo.put("device_code", parent_device_code);
|
|
||||||
}
|
|
||||||
backja.add(jo);
|
|
||||||
}
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.OK.value());
|
|
||||||
resultJson.put("message", "操作成功");
|
|
||||||
resultJson.put("data", backja);
|
|
||||||
// log.info("queryDevice--------------:输出参数" + resultJson.toString());
|
|
||||||
return resultJson;
|
|
||||||
|
|
||||||
} finally {
|
|
||||||
MDC.remove(log_file_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, Object> queryDeviceDBValue(String whereJson) {
|
|
||||||
JSONArray datas = JSONArray.parseArray(whereJson);
|
|
||||||
log.info("orderStatusUpdate--------------:输入参数" + datas.toString());
|
|
||||||
JSONObject map = new JSONObject();
|
|
||||||
if (datas.size() > 0) {
|
|
||||||
for (int i = 0; i < datas.size(); i++) {
|
|
||||||
JSONObject jsonObject = datas.getJSONObject(i);
|
|
||||||
String device_code = jsonObject.getString("device_code");
|
|
||||||
String dbName = jsonObject.getString("DB");
|
|
||||||
Device device = deviceAppService.findDeviceByCode(device_code);
|
|
||||||
List<DeviceExtraManageDto> extra = device.getExtra();
|
|
||||||
for (int j = 0; j < extra.size(); j++) {
|
|
||||||
DeviceExtraManageDto deviceExtraManageDto = extra.get(j);
|
|
||||||
String deviceCode = deviceExtraManageDto.getDevice_code();
|
|
||||||
String extra_name = deviceExtraManageDto.getExtra_name();
|
|
||||||
if (deviceCode.equals(device_code) && extra_name.equals(dbName)) {
|
|
||||||
String extra_code = deviceExtraManageDto.getExtra_code();
|
|
||||||
String[] split = extra_code.split("\\.");
|
|
||||||
extra_code = split[split.length - 1];
|
|
||||||
extra_code = extra_code.substring(0, 1).toUpperCase() + extra_code.substring(1);
|
|
||||||
IDriverService driverService = applicationContext.getBean(device.getDeviceDriverDefination().getDriverCode(), IDriverService.class);
|
|
||||||
Integer dbValue = driverService.getDbValue(device, extra_code);
|
|
||||||
map.put(dbName, dbValue);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.OK);
|
|
||||||
resultJson.put("message", "操作成功");
|
|
||||||
resultJson.put("data", map);
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, Object> querydevice(String whereJson) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, Object> putPlusPullAction(String param) {
|
|
||||||
try {
|
|
||||||
MDC.put(log_file_type, log_type);
|
|
||||||
log.info("putPlusPullAction-----输入参数{}", param);
|
|
||||||
JSONObject jo = JSON.parseObject(param);
|
|
||||||
String device_code = jo.getString("device_code");
|
|
||||||
String size = jo.getString("size");
|
|
||||||
String type = jo.getString("type");
|
|
||||||
Device device = deviceAppService.findDeviceByCode(device_code);
|
|
||||||
if (ObjectUtil.isEmpty(device)) {
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
resultJson.put("message", "未找到对应的设备:" + device_code);
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
PlugPullDeviceSiteDeviceDriver plugPullDeviceSiteDeviceDriver;
|
|
||||||
if (device.getDeviceDriver() instanceof PlugPullDeviceSiteDeviceDriver) {
|
|
||||||
plugPullDeviceSiteDeviceDriver = (PlugPullDeviceSiteDeviceDriver) device.getDeviceDriver();
|
|
||||||
// 0 穿轴 1拔轴
|
|
||||||
if (StrUtil.equals(type, "1")) {
|
|
||||||
|
|
||||||
if (plugPullDeviceSiteDeviceDriver.getMode() == 1) {
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
resultJson.put("message", "请求拔轴,当前设备工作模式未自动");
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
if (plugPullDeviceSiteDeviceDriver.getAction() == 0) {
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
resultJson.put("message", "请求拔轴,当前设备未全自动");
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
if (plugPullDeviceSiteDeviceDriver.getStatus() != 0) {
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
resultJson.put("message", "请求拔轴,当前设备未待机");
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
if (plugPullDeviceSiteDeviceDriver.getControl() != 0) {
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
resultJson.put("message", "请求拔轴,当前设备未远程控制");
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
if (plugPullDeviceSiteDeviceDriver.getMove() != 0) {
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
resultJson.put("message", "请求拔轴,当前设备有轴");
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
if (plugPullDeviceSiteDeviceDriver.getMode() == 0 && plugPullDeviceSiteDeviceDriver.getAction() == 1
|
|
||||||
&& plugPullDeviceSiteDeviceDriver.getStatus() == 0 && plugPullDeviceSiteDeviceDriver.getMove() == 0
|
|
||||||
&& plugPullDeviceSiteDeviceDriver.getControl() == 0) {
|
|
||||||
|
|
||||||
List list = new ArrayList();
|
|
||||||
Map map = new HashMap();
|
|
||||||
map.put("code", "to_size");
|
|
||||||
map.put("value", size);
|
|
||||||
list.add(map);
|
|
||||||
Map map2 = new HashMap();
|
|
||||||
map2.put("code", "to_type");
|
|
||||||
map2.put("value", type);
|
|
||||||
list.add(map2);
|
|
||||||
Map map3 = new HashMap();
|
|
||||||
map3.put("code", "to_command");
|
|
||||||
map3.put("value", "1");
|
|
||||||
list.add(map3);
|
|
||||||
plugPullDeviceSiteDeviceDriver.writing(list);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
resultJson.put("message", "当前设备状态不满足下发条件");
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (StrUtil.equals(type, "0")) {
|
|
||||||
|
|
||||||
if (plugPullDeviceSiteDeviceDriver.getMode() == 1) {
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
resultJson.put("message", "请求插轴,当前设备工作模式未自动");
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
if (plugPullDeviceSiteDeviceDriver.getAction() == 0) {
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
resultJson.put("message", "请求插轴,当前设备未全自动");
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
if (plugPullDeviceSiteDeviceDriver.getStatus() != 0) {
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
resultJson.put("message", "请求插轴,当前设备未待机");
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
if (plugPullDeviceSiteDeviceDriver.getControl() != 0) {
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
resultJson.put("message", "请求插轴,当前设备未远程控制");
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
if (plugPullDeviceSiteDeviceDriver.getMove() != 1) {
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
resultJson.put("message", "请求插轴,当前设备没有轴");
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (plugPullDeviceSiteDeviceDriver.getMode() == 0 && plugPullDeviceSiteDeviceDriver.getAction() == 1
|
|
||||||
&& plugPullDeviceSiteDeviceDriver.getStatus() == 0 && plugPullDeviceSiteDeviceDriver.getMove() == 1
|
|
||||||
&& plugPullDeviceSiteDeviceDriver.getControl() == 0) {
|
|
||||||
|
|
||||||
List list = new ArrayList();
|
|
||||||
Map map = new HashMap();
|
|
||||||
map.put("code", "to_size");
|
|
||||||
map.put("value", size);
|
|
||||||
list.add(map);
|
|
||||||
Map map2 = new HashMap();
|
|
||||||
map2.put("code", "to_type");
|
|
||||||
map2.put("value", type);
|
|
||||||
list.add(map2);
|
|
||||||
Map map3 = new HashMap();
|
|
||||||
map3.put("code", "to_command");
|
|
||||||
map3.put("value", "1");
|
|
||||||
list.add(map3);
|
|
||||||
plugPullDeviceSiteDeviceDriver.writing(list);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
resultJson.put("message", "当前设备状态不满足下发条件");
|
|
||||||
return resultJson;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
resultJson.put("status", HttpStatus.OK.value());
|
|
||||||
resultJson.put("message", "操作成功");
|
|
||||||
log.info("putPlusPullAction--------------:输出参数" + resultJson.toString());
|
|
||||||
return resultJson;
|
|
||||||
|
|
||||||
} finally {
|
|
||||||
MDC.remove(log_file_type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JDCreateTaskResponse crateTask(JDCreateTaskRequest reqs) {
|
public JDCreateTaskResponse crateTask(JDCreateTaskRequest reqs) {
|
||||||
try {
|
try {
|
||||||
@@ -573,8 +204,109 @@ public class JDToAcsServiceImpl implements JDToAcsService {
|
|||||||
} finally {
|
} finally {
|
||||||
MDC.remove(log_file_type);
|
MDC.remove(log_file_type);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JDCancelTaskResponse cancelFromWms(JDCancelTaskRequest reqs) {
|
||||||
|
JDCancelTaskResponse response = new JDCancelTaskResponse();
|
||||||
|
log.info("cancelFromWms--------------:输入参数:" + reqs);
|
||||||
|
String task_code = reqs.getTaskNo();
|
||||||
|
if (StrUtil.isEmpty(task_code)) {
|
||||||
|
throw new WDKException("任务号不能为空");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
TaskDto taskDto = taskService.findByCodeFromCache(task_code);
|
||||||
|
if (taskDto == null) {
|
||||||
|
log.info("任务已完成或取消");
|
||||||
|
} else {
|
||||||
|
Instruction inst = instructionService.findByTaskcode(task_code);
|
||||||
|
if (inst != null) {
|
||||||
|
instructionService.cancel(inst.getInstruction_id());
|
||||||
|
}
|
||||||
|
taskService.cancelNoSendWms(taskDto.getTask_id());
|
||||||
|
}
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("取消任务失败{}",e,e.getMessage());
|
||||||
|
response.setResult(false);
|
||||||
|
response.setCode(400);
|
||||||
|
response.setMessage("`取消任务失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("cancelFromWms--------------:输出参数:" + response);
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
//todo 暂不做
|
||||||
|
@Override
|
||||||
|
public JDChangeTaskResponse changeFromWms(JDChangeTaskRequest reqs) {
|
||||||
|
JDChangeTaskResponse response = new JDChangeTaskResponse();
|
||||||
|
log.info("changeFromWms--------------:输入参数:" + reqs);
|
||||||
|
String task_code = reqs.getTaskNo();
|
||||||
|
if (StrUtil.isEmpty(task_code)) {
|
||||||
|
throw new WDKException("任务号不能为空");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
// TaskDto taskDto = taskService.findByCodeFromCache(task_code);
|
||||||
|
// taskDto.setPriority(String.valueOf(reqs.getPriority()));
|
||||||
|
// taskService.update(taskDto);
|
||||||
|
// //todo 更改优先级到NDC
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("取消任务失败{}",e,e.getMessage());
|
||||||
|
response.setResult(false);
|
||||||
|
response.setCode(400);
|
||||||
|
response.setMessage("`取消任务失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("changeFromWms--------------:输出参数:" + response);
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void feedbackDeviceFault(JDFaultRequest reqs) {
|
||||||
|
String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue();
|
||||||
|
|
||||||
|
|
||||||
|
AddressDto addressDto = addressService.findByCode("feedbackDeviceFault");
|
||||||
|
String methods_url = addressDto.getMethods_url();
|
||||||
|
String url = wmsUrl + methods_url;
|
||||||
|
HttpResponse result = null;
|
||||||
|
log.info("feedbackDeviceFault----请求参数{}", reqs);
|
||||||
|
|
||||||
|
try {
|
||||||
|
result = HttpRequest.post(url)
|
||||||
|
.body(JSONObject.toJSONString(reqs))
|
||||||
|
.execute();
|
||||||
|
System.out.println(result);
|
||||||
|
log.info("feedbackDeviceFault----返回参数{}", result);
|
||||||
|
} catch (Exception e) {
|
||||||
|
String msg = e.getMessage();
|
||||||
|
//网络不通
|
||||||
|
//System.out.println(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HttpResponse feedbackAgv(JDFeedbackRequest jdFeedbackRequest) {
|
||||||
|
String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue();
|
||||||
|
|
||||||
|
AddressDto addressDto = addressService.findByCode("feedbackAgv");
|
||||||
|
String methods_url = addressDto.getMethods_url();
|
||||||
|
String url = wmsUrl + methods_url;
|
||||||
|
HttpResponse result = null;
|
||||||
|
log.info("feedbackAgv----请求参数{}", jdFeedbackRequest);
|
||||||
|
|
||||||
|
try {
|
||||||
|
result = HttpRequest.post(url)
|
||||||
|
.body(JSONObject.toJSONString(jdFeedbackRequest))
|
||||||
|
.execute();
|
||||||
|
System.out.println(result);
|
||||||
|
log.info("feedbackAgv----返回参数{}", result);
|
||||||
|
} catch (Exception e) {
|
||||||
|
String msg = e.getMessage();
|
||||||
|
//网络不通
|
||||||
|
//System.out.println(msg);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -263,15 +263,7 @@ public class DeviceAppServiceImpl implements DeviceAppService, ApplicationAutoIn
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Device> findDeviceByType(DeviceType deviceType) {
|
public List<Device> findDeviceByType(DeviceType deviceType) {
|
||||||
List<Device> list = this.findDevice(deviceType);
|
return this.findDevice(deviceType);
|
||||||
Map<String, String> map = new HashMap();
|
|
||||||
Iterator var4 = list.iterator();
|
|
||||||
|
|
||||||
while (var4.hasNext()) {
|
|
||||||
Device device = (Device) var4.next();
|
|
||||||
list.add(device);
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package org.nl.modules.common.utils.enums;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public enum DeviceStatusEnum {
|
||||||
|
T1("关机", 1),
|
||||||
|
T2("运行中", 2),
|
||||||
|
T3("交通管制", 3),
|
||||||
|
T4("任务等待", 4),
|
||||||
|
T5("充电中", 5),
|
||||||
|
T6("故障中", 6),
|
||||||
|
T7("低电量", 7);
|
||||||
|
|
||||||
|
DeviceStatusEnum(String desc, Integer value) {
|
||||||
|
this.desc = desc;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String desc;
|
||||||
|
private Integer value;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据key得到枚举value
|
||||||
|
* Lambda表达式
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static DeviceStatusEnum getEnumValue(Integer value) {
|
||||||
|
return Arrays.asList(DeviceStatusEnum.values()).stream()
|
||||||
|
.filter(obj -> obj.value.equals(value))
|
||||||
|
.findFirst().orElse(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,18 +1,26 @@
|
|||||||
package org.nl.modules.quartz.task;
|
package org.nl.modules.quartz.task;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.acs.agv.server.AgvService;
|
import org.nl.acs.agv.server.AgvService;
|
||||||
import org.nl.acs.agv.server.dto.AgvDto;
|
import org.nl.acs.device_driver.basedriver.agv.ndcone.AgvNdcOneDeviceDriver;
|
||||||
|
import org.nl.acs.ext.wms.data.DeviceMotion;
|
||||||
|
import org.nl.acs.ext.wms.data.JDFeedbackRequest;
|
||||||
|
import org.nl.acs.ext.wms.data.Payload;
|
||||||
|
import org.nl.acs.ext.wms.data.TaskList;
|
||||||
import org.nl.acs.ext.wms.service.AcsToWmsService;
|
import org.nl.acs.ext.wms.service.AcsToWmsService;
|
||||||
import org.nl.modules.mnt.websocket.MsgType;
|
import org.nl.acs.ext.wms.service.JDToAcsService;
|
||||||
import org.nl.modules.mnt.websocket.SocketMsg;
|
import org.nl.acs.instruction.service.dto.Instruction;
|
||||||
import org.nl.modules.mnt.websocket.WebSocketServer;
|
import org.nl.acs.opc.Device;
|
||||||
|
import org.nl.acs.opc.DeviceAppService;
|
||||||
|
import org.nl.acs.opc.DeviceType;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询AGV设备状态
|
* 查询AGV设备状态
|
||||||
@@ -22,55 +30,57 @@ import java.util.Map;
|
|||||||
public class ToAgvDevice {
|
public class ToAgvDevice {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
AcsToWmsService acsToWmsService;
|
JDToAcsService jdToAcsService;
|
||||||
@Autowired
|
@Autowired
|
||||||
AgvService agvService;
|
AgvService agvService;
|
||||||
|
@Autowired
|
||||||
|
DeviceAppService deviceAppService;
|
||||||
public void run() throws Exception {
|
public void run() throws Exception {
|
||||||
JSONObject json = new JSONObject();
|
|
||||||
Map<String, AgvDto> agv_map = agvService.findAllAgvFromCache();
|
|
||||||
|
|
||||||
JSONArray agv_rows = new JSONArray();
|
AgvNdcOneDeviceDriver agvNdcOneDeviceDriver;
|
||||||
JSONObject row = new JSONObject();
|
JDFeedbackRequest jdFeedbackRequest=new JDFeedbackRequest();
|
||||||
|
jdFeedbackRequest.setCallCode("");
|
||||||
for (AgvDto agvDto : agv_map.values()) {
|
try {
|
||||||
row.put("device_code", agvDto.getName());
|
List<Device> deviceList = deviceAppService.findDeviceByType(DeviceType.agv);
|
||||||
row.put("energyLevel", agvDto.getEnergyLevel());
|
List<Payload> payloadList=new ArrayList<>();
|
||||||
if (agvDto.getState().equals("UNKNOWN")) {
|
for(Device device:deviceList) {
|
||||||
row.put("status_name", "有任务");
|
if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) {
|
||||||
row.put("flag", "1");
|
agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver();
|
||||||
|
Payload payload=new Payload();
|
||||||
|
payload.setDeviceType("30");
|
||||||
|
payload.setDeviceNo(agvNdcOneDeviceDriver.getDevice_code());
|
||||||
|
payload.setCurrentTime(DateUtil.current());
|
||||||
|
payload.setWorkMode("1");
|
||||||
|
payload.setWorkStatus("1");
|
||||||
|
payload.setFaultStatus(agvNdcOneDeviceDriver.getStatus()!=2?"1":"0");
|
||||||
|
payload.setFaultStatus(String.valueOf(agvNdcOneDeviceDriver.getError()));
|
||||||
|
payload.setConnectStatus(agvNdcOneDeviceDriver.isStop()==false?"0":"1");
|
||||||
|
payload.setExistGoods(String.valueOf(agvNdcOneDeviceDriver.getGoods()));
|
||||||
|
payload.setCharging(agvNdcOneDeviceDriver.getError()==64?"1":"0");
|
||||||
|
payload.setBattery(String.valueOf(agvNdcOneDeviceDriver.getElectric_qty()));
|
||||||
|
DeviceMotion deviceMotion=new DeviceMotion();
|
||||||
|
deviceMotion.setDirection(String.valueOf(agvNdcOneDeviceDriver.getAngle()));
|
||||||
|
deviceMotion.setLogicalY(String.valueOf(agvNdcOneDeviceDriver.getX()));
|
||||||
|
deviceMotion.setLogicalY(String.valueOf(agvNdcOneDeviceDriver.getY()));
|
||||||
|
payload.setDeviceMotion(deviceMotion);
|
||||||
|
List<TaskList> taskLists=new ArrayList<>();
|
||||||
|
TaskList taskList=new TaskList();
|
||||||
|
Instruction inst=agvNdcOneDeviceDriver.getGlobal_inst();
|
||||||
|
taskList.setContainerNo(inst!=null?inst.getTask_code():"");
|
||||||
|
taskList.setMapNo("0");
|
||||||
|
taskList.setFromPoint(inst!=null?inst.getStart_point_code():"");
|
||||||
|
taskList.setToPoint(inst!=null?inst.getNext_point_code():"");
|
||||||
|
taskList.setTaskStatus(String.valueOf(agvNdcOneDeviceDriver.getInst_status()));
|
||||||
|
taskLists.add(taskList);
|
||||||
|
payload.setTaskList(taskLists);
|
||||||
|
payloadList.add(payload);
|
||||||
}
|
}
|
||||||
if (agvDto.getState().equals("UNAVAILABLE")) {
|
|
||||||
row.put("status_name", "网络异常");
|
|
||||||
row.put("flag", "1");
|
|
||||||
}
|
}
|
||||||
if (agvDto.getState().equals("ERROR")) {
|
jdFeedbackRequest.setPayload(payloadList);
|
||||||
row.put("status_name", "机器错误");
|
}catch (Exception e){
|
||||||
row.put("flag", "1");
|
System.out.println(e.getMessage());
|
||||||
}
|
}
|
||||||
if (agvDto.getState().equals("IDLE")) {
|
jdToAcsService.feedbackAgv(jdFeedbackRequest);
|
||||||
row.put("status_name", "空闲");
|
|
||||||
row.put("flag", "0");
|
|
||||||
}
|
|
||||||
if (agvDto.getState().equals("EXECUTING")) {
|
|
||||||
row.put("status_name", "运行中");
|
|
||||||
row.put("flag", "0");
|
|
||||||
}
|
|
||||||
if (agvDto.getState().equals("CHARGING")) {
|
|
||||||
row.put("status_name", "充电中");
|
|
||||||
row.put("flag", "0");
|
|
||||||
}
|
|
||||||
row.put("transportOrder", agvDto.getTransportOrder());
|
|
||||||
row.put("positionX", agvDto.getPositionX());
|
|
||||||
row.put("positionY", agvDto.getPositionY());
|
|
||||||
row.put("positionAngle", agvDto.getPositionAngle());
|
|
||||||
agv_rows.add(row);
|
|
||||||
}
|
|
||||||
json.put("agv_rows", agv_rows);
|
|
||||||
SocketMsg deviceInfo = new SocketMsg(json, MsgType.INFO);
|
|
||||||
WebSocketServer.sendInfo(deviceInfo, "toAgvDevice_data");
|
|
||||||
|
|
||||||
// acsToWmsService.feedbackAgv(row);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,11 +12,12 @@ spring:
|
|||||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:10.1.3.91}:${DB_PORT:3306}/${DB_NAME:acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
# url: jdbc:log4jdbc:mysql://${DB_HOST:10.1.3.91}:${DB_PORT:3306}/${DB_NAME:acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||||
url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:shiyaozhongchen_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:shiyaozhongchen_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:wzgj_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
|
# url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:wzgj_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
|
||||||
username: ${DB_USER:root}
|
username: ${DB_USER:root}
|
||||||
# password: ${DB_PWD:P@ssw0rd}
|
# password: ${DB_PWD:P@ssw0rd}
|
||||||
password: ${DB_PWD:Root.123456}
|
# password: ${DB_PWD:Root.123456}
|
||||||
|
password: ${DB_PWD:123456}
|
||||||
# password: ${DB_PWD:password}
|
# password: ${DB_PWD:password}
|
||||||
|
|
||||||
# 初始连接数
|
# 初始连接数
|
||||||
|
|||||||
Reference in New Issue
Block a user