Преглед на файлове

feat:新增获取正常监控对象/设备方法
feat:转换监控区域树形列表中的设备/监控对象id为name值

黄渊昊 преди 6 месеца
родител
ревизия
196e088de8

+ 3 - 2
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/controller/MonitorDeviceController.java

@@ -123,11 +123,12 @@ public class MonitorDeviceController {
 
     /**
      * 获取监控设备列表
+     * @param 是否查询所有
      */
     @Operation(summary = "获取监控设备列表")
     @SaCheckPermission("/coldchain/monitordevice/list")
     @GetMapping("/coldchain/monitordevice/list")
-    public CommonResult<List<MonitorDevice>> list() {
-        return CommonResult.data(monitorDeviceService.list());
+    public CommonResult<List<MonitorDevice>> list(Boolean isAll) {
+        return CommonResult.data(monitorDeviceService.myList(isAll));
     }
 }

+ 147 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/entity/MonitorDeviceTran.java

@@ -0,0 +1,147 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.coldchain.modular.monitordevice.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import vip.xiaonuo.coldchain.modular.monitordevice.enums.MonitorDeviceStatusEnum;
+import vip.xiaonuo.common.pojo.CommonEntity;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.util.Date;
+
+/**
+ * 采集器管理实体
+ *
+ * @author 黄渊昊
+ * @date 2024/11/13 16:55
+ **/
+@Getter
+@Setter
+@TableName("monitor_device")
+public class MonitorDeviceTran extends CommonEntity {
+
+    /**
+     * 设备唯一标识符,UUID
+     */
+    @TableId
+    @Schema(description = "设备唯一标识符,UUID")
+    private String id;
+
+    /**
+     * 设备名称
+     */
+    @Schema(description = "设备名称")
+    private String deviceName;
+
+    /**
+     * 设备编码
+     */
+    @Schema(description = "设备编码")
+    private String deviceCode;
+
+    /**
+     * 设备型号
+     */
+    @Schema(description = "设备型号")
+    private String modelName;
+
+    /**
+     * 最后心跳时间
+     */
+    @Schema(description = "最后心跳时间")
+    private Date lastHeartbeatTime;
+
+    /**
+     * 设备状态(1:正常,2:闲置)
+     */
+    @Schema(description = "设备状态(1:正常,2:闲置)")
+    private String status = MonitorDeviceStatusEnum.NORMAL.getValue();
+
+    /**
+     * 传感器路数
+     */
+    @Schema(description = "传感器路数")
+    @NotNull(message = "传感器路数不能为空")
+    @Size(min = 1, max = 4, message = "传感器路数的大小必须在1到10之间")
+    private Integer sensorCount;
+
+    /**
+     * 最近登录时间
+     */
+    @Schema(description = "最近登录时间")
+    private Date lastLoginTime;
+
+    /**
+     * 排序码
+     */
+    @Schema(description = "排序码")
+    private Integer sortCode;
+
+    /**
+     * 扩展信息
+     */
+    @Schema(description = "扩展信息")
+    private String extraInfo;
+
+    /**
+     * 删除标志
+     */
+    @Schema(description = "删除标志")
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    @Schema(description = "记录创建时间")
+    private Date createdAt;
+
+    /**
+     * 记录创建用户
+     */
+    @Schema(description = "记录创建用户")
+    private String createdBy;
+
+    /**
+     * 记录修改时间
+     */
+    @Schema(description = "记录修改时间")
+    private Date updatedAt;
+
+    /**
+     * 记录修改用户
+     */
+    @Schema(description = "记录修改用户")
+    private String updatedBy;
+
+    /**
+     * 设备参数编号信息
+     */
+    @Schema(description = "设备参数编号信息")
+    @TableField(value = "param_ids")//, typeHandler = JacksonTypeHandler.class)
+//    private List<Integer> paramIds;
+    private String paramIds;
+
+    /**
+     * 设备参数信息
+     */
+    @Schema(description = "设备参数信息")
+    @TableField(value = "parameters")//, typeHandler = JacksonTypeHandler.class)
+//    private List<ParamItem> parameters;
+    private String parameters;
+}

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

@@ -98,4 +98,6 @@ public interface MonitorDeviceService extends IService<MonitorDevice> {
     SensorData queryLatestDataByDeviceIdAndRoads(String deviceId, Integer sensorRoute);
 
     List<SensorData> querySensorData(String deviceId, int roads, Instant startTime, Instant endTime, List<SensorQueryCondition> queryConditions);
+
+    List<MonitorDevice> myList(Boolean isAll);
 }

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

@@ -17,6 +17,7 @@ import cn.hutool.core.collection.CollStreamUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -32,6 +33,7 @@ import vip.xiaonuo.coldchain.core.bean.influxdb.SensorQueryCondition;
 import vip.xiaonuo.coldchain.core.cache.monitordevice.MonitorDeviceCache;
 import vip.xiaonuo.coldchain.core.renke.RenKeService;
 import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDevice;
+import vip.xiaonuo.coldchain.modular.monitordevice.enums.MonitorDeviceStatusEnum;
 import vip.xiaonuo.coldchain.modular.monitordevice.mapper.MonitorDeviceMapper;
 import vip.xiaonuo.coldchain.modular.monitordevice.param.*;
 import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
@@ -176,6 +178,16 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
     }
 
 
