From fe928b238dc59f38785ff5aabf4088d1b899c4b7 Mon Sep 17 00:00:00 2001
From: xufenglei <xufenglei>
Date: Sun, 30 Sep 2018 08:47:49 +0800
Subject: [PATCH] 接口 优化

---
 src/main/resources/mapper/QualityDailyMapper.xml                 |   29 ++++++++++++++
 src/main/resources/mapper/HangzhouAqiMapper.xml                  |   15 +++++++
 src/main/java/com/moral/service/HangzhouAqiService.java          |    2 
 src/main/java/com/moral/controller/ScreenController.java         |    2 
 src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java |   40 +++++++++++++++-----
 src/main/java/com/moral/mapper/HangzhouAqiMapper.java            |    3 +
 6 files changed, 79 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 2894cdc..f0c0f43 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -705,7 +705,7 @@
 	@ApiImplicitParams(value = {
 			@ApiImplicitParam(name = "orgid",defaultValue = "5",value = "������id", required = true, paramType = "query", dataType = "Integer"),
 	})
-	public ResultBean<List<Map>> getAqi24HoursNC(@RequestParam("orgid") Integer organizationId) {
+	public ResultBean<List<Map<String,Object>>> getAqi24HoursNC(@RequestParam("orgid") Integer organizationId) {
 		return new ResultBean<>(hangzhouAqiService.queryAqi24Hours(organizationId));
 	}
 	@GetMapping("mpt-dev-summary")
diff --git a/src/main/java/com/moral/mapper/HangzhouAqiMapper.java b/src/main/java/com/moral/mapper/HangzhouAqiMapper.java
index e4e263c..d10a233 100644
--- a/src/main/java/com/moral/mapper/HangzhouAqiMapper.java
+++ b/src/main/java/com/moral/mapper/HangzhouAqiMapper.java
@@ -11,4 +11,7 @@
 
 public interface HangzhouAqiMapper extends BaseMapper<HangzhouAqi> {
     public List<Map> selectAqisByCodeAndTimePeriod(@Param("code")String code,@Param("timePeriod") TimePeriod timePeriod);
+    
+    List<Map<String, Object>> getAqisByOrganizationId(Map<String, Object> parameters);
+    
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/HangzhouAqiService.java b/src/main/java/com/moral/service/HangzhouAqiService.java
index 2138803..145b54e 100644
--- a/src/main/java/com/moral/service/HangzhouAqiService.java
+++ b/src/main/java/com/moral/service/HangzhouAqiService.java
@@ -10,5 +10,5 @@
  * @Description: ������api������������
  */
 public interface HangzhouAqiService {
-    public List<Map> queryAqi24Hours(@NotNull Integer orgId);
+    public List<Map<String, Object>> queryAqi24Hours(@NotNull Integer orgId);
 }
diff --git a/src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java b/src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java
index 7e01d91..4ae4086 100644
--- a/src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java
@@ -1,18 +1,23 @@
 package com.moral.service.impl;
 
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
 import com.moral.common.exception.BusinessException;
-import com.moral.common.util.ReportTimeFormat;
 import com.moral.entity.Organization;
 import com.moral.entity.charts.TimePeriod;
-import com.moral.entity.charts.TimeUnits;
 import com.moral.mapper.HangzhouAqiMapper;
 import com.moral.mapper.OrganizationMapper;
 import com.moral.service.HangzhouAqiService;
-import org.apache.commons.collections.CollectionUtils;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.*;
 
 /**
  * @Auther: fengxiang
@@ -34,9 +39,11 @@
      * @param orgId
      * @return ���������������24���������������������������������������0
      */
-    @Override
-    public List<Map> queryAqi24Hours(Integer orgId) {
-        List<Map> aqi24HoursValues = new ArrayList<>(24);
+    @SuppressWarnings("serial")
+	@Override
+    public List<Map<String, Object>> queryAqi24Hours(Integer orgId) {
+        List<Map<String, Object>> aqi24HoursValues = new ArrayList<>(24);
+/*
         Date now = ReportTimeFormat.getFormatDate(ReportTimeFormat.HOUR_FORMAT);
         Date start = ReportTimeFormat.dateCalc(now, TimeUnits.HOUR,-24);
         Date end = ReportTimeFormat.dateCalc(now, TimeUnits.MILLISECOND,-1);;
@@ -66,6 +73,19 @@
             aqiItem.put("aqi",aqiValue);
             aqi24HoursValues.add(aqiItem);
         }
+*/      
+        Organization organization = organizationMapper.selectByPrimaryKey(orgId);
+
+        Map<String, Object> parameters = new HashMap<String, Object>(){{
+        	put("end", LocalDateTime.now());
+        	put("cityCode", organization.getAreaCode());
+        }};
+        aqi24HoursValues = hangzhouAqiMapper.getAqisByOrganizationId(parameters);
+        if (ObjectUtils.isEmpty(aqi24HoursValues)) {
+        	parameters.put("cityCode", organization.getCityCode());
+        	aqi24HoursValues = hangzhouAqiMapper.getAqisByOrganizationId(parameters);
+		}
+        Collections.reverse(aqi24HoursValues);
         return aqi24HoursValues;
     }
     private Integer getCode(Integer orgId,boolean isGetCityCode)
diff --git a/src/main/resources/mapper/HangzhouAqiMapper.xml b/src/main/resources/mapper/HangzhouAqiMapper.xml
index 75d5c97..bd3e260 100644
--- a/src/main/resources/mapper/HangzhouAqiMapper.xml
+++ b/src/main/resources/mapper/HangzhouAqiMapper.xml
@@ -32,4 +32,19 @@
           )
           order by time asc
     </select>
+
+    <select id="getAqisByOrganizationId" resultType="map">
+		SELECT
+			h.aqi_json ->> '$.AQI' * 1 aqi,
+			DATE_FORMAT( h.time, '%H' ) * 1 time 
+		FROM
+			hangzhou_aqi h 
+		<where>
+			h.city_code = #{cityCode}
+		AND h.time <![CDATA[<]]> #{end}
+		</where> 
+		ORDER BY
+			h.time DESC
+		LIMIT 24
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/QualityDailyMapper.xml b/src/main/resources/mapper/QualityDailyMapper.xml
index 0e17f92..263964f 100644
--- a/src/main/resources/mapper/QualityDailyMapper.xml
+++ b/src/main/resources/mapper/QualityDailyMapper.xml
@@ -1,6 +1,7 @@
 <?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.QualityDailyMapper">
+<!-- 
 	<select id="getQualityCountDayByRegion" resultType="map">
 		SELECT
 			COUNT( * ) count 
@@ -13,4 +14,32 @@
 			AND quality &lt; 3		
 		</where>
 	</select>
+ -->
+
+	<select id="getQualityCountDayByRegion" resultType="map">
+		SELECT COUNT(*) count
+		FROM (
+			SELECT
+				MAX(CASE aqi_json ->> '$.quality' 
+						WHEN "���" THEN 1 
+						WHEN "���" THEN 2 
+						WHEN "������������" THEN 3 
+						WHEN "������������" THEN 4 
+						WHEN "������������" THEN 5 
+						WHEN "������������" THEN 6 
+						ELSE 0 END
+				)	AS quality
+			FROM
+				`hangzhou_aqi` 
+			<where>
+				time >= #{start} 
+				AND time &lt; #{end} 
+				AND city_code = #{cityCode} 
+			</where>
+			GROUP BY DATE_FORMAT( time, '%Y-%m-%d' )
+		) t
+		<where>
+			t.quality &lt; 3
+		</where>
+	</select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0