From 8a588d1ad0c72bff0ed7568159818efeb1f01486 Mon Sep 17 00:00:00 2001 From: zhangzhiguo <421587375@qq.com> Date: Thu, 10 Jul 2025 13:51:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E5=87=BA=E5=90=88=E5=90=8C=E7=BB=93?= =?UTF-8?q?=E7=AE=97=E5=A4=9A=E5=87=BA=E5=90=88=E5=90=8C=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E9=A1=B9bug=E8=B0=83=E6=95=B4(=E6=9C=AA=E5=AE=8C=E6=88=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/OutContractSettlementOp.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) 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 index a824ef3..c620a44 100644 --- 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 @@ -1,16 +1,28 @@ package zcgj.zcdev.zcdev.pr.plugin.operate; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.EntityMetadataCache; import kd.bos.entity.operate.result.OperationResult; import kd.bos.entity.plugin.AddValidatorsEventArgs; import kd.bos.entity.plugin.PreparePropertysEventArgs; +import kd.bos.entity.plugin.args.AfterOperationArgs; import kd.bos.entity.validate.AbstractValidator; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.ec.basedata.business.model.BaseConstant; import kd.ec.contract.opplugin.OutContractSettleOp; import kd.ec.contract.opplugin.validator.OutContractSettleValidator; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; public class OutContractSettlementOp extends OutContractSettleOp { + private static final Log log = LogFactory.getLog(OutContractSettlementOp.class); @Override public void onPreparePropertys(PreparePropertysEventArgs e) { @@ -18,6 +30,7 @@ public class OutContractSettlementOp extends OutContractSettleOp { List fields = e.getFieldKeys(); fields.add("zcgj_is_reversabillid"); fields.add("zcgj_is_invalid"); + fields.add("zcgj_invalidbillid"); } @Override @@ -38,4 +51,74 @@ public class OutContractSettlementOp extends OutContractSettleOp { super.initializeOperationResult(result); } + + /** + * 计量清单反写 + */ + @Override + public void afterExecuteOperationTransaction(AfterOperationArgs e) { + super.afterExecuteOperationTransaction(e); + /*long now = System.currentTimeMillis(); + log.info("OutContractSettlementOp:afterExecuteOperationTransaction-start:"+now); + String operation = e.getOperationKey(); + DynamicObject[] settleBills = e.getDataEntities(); + List settleBillList = Arrays.asList(settleBills); + List listingEntrys = (List)settleBillList.stream().flatMap((settleBill) -> { + //生成的作废单id + String billId = ((DynamicObject)settleBillList.get(0)).getString("id"); + //源单id + String invalidbillid = ((DynamicObject)settleBillList.get(0)).getString("zcgj_invalidbillid"); + DynamicObject bill = BusinessDataServiceHelper.loadSingle(billId, EntityMetadataCache.getDataEntityType("ec_out_contract_settle")); + DynamicObject invalidbill = BusinessDataServiceHelper.loadSingle(invalidbillid, EntityMetadataCache.getDataEntityType("ec_out_contract_settle")); + boolean isInvalid = bill.getBoolean("zcgj_is_invalid"); + log.info("OutContractSettlementOp:billId:"+billId+" type:"+bill.getString("zcgj_is_invalid")); + if (isInvalid) { + return invalidbill.getDynamicObjectCollection("listmodelentry").stream(); + }else{ + return null; + } + }).filter( data-> data !=null ) + .flatMap((modelObj) -> modelObj.getDynamicObjectCollection("listentry").stream()).collect(Collectors.toList()); + log.info("OutContractSettlementOp:listingEntrys.size:"+listingEntrys.size()); + log.info("OutContractSettlementOp:operation:"+operation); + if ("audit".equals(operation)) { + log.info("OutContractSettlementOp:updateListing"); + this.updateListing(listingEntrys, false); + } + log.info("OutContractSettlementOp:afterExecuteOperationTransaction-end:"+now);*/ + + } + + private void updateListing(List listingEntrys, boolean isaudit) { + List listingArr = new ArrayList(); + BigDecimal coefficient; + if (isaudit) { + coefficient = BigDecimal.ONE; + } else { + coefficient = BigDecimal.valueOf(-1L); + } + log.info("OutContractSettlementOp:coefficient:"+coefficient); + log.info("OutContractSettlementOp:forEach-start"); + listingEntrys.forEach((obj) -> { + log.info("OutContractSettlementOp:forEach---"); + + BigDecimal thisQty = coefficient.multiply(obj.getBigDecimal("thisqty")); + BigDecimal thisOfTaxAmount = coefficient.multiply(obj.getBigDecimal("thisoftaxmount")); + DynamicObject listing = obj.getDynamicObject("listing"); + String listingId = listing.getString("id"); + DynamicObject listingObj = BusinessDataServiceHelper.loadSingle(listingId, "ec_outtreelisting"); + listingObj.set("lstsettleqty", thisQty.add(listingObj.getBigDecimal("lstsettleqty"))); + listingObj.set("lstsettleoftaxamount", thisOfTaxAmount.add(listingObj.getBigDecimal("lstsettleoftaxamount"))); + log.info("OutContractSettlementOp:listingObj:"+listingObj.get("lstsettleqty")); + log.info("OutContractSettlementOp:lstsettleoftaxamount:"+listingObj.get("lstsettleoftaxamount")); + listingArr.add(listingObj); + + log.info("OutContractSettlementOp:forEach---"); + }); + log.info("OutContractSettlementOp:forEach-end"); + if (!listingArr.isEmpty()) { + SaveServiceHelper.save(((DynamicObject)listingArr.get(0)).getDataEntityType(), listingArr.toArray(new DynamicObject[0])); + } + + } }