From 21ff37f83f27364720bb890cce4b6aa7ffc40562 Mon Sep 17 00:00:00 2001
From: 于紫祥_1901 <email@yuzixiang_1910>
Date: Wed, 21 Oct 2020 16:53:27 +0800
Subject: [PATCH] 报警

---
 src/main/resources/mapper/AlarmConfigMapper.xml                     |    9 
 src/main/java/com/moral/service/impl/DictionaryDataServiceImpl.java |    5 
 src/main/resources/mapper/DictionaryDataMapper.xml                  |    4 
 src/main/java/com/moral/mapper/DictionaryDataMapper.java            |    1 
 src/main/resources/mapper/DeviceMapper.xml                          |   14 +
 src/main/java/com/moral/service/DictionaryDataService.java          |    2 
 src/main/java/com/moral/service/AlarmConfigService.java             |    2 
 src/main/java/com/moral/mapper/HistoryMapper.java                   |    1 
 src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java    |   11 
 src/main/webapp/js/newmoralmap.js                                   |   62 ++++
 src/main/java/com/moral/service/impl/DeviceServiceImpl.java         |   13 +
 src/main/webapp/view/newmap.jsp                                     |   64 +++--
 src/main/java/com/moral/service/DeviceService.java                  |    2 
 src/main/java/com/moral/service/HistoryService.java                 |    2 
 src/main/webapp/view/lianxian.jsp                                   |  133 +++++++++++
 src/main/java/com/moral/service/impl/HistoryServiceImpl.java        |    4 
 src/main/java/com/moral/mapper/DeviceMapper.java                    |   94 ++++---
 src/main/resources/mapper/HistoryMapper.xml                         |    5 
 src/main/java/com/moral/controller/ScreenController.java            |  253 ++++++++++++++++++++
 src/main/java/com/moral/mapper/AlarmConfigMapper.java               |    5 
 20 files changed, 610 insertions(+), 76 deletions(-)

diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 40c2ba1..c55bbdf 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -4,6 +4,7 @@
 import java.lang.reflect.Array;
 import java.text.DateFormat;
 import java.text.DecimalFormat;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -39,14 +40,13 @@
 
 import com.rabbitmq.client.*;
 import com.rabbitmq.client.Channel;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.models.auth.In;
 import jdk.nashorn.internal.runtime.regexp.joni.Regex;
 import net.sf.json.JSONString;
-
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.net.ftp.FTPClient;
@@ -71,7 +71,6 @@
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.servlet.ModelAndView;
 import org.xml.sax.InputSource;
-
 import static com.moral.common.util.ResourceUtil.getValue;
 import static com.moral.common.util.WebUtils.getParametersStartingWith;
 import static java.util.Calendar.*;
@@ -2228,6 +2227,7 @@
     }
 
 
