From 1d02b4887665a616697af9bd92885ba6db4ed838 Mon Sep 17 00:00:00 2001
From: Jay <csj123456>
Date: 星期三, 19 二月 2025 14:11:05 +0800
Subject: [PATCH] 新增固化标识,新增保存指标历史值job,以及查询指标历史值功能

---
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/entity/IndItemEntity.java                     |    5 ++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemSaveReqVO.java                      |    3 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/controller/admin/IndItemValueController.java |   12 +++++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemPageReqVO.java                      |    3 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/impl/IndItemValueServiceImpl.java    |   14 +++++++
 iailab-module-data/iailab-module-data-biz/src/main/resources/application.yaml                                                         |    1 
 iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/ind/IndItemDao.xml                                                |    3 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/controller/package-info.java                 |    1 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/IndItemValueService.java             |    3 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/IndCollectTaskNetDay.java                     |   73 ++++++++++++++++++++++++++++++++++++
 10 files changed, 116 insertions(+), 2 deletions(-)

diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/entity/IndItemEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/entity/IndItemEntity.java
index 812ef07..26e6d13 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/entity/IndItemEntity.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/entity/IndItemEntity.java
@@ -78,6 +78,11 @@
     private Integer status;
 
     /**
+     * 固化标识
+     */
+    private String solidifyFlag;
+
+    /**
      * 创建者
      */
     private String creator;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemPageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemPageReqVO.java
index 4d6a865..6fe17c5 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemPageReqVO.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemPageReqVO.java
@@ -28,4 +28,7 @@
 
     @Schema(description = "指标分类", example = "")
     private String itemCategory;
+
+    @Schema(description = "固化标识", example = "")
+    private String solidifyFlag;
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemSaveReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemSaveReqVO.java
index 0658f90..d0cd3ef 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemSaveReqVO.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemSaveReqVO.java
@@ -59,4 +59,7 @@
 
     @Schema(description = "计算指标")
     private IndItemCalVO calItem;
+
+    @Schema(description = "固化标识")
+    private String solidifyFlag;
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/controller/IndItemValueController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/controller/admin/IndItemValueController.java
similarity index 87%
rename from iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/controller/IndItemValueController.java
rename to iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/controller/admin/IndItemValueController.java
index beeb841..2455281 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/controller/IndItemValueController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/controller/admin/IndItemValueController.java
@@ -1,9 +1,10 @@
-package com.iailab.module.data.ind.value.controller;
+package com.iailab.module.data.ind.value.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.ind.item.vo.IndItemRespVO;
+import com.iailab.module.data.ind.item.vo.IndItemValueVO;
 import com.iailab.module.data.ind.value.entity.IndItemValueEntity;
 import com.iailab.module.data.ind.value.service.IndItemValueService;
 import com.iailab.module.data.ind.value.vo.IndItemValuePageReqVO;
@@ -17,6 +18,8 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+
+import java.util.List;
 
 import static com.iailab.framework.common.pojo.CommonResult.success;
 
@@ -74,4 +77,11 @@
         IndItemValueEntity entity = indItemValueService.get(id);
         return success(BeanUtils.toBean(entity, IndItemRespVO.class));
     }
+
+    @GetMapping("/getList")
+    @Operation(summary = "获取指标项数据集合信息")
+    public CommonResult<List<IndItemValueVO>> getList(@Valid IndItemValuePageReqVO reqVO) {
+        List<IndItemValueVO> list =  indItemValueService.getValueList(reqVO);
+        return success(list);
+    }
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/controller/package-info.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/controller/package-info.java
new file mode 100644
index 0000000..107f995
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/controller/package-info.java
@@ -0,0 +1 @@
+package com.iailab.module.data.ind.value.controller;
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/IndItemValueService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/IndItemValueService.java
index 621b442..ff06038 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/IndItemValueService.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/IndItemValueService.java
@@ -9,7 +9,6 @@
 import com.iailab.module.data.ind.value.vo.IndItemValueSaveReqVO;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * @author PanZhibao
@@ -29,4 +28,6 @@
     void delete(String id);
 
     List<IndItemValueVO> getSourceValue(QuerySourceValueDTO dto);
+
+    List<IndItemValueVO> getValueList(IndItemValuePageReqVO reqVO);
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/impl/IndItemValueServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/impl/IndItemValueServiceImpl.java
index ed1c49d..2453ea2 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/impl/IndItemValueServiceImpl.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/impl/IndItemValueServiceImpl.java
@@ -3,7 +3,10 @@
 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.framework.common.util.object.ConvertUtils;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.iailab.framework.tenant.core.context.DataContextHolder;
+import com.iailab.module.data.common.utils.DateUtils;
 import com.iailab.module.data.common.xss.SQLFilter;
 import com.iailab.module.data.ind.item.vo.IndItemValueVO;
 import com.iailab.module.data.ind.value.dao.IndItemValueDao;
@@ -73,4 +76,15 @@
         DataContextHolder.setDataSourceId(Long.valueOf(dto.getDataSource()));
         return baseDao.getSourceValue(dto);
     }
