From e51e2d053b498e236097bcb4012c8446d672be86 Mon Sep 17 00:00:00 2001 From: ZhuDongming <773644075@qq.com> Date: Tue, 19 May 2020 16:35:46 +0800 Subject: [PATCH] 设备版本添加大屏界面控制 --- src/main/java/com/moral/controller/OrganizationLayoutController.java | 21 ++- src/main/resources/mapper/DeviceVersionMapper.xml | 4 src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java | 23 +++- src/main/resources/mapper/HistoryMinutelyMapper.xml | 143 ++++++++++++++-------------- src/main/java/com/moral/service/impl/HistoryServiceImpl.java | 14 +- src/main/resources/mapper/HistoryMapper.xml | 32 +++--- src/main/resources/mapper/HistoryHourlyMapper.xml | 32 +++--- 7 files changed, 140 insertions(+), 129 deletions(-) diff --git a/src/main/java/com/moral/controller/OrganizationLayoutController.java b/src/main/java/com/moral/controller/OrganizationLayoutController.java index 7500c98..60993a9 100644 --- a/src/main/java/com/moral/controller/OrganizationLayoutController.java +++ b/src/main/java/com/moral/controller/OrganizationLayoutController.java @@ -1,22 +1,27 @@ package com.moral.controller; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import javax.annotation.Resource; + import com.moral.common.bean.ResultBean; import com.moral.entity.DeviceVersion; -import com.moral.entity.Sensor; import com.moral.entity.layout.RealTimeDeviceLayout; import com.moral.entity.layout.RtdLayoutUpload; import com.moral.entity.layout.SensorComb; import com.moral.service.DeviceVersionService; import com.moral.service.OrganizationLayoutService; import com.moral.service.SensorService; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("org-layout") diff --git a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java index 8622a40..0de5639 100644 --- a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java +++ b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java @@ -23,10 +23,6 @@ import javax.annotation.Resource; -import org.apache.commons.collections.CollectionUtils; -import org.springframework.stereotype.Service; -import org.springframework.util.ObjectUtils; - import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.googlecode.aviator.AviatorEvaluator; @@ -46,6 +42,10 @@ import com.moral.service.HistoryService; import com.moral.service.ProfessionService; import com.moral.util.AQICalculation; + +import org.apache.commons.collections.CollectionUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; @Service public class HistoryServiceImpl implements HistoryService { @@ -485,6 +485,8 @@ String startTime = parameters.get("startTime").toString(); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime startTimeLocalDateTime = LocalDateTime.parse(startTime, dateTimeFormatter); + LocalDateTime today = LocalDateTime.now().truncatedTo(ChronoUnit.DAYS); + LocalDateTime startTimeDay = startTimeLocalDateTime.truncatedTo(ChronoUnit.DAYS); int year = startTimeLocalDateTime.getYear(); int month = startTimeLocalDateTime.getMonthValue(); String monthStr = month < 10 ? ("0" + month) : month + ""; @@ -496,7 +498,9 @@ } parameters.put("sensorKeys", sensorKeys); List<Map<String, Object>> listMap = null; - listMap = historyMapper.listGetSensorData(parameters); + if (today.compareTo(startTimeDay) == 0) { + listMap = historyMapper.listGetSensorData(parameters); + } if (CollectionUtils.isEmpty(listMap)) { listMap = historyMapper.getCarSensorData(parameters); if (CollectionUtils.isEmpty(listMap)) { diff --git a/src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java index dea8ca8..d4814ad 100644 --- a/src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java +++ b/src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java @@ -1,8 +1,19 @@ package com.moral.service.impl; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import javax.annotation.Resource; + import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; -import com.moral.entity.*; +import com.moral.entity.DictionaryData; +import com.moral.entity.OrganizationLayout; +import com.moral.entity.OrganizationSensorUnit; +import com.moral.entity.Sensor; +import com.moral.entity.SensorUnit; import com.moral.entity.layout.RealTimeDeviceLayout; import com.moral.entity.layout.RtdLayoutUpload; import com.moral.entity.layout.SensorComb; @@ -11,15 +22,10 @@ import com.moral.mapper.OrganizationSensorUnitMapper; import com.moral.mapper.SensorMapper; import com.moral.service.OrganizationLayoutService; + import org.springframework.data.annotation.Transient; import org.springframework.stereotype.Service; import tk.mybatis.mapper.entity.Example; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; @Service public class OrganizationLayoutServiceImpl implements OrganizationLayoutService{ @@ -215,7 +221,8 @@ public RealTimeDeviceLayout queryRtdLayoutWithUnit(Integer orgId, Integer versionNo) { String pageType = getPageType(versionNo); if(queryPageConfigCountByOrgId(orgId,pageType) == 0 ){ - orgId = dataMapper.selectSupperOrgId(); + // orgId = dataMapper.selectSupperOrgId(); + orgId = 0; } RealTimeDeviceLayout rtdLayout = queryRealTimeDeviceLayout(orgId,versionNo); loadUnitToComb(orgId,rtdLayout); diff --git a/src/main/resources/mapper/DeviceVersionMapper.xml b/src/main/resources/mapper/DeviceVersionMapper.xml index b8d7606..05ece87 100644 --- a/src/main/resources/mapper/DeviceVersionMapper.xml +++ b/src/main/resources/mapper/DeviceVersionMapper.xml @@ -24,10 +24,6 @@ ( SELECT id FROM monitor_point mpt WHERE mpt.organization_id = #{orgId,jdbcType=INTEGER} - or EXISTS ( - SELECT * from dictionary_data where dict_data_key = 'auth_config_super_org' and dict_data_value = #{orgId,jdbcType=INTEGER} - ) - ) ) order by dvn.create_time desc diff --git a/src/main/resources/mapper/HistoryHourlyMapper.xml b/src/main/resources/mapper/HistoryHourlyMapper.xml index ba3c970..5f6a59c 100644 --- a/src/main/resources/mapper/HistoryHourlyMapper.xml +++ b/src/main/resources/mapper/HistoryHourlyMapper.xml @@ -10,10 +10,10 @@ history_hourly <where> <if test="mac!=null"> - AND mac=#{mac} + AND mac = #{mac} </if> <if test="time!=null"> - AND time= DATE_SUB(#{time}, INTERVAL 1 HOUR) + AND time = DATE_SUB(#{time}, INTERVAL 1 HOUR) </if> </where> </select> @@ -26,30 +26,30 @@ </foreach> FROM <if test="mac!=null and time!=null"> - (select mac,value,time,version from history - where mac=#{mac} and time BETWEEN DATE_SUB(#{time}, INTERVAL 1 HOUR) and #{time}) h + (select mac,value,time,version from history + where mac = #{mac} and time BETWEEN DATE_SUB(#{time}, INTERVAL 1 HOUR) and #{time}) h </if> GROUP BY DATE_FORMAT(time,'%Y-%m-%d %H') <if test="time!=null"> - having time=DATE_FORMAT(DATE_SUB(#{time}, INTERVAL 1 HOUR),'%Y-%m-%d %H') + having time = DATE_FORMAT(DATE_SUB(#{time}, INTERVAL 1 HOUR),'%Y-%m-%d %H') </if> </select> <select id="getPollutionSourceDataAll" resultType="java.util.Map"> - SELECT - DATE_FORMAT(time,'%Y-%m-%d %H') time, - <foreach collection="sensorKeys" separator="," item="sensorKey"> - AVG(h.value ->'$.${sensorKey}') AS '${sensorKey}' - </foreach> - FROM + SELECT + DATE_FORMAT(time,'%Y-%m-%d %H') time, + <foreach collection="sensorKeys" separator="," item="sensorKey"> + AVG(h.value ->'$.${sensorKey}') AS '${sensorKey}' + </foreach> + FROM <if test="mac!=null"> (select mac,value,time,version from history - where mac=#{mac} and time BETWEEN DATE_SUB(#{time}, INTERVAL 1 DAY) and #{time}) h + where mac = #{mac} and time BETWEEN DATE_SUB(#{time}, INTERVAL 1 DAY) and #{time}) h </if> - GROUP BY - DATE_FORMAT(time,'%Y-%m-%d %H') - order by time desc - limit 0,1 + GROUP BY + DATE_FORMAT(time,'%Y-%m-%d %H') + order by time desc + limit 0,1 </select> </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/HistoryMapper.xml b/src/main/resources/mapper/HistoryMapper.xml index 2a7dfb0..a9ce061 100644 --- a/src/main/resources/mapper/HistoryMapper.xml +++ b/src/main/resources/mapper/HistoryMapper.xml @@ -183,7 +183,7 @@ history h <where> <if test="mac!=null"> - and h.mac=#{mac} + and h.mac = #{mac} </if> and h.time >= #{startTime} and h.time <![CDATA[<=]]> #{endTime} @@ -193,21 +193,21 @@ 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 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> - + <select id="getMonitorPointAVGValueByMonitorPointIdAndTimeslot" resultType="java.util.Map"> SELECT AVG(JSON_EXTRACT(value,'$.e1[0]')) e1,AVG(JSON_EXTRACT(value,'$.e2[0]')) e2,AVG(JSON_EXTRACT(value,'$.e10[0]')) e10,AVG(JSON_EXTRACT(value,'$.e11[0]')) e11,AVG(JSON_EXTRACT(value,'$.e16[0]')) e16,AVG(JSON_EXTRACT(value,'$.e15[0]')) e15 FROM device d,history h @@ -227,7 +227,7 @@ history_special as h <where> <if test="mac!=null"> - and h.mac=#{mac} + and h.mac = #{mac} </if> and h.time >= #{startTime} and h.time <![CDATA[<]]> #{endTime} @@ -246,7 +246,7 @@ history as h <where> <if test="mac!=null"> - and h.mac=#{mac} + and h.mac = #{mac} </if> and h.time >= #{startTime} and h.time <![CDATA[<]]> #{endTime} diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml index c202150..ac1e709 100644 --- a/src/main/resources/mapper/HistoryMinutelyMapper.xml +++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml @@ -8,8 +8,8 @@ <select id="getSersionAvgByDevice" resultType="java.util.Map"> SELECT <foreach collection="sensorKeys" separator="," item="sensorKey"> - AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}' - </foreach> + AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}' + </foreach> FROM history_minutely_${yearAndMonth} WHERE @@ -21,11 +21,11 @@ WHERE d.is_delete = 0 <if test="monitorPointId != null"> - AND d.monitor_point_id = #{monitorPointId} - </if> + AND d.monitor_point_id = #{monitorPointId} + </if> <if test="mac != null"> - AND d.mac = #{mac} - </if> + AND d.mac = #{mac} + </if> ) AND time >= #{start} AND time < #{end} @@ -34,8 +34,8 @@ <select id="getAvgByDevice" resultType="java.util.Map"> SELECT <foreach collection="sensorKeys" separator="," item="sensorKey"> - AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}' - </foreach> + AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}' + </foreach> FROM history_daily WHERE @@ -47,11 +47,11 @@ WHERE d.is_delete = 0 <if test="monitorPointId != null"> - AND d.monitor_point_id = #{monitorPointId} - </if> + AND d.monitor_point_id = #{monitorPointId} + </if> <if test="mac != null"> - AND d.mac = #{mac} - </if> + AND d.mac = #{mac} + </if> ) AND time >= #{start} AND time < #{end} @@ -61,16 +61,16 @@ SELECT DATE_FORMAT(time, #{typeFormat}) time <foreach collection="sensorKeys" open="," separator="," item="sensorKey"> - AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}' - </foreach> + AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}' + </foreach> FROM history_${timeUnits} h WHERE h.time >= #{start} AND h.time <![CDATA[<]]> #{end} <if test="mac != null"> - AND h.mac = #{mac} - </if> + AND h.mac = #{mac} + </if> <if test="mac == null"> AND h.mac IN (SELECT @@ -81,20 +81,20 @@ WHERE d.monitor_point_id = mp.id <if test="provinceCode != null"> - AND mp.province_code = #{provinceCode} - </if> + AND mp.province_code = #{provinceCode} + </if> <if test="cityCode != null"> - AND mp.city_code = #{cityCode} - </if> + AND mp.city_code = #{cityCode} + </if> <if test="areaCode != null"> - AND mp.area_code = #{areaCode} - </if> + AND mp.area_code = #{areaCode} + </if> <if test="monitorPointId != null"> - AND mp.id = #{monitorPointId} - </if> + AND mp.id = #{monitorPointId} + </if> <if test="professionId != null"> - AND d.profession_id = #{professionId} - </if> + AND d.profession_id = #{professionId} + </if> ) </if> @@ -110,14 +110,14 @@ <when test="'MINUTE'==dataCondition.timeUnits.toString() and 'DEVICE'==dataCondition.areaRange.toString()"> <foreach collection="sensorKeys" item="sensorKey" separator="," close=","> - json->'$.${sensorKey}[0]' as '${sensorKey}' - </foreach> + json->'$.${sensorKey}[0]' as '${sensorKey}' + </foreach> </when> <otherwise> <foreach collection="sensorKeys" item="sensorKey" separator="," close=","> - AVG(json->'$.${sensorKey}[0]') as '${sensorKey}' - </foreach> + AVG(json->'$.${sensorKey}[0]') as '${sensorKey}' + </foreach> </otherwise> </choose> DATE_FORMAT(time,'${@com.moral.common.util.ReportTimeFormat@toMySqlTimeFormat(timePeriod.timeUnits)}') as @@ -128,38 +128,38 @@ and hmi.time >= #{timePeriod.startTime} and hmi.time <![CDATA[<=]]> #{timePeriod.endTime} <if test="dataCondition.actualTime != null"> - and DATE_FORMAT(time, - '${@com.moral.common.util.ReportTimeFormat@toMySqlActualTimeFormat(dataCondition.timeUnits)}') = - #{dataCondition.actualTime} - </if> + and DATE_FORMAT(time, + '${@com.moral.common.util.ReportTimeFormat@toMySqlActualTimeFormat(dataCondition.timeUnits)}') = + #{dataCondition.actualTime} + </if> and hmi.mac in ( select mac from device dev join monitor_point mpt on dev.monitor_point_id = mpt.id <where> <if test='"DEVICE"==dataCondition.areaRange.toString()'> - and dev.id = #{dataCondition.areaRangeId} - </if> + and dev.id = #{dataCondition.areaRangeId} + </if> <if test='"PROFESSION"==dataCondition.deviceDimension.toString()'> - and dev.profession_id = #{dataCondition.dimensionValue} - </if> + and dev.profession_id = #{dataCondition.dimensionValue} + </if> <if test='"MONITORPOINT"==dataCondition.areaRange.toString()'> - and mpt.id = #{dataCondition.areaRangeId} - </if> + and mpt.id = #{dataCondition.areaRangeId} + </if> <if test='"PROVINCE"==dataCondition.areaRange.toString()'> - and mpt.province_code = #{dataCondition.areaRangeId} - </if> + and mpt.province_code = #{dataCondition.areaRangeId} + </if> <if test='"CITY"==dataCondition.areaRange.toString()'> - and mpt.city_code = #{dataCondition.areaRangeId} - </if> + and mpt.city_code = #{dataCondition.areaRangeId} + </if> <if test='"AREA"==dataCondition.areaRange.toString()'> - and mpt.area_code = #{dataCondition.areaRangeId} - </if> + and mpt.area_code = #{dataCondition.areaRangeId} + </if> </where> ) </where> <if test="'MINUTE'!=dataCondition.timeUnits.toString() or 'DEVICE'!=dataCondition.areaRange.toString()"> - GROUP BY format_time - </if> + GROUP BY format_time + </if> ORDER BY format_time asc </select> @@ -168,16 +168,16 @@ SELECT DATE_FORMAT(hm.time,'%Y-%m-%d %H:%i:%s') time, <foreach collection="sensorKeys" item="sensorKey" separator=","> - hm.json->'$.${sensorKey}[0]' as '${sensorKey}', - hm.json->'$.${sensorKey}[1]' as 'min${sensorKey}', - hm.json->'$.${sensorKey}[2]' as 'max${sensorKey}' - </foreach> + hm.json->'$.${sensorKey}[0]' as '${sensorKey}', + hm.json->'$.${sensorKey}[1]' as 'min${sensorKey}', + hm.json->'$.${sensorKey}[2]' as 'max${sensorKey}' + </foreach> FROM history_minutely as hm <where> <if test="mac!=null"> - and hm.mac=#{mac} - </if> + and hm.mac = #{mac} + </if> and hm.time >= #{startTime} and hm.time <![CDATA[<]]> #{endTime} </where> @@ -189,16 +189,16 @@ SELECT DATE_FORMAT(hm.time,'%Y-%m-%d %H:%i:%s') time, <foreach collection="sensorKeys" item="sensorKey" separator=","> - hm.json->'$.${sensorKey}[0]' as '${sensorKey}', - hm.json->'$.${sensorKey}[1]' as 'min${sensorKey}', - hm.json->'$.${sensorKey}[2]' as 'max${sensorKey}' - </foreach> + hm.json->'$.${sensorKey}[0]' as '${sensorKey}', + hm.json->'$.${sensorKey}[1]' as 'min${sensorKey}', + hm.json->'$.${sensorKey}[2]' as 'max${sensorKey}' + </foreach> FROM history_minutely_${yearAndMonth} as hm <where> <if test="mac!=null"> - and hm.mac=#{mac} - </if> + and hm.mac = #{mac} + </if> and hm.time >= #{startTime} and hm.time <![CDATA[<]]> #{endTime} </where> @@ -210,28 +210,27 @@ select rs.monitorPointName,rs.name, <foreach collection="timeList" separator="," item="time"> - max(case time when #{time} then rs.${sensorKey} else "" end) as #{time} - </foreach> + max(case time when #{time} then rs.${sensorKey} else "" end) as #{time} + </foreach> from (SELECT m.name as monitorPointName,d.name,DATE_FORMAT(time, #{typeFormat}) time, <foreach collection="sensorKeys" separator="," item="sensorKey"> - AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}' - </foreach> + AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}' + </foreach> FROM history_${timeUnits} h, device d, monitor_point m WHERE - h.mac=d.mac - AND d.monitor_point_id=m.id + h.mac = d.mac + AND d.monitor_point_id = m.id AND h.time >= #{start} AND h.time <![CDATA[<=]]> #{end} AND h.mac in - <foreach collection="macs" open="(" separator="," close=")" - item="mac"> - #{mac} - </foreach> + <foreach collection="macs" open="(" separator="," close=")" item="mac"> + #{mac} + </foreach> GROUP BY h.mac,m.name,d.name,DATE_FORMAT(time, #{typeFormat}) ORDER BY @@ -254,8 +253,8 @@ device d, monitor_point m WHERE - h.mac=d.mac - AND d.monitor_point_id=m.id + h.mac = d.mac + AND d.monitor_point_id = m.id AND h.time >= #{start} AND h.time <![CDATA[<=]]> #{end} AND h.mac in -- Gitblit v1.8.0