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); } 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; } 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; } 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; } 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); } } 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(); } } 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"); } } 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()); } } } 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)); } } 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); } 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; } 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; } 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); } 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); } 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); } } 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()); 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; } 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; } 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 >= #{startTime} </if> <if test="endTime != null"> and t2.collect_time <= #{endTime} </if> </where> </select> </mapper>