Преглед на файлове

feat(pm): 调整薪资相关常量及逻辑处理

- 将薪资调整跟踪器中的常量值统一转为小写格式
- 新增调薪差字段 NCKD_ADJUSTDIFF 到薪资调整跟踪器
- 在创建新的绩效管理周期时设置控制策略为全局共享
- 更新绩效管理周期的最后周期引用关系
- 优化薪资调整规则判断逻辑,确保连续两年优秀优先处理
- 修复三年合格及以上规则与连续两年优秀规则的冲突处理
wyc преди 1 седмица
родител
ревизия
90d4cf331a

+ 18 - 16
code/opmc/nckd-jxccl-opmc/src/main/java/nckd/jxccl/opmc/pm/common/SalAdjTrackerConstant.java

@@ -13,35 +13,37 @@ public class SalAdjTrackerConstant extends FormConstant {
     /** 调薪情况-实体标识 */
     public static final String SALADJTRACKER_ENTITYID = "nckd_saladjtracker";
     /** 考核周期 */
-    public static final String NCKD_PERFMANAGER = "NCKD_PERFMANAGER";
+    public static final String NCKD_PERFMANAGER = "nckd_perfmanager";
     /** 原薪等 */
-    public static final String NCKD_OLDSALARYGRADE = "NCKD_OLDSALARYGRADE";
+    public static final String NCKD_OLDSALARYGRADE = "nckd_oldsalarygrade";
     /** 原薪档 */
-    public static final String NCKD_OLDSALARYRANK = "NCKD_OLDSALARYRANK";
+    public static final String NCKD_OLDSALARYRANK = "nckd_oldsalaryrank";
     /** 原金额 */
-    public static final String NCKD_OLDMONEY = "NCKD_OLDMONEY";
+    public static final String NCKD_OLDMONEY = "nckd_oldmoney";
     /** 目标薪等 */
-    public static final String NCKD_SALARYGRADE = "NCKD_SALARYGRADE";
+    public static final String NCKD_SALARYGRADE = "nckd_salarygrade";
     /** 目标薪档 */
-    public static final String NCKD_SALARYRANK = "NCKD_SALARYRANK";
+    public static final String NCKD_SALARYRANK = "nckd_salaryrank";
     /** 目标金额 */
-    public static final String NCKD_MONEY = "NCKD_MONEY";
+    public static final String NCKD_MONEY = "nckd_money";
     /** 调档原因 */
-    public static final String NCKD_WAGEEXPLAIN = "NCKD_WAGEEXPLAIN";
+    public static final String NCKD_WAGEEXPLAIN = "nckd_wageexplain";
     /** 调薪类型 */
-    public static final String NCKD_APPRAISALTYPE = "NCKD_APPRAISALTYPE";
+    public static final String NCKD_APPRAISALTYPE = "nckd_appraisaltype";
     /** 处理状态 */
-    public static final String NCKD_WAGESTATUS = "NCKD_WAGESTATUS";
+    public static final String NCKD_WAGESTATUS = "nckd_wagestatus";
     /** 统计年度 */
-    public static final String NCKD_TODOYEAR = "NCKD_TODOYEAR";
+    public static final String NCKD_TODOYEAR = "nckd_todoyear";
     /** 原薪酬项目 */
-    public static final String NCKD_OLDSTANDARDITEM = "NCKD_OLDSTANDARDITEM";
+    public static final String NCKD_OLDSTANDARDITEM = "nckd_oldstandarditem";
     /** 薪酬项目 */
-    public static final String NCKD_STANDARDITEM = "NCKD_STANDARDITEM";
+    public static final String NCKD_STANDARDITEM = "nckd_standarditem";
     /** 补差金额 */
-    public static final String NCKD_ADJMONEY = "NCKD_ADJMONEY";
+    public static final String NCKD_ADJMONEY = "nckd_adjmoney";
     /** 部门 */
-    public static final String NCKD_DEP = "NCKD_DEP";
+    public static final String NCKD_DEP = "nckd_dep";
     /** 岗位 */
-    public static final String NCKD_POSITION = "NCKD_POSITION";
+    public static final String NCKD_POSITION = "nckd_position";
+    /** 调薪差 */
+    public static final String NCKD_ADJUSTDIFF = "nckd_adjustdiff";
 }

