浏览代码

feat(swc): 实现员工薪资查询移动端数据处理

- 新增 EmpSalaryQueryMobDataHandler 类处理移动端表格数据
- 优化 EmpSalaryQueryMobFormPlugin 插件逻辑,增强员工信息获取与校验
- 添加 queryCalPersonList 方法支持批量查询员工核算信息
- 完善薪资金额格式化显示功能
- 修复数据更新视图逻辑,提升用户体验
- 移除冗余代码,提高代码可维护性
turborao 6 天之前
父节点
当前提交
3e7fe6e9d4

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

@@ -1,14 +1,19 @@
 package nckd.jxccl.base.swc.helper;
 
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.logging.Log;
 import kd.bos.logging.LogFactory;
+
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.QueryServiceHelper;
 
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 /**
  * 描述: 封装SWC常用方法
  * @author turborao
@@ -75,6 +80,31 @@ public class SWCHelper {
         }
     }
 
+    /**
+     * 批量查询数据 按员工ID
+     * @param employeeId
+     * @return
+     */
+    public static List<Long> queryCalPersonList(Long employeeId) {
+
+        String entityName = "hsas_calperson";
+        QFilter filter = new QFilter("employee.id", QCP.equals, employeeId);
+        DynamicObjectCollection dyns = QueryServiceHelper.query(entityName, "id,name", new QFilter[]{filter});
+
+        Map<Long, DynamicObject> dynsMap = (Map)dyns.stream().collect(Collectors.toMap((obj) -> {
+            return obj.getLong("id");
+        }, (obj) -> {
+            return obj;
+        }, (k1, k2) -> {
+            return k1;
+        }));
+
+        //将Map转换为List
+        List<Long> personIDs = dynsMap.keySet().stream().collect(Collectors.toList());
+
+        return personIDs;
+    }
+
     /**
      * 判断集合是否为空
      * @param list

+ 43 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/plugin/form/EmpSalaryQueryMobDataHandler.java

@@ -0,0 +1,43 @@
+package nckd.jxccl.swc.init.plugin.form;
+
+import kd.bos.form.mcontrol.mobtable.MobTablePackageDataHandler;
+import kd.bos.form.mcontrol.mobtable.MobTableRowBuilder;
+import kd.bos.form.mcontrol.mobtable.MobTableRowData;
+import kd.bos.form.mcontrol.mobtable.events.MobTableHandleResult;
+import kd.bos.form.mcontrol.mobtable.events.MobTablePackageDataHandlerArgs;
+import kd.bos.form.mcontrol.mobtable.tablecolumn.MobTableColumn;
+import java.math.BigDecimal;
+import java.util.*;
+
+public class EmpSalaryQueryMobDataHandler extends MobTablePackageDataHandler {
+    @Override
+    public MobTableHandleResult handleData(MobTablePackageDataHandlerArgs args) {
+        List<MobTableColumn> mobTableColumns = args.getMobTableColumns();
+        MobTableHandleResult mobTableHandleResult = new MobTableHandleResult();
+        List<MobTableRowData> mobTableRowDataList = new ArrayList<>();
+        Map<String, BigDecimal> calItemAmtMap = args.getCustomParam("calItemAmt");
+        Map<String, String> itemNameMap = args.getCustomParam("itemName");
+
+        if(calItemAmtMap != null && calItemAmtMap.size() > 0 && itemNameMap != null && calItemAmtMap.size() > 0) {
+            int index = 0;
+            for (Map.Entry<String, BigDecimal> entry : calItemAmtMap.entrySet()) {
+                String key = entry.getKey();
+                BigDecimal value = entry.getValue();
+
+                // 处理 key 和 value
+                MobTableRowData mobTableRowData = MobTableRowBuilder.buildTemplateRowData(index, mobTableColumns);
+                mobTableRowData.setValue("nckd_item", itemNameMap.get(key));
+                mobTableRowData.setValue("nckd_amt", calItemAmtMap.get(key));
+                mobTableRowDataList.add(mobTableRowData);
+                index++;
+                System.out.println("Key: " + key + "name:, " + itemNameMap.get(key) + "Value: " + value);
+            }
+
+            mobTableHandleResult.setMobTableRowDataList(mobTableRowDataList);
+            // 额外格式化信息如日期、金额,支持重写
+            mobTableHandleResult.setFmtInfo(getFmtInfo(args));
+        }
+        return mobTableHandleResult;
+    }
+
+}

+ 42 - 56
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/plugin/form/EmpSalaryQueryMobFormPlugin.java

@@ -5,26 +5,20 @@ import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.entity.datamodel.events.BizDataEventArgs;
 import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 import kd.bos.form.control.Label;
-import kd.bos.form.field.DateRangeEdit;
 import kd.bos.form.mcontrol.mobtable.MobTable;
-import kd.bos.form.mcontrol.mobtable.MobTablePackageDataHandler;
-import kd.bos.form.mcontrol.mobtable.MobTableRowBuilder;
-import kd.bos.form.mcontrol.mobtable.MobTableRowData;
 import kd.bos.form.mcontrol.mobtable.events.IMobTablePackageDataHandlerListener;
-import kd.bos.form.mcontrol.mobtable.events.MobTableHandleResult;
-import kd.bos.form.mcontrol.mobtable.events.MobTablePackageDataHandlerArgs;
 import kd.bos.form.mcontrol.mobtable.events.MobTablePackageDataHandlerEvent;
-import kd.bos.form.mcontrol.mobtable.tablecolumn.MobTableColumn;
 import kd.bos.form.plugin.AbstractMobFormPlugin;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.user.UserServiceHelper;
 import kd.sdk.plugin.Plugin;
-import nckd.jxccl.base.swc.helper.SWCHelper;
 import nckd.jxccl.swc.constants.SwcConstant;
+import nckd.jxccl.base.swc.helper.SWCHelper;
+
 
 import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
+import java.text.DecimalFormat;
 import java.util.*;
 
 /**
@@ -42,6 +36,7 @@ public class EmpSalaryQueryMobFormPlugin extends AbstractMobFormPlugin implement
     private static String KEY_CTL_ENDDATE = "endmonth";
     private static String KEY_META_PERUSER = "hrpi_personuserrel";
     private static Long KEY_EMPID = 0L;
+    private static Long KEY_USERID = 0L;
     private static Date KEY_STARTDATE = new Date();
     private static Date KEY_ENDDATE = new Date();
     private static String KEY_TYPE = "10";
@@ -73,7 +68,7 @@ public class EmpSalaryQueryMobFormPlugin extends AbstractMobFormPlugin implement
     @Override
     public void createNewData(BizDataEventArgs e) {
         super.createNewData(e);
-        showData();
+
     }
 
     @Override
@@ -86,12 +81,20 @@ public class EmpSalaryQueryMobFormPlugin extends AbstractMobFormPlugin implement
         Long userId = UserServiceHelper.getCurrentUserId();
         this.getModel().setValue("nckd_user", userId);
 
-        DynamicObject personUserDyns = SWCHelper.queryOne(KEY_META_PERUSER, "employee.id","user",userId);
-
-        if(personUserDyns == null){
-            return;
+        DynamicObject personUserDyn = SWCHelper.queryOne(KEY_META_PERUSER, "employee.id","user",userId);
+
+        if(personUserDyn == null){
+            /**
+             * 没有员工信息时,返回常量,用于测试
+             */
+            KEY_EMPID = 2313784485549715456L;
+           // this.getView().showMessage("未找到员工!");
+           // return;
+        }else {
+            KEY_EMPID = personUserDyn.getLong("employee.id");
         }
