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.entity.Organization; import com.moral.entity.charts.TimePeriod; import com.moral.mapper.HangzhouAqiMapper; import com.moral.mapper.OrganizationMapper; import com.moral.service.HangzhouAqiService; /** * @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 */ @SuppressWarnings("serial") @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); } */ Organization organization = organizationMapper.selectByPrimaryKey(orgId); Map parameters = new HashMap() {{ 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); } 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); } }