From 5fed7b486fea656ae9878166e3530b7e29eae7eb Mon Sep 17 00:00:00 2001
From: lizijie <lzjiiie@163.com>
Date: Fri, 30 Aug 2019 09:57:06 +0800
Subject: [PATCH] 站点排名

---
 src/main/java/com/moral/service/HistoryService.java          |    2 
 src/main/java/com/moral/service/impl/HistoryServiceImpl.java |   32 ++++++++++++++--
 src/main/resources/mapper/MonitorPointMapper.xml             |    8 ++++
 src/main/java/com/moral/controller/MobileController.java     |   12 +++--
 src/main/java/com/moral/mapper/HistoryMapper.java            |    2 +
 src/main/resources/mapper/HistoryMapper.xml                  |   14 +++++++
 src/main/java/com/moral/mapper/MonitorPointMapper.java       |    4 ++
 7 files changed, 64 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/moral/controller/MobileController.java b/src/main/java/com/moral/controller/MobileController.java
index 7ce2738..23a1a9c 100644
--- a/src/main/java/com/moral/controller/MobileController.java
+++ b/src/main/java/com/moral/controller/MobileController.java
@@ -360,16 +360,18 @@
 	@GetMapping("mointorPointRank")
 	@ApiOperation(value = "������������������", notes = "������������������")
 	@ApiImplicitParams(value = {
-			@ApiImplicitParam(name = "accountId", value = "������id", required = true, paramType = "query", dataType = "String")
+			@ApiImplicitParam(name = "accountId", value = "������id", required = true, paramType = "query", dataType = "String"),
+			@ApiImplicitParam(name = "sensor", value = "������", required = true, paramType = "query", dataType = "String")
 	})
-	public ResultBean<Map<String, Object>> getMointorPointRank(HttpServletRequest request){
+	public ResultBean<List<Map<String, Object>>> getMointorPointRank(HttpServletRequest request){
 		Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
 		String id = parameters.get("accountId").toString();
+		String sensor = parameters.get("sensor").toString();
 		Map<String, Object> account = accountService.getOrganizationIdByAccountId(id);
 		//������������id������������������������������
-		System.out.println(account);
-		historyService.getMointorPointRankByOrganizationId(account);
-		return new ResultBean<Map<String, Object>>(account);
+		account.put("sensor", sensor);
+		List<Map<String, Object>> returnList = historyService.getMointorPointRankByOrganizationId(account);
+		return new ResultBean<List<Map<String, Object>>>(returnList);
 	}
 
 }
diff --git a/src/main/java/com/moral/mapper/HistoryMapper.java b/src/main/java/com/moral/mapper/HistoryMapper.java
index 32164b0..2cd3775 100644
--- a/src/main/java/com/moral/mapper/HistoryMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryMapper.java
@@ -23,5 +23,7 @@
 	Map<String, Object> getAVGValueByMacAndTimeslot(@Param("mac")String mac, @Param("starttime")String starttime, @Param("endtime")String endtime);
 
     List<Map<String, Object>> getSensorDataToday(Map<String, Object> parameters);
+    
+    List<Map<String, Object>> getAVGSensorRankByMonitorPointIdList(@Param("sensor")String sensor, @Param("monitorPointIdList") List<Object> monitorPointIdList, @Param("before5Time")String before5Time, @Param("endTime")String endTime);
 
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/MonitorPointMapper.java b/src/main/java/com/moral/mapper/MonitorPointMapper.java
index ae3420d..815c197 100644
--- a/src/main/java/com/moral/mapper/MonitorPointMapper.java
+++ b/src/main/java/com/moral/mapper/MonitorPointMapper.java
@@ -2,6 +2,9 @@
 
 import java.util.List;
 import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+
 import com.moral.common.mapper.BaseMapper;
 import com.moral.entity.MonitorPoint;
 import tk.mybatis.mapper.entity.Example;
@@ -13,4 +16,5 @@
     List<Integer> selectOrganizationIds(int id);
     List<Integer> selectVersionsById(int id);
     Map<String, Object> selectAllById(int id);
+    List<Map<String, Object>> getIdByOrganizationId(@Param("organizationIdList") List<Object> organizationIdList);
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/HistoryService.java b/src/main/java/com/moral/service/HistoryService.java
index b619064..b41a7eb 100644
--- a/src/main/java/com/moral/service/HistoryService.java
+++ b/src/main/java/com/moral/service/HistoryService.java
@@ -25,6 +25,6 @@
 	
 	Map<String, Object> gitHourlyAQIByMacAndTimeslot(Map<String, Object> parameters);
 	
-	Map<String, Object> getMointorPointRankByOrganizationId(Map<String, Object> parameters);
+	List<Map<String, Object>> getMointorPointRankByOrganizationId(Map<String, Object> parameters);
 
 }
diff --git a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
index 2b23155..dff8765 100644
--- a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
@@ -1,5 +1,6 @@
 package com.moral.service.impl;
 
