|
|
@@ -2,7 +2,6 @@ package nckd.jxccl.hrmp.hbpm.plugin.operate.hr;
|
|
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.google.common.collect.Maps;
|
|
|
-import kd.bos.common.enums.EnableEnum;
|
|
|
import kd.bos.dataentity.OperateOption;
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
|
import kd.bos.entity.constant.StatusEnum;
|
|
|
@@ -15,10 +14,10 @@ import kd.bos.exception.KDBizException;
|
|
|
import kd.bos.orm.query.QCP;
|
|
|
import kd.bos.orm.query.QFilter;
|
|
|
import kd.bos.service.operation.OperationServiceImpl;
|
|
|
+import kd.bos.servicehelper.coderule.CodeRuleServiceHelper;
|
|
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
|
import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
|
|
|
import kd.hr.hbp.common.constants.history.HisModelDataStatusEnum;
|
|
|
-import kd.hr.hbp.common.util.HRDynamicObjectUtils;
|
|
|
import kd.hr.hbp.common.util.HRStringUtils;
|
|
|
import nckd.jxccl.hrmp.hbpm.business.hr.PositionBillServiceHelper;
|
|
|
import nckd.jxccl.hrmp.hbpm.common.hr.PositionBillConstant;
|
|
|
@@ -49,8 +48,10 @@ public class PosBillEntryAddSaveOpPlugin extends AbstractOperationServicePlugIn
|
|
|
List<Long> positionBoIds = Lists.newArrayListWithExpectedSize(positionEntities.length);
|
|
|
// 获取 行政组织业务ID
|
|
|
List<Long> adminorgBoIds = Lists.newArrayListWithExpectedSize(positionEntities.length);
|
|
|
+ // 岗位ID标识
|
|
|
+ String positionIdKey = String.join("_", PositionBillConstant.NCKD_POSITION, PositionBillConstant.ID_KEY);
|
|
|
for (DynamicObject positionEntity : positionEntities) {
|
|
|
- positionBoIds.add(positionEntity.getLong(String.join("_", PositionBillConstant.NCKD_POSITION, PositionBillConstant.ID_KEY)));
|
|
|
+ positionBoIds.add(positionEntity.getLong(positionIdKey));
|
|
|
adminorgBoIds.add(positionEntity.getLong(PositionBillConstant.NCKD_ADMINORGBOID_KEY));
|
|
|
// 获取上级岗位
|
|
|
DynamicObject parentPositionVersionDy = positionEntity.getDynamicObject(PositionBillConstant.NCKD_PARENT);
|
|
|
@@ -77,10 +78,10 @@ public class PosBillEntryAddSaveOpPlugin extends AbstractOperationServicePlugIn
|
|
|
OperateOption operateOption = OperateOption.create();
|
|
|
List<DynamicObject> positionList = Lists.newArrayListWithExpectedSize(positionEntities.length);
|
|
|
// 需要转换的键值
|
|
|
- Map<String, String> transKeyMap = PositionBillServiceHelper.getTransKeyMap();
|
|
|
+ Map<String, String> transKeyMap = PositionBillServiceHelper.getTransKeyMap(PositionBillConstant.NCKD_POSITION_TRANSKEY_ENTITY);
|
|
|
|
|
|
for (DynamicObject positionEntity : positionEntities) {
|
|
|
- long positionId = positionEntity.getLong(String.join("_", PositionBillConstant.NCKD_POSITION, PositionBillConstant.ID_KEY));
|
|
|
+ long positionId = positionEntity.getLong(positionIdKey);
|
|
|
// 如果数据库存在则用数据库的岗位对象
|
|
|
DynamicObject positionDyo = dbPositionMap.get(positionId);
|
|
|
// 不存在则创建一个
|
|
|
@@ -88,11 +89,13 @@ public class PosBillEntryAddSaveOpPlugin extends AbstractOperationServicePlugIn
|
|
|
positionDyo = positionServiceHelper.generateEmptyDynamicObject();
|
|
|
}
|
|
|
// 将表单中的信息赋值到岗位信息中
|
|
|
- HRDynamicObjectUtils.copy(positionEntity, positionDyo, transKeyMap);
|
|
|
+ PositionBillServiceHelper.getPositionHrDy(positionEntity, positionDyo, transKeyMap);// 调用保存会自动设置
|
|
|
+ // 设置ID为岗位ID
|
|
|
+ positionDyo.set(PositionBillConstant.ID_KEY, positionId);
|
|
|
+ // 设置 是否标准岗位
|
|
|
+ positionDyo.set(PositionBillConstant.ISSTANDARDPOS_KEY, "9");// 暂存的数据固定为9,由于标品岗位一定会生成历史版本数据,所以为了能够正常的多次保存且不显示在岗位中需要这样做
|
|
|
// 设置 行政组织
|
|
|
positionDyo.set(PositionBillConstant.ADMINORG, dbAdminOrgMap.get(positionEntity.getLong(PositionBillConstant.NCKD_ADMINORGBOID_KEY)));
|
|
|
- // 设置ID
|
|
|
- positionDyo.set(PositionBillConstant.ID_KEY, positionId);
|
|
|
// 设置 上级岗位
|
|
|
DynamicObject parentPositionVersionDy = positionEntity.getDynamicObject(PositionBillConstant.NCKD_PARENT);
|
|
|
if (parentPositionVersionDy != null) {
|
|
|
@@ -100,14 +103,6 @@ public class PosBillEntryAddSaveOpPlugin extends AbstractOperationServicePlugIn
|
|
|
} else {
|
|
|
positionDyo.set(PositionBillConstant.PARENT_KEY, null);
|
|
|
}
|
|
|
- // 设置 数据状态
|
|
|
- positionDyo.set(PositionBillConstant.STATUS, StatusEnum.A);
|
|
|
- // 设置 业务状态
|
|
|
- positionDyo.set(PositionBillConstant.ENABLE, EnableEnum.YES.getCode());
|
|
|
- // 设置 是否标准岗位
|
|
|
- positionDyo.set(PositionBillConstant.ISSTANDARDPOS_KEY, EnableEnum.NO.getCode());
|
|
|
- // 设置 数据版本状态
|
|
|
- positionDyo.set(PositionBillConstant.DATA_STATUS, HisModelDataStatusEnum.TEMP.getStatus());
|
|
|
positionList.add(positionDyo);
|
|
|
String number = positionDyo.getString(PositionBillConstant.NUMBER_KEY);
|
|
|
// 设置 编码为已变更
|
|
|
@@ -115,6 +110,8 @@ public class PosBillEntryAddSaveOpPlugin extends AbstractOperationServicePlugIn
|
|
|
operateOption.setVariableValue(positionId + "coderule_billno_from_initAbstractCodeRule", PAGECACHE_KEY_BILLNO_FROM_INIT_VALUE_OF_OPERATION);
|
|
|
}
|
|
|
}
|
|
|
+ // 设置岗位临时新增标识
|
|
|
+ //operateOption.setVariableValue("OP_ADD_POSITION_TEMP_TAG", Boolean.TRUE.toString());
|
|
|
// 跳过功能权限校验
|
|
|
operateOption.setVariableValue(OperateOptionConst.ISHASRIGHT, Boolean.TRUE.toString());
|
|
|
// 跳过数据权限校验
|
|
|
@@ -123,9 +120,22 @@ public class PosBillEntryAddSaveOpPlugin extends AbstractOperationServicePlugIn
|
|
|
List successPkIds = Lists.newArrayList();
|
|
|
for (int index = 0; index < positionList.size(); ++index) {
|
|
|
DynamicObject positionDyo = positionList.get(index);
|
|
|
+ String orgId = "";
|
|
|
+ // 设置编码
|
|
|
+ if (HRStringUtils.isBlank(positionDyo.getString(PositionBillConstant.NUMBER_KEY))) {
|
|
|
+ orgId = String.valueOf(positionDyo.getLong(String.join("_", PositionBillConstant.ORG_KEY, PositionBillConstant.ID_KEY)));
|
|
|
+ String positionNumber = CodeRuleServiceHelper.getNumber(PositionBillConstant.HBPM_POSITIONHR, positionDyo, orgId);
|
|
|
+ positionDyo.set(PositionBillConstant.NUMBER_KEY, positionNumber);
|
|
|
+ }
|
|
|
+ // 保存
|
|
|
OperationServiceImpl opImpl = new OperationServiceImpl();
|
|
|
OperationResult saveResult = opImpl.localInvokeOperation(PositionBillConstant.SAVE_OP, new DynamicObject[]{positionDyo}, operateOption);
|
|
|
if (!saveResult.isSuccess()) {
|
|
|
+ // 回收编码
|
|
|
+ if (HRStringUtils.isNotBlank(orgId)) {
|
|
|
+ CodeRuleServiceHelper.recycleNumber(PositionBillConstant.HBPM_POSITIONHR, positionDyo, orgId, positionDyo.getString(PositionBillConstant.NUMBER_KEY));
|
|
|
+ }
|
|
|
+
|
|
|
for(IOperateInfo operateInfo : saveResult.getAllErrorOrValidateInfo()) {
|
|
|
errorMsgList.add(operateInfo.getMessage());
|
|
|
}
|
|
|
@@ -134,7 +144,7 @@ public class PosBillEntryAddSaveOpPlugin extends AbstractOperationServicePlugIn
|
|
|
DynamicObject[] dbPositionEntityDys = positionServiceHelper.loadDynamicObjectArray(new QFilter[]{new QFilter(PositionBillConstant.ID_KEY, QCP.in, saveResult.getSuccessPkIds())});
|
|
|
DynamicObject dbPositionEntityDy = dbPositionEntityDys[0];
|
|
|
DynamicObject positionEntity = positionEntities[index];
|
|
|
- positionEntity.set(String.join("_", PositionBillConstant.NCKD_POSITION, PositionBillConstant.ID_KEY), dbPositionEntityDy.get(PositionBillConstant.ID_KEY));
|
|
|
+ positionEntity.set(positionIdKey, dbPositionEntityDy.get(PositionBillConstant.ID_KEY));
|
|
|
positionEntity.set(PositionBillConstant.NUMBER_KEY, dbPositionEntityDy.getString(PositionBillConstant.NUMBER_KEY));
|
|
|
}
|
|
|
}
|
|
|
@@ -142,18 +152,19 @@ public class PosBillEntryAddSaveOpPlugin extends AbstractOperationServicePlugIn
|
|
|
throw new KDBizException(String.join(System.lineSeparator(), errorMsgList));
|
|
|
} else {
|
|
|
// 由于标品会强制设置值,所以需要后置更新
|
|
|
- updatePositionDataStatus(successPkIds);
|
|
|
+ //updatePositionStatus(successPkIds);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 更新岗位数据版本状态
|
|
|
+ * 更新岗位信息的状态
|
|
|
* @param successPkIds
|
|
|
*/
|
|
|
- private void updatePositionDataStatus(List successPkIds) {
|
|
|
+ private void updatePositionStatus(List successPkIds) {
|
|
|
HRBaseServiceHelper positionServiceHelper = HRBaseServiceHelper.create(PositionBillConstant.HBPM_POSITIONHR);
|
|
|
DynamicObject[] positionDys = positionServiceHelper.loadDynamicObjectArray(new QFilter[]{new QFilter(PositionBillConstant.BOID_KEY, QCP.in, successPkIds)});
|
|
|
for (DynamicObject positionDy : positionDys) {
|
|
|
+ positionDy.set(PositionBillConstant.STATUS, StatusEnum.A);
|
|
|
positionDy.set(PositionBillConstant.DATA_STATUS, HisModelDataStatusEnum.TEMP.getStatus());
|
|
|
}
|
|
|
SaveServiceHelper.save(positionDys);
|