于紫祥_1901
2020-08-12 f718fb9c06fa75b65870a3f5ef2fea10054009aa
风场图
1 files added
14 files modified
1174 ■■■■■ changed files
pom.xml 18 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/controller/ScreenController.java 95 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/DeviceAndWind.java 64 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/DeviceMapper.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/MonitorPointMapper.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/DeviceService.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/MonitorPointService.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/DeviceServiceImpl.java 188 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/OrganizationServiceImpl.java 5 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/webSocketServer/WebSocketServerNew.java 7 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/DeviceMapper.xml 746 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/MonitorPointMapper.xml 3 ●●●●● patch | view | raw | blame | history
src/main/webapp/view/newUnorganizedMap.jsp 13 ●●●● patch | view | raw | blame | history
src/main/webapp/view/unorganizedMap.jsp 2 ●●● patch | view | raw | blame | history
pom.xml
@@ -41,12 +41,28 @@
    </repositories>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
        <!-- https://mvnrepository.com/artifact/org.json/json -->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20160810</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
src/main/java/com/moral/controller/ScreenController.java
@@ -1,9 +1,7 @@
package com.moral.controller;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.*;
import java.lang.reflect.Array;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
@@ -17,7 +15,9 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.Expression;
import com.moral.common.bean.Constants;
@@ -29,15 +29,7 @@
import com.moral.common.util.ValidateUtil;
import com.moral.common.util.WebUtils;
import com.moral.common.xml.Version;
import com.moral.entity.Account;
import com.moral.entity.AreaNames;
import com.moral.entity.Device;
import com.moral.entity.DeviceVersion;
import com.moral.entity.MapBounds;
import com.moral.entity.MonitorPoint;
import com.moral.entity.Organization;
import com.moral.entity.Point;
import com.moral.entity.Region;
import com.moral.entity.*;
import com.moral.entity.alarm.AlarmConfig;
import com.moral.entity.alarm.AlarmConfigValue;
import com.moral.entity.alarm.AlarmSensorLevel;
@@ -65,12 +57,14 @@
import com.moral.service.WeatherService;
import com.moral.util.*;
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 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;
@@ -712,8 +706,8 @@
            String time = map.get("time").toString();
            time = time.substring(time.length() - 2);
            map.put("time", Integer.valueOf(time));
            if (parameters.get("type").equals("day")) {
                map.put("time", Integer.valueOf(time) + 1);
            if(parameters.get("type").equals("day")){
                map.put("time", Integer.valueOf(time)+1);
            }
            map.put("value", map.remove(sensorKey));
        }
@@ -1916,8 +1910,8 @@
            if (minAngle > (Double) longAndLatiList.get(j).get("angle")) {
                minAngle = (Double) longAndLatiList.get(j).get("angle");
                indexAngle = j;
            } else {
                indexAngle = indexAngle;
            }else {
                indexAngle=indexAngle;
            }
        }
        preAngleDeviceList.add(deviceList.get((Integer) longAndLatiList.get(indexAngle).get("h")));
