Kaynağa Gözat

fix(hr):修复年度调整服务中的空指针异常

- 使用Optional处理topRankPercent可能为空的情况
- 使用Optional处理allowanceRankPercent可能为空的情况
- 避免直接调用toString方法导致的潜在空指针异常- 设置默认值BigDecimal.ZERO以防数值为空
- 提高代码健壮性和可读性
wyc 1 gün önce
ebeveyn
işleme
48396232ae

+ 8 - 2
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/psms/business/AnnualAdjustmentService.java

@@ -863,10 +863,16 @@ public class AnnualAdjustmentService {
         if(ac.data.getRankingResultInfo() != null) {
             newPersonPosFile.set(PositionStructureConstant.NCKD_TOPRANK, ac.data.getRankingResultInfo().topRank);
             newPersonPosFile.set(PositionStructureConstant.NCKD_ALLOWANCERANK, ac.data.getRankingResultInfo().allowanceRank);
-            newPersonPosFile.set(PositionStructureConstant.NCKD_TOPRANKPERCENT,  new BigDecimal(ac.data.getRankingResultInfo().topRankPercent.toString()));
+            BigDecimal topRankPercent = Optional.ofNullable(ac.data.getRankingResultInfo().topRankPercent)
+                    .map(BigDecimal::new)
+                    .orElse(BigDecimal.ZERO);
+            newPersonPosFile.set(PositionStructureConstant.NCKD_TOPRANKPERCENT,  topRankPercent);
             newPersonPosFile.set(PositionStructureConstant.NCKD_ALLOWANCERANKMARK, ac.data.getRankingResultInfo().allowanceRankMark);
             newPersonPosFile.set(PositionStructureConstant.NCKD_ALLOWANCERANKSEL, ac.data.getRankingResultInfo().allowanceRankSel);
-            newPersonPosFile.set(PositionStructureConstant.NCKD_ALLOWANCERANKPCT, new BigDecimal(ac.data.getRankingResultInfo().allowanceRankPercent.toString()));
+            BigDecimal allowanceRankPercent = Optional.ofNullable(ac.data.getRankingResultInfo().allowanceRankPercent)
+                    .map(BigDecimal::new)
+                    .orElse(BigDecimal.ZERO);
+            newPersonPosFile.set(PositionStructureConstant.NCKD_ALLOWANCERANKPCT, allowanceRankPercent);
         }
         //上年度考核结果
         newPersonPosFile.set(PositionStructureConstant.NCKD_APPRAISALRESULT, ac.data.getAppraisalResult());