瀏覽代碼

feat:新增监控设备/监控目标/监控区域/存储设备参数及其配置功能模块

黄渊昊 6 月之前
父節點
當前提交
27e77f4eb4
共有 44 個文件被更改,包括 2697 次插入0 次删除
  1. 123 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/controller/MonitorDeviceController.java
  2. 93 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/entity/MonitorDevice.java
  3. 34 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/enums/MonitorDeviceEnum.java
  4. 25 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/mapper/MonitorDeviceMapper.java
  5. 5 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/mapper/mapping/MonitorDeviceMapper.xml
  6. 66 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/param/MonitorDeviceAddParam.java
  7. 71 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/param/MonitorDeviceEditParam.java
  8. 35 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/param/MonitorDeviceIdParam.java
  9. 59 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/param/MonitorDevicePageParam.java
  10. 80 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/service/MonitorDeviceService.java
  11. 100 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/service/impl/MonitorDeviceServiceImpl.java
  12. 123 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/controller/MonitorDeviceParametersController.java
  13. 81 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/entity/MonitorDeviceParameters.java
  14. 34 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/enums/MonitorDeviceParametersEnum.java
  15. 25 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/mapper/MonitorDeviceParametersMapper.java
  16. 5 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/mapper/mapping/MonitorDeviceParametersMapper.xml
  17. 70 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/param/MonitorDeviceParametersAddParam.java
  18. 75 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/param/MonitorDeviceParametersEditParam.java
  19. 35 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/param/MonitorDeviceParametersIdParam.java
  20. 59 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/param/MonitorDeviceParametersPageParam.java
  21. 80 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/service/MonitorDeviceParametersService.java
  22. 100 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/service/impl/MonitorDeviceParametersServiceImpl.java
  23. 123 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/controller/MonitorTargetController.java
  24. 69 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/entity/MonitorTarget.java
  25. 34 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/enums/MonitorTargetEnum.java
  26. 25 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/mapper/MonitorTargetMapper.java
  27. 5 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/mapper/mapping/MonitorTargetMapper.xml
  28. 66 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetAddParam.java
  29. 71 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetEditParam.java
  30. 35 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetIdParam.java
  31. 55 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetPageParam.java
  32. 80 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/service/MonitorTargetService.java
  33. 97 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/service/impl/MonitorTargetServiceImpl.java
  34. 123 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/controller/MonitorTargetRegionController.java
  35. 77 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/entity/MonitorTargetRegion.java
  36. 34 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/enums/MonitorTargetRegionEnum.java
  37. 25 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/mapper/MonitorTargetRegionMapper.java
  38. 5 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/mapper/mapping/MonitorTargetRegionMapper.xml
  39. 58 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/param/MonitorTargetRegionAddParam.java
  40. 63 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/param/MonitorTargetRegionEditParam.java
  41. 35 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/param/MonitorTargetRegionIdParam.java
  42. 59 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/param/MonitorTargetRegionPageParam.java
  43. 80 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/service/MonitorTargetRegionService.java
  44. 100 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/service/impl/MonitorTargetRegionServiceImpl.java

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

