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