From 68e750bf109efb0469704e54e48a29649512358c Mon Sep 17 00:00:00 2001 From: cjl <276999030@qq.com> Date: Mon, 18 Dec 2023 13:31:54 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into cjl --- screen-manage/src/main/java/com/moral/api/mapper/DivisorMapper.java | 7 screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java | 3 screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java | 89 ++++ screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java | 24 screen-manage/src/main/java/com/moral/api/controller/DivisorController.java | 100 +++++ screen-api/src/main/java/com/moral/api/service/DataDisplayService.java | 6 screen-api/src/main/java/com/moral/api/controller/HeatMapController.java | 196 ++++++++++ screen-api/src/main/java/com/moral/api/vo/TimeHourVo.java | 22 + screen-manage/src/main/java/com/moral/api/entity/Divisor.java | 58 +++ screen-job/src/main/java/com/moral/api/controller/PubController.java | 12 screen-manage/src/main/java/com/moral/api/service/impl/DivisorServiceImpl.java | 138 +++++++ screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java | 5 screen-api/src/main/java/com/moral/api/vo/HeatMapVo.java | 30 + screen-manage/src/main/java/com/moral/api/service/impl/ResponsibilityUnitServiceImpl.java | 2 screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java | 3 screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java | 3 screen-manage/src/main/java/com/moral/api/service/DivisorService.java | 45 ++ screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java | 13 screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/HeatMapDTO.java | 56 +++ screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java | 31 + screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java | 163 ++++++++ screen-api/src/main/resources/mapper/DeviceMapper.xml | 29 + 22 files changed, 1,011 insertions(+), 24 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..2b149c1 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/controller/HeatMapController.java @@ -0,0 +1,196 @@ +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.apache.commons.collections4.CollectionUtils; +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.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +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; +import com.moral.constant.ResultMessage; +import com.moral.util.DateUtils; + +/** + * 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){ + List<HeatMapDTO> heatMapData = dataDisplayService.getHeatMapData(code, startTime, type, form); + return ResultMessage.ok(ObjectUtils.isEmpty(heatMapData)?"0":heatMapData); + } + @GetMapping("queryTime") + @ApiOperation("������������") + public ResultMessage getHeatMap(@RequestParam @ApiParam(value = "startTime",name = "������������") String startTime, + @RequestParam @ApiParam(value = "endTime",name= "������������") String endTime, + @RequestParam @ApiParam(value = "type",name= "������������") String type){ + ArrayList<HeatMapVo> heatMapVos = new ArrayList<>(); + if (type.equals("day")){ + ArrayList<TimeHourVo> timeHourVos = new ArrayList<>(); + String[] splitStart = startTime.split("-"); + String[] splitEnd = endTime.split("-"); + LocalDate startDate = LocalDate.of(Integer.parseInt(splitStart[0]), Integer.parseInt(splitStart[1]), Integer.parseInt(splitStart[2])); + LocalDate endDate = LocalDate.of(Integer.parseInt(splitEnd[0]), Integer.parseInt(splitEnd[1]), Integer.parseInt(splitEnd[2])); + long daysBetween = ChronoUnit.DAYS.between(startDate, endDate); + for (int i = 0; i <= daysBetween; i++) { + HeatMapVo heatMapVo = new HeatMapVo(); + LocalDate date = startDate.plusDays(i); + heatMapVo.setId(i); + heatMapVo.setName(date.toString()); + heatMapVo.setHourListTime(timeHourVos); + heatMapVos.add(heatMapVo); + } + }else if (type.equals("month")){ + 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]),monthDay); + long daysBetween = ChronoUnit.DAYS.between(startDate, endDate); + for (int i = 0; i <= daysBetween; i++) { + HeatMapVo heatMapVo = new HeatMapVo(); + LocalDate date = startDate.plusDays(i); + heatMapVo.setId(i); + heatMapVo.setName(date.toString()); + heatMapVo.setHourListTime(timeHourVos); + heatMapVos.add(heatMapVo); + } + }else { + int id = 0; + int idHour = -1; + Date ks = DateUtils.getDate(startTime,"yyyy-MM-dd HH"); + Date js = DateUtils.getDateAddHour(DateUtils.getDate(endTime,"yyyy-MM-dd HH"),1); + String name = DateUtils.dateToDateString(ks,DateUtils.yyyy_MM_dd_EN); + List<TimeHourVo> hourListTime = new ArrayList<>(); + while (DateUtils.isTimeBefor(js,ks)){ + idHour++; + HeatMapVo heatMapVo = new HeatMapVo(); + String nameEndTime = DateUtils.dateToDateString(ks,DateUtils.yyyy_MM_dd_EN); + String time = DateUtils.dateToDateString(ks,"HH"); + String ksTime = DateUtils.dateToDateString(ks,"yyyy-MM-dd HH"); + TimeHourVo hourVo = new TimeHourVo(); + heatMapVo.setName(name); + heatMapVo.setId(id); + if(name.equals(nameEndTime)){ + heatMapVo.setId(id); + heatMapVo.setName(name); + hourVo.setName(time); + hourVo.setId(idHour); + hourListTime.add(hourVo); + if(ksTime.equals(endTime)){ + heatMapVo.setHourListTime(hourListTime); + heatMapVos.add(heatMapVo); + idHour++; + break; + } + }else { + id++; + if(ksTime.equals(endTime)){ + heatMapVo.setHourListTime(hourListTime); + heatMapVos.add(heatMapVo); + hourListTime = new ArrayList<>(); + hourVo = new TimeHourVo(); + heatMapVo = new HeatMapVo(); + hourVo.setName("00"); + hourVo.setId(idHour++); + hourListTime.add(hourVo); + heatMapVo.setId(id); + heatMapVo.setName(nameEndTime); + heatMapVo.setHourListTime(hourListTime); + heatMapVos.add(heatMapVo); + break; + }else { + name = nameEndTime; + heatMapVo.setHourListTime(hourListTime); + heatMapVos.add(heatMapVo); + hourListTime = new ArrayList<>(); + hourVo.setName(time); + hourVo.setId(idHour); + hourListTime.add(hourVo); + } + } + ks = DateUtils.getDateAddHour(ks,1); + } + if(CollectionUtils.isNotEmpty(heatMapVos)){ + heatMapVos.get(0).setIdLength(idHour); + } + +/* String[] splitStart = startTime.split("-"); + String[] s1 = splitStart[2].split(" "); + String[] splitEnd = endTime.split("-"); + String[] s2 = splitEnd[2].split(" "); + //��������������� + LocalDate startDate = LocalDate.of(Integer.parseInt(splitStart[0]), Integer.parseInt(splitStart[1]),Integer.parseInt(s1[0])); + LocalDate endDate = LocalDate.of(Integer.parseInt(splitEnd[0]), Integer.parseInt(splitEnd[1]),Integer.parseInt(s2[0])); + long daysBetween = ChronoUnit.DAYS.between(startDate, endDate); + //������������ + LocalDateTime startDateTime = LocalDateTime.of(Integer.parseInt(splitStart[0]), Integer.parseInt(splitStart[1]), Integer.parseInt(s1[0]), Integer.parseInt(s1[1]), 0); + LocalDateTime endDateTime = LocalDateTime.of(Integer.parseInt(splitEnd[0]), Integer.parseInt(splitEnd[1]), Integer.parseInt(s2[0]), Integer.parseInt(s2[1]), 0); + List<String> hourList = new ArrayList<>(); + LocalDateTime currentDateTime = startDateTime; + while (currentDateTime.isBefore(endDateTime) || currentDateTime.equals(endDateTime)) { + hourList.add(currentDateTime.toString()); + currentDateTime = currentDateTime.plusHours(1); + } + int length=0; + for (int i = 0; i <= daysBetween; i++) { + ArrayList<TimeHourVo> timeHourVos = new ArrayList<>(); + HeatMapVo heatMapVo = new HeatMapVo(); + LocalDate date = startDate.plusDays(i); + heatMapVo.setId(i); + heatMapVo.setName(date.toString()); + for (int i1 = 0; i1 < hourList.size(); i1++) { + if (hourList.get(i1).contains(date.toString())){ + TimeHourVo hourVo = new TimeHourVo(); + hourVo.setName(hourList.get(i1).substring(11,13)); + hourVo.setId(length); + timeHourVos.add(hourVo); + hourList.remove(i1); + i1--; + length++; + } + } + heatMapVo.setHourListTime(timeHourVos); + heatMapVos.add(heatMapVo); + } + heatMapVos.get(0).setIdLength(length);*/ + } + + return ResultMessage.ok(ObjectUtils.isEmpty(heatMapVos)?"0":heatMapVos); + } + +} 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..2108f67 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,10 +1,12 @@ package com.moral.api.mapper; +import java.util.HashMap; import java.util.List; import java.util.Map; 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; @@ -37,4 +39,7 @@ List<AppDeviceVo> getDevices(@Param("mac") String mac,@Param("organizationId") Integer organizationId); + + List<HeatMapDTO> getHeatMap(HashMap<String,Object> params); + } diff --git a/screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/HeatMapDTO.java b/screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/HeatMapDTO.java new file mode 100644 index 0000000..632f91f --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/HeatMapDTO.java @@ -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; + } + + +} 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..3f0c7db 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 @@ -1,11 +1,14 @@ 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; 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 +47,7 @@ * @Date: 2022/09/26 */ List<SensorComparisonDisplayDTO> getSensorComparisonDisplayDataV2(Map<String, Object> params); + + + List<HeatMapDTO> 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..08b56c9 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,30 @@ 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.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; import org.springframework.util.ObjectUtils; import java.util.*; +import java.util.stream.Collectors; -import static com.moral.util.DateUtils.dateToDateString; /** * @ClassName DataDisplayServiceImpl @@ -29,6 +34,7 @@ * @Version TODO **/ @Service +@Slf4j public class DataDisplayServiceImpl implements DataDisplayService { @Autowired @@ -43,6 +49,8 @@ HistoryWeeklyService historyWeeklyService; @Autowired HistoryMonthlyService historyMonthlyService; + @Autowired + OrganizationMapper organizationMapper; @Autowired DeviceMapper deviceMapper; @@ -384,6 +392,85 @@ } /** + * ��������������� + * @param code + * @param startTime + * @param type + * @return + */ + @Override + 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); + + //������������������ + 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); +// } + } + + 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(responseList.size()+""); + log.info(rsMap.size()+""); + return rsMap; + + + } + + /** * @Description: ������������������������ * @Param: [timeValueMap, reportType] * @return: java.util.Map<java.lang.String , java.lang.String> diff --git a/screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java index 35a9cdd..0cbe0c8 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java @@ -306,7 +306,6 @@ StringBuilder builder = new StringBuilder(); int i = 1; - long timestamp = System.currentTimeMillis(); for (String string : strings) { DustForm dustForm = new DustForm(); ArrayList<Double> doubleArrayList = new ArrayList<>(); @@ -366,8 +365,6 @@ } } } - long timestamp2 = System.currentTimeMillis(); - log.info(timestamp2-timestamp+""); //������ list1.sort(Comparator.comparing(DustForm::getValue).reversed()); rsMap.put("list1",list1); diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java index 8d56568..5494430 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java @@ -307,19 +307,23 @@ } } - String str = new DecimalFormat("#.######").format(Double.parseDouble(result.get("a21005").toString())); + QueryFiveDataByMacVO queryFiveDataByMacVO = new QueryFiveDataByMacVO(); queryFiveDataByMacVO.setName(device.getName()); queryFiveDataByMacVO.setDataTime(datas.get("dataTime").toString()); - queryFiveDataByMacVO.setA34004(result.get("a34004").toString()); - queryFiveDataByMacVO.setA34002(result.get("a34002").toString()); - queryFiveDataByMacVO.setA21026(result.get("a21026").toString()); - queryFiveDataByMacVO.setA21004(result.get("a21004").toString()); - queryFiveDataByMacVO.setA21005(str); - queryFiveDataByMacVO.setA05024(result.get("a05024").toString()); - queryFiveDataByMacVO.setA01008(result.get("a01008").toString()); - queryFiveDataByMacVO.setA01007(result.get("a01007").toString()); - queryFiveDataByMacVO.setA99054(result.get("a99054").toString()); + if (!ObjectUtils.isEmpty(result.get("a21005"))){ + String str = new DecimalFormat("#.######").format(Double.parseDouble(result.get("a21005").toString())); + queryFiveDataByMacVO.setA21005(str); + } +// queryFiveDataByMacVO.setA34004(result.get("a34004").toString()); + queryFiveDataByMacVO.setA34004(ObjectUtils.isEmpty(result.get("a34004"))?null:result.get("a34004").toString()); + queryFiveDataByMacVO.setA34002(ObjectUtils.isEmpty(result.get("a34002"))?null:result.get("a34002").toString()); + queryFiveDataByMacVO.setA21026(ObjectUtils.isEmpty(result.get("a21026"))?null:result.get("a21026").toString()); + queryFiveDataByMacVO.setA21004(ObjectUtils.isEmpty(result.get("a21004"))?null:result.get("a21004").toString()); + queryFiveDataByMacVO.setA05024(ObjectUtils.isEmpty(result.get("a05024"))?null:result.get("a05024").toString()); + queryFiveDataByMacVO.setA01008(ObjectUtils.isEmpty(result.get("a01008"))?null:result.get("a01008").toString()); + queryFiveDataByMacVO.setA01007(ObjectUtils.isEmpty(result.get("a01007"))?null:result.get("a01007").toString()); + queryFiveDataByMacVO.setA99054(ObjectUtils.isEmpty(result.get("a99054"))?null:result.get("a99054").toString()); return queryFiveDataByMacVO; } diff --git a/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java index 2930b9a..44190f4 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java @@ -750,4 +750,35 @@ } + + /** + * + */ + private double getDivisor(String code,double num){ + double rs = 0.0; + if (code.contains("-")){ + String data = code.substring(1); + rs = num - Double.parseDouble(data); + } else if (code.contains("*")){ + String data = code.substring(1); + rs = num * Double.parseDouble(data); + } else if (code.contains("/")){ + String data = code.substring(1); + rs = num / Double.parseDouble(data); + } else if (code.contains(",")){ + String[] split = code.split(","); + for (String s : split) { + String[] split1 = s.split("<"); + double sp1 = Double.parseDouble(split1[0]); + double sp2 = Double.parseDouble(split1[1]); + double sp3 = Double.parseDouble(split1[2]); + if (num>=sp1 && num<=sp2){ + rs = num + sp3; + } + } + }else { + rs = num + Double.parseDouble(code); + } + return rs; + } } diff --git a/screen-api/src/main/java/com/moral/api/vo/HeatMapVo.java b/screen-api/src/main/java/com/moral/api/vo/HeatMapVo.java new file mode 100644 index 0000000..03a540b --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/vo/HeatMapVo.java @@ -0,0 +1,30 @@ +package com.moral.api.vo; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Description //todo + * + * @author swb + * @ClassName HeatMapVo + * @date 2023.12.13 12:44 + */ +@Data +public class HeatMapVo { + + + private Integer id ; + + private String name; + +// private List<Map<String,Object>> hourList; + + private List<TimeHourVo> hourListTime; + + private Integer idLength; +} diff --git a/screen-api/src/main/java/com/moral/api/vo/TimeHourVo.java b/screen-api/src/main/java/com/moral/api/vo/TimeHourVo.java new file mode 100644 index 0000000..207d3b1 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/vo/TimeHourVo.java @@ -0,0 +1,22 @@ +package com.moral.api.vo; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * Description //todo + * + * @author swb + * @ClassName HeatMapVo + * @date 2023.12.13 12:44 + */ +@Data +public class TimeHourVo { + + private String name; + + private Integer id; + +} diff --git a/screen-api/src/main/resources/mapper/DeviceMapper.xml b/screen-api/src/main/resources/mapper/DeviceMapper.xml index 959ae30..3a8f5f1 100644 --- a/screen-api/src/main/resources/mapper/DeviceMapper.xml +++ b/screen-api/src/main/resources/mapper/DeviceMapper.xml @@ -208,4 +208,33 @@ </if> and mac LIKE "%"#{mac}"%" AND is_delete = 0 </select> + + + <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.name as name, + (hd.value ->> '$.a34002' )+0 as count, + hd.time + FROM + device as d + inner JOIN organization o on o.id = d.organization_id and o.is_delete = 0 + <if test="organizationIds != null and organizationIds.size !=0"> + and organization_id in + <foreach collection="organizationIds" item="id" index="index" open="(" close=")" separator=","> + #{id} + </foreach> + </if> + <if test="tableName !=null"> + RIGHT join history_hourly${tableName} hd on hd.time = #{start} and d.mac = hd.mac + </if> + <if test="tableName ==null "> + RIGHT join history_daily hd on hd.time = #{start} and d.mac = hd.mac + </if> + WHERE + d.is_delete = 0 + order by d.mac + </select> </mapper> \ No newline at end of file diff --git a/screen-job/src/main/java/com/moral/api/controller/PubController.java b/screen-job/src/main/java/com/moral/api/controller/PubController.java index 09f93e1..8e734be 100644 --- a/screen-job/src/main/java/com/moral/api/controller/PubController.java +++ b/screen-job/src/main/java/com/moral/api/controller/PubController.java @@ -68,6 +68,18 @@ return new ResultMessage(); } + @GetMapping("dateInsertHistoryHourlyJKAvg") + @ApiOperation(value = "������������", notes = "������������") + public ResultMessage dateInsertHistoryHourlyJKAvg(String start, String end) { + String format = DateUtils.yyyy_MM_dd_HH_mm_EN; +// String start ="2023-11-19 09:00"; +// String end ="2023-11-19 10:00"; +// Date start = DateUtils.getDate(s,format); +// Date end = DateUtils.getDate(s1,format); + historyHourlyService.dateInsertHistoryHourlyJKAvg(start, end); + return new ResultMessage(); + } + @GetMapping("FiveMinutelyTest") @ApiOperation(value = "5������������1", notes = "5������������1") public ResultMessage FiveMinutelyTest(String yz,String mac) { diff --git a/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java b/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java index b65b3d3..a67b9b6 100644 --- a/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java +++ b/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java @@ -46,5 +46,8 @@ //������������������������������ void dateInsertHistoryHourlyAvg(); + //��������������������������������� + void dateInsertHistoryHourlyJKAvg(String start,String end); + } diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java index f0cb4d7..c508bfa 100644 --- a/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java +++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java @@ -18,25 +18,16 @@ import com.moral.constant.SeparateTableType; import com.moral.util.AmendUtils; import com.moral.util.DateUtils; - import com.moral.util.MybatisPLUSUtils; - import lombok.extern.slf4j.Slf4j; -import org.apache.commons.httpclient.HttpClient; -import org.apache.commons.httpclient.methods.PostMethod; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; - import java.io.*; import java.math.BigDecimal; -import java.net.InetAddress; -import java.net.InetSocketAddress; import java.net.Socket; -import java.net.SocketAddress; -import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Supplier; @@ -619,6 +610,160 @@ } + /** + * ��������������������������������� + */ + @Override + public void dateInsertHistoryHourlyJKAvg(String start,String end) { + QueryWrapper<Device> wrapper = new QueryWrapper<>(); + wrapper.select("mac"); + wrapper.eq("organization_id",72); + wrapper.eq("is_delete",Constants.NOT_DELETE); + List<Device> devices = deviceMapper.selectList(wrapper); + ArrayList<String> macs = new ArrayList<>(); + for (Device device : devices) { + macs.add(device.getMac()); + } + //������������������������������ + Map<String, Object> params = new HashMap<>(); + Date startTime=null; + Date endTime=null; + if (!ObjectUtils.isEmpty(start) || !ObjectUtils.isEmpty(end)){ + startTime = DateUtils.getDate(start, DateUtils.yyyy_MM_dd_HH_mm_ss_EN); + endTime = DateUtils.getDate(end, DateUtils.yyyy_MM_dd_HH_mm_ss_EN); + }else { + //������������������yyyy-MM-dd HH:mm + String format = DateUtils.yyyy_MM_dd_HH_EN; + Date now = new Date(); + //������������ + startTime = DateUtils.dataToTimeStampTime(DateUtils.addHours(now, -1), format); + //������������ + endTime = DateUtils.dataToTimeStampTime(now, format); + } + + params.put("start", startTime); + params.put("end", endTime); + params.put("macs",macs); + //������������������������������ + String timeUnits = DateUtils.dateToDateString(startTime, DateUtils.yyyyMM_EN); + params.put("timeUnits", timeUnits); + + //������ + QueryWrapper<Sensor> sensorQueryWrapper = new QueryWrapper<>(); + sensorQueryWrapper.select("code", "lower", "upper").eq("is_delete", Constants.NOT_DELETE); + List<Sensor> sensors = sensorService.list(sensorQueryWrapper); + // ������������������������������������������������������ + List<Map<String, Object>> hourlyData = historyMinutelyMapper.getHistoryMinutelyData(params); + if (ObjectUtils.isEmpty(hourlyData)) { + return; + } + //���mac������ + Map<String, List<Map<String, Object>>> data = hourlyData.parallelStream() + .collect(Collectors.groupingBy(o -> (String) o.get("mac"))); + //��������������������������� + List<Map<String, Object>> insertData = new ArrayList<>(); + data.forEach((key, value) -> { + Map<String, Object> historyHourly = new HashMap<>(); + historyHourly.put("mac", key); + historyHourly.put("time",start); + + Map<String, Object> jsonMap = new HashMap<>(); + Map<String, Object> map = new HashMap<>(); + map.put("data", value); + map.put("type", "hour"); + + for (Sensor sensor : sensors) { + String sensorCode = sensor.getCode(); + + //��������������� + if (sensorCode.equals(Constants.SENSOR_CODE_WIND_DIR)) { + if (sensor.getUpper() != null) { + map.put("windDirUpper", sensor.getUpper()); + } + if (sensor.getLower() != null) { + map.put("windDirLower", sensor.getLower()); + } + } + + //��������������� + if (sensorCode.equals(Constants.SENSOR_CODE_WIND_SPEED)) { + if (sensor.getUpper() != null) { + map.put("windSpeedUpper", sensor.getUpper()); + } + if (sensor.getLower() != null) { + map.put("windSpeedLower", sensor.getLower()); + } + } + } + + //��������������������������� + Map<String, Object> windDirAvg = AmendUtils.getWindDirAvg(map); + if (!ObjectUtils.isEmpty(windDirAvg)) { + jsonMap.putAll(windDirAvg); + } + + //������������������������������������ + sensors.forEach(sensor -> { + String sensorCode = sensor.getCode(); + Double upper = sensor.getUpper(); + Double lower = sensor.getLower(); + AtomicInteger size = new AtomicInteger(); + DoubleStream optionalDouble = value.parallelStream() + .flatMapToDouble(v -> { + Map<String, Object> dataValue = JSONObject.parseObject((String) v.get("value"), Map.class); + Object sensorValue = dataValue.get(sensorCode); + //������������������������ + Object flag = dataValue.get(sensorCode + "-" + Constants.MARKER_BIT_KEY); + if (!Constants.MARKER_BIT_TRUE.equals(flag)) { + return null; + } + + if (ObjectUtils.isEmpty(sensorValue)) { + return null; + } + + //������������������ + if (Constants.SENSOR_CODE_WIND_DIR.equals(sensorCode)) { + return null; + } + + //������������������������������������ + double aDouble = Double.parseDouble(sensorValue.toString()); + if (!ObjectUtils.isEmpty(upper)) { + if (aDouble < upper) { + return null; + } + } + if (!ObjectUtils.isEmpty(lower)) { + if (aDouble > lower) { + return null; + } + } + size.getAndIncrement(); + return DoubleStream.of(aDouble); + }); + OptionalDouble average = optionalDouble.average(); + if (average.isPresent()) { + //��������������������� + double sciCal = AmendUtils.sciCal(average.getAsDouble(), 4); + jsonMap.put(sensorCode, sciCal); + //��������� + if (size.get() >= 45) { + jsonMap.put(sensorCode + "-" + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_TRUE); + } else { + jsonMap.put(sensorCode + "-" + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_FALSE); + } + } + }); + historyHourly.put("version", value.get(0).get("version")); + historyHourly.put("value", JSONObject.toJSONString(jsonMap)); + insertData.add(historyHourly); + }); + //��������������� + historyHourlyMapper.insertHistoryHourlyAvg(insertData,timeUnits); + + } + private String strList(String startTime,String mn,String msg){ String qn = "QN="+ startTime + "001;ST=22;CN=2061;PW=123456;MN="+mn.toUpperCase()+";CP=&&DataTime="+startTime+";"; Map<String, Object> data = JSON.parseObject(msg, Map.class); diff --git a/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java b/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java index 4c7b3a7..05cbeb5 100644 --- a/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java +++ b/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java @@ -130,4 +130,17 @@ } + //������������������������������ + @XxlJob("dateInsertHistoryHourlyJKAvg") + public ReturnT dateInsertHistoryHourlyJKAvg(){ + try { + historyHourlyService.dateInsertHistoryHourlyJKAvg(null,null); + } catch (Exception e) { + e.printStackTrace(); + return new ReturnT(ReturnT.FAIL_CODE, e.getMessage()); + } + return ReturnT.SUCCESS; + } + + } diff --git a/screen-manage/src/main/java/com/moral/api/controller/DivisorController.java b/screen-manage/src/main/java/com/moral/api/controller/DivisorController.java new file mode 100644 index 0000000..89d5b9a --- /dev/null +++ b/screen-manage/src/main/java/com/moral/api/controller/DivisorController.java @@ -0,0 +1,100 @@ +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.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +import javax.validation.Valid; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.moral.api.entity.Divisor; +import com.moral.api.mapper.DivisorMapper; +import com.moral.api.service.DivisorService; +import com.moral.constant.Constants; +import com.moral.constant.ResponseCodeEnum; +import com.moral.constant.ResultMessage; + +/** + * Description //todo + * + * @author swb + * @ClassName DivisorController + * @date 2023.12.06 14:15 + */ + +@Slf4j +@Api(tags = {"������������"}) +@RestController +@RequestMapping(value = "/divisor") +public class DivisorController { + + + @Autowired + private DivisorService divisorService; + + + + @PostMapping("insert") + @ApiOperation("������") + public ResultMessage insert(@Valid @RequestBody Divisor divisor){ + QueryWrapper<Divisor> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("organization_id", divisor.getOrganizationId()).eq("is_del", Constants.NOT_DELETE); + if (divisorService.getOne(queryWrapper) != null) { + return ResultMessage.fail(ResponseCodeEnum.MAC_IS_EXIST.getCode(), ResponseCodeEnum.MAC_IS_EXIST.getMsg()); + } + divisorService.insert(divisor); + return ResultMessage.ok(); + } + + + @PostMapping("update") + @ApiOperation("������") + public ResultMessage update(@Valid @RequestBody Divisor divisor){ + + QueryWrapper<Divisor> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("organization_id", divisor.getOrganizationId()).eq("is_del", Constants.NOT_DELETE); + if (divisorService.getOne(queryWrapper) != null) { + return ResultMessage.fail(ResponseCodeEnum.MAC_IS_EXIST.getCode(), ResponseCodeEnum.MAC_IS_EXIST.getMsg()); + } + divisorService.update(divisor); + return ResultMessage.ok(); + } + + @GetMapping("delete") + @ApiOperation("������") + public ResultMessage delete(@RequestParam @ApiParam(value = "id",name = "������id") Integer id){ + divisorService.delete(id); + return ResultMessage.ok(); + } + + + + @GetMapping("select") + @ApiOperation("������") + public ResultMessage select(@RequestParam @ApiParam(value = "id",name = "������id") Integer id){ + Divisor divisor = divisorService.queryById(id); + return ResultMessage.ok(ObjectUtils.isEmpty(divisor)?"0":divisor); + } + + + @GetMapping("page") + @ApiOperation("������") + public ResultMessage page(@RequestParam @ApiParam(value = "mac",name = "mac���") String mac, + @RequestParam @ApiParam(value = "page",name = "������") String page, + @RequestParam @ApiParam(value = "size",name = "������") String size) { + Map<String, Object> select = divisorService.select(mac, page, size); + return ResultMessage.ok(ObjectUtils.isEmpty(select)?"0":select); + } + +} diff --git a/screen-manage/src/main/java/com/moral/api/entity/Divisor.java b/screen-manage/src/main/java/com/moral/api/entity/Divisor.java new file mode 100644 index 0000000..51afa1b --- /dev/null +++ b/screen-manage/src/main/java/com/moral/api/entity/Divisor.java @@ -0,0 +1,58 @@ +package com.moral.api.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.Date; + +import com.baomidou.mybatisplus.extension.activerecord.Model; + +/** + * Description //todo + * + * @author swb + * @ClassName Divisor + * @date 2023.12.06 14:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="Divisor - Divisor������", description="Divisor - Divisor������") +public class Divisor extends Model<Divisor> { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "������") + private Integer id; + @ApiModelProperty(value = "������") + private String organizationId; + @ApiModelProperty(value = "pm2.5") + private String pm25; + @ApiModelProperty(value = "PM10") + private String pm10; + @ApiModelProperty(value = "������������") + private String so2; + @ApiModelProperty(value = "������������") + private String no2; + @ApiModelProperty(value = "������������") + private String co; + @ApiModelProperty(value = "tvoc") + private String tvoc; + @ApiModelProperty(value = "������") + private String o3; + @ApiModelProperty(value = "���������") + private String dustld; + @ApiModelProperty(value = "������������") + private String isDel; + @ApiModelProperty(value = "������������") + private Date createTime; + @ApiModelProperty(value = "������������") + private Date updateTime; + + private String createName; + + private String updateName; +} diff --git a/screen-manage/src/main/java/com/moral/api/mapper/DivisorMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/DivisorMapper.java new file mode 100644 index 0000000..35ffd00 --- /dev/null +++ b/screen-manage/src/main/java/com/moral/api/mapper/DivisorMapper.java @@ -0,0 +1,7 @@ +package com.moral.api.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.moral.api.entity.Divisor; + +public interface DivisorMapper extends BaseMapper<Divisor> { +} diff --git a/screen-manage/src/main/java/com/moral/api/service/DivisorService.java b/screen-manage/src/main/java/com/moral/api/service/DivisorService.java new file mode 100644 index 0000000..21d4c12 --- /dev/null +++ b/screen-manage/src/main/java/com/moral/api/service/DivisorService.java @@ -0,0 +1,45 @@ +package com.moral.api.service; + +import java.util.Map; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.moral.api.entity.Divisor; + +public interface DivisorService extends IService<Divisor> { + + /** + * ������ + * @param divisor + */ + void insert(Divisor divisor); + + /** + * ������ + * @param divisor + */ + void update(Divisor divisor); + + + /** + * ������ + * @param id + */ + void delete(Integer id); + + /** + * ������ + * @param id + * @return + */ + Divisor queryById(Integer id); + + /** + * ������������ + * @param mac + * @param page + * @param size + * @return + */ + Map<String,Object> select(String mac,String page,String size); + +} diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/DivisorServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/DivisorServiceImpl.java new file mode 100644 index 0000000..ae7a16f --- /dev/null +++ b/screen-manage/src/main/java/com/moral/api/service/impl/DivisorServiceImpl.java @@ -0,0 +1,138 @@ +package com.moral.api.service.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import javax.servlet.http.HttpServletRequest; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.moral.api.entity.Divisor; +import com.moral.api.entity.ManageAccount; +import com.moral.api.mapper.DivisorMapper; +import com.moral.api.pojo.redisBean.AccountInfoDTO; +import com.moral.api.service.DivisorService; +import com.moral.api.util.LogUtils; +import com.moral.constant.Constants; +import com.moral.util.TokenUtils; + + +/** + * Description //todo + * + * @author swb + * @ClassName DivisorServiceimpl + * @date 2023.12.06 14:18 + */ +@Service +public class DivisorServiceImpl extends ServiceImpl<DivisorMapper, Divisor> implements DivisorService { + + @Autowired + private DivisorMapper divisorMapper; + + /** + * ������ + * + * @param divisor + */ + @Override + public void insert(Divisor divisor) { + HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + String token = request.getHeader("token"); + AccountInfoDTO accountInfoDTO = (AccountInfoDTO) TokenUtils.getUserInfoByToken(token); + ManageAccount manageAccount = accountInfoDTO.getAccount(); + divisor.setIsDel(Constants.NOT_DELETE); + divisor.setCreateTime(new Date()); + divisor.setUpdateTime(new Date()); + divisor.setCreateName(manageAccount.getUserName()); + divisorMapper.insert(divisor); + } + + + /** + * ������ + * @param divisor + */ + @Override + @Transactional + public void update(Divisor divisor) { + HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + String token = request.getHeader("token"); + AccountInfoDTO accountInfoDTO = (AccountInfoDTO) TokenUtils.getUserInfoByToken(token); + ManageAccount manageAccount = accountInfoDTO.getAccount(); + Divisor divisor1 = divisorMapper.selectById(divisor.getId()); + divisor.setUpdateTime(new Date()); + divisor.setUpdateName(manageAccount.getUserName()); + divisorMapper.updateById(divisor); + //������������������ + StringBuilder content = new StringBuilder(); + content.append("���������"+divisor1.getOrganizationId()+"���������������������"); + content.append(ObjectUtils.isEmpty(divisor.getDustld())?",���������==>null":",���������==>"+divisor.getDustld()); + content.append(ObjectUtils.isEmpty(divisor.getCo())?",co==>null":",co==>"+divisor.getCo()); + content.append(ObjectUtils.isEmpty(divisor.getSo2())?",so2==>null":",so2==>"+divisor.getSo2()); + content.append(ObjectUtils.isEmpty(divisor.getNo2())?",no2==>null":",no2==>"+divisor.getNo2()); + content.append(ObjectUtils.isEmpty(divisor.getPm25())?",pm2.5==>null":",pm2.5==>"+divisor.getPm25()); + content.append(ObjectUtils.isEmpty(divisor.getPm10())?",pm10==>null":",pm10==>"+divisor.getPm10()); + content.append(ObjectUtils.isEmpty(divisor.getTvoc())?",tvoc==>null":",tvoc==>"+divisor.getTvoc()); + content.append(ObjectUtils.isEmpty(divisor.getO3())?",o3==>null":",o3==>"+divisor.getO3()); + LogUtils.saveOperationForManage(request, content.toString(), Constants.UPDATE_OPERATE_TYPE); + + } + + /** + * ������ + * + * @param id + */ + @Override + public void delete(Integer id) { + Divisor divisor = divisorMapper.selectById(id); + divisor.setIsDel(Constants.DELETE); + divisorMapper.updateById(divisor); + } + + /** + * ������ + * + * @param id + * @return + */ + @Override + public Divisor queryById(Integer id) { + Divisor divisor = divisorMapper.selectById(id); + return divisor; + } + + /** + * ������������ + * + * @param mac + * @param page + * @param size + * @return + */ + @Override + public Map<String, Object> select(String mac, String page, String size) { + HashMap<String, Object> result = new HashMap<>(); + LambdaQueryWrapper<Divisor> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Divisor::getIsDel,Constants.NOT_DELETE); +// if (!ObjectUtils.isEmpty(mac)){ +// wrapper.like(Divisor::getMac,mac); +// } + Page<Divisor> PageList = new Page<>(Integer.parseInt(page), Integer.parseInt(size)); + Page<Divisor> divisorPage = divisorMapper.selectPage(PageList, wrapper); + result.put("total", PageList.getTotal()); + result.put("totalPage", PageList.getPages()); + result.put("current", PageList.getCurrent()); + result.put("pageSize", PageList.getSize()); + result.put("item", divisorPage.getRecords()); + return result; + } +} diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java index 60149e4..02df9c3 100644 --- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java +++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java @@ -214,6 +214,9 @@ for (CruiserDTO cruiserDTO : cruiserInfo) { Double flyLat = cruiserDTO.getFlyLat(); Double flyLon = cruiserDTO.getFlyLon(); + if (ObjectUtils.isEmpty(flyLat) || ObjectUtils.isEmpty(flyLon)){ + continue; + } ManageCoordinateDetail rsDTO = new ManageCoordinateDetail(); rsDTO.setLatitude(flyLat); rsDTO.setLongitude(flyLon); diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ResponsibilityUnitServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ResponsibilityUnitServiceImpl.java index cc9489c..753a2ce 100644 --- a/screen-manage/src/main/java/com/moral/api/service/impl/ResponsibilityUnitServiceImpl.java +++ b/screen-manage/src/main/java/com/moral/api/service/impl/ResponsibilityUnitServiceImpl.java @@ -79,7 +79,7 @@ public Map<String, Object> selectUnit(Map<String, Object> parameters) { QueryWrapper<ResponsibilityUnit> wrapper = new QueryWrapper<>(); wrapper.eq("is_del",Constants.NOT_DELETE); - wrapper.eq("is_invalid",0); +// wrapper.eq("is_invalid",0); int page = Integer.parseInt(parameters.get("page").toString()); int size = Integer.parseInt(parameters.get("size").toString()); Object parentName1 = parameters.get("parentCode"); -- Gitblit v1.8.0