Browse Source

测试新版opcda事件驱动报表数据

zhoupeng 1 year ago
parent
commit
20cf01eaf9

+ 6 - 2
chuanyi_client2/src/views/run_config/index.vue

@@ -142,7 +142,9 @@
                   type="text"
                   v-if="
                     uid == scope.row.userId &&
-                    scope.row.reportTableType == 1 &&
+                    (scope.row.reportTableType == 1
+                    ||scope.row.reportTableType == 2||
+                    scope.row.reportTableType == 5) &&
                     scope.row.runState == 0
                   "
                   size="small"
@@ -154,7 +156,9 @@
                   type="text"
                   v-if="
                     uid == scope.row.userId &&
-                    scope.row.reportTableType == 1 &&
+                    (scope.row.reportTableType == 1
+                    ||scope.row.reportTableType == 2||
+                    scope.row.reportTableType == 5)  &&
                     scope.row.runState == 1
                   "
                   size="small"

+ 1 - 1
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/controller/ItemGroupController.java

@@ -47,7 +47,7 @@ public class ItemGroupController {
      * @return
      */
     @GetMapping("/getAllItemGroup")
-    @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.DATAGROUP, OperationEnum = OperationEnum.SELECT)
+//    @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.DATAGROUP, OperationEnum = OperationEnum.SELECT)
     public Result getAllItemGroup(Integer readMode) {
         return itemGroupService.getAllItemGroup(readMode);
     }

+ 2 - 0
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/dao/ReportTableDao.java

@@ -229,4 +229,6 @@ public interface ReportTableDao {
     List<TableTemplateTableItem> getTttiByTemplateIdGroup(Integer tableTemplateId);
 
     List<TableTemplateTableItem> getTttiByGroup(Integer tableTemplateId, Integer itemGroupId, Integer dataSourceId, Integer bucketType);
+
+    List<TableTemplate> getTableTemplateByItemList(List<Item> itemList, Integer templateType);
 }

+ 32 - 8
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/service/impl/ReportTableServiceImpl.java

@@ -308,12 +308,22 @@ public class ReportTableServiceImpl implements ReportTableService {
             return Result.ok(reportTable);
             //如果是事件驱动报表主表
         } else if (reportTableType.equals(ConstantStr.EVENT_DRIVEN_REPORT)) {
-            String chTableId = reportTableDao.getEventChTableId(id);
-            reportTable.setReportTableItemList(reportTableDao.getTableItemListById(chTableId));
+            Integer tableTemplateId = reportTable.getTableTemplateId();
+            List<TableTemplateTableItem> tttItemList = reportTableDao.getTttiByTemplateId(tableTemplateId);
+            List<ReportTableItem> reportTableItemList = new ArrayList<>();
+            if (Blank.isNotEmpty(tttItemList)) {
+                for (TableTemplateTableItem tttItem : tttItemList) {
+                    ReportTableItem reportTableItem =
+                            (ReportTableItem) redisUtil.get(tableTemplateId + ConstantStr.REPORT_TABLE_ITEM + tttItem.getItemReadName());
+                    if (Blank.isNotEmpty(reportTableItem)) {
+                        reportTableItemList.add(reportTableItem);
+                    }
+                }
+            }
+            reportTable.setReportTableItemList(reportTableItemList);
             //如果是事件驱动报表子表
         } else if (reportTableType.equals(ConstantStr.EVENT_GENERATE_REPORT)) {
             reportTable.setReportTableItemList(reportTableDao.getTableItemListById(id));
-            reportTable.setReportChartList(reportTableDao.getReportChartList(id));
             reportTable.setUserGroupList(reportTableDao.getTableUserGroup(id));
             return Result.ok(reportTable);
             //如果是设备报表主表
@@ -595,6 +605,7 @@ public class ReportTableServiceImpl implements ReportTableService {
             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(), "请先配置定时时间");
@@ -603,7 +614,6 @@ public class ReportTableServiceImpl implements ReportTableService {
                     return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此自动报表已经处于启动状态");
                 }
                 //新增定时器任务
-                reportTableDao.runAutoTableById(id, runState);
                 SchedulingRunnable task = new SchedulingRunnable(ReportTableTask.class, "genAutoTableData", new Object[]{reportTable});
                 cronTaskRegister.addCronTask(task, cronId, cron);
                 return Result.ok("启动成功");
@@ -614,15 +624,29 @@ public class ReportTableServiceImpl implements ReportTableService {
                 if (oldRunState.equals(ConstantStr.STOP_IT)) {
                     return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此自动报表已经处于停止状态");
                 }
-                reportTableDao.runAutoTableById(id, runState);
                 cronTaskRegister.removeCronTask(cronId);
                 return Result.ok("停止成功");
             } else {
-                throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "自动报表的状态只有启动停止");
+                throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "自动报表的状态只有启动停止");
             }
         } else if (reportTableType.equals(ConstantStr.EVENT_DRIVEN_REPORT) || reportTableType.equals(ConstantStr.DEVICE_REPORT)) {
-            redisUtil.set(ConstantStr.TABLE_ID + id, true);
-            return Result.ok("启动成功");
+            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(), "此报表已经处于启动状态");
+                }
+                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(), "自动,事件驱动,设备报表才可以启动和停止");
         }

+ 6 - 4
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/OpcAsyncTask.java

