From 60163c2fb5098fc522f8e80b131128d2c9a33e42 Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Fri, 26 Jan 2018 14:44:05 +0800
Subject: [PATCH] 组织配置

---
 src/main/java/com/moral/entity/Area.java                          |   30 -
 src/main/java/com/moral/controller/SensorController.java          |    4 
 src/main/java/com/moral/service/SensorService.java                |    7 
 src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java  |   19 
 pom.xml                                                           |   18 +
 src/main/java/com/moral/mapper/MonitorPointMapper.java            |    2 
 src/main/java/com/moral/entity/Province.java                      |   22 -
 src/main/java/com/moral/entity/MapBounds.java                     |   17 +
 src/main/java/com/moral/entity/City.java                          |   29 -
 src/main/java/com/moral/service/impl/SensorServiceImpl.java       |   15 
 src/main/resources/mapper/SensorMapper.xml                        |   26 +
 src/main/java/com/moral/controller/MapController.java             |   51 ++
 src/main/java/com/moral/service/MonitorPointService.java          |    7 
 src/main/java/com/moral/common/bean/PageBean.java                 |    1 
 src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java |    8 
 src/main/webapp/js/json2.js                                       |  519 ++++++++++++++++++++++++++++++++
 src/main/java/com/moral/service/AccountService.java               |    4 
 src/main/java/com/moral/service/impl/AccountServiceImpl.java      |    5 
 src/main/java/com/moral/entity/MonitorPoint.java                  |    4 
 src/main/java/com/moral/service/AreaService.java                  |    2 
 src/main/java/com/moral/controller/MonitorPointController.java    |    2 
 src/main/java/com/moral/service/impl/AreaServiceImpl.java         |   31 +
 src/main/java/com/moral/mapper/SensorMapper.java                  |    3 
 src/main/webapp/view/map.jsp                                      |   27 +
 src/main/java/com/moral/entity/alarm/AlarmSensorLevel.java        |    4 
 src/main/java/com/moral/entity/Device.java                        |    4 
 src/main/resources/system/sysConfig.properties                    |    3 
 src/main/java/com/moral/common/bean/Constants.java                |   11 
 src/main/resources/mapper/MonitorPointMapper.xml                  |   34 ++
 29 files changed, 809 insertions(+), 100 deletions(-)

diff --git a/pom.xml b/pom.xml
index e0ddd4e..b72016f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,6 +71,7 @@
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-tomcat</artifactId>
+			<scope>provided</scope>
 		</dependency>
 
 		<dependency>
@@ -138,7 +139,22 @@
 		<dependency>
 		    <groupId>tk.mybatis</groupId>
 		    <artifactId>mapper</artifactId>
-		    <version>3.3.9</version>
+		    <version>3.4.6</version>
+		</dependency>
+		<dependency>
+			<groupId>jstl</groupId>
+			<artifactId>jstl</artifactId>
+			<version>1.2</version>
+		</dependency>
+		<dependency>
+			<groupId>taglibs</groupId>
+			<artifactId>standard</artifactId>
+			<version>1.1.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.tomcat.embed</groupId>
+			<artifactId>tomcat-embed-jasper</artifactId>
+            <scope>provided</scope>
 		</dependency>
     </dependencies>
 
diff --git a/src/main/java/com/moral/common/bean/Constants.java b/src/main/java/com/moral/common/bean/Constants.java
index 6eef6c6..01d5455 100644
--- a/src/main/java/com/moral/common/bean/Constants.java
+++ b/src/main/java/com/moral/common/bean/Constants.java
@@ -17,5 +17,16 @@
 	public static final String IS_USED_FALSE = "0";
 
 	public static final String IS_USED_TRUE = "1";
+	private static final Integer[] specialOrgIds = new Integer[]{-1};
+
+	public static final Boolean isNotSpecialOrgId(Integer orgId) {
+		for(int i = 0; i < specialOrgIds.length; ++i) {
+			if (specialOrgIds[i].equals(orgId)) {
+				return false;
+			}
+		}
+
+		return true;
+	}
 }
 
diff --git a/src/main/java/com/moral/common/bean/PageBean.java b/src/main/java/com/moral/common/bean/PageBean.java
index 0232fbe..01a6f9f 100644
--- a/src/main/java/com/moral/common/bean/PageBean.java
+++ b/src/main/java/com/moral/common/bean/PageBean.java
@@ -45,6 +45,7 @@
             this.size = page.size();
         }else{
             this.data = list;
+            this.total = Integer.toUnsignedLong(list.size());
         }
     }
     
diff --git a/src/main/java/com/moral/controller/MapController.java b/src/main/java/com/moral/controller/MapController.java
index 1bc9ade..c32d4b5 100644
--- a/src/main/java/com/moral/controller/MapController.java
+++ b/src/main/java/com/moral/controller/MapController.java
@@ -2,12 +2,23 @@
 
 
 import com.alibaba.fastjson.JSONObject;
