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.apache.commons.collections.CollectionUtils; 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; public List queryAqiOfTimePeriod(String code,TimePeriod timePeriod) { return hangzhouAqiMapper.selectAqisByCodeAndTimePeriod(code,timePeriod); } /** * 根据组织id获取最近24小时国控aqi数据 * @param orgId * @return 返回长度为24的数组,查不到的数据设置为0 */ @Override public List queryAqi24Hours(Integer orgId) { List 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,false); List aqis = queryAqiOfTimePeriod(code.toString(),timePeriod); List timeList = ReportTimeFormat.makeTimeList(timePeriod); if(CollectionUtils.isEmpty(aqis)) { code = getCode(orgId,true); aqis = queryAqiOfTimePeriod(code.toString(),timePeriod); } 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); 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; } }