Просмотр исходного кода

feat(pm): 添加定调薪生成功能及相关字段

- 在常量类中新增是否已生成定调薪和定调薪ID字段
- 优化生成调薪逻辑,增加组织机构相关处理
- 更新生成调薪操作插件,完善过滤条件与保存流程
- 调整绩效管理实体创建时的组织信息设置
- 完善调薪跟踪记录的生成与保存机制
wyc 6 дней назад
Родитель
Сommit
0b6e8bbabe

+ 4 - 0
code/opmc/nckd-jxccl-opmc/src/main/java/nckd/jxccl/opmc/pm/common/PerfManagerFormConstant.java

@@ -39,6 +39,10 @@ public class PerfManagerFormConstant extends FormConstant {
     public static final String NCKD_LASTPERFMANAGER = "nckd_lastperfmanager";
     /**生成调薪按钮*/
     public static final String NCKD_GENERATE = "nckd_generate";
+    /**是否已生成定调薪*/
+    public static final String NCKD_SALARYADJUSTGENFLAG = "nckd_salaryadjustgenflag";
+    /**定调薪ID*/
+    public static final String NCKD_SALADJID = "nckd_saladjid";
 
     /** 人员考评管理分录实体名称 */
     public static final String NCKD_PERFMANAGERENTRY = "nckd_perfmanagerentry";

+ 10 - 0
code/opmc/nckd-jxccl-opmc/src/main/java/nckd/jxccl/opmc/pm/plugin/operate/cycle/CycleGenerateOpPlugin.java

@@ -12,6 +12,7 @@ import kd.bos.dataentity.OperateOption;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.entity.EntityMetadataCache;
+import kd.bos.entity.MainEntityType;
 import kd.bos.entity.QueryEntityType;
 import kd.bos.entity.operate.OperateOptionConst;
 import kd.bos.entity.operate.result.IOperateInfo;
@@ -20,6 +21,7 @@ import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
 import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.basedata.BaseDataServiceHelper;
 import kd.bos.servicehelper.operation.OperationServiceHelper;
 import kd.hr.hbp.business.servicehelper.HRQueryEntityHelper;
 import kd.hr.hbp.common.model.AuthorizedOrgResultWithSub;
@@ -35,6 +37,7 @@ import nckd.jxccl.base.common.utils.QueryFieldBuilder;
 import nckd.jxccl.base.common.utils.StrFormatter;
 import nckd.jxccl.base.entity.helper.EntityHelper;
 import nckd.jxccl.opmc.pm.common.PerfManagerFormConstant;
+import nckd.jxccl.opmc.pm.common.SalAdjTrackerConstant;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -88,12 +91,19 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
         }
         SaveServiceHelper.update(dbPerfManagerArray);*/
 
