Przeglądaj źródła

v1.0-feature:添加文档注释整合swagger spring doc

18280303334 2 miesięcy temu
rodzic
commit
f3c6b89f1b

+ 42 - 7
iot-platform-common/pom.xml

@@ -11,13 +11,48 @@
 
 
     <artifactId>iot-platform-common</artifactId>
     <artifactId>iot-platform-common</artifactId>
     <packaging>jar</packaging>
     <packaging>jar</packaging>
-
-    <properties>
-        <maven.compiler.source>17</maven.compiler.source>
-        <maven.compiler.target>17</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
-
+    <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.zaxxer</groupId>
+            <artifactId>HikariCP</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.taosdata.jdbc</groupId>
+            <artifactId>taos-jdbcdriver</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+    </dependencies>
     <build>
     <build>
         <plugins>
         <plugins>
             <plugin>
             <plugin>

+ 18 - 8
iot-platform-manager/pom.xml

@@ -9,20 +9,30 @@
         <version>${revision}</version>
         <version>${revision}</version>
     </parent>
     </parent>
 
 
-
     <artifactId>iot-platform-manager</artifactId>
     <artifactId>iot-platform-manager</artifactId>
     <packaging>jar</packaging>
     <packaging>jar</packaging>
-    <properties>
-        <maven.compiler.source>17</maven.compiler.source>
-        <maven.compiler.target>17</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
     <dependencies>
     <dependencies>
         <dependency>
         <dependency>
             <groupId>com.platform</groupId>
             <groupId>com.platform</groupId>
             <artifactId>iot-platform-common</artifactId>
             <artifactId>iot-platform-common</artifactId>
-            <version>1.0.0</version>
-            <scope>compile</scope>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
         </dependency>
         </dependency>
     </dependencies>
     </dependencies>
 
 

+ 7 - 5
iot-platform-manager/src/main/java/com/platform/api/controller/TransferController.java

@@ -1,11 +1,12 @@
 package com.platform.api.controller;
 package com.platform.api.controller;
 
 
-
 import com.platform.api.manager.TransferVehicleManage;
 import com.platform.api.manager.TransferVehicleManage;
 import com.platform.api.request.VehicleDataRequest;
 import com.platform.api.request.VehicleDataRequest;
 import com.platform.api.request.VehicleDataSaveRequest;
 import com.platform.api.request.VehicleDataSaveRequest;
 import com.platform.api.response.VehicleDataResp;
 import com.platform.api.response.VehicleDataResp;
 import com.platform.exception.BaseResult;
 import com.platform.exception.BaseResult;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.annotation.Resource;
 import jakarta.annotation.Resource;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotBlank;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
@@ -22,7 +23,7 @@ import java.util.List;
  * Des: 开物云4.0对外接口
  * Des: 开物云4.0对外接口
  * Version: 1.0
  * Version: 1.0
  */
  */
