From 73b24c8664c66857412c0065d4ee6ee487c61fd8 Mon Sep 17 00:00:00 2001
From: Jay <csj123456>
Date: 星期四, 12 六月 2025 17:10:30 +0800
Subject: [PATCH] 增加测点异常历史表查询接口,新增查询测点数量接口

---
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dao/DaPointBadHistoryDao.java                  |   29 ++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java          |   16 +
 iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/point/DaPointDao.xml                                            |   20 ++
 iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/DataPointApi.java                          |   10 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/impl/DaPointServiceImpl.java           |   16 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/PointBadHistoryGenerateTask.java            |   67 ++++++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/config/ScheduleJobListConfig.java                |    1 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaPointBadHistoryDTO.java                  |   47 ++++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointCountReqVO.java                      |   38 +++
 iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/dto/ApiPointBadHistoryDTO.java             |   47 ++++
 iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/dto/ApiPointBadHistoryPageReqVO.java       |   38 +++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/impl/DaPointBadHistoryServiceImpl.java |   36 +++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointBadHistoryPageReqVO.java             |   38 +++
 iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/dto/ApiPointCountReqVO.java                |   38 +++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/point/DataPointApiImpl.java                      |   22 ++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/DaPointBadHistoryService.java          |   19 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/DaPointService.java                    |    9 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/entity/DaPointBadHistoryEntity.java            |   67 ++++++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dao/DaPointDao.java                            |    3 
 19 files changed, 552 insertions(+), 9 deletions(-)

diff --git a/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/DataPointApi.java b/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/DataPointApi.java
index b271fb0..b412633 100644
--- a/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/DataPointApi.java
+++ b/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/DataPointApi.java
@@ -70,4 +70,12 @@
     @PostMapping(PREFIX + "/query-math-point/current-value")
     @Operation(summary = "根据计算点编号查询测点集合")
     PageResult<ApiPointDTO> queryMathPointCurrentValue(@RequestBody ApiPointPageReqVO reqVO);
