From a4c1346fe8b37507d69413632848d30a5826efc6 Mon Sep 17 00:00:00 2001
From: xufenglei <xufenglei>
Date: Wed, 21 Nov 2018 09:25:08 +0800
Subject: [PATCH] 更新

---
 src/main/resources/mapper/DeviceMapper.xml                        |   22 +++++++++++
 src/main/java/com/moral/mapper/DeviceMapper.java                  |    1 
 src/main/java/com/moral/service/MonitorPointService.java          |    3 +
 src/main/java/com/moral/controller/ScreenController.java          |   12 ++++++
 src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java |   44 ++++++++++++++++++++++
 5 files changed, 82 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 4be11b4..7d68481 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -773,4 +773,16 @@
 		return new ResultBean<List<MonitorPoint>>(monitorPoints);
 	}
 
+
+	@GetMapping("devices-state")
+	@ApiOperation(value = "������������������", notes = "������������������")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "organizationId",defaultValue = "8", value = "���������������������id", required = true, paramType = "query", dataType = "Integer"),
+			@ApiImplicitParam(name = "regionCode",defaultValue = "320583", value = "���������", required = true, paramType = "query", dataType = "String")
+	})
+	public ResultBean<Collection<Object>> getDevicesStateByRegion(HttpServletRequest request) throws Exception {
+		Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+		Collection<Object> monitorPoints= monitorPointService.getDevicesStateByRegion(parameters);
+		return new ResultBean<Collection<Object>>(monitorPoints);
+	}
 }
diff --git a/src/main/java/com/moral/mapper/DeviceMapper.java b/src/main/java/com/moral/mapper/DeviceMapper.java
index 3ba6f22..8dd670a 100644
--- a/src/main/java/com/moral/mapper/DeviceMapper.java
+++ b/src/main/java/com/moral/mapper/DeviceMapper.java
@@ -37,4 +37,5 @@
 	List<Device> getDevicesByProfession(Map<String, Object> parameters);
 
 	List<Device> getDevicesByOrganizationId(Map<String, Object> parameters);
+	List<Map<String, Object>> getDevicesStateByRegion(Map<String, Object> parameters);
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/MonitorPointService.java b/src/main/java/com/moral/service/MonitorPointService.java
index ec68268..f57ae34 100644
--- a/src/main/java/com/moral/service/MonitorPointService.java
+++ b/src/main/java/com/moral/service/MonitorPointService.java
@@ -1,5 +1,6 @@
 package com.moral.service;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -34,4 +35,6 @@
     MonitorPoint queryMonitorPointById(Integer mpointId);
 
 	List<MonitorPoint> getMonitorPointsAndDevicesByRegion(Map<String, Object> parameters);
+
+	Collection<Object> getDevicesStateByRegion(Map<String, Object> parameters);
 }
diff --git a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
index ae53cce..ffd22cb 100644
--- a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
@@ -2,6 +2,7 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -305,4 +306,47 @@
 		}
 		return monitorPoints;
 	}
+
+    @SuppressWarnings("unchecked")
+	@Override
+	public Collection<Object> getDevicesStateByRegion(Map<String, Object> parameters) {
+    	//������������
+		Object organizationId = parameters.remove("organizationId");
+		ValidateUtil.notNull(organizationId, "param.is.null");
+		ValidateUtil.notNull(parameters.get("regionCode"), "param.is.null");
+
+		//������������������
+		ParameterUtils.getRegionType4RegionCode(parameters);
+		
+		if (Constants.isNotSpecialOrgId(Integer.valueOf(organizationId.toString()))) {
+			Set<Integer> organizationIds = organizationService.getChildOrganizationIds(Integer.valueOf(organizationId.toString()));
+			parameters.put("orgIds", organizationIds);
+		}
+		List<Map<String, Object>> monitorPoints  = deviceMapper.getDevicesStateByRegion(parameters);
+		Map<String, Object> result = new HashMap<String, Object>();
+		Map<String,Object> device;
+		List<Map<String, Object>> devices;
+		for (Map<String, Object> map : monitorPoints) {
+			String id = map.get("id").toString();
+
+			device = new HashMap<String,Object>();
+			device.put("id", map.remove("deviceId"));
+			device.put("name", map.remove("deviceName"));
+			device.put("state", map.remove("state"));
+			device.put("mac", map.remove("mac"));
+
+			if (result.containsKey(id)) {
+				Map<String, Object> monitorPoint = (Map<String, Object>) result.get(id);
+				devices = (List<Map<String, Object>>) monitorPoint.get("devices");
+			} else {
+				devices = new ArrayList<Map<String, Object>>();
+				result.put(id, map);
+			}
+			devices.add(device);
+			map.put("devices", devices);
+			result.put(id, map);
+		}
+		
+		return result.values();
+	}
 }
diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml
index 16521ec..92d256a 100644
--- a/src/main/resources/mapper/DeviceMapper.xml
+++ b/src/main/resources/mapper/DeviceMapper.xml
@@ -362,4 +362,26 @@
 			AND mp.is_delete = 0 
 			AND mp.organization_id = #{organizationId}
 	</select>
+
+
+	<select id="getDevicesStateByRegion" resultType="map">
+		SELECT
+			d.id deviceId,d.mac,d.state,d.name deviceName,
+			mp.id,mp.name
+		FROM
+			device d ,
+			monitor_point mp
+		<where>
+			d.monitor_point_id = mp.id 
+			AND d.is_delete = 0 
+			AND mp.is_delete = 0 
+			AND mp.${regionType}_code = #{regionCode}
+		<if test="orgIds != null and orgIds.size &gt; 0">
+			AND mp.organization_id IN
+			<foreach  collection="orgIds" open="(" separator="," close=")" item="listItem">
+				#{listItem}
+			</foreach>
+		</if>
+		</where>
+	</select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0