diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/MaterialInAmountToItemEntryWorkFlowPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/MaterialInAmountToItemEntryWorkFlowPlugin.java index b6e5e4d..3502ff1 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/MaterialInAmountToItemEntryWorkFlowPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/MaterialInAmountToItemEntryWorkFlowPlugin.java @@ -24,6 +24,7 @@ import kd.ec.contract.common.enums.PayDirectionEnum; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.HashSet; +import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -46,21 +47,24 @@ public class MaterialInAmountToItemEntryWorkFlowPlugin implements IWorkflowPlugi log.info("MaterialInAmountToItemEntryWorkFlowPlugin:入库单推送支出合同结算单"); if(outContractSettleMap != null && !outContractSettleMap.isEmpty()) { log.info("MaterialInAmountToItemEntryWorkFlowPlugin:"+businessKey); - Long dataId = (Long) outContractSettleMap.toArray()[0]; - DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle(dataId, "ec_out_contract_settle"); - log.info("MaterialInAmountToItemEntryWorkFlowPlugin-billno:"+outContractSettle.getString("billno")); - sumMaterialInAmountToItemEntry(outContractSettle); - calAllTypeAmount(outContractSettle); - SaveServiceHelper.save(new DynamicObject[]{outContractSettle}); - OperateOption option= OperateOption.create(); - // option.setVariableValue("ishasright", "true");//此处是跳过校验权限 - // option.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(false)); - // option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, String.valueOf(true)); - // option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true)); - option.setVariableValue(OperateOptionConst.ISHASRIGHT, String.valueOf(true));//跳过权限校验 - //option.add(OperateOptionConst.SKIP_PERMISSION_CHECK); - OperationResult result = OperationServiceHelper.executeOperate("submit", "ec_out_contract_settle", new DynamicObject[]{outContractSettle}, option); - log.info("MaterialInAmountToItemEntryWorkFlowPlugin-result:"+result.toString()); + for (Long dataId : outContractSettleMap) { + DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle(dataId, "ec_out_contract_settle"); + log.info("MaterialInAmountToItemEntryWorkFlowPlugin-billno:"+outContractSettle.getString("billno")); + sumMaterialInAmountToItemEntry(outContractSettle); + calAllTypeAmount(outContractSettle); + SaveServiceHelper.save(new DynamicObject[]{outContractSettle}); + + deleteZeroData(dataId); + OperateOption option= OperateOption.create(); + // option.setVariableValue("ishasright", "true");//此处是跳过校验权限 + // option.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(false)); + // option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, String.valueOf(true)); + // option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true)); + option.setVariableValue(OperateOptionConst.ISHASRIGHT, String.valueOf(true));//跳过权限校验 + //option.add(OperateOptionConst.SKIP_PERMISSION_CHECK); + OperationResult result = OperationServiceHelper.executeOperate("submit", "ec_out_contract_settle", new DynamicObject[]{outContractSettle}, option); + log.info("MaterialInAmountToItemEntryWorkFlowPlugin-result:"+result.toString()); + } } } @@ -284,4 +288,32 @@ public class MaterialInAmountToItemEntryWorkFlowPlugin implements IWorkflowPlugi outContractSettle.set("totalrealpaytaxamt", totalRealPayTaxAmt); } } + + public void deleteZeroData(Long outContractSettleId){ + DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", + "itementry,itementry.oftaxamount,zcgj_entryentity,zcgj_entryentity.zcgj_oftaxinvoiceamount,zcgj_processallocatentity,zcgj_processallocatentity.zcgj_pa_amount", + new QFilter[]{new QFilter("id","=",outContractSettleId)}); + DynamicObjectCollection itementryCollection = outContractSettle.getDynamicObjectCollection("itementry"); //合同支付项分录 + for (DynamicObject itementry : itementryCollection) { + //删除工序分摊,价税合计为0的数据 + DynamicObjectCollection dynamicObjectCollection = itementry.getDynamicObjectCollection("zcgj_processallocatentity"); + dynamicObjectCollection.removeIf(dynamicObject -> dynamicObject.getBigDecimal("zcgj_pa_amount") == null || dynamicObject.getBigDecimal("zcgj_pa_amount").compareTo(BigDecimal.ZERO) == 0); + } + //删除合同支付项价税合计为0的数据 + itementryCollection.removeIf(dynamicObject -> + //dynamicObject.getBigDecimal("oftaxamount") == null || dynamicObject.getBigDecimal("oftaxamount").compareTo(BigDecimal.ZERO) == 0 + { + boolean isok = dynamicObject.getBigDecimal("oftaxamount") == null || dynamicObject.getBigDecimal("oftaxamount").compareTo(BigDecimal.ZERO) == 0; + DynamicObjectCollection dynamicObjectCollection = dynamicObject.getDynamicObjectCollection("zcgj_processallocatentity"); + return isok && dynamicObjectCollection.isEmpty(); + } + ); + + //删除进项发票价税合计为0的数据 + DynamicObjectCollection entryentityCollection = outContractSettle.getDynamicObjectCollection("zcgj_entryentity"); + entryentityCollection.removeIf(dynamicObject -> dynamicObject.getBigDecimal("zcgj_oftaxinvoiceamount") == null || dynamicObject.getBigDecimal("zcgj_oftaxinvoiceamount").compareTo(BigDecimal.ZERO) == 0); + + log.info("MaterialInAmountToItemEntryWorkFlowPlugin-PaAmount"); + SaveServiceHelper.save(new DynamicObject[]{outContractSettle}); + } }