diff --git a/datavines-common/src/main/java/io/datavines/common/ConfigConstants.java b/datavines-common/src/main/java/io/datavines/common/ConfigConstants.java index 0cab6b968..c22f719b5 100644 --- a/datavines-common/src/main/java/io/datavines/common/ConfigConstants.java +++ b/datavines-common/src/main/java/io/datavines/common/ConfigConstants.java @@ -75,8 +75,8 @@ public class ConfigConstants { public static final String VALIDATE_RESULT_DATA_DIR = "validate_result_data_dir"; public static final String INVALIDATE_ITEM_CAN_OUTPUT = "invalidate_item_can_output"; public static final String ERROR_DATA_OUTPUT_TO_DATASOURCE_DATABASE = "error_data_output_to_datasource_database"; + public static final String DATASOURCE = "datasource"; public static final String DATABASE = "database"; - public static final String DATABASE_NAME = "database_name"; public static final String TABLE_NAME = "table_name"; public static final String COLUMN_NAME = "column_name"; diff --git a/datavines-metric/datavines-metric-result-formula-plugins/datavines-metric-result-formula-diff-percentage/src/main/java/io/datavines/metric/result/formula/DiffPercentage.java b/datavines-metric/datavines-metric-result-formula-plugins/datavines-metric-result-formula-diff-percentage/src/main/java/io/datavines/metric/result/formula/DiffPercentage.java index d1d2b66de..55b97be69 100644 --- a/datavines-metric/datavines-metric-result-formula-plugins/datavines-metric-result-formula-diff-percentage/src/main/java/io/datavines/metric/result/formula/DiffPercentage.java +++ b/datavines-metric/datavines-metric-result-formula-plugins/datavines-metric-result-formula-diff-percentage/src/main/java/io/datavines/metric/result/formula/DiffPercentage.java @@ -40,7 +40,7 @@ public BigDecimal getResult(BigDecimal actualValue, BigDecimal expectedValue) { BigDecimal result = BigDecimal.valueOf(0); if (expectedValue != null && expectedValue.compareTo(BigDecimal.ZERO) != 0 && actualValue != null) { BigDecimal quotient = actualValue.subtract(expectedValue).abs(); - result = quotient.divide(expectedValue, 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); + result = quotient.divide(expectedValue, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); } return result; diff --git a/datavines-metric/datavines-metric-result-formula-plugins/datavines-metric-result-formula-percentage/src/main/java/io/datavines/metric/result/formula/Percentage.java b/datavines-metric/datavines-metric-result-formula-plugins/datavines-metric-result-formula-percentage/src/main/java/io/datavines/metric/result/formula/Percentage.java index 85cc102f5..80451c18c 100644 --- a/datavines-metric/datavines-metric-result-formula-plugins/datavines-metric-result-formula-percentage/src/main/java/io/datavines/metric/result/formula/Percentage.java +++ b/datavines-metric/datavines-metric-result-formula-plugins/datavines-metric-result-formula-percentage/src/main/java/io/datavines/metric/result/formula/Percentage.java @@ -50,9 +50,9 @@ public BigDecimal getScore(BigDecimal actualValue, BigDecimal expectedValue, boo BigDecimal result = BigDecimal.valueOf(0); if (expectedValue != null && expectedValue.compareTo(BigDecimal.ZERO) != 0) { if (MetricDirectionType.NEGATIVE == direction) { - result = new BigDecimal(100).subtract(actualValue.divide(expectedValue, 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100))); + result = new BigDecimal(100).subtract(actualValue.divide(expectedValue, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100))); } else if (MetricDirectionType.POSITIVE == direction) { - result = actualValue.divide(expectedValue, 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); + result = actualValue.divide(expectedValue, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); } } @@ -74,4 +74,5 @@ public String getSymbol() { public ResultFormulaType getType() { return ResultFormulaType.PERCENTAGE; } + } diff --git a/datavines-server/src/main/java/io/datavines/server/repository/service/impl/JobQualityReportServiceImpl.java b/datavines-server/src/main/java/io/datavines/server/repository/service/impl/JobQualityReportServiceImpl.java index 824e67ec2..1ea898ebb 100644 --- a/datavines-server/src/main/java/io/datavines/server/repository/service/impl/JobQualityReportServiceImpl.java +++ b/datavines-server/src/main/java/io/datavines/server/repository/service/impl/JobQualityReportServiceImpl.java @@ -17,15 +17,12 @@ package io.datavines.server.repository.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import io.datavines.common.entity.job.BaseJobParameter; import io.datavines.common.enums.OperatorType; import io.datavines.common.exception.DataVinesException; import io.datavines.common.utils.DateUtils; -import io.datavines.common.utils.JSONUtils; import io.datavines.common.utils.ParameterUtils; import io.datavines.common.utils.StringUtils; import io.datavines.core.utils.LanguageUtils; @@ -46,6 +43,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.math.RoundingMode; @@ -74,6 +72,7 @@ public class JobQualityReportServiceImpl extends ServiceImpl().eq("quality_report_id",qualityReportId)); + jobExecutionResultReportRelService.remove(new LambdaQueryWrapper() + .eq(JobExecutionResultReportRel::getQualityReportId,qualityReportId)); jobExecutionResultReportRelService.saveBatch(relList); } } } // 删除datasource_id 下所有表级别的评分 - jobQualityReportMapper.delete(new QueryWrapper().eq("entity_level","table").eq("datasource_id",datasourceId)); + jobQualityReportMapper.delete(new LambdaQueryWrapper() + .eq(JobQualityReport::getEntityLevel, TABLE) + .eq(JobQualityReport::getDatasourceId, datasourceId) + .eq(JobQualityReport::getReportDate, yesterday)); // 根据datasource_id,database_name,table_name 进行group by,计算得到表的分数 List tableScoreList = jobQualityReportMapper.listTableScoreGroupByDatasource(datasourceId, yesterday); if (CollectionUtils.isNotEmpty(tableScoreList)) { saveBatch(tableScoreList); } - jobQualityReportMapper.delete(new QueryWrapper().eq("entity_level","database").eq("datasource_id",datasourceId)); + jobQualityReportMapper.delete(new LambdaQueryWrapper() + .eq(JobQualityReport::getEntityLevel, DATABASE) + .eq(JobQualityReport::getDatasourceId, datasourceId) + .eq(JobQualityReport::getReportDate, yesterday)); // 根据datasource_id,database_name 进行 group by,计算得到数据库的分数 List databaseScoreList = jobQualityReportMapper.listDbScoreGroupByDatasource(datasourceId, yesterday); if (CollectionUtils.isNotEmpty(databaseScoreList)) { saveBatch(databaseScoreList); } - jobQualityReportMapper.delete(new QueryWrapper().eq("entity_level","datasource").eq("datasource_id", datasourceId)); + jobQualityReportMapper.delete(new LambdaQueryWrapper() + .eq(JobQualityReport::getEntityLevel, DATASOURCE) + .eq(JobQualityReport::getDatasourceId, datasourceId) + .eq(JobQualityReport::getReportDate, yesterday));; + // 根据datasource_id,database_name 进行 group by,计算得到数据库的分数 List datasourceScoreList = jobQualityReportMapper.listDatasourceScoreGroupByDatasource(datasourceId, yesterday); if (CollectionUtils.isNotEmpty(datasourceScoreList)) { @@ -259,16 +269,16 @@ public JobQualityReportScoreTrend getScoreTrendByCondition(JobQualityReportDashb JobQualityReportScoreTrend scoreTrend = new JobQualityReportScoreTrend(); String startDateStr = ""; String endDateStr = ""; - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(YYYY_MM_DD); if (StringUtils.isEmpty(dashboardParam.getReportDate())) { - startDateStr = DateUtils.format(DateUtils.addDays(new Date(), -7),"yyyy-MM-dd"); - endDateStr = DateUtils.format(DateUtils.addDays(new Date(), -1),"yyyy-MM-dd"); + startDateStr = DateUtils.format(DateUtils.addDays(new Date(), -7),YYYY_MM_DD); + endDateStr = DateUtils.format(DateUtils.addDays(new Date(), -1),YYYY_MM_DD); } else { endDateStr = dashboardParam.getReportDate(); LocalDate endDate = LocalDate.parse(endDateStr, formatter); ZonedDateTime zonedDateTime = endDate.atStartOfDay(ZoneId.systemDefault()); Date date = Date.from(zonedDateTime.toInstant()); - startDateStr = DateUtils.format(DateUtils.addDays(date,-6),"yyyy-MM-dd"); + startDateStr = DateUtils.format(DateUtils.addDays(date,-6),YYYY_MM_DD); } LocalDate startDate = LocalDate.parse(startDateStr, formatter); @@ -278,7 +288,7 @@ public JobQualityReportScoreTrend getScoreTrendByCondition(JobQualityReportDashb LocalDate currentDate = startDate; while (!currentDate.isAfter(endDate)) { - dateList.add(currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + dateList.add(currentDate.format(DateTimeFormatter.ofPattern(YYYY_MM_DD))); currentDate = currentDate.plusDays(1); } @@ -342,9 +352,9 @@ public IPage getQualityReportPage(JobQualityReportDashboardP } if (StringUtils.isNotEmpty(dashboardParam.getTableName())) { - queryWrapper.eq(JobQualityReport::getEntityLevel, "column"); + queryWrapper.eq(JobQualityReport::getEntityLevel, COLUMN); } else { - queryWrapper.eq(JobQualityReport::getEntityLevel, "table"); + queryWrapper.eq(JobQualityReport::getEntityLevel, TABLE); } return page(page, queryWrapper).convert(jobQualityReport -> {