Просмотр исходного кода

Merge branch 'master' of http://116.63.33.55/git/read_opc

FinalYu 2 лет назад
Родитель
Сommit
d9b08e1e4c
24 измененных файлов с 240 добавлено и 46 удалено
  1. 0 2
      chaunyi_opc/opc_common/src/main/java/com/example/opc_common/util/ConstantStr.java
  2. 42 0
      chaunyi_opc/opc_common/src/main/java/com/example/opc_common/util/DateUtil.java
  3. 6 1
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/dynamicSchedule/DynamicScheduleConfig.java
  4. 15 10
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/impl/ItemGroupServiceImpl.java
  5. 18 0
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaChangeTask.java
  6. 18 0
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaExceedTask.java
  7. 21 1
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaFrequencyTask.java
  8. 9 0
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaTask.java
  9. 1 1
      chaunyi_opc/opc_da/src/main/resources/static/page/index.html
  10. 0 0
      chaunyi_opc/opc_da/src/main/resources/static/page/static/css/app.9b8bb2c8.css
  11. 0 0
      chaunyi_opc/opc_da/src/main/resources/static/page/static/css/chunk-9de2d316.38e77d7e.css
  12. 0 0
      chaunyi_opc/opc_da/src/main/resources/static/page/static/js/app.5ea0a1d2.js
  13. 0 0
      chaunyi_opc/opc_da/src/main/resources/static/page/static/js/app.ce181ce1.js
  14. 0 0
      chaunyi_opc/opc_da/src/main/resources/static/page/static/js/chunk-9de2d316.896a0149.js
  15. 0 0
      chaunyi_opc/opc_da/src/main/resources/static/page/static/js/chunk-f198332e.8e4a368f.js
  16. 5 0
      chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/dynamicSchedule/DynamicScheduleConfig.java
  17. 9 4
      chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/service/impl/ItemGroupServiceImpl.java
  18. 16 0
      chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/task/OpcUaChangeTask.java
  19. 22 1
      chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/task/OpcUaExceedTask.java
  20. 34 14
      chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/task/OpcUaFrequencyTask.java
  21. 17 5
      chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/task/OpcUaTask.java
  22. 5 5
      chuanyi-admin/src/layout/components/Sidebar/Logo.vue
  23. 1 1
      chuanyi-admin/src/styles/variables.scss
  24. 1 1
      chuanyi-admin/src/views/login/index.vue

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