+
     @GetMapping("/contrastFactor")
     @ApiOperation(value = "������������", notes = "������������")
     @ApiImplicitParams(value = {
@@ -2248,6 +2248,251 @@
         return alarmData;
     }
 
+    @GetMapping("multiDeviceContrast")
+    @ApiOperation(value = "���������������������", notes = "���������������������")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "macs", value = "������mac,���������������������������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "sensorKey", value = "���������key", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "time", value = "������,������(���������2018-03-12)", required = true, paramType = "query", dataType = "String"),})
+    public ResultBean<List<Map<String, Object>>> multiDeviceSensor(HttpServletRequest request) throws Exception {
+        Map<String, Object> parameters = getParametersStartingWith(request, null);
+        ParameterUtils.getTimeType4Time(parameters);
+        List<Map<String, Object>> list = historyMinutelyService.getMultiDeviceSensorData(parameters);
+        return new ResultBean<List<Map<String, Object>>>(list);
+    }
+
+
+    @GetMapping("/tellAlarm")
+    @ResponseBody
+    public List<List> tellAlarm(@Param("states") String states,
+                                  @Param("orgId") String orgId,
+                                  @Param("accountId") String accountId,
+                                  @Param("states1") String states1,
+                                  @Param("regionCode") String regionCode) {
+        JSONArray stateList = JSONArray.parseArray(states);//���������������������
+        JSONArray stateList1 = JSONArray.parseArray(states1);//���10������������������
+        List<List> lookList = new ArrayList<>();
+        Map params = new HashMap();
+        String lookString = "";
+        //������������������������������������������������������������������������������
+        //���������������������������������������null
+        if (stateList1 != null && !states.equals(states1)) {
+            List<Map> listDevice = JSONObject.parseArray(stateList.toJSONString(), Map.class);
+            List<Map> listDevice1 = JSONObject.parseArray(stateList1.toJSONString(), Map.class);
+            //���������������������������������������
+            List<Map> deviceList = new ArrayList<Map>();
+            List<Map> deviceList1 = new ArrayList<Map>();
+            //���������������������id
+            List orgList = new ArrayList();
+            for (Map devices : listDevice) {
+                int monitorId = Integer.parseInt((String) devices.get("id"));
+                MonitorPoint monitorPoint = monitorPointService.byIdGetMonitorPoint(monitorId);
+                int org_id = monitorPoint.getOrganizationId();
+                orgList.add(org_id);
+                List<Map> devicesList = (List<Map>) devices.get("devices");
+                if (!devicesList.isEmpty()) {
+                    if (devicesList.size() > 1) {
+                        for (Map map : devicesList) {
+                            deviceList.add(map);
+                        }
+                    } else {
+                        deviceList.add((Map) ((List) devices.get("devices")).get(0));
+                    }
+                }
+            }
+            for (Map devices1 : listDevice1) {
+                int monitorId = Integer.parseInt((String) devices1.get("id"));
+                MonitorPoint monitorPoint = monitorPointService.byIdGetMonitorPoint(monitorId);
+                int org_id = monitorPoint.getOrganizationId();
+                List<Map> devicesList = (List<Map>) devices1.get("devices");
+                if (!devicesList.isEmpty()) {
+                    if (devicesList.size() > 1) {
+                        for (Map map : devicesList) {
+                            deviceList1.add(map);
+                        }
+                    } else {
+                        deviceList1.add((Map) ((List) devices1.get("devices")).get(0));
+                    }
+                }
+            }
+            List<String> macList = new ArrayList<String>();
+            //������������������������������������������mac���
+            for (Map map : deviceList) {
+                String state = (String) map.get("state");
+                String mac = (String) map.get("mac");
+                for (Map map1 : deviceList1) {
+                    String state1 = (String) map1.get("state");
+                    String mac1 = (String) map1.get("mac");
+                    if (mac.equals(mac1)) {
+                        if (Integer.parseInt(state) > Integer.parseInt(state1) && Integer.parseInt(state) != 4 /*&& Integer.parseInt(state1) == 0*/) {
+                            macList.add(mac + "-" + state + "-" + state1);
+                        }
+                    }
+                }
+            }
+            //������������������������
+            LinkedHashSet<Integer> orgS = new LinkedHashSet<Integer>(orgList);
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Date date = new Date(System.currentTimeMillis());
+            Date date1 = new Date(System.currentTimeMillis() - 1000);
+            //������������������
+            String time = formatter.format(date);
+            //������������������������������
+            String time1 = formatter.format(date1);
+            List<Map> alarmList = new ArrayList<Map>();
+            for (Integer org : orgS) {
+                int orgNum = alarmConfigService.containOrgId(org);
+                Map<String, Object> eMap = new HashMap<String, Object>();
+                if (orgNum == 1) {
+                    String alarmConfig = alarmConfigService.getValueByOrganizationId(Integer.parseInt(String.valueOf(org)));
+                    Map hashMap = JSON.parseObject(alarmConfig, HashMap.class);
+                    Map alarmLevels = (Map) hashMap.get("alarmLevels");
+                    //������������������������106���������
+                    for (int i = 1; i < 106; i++) {
+                        if (alarmLevels.containsKey("e" + i)) {
+                            Map map = (Map) alarmLevels.get("e" + i);
+                            if (!map.isEmpty()) {
+                                Integer enable = (Integer) map.get("enable");
+                                List increment = (List) map.get("increment");
+                                if (enable == 1) {
+                                    if (!(increment.get(0).toString().equals("0") && increment.get(1).toString().equals("0"))) {
+                                        eMap.put("e" + i, increment);
+                                    } else {
+                                        continue;
+                                    }
+                                } else {
+                                    continue;
+                                }
+                            }
+                        }
+                    }
+                } else {
+                    String defultAlarm = dictionaryDataService.getDefultAlarm();
+                    Map hashMap = JSON.parseObject(defultAlarm, HashMap.class);
+                    Map alarmLevels = (Map) hashMap.get("alarmLevels");
+                    //������������������������106���������
+                    for (int i = 1; i < 106; i++) {
+                        if (alarmLevels.containsKey("e" + i)) {
+                            Map map = (Map) alarmLevels.get("e" + i);
+                            if (!map.isEmpty()) {
+                                Integer enable = (Integer) map.get("enable");
+                                List increment = (List) map.get("increment");
+                                if (enable == 1) {
+                                    if (!(increment.get(0).toString().equals("0") && increment.get(1).toString().equals("0"))) {
+                                        eMap.put("e" + i, increment);
+                                    } else {
+                                        continue;
+                                    }
+                                } else {
+                                    continue;
+                                }
+                            }
+                        }
+                    }
+                }
+                Map map = new HashMap();
+                map.put("eMap", eMap);
+                map.put("org", org);
+                alarmList.add(map);
+            }
+            for (Map aEMap : alarmList) {
+                List<Map> values = new ArrayList<Map>();
+                if (macList.size() > 0) {
+                    for (String sMac : macList) {
+                        String[] aMac = sMac.split("-");
+                        String mac = aMac[0];
+                        //������������������������������������������������������������������������������������������������������������������������������������������������
+                        String value = historyService.getValueByMacAndTime(mac, time, time1);
+                        Map<String, String> map = new HashMap<String, String>();
+                        if (value == null) {
+                            Date date2 = new Date(System.currentTimeMillis() - 2000);
+                            //������������������������������
+                            String time2 = formatter.format(date1);
+                            value = historyService.getValueByMacAndTime(mac, time, time2);
+                            if (value == null) {
+                                Date date3 = new Date(System.currentTimeMillis() - 3000);
+                                //������������������������������
+                                String time3 = formatter.format(date1);
+                                value = historyService.getValueByMacAndTime(mac, time, time3);
+                            }
+                        }
+                        if (value != null) {
+                            map.put("mac", mac);
+                            map.put("value", value);
+                            map.put("state", aMac[1]);
+                            map.put("state1", aMac[2]);
+                            values.add(map);
+                        } else {
+                            continue;
+                        }
+                    }
+                }
+
+                if (values.size() > 0 && values.size() == macList.size()) {
+                    for (Map dataMap : values) {
+                        String oId = deviceService.byMacGetOrgId((String) dataMap.get("mac"));
+                        if (!(aEMap.get("org").toString()).equals(oId)) {
+                            continue;
+                        }
+                        List<String> list = new ArrayList<String>();
+                        Map sensorMap = JSONObject.parseObject((String) dataMap.get("value"));
+                        Iterator<String> iter = sensorMap.keySet().iterator();
+                        while (iter.hasNext()) {
+                            String key = iter.next();
+                            list.add(key);
+                        }
+                        String state = (String) dataMap.get("state");
+                        String state1 = (String) dataMap.get("state1");
+                        List<Map> mapList=new ArrayList();
+                        for (String key : list) {
+                            if (((Map) aEMap.get("eMap")).containsKey(key)) {
+                                Double val = Double.valueOf(sensorMap.get(key).toString());
+                                List valueList = (List) ((Map) aEMap.get("eMap")).get(key);
+                                Device device = deviceService.byMacGetDevice((String) dataMap.get("mac"));
+                                Map<String, Object> sensors = sensorService.getSensorBySensorKey(key);
+                                if (key.equals("e1") || key.equals("e2") || key.equals("e10") || key.equals("e11") || key.equals("e15") || key.equals("e16")) {
+                                    //������������������������
+                                    if ((state1.equals("0") || state1.equals("1")) && Integer.parseInt(state) > 1) {
+                                        if (val > Double.valueOf(String.valueOf(valueList.get(1)))) {
+                                            Map lookMap = new HashMap();
+                                            lookMap.put("time",time);
+                                            lookMap.put("name",device.getName());
+                                            lookMap.put("sensor",sensors.get("description"));
+                                            lookMap.put("value",val + ""+sensors.get("unit"));
+                                            mapList.add(lookMap);
+                                           //lookString = time+" "+device.getName()+sensors.get("description")+"="+val + sensors.get("unit")+"������";
+                                           //System.out.println(time + "====" + device.getName() + "=====" + sensors.get("description") + "======" + val + sensors.get("unit"));
+                                        }
+                                    }
+                                }else {//���������������������������
+                                    if (state1.equals("0")) {
+                                        if (val > Double.valueOf(String.valueOf(valueList.get(0)))) {
+                                            Map lookMap = new HashMap();
+                                            lookMap.put("time",time);
+                                            lookMap.put("name",device.getName());
+                                            lookMap.put("sensor",sensors.get("description"));
+                                            lookMap.put("value",val + ""+sensors.get("unit"));
+                                            mapList.add(lookMap);
+                                        }
+                                    }
+                                }
+
+                            }
+                        }
+                        if (mapList.size()>0){
+                            lookList.add(mapList);
+                        }else {
+                            continue;
+                        }
+                    }
+                }
+            }
+        }
+        return lookList;
+    }
+
+  /*  @GetMapping("/lianxian")
+    @ApiOperation(value = "������", notes = "������" )
     @GetMapping("multiDeviceContrast")
     @ApiOperation(value = "���������������������", notes = "���������������������")
     @ApiImplicitParams(value = {
@@ -2297,4 +2542,4 @@
         List<Map<String, Object>> list = historyMinutelyService.getDevicesSensorsToExcel(parameters);
         return new ResultBean<List<Map<String, Object>>>(list);
     }
-}
+}
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/AlarmConfigMapper.java b/src/main/java/com/moral/mapper/AlarmConfigMapper.java
index 848dd0a..0df0801 100644
--- a/src/main/java/com/moral/mapper/AlarmConfigMapper.java
+++ b/src/main/java/com/moral/mapper/AlarmConfigMapper.java
@@ -4,6 +4,7 @@
 import java.util.Map;
 
 import com.moral.entity.alarm.AlarmConfig;
+import org.apache.ibatis.annotations.Param;
 
 public interface AlarmConfigMapper {
     int deleteByPrimaryKey(Integer id);
@@ -23,4 +24,8 @@
     AlarmConfig selectByMonitorPointId(Integer mpId);
 
     AlarmConfig selectByDeviceMac(String mac);
+
+    public String getValueByOrganizationId(@Param("organizationId") int organizationId);
+
+    int containOrgId(@Param("orgId")Integer orgId);
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/DeviceMapper.java b/src/main/java/com/moral/mapper/DeviceMapper.java
index f5f97ac..3e19f58 100644
--- a/src/main/java/com/moral/mapper/DeviceMapper.java
+++ b/src/main/java/com/moral/mapper/DeviceMapper.java
@@ -11,66 +11,80 @@
 import org.apache.ibatis.annotations.Param;
 import tk.mybatis.mapper.entity.Example;
 
-public interface DeviceMapper extends BaseMapper<Device>{
+public interface DeviceMapper extends BaseMapper<Device> {
 
-	List<Map<String, Object>> getDeviceStatesByAccount(Map<String, Object> parameters);
-    List<Device>  selectWithRelationData(Example example);
-	List<Map<String, Object>> getSensorsByDevice(@Param("mac")String mac);
-	List<String> getDeviceMacByMonitorPointAndDeviceVersion(@Param("monitorPointId")Integer monitorPointId,@Param("deviceVersionId")Integer deviceVersionId);
+    List<Map<String, Object>> getDeviceStatesByAccount(Map<String, Object> parameters);
 
-	List<Map<String, Object>> getDeviceVersionIdByMonitorPoint(Integer monitorPointId);
+    List<Device> selectWithRelationData(Example example);
 
-	List<Device> selectByOrgIdAndDevName(@Param("orgId")Integer orgId, @Param("orgIds")List<Integer> orgIds,@Param("devState") String state,@Param("name")String name);
+    List<Map<String, Object>> getSensorsByDevice(@Param("mac") String mac);
 
-	/**
-	 *
-	 * @param orgId
-	 * @param mpId
-	 * @return ���������������������
-	 */
-	List<Device> selectByOrgIdAndMpId(@Param("orgId")Integer orgId,@Param("orgIds")List<Integer> orgIds,@Param("mpId")Integer mpId);
-	List<Device> selectByMap(Map<String, Object> params);
-	Device selectWithOrgIdsByMac(String mac);
-	List<Integer> getDeviceVersionIdByAreaCode(Map<String, Object> parameters);
-	Integer getDeviceCountByRegion(Map<String, Object> parameters);
-	List<Map> countByTimes(@Param("start")Date start,@Param("end")Date end,@Param("format")String format);
+    List<String> getDeviceMacByMonitorPointAndDeviceVersion(@Param("monitorPointId") Integer monitorPointId, @Param("deviceVersionId") Integer deviceVersionId);
 
-	List<Device> getDevicesByProfession(Map<String, Object> parameters);
+    List<Map<String, Object>> getDeviceVersionIdByMonitorPoint(Integer monitorPointId);
 
-	List<Device> getDevicesByOrganizationId(Map<String, Object> parameters);
-	List<Map<String, Object>> getDevicesStateByRegion(Map<String, Object> parameters);
+    List<Device> selectByOrgIdAndDevName(@Param("orgId") Integer orgId, @Param("orgIds") List<Integer> orgIds, @Param("devState") String state, @Param("name") String name);
 
-	List<Device> getDeviceList(Example example);
-	String getLimitDataByDevice(Map<String, Object> parameters);
+    /**
+     * @param orgId
+     * @param mpId
+     * @return ���������������������
+     */
+    List<Device> selectByOrgIdAndMpId(@Param("orgId") Integer orgId, @Param("orgIds") List<Integer> orgIds, @Param("mpId") Integer mpId);
+
+    List<Device> selectByMap(Map<String, Object> params);
+
+    Device selectWithOrgIdsByMac(String mac);
+
+    List<Integer> getDeviceVersionIdByAreaCode(Map<String, Object> parameters);
+
+    Integer getDeviceCountByRegion(Map<String, Object> parameters);
+
+    List<Map> countByTimes(@Param("start") Date start, @Param("end") Date end, @Param("format") String format);
+
+    List<Device> getDevicesByProfession(Map<String, Object> parameters);
+
+    List<Device> getDevicesByOrganizationId(Map<String, Object> parameters);
+
+    List<Map<String, Object>> getDevicesStateByRegion(Map<String, Object> parameters);
+
+    List<Device> getDeviceList(Example example);
+
+    String getLimitDataByDevice(Map<String, Object> parameters);
 
     List<String> getMacsByOrganizationId(@Param("organizationIdList") List<Object> organizationIdList);
 
-	List<Device> getDeviceById1(@Param("id") int id);
+    List<Device> getDeviceById1(@Param("id") int id);
 
-	//������������������
-	List<Device> getDeviceById2(@Param("id") int id);
+    //������������������
+    List<Device> getDeviceById2(@Param("id") int id);
 
-	List<Device> getDeviceById3(@Param("id") int id);
+    List<Device> getDeviceById3(@Param("id") int id);
 
-	List<Integer> getHasWindDirAndWindSpeedDeviceVersion();
+    List<Integer> getHasWindDirAndWindSpeedDeviceVersion();
 
-	List<Device> selectDevicesAll(Map<String, Object> params);
+    List<Device> selectDevicesAll(Map<String, Object> params);
 
-	List<DeviceAndWind> getAllDevice();
+    List<DeviceAndWind> getAllDevice();
 
-	List<String> getAllMac();
+    List<String> getAllMac();
 
-	Device byMacGetDevice(@Param("mac") String mac);
+    Device byMacGetDevice(@Param("mac") String mac);
 
-	DeviceAndWind getDeviceAndWindByMac(@Param("mac") String mac,@Param("time") String time,
-										@Param("table") String table);
+    DeviceAndWind getDeviceAndWindByMac(@Param("mac") String mac, @Param("time") String time,
+                                        @Param("table") String table);
 
-	List<DeviceAndWind> byMonitorIdGetDeviceAndWind(@Param("id") int id,@Param("time") String time, @Param("table") String table);
-	DeviceAndWind byMacGetDeviceAndWind(@Param("mac") String mac,@Param("time") String time, @Param("table") String table);
+    List<DeviceAndWind> byMonitorIdGetDeviceAndWind(@Param("id") int id, @Param("time") String time, @Param("table") String table);
 
-	List<String> getMacsByMonitorPointIds(List<Integer> list);
+    DeviceAndWind byMacGetDeviceAndWind(@Param("mac") String mac, @Param("time") String time, @Param("table") String table);
 
-	Map<String, Object> selectAllFieldByMac(Map<String, Object> params);
+    List<String> getMacsByMonitorPointIds(List<Integer> list);
 
-	List getDeviceByCode(Map<String, Object> params);
+    Map<String, Object> selectAllFieldByMac(Map<String, Object> params);
+
+    List getDeviceByCode(Map<String, Object> params);
+
+    List<Device> getDeviceByCodeAndId(@Param("code") String code, @Param("id") String id);
+
+    String byMacGetOrgId(String mac);
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/DictionaryDataMapper.java b/src/main/java/com/moral/mapper/DictionaryDataMapper.java
index f1720de..4ada8d1 100644
--- a/src/main/java/com/moral/mapper/DictionaryDataMapper.java
+++ b/src/main/java/com/moral/mapper/DictionaryDataMapper.java
@@ -7,4 +7,5 @@
 public interface DictionaryDataMapper extends BaseMapper<DictionaryData> {
     public  Integer selectSupperOrgId();
     public  boolean isSupperOrgId(Integer orgId);
+    String getDefultAlarm();
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/HistoryMapper.java b/src/main/java/com/moral/mapper/HistoryMapper.java
index 3b6d2ea..5ab081a 100644
--- a/src/main/java/com/moral/mapper/HistoryMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryMapper.java
@@ -8,6 +8,7 @@
 
 public interface HistoryMapper{
 	String selectValueByMacAndTime(@Param("mac")String mac, @Param("time")Date time);
+	String getValueByMacAndTime(@Param("mac")String mac, @Param("time")String time,@Param("time1")String time1);
 	List<Map<String, Object>> getAreaAllDataByAccount(Map<String, Object> parameters);
 
 	List<Map<String, Object>> getRegionRankingData(Map<String, Object> parameters);
diff --git a/src/main/java/com/moral/service/AlarmConfigService.java b/src/main/java/com/moral/service/AlarmConfigService.java
index e34dad5..55ee66e 100644
--- a/src/main/java/com/moral/service/AlarmConfigService.java
+++ b/src/main/java/com/moral/service/AlarmConfigService.java
@@ -8,6 +8,7 @@
 public interface AlarmConfigService {
     public Optional<AlarmConfig> queryValueByOrganizationId(int organizationId);
     public Optional<AlarmConfig> queryByOrganizationId(int organizationId);
+    public String getValueByOrganizationId(int organizationId);
     public Optional<AlarmConfig> queryByMonitorPointId(int mpId);
     public  AlarmConfigValue getDefaultAlarmConfigValue();
 
@@ -15,4 +16,5 @@
 
     void addOrModify(AlarmConfig alarmConfig);
 
+    int containOrgId(Integer orgId);
 }
diff --git a/src/main/java/com/moral/service/DeviceService.java b/src/main/java/com/moral/service/DeviceService.java
index cc47109..ca06f17 100644
--- a/src/main/java/com/moral/service/DeviceService.java
+++ b/src/main/java/com/moral/service/DeviceService.java
@@ -83,5 +83,7 @@
 	List<DeviceAndWind> byMonitorIdGetDeviceAndWind(String id,String time,String tab);
 	List<DeviceAndWind> byMonitorIdGetDeviceAndWindSpecial(String id,String time,String tab);
 
+	List<Device> getDeviceByCodeAndId(String code,String id);
 
+	String byMacGetOrgId(String mac);
 }
diff --git a/src/main/java/com/moral/service/DictionaryDataService.java b/src/main/java/com/moral/service/DictionaryDataService.java
index a4ed7ca..762e457 100644
--- a/src/main/java/com/moral/service/DictionaryDataService.java
+++ b/src/main/java/com/moral/service/DictionaryDataService.java
@@ -8,4 +8,6 @@
     List<DictionaryData> queryByKey(String dictDataKey);
 
     Integer querySupperOrgId();
+
+    String getDefultAlarm();
 }
diff --git a/src/main/java/com/moral/service/HistoryService.java b/src/main/java/com/moral/service/HistoryService.java
index ebcae1f..3ed919d 100644
--- a/src/main/java/com/moral/service/HistoryService.java
+++ b/src/main/java/com/moral/service/HistoryService.java
@@ -13,6 +13,8 @@
 
     String queryValueByMacAndTime(String mac, Date time);
 
+    String getValueByMacAndTime(String mac, String time,String time1);
+
 	List<Map<String, Object>> getRegionRankingData(Map<String, Object> parameters);
 	
 	List<Map<String, Object>> getSensorsDataByDevice(Map<String, Object> parameters);
diff --git a/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java b/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java
index 6ea34b6..a5ca8e6 100644
--- a/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java
@@ -75,6 +75,11 @@
     }
 
     @Override
