add: 添加手持功能
This commit is contained in:
@@ -22,10 +22,10 @@
|
||||
<druid.version>1.1.22</druid.version>
|
||||
<mapstruct.version>1.2.0.Final</mapstruct.version>
|
||||
<sa-token.version>1.31.0</sa-token.version>
|
||||
<hutool.version>5.7.14</hutool.version>
|
||||
<hutool.version>5.8.22</hutool.version>
|
||||
<jjwt.version>0.11.1</jjwt.version>
|
||||
<lucene.version>8.2.0</lucene.version>
|
||||
<!-- <lucene.version>7.6.0</lucene.version>-->
|
||||
<!-- <lucene.version>7.6.0</lucene.version>-->
|
||||
<!-- oshi监控需要指定jna版本, 问题详见 https://github.com/oshi/oshi/issues/1040 -->
|
||||
<jna.version>5.9.0</jna.version>
|
||||
<configuration.version>1.9</configuration.version>
|
||||
@@ -48,10 +48,15 @@
|
||||
<dependency>
|
||||
<groupId>org.dromara.dynamictp</groupId>
|
||||
<artifactId>dynamic-tp-spring-boot-starter-adapter-webserver</artifactId>
|
||||
<version>1.1.6</version>
|
||||
<version>1.1.6.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Lucence核心包 -->
|
||||
<dependency>
|
||||
<groupId>com.yomahub</groupId>
|
||||
<artifactId>tlog-all-spring-boot-starter</artifactId>
|
||||
<version>1.5.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.lucene</groupId>
|
||||
<artifactId>lucene-core</artifactId>
|
||||
@@ -88,11 +93,11 @@
|
||||
|
||||
|
||||
<!-- 日志链路追踪 https://tlog.yomahub.com/pages/f62a84/#%E5%90%8C%E6%AD%A5%E6%97%A5%E5%BF%97-->
|
||||
<dependency>
|
||||
<!--<dependency>
|
||||
<groupId>com.yomahub</groupId>
|
||||
<artifactId>tlog-all-spring-boot-starter</artifactId>
|
||||
<version>1.5.0</version>
|
||||
</dependency>
|
||||
</dependency>-->
|
||||
|
||||
<!-- 获取系统信息 -->
|
||||
<dependency>
|
||||
@@ -184,7 +189,7 @@
|
||||
</dependency>
|
||||
|
||||
<!-- Swagger UI 相关 -->
|
||||
<dependency>
|
||||
<!--<dependency>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-swagger2</artifactId>
|
||||
<version>${swagger.version}</version>
|
||||
@@ -208,12 +213,12 @@
|
||||
<groupId>io.swagger</groupId>
|
||||
<artifactId>swagger-annotations</artifactId>
|
||||
<version>1.5.21</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
</dependency>-->
|
||||
<!--<dependency>
|
||||
<groupId>io.swagger</groupId>
|
||||
<artifactId>swagger-models</artifactId>
|
||||
<version>1.5.21</version>
|
||||
</dependency>
|
||||
</dependency>-->
|
||||
|
||||
|
||||
<!--Mysql依赖包-->
|
||||
@@ -439,7 +444,7 @@
|
||||
<dependency>
|
||||
<groupId>org.bouncycastle</groupId>
|
||||
<artifactId>bcprov-jdk15on</artifactId>
|
||||
<version>1.50</version>
|
||||
<version>1.54</version>
|
||||
</dependency>
|
||||
|
||||
<!--导出CSV相关-->
|
||||
@@ -449,6 +454,36 @@
|
||||
<version>${commons-csv.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml-schemas</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.retry</groupId>
|
||||
<artifactId>spring-retry</artifactId>
|
||||
<version>1.2.5.RELEASE</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.swagger</groupId>
|
||||
<artifactId>swagger-annotations</artifactId>
|
||||
<version>1.5.22</version>
|
||||
</dependency>
|
||||
<!--<dependency>
|
||||
<groupId>xerces</groupId>
|
||||
<artifactId>xercesImpl</artifactId>
|
||||
<version>2.12.0</version>
|
||||
</dependency>-->
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.acs.device_driver.basedriver.agv.ndcone;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -41,6 +42,8 @@ import org.nl.system.service.param.ISysParamService;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -155,19 +158,6 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
||||
return;
|
||||
}
|
||||
device_code = deviceService.queryDeviceCodeByAddress(agvaddr);
|
||||
/*if (agvaddr != 0) {
|
||||
old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr);
|
||||
if (StrUtil.contains(old_device_code, "-")) {
|
||||
String[] point = old_device_code.split("-");
|
||||
device_code = point[0];
|
||||
} else if (StrUtil.contains(old_device_code, ".")) {
|
||||
String[] point = old_device_code.split("\\.");
|
||||
device_code = point[0];
|
||||
emptyNum = point[1];
|
||||
} else {
|
||||
device_code = old_device_code;
|
||||
}
|
||||
}*/
|
||||
|
||||
if (agvaddr != 0) {
|
||||
old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr);
|
||||
@@ -188,20 +178,34 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
||||
}
|
||||
if (device.getDeviceDriver() instanceof PlcToAgvDeviceDriver) {
|
||||
PlcToAgvDeviceDriver plcToAgvDeviceDriver = (PlcToAgvDeviceDriver) device.getDeviceDriver();
|
||||
Map<String, Object> extraValue = plcToAgvDeviceDriver.getExtraValue();
|
||||
if (plcToAgvDeviceDriver.getAGVEnable() != 0) {
|
||||
if (ObjectUtil.isNotEmpty(plcToAgvDeviceDriver.getExtraValue().get("upper_lower_levels"))) {
|
||||
Object plc_to_agv = plcToAgvDeviceDriver.getExtraValue().get("upper_lower_levels");
|
||||
if (device_code.contains("_01")) {
|
||||
if (plcToAgvDeviceDriver.getAGVSetOutUpperAllowed() == 1) {
|
||||
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
|
||||
}
|
||||
} else if (device_code.contains("_02")) {
|
||||
Object plc_to_agv = extraValue.get("upper_lower_levels");
|
||||
if (ObjectUtil.isNotNull(plc_to_agv) && "1".equals(plc_to_agv)) {
|
||||
plcToAgvDeviceDriver.writing("AGVSetOutReqUpper", "1");
|
||||
if (plcToAgvDeviceDriver.getAGVSetOutUpperAllowed() == 1) {
|
||||
plcToAgvDeviceDriver.writing("AGVInOP", "1");
|
||||
data = feedBackStatus(data, index, 1, inst, task, 2, false);
|
||||
}
|
||||
}
|
||||
} else if (ObjectUtil.isNotEmpty(extraValue.get("upper_lower_levels"))) {
|
||||
Object plc_to_agv = extraValue.get("upper_lower_levels");
|
||||
if ("1".equals(plc_to_agv)) {
|
||||
plcToAgvDeviceDriver.writing("AGVSetOutReqUpper", "1");
|
||||
if (plcToAgvDeviceDriver.getAGVSetOutUpperAllowed() == 1) {
|
||||
data = feedBackStatus(data, index, 1, inst, task, 2, false);
|
||||
plcToAgvDeviceDriver.writing("AGVInOP", "1");
|
||||
data = feedBackStatus(data, index, 1, inst, task, 2, false);
|
||||
}
|
||||
} else if ("2".equals(plc_to_agv)) {
|
||||
plcToAgvDeviceDriver.writing("AGVSetOutReqLower", "1");
|
||||
if (plcToAgvDeviceDriver.getAGVSetOutLowerAllowed() == 1) {
|
||||
data = feedBackStatus(data, index, 1, inst, task, 2, false);
|
||||
plcToAgvDeviceDriver.writing("AGVInOP", "1");
|
||||
data = feedBackStatus(data, index, 1, inst, task, 2, false);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -252,14 +256,49 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
||||
}
|
||||
if (device.getDeviceDriver() instanceof PlcToAgvDeviceDriver) {
|
||||
PlcToAgvDeviceDriver plcToAgvDeviceDriver = (PlcToAgvDeviceDriver) device.getDeviceDriver();
|
||||
try {
|
||||
plcToAgvDeviceDriver.writing("AGVInOP", "0");
|
||||
plcToAgvDeviceDriver.writing("AGVSetOutReqUpper", "0");
|
||||
plcToAgvDeviceDriver.writing("AGVSetOutReqLower", "0");
|
||||
} catch (Exception e) {
|
||||
log.info("下发AGVInOP信号:{}失败", "0");
|
||||
if (device_code.contains("_01")) {
|
||||
try {
|
||||
List list = new ArrayList<>();
|
||||
Map map = new HashMap();
|
||||
map.put("code", "AGVInOP");
|
||||
map.put("value", "0");
|
||||
Map map1 = new HashMap();
|
||||
map1.put("code", "AGVSetOutReqUpper");
|
||||
map1.put("value", "0");
|
||||
Map map2 = new HashMap();
|
||||
map2.put("code", "AGVSetOutReqLower");
|
||||
map2.put("value", "0");
|
||||
list.add(map);
|
||||
list.add(map1);
|
||||
list.add(map2);
|
||||
plcToAgvDeviceDriver.writing(list);
|
||||
} catch (Exception e) {
|
||||
log.info("下发AGVInOP信号:{}失败", "0");
|
||||
}
|
||||
data = feedBackStatus(data, index, 2, inst, task, 2, false);
|
||||
} else if (device_code.contains("_02")) {
|
||||
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
|
||||
} else {
|
||||
try {
|
||||
List list = new ArrayList<>();
|
||||
Map map = new HashMap();
|
||||
map.put("code", "AGVInOP");
|
||||
map.put("value", "0");
|
||||
Map map1 = new HashMap();
|
||||
map1.put("code", "AGVSetOutReqUpper");
|
||||
map1.put("value", "0");
|
||||
Map map2 = new HashMap();
|
||||
map2.put("code", "AGVSetOutReqLower");
|
||||
map2.put("value", "0");
|
||||
list.add(map);
|
||||
list.add(map1);
|
||||
list.add(map2);
|
||||
plcToAgvDeviceDriver.writing(list);
|
||||
} catch (Exception e) {
|
||||
log.info("下发AGVInOP信号:{}失败", "0");
|
||||
}
|
||||
data = feedBackStatus(data, index, 2, inst, task, 2, false);
|
||||
}
|
||||
data = feedBackStatus(data, index, 2, inst, task, 2, false);
|
||||
} else if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) {
|
||||
try {
|
||||
data = feedBackStatus(data, index, 2, inst, task, 1, false);
|
||||
@@ -300,19 +339,33 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
||||
if (device.getDeviceDriver() instanceof PlcToAgvDeviceDriver) {
|
||||
PlcToAgvDeviceDriver plcToAgvDeviceDriver = (PlcToAgvDeviceDriver) device.getDeviceDriver();
|
||||
if (plcToAgvDeviceDriver.getAGVEnable() != 0) {
|
||||
if (ObjectUtil.isNotEmpty(plcToAgvDeviceDriver.getExtraValue().get("upper_lower_levels"))) {
|
||||
Object plc_to_agv = plcToAgvDeviceDriver.getExtraValue().get("upper_lower_levels");
|
||||
Map<String, Object> extraValue = plcToAgvDeviceDriver.getExtraValue();
|
||||
if (device_code.contains("_01")) {
|
||||
Object plc_to_agv = extraValue.get("upper_lower_levels");
|
||||
if (ObjectUtil.isNotNull(plc_to_agv) && "1".equals(plc_to_agv)) {
|
||||
plcToAgvDeviceDriver.writing("AGVSetInReqUpper", "1");
|
||||
if (plcToAgvDeviceDriver.getAGVSetInUpperAllowed() == 1) {
|
||||
plcToAgvDeviceDriver.writing("AGVInOP", "1");
|
||||
data = feedBackStatus(data, index, 3, inst, task, 2, false);
|
||||
}
|
||||
}
|
||||
} else if (device_code.contains("_02")) {
|
||||
if (plcToAgvDeviceDriver.getAGVSetInUpperAllowed() == 1) {
|
||||
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
|
||||
}
|
||||
} else if (ObjectUtil.isNotEmpty(extraValue.get("upper_lower_levels"))) {
|
||||
Object plc_to_agv = extraValue.get("upper_lower_levels");
|
||||
if ("1".equals(plc_to_agv)) {
|
||||
plcToAgvDeviceDriver.writing("AGVSetInReqUpper", "1");
|
||||
if (plcToAgvDeviceDriver.getAGVSetInUpperAllowed() == 1) {
|
||||
data = feedBackStatus(data, index, 3, inst, task, 2, false);
|
||||
plcToAgvDeviceDriver.writing("AGVInOP", "1");
|
||||
data = feedBackStatus(data, index, 3, inst, task, 2, false);
|
||||
}
|
||||
} else if ("2".equals(plc_to_agv)) {
|
||||
plcToAgvDeviceDriver.writing("AGVSetInReqLower", "1");
|
||||
if (plcToAgvDeviceDriver.getAGVSetInLowerAllowed() == 1) {
|
||||
data = feedBackStatus(data, index, 3, inst, task, 2, false);
|
||||
plcToAgvDeviceDriver.writing("AGVInOP", "1");
|
||||
data = feedBackStatus(data, index, 3, inst, task, 2, false);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -347,20 +400,6 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
||||
logServer.deviceExecuteLog(this.device_code, "", "", "agv地址参数有误,phase:" + phase);
|
||||
return;
|
||||
}
|
||||
/*if (agvaddr != 0) {
|
||||
old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr);
|
||||
if (StrUtil.contains(old_device_code, "-")) {
|
||||
String[] point = old_device_code.split("-");
|
||||
device_code = point[0];
|
||||
} else if (StrUtil.contains(old_device_code, ".")) {
|
||||
String[] point = old_device_code.split("\\.");
|
||||
device_code = point[0];
|
||||
emptyNum = point[1];
|
||||
} else {
|
||||
device_code = old_device_code;
|
||||
}
|
||||
}*/
|
||||
|
||||
if (agvaddr != 0) {
|
||||
old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr);
|
||||
device_code = old_device_code;
|
||||
@@ -383,21 +422,56 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
||||
transportOrder = "";
|
||||
if (device.getDeviceDriver() instanceof PlcToAgvDeviceDriver) {
|
||||
PlcToAgvDeviceDriver plcToAgvDeviceDriver = (PlcToAgvDeviceDriver) device.getDeviceDriver();
|
||||
try {
|
||||
plcToAgvDeviceDriver.writing("AGVInOP", "0");
|
||||
plcToAgvDeviceDriver.writing("AGVSetInReqUpper", "0");
|
||||
plcToAgvDeviceDriver.writing("AGVSetInReqLower", "0");
|
||||
} catch (Exception e) {
|
||||
log.info("下发AGVInOP信号失败");
|
||||
if (device_code.contains("_01")) {
|
||||
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
|
||||
} else if (device_code.contains("_02")) {
|
||||
try {
|
||||
List list = new ArrayList<>();
|
||||
Map map = new HashMap();
|
||||
map.put("code", "AGVInOP");
|
||||
map.put("value", "0");
|
||||
Map map1 = new HashMap();
|
||||
map1.put("code", "AGVSetInReqUpper");
|
||||
map1.put("value", "0");
|
||||
Map map2 = new HashMap();
|
||||
map2.put("code", "AGVSetInReqLower");
|
||||
map2.put("value", "0");
|
||||
list.add(map);
|
||||
list.add(map1);
|
||||
list.add(map2);
|
||||
plcToAgvDeviceDriver.writing(list);
|
||||
} catch (Exception e) {
|
||||
log.info("下发AGVInOP信号:{}失败", "0");
|
||||
}
|
||||
data = feedBackStatus(data, index, 4, inst, task, 2, false);
|
||||
} else {
|
||||
try {
|
||||
List list = new ArrayList<>();
|
||||
Map map = new HashMap();
|
||||
map.put("code", "AGVInOP");
|
||||
map.put("value", "0");
|
||||
Map map1 = new HashMap();
|
||||
map1.put("code", "AGVSetInReqUpper");
|
||||
map1.put("value", "0");
|
||||
Map map2 = new HashMap();
|
||||
map2.put("code", "AGVSetInReqLower");
|
||||
map2.put("value", "0");
|
||||
list.add(map);
|
||||
list.add(map1);
|
||||
list.add(map2);
|
||||
plcToAgvDeviceDriver.writing(list);
|
||||
} catch (Exception e) {
|
||||
log.info("下发AGVInOP信号:{}失败", "0");
|
||||
}
|
||||
data = feedBackStatus(data, index, 4, inst, task, 2, false);
|
||||
}
|
||||
data = feedBackStatus(data, index, 4, inst, task, 2, false);
|
||||
} else if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) {
|
||||
try {
|
||||
StandardOrdinarySiteDeviceDriver standar = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver();
|
||||
Map<String, Object> extraValue = standar.getDevice().getExtraValue();
|
||||
boolean is_empty = false;
|
||||
if (ObjectUtil.isNotEmpty(extraValue.get("is_empty"))) {
|
||||
is_empty = extraValue.get("is_empty").equals("true") ? true : false;
|
||||
is_empty = extraValue.get("is_empty").equals("true");
|
||||
}
|
||||
data = feedBackStatus(data, index, 4, inst, task, 1, is_empty);
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -22,6 +22,8 @@ public class ItemProtocol {
|
||||
public static String item_AGVSetInReqUpper = "AGVSetInReqUpper";
|
||||
public static String item_AGVSetOutReqUpper = "AGVSetOutReqUpper";
|
||||
public static String item_AGVInOP = "AGVInOP";
|
||||
public static String item_Heartbeat = "heartbeat";
|
||||
public static String item_Heartbeat1 = "heartbeat1";
|
||||
|
||||
private PlcToAgvDeviceDriver driver;
|
||||
|
||||
@@ -31,6 +33,10 @@ public class ItemProtocol {
|
||||
this.driver = driver;
|
||||
}
|
||||
|
||||
public short getHeartbeat() {
|
||||
return this.getOpcShortValue(item_Heartbeat);
|
||||
}
|
||||
|
||||
public int getAGVSetInLowerAllowed() {
|
||||
return this.getOpcIntegerValue(item_AGVSetInLowerAllowed);
|
||||
}
|
||||
@@ -51,6 +57,26 @@ public class ItemProtocol {
|
||||
return this.getOpcIntegerValue(item_AGVEnable);
|
||||
}
|
||||
|
||||
public int getAGVInOP() {
|
||||
return this.getOpcIntegerValue(item_AGVInOP);
|
||||
}
|
||||
|
||||
public int getAGVSetInReqUpper() {
|
||||
return this.getOpcIntegerValue(item_AGVSetInReqUpper);
|
||||
}
|
||||
|
||||
public int getAGVSetInReqLower() {
|
||||
return this.getOpcIntegerValue(item_AGVSetInReqLower);
|
||||
}
|
||||
|
||||
public int getAGVSetOutReqUpper() {
|
||||
return this.getOpcIntegerValue(item_AGVSetOutReqUpper);
|
||||
}
|
||||
|
||||
public int getAGVSetOutReqLower() {
|
||||
return this.getOpcIntegerValue(item_AGVSetOutReqLower);
|
||||
}
|
||||
|
||||
|
||||
//是否有货
|
||||
public int hasGoods(int move) {
|
||||
@@ -59,11 +85,14 @@ public class ItemProtocol {
|
||||
|
||||
Boolean isonline;
|
||||
|
||||
int last_value = 0;
|
||||
long date = 0;
|
||||
private static final long STABILITY_DURATION_MS = 3000; // 稳定时间 3 秒
|
||||
|
||||
public int getOpcIntegerValue(String protocol) {
|
||||
getExends();
|
||||
Integer value = this.driver.getIntegeregerValue(protocol);
|
||||
if (value == null) {
|
||||
// log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!");
|
||||
setIsonline(false);
|
||||
} else {
|
||||
setIsonline(true);
|
||||
@@ -73,33 +102,48 @@ public class ItemProtocol {
|
||||
|
||||
}
|
||||
|
||||
public void getExends(){
|
||||
|
||||
public Short getOpcShortValue(String protocol) {
|
||||
getExends();
|
||||
Short value = this.driver.getShortValue(protocol);
|
||||
if (value == null) {
|
||||
setIsonline(false);
|
||||
} else {
|
||||
setIsonline(true);
|
||||
return value;
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
public void getExends() {
|
||||
Object upper_lower_levels = this.driver.getExtraValue().get("upper_lower_levels");
|
||||
if(ObjectUtil.isNotEmpty(upper_lower_levels)){
|
||||
msg = upper_lower_levels;
|
||||
if (ObjectUtil.isNotEmpty(upper_lower_levels)) {
|
||||
msg = upper_lower_levels;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static List<ItemDto> getReadableItemDtos() {
|
||||
ArrayList list = new ArrayList();
|
||||
if(ObjectUtil.isNotEmpty(msg) && "1".equals(msg)){
|
||||
if (ObjectUtil.isNotEmpty(msg) && "1".equals(msg)) {
|
||||
list.add(new ItemDto(item_AGVSetInUpperAllowed, "上层允许上料", "DB600.B3"));
|
||||
list.add(new ItemDto(item_AGVSetOutUpperAllowed, "上层允许下料", "DB600.B4"));
|
||||
}else if(ObjectUtil.isNotEmpty(msg) && "2".equals(msg)){
|
||||
} else if (ObjectUtil.isNotEmpty(msg) && "2".equals(msg)) {
|
||||
list.add(new ItemDto(item_AGVSetInLowerAllowed, "下层允许上料", "DB600.B0"));
|
||||
list.add(new ItemDto(item_AGVSetOutLowerAllowed, "下层允许下料", "DB600.B2"));
|
||||
}
|
||||
list.add(new ItemDto(item_AGVEnable, "agv动作使能", "DB600.D6"));
|
||||
list.add(new ItemDto(item_Heartbeat, "心跳", "DB600.D6"));
|
||||
return list;
|
||||
}
|
||||
|
||||
public static List<ItemDto> getWriteableItemDtos() {
|
||||
ArrayList list = new ArrayList();
|
||||
if(ObjectUtil.isNotEmpty(msg) && "1".equals(msg)){
|
||||
if (ObjectUtil.isNotEmpty(msg) && "1".equals(msg)) {
|
||||
list.add(new ItemDto(item_AGVSetInReqUpper, "上层上料请求", "DB600.B3"));
|
||||
list.add(new ItemDto(item_AGVSetOutReqUpper, "上层下料请求", "DB600.B4"));
|
||||
}else if(ObjectUtil.isNotEmpty(msg) && "2".equals(msg)){
|
||||
} else if (ObjectUtil.isNotEmpty(msg) && "2".equals(msg)) {
|
||||
list.add(new ItemDto(item_AGVSetInReqLower, "下层上料请求", "DB600.B0"));
|
||||
list.add(new ItemDto(item_AGVSetOutReqLower, "下层下料请求", "DB600.B2"));
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ import org.nl.system.service.lucene.LuceneExecuteLogService;
|
||||
import org.nl.system.service.lucene.dto.LuceneLogDto;
|
||||
import org.openscada.opc.lib.da.Server;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -69,9 +70,24 @@ public class PlcToAgvDeviceDriver extends AbstractOpcDeviceDriver implements Dev
|
||||
int AGVSetOutUpperAllowed = 0;
|
||||
int AGVEnable = 0;
|
||||
|
||||
int AGVSetInReqUpper = 0;
|
||||
int AGVSetInReqLower = 0;
|
||||
int AGVSetOutReqUpper = 0;
|
||||
int AGVSetOutReqLower = 0;
|
||||
int AGVInOP = 0;
|
||||
|
||||
Boolean flag = false;
|
||||
|
||||
String device_code;
|
||||
|
||||
String writing_heartbeat = "0";
|
||||
|
||||
private long STABILITY_DURATION_MS = 8000;
|
||||
|
||||
int heartbeat = 0;
|
||||
int last_heartbeat = 0;
|
||||
private Date instruction_require_time = new Date();
|
||||
|
||||
@Override
|
||||
public Device getDevice() {
|
||||
return this.device;
|
||||
@@ -88,15 +104,25 @@ public class PlcToAgvDeviceDriver extends AbstractOpcDeviceDriver implements Dev
|
||||
AGVSetInUpperAllowed = this.itemProtocol.getAGVSetInUpperAllowed();
|
||||
AGVSetOutUpperAllowed = this.itemProtocol.getAGVSetOutUpperAllowed();
|
||||
AGVEnable = this.itemProtocol.getAGVEnable();
|
||||
AGVInOP = this.itemProtocol.getAGVInOP();
|
||||
AGVSetInReqUpper = this.itemProtocol.getAGVSetInReqUpper();
|
||||
AGVSetInReqLower = this.itemProtocol.getAGVSetInReqLower();
|
||||
AGVSetOutReqUpper = this.itemProtocol.getAGVSetOutReqUpper();
|
||||
AGVSetOutReqLower = this.itemProtocol.getAGVSetOutReqLower();
|
||||
heartbeat = this.itemProtocol.getHeartbeat();
|
||||
|
||||
if (heartbeat == 1) {
|
||||
writing("heartbeat", writing_heartbeat);
|
||||
}
|
||||
} catch (Exception var17) {
|
||||
log.info("读取信号失败,失败原因:{}", var17.getMessage());
|
||||
throw new BadRequestException("读取信号失败,失败原因:" + var17.getMessage());
|
||||
}
|
||||
|
||||
last_heartbeat = heartbeat;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 多个信号一起下发电气
|
||||
*
|
||||
@@ -131,6 +157,7 @@ public class PlcToAgvDeviceDriver extends AbstractOpcDeviceDriver implements Dev
|
||||
|
||||
itemMap.put(to_param, Integer.parseInt(value));
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
this.checkcontrol(itemMap);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@@ -143,6 +170,36 @@ public class PlcToAgvDeviceDriver extends AbstractOpcDeviceDriver implements Dev
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
}
|
||||
|
||||
public void writing(List list) {
|
||||
Map<String, Object> itemMap = new HashMap<String, Object>();
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
Object ob = list.get(i);
|
||||
JSONObject json = (JSONObject) JSONObject.toJSON(ob);
|
||||
if (!StrUtil.isEmpty(json.getString("value"))) {
|
||||
String to_param = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code()
|
||||
+ "." + json.getString("code");
|
||||
itemMap.put(to_param, json.getString("value"));
|
||||
}
|
||||
}
|
||||
LuceneLogDto logDto = LuceneLogDto.builder()
|
||||
.device_code(device_code)
|
||||
.content("下发电气信号:" + itemMap)
|
||||
.build();
|
||||
logDto.setLog_level(4);
|
||||
luceneExecuteLogService.deviceExecuteLog(logDto);
|
||||
try {
|
||||
this.checkcontrol(itemMap);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
try {
|
||||
this.checkcontrol(itemMap);
|
||||
} catch (Exception e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public String getToParam() {
|
||||
return this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + ".";
|
||||
}
|
||||
@@ -172,6 +229,12 @@ public class PlcToAgvDeviceDriver extends AbstractOpcDeviceDriver implements Dev
|
||||
@Override
|
||||
public JSONObject getDeviceStatusName() {
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("signals_are_allowed", AGVSetInLowerAllowed == 1 ? "下层允许上料请求" : AGVSetOutLowerAllowed == 1 ? "下层允许下料请求"
|
||||
: AGVSetInUpperAllowed == 1 ? "上层允许上料请求" : AGVSetOutUpperAllowed == 1 ? "上层允许下料请求" : "未允许");
|
||||
jo.put("agv_enable", AGVEnable == 1 ? "启用" : "禁用");
|
||||
jo.put("request_a_signal",AGVSetInReqUpper == 1 ? "上层上料请求" : AGVSetInReqLower == 1 ? "下层上料请求"
|
||||
: AGVSetOutReqUpper == 1 ? "上层下料请求" : AGVSetOutReqLower == 1 ? "下层下料请求" : "未请求");
|
||||
jo.put("agv_inop", AGVInOP == 1 ? "AGV动作中" : "AGV空闲");
|
||||
return jo;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* Copyright 2019-2020 Zheng Jie
|
||||
/* * Copyright 2019-2020 Zheng Jie
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -11,8 +10,10 @@
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
* limitations under the License.*//*
|
||||
|
||||
|
||||
|
||||
package org.nl.config;
|
||||
|
||||
import com.fasterxml.classmate.TypeResolver;
|
||||
@@ -40,11 +41,14 @@ import java.util.List;
|
||||
import static com.google.common.collect.Lists.newArrayList;
|
||||
import static springfox.documentation.schema.AlternateTypeRules.newRule;
|
||||
|
||||
*/
|
||||
/**
|
||||
* api页面 /doc.html
|
||||
* @author Zheng Jie
|
||||
* @date 2018-11-23
|
||||
*/
|
||||
* @date 2018-11-23*//*
|
||||
|
||||
|
||||
|
||||
@Configuration
|
||||
@EnableSwagger2
|
||||
public class SwaggerConfig {
|
||||
@@ -125,9 +129,10 @@ public class SwaggerConfig {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 将Pageable转换展示在swagger中
|
||||
*/
|
||||
|
||||
|
||||
@Configuration
|
||||
class SwaggerDataConfig {
|
||||
|
||||
@@ -159,3 +164,4 @@ class SwaggerDataConfig {
|
||||
private List<String> sort;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -22,7 +22,9 @@ import org.nl.system.service.param.ISysParamService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 自动创建指令
|
||||
@@ -40,6 +42,7 @@ public class AutoCreateInst {
|
||||
RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class);
|
||||
ISysParamService acsConfigService = SpringContextHolder.getBean(ISysParamService.class);
|
||||
List<TaskDto> list = taskserver.queryByStauts("0");
|
||||
list = list.stream().sorted(Comparator.comparing(TaskDto::getPriority)).collect(Collectors.toList());
|
||||
DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class);
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
TaskDto acsTask = list.get(i);
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.lucene.document.Document;
|
||||
import org.apache.lucene.document.NumericDocValuesField;
|
||||
import org.apache.lucene.index.DirectoryReader;
|
||||
import org.apache.lucene.index.Term;
|
||||
import org.apache.lucene.search.*;
|
||||
@@ -67,6 +68,7 @@ public class LuceneServiceImpl implements LuceneService {
|
||||
} else {
|
||||
endDate = getDate(endDate);
|
||||
}
|
||||
|
||||
TermRangeQuery termRangeQuery = new TermRangeQuery("logTime", new BytesRef(startDate), new BytesRef(endDate), true, true);
|
||||
booleanQueryBuilder.add(termRangeQuery, BooleanClause.Occur.MUST);
|
||||
if (whereJson.get("device_code") != null){
|
||||
|
||||
@@ -71,17 +71,34 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="忽视取货校验" label-width="150px">
|
||||
<el-switch v-model="form.ignore_pickup_check" />
|
||||
<el-form-item label="取货校验" label-width="150px">
|
||||
<el-switch v-model="form.is_wait" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="取货完成校验" label-width="150px">
|
||||
<el-switch v-model="form.is_wait_finish" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="忽视放货校验" label-width="150px">
|
||||
<el-switch v-model="form.ignore_release_check" />
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="放货校验" label-width="150px">
|
||||
<el-switch v-model="form.is_releases" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="放货完成校验" label-width="150px">
|
||||
<el-switch v-model="form.is_releases_finish" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="呼叫">
|
||||
@@ -330,7 +347,11 @@ export default {
|
||||
is_pickup: true,
|
||||
is_release: true,
|
||||
link_device_code: [],
|
||||
address: ''
|
||||
address: '',
|
||||
is_wait: true,
|
||||
is_wait_finish: true,
|
||||
is_releases: true,
|
||||
is_releases_finish: true
|
||||
},
|
||||
rules: {},
|
||||
levels: [
|
||||
|
||||
@@ -597,6 +597,18 @@ export default {
|
||||
} else if (val === 'task_id') {
|
||||
const obj = { name: '任务号', value: data[val] }
|
||||
this.arr.push(obj)
|
||||
} else if (val === 'signals_are_allowed') {
|
||||
const obj = { name: '允许信号', value: data[val] }
|
||||
this.arr.push(obj)
|
||||
} else if (val === 'agv_enable') {
|
||||
const obj = { name: '动作使能', value: data[val] }
|
||||
this.arr.push(obj)
|
||||
} else if (val === 'request_a_signal') {
|
||||
const obj = { name: '请求信号', value: data[val] }
|
||||
this.arr.push(obj)
|
||||
} else if (val === 'agv_inop') {
|
||||
const obj = { name: '工位内', value: data[val] }
|
||||
this.arr.push(obj)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user