From bec5bc505b04e44190e2fab540c3856f278e0c3b Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Thu, 5 Jun 2025 15:46:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E9=87=8F=E6=B8=85=E5=8D=95?= =?UTF-8?q?=E6=88=90=E6=9C=AC=E9=A2=84=E7=AE=97=E6=8F=90=E4=BA=A4=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=8F=92=E4=BB=B6=EF=BC=9A=E5=8E=BB=E9=99=A4=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E6=93=8D=E4=BD=9C=E6=A0=A1=E9=AA=8C=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E4=B8=94=E5=9C=A8=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=97=B6=E6=A0=A1=E9=AA=8C=E5=B9=B4=E6=9C=88?= =?UTF-8?q?=E5=92=8C=E9=A1=B9=E7=9B=AE=E7=9A=84=E7=BB=84=E5=90=88=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E6=9C=89=E9=87=8D=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pr/plugin/form/AimCostBoqBillOpExt.java | 86 +++++++++++++++++++ .../form/AimCostBoqBillValidatorExt.java | 68 +++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/AimCostBoqBillOpExt.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/AimCostBoqBillValidatorExt.java 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])); + }*///二开注释掉的 + } + } + + } +}