工程量清单成本预算提交操作插件:去除调整操作校验项目逻辑,且在提交审核时校验年月和项目的组合是否有重复

This commit is contained in:
xuhaihui 2025-06-05 15:46:37 +08:00
parent 734761f095
commit bec5bc505b
2 changed files with 154 additions and 0 deletions

View File

@ -0,0 +1,86 @@
package zcgj.zcdev.zcdev.pr.plugin.form;
import java.util.HashSet;
import java.util.Set;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.utils.StringUtils;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.AddValidatorsEventArgs;
import kd.bos.entity.plugin.PreparePropertysEventArgs;
import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.ec.basedata.business.model.ecco.AimCostBoqSplitModelConstant;
//二开系统插件
//工程量清单成本预算提交操作插件去除调整操作校验项目逻辑且在审核时校验年月和项目的组合是否有重复
public class AimCostBoqBillOpExt extends AbstractOperationServicePlugIn {
public AimCostBoqBillOpExt() {
}
public void onPreparePropertys(PreparePropertysEventArgs e) {
super.onPreparePropertys(e);
e.getFieldKeys().add("iseffective");
e.getFieldKeys().add("billstatus");
e.getFieldKeys().add("vision");
e.getFieldKeys().add("project");
e.getFieldKeys().add("unitproject");
}
public void onAddValidators(AddValidatorsEventArgs e) {
super.onAddValidators(e);
e.getValidators().add(new AimCostBoqBillValidatorExt());
}
public void beginOperationTransaction(BeginOperationTransactionArgs e) {
super.beginOperationTransaction(e);
String operationKey = e.getOperationKey();
DynamicObject[] dataEntities = e.getDataEntities();
if (StringUtils.equals("audit", operationKey)) {
this.doAudit(dataEntities);
e.setDataEntities(dataEntities);
}
}
protected void doAudit(DynamicObject[] dataEntities) {
Set<DynamicObject> updateBills = new HashSet();
DynamicObject[] var3 = dataEntities;
int var4 = dataEntities.length;
for(int var5 = 0; var5 < var4; ++var5) {
DynamicObject bill = var3[var5];
DynamicObject project = bill.getDynamicObject("project");
boolean isNeedReview = project.getBoolean("istargetcost");
if (!isNeedReview) {
bill.set("iseffective", true);
DynamicObject unitProject = bill.getDynamicObject("unitproject");
QFilter filter = new QFilter("project", "=", project.getPkValue());
filter.and(new QFilter("zcgj_periodyear", "=", bill.get("zcgj_periodyear")));//年月二开添加
if (unitProject != null) {
filter.and(new QFilter("unitproject", "=", unitProject.getPkValue()));
}
filter.and(new QFilter("iseffective", "=", "1"));
DynamicObject[] boqBills = BusinessDataServiceHelper.load("ecco_aimcostboqsplitmodel", AimCostBoqSplitModelConstant.ID_ENTITY_PK + "," + "iseffective", new QFilter[]{filter});
if (boqBills != null && boqBills.length > 0) {
DynamicObject[] var12 = boqBills;
int var13 = boqBills.length;
for(int var14 = 0; var14 < var13; ++var14) {
DynamicObject boqBill = var12[var14];
boqBill.set("iseffective", "0");
updateBills.add(boqBill);
}
}
}
}
if (!updateBills.isEmpty()) {
SaveServiceHelper.update((DynamicObject[])updateBills.toArray(new DynamicObject[0]));
}
}
}

View File

@ -0,0 +1,68 @@
package zcgj.zcdev.zcdev.pr.plugin.form;
import java.math.BigDecimal;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.resource.ResManager;
import kd.bos.dataentity.utils.StringUtils;
import kd.bos.entity.ExtendedDataEntity;
import kd.bos.entity.validate.AbstractValidator;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.QueryServiceHelper;
import kd.ec.basedata.business.model.ecco.AimCostBoqSplitModelConstant;
//二开系统插件
//工程量清单成本预算提交操作调用插件去除调整操作校验项目逻辑且在提交时校验年月和项目的组合是否有重复
class AimCostBoqBillValidatorExt extends AbstractValidator {
AimCostBoqBillValidatorExt() {
}
public void validate() {
String key = this.getOperateKey();
if (StringUtils.equals("submit", key)) {
this.submitValidate();
}
}
protected void submitValidate() {
ExtendedDataEntity[] dataEntities = this.getDataEntities();
ExtendedDataEntity[] var2 = dataEntities;
int var3 = dataEntities.length;
for(int var4 = 0; var4 < var3; ++var4) {
ExtendedDataEntity extendedDataEntity = var2[var4];
DynamicObject bill = extendedDataEntity.getDataEntity();
DynamicObject project = bill.getDynamicObject("project");
DynamicObject unitProject = bill.getDynamicObject("unitproject");
BigDecimal vision = bill.getBigDecimal("vision");
Object pkValue = bill.getPkValue();
QFilter filter = new QFilter("project", "=", project.getPkValue());
filter.and(new QFilter("zcgj_periodyear", "=", bill.get("zcgj_periodyear")));//年月二开添加
if (unitProject != null) {
filter.and(new QFilter("unitproject", "=", unitProject.getPkValue()));
}
if (pkValue != null) {
filter.and(new QFilter(AimCostBoqSplitModelConstant.ID_ENTITY_PK, "!=", pkValue));
}
filter.and(new QFilter("vision", "=", vision));
boolean isExist = QueryServiceHelper.exists("ecco_aimcostboqsplitmodel", new QFilter[]{filter});
if (isExist && vision.compareTo(BigDecimal.ONE) == 0) {
if (unitProject != null) {
this.addErrorMessage(extendedDataEntity, ResManager.loadKDString("该单位工程已存在BOQ预算。", "AimCostBoqBillOp_0", "ec-ecco-opplugin", new Object[0]));
}/* else {
this.addErrorMessage(extendedDataEntity, ResManager.loadKDString("该项目已存在BOQ预算。", "AimCostBoqBillOp_1", "ec-ecco-opplugin", new Object[0]));
}*///二开注释掉的
} else if (isExist) {
if (unitProject != null) {
this.addErrorMessage(extendedDataEntity, ResManager.loadKDString("该单位工程已存在相同版本的BOQ预算。", "AimCostBoqBillOp_2", "ec-ecco-opplugin", new Object[0]));
}/* else {
this.addErrorMessage(extendedDataEntity, ResManager.loadKDString("该项目已存在相同版本的BOQ预算。", "AimCostBoqBillOp_3", "ec-ecco-opplugin", new Object[0]));
}*///二开注释掉的
}
}
}
}