Selaa lähdekoodia

修改opcda如果断开时,通过redis控制,不要一直发送报警消息

zhoupeng 1 vuosi sitten
vanhempi
commit
ae64847f45

+ 1 - 0
cqcy-ei/cqcy-ei-common/src/main/java/com/example/opc_common/util/ConstantStr.java

@@ -64,6 +64,7 @@ public class ConstantStr {
     public static final String JAVA_TYPE = "javaType";
     public static final String INDEX = "index";
     public static final String VALUE = "value";
+    public static final String CONNECT_STATE = "connectState";
     public static final String VALUE_BELONG_TIME = "valueBelongTime";
     public static final String START_NUM = "startNum";
     public static final String END_NUM = "endNum";

+ 13 - 4
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/OpcDaChangeTask.java

@@ -98,6 +98,7 @@ public class OpcDaChangeTask extends TimerTask {
             @Override
             public void stateChanged(AutoReconnectState state) {
                 if (state.equals(AutoReconnectState.CONNECTED)) {
+                    redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, true);
                     if (trueCount != 0) {
                         messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
                                 itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
@@ -116,10 +117,18 @@ public class OpcDaChangeTask extends TimerTask {
                     }
                     if (flage) {
                         if (flaseCount != 0) {
-                            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                                    "服务断开,马上进行重新连接",
-                                    ConstantStr.NO_READ));
+                            //通过redis控制不要一直添加报警消息
+                            Boolean connectFlage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id);
+                            if (Blank.isEmpty(connectFlage)) {
+                                connectFlage = false;
+                            }
+                            if (connectFlage) {
+                                messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
+                                        itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
+                                        "服务断开,马上进行重新连接",
+                                        ConstantStr.NO_READ));
+                                redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, false);
+                            }
                             //通过传入的数据组id,将同一数据源的所有数据组,都设置为一样的状态
                             opcAsyncTask.changeSameDataSourceState(id, ConstantStr.EXCEPT_STOP_UP);
 //                            itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);

+ 13 - 4
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/OpcDaExceedTask.java

@@ -104,6 +104,7 @@ public class OpcDaExceedTask extends TimerTask {
             @Override
             public void stateChanged(AutoReconnectState state) {
                 if (state.equals(AutoReconnectState.CONNECTED)) {
+                    redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, true);
                     if (trueCount != 0) {
                         messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
                                 itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
@@ -122,10 +123,18 @@ public class OpcDaExceedTask extends TimerTask {
                     }
                     if (flage) {
                         if (flaseCount != 0) {
-                            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                                    "服务断开,马上进行重新连接",
-                                    ConstantStr.NO_READ));
+                            //通过redis控制不要一直添加报警消息
+                            Boolean connectFlage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id);
+                            if (Blank.isEmpty(connectFlage)) {
+                                connectFlage = false;
+                            }
+                            if (connectFlage) {
+                                messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
+                                        itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
+                                        "服务断开,马上进行重新连接",
+                                        ConstantStr.NO_READ));
+                                redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, false);
+                            }
                             //通过传入的数据组id,将同一数据源的所有数据组,都设置为一样的状态
                             opcAsyncTask.changeSameDataSourceState(id, ConstantStr.EXCEPT_STOP_UP);
 //                            itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);

+ 13 - 4
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/OpcDaFrequencyTask.java

@@ -112,6 +112,7 @@ public class OpcDaFrequencyTask extends TimerTask {
             @Override
             public void stateChanged(AutoReconnectState state) {
                 if (state.equals(AutoReconnectState.CONNECTED)) {
+                    redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, true);
                     if (trueCount != 0) {
                         messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
                                 itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
@@ -130,10 +131,18 @@ public class OpcDaFrequencyTask extends TimerTask {
                     }
                     if (flage) {
                         if (flaseCount != 0) {
-                            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                                    "服务断开,马上进行重新连接",
-                                    ConstantStr.NO_READ));
+                            //通过redis控制不要一直添加报警消息
+                            Boolean connectFlage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id);
+                            if (Blank.isEmpty(connectFlage)) {
+                                connectFlage = false;
+                            }
+                            if (connectFlage) {
+                                messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
+                                        itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
+                                        "服务断开,马上进行重新连接",
+                                        ConstantStr.NO_READ));
+                                redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, false);
+                            }
                             //通过传入的数据组id,将同一数据源的所有数据组,都设置为一样的状态
                             opcAsyncTask.changeSameDataSourceState(id, ConstantStr.EXCEPT_STOP_UP);
 //                            itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);

+ 11 - 11
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/ScheduledTask.java

@@ -64,12 +64,12 @@ public class ScheduledTask {
                     if (Blank.isNotEmpty(itemGroupList)) {
                         for (ItemGroup itemGroup : itemGroupList) {
                             Integer itemGroupId = itemGroup.getId();
-                            Server server = OpcDaUtil.createServer(dataSource);
-                            try {
-                                server.connect();
-                                Group group = server.addGroup();
-                                List<Item> attachItemList = itemGroupDao.getAttributesItemList(itemGroupId, ConstantStr.ATTACH_ATTRIBUTES);
-                                if (Blank.isNotEmpty(attachItemList)) {
+                            List<Item> attachItemList = itemGroupDao.getAttributesItemList(itemGroupId, ConstantStr.ATTACH_ATTRIBUTES);
+                            if (Blank.isNotEmpty(attachItemList)) {
+                                Server server = OpcDaUtil.createServer(dataSource);
+                                try {
+                                    server.connect();
+                                    Group group = server.addGroup();
                                     List<String> itemStrList = new ArrayList<>();
                                     for (Item item : attachItemList) {
                                         itemStrList.add(item.getItemReadName());
@@ -124,11 +124,11 @@ public class ScheduledTask {
                                     if (Blank.isNotEmpty(attachItemList)) {
                                         opcAsyncTask.addAttachRawDataList(attachRawDataList);
                                     }
+                                } catch (Exception e) {
+                                    e.printStackTrace();
+                                } finally {
+                                    server.dispose();
                                 }
-                            } catch (Exception e) {
-                                e.printStackTrace();
-                            } finally {
-                                server.dispose();
                             }
                         }
                     }
@@ -143,7 +143,7 @@ public class ScheduledTask {
      */
     @Async("threadPoolTaskExecutor")
     @Scheduled(cron = "0 0 0/1 * * ?")
-    public void packageBasicData(){
+    public void packageBasicData() {
         log.info("开始组装基础属性数据,时间为{}", DateUtil.dateChangeStrYmdhmss(new Date()));
         List<Integer> itemGroupIdList = rawDataDao.getRawDataGroupIdList();
         if (Blank.isNotEmpty(itemGroupIdList)) {