|
@@ -74,7 +74,7 @@ public class ReportTableTask {
|
|
|
List<TableTemplateTableItem> tableTemplateItemList = tableTemplate.getTableTemplateItemList();
|
|
|
List<TableTemplateChart> tableTemplateChartList = tableTemplate.getTableTemplateChartList();
|
|
|
|
|
|
- String reportTableId = IdUtil.createSnowflake(1, 1).nextId()+"";
|
|
|
+ String reportTableId = IdUtil.createSnowflake(1, 1).nextId() + "";
|
|
|
//根据模板生成相应的报表
|
|
|
ReportTable reportTable = new ReportTable(reportTableId,
|
|
|
tableTemplate.getTemplateType(), tableTemplateId, tableTemplate.getUserId(), tableTemplate.getTemplateName(),
|
|
@@ -269,7 +269,7 @@ public class ReportTableTask {
|
|
|
List<TableTemplateTableItem> tableTemplateItemList = tableTemplate.getTableTemplateItemList();
|
|
|
List<TableTemplateChart> tableTemplateChartList = tableTemplate.getTableTemplateChartList();
|
|
|
|
|
|
- String reportTableId = IdUtil.createSnowflake(1, 1).nextId()+"";
|
|
|
+ String reportTableId = IdUtil.createSnowflake(1, 1).nextId() + "";
|
|
|
//根据模板生成相应的报表
|
|
|
ReportTable reportTable = new ReportTable(reportTableId,
|
|
|
tableTemplate.getTemplateType(), tableTemplateId, tableTemplate.getUserId(), tableTemplate.getTemplateName(),
|
|
@@ -407,7 +407,7 @@ public class ReportTableTask {
|
|
|
throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "事件驱动显示数量设置不能为空");
|
|
|
}
|
|
|
|
|
|
- String reportTableId = IdUtil.createSnowflake(1, 1).nextId()+"";
|
|
|
+ String reportTableId = IdUtil.createSnowflake(1, 1).nextId() + "";
|
|
|
//根据模板生成相应的报表
|
|
|
ReportTable reportTable = new ReportTable(reportTableId,
|
|
|
tableTemplate.getTemplateType(), tableTemplateId, tableTemplate.getUserId(), tableTemplate.getTemplateName(),
|
|
@@ -512,7 +512,7 @@ public class ReportTableTask {
|
|
|
throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "变量类型只能为单变量或者双变量");
|
|
|
}
|
|
|
|
|
|
- String reportTableId = IdUtil.createSnowflake(1, 1).nextId()+"";
|
|
|
+ String reportTableId = IdUtil.createSnowflake(1, 1).nextId() + "";
|
|
|
//根据模板生成相应的报表
|
|
|
ReportTable reportTable = new ReportTable(reportTableId,
|
|
|
tableTemplate.getTemplateType(), tableTemplateId, tableTemplate.getUserId(), tableTemplate.getTemplateName(),
|
|
@@ -762,10 +762,12 @@ public class ReportTableTask {
|
|
|
if (Blank.isEmpty(tableTemplateId)) {
|
|
|
return reportTable;
|
|
|
}
|
|
|
+ //#查询报表模板
|
|
|
TableTemplate tableTemplate = reportTableDao.getTableTemplateById(tableTemplateId);
|
|
|
if (Blank.isEmpty(tableTemplate)) {
|
|
|
return reportTable;
|
|
|
}
|
|
|
+ //根据配置的cron,生成此报表这个时候的开始时间和结束时间
|
|
|
String cron = reportTable.getCron();
|
|
|
Date reportStartTime = reportTable.getStartTime();
|
|
|
if (Blank.isEmpty(cron)) {
|
|
@@ -777,72 +779,186 @@ public class ReportTableTask {
|
|
|
Date startTime = CronUtil.getTimeBefore(cron, reportTable.getStartTime());
|
|
|
Date endTime = CronUtil.getTimeAfter(cron, startTime);
|
|
|
//获取此报表管理的报表模板,所关联的表格数据项
|
|
|
- List<TableTemplateTableItem> tableTemplateItemList = reportTableDao.getTttiByTemplateId(tableTemplateId);
|
|
|
List<ReportTableItem> reportTableItemList = new ArrayList<>();
|
|
|
- if (Blank.isNotEmpty(tableTemplateItemList)) {
|
|
|
- //根据模板配置的取值条件,获取表格数据项的数据,并存到报表的数据项信息里面
|
|
|
- for (TableTemplateTableItem t : tableTemplateItemList) {
|
|
|
- Integer itemGroupId = t.getItemGroupId();
|
|
|
- if (Blank.isEmpty(itemGroupId)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+ //通过时段类型,数据组id,数据源id,对数据项进行分组
|
|
|
+ List<TableTemplateTableItem> tableTemplateItemGroupList = reportTableDao.getTttiByTemplateIdGroup(tableTemplateId);
|
|
|
+ if (Blank.isNotEmpty(tableTemplateItemGroupList)) {
|
|
|
+ for (TableTemplateTableItem ttti : tableTemplateItemGroupList) {
|
|
|
+ Integer itemGroupId = ttti.getItemGroupId();
|
|
|
+ Integer dataSourceId = ttti.getDataSourceId();
|
|
|
Integer remainder = itemGroupId % ConstantStr.SUB_TABLE_NUM;
|
|
|
- Integer itemId = t.getItemId();
|
|
|
- Integer xaxis = t.getXaxis();
|
|
|
- Integer yaxis = t.getYaxis();
|
|
|
- String standby = t.getStandby();
|
|
|
- String itemName = t.getItemName();
|
|
|
- Integer dataSourceId = t.getDataSourceId();
|
|
|
- Integer valueTakingMode = t.getValueTakingMode();
|
|
|
- Integer valueType = t.getValueType();
|
|
|
- Integer bucketType = t.getBucketType();
|
|
|
- Integer bucketValue = t.getBucketValue();
|
|
|
- boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
|
|
|
- Map<String, String> map = new HashMap<>();
|
|
|
+ Integer bucketType = ttti.getBucketType();
|
|
|
+ //查询每个分组下的报表模板数据项信息
|
|
|
+ List<TableTemplateTableItem> tableTemplateItemList = reportTableDao.getTttiByGroup(tableTemplateId, itemGroupId, dataSourceId, bucketType);
|
|
|
+ List<RawData> rawDataList = new ArrayList<>();
|
|
|
+ List<CursorRawData> cursorRawDataList = new ArrayList<>();
|
|
|
+ List<CursorRawData> sqlCurrentYmdhList = new ArrayList<>();
|
|
|
+ //获取所有数据项的数据
|
|
|
if (bucketType.equals(ConstantStr.PERIOD_TIME_DAY) || bucketType.equals(ConstantStr.PERIOD_TIME_HOUR)
|
|
|
|| bucketType.equals(ConstantStr.PERIOD_TIME_MINUTE) || bucketType.equals(ConstantStr.PERIOD_TIME_SECOND)) {
|
|
|
String startBelongTime;
|
|
|
String endBelongTime;
|
|
|
- List<RawData> rawDataList = new ArrayList<>();
|
|
|
+
|
|
|
+ //从历史表中,查出历史数据
|
|
|
if (bucketType.equals(ConstantStr.PERIOD_TIME_DAY)) {
|
|
|
startBelongTime = DateUtil.dateChangeStrYmdhms(startTime).substring(0, ConstantStr.TIME_DAY_STR.length());
|
|
|
endBelongTime = DateUtil.dateChangeStrYmdhms(endTime).substring(0, ConstantStr.TIME_DAY_STR.length());
|
|
|
- rawDataList = rawDataDao.getTableDataByDay(itemGroupId, remainder, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+// rawDataList = rawDataDao.getTableDataByDay(itemGroupId, remainder, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+ rawDataList = rawDataDao.getTableDataGroupByDay(itemGroupId, remainder, dataSourceId, tableTemplateItemList, startBelongTime, endBelongTime);
|
|
|
} else {
|
|
|
startBelongTime = DateUtil.dateChangeStrYmdhms(startTime).substring(0, ConstantStr.TIME_HOUR_STR.length());
|
|
|
endBelongTime = DateUtil.dateChangeStrYmdhms(endTime).substring(0, ConstantStr.TIME_HOUR_STR.length());
|
|
|
- rawDataList = rawDataDao.getTableData(itemGroupId, remainder, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+// rawDataList = rawDataDao.getTableData(itemGroupId, remainder, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+ rawDataList = rawDataDao.getTableDataGroup(itemGroupId, remainder, dataSourceId, tableTemplateItemList, startBelongTime, endBelongTime);
|
|
|
}
|
|
|
- List<String> sqlCurrentYmdhList = rawDataDao.getCursorYmdh(itemGroupId, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
- if (Blank.isNotEmpty(sqlCurrentYmdhList)) {
|
|
|
- for (String sqlCurrentYmdh : sqlCurrentYmdhList) {
|
|
|
- List<CursorRawData> cursorRawDataList = rawDataDao.getTableCursorData(itemGroupId, dataSourceId, itemName, sqlCurrentYmdh);
|
|
|
- rawDataList = ReportTask.genRawAddCursor(rawDataList, cursorRawDataList, itemGroupId, dataSourceId, sqlCurrentYmdh);
|
|
|
+ //从临时表中,查出所有临时数据
|
|
|
+ cursorRawDataList = rawDataDao.getTableCursorDataGroup(itemGroupId, dataSourceId, tableTemplateItemList);
|
|
|
+ //查询出所有数据时间归属
|
|
|
+ sqlCurrentYmdhList = rawDataDao.getCursorYmdhGroup(itemGroupId, dataSourceId, tableTemplateItemList, startBelongTime, endBelongTime);
|
|
|
+ } else {
|
|
|
+ throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前还未适配此种类型的取值模式");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<RawData> finalRawDataList = rawDataList;
|
|
|
+ List<CursorRawData> finalCursorRawDataList = cursorRawDataList;
|
|
|
+ List<CursorRawData> finalSqlCurrentYmdhList = sqlCurrentYmdhList;
|
|
|
+ tableTemplateItemList.forEach(t -> {
|
|
|
+ //循环得到每个数据项的历史数据和临时数据,归属时间
|
|
|
+ Integer itemGroupId1 = t.getItemGroupId();
|
|
|
+ Integer dataSourceId1 = t.getDataSourceId();
|
|
|
+ String itemReadName = t.getItemReadName();
|
|
|
+ List<RawData> currentRawDataList = new ArrayList<>();
|
|
|
+ List<CursorRawData> currentCursorRawDataList = new ArrayList<>();
|
|
|
+ List<String> currentSqlYmdhList = new ArrayList<>();
|
|
|
+ finalRawDataList.forEach(rawData -> {
|
|
|
+ //生成历史数据
|
|
|
+ if (rawData.getItemGroupId().equals(itemGroupId1)
|
|
|
+ && rawData.getDataSourceId().equals(dataSourceId1)
|
|
|
+ && rawData.getItemName().equals(itemReadName)) {
|
|
|
+ currentRawDataList.add(rawData);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ finalCursorRawDataList.forEach(currentRawData -> {
|
|
|
+ //生成临时数据
|
|
|
+ if (currentRawData.getItemGroupId().equals(itemGroupId1)
|
|
|
+ && currentRawData.getDataSourceId().equals(dataSourceId1)
|
|
|
+ && currentRawData.getItemName().equals(itemReadName)) {
|
|
|
+ currentCursorRawDataList.add(currentRawData);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ finalSqlCurrentYmdhList.forEach(currentRawData -> {
|
|
|
+ if (currentRawData.getItemGroupId().equals(itemGroupId1)
|
|
|
+ && currentRawData.getDataSourceId().equals(dataSourceId1)
|
|
|
+ && currentRawData.getItemName().equals(itemReadName)) {
|
|
|
+ currentSqlYmdhList.add(currentRawData.getValueBelongTime());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //根据历史数据和临时数据,计算出此数据项在报表中应该展示的数据,map形式返回
|
|
|
+// Map<String, String> map = ReportTask.genAutoData(currentRawDataList, currentCursorRawDataList,
|
|
|
+// startTime, endTime, t.getValueTakingMode(), t.getBucketType(), t.getBucketValue());
|
|
|
+ List<RawData> currentRawDataList1 = new ArrayList<>();
|
|
|
+ if (Blank.isNotEmpty(currentSqlYmdhList)) {
|
|
|
+ for (String sqlCurrentYmdh : currentSqlYmdhList) {
|
|
|
+ currentRawDataList1 = ReportTask.genRawAddCursor(currentRawDataList, currentCursorRawDataList, itemGroupId, dataSourceId, sqlCurrentYmdh);
|
|
|
}
|
|
|
}
|
|
|
- if (Blank.isNotEmpty(rawDataList)) {
|
|
|
- String dataType = rawDataList.get(0).getDataType();
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
+ Integer valueTakingMode = t.getValueTakingMode();
|
|
|
+ Integer bucketValue = t.getBucketValue();
|
|
|
+ if (Blank.isNotEmpty(currentRawDataList1)) {
|
|
|
+ String dataType = currentRawDataList1.get(0).getDataType();
|
|
|
if (dataType.equals("boolean")) {
|
|
|
- map = ReportTask.genBoolean(rawDataList, startTime, endTime, valueTakingMode, bucketType, bucketValue);
|
|
|
+ map = ReportTask.genBoolean(currentRawDataList1, startTime, endTime, valueTakingMode, bucketType, bucketValue);
|
|
|
} else {
|
|
|
try {
|
|
|
- map = ReportTask.genBigDecimal(rawDataList, startTime, endTime, valueTakingMode, bucketType, bucketValue);
|
|
|
+ map = ReportTask.genBigDecimal(currentRawDataList1, startTime, endTime, valueTakingMode, bucketType, bucketValue);
|
|
|
} catch (Exception e) {
|
|
|
- map = ReportTask.genString(rawDataList, startTime, endTime, bucketType, bucketValue);
|
|
|
+ map = ReportTask.genString(currentRawDataList1, startTime, endTime, bucketType, bucketValue);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- } else {
|
|
|
- throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前还未适配此种类型的取值模式");
|
|
|
- }
|
|
|
- String valueList = map.get(flage ? "valueList" : "orgValueList");
|
|
|
- String valueTimeList = map.get("valueTimeList");
|
|
|
- String valueIndexList = map.get("valueIndexList");
|
|
|
- reportTableItemList.add(new ReportTableItem(
|
|
|
- reportTableId, itemId, xaxis, yaxis, standby, valueList, valueTimeList, valueIndexList
|
|
|
- ));
|
|
|
+ Integer valueType = t.getValueType();
|
|
|
+ boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
|
|
|
+ String valueList = map.get(flage ? "valueList" : "orgValueList");
|
|
|
+ String valueTimeList = map.get("valueTimeList");
|
|
|
+ String valueIndexList = map.get("valueIndexList");
|
|
|
+ Integer itemId = t.getItemId();
|
|
|
+ Integer xaxis = t.getXaxis();
|
|
|
+ Integer yaxis = t.getYaxis();
|
|
|
+ String standby = t.getStandby();
|
|
|
+ //将数据项的信息放到集合中
|
|
|
+ reportTableItemList.add(new ReportTableItem(
|
|
|
+ reportTableId, itemId, xaxis, yaxis, standby, valueList, valueTimeList, valueIndexList
|
|
|
+ ));
|
|
|
+ });
|
|
|
+
|
|
|
+// if (Blank.isNotEmpty(tableTemplateItemList)) {
|
|
|
+// //根据模板配置的取值条件,获取表格数据项的数据,并存到报表的数据项信息里面
|
|
|
+// for (TableTemplateTableItem t : tableTemplateItemList) {
|
|
|
+// Integer itemGroupId = t.getItemGroupId();
|
|
|
+// if (Blank.isEmpty(itemGroupId)) {
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+// Integer remainder = itemGroupId % ConstantStr.SUB_TABLE_NUM;
|
|
|
+// Integer itemId = t.getItemId();
|
|
|
+// Integer xaxis = t.getXaxis();
|
|
|
+// Integer yaxis = t.getYaxis();
|
|
|
+// String standby = t.getStandby();
|
|
|
+// String itemName = t.getItemName();
|
|
|
+// Integer dataSourceId = t.getDataSourceId();
|
|
|
+// Integer valueTakingMode = t.getValueTakingMode();
|
|
|
+// Integer valueType = t.getValueType();
|
|
|
+// Integer bucketType = t.getBucketType();
|
|
|
+// Integer bucketValue = t.getBucketValue();
|
|
|
+// boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
|
|
|
+// Map<String, String> map = new HashMap<>();
|
|
|
+// if (bucketType.equals(ConstantStr.PERIOD_TIME_DAY) || bucketType.equals(ConstantStr.PERIOD_TIME_HOUR)
|
|
|
+// || bucketType.equals(ConstantStr.PERIOD_TIME_MINUTE) || bucketType.equals(ConstantStr.PERIOD_TIME_SECOND)) {
|
|
|
+// String startBelongTime;
|
|
|
+// String endBelongTime;
|
|
|
+// List<RawData> rawDataList = new ArrayList<>();
|
|
|
+// if (bucketType.equals(ConstantStr.PERIOD_TIME_DAY)) {
|
|
|
+// startBelongTime = DateUtil.dateChangeStrYmdhms(startTime).substring(0, ConstantStr.TIME_DAY_STR.length());
|
|
|
+// endBelongTime = DateUtil.dateChangeStrYmdhms(endTime).substring(0, ConstantStr.TIME_DAY_STR.length());
|
|
|
+// rawDataList = rawDataDao.getTableDataByDay(itemGroupId, remainder, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+// } else {
|
|
|
+// startBelongTime = DateUtil.dateChangeStrYmdhms(startTime).substring(0, ConstantStr.TIME_HOUR_STR.length());
|
|
|
+// endBelongTime = DateUtil.dateChangeStrYmdhms(endTime).substring(0, ConstantStr.TIME_HOUR_STR.length());
|
|
|
+// rawDataList = rawDataDao.getTableData(itemGroupId, remainder, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+// }
|
|
|
+// List<String> sqlCurrentYmdhList = rawDataDao.getCursorYmdh(itemGroupId, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+// if (Blank.isNotEmpty(sqlCurrentYmdhList)) {
|
|
|
+// for (String sqlCurrentYmdh : sqlCurrentYmdhList) {
|
|
|
+// List<CursorRawData> cursorRawDataList = rawDataDao.getTableCursorData(itemGroupId, dataSourceId, itemName, sqlCurrentYmdh);
|
|
|
+// rawDataList = ReportTask.genRawAddCursor(rawDataList, cursorRawDataList, itemGroupId, dataSourceId, sqlCurrentYmdh);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// if (Blank.isNotEmpty(rawDataList)) {
|
|
|
+// String dataType = rawDataList.get(0).getDataType();
|
|
|
+// if (dataType.equals("boolean")) {
|
|
|
+// map = ReportTask.genBoolean(rawDataList, startTime, endTime, valueTakingMode, bucketType, bucketValue);
|
|
|
+// } else {
|
|
|
+// try {
|
|
|
+// map = ReportTask.genBigDecimal(rawDataList, startTime, endTime, valueTakingMode, bucketType, bucketValue);
|
|
|
+// } catch (Exception e) {
|
|
|
+// map = ReportTask.genString(rawDataList, startTime, endTime, bucketType, bucketValue);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// } else {
|
|
|
+// throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前还未适配此种类型的取值模式");
|
|
|
+// }
|
|
|
+// String valueList = map.get(flage ? "valueList" : "orgValueList");
|
|
|
+// String valueTimeList = map.get("valueTimeList");
|
|
|
+// String valueIndexList = map.get("valueIndexList");
|
|
|
+// reportTableItemList.add(new ReportTableItem(
|
|
|
+// reportTableId, itemId, xaxis, yaxis, standby, valueList, valueTimeList, valueIndexList
|
|
|
+// ));
|
|
|
+// }
|
|
|
+// }
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
if (Blank.isNotEmpty(reportTableItemList)) {
|
|
|
reportTable.setReportTableItemList(reportTableItemList);
|
|
|
}
|
|
@@ -962,7 +1078,7 @@ public class ReportTableTask {
|
|
|
jsonObject.put("dataOrgValue", value);
|
|
|
if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)) {
|
|
|
jsonObject.put("dataValue", DataModel.valueReplace(dm, value.toString()));
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
if (javaType.toLowerCase().equals("boolean")) {
|
|
|
jsonObject.put("dataValue", value);
|
|
|
} else {
|
|
@@ -1003,81 +1119,198 @@ public class ReportTableTask {
|
|
|
if (Blank.isEmpty(tableTemplate)) {
|
|
|
log.info("报表模板不存在");
|
|
|
}
|
|
|
- //通过报表关联的模板,查询出模板对应的表格数据数据项信息
|
|
|
- List<TableTemplateTableItem> tableTemplateItemList = reportTableDao.getTttiByTemplateId(tableTemplateId);
|
|
|
//通过报表关联的模板,查询出模板对应的统计图,以及统计图数据项信息
|
|
|
List<TableTemplateChart> tableTemplateChartList = reportTableDao.getTtcByTemplateId(tableTemplateId);
|
|
|
//生成一张新的子报表,并添加相应的日志,以及用户组授权
|
|
|
- String id = IdUtil.createSnowflake(1, 1).nextId()+"";
|
|
|
- asyncAsyncTask.addHaveKeyChReport(reportTable,id,ConstantStr.AUTOMATIC_GENERATE_REPORT, null);
|
|
|
+ String id = IdUtil.createSnowflake(1, 1).nextId() + "";
|
|
|
+ asyncAsyncTask.addHaveKeyChReport(reportTable, id, ConstantStr.AUTOMATIC_GENERATE_REPORT, null);
|
|
|
//根据报表的cron和开始、结束时间,生成此次执行报表抓取数据的开始时间和结束时间
|
|
|
String cron = reportTable.getCron();
|
|
|
Date startTime = CronUtil.mappingAutoTime(cron, reportTable.getStartTime());
|
|
|
Date endTime = CronUtil.getTimeAfter(cron, startTime);
|
|
|
- //根据模板的取值条件获取相应的数据
|
|
|
- if (Blank.isNotEmpty(tableTemplateItemList)) {
|
|
|
- for (TableTemplateTableItem t : tableTemplateItemList) {
|
|
|
- Integer itemGroupId = t.getItemGroupId();
|
|
|
- if (Blank.isEmpty(itemGroupId)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+ //获取此报表管理的报表模板,所关联的表格数据项
|
|
|
+ List<ReportTableItem> reportTableItemList = new ArrayList<>();
|
|
|
+ //通过时段类型,数据组id,数据源id,对数据项进行分组
|
|
|
+ List<TableTemplateTableItem> tableTemplateItemGroupList = reportTableDao.getTttiByTemplateIdGroup(tableTemplateId);
|
|
|
+ if (Blank.isNotEmpty(tableTemplateItemGroupList)) {
|
|
|
+ for (TableTemplateTableItem ttti : tableTemplateItemGroupList) {
|
|
|
+ Integer itemGroupId = ttti.getItemGroupId();
|
|
|
+ Integer dataSourceId = ttti.getDataSourceId();
|
|
|
Integer remainder = itemGroupId % ConstantStr.SUB_TABLE_NUM;
|
|
|
- Integer itemId = t.getItemId();
|
|
|
- Integer xaxis = t.getXaxis();
|
|
|
- Integer yaxis = t.getYaxis();
|
|
|
- String standby = t.getStandby();
|
|
|
- String itemName = t.getItemName();
|
|
|
- Integer dataSourceId = t.getDataSourceId();
|
|
|
- Integer valueTakingMode = t.getValueTakingMode();
|
|
|
- Integer valueType = t.getValueType();
|
|
|
- Integer bucketType = t.getBucketType();
|
|
|
- Integer bucketValue = t.getBucketValue();
|
|
|
- boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
|
|
|
- Map<String, String> map = new HashMap<>();
|
|
|
+ Integer bucketType = ttti.getBucketType();
|
|
|
+ //查询每个分组下的报表模板数据项信息
|
|
|
+ List<TableTemplateTableItem> tableTemplateItemList = reportTableDao.getTttiByGroup(tableTemplateId, itemGroupId, dataSourceId, bucketType);
|
|
|
+ List<RawData> rawDataList = new ArrayList<>();
|
|
|
+ List<CursorRawData> cursorRawDataList = new ArrayList<>();
|
|
|
+ List<CursorRawData> sqlCurrentYmdhList = new ArrayList<>();
|
|
|
+ //获取所有数据项的数据
|
|
|
if (bucketType.equals(ConstantStr.PERIOD_TIME_DAY) || bucketType.equals(ConstantStr.PERIOD_TIME_HOUR)
|
|
|
|| bucketType.equals(ConstantStr.PERIOD_TIME_MINUTE) || bucketType.equals(ConstantStr.PERIOD_TIME_SECOND)) {
|
|
|
String startBelongTime;
|
|
|
String endBelongTime;
|
|
|
- List<RawData> rawDataList = new ArrayList<>();
|
|
|
+
|
|
|
+ //从历史表中,查出历史数据
|
|
|
if (bucketType.equals(ConstantStr.PERIOD_TIME_DAY)) {
|
|
|
startBelongTime = DateUtil.dateChangeStrYmdhms(startTime).substring(0, ConstantStr.TIME_DAY_STR.length());
|
|
|
endBelongTime = DateUtil.dateChangeStrYmdhms(endTime).substring(0, ConstantStr.TIME_DAY_STR.length());
|
|
|
- rawDataList = rawDataDao.getTableDataByDay(itemGroupId, remainder, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+// rawDataList = rawDataDao.getTableDataByDay(itemGroupId, remainder, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+ rawDataList = rawDataDao.getTableDataGroupByDay(itemGroupId, remainder, dataSourceId, tableTemplateItemList, startBelongTime, endBelongTime);
|
|
|
} else {
|
|
|
startBelongTime = DateUtil.dateChangeStrYmdhms(startTime).substring(0, ConstantStr.TIME_HOUR_STR.length());
|
|
|
endBelongTime = DateUtil.dateChangeStrYmdhms(endTime).substring(0, ConstantStr.TIME_HOUR_STR.length());
|
|
|
- rawDataList = rawDataDao.getTableData(itemGroupId, remainder, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+// rawDataList = rawDataDao.getTableData(itemGroupId, remainder, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+ rawDataList = rawDataDao.getTableDataGroup(itemGroupId, remainder, dataSourceId, tableTemplateItemList, startBelongTime, endBelongTime);
|
|
|
}
|
|
|
- List<String> sqlCurrentYmdhList = rawDataDao.getCursorYmdh(itemGroupId, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
- if (Blank.isNotEmpty(sqlCurrentYmdhList)) {
|
|
|
- for (String sqlCurrentYmdh : sqlCurrentYmdhList) {
|
|
|
- List<CursorRawData> cursorRawDataList = rawDataDao.getTableCursorData(itemGroupId, dataSourceId, itemName, sqlCurrentYmdh);
|
|
|
- rawDataList = ReportTask.genRawAddCursor(rawDataList, cursorRawDataList, itemGroupId, dataSourceId, sqlCurrentYmdh);
|
|
|
+ //从临时表中,查出所有临时数据
|
|
|
+ cursorRawDataList = rawDataDao.getTableCursorDataGroup(itemGroupId, dataSourceId, tableTemplateItemList);
|
|
|
+ //查询出所有数据时间归属
|
|
|
+ sqlCurrentYmdhList = rawDataDao.getCursorYmdhGroup(itemGroupId, dataSourceId, tableTemplateItemList, startBelongTime, endBelongTime);
|
|
|
+ } else {
|
|
|
+ throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前还未适配此种类型的取值模式");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<RawData> finalRawDataList = rawDataList;
|
|
|
+ List<CursorRawData> finalCursorRawDataList = cursorRawDataList;
|
|
|
+ List<CursorRawData> finalSqlCurrentYmdhList = sqlCurrentYmdhList;
|
|
|
+ tableTemplateItemList.forEach(t -> {
|
|
|
+ //循环得到每个数据项的历史数据和临时数据,归属时间
|
|
|
+ Integer itemGroupId1 = t.getItemGroupId();
|
|
|
+ Integer dataSourceId1 = t.getDataSourceId();
|
|
|
+ String itemReadName = t.getItemReadName();
|
|
|
+ List<RawData> currentRawDataList = new ArrayList<>();
|
|
|
+ List<CursorRawData> currentCursorRawDataList = new ArrayList<>();
|
|
|
+ List<String> currentSqlYmdhList = new ArrayList<>();
|
|
|
+ finalRawDataList.forEach(rawData -> {
|
|
|
+ //生成历史数据
|
|
|
+ if (rawData.getItemGroupId().equals(itemGroupId1)
|
|
|
+ && rawData.getDataSourceId().equals(dataSourceId1)
|
|
|
+ && rawData.getItemName().equals(itemReadName)) {
|
|
|
+ currentRawDataList.add(rawData);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ finalCursorRawDataList.forEach(currentRawData -> {
|
|
|
+ //生成临时数据
|
|
|
+ if (currentRawData.getItemGroupId().equals(itemGroupId1)
|
|
|
+ && currentRawData.getDataSourceId().equals(dataSourceId1)
|
|
|
+ && currentRawData.getItemName().equals(itemReadName)) {
|
|
|
+ currentCursorRawDataList.add(currentRawData);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ finalSqlCurrentYmdhList.forEach(currentRawData -> {
|
|
|
+ if (currentRawData.getItemGroupId().equals(itemGroupId1)
|
|
|
+ && currentRawData.getDataSourceId().equals(dataSourceId1)
|
|
|
+ && currentRawData.getItemName().equals(itemReadName)) {
|
|
|
+ currentSqlYmdhList.add(currentRawData.getValueBelongTime());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //根据历史数据和临时数据,计算出此数据项在报表中应该展示的数据,map形式返回
|
|
|
+// Map<String, String> map = ReportTask.genAutoData(currentRawDataList, currentCursorRawDataList,
|
|
|
+// startTime, endTime, t.getValueTakingMode(), t.getBucketType(), t.getBucketValue());
|
|
|
+ List<RawData> currentRawDataList1 = new ArrayList<>();
|
|
|
+ if (Blank.isNotEmpty(currentSqlYmdhList)) {
|
|
|
+ for (String sqlCurrentYmdh : currentSqlYmdhList) {
|
|
|
+ currentRawDataList1 = ReportTask.genRawAddCursor(currentRawDataList, currentCursorRawDataList, itemGroupId, dataSourceId, sqlCurrentYmdh);
|
|
|
}
|
|
|
}
|
|
|
- if (Blank.isNotEmpty(rawDataList)) {
|
|
|
- String dataType = rawDataList.get(0).getDataType();
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
+ Integer valueTakingMode = t.getValueTakingMode();
|
|
|
+ Integer bucketValue = t.getBucketValue();
|
|
|
+ if (Blank.isNotEmpty(currentRawDataList1)) {
|
|
|
+ String dataType = currentRawDataList1.get(0).getDataType();
|
|
|
if (dataType.equals("boolean")) {
|
|
|
- map = ReportTask.genBoolean(rawDataList, startTime, endTime, valueTakingMode, bucketType, bucketValue);
|
|
|
+ map = ReportTask.genBoolean(currentRawDataList1, startTime, endTime, valueTakingMode, bucketType, bucketValue);
|
|
|
} else {
|
|
|
try {
|
|
|
- map = ReportTask.genBigDecimal(rawDataList, startTime, endTime, valueTakingMode, bucketType, bucketValue);
|
|
|
+ map = ReportTask.genBigDecimal(currentRawDataList1, startTime, endTime, valueTakingMode, bucketType, bucketValue);
|
|
|
} catch (Exception e) {
|
|
|
- map = ReportTask.genString(rawDataList, startTime, endTime, bucketType, bucketValue);
|
|
|
+ map = ReportTask.genString(currentRawDataList1, startTime, endTime, bucketType, bucketValue);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- } else {
|
|
|
- throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前还未适配此种类型的取值模式");
|
|
|
- }
|
|
|
- String valueList = map.get(flage ? "valueList" : "orgValueList");
|
|
|
- String valueTimeList = map.get("valueTimeList");
|
|
|
- String valueIndexList = map.get("valueIndexList");
|
|
|
- reportTableDao.addReportTableItem(new ReportTableItem(
|
|
|
- id, itemId, valueType, xaxis, yaxis, standby, valueList, valueTimeList, valueIndexList
|
|
|
- ));
|
|
|
+ Integer valueType = t.getValueType();
|
|
|
+ boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
|
|
|
+ String valueList = map.get(flage ? "valueList" : "orgValueList");
|
|
|
+ String valueTimeList = map.get("valueTimeList");
|
|
|
+ String valueIndexList = map.get("valueIndexList");
|
|
|
+ Integer itemId = t.getItemId();
|
|
|
+ Integer xaxis = t.getXaxis();
|
|
|
+ Integer yaxis = t.getYaxis();
|
|
|
+ String standby = t.getStandby();
|
|
|
+ //将数据项的信息放到集合中
|
|
|
+ reportTableItemList.add(new ReportTableItem(
|
|
|
+ id, itemId, xaxis, yaxis, standby, valueList, valueTimeList, valueIndexList
|
|
|
+ ));
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
+ if (Blank.isNotEmpty(reportTableItemList)) {
|
|
|
+ reportTable.setReportTableItemList(reportTableItemList);
|
|
|
+ }
|
|
|
+
|
|
|
+ //根据模板的取值条件获取相应的数据
|
|
|
+// if (Blank.isNotEmpty(tableTemplateItemList)) {
|
|
|
+// for (TableTemplateTableItem t : tableTemplateItemList) {
|
|
|
+// Integer itemGroupId = t.getItemGroupId();
|
|
|
+// if (Blank.isEmpty(itemGroupId)) {
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+// Integer remainder = itemGroupId % ConstantStr.SUB_TABLE_NUM;
|
|
|
+// Integer itemId = t.getItemId();
|
|
|
+// Integer xaxis = t.getXaxis();
|
|
|
+// Integer yaxis = t.getYaxis();
|
|
|
+// String standby = t.getStandby();
|
|
|
+// String itemName = t.getItemName();
|
|
|
+// Integer dataSourceId = t.getDataSourceId();
|
|
|
+// Integer valueTakingMode = t.getValueTakingMode();
|
|
|
+// Integer valueType = t.getValueType();
|
|
|
+// Integer bucketType = t.getBucketType();
|
|
|
+// Integer bucketValue = t.getBucketValue();
|
|
|
+// boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
|
|
|
+// Map<String, String> map = new HashMap<>();
|
|
|
+// if (bucketType.equals(ConstantStr.PERIOD_TIME_DAY) || bucketType.equals(ConstantStr.PERIOD_TIME_HOUR)
|
|
|
+// || bucketType.equals(ConstantStr.PERIOD_TIME_MINUTE) || bucketType.equals(ConstantStr.PERIOD_TIME_SECOND)) {
|
|
|
+// String startBelongTime;
|
|
|
+// String endBelongTime;
|
|
|
+// List<RawData> rawDataList = new ArrayList<>();
|
|
|
+// if (bucketType.equals(ConstantStr.PERIOD_TIME_DAY)) {
|
|
|
+// startBelongTime = DateUtil.dateChangeStrYmdhms(startTime).substring(0, ConstantStr.TIME_DAY_STR.length());
|
|
|
+// endBelongTime = DateUtil.dateChangeStrYmdhms(endTime).substring(0, ConstantStr.TIME_DAY_STR.length());
|
|
|
+// rawDataList = rawDataDao.getTableDataByDay(itemGroupId, remainder, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+// } else {
|
|
|
+// startBelongTime = DateUtil.dateChangeStrYmdhms(startTime).substring(0, ConstantStr.TIME_HOUR_STR.length());
|
|
|
+// endBelongTime = DateUtil.dateChangeStrYmdhms(endTime).substring(0, ConstantStr.TIME_HOUR_STR.length());
|
|
|
+// rawDataList = rawDataDao.getTableData(itemGroupId, remainder, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+// }
|
|
|
+// List<String> sqlCurrentYmdhList = rawDataDao.getCursorYmdh(itemGroupId, dataSourceId, itemName, startBelongTime, endBelongTime);
|
|
|
+// if (Blank.isNotEmpty(sqlCurrentYmdhList)) {
|
|
|
+// for (String sqlCurrentYmdh : sqlCurrentYmdhList) {
|
|
|
+// List<CursorRawData> cursorRawDataList = rawDataDao.getTableCursorData(itemGroupId, dataSourceId, itemName, sqlCurrentYmdh);
|
|
|
+// rawDataList = ReportTask.genRawAddCursor(rawDataList, cursorRawDataList, itemGroupId, dataSourceId, sqlCurrentYmdh);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// if (Blank.isNotEmpty(rawDataList)) {
|
|
|
+// String dataType = rawDataList.get(0).getDataType();
|
|
|
+// if (dataType.equals("boolean")) {
|
|
|
+// map = ReportTask.genBoolean(rawDataList, startTime, endTime, valueTakingMode, bucketType, bucketValue);
|
|
|
+// } else {
|
|
|
+// try {
|
|
|
+// map = ReportTask.genBigDecimal(rawDataList, startTime, endTime, valueTakingMode, bucketType, bucketValue);
|
|
|
+// } catch (Exception e) {
|
|
|
+// map = ReportTask.genString(rawDataList, startTime, endTime, bucketType, bucketValue);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// } else {
|
|
|
+// throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前还未适配此种类型的取值模式");
|
|
|
+// }
|
|
|
+// String valueList = map.get(flage ? "valueList" : "orgValueList");
|
|
|
+// String valueTimeList = map.get("valueTimeList");
|
|
|
+// String valueIndexList = map.get("valueIndexList");
|
|
|
+// reportTableDao.addReportTableItem(new ReportTableItem(
|
|
|
+// id, itemId, valueType, xaxis, yaxis, standby, valueList, valueTimeList, valueIndexList
|
|
|
+// ));
|
|
|
+// }
|
|
|
+// }
|
|
|
if (Blank.isNotEmpty(tableTemplateChartList)) {
|
|
|
for (TableTemplateChart ttc : tableTemplateChartList) {
|
|
|
Integer valueTakingMode = ttc.getValueTakingMode();
|