package com.moral.service.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import com.moral.common.util.ParameterUtils; import com.moral.common.util.ResourceUtil; import com.moral.entity.Device; import com.moral.entity.DeviceProperty; import com.moral.mapper.HistoryDailyMapper; import com.moral.service.DeviceService; import com.moral.service.HistoryDailyService; import com.moral.service.OrganizationService; @Service public class HistoryDailyServiceImpl implements HistoryDailyService { @Resource private HistoryDailyMapper historyDailyMapper; @Resource private OrganizationService organizationService; @Resource private DeviceService deviceService; @Override public List> getEmissionsData(Map parameters) throws Exception { String sensorKey = parameters.get("sensorKey").toString(); getAllchildrenOrg(parameters); ParameterUtils.getTimeType4Time(parameters); ParameterUtils.getElementByType(parameters); ParameterUtils.getStartAndEndByTime(parameters); ParameterUtils.getRegionType4RegionCode(parameters); List> list = historyDailyMapper.getEmissionsData(parameters); Map result = new HashMap(); for (Map map : list) { String mac = map.get("mac").toString(); String name = map.get("name").toString(); if (!ObjectUtils.isEmpty(map.get(sensorKey))) { Float thickness = Float.valueOf(map.get(sensorKey).toString()); Device device = deviceService.getDeviceByMac(mac); DeviceProperty deviceProperty = device.getDeviceProperty(); if (!ObjectUtils.isEmpty(deviceProperty)) { String extC = deviceProperty.getExtC(); String extD = deviceProperty.getExtD(); if (!(ObjectUtils.isEmpty(extC) || ObjectUtils.isEmpty(extD))) { Float acreage = Float.valueOf(extC); Float windSpeed = Float.valueOf(extD); Float emissions = thickness * acreage * windSpeed * 24 * 60 * 60 / 1000000; if (result.containsKey(name)) { result.put(name, emissions + result.get(name)); } else { result.put(name, emissions); } } } } } List> resultMap = new ArrayList>(); for (Entry entry : result.entrySet()) { resultMap.add(new HashMap() { { put("name", entry.getKey()); put("emissions", entry.getValue()); } }); } return resultMap; } private void getAllchildrenOrg(Map parameters) { if (parameters.containsKey("orgId")) { Integer orgId = Integer.valueOf(parameters.remove("orgId").toString()); if (!(-1 == orgId || ResourceUtil.getValue("orgId").equals(orgId + ""))) { Set orgIds = organizationService.getChildOrganizationIds(orgId); parameters.put("orgIds", orgIds); } } } @Override public Map getOverproofData(Map parameters) throws Exception { getAllchildrenOrg(parameters); ParameterUtils.getTimeType4Time(parameters); ParameterUtils.getElementByType(parameters); ParameterUtils.getStartAndEndByTime(parameters); ParameterUtils.getRegionType4RegionCode(parameters); List> list = historyDailyMapper.getOverproofData(parameters); Map[]> resultMap = new HashMap[]>(); for (Map map : list) { String name = map.get("name").toString(); Integer deviceTech = Integer.valueOf(map.get("device_tech").toString()); Map[] resultlist; if (resultMap.containsKey(name)) { resultlist = resultMap.get(name); } else { resultlist = new HashMap[3]; } resultlist[deviceTech - 1] = new HashMap() { private static final long serialVersionUID = 1L; { put("avg", map.get("avg")); put("limit", map.get("limit")); } }; resultMap.put(name, resultlist); } return resultMap; } // 通过选择的参数(设备mac,监测因子类型,查询时间)查询监测因子的数值 @Override public Map getTraceabilityData(Map parameters) throws Exception { ParameterUtils.getElementByType(parameters); Map resultMap = historyDailyMapper.getTraceabilityData(parameters); return resultMap; } @Override public List> getDataByTimeSlot(String mac, String startTime, String endTime) throws Exception { List> resultMap = historyDailyMapper.getDataByTimeSlot(mac,startTime,endTime); //System.out.println(resultMap); return resultMap; } }