Browse Source

rev:更新

master
gengby 11 months ago
parent
commit
17eeeefa9e
  1. 13
      acs/nladmin-system/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java
  2. 66
      acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java
  3. 11
      acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java
  4. 2
      acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java
  5. 9
      acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java
  6. 12
      acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java
  7. 109
      acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/ToAgvDevice.java

13
acs/nladmin-system/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java

@ -178,10 +178,10 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
if (!ObjectUtil.isEmpty(inst)) {
instructionService.finish(inst.getInstruction_id());
} else {
log.warn("指令号:{},未反馈wms任务完成,因为agv上报指令号查询指令为空!", inst.getInstruction_code());
log.warn("指令号:{},未反馈wms任务完成,因为agv上报指令号查询指令为空!", ikey);
}
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0);
log.info("指令号:{},已反馈agv任务完成!", inst.getInstruction_code());
log.info("指令号:{},已反馈agv任务完成!", ikey);
}
//进入交通灯区域
else if (phase == 0x50) {
@ -249,8 +249,13 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
} else {
//上报异常信息
//(不需要WCS反馈)
if (phase == 0x67) {
device = deviceAppService.findDeviceByCode(Integer.toString(arr[27]));
// if (phase == 0x67) {
// device = deviceAppService.findDeviceByCode(Integer.toString(arr[27]));
// } else {
// device = deviceAppService.findDeviceByCode(Integer.toString(arr[20]));
// }
if (phase == 0x67 || phase == 0x70 || phase == 0x71 || phase == 0x72 || phase == 0x73 || phase == 0x74 ) {
device = deviceAppService.findDeviceByCode(Integer.toString(arr[18] * 256 + arr[19]));
} else {
device = deviceAppService.findDeviceByCode(Integer.toString(arr[20]));
}

66
acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java

@ -26,6 +26,7 @@ import org.nl.acs.instruction.service.impl.InstructionServiceImpl;
import org.nl.acs.log.LokiLog;
import org.nl.acs.log.LokiLogType;
import org.nl.acs.log.service.DeviceExecuteLogService;
import org.nl.acs.monitor.DeviceStageMonitor;
import org.nl.acs.opc.Device;
import org.nl.acs.opc.DeviceAppService;
import org.nl.acs.task.service.TaskService;
@ -44,7 +45,7 @@ import static org.nl.acs.agv.server.impl.NDCAgvServiceImpl.Bytes2HexString;
@Slf4j
@Data
@RequiredArgsConstructor
public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements DeviceDriver {
public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements DeviceDriver, DeviceStageMonitor {
ParamService paramService = SpringContextHolder.getBean(ParamServiceImpl.class);
InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class);
@ -59,6 +60,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
int weight = 0;
String device_code = "";
int phase = 0;
private Instruction instruction;
int x = 0; //x坐标
int y = 0; //y坐标
@ -96,7 +98,10 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
agv_device = deviceAppService.findDeviceByCode(String.valueOf(carno));
}
if (ikey != 0) {
inst = instructionService.findByCodeFromCache(String.valueOf(ikey));
if (phase != 0x67 && phase != 0x71 && phase != 0x72 && phase != 0x73 && phase != 0x74 && phase != 0x75) {
inst = instructionService.findByCodeFromCache(String.valueOf(ikey));
this.instruction = inst;
}
}
if (!ObjectUtil.isEmpty(link_inst)) {
link_flag = true;
@ -154,6 +159,10 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
logServer.deviceExecuteLog(this.device_code, "", "", agvaddr + "对应设备号为空");
return;
}
if (ObjectUtil.isEmpty(device)){
log.info(agvaddr + "对应设备号{},对应的设备信息为空!",device_code);
return;
}
//校验agv上报站点编号与指令起始点相同
if (ObjectUtil.isEmpty(inst)) {
log.info("未找到编号{}对应的指令", ikey);
@ -218,6 +227,10 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
logServer.deviceExecuteLog(this.device_code, "", "", "对应设备号为空" + device_code);
return;
}
if (ObjectUtil.isEmpty(device)){
log.info(agvaddr + "对应设备号{},对应的设备信息为空!",device_code);
return;
}
//校验agv上报站点编号与指令起始点相同
if (ObjectUtil.isEmpty(inst)) {
log.info("未找到关联编号{}对应的指令", ikey);
@ -281,6 +294,10 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
log.info(agvaddr + "对应设备号为空!");
return;
}
if (ObjectUtil.isEmpty(device)){
log.info(agvaddr + "对应设备号{},对应的设备信息为空!",device_code);
return;
}
//校验agv上报站点编号与指令起始点相同
if (ObjectUtil.isEmpty(inst)) {
log.info("未找到关联编号{}对应的指令", ikey);
@ -345,6 +362,10 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
log.info(agvaddr + "对应设备号为空!");
return;
}
if (ObjectUtil.isEmpty(device)){
log.info(agvaddr + "对应设备号{},对应的设备信息为空!",device_code);
return;
}
//校验agv上报站点编号与指令起始点相同
if (ObjectUtil.isEmpty(inst)) {
log.info("未找到编号{}对应的指令", ikey);
@ -388,6 +409,22 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
agvaddr_copy = agvaddr;
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0);
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;
last_status = status;
}
if (!ObjectUtil.isEmpty(data)) {
@ -399,4 +436,29 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
}
@Override
public JSONObject getDeviceStatusName() throws Exception {
JSONObject jo = new JSONObject();
//agv编码
jo.put("device_code", this.getDevice().getDevice_code());
String status_name = this.status == 1 ? "UNAVAILABLE" : this.status == 2 ? "EXECUTING" : this.status == 4 ? "IDLE" : this.status == 5 ? "CHARGING" : this.status == 6 ? "ERROR" : "UNKNOWN";
//agv状态
jo.put("device_status", status_name);
//电量
jo.put("electricity", this.getElectric_qty());
//任务号
jo.put("transportOrder", ObjectUtil.isEmpty(instruction) ? "0" : instruction.getTask_code());
//x坐标
jo.put("positionX", this.getX());
//y坐标
jo.put("positionY", this.getY());
//角度
jo.put("positionAngle", this.getAngle());
return jo;
}
@Override
public void setDeviceStatus(JSONObject data) {
}
}