-        KEY_EMPID = personUserDyns.getLong("employee.id");
+
+        showData();
     }
 
     @Override
@@ -103,19 +106,21 @@ public class EmpSalaryQueryMobFormPlugin extends AbstractMobFormPlugin implement
     public void propertyChanged(PropertyChangedArgs e) {
         super.propertyChanged(e);
         String fieldKey = e.getProperty().getName();
-        if (fieldKey.equals("nckd_daterangefield")){
+        if (fieldKey.equals(KEY_CTL_STARTDATE) || fieldKey.equals(KEY_CTL_ENDDATE)){
             // TODO 在此添加业务逻辑
             KEY_STARTDATE = (Date)this.getModel().getValue(KEY_CTL_STARTDATE);
             KEY_ENDDATE = (Date)this.getModel().getValue(KEY_CTL_ENDDATE);
             showData();
-            this.getView().updateView("nckd_mob_empsalary") ;
+            //this.getView().updateView("nckd_mob_empsalary") ;
+            this.getView().updateView();
         }
         if (fieldKey.equals("nckd_type")){
             // TODO 在此添加业务逻辑
 
             KEY_TYPE = (String)this.getModel().getValue("nckd_type");
             showData();
-            this.getView().updateView("nckd_mob_empsalary") ;
+            //this.getView().updateView("nckd_mob_empsalary") ;
+            this.getView().updateView();
 
         }
     }
@@ -130,9 +135,21 @@ public class EmpSalaryQueryMobFormPlugin extends AbstractMobFormPlugin implement
         Date startdate = KEY_STARTDATE;
         Date enddate = KEY_ENDDATE;
         String type = KEY_TYPE;
-        //SimpleDateFormat df = new SimpleDateFormat("yyyy-MM");
+
+        if(KEY_EMPID == 0L) {
+            this.getView().showMessage("未找到员工!");
+            return;
+        }
+
+        List<Long> calPersonIds = SWCHelper.queryCalPersonList(KEY_EMPID);
+        if(calPersonIds == null && calPersonIds.size() == 0) {
+            this.getView().showMessage("未找到员工!");
+            return;
+        }
+
+
         // 获取核算列表信息
-        QFilter filter = new QFilter("calpersonid", QCP.equals, 2334901966875941888L);
+        QFilter filter = new QFilter("calpersonid", QCP.in, calPersonIds);
         if(type.equals("10")){
             filter.and("caltask.paydate", QCP.large_equals, startdate);
             filter.and("caltask.paydate", QCP.less_equals, enddate);
@@ -140,11 +157,12 @@ public class EmpSalaryQueryMobFormPlugin extends AbstractMobFormPlugin implement
             filter.and("caltask.payrolldate", QCP.large_equals, startdate);
             filter.and("caltask.payrolldate", QCP.less_equals, enddate);
         }
+        //filter.and("caltask.taskstatuse", QCP.equals, "7");   ///任务状态  已审核
         filter.and("hsas_caltableentry.calamountvalue", QCP.large_than, 0);
         String selectFields = "calpersonid,hsas_caltableentry.salaryitem.number,hsas_caltableentry.salaryitem.name,hsas_caltableentry.calamountvalue";
         DynamicObjectCollection calTableDyns = SwcConstant.CALTABLE_ENTITY.queryOriginalCollection(selectFields, new QFilter[]{filter});
 
-        DynamicObject empDyn = SWCHelper.queryOne("hsas_calperson", 2334901966875941888L);
+        DynamicObject empDyn = SWCHelper.queryOne("hsas_calperson", calPersonIds.get(0));
 
         Label label = this.getView().getControl(KEY_LAB_EMP_NAME);
         label.setText(empDyn.getString("name"));
@@ -153,18 +171,19 @@ public class EmpSalaryQueryMobFormPlugin extends AbstractMobFormPlugin implement
         Map<String, String> itemNameMap = getItemName(calTableDyns);
 
         if(calItemAmtMap != null && calItemAmtMap.size() > 0 && itemNameMap != null && calItemAmtMap.size() > 0){
+            DecimalFormat df = new DecimalFormat("#,##0.00");
             Label label1 = this.getView().getControl(KEY_LAB_REALAMT);
             if(calItemAmtMap.get("JT_477") == null){
                 label1.setText("0.00");
             }else {
-                label1.setText(calItemAmtMap.get("JT_477").toString());    //实发合计
+                label1.setText(df.format(calItemAmtMap.get("JT_477")));    //实发合计
             }
 
             Label label2 = this.getView().getControl(KEY_LAB_GROSSAMT);
             if(calItemAmtMap.get("JT_283") == null){
                 label2.setText("0.00");
             }else {
-                label2.setText(calItemAmtMap.get("JT_283").toString());
+                label2.setText(df.format(calItemAmtMap.get("JT_283")));
             }
 
             MobTable mobTable = getControl("nckd_mobtable");
@@ -230,36 +249,3 @@ public class EmpSalaryQueryMobFormPlugin extends AbstractMobFormPlugin implement
 
 }
 
-
-class EmpSalaryQueryMobDataHandler extends MobTablePackageDataHandler {
-    @Override
-    public MobTableHandleResult handleData(MobTablePackageDataHandlerArgs args) {
-        List<MobTableColumn> mobTableColumns = args.getMobTableColumns();
-        MobTableHandleResult mobTableHandleResult = new MobTableHandleResult();
-        List<MobTableRowData> mobTableRowDataList = new ArrayList<>();
-        Map<String, BigDecimal> calItemAmtMap = args.getCustomParam("calItemAmt");
-        Map<String, String> itemNameMap = args.getCustomParam("itemName");
-
-        if(calItemAmtMap != null && calItemAmtMap.size() > 0 && itemNameMap != null && calItemAmtMap.size() > 0) {
-            int index = 0;
-            for (Map.Entry<String, BigDecimal> entry : calItemAmtMap.entrySet()) {
-                String key = entry.getKey();
-                BigDecimal value = entry.getValue();
-
-                // 处理 key 和 value
-                MobTableRowData mobTableRowData = MobTableRowBuilder.buildTemplateRowData(index, mobTableColumns);
-                mobTableRowData.setValue("nckd_item", itemNameMap.get(key));
-                mobTableRowData.setValue("nckd_amt", calItemAmtMap.get(key));
-                mobTableRowDataList.add(mobTableRowData);
-                index++;
-                System.out.println("Key: " + key + "name:, " + itemNameMap.get(key) + "Value: " + value);
-            }
-
-            mobTableHandleResult.setMobTableRowDataList(mobTableRowDataList);
-            // 额外格式化信息如日期、金额,支持重写
-            mobTableHandleResult.setFmtInfo(getFmtInfo(args));
-        }
-        return mobTableHandleResult;
-    }
-
-}