From fb120d58c80d2ea3397596ce02fd98c6566023b7 Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Wed, 18 Jun 2025 14:12:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8C=E5=BC=80=E7=B3=BB=E7=BB=9F=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pr/plugin/operate/AimCostReviewOpExt.java | 236 ++++++++++++++++++ 1 file changed, 236 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/AimCostReviewOpExt.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/AimCostReviewOpExt.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/AimCostReviewOpExt.java new file mode 100644 index 0000000..4c3621d --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/AimCostReviewOpExt.java @@ -0,0 +1,236 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import ec.ecco.validators.AimCostReviewValidator; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +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; +import kd.ec.basedata.business.model.ecco.AimCostReviewConstant; +import kd.ec.basedata.business.model.ecco.AimcostcbsConstant; +import kd.ec.basedata.common.enums.DefaultEnum; +import kd.ec.cost.common.enums.CostReviewFromTypeEnum; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.StringUtils; + +public class AimCostReviewOpExt extends AbstractOperationServicePlugIn { + public AimCostReviewOpExt() { + } + + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + e.getValidators().add(new AimCostReviewValidator()); + } + + public void onPreparePropertys(PreparePropertysEventArgs e) { + e.getFieldKeys().add("project"); + e.getFieldKeys().add("vatentryentity"); + e.getFieldKeys().add("vatfromid"); + e.getFieldKeys().add("costfrom"); + e.getFieldKeys().add("costfromid"); + e.getFieldKeys().add("result"); + e.getFieldKeys().add("vatexecutable"); + e.getFieldKeys().add("costexecutable"); + } + + public void beginOperationTransaction(BeginOperationTransactionArgs e) { + String operationKey = e.getOperationKey(); + DynamicObject[] dataEntities = e.getDataEntities(); + if (StringUtils.equals(operationKey, "audit")) { + this.doAudit(dataEntities); + } + + } + + protected void doAudit(DynamicObject[] dataEntities) { + DynamicObject[] var2 = dataEntities; + int var3 = dataEntities.length; + + for(int var4 = 0; var4 < var3; ++var4) { + DynamicObject dataEntity = var2[var4]; + String result = dataEntity.getString("result"); + if (DefaultEnum.YES.getValue().equals(result)) { + this.rewriteVatCalBill(dataEntity); + DynamicObjectCollection costEntryEntity = dataEntity.getDynamicObjectCollection("costentryentity"); + Map> fromMap = (Map)costEntryEntity.stream().collect(Collectors.groupingBy((costEntryRow) -> { + return costEntryRow.getString("costfrom"); + })); + List cbsCostEntry = (List)fromMap.get(CostReviewFromTypeEnum.CBS.getValue()); + this.rewriteCBSCostBill(cbsCostEntry); + List boqCostEntry = (List)fromMap.get(CostReviewFromTypeEnum.BOQ.getValue()); + this.rewriteBOQCostBill(boqCostEntry); + } + } + + } + + protected void rewriteVatCalBill(DynamicObject dataEntity) { + DynamicObjectCollection vatEntryEntity = dataEntity.getDynamicObjectCollection("vatentryentity"); + if (!CollectionUtils.isEmpty(vatEntryEntity)) { + DynamicObject vatEntryRow = (DynamicObject)vatEntryEntity.get(0); + long pkId = vatEntryRow.getLong("vatfromid"); + if (pkId != 0L) { + DynamicObject vatEntity = BusinessDataServiceHelper.loadSingle(pkId, "ecco_vat_calculate"); + vatEntity.set("executable", true); + SaveServiceHelper.save(new DynamicObject[]{vatEntity}); + long preId = vatEntity.getLong("pre"); + if (preId != 0L) { + DynamicObject preVatEntity = BusinessDataServiceHelper.loadSingle(preId, "ecco_vat_calculate"); + preVatEntity.set("executable", false); + SaveServiceHelper.save(new DynamicObject[]{preVatEntity}); + } + } + } + } + + protected void rewriteCBSCostBill(List cbsCostEntry) { + if (!CollectionUtils.isEmpty(cbsCostEntry)) { + Set cbsCostIds = (Set)cbsCostEntry.stream().map((row) -> { + return row.getLong("costfromid"); + }).collect(Collectors.toSet()); + QFilter idFilter = new QFilter(AimcostcbsConstant.ID_ENTITY_PK, "in", cbsCostIds); + DynamicObject[] cbsCostEntities = BusinessDataServiceHelper.load("ecco_aimcostbillcbs", "project,unitproject,isenable,versionno", new QFilter[]{idFilter}); + this.invokeCbsCostAudit(cbsCostEntities); + } + } + + protected void invokeCbsCostAudit(DynamicObject[] cbsCostEntry) { + Set updateBills = new HashSet(); + DynamicObject[] var3 = cbsCostEntry; + int var4 = cbsCostEntry.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("isenable", true); + QFilter filter = new QFilter("versionno", "!=", bill.get("versionno")); + filter.and(new QFilter("project", "=", project.getPkValue())); + if (bill.get("unitproject") != null) { + filter.and(new QFilter("unitproject", "=", bill.getDynamicObject("unitproject").getPkValue())); + } else { + filter.and(new QFilter("unitproject", "=", 0)); + } + + filter.and(new QFilter("isenable", "=", true)); + filter.and(new QFilter(AimcostcbsConstant.ID_ENTITY_PK, "!=", bill.getPkValue())); + DynamicObject[] enableBills = BusinessDataServiceHelper.load("ecco_aimcostbillcbs", "id,isenable", new QFilter[]{filter}); + if (enableBills != null && enableBills.length > 0) { + for(int i = 0; i < enableBills.length; ++i) { + enableBills[i].set("isenable", false); + updateBills.add(enableBills[i]); + } + } + } + } + + if (!updateBills.isEmpty()) { + SaveServiceHelper.update((DynamicObject[])updateBills.toArray(new DynamicObject[0])); + } + + SaveServiceHelper.save(cbsCostEntry); + } + + protected void rewriteBOQCostBill(List boqCostEntry) { + if (!CollectionUtils.isEmpty(boqCostEntry)) { + Set boqCostIds = (Set)boqCostEntry.stream().map((row) -> { + return row.getLong("costfromid"); + }).collect(Collectors.toSet()); + QFilter idFilter = new QFilter(AimCostBoqSplitModelConstant.ID_ENTITY_PK, "in", boqCostIds); + DynamicObject[] boqCostEntities = BusinessDataServiceHelper.load("ecco_aimcostboqsplitmodel", "project,unitproject,iseffective", new QFilter[]{idFilter}); + this.invokeBOQCostAudit(boqCostEntities); + } + } + + protected void invokeBOQCostAudit(DynamicObject[] boqCostEntities) { + Set updateBills = new HashSet(); + DynamicObject[] var3 = boqCostEntities; + int var4 = boqCostEntities.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()); + if (unitProject != null) { + filter.and(new QFilter("unitproject", "=", unitProject.getPkValue())); + } + + filter.and(new QFilter("iseffective", "=", "1")); + filter.and(new QFilter(AimCostBoqSplitModelConstant.ID_ENTITY_PK, "!=", bill.getPkValue())); + DynamicObject[] boqBills = BusinessDataServiceHelper.load("ecco_aimcostboqsplitmodel", AimCostReviewConstant.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.save((DynamicObject[])updateBills.toArray(new DynamicObject[0])); + } + + SaveServiceHelper.save(boqCostEntities); + } + + protected void rewriteResourceCostBill(List resourceCostEntry) { + if (!CollectionUtils.isEmpty(resourceCostEntry)) { + Set resourceCostIds = (Set)resourceCostEntry.stream().map((row) -> { + return row.getLong("costfromid"); + }).collect(Collectors.toSet()); + QFilter idFilter = new QFilter(AimCostBoqSplitModelConstant.ID_ENTITY_PK, "in", resourceCostIds); + DynamicObject[] resourceCostEntities = BusinessDataServiceHelper.load("ecma_totalrequireplan", "project,unitproject,isvalid,parentbill,version", new QFilter[]{idFilter}); + this.invokeResourceCostAudit(resourceCostEntities); + } + } + + protected void invokeResourceCostAudit(DynamicObject[] resourceCostEntities) { + ArrayList list = new ArrayList(); + ArrayList parentList = new ArrayList(); + DynamicObject[] var4 = resourceCostEntities; + int var5 = resourceCostEntities.length; + + for(int var6 = 0; var6 < var5; ++var6) { + DynamicObject bill = var4[var6]; + String version = (String)bill.get("version"); + String parentBillId = (String)bill.get("parentbill"); + if (!kd.bos.dataentity.utils.StringUtils.equalsIgnoreCase(version, "V1.0") && !parentBillId.trim().isEmpty()) { + DynamicObject parentDynamicObject = BusinessDataServiceHelper.loadSingle(parentBillId, "ecma_totalrequireplan"); + parentDynamicObject.set("isvalid", Boolean.FALSE); + parentList.add(parentDynamicObject); + } + + bill.set("isvalid", Boolean.TRUE); + list.add(bill); + } + + SaveServiceHelper.save((DynamicObject[])list.toArray(new DynamicObject[0])); + SaveServiceHelper.save((DynamicObject[])parentList.toArray(new DynamicObject[0])); + } +}