新统计方式
This commit is contained in:
parent
7da7e82fbf
commit
cab1861edf
|
|
@ -24,11 +24,16 @@ import org.jeecg.common.vo.VOHisFormResult;
|
||||||
import org.jeecg.common.vo.VOHisResult;
|
import org.jeecg.common.vo.VOHisResult;
|
||||||
import org.jeecg.common.vo.params.StationMaintainPage;
|
import org.jeecg.common.vo.params.StationMaintainPage;
|
||||||
import org.jeecg.common.vo.statistic.DeploySummaryVo;
|
import org.jeecg.common.vo.statistic.DeploySummaryVo;
|
||||||
|
import org.jeecg.common.vo.statistic.ScreenIndexSummaryDetailVo;
|
||||||
|
import org.jeecg.common.vo.statistic.ScreenIndexSummaryDetailVo2;
|
||||||
|
import org.jeecg.common.vo.statistic.ScreenSummaryVo;
|
||||||
import org.jeecg.modules.appmana.service.*;
|
import org.jeecg.modules.appmana.service.*;
|
||||||
import org.jeecg.modules.appmana.service.impl.CommonServiceImpl;
|
import org.jeecg.modules.appmana.service.impl.CommonServiceImpl;
|
||||||
import org.jeecg.modules.appmana.service.impl.IotCommonP2ServiceImpl;
|
import org.jeecg.modules.appmana.service.impl.IotCommonP2ServiceImpl;
|
||||||
import org.jeecg.modules.appmana.service.impl.IotCommonP3ServiceImpl;
|
import org.jeecg.modules.appmana.service.impl.IotCommonP3ServiceImpl;
|
||||||
|
import org.jeecg.modules.appmana.service.impl.StaticticsServiceImpl;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
@ -63,6 +68,12 @@ public class BigScreenControllerP2 {
|
||||||
private ISurvGpsRecordService survGpsRecordService;
|
private ISurvGpsRecordService survGpsRecordService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISurvEnterpriseInfoService survEnterpriseInfoService;
|
private ISurvEnterpriseInfoService survEnterpriseInfoService;
|
||||||
|
@Autowired
|
||||||
|
@Lazy
|
||||||
|
private CommonServiceImpl iotTools;
|
||||||
|
@Autowired
|
||||||
|
private StaticticsServiceImpl staticticsService;
|
||||||
|
|
||||||
|
|
||||||
@ApiOperationSupport(order = 1)
|
@ApiOperationSupport(order = 1)
|
||||||
@ApiOperation(value = "01. 查询设备下各检测项的历史数据", notes = "")
|
@ApiOperation(value = "01. 查询设备下各检测项的历史数据", notes = "")
|
||||||
|
|
@ -222,4 +233,15 @@ public class BigScreenControllerP2 {
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/getIndexSummry2")
|
||||||
|
@ApiOperation("大屏首页统计2")
|
||||||
|
public Result<List<ScreenIndexSummaryDetailVo2>> getIndexSummry2 (@RequestBody ScreenSummaryVo screenSummaryVo){
|
||||||
|
String tenantId= iotTools.getTenantId(screenSummaryVo.getAuthId());
|
||||||
|
List<ScreenIndexSummaryDetailVo2> results = staticticsService.stationStatistic(screenSummaryVo);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return Result.ok(results);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -480,7 +480,7 @@ public class CommonServiceImpl {
|
||||||
Map<String, SurvItemInfo> itemInfo = new HashMap<>();
|
Map<String, SurvItemInfo> itemInfo = new HashMap<>();
|
||||||
List<SurvItemInfo> itemList = new ArrayList<>();
|
List<SurvItemInfo> itemList = new ArrayList<>();
|
||||||
List<String> timeList = new ArrayList<>();
|
List<String> timeList = new ArrayList<>();
|
||||||
Map<String,List<String>> dataMap = new HashMap<>();
|
LinkedHashMap<String,List<String>> dataMap = new LinkedHashMap<>();
|
||||||
|
|
||||||
if(StringUtils.isNotBlank(survSummaryDTO.getStationCode())){
|
if(StringUtils.isNotBlank(survSummaryDTO.getStationCode())){
|
||||||
//获取站点下的所有设备
|
//获取站点下的所有设备
|
||||||
|
|
@ -725,7 +725,7 @@ public class CommonServiceImpl {
|
||||||
deviceIdColumn, // 设备字段
|
deviceIdColumn, // 设备字段
|
||||||
deploy.getId(), // 设备ID
|
deploy.getId(), // 设备ID
|
||||||
dbFields, // 监测列
|
dbFields, // 监测列
|
||||||
3
|
12
|
||||||
);
|
);
|
||||||
}else{
|
}else{
|
||||||
result = flexibleMonitorService.queryMonthlyStatsByRange(
|
result = flexibleMonitorService.queryMonthlyStatsByRange(
|
||||||
|
|
@ -745,7 +745,7 @@ public class CommonServiceImpl {
|
||||||
|
|
||||||
|
|
||||||
List<String> timeList = new ArrayList<>();
|
List<String> timeList = new ArrayList<>();
|
||||||
Map<String,List<String>> dataMap = new HashMap<>();
|
LinkedHashMap<String,List<String>> dataMap = new LinkedHashMap<>();
|
||||||
if(result!=null && !result.isEmpty()){
|
if(result!=null && !result.isEmpty()){
|
||||||
|
|
||||||
for (Map<String, Object> item : result) {
|
for (Map<String, Object> item : result) {
|
||||||
|
|
@ -764,7 +764,7 @@ public class CommonServiceImpl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
timeList = DateRangeUtil.convertDateFormatStream(timeList,"yyyy-MM-dd HH:mm:ss",timeFormat);
|
timeList = DateRangeUtil.convertDateTimeFormatStream(timeList,"yyyy-MM-dd HH:mm:ss",timeFormat);
|
||||||
survSummaryVo.setTimeList(timeList);
|
survSummaryVo.setTimeList(timeList);
|
||||||
survSummaryVo.setDataMap(dataMap);
|
survSummaryVo.setDataMap(dataMap);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,314 @@
|
||||||
|
package org.jeecg.modules.appmana.service.impl;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.jeecg.common.config.TenantContext;
|
||||||
|
import org.jeecg.common.constant.IotConstants;
|
||||||
|
import org.jeecg.common.constant.PollutionConstants;
|
||||||
|
import org.jeecg.common.constant.StatisticConstants;
|
||||||
|
import org.jeecg.common.entity.ScEquZhibiao;
|
||||||
|
import org.jeecg.common.entity.SurvDeviceDeploy;
|
||||||
|
import org.jeecg.common.entity.SurvStationInfo;
|
||||||
|
import org.jeecg.common.tenant.TenantContextHolder;
|
||||||
|
import org.jeecg.common.util.DateParseUtils;
|
||||||
|
import org.jeecg.common.util.DateRangeUtil;
|
||||||
|
import org.jeecg.common.util.DateTimeRangeUtil;
|
||||||
|
import org.jeecg.common.util.NamingConverter;
|
||||||
|
import org.jeecg.common.vo.statistic.ScreenIndexSummaryDetailVo;
|
||||||
|
import org.jeecg.common.vo.statistic.ScreenIndexSummaryDetailVo2;
|
||||||
|
import org.jeecg.common.vo.statistic.ScreenSummaryVo;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
public class StaticticsServiceImpl {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Lazy
|
||||||
|
private SurvStationInfoServiceImpl survStationInfoService;
|
||||||
|
@Autowired
|
||||||
|
@Lazy
|
||||||
|
private ScEquZhibiaoServiceImpl zhibiaoService;
|
||||||
|
@Autowired
|
||||||
|
@Lazy
|
||||||
|
private FlexibleMonitorServiceImpl flexibleMonitorService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 站点监测数据综合统计
|
||||||
|
*/
|
||||||
|
public List<ScreenIndexSummaryDetailVo2> stationStatistic(ScreenSummaryVo screenSummaryVo){
|
||||||
|
List<ScreenIndexSummaryDetailVo2> results = new ArrayList<>();
|
||||||
|
//step1 根据查询模式 和时间段 确定参数组装
|
||||||
|
if(StringUtils.isBlank(screenSummaryVo.getSummrayMode())){//默认小时数据
|
||||||
|
screenSummaryVo.setSummrayMode(IotConstants.day_hours);
|
||||||
|
}
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
LocalDateTime startDate = null;
|
||||||
|
LocalDateTime endDate = null;
|
||||||
|
boolean isNow = true;//是否查询本日、本月、本年数据,默认为true,传入时间时为false
|
||||||
|
String timeFormat = "";//时间格式
|
||||||
|
|
||||||
|
String summaryMode= screenSummaryVo.getSummrayMode();
|
||||||
|
String startTime = screenSummaryVo.getStartTime();
|
||||||
|
String endTime = screenSummaryVo.getEndTime();
|
||||||
|
|
||||||
|
if(IotConstants.day_hours.equals(summaryMode)){
|
||||||
|
timeFormat = "d日H时";
|
||||||
|
if(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)){
|
||||||
|
LocalDate localDate = LocalDate.parse(startTime,DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||||
|
if(!now.toLocalDate().isEqual(localDate)){//查询的时间不是当前日期
|
||||||
|
isNow = false;
|
||||||
|
startDate = DateParseUtils.parseToLocalDateTime(startTime+" 00:00:00","yyyy-MM-dd HH:mm:ss");
|
||||||
|
endDate = DateParseUtils.parseToLocalDateTime(endTime+" 23:59:59","yyyy-MM-dd HH:mm:ss").withNano(999999000);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
startDate = now.withHour(0).withMinute(0).withSecond(0);
|
||||||
|
endDate = now.withHour(23).withMinute(59).withSecond(59).withNano(999999000);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(IotConstants.month_days.equals(summaryMode)){
|
||||||
|
timeFormat = "M月d日";
|
||||||
|
if(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
|
||||||
|
LocalDate localDate = LocalDate.parse(startTime + "-01", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||||
|
if (!(now.getYear() == localDate.getYear() && now.getMonthValue() == localDate.getMonthValue())) {//查询的时间不是当前日期
|
||||||
|
isNow = false;
|
||||||
|
startDate = DateParseUtils.parseToLocalDateTime(startTime + "-01 00:00:00", "yyyy-MM-dd HH:mm:ss");
|
||||||
|
endDate = DateParseUtils.parseToLocalDateTime(endTime + "-01 23:59:59", "yyyy-MM-dd HH:mm:ss");
|
||||||
|
endDate = DateTimeRangeUtil.getMonthEnd(endDate).withNano(999999000);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
startDate = now.withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0);
|
||||||
|
endDate = DateTimeRangeUtil.getMonthEnd(now).withNano(999999000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(IotConstants.year_months.equals(summaryMode)){
|
||||||
|
timeFormat = "yy年M月";
|
||||||
|
if(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
|
||||||
|
LocalDate localDate = LocalDate.parse(startTime + "-01-01", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||||
|
if (!(now.getYear() == localDate.getYear())) {//查询的时间不是当前日期
|
||||||
|
isNow = false;
|
||||||
|
startDate = DateParseUtils.parseToLocalDateTime(startTime + "-01-01 00:00:00", "yyyy-MM-dd HH:mm:ss");
|
||||||
|
endDate = DateParseUtils.parseToLocalDateTime(endTime + "-12-31 23:59:59", "yyyy-MM-dd HH:mm:ss");
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
startDate = now.withMonth(1).withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0);
|
||||||
|
endDate = now.withMonth(12).withDayOfMonth(31).withHour(23).withMinute(59).withSecond(59).withNano(999999000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//step2 查询站点和设备
|
||||||
|
List<SurvStationInfo> stationList = survStationInfoService.getAllStationAndDevice(screenSummaryVo.getStationCode(),"","token");
|
||||||
|
|
||||||
|
//step3 统计站点数据
|
||||||
|
for(SurvStationInfo stationInfo : stationList){
|
||||||
|
ScreenIndexSummaryDetailVo2 summaryDetailVo = singleStationStatistic(stationInfo, isNow, startDate, endDate, summaryMode,timeFormat);
|
||||||
|
results.add(summaryDetailVo);
|
||||||
|
}
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ScreenIndexSummaryDetailVo2 singleStationStatistic(SurvStationInfo stationInfo, boolean isNow, LocalDateTime startDate, LocalDateTime endDate, String summaryMode,String timeFormat){
|
||||||
|
ScreenIndexSummaryDetailVo2 summaryDetailVo = new ScreenIndexSummaryDetailVo2();
|
||||||
|
if(!stationInfo.getDeviceList().isEmpty()) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//step1: 查询指标
|
||||||
|
List<String> depIds = stationInfo.getDeviceList().stream().map(SurvDeviceDeploy::getId).collect(Collectors.toList());
|
||||||
|
List<ScEquZhibiao> allZhibiao = zhibiaoService.getAllChemical(depIds);
|
||||||
|
if(!allZhibiao.isEmpty()){
|
||||||
|
Map<String,List<ScEquZhibiao>> allZhibiaoMap = allZhibiao.stream().collect(Collectors.groupingBy(ScEquZhibiao::getEquId));
|
||||||
|
LinkedHashMap<String,List<String>> dataMap = new LinkedHashMap<>();//数据汇总,所有设备的指标汇总到此map
|
||||||
|
for (SurvDeviceDeploy deploy : stationInfo.getDeviceList()) {
|
||||||
|
if ("1004".equals(TenantContext.getTenant()) && PollutionConstants.STINK.equals(deploy.getDeployType())) {//河津不统计恶臭设备
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//step1: 遍历设备,根据类型使用不同的参数
|
||||||
|
String tableName = "";
|
||||||
|
String timeColumn = "";
|
||||||
|
String deviceIdColumn = "";
|
||||||
|
|
||||||
|
switch (deploy.getDeployType()) {
|
||||||
|
// case PollutionConstants.SOIL_SURV:
|
||||||
|
case PollutionConstants.WATER_QULITY:
|
||||||
|
tableName = "surv_hisdata_soil";
|
||||||
|
timeColumn = "DATA_DATE_TIME";
|
||||||
|
deviceIdColumn = "DEPLOY_ID";
|
||||||
|
break;
|
||||||
|
// case PollutionConstants.AIR_SURV:
|
||||||
|
// tableName = "surv_hisdata_air";
|
||||||
|
// timeColumn = "DATA_DATE_TIME";
|
||||||
|
// deviceIdColumn = "DEPLOY_ID";
|
||||||
|
// break;
|
||||||
|
case PollutionConstants.STINK:
|
||||||
|
tableName = "surv_hisdata_vocs";
|
||||||
|
timeColumn = "DATA_DATE_TIME";
|
||||||
|
deviceIdColumn = "DEPLOY_ID";
|
||||||
|
break;
|
||||||
|
case PollutionConstants.WATER_LIVE:
|
||||||
|
tableName = "surv_hisdata_livestockwater";
|
||||||
|
timeColumn = "DATA_DATE_TIME";
|
||||||
|
deviceIdColumn = "DEVICE_ID";
|
||||||
|
break;
|
||||||
|
case PollutionConstants.WATER_ORIENT:
|
||||||
|
tableName = "surv_hisdata_orientwater";
|
||||||
|
timeColumn = "DATA_DATE_TIME";
|
||||||
|
deviceIdColumn = "DEVICE_ID";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(StringUtils.isBlank(tableName)){//跳过不统计的设备
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//当前设备的指标
|
||||||
|
List<ScEquZhibiao> zhibiaoList = allZhibiaoMap.get(deploy.getId());
|
||||||
|
|
||||||
|
//step2: 查询指标
|
||||||
|
Map<String,ScEquZhibiao> zhibiaoMap = new HashMap<>();
|
||||||
|
List<String> zhibiaoKeys = new ArrayList<>();
|
||||||
|
|
||||||
|
if (zhibiaoList!=null && !zhibiaoList.isEmpty()){
|
||||||
|
zhibiaoList.forEach(zhibiao ->{
|
||||||
|
zhibiaoMap.put(zhibiao.getEntityField(),zhibiao);
|
||||||
|
zhibiaoKeys.add(zhibiao.getEntityField());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
List<String> dbFields = NamingConverter.camelsToDbFields(zhibiaoKeys);
|
||||||
|
|
||||||
|
if(dbFields==null || dbFields.isEmpty()){//跳过未配置的设备
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Map<String, Object>> result = new ArrayList<>();
|
||||||
|
if (IotConstants.day_hours.equals(summaryMode)) {
|
||||||
|
if(isNow){
|
||||||
|
result = flexibleMonitorService.queryHourlyStats(
|
||||||
|
tableName, // 表名
|
||||||
|
timeColumn, // 时间字段
|
||||||
|
deviceIdColumn, // 设备字段
|
||||||
|
deploy.getId(), // 设备ID
|
||||||
|
dbFields, // 监测列
|
||||||
|
24
|
||||||
|
);
|
||||||
|
}else{
|
||||||
|
result = flexibleMonitorService.queryHourlyStatsByRange(
|
||||||
|
tableName, // 表名
|
||||||
|
timeColumn, // 时间字段
|
||||||
|
deviceIdColumn, // 设备字段
|
||||||
|
deploy.getId(), // 设备ID
|
||||||
|
dbFields, // 监测列
|
||||||
|
startDate,
|
||||||
|
endDate
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (IotConstants.month_days.equals(summaryMode)) {
|
||||||
|
|
||||||
|
if(isNow){
|
||||||
|
result = flexibleMonitorService.queryDailyStats(
|
||||||
|
tableName, // 表名
|
||||||
|
timeColumn, // 时间字段
|
||||||
|
deviceIdColumn, // 设备字段
|
||||||
|
deploy.getId(), // 设备ID
|
||||||
|
dbFields, // 监测列
|
||||||
|
30
|
||||||
|
);
|
||||||
|
}else{
|
||||||
|
result = flexibleMonitorService.queryDailyStatsByRange(
|
||||||
|
tableName, // 表名
|
||||||
|
timeColumn, // 时间字段
|
||||||
|
deviceIdColumn, // 设备字段
|
||||||
|
deploy.getId(), // 设备ID
|
||||||
|
dbFields, // 监测列
|
||||||
|
startDate,
|
||||||
|
endDate
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (IotConstants.year_months.equals(summaryMode)) {
|
||||||
|
|
||||||
|
if(isNow){
|
||||||
|
result = flexibleMonitorService.queryMonthlyStats(
|
||||||
|
tableName, // 表名
|
||||||
|
timeColumn, // 时间字段
|
||||||
|
deviceIdColumn, // 设备字段
|
||||||
|
deploy.getId(), // 设备ID
|
||||||
|
dbFields, // 监测列
|
||||||
|
12
|
||||||
|
);
|
||||||
|
}else{
|
||||||
|
result = flexibleMonitorService.queryMonthlyStatsByRange(
|
||||||
|
tableName, // 表名
|
||||||
|
timeColumn, // 时间字段
|
||||||
|
deviceIdColumn, // 设备字段
|
||||||
|
deploy.getId(), // 设备ID
|
||||||
|
dbFields, // 监测列
|
||||||
|
startDate,
|
||||||
|
endDate
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
List<String> timeList = new ArrayList<>();
|
||||||
|
|
||||||
|
if(result!=null && !result.isEmpty()){
|
||||||
|
|
||||||
|
for (Map<String, Object> item : result) {
|
||||||
|
String timePoint = item.get(StatisticConstants.RESULT_TIME_COLUMN).toString();
|
||||||
|
timeList.add(timePoint);
|
||||||
|
for (String db : dbFields) {
|
||||||
|
String dbKey = db+StatisticConstants.RESULT_VALUE_AVG;
|
||||||
|
String value = item.get(dbKey).toString();
|
||||||
|
String zhibiaoKey = NamingConverter.dbFieldToCamel(dbKey.replace(StatisticConstants.RESULT_VALUE_AVG,""));
|
||||||
|
List<String> zhibiaoData = dataMap.get(zhibiaoKey);
|
||||||
|
if(zhibiaoData==null){
|
||||||
|
zhibiaoData = new ArrayList<>();
|
||||||
|
}
|
||||||
|
//保留4位小数
|
||||||
|
BigDecimal decimal = new BigDecimal(value);
|
||||||
|
value = decimal.setScale(4, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString();
|
||||||
|
zhibiaoData.add(value);
|
||||||
|
dataMap.put(zhibiaoKey,zhibiaoData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timeList = DateRangeUtil.convertDateTimeFormatStream(timeList,"yyyy-MM-dd HH:mm:ss",timeFormat);
|
||||||
|
|
||||||
|
summaryDetailVo.setDateStr(timeList);
|
||||||
|
summaryDetailVo.setDatas(dataMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
//设置站名等信息
|
||||||
|
summaryDetailVo.setGroupId(stationInfo.getGroupId());
|
||||||
|
summaryDetailVo.setGroupName(stationInfo.getGroupName());
|
||||||
|
summaryDetailVo.setStationName(stationInfo.getStationName());
|
||||||
|
summaryDetailVo.setStationShortName(stationInfo.getStationShortName());
|
||||||
|
summaryDetailVo.setStationCode(stationInfo.getStationCode());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return summaryDetailVo;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -489,6 +489,36 @@ public class DateRangeUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量转换日期字符串格式(使用 Stream 流式处理)
|
||||||
|
* @param dateList 日期字符串列表
|
||||||
|
* @param sourcePattern 源日期格式,如 "yyyy-MM-dd"
|
||||||
|
* @param targetPattern 目标日期格式,如 "yyyy/MM/dd"
|
||||||
|
* @return 转换后的日期字符串列表,保持原有顺序
|
||||||
|
*/
|
||||||
|
public static List<String> convertDateTimeFormatStream(List<String> dateList, String sourcePattern, String targetPattern) {
|
||||||
|
if (dateList == null || dateList.isEmpty() || sourcePattern == null || targetPattern == null) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
DateTimeFormatter sourceFormatter = DateTimeFormatter.ofPattern(sourcePattern);
|
||||||
|
DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern(targetPattern);
|
||||||
|
|
||||||
|
return dateList.stream()
|
||||||
|
.map(dateStr -> {
|
||||||
|
try {
|
||||||
|
LocalDateTime date = LocalDateTime.parse(dateStr, sourceFormatter);
|
||||||
|
return date.format(targetFormatter);
|
||||||
|
} catch (DateTimeParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
System.err.println("日期格式转换失败: " + dateStr + ", 格式: " + sourcePattern);
|
||||||
|
return dateStr;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ==================== 使用示例 ====================
|
// ==================== 使用示例 ====================
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
package org.jeecg.common.vo.statistic;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ScreenIndexSummaryDetailVo2 {
|
||||||
|
@JSONField(name = "datas")
|
||||||
|
private LinkedHashMap<String, List<String>> datas;
|
||||||
|
@JSONField(name = "dateStr")
|
||||||
|
private List<String> dateStr;
|
||||||
|
@JSONField(name = "groupId")
|
||||||
|
private String groupId;
|
||||||
|
@JSONField(name = "groupName")
|
||||||
|
private String groupName;
|
||||||
|
@JSONField(name = "stationName")
|
||||||
|
private String stationName;
|
||||||
|
@JSONField(name = "stationShortName")
|
||||||
|
private String stationShortName;
|
||||||
|
@JSONField(name = "stationCode")
|
||||||
|
private String stationCode;
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.jeecg.common.vo.iot.common.SurvItemInfo;
|
import org.jeecg.common.vo.iot.common.SurvItemInfo;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
@ -20,5 +21,5 @@ public class SurvSummaryVo {
|
||||||
@ApiModelProperty("X轴数据")
|
@ApiModelProperty("X轴数据")
|
||||||
private List<String> timeList;
|
private List<String> timeList;
|
||||||
@ApiModelProperty("Y轴数据")
|
@ApiModelProperty("Y轴数据")
|
||||||
private Map<String,List<String>> dataMap;
|
private LinkedHashMap<String,List<String>> dataMap;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue