From 6248237228efe5e24410b1542c55368941a25806 Mon Sep 17 00:00:00 2001 From: dongyukun <1208714201@qq.com> Date: 星期一, 05 五月 2025 16:49:06 +0800 Subject: [PATCH] 数据归档 --- iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/impl/ArcDataServiceImpl.java | 55 ++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 36 insertions(+), 19 deletions(-) diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/impl/ArcDataServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/impl/ArcDataServiceImpl.java index f3d62a7..e82bb6c 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/impl/ArcDataServiceImpl.java +++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/impl/ArcDataServiceImpl.java @@ -2,6 +2,8 @@ import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.service.impl.BaseServiceImpl; +import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.iailab.framework.mybatis.core.query.QueryWrapperX; import com.iailab.module.data.api.point.DataPointApiImpl; import com.iailab.module.data.api.point.dto.ApiPointValueDTO; import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO; @@ -64,6 +66,10 @@ arcDataEntity.setArcTime(arcTime); arcDataEntity.setArcId(item.getId()); arcDataEntity.setArcValue(value); + arcDataDao.delete(new LambdaQueryWrapperX<ArcDataEntity>() + .eq(ArcDataEntity::getArcId, arcDataEntity.getArcId()) + .eq(ArcDataEntity::getArcTime, arcDataEntity.getArcTime()) + ); insert(arcDataEntity); log.debug("归档完成,point:"+item.getPoint()); }); @@ -93,6 +99,10 @@ arcDataEntity.setArcTime(arcTime); arcDataEntity.setArcId(item.getId()); arcDataEntity.setArcValue(value); + arcDataDao.delete(new LambdaQueryWrapperX<ArcDataEntity>() + .eq(ArcDataEntity::getArcId, arcDataEntity.getArcId()) + .eq(ArcDataEntity::getArcTime, arcDataEntity.getArcTime()) + ); insert(arcDataEntity); log.debug("归档完成,point:"+item.getPoint()); }); @@ -124,6 +134,10 @@ arcDataEntity.setArcValue(value); arcDataEntity.setCode(item.getCode()); arcDataEntity.setCreateTime(new Date()); + arcDataDao.delete(new LambdaQueryWrapperX<ArcDataEntity>() + .eq(ArcDataEntity::getArcId, arcDataEntity.getArcId()) + .eq(ArcDataEntity::getArcTime, arcDataEntity.getArcTime()) + ); insert(arcDataEntity); log.debug("归档完成,point:"+item.getPoint()); }); @@ -131,23 +145,23 @@ case MONTH: //查询对应类型的归档设置列表 List<ArcSettingEntity> arcMonthList = arcPointSettingService.list(params); + Date endTime4 = calendar.getTime(); + calendar.add(Calendar.MONTH, -1); + Date startTime4 = calendar.getTime(); //遍历列表 arcMonthList.forEach(item -> { log.debug("开始归档,point:"+item.getPoint()); - //获取开始时间 - calendar.add(Calendar.MONTH, -1); - Date startTime = calendar.getTime(); //通过point编号查询数据 ApiPointValueQueryDTO queryDto = new ApiPointValueQueryDTO(); queryDto.setPointNo(item.getPoint()); - queryDto.setStart(startTime); - queryDto.setEnd(new Date()); + queryDto.setStart(startTime4); + queryDto.setEnd(endTime4); List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(queryDto); //判断根据计算类型计算 BigDecimal value = calculate(item.getCalculate(), valueList); //归档 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM"); - String arcTime = dateFormat.format(startTime); + String arcTime = dateFormat.format(startTime4); ArcDataEntity arcDataEntity = new ArcDataEntity(); arcDataEntity.setId(String.valueOf(new Date().getTime())); arcDataEntity.setArcTime(arcTime); @@ -155,6 +169,10 @@ arcDataEntity.setArcValue(value); arcDataEntity.setCode(item.getCode()); arcDataEntity.setCreateTime(new Date()); + arcDataDao.delete(new LambdaQueryWrapperX<ArcDataEntity>() + .eq(ArcDataEntity::getArcId, arcDataEntity.getArcId()) + .eq(ArcDataEntity::getArcTime, arcDataEntity.getArcTime()) + ); insert(arcDataEntity); log.debug("归档完成,point:"+item.getPoint()); }); @@ -162,24 +180,23 @@ case YEAR: //查询对应类型的归档设置列表 List<ArcSettingEntity> arcYearList = arcPointSettingService.list(params); + Date endTime5 = calendar.getTime(); + calendar.add(Calendar.YEAR, -1); + Date startTime5 = calendar.getTime(); //遍历列表 arcYearList.forEach(item -> { log.debug("开始归档,point:"+item.getPoint()); - //获取开始时间 - //Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.YEAR, -1); - Date startTime = calendar.getTime(); //通过point编号查询数据 ApiPointValueQueryDTO queryDto = new ApiPointValueQueryDTO(); queryDto.setPointNo(item.getPoint()); - queryDto.setStart(startTime); - queryDto.setEnd(new Date()); + queryDto.setStart(startTime5); + queryDto.setEnd(endTime5); List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(queryDto); //判断根据计算类型计算 BigDecimal value = calculate(item.getCalculate(), valueList); //归档 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy"); - String arcTime = dateFormat.format(startTime); + String arcTime = dateFormat.format(startTime5); ArcDataEntity arcDataEntity = new ArcDataEntity(); arcDataEntity.setId(String.valueOf(new Date().getTime())); arcDataEntity.setArcTime(arcTime); @@ -187,6 +204,10 @@ arcDataEntity.setArcValue(value); arcDataEntity.setCode(item.getCode()); arcDataEntity.setCreateTime(new Date()); + arcDataDao.delete(new LambdaQueryWrapperX<ArcDataEntity>() + .eq(ArcDataEntity::getArcId, arcDataEntity.getArcId()) + .eq(ArcDataEntity::getArcTime, arcDataEntity.getArcTime()) + ); insert(arcDataEntity); log.debug("归档完成,point:"+item.getPoint()); }); @@ -209,9 +230,7 @@ value = BigDecimal.valueOf(valueList.get(valueList.size() - 1).getV()); break; case SUM: - for (ApiPointValueDTO dto : valueList) { - value = value.add(BigDecimal.valueOf(dto.getV())); - } + value = BigDecimal.valueOf(valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum()); break; case DIFF: if (valueList.size() < 2) { @@ -227,9 +246,7 @@ } break; case AVG: - for (ApiPointValueDTO dto : valueList) { - value = value.add(BigDecimal.valueOf(dto.getV())); - } + value = BigDecimal.valueOf(valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum()); value = value.divide(BigDecimal.valueOf(valueList.size()), 2, BigDecimal.ROUND_HALF_UP); break; default: -- Gitblit v1.9.3