Forráskód Böngészése

feat(hr): 添加应聘申请表单插件功能

- 实现ApplicationBillFormPlugin类处理应聘申请表单逻辑
- 添加获取员工相关信息包括所在部门、单位等功能
- 实现处理从最新职位跳转携带参数的功能
- 创建OpenAdvertEditEx插件实现打开应聘申请单界面
- 添加PositionBillFromPluginEx插件实现行政组织联动
- 新增TSCHelper基础辅助类
Tyx 2 napja
szülő
commit
a681366554

+ 9 - 0
code/base/nckd-jxccl-base-helper/src/main/java/nckd/jxccl/base/tsc/helper/TSCHelper.java

@@ -0,0 +1,9 @@
+package nckd.jxccl.base.tsc.helper;
+
+import kd.bos.logging.Log;
+import kd.bos.logging.LogFactory;
+import nckd.jxccl.base.wtc.helper.WTCHelper;
+
+public class TSCHelper {
+    private static final Log logger = LogFactory.getLog(TSCHelper.class);
+}

+ 88 - 0
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/tsc/plugin/form/ApplicationBillFormPlugin.java

@@ -0,0 +1,88 @@
+package nckd.jxccl.hr.tsc.plugin.form;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.datamodel.IDataModel;
+import kd.bos.entity.datamodel.events.BizDataEventArgs;
+import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.bos.servicehelper.user.UserServiceHelper;
+import kd.sdk.plugin.Plugin;
+import nckd.jxccl.base.common.constant.FormConstant;
+import nckd.jxccl.base.swc.helper.SWCHelper;
+
+import java.util.EventObject;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 应聘申请表单插件 【nckd_applicationbill】
+ * @author Tyx
+ * 时间 2026/1/14 11:18
+ */
+public class ApplicationBillFormPlugin extends AbstractFormPlugin implements Plugin {
+
+    @Override
+    public void afterBindData(EventObject e) {
+        super.afterBindData(e);
+    }
+
+    @Override
+    public void afterCreateNewData(EventObject e) {
+        super.afterCreateNewData(e);
+        // 处理员工相关信息
+        getEmployeeInfo();
+        // 携带源页面字段
+        dealAdvertInfo();
+    }
+
+    /**
+     * 获取员工相关信息
+     * 1.所在部门/所在单位
+     * 2.政治面貌--废弃 直接查询属性关联出来
+     */
+    public void getEmployeeInfo() {
+        IDataModel model = this.getModel();
+        DynamicObject dyn = model.getDataEntity();
+        // 当前用户ID
+        Long userId = UserServiceHelper.getCurrentUserId();
+        DynamicObject personUserDyn = SWCHelper.queryOne(FormConstant.HRPI_PERSONUSERREL, "employee.id","user",userId);
+        Long employeeId = 0L;
+        if(personUserDyn == null){
+            employeeId = 0L;
+            return;
+        }
+        else {
+            employeeId = personUserDyn.getLong("employee.id");
+        }
+
+        model.setValue("nckd_employee", employeeId);
+        List<Long> employeeIds = new java.util.ArrayList<>();
+        employeeIds.add(employeeId);
+        DynamicObject[] empDyns = SWCHelper.queryEmpPosOrgRelDyns(employeeIds);
+
+        if(empDyns != null && empDyns.length > 0){
+            Long companyId = empDyns[0].getLong("company.id");
+            model.setValue("nckd_company", companyId);
+            Long adminorgId = empDyns[0].getLong("adminorg.id");
+            model.setValue("nckd_adminorg", adminorgId);
+        }
+    }
+
+
+    /**
+     * 处理从我要应聘-最新职位跳转过来携带的参数
+     */
+    public void dealAdvertInfo() {
+        IDataModel model = this.getModel();
+        Map map = this.getView().getFormShowParameter().getCustomParams();
+        map.keySet().forEach(key -> {
+            if (key.equals("positionId")) {
+                model.setValue("nckd_position", map.get(key));
+            }
+            else if(key.equals("advertId")) {
+                model.setValue("nckd_advert", map.get(key));
+            }
+        });
+    }
+
+
+}

+ 41 - 0
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/tsc/plugin/form/OpenAdvertEditEx.java

@@ -0,0 +1,41 @@
+package nckd.jxccl.hr.tsc.plugin.form;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.datamodel.IDataModel;
+import kd.bos.form.CloseCallBack;
+import kd.bos.form.FormShowParameter;
+import kd.bos.form.ShowType;
+import kd.bos.form.events.BeforeDoOperationEventArgs;
+import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.sdk.plugin.Plugin;
+
+/**
+ * 我要应聘-最新职位表单插件 【tsirm_advertopen】
+ * @author Tyx
+ * 时间 2026/1/14 14:30
+ */
+public class OpenAdvertEditEx extends AbstractFormPlugin implements Plugin {
+
+    @Override
+    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
+        super.beforeDoOperation(args);
+        openApplicationBillForm(args);
+    }
+
+    /**
+     * 打开应聘申请单表单界面
+     * @param args
+     */
+    private void openApplicationBillForm (BeforeDoOperationEventArgs args) {
+        IDataModel model = this.getModel();
+        DynamicObject dyn = model.getDataEntity();
+        FormShowParameter formShowParameter = new FormShowParameter();
+        formShowParameter.setFormId("nckd_applicationbill");
+        formShowParameter.setCustomParam("positionId", dyn.getLong("position.id"));
+        formShowParameter.setCustomParam("advertId", dyn.getLong("id"));
+        formShowParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
+        formShowParameter.setCloseCallBack(new CloseCallBack(this, "application"));
+        this.getView().showForm(formShowParameter);
+    }
+
+}

+ 34 - 0
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/tsc/plugin/form/position/PositionBillFromPluginEx.java

@@ -0,0 +1,34 @@
+package nckd.jxccl.hr.tsc.plugin.form.position;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.utils.ObjectUtils;
+import kd.bos.entity.datamodel.events.PropertyChangedArgs;
+import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.sdk.plugin.Plugin;
+
+/**
+ * 动态表单插件
+ */
+public class PositionBillFromPluginEx extends AbstractFormPlugin implements Plugin {
+
+    /**
+     * 携带所属行政组织->用人部门(多选)
+     * @param e
+     */
+    @Override
+    public void propertyChanged(PropertyChangedArgs e) {
+        super.propertyChanged(e);
+        String key = e.getProperty().getName();
+        if(key.equals("adminorg")) {
+            DynamicObject value = (DynamicObject) e.getChangeSet()[0].getNewValue();
+            if(!ObjectUtils.isEmpty(value)) {
+                Long[] ids = new Long[1];
+                ids[0] = value.getLong("id");
+                this.getModel().setValue("adminorgsdpt", ids);
+            }
+            else {
+                this.getModel().setValue("adminorgsdpt", null);
+            }
+        }
+    }
+}