Просмотр исходного кода

feat(swc): 添加社保档案表单插件功能

- 新增 SinsurFileEditEx 表单插件类,继承 AbstractFormPlugin
- 实现 beforeBindData 和 afterBindData 方法处理表单数据绑定
- 添加 getRelatedData 方法查询员工相关社保信息
- 集成入职日期、离职日期、党政职务、技术职称的查询功能
- 新增 SITHelper 辅助类提供员工信息查询服务
- 实现四个查询方法:getJoinDateByEmployeeID、getQuitDateByEmployeeID、getZwcjByEmployeeID、getProtitleLevelByEmployeeID
- 使用 HRBaseServiceHelper 访问员工档案、雇佣信息、服务年限、职称信息等数据源
- 通过 QFilter 构建查询条件,支持员工ID批量查询
- 使用 Stream 和 Collectors 进行数据转换和映射操作
Tyx 6 дней назад
Родитель
Сommit
b5d6e9cb4a

+ 108 - 0
code/base/nckd-jxccl-base-helper/src/main/java/nckd/jxccl/base/sit/helper/SITHelper.java

@@ -0,0 +1,108 @@
+package nckd.jxccl.base.sit.helper;
+
+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.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class SITHelper {
+
+    /*党政职务*/
+    public static final HRBaseServiceHelper PARTYPOSH_HELPER = new HRBaseServiceHelper("nckd_hrpi_partyposh");
+    /*雇佣信息*/
+    public static final HRBaseServiceHelper EMPENTREL_HELPER = new HRBaseServiceHelper("hsbs_empentrel");
+    /*服务年限*/
+    public static final HRBaseServiceHelper PERSERLEN_HELPER = new HRBaseServiceHelper("hsbs_perserlen");
+    /*职称信息*/
+    public static final HRBaseServiceHelper PERPROTITLE_HELPER = new HRBaseServiceHelper("hsbs_perprotitle");
+    /**
+     * 根据员工ID获取入职日期
+     * 员工档案-雇佣信息-入职日期
+     *
+     * @param employeeIds
+     * @return
+     */
+    public Map<Long, Date> getJoinDateByEmployeeID(List<Long> employeeIds) {
+        QFilter filter = new QFilter("employee.id", QCP.in, employeeIds);
+        filter.and("startdate", QCP.less_equals, new Date());
+        filter.and("enddate", QCP.large_equals, new Date());
+        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 obj.getLong("employee.id");
+        }, (obj) -> {
+            return obj.getDate("entrydate");
+        }, (k1, k2) -> {
+            return k1;
+        }));
+    }
+
+    /**
+     * 根据员工ID获取离职日期
+     * 员工档案-服务年限-离职日期
+     *
+     * @param employeeIds
+     * @return
+     */
+    public Map<Long, Date> getQuitDateByEmployeeID(List<Long> employeeIds) {
+        QFilter filter = new QFilter("employee.id", QCP.in, employeeIds);
+        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 obj.getLong("employee.id");
+        }, (obj) -> {
+            return obj.getDate("nckd_departdate");
+        }, (k1, k2) -> {
+            return k1;
+        }));
+    }
+
+    /**
+     * 根据员工ID获取职务层级
+     * 员工档案-党政职务变更履历-职务层级
+     * @param employeeIds
+     * @return Map, k = employeeId, v = 职位层级名称
+     */
+    public Map<Long, String> getZwcjByEmployeeID(List<Long> employeeIds) {
+        QFilter filter = new QFilter("employee.id", QCP.in, employeeIds);
+        filter.and("startdate", QCP.less_equals, new Date());
+        filter.and("enddate", QCP.large_equals, new Date());
+        String selectFields = "employee.id, nckd_posgrade.name";
+        DynamicObjectCollection cols = PARTYPOSH_HELPER.queryOriginalCollection(selectFields, filter.toArray());
+        return (Map<Long, String>) cols.stream().collect(Collectors.toMap((obj) -> {
+            return obj.getLong("employee.id");
+        }, (obj) -> {
+            return obj.getString("nckd_posgrade.name");
+        }, (k1, k2) -> {
+            return k1;
+        }));
+    }
+
+    /**
+     * 根据员工ID获取职称级别
+     * 员工档案-职称信息-职称级别
+     *
+     * @param employeeIds
+     * @return
+     */
+    public Map<Long, Long> getProtitleLevelByEmployeeID(List<Long> employeeIds) {
+        QFilter filter = new QFilter("employee.id", QCP.in, employeeIds);
+        filter.and("iscompany", QCP.equals, "1");
+        String selectFields = "employee.id, prolevel.id";
+        DynamicObjectCollection cols = PERPROTITLE_HELPER.queryOriginalCollection(selectFields, filter.toArray());
+        return (Map<Long, Long>) cols.stream().collect(Collectors.toMap((obj) -> {
+            return obj.getLong("employee.id");
+        }, (obj) -> {
+            return obj.getLong("prolevel.id");
+        }, (k1, k2) -> {
+            return k1;
+        }));
+    }
+}

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

@@ -0,0 +1,57 @@
+package nckd.jxccl.sit.hcsi.formplugin.web.file;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.datamodel.IDataModel;
+import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.sdk.plugin.Plugin;
+import nckd.jxccl.base.sit.helper.SITHelper;
+
+import java.util.Date;
+import java.util.EventObject;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * Tyx 2026-01-05
+ * 社保档案表单插件,查询入职日期,离职日期,党政职务,技术职称
+ */
+public class SinsurFileEditEx extends AbstractFormPlugin implements Plugin {
+
+
+    @Override
+    public void beforeBindData(EventObject e) {
+        super.beforeBindData(e);
+        getRelatedData();
+    }
+
+    @Override
+    public void afterBindData(EventObject e) {
+        super.afterBindData(e);
+    }
+
+    /**
+     * 查询相关信息:
+     * 查询入职日期,离职日期,党政职务,技术职称
+     */
+    public void getRelatedData(){
+        IDataModel model = this.getModel();
+        DynamicObject dyn = model.getDataEntity();
+        Long employeeId = dyn.getLong("employee.id");
+        List<Long> employeeIds = Stream.of(employeeId).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, Long> protitleMap = helper.getProtitleLevelByEmployeeID(employeeIds);
+
+        model.setValue("nckd_joindate", joinDateMap.get(employeeId));
+        model.setValue("nckd_leavedate", quitDateMap.get(employeeId));
+        model.setValue("nckd_posname", zwcjMap.get(employeeId));
+        model.setValue("nckd_prolevel", protitleMap.get(employeeId));
+    }
+
+
+}