Prechádzať zdrojové kódy

温度阈值设置优化

李进 1 rok pred
rodič
commit
a7f3bc0193

+ 19 - 3
device-api-service/src/main/java/com/xy/service/DeviceConfigServiceImpl.java

@@ -2,11 +2,14 @@ package com.xy.service;
 
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xy.device.EnumDeviceTempConfig;
 import com.xy.dto.DeviceConfigDto;
 import com.xy.entity.DeviceConfig;
+import com.xy.entity.SysDictRedis;
 import com.xy.mapper.DeviceConfigMapper;
 import com.xy.utils.Beans;
 import com.xy.utils.R;
+import com.xy.utils.SysDictUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -17,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -35,9 +39,14 @@ public class DeviceConfigServiceImpl extends ServiceImpl<DeviceConfigMapper, Dev
     @PostMapping("update")
     @ApiOperation("设备温度告警阈值设置")
     public R update(@RequestBody @Validated DeviceConfigDto.Update update) {
-        DeviceConfig deviceConfig = Beans.copy(DeviceConfig.class, update)
-                .setUpdateTime(LocalDateTime.now());
-        updateById(deviceConfig);
+        DeviceConfig deviceConfigInfo = getById(update.getDeviceId());
+        LocalDateTime now = LocalDateTime.now();
+        DeviceConfig deviceConfig = Beans.copy(DeviceConfig.class, update);
+        if (deviceConfigInfo == null) {
+            deviceConfig.setCreateTime(now);
+        }
+        deviceConfig.setUpdateTime(LocalDateTime.now());
+        saveOrUpdate(deviceConfig);
         return R.ok();
     }
 
@@ -60,6 +69,13 @@ public class DeviceConfigServiceImpl extends ServiceImpl<DeviceConfigMapper, Dev
     @ApiOperation("对象查询")
     public R<DeviceConfigDto.Vo> obj(@RequestBody @Validated DeviceConfigDto.Obj obj) {
         DeviceConfig deviceConfig = getById(obj.getDeviceId());
+        if (deviceConfig == null) {
+            Map<String, SysDictRedis> stringSysDictRedisMap = SysDictUtils.get(EnumDeviceTempConfig.Code.CODE.getCode());
+            deviceConfig = new DeviceConfig()
+                    .setDeviceId(obj.getDeviceId())
+                    .setTempMax(Integer.valueOf(stringSysDictRedisMap.get(EnumDeviceTempConfig.MAX.getCode()).getValue()))
+                    .setTempMin(Integer.valueOf(stringSysDictRedisMap.get(EnumDeviceTempConfig.MIN.getCode()).getValue()));
+        }
         return R.ok(Beans.copy(DeviceConfigDto.Vo.class, deviceConfig));
     }
 }

+ 11 - 2
device-api-service/src/main/java/com/xy/service/DeviceStatusServiceImpl.java

@@ -14,6 +14,7 @@ import com.xy.dto.DeviceTempRecordsDto;
 import com.xy.entity.DeviceConfig;
 import com.xy.entity.DeviceStatus;
 import com.xy.entity.DeviceSysinfo;
+import com.xy.entity.SysDictRedis;
 import com.xy.mapper.DeviceStatusMapper;
 import com.xy.mapper.entity.DeviceStatusCount;
 import com.xy.utils.*;
@@ -29,6 +30,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
 
 import static com.xy.utils.Beans.copy;
 
@@ -79,8 +81,15 @@ public class DeviceStatusServiceImpl extends ServiceImpl<DeviceStatusMapper, Dev
                 deviceTempRecordsService.save(save);
                 //查询设备配置
                 DeviceConfig deviceConfig = deviceConfigService.getById(deviceStatus.getDeviceId());
-                Integer tempMax = deviceConfig.getTempMax();
-                Integer tempMin = deviceConfig.getTempMin();
+                int tempMax, tempMin;
+                if (deviceConfig == null) {
+                    Map<String, SysDictRedis> stringSysDictRedisMap = SysDictUtils.get(EnumDeviceTempConfig.Code.CODE.getCode());
+                    tempMax = Integer.valueOf(stringSysDictRedisMap.get(EnumDeviceTempConfig.MAX.getCode()).getValue());
+                    tempMin = Integer.valueOf(stringSysDictRedisMap.get(EnumDeviceTempConfig.MIN.getCode()).getValue());
+                } else {
+                    tempMax = deviceConfig.getTempMax();
+                    tempMin = deviceConfig.getTempMin();
+                }
                 //温度有异常
                 String key = String.format("device_temp_error:%s:%s", deviceStatus.getDeviceId(), deviceStatus.getTempValue() >= tempMax ? "max" : "min");
                 if (deviceStatus.getTempValue() > tempMax || deviceStatus.getTempValue() < tempMin) {

+ 0 - 12
device-api-service/src/main/java/com/xy/service/factory/device/impl/open/OpenDeviceFactoryImpl.java

@@ -14,7 +14,6 @@ import com.xy.consumer.device.push.msg.DevicePushMsgMqttConfiguration;
 import com.xy.consumer.device.push.msg.DevicePushMsgProducer;
 import com.xy.device.EnumDeviceActiveStatus;
 import com.xy.device.EnumDeviceBusyStatus;
-import com.xy.device.EnumDeviceTempConfig;
 import com.xy.dto.*;
 import com.xy.entity.*;
 import com.xy.enums.SysCodeConfigureEnum;
@@ -65,8 +64,6 @@ public class OpenDeviceFactoryImpl implements DeviceFactory {
 
     private DevicePushMsgProducer devicePushMsgProducer;
 
-    private DeviceConfigServiceImpl deviceConfigService;
-
     private DeviceChargingServiceImpl deviceChargingService;
 
     private DeviceAlgorithmChargingServiceImpl deviceAlgorithmChargingService;
@@ -116,15 +113,6 @@ public class OpenDeviceFactoryImpl implements DeviceFactory {
             deviceSysinfoMapper.insert(deviceSysinfo);
             //设备-状态
             deviceStatusMapper.insert(deviceStatus);
-            //设备配置表
-            Map<String, SysDictRedis> stringSysDictRedisMap = SysDictUtils.get(EnumDeviceTempConfig.Code.CODE.getCode());
-            deviceConfigService.save(new DeviceConfig()
-                    .setDeviceId(deviceInfo.getDeviceId())
-                    .setTempMax(Integer.valueOf(stringSysDictRedisMap.get(EnumDeviceTempConfig.MAX.getCode()).getValue()))
-                    .setTempMin(Integer.valueOf(stringSysDictRedisMap.get(EnumDeviceTempConfig.MIN.getCode()).getValue()))
-                    .setCreateTime(now)
-                    .setUpdateTime(now)
-            );
             //mqtt认证信息
             String deviceId = deviceRegister.getDeviceId().toString();
             MqttUserDto.Save mqttUserInfo = new MqttUserDto.Save();