Quellcode durchsuchen

fix(datacomparison): 修复数据比对时空值处理问题

- 在进行单位和个人缴费金额比较前,将空值替换为零
- 避免因空指针导致的比对异常
- 确保比对逻辑在存在空值时仍能正确执行
- 优化比对结果准确性
Tyx vor 6 Tagen
Ursprung
Commit
8452f430d4

+ 3 - 1
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/business/datacomparison/DataComparisonQueryService.java

@@ -3,6 +3,8 @@ package nckd.jxccl.sit.hcsi.business.datacomparison;
 
 import kd.bos.algo.DataSet;
 import kd.bos.algo.JoinDataSet;
+import kd.bos.algo.JoinHint;
+import kd.bos.algo.JoinType;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.entity.datamodel.IDataModel;
@@ -142,7 +144,7 @@ public class DataComparisonQueryService {
     }
 
     public DataSet joinFinallyDataSet (DataSet groupDataSet, DataSet groupDataSetOut) {
-        DataSet finalDataSet = groupDataSet.join(groupDataSetOut).on("welfarepayer", "welfarepayer").on("welfaretypeid", "welfaretypeid").
+        DataSet finalDataSet = groupDataSet.join(groupDataSetOut, JoinType.LEFT).on("welfarepayer", "welfarepayer").on("welfaretypeid", "welfaretypeid").
                 on("empname", "empname").
                 on("empidcard", "empidcard").select(leftFields, rightFields).finish();
         return finalDataSet;

+ 4 - 4
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/datacomparison/DetailCompareBillEdit.java

@@ -264,10 +264,10 @@ public class DetailCompareBillEdit extends AbstractFormPlugin {
                 setter.set(columnKey, rowData.get(columnKey), rowIndex);
             }
             // 比对,单位/个人缴费金额系统内<>单位/个人缴费金额系统外的话,比对结果=不一致
-            BigDecimal value1 = rowData.getBigDecimal("companysysvalue");
-            BigDecimal value2 = rowData.getBigDecimal("companyoutvalue");
-            BigDecimal value3 = rowData.getBigDecimal("personsysvalue");
-            BigDecimal value4 = rowData.getBigDecimal("personoutvalue");
+            BigDecimal value1 = rowData.getBigDecimal("companysysvalue") == null ? BigDecimal.ZERO : rowData.getBigDecimal("companysysvalue");
+            BigDecimal value2 = rowData.getBigDecimal("companyoutvalue") == null ? BigDecimal.ZERO : rowData.getBigDecimal("companyoutvalue");
+            BigDecimal value3 = rowData.getBigDecimal("personsysvalue") == null ? BigDecimal.ZERO : rowData.getBigDecimal("personsysvalue");
+            BigDecimal value4 = rowData.getBigDecimal("personoutvalue") == null ? BigDecimal.ZERO : rowData.getBigDecimal("personoutvalue");
 
             if(value1.compareTo(value2) != 0 || value3.compareTo(value4) != 0) {
                 setter.set("compareresult", "C", rowIndex);