Browse Source

feat:新增获取传感器参数接口
fix:修复多头传感器配置参数错误更新bug

黄渊昊 3 months ago
parent
commit
edd4d907de

+ 1 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/offline/DeviceOfflineDetectionService.java

@@ -142,7 +142,7 @@ public class DeviceOfflineDetectionService {
                         publishAlarm(deviceCode, route, lastReportTimeStr, "设备上线",SensorAlarmType.SENSOR_ON_LINE.getDeviceCode());
                     }
                 } else {
-                    throw new CommonException("该设备不存在");
+                    log.error("未找到设备编号 [{}] 和传感器编号 [{}] 对应的监控目标区域", deviceCode, route);
                 }
             }
         } else {

+ 19 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/controller/AppController.java

@@ -5,16 +5,20 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import rk.netDevice.sdk.p2.ParamItem;
 import vip.xiaonuo.coldchain.modular.app.param.*;
 import vip.xiaonuo.coldchain.modular.app.param.export.AppTrendParam;
 import vip.xiaonuo.coldchain.modular.app.service.AppDeviceService;
 import vip.xiaonuo.coldchain.modular.app.service.MessageService;
+import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
+import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.pojo.CommonResult;
 
 import java.io.IOException;
@@ -30,6 +34,8 @@ public class AppController {
     private AppDeviceService appDeviceService;
     @Autowired
     private MessageService messageService;
+    @Resource
+    private MonitorDeviceService monitorDeviceService;
 
 
     @GetMapping("/device-status")
@@ -138,4 +144,17 @@ public class AppController {
     public void export(HttpServletResponse response, AppTrendParam trendParam) {
         appDeviceService.export(response,trendParam);
     }
+
+    /**
+     * 获取传感器设备参数
+     */
+    @Operation(summary = "获取传感器设备参数")
+    @GetMapping("/device/getParameters")
+    public CommonResult<List<ParamItem>> getParameters(String deviceId) {
+        CommonResult<List<ParamItem>> data = CommonResult.data(monitorDeviceService.getParameters(deviceId));
+        if (data.getData().isEmpty()) {
+            throw new CommonException("该设备没有配置参数");
+        }
+        return data;
+    }
 }

+ 3 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/service/MonitorDeviceService.java

@@ -20,6 +20,7 @@ import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.web.multipart.MultipartFile;
 import rk.netDevice.sdk.p2.ParamData;
 import rk.netDevice.sdk.p2.ParamIdsData;
+import rk.netDevice.sdk.p2.ParamItem;
 import vip.xiaonuo.coldchain.core.bean.influxdb.SensorData;
 import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDevice;
 import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceAddParam;
@@ -137,4 +138,6 @@ public interface MonitorDeviceService extends IService<MonitorDevice> {
      * 根据电源编号获取冷链设备
      */
     List<MonitorDevice> getMonitorDeviceByPowerCode(String powerCode);
+
+    List<ParamItem> getParameters(String deviceId);
 }

+ 18 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/service/impl/MonitorDeviceServiceImpl.java

@@ -34,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 import rk.netDevice.sdk.p2.ParamData;
 import rk.netDevice.sdk.p2.ParamIdsData;
+import rk.netDevice.sdk.p2.ParamItem;
 import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
 import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.coldchain.core.bean.influxdb.SensorData;
@@ -298,6 +299,14 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
         int deviceId = data.getDeviceId();
         MonitorDevice device = this.getOne(new QueryWrapper<MonitorDevice>().like("device_code", deviceId)
                 .lambda().eq(MonitorDevice::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE));
+        List<MonitorDevice> deviceByDeviceCode = getDeviceByDeviceCode(String.valueOf(deviceId));
+        if (deviceByDeviceCode.size() == 1) {
+            List<ParamItem> parameters = deviceByDeviceCode.get(0).getParameters();
+            if (parameters.size() > data.getParameterList().size()) {
+                log.error("设备参数已更新,跳过本次更新");
+                return false;
+            }
+        }
         if (device != null && !data.getParameterList().isEmpty()) {
             if (!data.getParameterList().isEmpty()) {
                 device.setParameters(data.getParameterList());
@@ -528,4 +537,13 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
         return List.of();
     }
 
+    @Override
+    public List<ParamItem> getParameters(String deviceId) {
+        SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();
+        LambdaQueryWrapper<MonitorDevice> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(MonitorDevice::getId, deviceId).eq(MonitorDevice::getCreateOrg, loginUser.getOrgId())
+                .eq(MonitorDevice::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
+        return getOne(queryWrapper).getParameters();
+    }
+
 }

+ 4 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/push/utils/PushUtil.java

@@ -99,6 +99,7 @@ public class PushUtil {
 
             try {
                 pushCode = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
+                log.info("推送的数据{}",templateMessage);
             } catch (Exception e) {
                 throw new RuntimeException(e);
             }
@@ -159,6 +160,7 @@ public class PushUtil {
 
             try {
                 pushCode = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
+                log.info("推送的数据{}",templateMessage);
             } catch (Exception e) {
                 throw new RuntimeException(e);
             }
@@ -219,6 +221,7 @@ public class PushUtil {
 
             try {
                 pushCode = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
+                log.info("推送的数据{}",templateMessage);
             } catch (Exception e) {
                 throw new RuntimeException(e);
             }
@@ -273,6 +276,7 @@ public class PushUtil {
 
             try {
                 pushCode = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
+                log.info("推送的数据{}",templateMessage);
             } catch (Exception e) {
                 throw new RuntimeException(e);
             }