+        MainEntityType bosOrgEntityType = EntityMetadataCache.getDataEntityType(FormConstant.BOS_ORG);
+        List<Long> createOrgList = BaseDataServiceHelper.getCreateOrgList(SalAdjTrackerConstant.SALADJTRACKER_ENTITYID);
+        DynamicObject org = new DynamicObject(bosOrgEntityType);
+        if (!createOrgList.isEmpty()) {
+            org.set(FormConstant.ID_KEY, createOrgList.get(0));
+        }
 
         //调用save-op
         List<DynamicObject> savePerfManager = new ArrayList<>();
         for (PerfManagerSaveOpPlugin.PersonPerfInfo value : pendingCyclePersonnelMap.values()) {
             DynamicObject newPerfManager = EntityHelper.newEntity(PerfManagerFormConstant.PERFMANAGER_ENTITYID);
             String personName = value.getPerson().getString(FormConstant.NAME_KEY);
+            newPerfManager.set(FormConstant.CREATEORG_KEY, org);
             newPerfManager.set(FormConstant.NCKD_EMPPOSORGREL, value.getEmpPosOrgRel());
             newPerfManager.set(FormConstant.NCKD_DEP, value.getAdminOrg());
             newPerfManager.set(FormConstant.NCKD_PERSON, value.getPerson());

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

@@ -63,7 +63,7 @@ import java.util.StringJoiner;
 import java.util.stream.Collectors;
 
 /**
- * 生成调薪
+ * 生成调薪情况
  * 实体标识:nckd_saladjtracker
  * @author W.Y.C
  * @date 2025/11/24 13:14
@@ -104,6 +104,7 @@ public class SalaryAdjOpPlugin extends AbstractOperationServicePlugIn implements
                 PermItemConst.ITEM_VIEW, "hrpi_empposorgrel.adminorg", new HashMap<>());
         // 构建考核周期查询条件
         QFilter perfManagerFilter = buildPerfManagerFilter(userAdminOrgWithSub);
+        perfManagerFilter.and(PerfManagerFormConstant.NCKD_SALARYADJUSTGENFLAG,QCP.not_equals,EnableEnum.YES.getCode());
         QueryFieldBuilder perfManagerQueryFieldBuilder = buildPerfManagerQueryFieldBuilder();
         DynamicObjectCollection perfManagerList = QueryServiceHelper.query(PerfManagerFormConstant.PERFMANAGER_ENTITYID, perfManagerQueryFieldBuilder.buildSelect(), new QFilter[]{perfManagerFilter});
 
@@ -426,6 +427,7 @@ public class SalaryAdjOpPlugin extends AbstractOperationServicePlugIn implements
                     perfManager.set(PerfManagerFormConstant.NCKD_WHYEND, "调档后结束");
                     perfManager.set(PerfManagerFormConstant.NCKD_THESTATUS, "2");
                     perfManager.set(PerfManagerFormConstant.NCKD_LOCKUSER, currUser);
+                    perfManager.set(PerfManagerFormConstant.NCKD_SALARYADJUSTGENFLAG, EnableEnum.YES.getCode());
                     LocalDateTime beginDate = DateUtil.toLocalDateTime(perfManager.getDate(PerfManagerFormConstant.NCKD_BEGINYEAR));
                     LocalDateTime endDate = DateUtil.toLocalDateTime(perfManager.getDate(PerfManagerFormConstant.NCKD_ENDYEAR));
                     //第一年考核结果
@@ -478,6 +480,7 @@ public class SalaryAdjOpPlugin extends AbstractOperationServicePlugIn implements
                 OperateOption option = OperateOption.create();
                 option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, Boolean.TRUE + "");
                 option.setVariableValue("isUpdate", Boolean.TRUE + "");
+                //保存当前考核周期
                 OperationResult operationResult = SaveServiceHelper.saveOperate(FormConstant.SAVE_OP, PerfManagerFormConstant.PERFMANAGER_ENTITYID, perfManagerArray, option);
                 if (!operationResult.isSuccess()) {
                     StringJoiner errorMsgJoiner = new StringJoiner(StrFormatter.LINE_SEPARATOR);
@@ -490,6 +493,7 @@ public class SalaryAdjOpPlugin extends AbstractOperationServicePlugIn implements
                     }
                     throw new ValidationException("保存考核周期失败,原因:" + errorMsg);
                 } else {
+                    //生成新周期
                     OperateOption addPerfManagerOption = OperateOption.create();
                     addPerfManagerOption.setVariableValue(OperateOptionConst.IGNOREINTERACTION, Boolean.TRUE + "");
                     addPerfManagerOption.setVariableValue("cyclegenerate", Boolean.TRUE + "");
@@ -502,6 +506,7 @@ public class SalaryAdjOpPlugin extends AbstractOperationServicePlugIn implements
                         }
                         throw new ValidationException(errorMsg.toString());
                     } else {
+                        //生成调薪情况
                         OperationResult salAdjTrackerResult = SaveServiceHelper.saveOperate(FormConstant.SAVE_OP, SalAdjTrackerConstant.SALADJTRACKER_ENTITYID, addSalAdjTrackerList.toArray(new DynamicObject[0]), OperateOption.create());
                         if (!salAdjTrackerResult.isSuccess()) {
                             StringJoiner errorMsgJoiner = new StringJoiner(StrFormatter.LINE_SEPARATOR);