From aba833c7e94483639995f269aa00954e0bf4ade3 Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Thu, 18 Jan 2018 15:30:45 +0800 Subject: [PATCH] 设备管理 --- src/main/java/com/moral/controller/DeviceController.java | 26 ++++++ src/main/java/com/moral/service/DeviceService.java | 6 + src/main/resources/mapper/DeviceMapper.xml | 90 +++++++++++++++++++++- src/main/resources/mapper/MonitorPointMapper.xml | 2 src/main/java/com/moral/mapper/DeviceMapper.java | 3 src/main/java/com/moral/common/json/BooleanValueFilter.java | 2 src/main/java/com/moral/common/util/RedisUtils.java | 5 src/main/java/com/moral/mapper/type/AlarmConfigValueHandle.java | 7 + src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 47 ++++++++++- src/main/java/com/moral/entity/Device.java | 20 ++-- 10 files changed, 180 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/moral/common/json/BooleanValueFilter.java b/src/main/java/com/moral/common/json/BooleanValueFilter.java index 5029f7c..479f264 100644 --- a/src/main/java/com/moral/common/json/BooleanValueFilter.java +++ b/src/main/java/com/moral/common/json/BooleanValueFilter.java @@ -1,7 +1,9 @@ package com.moral.common.json; import com.alibaba.fastjson.serializer.ValueFilter; +import org.springframework.stereotype.Component; +@Component public class BooleanValueFilter implements ValueFilter{ @Override public Object process(Object object, String propertyName, Object propertyValue) { diff --git a/src/main/java/com/moral/common/util/RedisUtils.java b/src/main/java/com/moral/common/util/RedisUtils.java index a05b472..27bc89b 100644 --- a/src/main/java/com/moral/common/util/RedisUtils.java +++ b/src/main/java/com/moral/common/util/RedisUtils.java @@ -23,7 +23,8 @@ } @Resource private RedisTemplate redisTemplate; - + @Resource + private BooleanValueFilter booleanValueFilter; /** * ���������������������value * @@ -177,7 +178,7 @@ boolean result = false; try { if(value!=null&&!(value instanceof String)) { - value = JSON.toJSONString(value,new BooleanValueFilter()); + value = JSON.toJSONString(value,booleanValueFilter); } ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); operations.set(key, value); diff --git a/src/main/java/com/moral/controller/DeviceController.java b/src/main/java/com/moral/controller/DeviceController.java new file mode 100644 index 0000000..87e7fa1 --- /dev/null +++ b/src/main/java/com/moral/controller/DeviceController.java @@ -0,0 +1,26 @@ +package com.moral.controller; + +import com.moral.common.bean.PageBean; +import com.moral.common.bean.ResultBean; +import com.moral.service.DeviceService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("device") +@CrossOrigin(origins = "*", maxAge = 3600) +public class DeviceController { + @Resource + DeviceService deviceService; + @GetMapping("page-list") + public PageBean pageList(PageBean pageBean) { + return deviceService.queryByPageBean(pageBean); + } + @PostMapping("delete-by-ids") + public ResultBean deleteByIds(@RequestBody Integer [] ids){ + deviceService.deleteByIds(ids); + ResultBean resultBean = new ResultBean(ResultBean.SUCCESS); + return resultBean; + } +} diff --git a/src/main/java/com/moral/entity/Device.java b/src/main/java/com/moral/entity/Device.java index 7c2670f..d180934 100644 --- a/src/main/java/com/moral/entity/Device.java +++ b/src/main/java/com/moral/entity/Device.java @@ -3,6 +3,7 @@ import java.util.Date; import javax.persistence.Id; +import javax.persistence.Transient; import lombok.Data; @@ -72,7 +73,7 @@ * @mbggenerated Wed Nov 29 16:17:59 CST 2017 */ private Integer deviceVersionId; - + private String isDelete; /** * Sets the uid. * @@ -100,14 +101,7 @@ return name; } - /** - * Sets the monitorpoint. - * - * @param monitorpoint the new monitorpoint - */ - public void setMonitorpoint(Integer monitorpoint) { - this.monitorPointId = monitorpoint; - } + /** * Gets the status. @@ -117,6 +111,10 @@ public String getStatus() { return state; } - - + @Transient + private OperateUser operateUser; + @Transient + private DeviceVersion deviceVersion; + @Transient + private MonitorPoint monitorPoint; } \ No newline at end of file diff --git a/src/main/java/com/moral/mapper/DeviceMapper.java b/src/main/java/com/moral/mapper/DeviceMapper.java index f4ce1f4..0fbc5c4 100644 --- a/src/main/java/com/moral/mapper/DeviceMapper.java +++ b/src/main/java/com/moral/mapper/DeviceMapper.java @@ -7,10 +7,11 @@ import com.moral.common.mapper.BaseMapper; import com.moral.entity.Device; +import tk.mybatis.mapper.entity.Example; public interface DeviceMapper extends BaseMapper<Device>{ List<Map<String, Object>> getDeviceStatesByAccount(Map<String, Object> parameters); - + List<Device> selectWithRelationData(Example example); List<Map<String, Object>> getSensorsByDevice(@Param("mac")String mac); } \ No newline at end of file diff --git a/src/main/java/com/moral/mapper/type/AlarmConfigValueHandle.java b/src/main/java/com/moral/mapper/type/AlarmConfigValueHandle.java index 7c7d465..4a604c8 100644 --- a/src/main/java/com/moral/mapper/type/AlarmConfigValueHandle.java +++ b/src/main/java/com/moral/mapper/type/AlarmConfigValueHandle.java @@ -14,6 +14,8 @@ import com.alibaba.fastjson.JSON; +import javax.annotation.Resource; + /** * @author fengxiang * @Time���2017���11���29��� ������9:38:51 @@ -22,7 +24,8 @@ @MappedJdbcTypes({JdbcType.OTHER}) @MappedTypes({AlarmConfigValue.class}) public class AlarmConfigValueHandle extends BaseTypeHandler<AlarmConfigValue> { - + @Resource + private BooleanValueFilter booleanValueFilter; @Override public AlarmConfigValue getNullableResult(ResultSet resultSet, String s) throws SQLException { return JSON.parseObject(resultSet.getString(s),AlarmConfigValue.class); @@ -41,7 +44,7 @@ @Override public void setNonNullParameter(PreparedStatement preparedStatement, int i, AlarmConfigValue alarmConfigValue, JdbcType jdbcType) throws SQLException { - preparedStatement.setString(i,JSON.toJSONString(alarmConfigValue,new BooleanValueFilter())); + preparedStatement.setString(i,JSON.toJSONString(alarmConfigValue,booleanValueFilter)); } } diff --git a/src/main/java/com/moral/service/DeviceService.java b/src/main/java/com/moral/service/DeviceService.java index 7c27be8..701d31b 100644 --- a/src/main/java/com/moral/service/DeviceService.java +++ b/src/main/java/com/moral/service/DeviceService.java @@ -2,7 +2,7 @@ import java.util.List; import java.util.Map; - +import com.moral.common.bean.PageBean; import com.moral.entity.Device; public interface DeviceService { @@ -16,4 +16,8 @@ List<Device> getInstallDevicesByOperateUser(Integer uid, Integer pageIndex, Integer pageSize); Device getDeviceByMac(String mac); + + PageBean queryByPageBean(PageBean pageBean); + + void deleteByIds(Integer[] ids); } diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java index 982bbe0..ded40ee 100644 --- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java @@ -1,12 +1,12 @@ package com.moral.service.impl; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import javax.annotation.Resource; +import com.moral.common.bean.Constants; +import com.moral.common.bean.PageBean; +import com.moral.common.util.ExampleUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; @@ -17,6 +17,7 @@ import com.moral.mapper.DeviceMapper; import com.moral.service.AccountService; import com.moral.service.DeviceService; +import tk.mybatis.mapper.entity.Example; @Service public class DeviceServiceImpl implements DeviceService { @@ -26,7 +27,7 @@ @Resource private AccountService accountService; - + private Class ENTITY_CLASS = Device.class; @Override public Map<String, Object> getDeviceStatesByAccount(Map<String, Object> parameters) { ValidateUtil.notNull(parameters.get("accountId"), "param.is.null"); @@ -73,6 +74,7 @@ if (ObjectUtils.isEmpty(queryDevice)) { device.setCreateTime(operateDate); device.setState("4"); + device.setIsDelete(Constants.IS_DELETE_FALSE); deviceMapper.insertSelective(device); }else { device.setId(queryDevice.getId()); @@ -99,4 +101,39 @@ return device; } + @Override + public PageBean queryByPageBean(PageBean pageBean) { + 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); + } + if(pageBean.getPageSize()>0){ + PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize()); + } + List<Device> organizationList = deviceMapper.selectWithRelationData(example); + return new PageBean(organizationList); + } + + @Override + public void deleteByIds(Integer[] ids) { + Device device = new Device(); + device.setIsDelete(Constants.IS_DELETE_TRUE); + if(ids!=null&&ids.length>0){ + if(ids.length==1){ + device.setId(ids[0]); + deviceMapper.updateByPrimaryKeySelective(device); + }else{ + Example example = new Example(ENTITY_CLASS); + example.or().andIn("id", Arrays.asList(ids)); + deviceMapper.updateByExampleSelective(device,example); + } + + } + } + } diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml index cb82be4..fbe298a 100644 --- a/src/main/resources/mapper/DeviceMapper.xml +++ b/src/main/resources/mapper/DeviceMapper.xml @@ -1,7 +1,87 @@ -<?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"> +<?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"> - <select id="getDeviceStatesByAccount" resultType="map"> + <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" /> + <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_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> + </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, address, longitude, latitude, mac, operate_user_id, state, is_delete, create_time, + install_time, monitor_point_id, device_version_id + </sql> + <select id="selectWithRelationData" parameterType="tk.mybatis.mapper.entity.Example" resultMap="BaseResultMap"> + select + dev.*, + ouser.name as operate_user_name, + dvn.name as device_version_name, + mpt.name as monitor_point_name + from device dev + left join operate_user ouser on dev.operate_user_id = ouser.id + left join device_version dvn on dev.device_version_id = dvn.id + left join monitor_point mpt on dev.monitor_point_id = mpt.id + where dev.id in ( + select id from device + <if test="_parameter != null"> + <include refid="Example_Where_Clause" /> + </if> + <if test="orderByClause != null"> + order by ${orderByClause} + </if> + ) + </select> + <select id="getDeviceStatesByAccount" resultType="map"> SELECT COUNT( d.state ) count, d.state @@ -12,13 +92,13 @@ WHERE d.monitor_point_id = mp.id AND mp.organization_id IN - <foreach collection="orgIds" open="(" separator="," close=")" item="listItem"> + <foreach close=")" collection="orgIds" item="listItem" open="(" separator=","> #{listItem} </foreach> </if> GROUP BY d.state </select> - + <select id="getSensorsByDevice" resultType="map"> SELECT s.`key`, diff --git a/src/main/resources/mapper/MonitorPointMapper.xml b/src/main/resources/mapper/MonitorPointMapper.xml index bf0a5ee..8b2378a 100644 --- a/src/main/resources/mapper/MonitorPointMapper.xml +++ b/src/main/resources/mapper/MonitorPointMapper.xml @@ -20,7 +20,7 @@ <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_id" property="id" jdbcType="INTEGER" /> <result column="organization_name" property="name" jdbcType="VARCHAR" /> </association> </resultMap> -- Gitblit v1.8.0