screen-api/src/main/java/com/moral/api/controller/HeatMapController.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/HeatMapDTO.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/java/com/moral/api/service/DataDisplayService.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/resources/mapper/DeviceMapper.xml | ●●●●● patch | view | raw | blame | history |
screen-api/src/main/java/com/moral/api/controller/HeatMapController.java
@@ -8,21 +8,17 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import com.moral.api.pojo.dto.dataDisplay.HeatMapDTO; import com.moral.api.service.DataDisplayService; import com.moral.api.vo.HeatMapVo; import com.moral.api.vo.TimeHourVo; @@ -53,7 +49,7 @@ @RequestParam @ApiParam(value = "startTime",name = "开始时间") String startTime, @RequestParam @ApiParam(value = "type",name= "因子类型") String type, @RequestParam @ApiParam(value = "form",name= "时间类型") String form){ ArrayList<Map<String, Object>> heatMapData = dataDisplayService.getHeatMapData(code, startTime, type, form); List<HeatMapDTO> heatMapData = dataDisplayService.getHeatMapData(code, startTime, type, form); return ResultMessage.ok(ObjectUtils.isEmpty(heatMapData)?"0":heatMapData); } @GetMapping("queryTime") @@ -81,8 +77,11 @@ ArrayList<TimeHourVo> timeHourVos = new ArrayList<>(); String[] splitStart = startTime.split("-"); String[] splitEnd = endTime.split("-"); //结束时间月份的天数 int monthDay = DateUtils.getMonthDay(DateUtils.getDate(endTime,DateUtils.yyyy_MM_EN)); LocalDate startDate = LocalDate.of(Integer.parseInt(splitStart[0]), Integer.parseInt(splitStart[1]),1); LocalDate endDate = LocalDate.of(Integer.parseInt(splitEnd[0]), Integer.parseInt(splitEnd[1]),30); LocalDate endDate = LocalDate.of(Integer.parseInt(splitEnd[0]), Integer.parseInt(splitEnd[1]),monthDay); long daysBetween = ChronoUnit.DAYS.between(startDate, endDate); for (int i = 0; i <= daysBetween; i++) { HeatMapVo heatMapVo = new HeatMapVo(); screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java
@@ -6,6 +6,7 @@ import com.moral.api.entity.Device; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.moral.api.pojo.dto.dataDisplay.HeatMapDTO; import com.moral.api.pojo.vo.device.AppDeviceVo; import io.lettuce.core.dynamic.annotation.Param; @@ -39,6 +40,6 @@ List<AppDeviceVo> getDevices(@Param("mac") String mac,@Param("organizationId") Integer organizationId); List<Map<String, Object>> getHeatMap(HashMap<String,Object> params); List<HeatMapDTO> getHeatMap(HashMap<String,Object> params); } screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/HeatMapDTO.java
New file @@ -0,0 +1,56 @@ package com.moral.api.pojo.dto.dataDisplay; import lombok.Data; import org.springframework.util.ObjectUtils; import java.math.BigDecimal; /** * Description //todo * * @author swb * @ClassName HeatMapDTO * @date 2023.12.11 16:11 */ @Data public class HeatMapDTO { /** * 数据时间 */ private String time; /** * 纬度 */ private Double lat; /** * 经度 */ private Double lng; /** * 数据 */ private Double count; private String mac; private String name; public Double getCount(){ Double count = this.count; if (ObjectUtils.isEmpty(count)){ count= 0.0; return count; } return count; } } screen-api/src/main/java/com/moral/api/service/DataDisplayService.java
@@ -1,5 +1,6 @@ package com.moral.api.service; import com.moral.api.pojo.dto.dataDisplay.HeatMapDTO; import com.moral.api.pojo.dto.dataDisplay.MonitorPointDataDisplayDTO; import com.moral.api.pojo.dto.dataDisplay.SensorComparisonDisplayDTO; import com.moral.api.pojo.form.dataDisplay.MonitorPointDataDisplayForm; @@ -48,5 +49,5 @@ List<SensorComparisonDisplayDTO> getSensorComparisonDisplayDataV2(Map<String, Object> params); ArrayList<Map<String, Object>> getHeatMapData(String code, String startTime, String type, String form); List<HeatMapDTO> getHeatMapData(String code, String startTime, String type, String form); } screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java
@@ -3,23 +3,20 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.entity.*; import com.moral.api.mapper.DeviceMapper; import com.moral.api.mapper.HistoryMonthlyMapper; import com.moral.api.mapper.OrganizationMapper; import com.moral.api.pojo.dto.dataDisplay.HeatMapDTO; import com.moral.api.pojo.dto.dataDisplay.MonitorPointDataDisplayDTO; import com.moral.api.pojo.dto.dataDisplay.SensorComparisonDisplayDTO; import com.moral.api.pojo.form.dataDisplay.MonitorPointDataDisplayForm; import com.moral.api.pojo.form.dataDisplay.SensorComparisonDisplayForm; import com.moral.api.service.*; import com.moral.constant.Constants; import com.moral.constant.SeparateTableType; import com.moral.pojo.AQI; import com.moral.util.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -395,14 +392,14 @@ } /** * 热力图 * 热力图显示 * @param code * @param startTime * @param type * @return */ @Override public ArrayList<Map<String, Object>> getHeatMapData(String code, String startTime, String type,String form) { public List<HeatMapDTO> getHeatMapData(String code, String startTime, String type, String form) { HashMap<String, Object> map = new HashMap<>(); map.put("start",startTime); map.put("type","$."+ type); @@ -424,8 +421,8 @@ list.add(organizationId); } ArrayList<Map<String, Object>> rsHeatMap = new ArrayList<>(); // ArrayList<HeatMapDTO> rsHeatMap = new ArrayList<>(); // ArrayList<Map<String, Object>> rsHeatMap = new ArrayList<>(); ArrayList<HeatMapDTO> rsHeatMap = new ArrayList<>(); if (form.equals("hour")){ //小时 Date date1 = DateUtils.getDate(startTime, DateUtils.yyyy_MM_dd_HH_EN); @@ -433,36 +430,44 @@ // for (Integer integer : list) { map.put("organizationIds",list); map.put("tableName",tableNames.get(0)); List<Map<String, Object>> heatMap = deviceMapper.getHeatMap(map); // List<HeatMapDTO> heatMap = deviceMapper.getHeatMap(map); // List<Map<String, Object>> heatMap = deviceMapper.getHeatMap(map); List<HeatMapDTO> heatMap = deviceMapper.getHeatMap(map); rsHeatMap.addAll(heatMap); // } }else { //天 // for (Integer integer : list) { map.put("organizationIds",list); List<Map<String, Object>> heatMap = deviceMapper.getHeatMap(map); // List<HeatMapDTO> heatMap = deviceMapper.getHeatMap(map); // List<Map<String, Object>> heatMap = deviceMapper.getHeatMap(map); List<HeatMapDTO> heatMap = deviceMapper.getHeatMap(map); rsHeatMap.addAll(heatMap); // } } //除去为空数据 ArrayList<Map<String, Object>> filteredList = new ArrayList<>(); for (Map<String, Object> map1 : rsHeatMap) { boolean hasEmptyValue = false; for (Object value : map1.values()) { if (value == null) { hasEmptyValue = true; break; } } if (!hasEmptyValue) { filteredList.add(map1); return distrinList(rsHeatMap); } /** * 字段去重 * @param responseList * @return */ private List<HeatMapDTO> distrinList(List<HeatMapDTO> responseList){ List<HeatMapDTO> rsMap = new ArrayList<>(); Set<String> keysSet = new HashSet<String>(); for (HeatMapDTO heatMapDTO : responseList) { String keys = String.valueOf(heatMapDTO.getMac()); int beforeSize = keysSet.size(); keysSet.add(keys); int afterSize = keysSet.size(); if(afterSize == beforeSize + 1){ rsMap.add(heatMapDTO); } } log.info(filteredList.size()+""); return filteredList; log.info(responseList.size()+""); log.info(rsMap.size()+""); return rsMap; } /** screen-api/src/main/resources/mapper/DeviceMapper.xml
@@ -210,11 +210,11 @@ </select> <select id="getHeatMap" resultType="java.util.Map"> <select id="getHeatMap" resultType="com.moral.api.pojo.dto.dataDisplay.HeatMapDTO"> SELECT d.mac as mac, d.latitude as lat, d.longitude as lng, d.mac as mac, d.name as name, (hd.value ->> '$.a34002' )+0 as count, hd.time @@ -228,13 +228,13 @@ </foreach> </if> <if test="tableName !=null"> left join history_hourly${tableName} hd on hd.time = #{start} and d.mac = hd.mac RIGHT join history_hourly${tableName} hd on hd.time = #{start} and d.mac = hd.mac </if> <if test="tableName ==null "> left join history_daily hd on hd.time = #{start} and d.mac = hd.mac RIGHT join history_daily hd on hd.time = #{start} and d.mac = hd.mac </if> WHERE d.is_delete = 0 order by hd.mac order by d.mac </select> </mapper>