From 235a2be052544e41cef217920d4e55fee730995e Mon Sep 17 00:00:00 2001
From: 于紫祥_1901 <email@yuzixiang_1910>
Date: Tue, 23 Jun 2020 09:54:30 +0800
Subject: [PATCH] 净化率,收集率,无组织排放
---
src/main/java/com/moral/util/MyLatLng.java | 27 +
src/main/resources/mapper/DeviceMapper.xml | 11
src/main/java/com/moral/util/mapUtils.java | 73 +++
src/main/webapp/img/company_03.png | 0
src/main/webapp/img/company_01.png | 0
src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 15
src/main/java/com/moral/mapper/MonitorPointMapper.java | 5
src/main/webapp/view/pressureMap.jsp | 118 ++++++
src/main/java/com/moral/service/DeviceService.java | 7
src/main/webapp/view/purityMap.jsp | 119 ++++++
src/main/webapp/view/unorganizedMap.jsp | 243 ++++++++++++
src/main/resources/mapper/MonitorPointMapper.xml | 9
src/main/java/com/moral/mapper/HistoryHourlyMapper.java | 8
src/main/webapp/img/company_02.png | 0
src/main/java/com/moral/mapper/DeviceMapper.java | 7
src/main/java/com/moral/service/MonitorPointService.java | 8
src/main/java/com/moral/service/HistoryHourlyService.java | 9
src/main/resources/mapper/HistoryHourlyMapper.xml | 10
src/main/java/com/moral/controller/ScreenController.java | 72 +++
src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java | 15
src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java | 370 +++++++++++++++++++
21 files changed, 1,126 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index ee04af0..030a524 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -1779,4 +1779,76 @@
return model;
}
}
+
+ @GetMapping("/purify")
+ @ApiOperation(value = "���������������������", notes = "���������������������")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "monitorPointId", value = "������Id", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "sensorKey", value = "������", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "time", value = "������(���������2020-03-19-14)", required = true, paramType = "query", dataType = "String")})
+ public ModelAndView PurificationRate(HttpServletRequest request,ModelAndView model){
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+ String monitPointIdS= (String) parameters.get("monitorPointId");
+ String sensor= (String) parameters.get("sensorKey");
+ String time= (String) parameters.get("time");
+ String YearAndDay = time.substring(0, time.lastIndexOf("-"));
+ String Hour = time.substring(time.lastIndexOf("-") + 1);
+ String Time = YearAndDay + " " + Hour + ":00:00";
+ int monitPointId=Integer.parseInt(monitPointIdS);
+ JSONObject params=monitorPointService.getMonitorPointById(monitPointId,Time,1,sensor);
+ String paramsJson = params.toJSONString();
+ model.addObject("mapParams", paramsJson);
+ model.setViewName("purityMap");
+ return model;
+ }
+
+
+ @GetMapping("/collection")
+ @ApiOperation(value = "���������������������", notes = "���������������������")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "monitorPointId", value = "������Id", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "time", value = "������(���������2020-03-19-14)", required = true, paramType = "query", dataType = "String")})
+ public ModelAndView collectionRate(HttpServletRequest request,ModelAndView model){
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+ String monitPointIdS= (String) parameters.get("monitorPointId");
+ String sensor= "";
+ String time= (String) parameters.get("time");
+ String YearAndDay = time.substring(0, time.lastIndexOf("-"));
+ String Hour = time.substring(time.lastIndexOf("-") + 1);
+ String Time = YearAndDay + " " + Hour + ":00:00";
+ int monitPointId=Integer.parseInt(monitPointIdS);
+ //������������������
+ JSONObject params=monitorPointService.getMonitorPointById(monitPointId,Time,2,sensor);
+ model.addObject("params",params);
+ model.setViewName("pressureMap");
+ return model;
+ }
+
+
+
+ @GetMapping("/unorganizedEmissions")
+ @ApiOperation(value = "���������������", notes = "���������������")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "monitorPointId", value = "������Id", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "sensorKey", value = "������", required = true, paramType = "query", dataType = "String"),
+ // @ApiImplicitParam(name = "sensorKey", value = "���������key,���������������������������", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "time", value = "������(���������2020-03-19-14)", required = true, paramType = "query", dataType = "String")})
+ public ModelAndView unorganizedEmissions(HttpServletRequest request,ModelAndView model){
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+ String monitPointIdS= (String) parameters.get("monitorPointId");
+ String sensor= (String) parameters.get("sensorKey");
+ String time= (String) parameters.get("time");
+ String YearAndDay = time.substring(0, time.lastIndexOf("-"));
+ String Hour = time.substring(time.lastIndexOf("-") + 1);
+ String Time = YearAndDay + " " + Hour + ":00:00";
+
+
+ int monitPointId=Integer.parseInt(monitPointIdS);
+ //������������������
+ JSONObject params=monitorPointService.getMonitorPointById(monitPointId,Time,3,sensor);
+ model.addObject("params",params);
+ model.setViewName("unorganizedMap");
+ return model;
+ }
+
}
diff --git a/src/main/java/com/moral/mapper/DeviceMapper.java b/src/main/java/com/moral/mapper/DeviceMapper.java
index fdd805e..90a7ac3 100644
--- a/src/main/java/com/moral/mapper/DeviceMapper.java
+++ b/src/main/java/com/moral/mapper/DeviceMapper.java
@@ -44,4 +44,11 @@
String getLimitDataByDevice(Map<String, Object> parameters);
List<String> getMacsByOrganizationId(@Param("organizationIdList") List<Object> organizationIdList);
+
+ List<Device> getDeviceById1(@Param("id") int id);
+
+ //������������������
+ List<Device> getDeviceById2(@Param("id") int id);
+
+ List<Device> getDeviceById3(@Param("id") int id);
}
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/HistoryHourlyMapper.java b/src/main/java/com/moral/mapper/HistoryHourlyMapper.java
index 2bdc6c9..6c05d9a 100644
--- a/src/main/java/com/moral/mapper/HistoryHourlyMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryHourlyMapper.java
@@ -1,5 +1,7 @@
package com.moral.mapper;
+import org.apache.ibatis.annotations.Param;
+
import java.util.Map;
public interface HistoryHourlyMapper {
@@ -9,4 +11,10 @@
Map<String, Object> getPollutionSourceDataByHour(Map<String, Object> parameters);
Map<String, Object> getPollutionSourceDataAll(Map<String, Object> parameters);
+ //������TVOC������
+ String getTVOCByMac(@Param("mac") String mac, @Param("time") String time, @Param("sensor") String sensor);
+ //������������������
+ String getPressureByMac(@Param("mac") String mac,@Param("time") String time);
+ //������������
+ Map<String,Object> getDataByMac(@Param("mac") String mac,@Param("time") String time);
}
diff --git a/src/main/java/com/moral/mapper/MonitorPointMapper.java b/src/main/java/com/moral/mapper/MonitorPointMapper.java
index 815c197..425cb4b 100644
--- a/src/main/java/com/moral/mapper/MonitorPointMapper.java
+++ b/src/main/java/com/moral/mapper/MonitorPointMapper.java
@@ -3,6 +3,7 @@
import java.util.List;
import java.util.Map;
+import com.moral.entity.Device;
import org.apache.ibatis.annotations.Param;
import com.moral.common.mapper.BaseMapper;
@@ -17,4 +18,8 @@
List<Integer> selectVersionsById(int id);
Map<String, Object> selectAllById(int id);
List<Map<String, Object>> getIdByOrganizationId(@Param("organizationIdList") List<Object> organizationIdList);
+ //������monitorPointId������������������������������������
+ List<Device> getDeviceList(@Param("id") int id);
+ //���������������������������id
+ MonitorPoint getMonitorPointById(@Param("id") int id);
}
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/DeviceService.java b/src/main/java/com/moral/service/DeviceService.java
index 917c31e..39ca627 100644
--- a/src/main/java/com/moral/service/DeviceService.java
+++ b/src/main/java/com/moral/service/DeviceService.java
@@ -61,4 +61,11 @@
Device getDeviceByLongitudeAsc(String mac);
List<String> getMacsByOrganizationId(List<Object> organizationIdList);
+
+ //������������������
+ List<Device> getDeviceById1(int id);
+ //������������������
+ List<Device> getDeviceById2(int id);
+ //������������������
+ List<Device> getDeviceById3(int id);
}
diff --git a/src/main/java/com/moral/service/HistoryHourlyService.java b/src/main/java/com/moral/service/HistoryHourlyService.java
index e6ca84a..ad011f6 100644
--- a/src/main/java/com/moral/service/HistoryHourlyService.java
+++ b/src/main/java/com/moral/service/HistoryHourlyService.java
@@ -12,4 +12,13 @@
Map<String, Object> getPollutionSourceDataAll(Map<String, Object> parameters) throws Exception;
Point getDirPoint(Map<String, Object> parameters) throws Exception;
+
+ //������TVOC������
+ String getTVOCByMac(String mac,String time,String sensor);
+ //������������������
+ String getPressureByMac(String mac,String time);
+
+ //������historyHourly���������������
+
+ Map<String,Object> getDataByMac(String mac,String time);
}
diff --git a/src/main/java/com/moral/service/MonitorPointService.java b/src/main/java/com/moral/service/MonitorPointService.java
index 268b7c3..c0fb66d 100644
--- a/src/main/java/com/moral/service/MonitorPointService.java
+++ b/src/main/java/com/moral/service/MonitorPointService.java
@@ -4,7 +4,9 @@
import java.util.List;
import java.util.Map;
+import com.alibaba.fastjson.JSONObject;
import com.moral.common.bean.PageBean;
+import com.moral.entity.Device;
import com.moral.entity.MonitorPoint;
public interface MonitorPointService {
@@ -41,4 +43,10 @@
void isCompensateCalculation(Map<String, Object> parameters);
Map<String, Object> selectAllById(String id);
+
+ //������monitorPointId������������������������������������
+ List<Device> getDeviceList(int id);
+
+ //���������������������������id
+ JSONObject getMonitorPointById(int id, String Time, int i, String sensor);
}
diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
index cc3ce03..5311f2e 100644
--- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -635,4 +635,19 @@
public List<String> getMacsByOrganizationId(List<Object> organizationIdList) {
return deviceMapper.getMacsByOrganizationId(organizationIdList);
}
+
+ @Override
+ public List<Device> getDeviceById1(int id) {
+ return deviceMapper.getDeviceById1(id);
+ }
+
+ @Override
+ public List<Device> getDeviceById2(int id) {
+ return deviceMapper.getDeviceById2(id);
+ }
+
+ @Override
+ public List<Device> getDeviceById3(int id) {
+ return deviceMapper.getDeviceById3(id);
+ }
}
diff --git a/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java
index 314a26d..bd36de4 100644
--- a/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java
@@ -100,6 +100,21 @@
}
@Override
+ public String getTVOCByMac(String mac,String time,String sensor) {
+ return historyHourlyMapper.getTVOCByMac(mac,time,sensor);
+ }
+
+ @Override
+ public String getPressureByMac(String mac, String time) {
+ return historyHourlyMapper.getPressureByMac(mac,time);
+ }
+
+ @Override
+ public Map<String,Object> getDataByMac(String mac, String time) {
+ return historyHourlyMapper.getDataByMac(mac,time);
+ }
+
+ @Override
public Point getDirPoint(Map<String, Object> parameters) throws Exception {
Map<String, Object> pollutionSourceData = getPollutionSourceDataByHour(parameters);
if (MapUtils.isEmpty(pollutionSourceData)) {
diff --git a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
index 0f8c004..e17994e 100644
--- a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
@@ -1,5 +1,6 @@
package com.moral.service.impl;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -13,8 +14,14 @@
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.moral.mapper.DictionaryDataMapper;
import com.moral.mapper.OrganizationMapper;
+import com.moral.service.HistoryHourlyService;
+import com.moral.util.MyLatLng;
+import com.moral.util.mapUtils;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
@@ -56,6 +63,9 @@
@Resource
private OrganizationService organizationService;
+
+ @Resource
+ private HistoryHourlyService historyHourlyService;
private static Class ENTITY_CLASS = MonitorPoint.class;
@Override
@@ -364,4 +374,364 @@
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);
+
+ System.out.println("pressure2="+pressure2);
+ 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 = "������������������������������������������������������������";
+ }
+ System.out.println(list1);
+ 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;
+ 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 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);
+ locationList.add(firstLocation);
+ locationList.add(secondLoction);
+ locationList.add(thirdLocation);
+ locationList.add(fourthLoction);
+ params.put("locationList", locationList);
+
+ String preAngleDeviceString = JSON.toJSON(preAngleDeviceList).toString();
+ params.put("preAngleDeviceString", preAngleDeviceString);//���������������������������
+ } else {
+ params.put("preAngleDeviceString", "");
+ }
+ //String preAngleDeviceString=preAngleDeviceList.
+
+ params.put("wind", wind);
+ params.put("list1", list1);
+ params.put("deviceList", deviceList);
+ params.put("latitudeCompany", latitudeCompany);
+ params.put("longitudeCompany", longitudeCompany);
+ }
+
+ return params;
+ }
+
+
}
diff --git a/src/main/java/com/moral/util/MyLatLng.java b/src/main/java/com/moral/util/MyLatLng.java
new file mode 100644
index 0000000..37417f5
--- /dev/null
+++ b/src/main/java/com/moral/util/MyLatLng.java
@@ -0,0 +1,27 @@
+package com.moral.util;
+
+ public class MyLatLng {
+ final static double Rc=6378137;
+ final static double Rj=6356725;
+ double m_LoDeg,m_LoMin,m_LoSec;
+ double m_LaDeg,m_LaMin,m_LaSec;
+ double m_Longitude,m_Latitude;
+ double m_RadLo,m_RadLa;
+ double Ec;
+ double Ed;
+ public MyLatLng(double longitude, double latitude){
+ m_LoDeg=(int)longitude;
+ m_LoMin=(int)((longitude-m_LoDeg)*60);
+ m_LoSec=(longitude-m_LoDeg-m_LoMin/60.)*3600;
+
+ m_LaDeg=(int)latitude;
+ m_LaMin=(int)((latitude-m_LaDeg)*60);
+ m_LaSec=(latitude-m_LaDeg-m_LaMin/60.)*3600;
+
+ m_Longitude=longitude;
+ m_Latitude=latitude;
+ m_RadLo=longitude*Math.PI/180.;
+ m_RadLa=latitude*Math.PI/180.;
+ Ec=Rj+(Rc-Rj)*(90.-m_Latitude)/90.;
+ Ed=Ec*Math.cos(m_RadLa);
+}}
diff --git a/src/main/java/com/moral/util/mapUtils.java b/src/main/java/com/moral/util/mapUtils.java
new file mode 100644
index 0000000..98d66ff
--- /dev/null
+++ b/src/main/java/com/moral/util/mapUtils.java
@@ -0,0 +1,73 @@
+package com.moral.util;
+
+import java.text.DecimalFormat;
+
+public class mapUtils {
+ /**
+ * ������AB������������������������������
+ * @param A A���������������
+ * @param B B���������������
+ * @return AB���������������������������������0~360���
+ */
+ /** 180�� **/
+ private static final DecimalFormat df = new DecimalFormat("0.000000");
+ //������������������
+ private static final double EARTH_RADIUS = 6378137;
+ //�����������������������������
+ private static double rad(double d){
+ return d * Math.PI / 180.0;
+ }
+
+ public static double getDistance(double lng1, double lat1, double lng2, double lat2){
+ double radLat1 = rad(lat1);
+ double radLat2 = rad(lat2);
+ double a = radLat1 - radLat2;
+ double b = rad(lng1) - rad(lng2);
+ double s = 2 * Math.asin(
+ Math.sqrt(
+ Math.pow(Math.sin(a/2),2)
+ + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)
+ )
+ );
+ s = s * EARTH_RADIUS;
+ s = Math.round(s * 10000) / 10000;
+ return s;
+ }
+
+
+ public static double getAngle(MyLatLng A,MyLatLng B){
+ double dx=(B.m_RadLo-A.m_RadLo)*A.Ed;
+ double dy=(B.m_RadLa-A.m_RadLa)*A.Ec;
+ double angle=0.0;
+ angle=Math.atan(Math.abs(dx/dy))*180./Math.PI;
+ double dLo=B.m_Longitude-A.m_Longitude;
+ double dLa=B.m_Latitude-A.m_Latitude;
+ if(dLo>0&&dLa<=0){
+ angle=(90.-angle)+90;
+ }
+ else if(dLo<=0&&dLa<0){
+ angle=angle+180.;
+ }else if(dLo<0&&dLa>=0){
+ angle= (90.-angle)+270;
+ }
+ return angle;
+ }
+ public static String[] calLocationByDistanceAndLocationAndDirection(double angle, double startLong,double startLat, double distance){
+ String[] result = new String[2];
+ //���������������������������������������
+ double �� = distance/EARTH_RADIUS;
+ // ���������radian���������������������������
+ angle = Math.toRadians(angle);
+ startLong = Math.toRadians(startLong);
+ startLat = Math.toRadians(startLat);
+ double lat = Math.asin(Math.sin(startLat)*Math.cos(��)+Math.cos(startLat)*Math.sin(��)*Math.cos(angle));
+ double lon = startLong + Math.atan2(Math.sin(angle)*Math.sin(��)*Math.cos(startLat),Math.cos(��)-Math.sin(startLat)*Math.sin(lat));
+ // ���������������10���������������
+ lon = Math.toDegrees(lon);
+ lat = Math.toDegrees(lat);
+ result[0] = df.format(lon);
+ result[1] = df.format(lat);
+ return result;
+ }
+
+}
diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml
index c2c17b5..5c53568 100644
--- a/src/main/resources/mapper/DeviceMapper.xml
+++ b/src/main/resources/mapper/DeviceMapper.xml
@@ -430,4 +430,15 @@
AND d.is_delete = '0'
</select>
+ <select id="getDeviceById1" resultType="com.moral.entity.Device">
+ SELECT d.* FROM `device` as d,monitor_point as mp,device_property as dp where d.monitor_point_id=mp.id and d.id=dp.id and dp.device_tech=1 and d.monitor_point_id=#{id}
+ </select>
+ <select id="getDeviceById2" resultType="com.moral.entity.Device">
+ SELECT d.* FROM `device` as d,monitor_point as mp,device_property as dp where d.monitor_point_id=mp.id and d.id=dp.id and dp.device_tech=2 and d.monitor_point_id=#{id}
+ </select>
+ <select id="getDeviceById3" resultType="com.moral.entity.Device">
+ SELECT d.* FROM `device` as d,monitor_point as mp,device_property as dp where d.monitor_point_id=mp.id and d.id=dp.id and dp.device_tech=3 and d.monitor_point_id=#{id}
+ </select>
+
+
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/HistoryHourlyMapper.xml b/src/main/resources/mapper/HistoryHourlyMapper.xml
index 5f6a59c..b428cba 100644
--- a/src/main/resources/mapper/HistoryHourlyMapper.xml
+++ b/src/main/resources/mapper/HistoryHourlyMapper.xml
@@ -52,4 +52,14 @@
order by time desc
limit 0,1
</select>
+
+ <select id="getTVOCByMac" resultType="java.lang.String">
+ select json->'$.${sensor}[0]' as e17 from history_hourly where mac=#{mac} and time=#{time}
+ </select>
+ <select id="getPressureByMac" resultType="java.lang.String">
+ select json->'$.e28[0]' as e28 from history_hourly where mac=#{mac} and time=#{time}
+ </select>
+ <select id="getDataByMac" resultType="java.util.Map">
+ select json from history_hourly where mac=#{mac} and time=#{time}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/MonitorPointMapper.xml b/src/main/resources/mapper/MonitorPointMapper.xml
index 1ecd9d7..8b59ad0 100644
--- a/src/main/resources/mapper/MonitorPointMapper.xml
+++ b/src/main/resources/mapper/MonitorPointMapper.xml
@@ -156,4 +156,13 @@
#{organizationId}
</foreach>
</select>
+
+ <select id="getDeviceList" resultType="com.moral.entity.Device">
+ SELECT d.* FROM `device` as d,monitor_point as mp
+ where d.monitor_point_id=mp.id
+ and mp.id=#{id}
+ </select>
+ <select id="getMonitorPointById" resultType="com.moral.entity.MonitorPoint">
+ select * from monitor_point where id=#{id}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/webapp/img/company_01.png b/src/main/webapp/img/company_01.png
new file mode 100644
index 0000000..62e2926
--- /dev/null
+++ b/src/main/webapp/img/company_01.png
Binary files differ
diff --git a/src/main/webapp/img/company_02.png b/src/main/webapp/img/company_02.png
new file mode 100644
index 0000000..39eaaeb
--- /dev/null
+++ b/src/main/webapp/img/company_02.png
Binary files differ
diff --git a/src/main/webapp/img/company_03.png b/src/main/webapp/img/company_03.png
new file mode 100644
index 0000000..c6c3a5a
--- /dev/null
+++ b/src/main/webapp/img/company_03.png
Binary files differ
diff --git a/src/main/webapp/view/pressureMap.jsp b/src/main/webapp/view/pressureMap.jsp
new file mode 100644
index 0000000..a5039c3
--- /dev/null
+++ b/src/main/webapp/view/pressureMap.jsp
@@ -0,0 +1,118 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@page isELIgnored="false" %>
+
+<!DOCTYPE html>
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
+ <style type="text/css">
+ body, html, #allmap {
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ margin: 0;
+ font-family: "������������";
+ }
+ #box {
+ width:300px;
+ height:500px;
+ top:80px;
+ right:30px;
+ position:absolute;
+ z-index:1;
+ border:2px solid red;
+ background-color:gainsboro;
+ opacity: 0.8;
+ }
+ </style>
+ <script type="text/javascript"
+ src="http://api.map.baidu.com/api?v=2.0&ak=rER1sgBIcQxkfNSlm2wmBGZGgEERrooM"></script>
+ <script type="text/javascript" src="/js/jquery.min.js"></script>
+ <script type="text/javascript" src="/js/utils.js"></script>
+ <script type="text/javascript">
+ if (typeof (JSON) == 'undefined') {
+ $.getScript("js/json2.js");
+ }
+ </script>
+ <script type="text/javascript" src="/js/paging.js"></script>
+ <title>������������</title>
+</head>
+<body>
+<div id="allmap" style="z-index: 0" ;>
+</div>
+<div id="box">
+ <p>
+ <img src="/img/company_01.png" style="width: 30px;height: 30px;margin-left: 15px;"/> <span style="position: relative;top: -9px;"> --->������</span>
+ </p>
+ <p>
+ <img src="/img/company_02.png" style="width: 30px;height: 30px;margin-left: 15px;"/> <span style="position: relative;top: -9px;"> --->������</span>
+ </p>
+ <p>
+ <img src="/img/company_03.png" style="width: 30px;height: 30px;margin-left: 15px;"/> <span style="position: relative;top: -9px;"> --->������</span>
+ <br/>
+ <br/>
+ </p>
+ <div id="purify">
+ </div>
+</div>
+<div id="mapParams" style="display: none;">
+ ${requestScope.params}
+</div>
+</body>
+
+</html>
+<script type="text/javascript">
+ // ������������API������
+ var map = new BMap.Map("allmap"); // ������Map������
+ map.enableScrollWheelZoom(true); //������������������������
+ var params = $.parseJSON($("#mapParams").html());
+ var longitude = params["longitude"];
+ var latitude = params["latitude"];
+ map.centerAndZoom(new BMap.Point(longitude, latitude), 17); // ���������������,������������������������������������
+ // ���������������������������
+
+ $("#purify").append("<p style='margin-left: 15px;'>������������" + params["collectionRate"] + "</p>");
+ /* var infoWindow = new BMap.InfoWindow("<p style='font-size:14px;'>" + text + "</p>");
+ mark4.addEventListener("click", function () {
+ this.openInfoWindow(infoWindow);
+ });*/
+
+ var device1 = params["device1"];
+ if (device1 != null) {
+ for (var i = 0; i < device1.length; i++) {
+ var icon1 = new BMap.Icon("/img/company_01.png", new BMap.Size(48, 48));
+ var mark1 = new BMap.Marker(new BMap.Point(device1[i].longitude, device1[i].latitude), {icon: icon1});
+ map.addOverlay(mark1);
+ }
+ }
+
+ var device2 = params["device2"];
+ if (device2 != null) {
+ for (var i = 0; i < device2.length; i++) {
+ var icon2 = new BMap.Icon("/img/company_02.png", new BMap.Size(48, 48));
+ var mark2 = new BMap.Marker(new BMap.Point(device2[i].longitude, device2[i].latitude), {icon: icon2});
+ map.addOverlay(mark2);
+ }
+ }
+
+ var device3 = params["device3"];
+ if (device3 != null) {
+ for (var i = 0; i < device3.length; i++) {
+ var icon3 = new BMap.Icon("/img/company_03.png", new BMap.Size(48, 48));
+ var mark3 = new BMap.Marker(new BMap.Point(device3[i].longitude, device3[i].latitude), {icon: icon3});
+ map.addOverlay(mark3);
+ }
+ }
+
+
+ //������������������������
+ map.addControl(new BMap.MapTypeControl({
+ mapTypes: [
+ BMAP_NORMAL_MAP,
+ BMAP_HYBRID_MAP
+ ]
+ }));
+</script>
+
diff --git a/src/main/webapp/view/purityMap.jsp b/src/main/webapp/view/purityMap.jsp
new file mode 100644
index 0000000..4276a75
--- /dev/null
+++ b/src/main/webapp/view/purityMap.jsp
@@ -0,0 +1,119 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@page isELIgnored="false" %>
+
+<!DOCTYPE html>
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
+ <style type="text/css">
+ body, html, #allmap {
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ margin: 0;
+ font-family: "������������";
+ }
+ #box {
+ width:300px;
+ height:500px;
+ top:80px;
+ right:30px;
+ position:absolute;
+ z-index:1;
+ border:2px solid red;
+ background-color:gainsboro;
+ opacity: 0.8;
+ }
+ </style>
+ <script type="text/javascript"
+ src="http://api.map.baidu.com/api?v=2.0&ak=rER1sgBIcQxkfNSlm2wmBGZGgEERrooM"></script>
+ <script type="text/javascript" src="/js/jquery.min.js"></script>
+ <script type="text/javascript" src="/js/utils.js"></script>
+ <script type="text/javascript">
+ if (typeof (JSON) == 'undefined') {
+ $.getScript("js/json2.js");
+ }
+ </script>
+ <script type="text/javascript" src="/js/paging.js"></script>
+ <title>������������</title>
+</head>
+<body>
+<div id="allmap" style="z-index: 0" ;>
+</div>
+<div id="box">
+ <p>
+ <img src="/img/company_01.png" style="width: 30px;height: 30px;margin-left: 15px;"/> <span style="position: relative;top: -9px;"> --->������</span>
+ </p>
+ <p>
+ <img src="/img/company_02.png" style="width: 30px;height: 30px;margin-left: 15px;"/> <span style="position: relative;top: -9px;"> --->������</span>
+ </p>
+ <p>
+ <img src="/img/company_03.png" style="width: 30px;height: 30px;margin-left: 15px;"/> <span style="position: relative;top: -9px;"> --->������</span>
+ <br/>
+ <br/>
+ </p>
+ <div id="purify">
+ </div>
+ <p style="margin-left: 22px;margin-top: 130px; color: red;font-size: 14px"><--������������������������������������������90%--></p>
+</div>
+<div id="mapParams" style="display: none;">
+ ${requestScope.mapParams}
+</div>
+</body>
+
+</html>
+<script type="text/javascript">
+ // ������������API������
+ var map = new BMap.Map("allmap"); // ������Map������
+ map.enableScrollWheelZoom(true); //������������������������
+ var params = $.parseJSON($("#mapParams").html());
+ var longitude = params["longitude"];
+ var latitude = params["latitude"];
+ map.centerAndZoom(new BMap.Point(longitude, latitude), 17); // ���������������,������������������������������������
+ // ���������������������������
+
+ $("#purify").append("<p style='margin-left: 15px;'>������������" + params["purificationRate"] + "</p>");
+ /* var infoWindow = new BMap.InfoWindow("<p style='font-size:14px;'>" + text + "</p>");
+ mark4.addEventListener("click", function () {
+ this.openInfoWindow(infoWindow);
+ });*/
+
+ var device1 = params["device1"];
+ if (device1 != null) {
+ for (var i = 0; i < device1.length; i++) {
+ var icon1 = new BMap.Icon("/img/company_01.png", new BMap.Size(48, 48));
+ var mark1 = new BMap.Marker(new BMap.Point(device1[i].longitude, device1[i].latitude), {icon: icon1});
+ map.addOverlay(mark1);
+ }
+ }
+
+ var device2 = params["device2"];
+ if (device2 != null) {
+ for (var i = 0; i < device2.length; i++) {
+ var icon2 = new BMap.Icon("/img/company_02.png", new BMap.Size(48, 48));
+ var mark2 = new BMap.Marker(new BMap.Point(device2[i].longitude, device2[i].latitude), {icon: icon2});
+ map.addOverlay(mark2);
+ }
+ }
+
+ var device3 = params["device3"];
+ if (device3 != null) {
+ for (var i = 0; i < device3.length; i++) {
+ var icon3 = new BMap.Icon("/img/company_03.png", new BMap.Size(48, 48));
+ var mark3 = new BMap.Marker(new BMap.Point(device3[i].longitude, device3[i].latitude), {icon: icon3});
+ map.addOverlay(mark3);
+ }
+ }
+
+
+ //������������������������
+ map.addControl(new BMap.MapTypeControl({
+ mapTypes: [
+ BMAP_NORMAL_MAP,
+ BMAP_HYBRID_MAP
+ ]
+ }));
+</script>
+
diff --git a/src/main/webapp/view/unorganizedMap.jsp b/src/main/webapp/view/unorganizedMap.jsp
new file mode 100644
index 0000000..f74b10e
--- /dev/null
+++ b/src/main/webapp/view/unorganizedMap.jsp
@@ -0,0 +1,243 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@page isELIgnored="false" %>
+
+<!DOCTYPE html>
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
+ <style type="text/css">
+ body, html, #allmap {
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ margin: 0;
+ font-family: "������������";
+ }
+ #box {
+ width:300px;
+ height:100px;
+ top:80px;
+ left:30px;
+ position:absolute;
+ z-index:1;
+ border:0px solid red;
+ background-color:#f5f3f0;
+ opacity: 0.8;
+ }
+ #cpm {
+ width: 300px;
+ height: 100px;
+ position: absolute;
+ background-color: #ffffff;
+ display: none;
+ left: 50%;
+ top: 50%;
+ margin-left: -150px;
+ margin-top: -50px;
+ z-index: 11;
+ color: #000000;
+ border: 2px solid #FF7F50;
+ font-size: 14px;
+ line-height: 100px;
+ text-align: center;
+ }
+ </style>
+ <script type="text/javascript"
+ src="http://api.map.baidu.com/api?v=2.0&ak=rER1sgBIcQxkfNSlm2wmBGZGgEERrooM"></script>
+ <script type="text/javascript" src="/js/jquery.min.js"></script>
+ <script type="text/javascript" src="/js/utils.js"></script>
+ <script type="text/javascript">
+ if (typeof (JSON) == 'undefined') {
+ $.getScript("js/json2.js");
+ }
+ </script>
+ <script type="text/javascript" src="/js/paging.js"></script>
+ <title>������������</title>
+</head>
+<body>
+<div id="cpm">������������������������������������������������������</div>
+<div id="allmap" style="z-index: 0" ;>
+</div>
+<div id="box">
+ <p style="text-indent: 2em;line-height: 25px;color: red">������������������������������������������������������������������������������������������������������������</p>
+</div>
+<div id="mapParams" style="display: none;">
+ ${requestScope.params}
+</div>
+</body>
+
+</html>
+<script type="text/javascript">
+ // ������������API������
+ var map = new BMap.Map("allmap",{minZoom:14,maxZoom:19}); // ������Map������
+ map.enableScrollWheelZoom(true); //������������������������
+ var params = $.parseJSON($("#mapParams").html());
+ var longitude = params["longitudeCompany"];
+ var latitude = params["latitudeCompany"];
+ var point=new BMap.Point(longitude, latitude);
+ map.centerAndZoom(point, 18.5); // ���������������,������������������������������������
+ var device1 = params["deviceList"];
+ var preAngleDeviceString = params["preAngleDeviceString"];
+ var wind = params["wind"];
+ var devices=[];
+ var locationList=params["locationList"];
+
+ var color;
+ if (preAngleDeviceString!=""){
+ var preAngleDeviceList=JSON.parse(preAngleDeviceString);
+ var diff=preAngleDeviceList[0].sensor-preAngleDeviceList[1].sensor;
+ if (diff>0){
+ var polyline = new BMap.Polyline([
+ new BMap.Point(preAngleDeviceList[0].longitude, preAngleDeviceList[0].latitude),
+ new BMap.Point(locationList[0][0],locationList[0][1])
+ ], {strokeColor:"red", strokeWeight:8, strokeOpacity:0.5}); //������������
+ map.addOverlay(polyline); //������������
+ var polyline1 = new BMap.Polyline([
+ new BMap.Point(locationList[0][0],locationList[0][1]),
+ new BMap.Point(locationList[1][0],locationList[1][1])
+ ], {strokeColor:"Tomato", strokeWeight:8, strokeOpacity:0.5}); //������������
+ map.addOverlay(polyline1); //������������
+ var polyline2 = new BMap.Polyline([
+ new BMap.Point(locationList[1][0],locationList[1][1]),
+ new BMap.Point(locationList[2][0],locationList[2 ][1])
+ ], {strokeColor:"Coral", strokeWeight:8, strokeOpacity:0.5}); //������������
+ map.addOverlay(polyline2); //������������
+ var polyline3 = new BMap.Polyline([
+ new BMap.Point(locationList[2][0],locationList[2][1]),
+ new BMap.Point(locationList[3][0],locationList[3][1])
+ ], {strokeColor:"Orange", strokeWeight:8, strokeOpacity:0.5}); //������������
+ map.addOverlay(polyline3); //������������
+ var polyline4 = new BMap.Polyline([
+ new BMap.Point(locationList[3][0],locationList[3][1]),
+ new BMap.Point(preAngleDeviceList[1].longitude, preAngleDeviceList[1].latitude)
+ ], {strokeColor:"Gold", strokeWeight:8, strokeOpacity:0.5}); //������������
+ map.addOverlay(polyline4); //������������
+ var arrowLineList = new Array();//������������������������
+ color="Gold";
+ arrowLineList[arrowLineList.length] = addArrow(polyline4,30,Math.PI/7,color);//������������������������
+ } else {
+ var polyline = new BMap.Polyline([
+ new BMap.Point(preAngleDeviceList[0].longitude, preAngleDeviceList[0].latitude),
+ new BMap.Point(locationList[0][0],locationList[0][1])
+ ], {strokeColor:"Gold", strokeWeight:8, strokeOpacity:0.5}); //������������
+ map.addOverlay(polyline); //������������
+ var polyline1 = new BMap.Polyline([
+ new BMap.Point(locationList[0][0],locationList[0][1]),
+ new BMap.Point(locationList[1][0],locationList[1][1])
+ ], {strokeColor:"Orange", strokeWeight:8, strokeOpacity:0.5}); //������������
+ map.addOverlay(polyline1); //������������
+ var polyline2 = new BMap.Polyline([
+ new BMap.Point(locationList[1][0],locationList[1][1]),
+ new BMap.Point(locationList[2][0],locationList[2 ][1])
+ ], {strokeColor:"Coral", strokeWeight:8, strokeOpacity:0.5}); //������������
+ map.addOverlay(polyline2); //������������
+ var polyline3 = new BMap.Polyline([
+ new BMap.Point(locationList[2][0],locationList[2][1]),
+ new BMap.Point(locationList[3][0],locationList[3][1])
+ ], {strokeColor:"Tomato", strokeWeight:8, strokeOpacity:0.5}); //������������
+ map.addOverlay(polyline3); //������������
+ var polyline4 = new BMap.Polyline([
+ new BMap.Point(locationList[3][0],locationList[3][1]),
+ new BMap.Point(preAngleDeviceList[1].longitude, preAngleDeviceList[1].latitude)
+ ], {strokeColor:"red", strokeWeight:8, strokeOpacity:0.5}); //������������
+ map.addOverlay(polyline4); //������������
+ var arrowLineList = new Array();//������������������������
+ color="red";
+ arrowLineList[arrowLineList.length] = addArrow(polyline4,28,Math.PI/7,color);//������������������������
+ }
+ }else {
+ document.getElementById("cpm").style.display = 'block';
+ }
+
+ if (device1 != null) {
+ for (var i = 0; i < device1.length; i++) {
+ var icon1 = new BMap.Icon("/img/ico_co00.png", new BMap.Size(48, 48));
+ var mark1 = new BMap.Marker(new BMap.Point(device1[i].longitude, device1[i].latitude), {icon: icon1});
+ devices.push( new BMap.Point(device1[i].longitude, device1[i].latitude));
+ map.addOverlay(mark1);
+ }
+ }
+ /* var polygon = new BMap.Polygon(devices, {strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5}); //���������������
+ map.addOverlay(polygon); //���������������*/
+
+
+
+
+
+
+ //������������������������
+ map.addControl(new BMap.MapTypeControl({
+ mapTypes: [
+ BMAP_NORMAL_MAP,
+ BMAP_HYBRID_MAP
+ ]
+ }));
+
+
+
+ //arrowLineList[arrowLineList.length] = addArrow(polyline,18,Math.PI/7);//������������������������
+ function addArrow(polyline,length,angleValue,color){ //���������������������
+ var linePoint=polyline.getPath();//���������������
+ var arrowCount=linePoint.length;
+ for(var i =1;i<arrowCount;i++){ //������������������������
+ var pixelStart=map.pointToPixel(linePoint[i-1]);
+ var pixelEnd=map.pointToPixel(linePoint[i]);
+ var angle=angleValue;//������������������������
+ var r=length; // r/Math.sin(angle)������������������
+ var delta=0; //���������������������������������
+ var param=0; //������������������
+ var pixelTemX,pixelTemY;//���������������
+ var pixelX,pixelY,pixelX1,pixelY1;//���������������
+ if(pixelEnd.x-pixelStart.x==0){ //���������������������
+ pixelTemX=pixelEnd.x;
+ if(pixelEnd.y>pixelStart.y)
+ {
+ pixelTemY=pixelEnd.y-r;
+ }
+ else
+ {
+ pixelTemY=pixelEnd.y+r;
+ }
+ //���������������������������������������������������������������������������������������
+ pixelX=pixelTemX-r*Math.tan(angle);
+ pixelX1=pixelTemX+r*Math.tan(angle);
+ pixelY=pixelY1=pixelTemY;
+ }
+ else //���������������
+ {
+ delta=(pixelEnd.y-pixelStart.y)/(pixelEnd.x-pixelStart.x);
+ param=Math.sqrt(delta*delta+1);
+
+ if((pixelEnd.x-pixelStart.x)<0) //������������������
+ {
+ pixelTemX=pixelEnd.x+ r/param;
+ pixelTemY=pixelEnd.y+delta*r/param;
+ }
+ else//������������������
+ {
+ pixelTemX=pixelEnd.x- r/param;
+ pixelTemY=pixelEnd.y-delta*r/param;
+ }
+ //���������������������������������������������������������������������������������������
+ pixelX=pixelTemX+ Math.tan(angle)*r*delta/param;
+ pixelY=pixelTemY-Math.tan(angle)*r/param;
+
+ pixelX1=pixelTemX- Math.tan(angle)*r*delta/param;
+ pixelY1=pixelTemY+Math.tan(angle)*r/param;
+ }
+
+ var pointArrow=map.pixelToPoint(new BMap.Pixel(pixelX,pixelY));
+ var pointArrow1=map.pixelToPoint(new BMap.Pixel(pixelX1,pixelY1));
+ var Arrow = new BMap.Polyline([
+ pointArrow,
+ linePoint[i],
+ pointArrow1
+ ], {strokeColor: color, strokeWeight: 6, strokeOpacity: 0.5});
+ map.addOverlay(Arrow);
+ return Arrow;
+ }
+ }
+</script>
+
--
Gitblit v1.8.0