package com.moral.service.impl; 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.*; /** * @Auther: fengxiang * @Date: 2018/8/24 10:32 * @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 queryAqi24Hours(Integer orgId){ return queryAqi24Hours(orgId,false); } private List queryAqi24Hours(Integer orgId,boolean isGetCity) { List aqi24HoursValues = new ArrayList<>(24); Date start = ReportTimeFormat.dateCalc(new Date(), TimeUnits.HOUR,-24); Date end = new Date(); 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 aqis = hangzhouAqiMapper.selectAqisByCodeAndTimePeriod(code.toString(),timePeriod); List timeList = ReportTimeFormat.makeTimeList(timePeriod); if(aqis!=null && aqis.size()==0 && !isGetCity) { return queryAqi24Hours(orgId,true); } int mTemp = 0; for(int n =0;n rowData = aqis.get(m); Object dbTime = rowData.get("time"); if(time.equals(dbTime)){ mTemp = m+1; aqiValue = rowData.get("aqi"); } } Map aqiItem = new HashMap<>(); aqiItem.put("time",time); aqiValue = aqiValue!=null?Float.valueOf(aqiValue.toString().replace("\"","")):null; aqiItem.put("aqi",aqiValue); aqi24HoursValues.add(aqiItem); } return aqi24HoursValues; } 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(); } } }