This commit is contained in:
2022-12-12 21:18:25 +08:00
parent 3642362bf1
commit 60b43bb231
19 changed files with 1757 additions and 53 deletions

View File

@@ -81,4 +81,6 @@ public interface XianGongAgvService {
public JSONObject createOrederData(Instruction inst, String type);
public JSONArray blockGroupStatus(JSONObject param);
}

View File

@@ -114,59 +114,20 @@ public class XianGongAgvServiceImpl implements XianGongAgvService {
@Override
public HttpResponse queryXZAgvDeviceStatus() {
if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) {
if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue().toString(), "1")) {
String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue();
String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue();
String agvurl1 = agvurl + ":" + agvport + "/api/route/vehicles";
String agvurl2 = agvurl + ":" + agvport + "/api/route/vehicleDetails";
agvurl = agvurl + ":" + agvport + "/robotsStatus";
HttpResponse result = HttpRequest.get(agvurl1)
HttpResponse result = HttpRequest.get(agvurl)
.timeout(20000)//超时,毫秒
.execute();
HttpResponse result2 = HttpRequest.get(agvurl2)
.timeout(20000)//超时,毫秒
.execute();
System.out.println("查询agv状态数据:" + result.body());
if (result.getStatus() == 200) {
JSONArray ja = (JSONArray) JSONArray.parse(result.body());
for (int i = 0; i < ja.size(); i++) {
JSONObject jo = (JSONObject) ja.get(i);
String name = jo.getString("name");
String state = jo.getString("state");
String energyLevel = jo.getString("energyLevel");
String transportOrder = jo.getString("transportOrder");
JSONObject detailjo = (JSONObject) JSONObject.parse(result2.body());
JSONObject item = (JSONObject) detailjo.get(name);
String x = item.getString("x");
String y = item.getString("y");
String angle = item.getString("angle");
AgvDto dto = new AgvDto();
dto.setName(name);
dto.setEnergyLevel(energyLevel);
dto.setState(state);
dto.setTransportOrder(transportOrder);
dto.setPositionAngle(angle);
dto.setPositionX(x);
dto.setPositionY(y);
if (AGVDeviceStatus.containsKey(name)) {
AGVDeviceStatus.remove(name);
AGVDeviceStatus.put(name, dto);
} else {
AGVDeviceStatus.put(name, dto);
}
}
}
return result;
} else {
return null;
}
}
@LokiLog(type = LokiLogType.AGV)
@@ -488,6 +449,25 @@ public class XianGongAgvServiceImpl implements XianGongAgvService {
return orderjo;
}
@Override
@LokiLog(type = LokiLogType.AGV)
public JSONArray blockGroupStatus(JSONObject param) {
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 + "/transportOrders";
HttpResponse result = HttpRequest.get(agvurl)
.body(String.valueOf(param))//表单内容
.timeout(20000)//超时,毫秒
.execute();
return JSONArray.parseArray(result.body());
} else {
return null;
}
}
/**
* 返回一个点位操作子任务 先知使用

View File

@@ -21,7 +21,11 @@ public enum DriverTypeEnum {
INSPECT_CONVEYOR_MONITOR(6, "standard_conveyor_monitor", "标准版-输送机-监控点", "conveyor"),
MAGANG_CONVEYOR_CONTROL(7, "magang_conveyor_control", "马钢-输送机", "conveyor");
MAGANG_CONVEYOR_CONTROL(7, "magang_conveyor_control", "马钢-输送机", "conveyor"),
MAGANG_AGV(8, "magang_agv", "马钢-agv", "agv"),
MAGANG_LED(9, "magang_led", "马钢-led", "三色灯");
//驱动索引
private int index;

View File

@@ -0,0 +1,73 @@
package org.nl.acs.device_driver.agv;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.nl.acs.device.device_driver.standard_inspect.ItemDto;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Data
public class ItemProtocol {
public static String item_status = "status";
public static String item_type = "type";
public static String item_x_coordinate = "x_coordinate";
public static String item_y_coordinate = "y_coordinate";
private MaGangAgvDeviceDriver driver;
public ItemProtocol(MaGangAgvDeviceDriver driver) {
this.driver = driver;
}
public int getStatus() {
return this.getOpcIntegerValue(item_status);
}
public int getType() {
return this.getOpcIntegerValue(item_type);
}
public int getX_coordinate() {
return this.getOpcIntegerValue(item_x_coordinate);
}
public int getY_coordinate() {
return this.getOpcIntegerValue(item_y_coordinate);
}
Boolean isonline;
public int getOpcIntegerValue(String protocol) {
Integer value = this.driver.getIntegeregerValue(protocol);
if (value == null) {
setIsonline(false);
} else {
setIsonline(true);
return value;
}
return 0;
}
public static List<ItemDto> getReadableItemDtos() {
ArrayList list = new ArrayList();
list.add(new ItemDto(item_status, "AGV状态", "DB620.W0"));
list.add(new ItemDto(item_type, "AGV任务类型", "DB620.W2"));
list.add(new ItemDto(item_x_coordinate, "AGVx坐标", "DB620.W4"));
list.add(new ItemDto(item_y_coordinate, "AGVy坐标", "DB620.W6"));
return list;
}
public static List<ItemDto> getWriteableItemDtos() {
ArrayList list = new ArrayList();
list.add(new ItemDto(item_status, "AGV状态", "DB620.W0"));
list.add(new ItemDto(item_type, "AGV任务类型", "DB620.W2"));
list.add(new ItemDto(item_x_coordinate, "AGVx坐标", "DB620.W4"));
list.add(new ItemDto(item_y_coordinate, "AGVy坐标", "DB620.W6"));
return list;
}
}

View File

@@ -0,0 +1,60 @@
package org.nl.acs.device_driver.agv;
import org.nl.acs.device.device_driver.standard_inspect.ItemDto;
import org.nl.acs.device_driver.DeviceDriver;
import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination;
import org.nl.acs.opc.Device;
import org.nl.acs.opc.DeviceType;
import org.springframework.stereotype.Service;
import java.util.LinkedList;
import java.util.List;
/**
* 马钢agv
*/
@Service
public class MaGangAgvDefination implements OpcDeviceDriverDefination {
@Override
public String getDriverCode() {
return "magang_agv";
}
@Override
public String getDriverName() {
return "马钢AGV";
}
@Override
public String getDriverDescription() {
return "马钢AGV";
}
@Override
public DeviceDriver getDriverInstance(Device device) {
return (new MaGangAgvDeviceDriver()).setDevice(device).setDriverDefination(this);
}
@Override
public Class<? extends DeviceDriver> getDeviceDriverType() {
return MaGangAgvDeviceDriver.class;
}
@Override
public List<DeviceType> getFitDeviceTypes() {
List<DeviceType> types = new LinkedList();
types.add(DeviceType.conveyor);
return types;
}
@Override
public List<ItemDto> getReadableItemDtos() {
return ItemProtocol.getReadableItemDtos();
}
@Override
public List<ItemDto> getWriteableItemDtos() {
return ItemProtocol.getWriteableItemDtos();
}
}

