From 41863d2c44c03dca9f0bff4e3fad2be454362da0 Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Fri, 24 Aug 2018 16:20:59 +0800
Subject: [PATCH] 霸屏页面 接口

---
 src/main/java/com/moral/entity/charts/TimePeriod.java             |    6 +
 src/main/resources/mapper/DictionaryDataMapper.xml                |    6 
 src/main/java/com/moral/mapper/DictionaryDataMapper.java          |    1 
 src/main/resources/mapper/HangzhouAqiMapper.xml                   |   35 +++++
 src/main/java/com/moral/service/HangzhouAqiService.java           |   14 ++
 src/main/java/com/moral/service/impl/DeviceServiceImpl.java       |   41 ++++++
 src/main/java/com/moral/service/DeviceService.java                |    2 
 src/main/resources/mapper/HistoryMinutelyMapper.xml               |    2 
 src/main/java/com/moral/entity/HangzhouAqi.java                   |   18 +++
 src/main/java/com/moral/common/util/ReportTimeFormat.java         |   60 ++++++++-
 src/main/java/com/moral/service/MonitorPointService.java          |    4 
 src/main/java/com/moral/controller/ScreenController.java          |   27 ++++
 src/main/java/com/moral/mapper/OrganizationMapper.java            |    6 +
 src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java  |   79 +++++++++++++
 src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java |   24 ++-
 src/main/java/com/moral/mapper/HangzhouAqiMapper.java             |   14 ++
 16 files changed, 313 insertions(+), 26 deletions(-)

diff --git a/src/main/java/com/moral/common/util/ReportTimeFormat.java b/src/main/java/com/moral/common/util/ReportTimeFormat.java
index 47aa811..8528d0e 100644
--- a/src/main/java/com/moral/common/util/ReportTimeFormat.java
+++ b/src/main/java/com/moral/common/util/ReportTimeFormat.java
@@ -10,13 +10,24 @@
 import java.util.List;
 
 public class ReportTimeFormat {
+       // ������mysql format���������java���format������������
+       public final  static String YEAR_FORMAT = "yyyy";
+       public final  static String MONTH_FORMAT = "yyyy-MM";
+       public final  static String DAY_FORMAT = "yyyy-MM-dd";
+       public final  static String HOUR_FORMAT = "yyyy-MM-dd/HH";
+       public final  static String MINUTE_FORMAT = "yyyy-MM-dd/HH:mm";
+       public final  static String YEAR_FORMAT_OF_MYSQL = "%Y";
+       public final  static String MONTH_FORMAT_OF_MYSQL = "%Y-%m";
+       public final  static String DAY_FORMAT_OF_MYSQL = "%Y-%m-%d";
+       public final  static String HOUR_FORMAT_OF_MYSQL = "%Y-%m-%d/%H";
+       public final  static String MINUTE_FORMAT_OF_MYSQL = "%Y-%m-%d/%H:%i";
        public static String toMySqlTimeFormat(TimeUnits timeUnits){
            switch (timeUnits){
-               case YEAR: return "%Y";
-               case MONTH: return "%Y-%m";
-               case DAY: return "%Y-%m-%d";
-               case HOUR: return "%Y-%m-%d/%H";
-               case MINUTE:return "%Y-%m-%d/%H:%i";
+               case YEAR: return YEAR_FORMAT_OF_MYSQL;
+               case MONTH: return MONTH_FORMAT_OF_MYSQL;
+               case DAY: return DAY_FORMAT_OF_MYSQL;
+               case HOUR: return HOUR_FORMAT_OF_MYSQL;
+               case MINUTE:return MINUTE_FORMAT_OF_MYSQL;
            }
            return "%Y-%m-%d%H:%i:%s";
        }
@@ -30,6 +41,12 @@
            }
            return "%s";
        }
