Răsfoiți Sursa

feat(formplugin): 完善代理单编辑功能中的员工证件信息处理

- 引入 BigDecimal 类型支持金额计算
- 新增 SWCHelper.queryPercreDyns 方法查询员工证件信息
- 在代理单编辑过程中获取并设置员工身份证号码字段
- 优化金额设置逻辑,避免空值导致的异常
- 当计算表中不存在对应人员数据时,默认设置金额为零
Tyx 5 zile în urmă
părinte
comite
50f846528b

+ 15 - 0
code/base/nckd-jxccl-base-helper/src/main/java/nckd/jxccl/base/swc/helper/SWCHelper.java

@@ -250,6 +250,21 @@ public class SWCHelper {
         return empposorgreDyns;
     }
 
+    /**
+     * 根据emoloyeeId获取人员证件信息
+     * @param employeeId
+     * @return
+     */
+    public static DynamicObject[] queryPercreDyns (List<Long> employeeId) {
+        QFilter filter = new QFilter("ismajor", QCP.equals, "1"); // 启用
+        filter.and(new QFilter("employee.id", QCP.in, employeeId));
+
+        String selectFields1 = "employee.id,number";
+        DynamicObject[] percreDyns = BusinessDataServiceHelper.load("hsbs_percre", selectFields1, filter.toArray());
+
+        return percreDyns;
+    }
+
     /**
      * 判断集合是否为空
      * @param list

+ 18 - 5
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hcdm/formplugin/agencybill/AgencyBillEdit.java

@@ -23,6 +23,7 @@ import kd.sdk.plugin.Plugin;
 import nckd.jxccl.base.swc.helper.SWCHelper;
 import nckd.jxccl.swc.constants.SwcConstant;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
@@ -117,6 +118,16 @@ public class AgencyBillEdit extends AbstractFormPlugin implements Plugin {
             return key2;
         }));
 
+        // 获取到人员证件信息
+        DynamicObject[] percreDyns = SWCHelper.queryPercreDyns(employeeId);
+        Map<Long, DynamicObject> percreMap = Arrays.stream(percreDyns).collect(Collectors.toMap((dyx) -> {
+            return dyx.getLong("employee.id");
+        }, (dyx) -> {
+            return dyx;
+        }, (key1, key2) -> {
+            return key2;
+        }));
+
         for (Object calPerson : calPersonIds) {
             DynamicObject row = entryCols.addNew();
             Long calPersonId = Long.valueOf(calPerson.toString());
@@ -125,7 +136,13 @@ public class AgencyBillEdit extends AbstractFormPlugin implements Plugin {
             row.set("nckd_adminorg", calPersonMap.get(calPersonId).getDynamicObject("empposorgrelsndet.adminorg"));
             //row.set("nckd_payrollgrp", model.getValue("nckd_payrollgroup"));
             row.set("nckd_belongdate", date);
-            row.set("nckd_amount", calTableMap.get(calPersonId).getBigDecimal("hsas_caltableentry.calamountvalue"));
+            row.set("nckd_idcardno", percreMap.get(row.getLong("nckd_employee.id")).getString("number"));
+            if(calTableMap.keySet().contains(calPersonId)) {
+                row.set("nckd_amount", calTableMap.get(calPersonId).getBigDecimal("hsas_caltableentry.calamountvalue"));
+            }
+            else {
+                row.set("nckd_amount", BigDecimal.ZERO);
+            }
         }
     }
 
@@ -140,10 +157,6 @@ public class AgencyBillEdit extends AbstractFormPlugin implements Plugin {
         return SwcConstant.CALPERSON_HELPER.queryOriginalCollection(selectFields, new QFilter[]{filter});
     }
 
-
-
-
-
     @Override
     public void beforeDoOperation(BeforeDoOperationEventArgs args) {
         super.beforeDoOperation(args);