工序期间成本预算保存提交添加校验:项目加期间加版本的组合是否存在,存在便提示不可重复创建

This commit is contained in:
xuhaihui 2025-08-07 10:35:55 +08:00
parent bdfb0c1658
commit 728ec480c0
1 changed files with 56 additions and 0 deletions

View File

@ -0,0 +1,56 @@
package zcgj.zcdev.zcdev.pr.plugin.operate;
import kd.bos.dataentity.entity.DynamicObject;
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 kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import java.math.BigDecimal;
/**
* 工序期间成本预算保存提交操作插件;
* 说明校验项目加期间加版本的组合是否存在存在便提示不可重复创建
*/
public class PeriodCostBSaveOrSubOp extends AbstractOperationServicePlugIn {
@Override
public void onPreparePropertys(PreparePropertysEventArgs e) {
super.onPreparePropertys(e);
e.getFieldKeys().add("period");//期间
e.getFieldKeys().add("project");//项目
e.getFieldKeys().add("versionno");//版本号
}
@Override
public void onAddValidators(AddValidatorsEventArgs e) {
super.onAddValidators(e);
e.getValidators().add(new PeriodCostBSaveOrSubOp.ValidatorExt());
}
class ValidatorExt extends AbstractValidator {
@Override
public void validate() {
ExtendedDataEntity[] extendedDataEntities = this.getDataEntities();
for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) {
DynamicObject extendedData = extendedDataEntity.getDataEntity();
DynamicObject project = extendedData.getDynamicObject("project");//项目
DynamicObject period = extendedData.getDynamicObject("period");//期间
BigDecimal versionNo = extendedData.getBigDecimal("versionno");//版本号
QFilter filter = new QFilter("project", "=", project.getPkValue());
filter.and(new QFilter("period", "=", period.getPkValue()));
filter.and(new QFilter("versionno", "=", versionNo));
DynamicObject ecco_periodcostbillcbs = BusinessDataServiceHelper.loadSingle("ecco_periodcostbillcbs", "id", new QFilter[]{filter});
if (ecco_periodcostbillcbs != null) {
if (extendedData.getPkValue().equals(ecco_periodcostbillcbs.getPkValue())){
continue;
}
this.addFatalErrorMessage(extendedDataEntity, "该期间的项目已编制预算,请勿重复创建!");
}
}
}
}
}