Ver código fonte

feat(hr): 新增岗位相关常量及查询排序功能

- 在 FormConstant 类中新增岗位、是否负责人岗位、所属公司、物理层级、手机号码等常量定义
- 在 QueryFieldBuilder 类中新增 addAsc 和 addDesc 方法,支持单级路径升序和降序排序
- 优化 GenerateEmploymentContractEventServicePlugin 类中的字段引用,统一调整为新的常量命名
- 增加对主任职字段的过滤条件,确保只处理主任职记录
- 更新 GECEventConstant 类中的字段映射,修正部分字段路径以匹配最新数据结构
jtd 1 semana atrás
pai
commit
489e6ff821

+ 10 - 1
code/base/nckd-jxccl-base-common/src/main/java/nckd/jxccl/base/common/constant/FormConstant.java

@@ -274,6 +274,8 @@ public class FormConstant {
     public static final String NCKD_REMARK = "nckd_remark";
     /** 组织*/
     public static final String NCKD_ADMINORG = "nckd_adminorg";
+    /** 岗位 */
+    public static final String NCKD_POSITION_KEY = "nckd_position";
     /** 用工关系状态*/
     public static final String LABOR_REL_STATUS = "laborrelstatus";
     /** 是否在职*/
@@ -331,6 +333,13 @@ public class FormConstant {
     /**薪酬标准方案*/
     public static final String NCKD_PAYSTDPLAN = "nckd_paystdplan";
 
-
+    /** 是否负责人岗位 */
+    public static final String ISLEADER_KEY = "isleader";
+    /** 所属公司 */
+    public static final String BELONGCOMPANY_KEY = "belongcompany";
+    /** 物理层级 */
+    public static final String LEVEL_KEY = "level";
+    /** 手机号码 */
+    public static final String PHONE_KEY = "phone";
 
 }

+ 32 - 0
code/base/nckd-jxccl-base-common/src/main/java/nckd/jxccl/base/common/utils/QueryFieldBuilder.java

@@ -157,6 +157,22 @@ public final class QueryFieldBuilder {
         return this;
     }
 
+    /**
+     * 升序排序,单级路径
+     * 使用方式:
+     * builder.addAsc(adminorg, number);
+     * 输出结果:
+     * "adminorg.number asc"
+     * @param parts 排序字段
+     * @return QueryFieldBuilder
+     * @author W.Y.C
+     * @date: 2025/09/27
+     */
+    public QueryFieldBuilder addAsc(String... parts) {
+        orderJoiner.add(joinParts(parts) + " asc");
+        return this;
+    }
+
     /**
      * 降序排序,支持多级路径
      * 使用方式:
@@ -193,6 +209,22 @@ public final class QueryFieldBuilder {
         return this;
     }
 
+    /**
+     * 降序排序,单级路径
+     * 使用方式:
+     * builder.addDesc(adminorg, number);
+     * 输出结果:
+     * "adminorg.number desc"
+     * @param parts 排序字段
+     * @return QueryFieldBuilder
+     * @author W.Y.C
+     * @date: 2025/09/27
+     */
+    public QueryFieldBuilder addDesc(String... parts) {
+        orderJoiner.add(joinParts(parts) + " desc");
+        return this;
+    }
+
     /**
      * 默认排序,不指定 asc/desc(不指定数据库默认未asc)
      * 使用方式:

+ 20 - 18
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/homs/business/application/event/GenerateEmploymentContractEventServicePlugin.java

@@ -5,6 +5,7 @@ import kd.bos.bec.model.EntityEvent;
 import kd.bos.bec.model.KDBizEvent;
 import kd.bos.coderule.api.CodeRuleInfo;
 import kd.bos.coderule.opplugin.util.OrgUtil;
+import kd.bos.common.enums.EnableEnum;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.entity.QueryEntityType;
@@ -129,19 +130,19 @@ public class GenerateEmploymentContractEventServicePlugin implements IEventServi
         String assignmentIdKey = String.join(".", GECEventConstant.ASSIGNMENT_ENTITYID, GECEventConstant.ID_KEY);
         // 查询字段
         String queryFields = QueryFieldBuilder.create()
-                .add(GECEventConstant.HSPM_PERCONTACT_E_PHONE)
-                .add(GECEventConstant.HSPM_TRIALPERIOD_E_PROBATION)
-                .add(GECEventConstant.HSPM_TRIALPERIOD_E_PROBATIONUNIT)
-                .add(GECEventConstant.HSPM_TRIALPERIOD_E_PREENDDATE)
-                .add(GECEventConstant.HSPM_TRIALPERIOD_E_TRIALSTARTDATE)
+                .add(GECEventConstant.HSPM_PERCONTACT_PHONE)
+                .add(GECEventConstant.HSPM_TRIALPERIOD_PROBATION)
+                .add(GECEventConstant.HSPM_TRIALPERIOD_PROBATIONUNIT)
+                .add(GECEventConstant.HSPM_TRIALPERIOD_PREENDDATE)
+                .add(GECEventConstant.HSPM_TRIALPERIOD_TRIALSTARTDATE)
                 .add(GECEventConstant.HOUSEHOLDREGISTER_ADDRESSTYPE_ID)
                 .add(GECEventConstant.HOUSEHOLDREGISTER_ADDRESSINFO)
                 .add(GECEventConstant.RESIDENTIALADDRESS_ADDRESSTYPE_ID)
                 .add(GECEventConstant.RESIDENTIALADDRESS_ADDRESSINFO)
-                .add(GECEventConstant.HSPM_PERCRE_E_CREDENTIALSTYPE_ID)
-                .add(GECEventConstant.HSPM_PERCRE_E_NUMBER)
-                .add(GECEventConstant.CNIDARD_CREDENTIALSTYPE_ID)
-                .add(GECEventConstant.CNIDARD_NUMBER)
+                .add(GECEventConstant.HSPM_PERCRE_CREDENTIALSTYPE_ID)
+                .add(GECEventConstant.HSPM_PERCRE_NUMBER)
+                .add(GECEventConstant.CNIDCARD_CREDENTIALSTYPE_ID)
+                .add(GECEventConstant.CNIDCARD_NUMBER)
                 .add(GECEventConstant.HAOS_ADMINORGHR_CORPORATEORG_ID)
                 .add(GECEventConstant.HRPI_EMPPOSORGREL_STARTDATE)
                 .add(GECEventConstant.HRPI_EMPLOYEE_ID)
@@ -165,6 +166,7 @@ public class GenerateEmploymentContractEventServicePlugin implements IEventServi
                 .buildSelect();
         // 过滤条件
         QFilter qFilter = new QFilter(assignmentIdKey, QCP.in, assignmentIds);
+        qFilter.and(GECEventConstant.ISPRIMARY_KEY, QCP.equals, EnableEnum.YES.getCode());
         // 排序字段
         String orderBys = QueryFieldBuilder.create().orderBy(GECEventConstant.HRPI_EMPPOSORGREL_STARTDATE, assignmentIdKey).buildOrder();
         // 根据组织分配获取员工信息
@@ -233,15 +235,15 @@ public class GenerateEmploymentContractEventServicePlugin implements IEventServi
             // 设置 职位
             contractApplyNewDyo.set(GECEventConstant.CURJOB_KEY, personInfo.getDynamicObject(GECEventConstant.HRPI_EMPPOSORGREL_JOB));
             // 设置 证件类型
-            Long cardTypeId = personInfo.getLong(GECEventConstant.HSPM_PERCRE_E_CREDENTIALSTYPE_ID);
-            cardTypeId = HRObjectUtils.isEmpty(cardTypeId) ? personInfo.getLong(GECEventConstant.CNIDARD_CREDENTIALSTYPE_ID) : cardTypeId;
+            Long cardTypeId = personInfo.getLong(GECEventConstant.HSPM_PERCRE_CREDENTIALSTYPE_ID);
+            cardTypeId = HRObjectUtils.isEmpty(cardTypeId) ? personInfo.getLong(GECEventConstant.CNIDCARD_CREDENTIALSTYPE_ID) : cardTypeId;
             if (HRObjectUtils.isEmpty(cardTypeId)) {
                 throw new KDBizException(String.format("没有可使用的证件类型,组织分配ID[%s]", assignmentId));
             }
             contractApplyNewDyo.set(GECEventConstant.CARDTYPE_KEY, EntityHelper.newEntity(GECEventConstant.HBSS_CREDENTIALSTYPE_ENTITY, cardTypeId));
             // 设置 证件号码
-            String cardNumber = personInfo.getString(GECEventConstant.HSPM_PERCRE_E_NUMBER);
-            cardNumber = HRStringUtils.isBlank(cardNumber) ? personInfo.getString(GECEventConstant.CNIDARD_NUMBER) : cardNumber;
+            String cardNumber = personInfo.getString(GECEventConstant.HSPM_PERCRE_NUMBER);
+            cardNumber = HRStringUtils.isBlank(cardNumber) ? personInfo.getString(GECEventConstant.CNIDCARD_NUMBER) : cardNumber;
             if (HRStringUtils.isBlank(cardNumber)) {
                 throw new KDBizException(String.format("没有可使用的证件号码,组织分配ID[%s]", assignmentId));
             }
@@ -251,7 +253,7 @@ public class GenerateEmploymentContractEventServicePlugin implements IEventServi
             // 设置 居住地址
             contractApplyNewDyo.set(GECEventConstant.RESIDENTIALADDRESS_KEY, personInfo.getString(GECEventConstant.RESIDENTIALADDRESS_ADDRESSINFO));
             // 设置 联系方式
-            contractApplyNewDyo.set(GECEventConstant.EMPPHONE_KEY, personInfo.getString(GECEventConstant.HSPM_PERCONTACT_E_PHONE));
+            contractApplyNewDyo.set(GECEventConstant.EMPPHONE_KEY, personInfo.getString(GECEventConstant.HSPM_PERCONTACT_PHONE));
             // 设置应签单位、实签单位
             DynamicObject signCompanyDyo = signCompanyMap.get(personInfo.getLong(GECEventConstant.HAOS_ADMINORGHR_CORPORATEORG_ID));
             if (HRObjectUtils.isEmpty(signCompanyDyo)) {
@@ -278,13 +280,13 @@ public class GenerateEmploymentContractEventServicePlugin implements IEventServi
             Date endDate = HRDateTimeUtils.addDay(HRDateTimeUtils.addYear(startDate, 5), -1);// +5年-1天
             contractApplyNewDyo.set(GECEventConstant.ENDDATE_KEY, endDate);
             // 设置 试用期开始日期
-            contractApplyNewDyo.set(GECEventConstant.PROBATIONSTARTDATE_KEY, personInfo.getDate(GECEventConstant.HSPM_TRIALPERIOD_E_TRIALSTARTDATE));
+            contractApplyNewDyo.set(GECEventConstant.PROBATIONSTARTDATE_KEY, personInfo.getDate(GECEventConstant.HSPM_TRIALPERIOD_TRIALSTARTDATE));
             // 设置 试用结束日期
-            contractApplyNewDyo.set(GECEventConstant.PROBATIONENDDATE_KEY, personInfo.getDate(GECEventConstant.HSPM_TRIALPERIOD_E_PREENDDATE));
+            contractApplyNewDyo.set(GECEventConstant.PROBATIONENDDATE_KEY, personInfo.getDate(GECEventConstant.HSPM_TRIALPERIOD_PREENDDATE));
             // 设置 试用期限
-            contractApplyNewDyo.set(GECEventConstant.PROBATIONPERIOD_KEY, personInfo.getInt(GECEventConstant.HSPM_TRIALPERIOD_E_PROBATION));
+            contractApplyNewDyo.set(GECEventConstant.PROBATIONPERIOD_KEY, personInfo.getInt(GECEventConstant.HSPM_TRIALPERIOD_PROBATION));
             // 设置 试用期单位
-            contractApplyNewDyo.set(GECEventConstant.PROBATIONUNIT_KEY, personInfo.getString(GECEventConstant.HSPM_TRIALPERIOD_E_PROBATIONUNIT));
+            contractApplyNewDyo.set(GECEventConstant.PROBATIONUNIT_KEY, personInfo.getString(GECEventConstant.HSPM_TRIALPERIOD_PROBATIONUNIT));
             // 设置 签署方式
             contractApplyNewDyo.set(GECEventConstant.SIGNWAY_KEY, "2");// 默认纸质签署
             // 设置 创建人

+ 15 - 13
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/homs/common/application/event/GECEventConstant.java

@@ -28,6 +28,8 @@ public class GECEventConstant extends FormConstant {
     /** 合同模板历史实体标识 */
     public static final String HLCM_CONTRACTTEMPLATEHIS_ENTITY = "hlcm_contracttemplatehis";
 
+    /** 主任职 */
+    public static final String ISPRIMARY_KEY = "isprimary";
     /** 证件号码 */
     public static final String CARDNUMBER_KEY = "cardnumber";
     /** 联系电话 */
@@ -149,20 +151,20 @@ public class GECEventConstant extends FormConstant {
     public static final String HRPI_EMPPOSORGREL_WORKPLACE_NUMBER = "workplace.number";
 
     /** 联系方式.ID */
-    public static final String HSPM_PERCONTACT_E_ID = "hspm_percontact_e.id";
+    public static final String HSPM_PERCONTACT_ID = "hspm_percontact.id";
     /** 联系方式.手机号码 */
-    public static final String HSPM_PERCONTACT_E_PHONE = "hspm_percontact_e.phone";
+    public static final String HSPM_PERCONTACT_PHONE = "hspm_percontact.phone";
 
     /** 试用期.ID */
-    public static final String HSPM_TRIALPERIOD_E_ID = "hspm_trialperiod_e.id";
+    public static final String HSPM_TRIALPERIOD_ID = "hspm_trialperiod.id";
     /** 试用期.试用期长度 */
-    public static final String HSPM_TRIALPERIOD_E_PROBATION = "hspm_trialperiod_e.probation";
+    public static final String HSPM_TRIALPERIOD_PROBATION = "hspm_trialperiod.probation";
     /** 试用期.试用期单位 */
-    public static final String HSPM_TRIALPERIOD_E_PROBATIONUNIT = "hspm_trialperiod_e.probationunit";
+    public static final String HSPM_TRIALPERIOD_PROBATIONUNIT = "hspm_trialperiod.probationunit";
     /** 试用期.预计转正日期 */
-    public static final String HSPM_TRIALPERIOD_E_PREENDDATE = "hspm_trialperiod_e.preenddate";
+    public static final String HSPM_TRIALPERIOD_PREENDDATE = "hspm_trialperiod.preenddate";
     /** 试用期.试用开始日期 */
-    public static final String HSPM_TRIALPERIOD_E_TRIALSTARTDATE = "hspm_trialperiod_e.trialstartdate";
+    public static final String HSPM_TRIALPERIOD_TRIALSTARTDATE = "hspm_trialperiod.trialstartdate";
 
     /** 户口所在地.ID */
     public static final String HOUSEHOLDREGISTER_ID = "householdregister.id";
@@ -179,18 +181,18 @@ public class GECEventConstant extends FormConstant {
     public static final String RESIDENTIALADDRESS_ADDRESSINFO = "residentialaddress.addressinfo";
 
     /** 证件信息.ID */
-    public static final String HSPM_PERCRE_E_ID = "hspm_percre_e.id";
+    public static final String HSPM_PERCRE_ID = "hspm_percre.id";
     /** 证件信息.证件类型.ID */
-    public static final String HSPM_PERCRE_E_CREDENTIALSTYPE_ID = "hspm_percre_e.credentialstype.id";
+    public static final String HSPM_PERCRE_CREDENTIALSTYPE_ID = "hspm_percre.credentialstype.id";
     /** 证件信息.证件号码 */
-    public static final String HSPM_PERCRE_E_NUMBER = "hspm_percre_e.number";
+    public static final String HSPM_PERCRE_NUMBER = "hspm_percre.number";
 
     /** 中国居民身份证.ID */
-    public static final String CNIDARD_ID = "cnidard.id";
+    public static final String CNIDCARD_ID = "cnidcard.id";
     /** 中国居民身份证.证件类型.ID */
-    public static final String CNIDARD_CREDENTIALSTYPE_ID = "cnidard.credentialstype.id";
+    public static final String CNIDCARD_CREDENTIALSTYPE_ID = "cnidcard.credentialstype.id";
     /** 中国居民身份证.证件号码 */
-    public static final String CNIDARD_NUMBER = "cnidard.number";
+    public static final String CNIDCARD_NUMBER = "cnidcard.number";
 
     /** HR行政组织.ID */
     public static final String HAOS_ADMINORGHR_ID = "haos_adminorghr.id";