+    public String getValueByOrganizationId(int organizationId) {
+        return alarmConfigMapper.getValueByOrganizationId(organizationId);
+    }
+
+    @Override
     public Optional<AlarmConfig> queryByMonitorPointId(int mpId) {
         AlarmConfig alarmConfig = alarmConfigMapper.selectByMonitorPointId(mpId);
         if(alarmConfig==null){
@@ -112,6 +117,12 @@
             throw  ex;
         }
     }
+
+    @Override
+    public int containOrgId(Integer orgId) {
+        return alarmConfigMapper.containOrgId(orgId);
+    }
+
     public AlarmConfigValue simplifyAlarmConfigValue(AlarmConfigValue value){
           Map<String,AlarmSensorLevel> alarmSensorLevelMap = value.getAlarmLevels();
           List<String> cleanKeys = new ArrayList<>();
diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
index f31a2d0..6fbd69f 100644
--- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -212,6 +212,7 @@
             Integer orgId = Integer.parseInt(orgIdObj.toString());
             List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
             params.put("orgIds", orgIds);
+            System.out.println(params);
             deviceList = deviceMapper.selectByMap(params);
             // loadDeviceState(deviceList);
         }
@@ -998,7 +999,7 @@
                 if (tvoc==null){
                     tvoc=0.0;
                 }