+    @Override
+    public List<MonitorDevice> myList(Boolean isAll) {
+        LambdaQueryWrapper<MonitorDevice> queryWrapper = new LambdaQueryWrapper<>();
+        if (!isAll) {
+            queryWrapper.eq(MonitorDevice::getStatus, MonitorDeviceStatusEnum.NORMAL.getValue())
+                    .orderByDesc(MonitorDevice::getCreatedAt);
+        }
+        return list(queryWrapper);
+    }
+
     // 通用更新方法,避免代码重复,并处理 timestamp 为空的情况
     private boolean updateDeviceTimeByDeviceId(Integer deviceId, Date timestamp, String timeField) {
         if (timestamp == null) {

+ 11 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/controller/MonitorTargetController.java

@@ -140,4 +140,15 @@ public class MonitorTargetController {
     public CommonResult<Page<MonitorTarget>> getPageByUser(MonitorTargetPageParam monitorTargetPageParam) {
         return CommonResult.data(monitorTargetService.getPageByUser(monitorTargetPageParam));
     }
+
+    /**
+     * 获取监控对象列表
+     * @param 是否查询所有
+     */
+    @Operation(summary = "获取监控对象列表")
+    @SaCheckPermission("/coldchain/monitortarget/list")
+    @GetMapping("/coldchain/monitortarget/list")
+    public CommonResult<List<MonitorTarget>> list(Boolean isAll) {
+        return CommonResult.data(monitorTargetService.myList(isAll));
+    }
 }

+ 7 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/service/MonitorTargetService.java

@@ -100,4 +100,11 @@ public interface MonitorTargetService extends IService<MonitorTarget> {
      * 更新最后一次登录时间
      */
     boolean updateLastLoginTimeByDeviceId(Integer deviceId, Date timestamp);
+
+    /**
+     * 获取监控对象列表
+     * @param isAll
+     * @return
+     */
+    List<MonitorTarget> myList(Boolean isAll);
 }

+ 13 - 2
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/service/impl/MonitorTargetServiceImpl.java

@@ -120,8 +120,9 @@ public class MonitorTargetServiceImpl extends ServiceImpl<MonitorTargetMapper, M
     public List<MonitorTarget> getListByUser(String userId) {
         LambdaQueryWrapper<MonitorTarget> queryWrapper = new LambdaQueryWrapper<MonitorTarget>();
         if (ObjectUtil.isNotNull(userId)) {
-            queryWrapper.eq(MonitorTarget::getCreateBy, userId).eq(MonitorTarget::getStatus,"1")
-                    .orderByDesc(MonitorTarget::getCreateTime);
+            queryWrapper.eq(MonitorTarget::getCreateBy, userId).orderByDesc(MonitorTarget::getCreateTime);
+        } else {
+            queryWrapper.eq(MonitorTarget::getCreateBy, StpLoginUserUtil.getLoginUser().getId());
         }
         queryWrapper.orderByDesc(MonitorTarget::getCreateTime);
         List<MonitorTarget> monitorTargetList = list(queryWrapper);
@@ -198,4 +199,14 @@ public class MonitorTargetServiceImpl extends ServiceImpl<MonitorTargetMapper, M
         return updateBatchById(monitorTargetList);
     }
 
+    @Override
+    public List<MonitorTarget> myList(Boolean isAll) {
+        LambdaQueryWrapper<MonitorTarget> queryWrapper = new LambdaQueryWrapper<>();
+        if (!isAll) {
+            queryWrapper.eq(MonitorTarget::getStatus, MonitorStatusEnum.ONLINE.getCode())
+                    .orderByDesc(MonitorTarget::getCreateTime);
+        }
+        return list(queryWrapper);
+    }
+
 }

+ 19 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/entity/MonitorTargetRegion.java

@@ -12,13 +12,18 @@
  */
 package vip.xiaonuo.coldchain.modular.monitortargetregion.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fhs.core.trans.anno.Trans;
+import com.fhs.core.trans.constant.TransType;
 import com.influxdb.annotations.Column;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
+import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDevice;
+import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDeviceTran;
 
 import java.util.Date;
 
@@ -129,4 +134,18 @@ public class MonitorTargetRegion {
      */
     @Schema(description = "报警下限")
     private Float limitDown;
+
+    /**
+     * 监控对象名称
+     */
+    @TableField(exist = false)
+    @Schema(description = "监控对象名称")
+    private String targetName;
+
+    /**
+     * 监控设备名称
+     */
+    @TableField(exist = false)
+    @Schema(description = "监控设备名称")
+    private String deviceName;
 }

+ 4 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/service/impl/MonitorTargetRegionServiceImpl.java

@@ -167,6 +167,10 @@ public class MonitorTargetRegionServiceImpl extends ServiceImpl<MonitorTargetReg
             if(ObjectUtil.isNotEmpty(byId)) {
                 monitorTargetRegion.setParentId(byId.getId());
             }
+            String targetId = monitorTargetService.getById(monitorTargetRegion.getMonitorTargetId()).getName();
+            monitorTargetRegion.setTargetName(targetId);
+            String deviceName = monitorDeviceService.getById(monitorTargetRegion.getMonitorDeviceId()).getDeviceName();
+            monitorTargetRegion.setDeviceName(deviceName);
         }
 
         List<TreeNode<String>> treeNodeList = monitorTargetRegionList.stream().map(locationType ->