费用报销单提交校验逻辑:申请人需与个人的收款信息中的收款人一致

This commit is contained in:
xuhaihui 2025-07-15 18:28:21 +08:00
parent a15bdb2293
commit ee55e6dd24
2 changed files with 66 additions and 1 deletions

View File

@ -0,0 +1,64 @@
package zcgj.zcdev.zcdev.fs.plugin.operate;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.ExtendedDataEntity;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.AddValidatorsEventArgs;
import kd.bos.entity.plugin.PreparePropertysEventArgs;
import kd.bos.entity.validate.AbstractValidator;
import zcgj.zcdev.zcdev.fs.utils.OrgCheckUtils;
/*
* 费用报销单提交校验逻辑申请人需与个人的收款信息中的收款人一致
*/
public class DailyReimbursSubOp extends AbstractOperationServicePlugIn {
@Override
public void onPreparePropertys(PreparePropertysEventArgs e) {
super.onPreparePropertys(e);
e.getFieldKeys().add("costcompany");
e.getFieldKeys().add("applier");
e.getFieldKeys().add("zcgj_invoiceremark");
e.getFieldKeys().add("accountentry");
e.getFieldKeys().add("payertype");
}
@Override
public void onAddValidators(AddValidatorsEventArgs e) {
super.onAddValidators(e);
e.getValidators().add(new ValidatorExt());
}
class ValidatorExt extends AbstractValidator {
@Override
public void validate() {
ExtendedDataEntity[] extendedDataEntities = this.getDataEntities();
for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) {
DynamicObject dataEntity = extendedDataEntity.getDataEntity();
DynamicObject costCompany = dataEntity.getDynamicObject("costcompany");//费用承担公司
if (costCompany != null) {
Long companyId = costCompany.getLong("id");
if (OrgCheckUtils.isKS(companyId)) {
//仅针对矿山下组织下的逻辑
DynamicObject applier = dataEntity.getDynamicObject("applier");//申请人
String zcgj_invoiceremark = dataEntity.getString("zcgj_invoiceremark");//特殊说明
DynamicObjectCollection accountEntryCollection = dataEntity.getDynamicObjectCollection("accountentry");//收款信息
if (accountEntryCollection.size() > 0) {
for (int i = 0; i < accountEntryCollection.size(); i++) {
DynamicObject accountEntry = accountEntryCollection.get(i);
String payerType = accountEntry.getString("payertype");//收款人类型
if (payerType.equals("er_payeer")) {
DynamicObject payer = accountEntry.getDynamicObject("payer");//收款人(个人
if (payer != null && applier != null && !applier.getString("number").equals(payer.getString("number")) && "".equals(zcgj_invoiceremark)) {
//申请人和收款人不一致
this.addFatalErrorMessage(extendedDataEntity, "收款人与申请人不一致!请填写特殊说明!");
}
}
}
}
}
}
}
}
}
}

View File

@ -12,7 +12,7 @@ import zcgj.zcdev.zcdev.fs.utils.OrgCheckUtils;
/*
对公报销单提交校验插件校验往来单位与开票公司是否一致不一致需填写特殊说明
*/
public class PublicReimburPayeriOp extends AbstractOperationServicePlugIn {
public class PublicReimburPayerSubOp extends AbstractOperationServicePlugIn {
@Override
public void onPreparePropertys(PreparePropertysEventArgs e) {
@ -21,6 +21,7 @@ public class PublicReimburPayeriOp extends AbstractOperationServicePlugIn {
e.getFieldKeys().add("billpayerid");
e.getFieldKeys().add("zcgj_invoiceremark");
e.getFieldKeys().add("makeoutcompname");
e.getFieldKeys().add("costcompany");
}
@Override