瀏覽代碼

优化代码结构,提高代码可读性

zhoupeng 1 年之前
父節點
當前提交
b93f53d614
共有 17 個文件被更改,包括 197 次插入130 次删除
  1. 1 1
      industry-system/industry-da/src/main/java/com/example/opc_da/config/MyApplicationRunner.java
  2. 1 2
      industry-system/industry-da/src/main/java/com/example/opc_da/policy/ChangeReportDataPolicyTask.java
  3. 13 10
      industry-system/industry-da/src/main/java/com/example/opc_da/policy/EventReportTableTask.java
  4. 1 2
      industry-system/industry-da/src/main/java/com/example/opc_da/policy/FreReportDataPolicyTask.java
  5. 2 1
      industry-system/industry-da/src/main/java/com/example/opc_da/policy/ReportDataPolicyTask.java
  6. 1 99
      industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/ReportTableServiceImpl.java
  7. 2 3
      industry-system/industry-da/src/main/java/com/example/opc_da/timer/PeriodTimer.java
  8. 14 4
      industry-system/industry-da/src/main/java/com/example/opc_da/timer/PeriodTimerRegister.java
  9. 2 4
      industry-system/industry-da/src/main/java/com/example/opc_da/util/QueryServiceUtil.java
  10. 9 1
      industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/AutomaticChReportTableValidate.java
  11. 68 1
      industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/AutomaticMaReportTableValidate.java
  12. 8 0
      industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/DeviceChReportTableValidate.java
  13. 29 1
      industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/DeviceMaReportTableValidate.java
  14. 8 0
      industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/EventChReportTableValidate.java
  15. 26 0
      industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/EventMaReportTableValidate.java
  16. 9 1
      industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/ManualReportTableValidate.java
  17. 3 0
      industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/ReportTableValidate.java

+ 1 - 1
industry-system/industry-da/src/main/java/com/example/opc_da/config/MyApplicationRunner.java

