From d9ef0ae37ef1827c7044c25465a5050e3281bca9 Mon Sep 17 00:00:00 2001 From: weiyunlong Date: Wed, 2 Jul 2025 17:24:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=93=E7=AE=97=E6=96=B9?= =?UTF-8?q?=E5=BC=8F,=E6=94=AF=E4=BB=98=E6=B8=A0=E9=81=93,=E4=BC=9A?= =?UTF-8?q?=E8=AE=A1=E7=A7=91=E7=9B=AE,=E4=B8=B4=E6=9C=9F=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=20--s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fi/fi/plugin/form/TextFieldDemo.java | 110 ++++++++++-------- .../fi/fi/plugin/operate/TestssOperation.java | 95 ++++++++++++++- .../task/QuerySapCreatePayApplyTask.java | 32 +++-- 3 files changed, 178 insertions(+), 59 deletions(-) diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/TextFieldDemo.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/TextFieldDemo.java index 057b51a..700c01d 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/TextFieldDemo.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/TextFieldDemo.java @@ -39,32 +39,40 @@ public class TextFieldDemo extends AbstractFormPlugin { } } + DynamicObject paymentidentify = (DynamicObject)this.getView().getModel().getValue("paymentidentify");//付款单标识 + if (null != paymentidentify) { + //FKBS01 主动付款 FKBS02 被动付款 + String number = paymentidentify.getString("number");//付款单标识 + //再加个判断,如果是 “主动付款”不进行必填校验。 + if (!"FKBS01".equals(number)) { + // 获取成本中心和利润中心的控件 + BasedataEdit shjh_costcenter = this.getView().getControl("shjh_costcenter"); + BasedataEdit shjh_profitcenter = this.getView().getControl("shjh_pc"); + //根据业务小类设置 成本中心,利润中心是否必填 + DynamicObject shjhBizsmall = (DynamicObject)this.getView().getModel().getValue("shjh_bizsmall"); + BasedataProp tp = (BasedataProp) shjh_costcenter.getProperty(); + BasedataProp td = (BasedataProp) shjh_profitcenter.getProperty(); - - // 获取成本中心和利润中心的控件 - BasedataEdit shjh_costcenter = this.getView().getControl("shjh_costcenter"); - BasedataEdit shjh_profitcenter = this.getView().getControl("shjh_pc"); - //根据业务小类设置 成本中心,利润中心是否必填 - DynamicObject shjhBizsmall = (DynamicObject)this.getView().getModel().getValue("shjh_bizsmall"); - BasedataProp tp = (BasedataProp) shjh_costcenter.getProperty(); - BasedataProp td = (BasedataProp) shjh_profitcenter.getProperty(); - - if (null != shjhBizsmall) { - shjhBizsmall = BusinessDataServiceHelper.loadSingle(shjhBizsmall.getPkValue(),"shjh_bizsmalltype"); - // 获取成本中心的必填配置 - boolean shjhCc = shjhBizsmall.getBoolean("shjh_cc"); - shjh_costcenter.setMustInput(shjhCc); - tp.setMustInput(shjhCc); - // 获取利润中心的必填配置 - boolean shjhPc = shjhBizsmall.getBoolean("shjh_pc"); - shjh_profitcenter.setMustInput(shjhPc); - td.setMustInput(shjhPc); - }else { - shjh_costcenter.setMustInput(false); - tp.setMustInput(false); - shjh_profitcenter.setMustInput(false); - td.setMustInput(false); + if (null != shjhBizsmall) { + shjhBizsmall = BusinessDataServiceHelper.loadSingle(shjhBizsmall.getPkValue(),"shjh_bizsmalltype"); + // 获取成本中心的必填配置 + boolean shjhCc = shjhBizsmall.getBoolean("shjh_cc"); + shjh_costcenter.setMustInput(shjhCc); + tp.setMustInput(shjhCc); + // 获取利润中心的必填配置 + boolean shjhPc = shjhBizsmall.getBoolean("shjh_pc"); + shjh_profitcenter.setMustInput(shjhPc); + td.setMustInput(shjhPc); + }else { + shjh_costcenter.setMustInput(false); + tp.setMustInput(false); + shjh_profitcenter.setMustInput(false); + td.setMustInput(false); + } + } } + + //赋值结算方式 this.getView().getModel().setValue("shjh_jsfs",this.getView().getModel().getValue("settletype")); } @@ -72,32 +80,40 @@ public class TextFieldDemo extends AbstractFormPlugin { @Override public void propertyChanged(PropertyChangedArgs e) { super.propertyChanged(e); + DynamicObject paymentidentify = (DynamicObject)this.getView().getModel().getValue("paymentidentify");//付款单标识 + if (null != paymentidentify) { + //FKBS01 主动付款 FKBS02 被动付款 + String number = paymentidentify.getString("number");//付款单标识 + //再加个判断,如果是 “主动付款”不进行必填校验。 + if (!"FKBS01".equals(number)) { + // 获取成本中心和利润中心的控件 + BasedataEdit shjh_costcenter = this.getView().getControl("shjh_costcenter"); + BasedataEdit shjh_profitcenter = this.getView().getControl("shjh_pc"); + //根据业务小类设置 成本中心,利润中心是否必填 + DynamicObject shjhBizsmall = (DynamicObject)this.getView().getModel().getValue("shjh_bizsmall"); + BasedataProp tp = (BasedataProp) shjh_costcenter.getProperty(); + BasedataProp td = (BasedataProp) shjh_profitcenter.getProperty(); - // 获取成本中心和利润中心的控件 - BasedataEdit shjh_costcenter = this.getView().getControl("shjh_costcenter"); - BasedataEdit shjh_profitcenter = this.getView().getControl("shjh_pc"); - //根据业务小类设置 成本中心,利润中心是否必填 - DynamicObject shjhBizsmall = (DynamicObject)this.getView().getModel().getValue("shjh_bizsmall"); - BasedataProp tp = (BasedataProp) shjh_costcenter.getProperty(); - BasedataProp td = (BasedataProp) shjh_profitcenter.getProperty(); - - if (null != shjhBizsmall) { - shjhBizsmall = BusinessDataServiceHelper.loadSingle(shjhBizsmall.getPkValue(),"shjh_bizsmalltype"); - // 获取成本中心的必填配置 - boolean shjhCc = shjhBizsmall.getBoolean("shjh_cc"); - shjh_costcenter.setMustInput(shjhCc); - tp.setMustInput(shjhCc); - // 获取利润中心的必填配置 - boolean shjhPc = shjhBizsmall.getBoolean("shjh_pc"); - shjh_profitcenter.setMustInput(shjhPc); - td.setMustInput(shjhPc); - }else { - shjh_costcenter.setMustInput(false); - tp.setMustInput(false); - shjh_profitcenter.setMustInput(false); - td.setMustInput(false); + if (null != shjhBizsmall) { + shjhBizsmall = BusinessDataServiceHelper.loadSingle(shjhBizsmall.getPkValue(),"shjh_bizsmalltype"); + // 获取成本中心的必填配置 + boolean shjhCc = shjhBizsmall.getBoolean("shjh_cc"); + shjh_costcenter.setMustInput(shjhCc); + tp.setMustInput(shjhCc); + // 获取利润中心的必填配置 + boolean shjhPc = shjhBizsmall.getBoolean("shjh_pc"); + shjh_profitcenter.setMustInput(shjhPc); + td.setMustInput(shjhPc); + }else { + shjh_costcenter.setMustInput(false); + tp.setMustInput(false); + shjh_profitcenter.setMustInput(false); + td.setMustInput(false); + } + } } + //赋值结算方式 if ("shjh_jsfs".equals(e.getProperty().getName())) { this.getView().getModel().setValue("settletype",this.getView().getModel().getValue("shjh_jsfs")); diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/TestssOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/TestssOperation.java index 784c6e1..f98166b 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/TestssOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/TestssOperation.java @@ -1,5 +1,6 @@ package shjh.jhzj7.fi.fi.plugin.operate; +import kd.bos.context.RequestContext; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; @@ -11,6 +12,7 @@ import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.sdk.plugin.Plugin; +import shjh.jhzj7.fi.fi.utils.EsbUtils; /** * 修复数据操作 @@ -20,10 +22,15 @@ public class TestssOperation extends AbstractOperationServicePlugIn implements P @Override public void afterExecuteOperationTransaction(AfterOperationArgs e) { super.afterExecuteOperationTransaction(e); - + //付款申请单,只处理来源SAP,付款状态(未付款,部分付款) + QFilter q1 = new QFilter("shjh_sourcesystem", QCP.equals, "A"); + QFilter q2 = new QFilter("paystatus", QCP.equals, "Unpaid"); + QFilter q3 = new QFilter("paystatus", QCP.equals, "Inpayment"); DynamicObject[] ap_payapplys = BusinessDataServiceHelper.load("ap_payapply", - "id,applyorg,entry,entry.e_asstacttype,entry.e_asstact,entry.e_settlementtype,billno", new QFilter[]{new QFilter("billno", QCP.not_equals, "")}); + "id,applyorg,entry,entry.e_asstacttype,entry.e_asstact,entry.e_settlementtype,billno", + new QFilter[]{q1.and(q2.or(q3))}); for (DynamicObject apPayapply : ap_payapplys) { + DynamicObject settlementtype = null; DynamicObject org = apPayapply.getDynamicObject("applyorg"); if (null == org) { continue; @@ -33,14 +40,14 @@ public class TestssOperation extends AbstractOperationServicePlugIn implements P String e_asstacttype = dynamicObject.getString("e_asstacttype"); if ("bd_supplier".equals(e_asstacttype)) { DynamicObject party = dynamicObject.getDynamicObject("e_asstact"); - if (party!= null) { + if (null != party) { party = BusinessDataServiceHelper.loadSingle(party.getPkValue(),"bd_supplier"); DynamicObjectCollection shjhEntrySap = party.getDynamicObjectCollection("shjh_entry_sap"); if (!shjhEntrySap.isEmpty()) { for (DynamicObject object : shjhEntrySap) { if (org.getString("number").equals(object.getString("shjh_companynum"))) { // 结算方式(付款方式) - DynamicObject settlementtype = BusinessDataServiceHelper.loadSingle("bd_settlementtype", + settlementtype = BusinessDataServiceHelper.loadSingle("bd_settlementtype", new QFilter[]{new QFilter("number", QCP.equals, object.getString("shjh_settlementmethod"))}); if (settlementtype != null) { dynamicObject.set("e_settlementtype", settlementtype); @@ -54,6 +61,86 @@ public class TestssOperation extends AbstractOperationServicePlugIn implements P } } SaveServiceHelper.save(new DynamicObject[]{apPayapply}); + //查付款申请下游的付款单 另外如果是成网银(U),付款渠道需要是“柜台如果是“银企直联”支付渠道需要是“银企互联 + DynamicObject[] paybills = BusinessDataServiceHelper.load("cas_paybill", "id,settletype,shjh_jsfs,paymentchannel", + new QFilter[]{new QFilter("sourcebillid", QCP.equals, apPayapply.getPkValue())}); + for (DynamicObject paybill : paybills) { + if (null != settlementtype) { + paybill.set("settletype", settlementtype); + paybill.set("shjh_jsfs", settlementtype); + String string = settlementtype.getString("number"); + if ("U".equals(string)) { + paybill.set("paymentchannel", "counter");//支付渠道 + } + if ("T".equals(string)) { + paybill.set("paymentchannel", "bei"); + } + SaveServiceHelper.save(new DynamicObject[]{paybill}); + //查付款单下游的排程单 另外如果是成网银(U),付款渠道需要是“柜台如果是“银企直联”支付渠道需要是“银企互联 + DynamicObject[] schedulebills = BusinessDataServiceHelper.load("psd_schedulebill", "id,applysettletype,applypaychannel", + new QFilter[]{new QFilter("sourcebillid", QCP.equals, apPayapply.getPkValue())}); + for (DynamicObject schedulebill : schedulebills) { + schedulebill.set("applysettletype", settlementtype);//申请结算方式 + + if ("U".equals(string)) { + schedulebill.set("applypaychannel", "counter");//申请支付渠道 + } + if ("T".equals(string)) { + schedulebill.set("applypaychannel", "bei"); + } + SaveServiceHelper.save(new DynamicObject[]{schedulebill}); + } + } + } + } + + //更新会计科目 + QFilter q4 = new QFilter("billno", QCP.not_equals, ""); + DynamicObject[] ap_payapplyss = BusinessDataServiceHelper.load("ap_payapply", + "id,applyorg,billno,shjh_sapkjkm", + new QFilter[]{q4}); + for (DynamicObject apPayapplyss : ap_payapplyss) { + DynamicObject accountview = null; + DynamicObject org = apPayapplyss.getDynamicObject("applyorg"); + if (null == org) { + continue; + } + DynamicObject accountingsubject = apPayapplyss.getDynamicObject("shjh_sapkjkm"); + if (null != accountingsubject) { + QFilter Q8 = new QFilter("number", QCP.equals, accountingsubject.getString("number"));//会计科目编号 + Q8.and("createorg.id", QCP.equals, org.getPkValue());//当前公司ID + //如果当前数据中心是测试的则使用测试库科目表ID,否则用正式的 + if("2162562979827025920".equals(RequestContext.get().getAccountId())){ + Q8.and("accounttable.id", QCP.equals, 2125524820924832768L);//测试科目表 + }else{ + Q8.and("accounttable.id", QCP.equals, EsbUtils.ACCTABLE);//正式科目表 + } + accountview = BusinessDataServiceHelper.loadSingle("bd_accountview", Q8.toArray()); + if(null != accountview ){ + apPayapplyss.set("shjh_sapkjkm", accountview); + } + } + SaveServiceHelper.save(new DynamicObject[]{apPayapplyss}); + //查付款申请下游的付款单 + DynamicObject[] paybills = BusinessDataServiceHelper.load("cas_paybill", + "id,settletype,shjh_jsfs,paymentchannel,entry,entry.shjh_sapkjkm", + new QFilter[]{new QFilter("sourcebillid", QCP.equals, apPayapplyss.getPkValue())}); + for (DynamicObject paybill : paybills) { + if (null != accountview) { + DynamicObjectCollection entry = paybill.getDynamicObjectCollection("entry"); + for (DynamicObject dynamicObject : entry) { + dynamicObject.set("shjh_sapkjkm",accountview); + } + SaveServiceHelper.save(new DynamicObject[]{paybill}); + //查付款单下游的排程单 + DynamicObject[] schedulebills = BusinessDataServiceHelper.load("psd_schedulebill", "id,shjh_sapkjkm", + new QFilter[]{new QFilter("sourcebillid", QCP.equals, apPayapplyss.getPkValue())}); + for (DynamicObject schedulebill : schedulebills) { + schedulebill.set("shjh_sapkjkm", accountview); + SaveServiceHelper.save(new DynamicObject[]{schedulebill}); + } + } + } } } } diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java b/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java index 337e0fa..52d3d5e 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java @@ -44,23 +44,39 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { public void execute(RequestContext requestContext, Map map) throws KDException { // 获取临期天数并转换 - String lq = (String) map.get("临期"); - if (StringUtils.isEmpty(lq)) { + String lq = (String) map.get("临期_后"); + String lq1 = (String) map.get("临期_前"); + + // 检查是否有有效的临期数据 + if (StringUtils.isEmpty(lq) && StringUtils.isEmpty(lq1)) { return; } - int daysToAdd = Integer.parseInt(lq); // 将临期字符串转为整数天数 + // 获取当前日期 LocalDate currentDate = LocalDate.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); - LocalDate endDate = currentDate.plusDays(daysToAdd); - // 格式化日期 - String formattedoldDate = currentDate.format(formatter); //开始日期 当前日期 - String formattedNewDate = endDate.format(formatter); //结束日期(当前日期 + 临期天数) + + // 计算开始日期(临期_前表示今天之前的天数) + LocalDate startDate = currentDate; + if (StringUtils.isNotEmpty(lq1)) { + int daysBefore = Integer.parseInt(lq1); + startDate = currentDate.minusDays(daysBefore); + } + + // 计算结束日期(临期_后表示今天之后的天数) + LocalDate endDate = currentDate; + if (StringUtils.isNotEmpty(lq)) { + int daysAfter = Integer.parseInt(lq); + endDate = currentDate.plusDays(daysAfter); + } + + String formattedoldDate = startDate.format(formatter); // 开始日期 + String formattedNewDate = endDate.format(formatter); // 结束日期 JSONArray IT_LIST = new JSONArray(); // 添加SAP应付凭到期日过滤条件 addFilterCondition(IT_LIST, "FAEDT", formattedoldDate, formattedNewDate); - JSONObject result = vouchers_payable(IT_LIST, "临期:"+lq); + JSONObject result = vouchers_payable(IT_LIST,lq+ "临期:"+lq1); if (null != result && result.containsKey("data")) { // 处理查询结果 JSONObject data = (JSONObject) result.get("data");