fix:更新指标完成状态

This commit is contained in:
2026-01-23 16:09:12 +08:00
parent fce1431c51
commit 8b67dce489
6 changed files with 56 additions and 15 deletions

View File

@@ -1,4 +1,4 @@
package com.sdm.project.common;
package com.sdm.common.entity.enums;
import lombok.Getter;
@@ -6,7 +6,7 @@ import lombok.Getter;
* 指标完成情况状态枚举
*/
@Getter
public enum RunPerformanceStatusEnum {
public enum PerformanceStatusEnum {
UNCOMPLETED("未完成", "0"),
NOT_STARTED("不合格", "1"),
@@ -18,7 +18,7 @@ public enum RunPerformanceStatusEnum {
private final String code;
RunPerformanceStatusEnum(String name, String code) {
PerformanceStatusEnum(String name, String code) {
this.name = name;
this.code = code;
}

View File

@@ -12,12 +12,8 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.config.FlowableConfig;
import com.sdm.common.entity.constants.NumberConstants;
import com.sdm.common.entity.enums.ApproveTypeEnum;
import com.sdm.common.entity.enums.DirTypeEnum;
import com.sdm.common.entity.enums.FileBizTypeEnum;
import com.sdm.common.entity.enums.NodeTypeEnum;
import com.sdm.common.entity.enums.*;
import com.sdm.common.entity.flowable.dto.FlowElementDTO;
import com.sdm.common.entity.flowable.dto.ProcessDefinitionDTO;
import com.sdm.common.entity.req.capability.FlowNodeDto;
@@ -60,7 +56,6 @@ import com.sdm.project.model.resp.KeyResultAndTaskInfoResp;
import com.sdm.project.model.resp.RunVersionInfoResp;
import com.sdm.project.model.vo.SpdmNodeVo;
import com.sdm.common.entity.resp.project.SpdmTaskVo;
import com.sdm.project.model.vo.SpdmTaskMemberVo;
import com.sdm.project.service.*;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
@@ -84,7 +79,6 @@ import java.nio.file.StandardCopyOption;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.UnaryOperator;
import java.util.stream.Collectors;
import static com.sdm.common.service.BaseService.generateUuid;
@@ -629,7 +623,7 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
runPerformance.setId(null);
runPerformance.setRunId(simulationRun.getUuid());
runPerformance.setUuid(RandomUtil.generateString(32));
runPerformance.setCompleteStatus(RunPerformanceStatusEnum.UNCOMPLETED.getCode());
runPerformance.setCompleteStatus(PerformanceStatusEnum.UNCOMPLETED.getCode());
runPerformance.setCreator(userId);
runPerformance.setCreateTime(null);
runPerformanceList.add(runPerformance);

View File

@@ -43,7 +43,7 @@ import com.sdm.common.utils.SystemOperate;
import com.sdm.common.utils.excel.ExcelUtil;
import com.sdm.project.bo.ExportOperate;
import com.sdm.project.common.MemberTypeEnum;
import com.sdm.project.common.RunPerformanceStatusEnum;
import com.sdm.common.entity.enums.PerformanceStatusEnum;
import com.sdm.project.common.TaskExeStatusEnum;
import com.sdm.project.dao.SimulationDemandMapper;
import com.sdm.project.dao.SimulationNodeMapper;
@@ -2075,7 +2075,7 @@ public class TaskServiceImpl implements ITaskService {
CommonGetCompleteFromPerformanceVo commonGetCompleteFromPerformanceVo = new CommonGetCompleteFromPerformanceVo();
commonGetCompleteFromPerformanceVo.setNodeName(eachTaskVo.getDiscipline());
commonGetCompleteFromPerformanceVo.setCompleteStatus(StringUtils.isNotBlank(performanceNodePo.getCompleteStatus()) ?
performanceNodePo.getCompleteStatus() : RunPerformanceStatusEnum.UNCOMPLETED.getCode());
performanceNodePo.getCompleteStatus() : PerformanceStatusEnum.UNCOMPLETED.getCode());
commonCompleteStatisticsFromPerformance.add(commonGetCompleteFromPerformanceVo);
}
// 按tag分组统计指标状态
@@ -2154,7 +2154,7 @@ public class TaskServiceImpl implements ITaskService {
commonGetCompleteFromPerformanceVo.setTag(resultTagId);
commonGetCompleteFromPerformanceVo.setNodeName(nodeMap.get(resultTagIdArr[resultTagIdArr.length - 1]));
commonGetCompleteFromPerformanceVo.setCompleteStatus(StringUtils.isNotBlank(performanceNodePo.getCompleteStatus()) ?
performanceNodePo.getCompleteStatus() : RunPerformanceStatusEnum.UNCOMPLETED.getCode());
performanceNodePo.getCompleteStatus() : PerformanceStatusEnum.UNCOMPLETED.getCode());
commonCompleteStatisticsFromPerformance.add(commonGetCompleteFromPerformanceVo);
}
// 按tag分组统计指标状态

View File

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -66,6 +67,9 @@ public class TaskPerformanceDto {
@Schema(description = "标准")
private String standard;
@Schema(description = "计算及结果值")
private String resultValue;
@Schema(description = "租户ID")
private String tenantId;

View File

@@ -80,7 +80,7 @@ public class SimulationPerformance implements Serializable {
@TableField("method")
private String method;
@ApiModelProperty(value = "指标完成情况 未完成 不合格 风险可控 未分析 合格")
@ApiModelProperty(value = "指标完成情况 未完成 不合格 风险可控 未分析 合格 ")
@TableField("completeStatus")
private String completeStatus;

View File

@@ -4,12 +4,14 @@ import com.alibaba.fastjson2.JSONArray;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.entity.ExportExcelFormat;
import com.sdm.common.entity.enums.ApprovalFileDataStatusEnum;
import com.sdm.common.entity.enums.PerformanceStatusEnum;
import com.sdm.common.entity.req.data.KnowledgeExportExcelParam;
import com.sdm.common.entity.req.performance.PerformanceExportExcelFormat;
import com.sdm.common.entity.req.performance.PerformanceExportExcelParam;
import com.sdm.common.entity.resp.PageDataResp;
import com.sdm.common.entity.resp.task.PerformanceResp;
import com.sdm.common.service.BaseService;
import com.sdm.common.utils.CommonUtils;
import com.sdm.common.utils.RandomUtil;
import com.sdm.common.utils.excel.ExcelUtil;
import com.sdm.task.model.dto.TaskPerformanceDto;
@@ -31,7 +33,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
@@ -131,9 +135,48 @@ public class SimulationPerformanceServiceImpl extends ServiceImpl<SimulationPerf
public SdmResponse editPerformance(TaskPerformanceDto performanceDto) {
SimulationPerformance simulationPerformance = new SimulationPerformance();
BeanUtils.copyProperties(performanceDto, simulationPerformance);
// 目标值
String targetValueStr = simulationPerformance.getTargetValue();
// 分析值
String resultValueStr = simulationPerformance.getResultValue();
// 达标方式
String method = simulationPerformance.getMethod();
// 校验
if (StringUtils.isNotBlank(targetValueStr) && StringUtils.isNotBlank(resultValueStr)) {
if (!validateNumber(targetValueStr) || !validateNumber(resultValueStr)) {
return SdmResponse.failed("请输入有效的目标值和分析值");
}
try {
// 转换为BigDecimal自动处理整数和小数
BigDecimal targetValue = new BigDecimal(targetValueStr);
BigDecimal resultValue = new BigDecimal(resultValueStr);
int comparison = resultValue.compareTo(targetValue);
boolean isPassed = switch (method) {
case "" -> comparison >= 0;
case ">" -> comparison > 0;
case "<" -> comparison < 0;
case "" -> comparison <= 0;
default -> throw new IllegalArgumentException("无效运算符: " + method);
};
simulationPerformance.setCompleteStatus(isPassed ? PerformanceStatusEnum.STARTED.getCode() : PerformanceStatusEnum.NOT_STARTED.getCode());
} catch (Exception e) {
log.error("数字格式异常:", e);
return SdmResponse.failed("请输入有效的目标值和分析值");
}
}
return SdmResponse.success(this.updateById(simulationPerformance));
}
private boolean validateNumber(String input) {
String trimmed = input.trim();
// 前置格式检查 - 验证是不是有效数字格式
if (!CommonUtils.isValidNumberFormat(trimmed)) {
return false;
}
return true;
}
@Override
public SdmResponse exportPerformance(PerformanceExportExcelFormat performanceExportExcelFormat, HttpServletResponse httpServletResponse) {
SdmResponse response = new SdmResponse();