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