@@ -1953,6 +1947,71 @@
        return params;
    }
    @GetMapping("/allDevice")
    @ResponseBody
    public Map<String,List> getAllDevice() {
        List<String> macList=deviceService.getAllMac();
        Map<String,List> latlngMap=new HashMap<String,List>();
        Map devMap=null;
        List list=new ArrayList();
        for (String mac : macList) {
            devMap=new HashMap();
            if (mac!=null){
                Device device=deviceService.byMacGetDevice(mac);
                List list1= LatLngTransformation.Convert_BD09_To_GCJ02(device.getLatitude(),device.getLongitude());
                devMap.put("lat",list1.get(1));
                devMap.put("lng",list1.get(0));
                devMap.put("monitorPointId",device.getMonitorPointId());
                //System.out.println(device);
                list.add(devMap);
            }else {
                continue;
            }
        }
        latlngMap.put("latlng",list);
        return latlngMap;
    }
    @GetMapping("/windAndDeviceData")
    @ResponseBody
    public List windAndDeviceData(HttpServletRequest request, String monitorPointId) {
        Calendar c = Calendar.getInstance();//可以对每个时间域单独修改   对时间进行加减操作等
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        String mon="";
        if (month+1<10){
            mon="0"+(month+1);
        }else {
            mon=(month+1)+"";
        }
        int date = c.get(Calendar.DATE);
        String dt="";
        if(date<10){
            dt="0"+date;
        }else {
            dt=""+date;
        }
        int hour = c.get(Calendar.HOUR_OF_DAY);
        String hu="";
        if (hour<10){
            hu="0"+hour;
        }else {
            hu=""+hour;
        }
        int minute = c.get(Calendar.MINUTE);
        String mu="";
        if (minute<10){
            mu="0"+minute;
        }else {
            mu=""+minute;
        }
        String time=year + "-" + mon + "-" + dt + " " +hu + ":" +mu + ":" + "00";
        String table="history_minutely_"+year+mon;
        List list=deviceService.byMonitorIdGetDeviceAndWind(monitorPointId,time,table);
        return list;
    }
    @GetMapping("forecastO3")
    @ApiOperation(value = "预测和实际臭氧对比", notes = "预测和实际臭氧对比")
    @ApiImplicitParams(value = {
src/main/java/com/moral/entity/DeviceAndWind.java
New file
@@ -0,0 +1,64 @@
package com.moral.entity;
public class DeviceAndWind {
    private Double longitude;
    private Double latitude;
    private Double windDir;
    private Double windSpeed;
    private Double tVoc;
    public Double gettVoc() {
        return tVoc;
    }
    public void settVoc(Double tVoc) {
        this.tVoc = tVoc;
    }
    public Double getLongitude() {
        return longitude;
    }
    public void setLongitude(Double longitude) {
        this.longitude = longitude;
    }
    public Double getLatitude() {
        return latitude;
    }
    public void setLatitude(Double latitude) {
        this.latitude = latitude;
    }
    public Double getWindDir() {
        return windDir;
    }
    public void setWindDir(Double windDir) {
        this.windDir = windDir;
    }
    public Double getWindSpeed() {
        return windSpeed;
    }
    public void setWindSpeed(Double windSpeed) {
        this.windSpeed = windSpeed;
    }
    @Override
    public String toString() {
        return "DeviceAndWind{" +
                "longitude=" + longitude +
                ", latitude=" + latitude +
                ", windDir=" + windDir +
                ", windSpeed=" + windSpeed +
                ", tVoc=" + tVoc +
                '}';
    }
}
src/main/java/com/moral/mapper/DeviceMapper.java
@@ -7,6 +7,7 @@
import com.moral.common.mapper.BaseMapper;
import com.moral.entity.Device;
import com.moral.entity.DeviceAndWind;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.entity.Example;
@@ -55,6 +56,18 @@
    List<Device> selectDevicesAll(Map<String, Object> params);
    List<DeviceAndWind> getAllDevice();
    List<String> getAllMac();
    Device byMacGetDevice(@Param("mac") String mac);
    DeviceAndWind getDeviceAndWindByMac(@Param("mac") String mac,@Param("time") String time,
                                        @Param("table") String table);
    List<DeviceAndWind> byMonitorIdGetDeviceAndWind(@Param("id") String id,@Param("time") String time,
                                                    @Param("table") String table);
    List<Device> getDeviceListByMonitorPointIds(List<Integer> list);
    Map<String, Object> selectAllFieldByMac(Map<String, Object> params);
src/main/java/com/moral/mapper/MonitorPointMapper.java
@@ -24,6 +24,7 @@
    MonitorPoint getMonitorPointById(@Param("id") int id);
    List<MonitorPoint> getMonitorPointListByAccountId(@Param("id") int id);
    MonitorPoint byIdGetMonitorPoint(@Param("id")int id);
    MonitorPoint getFirstMonitorPointByAreaCode(@Param("areaCode") int areaCode);
src/main/java/com/moral/service/DeviceService.java
@@ -7,6 +7,7 @@
import com.moral.common.bean.PageBean;
import com.moral.common.bean.PageResult;
import com.moral.entity.Device;
import com.moral.entity.DeviceAndWind;
import com.moral.entity.DeviceProperty;
public interface DeviceService {
@@ -72,4 +73,14 @@
    List<Device> queryDevice(Map<String,Object> map);
    Map<String, Object> getAllFieldByMac(Map<String, Object> parameters);
    List<DeviceAndWind> getAllDevice();
    List<String> getAllMac();
    Device byMacGetDevice(String mac);
    List<DeviceAndWind> byMonitorIdGetDeviceAndWind(String id,String time,String tab);
    DeviceAndWind getDeviceAndWindByMac(String mac,String time,String table);
}
src/main/java/com/moral/service/MonitorPointService.java
@@ -8,6 +8,7 @@
import com.moral.common.bean.PageBean;
import com.moral.entity.Device;
import com.moral.entity.MonitorPoint;
import org.apache.xmlbeans.impl.jam.mutable.MPackage;
public interface MonitorPointService {
@@ -53,4 +54,6 @@
    JSONObject getMacList(int id);
    List<MonitorPoint> getMonitorPointListByAccountId(int id);
    MonitorPoint byIdGetMonitorPoint(int id);
}
src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -1,16 +1,12 @@
package com.moral.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.TypeReference;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
@@ -22,6 +18,7 @@
import com.moral.common.util.RedisUtils;
import com.moral.common.util.ValidateUtil;
import com.moral.entity.Device;
import com.moral.entity.DeviceAndWind;
import com.moral.entity.DeviceProperty;
import com.moral.entity.MonitorPoint;
import com.moral.mapper.DeviceMapper;
@@ -32,6 +29,7 @@
import com.moral.mapper.OrganizationMapper;
import com.moral.service.AccountService;
import com.moral.service.DeviceService;
import com.moral.util.LatLngTransformation;
import com.moral.util.TkMybatisUtils;
import org.apache.commons.collections.MapUtils;
@@ -703,4 +701,182 @@
        Map<String, Object> deviceMap = deviceMapper.selectAllFieldByMac(parameters);
        return deviceMap;
    }
    @Override
    public List<DeviceAndWind> getAllDevice() {
        return deviceMapper.getAllDevice();
    }
    @Override
    public List<String> getAllMac() {
        return deviceMapper.getAllMac();
    }
    @Override
    public Device byMacGetDevice(String mac) {
        return deviceMapper.byMacGetDevice(mac);
    }
    @Override
    public List byMonitorIdGetDeviceAndWind(String id,String time,String tab) {
        List<DeviceAndWind> deviceAndWinds=deviceMapper.byMonitorIdGetDeviceAndWind(id,time,tab);
        List list1=new ArrayList();
        List loList=new ArrayList();
        List laList=new ArrayList();
        Double U=0.0;
        Double V=0.0;
        for (DeviceAndWind andWind : deviceAndWinds) {
            List list2=new ArrayList();
            Double lo=andWind.getLongitude();
            Double la=andWind.getLatitude();
            List list= LatLngTransformation.Convert_BD09_To_GCJ02(la,lo);
            Double transLo=(Double) list.get(0);
            Double transLa=(Double) list.get(1);
            loList.add(transLo);
            laList.add(transLa);
        }
        Double loma= (Double) Collections.max(loList);
        Double lomi= (Double) Collections.min(loList);
        Double lama= (Double) Collections.max(laList);
        Double lami= (Double) Collections.min(laList);
        Map laLaMap=new HashMap();
        laLaMap.put("maxLo",loma);
        laLaMap.put("minLo",lomi);
        laLaMap.put("maxLa",lama);
        laLaMap.put("lami",lami);
        Double lo1=lomi-250*0.00001141;
        Double lo2=loma+250*0.00001141;
        Double la2=lami-250*0.00000899;
        Double la1=lama+250*0.00000899;
        Double dx=0.00001141*20;
        Double dy=0.00000899*20;
        int nx=(int) Math.floor((lo2-lo1)/dx);
        int ny=(int) Math.floor((la1-la2)/dy);
        String header1 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 2 +
                ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
                ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
                ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
                ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
        String header2 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 3 +
                ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
                ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
                ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
                ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
        List<Double> uList=new ArrayList<Double> ();
        List<Double>  vList=new ArrayList<Double> ();
        int x=0;
        int y=0;
        List<Map> mapList=new ArrayList<Map>();
        for (int j = 0; j <deviceAndWinds.size() ; j++) {
            Map<String,Double> map=new HashMap<String,Double> ();
            Double windDir= deviceAndWinds.get(j).getWindDir();
            Double windSpeed=deviceAndWinds.get(j).getWindSpeed();
            if (windDir==null){
                windDir=0.0;
                windSpeed=0.0;
            }
            Double tvoc=deviceAndWinds.get(j).gettVoc();
            List list= LatLngTransformation.Convert_BD09_To_GCJ02(deviceAndWinds.get(j).getLatitude(),deviceAndWinds.get(j).getLongitude());
            Double transLo=(Double) list.get(0);
            Double transLa=(Double) list.get(1);
            if (tvoc==null){
                tvoc=0.0;
            }
            Double dir = (270.0 - windDir * Math.PI / 180.0);
            U = windSpeed * Math.cos(dir);
            V = windSpeed * Math.sin(dir);
            map.put("lo",transLo);
            map.put("la",transLa);
            map.put("U",U);
            map.put("V",V);
            mapList.add(map);
        }
        System.out.println(mapList);
        for (int i = 0; i <mapList.size() ; i++) {
            Double lo= (Double) mapList.get(i).get("lo");
            Double la= (Double) mapList.get(i).get("la");
            x= (int) Math.floor((lo-lo1)/dx);
            y=Math.abs((int)Math.floor((la-la1)/dy));
            //y=Math.floor(Math.abs(la-la1)/dy);
            U=(Double) mapList.get(i).get("U");
            V=(Double) mapList.get(i).get("V");
            if (i==0){
                for (int j = 0; j <nx*ny ; j++) {
                    uList.add(0.0);
                    vList.add(0.0);
                }
            }
            for (int j = 0; j <nx*ny ; j++) {
                if (i==0){
                    if ((y>=2 && j==(y)*nx+x)){
                        int k;
                        System.out.println(nx*ny);
                        for (k = j-2*nx; k <=j+2*nx ;k=k+nx) {
                            System.out.println(k);
                            System.out.println("----------------");
                            System.out.println(uList.size());
                            uList.set(k,U);
                            uList.set(k-1,U);
                            uList.set(k-2,U);
                            uList.set(k+1,U);
                            uList.set(k+2,U);
                            vList.set(k,V);
                            vList.set(k-1,V);
                            vList.set(k-2,V);
                            vList.set(k+1,V);
                            vList.set(k+2,V);
                        }
                    }
                }else {
                    if (y>=1 && j==y*nx+x && uList.get(j)==0.0 && vList.get(j)==0.0){
                        int k;
                        for (k = j-2*nx; k <=j+2*nx ;) {
                            uList.set(k-1,U);
                            uList.set(k-2,U);
                            uList.set(k+1,U);
                            uList.set(k+2,U);
                            vList.set(k-1,V);
                            vList.set(k-2,V);
                            vList.set(k+1,V);
                            vList.set(k+2,V);
                            k=k+nx;
                        }
                        uList.set(j,U);
                        vList.set(j,V);
                    }
                }
            }
        }
        String uData = "\"" + "data" + "\"" + ": " + uList;
        String vData = "\"" + "data" + "\"" + ": " + vList;
        String s1 = "[" + "{" + header1 + ", " + uData + "}" + ", " + "{" + header2 + ", " + vData + "}" + "]";
        JSONArray jsonArray = JSONArray.parseArray(s1);
        MonitorPoint monitorPoint=monitorPointMapper.byIdGetMonitorPoint(Integer.parseInt(id));
        Double monitorLo=monitorPoint.getLongitude();
        Double monitorLa=monitorPoint.getLatitude();
        List transList= LatLngTransformation.Convert_BD09_To_GCJ02(monitorLa,monitorLo);
        Double transLo=(Double) transList.get(0);
        Double transLa=(Double) transList.get(1);
        List list=new ArrayList();
        list.add(jsonArray);
        list.add(transLo);
        list.add(transLa);
list.add(laLaMap);
        return list;
    }
    @Override
    public DeviceAndWind getDeviceAndWindByMac(String mac,String time,String table) {
        return deviceMapper.getDeviceAndWindByMac(mac,time,table);
    }
}
src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
@@ -817,5 +817,10 @@
        return monitorPointMapper.getMonitorPointListByAccountId(id);
    }
    @Override
    public MonitorPoint byIdGetMonitorPoint(int id) {
        return monitorPointMapper.byIdGetMonitorPoint(id);
    }
}
src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
@@ -60,7 +60,10 @@
        return orgIds;
    }
    @Override
    public Organization getOrganizationByMac(Map<String, Object> parameters) {
        return organizationMapper.getOrganizationByMac(parameters);
    }
    @Override
    public List<Organization> getOrganizationsByAreaName(Map<String, Object> parameters) {
        ValidateUtil.notNull(parameters.get("areaName"), "param.is.null");
src/main/java/com/moral/webSocketServer/WebSocketServerNew.java
@@ -35,11 +35,6 @@
    // 与某个客户端的连接会话,需要通过它来给客户端发送数据
    private Session session;
    private String orgId;
    private String accountId;
    private Connection connection;
    private Channel channel;
@@ -116,9 +111,7 @@
    @OnClose
    public void onClose() {
//**从安全Set中 移除当前连接对象*//**//**//**//**//**//**//**//*
        webSocketSet.remove(this);
        try {
            connection.close();
src/main/resources/mapper/DeviceMapper.xml
@@ -1,92 +1,94 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moral.mapper.DeviceMapper">
    <resultMap id="ResultMap" type="com.moral.entity.Device">
        <id column="id" jdbcType="INTEGER" property="id" />
        <result column="name" jdbcType="VARCHAR" property="name" />
        <result column="address" jdbcType="VARCHAR" property="address" />
        <result column="longitude" jdbcType="DOUBLE" property="longitude" />
        <result column="latitude" jdbcType="DOUBLE" property="latitude" />
        <result column="mac" jdbcType="VARCHAR" property="mac" />
        <result column="operate_user_id" jdbcType="INTEGER" property="operateUserId" />
        <result column="state" jdbcType="CHAR" property="state" />
        <result column="is_delete" jdbcType="CHAR" property="isDelete" />
        <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
        <result column="install_time" jdbcType="TIMESTAMP" property="installTime" />
        <result column="monitor_point_id" jdbcType="INTEGER" property="monitorPointId" />
        <result column="device_version_id" jdbcType="INTEGER" property="deviceVersionId" />
        <result column="profession_id" jdbcType="INTEGER" property="professionId" />
    </resultMap>
    <resultMap id="ResultMap" type="com.moral.entity.Device">
        <id column="id" jdbcType="INTEGER" property="id"/>
        <result column="name" jdbcType="VARCHAR" property="name"/>
        <result column="address" jdbcType="VARCHAR" property="address"/>
        <result column="longitude" jdbcType="DOUBLE" property="longitude"/>
        <result column="latitude" jdbcType="DOUBLE" property="latitude"/>
        <result column="mac" jdbcType="VARCHAR" property="mac"/>
        <result column="operate_user_id" jdbcType="INTEGER" property="operateUserId"/>
        <result column="state" jdbcType="CHAR" property="state"/>
        <result column="is_delete" jdbcType="CHAR" property="isDelete"/>
        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
        <result column="install_time" jdbcType="TIMESTAMP" property="installTime"/>
        <result column="monitor_point_id" jdbcType="INTEGER" property="monitorPointId"/>
        <result column="device_version_id" jdbcType="INTEGER" property="deviceVersionId"/>
        <result column="profession_id" jdbcType="INTEGER" property="professionId"/>
    </resultMap>
    <resultMap id="BaseResultMap" type="com.moral.entity.Device" extends="ResultMap">
        <association property="operateUser" javaType="com.moral.entity.OperateUser">
            <result column="operate_user_id" property="id" jdbcType="INTEGER" />
            <result column="operate_user_name" property="name" jdbcType="VARCHAR" />
        </association>
        <association property="deviceVersion" javaType="com.moral.entity.DeviceVersion">
            <result column="device_version_id" property="id" jdbcType="INTEGER" />
            <result column="device_version_value" property="version" jdbcType="INTEGER" />
            <result column="device_version_name" property="name" jdbcType="VARCHAR" />
        </association>
        <association property="monitorPoint" javaType="com.moral.entity.MonitorPoint">
            <result column="monitor_point_id" property="id" jdbcType="INTEGER" />
            <result column="monitor_point_name" property="name" jdbcType="VARCHAR" />
            <result column="province_code" property="provinceCode" jdbcType="VARCHAR" />
        </association>
        <association property="profession" javaType="com.moral.entity.Profession">
            <result column="profession_id" property="id" jdbcType="INTEGER" />
            <result column="profession_name" property="name" jdbcType="VARCHAR" />
        </association>
    </resultMap>
    <resultMap id="BaseResultMap" type="com.moral.entity.Device" extends="ResultMap">
        <association property="operateUser" javaType="com.moral.entity.OperateUser">
            <result column="operate_user_id" property="id" jdbcType="INTEGER"/>
            <result column="operate_user_name" property="name" jdbcType="VARCHAR"/>
        </association>
        <association property="deviceVersion" javaType="com.moral.entity.DeviceVersion">
            <result column="device_version_id" property="id" jdbcType="INTEGER"/>
            <result column="device_version_value" property="version" jdbcType="INTEGER"/>
            <result column="device_version_name" property="name" jdbcType="VARCHAR"/>
        </association>
        <association property="monitorPoint" javaType="com.moral.entity.MonitorPoint">
            <result column="monitor_point_id" property="id" jdbcType="INTEGER"/>
            <result column="monitor_point_name" property="name" jdbcType="VARCHAR"/>
            <result column="province_code" property="provinceCode" jdbcType="VARCHAR"/>
        </association>
        <association property="profession" javaType="com.moral.entity.Profession">
            <result column="profession_id" property="id" jdbcType="INTEGER"/>
            <result column="profession_name" property="name" jdbcType="VARCHAR"/>
        </association>
    </resultMap>
    <resultMap id="PropertyResultMap" type="com.moral.entity.Device" extends="BaseResultMap">
        <association property="deviceProperty" javaType="com.moral.entity.DeviceProperty">
            <result column="id" property="id" jdbcType="INTEGER" />
            <result column="device_tech" property="deviceTech" jdbcType="TINYINT" />
            <result column="device_cat" property="deviceCat" jdbcType="TINYINT" />
            <result column="device_source" property="deviceSource" jdbcType="VARCHAR" />
            <result column="ext_c" property="extC" jdbcType="VARCHAR" />
            <result column="ext_d" property="extD" jdbcType="VARCHAR" />
        </association>
    </resultMap>
    <resultMap id="PropertyResultMap" type="com.moral.entity.Device" extends="BaseResultMap">
        <association property="deviceProperty" javaType="com.moral.entity.DeviceProperty">
            <result column="id" property="id" jdbcType="INTEGER"/>
            <result column="device_tech" property="deviceTech" jdbcType="TINYINT"/>
            <result column="device_cat" property="deviceCat" jdbcType="TINYINT"/>
            <result column="device_source" property="deviceSource" jdbcType="VARCHAR"/>
            <result column="ext_c" property="extC" jdbcType="VARCHAR"/>
            <result column="ext_d" property="extD" jdbcType="VARCHAR"/>
        </association>
    </resultMap>
    <resultMap id="BaseResultWithOrgIdsMap" type="com.moral.entity.Device" extends="BaseResultMap">
        <collection property="organizationIds" column="id" select="selectOrganizationIds"></collection>
    </resultMap>
    <sql id="Example_Where_Clause">
        <where>
            <foreach collection="oredCriteria" item="criteria" separator="or">
                <if test="criteria.valid">
                    <trim prefix="(" prefixOverrides="and" suffix=")">
                        <foreach collection="criteria.criteria" item="criterion">
                            <choose>
                                <when test="criterion.noValue">
                                    and ${criterion.condition}
                                </when>
                                <when test="criterion.singleValue">
                                    and ${criterion.condition} #{criterion.value}
                                </when>
                                <when test="criterion.betweenValue">
                                    and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                                </when>
                                <when test="criterion.listValue">
                                    and ${criterion.condition}
                                    <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                                        #{listItem}
                                    </foreach>
                                </when>
                            </choose>
                        </foreach>
                    </trim>
                </if>
            </foreach>
        </where>
    </sql>
  <sql id="Base_Column_List">
    <resultMap id="BaseResultWithOrgIdsMap" type="com.moral.entity.Device" extends="BaseResultMap">
        <collection property="organizationIds" column="id" select="selectOrganizationIds"></collection>
    </resultMap>
    <sql id="Example_Where_Clause">
        <where>
            <foreach collection="oredCriteria" item="criteria" separator="or">
                <if test="criteria.valid">
                    <trim prefix="(" prefixOverrides="and" suffix=")">
                        <foreach collection="criteria.criteria" item="criterion">
                            <choose>
                                <when test="criterion.noValue">
                                    and ${criterion.condition}
                                </when>
                                <when test="criterion.singleValue">
                                    and ${criterion.condition} #{criterion.value}
                                </when>
                                <when test="criterion.betweenValue">
                                    and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                                </when>
                                <when test="criterion.listValue">
                                    and ${criterion.condition}
                                    <foreach close=")" collection="criterion.value" item="listItem" open="("
                                             separator=",">
                                        #{listItem}
                                    </foreach>
                                </when>
                            </choose>
                        </foreach>
                    </trim>
                </if>
            </foreach>
        </where>
    </sql>
    <sql id="Base_Column_List">z
    id, name, address, longitude, latitude, mac, operate_user_id, state, is_delete, create_time, 
    install_time, monitor_point_id, device_version_id
  </sql>
    <select id="countByTimes"   resultType="java.util.Map">
    <select id="countByTimes" resultType="java.util.Map">
        select DATE_FORMAT(create_time,#{format}) as time, COUNT(*) as count from device
        where create_time >= #{start}
        and create_time
@@ -98,44 +100,44 @@
        ]]> 1
        GROUP BY DATE_FORMAT(create_time,#{format}) ;
    </select>
  <select id="selectWithRelationData" parameterType="tk.mybatis.mapper.entity.Example" resultMap="BaseResultMap">
    select
    dev.*,
    ouser.name as operate_user_name,
    dvn.name as device_version_name,
    mpt.name as monitor_point_name
    from device dev
    left join operate_user ouser on dev.operate_user_id = ouser.id
    left join device_version dvn on dev.device_version_id = dvn.id
    left join monitor_point mpt on dev.monitor_point_id = mpt.id
    where dev.id in (
      select id from device
      <if test="_parameter != null">
          <include refid="Example_Where_Clause" />
      </if>
      <if test="orderByClause != null">
          order by ${orderByClause}
      </if>
      )
  </select>
    <select id="getDeviceStatesByAccount" resultType="java.util.Map">
        SELECT
            COUNT( d.state ) count,
            d.state
        FROM
            device d
        <if test="orgIds != null and orgIds.size &gt; 0">
            ,monitor_point mp
        WHERE
            d.monitor_point_id = mp.id
            AND mp.organization_id IN
            <foreach close=")" collection="orgIds" item="listItem" open="(" separator=",">
                #{listItem}
            </foreach>
        </if>
        GROUP BY d.state
    </select>
    <select id="getSensorsByDevice" resultType="java.util.Map">
    <select id="selectWithRelationData" parameterType="tk.mybatis.mapper.entity.Example" resultMap="BaseResultMap">
        select
        dev.*,
        ouser.name as operate_user_name,
        dvn.name as device_version_name,
        mpt.name as monitor_point_name
        from device dev
        left join operate_user ouser on dev.operate_user_id = ouser.id
        left join device_version dvn on dev.device_version_id = dvn.id
        left join monitor_point mpt on dev.monitor_point_id = mpt.id
        where dev.id in (
        select id from device
        <if test="_parameter != null">
            <include refid="Example_Where_Clause"/>
        </if>
        <if test="orderByClause != null">
            order by ${orderByClause}
        </if>
        )
    </select>
    <select id="getDeviceStatesByAccount" resultType="java.util.Map">
        SELECT
        COUNT( d.state ) count,
        d.state
        FROM
        device d
        <if test="orgIds != null and orgIds.size &gt; 0">
            ,monitor_point mp
            WHERE
            d.monitor_point_id = mp.id
            AND mp.organization_id IN
            <foreach close=")" collection="orgIds" item="listItem" open="(" separator=",">
                #{listItem}
            </foreach>
        </if>
        GROUP BY d.state
    </select>
    <select id="getSensorsByDevice" resultType="java.util.Map">
        SELECT
            s.`key`,
            s.`name` 
@@ -150,7 +152,7 @@
        ORDER BY
            s.id
    </select>
    <select id="getDeviceVersionIdByMonitorPoint" resultType="java.util.Map">
    <select id="getDeviceVersionIdByMonitorPoint" resultType="java.util.Map">
        SELECT
            device_version_id deviceVersionId
        FROM
@@ -160,23 +162,23 @@
        GROUP BY
            device_version_id
    </select>
    <select id="getDeviceVersionIdByAreaCode" resultType="java.lang.Integer">
        SELECT DISTINCT
            d.device_version_id
        FROM
            monitor_point mp,
            device d
        WHERE
            mp.area_code = #{areaCode}
            AND d.monitor_point_id = mp.id
        <if test="orgIds != null and orgIds.size() > 0">
            AND mp.organization_id IN
            <foreach  collection="orgIds" open="(" separator="," close=")" item="listItem">
                #{listItem}
            </foreach>
        </if>
    </select>
    <select id="getDeviceMacByMonitorPointAndDeviceVersion" resultType="java.lang.String">
    <select id="getDeviceVersionIdByAreaCode" resultType="java.lang.Integer">
        SELECT DISTINCT
        d.device_version_id
        FROM
        monitor_point mp,
        device d
        WHERE
        mp.area_code = #{areaCode}
        AND d.monitor_point_id = mp.id
        <if test="orgIds != null and orgIds.size() > 0">
            AND mp.organization_id IN
            <foreach collection="orgIds" open="(" separator="," close=")" item="listItem">
                #{listItem}
            </foreach>
        </if>
    </select>
    <select id="getDeviceMacByMonitorPointAndDeviceVersion" resultType="java.lang.String">
        SELECT
            mac
        FROM
@@ -185,89 +187,89 @@
            monitor_point_id = #{monitorPointId}
            AND device_version_id = #{deviceVersionId}
    </select>
    <select id="selectByOrgIdAndDevName" resultMap="BaseResultMap">
        SELECT dev.*,dve.version as device_version_value from device dev
        left join monitor_point mpt on dev.monitor_point_id = mpt.id
        left join device_version dve on dev.device_version_id = dve.id
        <where>
        <if test="@com.moral.common.bean.Constants@isNotSpecialOrgId(orgId)">
            (
            1 > 1
            <if test="orgIds!=null and orgIds.size() > 0">
                or mpt.organization_id in
                <foreach collection="orgIds" item="tempOrgId" open="(" close=")" separator=",">
                    #{tempOrgId,jdbcType=INTEGER}
                </foreach>
            </if>
            )
        </if>
            and dev.is_delete = 0
            <if test="devState!=null">
                and dev.state = #{devState}
            </if>
            <if test="name!=null and ''!=name">
                and
                (
                dev.name like CONCAT('%',#{name},'%')
                or dev.mac like CONCAT('%',#{name},'%')
                or mpt.name like CONCAT('%',#{name},'%')
                )
            </if>
        </where>
    </select>
    <select id="selectByOrgIdAndMpId" resultMap="BaseResultMap">
        SELECT dev.*,dve.version as device_version_value,mpt.* from device dev
        left join monitor_point mpt on dev.monitor_point_id = mpt.id
        left join device_version dve on dev.device_version_id = dve.id
        <where>
            <if test="@com.moral.common.bean.Constants@isNotSpecialOrgId(orgId)">
                (
                1 > 1
                <if test="orgIds!=null and orgIds.size() > 0">
                    or mpt.organization_id in
                    <foreach collection="orgIds" item="tempOrgId" open="(" close=")" separator=",">
                        #{tempOrgId,jdbcType=INTEGER}
                    </foreach>
                </if>
                )
            </if>
            and dev.monitor_point_id = #{mpId}
            and dev.is_delete = 0
        </where>
    </select>
    <select id="selectByMap" parameterType="java.util.Map" resultMap="BaseResultMap">
        SELECT dev.*,dve.version as device_version_value from device dev
        left join monitor_point  mpt on dev.monitor_point_id = mpt.id
    <select id="selectByOrgIdAndDevName" resultMap="BaseResultMap">
        SELECT dev.*,dve.version as device_version_value from device dev
        left join monitor_point mpt on dev.monitor_point_id = mpt.id
        left join device_version dve on dev.device_version_id = dve.id
        <where>
            <if test="@com.moral.common.bean.Constants@isNotSpecialOrgId(orgId)">
                (
                1 > 1
                <if test="orgIds!=null and orgIds.size() > 0">
                    or mpt.organization_id in
                    <foreach collection="orgIds" item="tempOrgId" open="(" close=")" separator=",">
                        #{tempOrgId,jdbcType=INTEGER}
                    </foreach>
                </if>
                )
            </if>
            <![CDATA[
        <where>
            <if test="@com.moral.common.bean.Constants@isNotSpecialOrgId(orgId)">
                (
                1 > 1
                <if test="orgIds!=null and orgIds.size() > 0">
                    or mpt.organization_id in
                    <foreach collection="orgIds" item="tempOrgId" open="(" close=")" separator=",">
                        #{tempOrgId,jdbcType=INTEGER}
                    </foreach>
                </if>
                )
            </if>
            and dev.is_delete = 0
            <if test="devState!=null">
                and dev.state = #{devState}
            </if>
            <if test="name!=null and ''!=name">
                and
                (
                dev.name like CONCAT('%',#{name},'%')
                or dev.mac like CONCAT('%',#{name},'%')
                or mpt.name like CONCAT('%',#{name},'%')
                )
            </if>
        </where>
    </select>
    <select id="selectByOrgIdAndMpId" resultMap="BaseResultMap">
        SELECT dev.*,dve.version as device_version_value,mpt.* from device dev
        left join monitor_point mpt on dev.monitor_point_id = mpt.id
        left join device_version dve on dev.device_version_id = dve.id
        <where>
            <if test="@com.moral.common.bean.Constants@isNotSpecialOrgId(orgId)">
                (
                1 > 1
                <if test="orgIds!=null and orgIds.size() > 0">
                    or mpt.organization_id in
                    <foreach collection="orgIds" item="tempOrgId" open="(" close=")" separator=",">
                        #{tempOrgId,jdbcType=INTEGER}
                    </foreach>
                </if>
                )
            </if>
            and dev.monitor_point_id = #{mpId}
            and dev.is_delete = 0
        </where>
    </select>
    <select id="selectByMap" parameterType="java.util.Map" resultMap="BaseResultMap">
        SELECT dev.*,dve.version as device_version_value from device dev
        left join monitor_point mpt on dev.monitor_point_id = mpt.id
        left join device_version dve on dev.device_version_id = dve.id
        <where>
            <if test="@com.moral.common.bean.Constants@isNotSpecialOrgId(orgId)">
                (
                1 > 1
                <if test="orgIds!=null and orgIds.size() > 0">
                    or mpt.organization_id in
                    <foreach collection="orgIds" item="tempOrgId" open="(" close=")" separator=",">
                        #{tempOrgId,jdbcType=INTEGER}
                    </foreach>
                </if>
                )
            </if>
            <![CDATA[
            AND dev.longitude < #{mapBounds.Ge,jdbcType=NUMERIC}
            AND dev.longitude > #{mapBounds.Le,jdbcType=NUMERIC}
            AND dev.latitude  < #{mapBounds.Fe,jdbcType=NUMERIC}
            AND dev.latitude  > #{mapBounds.Ke,jdbcType=NUMERIC}
              ]]>
             <if test="regionCode != null">
             AND mpt.${regionType}_code = #{regionCode}
             </if>
            AND dev.is_delete =0
        </where>
    </select>
    <!-- resultMap引用 -->
    <select id="selectOrganizationIds" resultType="java.lang.Integer">
            <if test="regionCode != null">
                AND mpt.${regionType}_code = #{regionCode}
            </if>
            AND dev.is_delete =0
        </where>
    </select>
    <!-- resultMap引用 -->
    <select id="selectOrganizationIds" resultType="java.lang.Integer">
        call proc_organizationIds_GetByDeviceId(#{id,jdbcType=INTEGER});
    </select>
    <select id="selectWithOrgIdsByMac" parameterType="java.lang.String" resultMap="BaseResultWithOrgIdsMap">
    <select id="selectWithOrgIdsByMac" parameterType="java.lang.String" resultMap="BaseResultWithOrgIdsMap">
        select
        dev.*,
        mpt.name as monitor_point_name,
@@ -280,79 +282,79 @@
        where dev.mac = #{mac,jdbcType=VARCHAR}
        limit 0,1
    </select>
    <select id="getDeviceCountByRegion" resultType="java.lang.Integer">
        SELECT
            COUNT( * )
        FROM
            device d
        WHERE
            d.is_delete = 0
            AND d.monitor_point_id IN (
                SELECT
                    mp.id
                FROM
                    monitor_point mp
                WHERE
                    mp.is_delete = 0
                    <if test="provinceCode != null">
                    AND mp.province_code = #{provinceCode}
                    </if>
                    <if test="cityCode != null">
                    AND mp.city_code = #{cityCode}
                    </if>
                    <if test="areaCode != null">
                    AND mp.area_code = #{areaCode}
                    </if>
                    <if test="townCode != null">
                    AND mp.town_code = #{townCode}
                    </if>
                    <if test="villageCode != null">
                    AND mp.village_code = #{villageCode}
                    </if>
            )
            <if test="professionId != null">
            AND d.profession_id = #{professionId}
            </if>
    </select>
    <select id="getDevicesByProfession" resultType="com.moral.entity.Device">
        SELECT
            *
        FROM
            device d
        WHERE
            d.is_delete = 0
            AND d.monitor_point_id IN (
                SELECT
                    mp.id
                FROM
                    monitor_point mp
                WHERE
                    mp.is_delete = 0
                    <if test="provinceCode != null">
                    AND mp.province_code = #{provinceCode}
                    </if>
                    <if test="cityCode != null">
                    AND mp.city_code = #{cityCode}
                    </if>
                    <if test="areaCode != null">
                    AND mp.area_code = #{areaCode}
                    </if>
                    <if test="monitorPointId != null">
                    AND mp.id = #{monitorPointId}
                    </if>
                    <if test="townCode != null">
                    AND mp.town_code = #{townCode}
                    </if>
                    <if test="villageCode != null">
                    AND mp.village_code = #{villageCode}
                    </if>
            )
            <if test="professionId != null">
            AND d.profession_id = #{professionId}
            </if>
    </select>
    <select id="getDeviceCountByRegion" resultType="java.lang.Integer">
        SELECT
        COUNT( * )
        FROM
        device d
        WHERE
        d.is_delete = 0
        AND d.monitor_point_id IN (
        SELECT
        mp.id
        FROM
        monitor_point mp
        WHERE
        mp.is_delete = 0
        <if test="provinceCode != null">
            AND mp.province_code = #{provinceCode}
        </if>
        <if test="cityCode != null">
            AND mp.city_code = #{cityCode}
        </if>
        <if test="areaCode != null">
            AND mp.area_code = #{areaCode}
        </if>
        <if test="townCode != null">
            AND mp.town_code = #{townCode}
        </if>
        <if test="villageCode != null">
            AND mp.village_code = #{villageCode}
        </if>
        )
        <if test="professionId != null">
            AND d.profession_id = #{professionId}
        </if>
    </select>
    <select id="getDevicesByProfession" resultType="com.moral.entity.Device">
        SELECT
        *
        FROM
        device d
        WHERE
        d.is_delete = 0
        AND d.monitor_point_id IN (
        SELECT
        mp.id
        FROM
        monitor_point mp
        WHERE
        mp.is_delete = 0
        <if test="provinceCode != null">
            AND mp.province_code = #{provinceCode}
        </if>
        <if test="cityCode != null">
            AND mp.city_code = #{cityCode}
        </if>
        <if test="areaCode != null">
            AND mp.area_code = #{areaCode}
        </if>
        <if test="monitorPointId != null">
            AND mp.id = #{monitorPointId}
        </if>
        <if test="townCode != null">
            AND mp.town_code = #{townCode}
        </if>
        <if test="villageCode != null">
            AND mp.village_code = #{villageCode}
        </if>
        )
        <if test="professionId != null">
            AND d.profession_id = #{professionId}
        </if>
    </select>
    <select id="getDevicesByOrganizationId" resultMap="ResultMap">
    <select id="getDevicesByOrganizationId" resultMap="ResultMap">
        SELECT
            d.* 
        FROM
@@ -364,58 +366,81 @@
            AND mp.is_delete = 0 
            AND mp.organization_id = #{organizationId}
    </select>
    <select id="getAllMac" resultType="java.lang.String">
        SELECT mac FROM `device` where  state!=4;
    </select>
    <select id="byMacGetDevice" resultType="com.moral.entity.Device" resultMap="ResultMap">
        SELECT * from device where mac=#{mac}
    </select>
    <select id="getDeviceAndWindByMac" resultType="com.moral.entity.DeviceAndWind">
            select d.longitude as longitude,d.latitude as latitude,
            case when h.json->"$.e18[0]"=0 then 0.1 else h.json->"$.e18[0]" end
            as windSpeed, h.json->"$.e23[0]" as windDir,
            h.json->"$.e17[0]" as tVoc
            from ${table} h ,`device` as d
            where d.mac=h.mac and d.mac=#{mac} and h.time=#{time}
 </select>
    <select id="byMonitorIdGetDeviceAndWind" resultType="com.moral.entity.DeviceAndWind">
          select d.longitude as longitude,d.latitude as latitude,
            case when h.json->"$.e18[0]"=0 then 0.1 else h.json->"$.e18[0]" end
            as windSpeed, h.json->"$.e23[0]" as windDir,
            h.json->"$.e17[0]" as tVoc
            from ${table} h ,`device` as d
            where d.mac=h.mac and h.time=#{time}
                        and d.mac in (select d.mac from device , monitor_point as m where d.monitor_point_id=m.id and m.id=#{id})
    </select>
    <select id="getDevicesStateByRegion" resultType="map">
        SELECT
            d.id deviceId,d.mac,d.state,d.name deviceName,
            mp.id,mp.name
        FROM
            device d ,
            monitor_point mp
        <where>
            d.monitor_point_id = mp.id
            AND d.is_delete = 0
            AND mp.is_delete = 0
            AND mp.${regionType}_code = #{regionCode}
        <if test="orgIds != null and orgIds.size &gt; 0">
            AND mp.organization_id IN
            <foreach  collection="orgIds" open="(" separator="," close=")" item="listItem">
                #{listItem}
            </foreach>
        </if>
        </where>
    </select>
    <select id="getDevicesStateByRegion" resultType="map">
        SELECT
        d.id deviceId,d.mac,d.state,d.name deviceName,
        mp.id,mp.name
        FROM
        device d ,
        monitor_point mp
        <where>
            d.monitor_point_id = mp.id
            AND d.is_delete = 0
            AND mp.is_delete = 0
            AND mp.${regionType}_code = #{regionCode}
            <if test="orgIds != null and orgIds.size &gt; 0">
                AND mp.organization_id IN
                <foreach collection="orgIds" open="(" separator="," close=")" item="listItem">
                    #{listItem}
                </foreach>
            </if>
        </where>
    </select>
    <select id="getDeviceList" resultMap="PropertyResultMap">
        select
            dev.*,
            ouser.name as operate_user_name,
            dvn.name as device_version_name,
            mpt.name as monitor_point_name,
            mpt.province_code,
            dp.device_tech,
            dp.device_cat,
            dp.device_source,
            dp.ext_c,
            dp.ext_d
        from device dev
        left join operate_user ouser on dev.operate_user_id = ouser.id
        left join device_version dvn on dev.device_version_id = dvn.id
        left join monitor_point mpt on dev.monitor_point_id = mpt.id
        left join device_property dp on dev.id = dp.id
        where dev.id in (
            select id from device
            <if test="_parameter != null">
                <include refid="Example_Where_Clause" />
            </if>
            <if test="orderByClause != null">
                order by ${orderByClause}
            </if>
        )
    </select>
    <select id="getLimitDataByDevice" resultType="String">
    <select id="getDeviceList" resultMap="PropertyResultMap">
        select
        dev.*,
        ouser.name as operate_user_name,
        dvn.name as device_version_name,
        mpt.name as monitor_point_name,
        mpt.province_code,
        dp.device_tech,
        dp.device_cat,
        dp.device_source,
        dp.ext_c,
        dp.ext_d
        from device dev
        left join operate_user ouser on dev.operate_user_id = ouser.id
        left join device_version dvn on dev.device_version_id = dvn.id
        left join monitor_point mpt on dev.monitor_point_id = mpt.id
        left join device_property dp on dev.id = dp.id
        where dev.id in (
        select id from device
        <if test="_parameter != null">
            <include refid="Example_Where_Clause"/>
        </if>
        <if test="orderByClause != null">
            order by ${orderByClause}
        </if>
        )
    </select>
    <select id="getLimitDataByDevice" resultType="String">
        SELECT limit_val FROM view_device_density WHERE mac = #{mac}
    </select>
@@ -430,17 +455,17 @@
        AND d.is_delete = '0'
    </select>
    <select id="getDeviceById1" resultType="com.moral.entity.Device">
    <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 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 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>
    <select id="getHasWindDirAndWindSpeedDeviceVersion" resultType="integer">
    <select id="getHasWindDirAndWindSpeedDeviceVersion" resultType="integer">
        SELECT id from
        device_version
        where id in
@@ -459,26 +484,35 @@
        and is_delete=0;
    </select>
    <select id="selectDevicesAll" parameterType="java.util.Map" resultType="com.moral.entity.Device">
        SELECT dev.id,dev.mac,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)">
                (
                1 > 1
                <if test="orgIds!=null and orgIds.size() > 0">
                    or mpt.organization_id in
                    <foreach collection="orgIds" item="tempOrgId" open="(" close=")" separator=",">
                        #{tempOrgId,jdbcType=INTEGER}
                    </foreach>
                </if>
                )
            </if>
            <if test="regionCode != null">
                AND mpt.${regionType}_code = #{regionCode}
            </if>
            AND dev.is_delete =0
        </where>
    <select id="selectDevicesAll" parameterType="java.util.Map" resultType="com.moral.entity.Device">
        SELECT dev.id,dev.mac,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)">
                (
                1 > 1
                <if test="orgIds!=null and orgIds.size() > 0">
                    or mpt.organization_id in
                    <foreach collection="orgIds" item="tempOrgId" open="(" close=")" separator=",">
                        #{tempOrgId,jdbcType=INTEGER}
                    </foreach>
                </if>
                )
            </if>
            <if test="regionCode != null">
                AND mpt.${regionType}_code = #{regionCode}
            </if>
            AND dev.is_delete =0
        </where>
    </select>
    <select id="getAllDevice" resultType="com.moral.entity.DeviceAndWind">
        select d.longitude as longitude,d.latitude as latitude,
        case when h.json->"$.e18[0]"=0 then 0.1 else h.json->"$.e18[0]" end
         as windSpeed, h.json->"$.e23[0]" as windDir
            from history_minutely_202007 h ,`device` as d
            where h.time="2020-07-20 15:30:00" and h.json->"$.e23[0]" is not null and  h.mac in(SELECT d.mac   FROM monitor_point m
            where d.monitor_point_id=m.id
)
    </select>
    <select id="getDeviceListByMonitorPointIds" resultType="com.moral.entity.Device">
src/main/resources/mapper/MonitorPointMapper.xml
@@ -172,6 +172,9 @@
        and o.id=mp.organization_id
        and a.id=#{id};
    </select>
    <select id="byIdGetMonitorPoint" resultType="com.moral.entity.MonitorPoint">
        SELECT * FROM `monitor_point` where id=#{id}
    </select>
    <select id="getFirstMonitorPointByAreaCode" resultType="com.moral.entity.MonitorPoint" resultMap="BaseResultMap">
        select * from monitor_point where area_code=#{areaCode} limit 0,1
src/main/webapp/view/newUnorganizedMap.jsp
@@ -19,7 +19,7 @@
        #box {
            width: 300px;
            height: 400px;
            top: 220px;
            top: 30px;
            right: 30px;
            position: absolute;
            z-index: 1;
@@ -157,10 +157,17 @@
                  moralMap.showSensors(JSON.parse(JSON.parse(msg.data)));
              }*/
        };
        window.onbeforeunload=function(e){
            e = window.event||e;
            e.returnValue=("确定离开当前页面吗?");
            ws.onclose = function () {
            };
            alert(1)
        }
        //关闭事件
        ws.onclose = function () {
        };
        /*ws.onclose = function () {
        };*/
        //发生了错误事件
        ws.onerror = function () {
        };
src/main/webapp/view/unorganizedMap.jsp
@@ -18,7 +18,7 @@
        #box {
            width:300px;
            height:400px;
            top:220px;
            top:30px;
            right:30px;
            position:absolute;
            z-index:1;