-                Double dir = (270.0 - windDir * Math.PI / 180.0);
+                Double dir = (270.0 + windDir * Math.PI / 180.0);
 
                 U = windSpeed * Math.cos(dir);
                 V = windSpeed * Math.sin(dir);
@@ -1077,4 +1078,14 @@
         return list;
     }
 
+    @Override
+    public List<Device> getDeviceByCodeAndId(String code, String id) {
+        return deviceMapper.getDeviceByCodeAndId(code,id);
+    }
+
+    @Override
+    public String byMacGetOrgId(String mac) {
+        return deviceMapper.byMacGetOrgId(mac);
+    }
+
 }
diff --git a/src/main/java/com/moral/service/impl/DictionaryDataServiceImpl.java b/src/main/java/com/moral/service/impl/DictionaryDataServiceImpl.java
index 867a90e..c187601 100644
--- a/src/main/java/com/moral/service/impl/DictionaryDataServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/DictionaryDataServiceImpl.java
@@ -22,4 +22,9 @@
     public Integer querySupperOrgId() {
         return  dataMapper.selectSupperOrgId();
     }
+
+    @Override
+    public String getDefultAlarm() {
+        return dataMapper.getDefultAlarm();
+    }
 }
diff --git a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
index f46c6ea..343cdd3 100644
--- a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
@@ -117,7 +117,9 @@
     public String queryValueByMacAndTime(String mac, Date time) {
         return historyMapper.selectValueByMacAndTime(mac, time);
     }