@@ -104,7 +104,7 @@ public class MyApplicationRunner implements ApplicationRunner {
                 Map<String, Object> tableParamsMap = new HashMap<>();
                 tableParamsMap.put("reportTable", reportTable);
                 if (type.equals(0)) {
-                    PeriodTimerFactory.creteTimer().addTask(cronId, new AutoTableTimerTask(), Integer.valueOf(cron), tableParamsMap);
+                    PeriodTimerFactory.creteTimer().addTask(cronId, AutoTableTimerTask.class, cron, tableParamsMap);
                 } else if (type.equals(1)) {
                     QuartzTimerFactory.creteTimer().addTask(cronId, AutoTableQuartzTask.class, cron, tableParamsMap);
                 }

+ 1 - 2
industry-system/industry-da/src/main/java/com/example/opc_da/policy/ChangeReportDataPolicyTask.java

@@ -62,8 +62,7 @@ public class ChangeReportDataPolicyTask extends ReportDataPolicyTask {
                 //将得到的数据转换为Map<数据项名称,Item实体类>
                 Map<String, Item> map = validItemDataList.stream().collect(Collectors.toMap(Item::getName, i -> i));
                 //将报表数据策略的数据项,赋值相应的值
-                for (int i = 0; i < currentPolicyItemList.size(); i++) {
-                    ReportDataPolicyItem policyItem = currentPolicyItemList.get(i);
+                for(ReportDataPolicyItem policyItem : currentPolicyItemList){
                     Item item = map.get(policyItem.getItemReadName());
                     QueryServiceUtil.itemParentCountValue(policyItem, item);
                 }

+ 13 - 10
industry-system/industry-da/src/main/java/com/example/opc_da/policy/EventReportTableTask.java

@@ -19,10 +19,7 @@ import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.DisposableBean;
 
 import javax.validation.constraints.NotBlank;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -65,10 +62,13 @@ public class EventReportTableTask implements DisposableBean {
         }
         //通过主报表生成子报表生成数据时,,应该具备的结构
         Map<String, List<String>> stringListMap = resolveEventTableData(reportTableData);
-        List<String> itemIdList = stringListMap.values().stream().findFirst().get();
+        List<String> itemIdList = stringListMap.values().stream()
+                .findFirst()
+                .orElse(new ArrayList<>());  // 使用orElse()提供默认值
         itemIdList.forEach(i -> {
             this.itemDataMap.put(i, new ArrayList<>());
         });
+
     }
 
     /**
@@ -89,12 +89,15 @@ public class EventReportTableTask implements DisposableBean {
             for (Map.Entry<String, List<Item>> entry : itemDataMap.entrySet()) {
                 String key = entry.getKey();
                 List<Item> value = entry.getValue();
-                ReportDataPolicyItem reportDataPolicyItem = policyItemList.stream()
+                Optional<ReportDataPolicyItem> optionalPolicyItem = policyItemList.stream()
                         .filter(p -> p.getId().toString().equals(key))
-                        .findFirst().get();
-                value.add(new Item()
-                        .value(reportDataPolicyItem.getDataValue())
-                        .time(reportDataPolicyItem.getDataTime()));
+                        .findFirst();
+                if (optionalPolicyItem.isPresent()) {
+                    ReportDataPolicyItem reportDataPolicyItem = optionalPolicyItem.get();
+                    value.add(new Item()
+                            .value(reportDataPolicyItem.getDataValue())
+                            .time(reportDataPolicyItem.getDataTime()));
+                }
             }
         }
         //如果数量达到了设置的条数

+ 1 - 2
industry-system/industry-da/src/main/java/com/example/opc_da/policy/FreReportDataPolicyTask.java

@@ -53,8 +53,7 @@ public class FreReportDataPolicyTask extends ReportDataPolicyTask {
                 //将得到的数据转换为Map<数据项名称,Item实体类>
                 Map<String, Item> map = validItemDataList.stream().collect(Collectors.toMap(Item::getName, i -> i));
                 //将报表数据策略的数据项,赋值相应的值
-                for (int i = 0; i < policyItemList.size(); i++) {
-                    ReportDataPolicyItem policyItem = policyItemList.get(i);
+                for(ReportDataPolicyItem policyItem : policyItemList){
                     Item item = map.get(policyItem.getItemReadName());
                     QueryServiceUtil.itemParentCountValue(policyItem, item);
                 }

+ 2 - 1
industry-system/industry-da/src/main/java/com/example/opc_da/policy/ReportDataPolicyTask.java

@@ -2,6 +2,7 @@ package com.example.opc_da.policy;
 
 import com.cqcy.ei.influxdb.entity.Item;
 import com.cqcy.ei.influxdb.service.QueryService;
+import com.example.opc_common.entity.ItemParent;
 import com.example.opc_common.entity.ReportDataPolicy;
 import com.example.opc_common.entity.ReportDataPolicyItem;
 import com.example.opc_common.util.ConstantStr;
@@ -43,7 +44,7 @@ public abstract class ReportDataPolicyTask implements DisposableBean {
         this.dataSourceId = this.policyItemList.get(0).getDataSourceId().toString();
         //因为数据项来源同一个数据组,所以肯定是同一数据源
         this.items = this.policyItemList.stream()
-                .map(item -> item.getItemReadName()).collect(Collectors.toList());
+                .map(ItemParent::getItemReadName).collect(Collectors.toList());
     }
 
     public ScheduledExecutorService getThreadPool() {

+ 1 - 99
industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/ReportTableServiceImpl.java

@@ -17,11 +17,7 @@ import com.example.opc_da.dao.ReportTableDao;
 import com.example.opc_da.policy.ChangeReportDataPolicyTaskRegister;
 import com.example.opc_da.policy.EventReportDataPolicyTaskRegister;
 import com.example.opc_da.policy.FreReportDataPolicyTaskRegister;
-import com.example.opc_da.task.AutoTableQuartzTask;
-import com.example.opc_da.task.AutoTableTimerTask;
 import com.example.opc_da.service.ReportTableService;
-import com.example.opc_da.timer.PeriodTimerFactory;
-import com.example.opc_da.timer.QuartzTimerFactory;
 import com.example.opc_da.util.RedisUtil;
 import com.example.opc_da.util.UserUtil;
 import com.example.opc_da.validate.reportTable.ReportTableValidate;
@@ -502,101 +498,7 @@ public class ReportTableServiceImpl implements ReportTableService {
         if (Blank.isEmpty(reportTable)) {
             return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "报表不存在,请刷新后再试");
         }
-        Integer reportTableType = reportTable.getReportTableType();
-        if (Blank.isEmpty(reportTableType)) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "未知报表类型,请刷新重试");
-        }
-        if (reportTableType.equals(ConstantStr.AUTOMATIC_REPORT)) {
-            Integer oldRunState = reportTable.getRunState();
-            String cronId = reportTable.getCronId();
-            if (Blank.isEmpty(cronId)) {
-                return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "请先配置定时时间");
-            }
-            String cron = reportTable.getCron();
-            if (Blank.isEmpty(oldRunState)) {
-                return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "未知报表运行状态,请刷新重试");
-            }
-            reportTableDao.runAutoTableById(id, runState);
-            if (runState.equals(ConstantStr.START_UP)) {
-                if (Blank.isEmpty(cron)) {
-                    return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "请先配置定时时间");
-                }
-                if (oldRunState.equals(ConstantStr.START_UP)) {
-                    return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此自动报表已经处于启动状态");
-                }
-                //新增定时器任务
-                Map<String, Object> map = new HashMap<>();
-                Integer type = reportTable.getType();
-                map.put("reportTable", reportTable);
-                if (type.equals(0)) {
-                    PeriodTimerFactory.creteTimer().addTask(cronId, new AutoTableTimerTask(), Integer.valueOf(cron), map);
-                } else if (type.equals(1)) {
-                    QuartzTimerFactory.creteTimer().addTask(cronId, AutoTableQuartzTask.class, cron, map);
-                } else {
-                    throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前没有此种类型的定时器");
-                }
-                return Result.ok("启动成功");
-            } else if (runState.equals(ConstantStr.STOP_IT)) {
-                if (Blank.isEmpty(cronId)) {
-                    throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "定时器主键丢失,停止失败");
-                }
-                if (oldRunState.equals(ConstantStr.STOP_IT)) {
-                    return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此自动报表已经处于停止状态");
-                }
-                Integer type = reportTable.getType();
-                if (type.equals(0)) {
-                    PeriodTimerFactory.creteTimer().delTask(cronId);
-                } else if (type.equals(1)) {
-                    QuartzTimerFactory.creteTimer().delTask(cronId);
-                } else {
-                    throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前没有此种类型的定时器");
-                }
-                return Result.ok("停止成功");
-            } else {
-                throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "自动报表的状态只有启动或停止");
-            }
-        } else if (reportTableType.equals(ConstantStr.EVENT_DRIVEN_REPORT)) {
-            Integer oldRunState = reportTable.getRunState();
-            reportTableDao.runAutoTableById(id, runState);
-            if (runState.equals(ConstantStr.START_UP)) {
-                if (oldRunState.equals(ConstantStr.START_UP)) {
-                    return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此报表已经处于启动状态");
-                }
-                eventReportDataPolicyTaskRegister.addReportTableTask(reportTable);
-                redisUtil.set(ConstantStr.TABLE_ID + id, true);
-                return Result.ok("启动成功");
-            } else if (runState.equals(ConstantStr.STOP_IT)) {
-                eventReportDataPolicyTaskRegister.removeReportTable(reportTable);
-                if (oldRunState.equals(ConstantStr.STOP_IT)) {
-                    return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此报表已经处于停止状态");
-                }
-                redisUtil.set(ConstantStr.TABLE_ID + id, false);
-                return Result.ok("停止成功");
-            } else {
-                throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "报表的状态只有启动或停止");
-            }
-        } else if (reportTableType.equals(ConstantStr.DEVICE_REPORT)) {
-            Integer oldRunState = reportTable.getRunState();
-            reportTableDao.runAutoTableById(id, runState);
-            if (runState.equals(ConstantStr.START_UP)) {
-                if (oldRunState.equals(ConstantStr.START_UP)) {
-                    return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此报表已经处于启动状态");
-                }
-//                eventReportDataPolicyTaskRegister.addReportTableTask(reportTable);
-                redisUtil.set(ConstantStr.TABLE_ID + id, true);
-                return Result.ok("启动成功");
-            } else if (runState.equals(ConstantStr.STOP_IT)) {
-                if (oldRunState.equals(ConstantStr.STOP_IT)) {
-                    return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此报表已经处于停止状态");
-                }
-                redisUtil.set(ConstantStr.TABLE_ID + id, false);
-                return Result.ok("停止成功");
-            } else {
-                throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "报表的状态只有启动或停止");
-            }
-        } else {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "自动,事件驱动,设备报表才可以启动和停止");
-        }
+        return ReportTableValidateFactory.getReportTableValidate(reportTable.getReportTableType()).runTable(id, runState, reportTable);
     }
 
     public List<Integer> gen(List<Integer> dictIdList, List<Dict> dictList, Integer dictId) {

+ 2 - 3
industry-system/industry-da/src/main/java/com/example/opc_da/timer/PeriodTimer.java

@@ -11,9 +11,8 @@ public class PeriodTimer {
 
     PeriodTimerRegister periodTimerRegister = SpringContextUtils.getBean(PeriodTimerRegister.class);
 
-
-    public void addTask(String customTimerId, PeriodTimerTask periodTimerTask, Integer period, Map<String, Object> params) {
-        periodTimerRegister.addTask(customTimerId, periodTimerTask, period, params);
+    public void addTask(String customTimerId, Class<? extends PeriodTimerTask> clazz , String period, Map<String, Object> params) {
+        periodTimerRegister.addTask(customTimerId, clazz, Integer.valueOf(period), params);
     }
 
     public void delTask(String customTimerId) {

+ 14 - 4
industry-system/industry-da/src/main/java/com/example/opc_da/timer/PeriodTimerRegister.java

@@ -4,6 +4,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.DisposableBean;
 import org.springframework.stereotype.Component;
 
+import java.lang.reflect.InvocationTargetException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.Executors;
@@ -23,10 +24,17 @@ public class PeriodTimerRegister implements DisposableBean {
      * 添加定时任务
      *
      * @param customTimerId
-     * @param periodTimerTask
+     * @param clazz
      */
-    public void addTask(String customTimerId, PeriodTimerTask periodTimerTask, Integer cron, Map<String, Object> params) {
+    public void addTask(String customTimerId, Class<? extends PeriodTimerTask> clazz, Integer cron, Map<String, Object> params) {
         ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5);
+        PeriodTimerTask periodTimerTask = null;
+        try {
+            periodTimerTask = clazz.getDeclaredConstructor().newInstance();
+        } catch (InstantiationException | IllegalAccessException | InvocationTargetException |
+                 NoSuchMethodException e) {
+            throw new RuntimeException(e);
+        }
         periodTimerTask.setParams(params);
         scheduledExecutorService.scheduleAtFixedRate(periodTimerTask, cron, cron, TimeUnit.SECONDS);
         this.scheduledExecutorServiceMap.put(customTimerId, scheduledExecutorService);
@@ -39,8 +47,10 @@ public class PeriodTimerRegister implements DisposableBean {
      */
     public void delTask(String customTimerId) {
         ScheduledExecutorService singleThread = this.scheduledExecutorServiceMap.get(customTimerId);
-        singleThread.shutdown();
-        this.scheduledExecutorServiceMap.remove(customTimerId);
+        if (singleThread != null) {
+            singleThread.shutdown();
+            this.scheduledExecutorServiceMap.remove(customTimerId);
+        }
     }
 
     @Override

+ 2 - 4
industry-system/industry-da/src/main/java/com/example/opc_da/util/QueryServiceUtil.java

@@ -82,8 +82,7 @@ public class QueryServiceUtil {
                 }
 
                 //将返回的值赋值给对应的数据项中
-                for (int i = 0; i < itemList.size(); i++) {
-                    com.example.opc_common.entity.Item commonItem = itemList.get(i);
+                for (com.example.opc_common.entity.Item commonItem : itemList) {
                     Item item = mapData.get(commonItem.getDataSourceId().toString()).get(commonItem.getItemReadName());
                     itemParentCountValue(commonItem, item);
                 }
@@ -173,8 +172,7 @@ public class QueryServiceUtil {
                     mapData.put(dataSourceId, map);
                 }
                 //将返回的值赋值给对应的数据项中
-                for (int i = 0; i < itemList.size(); i++) {
-                    com.example.opc_common.entity.Item commonItem = itemList.get(i);
+                for (com.example.opc_common.entity.Item commonItem : itemList) {
                     List<Item> items = mapData.get(commonItem.getDataSourceId().toString()).get(commonItem.getItemReadName());
                     itemsParentCountValue(commonItem, items);
                 }

+ 9 - 1
industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/AutomaticChReportTableValidate.java

@@ -1,14 +1,22 @@
 package com.example.opc_da.validate.reportTable;
 
 import com.example.opc_common.entity.ReportTable;
+import com.example.opc_common.enums.ResultEnum;
+import com.example.opc_common.exception.CustomException;
+import com.example.opc_common.util.Result;
 
 /**
  * 自动子报表验证具体类
  */
-public class AutomaticChReportTableValidate extends AutomaticReportTableValidate{
+public class AutomaticChReportTableValidate extends AutomaticReportTableValidate {
 
     @Override
     public ReportTable getData(ReportTable reportTable) {
         return reportTable;
     }
+
+    @Override
+    public Result runTable(String id, Integer runState, ReportTable oldReportTable) {
+        throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此种类型报表不支持运行或停止");
+    }
 }

+ 68 - 1
industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/AutomaticMaReportTableValidate.java

@@ -1,16 +1,83 @@
 package com.example.opc_da.validate.reportTable;
 
 import com.example.opc_common.entity.ReportTable;
+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.Result;
+import com.example.opc_da.config.SpringContextUtils;
+import com.example.opc_da.dao.ReportTableDao;
+import com.example.opc_da.task.AutoTableQuartzTask;
+import com.example.opc_da.task.AutoTableTimerTask;
+import com.example.opc_da.timer.PeriodTimerFactory;
+import com.example.opc_da.timer.QuartzTimerFactory;
 
 import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * 自动主报表验证具体类
  */
-public class AutomaticMaReportTableValidate extends AutomaticReportTableValidate{
+public class AutomaticMaReportTableValidate extends AutomaticReportTableValidate {
+    ReportTableDao reportTableDao = SpringContextUtils.getBean(ReportTableDao.class);
+
     @Override
     public ReportTable getData(ReportTable reportTable) {
         return reportTable.setReportTableData(resolveAutoTableData(reportTable.getReportTableData(), LocalDateTime.now()));
     }
 
+    @Override
+    public Result runTable(String id, Integer runState, ReportTable reportTable) {
+        Integer oldRunState = reportTable.getRunState();
+        String cronId = reportTable.getCronId();
+        if (Blank.isEmpty(cronId)) {
+            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "请先配置定时时间");
+        }
+        String cron = reportTable.getCron();
+        if (Blank.isEmpty(oldRunState)) {
+            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "未知报表运行状态,请刷新重试");
+        }
+        reportTableDao.runAutoTableById(id, runState);
+        if (runState.equals(ConstantStr.START_UP)) {
+            if (Blank.isEmpty(cron)) {
+                return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "请先配置定时时间");
+            }
+            if (oldRunState.equals(ConstantStr.START_UP)) {
+                return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此自动报表已经处于启动状态");
+            }
+            //新增定时器任务
+            Map<String, Object> map = new HashMap<>();
+            Integer type = reportTable.getType();
+            map.put("reportTable", reportTable);
+            if (type.equals(0)) {
+                PeriodTimerFactory.creteTimer().addTask(cronId, AutoTableTimerTask.class, cron, map);
+            } else if (type.equals(1)) {
+                QuartzTimerFactory.creteTimer().addTask(cronId, AutoTableQuartzTask.class, cron, map);
+            } else {
+                throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前没有此种类型的定时器");
+            }
+            return Result.ok("启动成功");
+        } else if (runState.equals(ConstantStr.STOP_IT)) {
+            if (Blank.isEmpty(cronId)) {
+                throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "定时器主键丢失,停止失败");
+            }
+            if (oldRunState.equals(ConstantStr.STOP_IT)) {
+                return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此自动报表已经处于停止状态");
+            }
+            Integer type = reportTable.getType();
+            if (type.equals(0)) {
+                PeriodTimerFactory.creteTimer().delTask(cronId);
+            } else if (type.equals(1)) {
+                QuartzTimerFactory.creteTimer().delTask(cronId);
+            } else {
+                throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前没有此种类型的定时器");
+            }
+            return Result.ok("停止成功");
+        } else {
+            throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "自动报表的状态只有启动或停止");
+        }
+    }
+
 }

+ 8 - 0
industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/DeviceChReportTableValidate.java

@@ -1,6 +1,9 @@
 package com.example.opc_da.validate.reportTable;
 
 import com.example.opc_common.entity.ReportTable;
+import com.example.opc_common.enums.ResultEnum;
+import com.example.opc_common.exception.CustomException;
+import com.example.opc_common.util.Result;
 
 /**
  * 设备子报表验证具体类
@@ -10,4 +13,9 @@ public class DeviceChReportTableValidate extends DeviceReportTableValidate {
     public ReportTable getData(ReportTable reportTable) {
         return reportTable;
     }
+
+    @Override
+    public Result runTable(String id, Integer runState, ReportTable oldReportTable) {
+        throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此种类型报表不支持运行或停止");
+    }
 }

+ 29 - 1
industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/DeviceMaReportTableValidate.java

@@ -1,13 +1,41 @@
 package com.example.opc_da.validate.reportTable;
 
 import com.example.opc_common.entity.ReportTable;
+import com.example.opc_common.enums.ResultEnum;
+import com.example.opc_common.exception.CustomException;
+import com.example.opc_common.util.ConstantStr;
+import com.example.opc_common.util.Result;
+import com.example.opc_da.config.SpringContextUtils;
+import com.example.opc_da.dao.ReportTableDao;
 
 /**
  * 设备主报表验证具体类
  */
-public class DeviceMaReportTableValidate extends DeviceReportTableValidate{
+public class DeviceMaReportTableValidate extends DeviceReportTableValidate {
+    ReportTableDao reportTableDao = SpringContextUtils.getBean(ReportTableDao.class);
+
     @Override
     public ReportTable getData(ReportTable reportTable) {
         return reportTable;
     }
+
+    @Override
+    public Result runTable(String id, Integer runState, ReportTable reportTable) {
+        Integer oldRunState = reportTable.getRunState();
+        reportTableDao.runAutoTableById(id, runState);
+        if (runState.equals(ConstantStr.START_UP)) {
+            if (oldRunState.equals(ConstantStr.START_UP)) {
+                return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此报表已经处于启动状态");
+            }
+//                eventReportDataPolicyTaskRegister.addReportTableTask(reportTable);
+            return Result.ok("启动成功");
+        } else if (runState.equals(ConstantStr.STOP_IT)) {
+            if (oldRunState.equals(ConstantStr.STOP_IT)) {
+                return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此报表已经处于停止状态");
+            }
+            return Result.ok("停止成功");
+        } else {
+            throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "报表的状态只有启动或停止");
+        }
+    }
 }

+ 8 - 0
industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/EventChReportTableValidate.java

@@ -4,7 +4,10 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.cqcy.ei.influxdb.entity.Item;
 import com.example.opc_common.entity.ReportTable;
+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.Result;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -21,6 +24,11 @@ public class EventChReportTableValidate extends EventReportTableValidate {
         );
     }
 
+    @Override
+    public Result runTable(String id, Integer runState, ReportTable oldReportTable) {
+        throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此种类型报表不支持运行或停止");
+    }
+
     /**
      * 回填表格数据
      *

+ 26 - 0
industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/EventMaReportTableValidate.java

@@ -6,12 +6,17 @@ import com.example.opc_common.entity.ReportTable;
 import com.example.opc_common.enums.ResultEnum;
 import com.example.opc_common.exception.CustomException;
 import com.example.opc_common.util.ConstantStr;
+import com.example.opc_common.util.Result;
+import com.example.opc_da.config.SpringContextUtils;
+import com.example.opc_da.dao.ReportTableDao;
 
 /**
  * 事件主报表验证具体类
  */
 public class EventMaReportTableValidate extends EventReportTableValidate {
 
+    ReportTableDao reportTableDao = SpringContextUtils.getBean(ReportTableDao.class);
+
     @Override
     public ReportTable getData(ReportTable reportTable) {
         Integer runState = reportTable.getRunState();
@@ -34,4 +39,25 @@ public class EventMaReportTableValidate extends EventReportTableValidate {
             throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "运行状态异常");
         }
     }
+
+    @Override
+    public Result runTable(String id, Integer runState, ReportTable reportTable) {
+        Integer oldRunState = reportTable.getRunState();
+        reportTableDao.runAutoTableById(id, runState);
+        if (runState.equals(ConstantStr.START_UP)) {
+            if (oldRunState.equals(ConstantStr.START_UP)) {
+                return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此报表已经处于启动状态");
+            }
+            eventReportDataPolicyTaskRegister.addReportTableTask(reportTable);
+            return Result.ok("启动成功");
+        } else if (runState.equals(ConstantStr.STOP_IT)) {
+            eventReportDataPolicyTaskRegister.removeReportTable(reportTable);
+            if (oldRunState.equals(ConstantStr.STOP_IT)) {
+                return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此报表已经处于停止状态");
+            }
+            return Result.ok("停止成功");
+        } else {
+            throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "报表的状态只有启动或停止");
+        }
+    }
 }

