diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java index 15355e1a..71552f07 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java @@ -37,6 +37,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -615,9 +616,6 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { Long changeId, QualFilingChangeEntity newEntity, AggregationSaveOrEditQualFilingChangeCmd cmd) { QualFilingDO filingDO = qualFilingMapper.selectOne( new LambdaQueryWrapper() - .select(QualFilingDO::getLegalRepresentative, - QualFilingDO::getFulltimeEvaluatorCount, - QualFilingDO::getRegisteredEngineerCount) .eq(QualFilingDO::getId, cmd.getQualFilingChangeAddCmd().getFilingId())); if (filingDO == null) { return Collections.emptyList(); @@ -840,7 +838,7 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { Objects.toString(newEntity.getRegisteredEngineerCount(), ""))); } // 工作场所建筑面积(平方米) - if (!Objects.equals(exist.getWorkplaceArea(), newEntity.getWorkplaceArea())) { + if (!bigDecimalEquals(exist.getWorkplaceArea(), newEntity.getWorkplaceArea())) { details.add(fieldDetail(changeId, QualFilingFormStepEnum.BASIC_INFO, "备案基本信息变更", "工作场所建筑面积(平方米)", Objects.toString(exist.getWorkplaceArea(), ""), @@ -982,7 +980,7 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { private void diffEquipmentField(List details, Long changeId, String prefix, String fieldName, Object before, Object after) { - if (!Objects.equals(before, after)) { + if (!valueEquals(before, after)) { details.add(fieldDetail(changeId, QualFilingFormStepEnum.EQUIPMENT, "装备清单变更", prefix + "-" + fieldName, Objects.toString(before, ""), @@ -1057,6 +1055,23 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { return list == null ? Collections.emptyList() : list; } + /** + * BigDecimal 数值比较(忽略 scale 差异,1.0 与 1.00 视为相等) + */ + private boolean bigDecimalEquals(BigDecimal before, BigDecimal after) { + return before != null && after != null && before.compareTo(after) == 0; + } + + /** + * 通用值比较:BigDecimal 走 compareTo 忽略 scale 差异,其余走 Objects.equals + */ + private boolean valueEquals(Object before, Object after) { + if (before instanceof BigDecimal && after instanceof BigDecimal) { + return bigDecimalEquals((BigDecimal) before, (BigDecimal) after); + } + return Objects.equals(before, after); + } + private QualFilingChangeDetailDO stepDetail(Long changeId, QualFilingFormStepEnum step, String content, String before, String after) { QualFilingChangeDetailDO detail = new QualFilingChangeDetailDO();