fengxiang
2018-01-11 2ea90fc83051b92d242b87c887336890578a0a30
报警配置
3 files deleted
14 files added
13 files modified
1615 ■■■■ changed files
src/main/java/com/moral/common/util/ExampleUtil.java 27 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/common/util/MyBatisBaseMapUtil.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/controller/DeviceVersionController.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/controller/SensorController.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/AreaExample.java 390 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/CityExample.java 390 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/DeviceVersionSensor.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/MonitorPoint.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/ProvinceExample.java 330 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/Sensor.java 25 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/alarm/AlarmConfig.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/alarm/AlarmConfigValue.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/alarm/AlarmMode.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/alarm/AlarmSensorLevel.java 24 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/alarm/AlarmStyle.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/AreaMapper.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/CityMapper.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/DeviceVersionSensorMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/MonitorPointMapper.java 3 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/ProvinceMapper.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/SensorMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/DeviceVersionService.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/SensorService.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/DeviceVersionServiceImpl.java 33 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java 23 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/OrganizationServiceImpl.java 4 ●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/SensorServiceImpl.java 49 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/DeviceVersionSensorMapper.xml 12 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/MonitorPointMapper.xml 122 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/SensorMapper.xml 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/common/util/ExampleUtil.java
@@ -19,17 +19,22 @@
    private final static String CRITERIA_SPLIT = "\\|\\|\\|";
    private final static String CONDITION_SPLIT = "\\|\\|";
    private static Map<String, Method> criteriaMethodMap = null;
    private static void setOrderByClause(Example example,String orderByClause) throws UnsupportedEncodingException {
    private static void setOrderByClause(Example example,String orderByClause) throws UnsupportedEncodingException, NoSuchFieldException {
           orderByClause = URLDecoder.decode(orderByClause,"UTF-8");
           String[] orderBys = orderByClause.split(CRITERIA_SPLIT);
           for(String orderBy : orderBys){
               String[] items = orderBy.split(CONDITION_SPLIT);
               String property = items[0];
               String sort = items[1];
               if("asc".equals(sort)){
                   example.orderBy(property).asc();
               }else{
                   example.orderBy(property).desc();
               if(items.length == 2){
                   String property = items[0];
                   String sort = items[1];
                   if(isPropertyOfClass(example.getEntityClass(),property)){
                       if("asc".equals(sort)){
                           example.orderBy(property).asc();
                       }else{
                           example.orderBy(property).desc();
                       }
                   }
               }
           }
    }
@@ -47,7 +52,9 @@
            if (!StringUtils.isNullOrEmpty(params) && params.startsWith("or|")) {
                String[] criteria = params.trim().split(OR_SPLIT);
                for (String criterion : criteria) {
                    Example.Criteria criteriaOfExample = null;
                    // criterion为null或""跳过
                    if(StringUtils.isNullOrEmpty(criterion)) { continue;};
                    Example.Criteria criteriaOfExample = example.or();
                    if (!StringUtils.isNullOrEmpty(criterion)) {
                        String[] conditions = criterion.trim().split(CRITERIA_SPLIT);
                        for (String condition : conditions) {
@@ -65,10 +72,6 @@
                                            for (int index = 2; index < conditionItems.length; index++) {
                                                values.add(conditionItems[index]);
                                            }
                                        }
                                        //经过所有验证后,才产生 or 条件组
                                        if(criteriaOfExample == null){
                                            criteriaOfExample = example.or();
                                        }
                                        invokeMethod(criteriaOfExample,method,propertyName,values);
                                    }
src/main/java/com/moral/common/util/MyBatisBaseMapUtil.java
@@ -28,8 +28,10 @@
          return  page;
     }
     public static PageBean queryPage(BaseMapper baseMapper,PageBean pageBean, Example example){
          PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
          if(pageBean.getPageSize()>0){
               PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
          }
          List page = baseMapper.selectByExample(example);
          return  new PageBean(page);
     }
}
}
src/main/java/com/moral/controller/DeviceVersionController.java
@@ -8,6 +8,7 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.util.List;
@RestController
@RequestMapping("device-version")
@@ -32,4 +33,21 @@
        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
        return resultBean;
    }
    @GetMapping("get-sensor-ids")
    public List<Integer> getSensorIds(Integer deviceVersionId){
        return deviceVersionService.getSensorIds(deviceVersionId);
    }
    @PostMapping("version-sensor-config/{id}")
    public ResultBean versionSensorConfig(@PathVariable("id") Integer deviceVersionId,@RequestBody Integer [] sensorIds){
        ResultBean resultBean = new ResultBean();
        if(deviceVersionId==null){
             resultBean.setCode(ResultBean.NO_PERMISSION);
             resultBean.setMessage("设备型号ID不能为null");
             return resultBean;
        }else{
            deviceVersionService.versionSensorConfig(deviceVersionId,sensorIds);
            resultBean.setCode(ResultBean.SUCCESS);
        }
        return resultBean;
    }
}
src/main/java/com/moral/controller/SensorController.java
New file
@@ -0,0 +1,34 @@
package com.moral.controller;
import com.moral.common.bean.PageBean;
import com.moral.common.bean.ResultBean;
import com.moral.entity.Sensor;
import com.moral.service.SensorService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("sensor")
@CrossOrigin(origins = "*", maxAge = 3600)
public class SensorController {
    @Resource
    SensorService sensorService;
    @GetMapping("page-list")
    public PageBean pageList(PageBean pageBean) {
        return sensorService.queryByPageBean(pageBean);
    }
    @PostMapping("delete-by-ids")
    public ResultBean deleteByIds(@RequestBody Integer [] ids){
        sensorService.deleteByIds(ids);
        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
        return resultBean;
    }
    @PostMapping("add-or-modify")
    public ResultBean addOrModify(@RequestBody Sensor sensor){
        sensorService.addOrModify(sensor);
        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
        return resultBean;
    }
}
src/main/java/com/moral/entity/AreaExample.java
File was deleted
src/main/java/com/moral/entity/CityExample.java
File was deleted
src/main/java/com/moral/entity/DeviceVersionSensor.java
New file
@@ -0,0 +1,17 @@
package com.moral.entity;
import lombok.Data;
import javax.persistence.Id;
@Data
public class DeviceVersionSensor {
    @Id
    private Integer id;
    private Integer deviceVersionId;
    private Integer sensorId;
}
src/main/java/com/moral/entity/MonitorPoint.java
@@ -1,6 +1,7 @@
package com.moral.entity;
import javax.persistence.Id;
import javax.persistence.Transient;
import lombok.Data;
@@ -94,4 +95,8 @@
     * @mbggenerated Thu Dec 07 16:40:22 CST 2017
     */
    private String description;
    @Transient
    private AreaNames areaNames;
    @Transient
    private Organization organization;
}
src/main/java/com/moral/entity/ProvinceExample.java
File was deleted
src/main/java/com/moral/entity/Sensor.java
New file
@@ -0,0 +1,25 @@
package com.moral.entity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
@Data
public class Sensor {
    @Id
    private Integer id;
    private String name;
    @Column(name = "`key`")
    private String key;
    private Double upper;
    private Double lower;
    private String unit;
    private String description;
}
src/main/java/com/moral/entity/alarm/AlarmConfig.java
New file
@@ -0,0 +1,16 @@
package com.moral.entity.alarm;
import lombok.Data;
import javax.persistence.Id;
import java.util.Date;
@Data
public class AlarmConfig {
    @Id
    private Integer id;
    private Integer organizationId;
    private Date createTime;
    private Date updateTime;
    private AlarmConfigValue value;
}
src/main/java/com/moral/entity/alarm/AlarmConfigValue.java
New file
@@ -0,0 +1,11 @@
package com.moral.entity.alarm;
import lombok.Data;
import java.util.Map;
@Data
public class AlarmConfigValue {
   private AlarmMode alarmMode;
   private Map<String,AlarmSensorLevel> alarmLevels;
}
src/main/java/com/moral/entity/alarm/AlarmMode.java
New file
@@ -0,0 +1,16 @@
package com.moral.entity.alarm;
import lombok.Data;
import java.util.List;
/*
  警报方式配置类
 */
