1
0

3 Ревизии 11bb3258f2 ... d5db630e51

Автор SHA1 Съобщение Дата
  wyc d5db630e51 fix(hr): 修正年度调整逻辑中的空指针异常 преди 4 дни
  wyc a649ec68fc Merge branch 'refs/heads/master' into feat-swc-mas_1.0 преди 4 дни
  wyc 636cc32a80 feat(hr): 调整岗位序列判断逻辑 преди 5 дни

+ 2 - 2
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/psms/business/AnnualAdjustmentService.java

@@ -662,7 +662,7 @@ public class AnnualAdjustmentService {
             newjobgradeindex = maxJobGradeIndex;
         }
 
-        if((ac.data.getZgjbId() == null || ac.data.getZyjndjId() == 0) && (ac.data.getZyjndjId() == null || ac.data.getZyjndjId() == 0)) {
+        if((ac.data.getZgjbId() == null || ac.data.getZgjbId() == 0) && (ac.data.getZyjndjId() == null || ac.data.getZyjndjId() == 0)) {
             //如果没有聘任则取最低职级
             jobLevel = JobLevelCalculatorService.getLowestJobLevel(ac.convertJobSeq);
             if(jobLevel != null) {
@@ -679,7 +679,7 @@ public class AnnualAdjustmentService {
         }
 
 
-        if((ac.data.getZgjbId() == null || ac.data.getZyjndjId() == 0) && (ac.data.getZyjndjId() == null || ac.data.getZyjndjId() == 0)) {
+        if((ac.data.getZgjbId() == null || ac.data.getZgjbId() == 0) && (ac.data.getZyjndjId() == null || ac.data.getZyjndjId() == 0)) {
             //无聘任
             ac.adjustType = "7";
         }else if (newjobgradeindex == ac.data.getLastJobGradeIndex()) {

+ 3 - 1
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/psms/helper/ContributionHelper.java

@@ -621,9 +621,11 @@ public class ContributionHelper {
         public BigDecimal getValidScore() {
             //为空时说明不限制分数
             BigDecimal trulyValidScore = this.currentScore;
-            if(this.validScore != null){
+            if(this.validScore != null && this.currentScore != null){
                 //如果可使用分数超过录入分数则使用录入分数(oriScore),否则使用可使用分数
                 trulyValidScore = this.validScore.min(this.currentScore);
+            }else{
+                return BigDecimal.ZERO;
             }
             return trulyValidScore;
         }

+ 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) {
                 // 构建职位档案并存入数据库