From feafef3c15451319d71f99a47fe43ff86ba6fd09 Mon Sep 17 00:00:00 2001 From: weiyunlong Date: Thu, 29 May 2025 17:55:05 +0800 Subject: [PATCH] ### MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - [x] 优化收款单携带资金计划科目的逻辑 - [x] 优化付款申请单携带资金计划科目的逻辑(不包含单据类型) - [x] 费控推送付款申请增加字段(业务大小类) --s --- .../plugin/operate/PayApplySaveOperation.java | 11 +-- .../plugin/operate/PayBillSaveOperation.java | 77 +++++++++++++------ .../fi/fi/webapi/ApplyBillControler.java | 15 ++++ .../fi/fi/webapi/model/ApplyBillModel.java | 20 +++++ 4 files changed, 93 insertions(+), 30 deletions(-) diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayApplySaveOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayApplySaveOperation.java index e399aed..7991e6e 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayApplySaveOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayApplySaveOperation.java @@ -38,9 +38,6 @@ public class PayApplySaveOperation extends AbstractOperationServicePlugIn implem DynamicObject[] dataEntities = e.getDataEntities(); for (DynamicObject bill : dataEntities) { bill = BusinessDataServiceHelper.loadSingle(bill.getPkValue(),"ap_payapply"); -// DynamicObject shjhMembersubject = xdMembersubject(bill); -// bill.set("shjh_membersubject", shjhMembersubject); -// SaveServiceHelper.save(new DynamicObject[]{bill}); String sourcesystem = bill.getString("shjh_sourcesystem");//来源系统:SAP boolean shjhSapwhetherlocking = bill.getBoolean("shjh_sapwhetherlocking");//SAP是否锁定:未锁定 @@ -78,9 +75,9 @@ public class PayApplySaveOperation extends AbstractOperationServicePlugIn implem //成功:更新状态 bill.set("shjh_sapwhetherlocking", true); //SAP应付凭证生成付款申请单后,系统自动根据配置表带出资金计划科目 - DynamicObject shjhMembersubject = xdMembersubject(bill); - bill.set("shjh_membersubject", shjhMembersubject); - SaveServiceHelper.save(new DynamicObject[]{bill}); +// DynamicObject shjhMembersubject = xdMembersubject(bill); +// bill.set("shjh_membersubject", shjhMembersubject); +// SaveServiceHelper.save(new DynamicObject[]{bill}); this.operationResult.addSuccessPkId(bill.getPkValue()); } } @@ -351,7 +348,7 @@ public class PayApplySaveOperation extends AbstractOperationServicePlugIn implem String bbhdjlx = account.getString("shjh_bbhdjlx"); // 不包含单据类型_包含剔除 - if (bbhdjlx.contains(shjhExternalsystemdocume)) { + if (bbhdjlx.contains(shjhExternalsystemdocume)&& StringUtils.isNotEmpty(shjhExternalsystemdocume)) { iterator.remove(); } } diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSaveOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSaveOperation.java index b4ada40..d1cb25c 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSaveOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSaveOperation.java @@ -13,7 +13,7 @@ import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.bos.util.StringUtils; import kd.sdk.plugin.Plugin; -import java.util.Date; +import java.util.*; /** * 付款单保存操作 @@ -135,7 +135,7 @@ public class PayBillSaveOperation extends AbstractOperationServicePlugIn impleme Long shjhBizbigid = shjhBizbig.getLong("id"); QFilter q1 = new QFilter("shjh_bizbig.fbasedataid", QCP.equals, shjhBizbigid);//包含业务大类 QFilter q2 = new QFilter("shjh_bizbig.fbasedataid", QCP.equals, null); - QFilter q3 = new QFilter("shjh_bbhywdl.fbasedataid", QCP.equals, shjhBizbigid);//不包含业务大类 + QFilter q3 = new QFilter("shjh_bbhywdl.fbasedataid", QCP.not_equals, shjhBizbigid);//不包含业务大类 QFilter q4 = new QFilter("shjh_bbhywdl.fbasedataid", QCP.equals, null); qFilter = qFilter.and(q1.or(q2)).and(q3.or(q4)); }else { @@ -205,6 +205,7 @@ public class PayBillSaveOperation extends AbstractOperationServicePlugIn impleme qFilter = qFilter.and(q3.or(q4)); } + String shjhBhcgz = ""; //分录字段 DynamicObjectCollection entrys = bill.getDynamicObjectCollection("entry");//付款明细 if (!entrys.isEmpty()) { @@ -223,29 +224,17 @@ public class PayBillSaveOperation extends AbstractOperationServicePlugIn impleme //会计科目 shjh_sapkjkm DynamicObject shjhSapkjkm = entry.getDynamicObject("shjh_sapkjkm"); if (null != shjhSapkjkm) { - Long kjkmid = shjhSapkjkm.getLong("id"); - QFilter q1 = new QFilter("shjh_kjkm.fbasedataid", QCP.equals, kjkmid); - QFilter q2 = new QFilter("shjh_kjkm.fbasedataid", QCP.equals, null); +// Long kjkmid = shjhSapkjkm.getLong("id"); + QFilter q1 = new QFilter("shjh_kjkm.fbasedataid.number", QCP.equals, shjhSapkjkm.getString("number")); + QFilter q2 = new QFilter("shjh_kjkm.fbasedataid.number", QCP.equals, null); qFilter = qFilter.and(q1.or(q2)); }else{ - QFilter q2 = new QFilter("shjh_kjkm.fbasedataid", QCP.equals, null); + QFilter q2 = new QFilter("shjh_kjkm.fbasedataid.number", QCP.equals, null); qFilter = qFilter.and(q2); } //采购组shjh_procurementteam && 不包含采购组 - String shjhBhcgz = entry.getString("shjh_procurementteam"); - QFilter filter = new QFilter("number", QCP.equals, shjhBhcgz); - DynamicObject shjh_cgz = BusinessDataServiceHelper.loadSingle("shjh_cgz", filter.toArray()); - if (null != shjh_cgz) { - Long cgzid = shjh_cgz.getLong("id"); - QFilter q1 = new QFilter("shjh_bhcgz.fbasedataid", QCP.equals, cgzid);//包含采购粗 - QFilter q2 = new QFilter("shjh_bhcgz.fbasedataid", QCP.equals, null); - QFilter q3 = new QFilter("shjh_bbhcgz.fbasedataid", QCP.equals, cgzid);//不包含采购粗 - QFilter q4 = new QFilter("shjh_bbhcgz.fbasedataid", QCP.equals, null); - qFilter = qFilter.and(q1.or(q2)).and(q3.or(q4)); - }else{ - QFilter q2 = new QFilter("shjh_bhcgz.fbasedataid", QCP.equals, null); - qFilter = qFilter.and(q2); - } + shjhBhcgz = entry.getString("shjh_procurementteam"); + }else { QFilter q2 = new QFilter("shjh_yym.fbasedataid", QCP.equals, null); QFilter q3 = new QFilter("shjh_kjkm.fbasedataid", QCP.equals, null); @@ -253,7 +242,8 @@ public class PayBillSaveOperation extends AbstractOperationServicePlugIn impleme qFilter = qFilter.and(q2).and(q3).and(q4); } - DynamicObject[] accounts = BusinessDataServiceHelper.load("shjh_pay_account", "id,shjh_membersubject", qFilter.toArray()); + DynamicObject[] accounts = BusinessDataServiceHelper.load("shjh_request_account", "id," + + "shjh_membersubject,shjh_bhcgz,shjh_bbhcgz", qFilter.toArray()); if (accounts.length > 1) { // 根据生效日期,失效日期区间,判断当前时间满足的数据 // Date currentDate = new Date(); @@ -264,9 +254,50 @@ public class PayBillSaveOperation extends AbstractOperationServicePlugIn impleme //优先级为高的 accounts = BusinessDataServiceHelper.load("shjh_pay_account", "id", newFilter.toArray(),"shjh_priority"); } - if (accounts.length > 0) { + + // 转换为 List 以便支持 remove 操作 + List configList = new ArrayList<>(Arrays.asList(accounts)); + + // 采购组shjh_procurementteam && 不包含采购组 + QFilter filter = new QFilter("number", QCP.equals, shjhBhcgz); + DynamicObject shjh_cgz = BusinessDataServiceHelper.loadSingle("shjh_cgz", filter.toArray()); + + if (shjh_cgz != null) { + long cgzid = shjh_cgz.getLong("id"); + Iterator iterator = configList.iterator(); + while (iterator.hasNext()) { + DynamicObject account = iterator.next(); + // 检查采购组 + boolean isbh = false; + DynamicObjectCollection shjh_cgzs = account.getDynamicObjectCollection("shjh_bhcgz"); + for (DynamicObject shjhCgz : shjh_cgzs) { + DynamicObject fbasedataid = shjhCgz.getDynamicObject("fbasedataid"); + if (fbasedataid != null && fbasedataid.getLong("id") == cgzid) { + isbh = true; + break; + } + } + + if (!isbh && !shjh_cgzs.isEmpty()) { + iterator.remove(); + continue; + } + + // 检查不包含采购组 + DynamicObjectCollection shjh_bbhcgzs = account.getDynamicObjectCollection("shjh_bbhcgz"); + for (DynamicObject shjhBbhcgz : shjh_bbhcgzs) { + DynamicObject fbasedataid = shjhBbhcgz.getDynamicObject("fbasedataid"); + if (fbasedataid != null && fbasedataid.getLong("id") == cgzid) { + iterator.remove(); + break; + } + } + } + } + + if (!configList.isEmpty()) { // 处理找到符合条件的账户 - DynamicObject account = accounts[0]; + DynamicObject account = configList.get(0); account = BusinessDataServiceHelper.loadSingle(account.getPkValue(), "shjh_pay_account"); return account.getDynamicObject("shjh_membersubject"); } else { diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/ApplyBillControler.java b/main/java/shjh/jhzj7/fi/fi/webapi/ApplyBillControler.java index a1d20bf..95f871e 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/ApplyBillControler.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/ApplyBillControler.java @@ -23,6 +23,7 @@ import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; +import kd.bos.util.StringUtils; import shjh.jhzj7.fi.fi.utils.JhzjUtils; import shjh.jhzj7.fi.fi.webapi.model.ApiResultPayApplyExt; import shjh.jhzj7.fi.fi.webapi.model.ApplyBillModel; @@ -433,6 +434,20 @@ public class ApplyBillControler { ap_payapply.set("shjh_sapuniquevalue",fkBillID + fkEntryID);//费控唯一值 :费控表头ID+费控分录ID ap_payapply.set("shjh_transferremark", applybill.getTransferRemark());//转账附言 20250512 yxl + //业务大类 + String bizbig = applybill.getBizbig(); + if (StringUtils.isNotEmpty(bizbig)) { + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("shjh_bizbigtype", new QFilter[]{new QFilter("shjh_fknumber", QCP.equals, bizbig)}); + ap_payapply.set("shjh_bizbig", dynamicObject); + } + + //业务小类 + String bizsmall = applybill.getBizsmall(); + if (StringUtils.isNotEmpty(bizsmall)) { + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("shjh_bizsmalltype", new QFilter[]{new QFilter("shjh_fknumber", QCP.equals, bizsmall)}); + ap_payapply.set("shjh_basedatafield", dynamicObject); + } + OperateOption option= OperateOption.create(); option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true)); // 不执行警告级别校验器 // 新增数据 diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/model/ApplyBillModel.java b/main/java/shjh/jhzj7/fi/fi/webapi/model/ApplyBillModel.java index 8da024d..9807e0d 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/model/ApplyBillModel.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/model/ApplyBillModel.java @@ -59,6 +59,26 @@ public class ApplyBillModel implements Serializable { private String paymenttype; @ApiParam(value="转账附言",required=false,position=26) private String transferRemark; + @ApiParam(value="业务大类",required=false,position=27) + private String bizbig; + @ApiParam(value="业务小类",required=false,position=28) + private String bizsmall; + + public String getBizbig() { + return bizbig; + } + + public void setBizbig(String bizbig) { + this.bizbig = bizbig; + } + + public String getBizsmall() { + return bizsmall; + } + + public void setBizsmall(String bizsmall) { + this.bizsmall = bizsmall; + } public String getTransferRemark() { return transferRemark;