+ 25 - 21
code/opmc/nckd-jxccl-opmc/src/main/java/nckd/jxccl/opmc/pm/plugin/operate/salary/SalaryAdjOpPlugin.java

@@ -395,6 +395,7 @@ public class SalaryAdjOpPlugin extends AbstractOperationServicePlugIn implements
                     newSalAdjTracker.set(SalAdjTrackerConstant.NCKD_WAGEEXPLAIN, result.reason);
                     newSalAdjTracker.set(SalAdjTrackerConstant.NCKD_APPRAISALTYPE, result.type);
                     newSalAdjTracker.set(SalAdjTrackerConstant.NCKD_WAGESTATUS,"1");
+                    newSalAdjTracker.set(SalAdjTrackerConstant.NCKD_ADJUSTDIFF,result.level);
                     newSalAdjTracker.set(SalAdjTrackerConstant.NCKD_OLDSTANDARDITEM, result.oldStandardItem);
                     newSalAdjTracker.set(SalAdjTrackerConstant.NCKD_STANDARDITEM, result.oldStandardItem);
                     newSalAdjTracker.set(SalAdjTrackerConstant.NCKD_ADJMONEY, result.amount.subtract(result.oldAmount));
@@ -447,6 +448,7 @@ public class SalaryAdjOpPlugin extends AbstractOperationServicePlugIn implements
                 DynamicObject person = perfManager.getDynamicObject(FormConstant.NCKD_PERSON);
                 String personName = person.getString(FormConstant.NAME_KEY);
                 newPerfManager.set(FormConstant.CREATEORG_KEY, perfManager.get(FormConstant.CREATEORG_KEY));
+                newPerfManager.set(PerfManagerFormConstant.CTRLSTRATEGY_KEY, CtrlStrategyEnum.GLOBAL_SHARE.getCtrlStrategy());
                 newPerfManager.set(FormConstant.NCKD_EMPPOSORGREL, perfManager.getDynamicObject(FormConstant.NCKD_EMPPOSORGREL));
                 newPerfManager.set(FormConstant.NCKD_DEP, perfManager.getDynamicObject(FormConstant.NCKD_DEP));
                 newPerfManager.set(FormConstant.NCKD_PERSON, person);
@@ -455,7 +457,7 @@ public class SalaryAdjOpPlugin extends AbstractOperationServicePlugIn implements
                 newPerfManager.set(PerfManagerFormConstant.NCKD_BEGINYEAR, DateUtil.toDate(newBeginDate));
                 newPerfManager.set(PerfManagerFormConstant.NCKD_ENDYEAR, DateUtil.toDate(newEndDate));
                 newPerfManager.set(PerfManagerFormConstant.DESCRIPTION_KEY, "调档后生成新周期");
-                newPerfManager.set(PerfManagerFormConstant.CTRLSTRATEGY_KEY, CtrlStrategyEnum.GLOBAL_SHARE.getCtrlStrategy());
+                newPerfManager.set(PerfManagerFormConstant.NCKD_LASTPERFMANAGER,perfManager);
                 newPerfManager.set(FormConstant.NAME_KEY, StrFormatter.format("【{}】{}~{}的考核周期",personName,newBeginDate.getYear(),newEndDate.getYear()));
                 addPerfManagerList.add(newPerfManager);
             }
@@ -578,29 +580,31 @@ public class SalaryAdjOpPlugin extends AbstractOperationServicePlugIn implements
                         firstYearValue, firstYearResultName, secondYearValue, secondYearResultName, thirdYearValue, thirdYearResultName);
                 type = TYPE_PROMOTE_FOR_TWO_EXCELLENT_AND_THREE_PASS_FOR_TWO_YEARS;
                 level = 2;
