From f28149d8183a62f87fa9c8df9ae589070d83f612 Mon Sep 17 00:00:00 2001 From: 于紫祥_1901 <email@yuzixiang_1910> Date: Thu, 24 Dec 2020 13:47:50 +0800 Subject: [PATCH] 波动补偿 --- src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java | 170 +++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 130 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java b/src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java index 1e2b781..445693c 100644 --- a/src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java +++ b/src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java @@ -1,17 +1,24 @@ package com.moral.service.impl; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + import com.moral.common.exception.BusinessException; -import com.moral.common.util.ReportTimeFormat; import com.moral.entity.Organization; import com.moral.entity.charts.TimePeriod; -import com.moral.entity.charts.TimeUnits; import com.moral.mapper.HangzhouAqiMapper; import com.moral.mapper.OrganizationMapper; import com.moral.service.HangzhouAqiService; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.*; +import com.moral.service.HistoryMinutelyService; /** * @Auther: fengxiang @@ -19,33 +26,40 @@ * @Description:������api��������������� */ @Service -public class HangzhouAqiServiceImpl implements HangzhouAqiService{ - @Resource - private OrganizationMapper organizationMapper; - @Resource - private HangzhouAqiMapper hangzhouAqiMapper; - /** - * ������������id������������24������������aqi������ - * @param orgId - * @return ���������������24���������������������������������������0 - */ - @Override - public List<Map> queryAqi24Hours(Integer orgId){ - return queryAqi24Hours(orgId,false); - } - private List<Map> queryAqi24Hours(Integer orgId,boolean isGetCity) { - List<Map> aqi24HoursValues = new ArrayList<>(24); - Date start = ReportTimeFormat.dateCalc(new Date(), TimeUnits.HOUR,-24); - Date end = new Date(); +public class HangzhouAqiServiceImpl implements HangzhouAqiService { + @Resource + private OrganizationMapper organizationMapper; + @Resource + private HangzhouAqiMapper hangzhouAqiMapper; + + @Resource + private HistoryMinutelyService historyMinutelyService; + + public List<Map> queryAqiOfTimePeriod(String code, TimePeriod timePeriod) { + return hangzhouAqiMapper.selectAqisByCodeAndTimePeriod(code, timePeriod); + } + + /** + * ������������id������������24������������aqi������ + * + * @param orgId + * @return ���������������24���������������������������������������0 + */ + @SuppressWarnings("serial") + @Override + public List<Map<String, Object>> queryAqi24Hours(Integer orgId) { + List<Map<String, Object>> aqi24HoursValues = new ArrayList<>(24); +/* + Date now = ReportTimeFormat.getFormatDate(ReportTimeFormat.HOUR_FORMAT); + Date start = ReportTimeFormat.dateCalc(now, TimeUnits.HOUR,-24); + Date end = ReportTimeFormat.dateCalc(now, TimeUnits.MILLISECOND,-1);; TimePeriod timePeriod = new TimePeriod(start,end,TimeUnits.HOUR); - Integer code = getCode(orgId,isGetCity); - if(code == null) { - throw new BusinessException("citeCode or areaCode is null;"); - } - List<Map> aqis = hangzhouAqiMapper.selectAqisByCodeAndTimePeriod(code.toString(),timePeriod); + Integer code = getCode(orgId,false); + List<Map> aqis = queryAqiOfTimePeriod(code.toString(),timePeriod); List<String> timeList = ReportTimeFormat.makeTimeList(timePeriod); - if(aqis!=null && aqis.size()==0 && !isGetCity) { - return queryAqi24Hours(orgId,true); + if(CollectionUtils.isEmpty(aqis)) { + code = getCode(orgId,true); + aqis = queryAqiOfTimePeriod(code.toString(),timePeriod); } int mTemp = 0; for(int n =0;n<timeList.size();n++) { @@ -65,15 +79,91 @@ aqiItem.put("aqi",aqiValue); aqi24HoursValues.add(aqiItem); } - return aqi24HoursValues; +*/ + Organization organization = organizationMapper.selectByPrimaryKey(orgId); + + Map<String, Object> parameters = new HashMap<String, Object>() {{ + put("end", LocalDateTime.now()); + put("cityCode", organization.getAreaCode()); + }}; + aqi24HoursValues = hangzhouAqiMapper.getAqisByOrganizationId(parameters); + if (ObjectUtils.isEmpty(aqi24HoursValues)) { + parameters.put("cityCode", organization.getCityCode()); + aqi24HoursValues = hangzhouAqiMapper.getAqisByOrganizationId(parameters); } - private Integer getCode(Integer orgId,boolean isGetCityCode) - { - Organization org = organizationMapper.selectByPrimaryKey(orgId); - if(isGetCityCode) { - return org.getCityCode(); - }else{ - return org.getAreaCode()!=null? org.getAreaCode() : org.getCityCode(); - } + Collections.reverse(aqi24HoursValues); + return aqi24HoursValues; + } + + private Integer getCode(Integer orgId, boolean isGetCityCode) { + Organization org = organizationMapper.selectByPrimaryKey(orgId); + Integer code = null; + if (isGetCityCode) { + code = org.getCityCode(); + } else { + code = org.getAreaCode(); } + if (code == null) { + throw new BusinessException("citeCode or areaCode is null;"); + } + return code; + } + + @Override + public Integer queryCityCode(Integer areaCode) { + return hangzhouAqiMapper.queryCityCode(areaCode); + } + + @Override + public List<Map<String, Object>> getAreaAvgDataByAreaCode(Map<String, Object> parameters) throws Exception { + historyMinutelyService.convertQueryParam(parameters); + if (!ObjectUtils.isEmpty(parameters.get("compensate"))) { + parameters.put("timeUnits", "10min"); + } + + String sensors2 = parameters.get("sensors2").toString(); + + String sensors1 = sensors2; + String sensors=""; + switch (sensors2) { + case "e1": + sensors1 = "PM2_5"; + sensors="PM25C"; + break; + case "e2": + sensors1 = "PM10"; + sensors="PM10C"; + break; + case "e10": + sensors1 = "CO"; + sensors="COC"; + break; + case "e11": + sensors1 = "SO2"; + sensors="SO2C"; + break; + case "e15": + sensors1 = "O3"; + sensors="O3C"; + break; + case "e16": + sensors1 = "NO2"; + sensors="NO2C"; + break; + default: + break; + } + + parameters.put("sensors1", sensors1); + parameters.put("sensors",sensors); + List<Map<String, Object>> areaList = hangzhouAqiMapper.getAreaAvgDataByAreaCode(parameters); + if (areaList.isEmpty()) { + Integer areaCode = Integer.valueOf(parameters.get("areaCode").toString()); + areaCode = hangzhouAqiMapper.queryCityCode(areaCode); + parameters.put("areaCode", String.valueOf(areaCode)); + areaList = hangzhouAqiMapper.getAreaAvgDataByAreaCode(parameters); + } + return areaList; + + } } -- Gitblit v1.8.0