From cdbbfd3da25471fea41ff6c2074ab3958e510c67 Mon Sep 17 00:00:00 2001 From: zoujiangtao Date: Fri, 20 Jun 2025 17:45:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=86=85=E5=AE=B9=EF=BC=9A?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E7=BC=96=E5=88=B6=E8=B0=83=E6=95=B4=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81/OpenApi=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E6=8F=92=E4=BB=B6=E8=B0=83=E6=95=B4/=E4=B8=8A?= =?UTF-8?q?=E5=AD=98=E4=BD=99=E9=A2=9D=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= =?UTF-8?q?/=E5=A4=A7=E5=86=99=E9=87=91=E9=A2=9D=E5=86=99=E5=85=A5?= =?UTF-8?q?=E4=BB=A3=E7=A0=81/=E4=BB=98=E6=AC=BE=E5=8D=95=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=93=8D=E4=BD=9C=E6=8F=92=E4=BB=B6=E6=89=A9=E5=B1=95?= =?UTF-8?q?=EF=BC=88=E4=BF=AE=E5=A4=8D=E4=BB=98=E6=AC=BE=E5=8D=95=E5=92=8C?= =?UTF-8?q?=E5=BC=80=E7=A5=A8=E7=99=BB=E8=AE=B0=E5=85=B3=E8=81=94=E5=85=B3?= =?UTF-8?q?=E7=B3=BB=EF=BC=89=20=E6=97=B6=E9=97=B4=EF=BC=9A2025-06-20=2017?= =?UTF-8?q?=EF=BC=9A44=20=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9A=E9=82=B9?= =?UTF-8?q?=E6=B1=9F=E6=B6=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shkd/sys/sys/mservice/ApiService.java | 3 +- .../sys/sys/mservice/PlanningService.java | 3 + .../sys/sys/plugin/Exp/BalanceExpansion.java | 31 ++++- .../sys/plugin/api/InterfacePracticePlug.java | 4 +- .../sys/plugin/api/PayBillApiSavePlugin.java | 123 ++++++++++++++++-- .../sys/plugin/api/TicketRegistration.java | 57 ++++---- .../sys/plugin/form/ApiTestBillPlugin.java | 1 + .../form/PaymentProcessingBillPlugin.java | 20 ++- .../PaymentSlipAssociationFixed.java | 62 +++++++++ 9 files changed, 254 insertions(+), 50 deletions(-) create mode 100644 sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/PaymentSlipAssociationFixed.java diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/ApiService.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/ApiService.java index 69c3ea6..5606bf6 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/ApiService.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/ApiService.java @@ -315,7 +315,8 @@ public class ApiService { case "https://10.1.9.43/iuap-api-auth/yonbip/ctm/api/settlement/feedback": saveResponseBody = pushBill(token, saveUrl, saveRequestBody); jsonObject = JSON.parseObject(saveResponseBody); - if (jsonObject.getJSONObject("data").getIntValue("successnum") > 0) { + code = jsonObject.getString("code"); + if ("200".equals(code)) { if ("TS".equals(dynamic.getString("bankpaystatus"))) { dynamic.set("shkd_pushstatus", "已结算"); } else { diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/PlanningService.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/PlanningService.java index 4e2cec6..60e45dc 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/PlanningService.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/PlanningService.java @@ -185,12 +185,15 @@ public class PlanningService { * @return */ public static String queryPlanning(String reportPeriod, String reportOrg) { + logger.info("查询计划编制入参:reportPeriod={},reportOrg={}", reportPeriod, reportOrg); DynamicObject[] fpm_member1 = BusinessDataServiceHelper.load("fpm_member", "id,name,number", new QFilter("name", QCP.equals, reportPeriod).toArray()); if (fpm_member1 == null || fpm_member1.length == 0) { + logger.info("查询编报期间:fpm_member1 == null || fpm_member1.length == 0"); return null; } DynamicObject[] fpm_member2 = BusinessDataServiceHelper.load("fpm_member", "id,name,number", new QFilter("name", QCP.equals, reportOrg).toArray()); if (fpm_member2 == null || fpm_member2.length == 0) { + logger.info("查询编报主体:fpm_member2 == null || fpm_member2.length == 0"); return null; } ReportDataQParam reportDataQParam = new ReportDataQParam(); diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/Exp/BalanceExpansion.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/Exp/BalanceExpansion.java index e2df5fd..fa2bd85 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/Exp/BalanceExpansion.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/Exp/BalanceExpansion.java @@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSONObject; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; @@ -24,13 +26,30 @@ public class BalanceExpansion implements IFillBankBalance { @Override public void fillExtBankBalance(DynamicObject bankBalance, String balanceString) { JSONObject jsonObject = JSON.parseObject(balanceString); - logger.info("bankBalance数据:{},balanceString数据:{}", bankBalance, jsonObject); - Object balance = jsonObject.get("depositBalance"); - BigDecimal depositBalance = BigDecimal.ZERO; + Object balanceDateTimeObj = jsonObject.get("balanceDateTime"); + if (balanceDateTimeObj != null && !"".equals(balanceDateTimeObj.toString())) { + String balanceDateTimeStr = balanceDateTimeObj.toString();// 格式为 "yyyy-MM-dd'T'HH:mm:ss"(2025-06-09T14:06:03.064) + LocalDateTime balanceDateTime; + try { + balanceDateTime = LocalDateTime.parse(balanceDateTimeStr, DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } catch (Exception e) { + logger.warn("balanceString数据:{}\n时间格式错误,无法解析:{}", balanceString, e); + return; + } + LocalDateTime now = LocalDateTime.now(); - if (balance != null && !"".equals(balance.toString())) { - depositBalance = new BigDecimal(balance.toString()); + if (now.toLocalDate().isEqual(balanceDateTime.toLocalDate())) { + // 当前日期与 balanceDateTime 是同一天 + // 执行相应的逻辑 + logger.info("bankBalance数据:{},balanceString数据:{}", bankBalance, jsonObject); + Object balance = jsonObject.get("depositBalance"); + BigDecimal depositBalance = BigDecimal.ZERO; + + if (balance != null && !"".equals(balance.toString())) { + depositBalance = new BigDecimal(balance.toString()); + } + bankBalance.set("shkd_depositbalance", depositBalance); + } } - bankBalance.set("shkd_depositbalance", depositBalance); } } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/InterfacePracticePlug.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/InterfacePracticePlug.java index 157463d..4b71b1f 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/InterfacePracticePlug.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/InterfacePracticePlug.java @@ -119,8 +119,8 @@ public class InterfacePracticePlug extends AbstractListPlugin implements Seriali */ @ApiPostMapping(value = "planAdjustment_query", desc = "计划编制查询") public CustomApiResult<@ApiResponseBody("返回参数") String> planAdjustment_query(@ApiParam(value = "查询字段值") HashMap hashMap) { - String reportPeriodName = hashMap.get("reportPeriodName").toString();// 编报期间ID - String reportOrgName = hashMap.get("reportOrgName").toString();// 编报主体ID + String reportPeriodName = hashMap.get("reportPeriodName").toString();// 编报期间ID(name) + String reportOrgName = hashMap.get("reportOrgName").toString();// 编报主体ID(name) String queryPlanning = queryPlanning(reportPeriodName, reportOrgName); return CustomApiResult.fail("404", queryPlanning); } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/PayBillApiSavePlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/PayBillApiSavePlugin.java index 939927c..21a08e0 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/PayBillApiSavePlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/PayBillApiSavePlugin.java @@ -24,6 +24,7 @@ import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -68,7 +69,7 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { Map billtype = (Map) map.get("billtype"); String billtype_number = billtype.get("number").toString(); if ("cas_paybill_other_BT_S".equals(billtype_number) && "共享系统".equals(shkd_businessname)) { - logger.info("进入付款处理单API"); + logger.info("单据类型 → 其他付款,推送系统 → 共享系统"); // 收款人ID fieldName1 = "payee"; // 付款银行编码 @@ -177,7 +178,7 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { } } else if ("cas_paybill_syn_BT_S".equals(billtype_number) && "共享系统".equals(shkd_businessname)) {// BIP传的跨主体调拨 - logger.info("进入付款处理单API"); + logger.info("单据类型 → 同名转账,推送系统 → 共享系统"); // 收款人ID fieldName1 = "payee"; // 付款银行编码 @@ -286,7 +287,7 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { } } else if ("cas_paybill_span_BT_S".equals(billtype_number) && "共享系统".equals(shkd_businessname)) {// BIP传的同名转账 - logger.info("进入付款处理单API"); + logger.info("单据类型 → 跨主体调拨,推送系统 → 共享系统"); // 收款人ID fieldName1 = "payee"; // 付款银行编码 @@ -395,7 +396,7 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { } } else if ("cas_paybill_other_BT_S".equals(billtype_number) && "XK".equals(shkd_businessname)) {//星空推送的其他单据类型付款单 - logger.info("进入付款处理单API"); + logger.info("单据类型 → 其他付款,推送系统 → XK"); // 收款人ID fieldName1 = "payee"; // 付款银行编码 @@ -429,11 +430,26 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { map.put("payeetype", "bos_org"); map.put("payeeformid", "bos_org"); } else if ("FIN_OTHERS".equals(payeetype)) { - payeetype = "other"; - map.put("payeetype", "other"); - map.put("payeeformid", "other"); + payeetype = "bd_supplier"; + map.put("payeetype", "bd_supplier"); + map.put("payeeformid", "bd_supplier"); } + // 赋值付款金额折本位币 + map.put("localamt", map.get("actpayamt")); + + // 赋值分录应付折本币 + List> entryList = (List>) map.get("entry"); + if (entryList != null && !entryList.isEmpty()) { + Map stringObjectMap = entryList.get(0); + // 获取 e_payableamt 的值 + stringObjectMap.put("e_payablelocamt", stringObjectMap.get("e_payableamt")); + map.put("entry", entryList); + } + + + + Map payeebank = (Map) map.get("payeebank"); String payeebank_number = payeebank.get("number").toString(); DynamicObject[] bd_bebank = BusinessDataServiceHelper.load("bd_bebank", "id,number,provincetxt,citytxt", new QFilter("number", QCP.equals, payeebank_number).toArray()); @@ -470,12 +486,18 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { // 如果为供应商或者客户 if ("bd_supplier".equals(payeetype)) { + logger.info("收款人类型 → 供应商"); Map societycreditcode = new HashMap<>(); societycreditcode.put("societycreditcode", map.get("payeenumber").toString()); map.put("shkd_supplier", societycreditcode); logger.info("收款人ID:{}", map.get("payeenumber")); - DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,number,name,societycreditcode,entry_bank,entry_bank.bankaccount,entry_bank.accountname,entry_bank.bank", new QFilter("societycreditcode", QCP.equals, map.get("payeenumber").toString()).toArray()); + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id," + + "number,name,societycreditcode,shkd_xknumber,entry_bank,entry_bank.bankaccount,entry_bank.accountname," + + "entry_bank.bank", + new QFilter("societycreditcode", QCP.equals, map.get("payeenumber").toString()) + .or("shkd_xknumber", QCP.equals, map.get("payeenumber").toString()) + .or("name", QCP.equals, map.get("payeename").toString()).toArray()); if (objects.length > 0) { DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); @@ -488,6 +510,7 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { //收款人编码 } } else if ("bd_customer".equals(payeetype)) { + logger.info("收款人类型 → 客户"); Map societycreditcode = new HashMap<>(); societycreditcode.put("societycreditcode", map.get("payeenumber").toString()); map.put("shkd_customer", societycreditcode); @@ -505,13 +528,16 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { //收款人编码 } } else if ("bos_user".equals(payeetype)) { + logger.info("收款人类型 → 人员"); Map user_number = new HashMap<>(); - user_number.put("number", map.get("payernumber").toString()); + user_number.put("number", map.get("payeenumber").toString()); + logger.info("收款人编码:{}", map.get("payeenumber")); map.put("shkd_user", user_number); - DynamicObject[] objects = BusinessDataServiceHelper.load(payertype.toString(), "id,name,number,username", new QFilter("number", QCP.equals, map.get("payernumber").toString()).toArray()); + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("number", QCP.equals, map.get("payeenumber").toString()).toArray()); + logger.info("人员查询,通过人员工号查对应的人员数据长度:{}", objects.length); if (objects.length > 0) { - // 付款人编码 - map.put("payernumber", objects[0].getString("number")); + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); // 付款人ID map.put(fieldName1, objects[0].getPkValue()); } @@ -531,6 +557,42 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { } } else if ("cas_paybill_span_BT_S".equals(billtype_number) && "XK".equals(shkd_businessname)) {// 星空传的跨主体调拨 + logger.info("单据类型 → 跨主体调拨,推送系统 → XK"); + + if ("BD_Supplier".equals(payeetype)) { + payeetype = "bd_supplier"; + map.put("payeetype", "bd_supplier"); + map.put("payeeformid", "bd_supplier"); + } else if ("BD_Customer".equals(payeetype)) { + payeetype = "bd_customer"; + map.put("payeetype", "bd_customer"); + map.put("payeeformid", "bd_customer"); + } else if ("BD_Empinfo".equals(payeetype)) { + payeetype = "bos_user"; + map.put("payeetype", "bos_user"); + map.put("payeeformid", "bos_user"); + } else if ("ORG_Organizations".equals(payeetype)) { + payeetype = "bos_org"; + map.put("payeetype", "bos_org"); + map.put("payeeformid", "bos_org"); + } else if ("FIN_OTHERS".equals(payeetype)) { + payeetype = "bd_supplier"; + map.put("payeetype", "bd_supplier"); + map.put("payeeformid", "bd_supplier"); + } + + // 赋值付款金额折本位币 + map.put("localamt", map.get("actpayamt")); + + // 赋值分录应付折本币 + List> entryList = (List>) map.get("entry"); + if (entryList != null && !entryList.isEmpty()) { + Map stringObjectMap = entryList.get(0); + // 获取 e_payableamt 的值 + stringObjectMap.put("e_payablelocamt", stringObjectMap.get("e_payableamt")); + map.put("entry", entryList); + } + fieldName1 = "payee";// 收款人ID // 付款银行编码 fieldName2 = "payerbank"; @@ -581,7 +643,42 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { } } else if ("cas_paybill_syn_BT_S".equals(billtype_number) && "XK".equals(shkd_businessname)) {// 星空传的同名转账 - logger.info("同名转账"); + logger.info("单据类型 → 同名转账,推送系统 → XK"); + + if ("BD_Supplier".equals(payeetype)) { + payeetype = "bd_supplier"; + map.put("payeetype", "bd_supplier"); + map.put("payeeformid", "bd_supplier"); + } else if ("BD_Customer".equals(payeetype)) { + payeetype = "bd_customer"; + map.put("payeetype", "bd_customer"); + map.put("payeeformid", "bd_customer"); + } else if ("BD_Empinfo".equals(payeetype)) { + payeetype = "bos_user"; + map.put("payeetype", "bos_user"); + map.put("payeeformid", "bos_user"); + } else if ("ORG_Organizations".equals(payeetype)) { + payeetype = "bos_org"; + map.put("payeetype", "bos_org"); + map.put("payeeformid", "bos_org"); + } else if ("FIN_OTHERS".equals(payeetype)) { + payeetype = "bd_supplier"; + map.put("payeetype", "bd_supplier"); + map.put("payeeformid", "bd_supplier"); + } + + // 赋值付款金额折本位币 + map.put("localamt", map.get("actpayamt")); + + // 赋值分录应付折本币 + List> entryList = (List>) map.get("entry"); + if (entryList != null && !entryList.isEmpty()) { + Map stringObjectMap = entryList.get(0); + // 获取 e_payableamt 的值 + stringObjectMap.put("e_payablelocamt", stringObjectMap.get("e_payableamt")); + map.put("entry", entryList); + } + // 收款人ID fieldName1 = "payee"; // 付款银行编码 diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/TicketRegistration.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/TicketRegistration.java index e86e7f9..eba1b58 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/TicketRegistration.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/TicketRegistration.java @@ -25,7 +25,7 @@ public class TicketRegistration implements Serializable, ApiSavePlugin { @Override public List> preHandleRequestData(List> reqData) { - logger.info("进入TicketRegistration"); + logger.info("进入TicketRegistration,接口调用接口参数:{}\n数据长度:{}", reqData, reqData.size()); for (Map map : reqData) { String payeetype = map.get("payeetype").toString(); /** @@ -41,23 +41,28 @@ public class TicketRegistration implements Serializable, ApiSavePlugin { logger.info("进入收票登记"); Map deliver = (Map) map.get("deliver"); String deliveraccountbase = map.get("deliveraccountbase").toString();// 交票人账号 + logger.info("收票登记→收票人账号:{}", deliveraccountbase); String deliver_number = deliver.get("number").toString(); DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype, "id,number," + "name,societycreditcode,entry_bank,entry_bank.bankaccount,entry_bank.accountname,entry_bank.bank", new QFilter("societycreditcode", QCP.equals, deliver_number).toArray()); if (objects.length > 0) { logger.info("进入收票登记→objects.length > 0"); - DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); - dynamicObjectCollection.forEach(dynamicObject -> { - if (dynamicObject.getString("bankaccount").equals(deliveraccountbase)) { - Object bank = dynamicObject.get("bank"); - DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("bd_bebank", "id,number", new QFilter("id", QCP.equals, bank).toArray()); - Map deliveropenbank = new HashMap<>(); - deliveropenbank.put("number", dynamicObjects[0].getString("number")); - map.put("deliveropenbank", deliveropenbank); - map.put("deliveropenbanknum", dynamicObjects[0].getString("number")); - } - }); +// DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); +// +// for (DynamicObject dynamicObject : dynamicObjectCollection) { +// logger.info("进入收票登记→objects.length > 0→dynamicObjectCollection.forEach,\nbankaccount → {}", dynamicObject.getString("bankaccount")); +// if (dynamicObject.getString("bankaccount").equals(deliveraccountbase)) { +// DynamicObject bank = dynamicObject.getDynamicObject("bank"); +// logger.info("进入收票登记→objects.length > 0→dynamicObjectCollection.forEach,bank → {}", bank); +// Map deliveropenbank = new HashMap<>(); +// deliveropenbank.put("number", bank.getString("number")); +// map.put("deliveropenbank", deliveropenbank); +// map.put("deliveropenbanknum", bank.getString("number")); +// // 跳出循环 +// break; +// } +// } Map societycreditcode = new HashMap<>(); societycreditcode.put("number", objects[0].getString("number")); map.put("deliver", societycreditcode); @@ -68,23 +73,29 @@ public class TicketRegistration implements Serializable, ApiSavePlugin { logger.info("进入开票登记"); Map deliver = (Map) map.get("receiver"); String receiveraccount = map.get("receiveraccount").toString();// 收款人账号 + logger.info("开票登记→收款人账号:{}", receiveraccount); String receiver_number = deliver.get("number").toString(); DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype, "id,number," + "name,societycreditcode,entry_bank,entry_bank.bankaccount,entry_bank.accountname,entry_bank.bank", new QFilter("societycreditcode", QCP.equals, receiver_number).toArray()); + if (objects.length > 0) { logger.info("进入开票登记→objects.length > 0"); - DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); - dynamicObjectCollection.forEach(dynamicObject -> { - if (dynamicObject.getString("bankaccount").equals(receiveraccount)) { - Object bank = dynamicObject.get("bank"); - DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("bd_bebank", "id,number", new QFilter("id", QCP.equals, bank).toArray()); - Map receiverbank = new HashMap<>(); - receiverbank.put("number", dynamicObjects[0].getString("number")); - map.put("receiverbank", receiverbank); - map.put("receiverbankno", dynamicObjects[0].getString("number")); - } - }); +// DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); +// +// for (DynamicObject dynamicObject : dynamicObjectCollection) { +// logger.info("进入开票登记→objects.length > 0→dynamicObjectCollection.forEach,\nbankaccount → {}", dynamicObject.getString("bankaccount")); +// if (dynamicObject.getString("bankaccount").equals(receiveraccount)) { +// DynamicObject bank = dynamicObject.getDynamicObject("bank"); +// logger.info("进入开票登记→objects.length > 0→dynamicObjectCollection.forEach,bank → {}", bank); +// Map receiverbank = new HashMap<>(); +// receiverbank.put("number", bank.getString("number")); +// map.put("receiverbank", receiverbank); +// map.put("receiverbankno", bank.getString("number")); +// // 跳出循环 +// break; +// } +// } Map societycreditcode = new HashMap<>(); societycreditcode.put("number", objects[0].getString("number")); map.put("receiver", societycreditcode); diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiTestBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiTestBillPlugin.java index 54d3263..e98536d 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiTestBillPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiTestBillPlugin.java @@ -123,6 +123,7 @@ public class ApiTestBillPlugin extends AbstractBillPlugIn implements Plugin { Path path = Paths.get(dynamic.getString("filepath")); String upfileName = path.getFileName().toString(); String dataUrl = convertUrlToBase64DataUrl(pdfUrl); + logger.info("pdfUrl:" + dataUrl); this.getView().showTipNotification("dataUrl:" + dataUrl + "\n文件名:" + upfileName); } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/PaymentProcessingBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/PaymentProcessingBillPlugin.java index 8107ed0..c57c14b 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/PaymentProcessingBillPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/PaymentProcessingBillPlugin.java @@ -8,6 +8,8 @@ import kd.bos.entity.operate.result.OperationResult; import kd.bos.ext.fi.bei.util.EmptyUtil; import kd.bos.form.control.Toolbar; import kd.bos.form.control.events.ItemClickEvent; +import kd.bos.i18n.mservice.I18nServiceHelper; +import kd.bos.i18n.mservice.utils.AmountConvertResult; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.query.QCP; @@ -88,6 +90,7 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P } } + public void propertyChanged(PropertyChangedArgs e) { String key = e.getProperty().getName(); ChangeData[] changeData = e.getChangeSet(); @@ -95,13 +98,13 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P Object oldValue = changeData[0].getOldValue(); DynamicObject settleType; Object value = this.getModel().getValue("settletype"); - settleType=value != null ? (DynamicObject)value : null; + settleType = value != null ? (DynamicObject) value : null; if (newValue != oldValue) { DynamicObject applyDo; switch (key) { case "settletype": if (EmptyUtil.isNoEmpty(settleType)) { - if ("电汇".equals(settleType.getString("name"))){ + if ("电汇".equals(settleType.getString("name"))) { this.getView().setVisible(true, new String[]{"settletnumber"}); this.getView().setVisible(true, new String[]{"draftbill"}); } @@ -109,21 +112,28 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P break; case "paymentchannel": if (EmptyUtil.isNoEmpty(settleType)) { - if ("电汇".equals(settleType.getString("name"))){ + if ("电汇".equals(settleType.getString("name"))) { this.getView().setVisible(true, new String[]{"settletnumber"}); this.getView().setVisible(true, new String[]{"draftbill"}); } } break; + case "actpayamt": + AmountConvertResult result = I18nServiceHelper.amountConvertUppercase("ZH", "CNY", newValue.toString(), "false"); + if (result.isSuccess()) { + this.getModel().setValue("actpayamt", result.getResult()); + break; + } } } } + public void afterBindData(EventObject e) { DynamicObject settleType; Object value = this.getModel().getValue("settletype"); - settleType=value != null ? (DynamicObject)value : null; + settleType = value != null ? (DynamicObject) value : null; if (EmptyUtil.isNoEmpty(settleType)) { - if ("电汇".equals(settleType.getString("name"))){ + if ("电汇".equals(settleType.getString("name"))) { this.getView().setVisible(true, new String[]{"settletnumber"}); this.getView().setVisible(true, new String[]{"draftbill"}); } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/PaymentSlipAssociationFixed.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/PaymentSlipAssociationFixed.java new file mode 100644 index 0000000..fdbbefc --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/PaymentSlipAssociationFixed.java @@ -0,0 +1,62 @@ +package shkd.sys.sys.plugin.operation; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.args.AfterOperationArgs; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; + +import java.util.Date; + +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.fi.cas.helper.CasBotpHelper; +import kd.sdk.plugin.Plugin; + +/** + * 单据操作插件 + * 修复付款单和应收票据关联关系 + */ +public class PaymentSlipAssociationFixed extends AbstractOperationServicePlugIn implements Plugin { + @Override + public void afterExecuteOperationTransaction(AfterOperationArgs e) { + super.afterExecuteOperationTransaction(e); + DynamicObject[] dataEntities = e.getDataEntities(); + DynamicObject dataEntity = dataEntities[0]; + // 付款单 + DynamicObject fkDynamicObject = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(), dataEntity.getDynamicObjectType()); + + String shkdBusinessname = dataEntity.getString("shkd_businessname");//来源系统 + + if (dataEntity.get("settletnumber") != null) { + String settletnumber = dataEntity.getString("settletnumber");//结算号 + DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("cdm_payablebill", "id,draftbillno", new QFilter("draftbillno", QCP.equals, settletnumber).toArray()); + + if ("XK".equals(shkdBusinessname) && dynamicObjects.length > 0) { + // 写入票据关联付款单关联关系 + DynamicObject kpdjDynamicObject = BusinessDataServiceHelper.loadSingle(dynamicObjects[0].getPkValue(), dynamicObjects[0].getDynamicObjectType()); + DynamicObjectCollection releatedcasbillentrys = kpdjDynamicObject.getDynamicObjectCollection("releatedcasbillentrys"); + DynamicObject kpLinkRow = new DynamicObject(releatedcasbillentrys.getDynamicObjectType()); + kpLinkRow.set("rel_billtype", "cas_paybill");// 关联单据类型 + kpLinkRow.set("rel_billno", fkDynamicObject.getString("billno"));// 关联单据编号 + kpLinkRow.set("rel_billid", fkDynamicObject.getPkValue());// 关联单据ID + kpLinkRow.set("rel_bizdate", fkDynamicObject.get("bizdate"));// 出纳单据业务日期 + kpLinkRow.set("rel_billamount", fkDynamicObject.get("actpayamt"));// 关联单据金额 + kpLinkRow.set("rel_createtime", new Date());// 关联信息创建时间 + kpLinkRow.set("rel_modifytime", new Date());// 记录修改时间 + kpLinkRow.set("rel_isrefuse", "0");// 票据退票 + releatedcasbillentrys.add(kpLinkRow); + SaveServiceHelper.save(new DynamicObject[]{kpdjDynamicObject}); + + // 写入付款单关联票据关联关系 + String blEntryKey = fkDynamicObject.getDataEntityType().getName() + "_bl"; + DynamicObjectCollection dynamicObjectCollection = fkDynamicObject.getDynamicObjectCollection(blEntryKey); + DynamicObject linkRow = new DynamicObject(dynamicObjectCollection.getDynamicObjectType()); + linkRow.set(blEntryKey + "_basedataid", dynamicObjects[0].getPkValue()); + dynamicObjectCollection.add(linkRow); + SaveServiceHelper.save(new DynamicObject[]{fkDynamicObject}); + } + } + } +} \ No newline at end of file