+
+    /**
+     * ������ ������������������ ������������
+     * @param timePeriod
+     * @return
+     */
        public static List<String> makeTimeList(TimePeriod timePeriod){
            Calendar start = Calendar.getInstance();
            start.setTime(timePeriod.getStartTime());
@@ -39,15 +56,15 @@
            String formatStyle = "";
            int timeUnit = 0;
            switch (timePeriod.getTimeUnits()){
-               case YEAR: formatStyle ="yyyy";
+               case YEAR: formatStyle = YEAR_FORMAT;
                    timeUnit = Calendar.YEAR;break;
-               case MONTH: formatStyle ="yyyy-MM";
+               case MONTH: formatStyle =MONTH_FORMAT;
                    timeUnit = Calendar.MONTH;break;
-               case DAY: formatStyle ="yyyy-MM-dd";
+               case DAY: formatStyle =DAY_FORMAT;
                    timeUnit = Calendar.DAY_OF_YEAR;break;
-               case HOUR: formatStyle ="yyyy-MM-dd/HH";
+               case HOUR: formatStyle =HOUR_FORMAT;
                    timeUnit = Calendar.HOUR;break;
-               case MINUTE: formatStyle ="yyyy-MM-dd/HH:mm";
+               case MINUTE: formatStyle =MINUTE_FORMAT;
                    timeUnit = Calendar.MINUTE;break;
            }
            do{
@@ -58,6 +75,29 @@
            while (start.getTimeInMillis()<end.getTimeInMillis());
            return timeList;
        }
+
+    /**
+     * ������������������
+     * @param date ���������������
+     * @param timeUnits ������������������������������������������
+     * @param amount ������������������������������������
+     * @return
+     */
+     public static Date dateCalc(Date date,TimeUnits timeUnits,Integer amount) {
+         Calendar rightNow = Calendar.getInstance();
+         rightNow.setTime(date);
+         rightNow.add(toCalendarTimeUnit(timeUnits), amount);
+         return rightNow.getTime();
+       }
+     private static int toCalendarTimeUnit(TimeUnits timeUnits) {
+           switch (timeUnits) {
+               case YEAR: return  Calendar.YEAR;
+               case MONTH: return  Calendar.MONTH;
+               case DAY: return  Calendar.DAY_OF_YEAR;
+               case HOUR: return  Calendar.HOUR;
+               default: return  Calendar.MINUTE;
+           }
+     }
      /**"yyyy-MM-dd hh:mm:ss"
      * ������������date���������������������������������������������
      * @param date
diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 85ca2b6..48888a9 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -126,7 +126,7 @@
 			Object orgId = resultMap.get("orgId");
 			if(resultMap.get("orgId")!=null && resultMap.get("orgId") instanceof Integer) {
                 StringBuilder areaNamesBuilder = new StringBuilder("������");
-                if((Integer) orgId != dictionaryDataService.querySupperOrgId()) {
+                if(!((Integer) orgId).equals(dictionaryDataService.querySupperOrgId())) {
                     Organization organization = organizationService.getOrganizationById((Integer) orgId);
                     if(organization.getAreaNames()!=null){
                         AreaNames areaNames =  organization.getAreaNames();
@@ -673,4 +673,29 @@
 		MonitorPoint monitorPoint = monitorPointService.queryMonitorPointById(monitorPointId);
 		return new ResultBean<>(monitorPoint);
 	}
+	@Resource
+	HangzhouAqiService hangzhouAqiService;
+	@GetMapping("aqi24hours")
+	@ApiOperation(value = "������24������aqi������", notes = "������24������������aqi������")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "orgid",defaultValue = "5",value = "������id", required = true, paramType = "query", dataType = "Integer"),
+	})
+	public ResultBean<List<Map>> getAqi24HoursNC(@RequestParam("orgid") Integer organizationId) {
+		return new ResultBean<>(hangzhouAqiService.queryAqi24Hours(organizationId));
+	}
+	@GetMapping("mpt-dev-summary")
+	@ApiOperation(value = "���������������������������������", notes = "���������������������������������")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "orgid",defaultValue = "5",value = "������id", required = true, paramType = "query", dataType = "Integer"),
+	})
+	public ResultBean<Map> getMptAndDevSummary(@RequestParam("orgid") Integer organizationId){
+		  Map<String,Map> result = new HashMap<>(2);
+          Integer mptCount = monitorPointService.countOfSubOrgs(organizationId);
+          Map monitorPointSummary = new HashMap();
+          monitorPointSummary.put("all",mptCount);
+          Map deviceSummary = deviceService.queryDeviceStateSummary(organizationId);
+		  result.put("monitorPoint",monitorPointSummary);
+		  result.put("device",deviceSummary);
+		  return new ResultBean<>(result);
+	}
 }
diff --git a/src/main/java/com/moral/entity/HangzhouAqi.java b/src/main/java/com/moral/entity/HangzhouAqi.java
new file mode 100644
index 0000000..56c9291
--- /dev/null
+++ b/src/main/java/com/moral/entity/HangzhouAqi.java
@@ -0,0 +1,18 @@
+package com.moral.entity;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class HangzhouAqi {
+    private Date time;
+
+    private Object aqiJson;
+
+    private String cityCode;
+
+    public Date getTime() {
+        return time;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/moral/entity/charts/TimePeriod.java b/src/main/java/com/moral/entity/charts/TimePeriod.java
index aec4a62..44c0a8f 100644
--- a/src/main/java/com/moral/entity/charts/TimePeriod.java
+++ b/src/main/java/com/moral/entity/charts/TimePeriod.java
@@ -6,6 +6,12 @@
 
 @Data
 public class TimePeriod {
+       public TimePeriod (Date startTime,Date endTime,TimeUnits timeUnits)
+       {
+              this.startTime = startTime;
+              this.endTime = endTime;
+              this.timeUnits = timeUnits;
+       }
        private TimeUnits timeUnits;//������������
        private Date startTime;//������������
        private Date endTime;//������������
diff --git a/src/main/java/com/moral/mapper/DictionaryDataMapper.java b/src/main/java/com/moral/mapper/DictionaryDataMapper.java
index 0bb1798..f1720de 100644
--- a/src/main/java/com/moral/mapper/DictionaryDataMapper.java
+++ b/src/main/java/com/moral/mapper/DictionaryDataMapper.java
@@ -6,4 +6,5 @@
 
 public interface DictionaryDataMapper extends BaseMapper<DictionaryData> {
     public  Integer selectSupperOrgId();
+    public  boolean isSupperOrgId(Integer orgId);
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/HangzhouAqiMapper.java b/src/main/java/com/moral/mapper/HangzhouAqiMapper.java
new file mode 100644
index 0000000..e4e263c
--- /dev/null
+++ b/src/main/java/com/moral/mapper/HangzhouAqiMapper.java
@@ -0,0 +1,14 @@
+package com.moral.mapper;
+
+import com.moral.common.mapper.BaseMapper;
+import com.moral.entity.HangzhouAqi;
+import com.moral.entity.charts.TimePeriod;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+public interface HangzhouAqiMapper extends BaseMapper<HangzhouAqi> {
+    public List<Map> selectAqisByCodeAndTimePeriod(@Param("code")String code,@Param("timePeriod") TimePeriod timePeriod);
+}
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/OrganizationMapper.java b/src/main/java/com/moral/mapper/OrganizationMapper.java
index 0bf3158..56c73bb 100644
--- a/src/main/java/com/moral/mapper/OrganizationMapper.java
+++ b/src/main/java/com/moral/mapper/OrganizationMapper.java
@@ -10,5 +10,11 @@
 public interface OrganizationMapper extends BaseMapper<Organization> {
 	List<Organization> selectWithAreaNameByExample(Example example);
 	List<Organization> getOrganizationsByAreaName(Map<String, Object> parameters);
+
+	/**
+	 * ���������������������������������id���������id���������0
+	 * @param orgId
+	 * @return
+	 */
 	List<Integer> selectLowerOrgIds(Integer orgId);
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/DeviceService.java b/src/main/java/com/moral/service/DeviceService.java
index e76912f..9f29d35 100644
--- a/src/main/java/com/moral/service/DeviceService.java
+++ b/src/main/java/com/moral/service/DeviceService.java
@@ -44,4 +44,6 @@
 	List<Device> getDevicesByProfessionId(Map<String, Object> parameters);
 
 	List<Device> getDevicesByOrganizationId(Map<String, Object> parameters);
+
+    Map<String,Long> queryDeviceStateSummary(Integer orgId);
 }