-
+    public String getValueByMacAndTime(String mac, String time,String time1) {
+        return historyMapper.getValueByMacAndTime(mac, time,time1);
+    }
     @Override
     public List<Map<String, Object>> getRegionRankingData(Map<String, Object> parameters) {
         ValidateUtil.notNull(parameters.get("regionCode"), "param.is.null");
diff --git a/src/main/resources/mapper/AlarmConfigMapper.xml b/src/main/resources/mapper/AlarmConfigMapper.xml
index f8c95ff..a0b35de 100644
--- a/src/main/resources/mapper/AlarmConfigMapper.xml
+++ b/src/main/resources/mapper/AlarmConfigMapper.xml
@@ -114,4 +114,13 @@
     where dev.mac = #{mac,jdbcType=VARCHAR}
     limit 0,1
   </select>
+    <select id="getValueByOrganizationId" resultType="java.lang.String">
+      select `value`
+      from alarm_config
+      where organization_id = #{organizationId,jdbcType=INTEGER}
+      limit 0,1
+    </select>
+  <select id="containOrgId" resultType="java.lang.Integer">
+    select COUNT(*) from  alarm_config where id=#{orgId}
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml
index 6df8406..79771cb 100644
--- a/src/main/resources/mapper/DeviceMapper.xml
+++ b/src/main/resources/mapper/DeviceMapper.xml
@@ -484,7 +484,8 @@
 	</select>
 
     <select id="selectDevicesAll" parameterType="java.util.Map" resultType="com.moral.entity.Device">
-        SELECT dev.name,dev.address,dev.id,dev.state,dev.mac,dev.longitude,dev.latitude,dev.device_version_id deviceVersionId from device dev
+        SELECT dev.name,dev.address,dev.id,dev.state,dev.mac,dev.longitude,dev.latitude,dev.device_version_id
+        deviceVersionId from device dev
         left join monitor_point mpt on dev.monitor_point_id = mpt.id
         <where>
             <if test="@com.moral.common.bean.Constants@isNotSpecialOrgId(orgId)">
@@ -549,4 +550,15 @@
             where d.mac=h.mac and h.time=#{time}
 			and d.mac=#{mac}
     </select>
+    <select id="getDeviceByCodeAndId" resultType="com.moral.entity.Device" resultMap="BaseResultMap">
+        select * from device where monitor_point_id in(
+                    SELECT mpt.id
+                    FROM monitor_point mpt,organization org
+                    where mpt.organization_id=org.id
+                    and org.id=#{id}
+                    )
+    </select>
+    <select id="byMacGetOrgId" resultType="java.lang.String">
+            SELECT organization_id FROM `monitor_point` as mt ,device as d where d.monitor_point_id=mt.id and mac=#{mac}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/DictionaryDataMapper.xml b/src/main/resources/mapper/DictionaryDataMapper.xml
index 9e18298..1cb67b9 100644
--- a/src/main/resources/mapper/DictionaryDataMapper.xml
+++ b/src/main/resources/mapper/DictionaryDataMapper.xml
@@ -24,4 +24,8 @@
     select count(*) from dictionary_data
     where dict_data_key = 'auth_config_super_org' and dict_data_value = #{orgId,jdbcType=INTEGER}
   </select>
+  <select id="getDefultAlarm" resultType="java.lang.String">
+      select dict_data_value from dictionary_data
+    where dict_data_key = 'default_alarm_config_value'
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/HistoryMapper.xml b/src/main/resources/mapper/HistoryMapper.xml
index 4ed149c..8af3236 100644
--- a/src/main/resources/mapper/HistoryMapper.xml
+++ b/src/main/resources/mapper/HistoryMapper.xml
@@ -292,5 +292,10 @@
         select `json` from ${table}
 		where  time = #{time} and mac = #{mac}
     </select>
+    <select id="getValueByMacAndTime" resultType="java.lang.String">
+        select `value` from history
+		where  mac = #{mac} and time &gt;= #{time1} and time &lt;=#{time}
+        limit 0,1
+    </select>
 
 </mapper>
\ No newline at end of file
diff --git a/src/main/webapp/js/newmoralmap.js b/src/main/webapp/js/newmoralmap.js
index 45f5ed1..204c461 100644
--- a/src/main/webapp/js/newmoralmap.js
+++ b/src/main/webapp/js/newmoralmap.js
@@ -698,16 +698,18 @@
         })
     }
 