@@ -180,7 +180,7 @@ public class OpcAsyncTask {
                     //生成新的子报表
                     String id = IdUtil.createSnowflake(1, 1).nextId() + "";
                     asyncAsyncTask.addHaveKeyChReport(reportTable, id, ConstantStr.EVENT_GENERATE_REPORT, 0);
-                    redisUtil.set(ConstantStr.CURRENT_NUM, 1);
+                    redisUtil.set(ConstantStr.CURRENT_NUM + tableTemplateId, 1);
                     //获取事件驱动报表中所有的数据项信息
                     List<TableTemplateTableItem> tttItemList = tableTemplate.getTableTemplateItemList();
                     if (Blank.isNotEmpty(tttItemList)) {
@@ -198,12 +198,14 @@ public class OpcAsyncTask {
                                 reportTableItemList.add((ReportTableItem) redisUtil.get(tableTemplateId + ConstantStr.REPORT_TABLE_ITEM + tttItem.getItemReadName()));
                             }
                             //将所有报表数据项信息存入到数据库
-                            asyncAsyncTask.addReportTableItemList(reportTableItemList);
+                            if (Blank.isNotEmpty(reportTableItemList)) {
+                                asyncAsyncTask.addReportTableItemList(reportTableItemList);
+                            }
                         }
                         //生成新的子报表
                         String id = IdUtil.createSnowflake(1, 1).nextId() + "";
                         asyncAsyncTask.addHaveKeyChReport(reportTable, id, ConstantStr.EVENT_GENERATE_REPORT, 0);
-                        redisUtil.set(ConstantStr.CURRENT_NUM, 1);
+                        redisUtil.set(ConstantStr.CURRENT_NUM + tableTemplateId, 1);
                         //获取事件驱动报表中所有的数据项信息
                         if (Blank.isNotEmpty(tttItemList)) {
                             //生成新的报表数据项信息
@@ -213,7 +215,7 @@ public class OpcAsyncTask {
                         //如果两者不相等,则数量还有达到设置的最大值,只需要更新报表数据项信息
                         List<TableTemplateTableItem> tttItemList = tableTemplate.getTableTemplateItemList();
                         if (Blank.isNotEmpty(tttItemList)) {
-                            redisUtil.set(ConstantStr.CURRENT_NUM, (int) redisUtil.get(ConstantStr.CURRENT_NUM) + 1);
+                            redisUtil.set(ConstantStr.CURRENT_NUM + tableTemplateId, (int) redisUtil.get(ConstantStr.CURRENT_NUM + tableTemplateId) + 1);
                             genEventItem(tttItemList, dataMap, null, tableTemplateId);
                         }
                     }

+ 0 - 2
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/OpcDaExceedTask.java

@@ -405,9 +405,7 @@ public class OpcDaExceedTask extends TimerTask {
                             }
                         }
                         if (Blank.isNotEmpty(cursorRawDataList)) {
-                            opcAsyncTask.addCursorRawDataList(cursorRawDataList);
                             opcAsyncTask.packageEventTable(cursorRawDataList, tableTemplates, reportTableMap);
-
                             cursorRawDataList = new ArrayList<>();
                         }
                     } catch (Exception e) {

+ 3 - 2
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/OpcDaTask.java

@@ -96,9 +96,10 @@ public class OpcDaTask {
                 List<TableTemplate> tableTemplateList = reportTableDao.getDeviceTtByItemList(basicItemList, ConstantStr.DEVICE_REPORT);
                 List<ReportTable> reportTableList = new ArrayList<>();
                 if (Blank.isNotEmpty(tableTemplateList)) {
+                    //根据模板查询出相应的主报表
                     reportTableList = reportTableDao.getReportTableByttList(tableTemplateList, ConstantStr.DEVICE_REPORT);
                 }
-                //将报表转换为Map<报表主键,报表>
+                //将报表转换为Map<报表模板主键,报表>
                 Map<Integer, ReportTable> reportTableMap = ReportTable.genMap(reportTableList);
                 //<模板主键,<报表模板数据项真实读值名称,报表模板数据项信息>>
                 Map<Integer, Map<String, TableTemplateTableItem>> ttIdMap = TableTemplate.genMap(tableTemplateList);
@@ -141,7 +142,7 @@ public class OpcDaTask {
                         startDate);
             } else if (readMode == ConstantStr.EXCEED_SET_VALUE) {
                 //查看此数据组是否在事件驱动报表中被配置
-                List<TableTemplate> tableTemplateList = reportTableDao.getDeviceTtByItemList(basicItemList, ConstantStr.EVENT_DRIVEN_REPORT);
+                List<TableTemplate> tableTemplateList = reportTableDao.getTableTemplateByItemList(basicItemList, ConstantStr.EVENT_DRIVEN_REPORT);
                 List<ReportTable> reportTableList = new ArrayList<>();
                 if (Blank.isNotEmpty(tableTemplateList)) {
                     reportTableList = reportTableDao.getReportTableByttList(tableTemplateList, ConstantStr.EVENT_DRIVEN_REPORT);

+ 20 - 1
cqcy-ei/cqcy-ei-da/src/main/resources/mapper/ReportTableDao.xml

@@ -1160,7 +1160,7 @@
         WHERE
         1=1
         <if test="tableTemplateList!= null and tableTemplateList.size() >0">
-            or table_template_id in
+            AND table_template_id in
             <foreach collection="tableTemplateList" item="tableTemplate" separator="," open="(" close=")">
                 #{tableTemplate.id}
             </foreach>
@@ -1223,4 +1223,23 @@
           AND tttti.bucket_type = #{bucketType}
     </select>
 
+    <select id="getTableTemplateByItemList" resultMap="allTableTemplate">
+        SELECT
+        <include refid="tableTemplateNoData"/>
+        FROM
+        t_table_template
+        WHERE
+        id IN (
+        SELECT DISTINCT
+        table_template_id
+        FROM
+        t_table_template_table_item
+        WHERE
+        item_id IN
+        <foreach collection="itemList" item="item" separator="," open="(" close=")">
+            #{item.id}
+        </foreach>)
+        AND template_type = #{templateType}
+    </select>
+
 </mapper>