@Data
public class AlarmMode {
    private int enable;
    private List<AlarmStyle> level1;
    private List<AlarmStyle> level2;
    private List<AlarmStyle> level3;
}
src/main/java/com/moral/entity/alarm/AlarmSensorLevel.java
New file
@@ -0,0 +1,24 @@
package com.moral.entity.alarm;
import lombok.Data;
import java.util.List;
/*
  传感器警报级别阀值
 */
@Data
public class AlarmSensorLevel {
    /*
      是否启用警报1启用,0不启用
     */
    private int enable;
    /*
  递增阀值,例如: [100,200,300]
   */
    private List<Float> increment;
    /*
      递减阀值 ,例如:[-100,-200,-300]
     */
    private List<Float> degression;
}
src/main/java/com/moral/entity/alarm/AlarmStyle.java
New file
@@ -0,0 +1,6 @@
package com.moral.entity.alarm;
public enum AlarmStyle {
    //微信,邮件,短信,语音
    weixin,email,sms,vioce
}
src/main/java/com/moral/mapper/AreaMapper.java
@@ -2,9 +2,6 @@
import com.moral.common.mapper.BaseMapper;
import com.moral.entity.Area;
import com.moral.entity.AreaExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface AreaMapper extends BaseMapper<Area> {
}
src/main/java/com/moral/mapper/CityMapper.java
@@ -2,9 +2,6 @@
import com.moral.common.mapper.BaseMapper;
import com.moral.entity.City;
import com.moral.entity.CityExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface CityMapper extends BaseMapper<City> {
}
src/main/java/com/moral/mapper/DeviceVersionSensorMapper.java
New file
@@ -0,0 +1,7 @@
package com.moral.mapper;
import com.moral.common.mapper.BaseMapper;
import com.moral.entity.DeviceVersionSensor;
public interface DeviceVersionSensorMapper extends BaseMapper<DeviceVersionSensor> {
}
src/main/java/com/moral/mapper/MonitorPointMapper.java
@@ -5,8 +5,9 @@
import com.moral.common.mapper.BaseMapper;
import com.moral.entity.MonitorPoint;
import tk.mybatis.mapper.entity.Example;
public interface MonitorPointMapper extends BaseMapper<MonitorPoint>{
    List<MonitorPoint> selectWithAreaNameByExample(Example example);
    List<MonitorPoint> getMonitorPointsByAreaName(Map<String, Object> parameters);
}
src/main/java/com/moral/mapper/ProvinceMapper.java
@@ -2,9 +2,6 @@
import com.moral.common.mapper.BaseMapper;
import com.moral.entity.Province;
import com.moral.entity.ProvinceExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface ProvinceMapper extends BaseMapper<Province> {
}
src/main/java/com/moral/mapper/SensorMapper.java
New file
@@ -0,0 +1,7 @@
package com.moral.mapper;
import com.moral.common.mapper.BaseMapper;
import com.moral.entity.Sensor;
public interface SensorMapper extends BaseMapper<Sensor> {
}
src/main/java/com/moral/service/DeviceVersionService.java
@@ -4,10 +4,15 @@
import com.moral.entity.DeviceVersion;
import java.io.UnsupportedEncodingException;
import java.util.List;
public interface DeviceVersionService {
    public PageBean queryByPageBean(PageBean pageBean);
    public void addOrModify(DeviceVersion deviceVersion);
    public void deleteByIds(Integer... ids);
    void versionSensorConfig(Integer deviceVersionId, Integer[] sensorIds);
    List<Integer> getSensorIds(int deviceVersionId);
}
src/main/java/com/moral/service/SensorService.java
New file
@@ -0,0 +1,10 @@
package com.moral.service;
import com.moral.common.bean.PageBean;
import com.moral.entity.Sensor;
public interface SensorService {
    public PageBean queryByPageBean(PageBean pageBean);
    public void addOrModify(Sensor sensor);
    public void deleteByIds(Integer... ids);
}
src/main/java/com/moral/service/impl/DeviceVersionServiceImpl.java
@@ -4,8 +4,11 @@
import com.moral.common.util.ExampleUtil;
import com.moral.common.util.MyBatisBaseMapUtil;
import com.moral.entity.DeviceVersion;
import com.moral.entity.DeviceVersionSensor;
import com.moral.mapper.DeviceVersionMapper;
import com.moral.mapper.DeviceVersionSensorMapper;
import com.moral.service.DeviceVersionService;
import org.springframework.data.mongodb.core.aggregation.ArrayOperators;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
@@ -13,11 +16,14 @@
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Service
public class DeviceVersionServiceImpl implements DeviceVersionService {
      @Resource
      private DeviceVersionMapper deviceVersionMapper;
      @Resource
      private DeviceVersionSensorMapper deviceVersionSensorMapper;
      private static Class ENTITY_CLASS = DeviceVersion.class;
      public PageBean queryByPageBean(PageBean pageBean){
           return MyBatisBaseMapUtil.queryPage(deviceVersionMapper,pageBean,ENTITY_CLASS);
@@ -48,4 +54,31 @@
            }
      }
      @Override
      public void versionSensorConfig(Integer deviceVersionId, Integer[] sensorIds){
            Example example = new Example(DeviceVersionSensor.class);
            example.or().andEqualTo("deviceVersionId",deviceVersionId);
            deviceVersionSensorMapper.deleteByExample(example);
            if(sensorIds!=null && sensorIds.length >0){
                  List<DeviceVersionSensor> deviceVersionSensorList = new ArrayList<DeviceVersionSensor>();
                  for(int sensorId:sensorIds){
                        DeviceVersionSensor deviceVersionSensor = new DeviceVersionSensor();
                        deviceVersionSensor.setDeviceVersionId(deviceVersionId);
                        deviceVersionSensor.setSensorId(sensorId);
                        deviceVersionSensorList.add(deviceVersionSensor);
                  }
                  deviceVersionSensorMapper.insertList(deviceVersionSensorList);
            }
      }
      @Override
      public List<Integer> getSensorIds(int deviceVersionId){
            DeviceVersionSensor deviceVersionSensor = new DeviceVersionSensor();
            deviceVersionSensor.setDeviceVersionId(deviceVersionId);
            List<DeviceVersionSensor> deviceVersionSensorList = deviceVersionSensorMapper.select(deviceVersionSensor);
            List<Integer> sensorIds = new ArrayList<>();
            for(DeviceVersionSensor dvSensor:deviceVersionSensorList ){
                  sensorIds.add(dvSensor.getSensorId());
            }
            return sensorIds;
      }
}
src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
@@ -6,7 +6,10 @@
import javax.annotation.Resource;
import com.github.pagehelper.PageHelper;
import com.moral.common.bean.Constants;
import com.moral.common.bean.PageBean;
import com.moral.common.util.ExampleUtil;
import com.moral.common.util.MyBatisBaseMapUtil;
import org.springframework.stereotype.Service;
@@ -29,7 +32,18 @@
    @Override
    public PageBean queryByPageBean(PageBean pageBean) {
        return MyBatisBaseMapUtil.queryPage(monitorPointMapper,pageBean,ENTITY_CLASS);
        Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean);
        List<Example.Criteria> criteriaList = example.getOredCriteria();
        if(criteriaList!=null&&criteriaList.size()>0){
            for(Example.Criteria cri : criteriaList){
                cri.andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE);
            }
        }else {
            example.or().andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE);
        }
        PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
        List<MonitorPoint> monitorPointList = monitorPointMapper.selectWithAreaNameByExample(example);
        return new PageBean(monitorPointList);
    }
    @Override
@@ -48,13 +62,16 @@
    @Override
    public void deleteByIds(Integer... ids) {
        MonitorPoint monitorPoint = new MonitorPoint();
        monitorPoint.setIsDelete(Constants.IS_DELETE_TRUE);
        if(ids!=null&&ids.length>0){
            if(ids.length==1){
                monitorPointMapper.deleteByPrimaryKey(ids[0]);
                monitorPoint.setId(ids[0]);
                monitorPointMapper.updateByPrimaryKeySelective(monitorPoint);
            }else{
                Example example = new Example(ENTITY_CLASS);
                example.or().andIn("id", Arrays.asList(ids));
                monitorPointMapper.deleteByExample(example);
                monitorPointMapper.updateByExampleSelective(monitorPoint,example);
            }
        }
src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
@@ -65,7 +65,9 @@
        }else {
            example.or().andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE);
        }
        PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
        if(pageBean.getPageSize()>0){
            PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
        }
        List<Organization> organizationList = organizationMapper.selectWithAreaNameByExample(example);
        return new PageBean(organizationList);
    }
src/main/java/com/moral/service/impl/SensorServiceImpl.java
New file
@@ -0,0 +1,49 @@
package com.moral.service.impl;
import com.moral.common.bean.PageBean;
import com.moral.common.util.MyBatisBaseMapUtil;
import com.moral.entity.Sensor;
import com.moral.mapper.SensorMapper;
import com.moral.service.SensorService;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import javax.annotation.Resource;
import java.util.Arrays;
@Service
public class SensorServiceImpl implements SensorService{
    @Resource
    SensorMapper sensorMapper;
    private static Class ENTITY_CLASS = Sensor.class;
    public PageBean queryByPageBean(PageBean pageBean){
        return MyBatisBaseMapUtil.queryPage(sensorMapper,pageBean,ENTITY_CLASS);
    }
    public void addOrModify(Sensor sensor){
        try{
            if(sensor.getId()==null){
                sensorMapper.insertSelective(sensor);
            }else{
                sensorMapper.updateByPrimaryKeySelective(sensor);
            }
        }
        catch (Exception ex){
            throw  ex;
        }
    }
    @Override
    public void deleteByIds(Integer... ids) {
        if(ids!=null&&ids.length>0){
            if(ids.length==1){
                sensorMapper.deleteByPrimaryKey(ids[0]);
            }else{
                Example example = new Example(ENTITY_CLASS);
                example.or().andIn("id", Arrays.asList(ids));
                sensorMapper.deleteByExample(example);
            }
        }
    }
}
src/main/resources/mapper/DeviceVersionSensorMapper.xml
New file
@@ -0,0 +1,12 @@
<?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.DeviceVersionSensorMapper" >
  <resultMap id="BaseResultMap" type="com.moral.entity.DeviceVersionSensor" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="device_version_id" property="deviceVersionId" jdbcType="INTEGER" />
    <result column="sensor_id" property="sensorId" jdbcType="INTEGER" />
  </resultMap>
  <sql id="Base_Column_List" >
    id, device_version_id, sensor_id
  </sql>
</mapper>
src/main/resources/mapper/MonitorPointMapper.xml
@@ -1,21 +1,103 @@
<?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.MonitorPointMapper" >
    <select id="getMonitorPointsByAreaName" resultType="com.moral.entity.MonitorPoint">
        SELECT
            mp.*
        FROM
            monitor_point mp,
            area a
        <if test="cityName != null">
            ,city c
        </if>
        WHERE
            mp.area_code = a.area_code
            AND a.area_name = #{areaName}
        <if test="cityName != null">
            AND c.city_name = #{cityName}
            AND mp.city_code = c.city_code
        </if>
    </select>
<?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.MonitorPointMapper">
  <resultMap id="BaseResultMap" type="com.moral.entity.MonitorPoint">
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="longitude" jdbcType="REAL" property="longitude" />
    <result column="latitude" jdbcType="REAL" property="latitude" />
    <result column="province_code" jdbcType="INTEGER" property="provinceCode" />
    <result column="city_code" jdbcType="INTEGER" property="cityCode" />
    <result column="area_code" jdbcType="INTEGER" property="areaCode" />
    <result column="organization_id" jdbcType="INTEGER" property="organizationId" />
    <result column="address" jdbcType="VARCHAR" property="address" />
    <result column="is_delete" jdbcType="CHAR" property="isDelete" />
    <result column="description" jdbcType="VARCHAR" property="description" />
    <!-- 与省市县一对一的关系 -->
    <association property="areaNames" javaType="com.moral.entity.AreaNames">
      <result column="province_name" property="provinceName" jdbcType="VARCHAR" />
      <result column="city_name" property="cityName" jdbcType="VARCHAR" />
      <result column="area_name" property="areaName" jdbcType="VARCHAR" />
    </association>
      <association property="organization" javaType="com.moral.entity.Organization">
          <result column="organization_id" property="id" jdbcType="VARCHAR" />
          <result column="organization_name" property="name" jdbcType="VARCHAR" />
      </association>
  </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">
        id, name, longitude, latitude, province_code, city_code, area_code, organization_id,
        address, is_delete, description
    </sql>
    <sql id="Relation_Province_City_Area_List">
        are.area_name, cti.city_name, pro.province_name
    </sql>
    <select id="selectWithAreaNameByExample" parameterType="tk.mybatis.mapper.entity.Example" resultMap="BaseResultMap">
        select
        <if test="distinct">
            distinct
        </if>
        mpt.*        ,
        org.name as organization_name    ,
        <include refid="Relation_Province_City_Area_List" />
        from monitor_point mpt
        left join area are on mpt.area_code = are.area_code
        left join city cti on mpt.city_code = cti.city_code
        left join province pro on mpt.province_code = pro.province_code
        left join organization org on  mpt.organization_id = org.id
        where mpt.id in (
            select id from monitor_point
            <if test="_parameter != null">
                <include refid="Example_Where_Clause" />
            </if>
            <if test="orderByClause != null">
                order by ${orderByClause}
            </if>
        )
    </select>
    <select id="getMonitorPointsByAreaName" resultType="com.moral.entity.MonitorPoint">
        SELECT
            mp.*
        FROM
            monitor_point mp,
            area a
        <if test="cityName != null">
            ,city c
        </if>
        WHERE
            mp.area_code = a.area_code
            AND a.area_name = #{areaName}
        <if test="cityName != null">
            AND c.city_name = #{cityName}
            AND mp.city_code = c.city_code
        </if>
    </select>
</mapper>
src/main/resources/mapper/SensorMapper.xml
New file
@@ -0,0 +1,16 @@
<?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="key" property="key" 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, key, upper, lower, unit, description
  </sql>
</mapper>