于紫祥_1901
2020-12-24 f28149d8183a62f87fa9c8df9ae589070d83f612
src/main/java/com/moral/service/impl/HistoryDailyServiceImpl.java
@@ -23,102 +23,117 @@
@Service
public class HistoryDailyServiceImpl implements HistoryDailyService {
   @Resource
   private HistoryDailyMapper historyDailyMapper;
   @Resource
   private OrganizationService organizationService;
    @Resource
    private HistoryDailyMapper historyDailyMapper;
   @Resource
   private DeviceService deviceService;
    @Resource
    private OrganizationService organizationService;
   @Override
   public List<Map<String, Object>> getEmissionsData(Map<String, Object> parameters) throws Exception {
      String sensorKey = parameters.get("sensorKey").toString();
      getAllchildrenOrg(parameters);
      ParameterUtils.getTimeType4Time(parameters);
      ParameterUtils.getElementByType(parameters);
      ParameterUtils.getStartAndEndByTime(parameters);
      ParameterUtils.getRegionType4RegionCode(parameters);
      List<Map<String, Object>> list = historyDailyMapper.getEmissionsData(parameters);
      Map<String, Float> result = new HashMap<String, Float>();
      for (Map<String, Object> 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);
                  }
               }
            }
    @Resource
    private DeviceService deviceService;
         }
      }
      List<Map<String, Object>> resultMap = new ArrayList<Map<String,Object>>();
      for (Entry<String, Float> entry : result.entrySet()) {
         resultMap.add(new HashMap<String, Object>() {
            {
               put("name", entry.getKey());
               put("emissions", entry.getValue());
            }
         });
      }
      return resultMap;
   }
    @Override
    public List<Map<String, Object>> getEmissionsData(Map<String, Object> parameters) throws Exception {
        String sensorKey = parameters.get("sensorKey").toString();
        getAllchildrenOrg(parameters);
        ParameterUtils.getTimeType4Time(parameters);
        ParameterUtils.getElementByType(parameters);
        ParameterUtils.getStartAndEndByTime(parameters);
        ParameterUtils.getRegionType4RegionCode(parameters);
        List<Map<String, Object>> list = historyDailyMapper.getEmissionsData(parameters);
   private void getAllchildrenOrg(Map<String, Object> parameters) {
      if (parameters.containsKey("orgId")) {
         Integer orgId = Integer.valueOf(parameters.remove("orgId").toString());
         if (!(-1 == orgId  || ResourceUtil.getValue("orgId").equals(orgId + ""))) {
            Set<Integer> orgIds = organizationService.getChildOrganizationIds(orgId);
            parameters.put("orgIds", orgIds);
         }
      }
   }
        Map<String, Float> result = new HashMap<String, Float>();
   @Override
   public Map getOverproofData(Map<String, Object> parameters) throws Exception {
      getAllchildrenOrg(parameters);
      ParameterUtils.getTimeType4Time(parameters);
      ParameterUtils.getElementByType(parameters);
      ParameterUtils.getStartAndEndByTime(parameters);
      ParameterUtils.getRegionType4RegionCode(parameters);
      List<Map<String, Object>> list = historyDailyMapper.getOverproofData(parameters);
      Map<String, Map<String, Object>[]> resultMap = new HashMap<String, Map<String, Object>[]>();
      for (Map<String, Object> map : list) {
         String name = map.get("name").toString();
         Integer deviceTech = Integer.valueOf(map.get("device_tech").toString());
         Map<String,Object>[] resultlist ;
         if (resultMap.containsKey(name)) {
            resultlist = resultMap.get(name);
         } else {
            resultlist = new HashMap[3];
         }
         resultlist[deviceTech-1] = new HashMap<String,Object>() {
            private static final long serialVersionUID = 1L;
            {
               put("avg", map.get("avg"));
               put("limit", map.get("limit"));
            }
         };
         resultMap.put(name, resultlist);
      }
      return resultMap;
   }
        for (Map<String, Object> 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<Map<String, Object>> resultMap = new ArrayList<Map<String, Object>>();
        for (Entry<String, Float> entry : result.entrySet()) {
            resultMap.add(new HashMap<String, Object>() {
                {
                    put("name", entry.getKey());
                    put("emissions", entry.getValue());
                }
            });
        }
        return resultMap;
    }
    private void getAllchildrenOrg(Map<String, Object> parameters) {
        if (parameters.containsKey("orgId")) {
            Integer orgId = Integer.valueOf(parameters.remove("orgId").toString());
            if (!(-1 == orgId || ResourceUtil.getValue("orgId").equals(orgId + ""))) {
                Set<Integer> orgIds = organizationService.getChildOrganizationIds(orgId);
                parameters.put("orgIds", orgIds);
            }
        }
    }
    @Override
    public Map getOverproofData(Map<String, Object> parameters) throws Exception {
        getAllchildrenOrg(parameters);
        ParameterUtils.getTimeType4Time(parameters);
        ParameterUtils.getElementByType(parameters);
        ParameterUtils.getStartAndEndByTime(parameters);
        ParameterUtils.getRegionType4RegionCode(parameters);
        List<Map<String, Object>> list = historyDailyMapper.getOverproofData(parameters);
        Map<String, Map<String, Object>[]> resultMap = new HashMap<String, Map<String, Object>[]>();
        for (Map<String, Object> map : list) {
            String name = map.get("name").toString();
            Integer deviceTech = Integer.valueOf(map.get("device_tech").toString());
            Map<String, Object>[] resultlist;
            if (resultMap.containsKey(name)) {
                resultlist = resultMap.get(name);
            } else {
                resultlist = new HashMap[3];
            }
            resultlist[deviceTech - 1] = new HashMap<String, Object>() {
                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<String, Double> getTraceabilityData(Map<String, Object> parameters) throws Exception {
        ParameterUtils.getElementByType(parameters);
        Map<String, Double> resultMap = historyDailyMapper.getTraceabilityData(parameters);
        return resultMap;
    }
    @Override
    public List<Map<String, Object>> getDataByTimeSlot(String mac, String startTime, String endTime) throws Exception {
        List<Map<String, Object>> resultMap = historyDailyMapper.getDataByTimeSlot(mac,startTime,endTime);
        //System.out.println(resultMap);
        return resultMap;
    }
}