Sfoglia il codice sorgente

feat(hr): 新增应聘申请单审核插件并完善表单功能

- 新增 ApplicationBillAuditPlugin 审核插件实现准备属性和结束事务处理
- 在 ApplicationBillFormPlugin 中添加简历信息处理功能,包括获取员工简历数据
- 实现点击事件监听器注册,支持全名和简历查看操作
- 添加打开简历详情页面功能,支持非模态窗口显示
- 在 OpenAdvertEditEx 中优化操作判断逻辑,仅在申请操作时打开申请表单
- 新增 TSCHelper 工具类方法,支持根据用户ID获取员工ID和员工简历数据查询
- 实现简历更新时间显示和缓存管理机制
Tyx 2 giorni fa
parent
commit
469ed93e1e

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

@@ -1,9 +1,44 @@
 package nckd.jxccl.base.tsc.helper;
 
+import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.logging.Log;
 import kd.bos.logging.LogFactory;
+import kd.bos.orm.query.QFilter;
+import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
+import kd.sdk.hr.hrpi.business.helper.HRPIEmployeeServiceHelper;
+import kd.sdk.tsc.common.enums.ResumeTypeEnum;
 import nckd.jxccl.base.wtc.helper.WTCHelper;
 
+import java.util.Collections;
+import java.util.Map;
+
 public class TSCHelper {
     private static final Log logger = LogFactory.getLog(TSCHelper.class);
+
+    private static final HRBaseServiceHelper EMPLOYEECV_HELPER = new HRBaseServiceHelper("tsirm_employeecv");
+
+
+    /**
+     * 根据当前用户获取人员ID
+     * @param userId
+     * @return
+     */
+    public Long getEmpId(Long userId) {
+        Map<String, Object> resultMap = HRPIEmployeeServiceHelper.queryEmployeeByUserIds(Collections.singletonList(userId), "id,employee", "1");
+        Map<String, Object> dataMap = (Map)resultMap.get("data");
+        return dataMap == null ? 0L : (Long)dataMap.get("employee");
+    }
+
+    /**
+     * 根据人员ID获取简历cvId
+     * @param empId
+     * @return
+     */
+    public DynamicObject[] getEmpCVDyByEmpId(long empId) {
+        QFilter empFilter = new QFilter("employee", "=", empId);
+        QFilter typeFilter = new QFilter("type", "=", ResumeTypeEnum.RESUME_CV.getType());
+        String selectProperties = "id,createtime,modifytime,number,name,folk,nationality,gender,birthday,age,socialworkage,employee,type,empposorgrel,rsmremark";
+        return EMPLOYEECV_HELPER.queryOriginalArray(selectProperties, new QFilter[]{empFilter, typeFilter}, "modifytime desc");
+    }
+
 }

+ 76 - 3
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/tsc/plugin/form/ApplicationBillFormPlugin.java

@@ -1,17 +1,24 @@
 package nckd.jxccl.hr.tsc.plugin.form;
 
+import kd.bos.bill.BillShowParameter;
+import kd.bos.bill.OperationStatus;
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.resource.ResManager;
 import kd.bos.entity.datamodel.IDataModel;
 import kd.bos.entity.datamodel.events.BizDataEventArgs;
+import kd.bos.form.OpenStyle;
+import kd.bos.form.ShowType;
+import kd.bos.form.control.Label;
+import kd.bos.form.events.BeforeDoOperationEventArgs;
+import kd.bos.form.operate.FormOperate;
 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 nckd.jxccl.base.tsc.helper.TSCHelper;
 