+import java.text.SimpleDateFormat;
 import java.time.Instant;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -33,6 +34,7 @@
 import com.moral.entity.Sensor;
 import com.moral.mapper.DeviceMapper;
 import com.moral.mapper.HistoryMapper;
+import com.moral.mapper.MonitorPointMapper;
 import com.moral.mapper.OrganizationRelationMapper;
 import com.moral.mapper.SensorMapper;
 import com.moral.mapper.SensorUnitMapper;
@@ -61,6 +63,9 @@
     
     @Resource
     private OrganizationRelationMapper organizationRelationMapper;
+    
+    @Resource
+    private MonitorPointMapper monitorPointMapper;
 
 	@Override
 	public Map<String, Object> getAllSensorAverageByDevice(Map<String, Object> parameters) throws Exception {
@@ -382,7 +387,7 @@
 	}
 
 	@Override
-	public Map<String, Object> getMointorPointRankByOrganizationId(Map<String, Object> parameters) {
+	public List<Map<String, Object>> getMointorPointRankByOrganizationId(Map<String, Object> parameters) {
 		//������������id
 		String organizationId = parameters.get("organization_id").toString();
 		//������������������������������������������������������id
@@ -396,11 +401,9 @@
 		for(int i=0;i<10;i++) {
 			if(!parentIdList.isEmpty()) {
 				//������������������������������
-				System.out.println("parentIdList:"+parentIdList);
 				List<Map<String, Object>> childIdList = organizationRelationMapper.getChildIdByParentId(parentIdList);
 				//���������������id������
 				parentIdList.clear();
-				System.out.println("childIdList:"+childIdList);
 				//������������id������������������
 				for (Map<String, Object> map : childIdList) {
 					organizationIdList.add(map.get("child_id"));
@@ -412,6 +415,27 @@
 		}
 		System.out.println(organizationIdList);
 		
-		return null;
+		//������������id������������id
+		List<Map<String, Object>> monitorPointIdListMap = monitorPointMapper.getIdByOrganizationId(organizationIdList);
+		//���List<Map<String, Object>>���������List<Object>
+		List<Object> monitorPointIdList = new ArrayList<>();
+		for (Map<String, Object> map : monitorPointIdListMap) {
+			monitorPointIdList.add(map.get("id"));
+		}
+		
+		//������������id���������������������������
+		//������������������������
+		Calendar rightNow = Calendar.getInstance();
+		//���������������������������
+		Calendar beforeTime = Calendar.getInstance();
+		beforeTime.add(Calendar.MINUTE, -5);// 5���������������������
+		Date beforeD = beforeTime.getTime();
+		Date end = rightNow.getTime();
+		String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(end);
+		String before5Time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(beforeD);  // ������������������
+		
+		String sensor = parameters.get("sensor").toString();
+		List<Map<String, Object>> result = historyMapper.getAVGSensorRankByMonitorPointIdList(sensor, monitorPointIdList, before5Time, endTime);
+		return result;
 	}
 }
diff --git a/src/main/resources/mapper/HistoryMapper.xml b/src/main/resources/mapper/HistoryMapper.xml
index 7aec033..ace511c 100644
--- a/src/main/resources/mapper/HistoryMapper.xml
+++ b/src/main/resources/mapper/HistoryMapper.xml
@@ -193,5 +193,19 @@
         ORDER BY
         time
     </select>
+    
+    <select id="getAVGSensorRankByMonitorPointIdList" resultType="java.util.Map">
+    	SELECT mp.name, AVG(JSON_EXTRACT(h.value,'$.${sensor}[0]')) sensor
+		FROM device d, history h, monitor_point mp
+		WHERE d.mac=h.mac
+		And mp.id=d.monitor_point_id
+		AND d.monitor_point_id IN
+			<foreach collection="monitorPointIdList" index="index" item="monitorPointId" open="(" separator="," close=")">  
+	            #{monitorPointId}  
+	        </foreach>
+		AND h.time BETWEEN #{before5Time} AND #{endTime}
+		GROUP BY d.monitor_point_id
+		ORDER BY AVG(JSON_EXTRACT(h.value,'$.${sensor}[0]')) DESC
+    </select>
 
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/MonitorPointMapper.xml b/src/main/resources/mapper/MonitorPointMapper.xml
index 2743e54..1ecd9d7 100644
--- a/src/main/resources/mapper/MonitorPointMapper.xml
+++ b/src/main/resources/mapper/MonitorPointMapper.xml
@@ -148,4 +148,12 @@
 			FROM monitor_point
 			WHERE id = #{id}
 	</select>
+	<select id="getIdByOrganizationId" resultType="java.util.Map">
+			SELECT id
+			FROM monitor_point
+			WHERE organization_id IN
+				<foreach collection="organizationIdList" index="index" item="organizationId" open="(" separator="," close=")">  
+	            	#{organizationId}  
+	        	</foreach>
+	</select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0