+
     moralMap.WindMarker = function (option, moralMap) {
         var _option = option;
         var _pointObj = new BMap.Point(_option['longitude'], _option['latitude']);
-        var _iconObj = _getWindIcon(1);
+        var _iconObj = _getWindIcon(0);
         this._point = _pointObj;
 
         function _getWindIcon(speedLevel) {
             speedLevel = speedLevel == null ? 0 : speedLevel;
             var windIcon = _option["windIcon"];
             var windUrl = windIcon["url"] + speedLevel + ".png";
+
             return new BMap.Icon(windUrl, new BMap.Size(windIcon["width"], windIcon["height"]), {
                 imageSize: new BMap.Size(windIcon["width"], windIcon["height"])
             });
@@ -718,6 +720,8 @@
             offset: new BMap.Size(0, -11),
             enableMassClear: true
         })
+
+
         return $.extend(this, {
             refreshWindDir: function (windDir, windSpeed) {
                 //���������������������������������������������
@@ -747,7 +751,6 @@
                     if (speedLevel == 0) {
                         moralMap.removeOverlay(this);
                     } else {
-                        moralMap.addOverlay(this);
                         var iconObj = _getWindIcon(speedLevel);
                         this.setIcon(iconObj);
                         this.setRotation(windDir);
@@ -759,7 +762,8 @@
             },
             setOption: function (option) {
                 _option = option;
-            }
+            },
+
         })
 
     }
