增加按设备过滤统计项
This commit is contained in:
parent
deb3443da2
commit
f742eb6cca
|
|
@ -8,14 +8,12 @@ import org.apache.commons.lang3.StringUtils;
|
||||||
import org.jeecg.common.constant.IotConstants;
|
import org.jeecg.common.constant.IotConstants;
|
||||||
import org.jeecg.common.constant.PollutionConstants;
|
import org.jeecg.common.constant.PollutionConstants;
|
||||||
import org.jeecg.common.constant.enums.PollutionEnum;
|
import org.jeecg.common.constant.enums.PollutionEnum;
|
||||||
|
import org.jeecg.common.constant.enums.ScreenIndexSummaryEnum;
|
||||||
import org.jeecg.common.entity.ScEquZhibiao;
|
import org.jeecg.common.entity.ScEquZhibiao;
|
||||||
import org.jeecg.common.entity.SurvConfig;
|
import org.jeecg.common.entity.SurvConfig;
|
||||||
import org.jeecg.common.entity.SurvDeviceDeploy;
|
import org.jeecg.common.entity.SurvDeviceDeploy;
|
||||||
import org.jeecg.common.entity.SurvHisdataVocs;
|
import org.jeecg.common.entity.SurvHisdataVocs;
|
||||||
import org.jeecg.common.iot.common.VOCommonSurvIntegrateParam;
|
import org.jeecg.common.iot.common.*;
|
||||||
import org.jeecg.common.iot.common.VOSurvElement;
|
|
||||||
import org.jeecg.common.iot.common.VOSurvIntegrateResult;
|
|
||||||
import org.jeecg.common.iot.common.VOSurvIntegrateStinkDetail;
|
|
||||||
import org.jeecg.common.util.DateTimeRangeUtils;
|
import org.jeecg.common.util.DateTimeRangeUtils;
|
||||||
import org.jeecg.common.vo.CommonDataTrans;
|
import org.jeecg.common.vo.CommonDataTrans;
|
||||||
import org.jeecg.common.vo.statistic.ScreenIndexSummaryDetailVo;
|
import org.jeecg.common.vo.statistic.ScreenIndexSummaryDetailVo;
|
||||||
|
|
@ -29,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
@ -37,6 +36,7 @@ import java.time.LocalTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.time.temporal.TemporalAdjusters;
|
import java.time.temporal.TemporalAdjusters;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 恶臭实时历史数据
|
* @Description: 恶臭实时历史数据
|
||||||
|
|
@ -53,19 +53,223 @@ public class SurvHisdataVocsServiceImpl extends ServiceImpl<SurvHisdataVocsMappe
|
||||||
@Autowired
|
@Autowired
|
||||||
@Lazy
|
@Lazy
|
||||||
private SurvConfigServiceImpl configService;
|
private SurvConfigServiceImpl configService;
|
||||||
|
@Resource
|
||||||
|
@Lazy
|
||||||
|
private IotCommonServiceImpl commonService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ScreenIndexSummaryDetailVo getStinkSummry(ScreenSummaryVo screenSummaryVo, List<String> stinkList, String startTime, String endTime) {
|
public ScreenIndexSummaryDetailVo getStinkSummry(ScreenSummaryVo screenSummaryVo, List<String> stinkList, String startTime, String endTime) {
|
||||||
VOCommonSurvIntegrateParam voCommonSurvIntegrateParam = new VOCommonSurvIntegrateParam();
|
|
||||||
voCommonSurvIntegrateParam.setDeployIds(stinkList);
|
|
||||||
voCommonSurvIntegrateParam.setStartTime(startTime);
|
|
||||||
voCommonSurvIntegrateParam.setEndTime(endTime);
|
|
||||||
voCommonSurvIntegrateParam.setSummrayMode(screenSummaryVo.getSummrayMode());
|
|
||||||
|
|
||||||
StinkIntegrateStatistic(voCommonSurvIntegrateParam);
|
ScreenIndexSummaryDetailVo screenIndexSummaryDetailVo = processVocQuality(screenSummaryVo, stinkList, startTime, endTime);
|
||||||
|
return screenIndexSummaryDetailVo;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按实际时间返回综合统计
|
||||||
|
* @param screenSummaryVo
|
||||||
|
* @param deviceList
|
||||||
|
* @param startTime
|
||||||
|
* @param endTime
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ScreenIndexSummaryDetailVo processVocQuality(ScreenSummaryVo screenSummaryVo,List<String> deviceList,String startTime,String endTime) {
|
||||||
|
if(deviceList.isEmpty()){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ScreenIndexSummaryDetailVo screenIndexSummaryDetailVo = new ScreenIndexSummaryDetailVo();
|
||||||
|
List<Double> avgQu = new ArrayList<>();
|
||||||
|
List<Double> avgNh3 = new ArrayList<>();
|
||||||
|
List<Double> avgH2s = new ArrayList<>();
|
||||||
|
List<Double> avgTvoc = new ArrayList<>();
|
||||||
|
|
||||||
|
VOCommonSurvIntegrateParam voSurvIntegrateParam = new VOCommonSurvIntegrateParam();
|
||||||
|
voSurvIntegrateParam.setDeployIds(deviceList);
|
||||||
|
voSurvIntegrateParam.setSummrayMode(screenSummaryVo.getSummrayMode());
|
||||||
|
voSurvIntegrateParam.setStartTime(startTime);
|
||||||
|
voSurvIntegrateParam.setEndTime(endTime);
|
||||||
|
VOSurvIntegrateResult survIntegrateResult =StinkIntegrateStatistic(voSurvIntegrateParam);
|
||||||
|
|
||||||
|
|
||||||
|
if(IotConstants.day_hours.equals(screenSummaryVo.getSummrayMode())) {
|
||||||
|
//处理时间格式
|
||||||
|
survIntegrateResult.setIndexs(commonService.processTime(survIntegrateResult.getIndexs(),"yyyy-MM-dd HH","H时"));
|
||||||
|
}
|
||||||
|
|
||||||
|
//数据
|
||||||
|
LinkedHashMap<String, List<Double>> maps = new LinkedHashMap<>();
|
||||||
|
LinkedHashMap<String,List<String>> survResult = survIntegrateResult.getSurvResult();
|
||||||
|
List<String> StinkOuDatas = new ArrayList<>();
|
||||||
|
List<String> StinkNh3Datas = new ArrayList<>();
|
||||||
|
List<String> StinkH2sDatas = new ArrayList<>();
|
||||||
|
List<String> StinkTvocDatas = new ArrayList<>();
|
||||||
|
|
||||||
|
List<String> timeList = new ArrayList<>();
|
||||||
|
LocalDateTime nowDay = LocalDateTime.now();
|
||||||
|
DateTimeFormatter daydtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||||
|
DateTimeFormatter monthdtf = DateTimeFormatter.ofPattern("yyyy-MM");
|
||||||
|
DateTimeFormatter yeardtf = DateTimeFormatter.ofPattern("yyyy");
|
||||||
|
|
||||||
|
//使用数据的数量,默认
|
||||||
|
int todayDataCounts = 0;
|
||||||
|
//需要拼接的数量
|
||||||
|
int yesterDataCounts = 0;
|
||||||
|
if(IotConstants.day_hours.equals(screenSummaryVo.getSummrayMode())) {//日需要24数据
|
||||||
|
todayDataCounts =24;
|
||||||
|
}else if(IotConstants.month_days.equals(screenSummaryVo.getSummrayMode())){//月需要数据量
|
||||||
|
LocalDate curDateMark = LocalDate.parse(startTime+"-01",daydtf);
|
||||||
|
todayDataCounts = curDateMark.with(TemporalAdjusters.lastDayOfMonth()).getDayOfMonth();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(IotConstants.day_hours.equals(screenSummaryVo.getSummrayMode())){//检查是否是今天
|
||||||
|
if(nowDay.format(daydtf).equals(startTime)){//如果查询是今天,再查询一次昨天,拼接为24小时
|
||||||
|
LocalDateTime yesterday = nowDay.minusDays(1);
|
||||||
|
|
||||||
|
todayDataCounts = nowDay.getHour()+1;//0点开始,故+1
|
||||||
|
yesterDataCounts = todayDataCounts;
|
||||||
|
String newTimes = yesterday.format(daydtf);
|
||||||
|
voSurvIntegrateParam.setStartTime(newTimes);
|
||||||
|
voSurvIntegrateParam.setEndTime(newTimes);
|
||||||
|
VOSurvIntegrateResult yesterData = StinkIntegrateStatistic(voSurvIntegrateParam);
|
||||||
|
LinkedHashMap<String,List<String>> yesterResult = yesterData.getSurvResult();
|
||||||
|
//处理时间格式
|
||||||
|
yesterData.setIndexs(commonService.processTime(yesterData.getIndexs(),"yyyy-MM-dd HH","H时"));
|
||||||
|
|
||||||
|
List<String> y2= yesterResult.get(PollutionEnum.dataStinkOu.getCode());
|
||||||
|
if(y2!=null){
|
||||||
|
StinkOuDatas.addAll(y2.subList(yesterDataCounts,y2.size()));
|
||||||
|
}
|
||||||
|
List<String> y3 = yesterResult.get(PollutionEnum.dataStinkNh3.getCode());
|
||||||
|
if(y3!=null){
|
||||||
|
StinkNh3Datas.addAll(y3.subList(yesterDataCounts,y3.size()));
|
||||||
|
}
|
||||||
|
List<String> y4 = yesterResult.get(PollutionEnum.dataStinkH2s.getCode());
|
||||||
|
if(y4!=null) {
|
||||||
|
StinkH2sDatas.addAll(y4.subList(yesterDataCounts,y4.size()));
|
||||||
|
}
|
||||||
|
List<String> y5 = yesterResult.get(PollutionEnum.dataStinkTvoc.getCode());
|
||||||
|
if(y5!=null){
|
||||||
|
StinkTvocDatas.addAll(y5.subList(yesterDataCounts,y5.size()));
|
||||||
|
}
|
||||||
|
timeList.addAll(yesterData.getIndexs().subList(yesterDataCounts,yesterData.getIndexs().size()));
|
||||||
|
}
|
||||||
|
} else if (IotConstants.month_days.equals(screenSummaryVo.getSummrayMode())){//检查是否是本月
|
||||||
|
if(nowDay.format(monthdtf).equals(startTime)){//如果查询是本月,再查询一次上个月,拼接为30天
|
||||||
|
LocalDateTime yesterMonth = nowDay.minusMonths(1);
|
||||||
|
|
||||||
|
todayDataCounts = nowDay.getDayOfMonth();
|
||||||
|
yesterDataCounts = todayDataCounts;
|
||||||
|
String newTimes = yesterMonth.format(monthdtf);
|
||||||
|
voSurvIntegrateParam.setStartTime(newTimes);
|
||||||
|
voSurvIntegrateParam.setEndTime(newTimes);
|
||||||
|
VOSurvIntegrateResult yesterData = StinkIntegrateStatistic(voSurvIntegrateParam);
|
||||||
|
LinkedHashMap<String,List<String>> yesterResult = yesterData.getSurvResult();
|
||||||
|
|
||||||
|
List<String> y2= yesterResult.get(PollutionEnum.dataStinkOu.getCode());
|
||||||
|
if(y2!=null){
|
||||||
|
StinkOuDatas.addAll(y2.subList(yesterDataCounts,y2.size()));
|
||||||
|
}
|
||||||
|
List<String> y3 = yesterResult.get(PollutionEnum.dataStinkNh3.getCode());
|
||||||
|
if(y3!=null){
|
||||||
|
StinkNh3Datas.addAll(y3.subList(yesterDataCounts,y3.size()));
|
||||||
|
}
|
||||||
|
List<String> y4 = yesterResult.get(PollutionEnum.dataStinkH2s.getCode());
|
||||||
|
if(y4!=null) {
|
||||||
|
StinkH2sDatas.addAll(y4.subList(yesterDataCounts,y4.size()));
|
||||||
|
}
|
||||||
|
List<String> y5 = yesterResult.get(PollutionEnum.dataStinkTvoc.getCode());
|
||||||
|
if(y5!=null){
|
||||||
|
StinkTvocDatas.addAll(y5.subList(yesterDataCounts,y5.size()));
|
||||||
|
}
|
||||||
|
timeList.addAll(yesterData.getIndexs().subList(yesterDataCounts,yesterData.getIndexs().size()));
|
||||||
|
}
|
||||||
|
} else if (IotConstants.year_months.equals(screenSummaryVo.getSummrayMode())){//检查是否是本年
|
||||||
|
if(nowDay.format(yeardtf).equals(startTime)){//如果查询是本年,再查询一次去年,拼接为12个月
|
||||||
|
LocalDateTime yesterYear = nowDay.minusYears(1);
|
||||||
|
|
||||||
|
todayDataCounts = nowDay.getMonthValue();
|
||||||
|
yesterDataCounts = todayDataCounts;
|
||||||
|
String newTimes = yesterYear.format(yeardtf);
|
||||||
|
voSurvIntegrateParam.setStartTime(newTimes);
|
||||||
|
voSurvIntegrateParam.setEndTime(newTimes);
|
||||||
|
VOSurvIntegrateResult yesterData = StinkIntegrateStatistic(voSurvIntegrateParam);
|
||||||
|
LinkedHashMap<String,List<String>> yesterResult = yesterData.getSurvResult();
|
||||||
|
|
||||||
|
List<String> y2= yesterResult.get(PollutionEnum.dataStinkOu.getCode());
|
||||||
|
if(y2!=null){
|
||||||
|
StinkOuDatas.addAll(y2.subList(yesterDataCounts,y2.size()));
|
||||||
|
}
|
||||||
|
List<String> y3 = yesterResult.get(PollutionEnum.dataStinkNh3.getCode());
|
||||||
|
if(y3!=null){
|
||||||
|
StinkNh3Datas.addAll(y3.subList(yesterDataCounts,y3.size()));
|
||||||
|
}
|
||||||
|
List<String> y4 = yesterResult.get(PollutionEnum.dataStinkH2s.getCode());
|
||||||
|
if(y4!=null) {
|
||||||
|
StinkH2sDatas.addAll(y4.subList(yesterDataCounts,y4.size()));
|
||||||
|
}
|
||||||
|
List<String> y5 = yesterResult.get(PollutionEnum.dataStinkTvoc.getCode());
|
||||||
|
if(y5!=null){
|
||||||
|
StinkTvocDatas.addAll(y5.subList(yesterDataCounts,y5.size()));
|
||||||
|
}
|
||||||
|
timeList.addAll(yesterData.getIndexs().subList(yesterDataCounts,yesterData.getIndexs().size()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
timeList.addAll(survIntegrateResult.getIndexs().subList(0,todayDataCounts));
|
||||||
|
|
||||||
|
List<String> t2= survResult.get(PollutionEnum.dataWaterPh.getCode());
|
||||||
|
if(t2!=null){
|
||||||
|
StinkOuDatas.addAll(t2.subList(0,todayDataCounts));
|
||||||
|
}
|
||||||
|
List<String> t3 = survResult.get(PollutionEnum.dataWaterDdl.getCode());
|
||||||
|
if(t3!=null){
|
||||||
|
StinkNh3Datas.addAll(t3.subList(0,todayDataCounts));
|
||||||
|
}
|
||||||
|
List<String> t4 = survResult.get(PollutionEnum.dataWaterNtu.getCode());
|
||||||
|
if(t4!=null) {
|
||||||
|
StinkH2sDatas.addAll(t4.subList(0,todayDataCounts));
|
||||||
|
}
|
||||||
|
List<String> t5 = survResult.get(PollutionEnum.dataWaterDo.getCode());
|
||||||
|
if(t5!=null){
|
||||||
|
StinkTvocDatas.addAll(t5.subList(0,todayDataCounts));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(!StinkOuDatas.isEmpty()) {
|
||||||
|
avgQu = StinkOuDatas.stream()
|
||||||
|
.map(Double::parseDouble)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
if(!StinkNh3Datas.isEmpty()) {
|
||||||
|
avgNh3 = StinkNh3Datas.stream()
|
||||||
|
.map(Double::parseDouble)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
if(!StinkH2sDatas.isEmpty()) {
|
||||||
|
avgH2s = StinkH2sDatas.stream()
|
||||||
|
.map(Double::parseDouble)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
if(!StinkTvocDatas.isEmpty()) {
|
||||||
|
avgTvoc = StinkTvocDatas.stream()
|
||||||
|
.map(Double::parseDouble)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
maps.put(ScreenIndexSummaryEnum.QuSummry.getDesc(),avgQu);
|
||||||
|
maps.put(ScreenIndexSummaryEnum.Nh3Summry.getDesc(),avgNh3);
|
||||||
|
maps.put(ScreenIndexSummaryEnum.H2sSummry.getDesc(),avgH2s);
|
||||||
|
maps.put(ScreenIndexSummaryEnum.TvocSummry.getDesc(),avgTvoc);
|
||||||
|
|
||||||
|
screenIndexSummaryDetailVo.setDatas(maps);
|
||||||
|
//时间
|
||||||
|
screenIndexSummaryDetailVo.setDateStr(timeList);
|
||||||
|
|
||||||
|
return screenIndexSummaryDetailVo;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public List<VOSurvIntegrateStinkDetail> integrateSummary(String tenantId, List<String> stinkList, String timeDataFormat, LocalDateTime startTime, LocalDateTime endTime) {
|
public List<VOSurvIntegrateStinkDetail> integrateSummary(String tenantId, List<String> stinkList, String timeDataFormat, LocalDateTime startTime, LocalDateTime endTime) {
|
||||||
return baseMapper.integrateSummary(tenantId,stinkList,timeDataFormat, startTime, endTime);
|
return baseMapper.integrateSummary(tenantId,stinkList,timeDataFormat, startTime, endTime);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,10 @@ public enum ScreenIndexSummaryEnum {
|
||||||
DDLSummry("DDLSummry","电导率"),
|
DDLSummry("DDLSummry","电导率"),
|
||||||
NTUSummry("NTUSummry","浊度"),
|
NTUSummry("NTUSummry","浊度"),
|
||||||
DOSummry("DOSummry","溶解氧"),
|
DOSummry("DOSummry","溶解氧"),
|
||||||
|
QuSummry("QuSummry","臭气浓度"),
|
||||||
|
Nh3Summry("Nh3Summry","氨气"),
|
||||||
|
H2sSummry("H2sSummry","硫化氢"),
|
||||||
|
TvocSummry("TvocSummry","总挥发性有机物"),
|
||||||
OTHER("other","其他")
|
OTHER("other","其他")
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue