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>