Эх сурвалжийг харах

feat:新增监控设备与目标设备关系功能模块

黄渊昊 6 сар өмнө
parent
commit
49218d66f2
13 өөрчлөгдсөн 658 нэмэгдсэн , 1 устгасан
  1. 1 1
      snowy-admin-web/.env.development
  2. 4 0
      snowy-plugin/snowy-plugin-coldchain/pom.xml
  3. 123 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/controller/MonitorMonitorTargetController.java
  4. 69 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/entity/MonitorMonitorTarget.java
  5. 34 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/enums/MonitorMonitorTargetEnum.java
  6. 25 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/mapper/MonitorMonitorTargetMapper.java
  7. 5 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/mapper/mapping/MonitorMonitorTargetMapper.xml
  8. 66 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/param/MonitorMonitorTargetAddParam.java
  9. 71 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/param/MonitorMonitorTargetEditParam.java
  10. 35 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/param/MonitorMonitorTargetIdParam.java
  11. 51 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/param/MonitorMonitorTargetPageParam.java
  12. 80 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/service/MonitorMonitorTargetService.java
  13. 94 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/service/impl/MonitorMonitorTargetServiceImpl.java

+ 1 - 1
snowy-admin-web/.env.development

@@ -1,5 +1,5 @@
 # 接口地址
-VITE_API_BASEURL = http://127.0.0.1:82
+VITE_API_BASEURL = http://127.0.0.1:51182
 
 # 本地端口
 VITE_PORT = 81

+ 4 - 0
snowy-plugin/snowy-plugin-coldchain/pom.xml

@@ -61,5 +61,9 @@
             <artifactId>jfcloud-boot-starter-influxdb</artifactId>
             <version>K6.6.8</version>
         </dependency>
