From 9d11111e1e75f5ba89cec1d38ebe6a488d187944 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Mon, 26 Oct 2020 15:11:35 +0800
Subject: [PATCH] 修改默认报警配置
---
src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java | 799 +++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 693 insertions(+), 106 deletions(-)
diff --git a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
index 78c626f..6fa01ba 100644
--- a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
@@ -1,31 +1,47 @@
package com.moral.service.impl;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Resource;
-import com.moral.mapper.DictionaryDataMapper;
-import com.moral.mapper.OrganizationMapper;
-import org.apache.commons.collections.CollectionUtils;
-import org.springframework.stereotype.Service;
+import javax.validation.constraints.NotNull;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.moral.common.bean.Constants;
import com.moral.common.bean.PageBean;
import com.moral.common.util.ExampleUtil;
+import com.moral.common.util.ParameterUtils;
import com.moral.common.util.RedisUtils;
import com.moral.common.util.StringUtils;
import com.moral.common.util.ValidateUtil;
import com.moral.entity.Device;
+import com.moral.entity.DeviceProperty;
import com.moral.entity.MonitorPoint;
import com.moral.mapper.DeviceMapper;
+import com.moral.mapper.DevicePropertyMapper;
+import com.moral.mapper.DictionaryDataMapper;
import com.moral.mapper.MonitorPointMapper;
+import com.moral.mapper.OrganizationMapper;
+import com.moral.service.DeviceService;
+import com.moral.service.HistoryHourlyService;
import com.moral.service.MonitorPointService;
+import com.moral.service.OrganizationService;
+import com.moral.util.MyLatLng;
+import com.moral.util.mapUtils;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.entity.Example.Criteria;
@@ -42,102 +58,113 @@
@Resource
DictionaryDataMapper dictionaryDataMapper;
+ @Resource
+ private DeviceService deviceService;
+
+ @Resource
+ private OrganizationService organizationService;
+
+ @Resource
+ private HistoryHourlyService historyHourlyService;
+
+ @Resource
+ DevicePropertyMapper devicePropertyMapper;
+
private static Class ENTITY_CLASS = MonitorPoint.class;
+
@Override
public List<MonitorPoint> getMonitorPointsByAreaName(Map<String, Object> parameters) {
ValidateUtil.notNull(parameters.get("areaName"), "param.is.null");
return monitorPointMapper.getMonitorPointsByAreaName(parameters);
}
+
@Override
- public List<MonitorPoint> queryWithStateByMap(Map<String, Object> params){
- params.put("isDelete",Constants.IS_DELETE_FALSE);
+ public List<MonitorPoint> queryWithStateByMap(Map<String, Object> params) {
+ params.put("isDelete", Constants.IS_DELETE_FALSE);
Object orgIdObj = params.get("orgId");
List<MonitorPoint> monitorPointList = null;
- if(orgIdObj != null) {
+ if (orgIdObj != null) {
Integer orgId = Integer.parseInt(orgIdObj.toString());
List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
- params.put("orgIds",orgIds);
+ params.put("orgIds", orgIds);
monitorPointList = monitorPointMapper.selectByMap(params);
- for(MonitorPoint monitorPoint:monitorPointList){
- Integer state = getStateFromRedis(monitorPoint.getId());
- monitorPoint.setState(state);
- }
+// for(MonitorPoint monitorPoint:monitorPointList){
+// Integer state = getStateFromRedis(monitorPoint.getId());
+// monitorPoint.setState(state);
+// }
}
return monitorPointList == null ? new ArrayList<>() : monitorPointList;
}
- private Integer getStateFromRedis(Integer monitorPointId){
+
+ private Integer getStateFromRedis(Integer monitorPointId) {
StringBuilder key = new StringBuilder();
key.append("state_").append(monitorPointId).append("_*");
- List<Map> stateList = redisUtils.getList(key.toString(),Map.class);
+ List<Map> stateList = redisUtils.getList(key.toString(), Map.class);
int state = -1;
- if(stateList!=null){
- for (Map deviceState:stateList){
- int s = Integer.parseInt(deviceState.get("state").toString());
- state = s>state&&s<4?s:state;
+ if (stateList != null) {
+ for (Map deviceState : stateList) {
+ int s = Integer.parseInt(deviceState.get("state").toString());
+ state = s > state && s < 4 ? s : state;
}
}
- state = state==-1?4:state;
+ state = state == -1 ? 4 : state;
return state;
}
+
@Override
public PageBean queryByPageBean(PageBean pageBean) {
- Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean);
+ Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
List<Example.Criteria> criteriaList = example.getOredCriteria();
- if(criteriaList!=null&&criteriaList.size()>0){
- for(Example.Criteria cri : criteriaList){
- cri.andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE);
- }
- }else {
- example.or().andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE);
- }
- PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
+ PageHelper.startPage(pageBean.getPageIndex(), pageBean.getPageSize());
List<MonitorPoint> monitorPointList = monitorPointMapper.selectWithAreaNameByExample(example);
return new PageBean(monitorPointList);
}
+
@Override
- public MonitorPoint queryWithRelationById(Integer id){
- Example example = new Example(ENTITY_CLASS);
- example.or().andEqualTo("id",id);
- List<MonitorPoint> monitorPointList = monitorPointMapper.selectWithAreaNameByExample(example);
- return monitorPointList!=null&&monitorPointList.size()>0?monitorPointList.get(0):null;
+ public MonitorPoint queryWithRelationById(Integer id) {
+ Example example = new Example(ENTITY_CLASS);
+ example.or().andEqualTo("id", id);
+ List<MonitorPoint> monitorPointList = monitorPointMapper.selectWithAreaNameByExample(example);
+ return monitorPointList != null && monitorPointList.size() > 0 ? monitorPointList.get(0) : null;
}
+
@Override
public void addOrModify(MonitorPoint monitorPoint) {
- try{
- if(monitorPoint.getId()==null){
+ try {
+ if (monitorPoint.getId() == null) {
monitorPoint.setIsDelete(Constants.IS_DELETE_FALSE);
monitorPointMapper.insertSelective(monitorPoint);
- }else{
+ } else {
MonitorPoint queryMonitorPoint = new MonitorPoint();
queryMonitorPoint.setId(monitorPoint.getId());
queryMonitorPoint.setOrganizationId(monitorPoint.getOrganizationId());
// num = 1,���������������,������������������������
- Integer num = monitorPointMapper.selectCount(queryMonitorPoint);
- boolean needRefreshCach = (num!=1);
+ Integer num = monitorPointMapper.selectCount(queryMonitorPoint);
+ boolean needRefreshCach = (num != 1);
monitorPointMapper.updateByPrimaryKeySelective(monitorPoint);
- if(needRefreshCach){
+ if (needRefreshCach) {
// ������������������������������ ���redis���������������
refreshDevicesInRedis(monitorPoint.getId());
}
}
- }
- catch (Exception ex){
- throw ex;
+ } catch (Exception ex) {
+ throw ex;
}
}
+
/*
������������������������������ ���redis���������������
*/
- private void refreshDevicesInRedis(int monitorPointId){
+ private void refreshDevicesInRedis(int monitorPointId) {
Device queryDevice = new Device();
queryDevice.setMonitorPointId(monitorPointId);
List<Device> deviceList = deviceMapper.select(queryDevice);
- if (!CollectionUtils.isEmpty(deviceList)){
+ if (!CollectionUtils.isEmpty(deviceList)) {
List<Integer> orgIds = monitorPointMapper.selectOrganizationIds(monitorPointId);
- if (!CollectionUtils.isEmpty(orgIds)){
- deviceList.stream().forEach(dev ->{
- if(!StringUtils.isNullOrEmpty(dev.getMac())){
- String key = "device_"+dev.getMac();
+ if (!CollectionUtils.isEmpty(orgIds)) {
+ deviceList.stream().forEach(dev -> {
+ if (!StringUtils.isNullOrEmpty(dev.getMac())) {
+ String key = "device_" + dev.getMac();
// // ��������������������� ������������redis
// Device simpleDevice = new Device();
// simpleDevice.setId(dev.getId());
@@ -146,101 +173,661 @@
// simpleDevice.setMonitorPointId(dev.getMonitorPointId());
// ������������������������������������������������������������������
dev.setOrganizationIds(orgIds);
- redisUtils.set(key,dev);
+ redisUtils.set(key, dev);
}
});
}
}
}
+
@Override
public void deleteByIds(Integer... ids) {
MonitorPoint monitorPoint = new MonitorPoint();
monitorPoint.setIsDelete(Constants.IS_DELETE_TRUE);
- if(ids!=null&&ids.length>0){
- if(ids.length==1){
+ if (ids != null && ids.length > 0) {
+ if (ids.length == 1) {
monitorPoint.setId(ids[0]);
monitorPointMapper.updateByPrimaryKeySelective(monitorPoint);
- }else{
+ } else {
Example example = new Example(ENTITY_CLASS);
example.or().andIn("id", Arrays.asList(ids));
- monitorPointMapper.updateByExampleSelective(monitorPoint,example);
+ monitorPointMapper.updateByExampleSelective(monitorPoint, example);
}
}
}
- @Override
- public List<MonitorPoint> getMonitorPointsByName(String name) {
- Example example = new Example(MonitorPoint.class);
- Criteria criteria = example.createCriteria();
+ @Override
+ public List<MonitorPoint> getMonitorPointsByName(String name) {
+ Example example = new Example(MonitorPoint.class);
+ Criteria criteria = example.createCriteria();
- criteria.andEqualTo("isDelete", Constants.IS_DELETE_FALSE).andLike("name", "%" + name + "%");
- example.or().andEqualTo("isDelete", Constants.IS_DELETE_FALSE)
- .andCondition("getPY(" + getReplaceStr("name") + ") like ", "%" + name + "%");
+ criteria.andEqualTo("isDelete", Constants.IS_DELETE_FALSE).andLike("name", "%" + name + "%");
+ example.or().andEqualTo("isDelete", Constants.IS_DELETE_FALSE)
+ .andCondition("getPY(" + getReplaceStr("name") + ") like ", "%" + name + "%");
- List<MonitorPoint> monitorPoints = monitorPointMapper.selectByExample(example);
- return monitorPoints;
- }
+ List<MonitorPoint> monitorPoints = monitorPointMapper.selectByExample(example);
+ return monitorPoints;
+ }
- private String getReplaceStr(String name){
+ private String getReplaceStr(String name) {
List<String[]> list = new ArrayList<String[]>();
- list.add(new String[]{"���",""});
- list.add(new String[]{"���",""});
+ list.add(new String[]{"���", ""});
+ list.add(new String[]{"���", ""});
for (String[] string : list) {
- name = replace(name,string[0],string[1]);
- }
- return name;
- }
-
- private String replace(String name,String fromStr,String toStr){
- return "REPLACE (" + name + ",'" + fromStr + "','" + toStr + "')";
- }
+ name = replace(name, string[0], string[1]);
+ }
+ return name;
+ }
+
+ private String replace(String name, String fromStr, String toStr) {
+ return "REPLACE (" + name + ",'" + fromStr + "','" + toStr + "')";
+ }
/**
- *
* @param idList
- * @return {id:,state:}
+ * @return {id:,state:}
*/
@Override
public List<Map<String, String>> queryMonitroPointsState(List<Integer> idList) {
- List<Map<String, String>> list = idList.stream().map( id -> {
- Integer state = getStateFromRedis(id);
- Map<String,String> stateMap = new HashMap<>();
- stateMap.put("id",id.toString());
- stateMap.put("state",state.toString());
- return stateMap;
+ List<Map<String, String>> list = idList.stream().map(id -> {
+ Integer state = getStateFromRedis(id);
+ Map<String, String> stateMap = new HashMap<>();
+ stateMap.put("id", id.toString());
+ stateMap.put("state", state.toString());
+ return stateMap;
}).collect(Collectors.toList());
return list;
}
+ /**
+ * ������������������������������������
+ *
+ * @param orgId
+ * @return
+ */
@Override
- public List<MonitorPoint> getMonitorPointsByOrganizationId(Integer orgId) {
- Example example = new Example(MonitorPoint.class);
- Criteria criteria = example.createCriteria();
-
- criteria.andEqualTo("isDelete", Constants.IS_DELETE_FALSE);
- if (Constants.isNotSpecialOrgId(orgId)) {
- criteria.andEqualTo("organizationId", orgId);
- }
- example.orderBy("name").asc();
- return monitorPointMapper.selectByExample(example);
- }
- @Override
- public List<MonitorPoint> getMonitorPointsByRegion(Map<String, Object> parameters) {
- Example example = new Example(MonitorPoint.class);
- Criteria criteria = example.createCriteria();
-
- criteria.andEqualTo("isDelete", Constants.IS_DELETE_FALSE);
- criteria.andEqualTo(parameters.get("name").toString(), parameters.get("value"));
- return monitorPointMapper.selectByExample(example);
- }
- @Override
- public List<Integer> queryVersionsById(Integer id){
- return monitorPointMapper.selectVersionsById(id);
+ public Integer countOfSubOrgs(@NotNull Integer orgId) {
+ Example example = new Example(ENTITY_CLASS);
+ //���������������������������
+ if (!dictionaryDataMapper.isSupperOrgId(orgId)) {
+ List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
+ example.or().andIn("organizationId", orgIds);
+ }
+ return monitorPointMapper.selectCountByExample(example);
}
+
+ @Override
+ public List<MonitorPoint> getMonitorPointsByOrganizationId(Integer orgId) {
+ Example example = new Example(MonitorPoint.class);
+ Criteria criteria = example.createCriteria();
+
+ criteria.andEqualTo("isDelete", Constants.IS_DELETE_FALSE);
+ if (Constants.isNotSpecialOrgId(orgId)) {
+ //criteria.andEqualTo("organizationId", orgId);
+ Set<Integer> organizationIds = organizationService.getChildOrganizationIds(orgId);
+ criteria.andIn("organizationId", organizationIds);
+
+ }
+ example.orderBy("name").asc();
+ return monitorPointMapper.selectByExample(example);
+ }
+
+ @Override
+ public List<MonitorPoint> getMonitorPointsByRegion(Map<String, Object> parameters) {
+ Example example = new Example(MonitorPoint.class);
+ Criteria criteria = example.createCriteria();
+
+ criteria.andEqualTo("isDelete", Constants.IS_DELETE_FALSE);
+ criteria.andEqualTo(parameters.get("name").toString(), parameters.get("value"));
+ return monitorPointMapper.selectByExample(example);
+ }
+
+ @Override
+ public List<Integer> queryVersionsById(Integer id) {
+ return monitorPointMapper.selectVersionsById(id);
+ }
+
@Override
public MonitorPoint queryMonitorPointById(Integer mpointId) {
- return this.monitorPointMapper.selectByPrimaryKey(mpointId);
+ return this.monitorPointMapper.selectByPrimaryKey(mpointId);
}
+
+ @Override
+ public List<MonitorPoint> getMonitorPointsAndDevicesByRegion(Map<String, Object> parameters) {
+ //������������
+ Object organizationId = parameters.remove("organizationId");
+ //���������������������null������������null���������������������������msgKey���������������
+ ValidateUtil.notNull(organizationId, "param.is.null");
+ ValidateUtil.notNull(parameters.get("regionCode"), "param.is.null");
+
+ //������������������
+ ParameterUtils.getRegionType4RegionCode(parameters);
+
+ //������������code���������������
+ Example example = new Example(MonitorPoint.class);
+ Criteria criteria = example.createCriteria();
+ criteria.andEqualTo("isDelete", Constants.IS_DELETE_FALSE);
+
+ //������������������������������������������������������������orgid������������������������
+ if (Constants.isNotSpecialOrgId(Integer.valueOf(organizationId.toString()))) {
+ Set<Integer> organizationIds = organizationService.getChildOrganizationIds(Integer.valueOf(organizationId.toString()));
+ criteria.andIn("organizationId", organizationIds);
+ }
+ criteria.andEqualTo(parameters.get("regionType") + "Code", parameters.remove("regionCode"));
+ List<MonitorPoint> monitorPoints = monitorPointMapper.selectByExample(example);
+
+ //������������������������
+ Example deviceExample = new Example(Device.class);
+ Criteria deviceCriteria = deviceExample.createCriteria();
+ deviceCriteria.orEqualTo("isDelete", Constants.IS_DELETE_FALSE);
+ List<Device> devicesInfo = deviceMapper.selectByExample(deviceExample);
+
+ //������������������������
+ Example monitorExample = new Example(MonitorPoint.class);
+ Criteria monitorCriteria = monitorExample.createCriteria();
+ monitorCriteria.orEqualTo("isDelete", Constants.IS_DELETE_FALSE);
+ List<MonitorPoint> monitorPointInfo = monitorPointMapper.selectByExample(monitorExample);
+
+ //������������������������������
+ List<DeviceProperty> devicePropertyList = devicePropertyMapper.selectAll();
+
+ //������������������������������������������
+ for (Device d : devicesInfo) {
+ for (DeviceProperty dp : devicePropertyList) {
+ if (dp.getId().equals(d.getId())) {
+ d.setDeviceProperty(dp);
+ }
+ }
+ }
+
+ //������������������������������������������
+ Map<Integer, List<Device>> monitorDeviceMap = new HashMap();
+ for (MonitorPoint m : monitorPointInfo) {
+ List<Device> monitorDevices = new ArrayList<>();
+ for (Device d : devicesInfo) {
+ if (m.getId().equals(d.getMonitorPointId())) {
+ monitorDevices.add(d);
+ }
+ }
+ monitorDeviceMap.put(m.getId(), monitorDevices);
+ }
+
+ //������������Code���������������������������������������������
+ Iterator<MonitorPoint> iterator = monitorPoints.iterator();
+ while (iterator.hasNext()) {
+ MonitorPoint monitorPoint = iterator.next();
+ for (Map.Entry<Integer, List<Device>> entry : monitorDeviceMap.entrySet()) {
+ if (monitorPoint.getId().equals(entry.getKey())) {
+ if (!CollectionUtils.isEmpty(entry.getValue())) {
+ monitorPoint.setDevices(entry.getValue());
+ } else {
+ iterator.remove();
+ }
+ }
+ }
+ }
+ return monitorPoints;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection<Object> getDevicesStateByRegion(Map<String, Object> parameters) {
+ //������������
+ Object organizationId = parameters.remove("organizationId");
+ ValidateUtil.notNull(organizationId, "param.is.null");
+ ValidateUtil.notNull(parameters.get("regionCode"), "param.is.null");
+
+ //������������������
+ ParameterUtils.getRegionType4RegionCode(parameters);
+
+ if (Constants.isNotSpecialOrgId(Integer.valueOf(organizationId.toString()))) {
+ Set<Integer> organizationIds = organizationService.getChildOrganizationIds(Integer.valueOf(organizationId.toString()));
+ parameters.put("orgIds", organizationIds);
+ }
+ List<Map<String, Object>> monitorPoints = deviceMapper.getDevicesStateByRegion(parameters);
+ Map<String, Object> result = new HashMap<String, Object>();
+ Map<String, Object> device;
+ List<Map<String, Object>> devices;
+ for (Map<String, Object> map : monitorPoints) {
+ String id = map.get("id").toString();
+
+ device = new HashMap<String, Object>();
+ device.put("id", map.remove("deviceId"));
+ device.put("name", map.remove("deviceName"));
+ device.put("state", map.remove("state"));
+ device.put("mac", map.remove("mac"));
+
+ if (result.containsKey(id)) {
+ Map<String, Object> monitorPoint = (Map<String, Object>) result.get(id);
+ devices = (List<Map<String, Object>>) monitorPoint.get("devices");
+ } else {
+ devices = new ArrayList<Map<String, Object>>();
+ result.put(id, map);
+ }
+ devices.add(device);
+ map.put("devices", devices);
+ result.put(id, map);
+ }
+
+ return result.values();
+ }
+
+ @Override
+ public void isCompensateCalculation(Map<String, Object> parameters) {
+ MonitorPoint monitorPoint = monitorPointMapper.selectByPrimaryKey(Integer.valueOf(parameters.get("monitorPointId").toString()));
+ if (Integer.valueOf(320581).equals(monitorPoint.getAreaCode())) {
+ parameters.put("compensate", true);
+ }
+
+ }
+
+ @Override
+ public Map<String, Object> selectAllById(String id) {
+ int id2 = Integer.parseInt(id);
+ Map<String, Object> map = monitorPointMapper.selectAllById(id2);
+ return map;
+ }
+
+ @Override
+ public List<Device> getDeviceList(int id) {
+ return monitorPointMapper.getDeviceList(id);
+ }
+
+ @Override
+ public JSONObject getMonitorPointById(int id, String Time, int i, String sensor) {
+ JSONObject params = new JSONObject();
+ MonitorPoint monitorPoint = monitorPointMapper.getMonitorPointById(id);
+ if (i == 1) {
+ Double longitude = monitorPoint.getLongitude();
+ Double latitude = monitorPoint.getLatitude();
+
+ Double workshop = 0.0;
+
+ Double flue = 0.0;
+ //������������
+ List<Device> device1 = deviceService.getDeviceById1(id);
+
+ //������������
+ List<Device> device2 = deviceService.getDeviceById2(id);
+
+ //������������
+ List<Device> device3 = deviceService.getDeviceById3(id);
+
+
+ String purificationRate = null;//���������
+
+ if (device3.size() == 0) {
+ purificationRate = "���������������������������������������������";
+ params.put("device2", device2);
+ params.put("device1", device1);
+ } else {
+ params.put("device1", device1);
+ params.put("device2", device2);
+ params.put("device3", device3);
+ for (Device device33 : device3) {
+ String mac3 = device33.getMac();
+ String tvoc = historyHourlyService.getTVOCByMac(mac3, Time, sensor);
+ if (tvoc != null) {
+ workshop = Double.parseDouble(tvoc);
+ } else {
+ workshop = 0.0;
+ }
+ }
+ if (device1.size() == 0) {
+ purificationRate = "���������������������������������������������";
+ } else {
+ for (Device device11 : device1) {
+ String mac1 = device11.getMac();
+ flue = Double.parseDouble(historyHourlyService.getTVOCByMac(mac1, Time, sensor));
+ if (workshop == 0.0) {
+ purificationRate = "���������������������������������������������������";
+ } else {
+ if (flue == 0.0) {
+ purificationRate = "���������������������������������������������������";
+ } else {
+ BigDecimal b = new BigDecimal(((workshop - flue) / workshop) * 100);
+ double purity2 = b.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
+ purificationRate = (purity2) + "%";
+ }
+ }
+ }
+ }
+ }
+ params.put("latitude", latitude);
+ params.put("longitude", longitude);
+ params.put("purificationRate", purificationRate);
+ }
+ if (i == 2) {
+ Double longitude = monitorPoint.getLongitude();
+ Double latitude = monitorPoint.getLatitude();
+ //������������
+ List<Device> device1 = deviceService.getDeviceById1(id);
+ //������������
+ List<Device> device2 = deviceService.getDeviceById2(id);
+ //������������
+ List<Device> device3 = deviceService.getDeviceById3(id);
+ String collectionRate = null;//���������
+ Double pressure = 0.0;//������������
+ List<Double> list1 = new ArrayList();
+ if (device3.size() == 0) {
+ collectionRate = "������������������������������������������������";
+ params.put("device1", device1);
+ params.put("device2", device2);
+ } else {
+ params.put("device3", device3);
+ if (device2.size() == 0) {
+ collectionRate = "������������������������������������������������";
+ params.put("device1", device1);
+ } else {
+ params.put("device2", device2);
+ params.put("device1", device1);
+ Double sum = 0.0;
+ for (Device device22 : device2) {
+ String mac2 = device22.getMac();
+ String pressure2 = historyHourlyService.getPressureByMac(mac2, Time);
+ if (pressure2 != null) {
+ pressure = Double.parseDouble(pressure2);
+ list1.add(pressure);
+ } else {
+ collectionRate = "������������������������������������������������������������";
+ }
+
+ }
+ for (Double d : list1) {
+ sum = sum + d;
+ }
+ if (list1.size() != 0) {
+ pressure = sum / list1.size();
+ } else {
+ collectionRate = "������������������������������������������������������������";
+ }
+ Double pressure33 = 0.0;
+ for (Device device33 : device3) {
+ String mac3 = device33.getMac();
+ String pressure3 = historyHourlyService.getPressureByMac(mac3, Time);
+ if (pressure3 != null) {
+ pressure33 = Double.parseDouble(pressure3);
+ BigDecimal b = new BigDecimal((pressure - pressure33 + 3.5) * 20);//���������2.5���������������������������������
+ double collection = b.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
+ collectionRate = collection + "%";
+ }
+ }
+ }
+ }
+ params.put("latitude", latitude);
+ params.put("longitude", longitude);
+ params.put("collectionRate", collectionRate);
+ }
+
+ if (i == 3) {
+ Double longitudeCompany = monitorPoint.getLongitude();
+ Double latitudeCompany = monitorPoint.getLatitude();
+ Double longitude = 0.0;//������������������������
+ Double latitude = 0.0;//������������������������
+ List<Device> deviceList = deviceService.getDeviceById2(id);
+ //List<Device> deviceList = monitorPointService.getDeviceList(id);
+ List<Map> list = new ArrayList<Map>();//������historyHourly���json������
+ String smac = "";//������������������Mac���
+ List<Map> windList = new ArrayList<Map>();//���������������������������������������
+ Map<String, Object> jsonMap = new HashMap<String, Object>();//���������������������
+ Map<String, Object> deviceMap = null;
+ if (deviceList.size() > 1) {
+ for (Device device : deviceList) {
+ deviceMap = new HashMap<String, Object>();
+ smac = device.getMac();
+ latitude = device.getLatitude();
+ longitude = device.getLongitude();
+
+ jsonMap = historyHourlyService.getDataByMac(smac, Time);
+ deviceMap.put("longitude", longitude);
+ deviceMap.put("latitude", latitude);
+ if (jsonMap != null) {
+ deviceMap.put("jsonMap", jsonMap);
+ } else {
+ deviceMap.put("jsonMap", "������������������������������");
+ }
+
+ list.add(deviceMap);
+ }
+ Map<String, Object> mapData = new HashMap<String, Object>();
+ Map<String, Object> mapDevice;
+ JSONArray windDir;
+ for (Map<String, Object> objectMap : list) {
+ mapDevice = new HashMap<String, Object>();
+ Map<String, Object> map = null;
+ if (!(objectMap.get("jsonMap") instanceof String)) {
+ mapData = (Map<String, Object>) objectMap.get("jsonMap");
+ map = (Map) JSON.parseObject((String) mapData.get("json"));
+ windDir = (JSONArray) JSONArray.toJSON(map.get("e23"));
+ JSONArray concentration = (JSONArray) JSONArray.toJSON(map.get(sensor));
+
+ BigDecimal bigDecimal1 = new BigDecimal(0);
+ BigDecimal bigDecimal = new BigDecimal(0);
+ if (concentration != null) {
+ if (concentration.get(0) instanceof Integer) {
+ bigDecimal1 = new BigDecimal(concentration.get(0).toString());
+ } else {
+ bigDecimal1 = (BigDecimal) concentration.get(0);
+ }
+ if (windDir != null) {
+ if (windDir.get(0) instanceof Integer) {
+ bigDecimal = new BigDecimal(windDir.get(0).toString());
+ } else {
+ bigDecimal = (BigDecimal) windDir.get(0);
+ }
+ mapDevice.put("e23", bigDecimal.doubleValue());
+ mapDevice.put("sensor", bigDecimal1.doubleValue());
+ mapDevice.put("longitude", objectMap.get("longitude"));
+ mapDevice.put("latitude", objectMap.get("latitude"));
+ } else {
+ mapDevice.put("noSensor", "���������������");
+ mapDevice.put("longitude", objectMap.get("longitude"));
+ mapDevice.put("latitude", objectMap.get("latitude"));
+ }
+ }
+ } else {
+ mapDevice.put("info", objectMap.get("jsonMap"));
+ mapDevice.put("longitude", objectMap.get("longitude"));
+ mapDevice.put("latitude", objectMap.get("latitude"));
+ }
+ windList.add(mapDevice);
+ }
+ // if (windDir!=null){}
+ Double differenceNum = 0.0;
+ Map<String, Object> indexMap;
+ List<Map> mapList = new ArrayList<>();
+ for (int j = 0; j < windList.size(); j++) {
+ for (int k = 0; k < windList.size(); k++) {
+ if (k != j) {
+ indexMap = new HashMap<String, Object>();
+ if (windList.get(k).containsKey("e23") && windList.get(j).containsKey("e23")) {
+ Double e23Numk = (Double) windList.get(k).get("e23");
+ Double e23Numj = (Double) windList.get(j).get("e23");
+ Double diff = e23Numk - e23Numj;
+ BigDecimal b = new BigDecimal(Math.abs(diff));
+
+ differenceNum = b.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
+ if (differenceNum > 180) {
+ differenceNum = 360 - differenceNum;
+ }
+ indexMap.put("k", k);
+ indexMap.put("j", j);
+ indexMap.put("diff", differenceNum);
+ } else {
+ indexMap.put("k", k);
+ indexMap.put("j", j);
+ indexMap.put("info", "���������������");
+ }
+
+// indexMap.put("longitude",windList.get(k).get("longitude"));
+// indexMap.put("latitude",windList.get(k).get("latitude"));
+ mapList.add(indexMap);
+ } else {
+ continue;
+ }
+
+ }
+ }
+ Double min = 0.0;
+ int indexMin = 0;
+ if (mapList.size() > 0) {
+ if (mapList.get(0).containsKey("diff")) {
+ min = (Double) mapList.get(0).get("diff");
+ for (int q = 1; q < mapList.size(); q++) {
+ if (mapList.get(q).containsKey("diff")) {
+ if (min > (Double) mapList.get(q).get("diff")) {
+ min = (Double) mapList.get(q).get("diff");
+ indexMin = q;
+ }
+ } else {
+ indexMin = q;
+ }
+ }
+ }
+ }
+
+ Map twoDeviceMap = mapList.get(indexMin);
+ List<Map> list1 = new ArrayList<Map>(); //���������������������������������������������������
+ list1.add(windList.get((Integer) twoDeviceMap.get("k")));
+ list1.add(windList.get((Integer) twoDeviceMap.get("j")));
+
+ Double wind = 0.0;
+ Double sum = 0.0;
+ if (list1.get(0).containsKey("e23")) {
+ if (Math.abs((Double) list1.get(0).get("e23") - (Double) list1.get(1).get("e23")) > 180) {
+ sum = (Double) list1.get(0).get("e23") + (Double) list1.get(1).get("e23");
+ wind = sum / 2 + 180;
+ if (wind > 360) {
+ wind = wind - 360;
+ }
+ } else {
+ for (Map map : list1) {
+ sum += (Double) map.get("e23");
+ }
+ wind = sum / 2;
+ }
+ } else {
+ wind = 0.0;
+ }
+ Map<String, Object> longAndLatiMap;
+ List<Map> longAndLatiList = new ArrayList<>();//������������������������������������windList������������������������������������������������������������������
+ List<Map> preAngleDeviceList = new ArrayList<Map>(); //���������������������������������������
+ if (wind != 0.0) {
+ for (int f = 0; f < windList.size(); f++) {
+ for (int h = 0; h < windList.size(); h++) {
+ if (f != h) {
+ longAndLatiMap = new HashMap<String, Object>();
+ longAndLatiMap.put("h", h);
+ longAndLatiMap.put("f", f);
+ Double angle = mapUtils.getAngle(
+ new MyLatLng((Double) windList.get(h).get("longitude"),
+ (Double) windList.get(h).get("latitude")),
+ new MyLatLng((Double) windList.get(f).get("longitude"),
+ (Double) windList.get(f).get("latitude")));
+ Double angleDiff = Math.abs(angle - wind);
+ longAndLatiMap.put("angle", angleDiff);
+ longAndLatiList.add(longAndLatiMap);
+ }
+ }
+ }
+ Double minAngle = (Double) longAndLatiList.get(0).get("angle");
+ int indexAngle = 0;
+ for (int j = 0; j < longAndLatiList.size(); j++) {
+ if (minAngle > (Double) longAndLatiList.get(j).get("angle")) {
+ minAngle = (Double) longAndLatiList.get(j).get("angle");
+ indexAngle = j;
+ }
+ }
+ //windList.get((Integer) longAndLatiList.get(indexAngle).get("f"))������������������������
+ preAngleDeviceList.add(windList.get((Integer) longAndLatiList.get(indexAngle).get("h")));
+ preAngleDeviceList.add(windList.get((Integer) longAndLatiList.get(indexAngle).get("f")));
+
+ Double length = mapUtils.getDistance((Double) preAngleDeviceList.get(0).get("longitude"), (Double) preAngleDeviceList.get(0).get("latitude"),
+ (Double) preAngleDeviceList.get(1).get("longitude"), (Double) preAngleDeviceList.get(1).get("latitude"));
+ Double subLength = length / 5;
+ Double subLength1 = length / 6.1;
+ Double angle = mapUtils.getAngle(
+ new MyLatLng((Double) preAngleDeviceList.get(0).get("longitude"),
+ (Double) preAngleDeviceList.get(0).get("latitude")),
+ new MyLatLng((Double) preAngleDeviceList.get(1).get("longitude"),
+ (Double) preAngleDeviceList.get(1).get("latitude")));
+
+ params.put("preAngleDeviceList", preAngleDeviceList);
+ params.put("angle", angle);
+ List locationList = new ArrayList();
+ String[] firstLocation = mapUtils.calLocationByDistanceAndLocationAndDirection(angle, (Double) preAngleDeviceList.get(0).get("longitude"),
+ (Double) preAngleDeviceList.get(0).get("latitude"), subLength);
+ String[] secondLoction = mapUtils.calLocationByDistanceAndLocationAndDirection(angle, Double.parseDouble(firstLocation[0]),
+ Double.parseDouble(firstLocation[1]), subLength);
+ String[] thirdLocation = mapUtils.calLocationByDistanceAndLocationAndDirection(angle, Double.parseDouble(secondLoction[0]),
+ Double.parseDouble(secondLoction[1]), subLength);
+ String[] fourthLoction = mapUtils.calLocationByDistanceAndLocationAndDirection(angle, Double.parseDouble(thirdLocation[0]),
+ Double.parseDouble(thirdLocation[1]), subLength);
+ String[] fivethLoction = mapUtils.calLocationByDistanceAndLocationAndDirection(angle, Double.parseDouble(fourthLoction[0]),
+ Double.parseDouble(fourthLoction[1]), subLength1);
+ locationList.add(firstLocation);
+ locationList.add(secondLoction);
+ locationList.add(thirdLocation);
+ locationList.add(fourthLoction);
+ locationList.add(fivethLoction);
+ params.put("locationList", locationList);
+
+ String preAngleDeviceString = JSON.toJSON(preAngleDeviceList).toString();
+ params.put("preAngleDeviceString", preAngleDeviceString);//���������������������������
+ } else {
+ params.put("preAngleDeviceString", 0);
+ }
+ params.put("wind", wind);
+ //String preAngleDeviceString=preAngleDeviceList.
+ params.put("deviceList", deviceList);
+ } else {
+ if (deviceList.size() != 0) {
+ params.put("deviceList", deviceList.get(0));
+ } else {
+ params.put("deviceList", "");
+ }
+ params.put("preAngleDeviceString", 1);
+ params.put("locationList", "");
+ }
+
+ params.put("latitudeCompany", latitudeCompany);
+ params.put("longitudeCompany", longitudeCompany);
+ }
+ return params;
+ }
+
+ @Override
+ public JSONObject getMacList(int monitPointId) {
+ JSONObject params = new JSONObject();
+ MonitorPoint monitorPoint = monitorPointMapper.getMonitorPointById(monitPointId);
+
+ //������������������������
+ List<Device> deviceList = deviceService.getDeviceById2(monitPointId);
+
+ params.put("longitudeCompany",monitorPoint.getLongitude());
+ params.put("latitudeCompany",monitorPoint.getLatitude());
+ params.put("latitudeCompany",monitorPoint.getLatitude());
+ params.put("monitPointId",monitPointId);
+ params.put("deviceList",deviceList);
+ return params;
+ }
+
+ @Override
+ public List<MonitorPoint> getMonitorPointListByAccountId(int id) {
+ return monitorPointMapper.getMonitorPointListByAccountId(id);
+ }
+
+ @Override
+ public MonitorPoint byIdGetMonitorPoint(int id) {
+ return monitorPointMapper.byIdGetMonitorPoint(id);
+ }
+
+ @Override
+ public String getOrgIdByMac(String mac) {
+ return monitorPointMapper.getOrgIdByMac(mac);
+ }
+
+
}
--
Gitblit v1.8.0