diff --git a/src/main/java/com/moral/service/HangzhouAqiService.java b/src/main/java/com/moral/service/HangzhouAqiService.java
new file mode 100644
index 0000000..2138803
--- /dev/null
+++ b/src/main/java/com/moral/service/HangzhouAqiService.java
@@ -0,0 +1,14 @@
+package com.moral.service;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Auther: fengxiang
+ * @Date: 2018/8/24 10:30
+ * @Description: ������api������������
+ */
+public interface HangzhouAqiService {
+    public List<Map> queryAqi24Hours(@NotNull Integer orgId);
+}
diff --git a/src/main/java/com/moral/service/MonitorPointService.java b/src/main/java/com/moral/service/MonitorPointService.java
index 4328dc4..ad0afe4 100644
--- a/src/main/java/com/moral/service/MonitorPointService.java
+++ b/src/main/java/com/moral/service/MonitorPointService.java
@@ -23,7 +23,9 @@
 	List<MonitorPoint> getMonitorPointsByName(String name);
     List<Map<String,String>> queryMonitroPointsState(List<Integer> idList);
 
-	List<MonitorPoint> getMonitorPointsByOrganizationId(Integer orgId);
+    Integer countOfSubOrgs(Integer orgId);
+
+    List<MonitorPoint> getMonitorPointsByOrganizationId(Integer orgId);
 
 	List<MonitorPoint> getMonitorPointsByRegion(Map<String, Object> parameters);
 
diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
index 264ed65..345dceb 100644
--- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -4,6 +4,7 @@
 import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
+import javax.validation.constraints.NotNull;
 
 import com.alibaba.fastjson.TypeReference;
 import com.github.pagehelper.Page;
@@ -14,9 +15,7 @@
 import com.moral.common.util.ExampleUtil;
 import com.moral.common.util.RedisUtils;
 import com.moral.entity.DeviceVersion;
-import com.moral.mapper.DeviceVersionMapper;
-import com.moral.mapper.MonitorPointMapper;
-import com.moral.mapper.OrganizationMapper;
+import com.moral.mapper.*;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -28,7 +27,6 @@
 import com.github.pagehelper.PageHelper;
 import com.moral.common.util.ValidateUtil;
 import com.moral.entity.Device;
-import com.moral.mapper.DeviceMapper;
 import com.moral.service.AccountService;
 import com.moral.service.DeviceService;
 import tk.mybatis.mapper.entity.Example;
@@ -64,6 +62,10 @@
 	DeviceVersionMapper deviceVersionMapper;
 	@Resource
 	RedisUtils redisUtils;
+	@Resource
+	OrganizationMapper organizationMapper;
+	@Resource
+	DictionaryDataMapper dictionaryDataMapper;
 	@Override
 	public Map<String, Object> getDeviceStatesByAccount(Map<String, Object> parameters) {
 		ValidateUtil.notNull(parameters.get("accountId"), "param.is.null");
@@ -479,5 +481,34 @@
 		ValidateUtil.notNull(parameters.get("organizationId"), "param.is.null");
 		return deviceMapper.getDevicesByOrganizationId(parameters);
 	}
-
+	@Override
+    public Map<String,Long> queryDeviceStateSummary(@NotNull Integer orgId){
+	    Map<String,Object> params = new HashMap<>();
+	    if(!dictionaryDataMapper.isSupperOrgId(orgId)){
+			List<Integer> orgIds = organizationMapper.selectLowerOrgIds(orgId);
+			params.put("orgIds",orgIds);
+		}
+		List<Map<String, Object>> list = deviceMapper.getDeviceStatesByAccount(params);
+		Long all = 0L, normal = 0L, abnormal = 0L, stop = 0L;
+		for (Map<String, Object> map : list) {
+			Long count = (Long) map.get("count");
+			all += count;
+			switch (Integer.valueOf((String) map.get("state"))) {
+				case 0:
+					normal = count;
+					break;
+				case 4:
+					stop = count;
+					break;
+				default:
+					abnormal += count;
+			}
+		}
+		Map<String,Long> result = new HashMap<>();
+		result.put("all", all);
+		result.put("normal", normal);
+		result.put("abnormal", abnormal);
+		result.put("stop", stop);
+		return result;
+	}
 }
