From f7e880deb0612ba5efe96e6ce229abd8c19bc6e7 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期二, 03 九月 2024 09:08:23 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/HttpTagEntity.java                           |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/vo/ModBusTagPageReqVO.java                        |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/service/impl/ChannelModbusTagServiceImpl.java     |   74 -
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/service/ChannelModbusTagService.java              |   12 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/controller/admin/ChannelOPCUADeviceController.java |  111 -
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/HttpTagService.java                         |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/impl/ChannelOPCDATagServiceImpl.java       |  126 -
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/HttpTokenService.java                       |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaTagRespVO.java                             |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/PointCollector.java                             |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/EleLowTagEntity.java                         |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/dao/ChannelOPCUADeviceDao.java                     |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioTagController.java        |   83 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaDeviceRespVO.java                          |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaTagRespVO.java                             |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/impl/HttpTagServiceImpl.java                |   76 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpApiPageReqVO.java                            |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/DaPointService.java                                |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioTagRespVO.java                                 |   59 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioTagPageReqVO.java                              |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpApiRespVO.java                               |   63 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/controller/admin/ChannelOPCUATagController.java    |  119 -
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/impl/ChannelOPCUADeviceServiceImpl.java    |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/dao/ChannelOPCDADeviceDao.java                     |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/impl/HttpTokenServiceImpl.java              |   98 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/HttpApiEntity.java                           |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/impl/DaPointServiceImpl.java                       |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/package-info.java                        |    1 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/impl/ChannelKioDeviceServiceImpl.java        |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dao/HttpApiDao.java                                 |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioDeviceRespVO.java                              |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/admin/HttpApiController.java             |   88 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagCurrentPerformanceJsonDto.java               |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaTagPageReqVO.java                          |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTagRespVO.java                               |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/dao/ChannelKioTagDao.java                            |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/ChannelOPCDADeviceService.java             |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/admin/HttpTokenController.java           |   74 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/impl/ChannelOPCUATagServiceImpl.java       |   74 -
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTokenRespVO.java                             |   71 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/ChannelOPCUATagService.java                |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagCurrentSaleJsonDto.java                      |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaDevicePageReqVO.java                       |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/HttpApiService.java                         |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagYearPeiJsonDto.java                          |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTagPageReqVO.java                            |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagCommonCurrentDto.java                        |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaDevicePageReqVO.java                       |   21 
 pom.xml                                                                                                                                         |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/controller/admin/ChannelModbusTagController.java  |  113 -
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/impl/HttpApiServiceImpl.java                |   61 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/controller/ChannelOPCDADeviceController.java       |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/collector/HttpCollectorForZxzk.java                 |    8 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/dao/ChannelKioDeviceDao.java                         |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/dao/ChannelOPCUATagDao.java                        |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dao/HttpTagDao.java                                 |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/MeasureHandle.java                      |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/dao/ChannelOPCDATagDao.java                        |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/ChannelOPCDATagService.java                |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dao/DaPointDao.java                                        |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioDevicePageReqVO.java                           |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/impl/ChannelOPCDADeviceServiceImpl.java    |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaDeviceRespVO.java                          |   63 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagPrdTimeDistJsonDto.java                      |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointRespVO.java                                      |   88 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagAffectDetailsJsonDto.java                    |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/controller/ChannelOPCDATagController.java          |  102 -
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/tag/controller/TagController.java                        |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dao/HttpTokenDao.java                               |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioDeviceController.java     |   83 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaTagPageReqVO.java                          |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/FxjyTagEntity.java                           |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/collector/KingIOCollector.java                       |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/ChannelKioDeviceService.java                 |   23 
 /dev/null                                                                                                                                       |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagJsonDto.java                                 |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/dao/ChannelModBusTagDao.java                      |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTokenPageReqVO.java                          |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/admin/HttpTagController.java             |   69 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/ChannelOPCUADeviceService.java             |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/impl/ChannelKioTagServiceImpl.java           |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/XSTTagEntity.java                            |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/controller/admin/DaPointController.java                    |  101 -
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/ChannelKioTagService.java                    |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/vo/ModBusTagRespVO.java                           |   63 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/DataController.java                               |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/HttpTagDTO.java                                 |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/HttpTokenEntity.java                         |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointPageReqVO.java                                   |   23 
 89 files changed, 2,267 insertions(+), 1,250 deletions(-)

diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/DataController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/DataController.java
index 01273df..b2da9e3 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/DataController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/DataController.java
@@ -5,6 +5,8 @@
 import com.iailab.module.data.api.dto.IndexQueryDTO;
 import com.iailab.module.data.api.dto.echarts.BarLineDTO;
 import com.iailab.module.data.api.dto.echarts.SeriesItem;
+import com.iailab.module.data.channel.kio.entity.ChannelKioDeviceEntity;
+import com.iailab.module.data.common.utils.Constant;
 import com.iailab.module.data.common.utils.R;
 import com.iailab.module.data.api.dto.ApiPointValueQueryDTO;
 import com.iailab.module.data.point.collection.PointCollector;
