Parcourir la source

feat(sinsur): 实现社保档案列表入职离职日期及职称信息展示

- 添加 SinsurFileListDataProviderEx 数据提供者类
- 添加 SinsurFileListEx 列表插件类
- 修改 getProtitleLevelByEmployeeID 方法名为 getProtitleLevelIdByEmployeeID
- 新增 getProtitleLevelDynByEmployeeID 方法获取职称级别动态对象
- 在入职和离职日期查询中添加空值过滤条件
- 实现在列表中显示入职日期、离职日期、党政职务和技术职称信息
Tyx il y a 6 jours
Parent
commit
98e5ddb82c

+ 28 - 4
code/base/nckd-jxccl-base-helper/src/main/java/nckd/jxccl/base/sit/helper/SITHelper.java

@@ -1,10 +1,12 @@
 package nckd.jxccl.base.sit.helper;
 
+import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
 
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -34,7 +36,7 @@ public class SITHelper {
         filter.and("empstagelatestrecord", QCP.equals, "1");
         String selectFields = "employee.id, entrydate";
         DynamicObjectCollection cols = EMPENTREL_HELPER.queryOriginalCollection(selectFields, filter.toArray());
-        return (Map<Long, Date>) cols.stream().collect(Collectors.toMap((obj) -> {
+        return (Map<Long, Date>) cols.stream().filter(obj -> obj.getDate("entrydate") != null).collect(Collectors.toMap((obj) -> {
             return obj.getLong("employee.id");
         }, (obj) -> {
             return obj.getDate("entrydate");
@@ -55,7 +57,7 @@ public class SITHelper {
         filter.and("iscurrentdata", QCP.equals, "1");
         String selectFields = "employee.id, nckd_departdate";
         DynamicObjectCollection cols = PERSERLEN_HELPER.queryOriginalCollection(selectFields, filter.toArray());
-        return (Map<Long, Date>) cols.stream().collect(Collectors.toMap((obj) -> {
+        return (Map<Long, Date>) cols.stream().filter(obj -> obj.getDate("nckd_departdate") != null).collect(Collectors.toMap((obj) -> {
             return obj.getLong("employee.id");
         }, (obj) -> {
             return obj.getDate("nckd_departdate");
@@ -86,13 +88,13 @@ public class SITHelper {
     }
 
     /**
-     * 根据员工ID获取职称级别
+     * 根据员工ID获取职称级别ID
      * 员工档案-职称信息-职称级别
      *
      * @param employeeIds
      * @return
      */
-    public Map<Long, Long> getProtitleLevelByEmployeeID(List<Long> employeeIds) {
+    public Map<Long, Long> getProtitleLevelIdByEmployeeID(List<Long> employeeIds) {
         QFilter filter = new QFilter("employee.id", QCP.in, employeeIds);
         filter.and("iscompany", QCP.equals, "1");
         String selectFields = "employee.id, prolevel.id";
@@ -105,4 +107,26 @@ public class SITHelper {
             return k1;
         }));
     }
+
+    /**
+     * 根据员工ID获取职称级别
+     * 员工档案-职称信息-职称级别
+     *
+     * @param employeeIds
+     * @return
+     */
+    public Map<Long, DynamicObject> getProtitleLevelDynByEmployeeID(List<Long> employeeIds) {
+        QFilter filter = new QFilter("employee.id", QCP.in, employeeIds);
+        filter.and("iscompany", QCP.equals, "1");
+        String selectFields = "employee.id, prolevel.name";
+        DynamicObject[] cols = PERPROTITLE_HELPER.load(selectFields, filter.toArray());
+        return (Map<Long, DynamicObject>) Arrays.stream(cols).collect(Collectors.toMap((obj) -> {
+            return obj.getLong("employee.id");
+        }, (obj) -> {
+            return obj.getDynamicObject("prolevel");
+        }, (k1, k2) -> {
+            return k1;
+        }));
+    }
+
 }

+ 1 - 1
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/file/SinsurFileEditEx.java

@@ -45,7 +45,7 @@ public class SinsurFileEditEx extends AbstractFormPlugin implements Plugin {
         Map<Long, Date> joinDateMap = helper.getJoinDateByEmployeeID(employeeIds);
         Map<Long, Date> quitDateMap = helper.getQuitDateByEmployeeID(employeeIds);
         Map<Long, String> zwcjMap = helper.getZwcjByEmployeeID(employeeIds);
-        Map<Long, Long> protitleMap = helper.getProtitleLevelByEmployeeID(employeeIds);
+        Map<Long, Long> protitleMap = helper.getProtitleLevelIdByEmployeeID(employeeIds);
 
         model.setValue("nckd_joindate", joinDateMap.keySet().contains(employeeId) ? joinDateMap.get(employeeId) : null);
         model.setValue("nckd_leavedate", quitDateMap.keySet().contains(employeeId) ? quitDateMap.get(employeeId) : null);

+ 44 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/file/SinsurFileListDataProviderEx.java

@@ -0,0 +1,44 @@
+package nckd.jxccl.sit.hcsi.formplugin.web.file;
+
+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.mvc.list.ListDataProvider;
+import nckd.jxccl.base.sit.helper.SITHelper;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class SinsurFileListDataProviderEx extends ListDataProvider {
+
+    private static final Log log = LogFactory.getLog(SinsurFileListDataProviderEx.class);
+
+
+    @Override
+    public DynamicObjectCollection getData(int start, int limit) {
+        DynamicObjectCollection rows = super.getData(start, limit);
+        if(rows.isEmpty())
+            return rows;
+        //获取所有Id
+        List<Long> employeeIds = rows.stream().map(dyx -> dyx.getLong("employee.id")).collect(Collectors.toList());
+        SITHelper helper = new SITHelper();
+        Map<Long, Date> joinDateMap = helper.getJoinDateByEmployeeID(employeeIds);
+        Map<Long, Date> quitDateMap = helper.getQuitDateByEmployeeID(employeeIds);
+        Map<Long, String> zwcjMap = helper.getZwcjByEmployeeID(employeeIds);
+        Map<Long, DynamicObject> protitleMap = helper.getProtitleLevelDynByEmployeeID(employeeIds);
+
+        for(DynamicObject row : rows) {
+            long employeeId = row.getLong("employee.id");
+            row.set("nckd_joindate", joinDateMap.keySet().contains(employeeId) ? joinDateMap.get(employeeId) : null);
+            row.set("nckd_leavedate", quitDateMap.keySet().contains(employeeId) ? quitDateMap.get(employeeId) : null);
+            row.set("nckd_posname", zwcjMap.keySet().contains(employeeId) ? zwcjMap.get(employeeId) : null);
+            row.set("nckd_prolevel", protitleMap.keySet().contains(employeeId) ? protitleMap.get(employeeId) : null);
+        }
+
+
+        return rows;
+    }
+}

+ 18 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/file/SinsurFileListEx.java

@@ -0,0 +1,18 @@
+package nckd.jxccl.sit.hcsi.formplugin.web.file;
+
+import kd.bos.form.events.BeforeCreateListDataProviderArgs;
+import kd.bos.list.plugin.AbstractListPlugin;
+import kd.sdk.plugin.Plugin;
+
+/**
+ * Tyx 2026-01-06
+ * 社保档案列表插件,查询入职日期,离职日期,党政职务,技术职称
+ */
+public class SinsurFileListEx extends AbstractListPlugin implements Plugin {
+
+    @Override
+    public void beforeCreateListDataProvider(BeforeCreateListDataProviderArgs args) {
+        super.beforeCreateListDataProvider(args);
+        args.setListDataProvider(new SinsurFileListDataProviderEx());
+    }
+}