@@ -1202,7 +1206,57 @@
 
     var deviceStates;
     var monitorPointStates;
-    moralMap.refreshState = function (states) {
+    moralMap.refreshState = function (states, orgId, regionCode, accountId) {
+        var state = JSON.stringify(states);
+        var state1 = $(".pp2").html()
+        var paramMap = {};
+        var abc = '';
+        paramMap["orgId"] = orgId;
+        paramMap["regionCode"] = regionCode;
+        paramMap["accountId"] = accountId;
+        paramMap["states"] = state;
+        paramMap["states1"] = state1;
+        $.ajax({
+            url: "/screen/tellAlarm",
+            type: "get",
+            dataType: "json",
+            data: paramMap,
+            success: function (info) {
+                var alarm = JSON.parse(JSON.stringify(info));
+                if (alarm.length > 0) {
+                    $("#box").attr("style", "display:block;");//������div
+                    $("#tou").attr("style", "display:block;color: #d9534f;font-size: 20px;");//������div
+                    for (var i = 0; i < alarm.length; i++) {
+                        var text = "<span style='line-height: 25px><p style='line-height: 25px'>";
+                        var lookString = alarm[i][0]["time"] + " " + alarm[i][0]["name"];
+                        for (var j = 0; j < alarm[i].length; j++) {
+                            var value = "";
+                            if (alarm[i].length > 1) {
+                                if (j == 0) {
+                                    value = alarm[i][j]["sensor"] + "=" + alarm[i][j]["value"];
+                                    lookString = lookString + value;
+                                } else {
+                                    value = alarm[i][j]["sensor"] + "=" + alarm[i][j]["value"];
+                                    lookString = lookString + "," + value;
+                                }
+                            } else {
+                                value = alarm[i][j]["sensor"] + "=" + alarm[i][j]["value"];
+                                lookString = lookString + value;
+                            }
+                            text = text + lookString + "������" + "</p><hr></hr></span>";
+                            $("#box1").prepend(text);
+                        }
+
+                    }
+                    for (var j = 0; j < $("#box1").children("span").length; j++) {
+                        if ($("#box1").children("span").length > 50) {
+                            $("#box1 span:last").remove()  ;
+                        }
+                    }
+                }
+            },
+        })
+        state1 = $(".pp2").html(state);
         monitorPointStates = states;
         deviceStates = [];
         for (var i in states) {
diff --git a/src/main/webapp/view/lianxian.jsp b/src/main/webapp/view/lianxian.jsp
new file mode 100644
index 0000000..390b43f
--- /dev/null
+++ b/src/main/webapp/view/lianxian.jsp
@@ -0,0 +1,133 @@
+<%@ 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:400px;
+            top:30px;
+            right:30px;
+            position:absolute;
+            z-index:1;
+            border:2px solid red;
+            background-color:gainsboro;
+            opacity: 0.8;
+        }
+        #cpm,#cpm1{
+            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="allmap" style="z-index: 0" ;>
+</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 point=new BMap.Point(params["ll"][0], params["ll"][1]);
+    map.centerAndZoom(point, 18.5);  // ���������������,������������������������������������
+
+    var icon1 = new BMap.Icon("/img/ico00.png", new BMap.Size(48, 48));
+    var mark1 = new BMap.Marker(new BMap.Point(params["ll"][0], params["ll"][1]), {icon: icon1});
+    map.addOverlay(mark1);
+
+
+    var icon2 = new BMap.Icon("/img/ico05.png", new BMap.Size(48, 48));
+    var mark2 = new BMap.Marker(new BMap.Point(116.885217,38.299148), {icon: icon2});
+    map.addOverlay(mark2);
+    var label = new BMap.Label("���������������������������������--distance="+params["mt"],{offset:new BMap.Size(20,-10)});
+    mark2.setLabel(label);
+    var icon3 = new BMap.Icon("/img/ico05.png", new BMap.Size(48, 48));
+    var mark3 = new BMap.Marker(new BMap.Point(116.87061,38.322828), {icon: icon3});
+    map.addOverlay(mark3);
+
+    var label = new BMap.Label("���������������������������--distance="+params["mt1"],{offset:new BMap.Size(20,-10)});
+    mark3.setLabel(label);
+
+    var icon4 = new BMap.Icon("/img/ico05.png", new BMap.Size(48, 48));
+    var mark4 = new BMap.Marker(new BMap.Point(116.855206,38.325162), {icon: icon4});
+    map.addOverlay(mark4);
+
+    var label = new BMap.Label("������������������������������ --distance="+params["mt2"],{offset:new BMap.Size(20,-10)});
+    mark4.setLabel(label);
+
+    var polyline1 = new BMap.Polyline([
+        new BMap.Point(params["ll"][0], params["ll"][1]),
+        new BMap.Point(116.885217,38.299148)
+    ], {strokeColor:"red", strokeWeight:8, strokeOpacity:0.5});   //������������
+
+
+    var polyline2 = new BMap.Polyline([
+        new BMap.Point(params["ll"][0], params["ll"][1]),
+        new BMap.Point(116.87061,38.322828)
+    ], {strokeColor:"yellow", strokeWeight:8, strokeOpacity:0.5});   //������������
+    var polyline3 = new BMap.Polyline([
+        new BMap.Point(params["ll"][0], params["ll"][1]),
+        new BMap.Point(116.855206,38.325162)
+    ], {strokeColor:"blue", strokeWeight:8, strokeOpacity:0.5});   //������������
+    map.addOverlay(polyline1);   //������������
+    map.addOverlay(polyline2);   //������������
+    map.addOverlay(polyline3);   //������������
+
+
+    //������������������������
+    map.addControl(new BMap.MapTypeControl({
+        mapTypes: [
+            BMAP_HYBRID_MAP,
+            BMAP_NORMAL_MAP
+        ]
+    }));
+    map.setMapType(BMAP_NORMAL_MAP);
+
+
+
+
+</script>
+
diff --git a/src/main/webapp/view/newmap.jsp b/src/main/webapp/view/newmap.jsp
index 4302057..469610d 100644
--- a/src/main/webapp/view/newmap.jsp
+++ b/src/main/webapp/view/newmap.jsp
@@ -363,6 +363,19 @@
     .wind_explain li img {
         vertical-align: top;
     }
+    #box {
+        overflow: auto;
+        width: 300px;
+        height: 400px;
+        top: 30px;
+        right: 30px;
+        position: absolute;
+        z-index: 1;
+        border: 1px solid gainsboro;
+        background-color: gainsboro;
+        opacity: 0.8;
+        display: none;
+    }
 </style>
 <body>
 <div>
@@ -370,7 +383,7 @@
 <textarea id="close" hidden></textarea>
 
 <div class="main_body">
-    <div class="tools_box">
+   <%-- <div class="tools_box">
         <div class="charts_btn">
         </div>
     </div>
@@ -385,15 +398,14 @@
             <li><img src="/img/icoWind07.png" width="25" height="25"><span>7������</span></li>
             <li><img src="/img/icoWind08.png" width="25" height="25"><span>8���������������</span></li>
         </ul>
+    </div>--%>
+
+    <div id="box">
+        <span id="tou">������������������</span>
+        <div id="box1" style="margin-top: 15px"></div>
     </div>
-    <%-- <div class="search_box">
-         <button id="searchBtn" type="button">������</button>
-         <textarea style="width: 300px;height:400px;" id="searchParam"></textarea>
-     </div>--%>
-    <!-- <div id="popup_box">
-          <div id="equ_list" class="listview">
-          </div>
-    </div> -->
+       <div class="pp1" style="display:none;" ></div>
+       <div class="pp2" style="display:none;" ></div>
     <div id="mapCanvas"></div>
     <div id="mapParams" style="display: none;">
         ${requestScope.mapParams}
@@ -404,14 +416,17 @@
 </html>
 <script>
     //���������������
+    var orgId;
+    var regionCode;
+    var accountId;
     (function ($) {
         var hostAndPort = document.location.host;
         var moralMap = window.moralMap;
         var params = $.parseJSON($("#mapParams").html());
         moralMap['params'] = params;
-        var orgId = params["orgId"];
-        var regionCode = params["regionCode"];
-        var accountId = params["accountId"];
+        orgId = params["orgId"];
+        regionCode = params["regionCode"];
+        accountId = params["accountId"];
         var provinceCode = regionCode.toString().substring(0, 2) + "0000";
         var mapType = getUrlParam("mapType");
         var mapOption = {};
@@ -424,7 +439,6 @@
         //������������
         var listView = moralMap.initListView({id: "#equ_list", pageSize: 12});
         window["listView"] = listView;
-
         //���������������������click������������
         function showEqus(obj) {
 
@@ -460,7 +474,6 @@
                     });
                 }
             }, 500);