@@ -30,6 +32,9 @@
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
+
+import static com.iailab.framework.common.pojo.CommonResult.success;
+import static com.iailab.framework.common.pojo.CommonResult.error;
 
 /**
  * @author PanZhibao
@@ -62,13 +67,13 @@
 
     @PostMapping("/point/history")
     @Operation(summary = "point历史数据")
-    public R pointHistory(HttpServletResponse response, HttpServletRequest
+    public CommonResult<Map<String, List<Map<String, Object>>>> pointHistory(HttpServletResponse response, HttpServletRequest
             request, @RequestBody ApiPointValueQueryDTO queryDto) {
         try {
             apiSecurityUtils.validate(request);
             Map<String, List<Map<String, Object>>> data = new HashMap<>();
             if (CollectionUtils.isEmpty(queryDto.getPointNos())) {
-                return R.ok().put("data", data);
+                return success(data);
             }
             if (queryDto.getStart() == null) {
                 queryDto.setStart(new Date());
@@ -80,7 +85,7 @@
             params.put("pointNos", queryDto.getPointNos());
             List<DaPointDTO> pointList = daPointService.list(params);
             if (CollectionUtils.isEmpty(pointList)) {
-                return R.ok().put("data", data);
+                return success(data);
             }
             List<InfluxPointValuePOJO> influxParams = pointList.stream().map(item -> {
                 InfluxPointValuePOJO pojo = new InfluxPointValuePOJO();
@@ -89,23 +94,23 @@
                 return pojo;
             }).collect(Collectors.toList());
             data = influxDBService.queryPointsValues(influxParams, queryDto.getStart(), queryDto.getEnd());
-            return R.ok().put("data", data);
+            return success(data);
 
         } catch (Exception ex) {
-            return R.error(ex.getMessage());
+            return new CommonResult<Map<String, List<Map<String, Object>>>>().setMsg(ex.getMessage());
         }
     }
 
     @PostMapping("/point/current")
     @Operation(summary = "point当前实时数据")
-    public R pointCurrent(HttpServletResponse response, HttpServletRequest
+    public CommonResult<Map<String, Object>> pointCurrent(HttpServletResponse response, HttpServletRequest
             request, @RequestBody List<String> pointNos) {
         try {
             // apiSecurityUtils.validate(request);
             Map<String, Object> data = pointCollector.getCurrentValue(pointNos);
-            return R.ok().put("data", data);
+            return success(data);
         } catch (Exception ex) {
-            return R.error(ex.getMessage());
+            return new CommonResult<Map<String, Object>>().setMsg(ex.getMessage());
         }
     }
 
@@ -166,12 +171,12 @@
 
     @PostMapping("/pointRelation/history")
     @Operation(summary = "pointRelation历史数据")
-    public R pointRelationHistory(HttpServletResponse response, HttpServletRequest
+    public CommonResult<Map<String, List<Map<String, Object>>>> pointRelationHistory(HttpServletResponse response, HttpServletRequest
             request, @RequestBody ApiPointValueQueryDTO queryDto) {
         try {
             Map<String, List<Map<String, Object>>> data = new HashMap<>();
             if (CollectionUtils.isEmpty(queryDto.getPointNos())) {
-                return R.ok().put("data", data);
+                return success(data);
             }
             if (queryDto.getStart() == null) {
                 queryDto.setStart(new Date());
@@ -181,11 +186,11 @@
             }
             data = daPointValueService.getHistoryList(queryDto);
             if (CollectionUtils.isEmpty(data)) {
-                return R.ok().put("data", data);
+                return success(data);
             }
-            return R.ok().put("data", data);
+            return success(data);
         } catch (Exception ex) {
-            return R.error(ex.getMessage());
+            return new CommonResult<Map<String, List<Map<String, Object>>>>().setMsg(ex.getMessage());
         }
     }
 
@@ -210,20 +215,20 @@
 
     @PostMapping("/ind-item/values")
     @Operation(summary = "point当前实时数据")
-    public R indItemValues(HttpServletResponse response, HttpServletRequest
+    public CommonResult<Map<String, List<IndItemValueDTO>>> indItemValues(HttpServletResponse response, HttpServletRequest
             request, @RequestBody List<String> itemNos) {
         try {
             // apiSecurityUtils.validate(request);
             Map<String, List<IndItemValueDTO>> data = indItemCollector.getValueList(itemNos);
-            return R.ok().put("data", data);
+            return success(data);
         } catch (Exception ex) {
-            return R.error(ex.getMessage());
+            return new CommonResult<Map<String, List<IndItemValueDTO>>>().setMsg(ex.getMessage());
         }
     }
 
     @PostMapping("/ind-item/current-value")
     @Operation(summary = "point当前实时数据")
-    public R indItemCurrentValue(HttpServletResponse response, HttpServletRequest
+    public CommonResult<Map<String, BigDecimal>> indItemCurrentValue(HttpServletResponse response, HttpServletRequest
             request, @RequestBody List<String> itemNos) {
         try {
             Map<String, BigDecimal> data = new HashMap<>();
@@ -232,9 +237,9 @@
             dataList.forEach((k, v) -> {
                 data.put(k, CollectionUtils.isEmpty(v) ? null : v.get(0).getDataValue());
             });
-            return R.ok().put("data", data);
+            return success(data);
         } catch (Exception ex) {
-            return R.error(ex.getMessage());
+            return new CommonResult<Map<String, BigDecimal>>().setMsg(ex.getMessage());
         }
     }
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/collector/HttpCollectorForZxzk.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/collector/HttpCollectorForZxzk.java
similarity index 95%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/collector/HttpCollectorForZxzk.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/collector/HttpCollectorForZxzk.java
index a0afa18..1828401 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/collector/HttpCollectorForZxzk.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/collector/HttpCollectorForZxzk.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.collector;
+package com.iailab.module.data.channel.http.collector;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -7,8 +7,8 @@
 import com.iailab.module.data.common.enums.DataSourceType;
 import com.iailab.module.data.common.utils.HttpsRequest;
 import com.iailab.module.data.common.utils.TagUtils;
-import com.iailab.module.data.http.entity.HttpApiEntity;
-import com.iailab.module.data.http.service.HttpApiService;
+import com.iailab.module.data.channel.http.entity.HttpApiEntity;
+import com.iailab.module.data.channel.http.service.HttpApiService;
 import lombok.extern.slf4j.Slf4j;
 import javax.annotation.Resource;
 import org.springframework.stereotype.Component;
@@ -57,7 +57,7 @@
         if (apiMap.containsKey(id)) {
             return apiMap.get(id);
         }
-        HttpApiEntity httpApi = httpApiService.get(id);
+        HttpApiEntity httpApi = httpApiService.info(id);
         apiMap.put(id, httpApi);
         return httpApi;
     }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/admin/HttpApiController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/admin/HttpApiController.java
new file mode 100644
index 0000000..222a362
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/admin/HttpApiController.java
@@ -0,0 +1,88 @@
+package com.iailab.module.data.channel.http.controller.admin;
+
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.module.data.channel.http.entity.HttpApiEntity;
+import com.iailab.module.data.channel.http.service.HttpApiService;
+import com.iailab.module.data.channel.http.vo.HttpApiPageReqVO;
+import com.iailab.module.data.channel.http.vo.HttpApiRespVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+import java.util.UUID;
+
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月27日
+ */
+@RestController
+@RequestMapping("/data/channel/http/api")
+public class HttpApiController {
+
+    @Resource
+    private HttpApiService httpApiService;
+
+    @GetMapping("page")
+    public CommonResult<PageResult<HttpApiRespVO>> page(@Valid HttpApiPageReqVO reqVO) {
+        PageResult<HttpApiEntity> page = httpApiService.queryPage(reqVO);
+        return success(BeanUtils.toBean(page, HttpApiRespVO.class));
+    }
+
+    @GetMapping("list")
+    public CommonResult<List<HttpApiEntity>> list() {
+        List<HttpApiEntity> list = httpApiService.list();
+        return success(list);
+    }
+
+    /**
+     * 根据id查询详情
+     *
+     * @param id
+     */
+    @GetMapping("/info/{id}")
+    public CommonResult<HttpApiEntity> info(@PathVariable("id") String id){
+        HttpApiEntity info= httpApiService.info(id);
+        return success(info);
+    }
+    /**
+     * 添加API
+     *
+     * @param httpApiEntity
+     */
+    @PostMapping("/add")
+    public CommonResult<Boolean> add(@RequestBody HttpApiEntity httpApiEntity){
+        String id = UUID.randomUUID().toString();
+        httpApiEntity.setId(id);
+        httpApiService.add(httpApiEntity);
+        return success(true);
+    }
+
+    /**
+     * 修改API
+     *
+     * @param httpApiEntity
+     */
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody HttpApiEntity httpApiEntity) {
+        httpApiService.update(httpApiEntity);
+        return success(true);
+    }
+
+    /**
+     * 删除API
+     *
+     * @param id
+     *
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
+        httpApiService.delete(id);
+        return success(true);
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/admin/HttpTagController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/admin/HttpTagController.java
new file mode 100644
index 0000000..66a8a54
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/admin/HttpTagController.java
@@ -0,0 +1,69 @@
+package com.iailab.module.data.channel.http.controller.admin;
+
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.module.data.channel.http.entity.HttpTagEntity;
+import com.iailab.module.data.channel.http.service.HttpTagService;
+import com.iailab.module.data.channel.http.vo.HttpTagPageReqVO;
+import com.iailab.module.data.channel.http.vo.HttpTagRespVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+import java.util.UUID;
+
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月27日
+ */
+@RestController
+@RequestMapping("/data/http/tag")
+public class HttpTagController {
+
+    @Resource
+    private HttpTagService tagService;
+
+    @GetMapping("page")
+    public CommonResult<PageResult<HttpTagRespVO>> page(@Valid HttpTagPageReqVO reqVO) {
+        PageResult<HttpTagEntity> page = tagService.queryPage(reqVO);
+        return success(BeanUtils.toBean(page, HttpTagRespVO.class));
+    }
+
+    @GetMapping("list")
+    public CommonResult<List<HttpTagEntity>> list(){
+        List<HttpTagEntity> list = tagService.list();
+        return new CommonResult<List<HttpTagEntity>>().setData(list);
+    }
+
+    @GetMapping("/info/{id}")
+    public CommonResult<HttpTagEntity> info(@PathVariable("id") String id){
+        HttpTagEntity info= tagService.info(id);
+        return success(info);
+    }
+
+    @PostMapping("/add")
+    public CommonResult<Boolean> add(@RequestBody HttpTagEntity httpTagEntity){
+        String id = UUID.randomUUID().toString();
+        httpTagEntity.setId(id);
+        tagService.add(httpTagEntity);
+        return success(true);
+    }
+
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody HttpTagEntity httpTagEntity) {
+        tagService.update(httpTagEntity);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
+        tagService.delete(id);
+        return success(true);
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/admin/HttpTokenController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/admin/HttpTokenController.java
new file mode 100644
index 0000000..31bd57c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/admin/HttpTokenController.java
@@ -0,0 +1,74 @@
+package com.iailab.module.data.channel.http.controller.admin;
+
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.module.data.channel.http.entity.HttpTokenEntity;
+import com.iailab.module.data.channel.http.service.HttpTokenService;
+import com.iailab.module.data.channel.http.vo.HttpTokenPageReqVO;
+import com.iailab.module.data.channel.http.vo.HttpTokenRespVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+import java.util.UUID;
+
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月27日
+ */
+@RestController
+@RequestMapping("/data/http/token")
+public class HttpTokenController {
+
+    @Resource
+    private HttpTokenService httpTokenService;
+
+    @GetMapping("page")
+    public CommonResult<PageResult<HttpTokenRespVO>> page(@Valid HttpTokenPageReqVO reqVO) {
+        PageResult<HttpTokenEntity> page = httpTokenService.queryPage(reqVO);
+        return success(BeanUtils.toBean(page, HttpTokenRespVO.class));
+    }
+
+    @GetMapping("list")
+    public CommonResult<List<HttpTokenEntity>> list(){
+        List<HttpTokenEntity> list = httpTokenService.list();
+        return new CommonResult<List<HttpTokenEntity>>().setData(list);
+    }
+
+    @GetMapping("/info/{id}")
+    public CommonResult<HttpTokenEntity> info(@PathVariable("id") String id){
+        HttpTokenEntity info= httpTokenService.info(id);
+        return success(info);
+    }
+
+    @PostMapping("/add")
+    public CommonResult<Boolean> add(@RequestBody HttpTokenEntity HttpTokenEntity){
+        String id = UUID.randomUUID().toString();
+        HttpTokenEntity.setId(id);
+        httpTokenService.add(HttpTokenEntity);
+        return success(true);
+    }
+
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody HttpTokenEntity HttpTokenEntity) {
+        httpTokenService.update(HttpTokenEntity);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
+        httpTokenService.delete(id);
+        return success(true);
+    }
+
+    @GetMapping("/api-id/{apiId}")
+    public CommonResult<HttpTokenEntity> apiId(@PathVariable("apiId") String apiId) {
+        HttpTokenEntity info = httpTokenService.getByApiId(apiId);
+        return success(info);
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/package-info.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/package-info.java
new file mode 100644
index 0000000..9c7a5ad
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/controller/package-info.java
@@ -0,0 +1 @@
+package com.iailab.module.data.channel.http.controller;
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dao/HttpApiDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dao/HttpApiDao.java
new file mode 100644
index 0000000..f25a548
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dao/HttpApiDao.java
@@ -0,0 +1,20 @@
+package com.iailab.module.data.channel.http.dao;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
+import com.iailab.module.data.channel.http.entity.HttpApiEntity;
+import com.iailab.module.data.channel.http.vo.HttpApiPageReqVO;
+import org.apache.ibatis.annotations.Mapper;
+
+@TenantDS
+@Mapper
+public interface HttpApiDao extends BaseMapperX<HttpApiEntity> {
+    default PageResult<HttpApiEntity> selectPage(HttpApiPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<HttpApiEntity>()
+                .likeIfPresent(HttpApiEntity::getCode, reqVO.getCode())
+                .likeIfPresent(HttpApiEntity::getName, reqVO.getName())
+                .orderByDesc(HttpApiEntity::getCreateTime));
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dao/HttpTagDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dao/HttpTagDao.java
new file mode 100644
index 0000000..d693d62
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dao/HttpTagDao.java
@@ -0,0 +1,21 @@
+package com.iailab.module.data.channel.http.dao;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
+import com.iailab.module.data.channel.http.entity.HttpTagEntity;
+import com.iailab.module.data.channel.http.vo.HttpTagPageReqVO;
+import org.apache.ibatis.annotations.Mapper;
+
+@TenantDS
+@Mapper
+public interface HttpTagDao extends BaseMapperX<HttpTagEntity> {
+    default PageResult<HttpTagEntity> selectPage(HttpTagPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<HttpTagEntity>()
+                .likeIfPresent(HttpTagEntity::getTagType, reqVO.getTagType())
+                .likeIfPresent(HttpTagEntity::getTagCode, reqVO.getTagCode())
+                .likeIfPresent(HttpTagEntity::getTagName, reqVO.getTagName())
+                .orderByDesc(HttpTagEntity::getCreateTime));
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dao/HttpTokenDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dao/HttpTokenDao.java
new file mode 100644
index 0000000..6d0ba36
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dao/HttpTokenDao.java
@@ -0,0 +1,19 @@
+package com.iailab.module.data.channel.http.dao;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
+import com.iailab.module.data.channel.http.entity.HttpTokenEntity;
+import com.iailab.module.data.channel.http.vo.HttpTokenPageReqVO;
+import org.apache.ibatis.annotations.Mapper;
+
+@TenantDS
+@Mapper
+public interface HttpTokenDao extends BaseMapperX<HttpTokenEntity> {
+    default PageResult<HttpTokenEntity> selectPage(HttpTokenPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<HttpTokenEntity>()
+                .likeIfPresent(HttpTokenEntity::getClientId, reqVO.getClientId())
+                .orderByDesc(HttpTokenEntity::getExpireTime));
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/HttpTagDTO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/HttpTagDTO.java
similarity index 84%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/HttpTagDTO.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/HttpTagDTO.java
index 229e3c5..e300594 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/HttpTagDTO.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/HttpTagDTO.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.dto;
+package com.iailab.module.data.channel.http.dto;
 
 import lombok.Data;
 import org.springframework.stereotype.Component;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagAffectDetailsJsonDto.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagAffectDetailsJsonDto.java
similarity index 93%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagAffectDetailsJsonDto.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagAffectDetailsJsonDto.java
index 1c286c6..754e4ad 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagAffectDetailsJsonDto.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagAffectDetailsJsonDto.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.dto;
+package com.iailab.module.data.channel.http.dto;
 
 import lombok.Data;
 import org.springframework.stereotype.Component;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagCommonCurrentDto.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagCommonCurrentDto.java
similarity index 84%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagCommonCurrentDto.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagCommonCurrentDto.java
index 870eae4..ccf55b2 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagCommonCurrentDto.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagCommonCurrentDto.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.dto;
+package com.iailab.module.data.channel.http.dto;
 
 import lombok.Data;
 import org.springframework.stereotype.Component;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagCurrentPerformanceJsonDto.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagCurrentPerformanceJsonDto.java
similarity index 95%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagCurrentPerformanceJsonDto.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagCurrentPerformanceJsonDto.java
index 08f5b29..62bd9e7 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagCurrentPerformanceJsonDto.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagCurrentPerformanceJsonDto.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.dto;
+package com.iailab.module.data.channel.http.dto;
 
 import lombok.Data;
 import org.springframework.stereotype.Component;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagCurrentSaleJsonDto.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagCurrentSaleJsonDto.java
similarity index 97%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagCurrentSaleJsonDto.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagCurrentSaleJsonDto.java
index ababe23..c3f6915 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagCurrentSaleJsonDto.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagCurrentSaleJsonDto.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.dto;
+package com.iailab.module.data.channel.http.dto;
 
 import lombok.Data;
 import org.springframework.stereotype.Component;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagJsonDto.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagJsonDto.java
similarity index 94%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagJsonDto.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagJsonDto.java
index 3da5686..44a5679 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagJsonDto.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagJsonDto.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.dto;
+package com.iailab.module.data.channel.http.dto;
 
 import lombok.Data;
 import org.springframework.stereotype.Component;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagPrdTimeDistJsonDto.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagPrdTimeDistJsonDto.java
similarity index 95%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagPrdTimeDistJsonDto.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagPrdTimeDistJsonDto.java
index 489cf5e..855d123 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagPrdTimeDistJsonDto.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagPrdTimeDistJsonDto.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.dto;
+package com.iailab.module.data.channel.http.dto;
 
 import lombok.Data;
 import org.springframework.stereotype.Component;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagYearPeiJsonDto.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagYearPeiJsonDto.java
similarity index 95%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagYearPeiJsonDto.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagYearPeiJsonDto.java
index 9e33ccc..005b4dc 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dto/TagYearPeiJsonDto.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/dto/TagYearPeiJsonDto.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.dto;
+package com.iailab.module.data.channel.http.dto;
 
 import lombok.Data;
 import org.springframework.stereotype.Component;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/EleLowTagEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/EleLowTagEntity.java
similarity index 94%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/EleLowTagEntity.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/EleLowTagEntity.java
index 511411b..b3016e0 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/EleLowTagEntity.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/EleLowTagEntity.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.entity;
+package com.iailab.module.data.channel.http.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/FxjyTagEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/FxjyTagEntity.java
similarity index 94%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/FxjyTagEntity.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/FxjyTagEntity.java
index d3d637a..456e9cb 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/FxjyTagEntity.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/FxjyTagEntity.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.entity;
+package com.iailab.module.data.channel.http.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/HttpApiEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/HttpApiEntity.java
similarity index 93%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/HttpApiEntity.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/HttpApiEntity.java
index a01a9eb..de52968 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/HttpApiEntity.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/HttpApiEntity.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.entity;
+package com.iailab.module.data.channel.http.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/HttpTagEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/HttpTagEntity.java
similarity index 95%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/HttpTagEntity.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/HttpTagEntity.java
index c11f713..fba20f9 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/HttpTagEntity.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/HttpTagEntity.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.entity;
+package com.iailab.module.data.channel.http.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/HttpTokenEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/HttpTokenEntity.java
similarity index 94%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/HttpTokenEntity.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/HttpTokenEntity.java
index c9054c0..d6cdf22 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/HttpTokenEntity.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/HttpTokenEntity.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.entity;
+package com.iailab.module.data.channel.http.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/XSTTagEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/XSTTagEntity.java
similarity index 95%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/XSTTagEntity.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/XSTTagEntity.java
index 358b85e..009e565 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/entity/XSTTagEntity.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/entity/XSTTagEntity.java
@@ -1,4 +1,4 @@
-package com.iailab.module.data.http.entity;
+package com.iailab.module.data.channel.http.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/HttpApiService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/HttpApiService.java
new file mode 100644
index 0000000..658a20a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/HttpApiService.java
@@ -0,0 +1,25 @@
+package com.iailab.module.data.channel.http.service;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.module.data.channel.http.entity.HttpApiEntity;
+import com.iailab.module.data.channel.http.vo.HttpApiPageReqVO;
+
+import java.util.List;
+
+public interface HttpApiService{
+    PageResult<HttpApiEntity> queryPage(HttpApiPageReqVO reqVO);
+
+    HttpApiEntity info(String id);
+
+    void add(HttpApiEntity httpApiEntity);
+
+    void update(HttpApiEntity httpApiEntity);
+
+    void delete(String id);
+
+    HttpApiEntity selectXstHttpTagApi();
+
+    HttpApiEntity getByCode(String code);
+
+    List<HttpApiEntity> list();
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/HttpTagService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/HttpTagService.java
new file mode 100644
index 0000000..766b21c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/HttpTagService.java
@@ -0,0 +1,26 @@
+package com.iailab.module.data.channel.http.service;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.module.data.channel.http.entity.HttpTagEntity;
+import com.iailab.module.data.channel.http.vo.HttpTagPageReqVO;
+
+import java.util.List;
+import java.util.Map;
+
+public interface HttpTagService{
+    PageResult<HttpTagEntity> queryPage(HttpTagPageReqVO reqVO);
+
+    HttpTagEntity info(String id);
+
+    void add(HttpTagEntity httpTagEntity);
+
+    void update(HttpTagEntity httpTagEntity);
+
+    void delete(String id);
+
+    List<HttpTagEntity> list();
+
+    List<HttpTagEntity> selectList(Map<String, Object> params);
+
+    List<HttpTagEntity> getByCode(String code);
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/HttpTokenService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/HttpTokenService.java
new file mode 100644
index 0000000..07c2e0e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/HttpTokenService.java
@@ -0,0 +1,27 @@
+package com.iailab.module.data.channel.http.service;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.module.data.channel.http.entity.HttpTokenEntity;
+import com.iailab.module.data.channel.http.vo.HttpTokenPageReqVO;
+
+import java.util.List;
+
+public interface HttpTokenService{
+    PageResult<HttpTokenEntity> queryPage(HttpTokenPageReqVO reqVO);
+
+    HttpTokenEntity info(String id);
+
+    void add(HttpTokenEntity httpTokenEntity);
+
+    void update(HttpTokenEntity httpTokenEntity);
+
+    void delete(String id);
+
+    List<HttpTokenEntity> list();
+
+    HttpTokenEntity getByApiId(String apiId);
+
+    void updateToken(String clientId);
+
+    String queryToken(String clientId);
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/impl/HttpApiServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/impl/HttpApiServiceImpl.java
new file mode 100644
index 0000000..d92d201
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/impl/HttpApiServiceImpl.java
@@ -0,0 +1,61 @@
+package com.iailab.module.data.channel.http.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.module.data.channel.http.dao.HttpApiDao;
+import com.iailab.module.data.channel.http.entity.HttpApiEntity;
+import com.iailab.module.data.channel.http.service.HttpApiService;
+import com.iailab.module.data.channel.http.vo.HttpApiPageReqVO;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Service
+public class HttpApiServiceImpl extends ServiceImpl<HttpApiDao, HttpApiEntity> implements HttpApiService {
+
+    @Resource
+    private HttpApiDao httpApiDao;
+
+    @Override
+    public PageResult<HttpApiEntity> queryPage(HttpApiPageReqVO reqVO) {
+        return httpApiDao.selectPage(reqVO);
+    }
+
+    @Override
+    public HttpApiEntity info(String id) {
+        return httpApiDao.selectById(id);
+    }
+
+    @Override
+    public void add(HttpApiEntity httpApiEntity) {
+        httpApiDao.insert(httpApiEntity);
+    }
+
+    @Override
+    public void update(HttpApiEntity httpApiEntity) {
+        httpApiDao.updateById(httpApiEntity);
+    }
+
+    @Override
+    public void delete(String id) {
+        httpApiDao.deleteById(id);
+    }
+
+    @Override
+    public HttpApiEntity selectXstHttpTagApi() {
+        return httpApiDao.selectOne(new QueryWrapper<HttpApiEntity>().eq("code","xstHttpTag"));
+    }
+
+    @Override
+    public HttpApiEntity getByCode(String code) {
+        return httpApiDao.selectOne(new QueryWrapper<HttpApiEntity>().eq("code", code));
+    }
+
+    @Override
+    public List<HttpApiEntity> list() {
+        return httpApiDao.selectList(new QueryWrapper<>());
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/impl/HttpTagServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/impl/HttpTagServiceImpl.java
new file mode 100644
index 0000000..adf69c8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/impl/HttpTagServiceImpl.java
@@ -0,0 +1,76 @@
+package com.iailab.module.data.channel.http.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.module.data.channel.http.dao.HttpTagDao;
+import com.iailab.module.data.channel.http.entity.HttpApiEntity;
+import com.iailab.module.data.channel.http.entity.HttpTagEntity;
+import com.iailab.module.data.channel.http.service.HttpApiService;
+import com.iailab.module.data.channel.http.service.HttpTagService;
+import com.iailab.module.data.channel.http.vo.HttpTagPageReqVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Service
+public class HttpTagServiceImpl extends ServiceImpl<HttpTagDao, HttpTagEntity> implements HttpTagService {
+
+    @Resource
+    private HttpApiService httpApiService;
+
+    @Resource
+    private HttpTagDao httpTagDao;
+
+    @Override
+    public PageResult<HttpTagEntity> queryPage(HttpTagPageReqVO reqVO) {
+        return httpTagDao.selectPage(reqVO);
+    }
+
+    @Override
+    public HttpTagEntity info(String id) {
+        return httpTagDao.selectById(id);
+    }
+
+    @Override
+    public void add(HttpTagEntity httpTagEntity) {
+        httpTagDao.insert(httpTagEntity);
+    }
+
+    @Override
+    public void update(HttpTagEntity httpTagEntity) {
+        httpTagDao.updateById(httpTagEntity);
+    }
+
+    @Override
+    public void delete(String id) {
+        httpTagDao.deleteById(id);
+    }
+
+    @Override
+    public List<HttpTagEntity> list() {
+        return httpTagDao.selectList(new QueryWrapper<>());
+    }
+
+
+    @Override
+    public List<HttpTagEntity> selectList(Map<String, Object> params) {
+        String httpId = (String) params.get("httpId");
+        HttpApiEntity httpApiEntity = httpApiService.info(httpId);
+        return httpTagDao.selectList(new QueryWrapper<HttpTagEntity>()
+                        .eq("http_api_code", httpApiEntity.getCode())
+                        .orderByDesc("create_time"));
+    }
+
+    @Override
+    public List<HttpTagEntity> getByCode(String code) {
+        return httpTagDao.selectList(new QueryWrapper<HttpTagEntity>()
+                .eq("http_api_code", code)
+                .orderByDesc("create_time"));
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/impl/HttpTokenServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/impl/HttpTokenServiceImpl.java
new file mode 100644
index 0000000..48f459c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/service/impl/HttpTokenServiceImpl.java
@@ -0,0 +1,98 @@
+package com.iailab.module.data.channel.http.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.module.data.channel.http.dao.HttpTokenDao;
+import com.iailab.module.data.channel.http.entity.HttpTokenEntity;
+import com.iailab.module.data.channel.http.service.HttpTokenService;
+import com.iailab.module.data.channel.http.vo.HttpTokenPageReqVO;
+import com.iailab.module.data.common.utils.HttpsRequest;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class HttpTokenServiceImpl extends ServiceImpl<HttpTokenDao, HttpTokenEntity> implements HttpTokenService {
+
+    @Resource
+    private HttpsRequest httpsRequest;
+
+    @Resource
+    private HttpTokenDao httpTokenDao;
+
+
+    @Override
+    public PageResult<HttpTokenEntity> queryPage(HttpTokenPageReqVO reqVO) {
+        return httpTokenDao.selectPage(reqVO);
+    }
+
+    @Override
+    public HttpTokenEntity info(String id) {
+        return httpTokenDao.selectById(id);
+    }
+
+    @Override
+    public void add(HttpTokenEntity httpTokenEntity) {
+        httpTokenDao.insert(httpTokenEntity);
+    }
+
+    @Override
+    public void update(HttpTokenEntity httpTokenEntity) {
+        httpTokenDao.updateById(httpTokenEntity);
+    }
+
+    @Override
+    public void delete(String id) {
+        httpTokenDao.deleteById(id);
+    }
+
+    @Override
+    public List<HttpTokenEntity> list() {
+        return httpTokenDao.selectList(new QueryWrapper<>());
+    }
+
+    @Override
+    public HttpTokenEntity getByApiId(String apiId) {
+        QueryWrapper<HttpTokenEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(apiId), "api_id", apiId);
+        return httpTokenDao.selectOne(wrapper);
+    }
+
+
+    @Override
+    public void updateToken(String clientId) {
+        Map<String, String> params = new HashMap<>(1);
+        params.put("timeout", "30000");
+        HttpTokenEntity entity = httpTokenDao.selectOne(new QueryWrapper<HttpTokenEntity>().eq("client_id", clientId));
+        Map<String, String> dataJson = new HashMap<>(2);
+        String url = entity.getLoginUrl();
+        String userName = entity.getUsername();
+        String password = entity.getPassword();
+        String prvsetName = entity.getPrvsetName();
+        String projectName = entity.getProjectName();
+        String platform = entity.getPlatform();
+        dataJson.put("username", userName);
+        dataJson.put("password", password);
+        dataJson.put("prvset_name", prvsetName);
+        dataJson.put("project_name", projectName);
+        dataJson.put("platform", platform);
+        //查询token的请求
+        String responseStr = httpsRequest.doPostToken(url, params, JSONObject.toJSONString(dataJson), "utf-8");
+        //插入token和更新时间
+        entity.setToken(responseStr);
+        entity.setUpdateTime(new Date());
+        httpTokenDao.update(entity, new QueryWrapper<HttpTokenEntity>().eq("client_id", clientId));
+    }
+
+    @Override
+    public String queryToken(String clientId) {
+        return httpTokenDao.selectOne(new QueryWrapper<HttpTokenEntity>().eq("client_id", clientId)).getToken();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpApiPageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpApiPageReqVO.java
new file mode 100644
index 0000000..e58377b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpApiPageReqVO.java
@@ -0,0 +1,23 @@
+package com.iailab.module.data.channel.http.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - HttpApi分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class HttpApiPageReqVO extends PageParam {
+
+    private String name;
+
+    private String code;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpApiRespVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpApiRespVO.java
new file mode 100644
index 0000000..ac6570f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpApiRespVO.java
@@ -0,0 +1,63 @@
+package com.iailab.module.data.channel.http.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - KioDevice Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class HttpApiRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String name;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String code;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String url;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String method;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String collectType;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String param;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String descp;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private Integer status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("创建时间")
+    private Date createTime;
+
+    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("更新时间")
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTagPageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTagPageReqVO.java
new file mode 100644
index 0000000..11bfab8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTagPageReqVO.java
@@ -0,0 +1,25 @@
+package com.iailab.module.data.channel.http.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - HttpTag分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class HttpTagPageReqVO extends PageParam {
+
+    private String tagType;
+
+    private String tagCode;
+
+    private String tagName;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTagRespVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTagRespVO.java
new file mode 100644
index 0000000..f196604
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTagRespVO.java
@@ -0,0 +1,47 @@
+package com.iailab.module.data.channel.http.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - KioDevice Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class HttpTagRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "api编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("api编码")
+    private String httpApiCode;
+
+    @Schema(description = "测点类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("测点类型")
+    private String tagType;
+
+    @Schema(description = "测点编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("测点编码")
+    private String tagCode;
+
+    @Schema(description = "测点名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("测点名称")
+    private String tagName;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("创建时间")
+    private Date createTime;
+
+    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("更新时间")
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTokenPageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTokenPageReqVO.java
new file mode 100644
index 0000000..e7e9f05
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTokenPageReqVO.java
@@ -0,0 +1,22 @@
+package com.iailab.module.data.channel.http.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - HttpToken分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class HttpTokenPageReqVO extends PageParam {
+
+    private String clientId;
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTokenRespVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTokenRespVO.java
new file mode 100644
index 0000000..5208b18
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/http/vo/HttpTokenRespVO.java
@@ -0,0 +1,71 @@
+package com.iailab.module.data.channel.http.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - KioDevice Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class HttpTokenRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String apiId;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String loginUrl;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String clientId;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String clientSecret;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String username;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String password;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String token;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String prvsetName;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String projectName;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private String platform;
+
+    @Schema(description = "", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("")
+    private Date expireTime;
+
+    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("更新时间")
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/collector/KingIOCollector.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/collector/KingIOCollector.java
index 3dd07c6..77339a2 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/collector/KingIOCollector.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/collector/KingIOCollector.java
@@ -1,14 +1,14 @@
 package com.iailab.module.data.channel.kio.collector;
 
+import com.iailab.module.data.channel.kio.entity.ChannelKioDeviceEntity;
+import com.iailab.module.data.channel.kio.service.ChannelKioDeviceService;
 import com.iailab.module.data.common.enums.DataSourceType;
 import com.iailab.module.data.common.utils.TagUtils;
-import com.iailab.module.data.channel.kio.dto.ChannelKioDeviceDTO;
-import com.iailab.module.data.channel.kio.service.ChannelKioDeviceService;
 import lombok.extern.slf4j.Slf4j;
-import javax.annotation.Resource;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -31,15 +31,15 @@
 
     private Map<String, KingIOClient> clientMap = new ConcurrentHashMap<>();
 
-    private Map<String, ChannelKioDeviceDTO> deviceMap = new HashMap<>();
+    private Map<String, ChannelKioDeviceEntity> deviceMap = new HashMap<>();
 
     public synchronized KingIOClient getClient(String sourceId) throws Exception {
         if (!clientMap.containsKey(sourceId)) {
-            ChannelKioDeviceDTO deviceDto = channelKioDeviceService.get(sourceId);
-            deviceMap.put(sourceId, deviceDto);
-            KingIOClient kingIOClient = new KingIOClient(deviceDto.getInstanceName());
+            ChannelKioDeviceEntity deviceEntity = channelKioDeviceService.info(sourceId);
+            deviceMap.put(sourceId, deviceEntity);
+            KingIOClient kingIOClient = new KingIOClient(deviceEntity.getInstanceName());
             clientMap.put(sourceId, kingIOClient);
-            if (!kingIOClient.login(deviceDto.getAddress(), deviceDto.getPort(), deviceDto.getUsername(), deviceDto.getPassword())) {
+            if (!kingIOClient.login(deviceEntity.getAddress(), deviceEntity.getPort(), deviceEntity.getUsername(), deviceEntity.getPassword())) {
                 throw new Exception("登录异常");
             }
         }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioDeviceController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioDeviceController.java
index 90e50fb..8b50bee 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioDeviceController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioDeviceController.java
@@ -1,29 +1,28 @@
 package com.iailab.module.data.channel.kio.controller.admin;
 
-import com.iailab.framework.common.constant.Constant;
-import com.iailab.framework.common.page.PageData;
 import com.iailab.framework.common.pojo.CommonResult;
-import com.iailab.framework.common.util.validation.ValidationUtils;
-import com.iailab.framework.common.validation.group.AddGroup;
-import com.iailab.framework.common.validation.group.DefaultGroup;
-import com.iailab.module.data.channel.kio.service.ChannelKioDeviceService;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
 import com.iailab.module.data.channel.kio.dto.ChannelKioDeviceDTO;
+import com.iailab.module.data.channel.kio.entity.ChannelKioDeviceEntity;
+import com.iailab.module.data.channel.kio.service.ChannelKioDeviceService;
+import com.iailab.module.data.channel.kio.vo.KioDevicePageReqVO;
+import com.iailab.module.data.channel.kio.vo.KioDeviceRespVO;
 import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Parameters;
 import io.swagger.v3.oas.annotations.tags.Tag;
-import javax.annotation.Resource;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Map;
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.Date;
 import java.util.UUID;
 
 import static com.iailab.framework.common.pojo.CommonResult.success;
 
 /**
- * @author PanZhibao
+ * @author lirm
  * @Description
- * @createTime 2024年06月04日
+ * @createTime 2024年08月26日
  */
 @RestController
 @RequestMapping("/data/channel/kio/device")
@@ -34,53 +33,37 @@
     private ChannelKioDeviceService channelKioDeviceService;
 
     @GetMapping("page")
-    @Operation(summary = "分页")
-    @Parameters({
-            @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true) ,
-            @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true) ,
-            @Parameter(name = Constant.ORDER_FIELD, description = "排序字段") ,
-            @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)")
-    })
-    public CommonResult<PageData<ChannelKioDeviceDTO>> list(@RequestParam Map<String, Object> params) {
-        PageData<ChannelKioDeviceDTO> page = channelKioDeviceService.page(params);
-        return success(page);
+    public CommonResult<PageResult<KioDeviceRespVO>> list(@Valid KioDevicePageReqVO reqVO) {
+        PageResult<ChannelKioDeviceEntity> page = channelKioDeviceService.queryPage(reqVO);
+        return success(BeanUtils.toBean(page, KioDeviceRespVO.class));
     }
 
-    @GetMapping("{id}")
+    @GetMapping("/info/{id}")
     @Operation(summary = "信息")
-    public CommonResult<ChannelKioDeviceDTO> get(@PathVariable("id") String id) {
-        ChannelKioDeviceDTO data = channelKioDeviceService.get(id);
-        return success(data);
+    public CommonResult<ChannelKioDeviceEntity> info(@PathVariable("id") String id) {
+        ChannelKioDeviceEntity info = channelKioDeviceService.info(id);
+        return success(info);
     }
 
-    @PostMapping
-    @Operation(summary = "保存")
-    public CommonResult save(@RequestBody ChannelKioDeviceDTO dto) {
-        //效验数据
-        ValidationUtils.validate(dto, AddGroup.class, DefaultGroup.class);
+    @PostMapping("/add")
+    public CommonResult<Boolean> add(@RequestBody ChannelKioDeviceEntity channelKioDeviceEntity) {
         String id = UUID.randomUUID().toString();
-        dto.setId(id);
-        channelKioDeviceService.save(dto);
-        return new CommonResult();
+        channelKioDeviceEntity.setId(id);
+        channelKioDeviceEntity.setCreateTime(new Date());
+        channelKioDeviceService.add(channelKioDeviceEntity);
+        return success(true);
     }
 
-    /**
-     * 修改kio配置
-     *
-     */
-    @PutMapping
-    @Operation(summary = "修改")
-    public CommonResult update(@RequestBody ChannelKioDeviceDTO dto) {
-        //效验数据
-        ValidationUtils.validate(dto, AddGroup.class, DefaultGroup.class);
-        channelKioDeviceService.update(dto);
-        return new CommonResult();
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody ChannelKioDeviceEntity channelKioDeviceEntity) {
+        channelKioDeviceEntity.setUpdateTime(new Date());
+        channelKioDeviceService.update(channelKioDeviceEntity);
+        return success(true);
     }
 
-    @DeleteMapping
-    @Operation(summary = "删除")
-    public CommonResult delete(@RequestBody String[] ids){
-        channelKioDeviceService.delete(ids);
-        return new CommonResult();
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
+        channelKioDeviceService.delete(id);
+        return success(true);
     }
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioTagController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioTagController.java
index da0b4c9..df61b27 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioTagController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioTagController.java
@@ -1,27 +1,24 @@
 package com.iailab.module.data.channel.kio.controller.admin;
 
-import com.iailab.framework.common.constant.Constant;
-import com.iailab.framework.common.page.PageData;
 import com.iailab.framework.common.pojo.CommonResult;
-import com.iailab.framework.common.util.validation.ValidationUtils;
-import com.iailab.framework.common.validation.group.AddGroup;
-import com.iailab.framework.common.validation.group.DefaultGroup;
-import com.iailab.module.data.channel.kio.dto.ChannelKioTagDTO;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.module.data.channel.kio.entity.ChannelKioTagEntity;
 import com.iailab.module.data.channel.kio.service.ChannelKioTagService;
+import com.iailab.module.data.channel.kio.vo.KioTagPageReqVO;
+import com.iailab.module.data.channel.kio.vo.KioTagRespVO;
 import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Parameters;
-import javax.annotation.Resource;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Map;
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.Date;
 import java.util.UUID;
 
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
 /**
- * 操作opcua tag配置
- *
- * @author DongYukun
- * @createTime 2023年05月6日 17:44:00
+
  */
 @RestController
 @RequestMapping("/data/channel/kio/tag")
@@ -33,50 +30,38 @@
      * 分页查询tag
      * */
     @GetMapping("page")
-    @Operation(summary = "分页")
-    @Parameters({
-            @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true) ,
-            @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true) ,
-            @Parameter(name = Constant.ORDER_FIELD, description = "排序字段") ,
-            @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)")
-    })
-    public CommonResult<PageData<ChannelKioTagDTO>> page(@RequestParam Map<String, Object> params){
-        PageData<ChannelKioTagDTO> page = channelKioTagService.page(params);
-        return  new CommonResult<PageData<ChannelKioTagDTO>>().setData(page);
+    public CommonResult<PageResult<KioTagRespVO>> page(@Valid KioTagPageReqVO reqVO){
+        PageResult<ChannelKioTagEntity> page = channelKioTagService.queryPage(reqVO);
+        return success(BeanUtils.toBean(page, KioTagRespVO.class));
     }
 
-    @GetMapping("{id}")
+    @GetMapping("/info/{id}")
     @Operation(summary = "信息")
-    public CommonResult<ChannelKioTagDTO> get(@PathVariable("id") String id){
-        ChannelKioTagDTO data= channelKioTagService.get(id);
-        return new CommonResult<ChannelKioTagDTO>().setData(data);
+    public CommonResult<ChannelKioTagEntity> info(@PathVariable("id") String id) {
+        ChannelKioTagEntity info = channelKioTagService.info(id);
+        return success(info);
     }
 
-    @PostMapping
-    @Operation(summary = "保存")
-    public CommonResult save(@RequestBody ChannelKioTagDTO entity){
-        entity.setId(UUID.randomUUID().toString());
-        channelKioTagService.save(entity);
-        return new CommonResult();
+    @PostMapping("/add")
+    public CommonResult<Boolean> add(@RequestBody ChannelKioTagEntity channelKioTagEntity) {
+        String id = UUID.randomUUID().toString();
+        channelKioTagEntity.setId(id);
+        channelKioTagEntity.setCreateTime(new Date());
+        channelKioTagService.add(channelKioTagEntity);
+        return success(true);
     }
 
-    /**
-     * 修改tag
-     */
-    @PutMapping
-    @Operation(summary = "修改")
-    public CommonResult update(@RequestBody ChannelKioTagDTO dto) {
-        //效验数据
-        ValidationUtils.validate(dto, AddGroup.class, DefaultGroup.class);
-        channelKioTagService.update(dto);
-        return new CommonResult();
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody ChannelKioTagEntity channelKioTagEntity) {
+        channelKioTagEntity.setUpdateTime(new Date());
+        channelKioTagService.update(channelKioTagEntity);
+        return success(true);
     }
 
-    @DeleteMapping
-    @Operation(summary = "删除")
-    public CommonResult tagDelete(@RequestBody String[] ids) {
-        channelKioTagService.delete(ids);
-        return new CommonResult();
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
+        channelKioTagService.delete(id);
+        return success(true);
     }
 
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/dao/ChannelKioDeviceDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/dao/ChannelKioDeviceDao.java
index be70fb5..31fd6c4 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/dao/ChannelKioDeviceDao.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/dao/ChannelKioDeviceDao.java
@@ -1,16 +1,25 @@
 package com.iailab.module.data.channel.kio.dao;
 
-import com.iailab.framework.common.dao.BaseDao;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
 import com.iailab.module.data.channel.kio.entity.ChannelKioDeviceEntity;
+import com.iailab.module.data.channel.kio.vo.KioDevicePageReqVO;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
- * @author PanZhibao
+ * @author lirm
  * @Description
- * @createTime 2024年06月04日
+ * @createTime 2024年08月26日
  */
 @TenantDS
 @Mapper
-public interface ChannelKioDeviceDao extends BaseDao<ChannelKioDeviceEntity> {
+public interface ChannelKioDeviceDao extends BaseMapperX<ChannelKioDeviceEntity> {
+
+    default PageResult<ChannelKioDeviceEntity> selectPage(KioDevicePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ChannelKioDeviceEntity>()
+                .likeIfPresent(ChannelKioDeviceEntity::getInstanceName, reqVO.getInstanceName())
+                .orderByDesc(ChannelKioDeviceEntity::getCreateTime));
+    }
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/dao/ChannelKioTagDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/dao/ChannelKioTagDao.java
index 27ffab1..596243b 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/dao/ChannelKioTagDao.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/dao/ChannelKioTagDao.java
@@ -1,16 +1,28 @@
 package com.iailab.module.data.channel.kio.dao;
 
 import com.iailab.framework.common.dao.BaseDao;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
 import com.iailab.module.data.channel.kio.entity.ChannelKioTagEntity;
+import com.iailab.module.data.channel.kio.entity.ChannelKioTagEntity;
+import com.iailab.module.data.channel.kio.vo.KioDevicePageReqVO;
+import com.iailab.module.data.channel.kio.vo.KioTagPageReqVO;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
- * @author PanZhibao
+ * @author lirm
  * @Description
- * @createTime 2024年06月05日
+ * @createTime 2024年08月26日
  */
 @TenantDS
 @Mapper
-public interface ChannelKioTagDao extends BaseDao<ChannelKioTagEntity> {
+public interface ChannelKioTagDao extends BaseMapperX<ChannelKioTagEntity> {
+    default PageResult<ChannelKioTagEntity> selectPage(KioTagPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ChannelKioTagEntity>()
+                .likeIfPresent(ChannelKioTagEntity::getTagName, reqVO.getTagName())
+                .likeIfPresent(ChannelKioTagEntity::getDevice, reqVO.getDevice())
+                .orderByDesc(ChannelKioTagEntity::getCreateTime));
+    }
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/ChannelKioDeviceService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/ChannelKioDeviceService.java
index bbaf799..b56f8f5 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/ChannelKioDeviceService.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/ChannelKioDeviceService.java
@@ -1,29 +1,30 @@
 package com.iailab.module.data.channel.kio.service;
 
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.BaseService;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.module.data.channel.kio.dto.ChannelKioDeviceDTO;
 import com.iailab.module.data.channel.kio.entity.ChannelKioDeviceEntity;
+import com.iailab.module.data.channel.kio.vo.KioDevicePageReqVO;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 /**
- * @author PanZhibao
+ * @author lirm
  * @Description
- * @createTime 2024年06月04日
+ * @createTime 2024年08月26日
  */
-public interface ChannelKioDeviceService extends BaseService<ChannelKioDeviceEntity> {
+public interface ChannelKioDeviceService{
 
-    PageData<ChannelKioDeviceDTO> page(Map<String, Object> params);
+    PageResult<ChannelKioDeviceEntity> queryPage(KioDevicePageReqVO reqVO);
 
-    List<ChannelKioDeviceDTO> list(Map<String, Object> params);
+    ChannelKioDeviceEntity info(String id);
 
-    ChannelKioDeviceDTO get(String id);
+    void add(ChannelKioDeviceEntity channelKioDeviceEntity);
 
-    void save(ChannelKioDeviceDTO dto);
+    void update(ChannelKioDeviceEntity channelKioDeviceEntity);
 
-    void update(ChannelKioDeviceDTO dto);
+    void delete(String id);
 
-    void delete(String[] ids);
+    List<ChannelKioDeviceEntity> list(Map<String, Object> params);
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/ChannelKioTagService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/ChannelKioTagService.java
index ba092e3..179fbbe 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/ChannelKioTagService.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/ChannelKioTagService.java
@@ -1,33 +1,31 @@
 package com.iailab.module.data.channel.kio.service;
 
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.BaseService;
-import com.iailab.module.data.channel.kio.dto.ChannelKioTagDTO;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.module.data.channel.kio.entity.ChannelKioTagEntity;
+import com.iailab.module.data.channel.kio.vo.KioTagPageReqVO;
 
 import java.util.List;
-import java.util.Map;
 
 /**
- * @author PanZhibao
+ * @author lirm
  * @Description
- * @createTime 2024年06月05日
+ * @createTime 2024年08月26日
  */
-public interface ChannelKioTagService extends BaseService<ChannelKioTagEntity> {
+public interface ChannelKioTagService {
 
-    PageData<ChannelKioTagDTO> page(Map<String, Object> params);
+    PageResult<ChannelKioTagEntity> queryPage(KioTagPageReqVO reqVO);
 
-    ChannelKioTagDTO get(String id);
+    ChannelKioTagEntity info(String id);
 
-    void save(ChannelKioTagDTO dto);
+    void add(ChannelKioTagEntity channelKioTagEntity);
 
-    void update(ChannelKioTagDTO dto);
+    void update(ChannelKioTagEntity channelKioTagEntity);
 
-    void delete(String[] ids);
-    List<ChannelKioTagDTO> getByDevice(String instanceName);
+    void delete(String id);
 
-    ChannelKioTagDTO getByTagName(String tagName);
+    List<ChannelKioTagEntity> getByDevice(String device);
+
+    ChannelKioTagEntity getByTagName(String tagName);
 
     void deleteByDeviceName(String name);
-
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/impl/ChannelKioDeviceServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/impl/ChannelKioDeviceServiceImpl.java
index 8a7cd0e..51c5de3 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/impl/ChannelKioDeviceServiceImpl.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/impl/ChannelKioDeviceServiceImpl.java
@@ -1,83 +1,69 @@
 package com.iailab.module.data.channel.kio.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.iailab.framework.common.constant.Constant;
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.impl.BaseServiceImpl;
-import com.iailab.framework.common.util.object.ConvertUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.module.data.channel.kio.service.ChannelKioTagService;
 import com.iailab.module.data.channel.kio.dao.ChannelKioDeviceDao;
-import com.iailab.module.data.channel.kio.dto.ChannelKioDeviceDTO;
 import com.iailab.module.data.channel.kio.entity.ChannelKioDeviceEntity;
 import com.iailab.module.data.channel.kio.service.ChannelKioDeviceService;
-import com.iailab.module.data.channel.kio.service.ChannelKioTagService;
-import org.apache.commons.lang3.StringUtils;
-import javax.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
+import com.iailab.module.data.channel.kio.vo.KioDevicePageReqVO;
 
-import java.util.Arrays;
+import javax.annotation.Resource;
+
+import com.iailab.module.data.channel.modbus.entity.ChannelModBusDeviceEntity;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
 /**
- * @author PanZhibao
+ * @author lirm
  * @Description
- * @createTime 2024年06月04日
+ * @createTime 2024年08月26日
  */
 @Service
-public class ChannelKioDeviceServiceImpl extends BaseServiceImpl<ChannelKioDeviceDao, ChannelKioDeviceEntity> implements ChannelKioDeviceService {
+public class ChannelKioDeviceServiceImpl extends ServiceImpl<ChannelKioDeviceDao, ChannelKioDeviceEntity> implements ChannelKioDeviceService {
+
+    @Resource
+    private ChannelKioDeviceDao channelKioDeviceDao;
 
     @Resource
     ChannelKioTagService channelKioTagService;
 
+
     @Override
-    public PageData<ChannelKioDeviceDTO> page(Map<String, Object> params) {
-        IPage<ChannelKioDeviceEntity> page = baseDao.selectPage(
-                getPage(params, Constant.CREATE_TIME, false),
-                getWrapper(params)
-        );
-        return getPageData(page, ChannelKioDeviceDTO.class);
+    public PageResult<ChannelKioDeviceEntity> queryPage(KioDevicePageReqVO reqVO) {
+        return channelKioDeviceDao.selectPage(reqVO);
     }
 
     @Override
-    public List<ChannelKioDeviceDTO> list(Map<String, Object> params) {
-        List<ChannelKioDeviceEntity> list = baseDao.selectList(getWrapper(params));
-        return ConvertUtils.sourceToTarget(list, ChannelKioDeviceDTO.class);
-    }
-
-    private QueryWrapper<ChannelKioDeviceEntity> getWrapper(Map<String, Object> params){
-        String instanceName = (String)params.get("instanceName");
-        QueryWrapper<ChannelKioDeviceEntity> wrapper = new QueryWrapper<>();
-        wrapper.like(StringUtils.isNotBlank(instanceName), "instance_name", instanceName);
-        return wrapper;
+    public ChannelKioDeviceEntity info(String id) {
+        return channelKioDeviceDao.selectById(id);
     }
 
     @Override
-    public ChannelKioDeviceDTO get(String id) {
-        ChannelKioDeviceEntity entity = baseDao.selectById(id);
-        return ConvertUtils.sourceToTarget(entity, ChannelKioDeviceDTO.class);
+    public void add(ChannelKioDeviceEntity channelKioDeviceEntity) {
+        channelKioDeviceDao.insert(channelKioDeviceEntity);
     }
 
     @Override
-    public void save(ChannelKioDeviceDTO dto) {
-        ChannelKioDeviceEntity entity = ConvertUtils.sourceToTarget(dto, ChannelKioDeviceEntity.class);
-        insert(entity);
+    public void update(ChannelKioDeviceEntity channelKioDeviceEntity) {
+        channelKioDeviceDao.updateById(channelKioDeviceEntity);
     }
 
     @Override
-    public void update(ChannelKioDeviceDTO dto) {
-        ChannelKioDeviceEntity entity = ConvertUtils.sourceToTarget(dto, ChannelKioDeviceEntity.class);
-        updateById(entity);
+    public void delete(String id) {
+        //先删除device下的tag
+        channelKioTagService.deleteByDeviceName(info(id).getInstanceName());
+
+        channelKioDeviceDao.deleteById(id);
+
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void delete(String[] ids) {
-        Arrays.asList(ids).forEach(id -> {
-            channelKioTagService.deleteByDeviceName(get(id).getInstanceName());
-        });
-        baseDao.deleteBatchIds(Arrays.asList(ids));
+    public List<ChannelKioDeviceEntity> list(Map<String, Object> params) {
+        return channelKioDeviceDao.selectList(new QueryWrapper<ChannelKioDeviceEntity>().orderByAsc("instance_name"));
     }
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/impl/ChannelKioTagServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/impl/ChannelKioTagServiceImpl.java
index 1ded093..de8c47d 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/impl/ChannelKioTagServiceImpl.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/service/impl/ChannelKioTagServiceImpl.java
@@ -1,106 +1,74 @@
 package com.iailab.module.data.channel.kio.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.iailab.framework.common.constant.Constant;
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.impl.BaseServiceImpl;
-import com.iailab.framework.common.util.object.ConvertUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.module.data.channel.kio.dao.ChannelKioTagDao;
-import com.iailab.module.data.channel.kio.dto.ChannelKioTagDTO;
 import com.iailab.module.data.channel.kio.entity.ChannelKioTagEntity;
 import com.iailab.module.data.channel.kio.service.ChannelKioTagService;
+import com.iailab.module.data.channel.kio.vo.KioTagPageReqVO;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 
 /**
- * @author PanZhibao
+ * @author lirm
  * @Description
- * @createTime 2024年06月05日
+ * @createTime 2024年08月26日
  */
 @Slf4j
 @Service
-public class ChannelKioTagServiceImpl extends BaseServiceImpl<ChannelKioTagDao, ChannelKioTagEntity> implements ChannelKioTagService {
+public class ChannelKioTagServiceImpl extends ServiceImpl<ChannelKioTagDao, ChannelKioTagEntity> implements ChannelKioTagService {
     @Resource
     private ChannelKioTagDao channelKioTagDao;
 
-    @Value("${iems.upload-dir}")
-    private String uploadDir;
-
     @Override
-    public PageData<ChannelKioTagDTO> page(Map<String, Object> params) {
-        IPage<ChannelKioTagEntity> page = baseDao.selectPage(
-                getPage(params, Constant.CREATE_TIME, false),
-                getWrapper(params)
-        );
-        return getPageData(page, ChannelKioTagDTO.class);
+    public PageResult<ChannelKioTagEntity> queryPage(KioTagPageReqVO reqVO) {
+        return channelKioTagDao.selectPage(reqVO);
     }
 
     @Override
-    public ChannelKioTagDTO get(String id) {
-        ChannelKioTagEntity entity = baseDao.selectById(id);
-        return ConvertUtils.sourceToTarget(entity, ChannelKioTagDTO.class);
+    public ChannelKioTagEntity info(String id) {
+        return channelKioTagDao.selectById(id);
     }
 
     @Override
-    public void save(ChannelKioTagDTO dto) {
-        ChannelKioTagEntity entity = ConvertUtils.sourceToTarget(dto, ChannelKioTagEntity.class);
-        entity.setCreateTime(new Date());
-        entity.setUpdateTime(new Date());
-        insert(entity);
+    public void add(ChannelKioTagEntity channelKioTagEntity) {
+        channelKioTagDao.insert(channelKioTagEntity);
     }
 
     @Override
-    public void update(ChannelKioTagDTO dto) {
-        ChannelKioTagEntity entity = ConvertUtils.sourceToTarget(dto, ChannelKioTagEntity.class);
-        entity.setUpdateTime(new Date());
-        updateById(entity);
+    public void update(ChannelKioTagEntity channelKioTagEntity) {
+        channelKioTagDao.updateById(channelKioTagEntity);
     }
 
     @Override
-    public void delete(String[] ids) {
-        baseDao.deleteBatchIds(Arrays.asList(ids));
+    public void delete(String id) {
+        channelKioTagDao.deleteById(id);
     }
 
     @Override
-    public List<ChannelKioTagDTO> getByDevice(String device) {
+    public List<ChannelKioTagEntity> getByDevice(String device) {
         QueryWrapper<ChannelKioTagEntity> wrapper = new QueryWrapper<>();
-        wrapper.like(StringUtils.isNotBlank(device), "device", device)
-        .orderByAsc("tag_id");
-        List<ChannelKioTagEntity> list = baseDao.selectList(wrapper);
-        return ConvertUtils.sourceToTarget(list, ChannelKioTagDTO.class);
+        wrapper.like("device", device);
+        wrapper.orderByAsc("tag_id");
+        List<ChannelKioTagEntity> list = channelKioTagDao.selectList(wrapper);
+        return list;
     }
 
     @Override
-    public ChannelKioTagDTO getByTagName(String tagName) {
+    public ChannelKioTagEntity getByTagName(String tagName) {
         QueryWrapper<ChannelKioTagEntity> wrapper = new QueryWrapper<>();
         wrapper.eq("tag_name", tagName);
-        ChannelKioTagEntity entity = baseDao.selectOne(wrapper);
-        return ConvertUtils.sourceToTarget(entity, ChannelKioTagDTO.class);
+        ChannelKioTagEntity entity = channelKioTagDao.selectOne(wrapper);
+        return entity;
     }
 
     @Override
     public void deleteByDeviceName(String name) {
-        baseDao.delete(new QueryWrapper<ChannelKioTagEntity>().eq("device",name));
+        channelKioTagDao.delete(new QueryWrapper<ChannelKioTagEntity>().eq("device",name));
     }
-
-    private QueryWrapper<ChannelKioTagEntity> getWrapper(Map<String, Object> params){
-        String tagName = (String) params.get("tagName");
-        String device = (String) params.get("device");
-        QueryWrapper<ChannelKioTagEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq(StringUtils.isNotBlank(device), "device", device);
-        wrapper.like(StringUtils.isNotBlank(tagName), "tag_name", tagName);
-        wrapper.orderByDesc("create_time");
-        return wrapper;
-    }
-
-
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioDevicePageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioDevicePageReqVO.java
new file mode 100644
index 0000000..7a40369
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioDevicePageReqVO.java
@@ -0,0 +1,21 @@
+package com.iailab.module.data.channel.kio.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - Kio分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class KioDevicePageReqVO extends PageParam {
+
+    private String instanceName;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioDeviceRespVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioDeviceRespVO.java
new file mode 100644
index 0000000..998e228
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioDeviceRespVO.java
@@ -0,0 +1,51 @@
+package com.iailab.module.data.channel.kio.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - KioDevice Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class KioDeviceRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "实例名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("实例名称")
+    private String instanceName;
+
+    @Schema(description = "IP地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("IP地址")
+    private String address;
+
+    @Schema(description = "端口", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("端口")
+    private Integer port;
+
+    @Schema(description = "用户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("用户名")
+    private String username;
+
+    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("密码")
+    private String password;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("创建时间")
+    private Date createTime;
+
+    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("更新时间")
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioTagPageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioTagPageReqVO.java
new file mode 100644
index 0000000..36ac970
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioTagPageReqVO.java
@@ -0,0 +1,23 @@
+package com.iailab.module.data.channel.kio.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - Kio分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class KioTagPageReqVO extends PageParam {
+
+    private String tagName;
+
+    private String device;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioTagRespVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioTagRespVO.java
new file mode 100644
index 0000000..35fb5eb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/vo/KioTagRespVO.java
@@ -0,0 +1,59 @@
+package com.iailab.module.data.channel.kio.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - KioDevice Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class KioTagRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("名称")
+    private String tagName;
+
+    @Schema(description = "数据类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("数据类型")
+    private String dataType;
+
+    @Schema(description = "顺序号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("顺序号")
+    private Integer tagId;
+
+    @Schema(description = "测点描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("测点描述")
+    private String tagDesc;
+
+    @Schema(description = "是否可以tag", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("是否可以tag")
+    private Boolean enabled;
+
+    @Schema(description = "关联设备", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("关联设备")
+    private String device;
+
+    @Schema(description = "采集频率", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("采集频率")
+    private Integer samplingRate;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("创建时间")
+    private Date createTime;
+
+    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("更新时间")
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/controller/admin/ChannelModbusTagController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/controller/admin/ChannelModbusTagController.java
index bdde24f..cf82388 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/controller/admin/ChannelModbusTagController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/controller/admin/ChannelModbusTagController.java
@@ -1,100 +1,85 @@
 package com.iailab.module.data.channel.modbus.controller.admin;
 
-import cn.hutool.core.codec.Base64;
-import com.iailab.module.data.common.utils.PageUtils;
-import com.iailab.module.data.common.utils.R;
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.module.data.channel.modbus.entity.ChannelModBusTagEntity;
 import com.iailab.module.data.channel.modbus.entity.ChannelModBusTagEntity;
 import com.iailab.module.data.channel.modbus.service.ChannelModbusTagService;
-import javax.annotation.Resource;
+import com.iailab.module.data.channel.modbus.vo.ModBusTagPageReqVO;
+import com.iailab.module.data.channel.modbus.vo.ModBusTagRespVO;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Map;
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.Date;
 import java.util.UUID;
 
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
 /**
- * 操作modbus tag配置
- *
- * @author DongYukun
- * @createTime 2023年04月25日 10:31:00
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月27日
  */
 @RestController
 @RequestMapping("/data/channel/modbus/tag")
 public class ChannelModbusTagController {
     @Resource
     private ChannelModbusTagService channelModbusTagService;
-    /**
-     * 分页查询tag
-     *
-     * @param params
-     */
-    @GetMapping("/list")
-    public R tagList(@RequestParam Map<String, Object> params){
-        PageUtils page = channelModbusTagService.queryPage(params);
 
-        return R.ok().put("page", page);
+    @GetMapping("/page")
+    public CommonResult<PageResult<ModBusTagRespVO>> list(@Valid ModBusTagPageReqVO reqVO) {
+        PageResult<ChannelModBusTagEntity> page = channelModbusTagService.queryPage(reqVO);
+
+        return success(BeanUtils.toBean(page, ModBusTagRespVO.class));
     }
+
     /**
-     * 根据id查询tag详情
+     * 根据id查询设备详情
      *
      * @param id
      */
     @GetMapping("/info/{id}")
-    public R tagInfo(@PathVariable("id") String id){
-        ChannelModBusTagEntity info= channelModbusTagService.info(Base64.decodeStr(id));
-        return R.ok().put("data", info);
-    }
-    /**
-     * 添加tag
-     *
-     * @param entity
-     */
-    @PostMapping("/add")
-    public R tagAdd(@RequestBody ChannelModBusTagEntity entity){
-        entity.setId(UUID.randomUUID().toString());
-        channelModbusTagService.add(entity);
-        return R.ok();
+    public CommonResult<ChannelModBusTagEntity> info(@PathVariable("id") String id) {
+        ChannelModBusTagEntity info = channelModbusTagService.info(id);
+        return success(info);
     }
 
     /**
-     * 修改tag
+     * 添加设备
      *
      * @param channelModBusTagEntity
      */
-    @PostMapping("/update")
-    public R tagUpdate(@RequestBody ChannelModBusTagEntity channelModBusTagEntity) {
-        channelModbusTagService.update(channelModBusTagEntity);
-        return R.ok();
+    @PostMapping("/add")
+    public CommonResult<Boolean> add(@RequestBody ChannelModBusTagEntity channelModBusTagEntity) {
+        String id = UUID.randomUUID().toString();
+        channelModBusTagEntity.setId(id);
+        channelModBusTagEntity.setCreateTime(new Date());
+        channelModbusTagService.add(channelModBusTagEntity);
+        return success(true);
     }
 
     /**
-     * 删除tag
-     * @param params
+     * 修改设备
      *
+     * @param channelModBusTagEntity
      */
-    @PostMapping("/delete")
-    public R tagDelete(@RequestBody Map<String, Object> params) {
-        String id = (String)params.get("id");
-        channelModbusTagService.delete(id);
-        return R.ok();
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody ChannelModBusTagEntity channelModBusTagEntity) {
+        channelModBusTagEntity.setUpdateTime(new Date());
+        channelModbusTagService.update(channelModBusTagEntity);
+        return success(true);
     }
 
-//    /**
-//     * 导入
-//     *
-//     * @param device
-//     * @param file
-//     * @return
-//     */
-//    @PostMapping("/import/{device}")
-//    public R importTag(@PathVariable("device") String device, @RequestParam("file") MultipartFile file) {
-//        try {
-//            if (file.isEmpty()) {
-//                throw new RRException("上传文件不能为空");
-//            }
-//            channelModbusTagService.importTag(device, file);
-//        } catch (Exception ex) {
-//            return R.error(ex.getMessage());
-//        }
-//        return R.ok();
-//    }
+    /**
+     * 删除设备
+     *
+     * @param id
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
+        channelModbusTagService.delete(id);
+        return success(true);
+    }
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/dao/ChannelModBusTagDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/dao/ChannelModBusTagDao.java
index 21826ea..250e613 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/dao/ChannelModBusTagDao.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/dao/ChannelModBusTagDao.java
@@ -1,23 +1,31 @@
 package com.iailab.module.data.channel.modbus.dao;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
 import com.iailab.module.data.channel.modbus.entity.ChannelModBusTagEntity;
+import com.iailab.module.data.channel.modbus.vo.ModBusTagPageReqVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
 /**
- * @author DongYukun
+ * @author lirm
  * @Description
- * @createTime 2023年04月25日 15:12:00
+ * @createTime 2024年08月27日
  */
 @TenantDS
 @Mapper
-public interface ChannelModBusTagDao extends BaseMapper<ChannelModBusTagEntity> {
+public interface ChannelModBusTagDao extends BaseMapperX<ChannelModBusTagEntity> {
 
-    void insertList(List<ChannelModBusTagEntity> list);
-
-    String selectIdByName(@Param("name") String name);
+    default PageResult<ChannelModBusTagEntity> selectPage(ModBusTagPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ChannelModBusTagEntity>()
+                .likeIfPresent(ChannelModBusTagEntity::getTagName, reqVO.getTagName())
+                .likeIfPresent(ChannelModBusTagEntity::getAddress, reqVO.getAddress())
+                .likeIfPresent(ChannelModBusTagEntity::getTagDesc, reqVO.getTagDesc())
+                .likeIfPresent(ChannelModBusTagEntity::getDevice, reqVO.getDevice())
+                .orderByDesc(ChannelModBusTagEntity::getCreateTime));
+    }
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/service/ChannelModbusTagService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/service/ChannelModbusTagService.java
index e2abf72..6ec084c 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/service/ChannelModbusTagService.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/service/ChannelModbusTagService.java
@@ -1,24 +1,24 @@
 package com.iailab.module.data.channel.modbus.service;
 
-import com.iailab.module.data.common.utils.PageUtils;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.module.data.channel.modbus.dto.ChannelModbusTagDTO;
 import com.iailab.module.data.channel.modbus.entity.ChannelModBusTagEntity;
+import com.iailab.module.data.channel.modbus.vo.ModBusTagPageReqVO;
 
 import java.util.List;
-import java.util.Map;
 
 /**
- * @author DongYukun
+ * @author lirm
  * @Description
- * @createTime 2023年05月08日 15:04:00
+ * @createTime 2024年08月27日
  */
 public interface ChannelModbusTagService {
     /**
      * 分页查询tag
      *
-     * @param params
+     * @param reqVO
      */
-    PageUtils queryPage(Map<String, Object> params);
+    PageResult queryPage(ModBusTagPageReqVO reqVO);
     
     /**
      * 查询tag详情
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/service/impl/ChannelModbusTagServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/service/impl/ChannelModbusTagServiceImpl.java
index 824196d..17c6c64 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/service/impl/ChannelModbusTagServiceImpl.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/service/impl/ChannelModbusTagServiceImpl.java
@@ -1,28 +1,26 @@
 package com.iailab.module.data.channel.modbus.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.iailab.module.data.common.utils.PageUtils;
-import com.iailab.module.data.common.utils.Query;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.common.util.object.ConvertUtils;
-import com.iailab.module.data.channel.modbus.dto.ChannelModbusTagDTO;
 import com.iailab.module.data.channel.modbus.dao.ChannelModBusTagDao;
+import com.iailab.module.data.channel.modbus.dto.ChannelModbusTagDTO;
 import com.iailab.module.data.channel.modbus.entity.ChannelModBusTagEntity;
 import com.iailab.module.data.channel.modbus.service.ChannelModbusTagService;
+import com.iailab.module.data.channel.modbus.vo.ModBusTagPageReqVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
-import java.util.Map;
 
 /**
- * @author DongYukun
+ * @author lirm
  * @Description
- * @createTime 2023年05月08日 15:04:00
+ * @createTime 2024年08月27日
  */
 @Slf4j
 @Service
@@ -33,65 +31,26 @@
     @Value("${iems.upload-dir}")
     private String uploadDir;
 
-    /**
-     * 分页查询tag
-     *
-     * @param params
-     */
     @Override
-    public PageUtils queryPage(Map<String, Object> params) {
-        String tagName = (String) params.get("tagName");
-        String address = (String) params.get("address");
-        String tagDesc = (String) params.get("tagDesc");
-        String device = (String) params.get("device");
-
-        IPage<ChannelModBusTagEntity> page = this.page(
-                new Query<ChannelModBusTagEntity>().getPage(params),
-                new QueryWrapper<ChannelModBusTagEntity>()
-                        .like(StringUtils.isNotBlank(tagName), "tag_name", tagName)
-                        .like(StringUtils.isNotBlank(address), "address", address)
-                        .like(StringUtils.isNotBlank(tagDesc), "tag_desc", tagDesc)
-                        .eq(StringUtils.isNotBlank(device), "device", device)
-                        .orderByDesc("create_time")
-        );
-        return new PageUtils(page);
+    public PageResult<ChannelModBusTagEntity> queryPage(ModBusTagPageReqVO reqVO) {
+        return channelModBusTagDao.selectPage(reqVO);
     }
 
-    /**
-     * 查询tag详情
-     *
-     * @param id
-     */
     @Override
     public ChannelModBusTagEntity info(String id) {
         return channelModBusTagDao.selectById(id);
     }
 
-    /**
-     * 添加tag
-     *
-     * @param channelModBusTagEntity
-     */
     @Override
     public void add(ChannelModBusTagEntity channelModBusTagEntity) {
         channelModBusTagDao.insert(channelModBusTagEntity);
     }
 
-    /**
-     * 修改tag
-     *
-     * @param channelModBusTagEntity
-     */
     @Override
     public void update(ChannelModBusTagEntity channelModBusTagEntity) {
         channelModBusTagDao.updateById(channelModBusTagEntity);
     }
 
-    /**
-     * 删除tag
-     *
-     * @param id
-     */
     @Override
     public void delete(String id) {
         channelModBusTagDao.deleteById(id);
@@ -105,11 +64,6 @@
         return channelModBusTagDao.selectList(queryWrapper);
     }
 
-    /**
-     * 查询全部
-     *
-     * @return
-     */
     @Override
     public List<ChannelModbusTagDTO> selectAll() {
         List<ChannelModBusTagEntity> entityList = baseMapper.selectList(
@@ -118,28 +72,16 @@
         return ConvertUtils.sourceToTarget(entityList, ChannelModbusTagDTO.class);
     }
 
-    /**
-     * listByIds
-     *
-     * @param ids
-     * @return
-     */
     @Override
     public List<ChannelModBusTagEntity> listByIds(List<String> ids) {
         return baseMapper.selectList(new QueryWrapper<ChannelModBusTagEntity>().in("id", ids));
     }
 
-    /**
-     * deleteByDeviceName
-     *
-     * @param name
-     */
     @Override
     public void deleteByDeviceName(String name) {
         baseMapper.delete(new QueryWrapper<ChannelModBusTagEntity>().eq("device", name));
     }
 
-    //TODO 使用easyExcel重写
 //    /**
 //     * 导入Tag
 //     *
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/vo/ModBusTagPageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/vo/ModBusTagPageReqVO.java
new file mode 100644
index 0000000..fc5ca7f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/vo/ModBusTagPageReqVO.java
@@ -0,0 +1,27 @@
+package com.iailab.module.data.channel.modbus.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月22日
+ */
+@Schema(description = "数据平台 - ModeBus分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class ModBusTagPageReqVO extends PageParam {
+
+    private String tagName;
+
+    private String address;
+
+    private String tagDesc;
+
+    private String device;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/vo/ModBusTagRespVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/vo/ModBusTagRespVO.java
new file mode 100644
index 0000000..2486441
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/modbus/vo/ModBusTagRespVO.java
@@ -0,0 +1,63 @@
+package com.iailab.module.data.channel.modbus.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月27日
+ */
+@Schema(description = "数据平台 - ModBusDevice Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ModBusTagRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "tag名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("tag名称")
+    private String tagName;
+
+    @Schema(description = "数据类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("数据类型")
+    private String dataType;
+
+    @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("是否启用")
+    private Boolean enabled;
+
+    @Schema(description = "大小端", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("大小端")
+    private String format;
+
+    @Schema(description = "关联设备", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("关联设备")
+    private String device;
+
+    @Schema(description = "Modbus地址 00001 ~49999", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("Modbus地址")
+    private String address;
+
+    @Schema(description = "采集频率", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("采集频率")
+    private Integer samplingRate;
+
+    @Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("描述")
+    private String tagDesc;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("创建时间")
+    private Date createTime;
+
+    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("更新时间")
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/controller/ChannelOPCDADeviceController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/controller/ChannelOPCDADeviceController.java
index 01e53fc..105998f 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/controller/ChannelOPCDADeviceController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/controller/ChannelOPCDADeviceController.java
@@ -1,86 +1,64 @@
 package com.iailab.module.data.channel.opcda.controller;
 
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
 import com.iailab.module.data.channel.opcda.entity.ChannelOPCDADeviceEntity;
 import com.iailab.module.data.channel.opcda.service.ChannelOPCDADeviceService;
-import com.iailab.module.data.common.utils.PageUtils;
-import com.iailab.module.data.common.utils.R;
+import com.iailab.module.data.channel.opcda.vo.OpcDaDevicePageReqVO;
+import com.iailab.module.data.channel.opcda.vo.OpcDaDeviceRespVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
 import java.util.Date;
-import java.util.Map;
 import java.util.UUID;
+
+import static com.iailab.framework.common.pojo.CommonResult.success;
 
 /**
  * 操作opc ua配置
- *
- * @author DongYukun
- * @createTime 2023年04月26日 10:33:00
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
  */
 @RestController
-@RequestMapping("/channel/opcda/device")
+@RequestMapping("/data/channel/opcda/device")
 public class ChannelOPCDADeviceController {
     @Autowired
     private ChannelOPCDADeviceService channelOPCDADeviceService;
 
-    /**
-     * 分页查询opc da 配置
-     *
-     * @param params
-     */
-    @GetMapping("/list")
-    public R list(@RequestParam Map<String, Object> params) {
-        PageUtils page = channelOPCDADeviceService.queryPage(params);
-
-        return R.ok().put("page", page);
+    @GetMapping("page")
+    public CommonResult<PageResult<OpcDaDeviceRespVO>> list(@Valid OpcDaDevicePageReqVO reqVO) {
+        PageResult<ChannelOPCDADeviceEntity> page = channelOPCDADeviceService.queryPage(reqVO);
+        return success(BeanUtils.toBean(page, OpcDaDeviceRespVO.class));
     }
 
-    /**
-     * 根据id查询opc da配置详情
-     *
-     * @param id
-     */
     @GetMapping("/info/{id}")
-    public R info(@PathVariable("id") String id) {
+    public CommonResult<ChannelOPCDADeviceEntity> info(@PathVariable("id") String id) {
         ChannelOPCDADeviceEntity info = channelOPCDADeviceService.info(id);
-        return R.ok().put("data", info);
+        return success(info);
     }
 
-    /**
-     * 添加opc ua配置
-     *
-     * @param channelOPCDADeviceEntity
-     */
     @PostMapping("/add")
-    public R add(@RequestBody ChannelOPCDADeviceEntity channelOPCDADeviceEntity) {
+    public CommonResult<Boolean> add(@RequestBody ChannelOPCDADeviceEntity channelOPCDADeviceEntity) {
         String id = UUID.randomUUID().toString();
         channelOPCDADeviceEntity.setId(id);
         channelOPCDADeviceEntity.setCreateTime(new Date());
         channelOPCDADeviceService.add(channelOPCDADeviceEntity);
-        return R.ok();
+        return success(true);
     }
 
-    /**
-     * 修改opc ua配置
-     *
-     * @param channelOPCDADeviceEntity
-     */
-    @PostMapping("/update")
-    public R update(@RequestBody ChannelOPCDADeviceEntity channelOPCDADeviceEntity) {
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody ChannelOPCDADeviceEntity channelOPCDADeviceEntity) {
         channelOPCDADeviceEntity.setUpdateTime(new Date());
         channelOPCDADeviceService.update(channelOPCDADeviceEntity);
-        return R.ok();
+        return success(true);
     }
 
-    /**
-     * 删除opc ua配置
-     *
-     * @param params
-     */
-    @PostMapping("/delete")
-    public R delete(@RequestBody Map<String, Object> params) {
-        String id = (String) params.get("id");
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
         channelOPCDADeviceService.delete(id);
-        return R.ok();
+        return success(true);
     }
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/controller/ChannelOPCDATagController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/controller/ChannelOPCDATagController.java
index 22d3aca..fe783cd 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/controller/ChannelOPCDATagController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/controller/ChannelOPCDATagController.java
@@ -1,102 +1,78 @@
 package com.iailab.module.data.channel.opcda.controller;
 
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
 import com.iailab.module.data.channel.opcda.entity.ChannelOPCDATagEntity;
 import com.iailab.module.data.channel.opcda.service.ChannelOPCDATagService;
+import com.iailab.module.data.channel.opcda.vo.OpcDaTagPageReqVO;
+import com.iailab.module.data.channel.opcda.vo.OpcDaTagRespVO;
 import com.iailab.module.data.common.exception.RRException;
-import com.iailab.module.data.common.utils.PageUtils;
-import com.iailab.module.data.common.utils.R;
-import jodd.util.Base64;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.util.Map;
+import javax.validation.Valid;
+import java.util.Date;
 import java.util.UUID;
+
+import static com.iailab.framework.common.pojo.CommonResult.success;
 
 /**
  * 操作OPCDA tag配置
- *
- * @author DongYukun
- * @createTime 2023年05月6日 17:44:00
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
  */
 @RestController
-@RequestMapping("/channel/opcda/tag")
+@RequestMapping("/data/channel/opcda/tag")
 public class ChannelOPCDATagController {
     @Autowired
     private ChannelOPCDATagService channelOPCDATagService;
-    /**
-     * 分页查询tag
-     *
-     * @param params
-     */
-    @GetMapping("/list")
-    public R tagList(@RequestParam Map<String, Object> params){
-        PageUtils page = channelOPCDATagService.queryPage(params);
-
-        return R.ok().put("page", page);
+    
+    @GetMapping("page")
+    public CommonResult<PageResult<OpcDaTagRespVO>> list(@Valid OpcDaTagPageReqVO reqVO) {
+        PageResult<ChannelOPCDATagEntity> page = channelOPCDATagService.queryPage(reqVO);
+        return success(BeanUtils.toBean(page, OpcDaTagRespVO.class));
     }
-    /**
-     * 根据id查询tag详情
-     *
-     * @param id
-     */
+
     @GetMapping("/info/{id}")
-    public R tagInfo(@PathVariable("id") String id){
-        ChannelOPCDATagEntity info= channelOPCDATagService.info(Base64.decodeToString(id));
-        return R.ok().put("data", info);
+    public CommonResult<ChannelOPCDATagEntity> info(@PathVariable("id") String id) {
+        ChannelOPCDATagEntity info = channelOPCDATagService.info(id);
+        return success(info);
     }
-    /**
-     * 添加tag
-     *
-     * @param entity
-     */
+
     @PostMapping("/add")
-    public R tagAdd(@RequestBody ChannelOPCDATagEntity entity){
-        entity.setId(UUID.randomUUID().toString());
-        channelOPCDATagService.add(entity);
-        return R.ok();
+    public CommonResult<Boolean> add(@RequestBody ChannelOPCDATagEntity channelOPCDATagEntity) {
+        String id = UUID.randomUUID().toString();
+        channelOPCDATagEntity.setId(id);
+        channelOPCDATagEntity.setCreateTime(new Date());
+        channelOPCDATagService.add(channelOPCDATagEntity);
+        return success(true);
     }
 
-    /**
-     * 修改tag
-     *
-     * @param channelOPCDATagEntity
-     */
-    @PostMapping("/update")
-    public R tagUpdate(@RequestBody ChannelOPCDATagEntity channelOPCDATagEntity) {
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody ChannelOPCDATagEntity channelOPCDATagEntity) {
+        channelOPCDATagEntity.setUpdateTime(new Date());
         channelOPCDATagService.update(channelOPCDATagEntity);
-        return R.ok();
+        return success(true);
     }
 
-    /**
-     * 删除tag
-     * @param params
-     *
-     */
-    @PostMapping("/delete")
-    public R tagDelete(@RequestBody Map<String, Object> params) {
-        String id = (String)params.get("id");
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
         channelOPCDATagService.delete(id);
-        return R.ok();
+        return success(true);
     }
-
-    /**
-     * 导入
-     *
-     * @param serverId
-     * @param file
-     * @return
-     */
     @PostMapping("/import/{serverId}")
-    public R importTag(@PathVariable("serverId") String serverId, @RequestParam("file") MultipartFile file) {
+    public CommonResult<String> importTag(@PathVariable("serverId") String serverId, @RequestParam("file") MultipartFile file) {
         try {
             if (file.isEmpty()) {
                 throw new RRException("上传文件不能为空");
             }
             channelOPCDATagService.importTag(serverId, file);
         } catch (Exception ex) {
-            return R.error(ex.getMessage());
+            ex.getMessage();
         }
-        return R.ok();
+        return success("上传成功");
     }
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/dao/ChannelOPCDADeviceDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/dao/ChannelOPCDADeviceDao.java
index 8d84401..e3ce918 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/dao/ChannelOPCDADeviceDao.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/dao/ChannelOPCDADeviceDao.java
@@ -1,18 +1,26 @@
 package com.iailab.module.data.channel.opcda.dao;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
 import com.iailab.module.data.channel.opcda.entity.ChannelOPCDADeviceEntity;
+import com.iailab.module.data.channel.opcda.vo.OpcDaDevicePageReqVO;
 import org.apache.ibatis.annotations.Mapper;
 
 
 /**
- * @author PanZhibao
+ * @author lirm
  * @Description
- * @createTime 2023年04月26日 11:31:00
+ * @createTime 2024年08月26日
  */
 @TenantDS
 @Mapper
-public interface ChannelOPCDADeviceDao extends BaseMapper<ChannelOPCDADeviceEntity> {
+public interface ChannelOPCDADeviceDao extends BaseMapperX<ChannelOPCDADeviceEntity> {
 
+    default PageResult<ChannelOPCDADeviceEntity> selectPage(OpcDaDevicePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ChannelOPCDADeviceEntity>()
+                .likeIfPresent(ChannelOPCDADeviceEntity::getServerName, reqVO.getServerName())
+                .orderByDesc(ChannelOPCDADeviceEntity::getCreateTime));
+    }
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/dao/ChannelOPCDATagDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/dao/ChannelOPCDATagDao.java
index 217fc56..ca00cdb 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/dao/ChannelOPCDATagDao.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/dao/ChannelOPCDATagDao.java
@@ -1,16 +1,29 @@
 package com.iailab.module.data.channel.opcda.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
 import com.iailab.module.data.channel.opcda.entity.ChannelOPCDATagEntity;
+import com.iailab.module.data.channel.opcda.entity.ChannelOPCDATagEntity;
+import com.iailab.module.data.channel.opcda.vo.OpcDaDevicePageReqVO;
+import com.iailab.module.data.channel.opcda.vo.OpcDaTagPageReqVO;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
- * @author DongYukun
+ * @author lirm
  * @Description
- * @createTime 2023年05月8日 15:01:00
+ * @createTime 2024年08月26日
  */
 @TenantDS
 @Mapper
-public interface ChannelOPCDATagDao extends BaseMapper<ChannelOPCDATagEntity> {
+public interface ChannelOPCDATagDao extends BaseMapperX<ChannelOPCDATagEntity> {
+    
+    default PageResult<ChannelOPCDATagEntity> selectPage(OpcDaTagPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ChannelOPCDATagEntity>()
+                .likeIfPresent(ChannelOPCDATagEntity::getTagName, reqVO.getTagName())
+                .likeIfPresent(ChannelOPCDATagEntity::getServerId, reqVO.getServerId())
+                .orderByDesc(ChannelOPCDATagEntity::getCreateTime));
+    }
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/ChannelOPCDADeviceService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/ChannelOPCDADeviceService.java
index c760f9d..8c6bca4 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/ChannelOPCDADeviceService.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/ChannelOPCDADeviceService.java
@@ -1,60 +1,30 @@
 package com.iailab.module.data.channel.opcda.service;
 
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.module.data.channel.opcda.dto.ChannelOPCDADeviceDTO;
 import com.iailab.module.data.channel.opcda.entity.ChannelOPCDADeviceEntity;
+import com.iailab.module.data.channel.opcda.vo.OpcDaDevicePageReqVO;
 import com.iailab.module.data.common.utils.PageUtils;
 
 import java.util.List;
 import java.util.Map;
 
 /**
- * @author DongYukun
+ * @author lirm
  * @Description
- * @createTime 2023年05月08日 15:04:00
+ * @createTime 2024年08月26日
  */
 public interface ChannelOPCDADeviceService {
-    /**
-     * 分页查询设备
-     *
-     * @param params
-     */
-    PageUtils queryPage(Map<String, Object> params);
-    /**
-     * 查询设备详情
-     *
-     * @param id
-     */
+
+    List<ChannelOPCDADeviceDTO> selectAll();
+
+    PageResult<ChannelOPCDADeviceEntity> queryPage(OpcDaDevicePageReqVO reqVO);
+
     ChannelOPCDADeviceEntity info(String id);
 
-    /**
-     * 列表
-     *
-     * @param params
-     * @return
-     */
-    List<ChannelOPCDADeviceEntity> list(Map<String, Object> params);
-
-    /**
-     * 添加设备
-     *
-     * @param channelOPCDADeviceEntity
-     */
     void add(ChannelOPCDADeviceEntity channelOPCDADeviceEntity);
-    /**
-     * 修改设备
-     *
-     * @param channelOPCDADeviceEntity
-     */
+
     void update(ChannelOPCDADeviceEntity channelOPCDADeviceEntity);
-    /**
-     * 删除设备
-     *
-     * @param id
-     */
+
     void delete(String id);
-    /**
-     * 查询全部设备
-     *
-     */
-    List<ChannelOPCDADeviceDTO> selectAll();
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/ChannelOPCDATagService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/ChannelOPCDATagService.java
index f5d4cff..c0594a6 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/ChannelOPCDATagService.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/ChannelOPCDATagService.java
@@ -1,7 +1,9 @@
 package com.iailab.module.data.channel.opcda.service;
 
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.module.data.channel.opcda.dto.ChannelOPCDATagDTO;
 import com.iailab.module.data.channel.opcda.entity.ChannelOPCDATagEntity;
+import com.iailab.module.data.channel.opcda.vo.OpcDaTagPageReqVO;
 import com.iailab.module.data.common.utils.PageUtils;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -9,62 +11,29 @@
 import java.util.Map;
 
 /**
- * @author DongYukun
+ * @author lirm
  * @Description
- * @createTime 2023年05月08日 15:04:00
+ * @createTime 2024年08月26日
  */
 public interface ChannelOPCDATagService {
-    /**
-     * 分页查询tag
-     *
-     * @param params
-     */
-    PageUtils queryPage(Map<String, Object> params);
-
-    /**
-     * 查询tag详情
-     * @param id
-     *
-     */
-    ChannelOPCDATagEntity info(String id);
-    /**
-     * 添加tag
-     *
-     * @param channelOPCDATagEntity
-     */
-    void add(ChannelOPCDATagEntity channelOPCDATagEntity);
-    /**
-     * 修改tag
-     *
-     * @param channelOPCDATagEntity
-     */
-    void update(ChannelOPCDATagEntity channelOPCDATagEntity);
-    /**
-     * 删除tag
-     * @param id
-     *
-     */
-    void delete(String id);
 
     List<ChannelOPCDATagEntity> getByserverId(String serverId);
-
 
     List<ChannelOPCDATagDTO> selectAll();
 
     List<ChannelOPCDATagEntity> listByIds(List<String> ids);
 
-    /**
-     * 通过serverId删除
-     *
-     */
     void deleteByServerId(String serverId);
 
-    /**
-     * 导入Tag
-     *
-     * @param serverId
-     * @param file
-     * @throws Exception
-     */
     void importTag(String serverId, MultipartFile file) throws Exception;
+
+    PageResult<ChannelOPCDATagEntity> queryPage(OpcDaTagPageReqVO reqVO);
+
+    ChannelOPCDATagEntity info(String id);
+
+    void add(ChannelOPCDATagEntity channelOPCDATagEntity);
+
+    void update(ChannelOPCDATagEntity channelOPCDATagEntity);
+
+    void delete(String id);
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/impl/ChannelOPCDADeviceServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/impl/ChannelOPCDADeviceServiceImpl.java
index 2c79766..e8feaa7 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/impl/ChannelOPCDADeviceServiceImpl.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/impl/ChannelOPCDADeviceServiceImpl.java
@@ -4,12 +4,14 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.common.util.object.ConvertUtils;
 import com.iailab.module.data.channel.opcda.dao.ChannelOPCDADeviceDao;
 import com.iailab.module.data.channel.opcda.dto.ChannelOPCDADeviceDTO;
 import com.iailab.module.data.channel.opcda.entity.ChannelOPCDADeviceEntity;
 import com.iailab.module.data.channel.opcda.service.ChannelOPCDADeviceService;
 import com.iailab.module.data.channel.opcda.service.ChannelOPCDATagService;
+import com.iailab.module.data.channel.opcda.vo.OpcDaDevicePageReqVO;
 import com.iailab.module.data.common.utils.PageUtils;
 import com.iailab.module.data.common.utils.Query;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,9 +22,9 @@
 import java.util.Map;
 
 /**
- * @author DongYukun
+ * @author lirm
  * @Description
- * @createTime 2023年05月08日 15:04:00
+ * @createTime 2024年08月26日
  */
 @Service
 public class ChannelOPCDADeviceServiceImpl extends ServiceImpl<ChannelOPCDADeviceDao, ChannelOPCDADeviceEntity> implements ChannelOPCDADeviceService {
@@ -31,70 +33,27 @@
 
     @Autowired
     private ChannelOPCDATagService channelOPCDATagService;
-    /**
-     * 分页查询opc ua配置
-     *
-     * @param params
-     */
-    @Override
-    public PageUtils queryPage(Map<String, Object> params) {
-        String serverName = (String) params.get("serverName");
 
-        IPage<ChannelOPCDADeviceEntity> page = this.page(
-                new Query<ChannelOPCDADeviceEntity>().getPage(params),
-                new QueryWrapper<ChannelOPCDADeviceEntity>()
-                        .like(StringUtils.isNotBlank(serverName), "server_name", serverName)
-                        .orderByDesc("create_time")
-        );
-        return new PageUtils(page);
+    @Override
+    public PageResult<ChannelOPCDADeviceEntity> queryPage(OpcDaDevicePageReqVO reqVO) {
+        return channelOPCDADeviceDao.selectPage(reqVO);
     }
 
-    /**
-     * 查询opc ua配置详情
-     *
-     * @param id
-     */
     @Override
     public ChannelOPCDADeviceEntity info(String id) {
         return channelOPCDADeviceDao.selectById(id);
     }
 
-    /**
-     * 列表
-     *
-     * @param params
-     * @return
-     */
-    @Override
-    public List<ChannelOPCDADeviceEntity> list(Map<String, Object> params) {
-        return channelOPCDADeviceDao.selectList(new QueryWrapper<ChannelOPCDADeviceEntity>().orderByAsc("server_name"));
-    }
-
-    /**
-     * 添加opc ua配置
-     *
-     * @param channelOPCDADeviceEntity
-     */
     @Override
     public void add(ChannelOPCDADeviceEntity channelOPCDADeviceEntity) {
         channelOPCDADeviceDao.insert(channelOPCDADeviceEntity);
     }
 
-    /**
-     * 修改opc ua配置
-     *
-     * @param channelOPCDADeviceEntity
-     */
     @Override
     public void update(ChannelOPCDADeviceEntity channelOPCDADeviceEntity) {
         channelOPCDADeviceDao.updateById(channelOPCDADeviceEntity);
     }
 
-    /**
-     * 删除opc ua配置
-     *
-     * @param id
-     */
     @Override
     public void delete(String id) {
 
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/impl/ChannelOPCDATagServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/impl/ChannelOPCDATagServiceImpl.java
index e274fad..e74c9dc 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/impl/ChannelOPCDATagServiceImpl.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/service/impl/ChannelOPCDATagServiceImpl.java
@@ -1,17 +1,15 @@
 package com.iailab.module.data.channel.opcda.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.common.util.object.ConvertUtils;
 import com.iailab.module.data.channel.opcda.dao.ChannelOPCDATagDao;
 import com.iailab.module.data.channel.opcda.dto.ChannelOPCDATagDTO;
 import com.iailab.module.data.channel.opcda.entity.ChannelOPCDATagEntity;
 import com.iailab.module.data.channel.opcda.service.ChannelOPCDATagService;
-import com.iailab.module.data.common.utils.PageUtils;
-import com.iailab.module.data.common.utils.Query;
+import com.iailab.module.data.channel.opcda.vo.OpcDaTagPageReqVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.usermodel.CellType;
 import org.apache.poi.xssf.usermodel.XSSFRow;
@@ -27,13 +25,12 @@
 import java.io.FileInputStream;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 import java.util.UUID;
 
 /**
- * @author DongYukun
+ * @author lirm
  * @Description
- * @createTime 2023年05月08日 15:04:00
+ * @createTime 2024年08月26日
  */
 @Slf4j
 @Service
@@ -44,34 +41,46 @@
     @Value("${iems.upload-dir}")
     private String uploadDir;
 
-    /**
-     * 分页查询tag
-     *
-     * @param params
-     */
-    @Override
-    public PageUtils queryPage(Map<String, Object> params) {
-        String tagName = (String) params.get("tagName");
-        String serverId = (String) params.get("serverId");
 
-        IPage<ChannelOPCDATagEntity> page = this.page(
-                new Query<ChannelOPCDATagEntity>().getPage(params),
-                new QueryWrapper<ChannelOPCDATagEntity>()
-                        .like(StringUtils.isNotBlank(tagName), "tag_name", tagName)
-                        .eq(StringUtils.isNotBlank(serverId), "server_id", serverId)
-                        .orderByDesc("create_time")
-        );
-        return new PageUtils(page);
+    @Override
+    public PageResult<ChannelOPCDATagEntity> queryPage(OpcDaTagPageReqVO reqVO) {
+        return channelOPCDATagDao.selectPage(reqVO);
     }
 
-    /**
-     * 查询tag详情
-     *
-     * @param id
-     */
     @Override
     public ChannelOPCDATagEntity info(String id) {
         return channelOPCDATagDao.selectById(id);
+    }
+
+    @Override
+    public void add(ChannelOPCDATagEntity channelOPCDATagEntity) {
+        channelOPCDATagDao.insert(channelOPCDATagEntity);
+    }
+
+    @Override
+    public void update(ChannelOPCDATagEntity channelOPCDATagEntity) {
+        channelOPCDATagDao.updateById(channelOPCDATagEntity);
+    }
+
+    @Override
+    public void delete(String id) {
+        channelOPCDATagDao.deleteById(id);
+    }
+
+    @Override
+    public List<ChannelOPCDATagDTO> selectAll() {
+        List<ChannelOPCDATagEntity> entityList = channelOPCDATagDao.selectList(null);
+        return ConvertUtils.sourceToTarget(entityList, ChannelOPCDATagDTO.class);
+    }
+
+    @Override
+    public List<ChannelOPCDATagEntity> listByIds(List<String> ids) {
+        return channelOPCDATagDao.selectList(new QueryWrapper<ChannelOPCDATagEntity>().in("id", ids));
+    }
+
+    @Override
+    public void deleteByServerId(String serverId) {
+        channelOPCDATagDao.delete(new QueryWrapper<ChannelOPCDATagEntity>().eq("server_id",serverId));
     }
 
     @Override
@@ -82,62 +91,6 @@
 
     }
 
-    /**
-     * 添加tag
-     *
-     * @param channelOPCDATagEntity
-     */
-    @Override
-    public void add(ChannelOPCDATagEntity channelOPCDATagEntity) {
-        channelOPCDATagDao.insert(channelOPCDATagEntity);
-    }
-
-    /**
-     * 修改tag
-     *
-     * @param channelOPCDATagEntity
-     */
-    @Override
-    public void update(ChannelOPCDATagEntity channelOPCDATagEntity) {
-        channelOPCDATagDao.updateById(channelOPCDATagEntity);
-    }
-
-    /**
-     * 删除tag
-     *
-     * @param id
-     */
-    @Override
-    public void delete(String id) {
-        channelOPCDATagDao.deleteById(id);
-    }
-
-    @Override
-    public List<ChannelOPCDATagDTO> selectAll() {
-
-        List<ChannelOPCDATagEntity> entityList = baseMapper.selectList(
-                null
-        );
-        return ConvertUtils.sourceToTarget(entityList, ChannelOPCDATagDTO.class);
-    }
-
-    @Override
-    public List<ChannelOPCDATagEntity> listByIds(List<String> ids) {
-        return baseMapper.selectList(new QueryWrapper<ChannelOPCDATagEntity>().in("id", ids));
-    }
-
-    @Override
-    public void deleteByServerId(String serverId) {
-        baseMapper.delete(new QueryWrapper<ChannelOPCDATagEntity>().eq("server_id",serverId));
-    }
-
-    /**
-     * 导入Tag
-     *
-     * @param serverId
-     * @param file
-     * @throws Exception
-     */
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void importTag(String serverId, MultipartFile file) throws Exception {
@@ -173,7 +126,7 @@
             //getBaseMapper().insertList(dangerList);
             dangerList.forEach(item -> {
                 try {
-                    getBaseMapper().insert(item);
+                    channelOPCDATagDao.insert(item);
                 } catch (Exception ex) {
                     log.warn("插入异常:" + item.getTagName());
                 }
@@ -184,4 +137,5 @@
             throw ex;
         }
     }
+
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaDevicePageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaDevicePageReqVO.java
new file mode 100644
index 0000000..7619bdb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaDevicePageReqVO.java
@@ -0,0 +1,21 @@
+package com.iailab.module.data.channel.opcda.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - opcda分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class OpcDaDevicePageReqVO extends PageParam {
+
+    private String serverName;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaDeviceRespVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaDeviceRespVO.java
new file mode 100644
index 0000000..fe7bc86
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaDeviceRespVO.java
@@ -0,0 +1,55 @@
+package com.iailab.module.data.channel.opcda.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - opcdaDevice Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class OpcDaDeviceRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "服务名", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("服务名")
+    private String serverName;
+
+    @Schema(description = "IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("IP")
+    private String host;
+
+    @Schema(description = "用户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("用户名")
+    private String user;
+
+    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("密码")
+    private String password;
+
+    @Schema(description = "设备名", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("设备名")
+    private String progId;
+
+    @Schema(description = "设备注册表ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("设备注册表ID")
+    private String clsId;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("创建时间")
+    private Date createTime;
+
+    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("更新时间")
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaTagPageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaTagPageReqVO.java
new file mode 100644
index 0000000..0a03a6c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaTagPageReqVO.java
@@ -0,0 +1,23 @@
+package com.iailab.module.data.channel.opcda.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - opcda分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class OpcDaTagPageReqVO extends PageParam {
+
+    private String tagName;
+
+    private String serverId;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaTagRespVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaTagRespVO.java
new file mode 100644
index 0000000..89709db
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcda/vo/OpcDaTagRespVO.java
@@ -0,0 +1,51 @@
+package com.iailab.module.data.channel.opcda.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - opcdaTag Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class OpcDaTagRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "服务ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("服务ID")
+    private String serverId;
+
+    @Schema(description = "tag名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("tag名称")
+    private String tagName;
+
+    @Schema(description = "数据类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("数据类型")
+    private String dataType;
+
+    @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("是否启用")
+    private Boolean enabled;
+
+    @Schema(description = "itemID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("itemID")
+    private String itemId;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("创建时间")
+    private Date createTime;
+
+    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("更新时间")
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/controller/admin/ChannelOPCUADeviceController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/controller/admin/ChannelOPCUADeviceController.java
index 4324d41..fe43eee 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/controller/admin/ChannelOPCUADeviceController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/controller/admin/ChannelOPCUADeviceController.java
@@ -1,23 +1,25 @@
 package com.iailab.module.data.channel.opcua.controller.admin;
 
-import com.iailab.module.data.common.utils.PageUtils;
-import com.iailab.module.data.common.utils.R;
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
 import com.iailab.module.data.channel.opcua.entity.ChannelOPCUADeviceEntity;
 import com.iailab.module.data.channel.opcua.service.ChannelOPCUADeviceService;
-import javax.annotation.Resource;
+import com.iailab.module.data.channel.opcua.vo.OpcUaDevicePageReqVO;
+import com.iailab.module.data.channel.opcua.vo.OpcUaDeviceRespVO;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.Map;
+import javax.annotation.Resource;
+import javax.validation.Valid;
 import java.util.UUID;
+
+import static com.iailab.framework.common.pojo.CommonResult.success;
 
 /**
  * 操作opc ua配置
- *
- * @author DongYukun
- * @createTime 2023年04月26日 10:33:00
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
  */
 @RestController
 @RequestMapping("/data/channel/opcua/device")
@@ -25,84 +27,57 @@
     @Resource
     private ChannelOPCUADeviceService channelOPCUADeviceService;
 
-    /**
-     * 分页查询opc ua 配置
-     *
-     * @param params
-     */
-    @GetMapping("/list")
-    public R list(@RequestParam Map<String, Object> params) {
-        PageUtils page = channelOPCUADeviceService.queryPage(params);
-
-        return R.ok().put("page", page);
+    @GetMapping("page")
+    public CommonResult<PageResult<OpcUaDeviceRespVO>> list(@Valid OpcUaDevicePageReqVO reqVO) {
+        PageResult<ChannelOPCUADeviceEntity> page = channelOPCUADeviceService.queryPage(reqVO);
+        return success(BeanUtils.toBean(page, OpcUaDeviceRespVO.class));
     }
 
-    /**
-     * 根据id查询opc ua配置详情
-     *
-     * @param id
-     */
     @GetMapping("/info/{id}")
-    public R info(@PathVariable("id") String id) {
+    public CommonResult<ChannelOPCUADeviceEntity> info(@PathVariable("id") String id) {
         ChannelOPCUADeviceEntity info = channelOPCUADeviceService.info(id);
-        return R.ok().put("data", info);
+        return success(info);
     }
 
-    /**
-     * 添加opc ua配置
-     *
-     * @param channelOPCUADeviceEntity
-     */
     @PostMapping("/add")
-    public R add(@RequestBody ChannelOPCUADeviceEntity channelOPCUADeviceEntity) {
+    public CommonResult<Boolean> add(@RequestBody ChannelOPCUADeviceEntity channelOPCUADeviceEntity) {
         String id = UUID.randomUUID().toString();
         channelOPCUADeviceEntity.setId(id);
         channelOPCUADeviceService.add(channelOPCUADeviceEntity);
-        return R.ok();
+        return success(true);
     }
 
-    /**
-     * 修改opc ua配置
-     *
-     * @param channelOPCUADeviceEntity
-     */
-    @PostMapping("/update")
-    public R update(@RequestBody ChannelOPCUADeviceEntity channelOPCUADeviceEntity) {
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody ChannelOPCUADeviceEntity channelOPCUADeviceEntity) {
         channelOPCUADeviceService.update(channelOPCUADeviceEntity);
-        return R.ok();
+        return success(true);
     }
 
-    /**
-     * 删除opc ua配置
-     *
-     * @param params
-     */
-    @PostMapping("/delete")
-    public R delete(@RequestBody Map<String, Object> params) {
-        String id = (String) params.get("id");
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
         channelOPCUADeviceService.delete(id);
-        return R.ok();
+        return success(true);
     }
     /**
      * 上传安全证书
      *
      * @param file
      */
-    @PostMapping("/upload")
-    public R uploadFile(@RequestParam("file") MultipartFile file) {
-        String fileName = file.getOriginalFilename();
-        String filePath = "";
-        try {
-            File dir = new File(filePath);
-            if (!dir.exists()) {
-                dir.mkdirs();
-            }
-            File saveFile = new File(filePath + fileName);
-            file.transferTo(saveFile);
-            return R.ok().put("data",saveFile.getAbsolutePath());
-        } catch (IOException e) {
-            e.printStackTrace();
-            return R.error();
-        }
-    }
+//    @PostMapping("/upload")
+//    public R uploadFile(@RequestParam("file") MultipartFile file) {
+//        String fileName = file.getOriginalFilename();
+//        String filePath = "";
+//        try {
+//            File dir = new File(filePath);
+//            if (!dir.exists()) {
+//                dir.mkdirs();
+//            }
+//            File saveFile = new File(filePath + fileName);
+//            file.transferTo(saveFile);
+//            return R.ok().put("data",saveFile.getAbsolutePath());
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//            return R.error();
+//        }
+//    }
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/controller/admin/ChannelOPCUATagController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/controller/admin/ChannelOPCUATagController.java
index 94f65c7..1a2f688 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/controller/admin/ChannelOPCUATagController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/controller/admin/ChannelOPCUATagController.java
@@ -1,102 +1,77 @@
 package com.iailab.module.data.channel.opcua.controller.admin;
 
-import cn.hutool.core.codec.Base64;
-import com.iailab.module.data.common.exception.RRException;
-import com.iailab.module.data.common.utils.PageUtils;
-import com.iailab.module.data.common.utils.R;
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
 import com.iailab.module.data.channel.opcua.entity.ChannelOPCUATagEntity;
 import com.iailab.module.data.channel.opcua.service.ChannelOPCUATagService;
-import javax.annotation.Resource;
+import com.iailab.module.data.channel.opcua.vo.OpcUaTagPageReqVO;
+import com.iailab.module.data.channel.opcua.vo.OpcUaTagRespVO;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
 
-import java.util.Map;
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.Date;
 import java.util.UUID;
+
+import static com.iailab.framework.common.pojo.CommonResult.success;
 
 /**
  * 操作opcua tag配置
- *
- * @author DongYukun
- * @createTime 2023年05月6日 17:44:00
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
  */
 @RestController
 @RequestMapping("/data/channel/opcua/tag")
 public class ChannelOPCUATagController {
     @Resource
     private ChannelOPCUATagService channelOpcuaTagService;
-    /**
-     * 分页查询tag
-     *
-     * @param params
-     */
-    @GetMapping("/list")
-    public R tagList(@RequestParam Map<String, Object> params){
-        PageUtils page = channelOpcuaTagService.queryPage(params);
 
-        return R.ok().put("page", page);
+    @GetMapping("page")
+    public CommonResult<PageResult<OpcUaTagRespVO>> list(@Valid OpcUaTagPageReqVO reqVO) {
+        PageResult<ChannelOPCUATagEntity> page = channelOpcuaTagService.queryPage(reqVO);
+        return success(BeanUtils.toBean(page, OpcUaTagRespVO.class));
     }
-    /**
-     * 根据id查询tag详情
-     *
-     * @param id
-     */
+
     @GetMapping("/info/{id}")
-    public R tagInfo(@PathVariable("id") String id){
-        ChannelOPCUATagEntity info= channelOpcuaTagService.info(Base64.decodeStr(id));
-        return R.ok().put("data", info);
+    public CommonResult<ChannelOPCUATagEntity> info(@PathVariable("id") String id) {
+        ChannelOPCUATagEntity info = channelOpcuaTagService.info(id);
+        return success(info);
     }
-    /**
-     * 添加tag
-     *
-     * @param entity
-     */
+
     @PostMapping("/add")
-    public R tagAdd(@RequestBody ChannelOPCUATagEntity entity){
-        entity.setId(UUID.randomUUID().toString());
-        channelOpcuaTagService.add(entity);
-        return R.ok();
+    public CommonResult<Boolean> add(@RequestBody ChannelOPCUATagEntity channelOPCUATagEntity) {
+        String id = UUID.randomUUID().toString();
+        channelOPCUATagEntity.setId(id);
+        channelOPCUATagEntity.setCreateTime(new Date());
+        channelOpcuaTagService.add(channelOPCUATagEntity);
+        return success(true);
     }
 
-    /**
-     * 修改tag
-     *
-     * @param channelOPCUATagEntity
-     */
-    @PostMapping("/update")
-    public R tagUpdate(@RequestBody ChannelOPCUATagEntity channelOPCUATagEntity) {
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody ChannelOPCUATagEntity channelOPCUATagEntity) {
+        channelOPCUATagEntity.setUpdateTime(new Date());
         channelOpcuaTagService.update(channelOPCUATagEntity);
-        return R.ok();
+        return success(true);
     }
 
-    /**
-     * 删除tag
-     * @param params
-     *
-     */
-    @PostMapping("/delete")
-    public R tagDelete(@RequestBody Map<String, Object> params) {
-        String id = (String)params.get("id");
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
         channelOpcuaTagService.delete(id);
-        return R.ok();
+        return success(true);
     }
 
-    /**
-     * 导入
-     *
-     * @param device
-     * @param file
-     * @return
-     */
-    @PostMapping("/import/{device}")
-    public R importTag(@PathVariable("device") String device, @RequestParam("file") MultipartFile file) {
-        try {
-            if (file.isEmpty()) {
-                throw new RRException("上传文件不能为空");
-            }
-            channelOpcuaTagService.importTag(device, file);
-        } catch (Exception ex) {
-            return R.error(ex.getMessage());
-        }
-        return R.ok();
-    }
+//    @PostMapping("/import/{device}")
+//    public R importTag(@PathVariable("device") String device, @RequestParam("file") MultipartFile file) {
+//        try {
+//            if (file.isEmpty()) {
+//                throw new RRException("上传文件不能为空");
+//            }
+//            channelOpcuaTagService.importTag(device, file);
+//        } catch (Exception ex) {
+//            return R.error(ex.getMessage());
+//        }
+//        return R.ok();
+//    }
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/dao/ChannelOPCUADeviceDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/dao/ChannelOPCUADeviceDao.java
index 43099f5..519ccb6 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/dao/ChannelOPCUADeviceDao.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/dao/ChannelOPCUADeviceDao.java
@@ -1,21 +1,25 @@
 package com.iailab.module.data.channel.opcua.dao;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
 import com.iailab.module.data.channel.opcua.entity.ChannelOPCUADeviceEntity;
-import com.iailab.module.data.channel.opcua.entity.ChannelOPCUADeviceEntity;
-import com.iailab.module.data.channel.opcua.entity.ChannelOPCUADeviceEntity;
-import com.iailab.module.data.channel.opcua.entity.ChannelOPCUADeviceEntity;
+import com.iailab.module.data.channel.opcua.vo.OpcUaDevicePageReqVO;
 import org.apache.ibatis.annotations.Mapper;
 
 
 /**
- * @author PanZhibao
+ * @author lirm
  * @Description
- * @createTime 2023年04月26日 11:31:00
+ * @createTime 2024年08月26日
  */
 @TenantDS
 @Mapper
-public interface ChannelOPCUADeviceDao extends BaseMapper<ChannelOPCUADeviceEntity> {
+public interface ChannelOPCUADeviceDao extends BaseMapperX<ChannelOPCUADeviceEntity> {
 
+    default PageResult<ChannelOPCUADeviceEntity> selectPage(OpcUaDevicePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ChannelOPCUADeviceEntity>()
+                .likeIfPresent(ChannelOPCUADeviceEntity::getServerName, reqVO.getServerName()));
+    }
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/dao/ChannelOPCUATagDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/dao/ChannelOPCUATagDao.java
index 00d1ddb..c154be9 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/dao/ChannelOPCUATagDao.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/dao/ChannelOPCUATagDao.java
@@ -1,19 +1,25 @@
 package com.iailab.module.data.channel.opcua.dao;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
 import com.iailab.module.data.channel.opcua.entity.ChannelOPCUATagEntity;
-import com.iailab.module.data.channel.opcua.entity.ChannelOPCUATagEntity;
-import com.iailab.module.data.channel.opcua.entity.ChannelOPCUATagEntity;
-import com.iailab.module.data.channel.opcua.entity.ChannelOPCUATagEntity;
+import com.iailab.module.data.channel.opcua.vo.OpcUaTagPageReqVO;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
- * @author DongYukun
+ * @author lirm
  * @Description
- * @createTime 2023年05月8日 15:01:00
+ * @createTime 2024年08月26日
  */
 @TenantDS
 @Mapper
-public interface ChannelOPCUATagDao extends BaseMapper<ChannelOPCUATagEntity> {
+public interface ChannelOPCUATagDao extends BaseMapperX<ChannelOPCUATagEntity> {
+    default PageResult<ChannelOPCUATagEntity> selectPage(OpcUaTagPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ChannelOPCUATagEntity>()
+                .likeIfPresent(ChannelOPCUATagEntity::getTagName, reqVO.getTagName())
+                .likeIfPresent(ChannelOPCUATagEntity::getDevice, reqVO.getDevice())
+                .orderByDesc(ChannelOPCUATagEntity::getCreateTime));
+    }
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/ChannelOPCUADeviceService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/ChannelOPCUADeviceService.java
index cf66752..c68921c 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/ChannelOPCUADeviceService.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/ChannelOPCUADeviceService.java
@@ -1,60 +1,32 @@
 package com.iailab.module.data.channel.opcua.service;
 
-import com.iailab.module.data.common.utils.PageUtils;
-import com.iailab.module.data.channel.opcua.entity.ChannelOPCUADeviceEntity;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.module.data.channel.opcua.dto.ChannelOPCUADeviceDTO;
+import com.iailab.module.data.channel.opcua.entity.ChannelOPCUADeviceEntity;
+import com.iailab.module.data.channel.opcua.vo.OpcUaDevicePageReqVO;
+import com.iailab.module.data.common.utils.PageUtils;
 
 import java.util.List;
 import java.util.Map;
 
 /**
- * @author DongYukun
+ * @author lirm
  * @Description
- * @createTime 2023年05月08日 15:04:00
+ * @createTime 2024年08月26日
  */
 public interface ChannelOPCUADeviceService {
-    /**
-     * 分页查询设备
-     *
-     * @param params
-     */
-    PageUtils queryPage(Map<String, Object> params);
-    /**
-     * 查询设备详情
-     *
-     * @param id
-     */
+
+    PageResult<ChannelOPCUADeviceEntity> queryPage(OpcUaDevicePageReqVO reqVO);
+
     ChannelOPCUADeviceEntity info(String id);
 
-    /**
-     * 列表
-     *
-     * @param params
-     * @return
-     */
-    List<ChannelOPCUADeviceEntity> list(Map<String, Object> params);
-
-    /**
-     * 添加设备
-     *
-     * @param channelOPCUADeviceEntity
-     */
     void add(ChannelOPCUADeviceEntity channelOPCUADeviceEntity);
-    /**
-     * 修改设备
-     *
-     * @param channelOPCUADeviceEntity
-     */
+
     void update(ChannelOPCUADeviceEntity channelOPCUADeviceEntity);
-    /**
-     * 删除设备
-     *
-     * @param id
-     */
+
     void delete(String id);
-    /**
-     * 查询全部设备
-     *
-     */
+
     List<ChannelOPCUADeviceDTO> selectAll();
+
+    List<ChannelOPCUADeviceEntity> list(Map<String, Object> params);
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/ChannelOPCUATagService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/ChannelOPCUATagService.java
index a470e2c..d8e2627 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/ChannelOPCUATagService.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/ChannelOPCUATagService.java
@@ -1,70 +1,37 @@
 package com.iailab.module.data.channel.opcua.service;
 
-import com.iailab.module.data.common.utils.PageUtils;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.module.data.channel.opcua.dto.ChannelOPCUATagDTO;
 import com.iailab.module.data.channel.opcua.entity.ChannelOPCUATagEntity;
+import com.iailab.module.data.channel.opcua.vo.OpcUaTagPageReqVO;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
-import java.util.Map;
 
 /**
- * @author DongYukun
+ * @author lirm
  * @Description
- * @createTime 2023年05月08日 15:04:00
+ * @createTime 2024年08月26日
  */
 public interface ChannelOPCUATagService {
-    /**
-     * 分页查询tag
-     *
-     * @param params
-     */
-    PageUtils queryPage(Map<String, Object> params);
+    PageResult<ChannelOPCUATagEntity> queryPage(OpcUaTagPageReqVO reqVO);
 
-    /**
-     * 查询tag详情
-     * @param id
-     *
-     */
     ChannelOPCUATagEntity info(String id);
-    /**
-     * 添加tag
-     *
-     * @param channelOPCUATagEntity
-     */
+
     void add(ChannelOPCUATagEntity channelOPCUATagEntity);
-    /**
-     * 修改tag
-     *
-     * @param channelOPCUATagEntity
-     */
+
     void update(ChannelOPCUATagEntity channelOPCUATagEntity);
-    /**
-     * 删除tag
-     * @param id
-     *
-     */
+
     void delete(String id);
 
     List<ChannelOPCUATagEntity> getByDevice(String device);
-
 
     List<ChannelOPCUATagDTO> selectAll();
 
     List<ChannelOPCUATagEntity> listByIds(List<String> ids);
 
-    /**
-     * 通过deviceName删除
-     *
-     */
     void deleteByDeviceName(String name);
 
-    /**
-     * 导入Tag
-     *
-     * @param device
-     * @param file
-     * @throws Exception
-     */
     void importTag(String device, MultipartFile file) throws Exception;
+
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/impl/ChannelOPCUADeviceServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/impl/ChannelOPCUADeviceServiceImpl.java
index 52651bf..142b3ac 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/impl/ChannelOPCUADeviceServiceImpl.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/impl/ChannelOPCUADeviceServiceImpl.java
@@ -4,7 +4,11 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.common.util.object.ConvertUtils;
+import com.iailab.module.data.channel.opcda.entity.ChannelOPCDADeviceEntity;
+import com.iailab.module.data.channel.opcda.vo.OpcDaDevicePageReqVO;
+import com.iailab.module.data.channel.opcua.vo.OpcUaDevicePageReqVO;
 import com.iailab.module.data.common.utils.PageUtils;
 import com.iailab.module.data.common.utils.Query;
 import com.iailab.module.data.channel.opcua.dao.ChannelOPCUADeviceDao;
@@ -19,9 +23,9 @@
 import java.util.Map;
 
 /**
- * @author DongYukun
+ * @author lirm
  * @Description
- * @createTime 2023年05月08日 15:04:00
+ * @createTime 2024年08月26日
  */
 @Service
 public class ChannelOPCUADeviceServiceImpl extends ServiceImpl<ChannelOPCUADeviceDao, ChannelOPCUADeviceEntity> implements ChannelOPCUADeviceService {
@@ -30,70 +34,27 @@
 
     @Resource
     private ChannelOPCUATagService channelOPCUATagService;
-    /**
-     * 分页查询opc ua配置
-     *
-     * @param params
-     */
-    @Override
-    public PageUtils queryPage(Map<String, Object> params) {
-        String serverName = (String) params.get("serverName");
 
-        IPage<ChannelOPCUADeviceEntity> page = this.page(
-                new Query<ChannelOPCUADeviceEntity>().getPage(params),
-                new QueryWrapper<ChannelOPCUADeviceEntity>()
-                        .like(StringUtils.isNotBlank(serverName), "server_name", serverName)
-                        .orderByDesc("create_time")
-        );
-        return new PageUtils(page);
+    @Override
+    public PageResult<ChannelOPCUADeviceEntity> queryPage(OpcUaDevicePageReqVO reqVO) {
+        return channelOPCUADeviceDao.selectPage(reqVO);
     }
 
-    /**
-     * 查询opc ua配置详情
-     *
-     * @param id
-     */
     @Override
     public ChannelOPCUADeviceEntity info(String id) {
         return channelOPCUADeviceDao.selectById(id);
     }
 
-    /**
-     * 列表
-     *
-     * @param params
-     * @return
-     */
-    @Override
-    public List<ChannelOPCUADeviceEntity> list(Map<String, Object> params) {
-        return channelOPCUADeviceDao.selectList(new QueryWrapper<ChannelOPCUADeviceEntity>().orderByAsc("server_name"));
-    }
-
-    /**
-     * 添加opc ua配置
-     *
-     * @param channelOPCUADeviceEntity
-     */
     @Override
     public void add(ChannelOPCUADeviceEntity channelOPCUADeviceEntity) {
         channelOPCUADeviceDao.insert(channelOPCUADeviceEntity);
     }
 
-    /**
-     * 修改opc ua配置
-     *
-     * @param channelOPCUADeviceEntity
-     */
     @Override
     public void update(ChannelOPCUADeviceEntity channelOPCUADeviceEntity) {
         channelOPCUADeviceDao.updateById(channelOPCUADeviceEntity);
     }
 
-    /**
-     * 删除opc ua配置
-     *
-     * @param id
-     */
     @Override
     public void delete(String id) {
 
@@ -111,4 +72,9 @@
         );
         return ConvertUtils.sourceToTarget(entityList, ChannelOPCUADeviceDTO.class);
     }
+
+    @Override
+    public List<ChannelOPCUADeviceEntity> list(Map<String, Object> params) {
+        return channelOPCUADeviceDao.selectList(new QueryWrapper<ChannelOPCUADeviceEntity>().orderByAsc("server_name"));
+    }
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/impl/ChannelOPCUATagServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/impl/ChannelOPCUATagServiceImpl.java
index f8ba635..0e0f9f0 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/impl/ChannelOPCUATagServiceImpl.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/service/impl/ChannelOPCUATagServiceImpl.java
@@ -1,17 +1,15 @@
 package com.iailab.module.data.channel.opcua.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.common.util.object.ConvertUtils;
-import com.iailab.module.data.common.utils.PageUtils;
-import com.iailab.module.data.common.utils.Query;
 import com.iailab.module.data.channel.opcua.dao.ChannelOPCUATagDao;
 import com.iailab.module.data.channel.opcua.dto.ChannelOPCUATagDTO;
 import com.iailab.module.data.channel.opcua.entity.ChannelOPCUATagEntity;
 import com.iailab.module.data.channel.opcua.service.ChannelOPCUATagService;
+import com.iailab.module.data.channel.opcua.vo.OpcUaTagPageReqVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.usermodel.CellType;
 import org.apache.poi.xssf.usermodel.XSSFRow;
@@ -27,13 +25,12 @@
 import java.io.FileInputStream;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 import java.util.UUID;
 
 /**
- * @author DongYukun
+ * @author lirm
  * @Description
- * @createTime 2023年05月08日 15:04:00
+ * @createTime 2024年08月26日
  */
 @Slf4j
 @Service
@@ -44,77 +41,41 @@
     @Value("${iems.upload-dir}")
     private String uploadDir;
 
-    /**
-     * 分页查询tag
-     *
-     * @param params
-     */
     @Override
-    public PageUtils queryPage(Map<String, Object> params) {
-        String tagName = (String) params.get("tagName");
-        String device = (String) params.get("device");
-
-        IPage<ChannelOPCUATagEntity> page = this.page(
-                new Query<ChannelOPCUATagEntity>().getPage(params),
-                new QueryWrapper<ChannelOPCUATagEntity>()
-                        .like(StringUtils.isNotBlank(tagName), "tag_name", tagName)
-                        .eq(StringUtils.isNotBlank(device), "device", device)
-                        .orderByDesc("create_time")
-        );
-        return new PageUtils(page);
+    public PageResult<ChannelOPCUATagEntity> queryPage(OpcUaTagPageReqVO reqVO) {
+        return channelOPCUATagDao.selectPage(reqVO);
     }
 
-    /**
-     * 查询tag详情
-     *
-     * @param id
-     */
     @Override
     public ChannelOPCUATagEntity info(String id) {
         return channelOPCUATagDao.selectById(id);
     }
 
     @Override
-    public List<ChannelOPCUATagEntity> getByDevice(String device) {
-        QueryWrapper<ChannelOPCUATagEntity> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("device", device).orderByDesc ("create_time");
-        return channelOPCUATagDao.selectList(queryWrapper);
-
-    }
-
-    /**
-     * 添加tag
-     *
-     * @param channelOPCUATagEntity
-     */
-    @Override
     public void add(ChannelOPCUATagEntity channelOPCUATagEntity) {
         channelOPCUATagDao.insert(channelOPCUATagEntity);
     }
 
-    /**
-     * 修改tag
-     *
-     * @param channelOPCUATagEntity
-     */
     @Override
     public void update(ChannelOPCUATagEntity channelOPCUATagEntity) {
         channelOPCUATagDao.updateById(channelOPCUATagEntity);
     }
 
-    /**
-     * 删除tag
-     *
-     * @param id
-     */
     @Override
     public void delete(String id) {
         channelOPCUATagDao.deleteById(id);
     }
 
+
+    @Override
+    public List<ChannelOPCUATagEntity> getByDevice(String device) {
+        QueryWrapper<ChannelOPCUATagEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("device", device).orderByDesc ("create_time");
+        return channelOPCUATagDao.selectList(queryWrapper);
+    }
+
     @Override
     public List<ChannelOPCUATagDTO> selectAll() {
-
         List<ChannelOPCUATagEntity> entityList = baseMapper.selectList(
                 null
         );
@@ -131,13 +92,6 @@
         baseMapper.delete(new QueryWrapper<ChannelOPCUATagEntity>().eq("device",name));
     }
 
-    /**
-     * 导入Tag
-     *
-     * @param device
-     * @param file
-     * @throws Exception
-     */
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void importTag(String device, MultipartFile file) throws Exception {
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaDevicePageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaDevicePageReqVO.java
new file mode 100644
index 0000000..e40a0d5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaDevicePageReqVO.java
@@ -0,0 +1,21 @@
+package com.iailab.module.data.channel.opcua.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - opcua分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class OpcUaDevicePageReqVO extends PageParam {
+
+    private String serverName;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaDeviceRespVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaDeviceRespVO.java
new file mode 100644
index 0000000..3a578ec
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaDeviceRespVO.java
@@ -0,0 +1,63 @@
+package com.iailab.module.data.channel.opcua.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - opcuaDevice Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class OpcUaDeviceRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "服务名", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("服务名")
+    private String serverName;
+
+    @Schema(description = "端点URL", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("端点URL")
+    private String endpointUrl;
+
+    @Schema(description = "安全策略", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("安全策略")
+    private String securityPolicy;
+
+    @Schema(description = "安全模式", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("安全模式")
+    private String securityMode;
+
+    @Schema(description = "连接方式(0,匿名;1,用户名密码; 2,安全证书)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("连接方式")
+    private String connectionType;
+
+    @Schema(description = "用户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("用户名")
+    private String userName;
+
+    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("密码")
+    private String password;
+
+    @Schema(description = "安全证书路径", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("安全证书路径")
+    private String certificatePath;
+
+    @Schema(description = "设备不活动超时时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("设备不活动超时时间")
+    private Integer connectInactivityTimeout;
+
+    @Schema(description = "重连超时", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("重连超时")
+    private Integer reconnectInterval;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaTagPageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaTagPageReqVO.java
new file mode 100644
index 0000000..4641af1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaTagPageReqVO.java
@@ -0,0 +1,23 @@
+package com.iailab.module.data.channel.opcua.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - opcua分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class OpcUaTagPageReqVO extends PageParam {
+
+    private String tagName;
+
+    private String device;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaTagRespVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaTagRespVO.java
new file mode 100644
index 0000000..2da2f1b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/opcua/vo/OpcUaTagRespVO.java
@@ -0,0 +1,55 @@
+package com.iailab.module.data.channel.opcua.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "数据平台 - opcuaTag Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class OpcUaTagRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "tag名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("tag名称")
+    private String tagName;
+
+    @Schema(description = "数据类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("数据类型")
+    private String dataType;
+
+    @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("是否启用")
+    private Boolean enabled;
+
+    @Schema(description = "关联设备", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("关联设备")
+    private String device;
+
+    @Schema(description = "Modbus地址 00001 ~49999", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("Modbus地址")
+    private String address;
+
+    @Schema(description = "采集频率", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("采集频率")
+    private Integer samplingRate;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("创建时间")
+    private Date createTime;
+
+    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("更新时间")
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/tag/controller/TagController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/tag/controller/TagController.java
index 54cb417..7813746 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/tag/controller/TagController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/tag/controller/TagController.java
@@ -1,8 +1,9 @@
 package com.iailab.module.data.channel.tag.controller;
 
+import com.iailab.module.data.channel.kio.entity.ChannelKioDeviceEntity;
+import com.iailab.module.data.channel.kio.entity.ChannelKioTagEntity;
 import com.iailab.module.data.common.enums.DataSourceType;
 import com.iailab.framework.common.pojo.CommonResult;
-import com.iailab.module.data.channel.kio.dto.ChannelKioDeviceDTO;
 import com.iailab.module.data.channel.kio.service.ChannelKioDeviceService;
 import com.iailab.module.data.channel.kio.service.ChannelKioTagService;
 import com.iailab.module.data.channel.modbus.entity.ChannelModBusDeviceEntity;
@@ -13,12 +14,11 @@
 import com.iailab.module.data.channel.opcua.service.ChannelOPCUADeviceService;
 import com.iailab.module.data.channel.opcua.service.ChannelOPCUATagService;
 import com.iailab.module.data.channel.tag.dto.TagOptionDTO;
-import com.iailab.module.data.http.entity.HttpApiEntity;
-import com.iailab.module.data.http.entity.HttpTagEntity;
-import com.iailab.module.data.http.service.HttpApiService;
-import com.iailab.module.data.channel.kio.dto.ChannelKioTagDTO;
+import com.iailab.module.data.channel.http.entity.HttpApiEntity;
+import com.iailab.module.data.channel.http.entity.HttpTagEntity;
+import com.iailab.module.data.channel.http.service.HttpApiService;
 import com.iailab.module.data.channel.opcua.entity.ChannelOPCUATagEntity;
-import com.iailab.module.data.http.service.HttpTagService;
+import com.iailab.module.data.channel.http.service.HttpTagService;
 import javax.annotation.Resource;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -121,14 +121,14 @@
         TagOptionDTO kioData = new TagOptionDTO();
         kioData.setValue(DataSourceType.KIO.getCode());
         kioData.setLabel(DataSourceType.KIO.getDesc());
-        List<ChannelKioDeviceDTO> kioList = channelKioDeviceService.list(new HashMap<>());
+        List<ChannelKioDeviceEntity> kioList = channelKioDeviceService.list(new HashMap<>());
         List<TagOptionDTO> kioDeviceOp = new ArrayList<>();
         if (!CollectionUtils.isEmpty(kioList)) {
             kioList.forEach(item -> {
                 TagOptionDTO op1 = new TagOptionDTO();
                 op1.setValue(item.getId());
                 op1.setLabel(item.getInstanceName());
-                List<ChannelKioTagDTO> tags = channelKioTagService.getByDevice(item.getInstanceName());
+                List<ChannelKioTagEntity> tags = channelKioTagService.getByDevice(item.getInstanceName());
                 List<TagOptionDTO> op2 = new ArrayList<>();
                 tags.forEach(item1 -> {
                     TagOptionDTO op3 = new TagOptionDTO();
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/controller/admin/HttpApiController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/controller/admin/HttpApiController.java
deleted file mode 100644
index a620386..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/controller/admin/HttpApiController.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.iailab.module.data.http.controller.admin;
-
-import com.iailab.framework.common.page.PageData;
-import com.iailab.module.data.common.utils.R;
-import com.iailab.framework.common.pojo.CommonResult;
-import com.iailab.module.data.http.entity.HttpApiEntity;
-import com.iailab.module.data.http.service.HttpApiService;
-import javax.annotation.Resource;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import static com.iailab.framework.common.pojo.CommonResult.success;
-
-@RestController
-@RequestMapping("/data/http/api")
-public class HttpApiController {
-
-    @Resource
-    private HttpApiService httpApiService;
-
-    @GetMapping("page")
-    public CommonResult<PageData<HttpApiEntity>> page(@RequestParam Map<String, Object> params) {
-        PageData<HttpApiEntity> page = httpApiService.page(params);
-        return success(page);
-    }
-
-    @GetMapping("list")
-    public CommonResult<List<HttpApiEntity>> list() {
-        List<HttpApiEntity> list = httpApiService.list();
-        return new CommonResult<List<HttpApiEntity>>().setData(list);
-    }
-
-    /**
-     * 根据id查询详情
-     *
-     * @param id
-     */
-    @GetMapping("/info/{id}")
-    public R info(@PathVariable("id") String id){
-        HttpApiEntity info= httpApiService.selectById(id);
-        return R.ok().put("data", info);
-    }
-    /**
-     * 添加API
-     *
-     * @param httpApiEntity
-     */
-    @PostMapping("/add")
-    public R add(@RequestBody HttpApiEntity httpApiEntity){
-        String id = UUID.randomUUID().toString();
-        httpApiEntity.setId(id);
-        httpApiService.insert(httpApiEntity);
-        return R.ok();
-    }
-
-    /**
-     * 修改API
-     *
-     * @param httpApiEntity
-     */
-    @PostMapping("/update")
-    public R update(@RequestBody HttpApiEntity httpApiEntity) {
-        httpApiService.updateById(httpApiEntity);
-        return R.ok();
-    }
-
-    /**
-     * 删除API
-     *
-     * @param params
-     *
-     */
-    @PostMapping("/delete")
-    public R delete(@RequestBody Map<String, Object> params) {
-        String id = (String)params.get("id");
-        httpApiService.deleteById(id);
-        return R.ok();
-    }
-}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/controller/admin/HttpTagController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/controller/admin/HttpTagController.java
deleted file mode 100644
index 1a7d48f..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/controller/admin/HttpTagController.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package com.iailab.module.data.http.controller.admin;
-
-import com.iailab.module.data.common.utils.PageUtils;
-import com.iailab.module.data.common.utils.R;
-import com.iailab.framework.common.pojo.CommonResult;
-import com.iailab.module.data.http.dto.HttpTagDTO;
-import com.iailab.module.data.http.entity.HttpTagEntity;
-import com.iailab.module.data.http.service.HttpTagService;
-import javax.annotation.Resource;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-/**
- * @author Houzhongjian
- * @Description
- * @createTime 2024年04月10日 17:37:00
- */
-@RestController
-@RequestMapping("/data/http/tag")
-public class HttpTagController {
-
-    @Resource
-    private HttpTagService tagService;
-
-    /**
-     * 分页
-     *
-     * @param params
-     */
-    @GetMapping("/page")
-    public R tagPageList(@RequestParam Map<String, Object> params) {
-        PageUtils page = tagService.queryPage(params);
-
-        return R.ok().put("page", page);
-    }
-
-    /**
-     * 查询tagList
-     *
-     */
-    @GetMapping("/list")
-    public R tagList(@RequestParam Map<String, Object> params){
-        List<HttpTagEntity> data = tagService.selectList(params);
-
-        return R.ok().put("data", data);
-    }
-
-    /**
-     * 详情
-     *
-     * @param id
-     */
-    @GetMapping("/info/{id}")
-    public R tagInfo(@PathVariable("id") String id) {
-        HttpTagEntity info = tagService.selectById(id);
-        return R.ok().put("data", info);
-    }
-
-    /**
-     * 添加
-     *
-     * @param entity
-     */
-    @PostMapping("/add")
-    public R tagAdd(@RequestBody HttpTagEntity entity) {
-        entity.setId(UUID.randomUUID().toString());
-        tagService.insert(entity);
-        return R.ok();
-    }
-
-    /**
-     * 修改
-     *
-     * @param entity
-     */
-    @PostMapping("/update")
-    public R tagUpdate(@RequestBody HttpTagEntity entity) {
-        tagService.updateById(entity);
-        return R.ok();
-    }
-
-    /**
-     * 删除
-     *
-     * @param params
-     */
-    @PostMapping("/delete")
-    public R tagDelete(@RequestBody Map<String, Object> params) {
-        String id = (String) params.get("id");
-        tagService.deleteById(id);
-        return R.ok();
-    }
-
-
-    @GetMapping("tagNo")
-    public CommonResult<List<HttpTagDTO>> list(@RequestParam Map<String, Object> params){
-        List<HttpTagDTO> list = tagService.list(params);
-        return new CommonResult<List<HttpTagDTO>>().setData(list);
-    }
-}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/controller/admin/HttpTokenController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/controller/admin/HttpTokenController.java
deleted file mode 100644
index 108a401..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/controller/admin/HttpTokenController.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.iailab.module.data.http.controller.admin;
-
-import com.iailab.framework.common.page.PageData;
-import com.iailab.module.data.common.utils.R;
-import com.iailab.framework.common.pojo.CommonResult;
-import com.iailab.module.data.http.entity.HttpTokenEntity;
-import com.iailab.module.data.http.service.HttpTokenService;
-import javax.annotation.Resource;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.Map;
-import java.util.UUID;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年12月22日 10:52:00
- */
-@RestController
-@RequestMapping("/data/http/token")
-public class HttpTokenController {
-
-    @Resource
-    private HttpTokenService httpTokenService;
-
-    /**
-     * 分页
-     *
-     * @param params
-     * @return
-     */
-    @GetMapping("page")
-    public CommonResult<PageData<HttpTokenEntity>> page(@RequestParam Map<String, Object> params) {
-        PageData<HttpTokenEntity> page = httpTokenService.page(params);
-
-        return new CommonResult<PageData<HttpTokenEntity>>().setData(page);
-    }
-
-    /**
-     * 详情
-     *
-     * @param id
-     */
-    @GetMapping("/info/{id}")
-    public R info(@PathVariable("id") String id) {
-        HttpTokenEntity info = httpTokenService.selectById(id);
-        return R.ok().put("data", info);
-    }
-
-    /**
-     * 详情
-     *
-     * @param apiId
-     */
-    @GetMapping("/api-id/{apiId}")
-    public R apiId(@PathVariable("apiId") String apiId) {
-        HttpTokenEntity info = httpTokenService.getByApiId(apiId);
-        return R.ok().put("data", info);
-    }
-
-    /**
-     * 添加
-     *
-     * @param httpApiEntity
-     */
-    @PostMapping("/add")
-    public R add(@RequestBody HttpTokenEntity httpApiEntity) {
-        String id = UUID.randomUUID().toString();
-        httpApiEntity.setId(id);
-        httpTokenService.insert(httpApiEntity);
-        return R.ok();
-    }
-
-    /**
-     * 修改
-     *
-     * @param httpApiEntity
-     */
-    @PostMapping("/update")
-    public R update(@RequestBody HttpTokenEntity httpApiEntity) {
-        httpTokenService.updateById(httpApiEntity);
-        return R.ok();
-    }
-
-    /**
-     * 删除
-     *
-     * @param params
-     */
-    @PostMapping("/delete")
-    public R delete(@RequestBody Map<String, Object> params) {
-        String id = (String) params.get("id");
-        httpTokenService.deleteById(id);
-        return R.ok();
-    }
-}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/controller/package-info.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/controller/package-info.java
deleted file mode 100644
index 49239c6..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/controller/package-info.java
+++ /dev/null
@@ -1 +0,0 @@
-package com.iailab.module.data.http.controller;
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dao/HttpApiDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dao/HttpApiDao.java
deleted file mode 100644
index a308bc3..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dao/HttpApiDao.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.iailab.module.data.http.dao;
-
-import com.iailab.framework.common.dao.BaseDao;
-import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
-import com.iailab.module.data.http.entity.HttpApiEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-@TenantDS
-@Mapper
-public interface HttpApiDao extends BaseDao<HttpApiEntity> {
-}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dao/HttpTagDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dao/HttpTagDao.java
deleted file mode 100644
index 2c9934f..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dao/HttpTagDao.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.iailab.module.data.http.dao;
-
-import com.iailab.framework.common.dao.BaseDao;
-import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
-import com.iailab.module.data.http.dto.HttpTagDTO;
-import com.iailab.module.data.http.entity.HttpTagEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author Houzhongjian
- * @Description
- * @createTime 2024年04月10日 17:35:00
- */
-@TenantDS
-@Mapper
-public interface HttpTagDao extends BaseDao<HttpTagEntity> {
-    List<HttpTagDTO> getList(Map<String, Object> params);
-}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dao/HttpTokenDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dao/HttpTokenDao.java
deleted file mode 100644
index a6015f7..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/dao/HttpTokenDao.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.iailab.module.data.http.dao;
-
-import com.iailab.framework.common.dao.BaseDao;
-import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
-import com.iailab.module.data.http.entity.HttpTokenEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-@TenantDS
-@Mapper
-public interface HttpTokenDao extends BaseDao<HttpTokenEntity> {
-
-}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/HttpApiService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/HttpApiService.java
deleted file mode 100644
index e0abeda..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/HttpApiService.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.iailab.module.data.http.service;
-
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.BaseService;
-import com.iailab.module.data.http.entity.HttpApiEntity;
-import com.iailab.module.data.http.entity.HttpApiEntity;
-
-import java.util.List;
-import java.util.Map;
-
-public interface HttpApiService extends BaseService<HttpApiEntity> {
-    HttpApiEntity selectXstHttpTagApi();
-
-    HttpApiEntity get(String id);
-
-    HttpApiEntity getByCode(String code);
-
-    PageData<HttpApiEntity> page(Map<String, Object> params);
-
-    List<HttpApiEntity> list();
-}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/HttpTagService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/HttpTagService.java
deleted file mode 100644
index e3bec59..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/HttpTagService.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.iailab.module.data.http.service;
-
-
-import com.iailab.module.data.common.utils.PageUtils;
-import com.iailab.framework.common.service.BaseService;
-import com.iailab.module.data.http.dto.HttpTagDTO;
-import com.iailab.module.data.http.dto.TagCommonCurrentDto;
-import com.iailab.module.data.http.entity.HttpTagEntity;
-
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author Houzhongjian
- * @Description
- * @createTime 2024年04月10日 17:35:00
- */
-public interface HttpTagService extends BaseService<HttpTagEntity> {
-
-    PageUtils queryPage(Map<String, Object> params);
-
-    List<HttpTagEntity> selectList(Map<String, Object> params);
-
-    List<HttpTagEntity> getByCode(String code);
-
-    List<HttpTagDTO> list(Map<String, Object> params);
-}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/HttpTokenService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/HttpTokenService.java
deleted file mode 100644
index a238c88..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/HttpTokenService.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.iailab.module.data.http.service;
-
-
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.BaseService;
-import com.iailab.module.data.http.entity.HttpTokenEntity;
-import com.iailab.module.data.http.entity.HttpTokenEntity;
-
-import java.util.Map;
-
-public interface HttpTokenService extends BaseService<HttpTokenEntity> {
-
-    PageData<HttpTokenEntity> page(Map<String, Object> params);
-
-    HttpTokenEntity getByApiId(String apiId);
-
-    void updateToken (String clientId);
-
-    String queryToken (String clientId);
-
-}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/impl/HttpApiServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/impl/HttpApiServiceImpl.java
deleted file mode 100644
index 5daf382..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/impl/HttpApiServiceImpl.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.iailab.module.data.http.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.impl.BaseServiceImpl;
-import com.iailab.module.data.http.entity.HttpApiEntity;
-import com.iailab.module.data.http.entity.HttpApiEntity;
-import com.iailab.module.data.http.dao.HttpApiDao;
-import com.iailab.module.data.http.service.HttpApiService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Map;
-
-@Service
-public class HttpApiServiceImpl extends BaseServiceImpl<HttpApiDao, HttpApiEntity> implements HttpApiService {
-    @Override
-    public HttpApiEntity selectXstHttpTagApi() {
-        return baseDao.selectOne(new QueryWrapper<HttpApiEntity>().eq("code","xstHttpTag"));
-    }
-
-    @Override
-    public HttpApiEntity get(String id) {
-        return baseDao.selectById(id);
-    }
-
-
-    @Override
-    public HttpApiEntity getByCode(String code) {
-        return baseDao.selectOne(new QueryWrapper<HttpApiEntity>().eq("code", code));
-    }
-
-    @Override
-    public PageData<HttpApiEntity> page(Map<String, Object> params) {
-        IPage<HttpApiEntity> page = baseDao.selectPage(
-                getPage(params, "create_time", false),
-                getWrapper(params)
-        );
-
-        return getPageData(page, HttpApiEntity.class);
-    }
-
-    @Override
-    public List<HttpApiEntity> list() {
-        List<HttpApiEntity> page = baseDao.selectList(new QueryWrapper<>());
-        return page;
-    }
-
-    private QueryWrapper<HttpApiEntity> getWrapper(Map<String, Object> params){
-        String name = (String)params.get("name");
-        QueryWrapper<HttpApiEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq(StringUtils.isNotBlank(name), "name", name);
-        return wrapper;
-    }
-}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/impl/HttpTagServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/impl/HttpTagServiceImpl.java
deleted file mode 100644
index 461e014..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/impl/HttpTagServiceImpl.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package com.iailab.module.data.http.service.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.iailab.module.data.common.enums.CommonConstant;
-import com.iailab.framework.common.service.impl.BaseServiceImpl;
-import com.iailab.module.data.common.utils.HttpsRequest;
-import com.iailab.module.data.common.utils.PageUtils;
-import com.iailab.module.data.common.utils.Query;
-import com.iailab.module.data.http.dao.HttpTagDao;
-import com.iailab.module.data.http.dto.*;
-import com.iailab.module.data.http.entity.HttpApiEntity;
-import com.iailab.module.data.http.entity.HttpTagEntity;
-import com.iailab.module.data.http.service.HttpApiService;
-import com.iailab.module.data.http.service.HttpTagService;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.ObjectUtils;
-import javax.annotation.Resource;
-import org.springframework.stereotype.Service;
-
-import java.lang.reflect.Field;
-import java.math.BigDecimal;
-import java.util.*;
-
-/**
- * @author Houzhongjian
- * @Description
- * @createTime 2024年04月10日 17:35:00
- */
-@Slf4j
-@Service
-public class HttpTagServiceImpl extends BaseServiceImpl<HttpTagDao, HttpTagEntity> implements HttpTagService {
-
-    @Resource
-    private HttpsRequest httpsRequest;
-
-    @Resource
-    private HttpApiService httpApiService;
-
-
-    /**
-     * 分页查询tag
-     *
-     * @param params
-     */
-    @Override
-    public PageUtils queryPage(Map<String, Object> params) {
-        String httpApiCode = (String) params.get("httpApiCode");
-        String tagType = (String) params.get("tagType");
-        String tagCode = (String) params.get("tagCode");
-        String tagName = (String) params.get("tagName");
-
-        IPage<HttpTagEntity> page = baseDao.selectPage(
-                new Query<HttpTagEntity>().getPage(params),
-                new QueryWrapper<HttpTagEntity>()
-                        .like(StringUtils.isNotBlank(httpApiCode), "http_api_code", httpApiCode)
-                        .like(StringUtils.isNotBlank(tagType), "tag_type", tagType)
-                        .like(StringUtils.isNotBlank(tagCode), "tag_code", tagCode)
-                        .like(StringUtils.isNotBlank(tagName), "tag_name", tagName)
-                        .orderByDesc("create_time")
-        );
-        return new PageUtils(page);
-    }
-
-    @Override
-    public List<HttpTagEntity> selectList(Map<String, Object> params) {
-        String httpId = (String) params.get("httpId");
-        HttpApiEntity httpApiEntity = httpApiService.selectById(httpId);
-        return baseDao.selectList(new QueryWrapper<HttpTagEntity>()
-                        .eq("http_api_code", httpApiEntity.getCode())
-                        .orderByDesc("create_time"));
-    }
-
-    @Override
-    public List<HttpTagEntity> getByCode(String code) {
-        return baseDao.selectList(new QueryWrapper<HttpTagEntity>()
-                .eq("http_api_code", code)
-                .orderByDesc("create_time"));
-    }
-
-    @Override
-    public List<HttpTagDTO> list(Map<String, Object> params) {
-        List<HttpTagDTO> list = baseDao.getList(params);
-        return list;
-    }
-}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/impl/HttpTokenServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/impl/HttpTokenServiceImpl.java
deleted file mode 100644
index 497b49f..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/http/service/impl/HttpTokenServiceImpl.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.iailab.module.data.http.service.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.iailab.module.data.common.utils.HttpsRequest;
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.impl.BaseServiceImpl;
-import com.iailab.module.data.http.dao.HttpTokenDao;
-import com.iailab.module.data.http.entity.HttpTokenEntity;
-import com.iailab.module.data.http.service.HttpTokenService;
-import org.apache.commons.lang3.StringUtils;
-import javax.annotation.Resource;
-import org.springframework.stereotype.Service;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-@Service
-public class HttpTokenServiceImpl extends BaseServiceImpl<HttpTokenDao, HttpTokenEntity> implements HttpTokenService {
-
-    @Resource
-    private HttpsRequest httpsRequest;
-
-    @Override
-    public PageData<HttpTokenEntity> page(Map<String, Object> params) {
-        IPage<HttpTokenEntity> page = baseDao.selectPage(
-                getPage(params, "client_id", false),
-                getWrapper(params)
-        );
-        return getPageData(page, HttpTokenEntity.class);
-    }
-
-    private QueryWrapper<HttpTokenEntity> getWrapper(Map<String, Object> params){
-        String clientId = (String)params.get("clientId");
-        QueryWrapper<HttpTokenEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq(StringUtils.isNotBlank(clientId), "client_id", clientId);
-        return wrapper;
-    }
-
-    @Override
-    public HttpTokenEntity getByApiId(String apiId) {
-        QueryWrapper<HttpTokenEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq(StringUtils.isNotBlank(apiId), "api_id", apiId);
-        return baseDao.selectOne(wrapper);
-    }
-
-
-    @Override
-    public void updateToken(String clientId) {
-        Map<String, String> params = new HashMap<>(1);
-        params.put("timeout", "30000");
-        HttpTokenEntity entity = baseDao.selectOne(new QueryWrapper<HttpTokenEntity>().eq("client_id", clientId));
-        Map<String, String> dataJson = new HashMap<>(2);
-        String url = entity.getLoginUrl();
-        String userName = entity.getUsername();
-        String password = entity.getPassword();
-        String prvsetName = entity.getPrvsetName();
-        String projectName = entity.getProjectName();
-        String platform = entity.getPlatform();
-        dataJson.put("username", userName);
-        dataJson.put("password", password);
-        dataJson.put("prvset_name", prvsetName);
-        dataJson.put("project_name", projectName);
-        dataJson.put("platform", platform);
-        //查询token的请求
-        String responseStr = httpsRequest.doPostToken(url, params, JSONObject.toJSONString(dataJson), "utf-8");
-        //插入token和更新时间
-        entity.setToken(responseStr);
-        entity.setUpdateTime(new Date());
-        baseDao.update(entity, new QueryWrapper<HttpTokenEntity>().eq("client_id", clientId));
-    }
-
-    @Override
-    public String queryToken(String clientId) {
-        return baseDao.selectOne(new QueryWrapper<HttpTokenEntity>().eq("client_id", clientId)).getToken();
-    }
-}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/PointCollector.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/PointCollector.java
index 3723dd0..7bd34be 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/PointCollector.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/PointCollector.java
@@ -7,7 +7,7 @@
 import com.iailab.module.data.point.common.PointTypeEnum;
 import com.iailab.module.data.point.dto.DaPointDTO;
 import com.iailab.module.data.point.service.DaPointService;
-import com.iailab.module.data.http.collector.HttpCollectorForZxzk;
+import com.iailab.module.data.channel.http.collector.HttpCollectorForZxzk;
 import com.iailab.module.data.influxdb.pojo.InfluxPointValuePOJO;
 import com.iailab.module.data.channel.modbus.collector.ModBusCollector;
 import com.iailab.module.data.channel.opcua.collector.OpcUaCollector;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/MeasureHandle.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/MeasureHandle.java
index c9af776..a5d084e 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/MeasureHandle.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/MeasureHandle.java
@@ -12,7 +12,7 @@
 import com.iailab.module.data.point.common.PointDataTypeEnum;
 import com.iailab.module.data.point.dto.DaPointDTO;
 import com.iailab.module.data.point.service.DaPointService;
-import com.iailab.module.data.http.collector.HttpCollectorForZxzk;
+import com.iailab.module.data.channel.http.collector.HttpCollectorForZxzk;
 import com.iailab.module.data.influxdb.pojo.InfluxPointValuePOJO;
 import lombok.extern.slf4j.Slf4j;
 import javax.annotation.Resource;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/controller/admin/DaPointController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/controller/admin/DaPointController.java
index d29f255..abb0093 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/controller/admin/DaPointController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/controller/admin/DaPointController.java
@@ -1,37 +1,32 @@
 package com.iailab.module.data.point.controller.admin;
 
-import com.iailab.framework.common.constant.Constant;
-import com.iailab.framework.common.page.PageData;
 import com.iailab.framework.common.pojo.CommonResult;
-import com.iailab.framework.common.util.validation.ValidationUtils;
-import com.iailab.framework.common.validation.group.AddGroup;
-import com.iailab.framework.common.validation.group.UpdateGroup;
-import com.iailab.framework.common.validation.group.DefaultGroup;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
 import com.iailab.module.data.point.dto.DaPointDTO;
+import com.iailab.module.data.point.entity.DaPointEntity;
 import com.iailab.module.data.point.service.DaPointService;
+import com.iailab.module.data.point.vo.DaPointPageReqVO;
+import com.iailab.module.data.point.vo.DaPointRespVO;
 import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Parameters;
-import javax.annotation.Resource;
-import javax.annotation.security.PermitAll;
-import javax.validation.Valid;
-
 import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import javax.validation.Valid;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 import static com.iailab.framework.common.pojo.CommonResult.success;
 
 
 /**
- * @author PanZhibao
+ * @author lirm
  * @Description
- * @createTime 2024年05月12日
+ * @createTime 2024年09月2日
  */
 @Tag(name = "数据采集,测点")
 @RestController
@@ -43,66 +38,42 @@
     private DaPointService daPointService;
 
     @GetMapping("page")
-    @Operation(summary = "分页")
-    @Parameters({
-            @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true) ,
-            @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true) ,
-            @Parameter(name = Constant.ORDER_FIELD, description = "排序字段") ,
-            @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)")
-    })
-    @PreAuthorize("@ss.hasPermission('data:point:query')")
-    public CommonResult<PageData<DaPointDTO>> page(@RequestParam Map<String, Object> params){
-        PageData<DaPointDTO> page = daPointService.page(params);
-
-        return success(page);
-    }
-
-    @GetMapping("{id}")
-    @Operation(summary = "信息")
-    @PreAuthorize("@ss.hasPermission('data:point:query')")
-    public CommonResult<DaPointDTO> get(@PathVariable("id") String id){
-        DaPointDTO data = daPointService.get(id);
-
-        return new CommonResult<DaPointDTO>().setData(data);
+    public CommonResult<PageResult<DaPointRespVO>> page(@Valid DaPointPageReqVO reqVO){
+        PageResult<DaPointEntity> page = daPointService.queryPage(reqVO);
+        return success(BeanUtils.toBean(page, DaPointRespVO.class));
     }
 
     @GetMapping("/list")
     @Operation(summary = "列表")
-    @PreAuthorize("@ss.hasPermission('data:point:query')")
     public CommonResult<List<DaPointDTO>> list(@Valid @RequestParam Map<String, Object> params) {
         List<DaPointDTO> list = daPointService.list(params);
         return success(list);
     }
 
-    @PostMapping
-    @Operation(summary = "保存")
-    @PreAuthorize("@ss.hasPermission('data:point:save')")
-    public CommonResult save(@RequestBody DaPointDTO dto){
-        //效验数据
-        ValidationUtils.validate(dto, AddGroup.class, DefaultGroup.class);
-        daPointService.add(dto);
-
-        return new CommonResult();
+    @GetMapping("/info/{id}")
+    public CommonResult<DaPointDTO> info(@PathVariable("id") String id){
+        DaPointDTO info= daPointService.info(id);
+        return success(info);
     }
 
-    @PutMapping
-    @Operation(summary = "修改")
-    @PreAuthorize("@ss.hasPermission('data:point:update')")
-    public CommonResult update(@RequestBody DaPointDTO dto){
-        //效验数据
-        ValidationUtils.validate(dto, UpdateGroup.class, DefaultGroup.class);
-
-        daPointService.update(dto);
-
-        return new CommonResult();
+    @PostMapping("/add")
+    public CommonResult<Boolean> add(@RequestBody DaPointDTO daPointDTO){
+        String id = UUID.randomUUID().toString();
+        daPointDTO.setId(id);
+        daPointService.add(daPointDTO);
+        return success(true);
     }
 
-    @DeleteMapping
-    @Operation(summary = "删除")
-    @PreAuthorize("@ss.hasPermission('data:point:delete')")
-    public CommonResult delete(@RequestBody String[] ids){
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody DaPointDTO daPointDTO) {
+        daPointService.update(daPointDTO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(String[] ids) {
         daPointService.delete(ids);
-        return new CommonResult();
+        return success(true);
     }
 
     @GetMapping("pointNo")
@@ -115,17 +86,17 @@
     @PutMapping("/enable")
     @Operation(summary = "启用")
     @Transactional
-    public CommonResult enable(@RequestBody String[] ids) {
+    public CommonResult<Boolean> enable(@RequestBody String[] ids) {
         daPointService.enableByIds(ids);
-        return new CommonResult();
+        return success(true);
     }
 
     @PutMapping("/disable")
     @Operation(summary = "禁用")
     @Transactional
-    public CommonResult disable(@RequestBody String[] ids) {
+    public CommonResult<Boolean> disable(@RequestBody String[] ids) {
         daPointService.disableByIds(ids);
-        return new CommonResult();
+        return success(true);
     }
 
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dao/DaPointDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dao/DaPointDao.java
index 6aa212b..d977988 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dao/DaPointDao.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dao/DaPointDao.java
@@ -1,10 +1,13 @@
 package com.iailab.module.data.point.dao;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.iailab.framework.common.dao.BaseDao;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
 import com.iailab.module.data.point.dto.DaPointDTO;
 import com.iailab.module.data.point.entity.DaPointEntity;
+import com.iailab.module.data.point.vo.DaPointPageReqVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -12,13 +15,13 @@
 import java.util.Map;
 
 /**
- * @author PanZhibao
+ * @author lirm
  * @Description
- * @createTime 2022年07月12日 13:47:00
+ * @createTime 2024年09月2日
  */
 @TenantDS
 @Mapper
-public interface DaPointDao extends BaseDao<DaPointEntity> {
+public interface DaPointDao extends BaseMapperX<DaPointEntity> {
 
     IPage<DaPointDTO> getPageList(IPage<DaPointEntity> page, @Param("params") Map<String, Object> params);
 
@@ -27,4 +30,11 @@
     List<DaPointDTO> getMeasurePoint(Map<String, Object> params);
 
     List<DaPointDTO> getMathPoint(Map<String, Object> params);
+
+    default PageResult<DaPointEntity> selectPage(DaPointPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<DaPointEntity>()
+                .likeIfPresent(DaPointEntity::getPointNo, reqVO.getPointNo())
+                .likeIfPresent(DaPointEntity::getPointName, reqVO.getPointName())
+                .orderByDesc(DaPointEntity::getCreateTime));
+    }
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/DaPointService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/DaPointService.java
index 0f16bf2..f3bec40 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/DaPointService.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/DaPointService.java
@@ -1,31 +1,31 @@
 package com.iailab.module.data.point.service;
 
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.BaseService;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.module.data.point.dto.DaPointDTO;
 import com.iailab.module.data.point.entity.DaPointEntity;
+import com.iailab.module.data.point.vo.DaPointPageReqVO;
 
 import java.util.List;
 import java.util.Map;
 
 /**
- * @author PanZhibao
+ * @author lirm
  * @Description
- * @createTime 2024年05月12日
+ * @createTime 2024年09月2日
  */
-public interface DaPointService extends BaseService<DaPointEntity> {
+public interface DaPointService{
+    PageResult<DaPointEntity> queryPage(DaPointPageReqVO reqVO);
 
-    PageData<DaPointDTO> page(Map<String, Object> params);
+    DaPointDTO info(String id);
 
-    DaPointDTO get(String id);
+    void add(DaPointDTO daPointDTO);
+
+    void update(DaPointDTO daPointDTO);
+
+    void delete(String[] id);
+
 
     List<DaPointDTO> list(Map<String, Object> params);
-
-    void add(DaPointDTO dataPoint);
-
-    void update(DaPointDTO dataPoint);
-
-    void delete(String[] ids);
 
     List<DaPointDTO> getConstantPoint(String freq);
 
@@ -50,4 +50,5 @@
     void disableByIds(String[] ids);
 
     void updateDefaultValue(DaPointDTO dto);
+
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/impl/DaPointServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/impl/DaPointServiceImpl.java
index 57ff47b..b410b7f 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/impl/DaPointServiceImpl.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/impl/DaPointServiceImpl.java
@@ -2,38 +2,37 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.iailab.framework.common.constant.Constant;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.ConvertUtils;
 import com.iailab.module.data.common.enums.CommonConstant;
 import com.iailab.module.data.common.enums.IsEnableEnum;
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.impl.BaseServiceImpl;
-import com.iailab.framework.common.util.object.ConvertUtils;
 import com.iailab.module.data.point.common.IncreaseCodeEnum;
-import com.iailab.module.data.point.dao.DaPointDao;
-import com.iailab.module.data.point.service.DaMeasurePointService;
 import com.iailab.module.data.point.common.PointTypeEnum;
+import com.iailab.module.data.point.dao.DaPointDao;
 import com.iailab.module.data.point.dto.DaMeasurePointDTO;
 import com.iailab.module.data.point.dto.DaPointDTO;
 import com.iailab.module.data.point.entity.DaPointEntity;
 import com.iailab.module.data.point.service.DaMathPointService;
+import com.iailab.module.data.point.service.DaMeasurePointService;
 import com.iailab.module.data.point.service.DaPointService;
 import com.iailab.module.data.point.service.DaSequenceNumService;
+import com.iailab.module.data.point.vo.DaPointPageReqVO;
 import org.apache.commons.lang3.StringUtils;
-import javax.annotation.Resource;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import javax.annotation.Resource;
 import java.util.*;
 
 /**
- * @author PanZhibao
+ * @author lirm
  * @Description
- * @createTime 2024年05月12日
+ * @createTime 2024年09月2日
  */
 @Service
-public class DaPointServiceImpl extends BaseServiceImpl<DaPointDao, DaPointEntity> implements DaPointService {
+public class DaPointServiceImpl extends ServiceImpl<DaPointDao, DaPointEntity> implements DaPointService {
 
     @Resource
     private DaMeasurePointService daMeasurePointService;
@@ -43,19 +42,19 @@
 
     @Resource
     private DaSequenceNumService daSequenceNumService;
+    
+    @Resource
+    private DaPointDao daPointDao;
+
 
     @Override
-    public PageData<DaPointDTO> page(Map<String, Object> params) {
-        IPage<DaPointDTO> page = baseDao.getPageList(
-                getPage(params, Constant.CREATE_TIME, false),
-                params
-        );
-        return getPageData(page, DaPointDTO.class);
+    public PageResult<DaPointEntity> queryPage(DaPointPageReqVO reqVO) {
+        return daPointDao.selectPage(reqVO);
     }
 
     @Override
-    public DaPointDTO get(String id) {
-        DaPointEntity entity = baseDao.selectById(id);
+    public DaPointDTO info(String id) {
+        DaPointEntity entity = daPointDao.selectById(id);
         DaPointDTO result = ConvertUtils.sourceToTarget(entity, DaPointDTO.class);
         if (PointTypeEnum.MEASURE_POINT.getCode().equals(result.getPointType())) {
             DaMeasurePointDTO measurePoint = daMeasurePointService.getByPoint(id);
@@ -86,7 +85,7 @@
         .in(!CollectionUtils.isEmpty(pointNos),"point_no", pointNos)
         .like(StringUtils.isNotBlank(pointNoLike), "point_no", pointNoLike)
                 .last("limit 1, 10");
-        List<DaPointEntity> list = baseDao.selectList(queryWrapper);
+        List<DaPointEntity> list = daPointDao.selectList(queryWrapper);
         return ConvertUtils.sourceToTarget(list, DaPointDTO.class);
     }
 
@@ -110,7 +109,7 @@
         }
         daPointEntity.setIsEnable(CommonConstant.IS_ENABLE);
         daPointEntity.setCreateTime(new Date());
-        baseDao.insert(daPointEntity);
+        daPointDao.insert(daPointEntity);
     }
 
     @Override
@@ -118,7 +117,7 @@
     public void update(DaPointDTO dataPoint) {
         DaPointEntity daPointEntity = ConvertUtils.sourceToTarget(dataPoint, DaPointEntity.class);
         daPointEntity.setUpdateTime(new Date());
-        baseDao.updateById(daPointEntity);
+        daPointDao.updateById(daPointEntity);
         if (PointTypeEnum.MEASURE_POINT.getName().equals(dataPoint.getPointType())) {
             DaMeasurePointDTO measurePoint = dataPoint.getMeasurePoint();
             measurePoint.setSourceType(dataPoint.getSourceOption().get(0));
@@ -133,7 +132,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void delete(String[] ids) {
-        baseDao.deleteBatchIds(Arrays.asList(ids));
+        daPointDao.deleteBatchIds(Arrays.asList(ids));
         daMeasurePointService.deleteByPoint(ids);
         daMathPointService.deleteByPoint(ids);
     }
@@ -144,7 +143,7 @@
         params.put("pointType", PointTypeEnum.CONSTANT.getCode());
         params.put("isEnable", CommonConstant.IS_ENABLE);
         params.put("minfreqid", freq);
-        return baseDao.getConstantPoint(params);
+        return daPointDao.getConstantPoint(params);
     }
 
     @Override
@@ -153,7 +152,7 @@
         params.put("pointType", PointTypeEnum.CONSTANT.getCode());
         params.put("isEnable", CommonConstant.IS_ENABLE);
         params.put("pointNos", pointNos);
-        return baseDao.getConstantPoint(params);
+        return daPointDao.getConstantPoint(params);
     }
 
     @Override
@@ -162,7 +161,7 @@
         params.put("pointType", PointTypeEnum.MEASURE_POINT.getCode());
         params.put("isEnable", CommonConstant.IS_ENABLE);
         params.put("minfreqid", freq);
-        return baseDao.getMeasurePoint(params);
+        return daPointDao.getMeasurePoint(params);
     }
 
     @Override
@@ -171,7 +170,7 @@
         params.put("pointType", PointTypeEnum.MEASURE_POINT.getCode());
         params.put("isEnable", CommonConstant.IS_ENABLE);
         params.put("pointNos", pointNos);
-        return baseDao.getMeasurePoint(params);
+        return daPointDao.getMeasurePoint(params);
     }
 
     @Override
@@ -179,7 +178,7 @@
         Map<String, Object> params = new HashMap<>();
         params.put("pointType", PointTypeEnum.MEASURE_POINT.getCode());
         params.put("pointNo", pointNo);
-        List<DaPointDTO> list = baseDao.getMeasurePoint(params);
+        List<DaPointDTO> list = daPointDao.getMeasurePoint(params);
         if (CollectionUtils.isEmpty(list)) {
             return null;
         }
@@ -192,7 +191,7 @@
         params.put("pointType", PointTypeEnum.CALCULATE_POINT.getCode());
         params.put("isEnable", CommonConstant.IS_ENABLE);
         params.put("minfreqid", freq);
-        return baseDao.getMathPoint(params);
+        return daPointDao.getMathPoint(params);
     }
 
     @Override
@@ -201,14 +200,14 @@
         params.put("pointType", PointTypeEnum.CALCULATE_POINT.getCode());
         params.put("isEnable", CommonConstant.IS_ENABLE);
         params.put("pointNos", pointNos);
-        return baseDao.getMathPoint(params);
+        return daPointDao.getMathPoint(params);
     }
 
     @Override
     public DaPointDTO getByNo(String pointNo) {
         QueryWrapper<DaPointEntity> wrapper = new QueryWrapper<>();
         wrapper.eq("point_no", pointNo);
-        DaPointEntity entity = baseDao.selectOne(wrapper);
+        DaPointEntity entity = daPointDao.selectOne(wrapper);
         return ConvertUtils.sourceToTarget(entity, DaPointDTO.class);
     }
 
@@ -216,7 +215,7 @@
     public List<DaPointDTO> getByNos(List<String> pointNos) {
         QueryWrapper<DaPointEntity> wrapper = new QueryWrapper<>();
         wrapper.in("point_no", pointNos);
-        List<DaPointEntity> list = baseDao.selectList(wrapper);
+        List<DaPointEntity> list = daPointDao.selectList(wrapper);
         return ConvertUtils.sourceToTarget(list, DaPointDTO.class);
     }
 
@@ -226,7 +225,7 @@
         wrapper.eq("point_no", dto.getPointNo());
         DaPointEntity entity = new DaPointEntity();
         entity.setDefaultValue(dto.getDefaultValue());
-        baseDao.update(entity, wrapper);
+        daPointDao.update(entity, wrapper);
     }
 
     @Override
@@ -238,7 +237,7 @@
             DaPointEntity entity = new DaPointEntity();
             entity.setId(item);
             entity.setIsEnable(IsEnableEnum.ENABLE.value());
-            baseDao.updateById(entity);
+            daPointDao.updateById(entity);
         });
     }
 
@@ -251,7 +250,7 @@
             DaPointEntity entity = new DaPointEntity();
             entity.setId(item);
             entity.setIsEnable(IsEnableEnum.DISABLE.value());
-            baseDao.updateById(entity);
+            daPointDao.updateById(entity);
         });
     }
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointPageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointPageReqVO.java
new file mode 100644
index 0000000..b92117e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointPageReqVO.java
@@ -0,0 +1,23 @@
+package com.iailab.module.data.point.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年09月2日
+ */
+@Schema(description = "数据平台 - DaPoint分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class DaPointPageReqVO extends PageParam {
+
+    private String pointNo;
+
+    private String pointName;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointRespVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointRespVO.java
new file mode 100644
index 0000000..ff2006d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointRespVO.java
@@ -0,0 +1,88 @@
+package com.iailab.module.data.point.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年09月2日
+ */
+@Schema(description = "数据平台 - DaPoint Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class DaPointRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "测点编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("测点编码")
+    private String pointNo;
+
+    @Schema(description = "测点名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("测点名称")
+    private String pointName;
+
+    @Schema(description = "测点类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("测点类型")
+    private String pointType;
+
+    @Schema(description = "数据类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("数据类型")
+    private String dataType;
+
+    @Schema(description = "值类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("值类型")
+    private String valueType;
+
+    @Schema(description = "存储类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("存储类型")
+    private String storeType;
+
+    @Schema(description = "测量单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("测量单位")
+    private String unit;
+
+    @Schema(description = "单位转换", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("单位转换")
+    private BigDecimal unittransfactor;
+
+    @Schema(description = "默认值", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("默认值")
+    private BigDecimal defaultValue;
+
+    @Schema(description = "最大值", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("最大值")
+    private BigDecimal maxValue;
+
+    @Schema(description = "最小值", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("最小值")
+    private BigDecimal minValue;
+
+    @Schema(description = "采集频率", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("采集频率")
+    private String minfreqid;
+
+    @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("是否启用")
+    private Integer isEnable;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("创建时间")
+    private Date createTime;
+
+    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("更新时间")
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/http/HttpTagDao.xml b/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/http/HttpTagDao.xml
deleted file mode 100644
index fa227d7..0000000
--- a/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/http/HttpTagDao.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?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="com.iailab.module.data.http.dao.HttpTagDao">
-
-    <select id="getList" resultType="com.iailab.module.data.http.dto.HttpTagDTO">
-        select * from t_http_tag
-        <where>
-            <if test="deviceId != null and deviceId != ''">
-                tag_type = #{deviceId}
-            </if>
-        </where>
-    </select>
-
-</mapper>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index b6b1bfb..04a4ec8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -118,7 +118,7 @@
                 <nacos.username>nacos</nacos.username>
                 <nacos.password>nacos</nacos.password>
                 <nacos.metadata.version>1.0.0</nacos.metadata.version>
-                <log.path>E:\DLUT\iailab-plat</log.path>
+                <log.path>D:\DLUT\iailab-plat</log.path>
                 <logstash.address>127.0.0.1:4560</logstash.address>
             </properties>
             <activation>

--
Gitblit v1.9.3