src/main/java/com/moral/controller/DeviceController.java
@@ -1,11 +1,5 @@ package com.moral.controller; import com.moral.common.bean.PageBean; import com.moral.common.bean.ResultBean; import com.moral.entity.Device; import com.moral.service.DeviceService; import org.springframework.web.bind.annotation.*; import static com.moral.common.util.WebUtils.getParametersStartingWith; import java.util.Date; @@ -14,6 +8,21 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.moral.common.bean.PageBean; import com.moral.common.bean.ResultBean; import com.moral.entity.Device; import com.moral.entity.DeviceProperty; import com.moral.service.DeviceService; @RestController @RequestMapping("device") @@ -59,4 +68,19 @@ List<Device> devices = deviceService.getDevicesByProfessionId(parameters); return new ResultBean<List<Device>>(devices); } @PostMapping("save-or-update") public ResultBean saveOrUpdate(@RequestBody String jsonString){ Device device = JSONObject.parseObject(jsonString, Device.class); DeviceProperty deviceProperty = JSONObject.parseObject(jsonString, DeviceProperty.class); deviceService.saveOrUpdate(device,deviceProperty); ResultBean resultBean = new ResultBean(ResultBean.SUCCESS); return resultBean; } @GetMapping("device-list") public PageBean getDeviceList(PageBean pageBean) { return deviceService.getDeviceList(pageBean); } } src/main/java/com/moral/controller/MobileController.java
@@ -20,6 +20,7 @@ import com.moral.common.bean.AppData; import com.moral.common.bean.ResultBean; import com.moral.common.util.Crypto; import com.moral.common.util.WebUtils; import com.moral.entity.Account; import com.moral.entity.Device; import com.moral.entity.MonitorPoint; @@ -327,4 +328,12 @@ List<Map<String, Object>> sensors = historyService.getSensorDataBySensorKey(parameters); return new ResultBean<List<Map<String, Object>>>(sensors); } @RequestMapping("profession-provincecode") public ResultBean<List<Profession>> getProfessionByProvinceCode(HttpServletRequest request){ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null); List<Profession> professions = professionService.getProfessiontList(parameters); return new ResultBean<List<Profession>>(professions); } } src/main/java/com/moral/entity/Density.java
New file @@ -0,0 +1,30 @@ package com.moral.entity; import java.io.Serializable; import javax.persistence.Id; import lombok.Data; @Data public class Density implements Serializable { @Id private Integer id; private Integer provinceCode; private Integer professionId; private Byte tech; private String limitVal; private String valUnit; private String extA; private Integer extB; private static final long serialVersionUID = 1L; } src/main/java/com/moral/entity/Device.java
@@ -3,6 +3,7 @@ import java.util.Date; import java.util.List; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Transient; @@ -19,6 +20,7 @@ * @mbggenerated Wed Nov 29 16:17:59 CST 2017 */ @Id @GeneratedValue(generator = "JDBC") private Integer id; /** * This field was generated by MyBatis Generator. This field corresponds to the database column device.name @@ -115,4 +117,6 @@ private List<Integer> organizationIds; @Transient private Profession profession; @Transient private DeviceProperty deviceProperty; } src/main/java/com/moral/entity/DeviceProperty.java
New file @@ -0,0 +1,32 @@ package com.moral.entity; import java.io.Serializable; import javax.persistence.Id; import lombok.Data; @Data public class DeviceProperty implements Serializable { @Id private Integer id; private Byte deviceTech; private Byte deviceCat; private String deviceSource; private Integer extA; private Integer extB; private String extC; private String extD; private String extE; private static final long serialVersionUID = 1L; } src/main/java/com/moral/entity/Profession.java
@@ -3,10 +3,14 @@ import lombok.Data; import javax.persistence.Id; import java.io.Serializable; @Data public class Profession { @Id public class Profession implements Serializable { private String provinceCode; private static final long serialVersionUID = 1L; @Id private Integer id; private String name; src/main/java/com/moral/mapper/DensityMapper.java
New file @@ -0,0 +1,8 @@ package com.moral.mapper; import com.moral.common.mapper.BaseMapper; import com.moral.entity.Density; public interface DensityMapper extends BaseMapper<Density>{ } src/main/java/com/moral/mapper/DeviceMapper.java
@@ -8,6 +8,7 @@ import com.moral.common.mapper.BaseMapper; import com.moral.entity.Device; import tk.mybatis.mapper.entity.Example; public interface DeviceMapper extends BaseMapper<Device>{ @@ -38,4 +39,6 @@ List<Device> getDevicesByOrganizationId(Map<String, Object> parameters); List<Map<String, Object>> getDevicesStateByRegion(Map<String, Object> parameters); List<Device> getDeviceList(Example example); } src/main/java/com/moral/mapper/DevicePropertyMapper.java
New file @@ -0,0 +1,8 @@ package com.moral.mapper; import com.moral.common.mapper.BaseMapper; import com.moral.entity.DeviceProperty; public interface DevicePropertyMapper extends BaseMapper<DeviceProperty>{ } src/main/java/com/moral/service/DeviceService.java
@@ -3,10 +3,11 @@ import java.util.Date; import java.util.List; import java.util.Map; import com.moral.common.bean.PageBean; import com.moral.common.bean.PageResult; import com.moral.common.bean.ResultBean; import com.moral.entity.Device; import com.moral.entity.DeviceProperty; public interface DeviceService { @@ -46,4 +47,8 @@ List<Device> getDevicesByOrganizationId(Map<String, Object> parameters); Map<String,Long> queryDeviceStateSummary(Integer orgId); void saveOrUpdate(Device device, DeviceProperty deviceProperty); PageBean getDeviceList(PageBean pageBean); } src/main/java/com/moral/service/ProfessionService.java
@@ -1,12 +1,15 @@ package com.moral.service; import com.moral.entity.Profession; import java.util.List; import java.util.Map; import com.moral.entity.Profession; public interface ProfessionService { List<Profession> queryByName(String nameLike); public List<Profession> getProfessiontList(); public List<Profession> getProfessiontList(Map<String, Object> parameters); } src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -1,21 +1,16 @@ package com.moral.service.impl; import java.util.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import javax.annotation.Resource; import javax.validation.constraints.NotNull; import com.alibaba.fastjson.TypeReference; import com.github.pagehelper.Page; import com.moral.common.bean.Constants; import com.moral.common.bean.PageBean; import com.moral.common.bean.PageResult; import com.moral.common.exception.BusinessException; import com.moral.common.util.ExampleUtil; import com.moral.common.util.RedisUtils; import com.moral.entity.DeviceVersion; import com.moral.mapper.*; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; @@ -24,11 +19,27 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import com.alibaba.fastjson.TypeReference; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.moral.common.bean.Constants; import com.moral.common.bean.PageBean; import com.moral.common.bean.PageResult; import com.moral.common.exception.BusinessException; import com.moral.common.util.ExampleUtil; import com.moral.common.util.RedisUtils; import com.moral.common.util.ValidateUtil; import com.moral.entity.Device; import com.moral.entity.DeviceProperty; import com.moral.mapper.DeviceMapper; import com.moral.mapper.DevicePropertyMapper; import com.moral.mapper.DeviceVersionMapper; import com.moral.mapper.DictionaryDataMapper; import com.moral.mapper.MonitorPointMapper; import com.moral.mapper.OrganizationMapper; import com.moral.service.AccountService; import com.moral.service.DeviceService; import tk.mybatis.mapper.entity.Example; @Service @@ -508,4 +519,35 @@ result.put("stop", stop); return result; } @Resource private DevicePropertyMapper devicePropertyMapper; @Override @Transactional public void saveOrUpdate(Device device, DeviceProperty deviceProperty) { if (ObjectUtils.isEmpty(device.getId())) { device.setState(Constants.DEVICE_STATE_OFFLINE); device.setIsDelete(Constants.IS_DELETE_FALSE); deviceMapper.insertSelective(device); deviceProperty.setId(device.getId()); } else { deviceMapper.updateByPrimaryKeySelective(device); devicePropertyMapper.deleteByPrimaryKey(deviceProperty); } devicePropertyMapper.insertSelective(deviceProperty); refreshDeviceInRedis(device.getMac()); } @Override public PageBean getDeviceList(PageBean pageBean) { Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean); if(pageBean.getPageSize()>0){ PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize()); } List<Device> deviceList = deviceMapper.getDeviceList(example); return new PageBean(deviceList); } } src/main/java/com/moral/service/impl/HistoryServiceImpl.java
@@ -30,10 +30,10 @@ import com.moral.entity.Sensor; import com.moral.mapper.DeviceMapper; import com.moral.mapper.HistoryMapper; import com.moral.mapper.ProfessionMapper; import com.moral.mapper.SensorMapper; import com.moral.service.AccountService; import com.moral.service.HistoryService; import com.moral.service.ProfessionService; @Service public class HistoryServiceImpl implements HistoryService { @@ -51,7 +51,7 @@ private SensorMapper sensorMapper; @Resource private ProfessionMapper professionMapper; private ProfessionService professionService; @Override public Map<String, Object> getAllSensorAverageByDevice(Map<String, Object> parameters) throws Exception { @@ -111,6 +111,7 @@ ValidateUtil.notNull(parameters.get("accountId"), "param.is.null"); String regionCode = parameters.get("regionCode").toString(); parameters.put("provinceCode", regionCode.substring(0,2).concat("0000")); String regionType = "village"; String nextLevel = ""; if (regionCode.length() == 6) { @@ -168,7 +169,7 @@ } } if ("profession".equals(parameters.get("dimension"))) { List<Profession> professions = professionMapper.selectAll(); List<Profession> professions = professionService.getProfessiontList(parameters); for (Map<String, Object> map : result) { for (Profession profession : professions) { if (map.get("name").equals(profession.getName())) { src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
@@ -73,10 +73,10 @@ List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId); params.put("orgIds",orgIds); monitorPointList = monitorPointMapper.selectByMap(params); for(MonitorPoint monitorPoint:monitorPointList){ Integer state = getStateFromRedis(monitorPoint.getId()); monitorPoint.setState(state); } // for(MonitorPoint monitorPoint:monitorPointList){ // Integer state = getStateFromRedis(monitorPoint.getId()); // monitorPoint.setState(state); // } } return monitorPointList == null ? new ArrayList<>() : monitorPointList; } src/main/java/com/moral/service/impl/ProfessionServiceImpl.java
@@ -1,14 +1,19 @@ package com.moral.service.impl; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import com.moral.common.util.StringUtils; import com.moral.entity.Profession; import com.moral.mapper.ProfessionMapper; import com.moral.service.ProfessionService; import org.springframework.stereotype.Service; import tk.mybatis.mapper.entity.Example; import javax.annotation.Resource; import java.util.List; import tk.mybatis.mapper.entity.Example; @Service public class ProfessionServiceImpl implements ProfessionService { @@ -28,4 +33,20 @@ return professionMapper.selectAll(); } @Override public List<Profession> getProfessiontList(Map<String, Object> parameters) { List<Profession> professions = null; if (parameters.containsKey("provinceCode")) { Profession profession = new Profession(); profession.setProvinceCode(parameters.get("provinceCode").toString()); professions = professionMapper.select(profession); } if (ObjectUtils.isEmpty(professions)) { Example example = new Example(Profession.class); example.and().andIsNull("provinceCode"); professions = professionMapper.selectByExample(example); } return professions; } } src/main/resources/mapper/DensityMapper.xml
New file @@ -0,0 +1,17 @@ <?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.DensityMapper"> <resultMap id="BaseResultMap" type="com.moral.entity.Density"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="province_code" jdbcType="INTEGER" property="provinceCode" /> <result column="profession_id" jdbcType="INTEGER" property="professionId" /> <result column="tech" jdbcType="TINYINT" property="tech" /> <result column="limit_val" jdbcType="CHAR" property="limitVal" /> <result column="val_unit" jdbcType="VARCHAR" property="valUnit" /> <result column="ext_a" jdbcType="VARCHAR" property="extA" /> <result column="ext_b" jdbcType="INTEGER" property="extB" /> </resultMap> <sql id="Base_Column_List"> id, province_code, profession_id, tech, limit_val, val_unit, ext_a, ext_b </sql> </mapper> src/main/resources/mapper/DeviceMapper.xml
@@ -1,39 +1,56 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.moral.mapper.DeviceMapper"> <resultMap id="BaseResultMap" type="com.moral.entity.Device"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="address" jdbcType="VARCHAR" property="address" /> <result column="longitude" jdbcType="REAL" property="longitude" /> <result column="latitude" jdbcType="REAL" property="latitude" /> <result column="mac" jdbcType="VARCHAR" property="mac" /> <result column="operate_user_id" jdbcType="INTEGER" property="operateUserId" /> <result column="state" jdbcType="CHAR" property="state" /> <result column="is_delete" jdbcType="CHAR" property="isDelete" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="install_time" jdbcType="TIMESTAMP" property="installTime" /> <result column="monitor_point_id" jdbcType="INTEGER" property="monitorPointId" /> <result column="device_version_id" jdbcType="INTEGER" property="deviceVersionId" /> <result column="profession_id" jdbcType="INTEGER" property="professionId" /> <association property="operateUser" javaType="com.moral.entity.OperateUser"> <result column="operate_user_id" property="id" jdbcType="INTEGER" /> <result column="operate_user_name" property="name" jdbcType="VARCHAR" /> </association> <association property="deviceVersion" javaType="com.moral.entity.DeviceVersion"> <result column="device_version_id" property="id" jdbcType="INTEGER" /> <result column="device_version_value" property="version" jdbcType="INTEGER" /> <result column="device_version_name" property="name" jdbcType="VARCHAR" /> </association> <association property="monitorPoint" javaType="com.moral.entity.MonitorPoint"> <result column="monitor_point_id" property="id" jdbcType="INTEGER" /> <result column="monitor_point_name" property="name" jdbcType="VARCHAR" /> </association> <association property="profession" javaType="com.moral.entity.Profession"> <result column="profession_id" property="id" jdbcType="INTEGER" /> <result column="profession_name" property="name" jdbcType="VARCHAR" /> </association> </resultMap> <resultMap id="ResultMap" type="com.moral.entity.Device"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="address" jdbcType="VARCHAR" property="address" /> <result column="longitude" jdbcType="DOUBLE" property="longitude" /> <result column="latitude" jdbcType="DOUBLE" property="latitude" /> <result column="mac" jdbcType="VARCHAR" property="mac" /> <result column="operate_user_id" jdbcType="INTEGER" property="operateUserId" /> <result column="state" jdbcType="CHAR" property="state" /> <result column="is_delete" jdbcType="CHAR" property="isDelete" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="install_time" jdbcType="TIMESTAMP" property="installTime" /> <result column="monitor_point_id" jdbcType="INTEGER" property="monitorPointId" /> <result column="device_version_id" jdbcType="INTEGER" property="deviceVersionId" /> <result column="profession_id" jdbcType="INTEGER" property="professionId" /> </resultMap> <resultMap id="BaseResultMap" type="com.moral.entity.Device" extends="ResultMap"> <association property="operateUser" javaType="com.moral.entity.OperateUser"> <result column="operate_user_id" property="id" jdbcType="INTEGER" /> <result column="operate_user_name" property="name" jdbcType="VARCHAR" /> </association> <association property="deviceVersion" javaType="com.moral.entity.DeviceVersion"> <result column="device_version_id" property="id" jdbcType="INTEGER" /> <result column="device_version_value" property="version" jdbcType="INTEGER" /> <result column="device_version_name" property="name" jdbcType="VARCHAR" /> </association> <association property="monitorPoint" javaType="com.moral.entity.MonitorPoint"> <result column="monitor_point_id" property="id" jdbcType="INTEGER" /> <result column="monitor_point_name" property="name" jdbcType="VARCHAR" /> <result column="province_code" property="provinceCode" jdbcType="VARCHAR" /> </association> <association property="profession" javaType="com.moral.entity.Profession"> <result column="profession_id" property="id" jdbcType="INTEGER" /> <result column="profession_name" property="name" jdbcType="VARCHAR" /> </association> </resultMap> <resultMap id="PropertyResultMap" type="com.moral.entity.Device" extends="BaseResultMap"> <association property="deviceProperty" javaType="com.moral.entity.DeviceProperty"> <result column="id" property="id" jdbcType="INTEGER" /> <result column="device_tech" property="deviceTech" jdbcType="TINYINT" /> <result column="device_cat" property="deviceCat" jdbcType="TINYINT" /> <result column="device_source" property="deviceSource" jdbcType="VARCHAR" /> </association> </resultMap> <resultMap id="BaseResultWithOrgIdsMap" type="com.moral.entity.Device" extends="BaseResultMap"> <collection property="organizationIds" column="id" select="selectOrganizationIds"></collection> </resultMap> <sql id="Example_Where_Clause"> <where> <foreach collection="oredCriteria" item="criteria" separator="or"> @@ -244,9 +261,6 @@ AND dev.is_delete =0 </where> </select> <resultMap id="BaseResultWithOrgIdsMap" type="com.moral.entity.Device" extends="BaseResultMap"> <collection property="organizationIds" column="id" select="selectOrganizationIds"></collection> </resultMap> <!-- resultMap引用 --> <select id="selectOrganizationIds" resultType="java.lang.Integer"> call proc_organizationIds_GetByDeviceId(#{id,jdbcType=INTEGER}); @@ -336,23 +350,6 @@ </if> </select> <resultMap id="ResultMap" type="com.moral.entity.Device"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="address" jdbcType="VARCHAR" property="address" /> <result column="longitude" jdbcType="DOUBLE" property="longitude" /> <result column="latitude" jdbcType="DOUBLE" property="latitude" /> <result column="mac" jdbcType="VARCHAR" property="mac" /> <result column="operate_user_id" jdbcType="INTEGER" property="operateUserId" /> <result column="state" jdbcType="CHAR" property="state" /> <result column="is_delete" jdbcType="CHAR" property="isDelete" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="install_time" jdbcType="TIMESTAMP" property="installTime" /> <result column="monitor_point_id" jdbcType="INTEGER" property="monitorPointId" /> <result column="device_version_id" jdbcType="INTEGER" property="deviceVersionId" /> <result column="profession_id" jdbcType="INTEGER" property="professionId" /> </resultMap> <select id="getDevicesByOrganizationId" resultMap="ResultMap"> SELECT d.* @@ -387,4 +384,30 @@ </if> </where> </select> <select id="getDeviceList" resultMap="PropertyResultMap"> select dev.*, ouser.name as operate_user_name, dvn.name as device_version_name, mpt.name as monitor_point_name, mpt.province_code, dp.device_tech, dp.device_cat, dp.device_source from device dev left join operate_user ouser on dev.operate_user_id = ouser.id left join device_version dvn on dev.device_version_id = dvn.id left join monitor_point mpt on dev.monitor_point_id = mpt.id left join device_property dp on dev.id = dp.id where dev.id in ( select id from device <if test="_parameter != null"> <include refid="Example_Where_Clause" /> </if> <if test="orderByClause != null"> order by ${orderByClause} </if> ) </select> </mapper> src/main/resources/mapper/DevicePropertyMapper.xml
New file @@ -0,0 +1,18 @@ <?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.DevicePropertyMapper"> <resultMap id="BaseResultMap" type="com.moral.entity.DeviceProperty"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="device_tech" jdbcType="TINYINT" property="deviceTech" /> <result column="device_cat" jdbcType="TINYINT" property="deviceCat" /> <result column="device_source" jdbcType="VARCHAR" property="deviceSource" /> <result column="ext_a" jdbcType="INTEGER" property="extA" /> <result column="ext_b" jdbcType="INTEGER" property="extB" /> <result column="ext_c" jdbcType="VARCHAR" property="extC" /> <result column="ext_d" jdbcType="VARCHAR" property="extD" /> <result column="ext_e" jdbcType="VARCHAR" property="extE" /> </resultMap> <sql id="Base_Column_List"> id, device_tech, device_cat, device_source, ext_a, ext_b, ext_c, ext_d, ext_e </sql> </mapper> src/main/resources/mapper/ProfessionMapper.xml
@@ -1,9 +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.ProfessionMapper" > <resultMap id="BaseResultMap" type="com.moral.entity.Profession" > <id column="id" property="id" jdbcType="INTEGER" /> <result column="name" property="name" jdbcType="VARCHAR" /> </resultMap> <?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.ProfessionMapper"> <resultMap id="BaseResultMap" type="com.moral.entity.Profession"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="province_code" jdbcType="VARCHAR" property="provinceCode" /> </resultMap> <sql id="Base_Column_List"> id, name, province_code </sql> </mapper>