View File

@@ -0,0 +1,158 @@
package org.nl.acs.device_driver.agv;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.acs.agv.server.AgvService;
import org.nl.acs.device.device_driver.standard_inspect.ReadUtil;
import org.nl.acs.device.service.DeviceService;
import org.nl.acs.device_driver.DeviceDriver;
import org.nl.acs.device_driver.RouteableDeviceDriver;
import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver;
import org.nl.acs.device_driver.driver.ExecutableDeviceDriver;
import org.nl.acs.ext.wms.service.AcsToWmsService;
import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl;
import org.nl.acs.instruction.service.InstructionService;
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.route.service.RouteLineService;
import org.nl.acs.task.service.TaskService;
import org.nl.modules.system.service.ParamService;
import org.nl.modules.wql.util.SpringContextHolder;
import org.openscada.opc.lib.da.Server;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.*;
/**
* 马钢agv
*/
@Slf4j
@Data
@RequiredArgsConstructor
public class MaGangAgvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor {
protected ItemProtocol itemProtocol = new ItemProtocol(this);
@Autowired
DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class);
@Autowired
InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class);
@Autowired
DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class);
@Autowired
TaskService taskserver = SpringContextHolder.getBean(TaskService.class);
@Autowired
RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class);
@Autowired
AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class);
@Autowired
ParamService paramService = SpringContextHolder.getBean(ParamService.class);
@Autowired
DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class);
@Autowired
AgvService agvService = SpringContextHolder.getBean(AgvService.class);
private Date instruction_require_time = new Date();
private Date instruction_finished_time = new Date();
private Date instruction_apply_time = new Date();
private int instruction_require_time_out = 3000;
//agv工作状态
int status = 0;
int last_status = 0;
//AGV任务类型
int type = 0;
int last_type = 0;
//x坐标
int x_coordinate = 0;
int last_x_coordinate = 0;
//y坐标
int y_coordinate = 0;
int last_y_coordinate = 0;
Boolean isonline = true;
Boolean iserror = false;
//1-执行任务2-取货完成3-放货完成;
int flag;
String device_code;
@Override
public Device getDevice() {
return this.device;
}
//请求成功标记
Boolean requireSucess = false;
@Override
public void execute() throws Exception {
String message = null;
device_code = this.getDeviceCode();
status = this.itemProtocol.getStatus();
type = this.itemProtocol.getType();
x_coordinate = this.itemProtocol.getX_coordinate();
y_coordinate = this.itemProtocol.getY_coordinate();
}
protected void thingToNothing() {
}
public void writing(String param, String value) {
String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code()
+ "." + param;
String opcservcerid = this.getDevice().getOpc_server_id();
Server server = ReadUtil.getServer(opcservcerid);
Map<String, Object> itemMap = new HashMap<String, Object>();
itemMap.put(to_command, value);
ReadUtil.write(itemMap, server);
}
@Override
public JSONObject getDeviceStatusName() {
JSONObject jo = new JSONObject();
String status = "";
String type = "";
if (this.getStatus() == 1) {
status = "工作中";
} else if (this.getStatus() == 2) {
status = "充电中";
} else if (this.getStatus() == 3) {
status = "故障";
} else if (this.getStatus() == 4) {
status = "休息中";
}
if (this.getType() == 1) {
type = "5#镀锌送样";
} else if (this.getType() == 2) {
type = "1#连退送样";
} else if (this.getType() == 3) {
type = "2#连退送样";
} else if (this.getType() == 4) {
type = "重卷送样";
}
jo.put("device_name", this.getDevice().getDevice_name());
jo.put("type", type);
jo.put("status", status);
return jo;
}
@Override
public void setDeviceStatus(JSONObject data) {
}
}

