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