diff --git a/src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java b/src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java
new file mode 100644
index 0000000..1e2b781
--- /dev/null
+++ b/src/main/java/com/moral/service/impl/HangzhouAqiServiceImpl.java
@@ -0,0 +1,79 @@
+package com.moral.service.impl;
+
+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.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * @Auther: fengxiang
+ * @Date: 2018/8/24 10:32
+ * @Description:������api���������������
+ */
+@Service
+public class HangzhouAqiServiceImpl implements HangzhouAqiService{
+    @Resource
+    private OrganizationMapper organizationMapper;
+    @Resource
+    private HangzhouAqiMapper hangzhouAqiMapper;
+    /**
+     * ������������id������������24������������aqi������
+     * @param orgId
+     * @return ���������������24���������������������������������������0
+     */
+    @Override
+    public List<Map> queryAqi24Hours(Integer orgId){
+        return  queryAqi24Hours(orgId,false);
+    }
+    private List<Map> queryAqi24Hours(Integer orgId,boolean isGetCity) {
+        List<Map> aqi24HoursValues = new ArrayList<>(24);
+        Date start = ReportTimeFormat.dateCalc(new Date(), TimeUnits.HOUR,-24);
+        Date end = new Date();
+        TimePeriod timePeriod = new TimePeriod(start,end,TimeUnits.HOUR);
+        Integer code = getCode(orgId,isGetCity);
+        if(code == null) {
+            throw new BusinessException("citeCode or areaCode is null;");
+        }
+        List<Map> aqis = hangzhouAqiMapper.selectAqisByCodeAndTimePeriod(code.toString(),timePeriod);
+        List<String> timeList = ReportTimeFormat.makeTimeList(timePeriod);
+        if(aqis!=null && aqis.size()==0 && !isGetCity) {
+              return queryAqi24Hours(orgId,true);
+        }
+        int mTemp = 0;
+        for(int n =0;n<timeList.size();n++) {
+             String time = timeList.get(n);
+             Object aqiValue = null;
+             for(int m =mTemp;m<aqis.size();m++) {
+                 Map<String,Object> rowData = aqis.get(m);
+                 Object dbTime = rowData.get("time");
+                 if(time.equals(dbTime)){
+                     mTemp = m+1;
+                     aqiValue = rowData.get("aqi");
+                 }
+             }
+            Map<String,Object> aqiItem = new HashMap<>();
+            aqiItem.put("time",time);
+            aqiValue = aqiValue!=null?Float.valueOf(aqiValue.toString().replace("\"","")):null;
+            aqiItem.put("aqi",aqiValue);
+            aqi24HoursValues.add(aqiItem);
+        }
+        return aqi24HoursValues;
+    }
+    private Integer getCode(Integer orgId,boolean isGetCityCode)
+    {
+        Organization org = organizationMapper.selectByPrimaryKey(orgId);
+        if(isGetCityCode) {
+            return org.getCityCode();
+        }else{
+            return org.getAreaCode()!=null? org.getAreaCode() : org.getCityCode();
+        }
+    }
+}
diff --git a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
index 78c626f..e79b10e 100644
--- a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
@@ -8,6 +8,8 @@
 import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
+import javax.validation.constraints.NotNull;
+
 import com.moral.mapper.DictionaryDataMapper;
 import com.moral.mapper.OrganizationMapper;
 import org.apache.commons.collections.CollectionUtils;
@@ -83,13 +85,6 @@
     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);
-        }
         PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
         List<MonitorPoint> monitorPointList = monitorPointMapper.selectWithAreaNameByExample(example);
         return new PageBean(monitorPointList);
