소스 검색

refactor(hr): 重构岗位暂存数据删除逻辑

- 添加事务处理确保数据一致性
- 将岗位删除逻辑封装为独立方法 delAddMasterForBos
- 使用 try-with-resources 管理事务资源
- 移除旧的直接删除调用方式
- 增加代码可读性和维护性
jtd 6 일 전
부모
커밋
ea762b287f

+ 10 - 2
code/hrmp/nckd-jxccl-hrmp/src/main/java/nckd/jxccl/hrmp/hbpm/plugin/operate/hr/PosBillEntryNewPositionTempSaveOpPlugin.java

@@ -4,6 +4,8 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import kd.bos.dataentity.OperateOption;
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.db.tx.TX;
+import kd.bos.db.tx.TXHandle;
 import kd.bos.entity.constant.StatusEnum;
 import kd.bos.entity.operate.OperateOptionConst;
 import kd.bos.entity.operate.result.IOperateInfo;
@@ -151,8 +153,7 @@ public class PosBillEntryNewPositionTempSaveOpPlugin extends AbstractOperationSe
 
         // 不论成功与否,都调用岗位删除,BOS岗位不需要暂存数据
         List<Long> positionIds = positionList.stream().map(positionDy -> positionDy.getLong(PositionBillConstant.ID_KEY)).collect(Collectors.toList());
-        //HRBaseServiceHelper.create(PositionBillConstant.BOS_POSITION_ENTITY).deleteByFilter(new QFilter[]{new QFilter(PositionBillConstant.ID_KEY, QCP.in, positionIds)});
-        PositionBillServiceHelper.delAddMaster(positionIds);
+        delAddMasterForBos(positionIds);
 
         if (!errorMsgList.isEmpty()) {
             throw new KDBizException(String.join(System.lineSeparator(), errorMsgList));
@@ -176,4 +177,11 @@ public class PosBillEntryNewPositionTempSaveOpPlugin extends AbstractOperationSe
         SaveServiceHelper.save(positionDys);
     }
 
+    private void delAddMasterForBos(List<Long> positionIdList) {
+        try (TXHandle txHandle = TX.requiresNew()) {
+            // 删除BOS岗位暂存的数据
+            HRBaseServiceHelper.create(PositionBillConstant.BOS_POSITION_ENTITY).deleteByFilter(new QFilter[]{new QFilter(PositionBillConstant.ID_KEY, QCP.in, positionIdList)});
+        }
+    }
+
 }