Эх сурвалжийг харах

接口完成opcda和opcua动态大于和动态小于事件驱动读取数据

zhoupeng 1 жил өмнө
parent
commit
73ddd48db9

+ 1 - 1
chaunyi_opc/opc_common/src/main/java/com/example/opc_common/entity/ItemGroup.java

@@ -36,7 +36,7 @@ public class ItemGroup extends BaseSchedule implements Serializable {
      */
     private Integer readMode;
     /**
-     * 事件驱动产生的条件,0大于,1小于(0,1,值只对应数值类型),2为boolean类型
+     * 事件驱动产生的条件,0大于,1小于(0,1,值只对应数值类型),2等于,3动态大于(只记录超过设定值那一瞬间的数据),4动态小于(只记录低于设定值那一瞬间的数据)
      */
     private Integer eventMode;
     /**

+ 2 - 0
chaunyi_opc/opc_common/src/main/java/com/example/opc_common/util/ConstantStr.java

@@ -97,6 +97,8 @@ public class ConstantStr {
     public static final Integer EVENT_MODEL_EXCEED = 0;
     public static final Integer EVENT_MODEL_LOWER = 1;
     public static final Integer EVENT_MODEL_EQUAL = 2;
+    public static final Integer EVENT_TRENDS_EXCEED = 3;
+    public static final Integer EVENT_TRENDS_LOWER = 4;
 
     //是否该记录0否,1是
     public static final Integer NOT_RECORD = 0;

+ 35 - 0
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaExceedTask.java

@@ -147,6 +147,7 @@ public class OpcDaExceedTask extends TimerTask {
                 Integer isDriverItem = item.getIsDriverItem();
                 access.addItem(itemId, new DataCallback() {
                     private Long index = 0L;
+                    private BigDecimal oldValue;
 
                     @Override
                     public void changed(Item item1, ItemState itemState) {
@@ -212,6 +213,40 @@ public class OpcDaExceedTask extends TimerTask {
                                                         currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
                                                 opcAsyncTask.addCursorRawData(cursorRawData);
                                             }
+                                        } else if (eventMode == ConstantStr.EVENT_TRENDS_EXCEED) {
+                                            if (oldValue.compareTo(bigDecimal1) != 1) {
+                                                if (dmData.compareTo(bigDecimal1) == 1) {
+                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
+                                                            currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
+                                                    opcAsyncTask.addCursorRawData(cursorRawData);
+                                                } else {
+                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
+                                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
+                                                    opcAsyncTask.addCursorRawData(cursorRawData);
+                                                }
+                                            } else {
+                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
+                                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
+                                                opcAsyncTask.addCursorRawData(cursorRawData);
+                                            }
+                                            oldValue = dmData;
+                                        } else if (eventMode == ConstantStr.EVENT_TRENDS_LOWER) {
+                                            if (oldValue.compareTo(bigDecimal1) != -1) {
+                                                if (dmData.compareTo(bigDecimal1) == -1) {
+                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
+                                                            currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
+                                                    opcAsyncTask.addCursorRawData(cursorRawData);
+                                                } else {
+                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
+                                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
+                                                    opcAsyncTask.addCursorRawData(cursorRawData);
+                                                }
+                                            } else {
+                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
+                                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
+                                                opcAsyncTask.addCursorRawData(cursorRawData);
+                                            }
+                                            oldValue = dmData;
                                         }
                                     } else {
                                         CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),

+ 36 - 0
chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/task/OpcUaExceedTask.java

@@ -95,6 +95,8 @@ public class OpcUaExceedTask extends TimerTask {
             Integer isDriverItem = item.getIsDriverItem();
             NodeId n = new NodeId(item.getNodeIndex(), itemId);
             DataModel dm = map.get(itemId);
+            Object redisValue = redisUtil.get(ConstantStr.VALUE + id + itemId);
+            BigDecimal oldValue = JSON.parseObject(redisValue.toString(), BigDecimal.class);
             try {
                 DataValue dataValue = opcUaClient.readValue(0.0, TimestampsToReturn.Both, n).get();
                 if (isDriverItem.equals(ConstantStr.IS_DRIVER_ITEM)) {
@@ -155,6 +157,40 @@ public class OpcUaExceedTask extends TimerTask {
                                             currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
                                     opcAsyncTask.addCursorRawData(cursorRawData);
                                 }
+                            } else if (eventMode == ConstantStr.EVENT_TRENDS_EXCEED) {
+                                if (oldValue.compareTo(bigDecimal1) != 1) {
+                                    if (dmData.compareTo(bigDecimal1) == 1) {
+                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
+                                                currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
+                                        opcAsyncTask.addCursorRawData(cursorRawData);
+                                    } else {
+                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
+                                                currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
+                                        opcAsyncTask.addCursorRawData(cursorRawData);
+                                    }
+                                } else {
+                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
+                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
+                                    opcAsyncTask.addCursorRawData(cursorRawData);
+                                }
+                                redisUtil.set(ConstantStr.VALUE + id + itemId, dmData, ConstantStr.TWO_HOUR);
+                            } else if (eventMode == ConstantStr.EVENT_TRENDS_LOWER) {
+                                if (oldValue.compareTo(bigDecimal1) != -1) {
+                                    if (dmData.compareTo(bigDecimal1) == -1) {
+                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
+                                                currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
+                                        opcAsyncTask.addCursorRawData(cursorRawData);
+                                    } else {
+                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
+                                                currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
+                                        opcAsyncTask.addCursorRawData(cursorRawData);
+                                    }
+                                } else {
+                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
+                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
+                                    opcAsyncTask.addCursorRawData(cursorRawData);
+                                }
+                                redisUtil.set(ConstantStr.VALUE + id + itemId, dmData, ConstantStr.TWO_HOUR);
                             }
                         } else {
                             CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),