From 0e65824734f68f4c18370204a8c574b4514939b6 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Tue, 12 Dec 2023 17:13:56 +0800 Subject: [PATCH] chore:热力图接口提交 --- screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java | 87 ++++++++++++++++++++++++++++ screen-api/src/main/java/com/moral/api/service/DataDisplayService.java | 5 + screen-api/src/main/java/com/moral/api/controller/HeatMapController.java | 49 ++++++++++++++++ screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java | 4 + 4 files changed, 144 insertions(+), 1 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/controller/HeatMapController.java b/screen-api/src/main/java/com/moral/api/controller/HeatMapController.java new file mode 100644 index 0000000..07de00c --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/controller/HeatMapController.java @@ -0,0 +1,49 @@ +package com.moral.api.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; +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.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import com.moral.api.service.DataDisplayService; +import com.moral.constant.ResultMessage; + +/** + * Description //todo + * + * @author swb + * @ClassName HeatMapController + * @date 2023.12.11 15:20 + */ +@Slf4j +@Api(tags = {"���������������"}) +@RestController +@RequestMapping("/heatMap") +public class HeatMapController { + + + @Autowired + private DataDisplayService dataDisplayService; + + + @GetMapping("query") + @ApiOperation("���������������") + public ResultMessage getHeatMap(@RequestParam @ApiParam(value = "code",name = "���������") String code, + @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); + return ResultMessage.ok(ObjectUtils.isEmpty(heatMapData)?"0":heatMapData); + } +} diff --git a/screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java b/screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java index 025f615..c25f0a9 100644 --- a/screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java +++ b/screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java @@ -1,5 +1,6 @@ package com.moral.api.mapper; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -37,4 +38,7 @@ List<AppDeviceVo> getDevices(@Param("mac") String mac,@Param("organizationId") Integer organizationId); + + List<Map<String, Object>> getHeatMap(HashMap<String,Object> params); + } diff --git a/screen-api/src/main/java/com/moral/api/service/DataDisplayService.java b/screen-api/src/main/java/com/moral/api/service/DataDisplayService.java index feb92a1..351105a 100644 --- a/screen-api/src/main/java/com/moral/api/service/DataDisplayService.java +++ b/screen-api/src/main/java/com/moral/api/service/DataDisplayService.java @@ -6,6 +6,8 @@ import com.moral.api.pojo.form.dataDisplay.SensorComparisonDisplayForm; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -44,4 +46,7 @@ * @Date: 2022/09/26 */ List<SensorComparisonDisplayDTO> getSensorComparisonDisplayDataV2(Map<String, Object> params); + + + ArrayList<Map<String, Object>> getHeatMapData(String code, String startTime, String type, String form); } diff --git a/screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java index b710fdc..f52c8b8 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java @@ -1,25 +1,33 @@ package com.moral.api.service.impl; 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.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; import org.springframework.util.ObjectUtils; import java.util.*; +import java.util.stream.Collectors; -import static com.moral.util.DateUtils.dateToDateString; /** * @ClassName DataDisplayServiceImpl @@ -29,6 +37,7 @@ * @Version TODO **/ @Service +@Slf4j public class DataDisplayServiceImpl implements DataDisplayService { @Autowired @@ -43,6 +52,8 @@ HistoryWeeklyService historyWeeklyService; @Autowired HistoryMonthlyService historyMonthlyService; + @Autowired + OrganizationMapper organizationMapper; @Autowired DeviceMapper deviceMapper; @@ -384,6 +395,80 @@ } /** + * ��������� + * @param code + * @param startTime + * @param type + * @return + */ + @Override + public ArrayList<Map<String, Object>> getHeatMapData(String code, String startTime, String type,String form) { + HashMap<String, Object> map = new HashMap<>(); + map.put("start",startTime); + map.put("type","$."+ type); + map.put("sensorCode","count"); + map.put("regionCode",null); + map.put("region",null); + + //������������������ + Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfo(); + Map<String, Object> orgInfo = (Map<String, Object>) userInfo.get("organization"); + Integer organizationId = (Integer) orgInfo.get("id"); + //��������� + ArrayList<Integer> list = new ArrayList<>(); + if (organizationId==24){ + LambdaQueryWrapper<Organization> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Organization::getIsDelete,Constants.NOT_DELETE); + wrapper.eq(Organization::getCityCode,code); + List<Organization> organizations = organizationMapper.selectList(wrapper); + List<Integer> collect = organizations.stream().map(organization -> organization.getId()).collect(Collectors.toList()); + list.addAll(collect); + }else { + list.add(organizationId); + } + + 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); + List<String> tableNames = MybatisPLUSUtils.getTableNamesByWrapper(date1, date1, SeparateTableType.MONTH); +// 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); + 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); + 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); + } + } + log.info(filteredList.size()+""); + return filteredList; + } + + /** * @Description: ������������������������ * @Param: [timeValueMap, reportType] * @return: java.util.Map<java.lang.String , java.lang.String> -- Gitblit v1.8.0