-}
+
+    @PostMapping(PREFIX + "/query-point-bad-history/page")
+    @Operation(summary = "查询测点异常历史分页")
+    PageResult<ApiPointBadHistoryDTO> queryPointBadHistoryPage(@RequestBody ApiPointBadHistoryPageReqVO reqVO);
+
+    @PostMapping(PREFIX + "/query-point/count")
+    @Operation(summary = "获取点位个数")
+    String getPointTotalCount(@RequestBody ApiPointCountReqVO reqVO);
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/dto/ApiPointBadHistoryDTO.java b/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/dto/ApiPointBadHistoryDTO.java
new file mode 100644
index 0000000..7e8e199
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/dto/ApiPointBadHistoryDTO.java
@@ -0,0 +1,47 @@
+package com.iailab.module.data.api.point.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+ * @author Jay
+ */
+@Data
+@Tag(name = "测点异常历史表")
+public class ApiPointBadHistoryDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "测点ID")
+    private String pointId;
+
+    @Schema(description = "测点编码")
+    private String pointNo;
+
+    @Schema(description = "测点名称")
+    private String pointName;
+
+    @Schema(description = "测点Tag")
+    private String tagNo;
+
+    @Schema(description = "异常值")
+    private BigDecimal badValue;
+
+    @Schema(description = "异常值类型")
+    private String badValueType;
+
+    @Schema(description = "采集时间")
+    private Date collectTime;
+
+    @Schema(description = "创建时间")
+    private Date createTime;
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/dto/ApiPointBadHistoryPageReqVO.java b/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/dto/ApiPointBadHistoryPageReqVO.java
new file mode 100644
index 0000000..ef151ef
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/dto/ApiPointBadHistoryPageReqVO.java
@@ -0,0 +1,38 @@
+package com.iailab.module.data.api.point.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.util.Date;
+
+
+/**
+ * @author Jay
+ */
+@Schema(description = "数据平台 - 测点异常分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class ApiPointBadHistoryPageReqVO extends PageParam {
+
+    @Schema(description = "测点编码")
+    private String pointNo;
+
+    @Schema(description = "测点名称")
+    private String pointName;
+
+    @Schema(description = "测点Tag")
+    private String tagNo;
+
+    @Schema(description = "开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @Schema(description = "结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/dto/ApiPointCountReqVO.java b/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/dto/ApiPointCountReqVO.java
new file mode 100644
index 0000000..6fa21ba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/point/dto/ApiPointCountReqVO.java
@@ -0,0 +1,38 @@
+package com.iailab.module.data.api.point.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author Jay
+ */
+@Schema(description = "数据平台 - 测点数量查询 Request VO")
+@Data
+public class ApiPointCountReqVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "测点类型")
+    private String pointType;
+
+    @Schema(description = "数据类型")
+    private String dataType;
+
+    @Schema(description = "是否启用")
+    private Integer isEnable;
+
+    @Schema(description = "采集质量")
+    private String collectQuality;
+
+    @Schema(description = "开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @Schema(description = "结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java
index c0f3c5b..f518b5b 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java
@@ -329,4 +329,20 @@
         return success(indItemApi.queryIndItemValuePage(dto));
     }
 
+    @PermitAll
+    @PostMapping("/query-point-bad-history/page")
+    @Operation(summary = "根据计算点编号查询测点集合")
+    public CommonResult<PageResult<ApiPointBadHistoryDTO>> queryPointBadHistoryPage(@RequestBody ApiPointBadHistoryPageReqVO reqVO) {
+        PageResult<ApiPointBadHistoryDTO> data = dataPointApi.queryPointBadHistoryPage(reqVO);
+        return success(data);
+    }
+
+    @PermitAll
+    @PostMapping("/query-point/count")
+    @Operation(summary = "根据计算点编号查询测点集合")
+    public CommonResult<String> getPointTotalCount(@RequestBody ApiPointCountReqVO reqVO) {
+        String count = dataPointApi.getPointTotalCount(reqVO);
+        return success(count);
+    }
+
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/point/DataPointApiImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/point/DataPointApiImpl.java
index d276ce4..752dc19 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/point/DataPointApiImpl.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/point/DataPointApiImpl.java
@@ -12,8 +12,12 @@
 import com.iailab.module.data.point.dto.DaMathPointDTO;
 import com.iailab.module.data.point.dto.DaPointDTO;
 import com.iailab.module.data.point.dto.DaPointWriteValueDTO;
+import com.iailab.module.data.point.entity.DaPointBadHistoryEntity;
 import com.iailab.module.data.point.service.DaMathPointService;
+import com.iailab.module.data.point.service.DaPointBadHistoryService;
 import com.iailab.module.data.point.service.DaPointService;
+import com.iailab.module.data.point.vo.DaPointBadHistoryPageReqVO;
+import com.iailab.module.data.point.vo.DaPointCountReqVO;
 import com.iailab.module.data.point.vo.DaPointPageReqVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
@@ -23,7 +27,6 @@
 
 import java.util.*;
 import java.util.stream.Collectors;
-import java.util.stream.IntStream;
 
 /**
  * @author PanZhibao
@@ -45,6 +48,9 @@
 
     @Autowired
     private DaMathPointService daMathPointService;
+
+    @Autowired
+    private DaPointBadHistoryService daPointBadHistoryService;
 
     @Override
     public ApiPointDTO getInfoById(String pointId) {
@@ -247,4 +253,18 @@
         });
         return new PageResult<>(dataList, pageResult.getTotal());
     }
+
+    @Override
+    public PageResult<ApiPointBadHistoryDTO> queryPointBadHistoryPage(ApiPointBadHistoryPageReqVO reqVO) {
+        DaPointBadHistoryPageReqVO req = ConvertUtils.sourceToTarget(reqVO, DaPointBadHistoryPageReqVO.class);
+        PageResult<DaPointBadHistoryEntity> page = daPointBadHistoryService.queryPage(req);
+        List<ApiPointBadHistoryDTO> dataList = ConvertUtils.sourceToTarget(page.getList(), ApiPointBadHistoryDTO.class);
+        return new PageResult<>(dataList, page.getTotal());
+    }
+
+    @Override
+    public String getPointTotalCount(ApiPointCountReqVO reqVO) {
+        DaPointCountReqVO req = ConvertUtils.sourceToTarget(reqVO, DaPointCountReqVO.class);
+        return daPointService.getPointCount(req).toString();
+    }
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/config/ScheduleJobListConfig.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/config/ScheduleJobListConfig.java
index b72210f..2daf80f 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/config/ScheduleJobListConfig.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/config/ScheduleJobListConfig.java
@@ -32,5 +32,6 @@
         scheduleJobList.add("pointArchivingTaskNetShift");
         scheduleJobList.add("pointArchivingTaskNetYear");
         scheduleJobList.add("insertInfluxdbTask");
+        scheduleJobList.add("pointBadHistoryGenerateTask");
     }
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/PointBadHistoryGenerateTask.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/PointBadHistoryGenerateTask.java
new file mode 100644
index 0000000..2494bd5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/PointBadHistoryGenerateTask.java
@@ -0,0 +1,67 @@
+package com.iailab.module.data.job.task;
+
+import com.iailab.module.data.common.enums.CommonConstant;
+import com.iailab.module.data.common.enums.DataQualityEnum;
+import com.iailab.module.data.common.enums.IsEnableEnum;
+import com.iailab.module.data.point.dto.DaPointBadHistoryDTO;
+import com.iailab.module.data.point.dto.DaPointDTO;
+import com.iailab.module.data.point.service.DaPointBadHistoryService;
+import com.iailab.module.data.point.service.DaPointService;
+import com.iailab.module.data.point.vo.DaPointPageReqVO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.Calendar;
+import java.util.List;
+
+/**
+ * Point采集器1min
+ * 0 0/1 * * * ?
+ *
+ * @author Jay
+ * @Description 测点异常历史
+ */
+@Component("pointBadHistoryGenerateTask")
+public class PointBadHistoryGenerateTask implements ITask {
+    private final Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Resource
+    private DaPointService daPointService;
+
+    @Resource
+    private DaPointBadHistoryService daPointBadHistoryService;
+
+    @Override
+    public void run(String params) {
+        // 0 0/1 * * * ?
+        logger.info("PointBadHistoryGenerateTask定时任务正在执行,参数为:{}", params);
+        try {
+            Calendar calendar = Calendar.getInstance();
+            calendar.set(Calendar.SECOND, 0);
+            calendar.set(Calendar.MILLISECOND, 0);
+            DaPointPageReqVO reqVO = new DaPointPageReqVO();
+            reqVO.setIsEnable(IsEnableEnum.ENABLE.getCode());
+            reqVO.setCollectQuality(DataQualityEnum.BAD.getCode());
+            List<DaPointDTO> badPoints = daPointService.getList(reqVO);
+            badPoints.forEach(point -> {
+                DaPointBadHistoryDTO daPointBadHistoryDTO = new DaPointBadHistoryDTO();
+                daPointBadHistoryDTO.setPointId(point.getId());
+                daPointBadHistoryDTO.setPointNo(point.getPointNo());
+                daPointBadHistoryDTO.setPointName(point.getPointName());
+                daPointBadHistoryDTO.setTagNo(point.getTagNo());
+                daPointBadHistoryDTO.setBadValue(CommonConstant.BAD_VALUE);
+                daPointBadHistoryDTO.setBadValueType("通讯异常");
+                daPointBadHistoryDTO.setCollectTime(point.getCollectTime());
+                daPointBadHistoryService.create(daPointBadHistoryDTO);
+            });
+            logger.info("PointBadHistoryGenerateTask定时任务完成时间:" + LocalDateTime.now());
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            logger.error("PointBadHistoryGenerateTask定时任务失败时间:" + LocalDateTime.now());
+        }
+
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dao/DaPointBadHistoryDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dao/DaPointBadHistoryDao.java
new file mode 100644
index 0000000..c2b36b2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dao/DaPointBadHistoryDao.java
@@ -0,0 +1,29 @@
+package com.iailab.module.data.point.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.point.entity.DaPointBadHistoryEntity;
+import com.iailab.module.data.point.vo.DaPointBadHistoryPageReqVO;
+import org.apache.ibatis.annotations.Mapper;
+
+
+/**
+ * @author Jay
+ */
+@TenantDS
+@Mapper
+public interface DaPointBadHistoryDao extends BaseMapperX<DaPointBadHistoryEntity> {
+
+    default PageResult<DaPointBadHistoryEntity> selectPage(DaPointBadHistoryPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<DaPointBadHistoryEntity>()
+                .likeIfPresent(DaPointBadHistoryEntity::getPointNo, reqVO.getPointNo())
+                .likeIfPresent(DaPointBadHistoryEntity::getPointName, reqVO.getPointName())
+                .likeIfPresent(DaPointBadHistoryEntity::getTagNo, reqVO.getTagNo())
+                .geIfPresent(DaPointBadHistoryEntity::getCollectTime, reqVO.getStartTime())
+                .leIfPresent(DaPointBadHistoryEntity::getCollectTime, reqVO.getEndTime())
+                .orderByDesc(DaPointBadHistoryEntity::getCreateTime));
+    }
+
+}
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 a3990f0..2c71f09 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
@@ -5,6 +5,7 @@
 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.DaPointCountReqVO;
 import com.iailab.module.data.point.vo.DaPointPageReqVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -35,6 +36,8 @@
 
     List<DaPointDTO> getExtremalPoint(Map<String, Object> params);
 
+    Long getPointCount(DaPointCountReqVO reqVO);
+
     default IPage<DaPointDTO> selectPageList(DaPointPageReqVO reqVO) {
         return getPageList(getPage(reqVO), reqVO);
     }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaPointBadHistoryDTO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaPointBadHistoryDTO.java
new file mode 100644
index 0000000..2633c5d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaPointBadHistoryDTO.java
@@ -0,0 +1,47 @@
+package com.iailab.module.data.point.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+ * @author Jay
+ */
+@Data
+@Tag(name = "测点异常历史表")
+public class DaPointBadHistoryDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "测点ID")
+    private String pointId;
+
+    @Schema(description = "测点编码")
+    private String pointNo;
+
+    @Schema(description = "测点名称")
+    private String pointName;
+
+    @Schema(description = "测点Tag")
+    private String tagNo;
+
+    @Schema(description = "异常值")
+    private BigDecimal badValue;
+
+    @Schema(description = "异常值类型")
+    private String badValueType;
+
+    @Schema(description = "采集时间")
+    private Date collectTime;
+
+    @Schema(description = "创建时间")
+    private Date createTime;
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/entity/DaPointBadHistoryEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/entity/DaPointBadHistoryEntity.java
new file mode 100644
index 0000000..38bf9e5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/entity/DaPointBadHistoryEntity.java
@@ -0,0 +1,67 @@
+package com.iailab.module.data.point.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+ * @author Jay
+ */
+@Data
+@TableName("t_da_point_bad_history")
+public class DaPointBadHistoryEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 测点ID
+     */
+    private String pointId;
+
+    /**
+     * 测点编码
+     */
+    private String pointNo;
+
+    /**
+     * 测点名称
+     */
+    private String pointName;
+
+    /**
+     * 测点Tag
+     */
+    private String tagNo;
+
+    /**
+     * 异常值
+     */
+    private BigDecimal badValue;
+
+    /**
+     * 异常值类型
+     */
+    private String badValueType;
+
+    /**
+     * 采集时间
+     */
+    private Date collectTime;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/DaPointBadHistoryService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/DaPointBadHistoryService.java
new file mode 100644
index 0000000..f6442d6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/DaPointBadHistoryService.java
@@ -0,0 +1,19 @@
+package com.iailab.module.data.point.service;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.data.point.dto.DaPointBadHistoryDTO;
+import com.iailab.module.data.point.entity.DaPointBadHistoryEntity;
+import com.iailab.module.data.point.vo.DaPointBadHistoryPageReqVO;
+
+
+/**
+ * @author Jay
+ */
+public interface DaPointBadHistoryService extends BaseService<DaPointBadHistoryEntity> {
+    PageResult<DaPointBadHistoryEntity> queryPage(DaPointBadHistoryPageReqVO reqVO);
+
+    void create(DaPointBadHistoryDTO daPointBadHistoryDTO);
+
+
+}
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 5374add..988eb1c 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
@@ -3,10 +3,11 @@
 import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.module.data.api.point.dto.ApiPointDTO;
 import com.iailab.module.data.point.dto.DaPointDTO;
-import com.iailab.module.data.point.vo.*;
+import com.iailab.module.data.point.vo.DaPointCountReqVO;
+import com.iailab.module.data.point.vo.DaPointPageReqVO;
+import com.iailab.module.data.point.vo.PointImportExcelVO;
+import com.iailab.module.data.point.vo.PointImportRespVO;
 
-import java.util.HashMap;
-import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -75,4 +76,6 @@
     List<DaPointDTO> getMeasurePoint(DaPointPageReqVO reqVO);
 
     List<DaPointDTO> getMathPoint(DaPointPageReqVO reqVO);
+
+    Long getPointCount(DaPointCountReqVO reqVO);
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/impl/DaPointBadHistoryServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/impl/DaPointBadHistoryServiceImpl.java
new file mode 100644
index 0000000..63e9dd4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/service/impl/DaPointBadHistoryServiceImpl.java
@@ -0,0 +1,36 @@
+package com.iailab.module.data.point.service.impl;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.module.data.point.dao.DaPointBadHistoryDao;
+import com.iailab.module.data.point.dto.DaPointBadHistoryDTO;
+import com.iailab.module.data.point.entity.DaPointBadHistoryEntity;
+import com.iailab.module.data.point.service.DaPointBadHistoryService;
+import com.iailab.module.data.point.vo.DaPointBadHistoryPageReqVO;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.UUID;
+
+
+/**
+ * @author Jay
+ */
+@Service
+public class DaPointBadHistoryServiceImpl extends BaseServiceImpl<DaPointBadHistoryDao, DaPointBadHistoryEntity> implements DaPointBadHistoryService {
+
+
+    @Override
+    public PageResult<DaPointBadHistoryEntity> queryPage(DaPointBadHistoryPageReqVO reqVO) {
+        return baseDao.selectPage(reqVO);
+    }
+
+    @Override
+    public void create(DaPointBadHistoryDTO daPointBadHistoryDTO) {
+        DaPointBadHistoryEntity entity = BeanUtils.toBean(daPointBadHistoryDTO, DaPointBadHistoryEntity.class);
+        entity.setId(UUID.randomUUID().toString());
+        entity.setCreateTime(new Date());
+        baseDao.insert(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/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 b4f7fb8..9d5a09e 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,12 +2,9 @@
 
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.iailab.framework.common.constant.Constant;
 import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.common.service.impl.BaseServiceImpl;
 import com.iailab.framework.common.util.object.BeanUtils;
@@ -15,8 +12,8 @@
 import com.iailab.module.data.api.point.dto.ApiPointDTO;
 import com.iailab.module.data.channel.common.service.ChannelSourceService;
 import com.iailab.module.data.common.enums.CommonConstant;
-import com.iailab.module.data.common.enums.IsEnableEnum;
 import com.iailab.module.data.common.enums.IncreaseCodeEnum;
+import com.iailab.module.data.common.enums.IsEnableEnum;
 import com.iailab.module.data.point.common.PointTypeEnum;
 import com.iailab.module.data.point.dao.DaPointDao;
 import com.iailab.module.data.point.dto.DaCumulatePointDTO;
@@ -26,6 +23,7 @@
 import com.iailab.module.data.point.entity.DaMeasurePointEntity;
 import com.iailab.module.data.point.entity.DaPointEntity;
 import com.iailab.module.data.point.service.*;
+import com.iailab.module.data.point.vo.DaPointCountReqVO;
 import com.iailab.module.data.point.vo.DaPointPageReqVO;
 import com.iailab.module.data.point.vo.PointImportExcelVO;
 import com.iailab.module.data.point.vo.PointImportRespVO;
@@ -324,6 +322,16 @@
     }
 
     @Override
+    public Long getPointCount(DaPointCountReqVO reqVO ) {
+        if (StringUtils.isNotBlank(reqVO.getCollectQuality())){
+            return daPointDao.getPointCount(reqVO);
+        }
+        QueryWrapper<DaPointEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(reqVO.getIsEnable() != null, "is_enable", reqVO.getIsEnable());
+        return daPointDao.selectCount(queryWrapper);
+    }
+
+    @Override
     public List<DaPointDTO> getMathPoint(String freq) {
         Map<String, Object> params = new HashMap<>();
         params.put("pointType", PointTypeEnum.CALCULATE_POINT.getCode());
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointBadHistoryPageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointBadHistoryPageReqVO.java
new file mode 100644
index 0000000..d9e7c43
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointBadHistoryPageReqVO.java
@@ -0,0 +1,38 @@
+package com.iailab.module.data.point.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.util.Date;
+
+
+/**
+ * @author Jay
+ */
+@Schema(description = "数据平台 - 测点异常分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class DaPointBadHistoryPageReqVO extends PageParam {
+
+    @Schema(description = "测点编码")
+    private String pointNo;
+
+    @Schema(description = "测点名称")
+    private String pointName;
+
+    @Schema(description = "测点Tag")
+    private String tagNo;
+
+    @Schema(description = "开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @Schema(description = "结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+}
\ 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/DaPointCountReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointCountReqVO.java
new file mode 100644
index 0000000..58849dc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointCountReqVO.java
@@ -0,0 +1,38 @@
+package com.iailab.module.data.point.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author Jay
+ */
+@Schema(description = "数据平台 - 测点数量查询 Request VO")
+@Data
+public class DaPointCountReqVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "测点类型")
+    private String pointType;
+
+    @Schema(description = "数据类型")
+    private String dataType;
+
+    @Schema(description = "是否启用")
+    private Integer isEnable;
+
+    @Schema(description = "采集质量")
+    private String collectQuality;
+
+    @Schema(description = "开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @Schema(description = "结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/point/DaPointDao.xml b/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/point/DaPointDao.xml
index bd170f0..1808b54 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/point/DaPointDao.xml
+++ b/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/point/DaPointDao.xml
@@ -345,4 +345,24 @@
         </where>
     </select>
 
+    <select id="getPointCount" resultType="long">
+        select count(*)
+        from t_da_point t1
+        left join t_da_point_collect_status t2 on t2.point_no = t1.point_no
+        <where>
+            <if test="isEnable != null ">
+                and t1.is_enable = #{isEnable}
+            </if>
+            <if test="collectQuality != null and collectQuality != ''">
+                and t2.collect_quality = #{collectQuality}
+            </if>
+            <if test="startTime != null">
+                and t2.collect_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null">
+                and t2.collect_time &lt;= #{endTime}
+            </if>
+        </where>
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3