From 5c05a986fba72b81a6bd26ee9b7ae3112a3b3392 Mon Sep 17 00:00:00 2001 From: xiaoshi <2272816786@qq.com> Date: Wed, 4 Dec 2024 19:38:18 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=B7=B2=E5=BC=80=E5=8F=91=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zcdev/zcdev/pr/plugin/form/ContractPublicBillPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractPublicBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractPublicBillPlugin.java index 801d331..8f91c5f 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractPublicBillPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractPublicBillPlugin.java @@ -23,7 +23,7 @@ public class ContractPublicBillPlugin extends AbstractBillPlugIn implements Plug Object zcgj_jtnw = this.getModel().getValue("zcgj_jtnw"); if(zcgj_jtnw!=null && zcgj_jtnw!=""){ List comboList = new ArrayList<>(); - if(zcgj_jtnw.toString().equals("")){ + if(zcgj_jtnw.toString().equals("jtn")){ comboList.add(new ComboItem(new LocaleString("中材矿山"), "1")); comboList.add(new ComboItem(new LocaleString("中材国际"), "2")); comboList.add(new ComboItem(new LocaleString("中联水泥"), "3")); From a056e71046fc335229898eb50ba04513cebbccf8 Mon Sep 17 00:00:00 2001 From: xiaoshi <2272816786@qq.com> Date: Thu, 5 Dec 2024 17:47:55 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=94=B6=E5=85=A5=E4=B8=8E=E6=94=AF?= =?UTF-8?q?=E5=87=BA=E5=90=88=E5=90=8C=E8=AE=A1=E9=87=8F=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E5=8E=BB=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/ContractEeasurementBillPlugin.java | 32 +++++ .../InContractMeasurementBillEditPlugin.java | 33 +++++ .../operate/ContractMeasurementValidator.java | 129 ++++++++++++++++++ .../operate/InContractMeasurementOp.java | 22 +++ .../operate/OutContractMeasurementOp.java | 21 +++ 5 files changed, 237 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractEeasurementBillPlugin.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractMeasurementBillEditPlugin.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/ContractMeasurementValidator.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InContractMeasurementOp.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractMeasurementOp.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractEeasurementBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractEeasurementBillPlugin.java new file mode 100644 index 0000000..97ed124 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractEeasurementBillPlugin.java @@ -0,0 +1,32 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.entity.datamodel.events.ChangeData; +import kd.ec.contract.formplugin.ContractMeasureBillEditPlugin; + +import java.math.BigDecimal; + +public class ContractEeasurementBillPlugin extends ContractMeasureBillEditPlugin { + + @Override + protected void onThisQtyChanged(ChangeData changeData) { + BigDecimal qty = this.defaultZeroBigDecimal((BigDecimal)changeData.getNewValue()); + int rowIndex = changeData.getRowIndex(); + int parentRowIndex = changeData.getParentRowIndex(); + BigDecimal totalqty = (BigDecimal)this.getModel().getValue("totalqty", rowIndex, parentRowIndex); + BigDecimal preQty = (BigDecimal)this.getModel().getValue("preqty", rowIndex, parentRowIndex); + BigDecimal balanceQty = totalqty.subtract(preQty); + if (qty.compareTo(balanceQty) > 0) { +// this.getView().showMessage(String.format(ResManager.loadKDString("本期计量数量不能超过%s(总数量-期初累计计量数量)。", "ContractMeasureBillEditPlugin_4", "ec-contract-formplugin", new Object[0]), balanceQty.intValue())); +// this.getModel().setValue("thisqty", BigDecimal.ZERO, rowIndex, parentRowIndex); + } else { + this.getModel().setValue("lstqty", preQty.add(qty), rowIndex, parentRowIndex); + BigDecimal taxPrice = (BigDecimal)this.getModel().getValue("curtaxprice", rowIndex, parentRowIndex); + BigDecimal amount = taxPrice.multiply(qty); + this.getModel().setValue("thisoftaxmount", amount, rowIndex, parentRowIndex); + if (this.isInContract()) { + this.countPercent(rowIndex, parentRowIndex); + } + + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractMeasurementBillEditPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractMeasurementBillEditPlugin.java new file mode 100644 index 0000000..4622ccb --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractMeasurementBillEditPlugin.java @@ -0,0 +1,33 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.entity.datamodel.events.ChangeData; +import kd.ec.contract.formplugin.InContractMeasureBillEditPlugin; + +import java.math.BigDecimal; + +public class InContractMeasurementBillEditPlugin extends InContractMeasureBillEditPlugin { + + @Override + protected void onThisQtyChanged(ChangeData changeData) { + BigDecimal qty = this.defaultZeroBigDecimal((BigDecimal)changeData.getNewValue()); + int rowIndex = changeData.getRowIndex(); + int parentRowIndex = changeData.getParentRowIndex(); + BigDecimal totalqty = (BigDecimal)this.getModel().getValue("totalqty", rowIndex, parentRowIndex); + BigDecimal preQty = (BigDecimal)this.getModel().getValue("preqty", rowIndex, parentRowIndex); + BigDecimal balanceQty = totalqty.subtract(preQty); + if (qty.compareTo(balanceQty) > 0) { +// this.getView().showMessage(String.format(ResManager.loadKDString("本期计量数量不能超过%s(总数量-期初累计计量数量)。", "ContractMeasureBillEditPlugin_4", "ec-contract-formplugin", new Object[0]), balanceQty.intValue())); +// this.getModel().setValue("thisqty", BigDecimal.ZERO, rowIndex, parentRowIndex); + } else { + this.getModel().setValue("lstqty", preQty.add(qty), rowIndex, parentRowIndex); + BigDecimal taxPrice = (BigDecimal)this.getModel().getValue("curtaxprice", rowIndex, parentRowIndex); + BigDecimal amount = taxPrice.multiply(qty); + this.getModel().setValue("thisoftaxmount", amount, rowIndex, parentRowIndex); + if (this.isInContract()) { + this.countPercent(rowIndex, parentRowIndex); + } + + } + } + +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/ContractMeasurementValidator.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/ContractMeasurementValidator.java new file mode 100644 index 0000000..97d02c3 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/ContractMeasurementValidator.java @@ -0,0 +1,129 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.resource.ResManager; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; +import kd.ec.basedata.common.enums.BillStatusEnum; +import kd.ec.contract.opplugin.validator.ContractMeasureValidator; + +import java.math.BigDecimal; +import java.util.*; + +public class ContractMeasurementValidator extends ContractMeasureValidator { + + @Override + protected void validateListingQty(Set excludeIds) { + { + ExtendedDataEntity[] dataEntities = this.getDataEntities(); + Set listingIds = new HashSet(16); + Set measureIds = new HashSet(16); + Set repeatListingIds = new HashSet(16); + ExtendedDataEntity[] var6 = dataEntities; + int var7 = dataEntities.length; + + DynamicObject changeListing; + for(int var8 = 0; var8 < var7; ++var8) { + ExtendedDataEntity dataEntity = var6[var8]; + changeListing = dataEntity.getDataEntity(); + if (!excludeIds.contains(changeListing.getLong("id"))) { + measureIds.add(changeListing.getLong("id")); + DynamicObjectCollection modelEntries = changeListing.getDynamicObjectCollection("listmodelentry"); + Iterator var12 = modelEntries.iterator(); + + while(var12.hasNext()) { + DynamicObject modelEntry = (DynamicObject)var12.next(); + DynamicObjectCollection listingEntries = modelEntry.getDynamicObjectCollection("listentry"); + Iterator var15 = listingEntries.iterator(); + + while(var15.hasNext()) { + DynamicObject listingEntry = (DynamicObject)var15.next(); + DynamicObject listing = listingEntry.getDynamicObject("listing"); + if (listing != null && !listingIds.add(listing.getLong("id"))) { + repeatListingIds.add(listing.getLong("id")); + } + } + } + } + } + + listingIds.removeAll(repeatListingIds); + QFilter changeFilter = new QFilter("kapianentry.entryentity.listid", "in", listingIds); + changeFilter.and("billstatus", "=", BillStatusEnum.SUBMIT.getValue()); + DynamicObjectCollection changeListings = QueryServiceHelper.query("ec_inrevision", "kapianentry.entryentity.listid", new QFilter[]{changeFilter}); + Set changedListingIds = new HashSet(16); + Iterator var30 = changeListings.iterator(); + + while(var30.hasNext()) { + changeListing = (DynamicObject)var30.next(); + changedListingIds.add(changeListing.getLong("kapianentry.entryentity.listid")); + } + + QFilter listingFilter = new QFilter("id", "in", listingIds); + DynamicObject[] listings = BusinessDataServiceHelper.load("ec_intreelisting", "id,totalqty", new QFilter[]{listingFilter}); + Map listingQtyBalance = new HashMap(16); + DynamicObject[] var34 = listings; + int var36 = listings.length; + + DynamicObject measureListing; + for(int var38 = 0; var38 < var36; ++var38) { + measureListing = var34[var38]; + listingQtyBalance.put(measureListing.getLong("id"), measureListing.getBigDecimal("totalqty")); + } + + QFilter filter = new QFilter("listmodelentry.listentry.listing", "in", listingIds); + filter.and("billstatus", "in", new String[]{BillStatusEnum.SUBMIT.getValue(), BillStatusEnum.AUDIT.getValue()}); + filter.and("id", "not in", measureIds); + DynamicObjectCollection measureListings = QueryServiceHelper.query("ec_incontractmeasure", "listmodelentry.listentry.listing,listmodelentry.listentry.thisqty", new QFilter[]{filter}); + Iterator var39 = measureListings.iterator(); + + while(var39.hasNext()) { + measureListing = (DynamicObject)var39.next(); + long listingId = measureListing.getLong("listmodelentry.listentry.listing"); + if (listingId != 0L) { + BigDecimal qtyBalance = (BigDecimal)listingQtyBalance.getOrDefault(listingId, BigDecimal.ZERO); + listingQtyBalance.put(listingId, qtyBalance.subtract(measureListing.getBigDecimal("listmodelentry.listentry.thisqty"))); + } + } + + ExtendedDataEntity[] var41 = dataEntities; + int var42 = dataEntities.length; + + for(int var44 = 0; var44 < var42; ++var44) { + ExtendedDataEntity dataEntity = var41[var44]; + DynamicObject bill = dataEntity.getDataEntity(); + if (!excludeIds.contains(bill.getLong("id"))) { + DynamicObjectCollection modelEntries = bill.getDynamicObjectCollection("listmodelentry"); + Iterator var20 = modelEntries.iterator(); + + while(var20.hasNext()) { + DynamicObject modelEntry = (DynamicObject)var20.next(); + DynamicObjectCollection listingEntries = modelEntry.getDynamicObjectCollection("listentry"); + Iterator var23 = listingEntries.iterator(); + + while(var23.hasNext()) { + DynamicObject listingEntry = (DynamicObject)var23.next(); + DynamicObject listing = listingEntry.getDynamicObject("listing"); + if (listing != null) { + if (repeatListingIds.contains(listing.getLong("id"))) { + this.addErrorMessage(dataEntity, String.format(ResManager.loadKDString("本次操作的单据中清单【%s】存在重复,请检查。", "ContractMeasureValidator_2", "ec-contract-opplugin", new Object[0]), listing.getString("name"))); + } else if (changedListingIds.contains(listing.getLong("id"))) { + this.addErrorMessage(dataEntity, String.format(ResManager.loadKDString("清单【%s】正在变更中,请检查。", "ContractMeasureValidator_3", "ec-contract-opplugin", new Object[0]), listing.getString("name"))); + } else { +// BigDecimal thisQty = listingEntry.getBigDecimal("thisqty"); +// if (thisQty != null && thisQty.compareTo(BigDecimal.ZERO) != 0 && thisQty.compareTo((BigDecimal)listingQtyBalance.getOrDefault(listing.getLong("id"), BigDecimal.ZERO)) > 0) { +// this.addErrorMessage(dataEntity, String.format(ResManager.loadKDString("清单【%s】本次计量数量已超剩余可计量数量,请修改。", "ContractMeasureValidator_4", "ec-contract-opplugin", new Object[0]), listing.getString("name"))); +// } + } + } + } + } + } + } + + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InContractMeasurementOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InContractMeasurementOp.java new file mode 100644 index 0000000..0ee10c9 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InContractMeasurementOp.java @@ -0,0 +1,22 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.bos.entity.validate.AbstractValidator; +import kd.ec.contract.opplugin.ContractMeasureOp; +import kd.ec.contract.opplugin.validator.ContractMeasureValidator; + +import java.util.List; + +public class InContractMeasurementOp extends ContractMeasureOp { + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + List validators = e.getValidators(); + // 删除标品校验器 + validators.removeIf(validator -> validator instanceof ContractMeasureValidator); + + // 添加定制二开的校验器(位置放第一位,优先执行) + validators.add(0, new ContractMeasurementValidator()); + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractMeasurementOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractMeasurementOp.java new file mode 100644 index 0000000..fa58863 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractMeasurementOp.java @@ -0,0 +1,21 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.bos.entity.validate.AbstractValidator; +import kd.ec.contract.opplugin.OutContractMeasureOp; +import kd.ec.contract.opplugin.validator.ContractMeasureValidator; +import java.util.List; + +public class OutContractMeasurementOp extends OutContractMeasureOp{ + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + List validators = e.getValidators(); + // 删除标品校验器 + validators.removeIf(validator -> validator instanceof ContractMeasureValidator); + + // 添加定制二开的校验器(位置放第一位,优先执行) + validators.add(0, new ContractMeasurementValidator()); + } +} From 7f1ab2e51ac517db9b643078eef96859800fbc6c Mon Sep 17 00:00:00 2001 From: xiaoshi <2272816786@qq.com> Date: Thu, 5 Dec 2024 18:11:22 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=94=B6=E5=85=A5=E4=B8=8E=E6=94=AF?= =?UTF-8?q?=E5=87=BA=E5=90=88=E5=90=8C=E7=BB=93=E7=AE=97=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E5=8E=BB=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InContractMeasurementBillEditPlugin.java | 1 - .../operate/InContractSettlementOp.java | 21 +++++++++ .../InContractSettlementValidator.java | 46 +++++++++++++++++++ .../operate/OutContractSettlementOp.java | 12 +++++ .../OutContractSettlementValidator.java | 42 +++++++++++++++++ 5 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InContractSettlementOp.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InContractSettlementValidator.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettlementOp.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettlementValidator.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractMeasurementBillEditPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractMeasurementBillEditPlugin.java index 4622ccb..48e75bc 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractMeasurementBillEditPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractMeasurementBillEditPlugin.java @@ -29,5 +29,4 @@ public class InContractMeasurementBillEditPlugin extends InContractMeasureBillEd } } - } diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InContractSettlementOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InContractSettlementOp.java new file mode 100644 index 0000000..fc08841 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InContractSettlementOp.java @@ -0,0 +1,21 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; +import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.bos.entity.validate.AbstractValidator; +import kd.ec.contract.opplugin.InContractSettleOp; +import kd.ec.contract.opplugin.validator.ContractMeasureValidator; +import kd.ec.contract.opplugin.validator.InContractSettleValidator; + +import java.util.List; + +public class InContractSettlementOp extends InContractSettleOp { + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + List validators = e.getValidators(); + // 删除标品校验器 + validators.removeIf(validator -> validator instanceof InContractSettleValidator); + + // 添加定制二开的校验器(位置放第一位,优先执行) + validators.add(0, new InContractSettlementValidator()); + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InContractSettlementValidator.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InContractSettlementValidator.java new file mode 100644 index 0000000..ae9d0c1 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InContractSettlementValidator.java @@ -0,0 +1,46 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +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.servicehelper.BusinessDataServiceHelper; +import kd.ec.contract.opplugin.validator.InContractSettleValidator; + +import java.math.BigDecimal; + +public class InContractSettlementValidator extends InContractSettleValidator { + @Override + public void validate() { + { + ExtendedDataEntity[] dataEntities = this.getDataEntities(); + ExtendedDataEntity[] var2 = dataEntities; + int var3 = dataEntities.length; + + for(int var4 = 0; var4 < var3; ++var4) { + ExtendedDataEntity dataEntity = var2[var4]; + BigDecimal settleOfTaxAmount = dataEntity.getDataEntity().getBigDecimal("settleoftaxamount"); + DynamicObject contractTemp = dataEntity.getDataEntity().getDynamicObject("contract"); + if (contractTemp == null) { + return; + } + + DynamicObject contract = BusinessDataServiceHelper.loadSingle(dataEntity.getDataEntity().getDynamicObject("contract").getPkValue(), "ec_in_contract"); + BigDecimal totalSettleOfTaxAmount = contract.getBigDecimal("totalsettleoftaxamount"); + BigDecimal totalOfTaxAmount = contract.getBigDecimal("totaloftaxamount"); + DynamicObject contractType = contract.getDynamicObject("contracttype"); + DynamicObject contractAttr = contractType == null ? null : contractType.getDynamicObject("contattr"); + boolean validateAmount = true; + if (contractAttr != null) { + contractAttr = BusinessDataServiceHelper.loadSingle(contractAttr.getPkValue(), "ec_contattr"); + validateAmount = !StringUtils.equals("09", contractAttr.getString("basictype")); + } + +// if (validateAmount && settleOfTaxAmount.compareTo(totalOfTaxAmount.subtract(totalSettleOfTaxAmount)) > 0) { +// this.addErrorMessage(dataEntity, ResManager.loadKDString("本期结算价税合计不能大于合同剩余金额价税合计", "InContractSettleValidator_0", "ec-contract-opplugin", new Object[0])); +// } + } + + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettlementOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettlementOp.java new file mode 100644 index 0000000..633da93 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettlementOp.java @@ -0,0 +1,12 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.ec.contract.opplugin.OutContractSettleOp; + +public class OutContractSettlementOp extends OutContractSettleOp { + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettlementValidator.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettlementValidator.java new file mode 100644 index 0000000..08ddbb1 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettlementValidator.java @@ -0,0 +1,42 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +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.servicehelper.BusinessDataServiceHelper; +import kd.ec.contract.opplugin.validator.OutContractSettleValidator; + +import java.math.BigDecimal; + +public class OutContractSettlementValidator extends OutContractSettleValidator { + @Override + protected boolean validateSettleAmount(ExtendedDataEntity dataEntity) { + { + BigDecimal settleOfTaxAmount = dataEntity.getDataEntity().getBigDecimal("settleoftaxamount"); + DynamicObject contractTemp = dataEntity.getDataEntity().getDynamicObject("contract"); + if (contractTemp == null) { + this.addErrorMessage(dataEntity, ResManager.loadKDString("合同不可为空。", "OutContractSettleValidator_5", "ec-contract-opplugin", new Object[0])); + return false; + } else { + DynamicObject contract = BusinessDataServiceHelper.loadSingle(dataEntity.getDataEntity().getDynamicObject("contract").getPkValue(), "ec_out_contract"); + BigDecimal totalSettleOfTaxAmount = contract.getBigDecimal("totalsettleoftaxamount"); + BigDecimal totalOfTaxAmount = contract.getBigDecimal("totaloftaxamount"); + DynamicObject contractType = contract.getDynamicObject("contracttype"); + DynamicObject contractAttr = contractType == null ? null : contractType.getDynamicObject("contattr"); + boolean validateAmount = true; + if (contractAttr != null) { + contractAttr = BusinessDataServiceHelper.loadSingle(contractAttr.getPkValue(), "ec_contattr"); + validateAmount = !StringUtils.equals("09", contractAttr.getString("basictype")); + } + + if (validateAmount && settleOfTaxAmount.compareTo(totalOfTaxAmount.subtract(totalSettleOfTaxAmount)) > 0) { +// this.addErrorMessage(dataEntity, ResManager.loadKDString("本期结算价税合计不能大于合同剩余金额价税合计", "OutContractSettleValidator_0", "ec-contract-opplugin", new Object[0])); + return true; + } else { + return true; + } + } + } + } +} From feefdde77fea27aa6aa7c09930194315bf413567 Mon Sep 17 00:00:00 2001 From: xiaoshi <2272816786@qq.com> Date: Thu, 5 Dec 2024 18:42:42 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=94=B6=E5=85=A5=E4=B8=8E=E6=94=AF?= =?UTF-8?q?=E5=87=BA=E5=90=88=E5=90=8C=E8=AE=A1=E9=87=8F=E6=B8=85=E5=8D=95?= =?UTF-8?q?=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InContractMeasurementBillEditPlugin.java | 89 +++++++++++++++++++ .../kd/cosmic/debug/tools/CosmicLauncher.java | 2 +- 2 files changed, 90 insertions(+), 1 deletion(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractMeasurementBillEditPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractMeasurementBillEditPlugin.java index 48e75bc..c0cd5eb 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractMeasurementBillEditPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractMeasurementBillEditPlugin.java @@ -1,9 +1,20 @@ package zcgj.zcdev.zcdev.pr.plugin.form; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.datamodel.events.ChangeData; +import kd.bos.form.CloseCallBack; +import kd.bos.form.ShowFormHelper; +import kd.bos.list.ListShowParameter; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.ec.contract.formplugin.InContractMeasureBillEditPlugin; import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; public class InContractMeasurementBillEditPlugin extends InContractMeasureBillEditPlugin { @@ -29,4 +40,82 @@ public class InContractMeasurementBillEditPlugin extends InContractMeasureBillEd } } + + @Override + protected void doNewListEntry() { + { + boolean inContract = this.isInContract(); + String formId = inContract ? "ec_intreelisting" : "ec_outtreelisting"; + ListShowParameter param = ShowFormHelper.createShowListForm(formId, true, 3, true); + List qFilters = param.getListFilterParameter().getQFilters(); + int rowCount = this.getModel().getEntryRowCount("listentry"); + List listingIds = new ArrayList(); + + int rowIndex; + for(rowIndex = 0; rowIndex < rowCount; ++rowIndex) { + DynamicObject listing = (DynamicObject)this.getModel().getValue("listing", rowIndex); + if (listing != null) { +// listingIds.add(listing.getPkValue()); + } + } + + qFilters.add(new QFilter("id", "not in", listingIds)); + rowIndex = this.getModel().getEntryCurrentRowIndex("listmodelentry"); + String listModelId = (String)this.getModel().getValue("listmodelid", rowIndex); + qFilters.add(new QFilter("listingmodel", "=", StringUtils.isNotBlank(listModelId) ? Long.parseLong(listModelId) : 0L)); + DynamicObject contract = (DynamicObject)this.getModel().getValue("contract"); + if (contract != null) { + qFilters.add(new QFilter("contractid", "=", contract.getLong("id"))); + } + + DynamicObject project = this.getModel().getDataEntity().getDynamicObject("project"); + QFilter unitprojectQFilter = null; + if (project != null && "unitproject".equals(project.getString("boqmode"))) { + DynamicObject unitproject = this.getModel().getDataEntity().getDynamicObject("unitproject"); + DynamicObject contOnunit = BusinessDataServiceHelper.loadSingle("ec_in_contract", "id,onunit", new QFilter[]{new QFilter("id", "=", contract.getPkValue())}); + if (contOnunit != null) { + Boolean onUnit = contOnunit.getBoolean("onunit"); + if (unitproject != null) { + unitprojectQFilter = new QFilter("listunitproject", "=", unitproject.getPkValue()); + } else { + List unitProjectIds; + if (onUnit) { + unitProjectIds = this.getUnitprojectIds(project); + unitprojectQFilter = new QFilter("listunitproject", "in", unitProjectIds); + } else { + unitprojectQFilter = new QFilter("listunitproject", "=", 0L); + unitProjectIds = this.getUnitprojectIds(project); + unitprojectQFilter.or(new QFilter("listunitproject", "in", unitProjectIds)); + } + } + } + } + + if (unitprojectQFilter != null) { + qFilters.add(unitprojectQFilter); + } + + param.setCustomParam("listmodelid", listModelId); + CloseCallBack callBack = new CloseCallBack(this, "newlistentry"); + param.setCloseCallBack(callBack); + this.getView().showForm(param); + } + } + private List getUnitprojectIds(DynamicObject project) { + List result = null; + DynamicObject orgObj = this.getModel().getDataEntity().getDynamicObject("org"); + long orgId = orgObj == null ? 0L : orgObj.getLong("id"); + QFilter qFilter = new QFilter("parent", "=", project.getPkValue()); + DynamicObject ecProject = BusinessDataServiceHelper.loadSingle(project.getPkValue(), "ec_project"); + DynamicObject proOrg = ecProject.getDynamicObject("projectorg"); + if (proOrg != null && orgId != proOrg.getLong("id")) { + qFilter.and(new QFilter("responsibleorg", "=", orgId)); + } + + DynamicObject[] unitprojects = BusinessDataServiceHelper.load("ec_unitproject", "id,parent", new QFilter[]{qFilter}); + result = (List) Arrays.stream(unitprojects).map((o) -> { + return o.getLong("id"); + }).collect(Collectors.toList()); + return result; + } } diff --git a/code/zcgj-cosmic-debug/src/main/java/kd/cosmic/debug/tools/CosmicLauncher.java b/code/zcgj-cosmic-debug/src/main/java/kd/cosmic/debug/tools/CosmicLauncher.java index bc64582..55d8cc1 100644 --- a/code/zcgj-cosmic-debug/src/main/java/kd/cosmic/debug/tools/CosmicLauncher.java +++ b/code/zcgj-cosmic-debug/src/main/java/kd/cosmic/debug/tools/CosmicLauncher.java @@ -43,7 +43,7 @@ public final class CosmicLauncher { */ private static final String DEFAULT_COSMIT_HOME_PATH = System.getProperty("user.home").replaceAll("\\\\", "/") + "/cosmic/home"; - private static final String PROJECT_HOME = "E:/Code/zhongcaidev"; + private static final String PROJECT_HOME = "D:/ideazcgj"; private static final String LOCAL_IP = "127.0.0.1"; From f64ab9497c229816990c02f332cd1447a9f7497f Mon Sep 17 00:00:00 2001 From: xiaoshi <2272816786@qq.com> Date: Thu, 5 Dec 2024 18:44:11 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=94=B6=E5=85=A5=E4=B8=8E=E6=94=AF?= =?UTF-8?q?=E5=87=BA=E5=90=88=E5=90=8C=E8=AE=A1=E9=87=8F=E6=B8=85=E5=8D=95?= =?UTF-8?q?=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/ContractEeasurementBillPlugin.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractEeasurementBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractEeasurementBillPlugin.java index 97ed124..2c403e8 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractEeasurementBillPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractEeasurementBillPlugin.java @@ -1,9 +1,17 @@ package zcgj.zcdev.zcdev.pr.plugin.form; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.datamodel.events.ChangeData; +import kd.bos.form.CloseCallBack; +import kd.bos.form.ShowFormHelper; +import kd.bos.list.ListShowParameter; +import kd.bos.orm.query.QFilter; import kd.ec.contract.formplugin.ContractMeasureBillEditPlugin; import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; public class ContractEeasurementBillPlugin extends ContractMeasureBillEditPlugin { @@ -29,4 +37,38 @@ public class ContractEeasurementBillPlugin extends ContractMeasureBillEditPlugin } } + + @Override + protected void doNewListEntry() { + { + boolean inContract = this.isInContract(); + String formId = inContract ? "ec_intreelisting" : "ec_outtreelisting"; + ListShowParameter param = ShowFormHelper.createShowListForm(formId, true, 3, true); + List qFilters = param.getListFilterParameter().getQFilters(); + int rowCount = this.getModel().getEntryRowCount("listentry"); + List listingIds = new ArrayList(); + + int rowIndex; + for(rowIndex = 0; rowIndex < rowCount; ++rowIndex) { + DynamicObject listing = (DynamicObject)this.getModel().getValue("listing", rowIndex); + if (listing != null) { +// listingIds.add(listing.getPkValue()); + } + } + + qFilters.add(new QFilter("id", "not in", listingIds)); + rowIndex = this.getModel().getEntryCurrentRowIndex("listmodelentry"); + String listModelId = (String)this.getModel().getValue("listmodelid", rowIndex); + qFilters.add(new QFilter("listingmodel", "=", StringUtils.isNotBlank(listModelId) ? Long.parseLong(listModelId) : 0L)); + DynamicObject contract = (DynamicObject)this.getModel().getValue("contract"); + if (contract != null) { + qFilters.add(new QFilter("contractid", "=", contract.getLong("id"))); + } + + param.setCustomParam("listmodelid", listModelId); + CloseCallBack callBack = new CloseCallBack(this, "newlistentry"); + param.setCloseCallBack(callBack); + this.getView().showForm(param); + } + } }