11
acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java

@ -16,10 +16,7 @@ import org.nl.modules.logging.InterfaceLogType;
import org.nl.modules.logging.annotation.Log;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -98,4 +95,10 @@ public class WmsToAcsController {
return new ResponseEntity<>(wmstoacsService.putPlusPullAction(whereJson), HttpStatus.OK);
}
@GetMapping("/test")
@SaIgnore
public ResponseEntity<Object> test(){
return new ResponseEntity<>(wmstoacsService.test(), HttpStatus.OK);
}
}

2
acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java

@ -82,5 +82,7 @@ public interface WmsToAcsService {
*/
Map<String, Object> putPlusPullAction(String whereJson);
Map<String,Object> test();
}

9
acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java

@ -450,6 +450,15 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
}
}
@Override
public Map<String, Object> test() {
System.out.println("进来了......");
Map<String,Object> map = new HashMap<>();
map.put("a","a");
map.put("b","b");
return map;
}
@Override
public CreateTaskResponse crateTask(List<CreateTaskRequest> reqs) {

12
acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java

@ -965,11 +965,13 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
entity.getStart_device_code(),
entity.getNext_device_code(),
entity.getRoute_plan_code());
String type = shortPathsList.get(0).getType();
// != 0 为agv任务
if (!StrUtil.equals(type, "0")) {
if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "3")) {
agvService.markComplete(entity.getTask_code());
if (ObjectUtil.isNotEmpty(shortPathsList)){
String type = shortPathsList.get(0).getType();
// != 0 为agv任务
if (!StrUtil.equals(type, "0")) {
if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "3")) {
agvService.markComplete(entity.getTask_code());
}
}
}
}

109
acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/ToAgvDevice.java

@ -1,18 +1,19 @@
package org.nl.modules.quartz.task;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.acs.agv.server.AgvService;
import org.nl.acs.agv.server.dto.AgvDto;
import org.nl.acs.ext.wms.service.AcsToWmsService;
import org.nl.modules.mnt.websocket.MsgType;
import org.nl.modules.mnt.websocket.SocketMsg;
import org.nl.modules.mnt.websocket.WebSocketServer;
import org.nl.acs.monitor.DeviceStageMonitor;
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.stereotype.Component;
import java.util.Map;
import java.util.List;
/**
* 查询AGV设备状态
@ -25,52 +26,68 @@ public class ToAgvDevice {
AcsToWmsService acsToWmsService;
@Autowired
AgvService agvService;
@Autowired
DeviceAppService deviceAppService;
public void run() throws Exception {
JSONObject json = new JSONObject();
Map<String, AgvDto> agv_map = agvService.findAllAgvFromCache();
JSONArray agv_rows = new JSONArray();
JSONObject row = new JSONObject();
for (AgvDto agvDto : agv_map.values()) {
row.put("device_code", agvDto.getName());
row.put("energyLevel", agvDto.getEnergyLevel());
if (agvDto.getState().equals("UNKNOWN")) {
row.put("status_name", "有任务");
row.put("flag", "1");
}
if (agvDto.getState().equals("UNAVAILABLE")) {
row.put("status_name", "网络异常");
row.put("flag", "1");
}
if (agvDto.getState().equals("ERROR")) {
row.put("status_name", "机器错误");
row.put("flag", "1");
JSONArray list = new JSONArray();
List<Device> devices = deviceAppService.findDevice(DeviceType.agv);
if (ObjectUtil.isNotEmpty(devices)){
for (int i = 0; i < devices.size(); i++) {
Device device = devices.get(i);
if (device != null && device.getDeviceDriver() instanceof DeviceStageMonitor){
DeviceStageMonitor monitorService = (DeviceStageMonitor) device.getDeviceDriver();
JSONObject deviceStatusName = monitorService.getDeviceStatusName();
list.add(deviceStatusName);
}
}
if (agvDto.getState().equals("IDLE")) {
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(list);
// JSONObject json = new JSONObject();
// Map<String, AgvDto> agv_map = agvService.findAllAgvFromCache();
//
// JSONArray agv_rows = new JSONArray();
// JSONObject row = new JSONObject();
//
// for (AgvDto agvDto : agv_map.values()) {
// row.put("device_code", agvDto.getName());
// row.put("energyLevel", agvDto.getEnergyLevel());
// if (agvDto.getState().equals("UNKNOWN")) {
// row.put("status_name", "有任务");
// row.put("flag", "1");
// }
// if (agvDto.getState().equals("UNAVAILABLE")) {
// row.put("status_name", "网络异常");
// row.put("flag", "1");
// }
// if (agvDto.getState().equals("ERROR")) {
// row.put("status_name", "机器错误");
// row.put("flag", "1");
// }
// if (agvDto.getState().equals("IDLE")) {
// 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);
}
}

Loading…
Cancel
Save