View File

@@ -0,0 +1,56 @@
package org.nl.acs.device_driver.led;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.nl.acs.device.device_driver.standard_inspect.ItemDto;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Data
public class ItemProtocol {
public static String item_D01 = "D01";
private MaGangLedDeviceDriver driver;
public ItemProtocol(MaGangLedDeviceDriver driver) {
this.driver = driver;
}
public int getD01() {
return this.getOpcIntegerValue(item_D01);
}
Boolean isonline;
public int getOpcIntegerValue(String protocol) {
Integer value = this.driver.getIntegeregerValue(protocol);
if (value == null) {
setIsonline(false);
} else {
setIsonline(true);
return value;
}
return 0;
}
public static List<ItemDto> getReadableItemDtos() {
ArrayList list = new ArrayList();
list.add(new ItemDto(item_D01, "LED", "00017", Boolean.valueOf(true)));
return list;
}
public static List<ItemDto> getWriteableItemDtos() {
ArrayList list = new ArrayList();
list.add(new ItemDto(item_D01, "LED", "00017", Boolean.valueOf(true)));
return list;
}
}

View File

@@ -0,0 +1,60 @@
package org.nl.acs.device_driver.led;
import org.nl.acs.device.device_driver.standard_inspect.ItemDto;
import org.nl.acs.device_driver.DeviceDriver;
import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination;
import org.nl.acs.opc.Device;
import org.nl.acs.opc.DeviceType;
import org.springframework.stereotype.Service;
import java.util.LinkedList;
import java.util.List;
/**
* 马钢led
*/
@Service
public class MaGangLedDefination implements OpcDeviceDriverDefination {
@Override
public String getDriverCode() {
return "magang_led";
}
@Override
public String getDriverName() {
return "马钢led";
}
@Override
public String getDriverDescription() {
return "马钢led";
}
@Override
public DeviceDriver getDriverInstance(Device device) {
return (new MaGangLedDeviceDriver()).setDevice(device).setDriverDefination(this);
}
@Override
public Class<? extends DeviceDriver> getDeviceDriverType() {
return MaGangLedDeviceDriver.class;
}
@Override
public List<DeviceType> getFitDeviceTypes() {
List<DeviceType> types = new LinkedList();
types.add(DeviceType.conveyor);
return types;
}
@Override
public List<ItemDto> getReadableItemDtos() {
return ItemProtocol.getReadableItemDtos();
}
@Override
public List<ItemDto> getWriteableItemDtos() {
return ItemProtocol.getWriteableItemDtos();
}
}

View File

