diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/AimCostBoqBillOpExt.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/AimCostBoqBillOpExt.java new file mode 100644 index 0000000..805c144 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/AimCostBoqBillOpExt.java @@ -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 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])); + } + + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/AimCostBoqBillValidatorExt.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/AimCostBoqBillValidatorExt.java new file mode 100644 index 0000000..ba76df6 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/AimCostBoqBillValidatorExt.java @@ -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])); + }*///二开注释掉的 + } + } + + } +}