@@ -86,8 +86,6 @@ public class ConstantStr {
     public static final Integer ON_FREQUENCY = 0;
     public static final Integer ON_CHANGE = 1;
     public static final Integer EXCEED_SET_VALUE = 2;
-    public static final Integer LOWER_SET_VALUE = 3;
-    public static final Integer SPECIFY_TIME = 4;
 
     //读取模式对应类型;0绝对值,1百分率
     public static final Integer ABSOLUTE_VALUE = 0;

+ 42 - 0
chaunyi_opc/opc_common/src/main/java/com/example/opc_common/util/DateUtil.java

@@ -10,6 +10,10 @@ import java.util.GregorianCalendar;
 @Data
 public class DateUtil {
 
+    public static void main(String[] args) {
+        getCurrentWeek();
+    }
+
     /**
      * 时间字符串年月日时分秒转为Date类型
      *
@@ -99,6 +103,44 @@ public class DateUtil {
     }
 
     /**
+     * 星期1-6,对应数字1-6,星期天对应0
+     *
+     * @return
+     */
+    public static Integer getCurrentWeek() {
+        Calendar cal = Calendar.getInstance();
+        return cal.get(Calendar.DAY_OF_WEEK) - 1;
+    }
+
+    /**
+     * 返回今天是星期几的英文
+     * "MON,TUE,WED,THU,FRI,SAT,SUN";
+     *
+     * @return
+     */
+    public static String getCurrentWeekEn() {
+        Calendar cal = Calendar.getInstance();
+        int i = cal.get(Calendar.DAY_OF_WEEK) - 1;
+        if (i == 0) {
+            return "SUN";
+        } else if (i == 1) {
+            return "MON";
+        } else if (i == 2) {
+            return "TUE";
+        } else if (i == 3) {
+            return "WED";
+        } else if (i == 4) {
+            return "THU";
+        } else if (i == 5) {
+            return "FRI";
+        } else if (i == 6) {
+            return "SAT";
+        } else {
+            return null;
+        }
+    }
+
+    /**
      * 将时间戳转换为年月日时分秒
      *
      * @param time

+ 6 - 1
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/dynamicSchedule/DynamicScheduleConfig.java

@@ -15,6 +15,7 @@ import com.example.opc_da.dao.ItemGroupDao;
 import com.example.opc_da.dao.ReportTableDao;
 import com.example.opc_da.task.OpcDaTask;
 import com.example.opc_da.task.ReportTableTask;
+import com.example.opc_da.util.RedisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.SchedulingConfigurer;
@@ -39,7 +40,10 @@ public class DynamicScheduleConfig implements SchedulingConfigurer {
     private DataSourceDao dataSourceDao;
 
     @Resource
-    CronTaskRegister cronTaskRegister;
+    private CronTaskRegister cronTaskRegister;
+
+    @Resource
+    private RedisUtil redisUtil;
 
     @Override
     public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
@@ -78,6 +82,7 @@ public class DynamicScheduleConfig implements SchedulingConfigurer {
                                 clsId.equals(OpcDaDriverEnum.YOKOGAWA.getValue()) ||
                                 clsId.equals(OpcDaDriverEnum.PAS300.getValue())
                         ) {
+                            redisUtil.set(ConstantStr.ITEM_GROUP + id, true);
                             //新增定时器任务
                             String cronId = "";
                             String cron = "0 0 0 ? * ";

+ 15 - 10
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/impl/ItemGroupServiceImpl.java

@@ -12,11 +12,10 @@ import com.example.opc_common.util.Result;
 import com.example.opc_da.dao.DataModelDao;
 import com.example.opc_da.dao.DataSourceDao;
 import com.example.opc_da.dao.ItemGroupDao;
-import com.example.opc_da.dao.MessageNoticeDao;
 import com.example.opc_da.dynamicSchedule.CronTaskRegister;
 import com.example.opc_da.dynamicSchedule.SchedulingRunnable;
 import com.example.opc_da.service.ItemGroupService;
-import com.example.opc_da.task.*;
+import com.example.opc_da.task.OpcDaTask;
 import com.example.opc_da.util.OpcDaUtil;
 import com.example.opc_da.util.RedisUtil;
 import com.example.opc_da.util.UserUtil;
@@ -28,7 +27,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.client.RestTemplate;
 
-import javax.annotation.Resource;
 import java.util.*;
 
 @Service
@@ -42,7 +40,7 @@ public class ItemGroupServiceImpl implements ItemGroupService {
     private UserUtil userUtil;
 
     @Autowired
-    private OpcAsyncTask opcAsyncTask;
+    private OpcDaTask opcDaTask;
 
     @Autowired
     private RedisUtil redisUtil;
@@ -67,8 +65,8 @@ public class ItemGroupServiceImpl implements ItemGroupService {
         String userId = userUtil.getCurrentUserId();
         itemGroup.setUserId(userId);
         Integer readMode = itemGroup.getReadMode();
-        if (readMode != ConstantStr.ON_CHANGE && readMode != ConstantStr.EXCEED_SET_VALUE &&
-                readMode != ConstantStr.SPECIFY_TIME) {
+        if (readMode != ConstantStr.ON_FREQUENCY && readMode != ConstantStr.ON_CHANGE &&
+                readMode != ConstantStr.EXCEED_SET_VALUE) {
             return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前未适配此种类型的读取模式");
         }
         if (readMode == ConstantStr.ON_CHANGE) {
@@ -80,9 +78,6 @@ public class ItemGroupServiceImpl implements ItemGroupService {
             }
         }
         if (readMode == ConstantStr.EXCEED_SET_VALUE) {
-            if (Blank.isEmpty(itemGroup.getReadModeType())) {
-                return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "请选择一种比较类型");
-            }
             if (Blank.isEmpty(itemGroup.getEventMode())) {
                 return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "阈值条件");
             }
@@ -215,13 +210,22 @@ public class ItemGroupServiceImpl implements ItemGroupService {
                         clsId.equals(OpcDaDriverEnum.YOKOGAWA.getValue()) ||
                         clsId.equals(OpcDaDriverEnum.PAS300.getValue())
                 ) {
+                    redisUtil.set(ConstantStr.ITEM_GROUP + id, true);
                     //新增定时器任务
                     String cronId = "";
                     String cron = "0 0 0 ? * ";
                     if (Blank.isEmpty(readWeek)) {
                         cron = cron + "MON,TUE,WED,THU,FRI,SAT,SUN";
+                        //立即执行一次Timer
+                        opcDaTask.opcDaTask(itemGroup, dataSource, cronId);
                     } else {
-                        cron = cron + itemGroup.getReadWeek();
+                        cron = cron + readWeek;
+                        for (String str : readWeek.split(",")) {
+                            if (str.equals(DateUtil.getCurrentWeekEn())) {
+                                //立即执行一次Timer
+                                opcDaTask.opcDaTask(itemGroup, dataSource, cronId);
+                            }
+                        }
                     }
                     if (Blank.isEmpty(itemGroup.getCronId())) {
                         cronId = UUID.randomUUID().toString().replace("-", "");
@@ -236,6 +240,7 @@ public class ItemGroupServiceImpl implements ItemGroupService {
                     throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前未适配此种驱动类型");
                 }
             } else if (runState.equals(ConstantStr.STOP_IT)) {
+                redisUtil.set(ConstantStr.ITEM_GROUP + id, false);
                 itemGroupDao.stopItemGroupById(id, runState);
                 cronTaskRegister.removeCronTask(itemGroup.getCronId());
                 return Result.ok("停用成功");

+ 18 - 0
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaChangeTask.java

@@ -160,6 +160,24 @@ public class OpcDaChangeTask extends TimerTask {
             }
             access.bind();
             while (true) {
+                Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
+                if (Blank.isEmpty(flage)) {
+                    flage = false;
+                }
+                if (!flage) {
+                    //执行组装数据库的数据,以及生成驱动报表
+                    String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
+                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
+                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
+                    access.unbind();
+                    if (Blank.isNotEmpty(server)) {
+                        server.dispose();
+                    }
+                    cronTaskRegister.removeCronTask(cronId);
+                    redisUtil.del(ConstantStr.ITEM_GROUP + id);
+                    timer.cancel();
+                    break;
+                }
                 if (System.currentTimeMillis() >= endTime) {
                     //执行组装数据库的数据,以及生成驱动报表
                     String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));

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

@@ -195,6 +195,24 @@ public class OpcDaExceedTask extends TimerTask {
             }
             access.bind();
             while (true) {
+                Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
+                if (Blank.isEmpty(flage)) {
+                    flage = false;
+                }
+                if (!flage) {
+                    //执行组装数据库的数据,以及生成驱动报表
+                    String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
+                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
+                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
+                    access.unbind();
+                    if (Blank.isNotEmpty(server)) {
+                        server.dispose();
+                    }
+                    cronTaskRegister.removeCronTask(cronId);
+                    redisUtil.del(ConstantStr.ITEM_GROUP + id);
+                    timer.cancel();
+                    break;
+                }
                 if (System.currentTimeMillis() >= endTime) {
                     //执行组装数据库的数据,以及生成驱动报表
                     String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));

+ 21 - 1
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaFrequencyTask.java

@@ -148,6 +148,7 @@ public class OpcDaFrequencyTask extends TimerTask {
                             }
                             itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
                             cronTaskRegister.removeCronTask(cronId);
+                            redisUtil.del(ConstantStr.ITEM_GROUP + id);
                             timer.cancel();
                         }
                     }
@@ -155,6 +156,24 @@ public class OpcDaFrequencyTask extends TimerTask {
             }
             access.bind();
             while (true) {
+                Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
+                if (Blank.isEmpty(flage)) {
+                    flage = false;
+                }
+                if (!flage) {
+                    //执行组装数据库的数据,以及生成驱动报表
+                    String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
+                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
+                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
+                    access.unbind();
+                    if (Blank.isNotEmpty(server)) {
+                        server.dispose();
+                    }
+                    cronTaskRegister.removeCronTask(cronId);
+                    redisUtil.del(ConstantStr.ITEM_GROUP + id);
+                    timer.cancel();
+                    break;
+                }
                 if (System.currentTimeMillis() >= endTime) {
                     //执行组装数据库的数据,以及生成驱动报表
                     String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
@@ -178,8 +197,9 @@ public class OpcDaFrequencyTask extends TimerTask {
             if (Blank.isNotEmpty(server)) {
                 server.dispose();
             }
-            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
+            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.EXCEPT_STOP_UP);
             cronTaskRegister.removeCronTask(cronId);
+            redisUtil.del(ConstantStr.ITEM_GROUP + id);
             timer.cancel();
         }
     }

+ 9 - 0
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaTask.java

@@ -50,6 +50,15 @@ public class OpcDaTask {
         log.info("OPCDa开始运行,{},执行开始,执行时间为{}", itemGroup, DateUtil.dateChangeStrYmdhmss(new Date()));
         Integer id = itemGroup.getId();
         Integer readMode = itemGroup.getReadMode();
+        Boolean flageItemGroup = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
+        if (Blank.isEmpty(flageItemGroup)) {
+            flageItemGroup = false;
+        }
+        if (!flageItemGroup) {
+            redisUtil.del(ConstantStr.ITEM_GROUP + id);
+            cronTaskRegister.removeCronTask(cronId);
+            return;
+        }
         //读取数据并保存
         Timer timer = new Timer();
         String startTime = DateUtil.getCurrentYmd() + " " + itemGroup.getStartReadTime();

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
chaunyi_opc/opc_da/src/main/resources/static/page/index.html


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
chaunyi_opc/opc_da/src/main/resources/static/page/static/css/app.9b8bb2c8.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
chaunyi_opc/opc_da/src/main/resources/static/page/static/css/chunk-9de2d316.38e77d7e.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
chaunyi_opc/opc_da/src/main/resources/static/page/static/js/app.5ea0a1d2.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
chaunyi_opc/opc_da/src/main/resources/static/page/static/js/app.ce181ce1.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
chaunyi_opc/opc_da/src/main/resources/static/page/static/js/chunk-9de2d316.896a0149.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
chaunyi_opc/opc_da/src/main/resources/static/page/static/js/chunk-f198332e.8e4a368f.js


+ 5 - 0
chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/dynamicSchedule/DynamicScheduleConfig.java

@@ -11,6 +11,7 @@ import com.example.opc_common.util.ConstantStr;
 import com.example.opc_ua.dao.DataSourceDao;
 import com.example.opc_ua.dao.ItemGroupDao;
 import com.example.opc_ua.task.OpcUaTask;
+import com.example.opc_ua.util.RedisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.SchedulingConfigurer;
@@ -25,6 +26,9 @@ import java.util.UUID;
 public class DynamicScheduleConfig implements SchedulingConfigurer {
 
     @Resource
+    private RedisUtil redisUtil;
+
+    @Resource
     CronTaskRegister cronTaskRegister;
 
     @Resource
@@ -57,6 +61,7 @@ public class DynamicScheduleConfig implements SchedulingConfigurer {
                                 throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "选择不匿名方式,需要填写帐户和密码");
                             }
                         }
+                        redisUtil.set(ConstantStr.ITEM_GROUP + id, true);
                         //新增定时器任务
                         String cronId = "";
                         String cron = "0 0 0 ? * ";

+ 9 - 4
chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/service/impl/ItemGroupServiceImpl.java

@@ -6,6 +6,7 @@ import com.example.opc_common.enums.ResultEnum;
 import com.example.opc_common.exception.CustomException;
 import com.example.opc_common.util.Blank;
 import com.example.opc_common.util.ConstantStr;
+import com.example.opc_common.util.DateUtil;
 import com.example.opc_common.util.Result;
 import com.example.opc_ua.dao.DataModelDao;
 import com.example.opc_ua.dao.DataSourceDao;
@@ -48,10 +49,7 @@ public class ItemGroupServiceImpl implements ItemGroupService {
     private CronTaskRegister cronTaskRegister;
 
     @Resource
-    private OpcAsyncTask opcAsyncTask;
-
-    @Resource
-    private MessageNoticeDao messageNoticeDao;
+    private OpcUaTask opcUaTask;
 
     @Value("${opc_storage.time_format}")
     private String timeFormat;
@@ -123,11 +121,13 @@ public class ItemGroupServiceImpl implements ItemGroupService {
                         throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "选择不匿名方式,需要填写帐户和密码");
                     }
                 }
+                redisUtil.set(ConstantStr.ITEM_GROUP + id, true);
                 //新增定时器任务
                 String cronId = "";
                 String cron = "0 0 0 ? * ";
                 if (Blank.isEmpty(readWeek)) {
                     cron = cron + "MON,TUE,WED,THU,FRI,SAT,SUN";
+                    opcUaTask.opcUaTask(itemGroup, dataSource, cronId);
                 } else {
                     cron = cron + itemGroup.getReadWeek();
                 }
@@ -135,6 +135,11 @@ public class ItemGroupServiceImpl implements ItemGroupService {
                     cronId = UUID.randomUUID().toString().replace("-", "");
                 } else {
                     cronId = itemGroup.getCronId();
+                    for (String str : readWeek.split(",")) {
+                        if (str.equals(DateUtil.getCurrentWeekEn())) {
+                            opcUaTask.opcUaTask(itemGroup, dataSource, cronId);
+                        }
+                    }
                 }
                 SchedulingRunnable task = new SchedulingRunnable(OpcUaTask.class, "opcUaTask", new Object[]{itemGroup, dataSource, cronId});
                 cronTaskRegister.addCronTask(task, cronId, cron);

+ 16 - 0
chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/task/OpcUaChangeTask.java

@@ -161,6 +161,22 @@ public class OpcUaChangeTask extends TimerTask {
                 }
             }
         }
+        Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
+        if (Blank.isEmpty(flage)) {
+            flage = false;
+        }
+        if (!flage) {
+            //执行组装数据库的数据,以及生成驱动报表
+            String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
+            opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
+            redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
+            if (Blank.isNotEmpty(opcUaClient)) {
+                opcUaClient.disconnect();
+            }
+            cronTaskRegister.removeCronTask(cronId);
+            redisUtil.del(ConstantStr.ITEM_GROUP + id);
+            timer.cancel();
+        }
         if (System.currentTimeMillis() >= endTime) {
             //执行组装数据库的数据,以及生成驱动报表
             opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);

+ 22 - 1
chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/task/OpcUaExceedTask.java

@@ -10,6 +10,7 @@ import com.example.opc_ua.dao.ItemGroupDao;
 import com.example.opc_ua.dao.MessageNoticeDao;
 import com.example.opc_ua.dynamicSchedule.CronTaskRegister;
 import com.example.opc_ua.util.OpcUaUtil;
+import com.example.opc_ua.util.RedisUtil;
 import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
 import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
 import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
@@ -20,6 +21,8 @@ import java.util.*;
 
 public class OpcUaExceedTask extends TimerTask {
 
+    private final RedisUtil redisUtil;
+
     private final OpcAsyncTask opcAsyncTask;
 
     private final String cronId;
@@ -50,7 +53,8 @@ public class OpcUaExceedTask extends TimerTask {
 
     private Long index = 0L;
 
-    public OpcUaExceedTask(OpcAsyncTask opcAsyncTask,
+    public OpcUaExceedTask(RedisUtil redisUtil,
+                           OpcAsyncTask opcAsyncTask,
                            String cronId,
                            CronTaskRegister cronTaskRegister,
                            ItemGroupDao itemGroupDao,
@@ -63,6 +67,7 @@ public class OpcUaExceedTask extends TimerTask {
                            Timer timer,
                            String timeFormat,
                            Long endTime) {
+        this.redisUtil = redisUtil;
         this.opcAsyncTask = opcAsyncTask;
         this.cronId = cronId;
         this.cronTaskRegister = cronTaskRegister;
@@ -185,6 +190,22 @@ public class OpcUaExceedTask extends TimerTask {
                 }
             }
         }
+        Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
+        if (Blank.isEmpty(flage)) {
+            flage = false;
+        }
+        if (!flage) {
+            //执行组装数据库的数据,以及生成驱动报表
+            String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
+            opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
+            redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
+            if (Blank.isNotEmpty(opcUaClient)) {
+                opcUaClient.disconnect();
+            }
+            cronTaskRegister.removeCronTask(cronId);
+            redisUtil.del(ConstantStr.ITEM_GROUP + id);
+            timer.cancel();
+        }
         if (System.currentTimeMillis() >= endTime) {
             //执行组装数据库的数据,以及生成驱动报表
             opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);

+ 34 - 14
chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/task/OpcUaFrequencyTask.java

@@ -10,6 +10,7 @@ import com.example.opc_ua.dao.ItemGroupDao;
 import com.example.opc_ua.dao.MessageNoticeDao;
 import com.example.opc_ua.dynamicSchedule.CronTaskRegister;
 import com.example.opc_ua.util.OpcUaUtil;
+import com.example.opc_ua.util.RedisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
 import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
@@ -22,6 +23,8 @@ import java.util.*;
 @Slf4j
 public class OpcUaFrequencyTask extends TimerTask {
 
+    private final RedisUtil redisUtil;
+
     private final OpcAsyncTask opcAsyncTask;
 
     private final String cronId;
@@ -52,20 +55,21 @@ public class OpcUaFrequencyTask extends TimerTask {
 
     private Long index = 0L;
 
-    public OpcUaFrequencyTask(
-            OpcAsyncTask opcAsyncTask,
-            String cronId,
-            CronTaskRegister cronTaskRegister,
-            ItemGroupDao itemGroupDao,
-            MessageNoticeDao messageNoticeDao,
-            OpcUaClient opcUaClient,
-            List<Item> itemList,
-            Map<String, DataModel> map,
-            ItemGroup itemGroup,
-            DataSource dataSource,
-            Timer timer,
-            String timeFormat,
-            Long endTime) {
+    public OpcUaFrequencyTask(RedisUtil redisUtil,
+                              OpcAsyncTask opcAsyncTask,
+                              String cronId,
+                              CronTaskRegister cronTaskRegister,
+                              ItemGroupDao itemGroupDao,
+                              MessageNoticeDao messageNoticeDao,
+                              OpcUaClient opcUaClient,
+                              List<Item> itemList,
+                              Map<String, DataModel> map,
+                              ItemGroup itemGroup,
+                              DataSource dataSource,
+                              Timer timer,
+                              String timeFormat,
+                              Long endTime) {
+        this.redisUtil = redisUtil;
         this.opcAsyncTask = opcAsyncTask;
         this.cronId = cronId;
         this.cronTaskRegister = cronTaskRegister;
@@ -151,6 +155,22 @@ public class OpcUaFrequencyTask extends TimerTask {
                 }
             }
         }
+        Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
+        if (Blank.isEmpty(flage)) {
+            flage = false;
+        }
+        if (!flage) {
+            //执行组装数据库的数据,以及生成驱动报表
+            String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
+            opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
+            redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
+            if (Blank.isNotEmpty(opcUaClient)) {
+                opcUaClient.disconnect();
+            }
+            cronTaskRegister.removeCronTask(cronId);
+            redisUtil.del(ConstantStr.ITEM_GROUP + id);
+            timer.cancel();
+        }
         if (System.currentTimeMillis() >= endTime) {
             //执行组装数据库的数据,以及生成驱动报表
             opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);

+ 17 - 5
chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/task/OpcUaTask.java

@@ -1,9 +1,6 @@
 package com.example.opc_ua.task;
 
-import com.example.opc_common.entity.DataModel;
-import com.example.opc_common.entity.DataSource;
-import com.example.opc_common.entity.Item;
-import com.example.opc_common.entity.ItemGroup;
+import com.example.opc_common.entity.*;
 import com.example.opc_common.enums.ResultEnum;
 import com.example.opc_common.exception.CustomException;
 import com.example.opc_common.util.Blank;
@@ -50,6 +47,15 @@ public class OpcUaTask {
 
     public void opcUaTask(ItemGroup itemGroup, DataSource dataSource, String cronId) {
         Integer id = itemGroup.getId();
+        Boolean flageItemGroup = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
+        if (Blank.isEmpty(flageItemGroup)) {
+            flageItemGroup = false;
+        }
+        if (!flageItemGroup) {
+            redisUtil.del(ConstantStr.ITEM_GROUP + id);
+            cronTaskRegister.removeCronTask(cronId);
+            return;
+        }
         Integer readMode = itemGroup.getReadMode();
         String startTime = DateUtil.getCurrentYmd() + " " + itemGroup.getStartReadTime();
         String endTime = DateUtil.getCurrentYmd() + " " + itemGroup.getEndReadTime();
@@ -89,6 +95,11 @@ public class OpcUaTask {
         try {
             opcUaClient = OpcUaUtil.createClient(dataSource);
         } catch (Exception e) {
+            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
+                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行停止",
+                    OpcUaUtil.genException(e.getMessage()),
+                    ConstantStr.NO_READ));
+
             itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
             if (Blank.isNotEmpty(opcUaClient)) {
                 opcUaClient.disconnect();
@@ -100,6 +111,7 @@ public class OpcUaTask {
         }
         if (readMode == ConstantStr.ON_FREQUENCY) {
             timer.schedule(new OpcUaFrequencyTask(
+                            redisUtil,
                             opcAsyncTask,
                             cronId,
                             cronTaskRegister,
@@ -132,7 +144,7 @@ public class OpcUaTask {
                             endDate.getTime()),
                     startDate, (int) (Math.round(itemGroup.getModeValue() * 1000)));
         } else if (readMode == ConstantStr.EXCEED_SET_VALUE) {
-            timer.schedule(new OpcUaExceedTask(
+            timer.schedule(new OpcUaExceedTask(redisUtil,
                             opcAsyncTask,
                             cronId,
                             cronTaskRegister,

+ 5 - 5
chuanyi-admin/src/layout/components/Sidebar/Logo.vue

@@ -2,11 +2,11 @@
   <div class="sidebar-logo-container" :class="{'collapse':collapse}">
     <transition name="sidebarLogoFade">
       <div v-if="collapse" key="collapse" class="sidebar-logo-link">
-        <img v-if="logo" :src="logo" class="sidebar-logo">
-        <h1 v-else class="sidebar-title">{{ title }} </h1>
+        <!-- <img v-if="logo" :src="logo" class="sidebar-logo"> -->
+        <h1 class="sidebar-title">{{ title }} </h1>
       </div>
       <div v-else key="expand" class="sidebar-logo-link">
-        <img v-if="logo" :src="logo" class="sidebar-logo">
+        <!-- <img v-if="logo" :src="logo" class="sidebar-logo"> -->
         <h1 class="sidebar-title">{{ title }} </h1>
       </div>
     </transition>
@@ -26,7 +26,7 @@ export default {
   },
   data() {
     return {
-      title: '川仪READOPC管理系统',
+      title: 'Easy Industrial Report管理系统',
       logo: logoImg
     }
   },
@@ -71,7 +71,7 @@ export default {
       color: #fff;
       font-weight: 600;
       line-height: 50px;
-      font-size: 14px;
+      font-size: 15px;
       font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
       vertical-align: middle;
     }

+ 1 - 1
chuanyi-admin/src/styles/variables.scss

@@ -19,7 +19,7 @@ $menuHover:#263445;
 $subMenuBg:#1f2d3d;
 $subMenuHover:#001528;
 
-$sideBarWidth: 210px;
+$sideBarWidth: 240px;
 
 // the :export directive is the magic sauce for webpack
 // https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass

+ 1 - 1
chuanyi-admin/src/views/login/index.vue

@@ -9,7 +9,7 @@
       label-position="left"
     >
       <div class="title-container">
-        <h3 class="title">READ OPC后台管理系统</h3>
+        <h3 class="title">Easy Industrial Report管理系统</h3>
       </div>
       <el-form-item prop="userName">
         <span class="svg-container">

Некоторые файлы не были показаны из-за большого количества измененных файлов