Selaa lähdekoodia

完成后台报表模板修改功能

zhoupeng 1 vuosi sitten
vanhempi
commit
6c4036d086

+ 11 - 1
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/dao/ReportTableDao.java

@@ -43,6 +43,9 @@ public interface ReportTableDao {
     //修改报表
     Integer updateReportTable(ReportTable reportTable);
 
+    //通过报表id修改报表的data数据
+    Integer updateReportTableDataById(String tableId, String reportTableData);
+
     //获取所有报表
     List<ReportTable> getAllReportTable(Long startNum, Long limitNum, String userId, Integer isAutoReport);
 
@@ -118,7 +121,8 @@ public interface ReportTableDao {
     //通过子报表id删除相应的日志记录
     Integer delAutoChLog(String autoChTableId);
 
-    Integer addTableTemplateItem(List<TableTemplateTableItem> tableTemplateTableItemList);
+    //添加模板的表格数据项信息
+    Integer addTableTemplateTableItem(List<TableTemplateTableItem> tableTemplateTableItemList);
 
     //根据报表模板id,获取报表模板表格数据项的详细信息
     List<TableTemplateTableItem> getTttiByTemplateId(Integer tableTemplateId);
@@ -132,9 +136,15 @@ public interface ReportTableDao {
 
     List<String> getTableByItemId(List<Item> itemList, Integer reportTableType);
 
+    //获取同版本的最早创建的一条子报表id
+    String getChTableIdByVersion(String tableId,Integer version);
+
     //查询主表最新一条子表
     String getEventChTableId(String tableId);
 
+    //查询主表第二新的子表
+    String getSecondChTableId(String tableId);
+
     Integer updateReportTableNum(String id, Integer currentNum);
 
     ReportTableItem getReportTableItem(String tableId, Integer itemId, Integer timeItemType);

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

@@ -303,9 +303,17 @@ public class ReportTableServiceImpl implements ReportTableService {
             return Result.ok(reportTableTask.getAutoReport(reportTable));
             //如果是自动报表子表
         } else if (reportTableType.equals(ConstantStr.AUTOMATIC_GENERATE_REPORT)) {
-            //获取到主报表的数据,子报表使用主报表的reportTableData
+            //获取到主报表的数据
             ReportTable mainReportTable = reportTableDao.getMainTableBychTableId(id);
-            reportTable.setReportTableData(mainReportTable.getReportTableData());
+            //如果版本和主报表版本一致,则直接获取主报表的reportTableData
+            //如果不一致,则获取版本号一样的子报表最早的一条数据
+            if (reportTable.getVersion() == mainReportTable.getVersion()) {
+                reportTable.setReportTableData(mainReportTable.getReportTableData());
+            } else {
+                String chOrgTableId = reportTableDao.getChTableIdByVersion(mainReportTable.getId(), reportTable.getVersion());
+                ReportTable chOrgReportTable = reportTableDao.getReportTableById(chOrgTableId);
+                reportTable.setReportTableData(chOrgReportTable.getReportTableData());
+            }
             reportTable.setReportTableItemList(reportTableDao.getTableItemListById(id));
             reportTable.setReportChartList(reportTableDao.getReportChartList(id));
             reportTable.setUserGroupList(reportTableDao.getTableUserGroup(id));
@@ -327,9 +335,17 @@ public class ReportTableServiceImpl implements ReportTableService {
             reportTable.setReportTableItemList(reportTableItemList);
             //如果是事件驱动报表子表
         } else if (reportTableType.equals(ConstantStr.EVENT_GENERATE_REPORT)) {
-            //获取到主报表的数据,子报表使用主报表的reportTableData
+            //获取到主报表的数据
             ReportTable mainReportTable = reportTableDao.getMainTableBychTableId(id);
-            reportTable.setReportTableData(mainReportTable.getReportTableData());
+            //如果版本和主报表版本一致,则直接获取主报表的reportTableData
+            //如果不一致,则获取版本号一样的子报表最早的一条数据
+            if (reportTable.getVersion() == mainReportTable.getVersion()) {
+                reportTable.setReportTableData(mainReportTable.getReportTableData());
+            } else {
+                String chOrgTableId = reportTableDao.getChTableIdByVersion(mainReportTable.getId(), reportTable.getVersion());
+                ReportTable chOrgReportTable = reportTableDao.getReportTableById(chOrgTableId);
+                reportTable.setReportTableData(chOrgReportTable.getReportTableData());
+            }
             reportTable.setReportTableItemList(reportTableDao.getTableItemListById(id));
             reportTable.setUserGroupList(reportTableDao.getTableUserGroup(id));
             return Result.ok(reportTable);
@@ -365,13 +381,23 @@ public class ReportTableServiceImpl implements ReportTableService {
             }
             String chTableId = reportTableDao.getEventChTableId(id);
             reportTable.setReportTableItemList(reportTableDao.getTableItemListById(chTableId));
+            reportTable.setUserGroupList(reportTableDao.getTableUserGroup(id));
             ///如果是设备报表子表
         } else if (reportTableType.equals(ConstantStr.DEVICE_GENERATE_REPORT)) {
-            //获取到主报表的数据,子报表使用主报表的reportTableData
+            ///获取到主报表的数据
             ReportTable mainReportTable = reportTableDao.getMainTableBychTableId(id);
-            reportTable.setReportTableData(mainReportTable.getReportTableData());
+            //如果版本和主报表版本一致,则直接获取主报表的reportTableData
+            //如果不一致,则获取版本号一样的子报表最早的一条数据
+            if (reportTable.getVersion() == mainReportTable.getVersion()) {
+                reportTable.setReportTableData(mainReportTable.getReportTableData());
+            } else {
+                String chOrgTableId = reportTableDao.getChTableIdByVersion(mainReportTable.getId(), reportTable.getVersion());
+                ReportTable chOrgReportTable = reportTableDao.getReportTableById(chOrgTableId);
+                reportTable.setReportTableData(chOrgReportTable.getReportTableData());
+            }
             List<ReportTableItem> reportTableItemList1 = reportTableDao.getTableItemListById(id);
             reportTable.setReportTableItemList(reportTableItemList1);
+            reportTable.setUserGroupList(reportTableDao.getTableUserGroup(id));
             return Result.ok(reportTable);
         } else {
             reportTable.setReportTableItemList(reportTableDao.getTableItemListById(id));
@@ -398,9 +424,8 @@ public class ReportTableServiceImpl implements ReportTableService {
         }
         if (reportTableType.equals(ConstantStr.MANUAL_REPORT)) {
             return Result.ok(reportTableTask.getManualReport(reportTable));
-        } else if (reportTableType.equals(ConstantStr.AUTOMATIC_REPORT) ||
-                reportTableType.equals(ConstantStr.EVENT_DRIVEN_REPORT) ||
-                reportTableType.equals(ConstantStr.DEVICE_REPORT)) {
+            //自动报表打印最新的一条子报表
+        } else if (reportTableType.equals(ConstantStr.AUTOMATIC_REPORT)) {
             //查询主报表最新的一条子报表
             String chTableId = reportTableDao.getEventChTableId(id);
             if (Blank.isNotEmpty(chTableId)) {
@@ -413,6 +438,20 @@ public class ReportTableServiceImpl implements ReportTableService {
             reportTable.setReportTableItemList(reportTableDao.getTableItemListById(id));
             reportTable.setUserGroupList(reportTableDao.getTableUserGroup(id));
             return Result.ok(reportTable);
+            //事件驱动报表和设备报表打印,查询主报表第二新的一条子报表
+        } else if (reportTableType.equals(ConstantStr.EVENT_DRIVEN_REPORT) ||
+                reportTableType.equals(ConstantStr.DEVICE_REPORT)) {
+            String chTableId = reportTableDao.getSecondChTableId(id);
+            if (Blank.isNotEmpty(chTableId)) {
+                ReportTable chReportTable = reportTableDao.getReportTableById(chTableId);
+                chReportTable.setReportTableData(reportTable.getReportTableData());
+                chReportTable.setReportTableItemList(reportTableDao.getTableItemListById(chTableId));
+                chReportTable.setUserGroupList(reportTableDao.getTableUserGroup(chTableId));
+                return Result.ok(chReportTable);
+            }
+            reportTable.setReportTableItemList(reportTableDao.getTableItemListById(id));
+            reportTable.setUserGroupList(reportTableDao.getTableUserGroup(id));
+            return Result.ok(reportTable);
         }
         throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "报表类型不存在");
     }

+ 12 - 0
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/AsyncAsyncTask.java

@@ -59,6 +59,18 @@ public class AsyncAsyncTask {
     }
 
     /**
+     * 修改报表当前数据
+     *
+     * @param reportTableId
+     * @param num
+     */
+    public void updateReportNum(String reportTableId, Integer num) {
+        if (Blank.isNotEmpty(reportTableId) && Blank.isNotEmpty(num)) {
+            reportTableDao.updateReportTableNum(reportTableId, num);
+        }
+    }
+
+    /**
      * 如果数据库有此数据项信息,则更新,否则新增
      *
      * @param reportTableItem

+ 8 - 2
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/OpcAsyncTask.java

@@ -179,7 +179,8 @@ public class OpcAsyncTask {
                 if (Blank.isEmpty(currentNum)) {
                     //生成新的子报表
                     String id = IdUtil.createSnowflake(1, 1).nextId() + "";
-                    asyncAsyncTask.addHaveKeyChReport(reportTable, id, ConstantStr.EVENT_GENERATE_REPORT, 0);
+                    asyncAsyncTask.addHaveKeyChReport(reportTable, id, ConstantStr.EVENT_GENERATE_REPORT, 1);
+                    redisUtil.set(ConstantStr.TABLE_ID + tableTemplateId, id);
                     redisUtil.set(ConstantStr.CURRENT_NUM + tableTemplateId, 1);
                     //获取事件驱动报表中所有的数据项信息
                     List<TableTemplateTableItem> tttItemList = tableTemplate.getTableTemplateItemList();
@@ -190,6 +191,7 @@ public class OpcAsyncTask {
                 } else {
                     //如果两者相等,将上一次的数据异步存入到数据库,并生成新的子报表
                     if (eventNum == (int) currentNum) {
+                        asyncAsyncTask.updateReportNum(redisUtil.get(ConstantStr.TABLE_ID + tableTemplateId).toString(), eventNum);
                         //从redis中取出数据
                         List<TableTemplateTableItem> tttItemList = tableTemplate.getTableTemplateItemList();
                         if (Blank.isNotEmpty(tttItemList)) {
@@ -204,7 +206,7 @@ public class OpcAsyncTask {
                         }
                         //生成新的子报表
                         String id = IdUtil.createSnowflake(1, 1).nextId() + "";
-                        asyncAsyncTask.addHaveKeyChReport(reportTable, id, ConstantStr.EVENT_GENERATE_REPORT, 0);
+                        asyncAsyncTask.addHaveKeyChReport(reportTable, id, ConstantStr.EVENT_GENERATE_REPORT, 1);
                         redisUtil.set(ConstantStr.CURRENT_NUM + tableTemplateId, 1);
                         //获取事件驱动报表中所有的数据项信息
                         if (Blank.isNotEmpty(tttItemList)) {
@@ -413,6 +415,8 @@ public class OpcAsyncTask {
                             //获取子报表中的报表主键
                             String id = redisUtil.get(ConstantStr.TABLE_ID + tableTemplateId).toString();
                             redisUtil.set(ConstantStr.END_NUM + tableTemplateId, endNum + 1);
+                            //修改报表当前数量
+                            asyncAsyncTask.updateReportNum(redisUtil.get(ConstantStr.TABLE_ID + tableTemplateId).toString(), endNum + 1);
                             List<TableTemplateTableItem> tttItemList = tableTemplate.getTableTemplateItemList();
                             for (TableTemplateTableItem tttItem : tttItemList) {
                                 Integer timeItemType = tttItem.getTimeItemType();
@@ -440,6 +444,8 @@ public class OpcAsyncTask {
                             }
                         } else {
                             redisUtil.set(ConstantStr.END_NUM + tableTemplateId, endNum + 1);
+                            //修改报表当前数量
+                            asyncAsyncTask.updateReportNum(redisUtil.get(ConstantStr.TABLE_ID + tableTemplateId).toString(), endNum + 1);
                             //如果此时插入的结束时间为最后一个数据
                             if ((endNum + 1) == eventNum) {
                                 List<TableTemplateTableItem> tttItemList = tableTemplate.getTableTemplateItemList();

+ 91 - 35
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/ReportTableTask.java

@@ -111,7 +111,7 @@ public class ReportTableTask {
                 reportTableDao.addReportTableItemList(reportTableItemList);
             }
             //添加模板数据项信息
-            reportTableDao.addTableTemplateItem(tableTemplateItemList);
+            reportTableDao.addTableTemplateTableItem(tableTemplateItemList);
         }
         //保存模板统计图相关的数据项信息,以及报表统计图相关的信息
         if (Blank.isNotEmpty(tableTemplateChartList)) {
@@ -199,7 +199,7 @@ public class ReportTableTask {
                 reportTableDao.addReportTableItemList(reportTableItemList);
             }
             //添加模板数据项信息
-            reportTableDao.addTableTemplateItem(tableTemplateItemList);
+            reportTableDao.addTableTemplateTableItem(tableTemplateItemList);
         }
 
         List<TableTemplateChart> tableTemplateCharts = reportTableDao.getTtcByTemplateId(tableTemplateId);
@@ -296,7 +296,7 @@ public class ReportTableTask {
                 }
             }
             //自动报表只需要添加模板的数据项信息,定时器执行的时候,会根据模板的数据项信息,自动生成报表的数据项信息
-            reportTableDao.addTableTemplateItem(tableTemplateItemList);
+            reportTableDao.addTableTemplateTableItem(tableTemplateItemList);
         }
         if (Blank.isNotEmpty(tableTemplateChartList)) {
             for (TableTemplateChart ttc : tableTemplateChartList) {
@@ -330,7 +330,13 @@ public class ReportTableTask {
         Integer tableTemplateId = tableTemplate.getId();
         List<TableTemplateTableItem> tableTemplateItemList = tableTemplate.getTableTemplateItemList();
         List<TableTemplateChart> tableTemplateChartList = tableTemplate.getTableTemplateChartList();
-
+        //修改相应报表之前,将原来的报表data数据,赋值给子报表中最早创建的一条
+        String chOrgTableId = reportTableDao.getChTableIdByVersion(reportTable.getId(), reportTable.getVersion());
+        if (Blank.isNotEmpty(chOrgTableId)) {
+            if (reportTableDao.updateReportTableDataById(chOrgTableId, reportTable.getReportTableData()) <= 0) {
+                throw new CustomException(ResultEnum.SERVER_ERROR.getRespCode(), "报表传递数据失败");
+            }
+        }
         //根据模板修改相应的报表
         reportTable.setReportTableName(tableTemplate.getTemplateName());
         reportTable.setReportTableData(tableTemplate.getTemplateData());
@@ -352,7 +358,7 @@ public class ReportTableTask {
                 }
             }
             //自动报表只需要添加模板的数据项信息,定时器执行的时候,会根据模板的数据项信息,自动生成报表的数据项信息
-            reportTableDao.addTableTemplateItem(tableTemplateItemList);
+            reportTableDao.addTableTemplateTableItem(tableTemplateItemList);
         }
 
         List<TableTemplateChart> tableTemplateCharts = reportTableDao.getTtcByTemplateId(tableTemplateId);
@@ -434,7 +440,7 @@ public class ReportTableTask {
                 }
             }
             //事件驱动报表只需要添加模板的数据项信息,驱动执行的时候,会根据模板的数据项信息,自动生成报表的数据项信息
-            reportTableDao.addTableTemplateItem(tableTemplateItemList);
+            reportTableDao.addTableTemplateTableItem(tableTemplateItemList);
         } else {
             throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "事件驱动报表中,不能没有数据项");
         }
@@ -452,6 +458,13 @@ public class ReportTableTask {
         if (Blank.isEmpty(eventNum)) {
             throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "事件驱动显示数量设置不能为空");
         }
+        //修改相应报表之前,将原来的报表data数据,赋值给子报表中最早创建的一条
+        String chOrgTableId = reportTableDao.getChTableIdByVersion(reportTable.getId(), reportTable.getVersion());
+        if (Blank.isNotEmpty(chOrgTableId)) {
+            if (reportTableDao.updateReportTableDataById(chOrgTableId, reportTable.getReportTableData()) <= 0) {
+                throw new CustomException(ResultEnum.SERVER_ERROR.getRespCode(), "报表传递数据失败");
+            }
+        }
 
         //根据模板修改相应的报表
         reportTable.setReportTableName(tableTemplate.getTemplateName());
@@ -461,6 +474,8 @@ public class ReportTableTask {
             throw new CustomException(ResultEnum.SERVER_ERROR.getRespCode(), "修改数据报表失败");
         }
 
+        //获取上个版本模板表格的数据项信息
+        List<TableTemplateTableItem> tttiByTemplate = reportTableDao.getTttiByTemplateId(tableTemplateId);
         //删除模板表格数据相关的数据项信息
         reportTableDao.delTtiByTtId(tableTemplateId);
         if (Blank.isNotEmpty(tableTemplateItemList)) {
@@ -471,7 +486,17 @@ public class ReportTableTask {
                 }
             }
             //事件驱动报表只需要添加模板的数据项信息,驱动执行的时候,会根据模板的数据项信息,自动生成报表的数据项信息
-            reportTableDao.addTableTemplateItem(tableTemplateItemList);
+            reportTableDao.addTableTemplateTableItem(tableTemplateItemList);
+            //删除事件驱动报表模板上个版本的配置信息
+            redisUtil.del(ConstantStr.CURRENT_NUM + tableTemplateId);
+            redisUtil.del(ConstantStr.TABLE_ID + tableTemplateId);
+            List<String> itemIdKeyList = new ArrayList<>();
+            tttiByTemplate.forEach(t -> {
+                itemIdKeyList.add(tableTemplateId + ConstantStr.REPORT_TABLE_ITEM + t.getItemReadName());
+            });
+            if (Blank.isNotEmpty(itemIdKeyList)) {
+                redisUtil.del(itemIdKeyList.stream().toArray(String[]::new));
+            }
         } else {
             throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "事件驱动报表中,不能没有数据项");
         }
@@ -487,6 +512,7 @@ public class ReportTableTask {
         List<TableTemplateTableItem> tableTemplateItemList = tableTemplate.getTableTemplateItemList();
         Integer eventNum = tableTemplate.getEventNum();
         Integer isGenCountTime = tableTemplate.getIsGenCountTime();
+        //判断设备报表传入的参数是否符合条件
         if (Blank.isEmpty(eventNum, isGenCountTime)) {
             throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "显示数量,是否生成计算时间不能为空");
         }
@@ -528,6 +554,7 @@ public class ReportTableTask {
             throw new CustomException(ResultEnum.SERVER_ERROR.getRespCode(), "生成数据报表失败");
         }
 
+        //检验、保存设备报表模板的数据信息配置
         if (Blank.isNotEmpty(tableTemplateItemList)) {
             int startCount = 0;
             int endCount = 0;
@@ -553,7 +580,7 @@ public class ReportTableTask {
                 throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "结束时间项只能有一个");
             }
             //事件驱动报表只需要添加模板的数据项信息,驱动执行的时候,会根据模板的数据项信息,自动生成报表的数据项信息
-            reportTableDao.addTableTemplateItem(tableTemplateItemList);
+            reportTableDao.addTableTemplateTableItem(tableTemplateItemList);
         } else {
             throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "事件驱动报表中,不能没有数据项");
         }
@@ -591,6 +618,14 @@ public class ReportTableTask {
             throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "变量类型只能为单变量或者双变量");
         }
 
+        //修改相应报表之前,将原来的报表data数据,赋值给子报表中最早创建的一条
+        String chOrgTableId = reportTableDao.getChTableIdByVersion(reportTable.getId(), reportTable.getVersion());
+        if (Blank.isNotEmpty(chOrgTableId)) {
+            if (reportTableDao.updateReportTableDataById(chOrgTableId, reportTable.getReportTableData()) <= 0) {
+                throw new CustomException(ResultEnum.SERVER_ERROR.getRespCode(), "报表传递数据失败");
+            }
+        }
+
         //根据模板生成相应的报表
         reportTable.setReportTableName(tableTemplate.getTemplateName());
         reportTable.setReportTableData(tableTemplate.getTemplateData());
@@ -600,6 +635,8 @@ public class ReportTableTask {
             throw new CustomException(ResultEnum.SERVER_ERROR.getRespCode(), "生成数据报表失败");
         }
 
+        //获取上个版本模板表格的数据项信息
+        List<TableTemplateTableItem> tttiByTemplate = reportTableDao.getTttiByTemplateId(tableTemplateId);
         //删除模板表格数据相关的数据项信息
         reportTableDao.delTtiByTtId(tableTemplateId);
         if (Blank.isNotEmpty(tableTemplateItemList)) {
@@ -627,7 +664,23 @@ public class ReportTableTask {
                 throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "结束时间项只能有一个");
             }
             //事件驱动报表只需要添加模板的数据项信息,驱动执行的时候,会根据模板的数据项信息,自动生成报表的数据项信息
-            reportTableDao.addTableTemplateItem(tableTemplateItemList);
+            reportTableDao.addTableTemplateTableItem(tableTemplateItemList);
+            //删除事件驱动报表模板上个版本的配置信息
+            redisUtil.del(ConstantStr.START_NUM + tableTemplateId);
+            redisUtil.del(ConstantStr.END_NUM + tableTemplateId);
+            redisUtil.del(ConstantStr.TABLE_ID + tableTemplateId);
+            List<String> itemIdKeyList = new ArrayList<>();
+            tttiByTemplate.forEach(t -> {
+                if (Blank.isNotEmpty(t.getTimeItemType())) {
+                    itemIdKeyList.add(tableTemplateId + ConstantStr.REPORT_TABLE_ITEM + t.getItemReadName() + ConstantStr.REPORT_TABLE_ITEM + t.getTimeItemType());
+                } else {
+                    itemIdKeyList.add(tableTemplateId + ConstantStr.REPORT_TABLE_ITEM + t.getItemReadName());
+
+                }
+            });
+            if (Blank.isNotEmpty(itemIdKeyList)) {
+                redisUtil.del(itemIdKeyList.stream().toArray(String[]::new));
+            }
         } else {
             throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "设备报表不能没有数据项");
         }
@@ -1341,37 +1394,40 @@ public class ReportTableTask {
                 ReportTable reportTable = reportTableDao.getReportTableByTemplate(tableTemplate);
                 String chTableId = reportTableDao.getEventChTableId(reportTable.getId());
                 if (Blank.isNotEmpty(chTableId)) {
-                    List<ReportTableItem> chReportTableItemList = reportTableDao.getTableItemListById(chTableId);
-                    if (Blank.isNotEmpty(chReportTableItemList)) {
-                        for (ReportTableItem reportTableItem : chReportTableItemList) {
-                            Integer timeItemType = reportTableItem.getTimeItemType();
-                            String itemReadName = reportTableItem.getItemReadName();
-                            if (Blank.isNotEmpty(timeItemType)) {
-                                if (timeItemType.equals(ConstantStr.END_TIME_ITEM)) {
-                                    String valueIndexList = reportTableItem.getValueIndexList();
-                                    int length = valueIndexList.split(",").length;
-                                    if (eventNum == length) {
-                                        redisUtil.set(ConstantStr.START_NUM + tableTemplateId, 0);
-                                    } else {
-                                        redisUtil.set(ConstantStr.END_NUM + tableTemplateId, length);
-                                        redisUtil.set(ConstantStr.TABLE_ID + tableTemplateId, chTableId);
+                    ReportTable chReportTable = reportTableDao.getReportTableById(chTableId);
+                    if (reportTable.getVersion() == chReportTable.getVersion()) {
+                        List<ReportTableItem> chReportTableItemList = reportTableDao.getTableItemListById(chTableId);
+                        if (Blank.isNotEmpty(chReportTableItemList)) {
+                            for (ReportTableItem reportTableItem : chReportTableItemList) {
+                                Integer timeItemType = reportTableItem.getTimeItemType();
+                                String itemReadName = reportTableItem.getItemReadName();
+                                if (Blank.isNotEmpty(timeItemType)) {
+                                    if (timeItemType.equals(ConstantStr.END_TIME_ITEM)) {
+                                        String valueIndexList = reportTableItem.getValueIndexList();
+                                        int length = valueIndexList.split(",").length;
+                                        if (eventNum == length) {
+                                            redisUtil.set(ConstantStr.START_NUM + tableTemplateId, 0);
+                                        } else {
+                                            redisUtil.set(ConstantStr.END_NUM + tableTemplateId, length);
+                                            redisUtil.set(ConstantStr.TABLE_ID + tableTemplateId, chTableId);
+                                        }
                                     }
-                                }
-                                if (timeItemType.equals(ConstantStr.START_TIME_ITEM)) {
-                                    String valueIndexList = reportTableItem.getValueIndexList();
-                                    int length = valueIndexList.split(",").length;
-                                    if (eventNum == length) {
-                                        Object start0 = redisUtil.get(ConstantStr.START_NUM + tableTemplateId);
-                                        if (Blank.isEmpty(start0)) {
+                                    if (timeItemType.equals(ConstantStr.START_TIME_ITEM)) {
+                                        String valueIndexList = reportTableItem.getValueIndexList();
+                                        int length = valueIndexList.split(",").length;
+                                        if (eventNum == length) {
+                                            Object start0 = redisUtil.get(ConstantStr.START_NUM + tableTemplateId);
+                                            if (Blank.isEmpty(start0)) {
+                                                redisUtil.set(ConstantStr.START_NUM + tableTemplateId, length);
+                                            }
+                                        } else {
                                             redisUtil.set(ConstantStr.START_NUM + tableTemplateId, length);
                                         }
-                                    } else {
-                                        redisUtil.set(ConstantStr.START_NUM + tableTemplateId, length);
                                     }
+                                    redisUtil.set(tableTemplateId + ConstantStr.REPORT_TABLE_ITEM + itemReadName + ConstantStr.REPORT_TABLE_ITEM + timeItemType, reportTableItem);
+                                } else {
+                                    redisUtil.set(tableTemplateId + ConstantStr.REPORT_TABLE_ITEM + itemReadName, reportTableItem);
                                 }
-                                redisUtil.set(tableTemplateId + ConstantStr.REPORT_TABLE_ITEM + itemReadName + ConstantStr.REPORT_TABLE_ITEM + timeItemType, reportTableItem);
-                            } else {
-                                redisUtil.set(tableTemplateId + ConstantStr.REPORT_TABLE_ITEM + itemReadName, reportTableItem);
                             }
                         }
                     }

+ 29 - 2
cqcy-ei/cqcy-ei-da/src/main/resources/mapper/ReportTableDao.xml

@@ -139,7 +139,7 @@
             value (#{autoTableId},#{autoChTableId})
     </insert>
 
-    <insert id="addTableTemplateItem">
+    <insert id="addTableTemplateTableItem">
         <if test="tableTemplateTableItemList!= null and tableTemplateTableItemList.size() >0">
             insert into t_table_template_table_item (table_template_id, item_id, time_item_type, place_holder, xaxis,
             yaxis,
@@ -231,6 +231,12 @@
         where id = #{id}
     </update>
 
+    <update id="updateReportTableDataById">
+        update t_report_table
+        set report_table_data=#{reportTableData}
+        where id = #{id}
+    </update>
+
     <update id="updateTableNameById">
         update t_report_table
         set report_table_name=#{reportTableName}
@@ -828,6 +834,27 @@
         order by id desc limit 1
     </select>
 
+    <select id="getSecondChTableId" resultType="java.lang.String">
+        select id
+        from t_report_table
+        where id in
+              (select auto_ch_table_id
+               from t_table_auto_log
+               where auto_table_id = #{tableId})
+        order by id desc limit 1,1
+    </select>
+
+    <select id="getChTableIdByVersion" resultType="java.lang.String">
+        select id
+        from t_report_table
+        where id in
+              (select auto_ch_table_id
+               from t_table_auto_log
+               where auto_table_id = #{tableId})
+          and version = #{version}
+        order by id limit 1
+    </select>
+
     <select id="getReportTableItem" resultType="com.example.opc_common.entity.ReportTableItem">
         select
         <include refid="reportTableItem"/>
@@ -1014,7 +1041,7 @@
 
     <select id="getReportTableByTemplate" resultType="com.example.opc_common.entity.ReportTable">
         select
-        <include refid="reportTableCronNoData"/>
+        <include refid="reportTableCron"/>
         from t_report_table
         where report_table_type = #{templateType}
         and table_template_id=#{id}