@@ -214,6 +209,21 @@
         return list;
     }
 
+    /**
+     * ������������������������������������
+     * @param orgId
+     * @return
+     */
+    @Override
+    public Integer countOfSubOrgs(@NotNull  Integer orgId){
+        Example example = new Example(ENTITY_CLASS);
+        //���������������������������
+        if(!dictionaryDataMapper.isSupperOrgId(orgId)){
+            List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
+            example.or().andIn("organizationId",orgIds);
+        }
+        return monitorPointMapper.selectCountByExample(example);
+    }
     @Override
 	public List<MonitorPoint> getMonitorPointsByOrganizationId(Integer orgId) {
 		Example example = new Example(MonitorPoint.class);
diff --git a/src/main/resources/mapper/DictionaryDataMapper.xml b/src/main/resources/mapper/DictionaryDataMapper.xml
index 67efb58..9e18298 100644
--- a/src/main/resources/mapper/DictionaryDataMapper.xml
+++ b/src/main/resources/mapper/DictionaryDataMapper.xml
@@ -16,8 +16,12 @@
     id, dict_id, dict_data_key, dict_data_name, dict_data_value, is_fixed, is_delete, 
     parent_id, description
   </sql>
-  <select id="selectSupperOrgId" parameterType="java.lang.String" resultType="java.lang.Integer">
+  <select id="selectSupperOrgId"  resultType="java.lang.Integer">
     select dict_data_value from dictionary_data
     where dict_data_key = 'auth_config_super_org'
   </select>
+  <select id="isSupperOrgId"  resultType="java.lang.Boolean">
+    select count(*) from dictionary_data
+    where dict_data_key = 'auth_config_super_org' and dict_data_value = #{orgId,jdbcType=INTEGER}
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/HangzhouAqiMapper.xml b/src/main/resources/mapper/HangzhouAqiMapper.xml
new file mode 100644
index 0000000..75d5c97
--- /dev/null
+++ b/src/main/resources/mapper/HangzhouAqiMapper.xml
@@ -0,0 +1,35 @@
+<?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.HangzhouAqiMapper" >
+  <resultMap id="BaseResultMap" type="com.moral.entity.HangzhouAqi" >
+    <id column="time" property="time" jdbcType="TIMESTAMP" />
+    <result column="aqi_json" property="aqiJson" jdbcType="OTHER" />
+    <result column="city_code" property="cityCode" jdbcType="VARCHAR" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    time, aqi_json, city_code
+  </sql>
+  <!--<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.util.Date" >-->
+    <!--select-->
+    <!--<include refid="Base_Column_List" />-->
+    <!--from hangzhou_aqi-->
+    <!--where time = #{time,jdbcType=TIMESTAMP}-->
+  <!--</select>-->
+    <select id="selectAqisByCodeAndTimePeriod" resultType="map" parameterType="java.util.Date" >
+      select
+        aqi_json->'$.AQI' as aqi,DATE_FORMAT(time,'${@com.moral.common.util.ReportTimeFormat@toMySqlTimeFormat(timePeriod.timeUnits)}') as 'time'
+      from hangzhou_aqi
+       where
+          (
+          time >= #{timePeriod.startTime}
+          and time <![CDATA[<=]]> #{timePeriod.endTime}
+          )
+          and
+          (
+             city_code = #{code}
+             or
+             aqi_json->'$.city_code' = #{code}
+          )
+          order by time asc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml
index 1509a27..d9c4cd8 100644
--- a/src/main/resources/mapper/HistoryMinutelyMapper.xml
+++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -31,7 +31,7 @@
 		AND time &lt; #{end}
 	</select>
 	
-	<select id="getMonitorPointOrDeviceAvgData" resultType="java.util.LinkedHashMap">
+	<select id="getMonitorPointOrDeviceAvgData" resultType="java.util.Map">
 		SELECT
 			DATE_FORMAT(time, #{typeFormat}) time
 			<foreach  collection="sensorKeys" open="," separator="," item="sensorKey">

--
Gitblit v1.8.0