From 62520477e6ac5fc8ccce28fdb69ec26246a4a37b Mon Sep 17 00:00:00 2001
From: xufenglei <xufenglei>
Date: Mon, 02 Jul 2018 11:27:14 +0800
Subject: [PATCH] 优化 大屏数据排名接口

---
 src/main/java/com/moral/service/impl/HistoryServiceImpl.java |   28 +++++++++++++---------------
 src/main/java/com/moral/mapper/HistoryMapper.java            |    2 +-
 src/main/resources/mapper/HistoryMapper.xml                  |   13 +++++++++----
 3 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/moral/mapper/HistoryMapper.java b/src/main/java/com/moral/mapper/HistoryMapper.java
index 66ff879..5f81619 100644
--- a/src/main/java/com/moral/mapper/HistoryMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryMapper.java
@@ -12,7 +12,7 @@
 
 	List<Map<String, Object>> getRegionRankingData(Map<String, Object> parameters);
 
-	List<Map<String, Object>> selectNextLevelRegion(Map<String, Object> parameters);
+	List<String> selectNextLevelRegion(Map<String, Object> parameters);
 
 	List<Map<String, Object>> getDischargeByRegion(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 c75e317..fa11e80 100644
--- a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
@@ -16,6 +16,7 @@
 import javax.annotation.Resource;
 
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 
 import com.moral.common.util.ValidateUtil;
 import com.moral.entity.Profession;
@@ -161,6 +162,9 @@
 				for (Profession profession : professions) {
 					if (map.get("name").equals(profession.getName())) {
 						professions.remove(profession);
+						if (ObjectUtils.isEmpty(map.get("avg"))) {
+							map.put("avg", 0);
+						}
 						break;
 					}
 				}
@@ -172,25 +176,19 @@
 				result.add(map);
 			}
 		} else if ("region".equals(parameters.get("dimension"))) {
-			List<Map<String, Object>> regions = historyMapper.selectNextLevelRegion(parameters);
-			for (int i = result.size() - 1; i >= 0; i--) {
-				Map<String, Object> map = result.get(i);
-				for (Map<String, Object> region : regions) {
-					if ((map.get("code") == null)) {
-						result.remove(map);
-						break;
-					} 
-					if (map.get("code").equals(region.get("code"))) {
-						map.put("name", region.get("name"));
-						regions.remove(region);
-						map.remove("code");
-						break;
+			List<String> regions = historyMapper.selectNextLevelRegion(parameters);
+			for (Map<String, Object> map : result) {
+				if (regions.contains(map.get("name"))) {
+					regions.remove(map.get("name"));
+					if (ObjectUtils.isEmpty(map.get("avg"))) {
+						map.put("avg", 0);
 					}
 				}
+				
 			}
-			for (Map<String, Object> region : regions) {
+			for (String region : regions) {
 				Map<String, Object> map = new HashMap<String, Object>();
-				map.put("name", region.get("name"));
+				map.put("name", region);
 				map.put("avg", 0);
 				result.add(map);
 			}
diff --git a/src/main/resources/mapper/HistoryMapper.xml b/src/main/resources/mapper/HistoryMapper.xml
index 3c0576f..e19db1a 100644
--- a/src/main/resources/mapper/HistoryMapper.xml
+++ b/src/main/resources/mapper/HistoryMapper.xml
@@ -46,11 +46,14 @@
 				mp.`name`
 			</if>
 			<if test="dimension == 'region'">
-				mp.${nextLevel}_code AS 'code'
+				r.${nextLevel}_name AS 'name'
 			</if>
 		FROM
 			<if test="dimension == 'profession'">
 				profession p , 
+			</if>
+			<if test="dimension == 'region'">
+				${nextLevel} r,
 			</if>
 			device d,
 			${table} h,
@@ -64,6 +67,9 @@
 			AND mp.${regionType}_code = #{regionCode}
 			<if test="dimension == 'profession'">
 				AND d.profession_id = p.id 
+			</if>
+			<if test="dimension == 'region'">
+				AND r.${nextLevel}_code = mp.${nextLevel}_code
 			</if>
 			<if test="orgIds != null and orgIds.size &gt; 0">
 				AND mp.organization_id IN
@@ -88,9 +94,8 @@
 		</if>
 	</select>
 	
-	<select id="selectNextLevelRegion" resultType="java.util.Map">
+	<select id="selectNextLevelRegion" resultType="string">
 		SELECT
-			${nextLevel}_code AS 'code',
 			${nextLevel}_name AS 'name' 
 		FROM
 			${nextLevel}
@@ -101,7 +106,7 @@
 	<select id="getDischargeByRegion" resultType="java.util.Map">
 		SELECT
 			mp.`name`,
-			dis.`value` -> '$.e1' 'value'
+			dis.`value` -> '$.${sensorKey}' 'value'
 		FROM
 			monitor_point mp,
 			discharge dis 

--
Gitblit v1.8.0