+ 9 - 1
industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/ManualReportTableValidate.java

@@ -1,13 +1,21 @@
 package com.example.opc_da.validate.reportTable;
 
 import com.example.opc_common.entity.ReportTable;
+import com.example.opc_common.enums.ResultEnum;
+import com.example.opc_common.exception.CustomException;
+import com.example.opc_common.util.Result;
 
 /**
  * 手动报表验证具体类
  */
-public class ManualReportTableValidate implements ReportTableValidate{
+public class ManualReportTableValidate implements ReportTableValidate {
     @Override
     public ReportTable getData(ReportTable reportTable) {
         return reportTable;
     }
+
+    @Override
+    public Result runTable(String id, Integer runState, ReportTable oldReportTable) {
+        throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此种类型报表不支持运行或停止");
+    }
 }

+ 3 - 0
industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/ReportTableValidate.java

@@ -1,6 +1,7 @@
 package com.example.opc_da.validate.reportTable;
 
 import com.example.opc_common.entity.ReportTable;
+import com.example.opc_common.util.Result;
 
 /**
  * 报表验证抽象接口
@@ -15,4 +16,6 @@ public interface ReportTableValidate {
      */
     ReportTable getData(ReportTable reportTable);
 
+    Result runTable(String id, Integer runState, ReportTable oldReportTable);
+
 }