@@ -0,0 +1,135 @@
package org.nl.acs.device_driver.led;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.acs.agv.server.AgvService;
import org.nl.acs.device.device_driver.standard_inspect.ReadUtil;
import org.nl.acs.device.service.DeviceService;
import org.nl.acs.device_driver.DeviceDriver;
import org.nl.acs.device_driver.RouteableDeviceDriver;
import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver;
import org.nl.acs.device_driver.driver.ExecutableDeviceDriver;
import org.nl.acs.ext.wms.service.AcsToWmsService;
import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl;
import org.nl.acs.instruction.service.InstructionService;
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.route.service.RouteLineService;
import org.nl.acs.task.service.TaskService;
import org.nl.modules.system.service.ParamService;
import org.nl.modules.wql.util.SpringContextHolder;
import org.openscada.opc.lib.da.Server;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 马钢led
*/
@Slf4j
@Data
@RequiredArgsConstructor
public class MaGangLedDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor {
protected ItemProtocol itemProtocol = new ItemProtocol(this);
@Autowired
DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class);
@Autowired
InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class);
@Autowired
DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class);
@Autowired
TaskService taskserver = SpringContextHolder.getBean(TaskService.class);
@Autowired
RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class);
@Autowired
AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class);
@Autowired
ParamService paramService = SpringContextHolder.getBean(ParamService.class);
@Autowired
DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class);
@Autowired
AgvService agvService = SpringContextHolder.getBean(AgvService.class);
private Date instruction_require_time = new Date();
private Date instruction_finished_time = new Date();
private Date instruction_apply_time = new Date();
private int instruction_require_time_out = 3000;
//agv工作状态
int D01 = 0;
int last_D01 = 0;
Boolean isonline = true;
Boolean iserror = false;
//1-执行任务2-取货完成3-放货完成;
int flag;
String device_code;
@Override
public Device getDevice() {
return this.device;
}
//请求成功标记
Boolean requireSucess = false;
@Override
public void execute() throws Exception {
String message = null;
device_code = this.getDeviceCode();
D01 = this.itemProtocol.getD01();
}
protected void thingToNothing() {
}
public void writing(String param, int command) {
String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code()
+ "." + param;
String opcservcerid = this.getDevice().getOpc_server_id();
Server server = ReadUtil.getServer(opcservcerid);
Map<String, Object> itemMap = new HashMap<String, Object>();
itemMap.put(to_command, command);
ReadUtil.write(itemMap, server);
}
public void writing(String param, String value) {
String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code()
+ "." + param;
String opcservcerid = this.getDevice().getOpc_server_id();
Server server = ReadUtil.getServer(opcservcerid);
Map<String, Object> itemMap = new HashMap<String, Object>();
itemMap.put(to_command, value);
ReadUtil.write(itemMap, server);
}
@Override
public JSONObject getDeviceStatusName() {
JSONObject jo = new JSONObject();
String status = "";
String type = "";
jo.put("device_name", this.getDevice().getDevice_name());
jo.put("type", type);
jo.put("status", status);
return jo;
}
@Override
public void setDeviceStatus(JSONObject data) {
}
}

View File

