Browse Source

feat(hr): 调整岗位序列判断逻辑

- 修改岗位序列字段取值为 data.jobSeq
- 根据岗位序列类型动态设置职级相关字段
- 管理序列时设置职业资格等级和分数
- 职能序列时设置职称等级和分数
- 更新职级计算逻辑以支持三要素检查
- 优化初定职级的降级处理机制
wyc 2 hours ago
parent
commit
636cc32a80

+ 13 - 8
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/psms/plugin/operate/initial/BaseInitialOperationPlugIn.java

@@ -367,7 +367,7 @@ public abstract class BaseInitialOperationPlugIn extends AbstractOperationServic
         personPosFile.set(PositionStructureConstant.NCKD_FIRSTRANK, EnableEnum.YES.getCode());
         personPosFile.set(PositionStructureConstant.NCKD_BEGINDATE, data.beginDate);
         personPosFile.set(PositionStructureConstant.NCKD_APPRAISALRESULT, data.lastYearAppraisalResult);
-        personPosFile.set(PositionStructureConstant.NCKD_JOBSEQHR, data.convertJobSeq);
+        personPosFile.set(PositionStructureConstant.NCKD_JOBSEQHR, data.jobSeq);
         personPosFile.set(PositionStructureConstant.NCKD_POSITIONHR, data.positionHr);
         /*personPosFile.set(PositionStructureConstant.USEORG_KEY, data.company);
         personPosFile.set(PositionStructureConstant.CREATEORG_KEY, data.dep);
@@ -379,15 +379,20 @@ public abstract class BaseInitialOperationPlugIn extends AbstractOperationServic
         personPosFile.set(PositionStructureConstant.USEORG_KEY, data.dep);*/
 
         personPosFile.set(PositionStructureConstant.NCKD_DEP, data.dep);
-
         personPosFile.set(PositionStructureConstant.NCKD_ALLSUMSCORE, allSumScore);
         personPosFile.set(PositionStructureConstant.NCKD_SUMSCORE, sumScore);
-        personPosFile.set(PositionStructureConstant.NCKD_RANKNAME, data.rankName);
-        personPosFile.set(PositionStructureConstant.NCKD_PROTITLELEVEL, scoreData.dbProTitleLevel);
-        personPosFile.set(PositionStructureConstant.NCKD_RANKSCORE, scoreData.proTitleScore);
-        personPosFile.set(PositionStructureConstant.NCKD_JOBSTATUSNAME, data.jobStatusName);
-        personPosFile.set(PositionStructureConstant.NCKD_OCPQUALLEVEL, scoreData.dbOcpQualLevel);
-        personPosFile.set(PositionStructureConstant.NCKD_JOBSTATUSSCORE, scoreData.perOcpQualScore);
+
+        DynamicObject convertJobSeq = data.convertJobSeq;
+        JobSeqEnum jobSeqEnum = JobSeqEnum.getByCode(convertJobSeq.getString(FormConstant.NUMBER_KEY));
+        if(JobSeqEnum.SKILL == jobSeqEnum){
+            personPosFile.set(PositionStructureConstant.NCKD_JOBSTATUSNAME, data.jobStatusName);
+            personPosFile.set(PositionStructureConstant.NCKD_OCPQUALLEVEL, scoreData.dbOcpQualLevel);
+            personPosFile.set(PositionStructureConstant.NCKD_JOBSTATUSSCORE, scoreData.perOcpQualScore);
+        }else{
+            personPosFile.set(PositionStructureConstant.NCKD_RANKNAME, data.rankName);
+            personPosFile.set(PositionStructureConstant.NCKD_PROTITLELEVEL, scoreData.dbProTitleLevel);
+            personPosFile.set(PositionStructureConstant.NCKD_RANKSCORE, scoreData.proTitleScore);
+        }
         personPosFile.set(PositionStructureConstant.NCKD_JOBLEVELHR, jobLeve);
         personPosFile.set(PositionStructureConstant.NCKD_DIPLOMA, data.diploma);
         personPosFile.set(PositionStructureConstant.NCKD_TYPESTATE, typeState);

+ 4 - 1
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/psms/plugin/operate/initial/ServingInitialOperationPlugIn.java

@@ -172,14 +172,17 @@ public class ServingInitialOperationPlugIn extends BaseInitialOperationPlugIn {
             // 如果是管理序列,则按职能序列进行初定
             data.convertJobSeq = JobLevelCalculatorService.handleJobSeq(data.jobSeq);
 
+
             // 计算职级
             //当考核结果为无时,职级定为最低级
             boolean useMinLevel = data.lastYearAppraisalResultEnum == nckd.jxccl.base.common.enums.AppraisalResultEnum.NONE;
             String perProTitleNumber = scoreData.dbProTitleLevel != null ? scoreData.dbProTitleLevel.getString(FormConstant.NUMBER_KEY) : null;
             String quaLevelNumber = scoreData.dbOcpQualLevel != null ? scoreData.dbOcpQualLevel.getString(FormConstant.NUMBER_KEY) : null;
+            boolean threeElementMeet = JobLevelCalculatorService.checkThreeElementsRequirement(data.convertJobSeq, data.allSumScore, scoreData.dbProTitleLevel,
+                    scoreData.dbOcpQualLevel, data.lastYearAppraisalResultEnum);
             DynamicObject jobLeve = JobLevelCalculatorService.getJobLevel(
                     data.convertJobSeq, data.allSumScore, perProTitleNumber,
-                    quaLevelNumber,  data.downgradeNum,useMinLevel,Boolean.FALSE);
+                    quaLevelNumber,  data.downgradeNum,useMinLevel,!threeElementMeet);
 
             if(jobLeve != null) {
                 // 构建职位档案并存入数据库