|
|
@@ -1,26 +1,40 @@
|
|
|
package nckd.jxccl.hr.hdm.plugin.form.transfer;
|
|
|
|
|
|
+
|
|
|
+import kd.bos.coderule.api.CodeRuleInfo;
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
+import kd.bos.dataentity.metadata.IDataEntityProperty;
|
|
|
import kd.bos.entity.QueryEntityType;
|
|
|
+import kd.bos.entity.operate.result.OperationResult;
|
|
|
import kd.bos.form.ConfirmCallBackListener;
|
|
|
import kd.bos.form.ConfirmTypes;
|
|
|
import kd.bos.form.MessageBoxOptions;
|
|
|
import kd.bos.form.MessageBoxResult;
|
|
|
+import kd.bos.form.events.AfterDoOperationEventArgs;
|
|
|
import kd.bos.form.events.BeforeDoOperationEventArgs;
|
|
|
import kd.bos.form.events.MessageBoxClosedEvent;
|
|
|
import kd.bos.form.operate.FormOperate;
|
|
|
import kd.bos.form.plugin.AbstractFormPlugin;
|
|
|
+import kd.bos.logging.Log;
|
|
|
+import kd.bos.logging.LogFactory;
|
|
|
import kd.bos.orm.query.QCP;
|
|
|
import kd.bos.orm.query.QFilter;
|
|
|
import kd.bos.servicehelper.MetadataServiceHelper;
|
|
|
+import kd.bos.servicehelper.coderule.CodeRuleServiceHelper;
|
|
|
+import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
|
+import kd.bos.servicehelper.user.UserServiceHelper;
|
|
|
+import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
|
|
|
import kd.hr.hbp.business.servicehelper.HRQueryEntityHelper;
|
|
|
import kd.hr.hbp.common.util.HRDynamicObjectUtils;
|
|
|
+import kd.hr.hbp.common.util.HRObjectUtils;
|
|
|
import kd.hr.hbp.common.util.HRStringUtils;
|
|
|
+import kd.sdk.hr.hdm.common.enums.reg.RegBillStatusEnum;
|
|
|
import nckd.jxccl.base.common.utils.QueryFieldBuilder;
|
|
|
import nckd.jxccl.hr.hdm.common.transfer.TransferApplyBillConstant;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.EventObject;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
@@ -30,6 +44,57 @@ import java.util.List;
|
|
|
* @date: 2026/1/4 15:34
|
|
|
*/
|
|
|
public class TransferApplyBillFormPlugin extends AbstractFormPlugin {
|
|
|
+ Log log = LogFactory.getLog(TransferApplyBillFormPlugin.class);
|
|
|
+
|
|
|
+ private static final HRBaseServiceHelper transferApplyHelper = HRBaseServiceHelper.create(TransferApplyBillConstant.HDM_TRANSFERAPPLY);
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void afterBindData(EventObject e) {
|
|
|
+ super.afterBindData(e);
|
|
|
+
|
|
|
+ DynamicObject dataEntity = getModel().getDataEntity();
|
|
|
+ String billStatus = dataEntity.getString(TransferApplyBillConstant.BILL_STATUS_KEY);
|
|
|
+ // 如果不是已提交或审批中
|
|
|
+ if (!HRStringUtils.equalsAny(billStatus, RegBillStatusEnum.ALREADYSUBMIT.getCode(), RegBillStatusEnum.APPROVING.getCode())) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取当前登录用户
|
|
|
+ long currentUserId = UserServiceHelper.getCurrentUserId();
|
|
|
+ String selectFields = QueryFieldBuilder.create()
|
|
|
+ .add(TransferApplyBillConstant.ID_KEY)
|
|
|
+ .add(TransferApplyBillConstant.NCKD_TRANSFERADDR_KEY)
|
|
|
+ .add(TransferApplyBillConstant.NCKD_TRANSFERZIP_KEY)
|
|
|
+ .add(TransferApplyBillConstant.NCKD_TRANSFERCONT_KEY)
|
|
|
+ .add(TransferApplyBillConstant.NCKD_TRANSFERTEL_KEY)
|
|
|
+ .buildSelect();
|
|
|
+ // 查询最近一笔调动单修改人是该用户的数据
|
|
|
+ DynamicObject transferApplyDy = transferApplyHelper.queryOriginalOne(selectFields, new QFilter[]{new QFilter(TransferApplyBillConstant.BILL_STATUS_KEY, QCP.equals, RegBillStatusEnum.APPROVEPASSED.getCode()).and(TransferApplyBillConstant.MODIFIER_KEY, QCP.equals, currentUserId)}, String.format("%s desc", TransferApplyBillConstant.MODIFY_TIME_KEY));
|
|
|
+ if (HRObjectUtils.isEmpty(transferApplyDy)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ getModel().setValue(TransferApplyBillConstant.NCKD_TRANSFERADDR_KEY, transferApplyDy.get(TransferApplyBillConstant.NCKD_TRANSFERADDR_KEY));
|
|
|
+ getModel().setValue(TransferApplyBillConstant.NCKD_TRANSFERZIP_KEY, transferApplyDy.get(TransferApplyBillConstant.NCKD_TRANSFERZIP_KEY));
|
|
|
+ getModel().setValue(TransferApplyBillConstant.NCKD_TRANSFERCONT_KEY, transferApplyDy.get(TransferApplyBillConstant.NCKD_TRANSFERCONT_KEY));
|
|
|
+ getModel().setValue(TransferApplyBillConstant.NCKD_TRANSFERTEL_KEY, transferApplyDy.get(TransferApplyBillConstant.NCKD_TRANSFERTEL_KEY));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void afterCreateNewData(EventObject e) {
|
|
|
+ super.afterCreateNewData(e);
|
|
|
+
|
|
|
+ // 获取当前登录用户
|
|
|
+ long currentUserId = UserServiceHelper.getCurrentUserId();
|
|
|
+ // 查询最近一笔调动单创建人是该用户的数据
|
|
|
+ DynamicObject transferApplyDy = transferApplyHelper.queryOriginalOne(String.join(",", TransferApplyBillConstant.ID_KEY, TransferApplyBillConstant.NCKD_TRANSFERNO_KEY), new QFilter[]{new QFilter(TransferApplyBillConstant.BILL_STATUS_KEY, QCP.equals, RegBillStatusEnum.APPROVEPASSED.getCode()).and(TransferApplyBillConstant.CREATOR_KEY, QCP.equals, currentUserId)}, String.format("%s desc", TransferApplyBillConstant.MODIFY_TIME_KEY));
|
|
|
+ if (HRObjectUtils.isEmpty(transferApplyDy)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置调令号
|
|
|
+ getModel().setValue(TransferApplyBillConstant.NCKD_TRANSFERNO_KEY, transferApplyDy.get(TransferApplyBillConstant.NCKD_TRANSFERNO_KEY));
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public void beforeDoOperation(BeforeDoOperationEventArgs args) {
|
|
|
@@ -42,7 +107,46 @@ public class TransferApplyBillFormPlugin extends AbstractFormPlugin {
|
|
|
if (!HRStringUtils.equals(Boolean.TRUE.toString(), getView().getPageCache().get(TransferApplyBillConstant.FAMILY_RELATION_CONFIRM_PAGE_CACHE))) {
|
|
|
validateFamilyRelation(args);
|
|
|
}
|
|
|
+
|
|
|
+ // 判断变更的属性是否影响调令顺序号生成
|
|
|
+ List<IDataEntityProperty> dataEntityProperties = getModel().getDataEntity().getDataEntityState().GetDirtyProperties();
|
|
|
+ for (IDataEntityProperty property : dataEntityProperties) {
|
|
|
+ if (HRStringUtils.equalsAny(property.getName(), TransferApplyBillConstant.PLANDATE_KEY, TransferApplyBillConstant.NCKD_TRANSFERNO_KEY)) {
|
|
|
+ getModel().setValue(TransferApplyBillConstant.NCKD_GEN_SERIALNO_KEY, true);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
|
|
|
+ super.afterDoOperation(afterDoOperationEventArgs);
|
|
|
+
|
|
|
+ String operateKey = afterDoOperationEventArgs.getOperateKey();
|
|
|
+ switch (operateKey){
|
|
|
+ case TransferApplyBillConstant.SAVE_OP:
|
|
|
+ OperationResult operationResult = afterDoOperationEventArgs.getOperationResult();
|
|
|
+ if (!operationResult.isSuccess() || operationResult.getSuccessPkIds().isEmpty() || !HRStringUtils.equals("true", getModel().getDataEntity().getString(TransferApplyBillConstant.NCKD_GEN_SERIALNO_KEY))) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ generateTransferSerialNo();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成调令顺序号
|
|
|
+ */
|
|
|
+ private void generateTransferSerialNo() {
|
|
|
+ DynamicObject dataEntity = getModel().getDataEntity();
|
|
|
+ CodeRuleInfo codeRuleInfo = CodeRuleServiceHelper.getCodeRule(dataEntity.getDataEntityType().getName(), dataEntity, dataEntity.getString(String.join(".", TransferApplyBillConstant.ORG_KEY, TransferApplyBillConstant.ID_KEY)));
|
|
|
+ if (HRObjectUtils.isEmpty(codeRuleInfo) || !HRStringUtils.equals("调令号生成规则", codeRuleInfo.getName())) {
|
|
|
+ dataEntity.set(TransferApplyBillConstant.NCKD_TRANSFER_SERIALNO_KEY, null);
|
|
|
+ } else {
|
|
|
+ dataEntity.set(TransferApplyBillConstant.NCKD_TRANSFER_SERIALNO_KEY, CodeRuleServiceHelper.getNumber(codeRuleInfo, dataEntity));
|
|
|
}
|
|
|
+ SaveServiceHelper.save(new DynamicObject[]{dataEntity});
|
|
|
}
|
|
|
|
|
|
private void validateFamilyRelation(BeforeDoOperationEventArgs args) {
|