+        <dependency>
+            <groupId>cn.dev33</groupId>
+            <artifactId>sa-token-core</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 123 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/controller/MonitorMonitorTargetController.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.monitormonitortarget.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.monitormonitortarget.entity.MonitorMonitorTarget;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.param.MonitorMonitorTargetAddParam;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.param.MonitorMonitorTargetEditParam;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.param.MonitorMonitorTargetIdParam;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.param.MonitorMonitorTargetPageParam;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.service.MonitorMonitorTargetService;
+
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 监控设备与目标设备关系控制器
+ *
+ * @author 黄渊昊
+ * @date  2024/11/15 10:45
+ */
+@Tag(name = "监控设备与目标设备关系控制器")
+@RestController
+@Validated
+public class MonitorMonitorTargetController {
+
+    @Resource
+    private MonitorMonitorTargetService monitorMonitorTargetService;
+
+    /**
+     * 获取监控设备与目标设备关系分页
+     *
+     * @author 黄渊昊
+     * @date  2024/11/15 10:45
+     */
+    @Operation(summary = "获取监控设备与目标设备关系分页")
+    @SaCheckPermission("/coldchain/monitormonitortarget/page")
+    @GetMapping("/coldchain/monitormonitortarget/page")
+    public CommonResult<Page<MonitorMonitorTarget>> page(MonitorMonitorTargetPageParam monitorMonitorTargetPageParam) {
+        return CommonResult.data(monitorMonitorTargetService.page(monitorMonitorTargetPageParam));
+    }
+
+    /**
+     * 添加监控设备与目标设备关系
+     *
+     * @author 黄渊昊
+     * @date  2024/11/15 10:45
+     */
+    @Operation(summary = "添加监控设备与目标设备关系")
+    @CommonLog("添加监控设备与目标设备关系")
+    @SaCheckPermission("/coldchain/monitormonitortarget/add")
+    @PostMapping("/coldchain/monitormonitortarget/add")
+    public CommonResult<String> add(@RequestBody @Valid MonitorMonitorTargetAddParam monitorMonitorTargetAddParam) {
+        monitorMonitorTargetService.add(monitorMonitorTargetAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑监控设备与目标设备关系
+     *
+     * @author 黄渊昊
+     * @date  2024/11/15 10:45
+     */
+    @Operation(summary = "编辑监控设备与目标设备关系")
+    @CommonLog("编辑监控设备与目标设备关系")
+    @SaCheckPermission("/coldchain/monitormonitortarget/edit")
+    @PostMapping("/coldchain/monitormonitortarget/edit")
+    public CommonResult<String> edit(@RequestBody @Valid MonitorMonitorTargetEditParam monitorMonitorTargetEditParam) {
+        monitorMonitorTargetService.edit(monitorMonitorTargetEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除监控设备与目标设备关系
+     *
+     * @author 黄渊昊
+     * @date  2024/11/15 10:45
+     */
+    @Operation(summary = "删除监控设备与目标设备关系")
+    @CommonLog("删除监控设备与目标设备关系")
+    @SaCheckPermission("/coldchain/monitormonitortarget/delete")
+    @PostMapping("/coldchain/monitormonitortarget/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   List<MonitorMonitorTargetIdParam> monitorMonitorTargetIdParamList) {
+        monitorMonitorTargetService.delete(monitorMonitorTargetIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取监控设备与目标设备关系详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/15 10:45
+     */
+    @Operation(summary = "获取监控设备与目标设备关系详情")
+    @SaCheckPermission("/coldchain/monitormonitortarget/detail")
+    @GetMapping("/coldchain/monitormonitortarget/detail")
+    public CommonResult<MonitorMonitorTarget> detail(@Valid MonitorMonitorTargetIdParam monitorMonitorTargetIdParam) {
+        return CommonResult.data(monitorMonitorTargetService.detail(monitorMonitorTargetIdParam));
+    }
+}

+ 69 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/entity/MonitorMonitorTarget.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.monitormonitortarget.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/15 10:45
+ **/
+@Getter
+@Setter
+@TableName("monitor_monitor_target")
+public class MonitorMonitorTarget {
+
+    /** 主键 */
+    @TableId
+    @Schema(description = "主键")
+    private String id;
+
+    /** 监控设备ID */
+    @Schema(description = "监控设备ID")
+    private String monitorDeviceId;
+
+    /** 目标设备ID */
+    @Schema(description = "目标设备ID")
+    private String monitorTargetId;
+
+    /** 目标设备区域ID */
+    @Schema(description = "目标设备区域ID")
+    private String monitorTargetRegionId;
+
+    /** 传感器路数 */
+    @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/monitormonitortarget/enums/MonitorMonitorTargetEnum.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.monitormonitortarget.enums;
+
+import lombok.Getter;
+
+/**
+ * 监控设备与目标设备关系枚举
+ *
+ * @author 黄渊昊
+ * @date  2024/11/15 10:45
+ **/
+@Getter
+public enum MonitorMonitorTargetEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    MonitorMonitorTargetEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/mapper/MonitorMonitorTargetMapper.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.monitormonitortarget.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.entity.MonitorMonitorTarget;
+
+/**
+ * 监控设备与目标设备关系Mapper接口
+ *
+ * @author 黄渊昊
+ * @date  2024/11/15 10:45
+ **/
+public interface MonitorMonitorTargetMapper extends BaseMapper<MonitorMonitorTarget> {
+}

+ 5 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/mapper/mapping/MonitorMonitorTargetMapper.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.monitormonitortarget.mapper.MonitorMonitorTargetMapper">
+
+</mapper>

+ 66 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/param/MonitorMonitorTargetAddParam.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.monitormonitortarget.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/15 10:45
+ **/
+@Getter
+@Setter
+public class MonitorMonitorTargetAddParam {
+
+    /** 监控设备ID */
+    @Schema(description = "监控设备ID")
+    private String monitorDeviceId;
+
+    /** 目标设备ID */
+    @Schema(description = "目标设备ID")
+    private String monitorTargetId;
+
+    /** 目标设备区域ID */
+    @Schema(description = "目标设备区域ID")
+    private String monitorTargetRegionId;
+
+    /** 传感器路数 */
+    @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;
+
+}

+ 71 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/param/MonitorMonitorTargetEditParam.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.monitormonitortarget.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/15 10:45
+ **/
+@Getter
+@Setter
+public class MonitorMonitorTargetEditParam {
+
+    /** 主键 */
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /** 监控设备ID */
+    @Schema(description = "监控设备ID")
+    private String monitorDeviceId;
+
+    /** 目标设备ID */
+    @Schema(description = "目标设备ID")
+    private String monitorTargetId;
+
+    /** 目标设备区域ID */
+    @Schema(description = "目标设备区域ID")
+    private String monitorTargetRegionId;
+
+    /** 传感器路数 */
+    @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;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/param/MonitorMonitorTargetIdParam.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.monitormonitortarget.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/15 10:45
+ **/
+@Getter
+@Setter
+public class MonitorMonitorTargetIdParam {
+
+    /** 主键 */
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+}

+ 51 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/param/MonitorMonitorTargetPageParam.java

@@ -0,0 +1,51 @@
+/*
+ * 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.monitormonitortarget.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/15 10:45
+ **/
+@Getter
+@Setter
+public class MonitorMonitorTargetPageParam {
+
+    /** 当前页 */
+    @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;
+
+}

+ 80 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/service/MonitorMonitorTargetService.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.monitormonitortarget.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.entity.MonitorMonitorTarget;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.param.MonitorMonitorTargetAddParam;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.param.MonitorMonitorTargetEditParam;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.param.MonitorMonitorTargetIdParam;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.param.MonitorMonitorTargetPageParam;
+
+import java.util.List;
+
+/**
+ * 监控设备与目标设备关系Service接口
+ *
+ * @author 黄渊昊
+ * @date  2024/11/15 10:45
+ **/
+public interface MonitorMonitorTargetService extends IService<MonitorMonitorTarget> {
+
+    /**
+     * 获取监控设备与目标设备关系分页
+     *
+     * @author 黄渊昊
+     * @date  2024/11/15 10:45
+     */
+    Page<MonitorMonitorTarget> page(MonitorMonitorTargetPageParam monitorMonitorTargetPageParam);
+
+    /**
+     * 添加监控设备与目标设备关系
+     *
+     * @author 黄渊昊
+     * @date  2024/11/15 10:45
+     */
+    void add(MonitorMonitorTargetAddParam monitorMonitorTargetAddParam);
+
+    /**
+     * 编辑监控设备与目标设备关系
+     *
+     * @author 黄渊昊
+     * @date  2024/11/15 10:45
+     */
+    void edit(MonitorMonitorTargetEditParam monitorMonitorTargetEditParam);
+
+    /**
+     * 删除监控设备与目标设备关系
+     *
+     * @author 黄渊昊
+     * @date  2024/11/15 10:45
+     */
+    void delete(List<MonitorMonitorTargetIdParam> monitorMonitorTargetIdParamList);
+
+    /**
+     * 获取监控设备与目标设备关系详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/15 10:45
+     */
+    MonitorMonitorTarget detail(MonitorMonitorTargetIdParam monitorMonitorTargetIdParam);
+
+    /**
+     * 获取监控设备与目标设备关系详情
+     *
+     * @author 黄渊昊
+     * @date  2024/11/15 10:45
+     **/
+    MonitorMonitorTarget queryEntity(String id);
+}

+ 94 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitormonitortarget/service/impl/MonitorMonitorTargetServiceImpl.java

@@ -0,0 +1,94 @@
+/*
+ * 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.monitormonitortarget.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.monitormonitortarget.entity.MonitorMonitorTarget;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.mapper.MonitorMonitorTargetMapper;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.param.MonitorMonitorTargetAddParam;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.param.MonitorMonitorTargetEditParam;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.param.MonitorMonitorTargetIdParam;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.param.MonitorMonitorTargetPageParam;
+import vip.xiaonuo.coldchain.modular.monitormonitortarget.service.MonitorMonitorTargetService;
+
+import java.util.List;
+
+/**
+ * 监控设备与目标设备关系Service接口实现类
+ *
+ * @author 黄渊昊
+ * @date  2024/11/15 10:45
+ **/
+@Service
+public class MonitorMonitorTargetServiceImpl extends ServiceImpl<MonitorMonitorTargetMapper, MonitorMonitorTarget> implements MonitorMonitorTargetService {
+
+    @Override
+    public Page<MonitorMonitorTarget> page(MonitorMonitorTargetPageParam monitorMonitorTargetPageParam) {
+        QueryWrapper<MonitorMonitorTarget> queryWrapper = new QueryWrapper<MonitorMonitorTarget>().checkSqlInjection();
+        if(ObjectUtil.isAllNotEmpty(monitorMonitorTargetPageParam.getSortField(), monitorMonitorTargetPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(monitorMonitorTargetPageParam.getSortOrder());
+            queryWrapper.orderBy(true, monitorMonitorTargetPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(monitorMonitorTargetPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(MonitorMonitorTarget::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(MonitorMonitorTargetAddParam monitorMonitorTargetAddParam) {
+        MonitorMonitorTarget monitorMonitorTarget = BeanUtil.toBean(monitorMonitorTargetAddParam, MonitorMonitorTarget.class);
+        this.save(monitorMonitorTarget);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(MonitorMonitorTargetEditParam monitorMonitorTargetEditParam) {
+        MonitorMonitorTarget monitorMonitorTarget = this.queryEntity(monitorMonitorTargetEditParam.getId());
+        BeanUtil.copyProperties(monitorMonitorTargetEditParam, monitorMonitorTarget);
+        this.updateById(monitorMonitorTarget);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<MonitorMonitorTargetIdParam> monitorMonitorTargetIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(monitorMonitorTargetIdParamList, MonitorMonitorTargetIdParam::getId));
+    }
+
+    @Override
+    public MonitorMonitorTarget detail(MonitorMonitorTargetIdParam monitorMonitorTargetIdParam) {
+        return this.queryEntity(monitorMonitorTargetIdParam.getId());
+    }
+
+    @Override
+    public MonitorMonitorTarget queryEntity(String id) {
+        MonitorMonitorTarget monitorMonitorTarget = this.getById(id);
+        if(ObjectUtil.isEmpty(monitorMonitorTarget)) {
+            throw new CommonException("监控设备与目标设备关系不存在,id值为:{}", id);
+        }
+        return monitorMonitorTarget;
+    }
+}