|
@@ -19,10 +19,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
|
|
|
@Service
|
|
|
@Transactional
|
|
@@ -115,82 +112,95 @@ public class ChartServiceImpl implements ChartService {
|
|
|
pattern = ConstantStr.TIME_SECOND_STR;
|
|
|
}
|
|
|
int timeLength = DateUtil.timeDifference(startTime, endTime, pattern, bucketValue);
|
|
|
- for (int i = 0; i < chartItemList.size(); i++) {
|
|
|
- ChartItem chartItem = chartItemList.get(i);
|
|
|
- Integer itemId = chartItem.getItemId();
|
|
|
- Item item = itemGroupDao.getItemById(itemId);
|
|
|
- Integer itemGroupId = item.getItemGroupId();
|
|
|
- Integer remainder = itemGroupId % ConstantStr.SUB_TABLE_NUM;
|
|
|
- ItemGroup itemGroup = itemGroupDao.getItemGroupById(itemGroupId);
|
|
|
- Integer dataSourceId = itemGroup.getDataSourceId();
|
|
|
- String itemName = item.getItemName();
|
|
|
- if (Blank.isEmpty(item)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- long startTimeTime = startTime.getTime();
|
|
|
- long endTimeTime;
|
|
|
- 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);
|
|
|
+ ChartItem chartItem0 = chartItemList.get(0);
|
|
|
+ Integer itemId = chartItem0.getItemId();
|
|
|
+ Item item = itemGroupDao.getItemById(itemId);
|
|
|
+ Integer itemGroupId = item.getItemGroupId();
|
|
|
+ Integer remainder = itemGroupId % ConstantStr.SUB_TABLE_NUM;
|
|
|
+ ItemGroup itemGroup = itemGroupDao.getItemGroupById(itemGroupId);
|
|
|
+ Integer dataSourceId = itemGroup.getDataSourceId();
|
|
|
+
|
|
|
+ String startBelongTime;
|
|
|
+ String endBelongTime;
|
|
|
+ List<RawData> rawDataList = new ArrayList<>();
|
|
|
+ List<CursorRawData> cursorRawDataList = 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.getTableChartDataByDay(itemGroupId, remainder, dataSourceId, chartItemList, startBelongTime, endBelongTime);
|
|
|
+ cursorRawDataList = rawDataDao.getTableChartCursorDataByDay(itemGroupId, dataSourceId, chartItemList, 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.getTableChartData(itemGroupId, remainder, dataSourceId, chartItemList, startBelongTime, endBelongTime);
|
|
|
+ cursorRawDataList = rawDataDao.getTableChartCursorData(itemGroupId, dataSourceId, chartItemList, startBelongTime, endBelongTime);
|
|
|
+ }
|
|
|
+ for (ChartItem chartItem : chartItemList) {
|
|
|
+ Integer itemGroupId1 = chartItem.getItemGroupId();
|
|
|
+ String itemReadName = chartItem.getItemReadName();
|
|
|
+ List<RawData> currentRawDataList = new ArrayList<>();
|
|
|
+ List<CursorRawData> currentCursorRawDataList = new ArrayList<>();
|
|
|
+ for (int i = 0; i < rawDataList.size(); i++) {
|
|
|
+ RawData rawData = rawDataList.get(i);
|
|
|
+ if (rawData.getItemGroupId().equals(itemGroupId1)
|
|
|
+ && rawData.getItemName().equals(itemReadName)) {
|
|
|
+ currentRawDataList.add(rawData);
|
|
|
+ rawDataList.remove(i);
|
|
|
+ i--;
|
|
|
+ }
|
|
|
}
|
|
|
- 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);
|
|
|
+ for (int i = 0; i < cursorRawDataList.size(); i++) {
|
|
|
+ CursorRawData cursorRawData = cursorRawDataList.get(i);
|
|
|
+ //生成临时数据
|
|
|
+ if (cursorRawData.getItemGroupId().equals(itemGroupId1)
|
|
|
+ && cursorRawData.getItemName().equals(itemReadName)) {
|
|
|
+ currentCursorRawDataList.add(cursorRawData);
|
|
|
+ cursorRawDataList.remove(i);
|
|
|
+ i--;
|
|
|
}
|
|
|
}
|
|
|
+ //将所有数据组合成一个List<CursorRawData>
|
|
|
+ currentCursorRawDataList.addAll(ReportTask.genRawChangeCursor(currentRawDataList));
|
|
|
+ //对currentCursorRawDataList进行排序,使用dataValueTime排序
|
|
|
+ Collections.sort(currentCursorRawDataList, new Comparator<CursorRawData>() {
|
|
|
+ @Override
|
|
|
+ public int compare(CursorRawData o1, CursorRawData o2) {
|
|
|
+ return o1.getDataValueTime().compareTo(o2.getDataValueTime());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ long startTimeTime = startTime.getTime();
|
|
|
+ long endTimeTime;
|
|
|
//如果查询出来有数据
|
|
|
- if (Blank.isNotEmpty(rawDataList)) {
|
|
|
- String dataType = rawDataList.get(0).getDataType();
|
|
|
+ if (Blank.isNotEmpty(currentCursorRawDataList)) {
|
|
|
+ String dataType = currentCursorRawDataList.get(0).getDataType();
|
|
|
if (!dataType.toLowerCase().equals("boolean")) {
|
|
|
try {
|
|
|
- List<BigDecimal> orgRawList = new ArrayList<>();
|
|
|
- List<BigDecimal> rawList = new ArrayList<>();
|
|
|
- List<String> rawTimeList = new ArrayList<>();
|
|
|
- for (int j = 0; j < rawDataList.size(); j++) {
|
|
|
- RawData rawData = rawDataList.get(j);
|
|
|
- orgRawList.addAll(new ArrayList<>(Arrays.asList(JSON.parseObject(rawData.getOrgDataValue(), BigDecimal[].class))));
|
|
|
- rawList.addAll(new ArrayList<>(Arrays.asList(JSON.parseObject(rawData.getDataValue(), BigDecimal[].class))));
|
|
|
- rawTimeList.addAll(new ArrayList<>(Arrays.asList(JSON.parseObject(rawData.getDataValueTime(), String[].class))));
|
|
|
- }
|
|
|
List<BigDecimal> orgValueList = new ArrayList<>();
|
|
|
List<BigDecimal> valueList = new ArrayList<>();
|
|
|
List<String> valueTimeList = new ArrayList<>();
|
|
|
List<Long> valueIndexList = new ArrayList<>();
|
|
|
- for (int j = 0; j < timeLength; j++) {
|
|
|
+ for (int i = 0; i < timeLength; i++) {
|
|
|
List<BigDecimal> orgList = new ArrayList<>();
|
|
|
List<BigDecimal> list = new ArrayList<>();
|
|
|
- if (j != timeLength - 1) {
|
|
|
+ if (i != timeLength - 1) {
|
|
|
endTimeTime = DateUtil.addTimeStamp(startTimeTime, pattern, bucketValue);
|
|
|
} else {
|
|
|
endTimeTime = endTime.getTime();
|
|
|
}
|
|
|
- for (int k = 0; k < rawTimeList.size(); k++) {
|
|
|
- long time = DateUtil.strYmdhmssChangeDate(rawTimeList.get(k)).getTime();
|
|
|
+ for (int j = 0; j < currentCursorRawDataList.size(); j++) {
|
|
|
+ CursorRawData cursorRawData = currentCursorRawDataList.get(j);
|
|
|
+ long time = DateUtil.strYmdhmssChangeDate(cursorRawData.getDataValueTime()).getTime();
|
|
|
if (startTimeTime > time) {
|
|
|
- rawTimeList.remove(k);
|
|
|
- orgRawList.remove(k);
|
|
|
- rawList.remove(k);
|
|
|
- k--;
|
|
|
+
|
|
|
continue;
|
|
|
}
|
|
|
if (startTimeTime <= time && time < endTimeTime) {
|
|
|
- orgList.add(orgRawList.get(k));
|
|
|
- list.add(rawList.get(k));
|
|
|
- rawTimeList.remove(k);
|
|
|
- orgRawList.remove(k);
|
|
|
- rawList.remove(k);
|
|
|
- k--;
|
|
|
+ orgList.add(JSON.parseObject(cursorRawData.getOrgDataValue(), BigDecimal.class));
|
|
|
+ list.add(JSON.parseObject(cursorRawData.getDataValue(), BigDecimal.class));
|
|
|
}
|
|
|
+ currentCursorRawDataList.remove(j);
|
|
|
+ j--;
|
|
|
if (time >= endTimeTime) {
|
|
|
break;
|
|
|
}
|
|
@@ -198,7 +208,7 @@ public class ChartServiceImpl implements ChartService {
|
|
|
orgValueList.add(ReportTask.genBigDecimalValue(orgList, valueTakingMode));
|
|
|
valueList.add(ReportTask.genBigDecimalValue(list, valueTakingMode));
|
|
|
valueTimeList.add(DateUtil.dateChangeStrYmdhmss(new Date(startTimeTime)));
|
|
|
- valueIndexList.add(((long) j));
|
|
|
+ valueIndexList.add(((long) i));
|
|
|
startTimeTime = endTimeTime;
|
|
|
orgList = new ArrayList<>();
|
|
|
list = new ArrayList<>();
|
|
@@ -216,10 +226,10 @@ public class ChartServiceImpl implements ChartService {
|
|
|
List<BigDecimal> valueList = new ArrayList<>();
|
|
|
List<String> valueTimeList = new ArrayList<>();
|
|
|
List<Long> valueIndexList = new ArrayList<>();
|
|
|
- for (int j = 0; j < timeLength; j++) {
|
|
|
+ for (int i = 0; i < timeLength; i++) {
|
|
|
List<BigDecimal> orgList = new ArrayList<>();
|
|
|
List<BigDecimal> list = new ArrayList<>();
|
|
|
- if (j != timeLength - 1) {
|
|
|
+ if (i != timeLength - 1) {
|
|
|
endTimeTime = DateUtil.addTimeStamp(startTimeTime, pattern, bucketValue);
|
|
|
} else {
|
|
|
endTimeTime = endTime.getTime();
|
|
@@ -227,7 +237,7 @@ public class ChartServiceImpl implements ChartService {
|
|
|
orgValueList.add(ReportTask.genBigDecimalValue(orgList, valueTakingMode));
|
|
|
valueList.add(ReportTask.genBigDecimalValue(list, valueTakingMode));
|
|
|
valueTimeList.add(DateUtil.dateChangeStrYmdhmss(new Date(startTimeTime)));
|
|
|
- valueIndexList.add(((long) j));
|
|
|
+ valueIndexList.add(((long) i));
|
|
|
startTimeTime = endTimeTime;
|
|
|
orgList = new ArrayList<>();
|
|
|
list = new ArrayList<>();
|