+
+    @Override
+    public List<IndItemValueVO> getValueList(IndItemValuePageReqVO reqVO) {
+        List<IndItemValueEntity> entities = baseDao.selectList( new LambdaQueryWrapperX<IndItemValueEntity>()
+                .eq(StringUtils.isNotBlank(reqVO.getItemNo()), IndItemValueEntity::getItemNo, reqVO.getItemNo())
+                .geIfPresent(IndItemValueEntity::getDataTime, DateUtils.stringToDate(reqVO.getStartTime(), DateUtils.DATE_TIME_PATTERN))
+                .leIfPresent(IndItemValueEntity::getDataTime, DateUtils.stringToDate(reqVO.getEndTime(), DateUtils.DATE_TIME_PATTERN))
+                .orderByDesc(IndItemValueEntity::getDataTime)
+        );
+        return ConvertUtils.sourceToTarget(entities, IndItemValueVO.class);
+    }
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/IndCollectTaskNetDay.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/IndCollectTaskNetDay.java
new file mode 100644
index 0000000..a775710
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/IndCollectTaskNetDay.java
@@ -0,0 +1,73 @@
+package com.iailab.module.data.job.task;
+
+import com.alibaba.nacos.common.utils.StringUtils;
+import com.iailab.module.data.api.ind.IndItemApi;
+import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO;
+import com.iailab.module.data.ind.item.service.IndItemService;
+import com.iailab.module.data.ind.item.vo.IndItemPageReqVO;
+import com.iailab.module.data.ind.item.vo.IndItemRespVO;
+import com.iailab.module.data.ind.value.service.IndItemValueService;
+import com.iailab.module.data.ind.value.vo.IndItemValueSaveReqVO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Calendar;
+import java.util.List;
+
+/**
+ * @description: Point采集器1h
+ * @author: dzd
+ * @date: 2025/1/18 14:07
+ **/
+@Component("indCollectTaskNetDay")
+public class IndCollectTaskNetDay implements ITask {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private IndItemService indItemService;
+
+    @Autowired
+    private IndItemValueService indItemValueService;
+
+    @Autowired
+    private IndItemApi indItemApi;
+    @Override
+    public void run(String params){
+        logger.debug("indCollectTaskNetDay定时任务正在执行,参数为:{}", params);
+        try {
+            Calendar calendar = Calendar.getInstance();
+            calendar.set(Calendar.MILLISECOND, 0);
+            IndItemPageReqVO reqVO = new IndItemPageReqVO();
+            if (StringUtils.isNotBlank(params)){
+                reqVO.setSolidifyFlag(params);
+            }else {
+                reqVO.setSolidifyFlag("DAY");
+            }
+            List<IndItemRespVO> indItemList =  indItemService.getList(reqVO);
+            if (!CollectionUtils.isEmpty(indItemList)){
+                for (IndItemRespVO indItem : indItemList) {
+                    logger.info("开始查询指标数据,指标编号:" + indItem.getItemNo());
+                    List<ApiIndItemValueDTO> indItemValueList = indItemApi.queryIndItemDefaultValue(indItem.getItemNo());
+                    for (ApiIndItemValueDTO indItemValue : indItemValueList) {
+                        logger.info("开始保存指标数据,指标编号:" + indItem.getItemNo() + ", 指标数据:" + indItemValue.getDataValue());
+                        IndItemValueSaveReqVO saveReqVO = new IndItemValueSaveReqVO();
+                        saveReqVO.setItemNo(indItem.getItemNo());
+                        saveReqVO.setDataTime(indItemValue.getDataTime());
+                        saveReqVO.setDataValue(BigDecimal.valueOf(indItemValue.getDataValue()));
+                        indItemValueService.create(saveReqVO);
+                    }
+                }
+            }
+            logger.info("indCollectTaskNetDay定时任务完成时间:" + LocalDateTime.now());
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            logger.error("indCollectTaskNetDay定时任务失败时间:" + LocalDateTime.now());
+        }
+
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/resources/application.yaml b/iailab-module-data/iailab-module-data-biz/src/main/resources/application.yaml
index 7c52b23..ffa76bf 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/resources/application.yaml
+++ b/iailab-module-data/iailab-module-data-biz/src/main/resources/application.yaml
@@ -176,6 +176,7 @@
       - t_ind_item_atom
       - t_ind_item_der
       - t_ind_item_cal
+      - t_ind_item_value
       - t_video_nvr
       - t_video_log
       - t_video_camera
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/ind/IndItemDao.xml b/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/ind/IndItemDao.xml
index 556b99f..bc2a643 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/ind/IndItemDao.xml
+++ b/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/ind/IndItemDao.xml
@@ -22,6 +22,9 @@
             <if test="params.itemCategory != null and params.itemCategory != ''">
                 and t1.item_category = #{params.itemCategory}
             </if>
+            <if test="params.solidifyFlag != null and params.solidifyFlag != ''">
+                and t1.solidify_flag = #{params.solidifyFlag}
+            </if>
         </where>
     </select>
 

--
Gitblit v1.9.3