+import com.moral.common.bean.PageBean;
+import com.moral.common.bean.ResultBean;
+import com.moral.entity.Account;
+import com.moral.entity.MapBounds;
+import com.moral.entity.MonitorPoint;
+import com.moral.service.AccountService;
+import com.moral.service.AreaService;
+import com.moral.service.MonitorPointService;
+import com.moral.service.SensorService;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -16,9 +27,39 @@
 @Controller
 @RequestMapping("map")
 public class MapController {
+    @Resource
+    AreaService areaService;
+    @Resource
+    AccountService accountService;
+    @Resource
+    SensorService sensorService;
+    @Resource
+    MonitorPointService monitorPointService;
     @RequestMapping(value = "/main-page", method = RequestMethod.GET)
-    public String map(){
-        ModelAndView mv = new ModelAndView("map");
+    public String map(Model model,@RequestParam("areaCode")int code,@RequestParam("accountId")int accountId){
+        Account account = accountService.getAccountById(accountId);
+        String regionName = areaService.selectFullNameByCode(code);
+        Object sensors = sensorService.queryAll();
+        JSONObject params = new JSONObject();
+        params.put("regionCode",code);
+        params.put("regionName",regionName);
+        params.put("accountId", accountId);
+        params.put("orgId", account.getOrganizationId());
+        params.put("sensors", sensors);
+        String paramsJson = params.toJSONString();
+        model.addAttribute("mapParams",paramsJson);
         return "map";
     }
+    @RequestMapping(value="/getmonitorpoints",method = RequestMethod.GET)
+    @ResponseBody
+    public ResultBean getMonitorpointList(@RequestParam("orgId")String orgId,MapBounds mapBounds){
+        ResultBean< List<MonitorPoint>> resultBean = new ResultBean();
+        Map<String,Object> paramMap = new HashMap<String, Object>();
+        paramMap.put("orgId", orgId);
+        paramMap.put("mapBounds",mapBounds);
+        List<MonitorPoint> list = monitorPointService.queryWithStateByMap(paramMap);
+        resultBean.setData(list);
+        resultBean.setCode(ResultBean.SUCCESS);
+        return resultBean;
+    }
 }
diff --git a/src/main/java/com/moral/controller/MonitorPointController.java b/src/main/java/com/moral/controller/MonitorPointController.java
index 73d7170..68c5c1b 100644
--- a/src/main/java/com/moral/controller/MonitorPointController.java
+++ b/src/main/java/com/moral/controller/MonitorPointController.java
@@ -33,7 +33,7 @@
      */
     @GetMapping("get-by-id")
     public ResultBean getById(Integer id){
-        MonitorPoint monitorPoint = monitorPointService.selectWithRelationById(id);
+        MonitorPoint monitorPoint = monitorPointService.queryWithRelationById(id);
         ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
         resultBean.setData(monitorPoint);
         return resultBean;
diff --git a/src/main/java/com/moral/controller/SensorController.java b/src/main/java/com/moral/controller/SensorController.java
index b64ee4f..f6f616d 100644
--- a/src/main/java/com/moral/controller/SensorController.java
+++ b/src/main/java/com/moral/controller/SensorController.java
@@ -19,6 +19,10 @@
     public PageBean pageList(PageBean pageBean) {
         return sensorService.queryByPageBean(pageBean);
     }
+    @GetMapping("list-by-vid")
+    public PageBean pageListByVersionId(Integer versionId){
+        return sensorService.queryByVersionId(versionId);
+    }
     @PostMapping("delete-by-ids")
     public ResultBean deleteByIds(@RequestBody Integer [] ids){
         sensorService.deleteByIds(ids);
diff --git a/src/main/java/com/moral/entity/Area.java b/src/main/java/com/moral/entity/Area.java
index 1b98b5b..2b9f150 100644
--- a/src/main/java/com/moral/entity/Area.java
+++ b/src/main/java/com/moral/entity/Area.java
@@ -1,36 +1,16 @@
 package com.moral.entity;
 
+import lombok.Data;
 import tk.mybatis.mapper.annotation.ColumnType;
 
-public class Area {
+import javax.persistence.Id;
 
+@Data
+public class Area {
+    @Id
     private Integer areaCode;
 
     private String areaName;
 
     private Integer cityCode;
-
-    public Integer getAreaCode() {
-        return areaCode;
-    }
-
-    public void setAreaCode(Integer areaCode) {
-        this.areaCode = areaCode;
-    }
-
-    public String getAreaName() {
-        return areaName;
-    }
-
-    public void setAreaName(String areaName) {
-        this.areaName = areaName == null ? null : areaName.trim();
-    }
-
-    public Integer getCityCode() {
-        return cityCode;
-    }
-
-    public void setCityCode(Integer cityCode) {
-        this.cityCode = cityCode;
-    }
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/entity/City.java b/src/main/java/com/moral/entity/City.java
index 3214c82..23d3285 100644
--- a/src/main/java/com/moral/entity/City.java
+++ b/src/main/java/com/moral/entity/City.java
@@ -1,33 +1,16 @@
 package com.moral.entity;
 
+import lombok.Data;
+
+import javax.persistence.Id;
+
+@Data
 public class City {
+    @Id
     private Integer cityCode;
 
     private String cityName;
 
     private Integer provinceCode;
 
-    public Integer getCityCode() {
-        return cityCode;
-    }
-
-    public void setCityCode(Integer cityCode) {
-        this.cityCode = cityCode;
-    }
-
-    public String getCityName() {
-        return cityName;
-    }
-
-    public void setCityName(String cityName) {
-        this.cityName = cityName == null ? null : cityName.trim();
-    }
-
-    public Integer getProvinceCode() {
-        return provinceCode;
-    }
-
-    public void setProvinceCode(Integer provinceCode) {
-        this.provinceCode = provinceCode;
-    }
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/entity/Device.java b/src/main/java/com/moral/entity/Device.java
index 757f78e..ec0b15f 100644
--- a/src/main/java/com/moral/entity/Device.java
+++ b/src/main/java/com/moral/entity/Device.java
@@ -32,12 +32,12 @@
 	 * This field was generated by MyBatis Generator. This field corresponds to the database column device.longitude
 	 * @mbggenerated  Wed Nov 29 16:17:59 CST 2017
 	 */
-	private double longitude;
+	private Double longitude;
 	/**
 	 * This field was generated by MyBatis Generator. This field corresponds to the database column device.latitude
 	 * @mbggenerated  Wed Nov 29 16:17:59 CST 2017
 	 */
-	private double latitude;
+	private Double latitude;
 	/**
 	 * This field was generated by MyBatis Generator. This field corresponds to the database column device.mac
 	 * @mbggenerated  Wed Nov 29 16:17:59 CST 2017
diff --git a/src/main/java/com/moral/entity/MapBounds.java b/src/main/java/com/moral/entity/MapBounds.java
new file mode 100644
index 0000000..cec82bc
--- /dev/null
+++ b/src/main/java/com/moral/entity/MapBounds.java
@@ -0,0 +1,17 @@
+package com.moral.entity;
+
+import lombok.Data;
+
+/**
+ * @author fengxiang
+ * @Time���2017���11���13��� ������10:30:05
+ * @version 1.0
+ * ������������������������������������������������������������������������������������������
+ */
+@Data
+public class MapBounds {
+	private float Fe;//���������������
+    private float Ge;//���������������
+    private float Ke;//���������������
+    private float Le;//���������������
+}
\ No newline at end of file
diff --git a/src/main/java/com/moral/entity/MonitorPoint.java b/src/main/java/com/moral/entity/MonitorPoint.java
index 92b0803..3075b6a 100644
--- a/src/main/java/com/moral/entity/MonitorPoint.java
+++ b/src/main/java/com/moral/entity/MonitorPoint.java
@@ -30,7 +30,7 @@
      *
      * @mbggenerated Thu Dec 07 16:40:22 CST 2017
      */
-    private double longitude;
+    private Double longitude;
 
     /**
      * This field was generated by MyBatis Generator.
@@ -38,7 +38,7 @@
      *
      * @mbggenerated Thu Dec 07 16:40:22 CST 2017
      */
-    private double latitude;
+    private Double latitude;
 
     /**
      * This field was generated by MyBatis Generator.
diff --git a/src/main/java/com/moral/entity/Province.java b/src/main/java/com/moral/entity/Province.java
index f1ca1b0..ff4a86e 100644
--- a/src/main/java/com/moral/entity/Province.java
+++ b/src/main/java/com/moral/entity/Province.java
@@ -1,23 +1,13 @@
 package com.moral.entity;
 
+import lombok.Data;
+
+import javax.persistence.Id;
+
+@Data
 public class Province {
+    @Id
     private Integer provinceCode;
 
     private String provinceName;
-
-    public Integer getProvinceCode() {
-        return provinceCode;
-    }
-
-    public void setProvinceCode(Integer provinceCode) {
-        this.provinceCode = provinceCode;
-    }
-
-    public String getProvinceName() {
-        return provinceName;
-    }
-
-    public void setProvinceName(String provinceName) {
-        this.provinceName = provinceName == null ? null : provinceName.trim();
-    }
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/entity/alarm/AlarmSensorLevel.java b/src/main/java/com/moral/entity/alarm/AlarmSensorLevel.java
index fd736d3..0ae05b7 100644
--- a/src/main/java/com/moral/entity/alarm/AlarmSensorLevel.java
+++ b/src/main/java/com/moral/entity/alarm/AlarmSensorLevel.java
@@ -14,6 +14,10 @@
      */
     private boolean enable;
     /*
+  ������������������������1���������0���������
+ */
+    private boolean degressEnable;
+    /*
   ������������������������ [100,200,300]
    */
     private List<Float> increment;
diff --git a/src/main/java/com/moral/mapper/MonitorPointMapper.java b/src/main/java/com/moral/mapper/MonitorPointMapper.java
index e028c47..b0addba 100644
--- a/src/main/java/com/moral/mapper/MonitorPointMapper.java
+++ b/src/main/java/com/moral/mapper/MonitorPointMapper.java
@@ -10,4 +10,6 @@
 public interface MonitorPointMapper extends BaseMapper<MonitorPoint>{
 	List<MonitorPoint> selectWithAreaNameByExample(Example example);
 	List<MonitorPoint> getMonitorPointsByAreaName(Map<String, Object> parameters);
+
+    List<MonitorPoint> selectWithStateByMap(Map<String, Object> params);
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/SensorMapper.java b/src/main/java/com/moral/mapper/SensorMapper.java
index 94338a4..45f8e4c 100644
--- a/src/main/java/com/moral/mapper/SensorMapper.java
+++ b/src/main/java/com/moral/mapper/SensorMapper.java
@@ -3,5 +3,8 @@
 import com.moral.common.mapper.BaseMapper;
 import com.moral.entity.Sensor;
 
+import java.util.List;
+
 public interface SensorMapper extends BaseMapper<Sensor> {
+    List<Sensor> selectByVersionId(Integer deviceVersionId);
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/AccountService.java b/src/main/java/com/moral/service/AccountService.java
index c82b183..289adcf 100644
--- a/src/main/java/com/moral/service/AccountService.java
+++ b/src/main/java/com/moral/service/AccountService.java
@@ -12,7 +12,9 @@
 
 	Account getAccountByAccountName(String account);
 
-	void setOrgIdsByAccount(Map<String, Object> parameters);
+    Account getAccountById(Integer id);
+
+    void setOrgIdsByAccount(Map<String, Object> parameters);
 
 	PageBean<Account> getAccountListByPage(Map<String, Object> parameters);
 
diff --git a/src/main/java/com/moral/service/AreaService.java b/src/main/java/com/moral/service/AreaService.java
index e98a868..104bcd8 100644
--- a/src/main/java/com/moral/service/AreaService.java
+++ b/src/main/java/com/moral/service/AreaService.java
@@ -10,4 +10,6 @@
     List<Province> getProvinces();
     List<City> getCities(int provinceCode);
     List<Area> getAreas(int cityCode);
+
+    String selectFullNameByCode(Integer code);
 }
diff --git a/src/main/java/com/moral/service/MonitorPointService.java b/src/main/java/com/moral/service/MonitorPointService.java
index 17e08e0..014cbc2 100644
--- a/src/main/java/com/moral/service/MonitorPointService.java
+++ b/src/main/java/com/moral/service/MonitorPointService.java
@@ -9,9 +9,12 @@
 public interface MonitorPointService {
 
 	List<MonitorPoint> getMonitorPointsByAreaName(Map<String, Object> parameters);
-	public PageBean queryByPageBean(PageBean pageBean);
 
-    MonitorPoint selectWithRelationById(Integer id);
+    List<MonitorPoint> queryWithStateByMap(Map<String, Object> params);
+
+    public PageBean queryByPageBean(PageBean pageBean);
+
+    MonitorPoint queryWithRelationById(Integer id);
 
     public void addOrModify(MonitorPoint monitorPoint);
 
diff --git a/src/main/java/com/moral/service/SensorService.java b/src/main/java/com/moral/service/SensorService.java
index d525564..b178088 100644
--- a/src/main/java/com/moral/service/SensorService.java
+++ b/src/main/java/com/moral/service/SensorService.java
@@ -3,8 +3,15 @@
 import com.moral.common.bean.PageBean;
 import com.moral.entity.Sensor;
 
+import java.util.List;
+
 public interface SensorService {
+    List<Sensor> queryAll();
+
     public PageBean queryByPageBean(PageBean pageBean);
+
+    PageBean queryByVersionId(Integer deviceVersionId);
+
     public void addOrModify(Sensor sensor);
     public void deleteByIds(Integer... ids);
 }
diff --git a/src/main/java/com/moral/service/impl/AccountServiceImpl.java b/src/main/java/com/moral/service/impl/AccountServiceImpl.java
index 83484e0..be7b39a 100644
--- a/src/main/java/com/moral/service/impl/AccountServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AccountServiceImpl.java
@@ -75,7 +75,10 @@
 		account.setAccountName(accountName);
 		return accountMapper.selectOne(account);
 	}
-
+	@Override
+	public Account getAccountById(Integer id){
+		return accountMapper.selectByPrimaryKey(id);
+	}
 	@Override
 	public void setOrgIdsByAccount(Map<String, Object> parameters) {
 		String accountId = (String) parameters.get("accountId");
diff --git a/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java b/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java
index ff3a361..d4720d9 100644
--- a/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java
@@ -34,7 +34,7 @@
                 alarmConfig.setCreateTime(new Date());
                 alarmConfig.setUpdateTime(new Date());
                 alarmConfigMapper.insertSelective(alarmConfig);
-            }else{
+            }else {
                 alarmConfig.setUpdateTime(new Date());
                 alarmConfigMapper.updateByPrimaryKeySelective(alarmConfig);
             }
@@ -61,13 +61,18 @@
                              alarmSensorLevel.setIncrement(null);
                          }
                      }
-                     List<Float> degressions = alarmSensorLevel.getDegression();
-                     if(degressions!=null){
-                         boolean isDegression =  degressions.size()<3||
-                                 (degressions.get(0)==0&&degressions.get(1)==0&&degressions.get(2)==0);
-                         if(isDegression){
-                             alarmSensorLevel.setDegression(null);
+                     if(alarmSensorLevel.isDegressEnable()){
+                         List<Float> degressions = alarmSensorLevel.getDegression();
+                         if(degressions!=null){
+                             boolean isDegression =  degressions.size()<3||
+                                     (degressions.get(0)==0&&degressions.get(1)==0&&degressions.get(2)==0);
+                             if(isDegression){
+                                 alarmSensorLevel.setDegression(null);
+                             }
                          }
+                     }else{
+                         //���������������������������������
+                         alarmSensorLevel.setDegression(null);
                      }
                  }
           }
diff --git a/src/main/java/com/moral/service/impl/AreaServiceImpl.java b/src/main/java/com/moral/service/impl/AreaServiceImpl.java
index 214f641..339ea54 100644
--- a/src/main/java/com/moral/service/impl/AreaServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AreaServiceImpl.java
@@ -41,4 +41,35 @@
         example.or().andEqualTo("cityCode",cityCode);
         return areaMapper.selectByExample(example);
     }
+
+    /**
+     * ������������������������ ��������������������� ��������� ��������� ���������
+     * @param code ������������ ��� ��� ���������������
+     * @return
+     */
+    @Override
+    public String selectFullNameByCode(Integer code){
+        String codeStr = code.toString();
+        String fullName = "";
+        // ���������������code
+        if(!codeStr.endsWith("00")){
+            String provinceCode = codeStr.substring(0,2)+"0000";
+            Province province = provinceMapper.selectByPrimaryKey(Integer.valueOf(provinceCode));
+            String cityCode = codeStr.substring(0,4)+"00";
+            City city = cityMapper.selectByPrimaryKey(Integer.valueOf(cityCode));
+            Area area = areaMapper.selectByPrimaryKey(code);
+            fullName = province.getProvinceName()+city.getCityName()+area.getAreaName();
+        }  else if(!codeStr.endsWith("0000")){
+            // ��������� ���������code
+            String provinceCode = codeStr.substring(0,2)+"0000";
+            Province province = provinceMapper.selectByPrimaryKey(Integer.valueOf(provinceCode));
+            City city = cityMapper.selectByPrimaryKey(code);
+            fullName = province.getProvinceName()+city.getCityName();
+        } else {
+            // ��������� ���code
+            Province province = provinceMapper.selectByPrimaryKey(code);
+            fullName = province.getProvinceName();
+        }
+        return fullName;
+    }
 }
diff --git a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
index 8e2d6ce..f366b38 100644
--- a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
@@ -29,7 +29,10 @@
         ValidateUtil.notNull(parameters.get("areaName"), "param.is.null");
         return monitorPointMapper.getMonitorPointsByAreaName(parameters);
     }
-
+    @Override
+    public List<MonitorPoint> queryWithStateByMap(Map<String, Object> params){
+        return monitorPointMapper.selectWithStateByMap(params);
+    }
     @Override
     public PageBean queryByPageBean(PageBean pageBean) {
         Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean);
@@ -46,7 +49,7 @@
         return new PageBean(monitorPointList);
     }
     @Override
-   public MonitorPoint selectWithRelationById(Integer id){
+   public MonitorPoint queryWithRelationById(Integer id){
          Example example = new Example(ENTITY_CLASS);
          example.or().andEqualTo("id",id);
          List<MonitorPoint> monitorPointList = monitorPointMapper.selectWithAreaNameByExample(example);
@@ -56,6 +59,7 @@
     public void addOrModify(MonitorPoint monitorPoint) {
         try{
             if(monitorPoint.getId()==null){
+                monitorPoint.setIsDelete(Constants.IS_DELETE_FALSE);
                 monitorPointMapper.insertSelective(monitorPoint);
             }else{
                 monitorPointMapper.updateByPrimaryKeySelective(monitorPoint);
diff --git a/src/main/java/com/moral/service/impl/SensorServiceImpl.java b/src/main/java/com/moral/service/impl/SensorServiceImpl.java
index 92cb96f..7b410e2 100644
--- a/src/main/java/com/moral/service/impl/SensorServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/SensorServiceImpl.java
@@ -10,6 +10,7 @@
 
 import javax.annotation.Resource;
 import java.util.Arrays;
+import java.util.List;
 
 @Service
 public class SensorServiceImpl implements SensorService{
@@ -17,9 +18,23 @@
     SensorMapper sensorMapper;
 
     private static Class ENTITY_CLASS = Sensor.class;
+
+    /**
+     * ������������������������������
+     * @return
+     */
+    @Override
+    public List<Sensor> queryAll(){
+        return sensorMapper.selectByExample(null);
+    }
     public PageBean queryByPageBean(PageBean pageBean){
         return MyBatisBaseMapUtil.queryPage(sensorMapper,pageBean,ENTITY_CLASS);
     }
+    @Override
+    public PageBean queryByVersionId(Integer deviceVersionId){
+        List<Sensor> sensorList = sensorMapper.selectByVersionId(deviceVersionId);
+        return  new PageBean(sensorList);
+    }
     public void addOrModify(Sensor sensor){
         try{
             if(sensor.getId()==null){
diff --git a/src/main/resources/mapper/MonitorPointMapper.xml b/src/main/resources/mapper/MonitorPointMapper.xml
index 8b2378a..652012a 100644
--- a/src/main/resources/mapper/MonitorPointMapper.xml
+++ b/src/main/resources/mapper/MonitorPointMapper.xml
@@ -100,4 +100,38 @@
 			AND mp.city_code = c.city_code
 		</if>
 	</select>
+	<select id="selectWithStateByMap" parameterType="java.util.Map" resultMap="BaseResultMap">
+
+		SELECT mpt.*,MAX(dev.state) as state from monitor_point mpt
+		LEFT JOIN device dev on dev.monitor_point_id = mpt.id
+		<where>
+			<if test="@com.moral.common.bean.Constants@isNotSpecialOrgId(orgId)">
+				mpt.organization_id = #{orgId,jdbcType=VARCHAR}
+			</if>
+			<![CDATA[
+			AND mpt.longitude < #{mapBounds.Ge,jdbcType=NUMERIC}
+            AND mpt.longitude > #{mapBounds.Le,jdbcType=NUMERIC}
+            AND mpt.latitude  < #{mapBounds.Fe,jdbcType=NUMERIC}
+            AND mpt.latitude  > #{mapBounds.Ke,jdbcType=NUMERIC}
+		    and state<4
+			GROUP BY mpt.`id`
+     		 ]]>
+		</where>
+		UNION
+		SELECT mpt.*,MAX(dev.state) as state from monitor_point mpt
+		LEFT JOIN device dev on dev.monitor_point_id = mpt.id
+		<where>
+			<if test="@com.moral.common.bean.Constants@isNotSpecialOrgId(orgId)">
+				mpt.organization_id = #{orgId,jdbcType=VARCHAR}
+			</if>
+			<![CDATA[
+			AND mpt.longitude < #{mapBounds.Ge,jdbcType=NUMERIC}
+            AND mpt.longitude > #{mapBounds.Le,jdbcType=NUMERIC}
+            AND mpt.latitude  < #{mapBounds.Fe,jdbcType=NUMERIC}
+            AND mpt.latitude  > #{mapBounds.Ke,jdbcType=NUMERIC}
+		    and state>3
+			GROUP BY mpt.`id`
+            ]]>
+		</where>
+	</select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/SensorMapper.xml b/src/main/resources/mapper/SensorMapper.xml
new file mode 100644
index 0000000..6fdcaee
--- /dev/null
+++ b/src/main/resources/mapper/SensorMapper.xml
@@ -0,0 +1,26 @@
+<?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.SensorMapper" >
+  <resultMap id="BaseResultMap" type="com.moral.entity.Sensor" >
+    <id column="id" property="id" jdbcType="INTEGER" />
+    <result column="name" property="name" jdbcType="VARCHAR" />
+    <result column="sensor_key" property="sensorKey" jdbcType="VARCHAR" />
+    <result column="upper" property="upper" jdbcType="DOUBLE" />
+    <result column="lower" property="lower" jdbcType="DOUBLE" />
+    <result column="unit" property="unit" jdbcType="VARCHAR" />
+    <result column="description" property="description" jdbcType="VARCHAR" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    id, name, sensor_key, upper, lower, unit, description
+  </sql>
+  <select id="selectByVersionId" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+    select 
+    <include refid="Base_Column_List" />
+    from sensor sen
+    where EXISTS
+    (  select id
+       from device_version_sensor dvs
+       where sen.id = dvs.sensor_id and dvs.device_version_id = #{deviceVersionId,jdbcType=INTEGER}
+    )
+  </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/system/sysConfig.properties b/src/main/resources/system/sysConfig.properties
index 649686b..cbc54af 100644
--- a/src/main/resources/system/sysConfig.properties
+++ b/src/main/resources/system/sysConfig.properties
@@ -25,4 +25,5 @@
 e17-standard=150
 e18-standard=9
 e19-standard=50
-orgId=-1
\ No newline at end of file
+orgId=-1
+password=123456
\ No newline at end of file
diff --git a/src/main/webapp/js/json2.js b/src/main/webapp/js/json2.js
new file mode 100644
index 0000000..5838457
--- /dev/null
+++ b/src/main/webapp/js/json2.js
@@ -0,0 +1,519 @@
+/*
+    json2.js
+    2015-05-03
+
+    Public Domain.
+
+    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+    See http://www.JSON.org/js.html
+
+
+    This code should be minified before deployment.
+    See http://javascript.crockford.com/jsmin.html
+
+    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+    NOT CONTROL.
+
+
+    This file creates a global JSON object containing two methods: stringify
+    and parse. This file is provides the ES5 JSON capability to ES3 systems.
+    If a project might run on IE8 or earlier, then this file should be included.
+    This file does nothing on ES5 systems.
+
+        JSON.stringify(value, replacer, space)
+            value       any JavaScript value, usually an object or array.
+
+            replacer    an optional parameter that determines how object
+                        values are stringified for objects. It can be a
+                        function or an array of strings.
+
+            space       an optional parameter that specifies the indentation
+                        of nested structures. If it is omitted, the text will
+                        be packed without extra whitespace. If it is a number,
+                        it will specify the number of spaces to indent at each
+                        level. If it is a string (such as '\t' or '&nbsp;'),
+                        it contains the characters used to indent at each level.
+
+            This method produces a JSON text from a JavaScript value.
+
+            When an object value is found, if the object contains a toJSON
+            method, its toJSON method will be called and the result will be
+            stringified. A toJSON method does not serialize: it returns the
+            value represented by the name/value pair that should be serialized,
+            or undefined if nothing should be serialized. The toJSON method
+            will be passed the key associated with the value, and this will be
+            bound to the value
+
+            For example, this would serialize Dates as ISO strings.
+
+                Date.prototype.toJSON = function (key) {
+                    function f(n) {
+                        // Format integers to have at least two digits.
+                        return n < 10 
+                            ? '0' + n 
+                            : n;
+                    }
+
+                    return this.getUTCFullYear()   + '-' +
+                         f(this.getUTCMonth() + 1) + '-' +
+                         f(this.getUTCDate())      + 'T' +
+                         f(this.getUTCHours())     + ':' +
+                         f(this.getUTCMinutes())   + ':' +
+                         f(this.getUTCSeconds())   + 'Z';
+                };
+
+            You can provide an optional replacer method. It will be passed the
+            key and value of each member, with this bound to the containing
+            object. The value that is returned from your method will be
+            serialized. If your method returns undefined, then the member will
+            be excluded from the serialization.
+
+            If the replacer parameter is an array of strings, then it will be
+            used to select the members to be serialized. It filters the results
+            such that only members with keys listed in the replacer array are
+            stringified.
+
+            Values that do not have JSON representations, such as undefined or
+            functions, will not be serialized. Such values in objects will be
+            dropped; in arrays they will be replaced with null. You can use
+            a replacer function to replace those with JSON values.
+            JSON.stringify(undefined) returns undefined.
+
+            The optional space parameter produces a stringification of the
+            value that is filled with line breaks and indentation to make it
+            easier to read.
+
+            If the space parameter is a non-empty string, then that string will
+            be used for indentation. If the space parameter is a number, then
+            the indentation will be that many spaces.
+
+            Example:
+
+            text = JSON.stringify(['e', {pluribus: 'unum'}]);
+            // text is '["e",{"pluribus":"unum"}]'
+
+
+            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+            text = JSON.stringify([new Date()], function (key, value) {
+                return this[key] instanceof Date 
+                    ? 'Date(' + this[key] + ')' 
+                    : value;
+            });
+            // text is '["Date(---current time---)"]'
+
+
+        JSON.parse(text, reviver)
+            This method parses a JSON text to produce an object or array.
+            It can throw a SyntaxError exception.
+
+            The optional reviver parameter is a function that can filter and
+            transform the results. It receives each of the keys and values,
+            and its return value is used instead of the original value.
+            If it returns what it received, then the structure is not modified.
+            If it returns undefined then the member is deleted.
+
+            Example:
+
+            // Parse the text. Values that look like ISO date strings will
+            // be converted to Date objects.
+
+            myData = JSON.parse(text, function (key, value) {
+                var a;
+                if (typeof value === 'string') {
+                    a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+                    if (a) {
+                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+                            +a[5], +a[6]));
+                    }
+                }
+                return value;
+            });
+
+            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+                var d;
+                if (typeof value === 'string' &&
+                        value.slice(0, 5) === 'Date(' &&
+                        value.slice(-1) === ')') {
+                    d = new Date(value.slice(5, -1));
+                    if (d) {
+                        return d;
+                    }
+                }
+                return value;
+            });
+
+
+    This is a reference implementation. You are free to copy, modify, or
+    redistribute.
+*/
+
+/*jslint 
+    eval, for, this 
+*/
+
+/*property
+    JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+    lastIndex, length, parse, prototype, push, replace, slice, stringify,
+    test, toJSON, toString, valueOf
+*/
+
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+if (typeof JSON !== 'object') {
+    JSON = {};
+}
+
+(function () {
+    'use strict';
+    
+    var rx_one = /^[\],:{}\s]*$/,
+        rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+        rx_three = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+        rx_four = /(?:^|:|,)(?:\s*\[)+/g,
+        rx_escapable = /[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+        rx_dangerous = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
+
+    function f(n) {
+        // Format integers to have at least two digits.
+        return n < 10 
+            ? '0' + n 
+            : n;
+    }
+    
+    function this_value() {
+        return this.valueOf();
+    }
+
+    if (typeof Date.prototype.toJSON !== 'function') {
+
+        Date.prototype.toJSON = function () {
+
+            return isFinite(this.valueOf())
+                ? this.getUTCFullYear() + '-' +
+                        f(this.getUTCMonth() + 1) + '-' +
+                        f(this.getUTCDate()) + 'T' +
+                        f(this.getUTCHours()) + ':' +
+                        f(this.getUTCMinutes()) + ':' +
+                        f(this.getUTCSeconds()) + 'Z'
+                : null;
+        };
+
+        Boolean.prototype.toJSON = this_value;
+        Number.prototype.toJSON = this_value;
+        String.prototype.toJSON = this_value;
+    }
+
+    var gap,
+        indent,
+        meta,
+        rep;
+
+
+    function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+        rx_escapable.lastIndex = 0;
+        return rx_escapable.test(string) 
+            ? '"' + string.replace(rx_escapable, function (a) {
+                var c = meta[a];
+                return typeof c === 'string'
+                    ? c
+                    : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+            }) + '"' 
+            : '"' + string + '"';
+    }
+
+
+    function str(key, holder) {
+
+// Produce a string from holder[key].
+
+        var i,          // The loop counter.
+            k,          // The member key.
+            v,          // The member value.
+            length,
+            mind = gap,
+            partial,
+            value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+        if (value && typeof value === 'object' &&
+                typeof value.toJSON === 'function') {
+            value = value.toJSON(key);
+        }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+        if (typeof rep === 'function') {
+            value = rep.call(holder, key, value);
+        }
+
+// What happens next depends on the value's type.
+
+        switch (typeof value) {
+        case 'string':
+            return quote(value);
+
+        case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+            return isFinite(value) 
+                ? String(value) 
+                : 'null';
+
+        case 'boolean':
+        case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+            return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+        case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+            if (!value) {
+                return 'null';
+            }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+            gap += indent;
+            partial = [];
+
+// Is the value an array?
+
+            if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+                length = value.length;
+                for (i = 0; i < length; i += 1) {
+                    partial[i] = str(i, value) || 'null';
+                }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+                v = partial.length === 0
+                    ? '[]'
+                    : gap
+                        ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
+                        : '[' + partial.join(',') + ']';
+                gap = mind;
+                return v;
+            }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+            if (rep && typeof rep === 'object') {
+                length = rep.length;
+                for (i = 0; i < length; i += 1) {
+                    if (typeof rep[i] === 'string') {
+                        k = rep[i];
+                        v = str(k, value);
+                        if (v) {
+                            partial.push(quote(k) + (
+                                gap 
+                                    ? ': ' 
+                                    : ':'
+                            ) + v);
+                        }
+                    }
+                }
+            } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+                for (k in value) {
+                    if (Object.prototype.hasOwnProperty.call(value, k)) {
+                        v = str(k, value);
+                        if (v) {
+                            partial.push(quote(k) + (
+                                gap 
+                                    ? ': ' 
+                                    : ':'
+                            ) + v);
+                        }
+                    }
+                }
+            }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+            v = partial.length === 0
+                ? '{}'
+                : gap
+                    ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
+                    : '{' + partial.join(',') + '}';
+            gap = mind;
+            return v;
+        }
+    }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+    if (typeof JSON.stringify !== 'function') {
+        meta = {    // table of character substitutions
+            '\b': '\\b',
+            '\t': '\\t',
+            '\n': '\\n',
+            '\f': '\\f',
+            '\r': '\\r',
+            '"': '\\"',
+            '\\': '\\\\'
+        };
+        JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+            var i;
+            gap = '';
+            indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+            if (typeof space === 'number') {
+                for (i = 0; i < space; i += 1) {
+                    indent += ' ';
+                }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+            } else if (typeof space === 'string') {
+                indent = space;
+            }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+            rep = replacer;
+            if (replacer && typeof replacer !== 'function' &&
+                    (typeof replacer !== 'object' ||
+                    typeof replacer.length !== 'number')) {
+                throw new Error('JSON.stringify');
+            }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+            return str('', {'': value});
+        };
+    }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+    if (typeof JSON.parse !== 'function') {
+        JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+            var j;
+
+            function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+                var k, v, value = holder[key];
+                if (value && typeof value === 'object') {
+                    for (k in value) {
+                        if (Object.prototype.hasOwnProperty.call(value, k)) {
+                            v = walk(value, k);
+                            if (v !== undefined) {
+                                value[k] = v;
+                            } else {
+                                delete value[k];
+                            }
+                        }
+                    }
+                }
+                return reviver.call(holder, key, value);
+            }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+            text = String(text);
+            rx_dangerous.lastIndex = 0;
+            if (rx_dangerous.test(text)) {
+                text = text.replace(rx_dangerous, function (a) {
+                    return '\\u' +
+                            ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+                });
+            }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+            if (
+                rx_one.test(
+                    text
+                        .replace(rx_two, '@')
+                        .replace(rx_three, ']')
+                        .replace(rx_four, '')
+                )
+            ) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+                j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+                return typeof reviver === 'function'
+                    ? walk({'': j}, '')
+                    : j;
+            }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+            throw new SyntaxError('JSON.parse');
+        };
+    }
+}());
diff --git a/src/main/webapp/view/map.jsp b/src/main/webapp/view/map.jsp
index 35be11e..77896b8 100644
--- a/src/main/webapp/view/map.jsp
+++ b/src/main/webapp/view/map.jsp
@@ -1,7 +1,12 @@
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <%@page isELIgnored="false" %>
-<% String version ="1.000003";%>
+<%
+	String version ="1.000003";
+	response.setHeader("Cache-Control","no-store");
+	response.setHeader("Pragrma","no-cache");
+	response.setDateHeader("Expires",0);
+%>
 <!DOCTYPE html>
 <head>
     <meta charset="utf-8" />
@@ -237,8 +242,8 @@
 			</div>
 	  </div>
 	  <div id="mapCanvas"></div>
-	  <div id="map_params" style="display: none;">
-	  	${requestScope.map_params}
+	  <div id="mapParams" style="display: none;">
+	  	${requestScope.mapParams}
 	  </div>
 </div>
 </body>
@@ -248,10 +253,10 @@
 //���������������
 (function($) {
 	var moralMap = window.moralMap;
-	var params = $.parseJSON($("#map_params").html());
+	var params = $.parseJSON($("#mapParams").html());
 	moralMap['params'] = params;
 	//������������������������������
-	moralMap.mapInit(params["area_name"]);
+	moralMap.mapInit(params["regionName"]);
 	//������������
      var listView  =moralMap.initListView({id: "#equ_list",pageSize:12});
      window["listView"] = listView;
@@ -277,10 +282,10 @@
 						data:paramMap,
 						async:false,
 						cache: false,
-						success:function(jsonData){
+						success:function(res){
 							if(callBack!=null){
-								if(jsonData!=null&&typeof jsonData["rows"] ==='object'&&lazyKeyer(key)){
-								 callBack(jsonData);
+								if(res.code==1&&lazyKeyer(key)){
+								    callBack(res.data);
 								}
 							}
 						}
@@ -334,9 +339,9 @@
 	    }
 		}
 	}
-  function addOverMpoints(jsonData){
+  function addOverMpoints(data){
   	    if(moralMap.layer()=="monitorpoints"){
-  	    var mpoints = jsonData["rows"]==null?[]:jsonData["rows"];
+  	    var mpoints = data = null?[]:data;
 		for(var i in mpoints) {
 				var mpParam = mpoints[i];
 				if(moralMap.getMpoint(mpParam["id"])==null){
@@ -357,7 +362,7 @@
 	        paramMap["Ge"]=  bounds['Ge'];//���������������������������
 	        paramMap["Ke"]=  bounds['Ke'];//���������������������������������
 	        paramMap["Le"]=  bounds['Le'];//���������������������������������
-            loadLazy("getmonitorpoints",paramMap,addOverMpoints);
+            loadLazy("getMonitorpointList",paramMap,addOverMpoints);
             startRefreshPage();
 	});
 	//��������������������� ���������������,���������

--
Gitblit v1.8.0