-            }
-            // 规则2: 考核结果连续两年优秀-上调一档(只要连续两年优秀就可以上调,不需要三年都存在)
-            if ((isFirstYearExcellent && isSecondYearExcellent) ||
-                    (isSecondYearExcellent && isThirdYearExcellent)) {
-                reason = String.format("连续两年考核结果为【优秀】【升一档】(%d年:%s,%d年:%s,%d年:%s)",
-                        firstYearValue, firstYearResultName, secondYearValue, secondYearResultName, thirdYearValue, thirdYearResultName);
-                type = TYPE_PROMOTE_FOR_TWO_EXCELLENT;
-                level = 1;
-            }
-            // 规则1: 考核结果三年合格及以上-上调一档(较低优先级)
-            if (isFirstYearQualifiedOrAbove && isSecondYearQualifiedOrAbove && isThirdYearQualifiedOrAbove) {
-                reason = String.format("三年考核结果均为【合格】【升一档】(%d年:%s,%d年:%s,%d年:%s)",
-                        firstYearValue, firstYearResultName, secondYearValue, secondYearResultName, thirdYearValue, thirdYearResultName);
-                // 特殊处理:如果是因为连续两年优秀上调一档,并且同时满足三年合格及以上,则更新类型
-                if(type == TYPE_PROMOTE_FOR_TWO_EXCELLENT){
-                    reason = String.format("连续两年考核结果【优秀】且三年【合格及以上】【升一档】(%d年:%s,%d年:%s,%d年:%s)",
+            }else{
+                // 规则2: 考核结果连续两年优秀-上调一档(只要连续两年优秀就可以上调,不需要三年都存在)
+                if ((isFirstYearExcellent && isSecondYearExcellent) ||
+                        (isSecondYearExcellent && isThirdYearExcellent)) {
+                    reason = String.format("连续两年考核结果为【优秀】【升一档】(%d年:%s,%d年:%s,%d年:%s)",
                             firstYearValue, firstYearResultName, secondYearValue, secondYearResultName, thirdYearValue, thirdYearResultName);
-                    type = TYPE_PROMOTE_FOR_TWO_EXCELLENT_AND_THREE_PASS;
-                }else{
-                    type = TYPE_PROMOTE_FOR_THREE_PASS;
+                    type = TYPE_PROMOTE_FOR_TWO_EXCELLENT;
+                    level = 1;
+                }
+                // 规则1: 考核结果三年合格及以上-上调一档(较低优先级)
+                if (isFirstYearQualifiedOrAbove && isSecondYearQualifiedOrAbove && isThirdYearQualifiedOrAbove) {
+                    reason = String.format("三年考核结果均为【合格】【升一档】(%d年:%s,%d年:%s,%d年:%s)",
+                            firstYearValue, firstYearResultName, secondYearValue, secondYearResultName, thirdYearValue, thirdYearResultName);
+                    // 特殊处理:如果是因为连续两年优秀上调一档,并且同时满足三年合格及以上,则更新类型
+                    if(type == TYPE_PROMOTE_FOR_TWO_EXCELLENT){
+                        reason = String.format("连续两年考核结果【优秀】且三年【合格及以上】【升一档】(%d年:%s,%d年:%s,%d年:%s)",
+                                firstYearValue, firstYearResultName, secondYearValue, secondYearResultName, thirdYearValue, thirdYearResultName);
+                        type = TYPE_PROMOTE_FOR_TWO_EXCELLENT_AND_THREE_PASS;
+                    }else{
+                        type = TYPE_PROMOTE_FOR_THREE_PASS;
+                    }
+                    level = 1;
                 }
-                level = 1;
             }
+
         }
         return new SalaryAdjustmentResult(type, level, reason);
     }