From 1babbf1c0b2bc8d27f2874c85369e394b545594a Mon Sep 17 00:00:00 2001 From: ZhuDongming <773644075@qq.com> Date: Mon, 11 May 2020 11:24:00 +0800 Subject: [PATCH] add轨迹信息显示按秒级显示,update轨迹数据先从history表查询,update报表单位问题 --- src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java | 112 +++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 83 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java index 6ba5929..314a26d 100644 --- a/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java +++ b/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java @@ -5,8 +5,6 @@ import java.util.List; import java.util.Map; -import javax.annotation.Resource; - import org.apache.commons.collections.MapUtils; import org.springframework.stereotype.Service; @@ -17,6 +15,9 @@ import com.moral.mapper.SensorMapper; import com.moral.service.DeviceService; import com.moral.service.HistoryHourlyService; +import com.moral.service.SensorService; + +import javax.annotation.Resource; @Service public class HistoryHourlyServiceImpl implements HistoryHourlyService { @@ -25,6 +26,9 @@ @Resource private DeviceService deviceService; + + @Resource + private SensorService sensorService; @Resource private SensorMapper sensorMapper; @@ -37,31 +41,81 @@ sensorKeys.add(sensor.getSensorKey()); } parameters.put("sensorKeys", sensorKeys); - /* if(pollutionSourceData.get("e6")!=null&&pollutionSourceData.get("e18")!=null){ - pollutionSourceData=historyHourlyMapper.getPollutionSourceData(parameters); + Map<String, Object> pollutionSourceData = historyHourlyMapper.getPollutionSourceData(parameters); + if (MapUtils.isNotEmpty(pollutionSourceData)) { + Map<String, String> sensorsMap = sensorService.getSensorsMap(parameters); + String selectSensorKey = parameters.get("sensorKey").toString(); + for (Map.Entry<String, String> s : sensorsMap.entrySet()) { + if (selectSensorKey.equals(s.getKey())) { + selectSensorKey = s.getValue(); + } + } + pollutionSourceData.put("selectSensorKey", selectSensorKey); } - return pollutionSourceData;*/ - System.out.println("----"+historyHourlyMapper.getPollutionSourceData(parameters)); - return historyHourlyMapper.getPollutionSourceData(parameters); + return pollutionSourceData; } @Override - public Point getDirPoint(Map<String, Object> parameters) throws Exception{ - Map<String,Object> pollutionSourceData=getPollutionSourceData(parameters); + public Map<String, Object> getPollutionSourceDataByHour(Map<String, Object> parameters) throws Exception { + List<Sensor> sensors = sensorMapper.getSensorsByMac(parameters); + List<String> sensorKeys = new ArrayList<>(); + for (Sensor sensor : sensors) { + sensorKeys.add(sensor.getSensorKey()); + } + parameters.put("sensorKeys", sensorKeys); + Map<String, Object> pollutionSourceData = historyHourlyMapper.getPollutionSourceDataByHour(parameters); + if (MapUtils.isNotEmpty(pollutionSourceData)) { + Map<String, String> sensorsMap = sensorService.getSensorsMap(parameters); + String selectSensorKey = parameters.get("sensorKey").toString(); + for (Map.Entry<String, String> s : sensorsMap.entrySet()) { + if (selectSensorKey.equals(s.getKey())) { + selectSensorKey = s.getValue(); + } + } + pollutionSourceData.put("selectSensorKey", selectSensorKey); + } + return pollutionSourceData; + } + + @Override + public Map<String, Object> getPollutionSourceDataAll(Map<String, Object> parameters) throws Exception { + List<Sensor> sensors = sensorMapper.getSensorsByMac(parameters); + List<String> sensorKeys = new ArrayList<>(); + for (Sensor sensor : sensors) { + sensorKeys.add(sensor.getSensorKey()); + } + parameters.put("sensorKeys", sensorKeys); + Map<String, Object> pollutionSourceData = historyHourlyMapper.getPollutionSourceDataAll(parameters); + if (MapUtils.isNotEmpty(pollutionSourceData)) { + Map<String, String> sensorsMap = sensorService.getSensorsMap(parameters); + String selectSensorKey = parameters.get("sensorKey").toString(); + for (Map.Entry<String, String> s : sensorsMap.entrySet()) { + if (selectSensorKey.equals(s.getKey())) { + selectSensorKey = s.getValue(); + } + } + pollutionSourceData.put("selectSensorKey", selectSensorKey); + } + return pollutionSourceData; + } + + @Override + public Point getDirPoint(Map<String, Object> parameters) throws Exception { + Map<String, Object> pollutionSourceData = getPollutionSourceDataByHour(parameters); + if (MapUtils.isEmpty(pollutionSourceData)) { + pollutionSourceData = getPollutionSourceDataAll(parameters); + } String mac = parameters.get("mac").toString(); Device device = deviceService.getDeviceByMac(mac, false); - Point pointEnd=new Point(); - if(MapUtils.isNotEmpty(pollutionSourceData)){ - System.out.println("pollutionSourceData"+pollutionSourceData); - if(pollutionSourceData.get("e18")!=null&&pollutionSourceData.get("e23")!=null&&pollutionSourceData.get("e6")!=null){ - double windSpeed=Double.valueOf(pollutionSourceData.get("e18").toString()); - double winDir=Double.valueOf(pollutionSourceData.get("e23").toString()); - double distance=windSpeed*3600; - double long1=device.getLongitude(); - double lat1=device.getLatitude(); - System.out.println("windSpeed:"+windSpeed+"---winDir:"+winDir+"---distance:"+distance+"--long1:"+long1+"--lat1:"+lat1); - String[] result=calLocationByDistanceAndLocationAndDirection(winDir,long1,lat1,distance); - System.out.println("result1���"+Double.valueOf(result[0])+"result2���"+Double.valueOf(result[1])); + Point pointEnd = new Point(); + if (MapUtils.isNotEmpty(pollutionSourceData)) { + if (pollutionSourceData.get("e18") != null && pollutionSourceData.get("e23") != null) { + double windSpeed = Double.valueOf(pollutionSourceData.get("e18").toString()); + double winDir = Double.valueOf(pollutionSourceData.get("e23").toString()); + double distance = windSpeed * 3600; + double long1 = device.getLongitude(); + double lat1 = device.getLatitude(); + String[] result = calLocationByDistanceAndLocationAndDirection(winDir, long1, lat1, distance); pointEnd.setLng(Double.valueOf(result[0])); pointEnd.setLat(Double.valueOf(result[1])); } @@ -70,29 +124,29 @@ } - /** * ��������������������������������������������������������������������������� - * @param angle ��������������������������������������������� + * + * @param angle ��������������������������������������������� * @param startLong ��������������� - * @param startLat ��������������� - * @param distance ���������������m + * @param startLat ��������������� + * @param distance ���������������m * @return */ - private String[] calLocationByDistanceAndLocationAndDirection(double angle, double startLong,double startLat, double distance){ + private String[] calLocationByDistanceAndLocationAndDirection(double angle, double startLong, double startLat, double distance) { /** ������������ **/ final double R = 6371e3; /** 180�� **/ final DecimalFormat df = new DecimalFormat("0.000000"); String[] result = new String[2]; //��������������������������������������� - double �� = distance/R; + double �� = distance / R; // ���������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 lng = startLong + Math.atan2(Math.sin(angle)*Math.sin(��)*Math.cos(startLat),Math.cos(��)-Math.sin(startLat)*Math.sin(lat)); + double lat = Math.asin(Math.sin(startLat) * Math.cos(��) + Math.cos(startLat) * Math.sin(��) * Math.cos(angle)); + double lng = startLong + Math.atan2(Math.sin(angle) * Math.sin(��) * Math.cos(startLat), Math.cos(��) - Math.sin(startLat) * Math.sin(lat)); // ���������������10��������������� lng = Math.toDegrees(lng); lat = Math.toDegrees(lat); -- Gitblit v1.8.0