From 0aada3c958851d58d38eda119e377ad2b4eb830b Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Mon, 25 Mar 2024 16:35:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=8E=AF=E4=BF=9D=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E9=A2=84=E8=AD=A6=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coal/emDevice/dto/CreateEmDeviceDto.java | 5 +- .../coal/emDevice/dto/EmDeviceDto.java | 5 + .../coal/emDevice/dto/UpdateEmDeviceDto.java | 5 + .../emDevice/entity/EmDeviceItemConfig.java | 2 + .../emDevice/service/EmDeviceService.java | 2 + .../emDeviceData/dto/EmDeviceDataDto.java | 91 +++++++++++++++++++ .../entity/EmDeviceDataEntity.java | 1 + .../service/EmDeviceDataService.java | 82 +++++++++++++++++ 8 files changed, 192 insertions(+), 1 deletion(-) diff --git a/src/main/java/cn/lihongjie/coal/emDevice/dto/CreateEmDeviceDto.java b/src/main/java/cn/lihongjie/coal/emDevice/dto/CreateEmDeviceDto.java index c4c1468a..66db35f3 100644 --- a/src/main/java/cn/lihongjie/coal/emDevice/dto/CreateEmDeviceDto.java +++ b/src/main/java/cn/lihongjie/coal/emDevice/dto/CreateEmDeviceDto.java @@ -2,6 +2,7 @@ package cn.lihongjie.coal.emDevice.dto; import cn.lihongjie.coal.base.dto.OrgCommonDto; import cn.lihongjie.coal.emDevice.entity.EmDeviceEntity; +import cn.lihongjie.coal.emDevice.entity.EmDeviceItemConfig; import cn.lihongjie.coal.errorMsg.ErrorMsgCode; import cn.lihongjie.coal.validator.OrgUniq; import cn.lihongjie.coal.validator.RequireCode; @@ -13,6 +14,8 @@ import lombok.Data; import org.hibernate.annotations.Comment; +import java.util.List; + @Data @RequireName @RequireCode @@ -31,6 +34,6 @@ public class CreateEmDeviceDto extends OrgCommonDto { private String location; - + private List itemConfig; } diff --git a/src/main/java/cn/lihongjie/coal/emDevice/dto/EmDeviceDto.java b/src/main/java/cn/lihongjie/coal/emDevice/dto/EmDeviceDto.java index fe0dfb34..cbba8d52 100644 --- a/src/main/java/cn/lihongjie/coal/emDevice/dto/EmDeviceDto.java +++ b/src/main/java/cn/lihongjie/coal/emDevice/dto/EmDeviceDto.java @@ -1,6 +1,7 @@ package cn.lihongjie.coal.emDevice.dto; import cn.lihongjie.coal.base.dto.OrgCommonDto; +import cn.lihongjie.coal.emDevice.entity.EmDeviceItemConfig; import cn.lihongjie.coal.emDeviceSupplier.dto.EmDeviceSupplierDto; import cn.lihongjie.coal.thirdAccount.dto.ThirdAccountDto; @@ -8,6 +9,8 @@ import lombok.Data; import org.hibernate.annotations.Comment; +import java.util.List; + @Data public class EmDeviceDto extends OrgCommonDto { @@ -23,4 +26,6 @@ public class EmDeviceDto extends OrgCommonDto { private String archiveStatus; private String archiveStatusName; + + private List itemConfig; } diff --git a/src/main/java/cn/lihongjie/coal/emDevice/dto/UpdateEmDeviceDto.java b/src/main/java/cn/lihongjie/coal/emDevice/dto/UpdateEmDeviceDto.java index b8260661..673722e4 100644 --- a/src/main/java/cn/lihongjie/coal/emDevice/dto/UpdateEmDeviceDto.java +++ b/src/main/java/cn/lihongjie/coal/emDevice/dto/UpdateEmDeviceDto.java @@ -2,6 +2,7 @@ package cn.lihongjie.coal.emDevice.dto; import cn.lihongjie.coal.base.dto.OrgCommonDto; import cn.lihongjie.coal.emDevice.entity.EmDeviceEntity; +import cn.lihongjie.coal.emDevice.entity.EmDeviceItemConfig; import cn.lihongjie.coal.errorMsg.ErrorMsgCode; import cn.lihongjie.coal.validator.OrgUniq; import cn.lihongjie.coal.validator.RequireCode; @@ -13,6 +14,8 @@ import lombok.Data; import org.hibernate.annotations.Comment; +import java.util.List; + @Data @RequireName @RequireCode @@ -30,4 +33,6 @@ public class UpdateEmDeviceDto extends OrgCommonDto { private String deviceType; private String location; + + private List itemConfig; } diff --git a/src/main/java/cn/lihongjie/coal/emDevice/entity/EmDeviceItemConfig.java b/src/main/java/cn/lihongjie/coal/emDevice/entity/EmDeviceItemConfig.java index 89c13641..032918d3 100644 --- a/src/main/java/cn/lihongjie/coal/emDevice/entity/EmDeviceItemConfig.java +++ b/src/main/java/cn/lihongjie/coal/emDevice/entity/EmDeviceItemConfig.java @@ -14,6 +14,8 @@ public class EmDeviceItemConfig { private Double minVal; private Double maxVal; + private Boolean enable; + private Integer sortKey; private Boolean enableAlter; diff --git a/src/main/java/cn/lihongjie/coal/emDevice/service/EmDeviceService.java b/src/main/java/cn/lihongjie/coal/emDevice/service/EmDeviceService.java index 10f029a3..c35d19b1 100644 --- a/src/main/java/cn/lihongjie/coal/emDevice/service/EmDeviceService.java +++ b/src/main/java/cn/lihongjie/coal/emDevice/service/EmDeviceService.java @@ -211,4 +211,6 @@ public class EmDeviceService extends BaseService ans = (int) ((alterMask >>> 0) & 0b11); + case "pm10" -> ans = (int) ((alterMask >>> 2) & 0b11); + case "noise" -> ans = (int) ((alterMask >>> 4) & 0b11); + case "tem" -> ans = (int) ((alterMask >>> 6) & 0b11); + case "hum" -> ans = (int) ((alterMask >>> 8) & 0b11); + case "wp" -> ans = (int) ((alterMask >>> 10) & 0b11); + case "ws" -> ans = (int) ((alterMask >>> 12) & 0b11); + case "wd8" -> ans = (int) ((alterMask >>> 14) & 0b11); + case "wd360" -> ans = (int) ((alterMask >>> 16) & 0b11); + case "tsp" -> ans = (int) ((alterMask >>> 18) & 0b11); + case "atm" -> ans = (int) ((alterMask >>> 20) & 0b11); + case "lux" -> ans = (int) ((alterMask >>> 22) & 0b11); + case "co" -> ans = (int) ((alterMask >>> 24) & 0b11); + case "so2" -> ans = (int) ((alterMask >>> 26) & 0b11); + case "no2" -> ans = (int) ((alterMask >>> 28) & 0b11); + case "o3" -> ans = (int) ((alterMask >>> 30) & 0b11); + } + + return ans; + } + + public int getPm25Alter() { + return this.getAlterStatus("pm25"); + } + + public int getPm10Alter() { + return this.getAlterStatus("pm10"); + } + + public int getNoiseAlter() { + return this.getAlterStatus("noise"); + } + + public int getTemAlter() { + return this.getAlterStatus("tem"); + } + + public int getHumAlter() { + return this.getAlterStatus("hum"); + } + + public int getWpAlter() { + return this.getAlterStatus("wp"); + } + + public int getWsAlter() { + return this.getAlterStatus("ws"); + } + + public int getWd8Alter() { + return this.getAlterStatus("wd8"); + } + + public int getWd360Alter() { + return this.getAlterStatus("wd360"); + } + + public int getTspAlter() { + return this.getAlterStatus("tsp"); + } + + public int getAtmAlter() { + return this.getAlterStatus("atm"); + } + + public int getLuxAlter() { + return this.getAlterStatus("lux"); + } + + public int getCoAlter() { + return this.getAlterStatus("co"); + } + + public int getSo2Alter() { + return this.getAlterStatus("so2"); + } + + public int getNo2Alter() { + return this.getAlterStatus("no2"); + } + + public int getO3Alter() { + return this.getAlterStatus("o3"); + } } diff --git a/src/main/java/cn/lihongjie/coal/emDeviceData/entity/EmDeviceDataEntity.java b/src/main/java/cn/lihongjie/coal/emDeviceData/entity/EmDeviceDataEntity.java index fcf0463d..cf2bc3b3 100644 --- a/src/main/java/cn/lihongjie/coal/emDeviceData/entity/EmDeviceDataEntity.java +++ b/src/main/java/cn/lihongjie/coal/emDeviceData/entity/EmDeviceDataEntity.java @@ -73,4 +73,5 @@ public class EmDeviceDataEntity extends OrgCommonEntity { @Comment("报警标记") private Long alterMask; + } diff --git a/src/main/java/cn/lihongjie/coal/emDeviceData/service/EmDeviceDataService.java b/src/main/java/cn/lihongjie/coal/emDeviceData/service/EmDeviceDataService.java index 0062a603..94e0b9ee 100644 --- a/src/main/java/cn/lihongjie/coal/emDeviceData/service/EmDeviceDataService.java +++ b/src/main/java/cn/lihongjie/coal/emDeviceData/service/EmDeviceDataService.java @@ -4,6 +4,9 @@ import cn.lihongjie.coal.base.dto.CommonQuery; import cn.lihongjie.coal.base.dto.IdRequest; import cn.lihongjie.coal.base.service.BaseService; import cn.lihongjie.coal.dbFunctions.DbFunctionService; +import cn.lihongjie.coal.emDevice.entity.EmDeviceEntity; +import cn.lihongjie.coal.emDevice.entity.EmDeviceItemConfig; +import cn.lihongjie.coal.emDevice.service.EmDeviceService; import cn.lihongjie.coal.emDeviceData.dto.CreateEmDeviceDataDto; import cn.lihongjie.coal.emDeviceData.dto.EmDeviceDataDto; import cn.lihongjie.coal.emDeviceData.dto.UpdateEmDeviceDataDto; @@ -11,8 +14,10 @@ import cn.lihongjie.coal.emDeviceData.entity.EmDeviceDataEntity; import cn.lihongjie.coal.emDeviceData.mapper.EmDeviceDataMapper; import cn.lihongjie.coal.emDeviceData.repository.EmDeviceDataRepository; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.beanutils.PropertyUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.convert.ConversionService; import org.springframework.data.domain.Page; @@ -21,6 +26,12 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + @Service @Slf4j @Transactional @@ -70,4 +81,75 @@ public class EmDeviceDataService extends BaseService maskMap = new HashMap<>(); + @Autowired EmDeviceService emDeviceService; + + @SneakyThrows + @Override + public List saveAll(Iterable emDeviceDataEntities) { + + List collect = + StreamSupport.stream(emDeviceDataEntities.spliterator(), false) + .collect(Collectors.toList()); + + for (EmDeviceDataEntity data : emDeviceDataEntities) { + EmDeviceEntity device = emDeviceService.get(data.getDeviceId()); + + List itemConfig = device.getItemConfig(); + + for (EmDeviceItemConfig config : itemConfig) { + + if (!config.getEnable() || !config.getEnableAlter()) { + continue; + } + Object value = PropertyUtils.getProperty(data, config.getCode()); + + if (value == null) { + continue; + } + + Double dv = (Double) value; + + if (config.getMinVal() != null && dv < config.getMinVal()) { + + data.setAlterMask(calAlterMask(data.getAlterMask(), config.getCode(), 0b01)); + + } else if (config.getMaxVal() != null && dv > config.getMaxVal()) { + + data.setAlterMask(calAlterMask(data.getAlterMask(), config.getCode(), 0b10)); + + } else { + data.setAlterMask(calAlterMask(data.getAlterMask(), config.getCode(), 0b00)); + } + } + } + + return super.saveAll(emDeviceDataEntities); + } + + private Long calAlterMask(Long alterMask, String code, int val) { + + if (alterMask == null) alterMask = 0L; + switch (code) { + case "pm25" -> alterMask = alterMask | (val << (0)); + case "pm10" -> alterMask = alterMask | ((long) val << (2)); + case "noise" -> alterMask = alterMask | ((long) val << (4)); + case "tem" -> alterMask = alterMask | ((long) val << (6)); + case "hum" -> alterMask = alterMask | ((long) val << (8)); + case "wp" -> alterMask = alterMask | ((long) val << (10)); + case "ws" -> alterMask = alterMask | ((long) val << (12)); + case "wd8" -> alterMask = alterMask | ((long) val << (14)); + case "wd360" -> alterMask = alterMask | ((long) val << (16)); + case "tsp" -> alterMask = alterMask | ((long) val << (18)); + case "atm" -> alterMask = alterMask | ((long) val << (20)); + case "lux" -> alterMask = alterMask | ((long) val << (22)); + case "co" -> alterMask = alterMask | ((long) val << (24)); + case "so2" -> alterMask = alterMask | ((long) val << (26)); + case "no2" -> alterMask = alterMask | ((long) val << (28)); + case "o3" -> alterMask = alterMask | ((long) val << (30)); + } + + return alterMask; + } }