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