-
+@Tag(name = "数据传输接口", description = "车辆数据采集和查询相关接口")
 @RestController
 @RestController
 @RequestMapping("/api/transfer")
 @RequestMapping("/api/transfer")
 public class TransferController {
 public class TransferController {
@@ -33,6 +34,7 @@ public class TransferController {
     /**
     /**
      * 保存车辆数据
      * 保存车辆数据
      */
      */
+    @Operation(summary = "保存车辆数据", description = "保存车辆实时采集的数据")
     @PostMapping("/saveVehicleData")
     @PostMapping("/saveVehicleData")
     public BaseResult<Boolean> saveVehicleData(@RequestBody @Validated VehicleDataSaveRequest request) {
     public BaseResult<Boolean> saveVehicleData(@RequestBody @Validated VehicleDataSaveRequest request) {
         transferVehicleManage.saveVehicleData(request);
         transferVehicleManage.saveVehicleData(request);
@@ -42,6 +44,7 @@ public class TransferController {
     /**
     /**
      * 分页查询车辆数据
      * 分页查询车辆数据
      */
      */
+    @Operation(summary = "查询车辆数据列表", description = "分页查询车辆历史数据")
     @PostMapping("/queryVehicleDataList")
     @PostMapping("/queryVehicleDataList")
     public BaseResult<List<VehicleDataResp>> queryVehicleDataList(@RequestBody VehicleDataRequest request) {
     public BaseResult<List<VehicleDataResp>> queryVehicleDataList(@RequestBody VehicleDataRequest request) {
         return BaseResult.success(transferVehicleManage.queryVehicleDataList(request));
         return BaseResult.success(transferVehicleManage.queryVehicleDataList(request));
@@ -50,10 +53,9 @@ public class TransferController {
     /**
     /**
      * 通过车牌查询实时经纬度
      * 通过车牌查询实时经纬度
      */
      */
+    @Operation(summary = "查询实时位置", description = "根据车牌号查询车辆的实时经纬度")
     @PostMapping("/queryRealTimeLocation")
     @PostMapping("/queryRealTimeLocation")
     public BaseResult<VehicleDataResp> queryRealTimeLocation(@RequestBody VehicleDataRequest request) {
     public BaseResult<VehicleDataResp> queryRealTimeLocation(@RequestBody VehicleDataRequest request) {
         return BaseResult.success(transferVehicleManage.queryRealTimeLocation(request));
         return BaseResult.success(transferVehicleManage.queryRealTimeLocation(request));
     }
     }
-
-
-}
+}

+ 43 - 0
iot-platform-manager/src/main/java/com/platform/config/OpenApiConfig.java

@@ -0,0 +1,43 @@
+package com.platform.config;
+
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Contact;
+import io.swagger.v3.oas.models.info.Info;
+import io.swagger.v3.oas.models.info.License;
+import io.swagger.v3.oas.models.servers.Server;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+
+@Configuration
+public class OpenApiConfig {
+
+    @Value("${spring.application.name:Application}")
+    private String applicationName;
+
+    @Bean
+    public OpenAPI customOpenAPI() {
+        return new OpenAPI()
+                .info(new Info()
+                        .title(applicationName + " API")
+                        .version("1.0.0")
+                        .description("物联网平台 OpenAPI DOC文档 - 提供设备管理、模型管理、数据采集等API接口")
+                        .contact(new Contact()
+                                .name("物联网平台开发团队")
+                                .email("iot-dev@example.com")
+                                .url("https://iot-platform.com"))
+                        .license(new License()
+                                .name("Apache 2.0")
+                                .url("https://www.apache.org/licenses/LICENSE-2.0")))
+                .servers(List.of(
+                        new Server()
+                                .url("http://localhost:8889")
+                                .description("开发环境"),
+                        new Server()
+                                .url("https://api.example.com")
+                                .description("生产环境")
+                ));
+    }
+}

+ 14 - 2
iot-platform-manager/src/main/java/com/platform/controller/IotDeviceController.java

@@ -8,6 +8,9 @@ import com.platform.request.device.IotDeviceRequest;
 import com.platform.request.device.IotDeviceSaveRequest;
 import com.platform.request.device.IotDeviceSaveRequest;
 import com.platform.response.device.IotDeviceResp;
 import com.platform.response.device.IotDeviceResp;
 import com.platform.result.HttpResult;
 import com.platform.result.HttpResult;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
@@ -17,6 +20,7 @@ import org.springframework.web.multipart.MultipartFile;
  * 物联网设备管理控制器
  * 物联网设备管理控制器
  * @author PC
  * @author PC
  */
  */
+@Tag(name = "设备管理", description = "物联网设备管理相关接口")
 @RestController
 @RestController
 @RequestMapping("/iot/device")
 @RequestMapping("/iot/device")
 @RequiredArgsConstructor
 @RequiredArgsConstructor
@@ -27,6 +31,7 @@ public class IotDeviceController {
     /**
     /**
      * 分页查询物联设备
      * 分页查询物联设备
      */
      */
+    @Operation(summary = "分页查询设备列表", description = "根据条件分页查询物联网设备列表")
     @PostMapping("/pageDeviceList")
     @PostMapping("/pageDeviceList")
     public PageResult<IotDeviceResp> pageDeviceList(@RequestBody IotDeviceRequest request) {
     public PageResult<IotDeviceResp> pageDeviceList(@RequestBody IotDeviceRequest request) {
         return iotDeviceManage.pageDeviceList(request);
         return iotDeviceManage.pageDeviceList(request);
@@ -35,6 +40,7 @@ public class IotDeviceController {
     /**
     /**
      * 添加物联网设备
      * 添加物联网设备
      */
      */
+    @Operation(summary = "添加设备", description = "添加新的物联网设备")
     @PostMapping("/addDevice")
     @PostMapping("/addDevice")
     public BaseResult<Boolean> addDevice(@RequestBody IotDeviceSaveRequest request) {
     public BaseResult<Boolean> addDevice(@RequestBody IotDeviceSaveRequest request) {
         return BaseResult.success(iotDeviceManage.addDevice(request));
         return BaseResult.success(iotDeviceManage.addDevice(request));
@@ -43,6 +49,7 @@ public class IotDeviceController {
     /**
     /**
      * 修改物联网设备
      * 修改物联网设备
      */
      */
+    @Operation(summary = "修改设备", description = "修改已存在的物联网设备信息")
     @PostMapping("/updateDevice")
     @PostMapping("/updateDevice")
     public BaseResult<Boolean> updateDevice(@RequestBody IotDeviceSaveRequest request) {
     public BaseResult<Boolean> updateDevice(@RequestBody IotDeviceSaveRequest request) {
         return BaseResult.success(iotDeviceManage.updateDevice(request));
         return BaseResult.success(iotDeviceManage.updateDevice(request));
@@ -51,6 +58,8 @@ public class IotDeviceController {
     /**
     /**
      * 删除物联网设备
      * 删除物联网设备
      */
      */
+    @Operation(summary = "删除设备", description = "根据设备ID删除物联网设备")
+    @Parameter(name = "id", description = "设备ID", required = true)
     @GetMapping("/delDevice")
     @GetMapping("/delDevice")
     public BaseResult<Boolean> deleteDevice(String id) {
     public BaseResult<Boolean> deleteDevice(String id) {
         return BaseResult.success(iotDeviceManage.deleteDevice(id));
         return BaseResult.success(iotDeviceManage.deleteDevice(id));
@@ -59,15 +68,16 @@ public class IotDeviceController {
     /**
     /**
      * 物联设备详情查询
      * 物联设备详情查询
      */
      */
+    @Operation(summary = "查询设备详情", description = "根据设备ID查询设备详细信息")
     @PostMapping("/getDeviceDetail")
     @PostMapping("/getDeviceDetail")
     public BaseResult<IotDeviceResp> getDeviceDetail(@RequestBody IotDeviceDetailRequest req) {
     public BaseResult<IotDeviceResp> getDeviceDetail(@RequestBody IotDeviceDetailRequest req) {
         return BaseResult.success(iotDeviceManage.getDeviceDetail(req));
         return BaseResult.success(iotDeviceManage.getDeviceDetail(req));
     }
     }
 
 
-
     /**
     /**
      * 下载设备导入模板
      * 下载设备导入模板
      */
      */
+    @Operation(summary = "下载导入模板", description = "下载设备批量导入的Excel模板文件")
     @PostMapping("/exportTemplate")
     @PostMapping("/exportTemplate")
     public HttpResult<Void> exportTemplate(HttpServletResponse response) {
     public HttpResult<Void> exportTemplate(HttpServletResponse response) {
         return HttpResult.success(iotDeviceManage.exportTemplate(response));
         return HttpResult.success(iotDeviceManage.exportTemplate(response));
@@ -76,9 +86,11 @@ public class IotDeviceController {
     /**
     /**
      * 批量导入设备
      * 批量导入设备
      */
      */
+    @Operation(summary = "批量导入设备", description = "通过Excel文件批量导入设备信息")
+    @Parameter(name = "file", description = "Excel文件", required = true)
     @PostMapping("/importExcel")
     @PostMapping("/importExcel")
     public HttpResult<Void> importExcel(@RequestParam("file") MultipartFile file) {
     public HttpResult<Void> importExcel(@RequestParam("file") MultipartFile file) {
         return HttpResult.success(iotDeviceManage.importExcel(file));
         return HttpResult.success(iotDeviceManage.importExcel(file));
     }
     }
     //todo cxf 备黑白名单,设备动态  查询saas_equipment_manage表,还需要查询时序表
     //todo cxf 备黑白名单,设备动态  查询saas_equipment_manage表,还需要查询时序表
-}
+}

+ 9 - 3
iot-platform-manager/src/main/java/com/platform/controller/IotDeviceGroupController.java

@@ -5,6 +5,9 @@ import com.platform.manage.IotDeviceGroupManage;
 import com.platform.request.deviceGroup.IotDeviceGroupRequest;
 import com.platform.request.deviceGroup.IotDeviceGroupRequest;
 import com.platform.request.deviceGroup.IotDeviceGroupSaveRequest;
 import com.platform.request.deviceGroup.IotDeviceGroupSaveRequest;
 import com.platform.response.deviceGroup.IotDeviceGroupPageResp;
 import com.platform.response.deviceGroup.IotDeviceGroupPageResp;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
@@ -15,6 +18,7 @@ import java.util.List;
  * 物联网设备管理控制器
  * 物联网设备管理控制器
  * @author PC
  * @author PC
  */
  */
+@Tag(name = "设备分组管理", description = "物联网设备分组管理相关接口")
 @RestController
 @RestController
 @RequestMapping("/iot/device/group")
 @RequestMapping("/iot/device/group")
 @RequiredArgsConstructor
 @RequiredArgsConstructor
@@ -26,6 +30,7 @@ public class IotDeviceGroupController {
     /**
     /**
      * 查询物联设备
      * 查询物联设备
      */
      */
+    @Operation(summary = "查询设备分组列表", description = "根据条件查询设备分组列表")
     @PostMapping("/pageGroupDevice")
     @PostMapping("/pageGroupDevice")
     public BaseResult<List<IotDeviceGroupPageResp>> pageGroupDevice(@RequestBody IotDeviceGroupRequest request) {
     public BaseResult<List<IotDeviceGroupPageResp>> pageGroupDevice(@RequestBody IotDeviceGroupRequest request) {
         return BaseResult.success(iotDeviceGroupManage.queryGroupDevice(request));
         return BaseResult.success(iotDeviceGroupManage.queryGroupDevice(request));
@@ -34,6 +39,7 @@ public class IotDeviceGroupController {
     /**
     /**
      * 添加物联设备
      * 添加物联设备
      */
      */
+    @Operation(summary = "添加设备分组", description = "添加新的设备分组")
     @PostMapping("/addDeviceGroup")
     @PostMapping("/addDeviceGroup")
     public BaseResult<Boolean> addDeviceGroup(@RequestBody @Validated IotDeviceGroupSaveRequest request) {
     public BaseResult<Boolean> addDeviceGroup(@RequestBody @Validated IotDeviceGroupSaveRequest request) {
         return BaseResult.success(iotDeviceGroupManage.addDeviceGroup(request));
         return BaseResult.success(iotDeviceGroupManage.addDeviceGroup(request));
@@ -42,10 +48,10 @@ public class IotDeviceGroupController {
     /**
     /**
      * 删除物联设备
      * 删除物联设备
      */
      */
+    @Operation(summary = "删除设备分组", description = "根据分组ID删除设备分组")
+    @Parameter(name = "id", description = "分组ID", required = true)
     @GetMapping("/delDeviceGroup")
     @GetMapping("/delDeviceGroup")
     public BaseResult<Boolean> delDeviceGroup(Long id) {
     public BaseResult<Boolean> delDeviceGroup(Long id) {
         return BaseResult.success(iotDeviceGroupManage.delDeviceGroup(id));
         return BaseResult.success(iotDeviceGroupManage.delDeviceGroup(id));
     }
     }
-
-
-}
+}

+ 16 - 10
iot-platform-manager/src/main/java/com/platform/controller/IotModController.java

@@ -1,6 +1,5 @@
 package com.platform.controller;
 package com.platform.controller;
 
 
-
 import com.platform.exception.BaseResult;
 import com.platform.exception.BaseResult;
 import com.platform.exception.PageResult;
 import com.platform.exception.PageResult;
 import com.platform.manage.IotModManage;
 import com.platform.manage.IotModManage;
@@ -8,17 +7,20 @@ import com.platform.request.mod.IotModDetailReq;
 import com.platform.request.mod.IotModRequest;
 import com.platform.request.mod.IotModRequest;
 import com.platform.request.mod.IotModSaveRequest;
 import com.platform.request.mod.IotModSaveRequest;
 import com.platform.response.mod.IotModResp;
 import com.platform.response.mod.IotModResp;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 /**
 /**
-*@Author: donglang
-*@CreateTime: 2025-10-09
-*@Description: 物联模型Controller
-*@Version: 1.0
-*/
-
+ * @Author: donglang
+ * @CreateTime: 2025-10-09
+ * @Description: 物联模型Controller
+ * @Version: 1.0
+ */
+@Tag(name = "物联模型管理", description = "物联网模型定义和管理相关接口")
 @RestController
 @RestController
 @RequestMapping("/iot/mod")
 @RequestMapping("/iot/mod")
 @RequiredArgsConstructor
 @RequiredArgsConstructor
@@ -26,10 +28,10 @@ public class IotModController {
 
 
     private final IotModManage iotModManage;
     private final IotModManage iotModManage;
 
 
-
     /**
     /**
      * 分页查询物理模型
      * 分页查询物理模型
      */
      */
+    @Operation(summary = "分页查询模型列表", description = "根据条件分页查询物联模型列表")
     @PostMapping("/pageModList")
     @PostMapping("/pageModList")
     public BaseResult<PageResult<IotModResp>> pageModList(@RequestBody IotModRequest request) {
     public BaseResult<PageResult<IotModResp>> pageModList(@RequestBody IotModRequest request) {
         return BaseResult.success(iotModManage.pageModList(request));
         return BaseResult.success(iotModManage.pageModList(request));
@@ -38,6 +40,7 @@ public class IotModController {
     /**
     /**
      * 添加物理模型
      * 添加物理模型
      */
      */
+    @Operation(summary = "添加模型", description = "添加新的物联模型")
     @PostMapping("/addMod")
     @PostMapping("/addMod")
     public BaseResult<Boolean> addMod(@RequestBody IotModSaveRequest request) {
     public BaseResult<Boolean> addMod(@RequestBody IotModSaveRequest request) {
         return BaseResult.success(iotModManage.addMod(request));
         return BaseResult.success(iotModManage.addMod(request));
@@ -46,6 +49,7 @@ public class IotModController {
     /**
     /**
      * 修改物理模型
      * 修改物理模型
      */
      */
+    @Operation(summary = "修改模型", description = "修改已存在的物联模型信息")
     @PostMapping("/updateMod")
     @PostMapping("/updateMod")
     public BaseResult<Boolean> updateMod(@RequestBody IotModSaveRequest request) {
     public BaseResult<Boolean> updateMod(@RequestBody IotModSaveRequest request) {
         return BaseResult.success(iotModManage.updateMod(request));
         return BaseResult.success(iotModManage.updateMod(request));
@@ -54,6 +58,8 @@ public class IotModController {
     /**
     /**
      * 删除物理模型
      * 删除物理模型
      */
      */
+    @Operation(summary = "删除模型", description = "根据模型ID删除物联模型")
+    @Parameter(name = "id", description = "模型ID", required = true)
     @GetMapping("/deleteMod")
     @GetMapping("/deleteMod")
     public BaseResult<Boolean> deleteMod(Long id) {
     public BaseResult<Boolean> deleteMod(Long id) {
         return BaseResult.success(iotModManage.deleteMod(id));
         return BaseResult.success(iotModManage.deleteMod(id));
@@ -62,9 +68,9 @@ public class IotModController {
     /**
     /**
      * 物理模型详情查询
      * 物理模型详情查询
      */
      */
+    @Operation(summary = "查询模型详情", description = "根据模型ID查询模型详细信息")
     @PostMapping("/getModDetail")
     @PostMapping("/getModDetail")
     public BaseResult<IotModResp> getModDetail(@RequestBody @Validated IotModDetailReq req) {
     public BaseResult<IotModResp> getModDetail(@RequestBody @Validated IotModDetailReq req) {
         return BaseResult.success(iotModManage.getModDetail(req));
         return BaseResult.success(iotModManage.getModDetail(req));
     }
     }
-
-}
+}

+ 20 - 6
iot-platform-manager/src/main/java/com/platform/controller/IotModGroupController.java

@@ -1,23 +1,26 @@
 package com.platform.controller;
 package com.platform.controller;
 
 
-
 import com.platform.exception.BaseResult;
 import com.platform.exception.BaseResult;
 import com.platform.exception.PageResult;
 import com.platform.exception.PageResult;
 import com.platform.manage.IotModGroupManage;
 import com.platform.manage.IotModGroupManage;
 import com.platform.request.modGroup.IotModGroupRequest;
 import com.platform.request.modGroup.IotModGroupRequest;
 import com.platform.request.modGroup.IotModGroupSaveRequest;
 import com.platform.request.modGroup.IotModGroupSaveRequest;
 import com.platform.response.modGroup.IotModGroupPageResp;
 import com.platform.response.modGroup.IotModGroupPageResp;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 /**
 /**
+ * 物联模型分组控制器
  * Author: donglang
  * Author: donglang
  * Time: 2025-10-09
  * Time: 2025-10-09
- * Description: 物联模型分组Controller
+ * Description: 物联模型分组Controller - 提供物联模型分组的增删查功能
  * Version: 1.0
  * Version: 1.0
  */
  */
-
+@Tag(name = "模型分组管理", description = "物联网模型分组管理相关接口,包括模型分组的查询、添加和删除操作")
 @RestController
 @RestController
 @RequestMapping("/iot/mod/group")
 @RequestMapping("/iot/mod/group")
 @RequiredArgsConstructor
 @RequiredArgsConstructor
@@ -28,6 +31,10 @@ public class IotModGroupController {
     /**
     /**
      * 分页查询物理模型分组
      * 分页查询物理模型分组
      */
      */
+    @Operation(
+        summary = "分页查询模型分组列表", 
+        description = "根据条件分页查询物联模型分组列表,支持按分组名称模糊查询"
+    )
     @PostMapping("/pageModGroupList")
     @PostMapping("/pageModGroupList")
     public BaseResult<PageResult<IotModGroupPageResp>> pageModList(@RequestBody IotModGroupRequest request) {
     public BaseResult<PageResult<IotModGroupPageResp>> pageModList(@RequestBody IotModGroupRequest request) {
         return BaseResult.success(iotModGroupManage.pageModGroupList(request));
         return BaseResult.success(iotModGroupManage.pageModGroupList(request));
@@ -36,6 +43,10 @@ public class IotModGroupController {
     /**
     /**
      * 添加物理模型分组
      * 添加物理模型分组
      */
      */
+    @Operation(
+        summary = "添加模型分组", 
+        description = "添加新的物联模型分组,分组名称不能重复"
+    )
     @PostMapping("/addModGroup")
     @PostMapping("/addModGroup")
     public BaseResult<Boolean> addModGroup(@RequestBody @Validated IotModGroupSaveRequest request) {
     public BaseResult<Boolean> addModGroup(@RequestBody @Validated IotModGroupSaveRequest request) {
         return BaseResult.success(iotModGroupManage.addModGroup(request));
         return BaseResult.success(iotModGroupManage.addModGroup(request));
@@ -44,10 +55,13 @@ public class IotModGroupController {
     /**
     /**
      * 删除物理模型分组
      * 删除物理模型分组
      */
      */
+    @Operation(
+        summary = "删除模型分组", 
+        description = "根据分组ID删除物联模型分组,删除前请确保该分组下没有关联的模型"
+    )
+    @Parameter(name = "id", description = "模型分组ID", required = true, example = "1")
     @GetMapping("/deleteModGroup")
     @GetMapping("/deleteModGroup")
     public BaseResult<Boolean> deleteModGroup(Long id) {
     public BaseResult<Boolean> deleteModGroup(Long id) {
         return BaseResult.success(iotModGroupManage.deleteModGroup(id));
         return BaseResult.success(iotModGroupManage.deleteModGroup(id));
     }
     }
-
-
-}
+}

+ 5 - 7
iot-platform-manager/src/main/java/com/platform/request/device/IotDeviceRequest.java

@@ -1,18 +1,16 @@
 package com.platform.request.device;
 package com.platform.request.device;
 
 
 import com.platform.request.PageRequest;
 import com.platform.request.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
 
 
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
- * @Author: 马超伟
- * @CreateTime: 2025-10-09
- * @Description:
- * @Version: 1.0
+ * 设备查询请求参数
+ * @author cxf
  */
  */
-
-
+@Schema(description = "设备查询请求参数")
 @Data
 @Data
 public class IotDeviceRequest extends PageRequest {
 public class IotDeviceRequest extends PageRequest {
 
 
@@ -39,4 +37,4 @@ public class IotDeviceRequest extends PageRequest {
 
 
 
 
 
 
-}
+}

+ 12 - 4
iot-platform-manager/src/main/java/com/platform/request/device/IotDeviceSaveRequest.java

@@ -1,53 +1,61 @@
 package com.platform.request.device;
 package com.platform.request.device;
 
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
 
 
 /**
 /**
- * 设备表实体类
+ * 设备保存请求参数
  * @author cxf
  * @author cxf
  */
  */
+@Schema(description = "设备保存请求参数")
 @Data
 @Data
 public class IotDeviceSaveRequest {
 public class IotDeviceSaveRequest {
 
 
     /**
     /**
      * 主键id
      * 主键id
      */
      */
+    @Schema(description = "设备ID,新增时为空,修改时必填", example = "1")
     private Long id;
     private Long id;
 
 
     /**
     /**
      * 物联网模型码值
      * 物联网模型码值
      */
      */
+    @Schema(description = "物联网模型码值", requiredMode = Schema.RequiredMode.REQUIRED, example = "MOD001")
     private String modCode;
     private String modCode;
 
 
     /**
     /**
      * 设备名称[旧系统的title]
      * 设备名称[旧系统的title]
      */
      */
+    @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "智能温度传感器")
     private String deviceName;
     private String deviceName;
 
 
     /**
     /**
      * 设备分组码值
      * 设备分组码值
      */
      */
+    @Schema(description = "设备分组码值", example = "GROUP001")
     private String deviceGroupCode;
     private String deviceGroupCode;
 
 
     /**
     /**
      * 设备品牌名称
      * 设备品牌名称
      */
      */
+    @Schema(description = "设备品牌名称", example = "华为")
     private String brand;
     private String brand;
 
 
     /**
     /**
      * 型号
      * 型号
      */
      */
+    @Schema(description = "设备型号", example = "TEMP-SENSOR-V1")
     private String modelCode;
     private String modelCode;
 
 
     /**
     /**
      * sn通常是:IMEI
      * sn通常是:IMEI
      */
      */
+    @Schema(description = "设备序列号(通常是IMEI)", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456789012345")
     private String sn;
     private String sn;
 
 
     /**
     /**
      * 备注
      * 备注
      */
      */
+    @Schema(description = "备注信息", example = "安装在会议室")
     private String remarks;
     private String remarks;
-
-
-}
+}

+ 7 - 9
iot-platform-manager/src/main/java/com/platform/request/modGroup/IotModGroupRequest.java

@@ -1,25 +1,23 @@
 package com.platform.request.modGroup;
 package com.platform.request.modGroup;
 
 
-
 import com.platform.request.PageRequest;
 import com.platform.request.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
 
 
 /**
 /**
+ * 物联模型分组查询请求参数
  * @Author: donglang
  * @Author: donglang
  * @CreateTime: 2025-10-09
  * @CreateTime: 2025-10-09
- * @Description:
+ * @Description: 物联模型分组查询请求
  * @Version: 1.0
  * @Version: 1.0
  */
  */
-
+@Schema(description = "物联模型分组查询请求参数")
 @Data
 @Data
-public class IotModGroupRequest  extends PageRequest {
-
+public class IotModGroupRequest extends PageRequest {
 
 
     /**
     /**
      * 物模型分组名称
      * 物模型分组名称
      */
      */
+    @Schema(description = "物模型分组名称(模糊查询)", example = "温度传感器")
     private String name;
     private String name;
-
-
-
-}
+}

+ 7 - 5
iot-platform-manager/src/main/java/com/platform/request/modGroup/IotModGroupSaveRequest.java

@@ -1,28 +1,30 @@
 package com.platform.request.modGroup;
 package com.platform.request.modGroup;
 
 
-
+import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 import lombok.Data;
 
 
 /**
 /**
+ * 物联模型分组保存请求参数
  * @Author: donglang
  * @Author: donglang
  * @CreateTime: 2025-10-09
  * @CreateTime: 2025-10-09
- * @Description:
+ * @Description: 物联模型分组保存请求
  * @Version: 1.0
  * @Version: 1.0
  */
  */
-
+@Schema(description = "物联模型分组保存请求参数")
 @Data
 @Data
 public class IotModGroupSaveRequest {
 public class IotModGroupSaveRequest {
 
 
     /**
     /**
      * 物模型分组名称
      * 物模型分组名称
      */
      */
+    @Schema(description = "物模型分组名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "温度传感器分组")
     @NotBlank(message = "物模型分组名称不能为null")
     @NotBlank(message = "物模型分组名称不能为null")
     private String name;
     private String name;
 
 
     /**
     /**
      * 创建人
      * 创建人
      */
      */
+    @Schema(description = "创建人", example = "admin")
     private String createUser;
     private String createUser;
-
-}
+}

+ 24 - 9
iot-platform-manager/src/main/java/com/platform/response/device/IotDeviceResp.java

@@ -1,37 +1,40 @@
 package com.platform.response.device;
 package com.platform.response.device;
 
 
 import com.platform.entity.IotDevice;
 import com.platform.entity.IotDevice;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
 
 
+import java.time.LocalDateTime;
+
 /**
 /**
- * @Author: 马超伟
- * @CreateTime: 2025-10-09
- * @Description:
- * @Version: 1.0
+ * 设备查询响应参数
+ * @author cxf
  */
  */
-
-
+@Schema(description = "设备查询响应参数")
 @Data
 @Data
 public class IotDeviceResp {
 public class IotDeviceResp {
 
 
     /**
     /**
-     * 设备主键id
+     * 主键id
      */
      */
+    @Schema(description = "设备ID", example = "1")
     private Long id;
     private Long id;
 
 
     /**
     /**
-     * 设备编号
+     * 物联网模型码值
      */
      */
     private String deviceCode;
     private String deviceCode;
 
 
     /**
     /**
      * 设备名称[旧系统的title]
      * 设备名称[旧系统的title]
      */
      */
+    @Schema(description = "设备名称", example = "智能温度传感器")
     private String deviceName;
     private String deviceName;
 
 
     /**
     /**
      * 设备分组码值
      * 设备分组码值
      */
      */
+    @Schema(description = "设备分组码值", example = "GROUP001")
     private String deviceGroupCode;
     private String deviceGroupCode;
 
 
     /**
     /**
@@ -52,26 +55,33 @@ public class IotDeviceResp {
     /**
     /**
      * 设备品牌名称
      * 设备品牌名称
      */
      */
+    @Schema(description = "设备品牌名称", example = "华为")
     private String brand;
     private String brand;
 
 
     /**
     /**
      * 型号
      * 型号
      */
      */
+    @Schema(description = "设备型号", example = "TEMP-SENSOR-V1")
     private String modelCode;
     private String modelCode;
 
 
     /**
     /**
      * sn通常是:IMEI
      * sn通常是:IMEI
      */
      */
+    @Schema(description = "设备序列号", example = "123456789012345")
     private String sn;
     private String sn;
 
 
     /**
     /**
      * 备注
      * 备注
      */
      */
+    @Schema(description = "备注信息", example = "安装在会议室")
     private String remarks;
     private String remarks;
 
 
     /**
     /**
+     * 创建时间
      * 设备类别
      * 设备类别
      */
      */
+    @Schema(description = "创建时间", example = "2024-01-01T10:00:00")
+    private LocalDateTime createTime;
     private Long egId;
     private Long egId;
 
 
 
 
@@ -79,6 +89,11 @@ public class IotDeviceResp {
         return new IotDeviceResp();
         return new IotDeviceResp();
     }
     }
 
 
+    /**
+     * 更新时间
+     */
+    @Schema(description = "更新时间", example = "2024-01-01T10:00:00")
+    private LocalDateTime updateTime;
     public static IotDeviceResp toIotPageResp(IotDevice iotDevice){
     public static IotDeviceResp toIotPageResp(IotDevice iotDevice){
         if (iotDevice == null) {
         if (iotDevice == null) {
             return new IotDeviceResp();
             return new IotDeviceResp();
@@ -96,4 +111,4 @@ public class IotDeviceResp {
 
 
         return devicePageResp;
         return devicePageResp;
     }
     }
-}
+}

+ 9 - 8
iot-platform-manager/src/main/java/com/platform/response/modGroup/IotModGroupPageResp.java

@@ -1,51 +1,54 @@
 package com.platform.response.modGroup;
 package com.platform.response.modGroup;
 
 
-
 import com.platform.entity.IotModGroup;
 import com.platform.entity.IotModGroup;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
 
 
-
 /**
 /**
+ * 物联模型分组响应参数
  * Author: donglang
  * Author: donglang
  * Time: 2025-10-09
  * Time: 2025-10-09
  * Des: 物理模型详情模型
  * Des: 物理模型详情模型
  * Version: 1.0
  * Version: 1.0
  */
  */
-
+@Schema(description = "物联模型分组响应参数")
 @Data
 @Data
 public class IotModGroupPageResp {
 public class IotModGroupPageResp {
 
 
     /**
     /**
      * 主键ID
      * 主键ID
      */
      */
+    @Schema(description = "分组ID", example = "1")
     private Long id;
     private Long id;
 
 
     /**
     /**
      * 所属客户id
      * 所属客户id
      */
      */
+    @Schema(description = "所属客户ID", example = "1001")
     private Long companyId;
     private Long companyId;
 
 
     /**
     /**
      * 租户id
      * 租户id
      */
      */
+    @Schema(description = "租户ID", example = "tenant001")
     private String tenantId;
     private String tenantId;
 
 
     /**
     /**
      * 物理模型分组码值唯一标识
      * 物理模型分组码值唯一标识
      */
      */
+    @Schema(description = "模型分组码值", example = "MOD_GROUP_001")
     private String modeGroupCode;
     private String modeGroupCode;
 
 
     /**
     /**
      * 物模型分组名称
      * 物模型分组名称
      */
      */
+    @Schema(description = "模型分组名称", example = "温度传感器分组")
     private String name;
     private String name;
 
 
-
     private static IotModGroupPageResp getInstance() {
     private static IotModGroupPageResp getInstance() {
         return new IotModGroupPageResp();
         return new IotModGroupPageResp();
     }
     }
 
 
-
     public static IotModGroupPageResp toIotPageResp(IotModGroup iotModGroup) {
     public static IotModGroupPageResp toIotPageResp(IotModGroup iotModGroup) {
         if (iotModGroup == null) {
         if (iotModGroup == null) {
             return new IotModGroupPageResp();
             return new IotModGroupPageResp();
@@ -57,7 +60,5 @@ public class IotModGroupPageResp {
         iotModDetailResp.setModeGroupCode(iotModGroup.getModeGroupCode());
         iotModDetailResp.setModeGroupCode(iotModGroup.getModeGroupCode());
         iotModDetailResp.setName(iotModGroup.getName());
         iotModDetailResp.setName(iotModGroup.getName());
         return iotModDetailResp;
         return iotModDetailResp;
-
     }
     }
-
-}
+}

+ 4 - 0
iot-platform-manager/src/main/resources/bootstrap.yml

@@ -1,4 +1,6 @@
 spring:
 spring:
+  config:
+    import: nacos:${spring.application.name}
   application:
   application:
     name: iot-platform
     name: iot-platform
   cloud:
   cloud:
@@ -10,6 +12,8 @@ spring:
         enabled: true
         enabled: true
         group: DEFAULT_GROUP
         group: DEFAULT_GROUP
       config:
       config:
+#        import-check:
+#          enabled: false
         namespace: iot
         namespace: iot
         server-addr: 10.10.10.224:8848   # Nacos 配置中心地址
         server-addr: 10.10.10.224:8848   # Nacos 配置中心地址
         enabled: true
         enabled: true

+ 166 - 107
pom.xml

@@ -24,107 +24,83 @@
 	<properties>
 	<properties>
 		<revision>1.0.0</revision>
 		<revision>1.0.0</revision>
 		<java.version>17</java.version>
 		<java.version>17</java.version>
+		<maven.compiler.source>17</maven.compiler.source>
+		<maven.compiler.target>17</maven.compiler.target>
+		<flatten-maven-plugin.version>1.3.0</flatten-maven-plugin.version>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+
         <spring-cloud.version>2023.0.1</spring-cloud.version>
         <spring-cloud.version>2023.0.1</spring-cloud.version>
         <spring-cloud-alibaba.version>2023.0.1.0</spring-cloud-alibaba.version>
         <spring-cloud-alibaba.version>2023.0.1.0</spring-cloud-alibaba.version>
+        
+        <!-- 依赖版本管理 -->
+        <mybatis-plus.version>3.5.7</mybatis-plus.version>
+        <hikaricp.version>5.0.1</hikaricp.version>
+        <mysql-connector.version>8.0.33</mysql-connector.version>
+        <dynamic-datasource.version>4.2.0</dynamic-datasource.version>
+        <tdengine-jdbc.version>3.7.6</tdengine-jdbc.version>
+        <easyexcel.version>3.3.4</easyexcel.version>
+        <commons-lang3.version>3.12.0</commons-lang3.version>
+        <springdoc-openapi.version>2.6.0</springdoc-openapi.version>
+        <knife4j.version>4.5.0</knife4j.version>
+		<maven-compiler-plugin.version>3.14.0</maven-compiler-plugin.version>
+		<lombok.version>1.18.38</lombok.version>
 	</properties>
 	</properties>
-	<dependencies>
-        <!-- MyBatis-Plus -->
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
-            <version>3.5.7</version>
-        </dependency>
-        <dependency>
-            <groupId>com.zaxxer</groupId>
-            <artifactId>HikariCP</artifactId>
-            <version>5.0.1</version>
-        </dependency>
-
-        <!-- MySQL Connector -->
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-            <version>8.0.33</version>
-        </dependency>
-        <!-- Nacos Discovery -->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
-        </dependency>
-
-        <!-- Nacos Config -->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
-        </dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-devtools</artifactId>
-			<scope>runtime</scope>
-			<optional>true</optional>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-test</artifactId>
-			<scope>test</scope>
-		</dependency>
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-bootstrap</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <scope>provided</scope>
-            <version>1.18.30</version>
-        </dependency>
-
-        <!-- 动态数据源依赖 -->
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
-            <version>4.2.0</version>
-        </dependency>
-
-        <!-- TDengine 官方 Java 驱动 -->
-        <dependency>
-            <groupId>com.taosdata.jdbc</groupId>
-            <artifactId>taos-jdbcdriver</artifactId>
-            <version>3.7.6</version> <!-- 版本根据 TDengine 服务器版本选择 -->
-        </dependency>
-
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>easyexcel</artifactId>
-            <version>3.3.4</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-            <version>3.12.0</version>
-        </dependency>
-        <!-- Spring Boot 校验 starter(推荐) -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-validation</artifactId>
-        </dependency>
-
+	<dependencyManagement>
+		<dependencies>
+			<!-- MyBatis-Plus -->
+			<dependency>
+				<groupId>com.baomidou</groupId>
+				<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
+				<version>${mybatis-plus.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>com.zaxxer</groupId>
+				<artifactId>HikariCP</artifactId>
+				<version>${hikaricp.version}</version>
+			</dependency>
 
 
+			<!-- MySQL Connector -->
+			<dependency>
+				<groupId>com.mysql</groupId>
+				<artifactId>mysql-connector-j</artifactId>
+				<version>${mysql-connector.version}</version>
+			</dependency>
 
 
+			<!-- 动态数据源依赖 -->
+			<dependency>
+				<groupId>com.baomidou</groupId>
+				<artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
+				<version>${dynamic-datasource.version}</version>
+			</dependency>
 
 
+			<!-- TDengine 官方 Java 驱动 -->
+			<dependency>
+				<groupId>com.taosdata.jdbc</groupId>
+				<artifactId>taos-jdbcdriver</artifactId>
+				<version>${tdengine-jdbc.version}</version>
+			</dependency>
 
 
-    </dependencies>
-	<dependencyManagement>
-		<dependencies>
+			<dependency>
+				<groupId>com.alibaba</groupId>
+				<artifactId>easyexcel</artifactId>
+				<version>${easyexcel.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>org.apache.commons</groupId>
+				<artifactId>commons-lang3</artifactId>
+				<version>${commons-lang3.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>org.springdoc</groupId>
+				<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
+				<version>${springdoc-openapi.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>com.github.xiaoymin</groupId>
+				<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
+				<version>${knife4j.version}</version>
+			</dependency>
 
 
 			<dependency>
 			<dependency>
 				<groupId>org.springframework.cloud</groupId>
 				<groupId>org.springframework.cloud</groupId>
@@ -133,26 +109,109 @@
 				<type>pom</type>
 				<type>pom</type>
 				<scope>import</scope>
 				<scope>import</scope>
 			</dependency>
 			</dependency>
-            <dependency>
-                <groupId>com.alibaba.cloud</groupId>
-                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
-                <version>${spring-cloud-alibaba.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
+			<dependency>
+				<groupId>com.alibaba.cloud</groupId>
+				<artifactId>spring-cloud-alibaba-dependencies</artifactId>
+				<version>${spring-cloud-alibaba.version}</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
+			<dependency>
+				<groupId>org.projectlombok</groupId>
+				<artifactId>lombok</artifactId>
+				<version>${lombok.version}</version>
+				<scope>provided</scope>
+			</dependency>
 		</dependencies>
 		</dependencies>
 	</dependencyManagement>
 	</dependencyManagement>
-
 	<build>
 	<build>
+		<resources>
+			<resource>
+				<directory>src/main/resources</directory>
+				<filtering>true</filtering>
+			</resource>
+		</resources>
 		<plugins>
 		<plugins>
+			<!-- Flatten Maven Plugin 必须在父POM中实际执行 -->
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>flatten-maven-plugin</artifactId>
+				<version>${flatten-maven-plugin.version}</version>
+				<configuration>
+					<updatePomFile>true</updatePomFile>
+					<flattenMode>resolveCiFriendliesOnly</flattenMode>
+				</configuration>
+				<executions>
+					<execution>
+						<id>flatten</id>
+						<phase>process-resources</phase>
+						<goals>
+							<goal>flatten</goal>
+						</goals>
+					</execution>
+					<execution>
+						<id>flatten.clean</id>
+						<phase>clean</phase>
+						<goals>
+							<goal>clean</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+			<!-- 其他插件 -->
 			<plugin>
 			<plugin>
 				<groupId>org.springframework.boot</groupId>
 				<groupId>org.springframework.boot</groupId>
 				<artifactId>spring-boot-maven-plugin</artifactId>
 				<artifactId>spring-boot-maven-plugin</artifactId>
-                <configuration>
-                    <jvmArguments>--enable-native-access=ALL-UNNAMED</jvmArguments>
-                </configuration>
+				<configuration>
+					<jvmArguments>--enable-native-access=ALL-UNNAMED</jvmArguments>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>${maven-compiler-plugin.version}</version>
+				<configuration>
+					<source>${java.version}</source>
+					<target>${java.version}</target>
+					<encoding>${project.build.sourceEncoding}</encoding>
+					<annotationProcessorPaths>
+						<path>
+							<groupId>org.projectlombok</groupId>
+							<artifactId>lombok</artifactId>
+							<version>${lombok.version}</version>
+						</path>
+					</annotationProcessorPaths>
+				</configuration>
 			</plugin>
 			</plugin>
 		</plugins>
 		</plugins>
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.springframework.boot</groupId>
+					<artifactId>spring-boot-maven-plugin</artifactId>
+					<configuration>
+						<jvmArguments>--enable-native-access=ALL-UNNAMED</jvmArguments>
+					</configuration>
+				</plugin>
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-compiler-plugin</artifactId>
+					<version>${maven-compiler-plugin.version}</version>
+					<configuration>
+						<source>${java.version}</source>
+						<target>${java.version}</target>
+						<encoding>${project.build.sourceEncoding}</encoding>
+						<annotationProcessorPaths>
+							<path>
+								<groupId>org.projectlombok</groupId>
+								<artifactId>lombok</artifactId>
+								<version>${lombok.version}</version>
+							</path>
+						</annotationProcessorPaths>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
 	</build>
 	</build>
-
-</project>
+</project>