@@ -0,0 +1,123 @@
+/*
+ * 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.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.validation.annotation.Validated;
+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.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDevice;
+import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceAddParam;
+import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceEditParam;
+import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceIdParam;
+import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDevicePageParam;
+import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
+
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 监控设备管理控制器
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:55
+ */
+@Tag(name = "监控设备管理控制器")
+@RestController
+@Validated
+public class MonitorDeviceController {
+
+    @Resource
+    private MonitorDeviceService monitorDeviceService;
+
+    /**
+     * 获取监控设备管理分页
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:55
+     */
+    @Operation(summary = "获取监控设备管理分页")
+    @SaCheckPermission("/coldchain/monitordevice/page")
+    @GetMapping("/coldchain/monitordevice/page")
+    public CommonResult<Page<MonitorDevice>> page(MonitorDevicePageParam monitorDevicePageParam) {
+        return CommonResult.data(monitorDeviceService.page(monitorDevicePageParam));
+    }
+
+    /**
+     * 添加监控设备管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:55
+     */
+    @Operation(summary = "添加监控设备管理")
+    @CommonLog("添加监控设备管理")
+    @SaCheckPermission("/coldchain/monitordevice/add")
+    @PostMapping("/coldchain/monitordevice/add")
+    public CommonResult<String> add(@RequestBody @Valid MonitorDeviceAddParam monitorDeviceAddParam) {
+        monitorDeviceService.add(monitorDeviceAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑监控设备管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:55
+     */
+    @Operation(summary = "编辑监控设备管理")
+    @CommonLog("编辑监控设备管理")
+    @SaCheckPermission("/coldchain/monitordevice/edit")
+    @PostMapping("/coldchain/monitordevice/edit")
+    public CommonResult<String> edit(@RequestBody @Valid MonitorDeviceEditParam monitorDeviceEditParam) {
+        monitorDeviceService.edit(monitorDeviceEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除监控设备管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:55
+     */
+    @Operation(summary = "删除监控设备管理")
+    @CommonLog("删除监控设备管理")
+    @SaCheckPermission("/coldchain/monitordevice/delete")
+    @PostMapping("/coldchain/monitordevice/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   List<MonitorDeviceIdParam> monitorDeviceIdParamList) {
+        monitorDeviceService.delete(monitorDeviceIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取监控设备管理详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:55
+     */
+    @Operation(summary = "获取监控设备管理详情")
+    @SaCheckPermission("/coldchain/monitordevice/detail")
+    @GetMapping("/coldchain/monitordevice/detail")
+    public CommonResult<MonitorDevice> detail(@Valid MonitorDeviceIdParam monitorDeviceIdParam) {
+        return CommonResult.data(monitorDeviceService.detail(monitorDeviceIdParam));
+    }
+}

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

@@ -0,0 +1,93 @@
+/*
+ * 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.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 监控设备管理实体
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:55
+ **/
+@Getter
+@Setter
+@TableName("monitor_device")
+public class MonitorDevice {
+
+    /** 设备唯一标识符,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;
+
+    /** 传感器路数 */
+    @Schema(description = "传感器路数")
+    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;
+}

+ 34 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/enums/MonitorDeviceEnum.java

@@ -0,0 +1,34 @@
+/*
+ * 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.enums;
+
+import lombok.Getter;
+
+/**
+ * 监控设备管理枚举
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:55
+ **/
+@Getter
+public enum MonitorDeviceEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    MonitorDeviceEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/mapper/MonitorDeviceMapper.java

@@ -0,0 +1,25 @@
+/*
+ * 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.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDevice;
+
+/**
+ * 监控设备管理Mapper接口
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:55
+ **/
+public interface MonitorDeviceMapper extends BaseMapper<MonitorDevice> {
+}

+ 5 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/mapper/mapping/MonitorDeviceMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="vip.xiaonuo.coldchain.modular.monitordevice.mapper.MonitorDeviceMapper">
+
+</mapper>

+ 66 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/param/MonitorDeviceAddParam.java

@@ -0,0 +1,66 @@
+/*
+ * 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.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 监控设备管理添加参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:55
+ **/
+@Getter
+@Setter
+public class MonitorDeviceAddParam {
+
+    /** 设备名称 */
+    @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;
+
+    /** 传感器路数 */
+    @Schema(description = "传感器路数")
+    private Integer sensorCount;
+
+    /** 最近登录时间 */
+    @Schema(description = "最近登录时间")
+    private Date lastLoginTime;
+
+    /** 排序码 */
+    @Schema(description = "排序码")
+    private Integer sortCode;
+
+}

+ 71 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/param/MonitorDeviceEditParam.java

@@ -0,0 +1,71 @@
+/*
+ * 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.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 监控设备管理编辑参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:55
+ **/
+@Getter
+@Setter
+public class MonitorDeviceEditParam {
+
+    /** 设备唯一标识符,UUID */
+    @Schema(description = "设备唯一标识符,UUID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    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;
+
+    /** 传感器路数 */
+    @Schema(description = "传感器路数")
+    private Integer sensorCount;
+
+    /** 最近登录时间 */
+    @Schema(description = "最近登录时间")
+    private Date lastLoginTime;
+
+    /** 排序码 */
+    @Schema(description = "排序码")
+    private Integer sortCode;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/param/MonitorDeviceIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * 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.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+
+/**
+ * 监控设备管理Id参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:55
+ **/
+@Getter
+@Setter
+public class MonitorDeviceIdParam {
+
+    /** 设备唯一标识符,UUID */
+    @Schema(description = "设备唯一标识符,UUID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+}

+ 59 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/param/MonitorDevicePageParam.java

@@ -0,0 +1,59 @@
+/*
+ * 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.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 监控设备管理查询参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:55
+ **/
+@Getter
+@Setter
+public class MonitorDevicePageParam {
+
+    /** 当前页 */
+    @Schema(description = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @Schema(description = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @Schema(description = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @Schema(description = "关键词")
+    private String searchKey;
+
+    /** 设备名称 */
+    @Schema(description = "设备名称")
+    private String deviceName;
+
+    /** 设备编码 */
+    @Schema(description = "设备编码")
+    private String deviceCode;
+
+}

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

@@ -0,0 +1,80 @@
+/*
+ * 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.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDevice;
+import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceAddParam;
+import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceEditParam;
+import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceIdParam;
+import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDevicePageParam;
+
+import java.util.List;
+
+/**
+ * 监控设备管理Service接口
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:55
+ **/
+public interface MonitorDeviceService extends IService<MonitorDevice> {
+
+    /**
+     * 获取监控设备管理分页
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:55
+     */
+    Page<MonitorDevice> page(MonitorDevicePageParam monitorDevicePageParam);
+
+    /**
+     * 添加监控设备管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:55
+     */
+    void add(MonitorDeviceAddParam monitorDeviceAddParam);
+
+    /**
+     * 编辑监控设备管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:55
+     */
+    void edit(MonitorDeviceEditParam monitorDeviceEditParam);
+
+    /**
+     * 删除监控设备管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:55
+     */
+    void delete(List<MonitorDeviceIdParam> monitorDeviceIdParamList);
+
+    /**
+     * 获取监控设备管理详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:55
+     */
+    MonitorDevice detail(MonitorDeviceIdParam monitorDeviceIdParam);
+
+    /**
+     * 获取监控设备管理详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:55
+     **/
+    MonitorDevice queryEntity(String id);
+}

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

@@ -0,0 +1,100 @@
+/*
+ * 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.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDevice;
+import vip.xiaonuo.coldchain.modular.monitordevice.mapper.MonitorDeviceMapper;
+import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceAddParam;
+import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceEditParam;
+import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceIdParam;
+import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDevicePageParam;
+import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
+
+import java.util.List;
+
+/**
+ * 监控设备管理Service接口实现类
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:55
+ **/
+@Service
+public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, MonitorDevice> implements MonitorDeviceService {
+
+    @Override
+    public Page<MonitorDevice> page(MonitorDevicePageParam monitorDevicePageParam) {
+        QueryWrapper<MonitorDevice> queryWrapper = new QueryWrapper<MonitorDevice>().checkSqlInjection();
+        if(ObjectUtil.isNotEmpty(monitorDevicePageParam.getDeviceName())) {
+            queryWrapper.lambda().like(MonitorDevice::getDeviceName, monitorDevicePageParam.getDeviceName());
+        }
+        if(ObjectUtil.isNotEmpty(monitorDevicePageParam.getDeviceCode())) {
+            queryWrapper.lambda().eq(MonitorDevice::getDeviceCode, monitorDevicePageParam.getDeviceCode());
+        }
+        if(ObjectUtil.isAllNotEmpty(monitorDevicePageParam.getSortField(), monitorDevicePageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(monitorDevicePageParam.getSortOrder());
+            queryWrapper.orderBy(true, monitorDevicePageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(monitorDevicePageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(MonitorDevice::getSortCode);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(MonitorDeviceAddParam monitorDeviceAddParam) {
+        MonitorDevice monitorDevice = BeanUtil.toBean(monitorDeviceAddParam, MonitorDevice.class);
+        this.save(monitorDevice);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(MonitorDeviceEditParam monitorDeviceEditParam) {
+        MonitorDevice monitorDevice = this.queryEntity(monitorDeviceEditParam.getId());
+        BeanUtil.copyProperties(monitorDeviceEditParam, monitorDevice);
+        this.updateById(monitorDevice);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<MonitorDeviceIdParam> monitorDeviceIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(monitorDeviceIdParamList, MonitorDeviceIdParam::getId));
+    }
+
+    @Override
+    public MonitorDevice detail(MonitorDeviceIdParam monitorDeviceIdParam) {
+        return this.queryEntity(monitorDeviceIdParam.getId());
+    }
+
+    @Override
+    public MonitorDevice queryEntity(String id) {
+        MonitorDevice monitorDevice = this.getById(id);
+        if(ObjectUtil.isEmpty(monitorDevice)) {
+            throw new CommonException("监控设备管理不存在,id值为:{}", id);
+        }
+        return monitorDevice;
+    }
+}

+ 123 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/controller/MonitorDeviceParametersController.java

@@ -0,0 +1,123 @@
+/*
+ * 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.monitordeviceparameters.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.validation.annotation.Validated;
+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.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.entity.MonitorDeviceParameters;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.param.MonitorDeviceParametersAddParam;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.param.MonitorDeviceParametersEditParam;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.param.MonitorDeviceParametersIdParam;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.param.MonitorDeviceParametersPageParam;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.service.MonitorDeviceParametersService;
+
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 设备参数及其配置控制器
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 17:03
+ */
+@Tag(name = "设备参数及其配置控制器")
+@RestController
+@Validated
+public class MonitorDeviceParametersController {
+
+    @Resource
+    private MonitorDeviceParametersService monitorDeviceParametersService;
+
+    /**
+     * 获取设备参数及其配置分页
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 17:03
+     */
+    @Operation(summary = "获取设备参数及其配置分页")
+    @SaCheckPermission("/coldchain/monitordeviceparameters/page")
+    @GetMapping("/coldchain/monitordeviceparameters/page")
+    public CommonResult<Page<MonitorDeviceParameters>> page(MonitorDeviceParametersPageParam monitorDeviceParametersPageParam) {
+        return CommonResult.data(monitorDeviceParametersService.page(monitorDeviceParametersPageParam));
+    }
+
+    /**
+     * 添加设备参数及其配置
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 17:03
+     */
+    @Operation(summary = "添加设备参数及其配置")
+    @CommonLog("添加设备参数及其配置")
+    @SaCheckPermission("/coldchain/monitordeviceparameters/add")
+    @PostMapping("/coldchain/monitordeviceparameters/add")
+    public CommonResult<String> add(@RequestBody @Valid MonitorDeviceParametersAddParam monitorDeviceParametersAddParam) {
+        monitorDeviceParametersService.add(monitorDeviceParametersAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑设备参数及其配置
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 17:03
+     */
+    @Operation(summary = "编辑设备参数及其配置")
+    @CommonLog("编辑设备参数及其配置")
+    @SaCheckPermission("/coldchain/monitordeviceparameters/edit")
+    @PostMapping("/coldchain/monitordeviceparameters/edit")
+    public CommonResult<String> edit(@RequestBody @Valid MonitorDeviceParametersEditParam monitorDeviceParametersEditParam) {
+        monitorDeviceParametersService.edit(monitorDeviceParametersEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除设备参数及其配置
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 17:03
+     */
+    @Operation(summary = "删除设备参数及其配置")
+    @CommonLog("删除设备参数及其配置")
+    @SaCheckPermission("/coldchain/monitordeviceparameters/delete")
+    @PostMapping("/coldchain/monitordeviceparameters/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   List<MonitorDeviceParametersIdParam> monitorDeviceParametersIdParamList) {
+        monitorDeviceParametersService.delete(monitorDeviceParametersIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取设备参数及其配置详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 17:03
+     */
+    @Operation(summary = "获取设备参数及其配置详情")
+    @SaCheckPermission("/coldchain/monitordeviceparameters/detail")
+    @GetMapping("/coldchain/monitordeviceparameters/detail")
+    public CommonResult<MonitorDeviceParameters> detail(@Valid MonitorDeviceParametersIdParam monitorDeviceParametersIdParam) {
+        return CommonResult.data(monitorDeviceParametersService.detail(monitorDeviceParametersIdParam));
+    }
+}

+ 81 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/entity/MonitorDeviceParameters.java

@@ -0,0 +1,81 @@
+/*
+ * 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.monitordeviceparameters.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 设备参数及其配置实体
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 17:03
+ **/
+@Getter
+@Setter
+@TableName("monitor_device_parameters")
+public class MonitorDeviceParameters {
+
+    /** 主键 */
+    @TableId
+    @Schema(description = "主键")
+    private String id;
+
+    /** 监控设备ID */
+    @Schema(description = "监控设备ID")
+    private Integer monitorDeviceId;
+
+    /** 参数ID,每个参数的唯一标识 */
+    @Schema(description = "参数ID,每个参数的唯一标识")
+    private Integer paramId;
+
+    /** 参数类型 */
+    @Schema(description = "参数类型")
+    private String paramType;
+
+    /** 参数描述 */
+    @Schema(description = "参数描述")
+    private String description;
+
+    /** 参数值 */
+    @Schema(description = "参数值")
+    private String value;
+
+    /** 参数长度 */
+    @Schema(description = "参数长度")
+    private Integer length;
+
+    /** 参数的最小值 */
+    @Schema(description = "参数的最小值")
+    private Integer minValue;
+
+    /** 参数的最大值 */
+    @Schema(description = "参数的最大值")
+    private Integer maxValue;
+
+    /** 可选的值描述 */
+    @Schema(description = "可选的值描述")
+    private String valueDescription;
+
+    /** 记录创建时间 */
+    @Schema(description = "记录创建时间")
+    private Date createdAt;
+
+    /** 记录更新时间 */
+    @Schema(description = "记录更新时间")
+    private Date updatedAt;
+}

+ 34 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/enums/MonitorDeviceParametersEnum.java

@@ -0,0 +1,34 @@
+/*
+ * 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.monitordeviceparameters.enums;
+
+import lombok.Getter;
+
+/**
+ * 设备参数及其配置枚举
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 17:03
+ **/
+@Getter
+public enum MonitorDeviceParametersEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    MonitorDeviceParametersEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/mapper/MonitorDeviceParametersMapper.java

@@ -0,0 +1,25 @@
+/*
+ * 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.monitordeviceparameters.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.entity.MonitorDeviceParameters;
+
+/**
+ * 设备参数及其配置Mapper接口
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 17:03
+ **/
+public interface MonitorDeviceParametersMapper extends BaseMapper<MonitorDeviceParameters> {
+}

+ 5 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/mapper/mapping/MonitorDeviceParametersMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="vip.xiaonuo.coldchain.modular.monitordeviceparameters.mapper.MonitorDeviceParametersMapper">
+
+</mapper>

+ 70 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/param/MonitorDeviceParametersAddParam.java

@@ -0,0 +1,70 @@
+/*
+ * 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.monitordeviceparameters.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 设备参数及其配置添加参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 17:03
+ **/
+@Getter
+@Setter
+public class MonitorDeviceParametersAddParam {
+
+    /** 监控设备ID */
+    @Schema(description = "监控设备ID")
+    private Integer monitorDeviceId;
+
+    /** 参数ID,每个参数的唯一标识 */
+    @Schema(description = "参数ID,每个参数的唯一标识")
+    private Integer paramId;
+
+    /** 参数类型 */
+    @Schema(description = "参数类型")
+    private String paramType;
+
+    /** 参数描述 */
+    @Schema(description = "参数描述")
+    private String description;
+
+    /** 参数值 */
+    @Schema(description = "参数值")
+    private String value;
+
+    /** 参数长度 */
+    @Schema(description = "参数长度")
+    private Integer length;
+
+    /** 参数的最小值 */
+    @Schema(description = "参数的最小值")
+    private Integer minValue;
+
+    /** 参数的最大值 */
+    @Schema(description = "参数的最大值")
+    private Integer maxValue;
+
+    /** 可选的值描述 */
+    @Schema(description = "可选的值描述")
+    private String valueDescription;
+
+}

+ 75 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/param/MonitorDeviceParametersEditParam.java

@@ -0,0 +1,75 @@
+/*
+ * 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.monitordeviceparameters.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 设备参数及其配置编辑参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 17:03
+ **/
+@Getter
+@Setter
+public class MonitorDeviceParametersEditParam {
+
+    /** 主键 */
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /** 监控设备ID */
+    @Schema(description = "监控设备ID")
+    private Integer monitorDeviceId;
+
+    /** 参数ID,每个参数的唯一标识 */
+    @Schema(description = "参数ID,每个参数的唯一标识")
+    private Integer paramId;
+
+    /** 参数类型 */
+    @Schema(description = "参数类型")
+    private String paramType;
+
+    /** 参数描述 */
+    @Schema(description = "参数描述")
+    private String description;
+
+    /** 参数值 */
+    @Schema(description = "参数值")
+    private String value;
+
+    /** 参数长度 */
+    @Schema(description = "参数长度")
+    private Integer length;
+
+    /** 参数的最小值 */
+    @Schema(description = "参数的最小值")
+    private Integer minValue;
+
+    /** 参数的最大值 */
+    @Schema(description = "参数的最大值")
+    private Integer maxValue;
+
+    /** 可选的值描述 */
+    @Schema(description = "可选的值描述")
+    private String valueDescription;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/param/MonitorDeviceParametersIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * 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.monitordeviceparameters.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+
+/**
+ * 设备参数及其配置Id参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 17:03
+ **/
+@Getter
+@Setter
+public class MonitorDeviceParametersIdParam {
+
+    /** 主键 */
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+}

+ 59 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/param/MonitorDeviceParametersPageParam.java

@@ -0,0 +1,59 @@
+/*
+ * 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.monitordeviceparameters.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 设备参数及其配置查询参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 17:03
+ **/
+@Getter
+@Setter
+public class MonitorDeviceParametersPageParam {
+
+    /** 当前页 */
+    @Schema(description = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @Schema(description = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @Schema(description = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @Schema(description = "关键词")
+    private String searchKey;
+
+    /** 参数类型 */
+    @Schema(description = "参数类型")
+    private String paramType;
+
+    /** 参数值 */
+    @Schema(description = "参数值")
+    private String value;
+
+}

+ 80 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/service/MonitorDeviceParametersService.java

@@ -0,0 +1,80 @@
+/*
+ * 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.monitordeviceparameters.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.entity.MonitorDeviceParameters;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.param.MonitorDeviceParametersAddParam;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.param.MonitorDeviceParametersEditParam;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.param.MonitorDeviceParametersIdParam;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.param.MonitorDeviceParametersPageParam;
+
+import java.util.List;
+
+/**
+ * 设备参数及其配置Service接口
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 17:03
+ **/
+public interface MonitorDeviceParametersService extends IService<MonitorDeviceParameters> {
+
+    /**
+     * 获取设备参数及其配置分页
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 17:03
+     */
+    Page<MonitorDeviceParameters> page(MonitorDeviceParametersPageParam monitorDeviceParametersPageParam);
+
+    /**
+     * 添加设备参数及其配置
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 17:03
+     */
+    void add(MonitorDeviceParametersAddParam monitorDeviceParametersAddParam);
+
+    /**
+     * 编辑设备参数及其配置
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 17:03
+     */
+    void edit(MonitorDeviceParametersEditParam monitorDeviceParametersEditParam);
+
+    /**
+     * 删除设备参数及其配置
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 17:03
+     */
+    void delete(List<MonitorDeviceParametersIdParam> monitorDeviceParametersIdParamList);
+
+    /**
+     * 获取设备参数及其配置详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 17:03
+     */
+    MonitorDeviceParameters detail(MonitorDeviceParametersIdParam monitorDeviceParametersIdParam);
+
+    /**
+     * 获取设备参数及其配置详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 17:03
+     **/
+    MonitorDeviceParameters queryEntity(String id);
+}

+ 100 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordeviceparameters/service/impl/MonitorDeviceParametersServiceImpl.java

@@ -0,0 +1,100 @@
+/*
+ * 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.monitordeviceparameters.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.entity.MonitorDeviceParameters;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.mapper.MonitorDeviceParametersMapper;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.param.MonitorDeviceParametersAddParam;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.param.MonitorDeviceParametersEditParam;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.param.MonitorDeviceParametersIdParam;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.param.MonitorDeviceParametersPageParam;
+import vip.xiaonuo.coldchain.modular.monitordeviceparameters.service.MonitorDeviceParametersService;
+
+import java.util.List;
+
+/**
+ * 设备参数及其配置Service接口实现类
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 17:03
+ **/
+@Service
+public class MonitorDeviceParametersServiceImpl extends ServiceImpl<MonitorDeviceParametersMapper, MonitorDeviceParameters> implements MonitorDeviceParametersService {
+
+    @Override
+    public Page<MonitorDeviceParameters> page(MonitorDeviceParametersPageParam monitorDeviceParametersPageParam) {
+        QueryWrapper<MonitorDeviceParameters> queryWrapper = new QueryWrapper<MonitorDeviceParameters>().checkSqlInjection();
+        if(ObjectUtil.isNotEmpty(monitorDeviceParametersPageParam.getParamType())) {
+            queryWrapper.lambda().eq(MonitorDeviceParameters::getParamType, monitorDeviceParametersPageParam.getParamType());
+        }
+        if(ObjectUtil.isNotEmpty(monitorDeviceParametersPageParam.getValue())) {
+            queryWrapper.lambda().like(MonitorDeviceParameters::getValue, monitorDeviceParametersPageParam.getValue());
+        }
+        if(ObjectUtil.isAllNotEmpty(monitorDeviceParametersPageParam.getSortField(), monitorDeviceParametersPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(monitorDeviceParametersPageParam.getSortOrder());
+            queryWrapper.orderBy(true, monitorDeviceParametersPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(monitorDeviceParametersPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(MonitorDeviceParameters::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(MonitorDeviceParametersAddParam monitorDeviceParametersAddParam) {
+        MonitorDeviceParameters monitorDeviceParameters = BeanUtil.toBean(monitorDeviceParametersAddParam, MonitorDeviceParameters.class);
+        this.save(monitorDeviceParameters);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(MonitorDeviceParametersEditParam monitorDeviceParametersEditParam) {
+        MonitorDeviceParameters monitorDeviceParameters = this.queryEntity(monitorDeviceParametersEditParam.getId());
+        BeanUtil.copyProperties(monitorDeviceParametersEditParam, monitorDeviceParameters);
+        this.updateById(monitorDeviceParameters);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<MonitorDeviceParametersIdParam> monitorDeviceParametersIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(monitorDeviceParametersIdParamList, MonitorDeviceParametersIdParam::getId));
+    }
+
+    @Override
+    public MonitorDeviceParameters detail(MonitorDeviceParametersIdParam monitorDeviceParametersIdParam) {
+        return this.queryEntity(monitorDeviceParametersIdParam.getId());
+    }
+
+    @Override
+    public MonitorDeviceParameters queryEntity(String id) {
+        MonitorDeviceParameters monitorDeviceParameters = this.getById(id);
+        if(ObjectUtil.isEmpty(monitorDeviceParameters)) {
+            throw new CommonException("设备参数及其配置不存在,id值为:{}", id);
+        }
+        return monitorDeviceParameters;
+    }
+}

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

@@ -0,0 +1,123 @@
+/*
+ * 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.monitortarget.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.validation.annotation.Validated;
+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.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTarget;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetAddParam;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetEditParam;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetIdParam;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetPageParam;
+import vip.xiaonuo.coldchain.modular.monitortarget.service.MonitorTargetService;
+
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 目标设备管理控制器
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:56
+ */
+@Tag(name = "目标设备管理控制器")
+@RestController
+@Validated
+public class MonitorTargetController {
+
+    @Resource
+    private MonitorTargetService monitorTargetService;
+
+    /**
+     * 获取目标设备管理分页
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:56
+     */
+    @Operation(summary = "获取目标设备管理分页")
+    @SaCheckPermission("/coldchain/monitortarget/page")
+    @GetMapping("/coldchain/monitortarget/page")
+    public CommonResult<Page<MonitorTarget>> page(MonitorTargetPageParam monitorTargetPageParam) {
+        return CommonResult.data(monitorTargetService.page(monitorTargetPageParam));
+    }
+
+    /**
+     * 添加目标设备管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:56
+     */
+    @Operation(summary = "添加目标设备管理")
+    @CommonLog("添加目标设备管理")
+    @SaCheckPermission("/coldchain/monitortarget/add")
+    @PostMapping("/coldchain/monitortarget/add")
+    public CommonResult<String> add(@RequestBody @Valid MonitorTargetAddParam monitorTargetAddParam) {
+        monitorTargetService.add(monitorTargetAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑目标设备管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:56
+     */
+    @Operation(summary = "编辑目标设备管理")
+    @CommonLog("编辑目标设备管理")
+    @SaCheckPermission("/coldchain/monitortarget/edit")
+    @PostMapping("/coldchain/monitortarget/edit")
+    public CommonResult<String> edit(@RequestBody @Valid MonitorTargetEditParam monitorTargetEditParam) {
+        monitorTargetService.edit(monitorTargetEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除目标设备管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:56
+     */
+    @Operation(summary = "删除目标设备管理")
+    @CommonLog("删除目标设备管理")
+    @SaCheckPermission("/coldchain/monitortarget/delete")
+    @PostMapping("/coldchain/monitortarget/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   List<MonitorTargetIdParam> monitorTargetIdParamList) {
+        monitorTargetService.delete(monitorTargetIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取目标设备管理详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:56
+     */
+    @Operation(summary = "获取目标设备管理详情")
+    @SaCheckPermission("/coldchain/monitortarget/detail")
+    @GetMapping("/coldchain/monitortarget/detail")
+    public CommonResult<MonitorTarget> detail(@Valid MonitorTargetIdParam monitorTargetIdParam) {
+        return CommonResult.data(monitorTargetService.detail(monitorTargetIdParam));
+    }
+}

+ 69 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/entity/MonitorTarget.java

@@ -0,0 +1,69 @@
+/*
+ * 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.monitortarget.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 目标设备管理实体
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:56
+ **/
+@Getter
+@Setter
+@TableName("monitor_target")
+public class MonitorTarget {
+
+    /** ID */
+    @TableId
+    @Schema(description = "ID")
+    private String id;
+
+    /** 名称 */
+    @Schema(description = "名称")
+    private String name;
+
+    /** 状态(1:正常,2:闲置) */
+    @Schema(description = "状态(1:正常,2:闲置)")
+    private String status;
+
+    /** 监控位置区域 */
+    @Schema(description = "监控位置区域")
+    private String monitorPoint;
+
+    /** 传感器类型 */
+    @Schema(description = "传感器类型")
+    private String sensorType;
+
+    /** 监控设备编号 */
+    @Schema(description = "监控设备编号")
+    private String monitorDeviceId;
+
+    /** 冷链编号 */
+    @Schema(description = "冷链编号")
+    private String code;
+
+    /** 报警上限 */
+    @Schema(description = "报警上限")
+    private String limitUp;
+
+    /** 报警下限 */
+    @Schema(description = "报警下限")
+    private String limitDown;
+}

+ 34 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/enums/MonitorTargetEnum.java

@@ -0,0 +1,34 @@
+/*
+ * 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.monitortarget.enums;
+
+import lombok.Getter;
+
+/**
+ * 目标设备管理枚举
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:56
+ **/
+@Getter
+public enum MonitorTargetEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    MonitorTargetEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/mapper/MonitorTargetMapper.java

@@ -0,0 +1,25 @@
+/*
+ * 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.monitortarget.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTarget;
+
+/**
+ * 目标设备管理Mapper接口
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:56
+ **/
+public interface MonitorTargetMapper extends BaseMapper<MonitorTarget> {
+}

+ 5 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/mapper/mapping/MonitorTargetMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="vip.xiaonuo.coldchain.modular.monitortarget.mapper.MonitorTargetMapper">
+
+</mapper>

+ 66 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetAddParam.java

@@ -0,0 +1,66 @@
+/*
+ * 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.monitortarget.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 目标设备管理添加参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:56
+ **/
+@Getter
+@Setter
+public class MonitorTargetAddParam {
+
+    /** 名称 */
+    @Schema(description = "名称")
+    private String name;
+
+    /** 状态(1:正常,2:闲置) */
+    @Schema(description = "状态(1:正常,2:闲置)")
+    private String status;
+
+    /** 监控位置区域 */
+    @Schema(description = "监控位置区域")
+    private String monitorPoint;
+
+    /** 传感器类型 */
+    @Schema(description = "传感器类型")
+    private String sensorType;
+
+    /** 监控设备编号 */
+    @Schema(description = "监控设备编号")
+    private String monitorDeviceId;
+
+    /** 冷链编号 */
+    @Schema(description = "冷链编号")
+    private String code;
+
+    /** 报警上限 */
+    @Schema(description = "报警上限")
+    private String limitUp;
+
+    /** 报警下限 */
+    @Schema(description = "报警下限")
+    private String limitDown;
+
+}

+ 71 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetEditParam.java

@@ -0,0 +1,71 @@
+/*
+ * 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.monitortarget.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 目标设备管理编辑参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:56
+ **/
+@Getter
+@Setter
+public class MonitorTargetEditParam {
+
+    /** ID */
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /** 名称 */
+    @Schema(description = "名称")
+    private String name;
+
+    /** 状态(1:正常,2:闲置) */
+    @Schema(description = "状态(1:正常,2:闲置)")
+    private String status;
+
+    /** 监控位置区域 */
+    @Schema(description = "监控位置区域")
+    private String monitorPoint;
+
+    /** 传感器类型 */
+    @Schema(description = "传感器类型")
+    private String sensorType;
+
+    /** 监控设备编号 */
+    @Schema(description = "监控设备编号")
+    private String monitorDeviceId;
+
+    /** 冷链编号 */
+    @Schema(description = "冷链编号")
+    private String code;
+
+    /** 报警上限 */
+    @Schema(description = "报警上限")
+    private String limitUp;
+
+    /** 报警下限 */
+    @Schema(description = "报警下限")
+    private String limitDown;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * 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.monitortarget.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+
+/**
+ * 目标设备管理Id参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:56
+ **/
+@Getter
+@Setter
+public class MonitorTargetIdParam {
+
+    /** ID */
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+}

+ 55 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortarget/param/MonitorTargetPageParam.java

@@ -0,0 +1,55 @@
+/*
+ * 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.monitortarget.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 目标设备管理查询参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:56
+ **/
+@Getter
+@Setter
+public class MonitorTargetPageParam {
+
+    /** 当前页 */
+    @Schema(description = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @Schema(description = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @Schema(description = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @Schema(description = "关键词")
+    private String searchKey;
+
+    /** 名称 */
+    @Schema(description = "名称")
+    private String name;
+
+}

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

@@ -0,0 +1,80 @@
+/*
+ * 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.monitortarget.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTarget;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetAddParam;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetEditParam;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetIdParam;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetPageParam;
+
+import java.util.List;
+
+/**
+ * 目标设备管理Service接口
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:56
+ **/
+public interface MonitorTargetService extends IService<MonitorTarget> {
+
+    /**
+     * 获取目标设备管理分页
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:56
+     */
+    Page<MonitorTarget> page(MonitorTargetPageParam monitorTargetPageParam);
+
+    /**
+     * 添加目标设备管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:56
+     */
+    void add(MonitorTargetAddParam monitorTargetAddParam);
+
+    /**
+     * 编辑目标设备管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:56
+     */
+    void edit(MonitorTargetEditParam monitorTargetEditParam);
+
+    /**
+     * 删除目标设备管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:56
+     */
+    void delete(List<MonitorTargetIdParam> monitorTargetIdParamList);
+
+    /**
+     * 获取目标设备管理详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:56
+     */
+    MonitorTarget detail(MonitorTargetIdParam monitorTargetIdParam);
+
+    /**
+     * 获取目标设备管理详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:56
+     **/
+    MonitorTarget queryEntity(String id);
+}

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

@@ -0,0 +1,97 @@
+/*
+ * 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.monitortarget.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTarget;
+import vip.xiaonuo.coldchain.modular.monitortarget.mapper.MonitorTargetMapper;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetAddParam;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetEditParam;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetIdParam;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetPageParam;
+import vip.xiaonuo.coldchain.modular.monitortarget.service.MonitorTargetService;
+
+import java.util.List;
+
+/**
+ * 目标设备管理Service接口实现类
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:56
+ **/
+@Service
+public class MonitorTargetServiceImpl extends ServiceImpl<MonitorTargetMapper, MonitorTarget> implements MonitorTargetService {
+
+    @Override
+    public Page<MonitorTarget> page(MonitorTargetPageParam monitorTargetPageParam) {
+        QueryWrapper<MonitorTarget> queryWrapper = new QueryWrapper<MonitorTarget>().checkSqlInjection();
+        if(ObjectUtil.isNotEmpty(monitorTargetPageParam.getName())) {
+            queryWrapper.lambda().like(MonitorTarget::getName, monitorTargetPageParam.getName());
+        }
+        if(ObjectUtil.isAllNotEmpty(monitorTargetPageParam.getSortField(), monitorTargetPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(monitorTargetPageParam.getSortOrder());
+            queryWrapper.orderBy(true, monitorTargetPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(monitorTargetPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(MonitorTarget::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(MonitorTargetAddParam monitorTargetAddParam) {
+        MonitorTarget monitorTarget = BeanUtil.toBean(monitorTargetAddParam, MonitorTarget.class);
+        this.save(monitorTarget);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(MonitorTargetEditParam monitorTargetEditParam) {
+        MonitorTarget monitorTarget = this.queryEntity(monitorTargetEditParam.getId());
+        BeanUtil.copyProperties(monitorTargetEditParam, monitorTarget);
+        this.updateById(monitorTarget);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<MonitorTargetIdParam> monitorTargetIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(monitorTargetIdParamList, MonitorTargetIdParam::getId));
+    }
+
+    @Override
+    public MonitorTarget detail(MonitorTargetIdParam monitorTargetIdParam) {
+        return this.queryEntity(monitorTargetIdParam.getId());
+    }
+
+    @Override
+    public MonitorTarget queryEntity(String id) {
+        MonitorTarget monitorTarget = this.getById(id);
+        if(ObjectUtil.isEmpty(monitorTarget)) {
+            throw new CommonException("目标设备管理不存在,id值为:{}", id);
+        }
+        return monitorTarget;
+    }
+}

+ 123 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/controller/MonitorTargetRegionController.java

@@ -0,0 +1,123 @@
+/*
+ * 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.monitortargetregion.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.validation.annotation.Validated;
+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.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.entity.MonitorTargetRegion;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionAddParam;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionEditParam;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionIdParam;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionPageParam;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.service.MonitorTargetRegionService;
+
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 区域管理控制器
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:57
+ */
+@Tag(name = "区域管理控制器")
+@RestController
+@Validated
+public class MonitorTargetRegionController {
+
+    @Resource
+    private MonitorTargetRegionService monitorTargetRegionService;
+
+    /**
+     * 获取区域管理分页
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:57
+     */
+    @Operation(summary = "获取区域管理分页")
+    @SaCheckPermission("/coldchain/monitortargetregion/page")
+    @GetMapping("/coldchain/monitortargetregion/page")
+    public CommonResult<Page<MonitorTargetRegion>> page(MonitorTargetRegionPageParam monitorTargetRegionPageParam) {
+        return CommonResult.data(monitorTargetRegionService.page(monitorTargetRegionPageParam));
+    }
+
+    /**
+     * 添加区域管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:57
+     */
+    @Operation(summary = "添加区域管理")
+    @CommonLog("添加区域管理")
+    @SaCheckPermission("/coldchain/monitortargetregion/add")
+    @PostMapping("/coldchain/monitortargetregion/add")
+    public CommonResult<String> add(@RequestBody @Valid MonitorTargetRegionAddParam monitorTargetRegionAddParam) {
+        monitorTargetRegionService.add(monitorTargetRegionAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑区域管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:57
+     */
+    @Operation(summary = "编辑区域管理")
+    @CommonLog("编辑区域管理")
+    @SaCheckPermission("/coldchain/monitortargetregion/edit")
+    @PostMapping("/coldchain/monitortargetregion/edit")
+    public CommonResult<String> edit(@RequestBody @Valid MonitorTargetRegionEditParam monitorTargetRegionEditParam) {
+        monitorTargetRegionService.edit(monitorTargetRegionEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除区域管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:57
+     */
+    @Operation(summary = "删除区域管理")
+    @CommonLog("删除区域管理")
+    @SaCheckPermission("/coldchain/monitortargetregion/delete")
+    @PostMapping("/coldchain/monitortargetregion/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   List<MonitorTargetRegionIdParam> monitorTargetRegionIdParamList) {
+        monitorTargetRegionService.delete(monitorTargetRegionIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取区域管理详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:57
+     */
+    @Operation(summary = "获取区域管理详情")
+    @SaCheckPermission("/coldchain/monitortargetregion/detail")
+    @GetMapping("/coldchain/monitortargetregion/detail")
+    public CommonResult<MonitorTargetRegion> detail(@Valid MonitorTargetRegionIdParam monitorTargetRegionIdParam) {
+        return CommonResult.data(monitorTargetRegionService.detail(monitorTargetRegionIdParam));
+    }
+}

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

@@ -0,0 +1,77 @@
+/*
+ * 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.monitortargetregion.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 区域管理实体
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:57
+ **/
+@Getter
+@Setter
+@TableName("monitor_target_region")
+public class MonitorTargetRegion {
+
+    /** 区域唯一标识符,UUID */
+    @TableId
+    @Schema(description = "区域唯一标识符,UUID")
+    private String id;
+
+    /** 区域名称 */
+    @Schema(description = "区域名称")
+    private String name;
+
+    /** 上级区域ID */
+    @Schema(description = "上级区域ID")
+    private String parentId;
+
+    /** 监控目标设备 */
+    @Schema(description = "监控目标设备")
+    private String monitorTargetId;
+
+    /** 传感器编号 */
+    @Schema(description = "传感器编号")
+    private String sensorCode;
+
+    /** 传感器类型 */
+    @Schema(description = "传感器类型")
+    private String sensorType;
+
+    /** 传感器路数 */
+    @Schema(description = "传感器路数")
+    private Integer sensorRoute;
+
+    /** 记录创建时间 */
+    @Schema(description = "记录创建时间")
+    private Date createdAt;
+
+    /** 记录创建用户 */
+    @Schema(description = "记录创建用户")
+    private String createdBy;
+
+    /** 记录修改时间 */
+    @Schema(description = "记录修改时间")
+    private Date updatedAt;
+
+    /** 记录修改用户 */
+    @Schema(description = "记录修改用户")
+    private String updatedBy;
+}

+ 34 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/enums/MonitorTargetRegionEnum.java

@@ -0,0 +1,34 @@
+/*
+ * 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.monitortargetregion.enums;
+
+import lombok.Getter;
+
+/**
+ * 区域管理枚举
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:57
+ **/
+@Getter
+public enum MonitorTargetRegionEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    MonitorTargetRegionEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/mapper/MonitorTargetRegionMapper.java

@@ -0,0 +1,25 @@
+/*
+ * 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.monitortargetregion.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.entity.MonitorTargetRegion;
+
+/**
+ * 区域管理Mapper接口
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:57
+ **/
+public interface MonitorTargetRegionMapper extends BaseMapper<MonitorTargetRegion> {
+}

+ 5 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/mapper/mapping/MonitorTargetRegionMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="vip.xiaonuo.coldchain.modular.monitortargetregion.mapper.MonitorTargetRegionMapper">
+
+</mapper>

+ 58 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/param/MonitorTargetRegionAddParam.java

@@ -0,0 +1,58 @@
+/*
+ * 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.monitortargetregion.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 区域管理添加参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:57
+ **/
+@Getter
+@Setter
+public class MonitorTargetRegionAddParam {
+
+    /** 区域名称 */
+    @Schema(description = "区域名称")
+    private String name;
+
+    /** 上级区域ID */
+    @Schema(description = "上级区域ID")
+    private String parentId;
+
+    /** 监控目标设备 */
+    @Schema(description = "监控目标设备")
+    private String monitorTargetId;
+
+    /** 传感器编号 */
+    @Schema(description = "传感器编号")
+    private String sensorCode;
+
+    /** 传感器类型 */
+    @Schema(description = "传感器类型")
+    private String sensorType;
+
+    /** 传感器路数 */
+    @Schema(description = "传感器路数")
+    private Integer sensorRoute;
+
+}

+ 63 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/param/MonitorTargetRegionEditParam.java

@@ -0,0 +1,63 @@
+/*
+ * 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.monitortargetregion.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 区域管理编辑参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:57
+ **/
+@Getter
+@Setter
+public class MonitorTargetRegionEditParam {
+
+    /** 区域唯一标识符,UUID */
+    @Schema(description = "区域唯一标识符,UUID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /** 区域名称 */
+    @Schema(description = "区域名称")
+    private String name;
+
+    /** 上级区域ID */
+    @Schema(description = "上级区域ID")
+    private String parentId;
+
+    /** 监控目标设备 */
+    @Schema(description = "监控目标设备")
+    private String monitorTargetId;
+
+    /** 传感器编号 */
+    @Schema(description = "传感器编号")
+    private String sensorCode;
+
+    /** 传感器类型 */
+    @Schema(description = "传感器类型")
+    private String sensorType;
+
+    /** 传感器路数 */
+    @Schema(description = "传感器路数")
+    private Integer sensorRoute;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/param/MonitorTargetRegionIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * 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.monitortargetregion.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+
+/**
+ * 区域管理Id参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:57
+ **/
+@Getter
+@Setter
+public class MonitorTargetRegionIdParam {
+
+    /** 区域唯一标识符,UUID */
+    @Schema(description = "区域唯一标识符,UUID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+}

+ 59 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/param/MonitorTargetRegionPageParam.java

@@ -0,0 +1,59 @@
+/*
+ * 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.monitortargetregion.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 区域管理查询参数
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:57
+ **/
+@Getter
+@Setter
+public class MonitorTargetRegionPageParam {
+
+    /** 当前页 */
+    @Schema(description = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @Schema(description = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @Schema(description = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @Schema(description = "关键词")
+    private String searchKey;
+
+    /** 区域名称 */
+    @Schema(description = "区域名称")
+    private String name;
+
+    /** 监控目标设备 */
+    @Schema(description = "监控目标设备")
+    private String monitorTargetId;
+
+}

+ 80 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitortargetregion/service/MonitorTargetRegionService.java

@@ -0,0 +1,80 @@
+/*
+ * 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.monitortargetregion.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.entity.MonitorTargetRegion;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionAddParam;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionEditParam;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionIdParam;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionPageParam;
+
+import java.util.List;
+
+/**
+ * 区域管理Service接口
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:57
+ **/
+public interface MonitorTargetRegionService extends IService<MonitorTargetRegion> {
+
+    /**
+     * 获取区域管理分页
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:57
+     */
+    Page<MonitorTargetRegion> page(MonitorTargetRegionPageParam monitorTargetRegionPageParam);
+
+    /**
+     * 添加区域管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:57
+     */
+    void add(MonitorTargetRegionAddParam monitorTargetRegionAddParam);
+
+    /**
+     * 编辑区域管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:57
+     */
+    void edit(MonitorTargetRegionEditParam monitorTargetRegionEditParam);
+
+    /**
+     * 删除区域管理
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:57
+     */
+    void delete(List<MonitorTargetRegionIdParam> monitorTargetRegionIdParamList);
+
+    /**
+     * 获取区域管理详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:57
+     */
+    MonitorTargetRegion detail(MonitorTargetRegionIdParam monitorTargetRegionIdParam);
+
+    /**
+     * 获取区域管理详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/13 16:57
+     **/
+    MonitorTargetRegion queryEntity(String id);
+}

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

@@ -0,0 +1,100 @@
+/*
+ * 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.monitortargetregion.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.entity.MonitorTargetRegion;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.mapper.MonitorTargetRegionMapper;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionAddParam;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionEditParam;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionIdParam;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionPageParam;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.service.MonitorTargetRegionService;
+
+import java.util.List;
+
+/**
+ * 区域管理Service接口实现类
+ *
+ * @author 黄渊昊
+ * @date  2024/11/13 16:57
+ **/
+@Service
+public class MonitorTargetRegionServiceImpl extends ServiceImpl<MonitorTargetRegionMapper, MonitorTargetRegion> implements MonitorTargetRegionService {
+
+    @Override
+    public Page<MonitorTargetRegion> page(MonitorTargetRegionPageParam monitorTargetRegionPageParam) {
+        QueryWrapper<MonitorTargetRegion> queryWrapper = new QueryWrapper<MonitorTargetRegion>().checkSqlInjection();
+        if(ObjectUtil.isNotEmpty(monitorTargetRegionPageParam.getName())) {
+            queryWrapper.lambda().like(MonitorTargetRegion::getName, monitorTargetRegionPageParam.getName());
+        }
+        if(ObjectUtil.isNotEmpty(monitorTargetRegionPageParam.getMonitorTargetId())) {
+            queryWrapper.lambda().like(MonitorTargetRegion::getMonitorTargetId, monitorTargetRegionPageParam.getMonitorTargetId());
+        }
+        if(ObjectUtil.isAllNotEmpty(monitorTargetRegionPageParam.getSortField(), monitorTargetRegionPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(monitorTargetRegionPageParam.getSortOrder());
+            queryWrapper.orderBy(true, monitorTargetRegionPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(monitorTargetRegionPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(MonitorTargetRegion::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(MonitorTargetRegionAddParam monitorTargetRegionAddParam) {
+        MonitorTargetRegion monitorTargetRegion = BeanUtil.toBean(monitorTargetRegionAddParam, MonitorTargetRegion.class);
+        this.save(monitorTargetRegion);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(MonitorTargetRegionEditParam monitorTargetRegionEditParam) {
+        MonitorTargetRegion monitorTargetRegion = this.queryEntity(monitorTargetRegionEditParam.getId());
+        BeanUtil.copyProperties(monitorTargetRegionEditParam, monitorTargetRegion);
+        this.updateById(monitorTargetRegion);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<MonitorTargetRegionIdParam> monitorTargetRegionIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(monitorTargetRegionIdParamList, MonitorTargetRegionIdParam::getId));
+    }
+
+    @Override
+    public MonitorTargetRegion detail(MonitorTargetRegionIdParam monitorTargetRegionIdParam) {
+        return this.queryEntity(monitorTargetRegionIdParam.getId());
+    }
+
+    @Override
+    public MonitorTargetRegion queryEntity(String id) {
+        MonitorTargetRegion monitorTargetRegion = this.getById(id);
+        if(ObjectUtil.isEmpty(monitorTargetRegion)) {
+            throw new CommonException("区域管理不存在,id值为:{}", id);
+        }
+        return monitorTargetRegion;
+    }
+}