Эх сурвалжийг харах

Merge remote-tracking branch 'origin/master'

wyc 3 өдөр өмнө
parent
commit
6b20d93e2d

+ 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");
+    }
+
 }

+ 2 - 3
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/task/AnnouncementsTask.java

@@ -10,14 +10,14 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
 import kd.sdk.plugin.Plugin;
 import nckd.jxccl.base.common.constant.FormConstant;
-
-import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Map;
 
 /**
  * 政策公告下架后台任务插件
+ * @author turborao
+ * 时间 2026/1/15 16:05
  */
 @SuppressWarnings("unused")
 public class AnnouncementsTask extends AbstractTask implements Plugin {
@@ -36,7 +36,6 @@ public class AnnouncementsTask extends AbstractTask implements Plugin {
             // 构建查询条件:nckd_downdate <= 今天的日期
             QFilter filter = new QFilter("nckd_downdate", QCP.less_equals, today);
 
-            // 使用 BusinessDataServiceHelper.load 替代 QueryServiceHelper.query
             String selectFields = "id,nckd_billstatus,nckd_downdate";
             DynamicObject[] dyns = BusinessDataServiceHelper.load(
                     FormConstant.NCKD_ANNOUNCEMENTS,

+ 8 - 16
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/tsc/plugin/form/AnnouncementsBasePlugin.java

@@ -2,6 +2,8 @@ package nckd.jxccl.hr.tsc.plugin.form;
 
 import kd.bos.bill.OperationStatus;
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.operate.result.OperationResult;
+import kd.bos.form.events.AfterDoOperationEventArgs;
 import kd.bos.form.events.BeforeDoOperationEventArgs;
 import kd.bos.form.operate.FormOperate;
 import kd.bos.servicehelper.user.UserServiceHelper;
@@ -10,7 +12,6 @@ import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
 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;
 
@@ -53,33 +54,24 @@ public class AnnouncementsBasePlugin extends AbstractBasePlugIn implements Plugi
     }
 
     @Override
-    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
+    public void afterDoOperation(AfterDoOperationEventArgs args) {
+        ///如果有合法检验,需要有判断是否操作成功!
+        OperationResult operationResult = args.getOperationResult();
+        if (operationResult != null && !operationResult.isSuccess()) {
+            return;
+        }
         FormOperate source = (FormOperate)args.getSource();
         String formOp = source.getOperateKey();
         DynamicObject data = this.getModel().getDataEntity(true);
         String  billstatus =  data.getString("nckd_billstatus");
         HRBaseServiceHelper hrBaseServiceHelper = new HRBaseServiceHelper(FormConstant.NCKD_ANNOUNCEMENTS);
         if ("publish".equals(formOp)) {
-
-            if("C".equals(billstatus) ){
-                args.setCancel(true);
-                this.getView().showTipNotification("已经发布,不能操作!");
-            }
-            if("D".equals(billstatus)){
-                args.setCancel(true);
-                this.getView().showTipNotification("已经下架,不能操作!");
-            }
-
             data.set("nckd_billstatus", "C");
             data.set("nckd_publishdate", new java.util.Date());
             data.set("nckd_publishuser", UserServiceHelper.getCurrentUserId());
             Object billPk = hrBaseServiceHelper.saveOne(data);
         }
         if("withdraw".equals(formOp)){
-            if("A".equals(billstatus) || "C".equals(billstatus)){
-                args.setCancel(true);
-                this.getView().showTipNotification("不是已下架状态,不能操作!");
-            }
             data.set("nckd_billstatus", "A");
             Object billPk = hrBaseServiceHelper.saveOne(data);
         }

+ 6 - 9
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/tsc/plugin/form/AnnouncementsListPlugin.java

@@ -1,20 +1,16 @@
 package nckd.jxccl.hr.tsc.plugin.form;
 
-import kd.bos.algo.DataSet;
 import kd.bos.dataentity.entity.DynamicObject;
-import kd.bos.dataentity.entity.DynamicObjectCollection;
-import kd.bos.db.DB;
-import kd.bos.db.DBRoute;
 import kd.bos.entity.EntityMetadataCache;
 import kd.bos.entity.MainEntityType;
 import kd.bos.entity.datamodel.ListSelectedRowCollection;
+import kd.bos.entity.operate.result.OperationResult;
 import kd.bos.form.events.AfterDoOperationEventArgs;
 import kd.bos.form.events.SetFilterEvent;
 import kd.bos.form.operate.FormOperate;
 import kd.bos.list.plugin.AbstractListPlugin;
 import kd.bos.logging.Log;
 import kd.bos.logging.LogFactory;
-import kd.bos.orm.ORM;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
@@ -24,11 +20,7 @@ import kd.hr.hbp.common.util.HRStringUtils;
 import kd.sdk.plugin.Plugin;
 import nckd.jxccl.base.common.constant.FormConstant;
 import nckd.jxccl.base.swc.helper.SWCHelper;
-
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -94,6 +86,11 @@ public class AnnouncementsListPlugin extends AbstractListPlugin implements Plugi
 
     public void afterDoOperation(AfterDoOperationEventArgs args) {
         super.afterDoOperation(args);
+        ///如果有合法检验,需要有判断是否操作成功!
+        OperationResult operationResult = args.getOperationResult();
+        if (operationResult != null && !operationResult.isSuccess()) {
+            return;
+        }
         FormOperate formOperate = (FormOperate)args.getSource();
         String key = formOperate.getOperateKey();
         switch (key) {

+ 0 - 5
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/tsc/plugin/form/AnnouncementsTplListPlugin.java

@@ -1,12 +1,10 @@
 package nckd.jxccl.hr.tsc.plugin.form;
 
 import kd.bos.algo.DataSet;
-import kd.bos.context.RequestContext;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.db.DB;
 import kd.bos.db.DBRoute;
-import kd.bos.form.events.FilterContainerInitArgs;
 import kd.bos.form.events.SetFilterEvent;
 import kd.bos.list.plugin.AbstractListPlugin;
 import kd.bos.logging.Log;
@@ -14,14 +12,11 @@ import kd.bos.logging.LogFactory;
 import kd.bos.orm.ORM;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
-import kd.bos.servicehelper.model.PermissionStatus;
 import kd.bos.servicehelper.user.UserServiceHelper;
 import kd.hr.hbp.common.util.HRStringUtils;
-import kd.sdk.hr.hbp.business.helper.permission.HRPermissionServiceHelper;
 import kd.sdk.plugin.Plugin;
 import nckd.jxccl.base.common.constant.FormConstant;
 import nckd.jxccl.base.swc.helper.SWCHelper;
-
 import java.util.*;
 import java.util.stream.Collectors;
 

+ 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);
+    }
+}