Browse Source

fix(income-proof): 修复收入证明单据处理中的空指针和零除异常

- 添加了金额和月数的零值检查,避免在dealIncomeInfo调用时出现零除异常
- 修改了revenuefield字段的获取方式,通过DynamicObject对象安全获取number属性
- 临时注释了日期筛选条件,解决查询条件限制过严的问题
- 在金额计算时添加了setScale精度处理,确保数值计算准确性
turborao 3 days ago
parent
commit
747079df22

+ 14 - 10
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hcss/formplugin/IncomeProofBillExPlugin.java

@@ -84,7 +84,9 @@ public class IncomeProofBillExPlugin extends AbstractHcssBaseFormPlugin {
                 BigDecimal monthCount = salaryDetailObj.getBigDecimal("monthCount");
                 BigDecimal monthlyAmount = amount.divide(monthCount, 2, BigDecimal.ROUND_HALF_UP);
                 //赋值
-                dealIncomeInfo(amount, monthlyAmount);
+                if(amount.compareTo(BigDecimal.ZERO) > 0 && monthCount.compareTo(BigDecimal.ZERO) > 0) {
+                    dealIncomeInfo(amount.setScale(2), monthlyAmount);
+                }
             }
         }
     }
@@ -106,16 +108,18 @@ public class IncomeProofBillExPlugin extends AbstractHcssBaseFormPlugin {
         List<String> customItems = getCustomItems();
         IDataModel model = this.getModel();
         int rowCount = model.getEntryRowCount("entryentity");
-        String regex = "[^0-9.]";
         for(int i = 0; i < rowCount; i++) {
-            String revenueFieldNum = model.getValue("frevenuefieldid.number", i).toString();
-            if(revenueFieldNum.equals(customItems.get(0))){
-                model.setValue("calvalue", amount.toString(), i);
-                model.setValue("checkvalue", amount.toString(), i);
-            }
-            if(revenueFieldNum.equals(customItems.get(1))){
-                model.setValue("calvalue", monthlyAmount.toString(), i);
-                model.setValue("checkvalue", monthlyAmount.toString(), i);
+            if(model.getValue("revenuefield", i) != null){
+                DynamicObject revenuefieldDyn = (DynamicObject)model.getValue("revenuefield", i);
+                String revenueFieldNum = revenuefieldDyn.getString("number");
+                if(revenueFieldNum.equals(customItems.get(0))){
+                    model.setValue("calvalue", amount.toString(), i);
+                    model.setValue("checkvalue", amount.toString(), i);
+                }
+                if(revenueFieldNum.equals(customItems.get(1))){
+                    model.setValue("calvalue", monthlyAmount.toString(), i);
+                    model.setValue("checkvalue", monthlyAmount.toString(), i);
+                }
             }
         }
     }

+ 1 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/utils/SwcUtils.java

@@ -131,6 +131,7 @@ public class SwcUtils {
                 "where 1 = 1 and b1.ftaskstatus in ('4','7','8','9')  ---计算完成 9--已审核 7--审批处理中 8--审批通过 4 \n" +
                 "  and h.fnumber in ("+salaryitem+") \n");
         sb.append("and b1.fpaydate >= '"+startDateStr+"' \n");
+        //sb.append("and b1.fpaydate >= '2025-01-01 00:00:00' \n");
         sb.append("and b1.fpaydate <= '"+endDateStr+"' \n");
         sb.append("and c.femployeeid in ("+empId+") \n");
         //sb.append("and c.femployeeid in (2311775636290546688) \n");