-import java.util.EventObject;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 应聘申请表单插件 【nckd_applicationbill】
@@ -20,9 +27,17 @@ import java.util.Map;
  */
 public class ApplicationBillFormPlugin extends AbstractFormPlugin implements Plugin {
 
+    @Override
+    public void registerListener(EventObject e) {
+        super.registerListener(e);
+        this.addClickListeners(new String[]{"nckd_fullname", "vectorap"});
+    }
+
     @Override
     public void afterBindData(EventObject e) {
         super.afterBindData(e);
+        // 携带简历字段
+        dealResumeCvInfo();
     }
 
     @Override
@@ -32,6 +47,7 @@ public class ApplicationBillFormPlugin extends AbstractFormPlugin implements Plu
         getEmployeeInfo();
         // 携带源页面字段
         dealAdvertInfo();
+
     }
 
     /**
@@ -84,5 +100,62 @@ public class ApplicationBillFormPlugin extends AbstractFormPlugin implements Plu
         });
     }
 
+    public void dealResumeCvInfo() {
+        IDataModel model = this.getModel();
+        // 当前用户ID
+        Long userId = UserServiceHelper.getCurrentUserId();
+        TSCHelper tscHelper = new TSCHelper();
+        //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");
+//        }
+        employeeId = model.getDataEntity().getLong("nckd_employee.id");
+        DynamicObject[] empCVDyArr = tscHelper.getEmpCVDyByEmpId(employeeId);
+        if (empCVDyArr.length == 0) {
+            //this.getView().showTipNotification("empcv is null");
+        } else {
+            DynamicObject empCVDy = empCVDyArr[0];
+            Date updateDate = empCVDy.getDate("modifytime");
+            updateDate = updateDate == null ? empCVDy.getDate("createtime") : updateDate;
+            String name = ResManager.loadKDString("{0}的简历", "EmpCVListPlugin_0", "tsc-tsirm-formplugin", new Object[]{empCVDy.getString("name")});
+            Label fullName = (Label)this.getControl("nckd_fullname");
+            fullName.setText(name);
+            this.getModel().setValue("nckd_rsmupdatetime", updateDate);
+            this.getView().getPageCache().put("cachekey_cvid", String.valueOf(empCVDy.getLong("id")));
+            this.getView().updateView("nckd_rsmupdatetime");
+        }
+    }
+
+    @Override
+    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
+        super.beforeDoOperation(args);
+        FormOperate formOperate = (FormOperate)args.getSource();
+        String operateKey = formOperate.getOperateKey();
+        String cvId = this.getView().getPageCache().get("cachekey_cvid");
+        if ("donothing_viewresume".equals(operateKey)) {
+            this.openCVDetailPage(Long.parseLong(cvId));
+        }
+    }
+
+    /**
+     * 打开简历详情页面
+     * @param cvId
+     */
+    private void openCVDetailPage(long cvId) {
+        BillShowParameter showParameter = new BillShowParameter();
+        showParameter.setFormId("tsirm_employeecv");
+        showParameter.setPkId(cvId);
+        showParameter.setStatus(OperationStatus.VIEW);
+        OpenStyle openStyle = showParameter.getOpenStyle();
+        Optional.ofNullable(openStyle).ifPresent((style) -> {
+            style.setShowType(ShowType.NonModal);
+        });
+        this.getView().showForm(showParameter);
+    }
 
 }

+ 7 - 2
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/tsc/plugin/form/OpenAdvertEditEx.java

@@ -6,6 +6,7 @@ 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.operate.FormOperate;
 import kd.bos.form.plugin.AbstractFormPlugin;
 import kd.sdk.plugin.Plugin;
 
@@ -19,7 +20,11 @@ public class OpenAdvertEditEx extends AbstractFormPlugin implements Plugin {
     @Override
     public void beforeDoOperation(BeforeDoOperationEventArgs args) {
         super.beforeDoOperation(args);
-        openApplicationBillForm(args);
+        FormOperate formOperate = (FormOperate)args.getSource();
+        String operateKey = formOperate.getOperateKey();
+        if("donothing_apply".equals(operateKey)) {
+            openApplicationBillForm(args);
+        }
     }
 
     /**
@@ -33,7 +38,7 @@ public class OpenAdvertEditEx extends AbstractFormPlugin implements Plugin {
         formShowParameter.setFormId("nckd_applicationbill");
         formShowParameter.setCustomParam("positionId", dyn.getLong("position.id"));
         formShowParameter.setCustomParam("advertId", dyn.getLong("id"));
-        formShowParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
+        formShowParameter.getOpenStyle().setShowType(ShowType.NonModal);
         formShowParameter.setCloseCallBack(new CloseCallBack(this, "application"));
         this.getView().showForm(formShowParameter);
     }

+ 25 - 0
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/tsc/plugin/operate/ApplicationBillAuditPlugin.java

@@ -0,0 +1,25 @@
+package nckd.jxccl.hr.tsc.plugin.operate;
+
+import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
+import kd.bos.entity.plugin.PreparePropertysEventArgs;
+import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
+import kd.sdk.plugin.Plugin;
+
+/**
+ * 应聘申请单审核插件 【nckd_applicationbill】
+ * @author Tyx
+ * 时间 2026/1/15 14:01
+ */
+public class ApplicationBillAuditPlugin extends AbstractOperationServicePlugIn implements Plugin {
+
+    @Override
+    public void onPreparePropertys(PreparePropertysEventArgs e) {
+        super.onPreparePropertys(e);
+        e.getFieldKeys().addAll(this.billEntityType.getAllFields().keySet());
+    }
+
+    @Override
+    public void endOperationTransaction(EndOperationTransactionArgs e) {
+        super.endOperationTransaction(e);
+    }
+}