@@ -18,6 +18,7 @@ public class ItemProtocol {
public static String item_error = "error";
public static String item_to_heartbeat = "to_heartbeat";
public static String item_to_command = "to_command";
@@ -73,6 +74,7 @@ public class ItemProtocol {
public static List<ItemDto> getWriteableItemDtos() {
ArrayList list = new ArrayList();
list.add(new ItemDto(item_to_heartbeat, "反馈心跳", "DB601.B0"));
list.add(new ItemDto(item_to_command, "下发命令", "DB601.W2"));
return list;
}

View File

@@ -64,8 +64,12 @@ public class MaGangConveyorDeviceDriver extends AbstractOpcDeviceDriver implemen
private Date instruction_require_time = new Date();
private Date instruction_finished_time = new Date();
private Date instruction_apply_time = new Date();
private Date feedHeartBeatTime = new Date();
private int feedHeartBeatTimeOut = 30000;
private int instruction_require_time_out = 3000;
int feedHeartbeat = 0;
int last_feedHeartbeat = 0;
int heartbeat = 0;
//工作模式
int mode = 0;
@@ -109,6 +113,20 @@ public class MaGangConveyorDeviceDriver extends AbstractOpcDeviceDriver implemen
move = this.itemProtocol.getItem_move();
action = this.itemProtocol.getItem_action();
error = this.itemProtocol.getItem_error();
String inspect_in_stocck = String.valueOf(this.getDevice().getExtraValue().get("inspect_in_stocck"));
if (StrUtil.isNotEmpty(inspect_in_stocck) && !StrUtil.equals(inspect_in_stocck, "null")) {
Date date = new Date();
if (date.getTime() - this.feedHeartBeatTime.getTime() >= (long) this.feedHeartBeatTimeOut) {
String feedHeart = "0";
if (last_feedHeartbeat == 0) {
feedHeart = "1";
}
this.feedHeartBeatTime = date;
this.writing("to_heartbeat", feedHeart);
last_feedHeartbeat = Integer.parseInt(feedHeart);
}
}
if (mode != last_mode) {
if (mode == 3) {
this.setRequireSucess(false);
@@ -261,6 +279,16 @@ public class MaGangConveyorDeviceDriver extends AbstractOpcDeviceDriver implemen
ReadUtil.write(itemMap, server);
}
public void writing(String type, String value) {
String param = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code()
+ "." + type;
String opcservcerid = this.getDevice().getOpc_server_id();
Server server = ReadUtil.getServer(opcservcerid);
Map<String, Object> itemMap = new HashMap<String, Object>();
itemMap.put(param, value);
ReadUtil.write(itemMap, server);
}
@Override
public JSONObject getDeviceStatusName() {
JSONObject jo = new JSONObject();

View File

@@ -39,6 +39,15 @@ public class HFHandController {
return new ResponseEntity<>(HandService.queryArea(null), HttpStatus.OK);
}
@PostMapping("/queryDevice")
@Log("查询区域点位")
@ApiOperation("查询区域点位")
@SaIgnore
//@PreAuthorize("@el.check('sect:list')")
public ResponseEntity<Object> queryDevice() {
return new ResponseEntity<>(HandService.queryPoint(), HttpStatus.OK);
}
@PostMapping("/point")
@Log("查询设备编号及状态")
@ApiOperation("查询设备编号及状态")
@@ -50,15 +59,15 @@ public class HFHandController {
return new ResponseEntity<>(HandService.queryPointByArea(region), HttpStatus.OK);
}
@PostMapping("/queryDevice")
@Log("查询设备起点和终点")
@ApiOperation("查询设备起点和终点")
@SaIgnore
//@PreAuthorize("@el.check('sect:list')")
//@RequestBody JSONObject json
public ResponseEntity<Object> queryDevice() {
return new ResponseEntity<>(HandService.queryDevice(), HttpStatus.OK);
}
// @PostMapping("/queryDevice")
// @Log("查询设备起点和终点")
// @ApiOperation("查询设备起点和终点")
// @SaIgnore
// //@PreAuthorize("@el.check('sect:list')")
// //@RequestBody JSONObject json
// public ResponseEntity<Object> queryDevice() {
// return new ResponseEntity<>(HandService.queryDevice(), HttpStatus.OK);
// }
@PostMapping("/point/storage")
@Log("查询设备扩展属性")

View File

@@ -2,6 +2,8 @@
package org.nl.hand.amb.service;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;
/**
@@ -119,4 +121,10 @@ public interface HFHandService {
* @return Map<String, Object>
*/
Map<String, Object> queryDevice();
/**
* 查询区域点位
* @return json
*/
JSONObject queryPoint();
}

View File

@@ -70,6 +70,25 @@ public class HFHandServiceImpl implements HFHandService {
return jo;
}
@Override
public JSONObject queryPoint() {
JSONObject result = new JSONObject();
// 1.查询区域
JSONArray regionArr = WQL.getWO("QJN_QUERY001").addParam("flag", "1").process().getResultJSONArray(0);
// 2.根据区域查询对应点位
JSONObject resultJson = new JSONObject();
for (int i = 0; i < regionArr.size(); i++) {
JSONObject jsonRegion = regionArr.getJSONObject(i);
JSONArray pointArr = WQL.getWO("QJN_QUERY001").addParam("flag", "6").addParam("region_id", jsonRegion.getString("region_code")).process().getResultJSONArray(0);
jsonRegion.put("deviceArr", pointArr);
}
resultJson.put("regionja", regionArr);
result.put("result", resultJson);
result.put("code", "1");
result.put("desc", "查询成功");
return result;
}
@Override
public Map<String, Object> queryPointByArea(String dict_id) {
JSONArray resultArr = new JSONArray();

View File

@@ -19,6 +19,7 @@
输入.start_point TYPEAS s_string
输入.next_point TYPEAS s_string
输入.detail_id TYPEAS s_string
输入.region_id TYPEAS s_string
@@ -203,3 +204,22 @@
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "6"
QUERY
SELECT
device_id,
device_code,
device_name,
seq_num
FROM
acs_device
WHERE
is_config = 'true'
AND is_delete = '0'
OPTION 输入.region_id <> ""
region = 输入.region_id
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -0,0 +1,134 @@
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.device_driver.agv.MaGangAgvDeviceDriver;
import org.nl.acs.device_driver.led.MaGangLedDeviceDriver;
import org.nl.acs.instruction.service.InstructionService;
import org.nl.acs.instruction.service.dto.Instruction;
import org.nl.acs.opc.Device;
import org.nl.acs.opc.DeviceAppService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 查询先工AGV设备状态
*/
@Slf4j
@Component
public class QueryXZAgvDeviceStatus {
@Autowired
InstructionService instructionService;
@Autowired
XianGongAgvService agvService;
@Autowired
DeviceAppService deviceAppService;
public void run() {
try {
HttpResponse response = agvService.queryXZAgvDeviceStatus();
if (ObjectUtil.isNotEmpty(response)) {
if (response.getStatus() == 200) {
JSONObject body = JSONObject.parseObject(response.body());
JSONArray ja = body.getJSONArray("report");
for (int i = 0; i < ja.size(); i++) {
JSONObject jo = ja.getJSONObject(i);
//机器人编码
String agv_code = jo.getString("uuid");
//机器人详细状态信息
JSONObject rbk_report = jo.getJSONObject("rbk_report");
//是否正在充电
Boolean charging = rbk_report.getBoolean("charging");
//是否正在执行任务
Boolean procBusiness = jo.getBoolean("procBusiness");
//agv是否故障
Boolean is_error = jo.getBoolean("is_error");
//执行运单信息
JSONObject current_order = jo.getJSONObject("current_order");
String inst_code = current_order.getString("id");
String task_type = "0";
if (StrUtil.isNotEmpty(inst_code)) {
Instruction inst = instructionService.findByCodeFromCache(inst_code);
//任务类型
task_type = inst.getInstruction_type();
}
//x坐标
int x = Double.valueOf(rbk_report.getString("x")).intValue();
//y坐标
int y = Double.valueOf(rbk_report.getString("y")).intValue();
String status = "0";
if (procBusiness) {
//工作中
status = "1";
} else {
if (charging) {
//充电中
status = "2";
} else {
if (is_error) {
//故障
status = "3";
} else {
//休息中
status = "4";
}
}
}
Device device = deviceAppService.findDeviceByCode(agv_code);
MaGangAgvDeviceDriver maGangAgvDeviceDriver;
if (device.getDeviceDriver() instanceof MaGangAgvDeviceDriver) {
maGangAgvDeviceDriver = (MaGangAgvDeviceDriver) device.getDeviceDriver();
maGangAgvDeviceDriver.writing("status", status);
maGangAgvDeviceDriver.writing("type", task_type);
maGangAgvDeviceDriver.writing("x_coordinate", String.valueOf(x));
maGangAgvDeviceDriver.writing("y_coordinate", String.valueOf(y));
}
}
}
}
} catch (Exception e) {
}
try {
JSONObject map = new JSONObject();
JSONArray blocks = new JSONArray();
map.put("blockGroup",blocks);
JSONArray jsonArray = agvService.blockGroupStatus(map);
if (ObjectUtil.isNotEmpty(jsonArray)){
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Boolean status = jsonObject.getBoolean("status");
if (status){
String name = jsonObject.getString("name");
Device device = deviceAppService.findDeviceByCode(name);
MaGangLedDeviceDriver maGangLedDeviceDriver;
if (device.getDeviceDriver() instanceof MaGangLedDeviceDriver){
maGangLedDeviceDriver = (MaGangLedDeviceDriver) device.getDeviceDriver();
maGangLedDeviceDriver.writing("D01","1");
}
}else {
String name = jsonObject.getString("name");
Device device = deviceAppService.findDeviceByCode(name);
MaGangLedDeviceDriver maGangLedDeviceDriver;
if (device.getDeviceDriver() instanceof MaGangLedDeviceDriver){
maGangLedDeviceDriver = (MaGangLedDeviceDriver) device.getDeviceDriver();
maGangLedDeviceDriver.writing("D01","0");
}
}
}
}
}catch (Exception e){
}
}
}