-
         }
 
         function loadOverlays(url, callback) {
@@ -704,7 +717,7 @@
             //������������������
             ws.onmessage = function (msg) {
                 // $("#searchParam").val(JSON.parse(msg.data));
-                //moralMap.getRoad(JSON.parse(JSON.parse(msg.data)),regionCode);
+                // moralMap.getRoad(JSON.parse(JSON.parse(msg.data)),regionCode);
                 moralMap.refreshWindDir(JSON.parse(JSON.parse(msg.data)));
                 /*  if (moralMap.showSensors && typeof (moralMap.showSensors) == "function") {
                       moralMap.showSensors(JSON.parse(JSON.parse(msg.data)));
@@ -715,19 +728,18 @@
                 moralMap.showSensors(JSON.parse(JSON.parse(msg.data)));
             };
 
-            //������������
-            ws.onclose = function () {
-                $("#close").html("websocket������������");
-            };
-            //���������������������
-            ws.onerror = function () {
-                $("#close").html("websocket������������");
-            };
+                //������������
+                ws.onclose = function () {
+                    $("#close").html("websocket������������");
+                };
+                //���������������������
+                ws.onerror = function () {
+                    $("#close").html("websocket������������");
+                };
         }
 
     })(jQuery);
     var _intervalNum = -1;
-
     function startRefreshPage() {
         if (_intervalNum == -1) {
             _intervalNum = self.setInterval(function () {
@@ -779,6 +791,7 @@
                 cache: false,
                 async: true,
                 success: function (data) {
+                    console.log(data)
                     if (data != null && typeof data === 'object') {
                         var resultMap = data["extData"];
                         if (resultMap == null) {
@@ -838,7 +851,8 @@
             moralMap.callJS(jsonData);
         } else if ("RefreshState" == methodName) {
             var states = jsonData.states;
-            moralMap.refreshState(states);
+            $(".pp1").html(JSON.stringify(states))
+            moralMap.refreshState(states,orgId,regionCode,accountId);
         } else if ("CloseMq" == methodName) {
             $("#close").html(methodName);
         }

--
Gitblit v1.8.0