From 5d056989324e83ab2cba99044d70d3a84a156ba5 Mon Sep 17 00:00:00 2001 From: zoujiangtao Date: Tue, 18 Mar 2025 09:23:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=86=85=E5=AE=B9=EF=BC=9A?= =?UTF-8?q?=E6=95=B4=E4=BD=93=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0=20?= =?UTF-8?q?=E5=A4=87=E6=B3=A8=EF=BC=9A=E6=95=B4=E4=BD=93=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=88=E5=BA=94=E6=94=B6=E3=80=81=E5=BA=94?= =?UTF-8?q?=E4=BB=98API=E4=BA=8C=E5=BC=80=E4=BB=A3=E7=A0=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9B=E9=93=B6=E8=A1=8C=E6=B5=81=E6=B0=B4=E7=94=B5?= =?UTF-8?q?=E5=AD=90=E5=9B=9E=E5=8D=95=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9=EF=BC=89=20=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E4=BA=BA=EF=BC=9A=E9=82=B9=E6=B1=9F=E6=B6=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/plugin/api/PayBillApiSavePlugin.java | 148 ++++++++++++++---- .../sys/plugin/form/ApiMappingBillPlugin.java | 2 +- .../sys/plugin/mob/ApprovalMobBillPlugin.java | 39 +++++ .../sys/sys/plugin/task/PushTaskPlugin.java | 3 +- 4 files changed, 161 insertions(+), 31 deletions(-) create mode 100644 sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/mob/ApprovalMobBillPlugin.java 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 d268525..aac3670 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 @@ -59,6 +59,11 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { Object payeetype = map.get("payeetype");//如果是收款人类型 则为付款处理保存接口 Object payertype = map.get("payertype");//如果是付款人类型 则为收款处理保存接口 + Object recorg = map.get("recorg");// 收款组织 财务应收单 + Object payorg = map.get("payorg");// 付款组织 财务应付单 + + + // 付款处理保存接口 if (payeetype != null) { logger.info("进入付款处理单API"); // 收款人ID @@ -193,8 +198,12 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { } } + // 收款处理保存接口 if (payertype != null) { + // 付款人ID fieldName1 = "payer"; + // 收款银行.number + fieldName2 = "payeebank"; if ("BD_Supplier".equals(payertype)) { payertype = "bd_supplier"; @@ -218,47 +227,128 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { map.put("payerformid", "other"); } - if ("bd_supplier".equals(payertype) || "bd_customer".equals(payertype)) { - DynamicObject[] objects = BusinessDataServiceHelper.load(payertype.toString(), "id,number,name,societycreditcode", new QFilter("societycreditcode", QCP.equals, map.get("payernumber").toString()).toArray()); + DynamicObject[] amAccountbanks = BusinessDataServiceHelper.load("am_accountbank", "id,bank,bank.number", new QFilter("number", QCP.equals, bankNumber).toArray()); + logger.info("收款账户,通过银行账号查对应的付款账户长度:{}", amAccountbanks.length); + Map payeebank = new HashMap<>(); + if (amAccountbanks.length > 0) { + payeebank.put("number", amAccountbanks[0].getDynamicObject("bank").getString("number")); + } + logger.info("收款银行:{}", payeebank); + map.put(fieldName2, payeebank); + + // 如果为供应商或者客户 + if ("bd_supplier".equals(payeetype)) { + Map societycreditcode = new HashMap<>(); + societycreditcode.put("societycreditcode", map.get("payernumber").toString()); + map.put("shkd_supplier", societycreditcode); + + logger.info("付款供应商统一社会信用代码:{}", map.get("payernumber")); + 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("payernumber").toString()).toArray()); + if (objects.length > 0) { + DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); + logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); + + // 付款人编码 map.put("payernumber", objects[0].getString("number")); + // 付款人ID + map.put(fieldName1, objects[0].getPkValue()); //收款人编码 objectNumber = objects[0].getString("number"); - } else { + } + } else if ("bd_customer".equals(payeetype)) { + Map societycreditcode = new HashMap<>(); + societycreditcode.put("societycreditcode", map.get("payernumber").toString()); + map.put("shkd_customer", societycreditcode); + + logger.info("付款客户统一社会信用代码:{}", map.get("payernumber")); + 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("payernumber").toString()).toArray()); + + if (objects.length > 0) { + DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); + logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); + // 付款人编码 + map.put("payernumber", objects[0].getString("number")); + // 付款人ID + map.put(fieldName1, objects[0].getPkValue()); //收款人编码 - objectNumber = map.get("payernumber").toString(); + objectNumber = objects[0].getString("number"); } - } else { - //收款人编码 - objectNumber = map.get("payernumber").toString(); - } + } else if ("bos_user".equals(payeetype)) { + Map username = new HashMap<>(); + username.put("username", map.get("payernumber").toString()); + map.put("shkd_user", username); - objectType = payertype.toString(); - if (!"other".equals(objectType)) { + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payernumber").toString()).toArray()); + if (objects.length > 0) { + // 付款人编码 + map.put("payernumber", objects[0].getString("number")); + // 付款人ID + map.put(fieldName1, objects[0].getPkValue()); + // 付款人编码 + objectNumber = objects[0].getString("number"); + } + } else if ("bos_org".equals(payeetype)) { + Map number = new HashMap<>(); + number.put("number", map.get("payernumber").toString()); + map.put("shkd_org", number); - - Map accountbank = (Map) map.get("accountbank"); - bankNumber = (String) accountbank.get("number"); - logger.info("收款处理 → \nobjectType:{}\nobjectNumber:{}\nbankNumber:{}", objectType, objectNumber, bankNumber); - - DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load(objectType, "id,number", new QFilter("number", QCP.equals, objectNumber).toArray()); - logger.info("dynamicObjects.length:{}", dynamicObjects.length); - if (dynamicObjects.length > 0) { - map.put(fieldName1, dynamicObjects[0].getPkValue()); - logger.info("dynamicObjects[0]:{}", dynamicObjects[0]); + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,number,name,", new QFilter("number", QCP.equals, map.get("payernumber").toString()).toArray()); + if (objects.length > 0) { + // 收款人编码 + map.put("payernumber", objects[0].getString("number")); + // 付款人ID + map.put(fieldName1, objects[0].getPkValue()); + //收款人编码 + objectNumber = objects[0].getString("number"); } } + } - if ("bos_org".equals(objectType)) { - fieldName2 = "payeebank"; - DynamicObject[] amAccountbanks = BusinessDataServiceHelper.load("am_accountbank", "id,bank,bank.number", new QFilter("number", QCP.equals, bankNumber).toArray()); - logger.info("amAccountbanks.length:{}", amAccountbanks.length); - Map payeebank = new HashMap<>(); - if (amAccountbanks.length > 0) { - payeebank.put("number", amAccountbanks[0].getDynamicObject("bank").getString("number")); + // 财务应收保存接口 // 财务应付保存接口 + if (recorg != null || payorg != null) { + // 往来类型 + String asstacttype = map.get("asstacttype").toString(); + // 获取往来户 + Map asstact = (Map) map.get("asstact"); + // 如果为供应商或者客户 + if ("bd_supplier".equals(asstacttype)) { + Map societycreditcode = new HashMap<>(); + societycreditcode.put("societycreditcode", asstact.get("number").toString()); + map.put("shkd_supplier", societycreditcode); + + logger.info("供应商统一社会信用代码:{}", asstact.get("number").toString()); + DynamicObject[] objects = BusinessDataServiceHelper.load("bd_supplier", "id,number,name,societycreditcode,entry_bank,entry_bank.bankaccount,entry_bank.accountname,entry_bank.bank", new QFilter("societycreditcode", QCP.equals, asstact.get("number").toString()).toArray()); + + if (objects.length > 0) { + Map number = new HashMap<>(); + number.put("number", objects[0].getString("number")); + map.put("asstact", number); + } + } else if ("bd_customer".equals(asstacttype)) { + Map societycreditcode = new HashMap<>(); + societycreditcode.put("societycreditcode", asstact.get("number").toString()); + map.put("shkd_customer", societycreditcode); + + logger.info("客户统一社会信用代码:{}", asstact.get("number").toString()); + DynamicObject[] objects = BusinessDataServiceHelper.load("bd_customer", "id,number,name,societycreditcode,entry_bank,entry_bank.bankaccount,entry_bank.accountname,entry_bank.bank", new QFilter("societycreditcode", QCP.equals, asstact.get("number").toString()).toArray()); + + if (objects.length > 0) { + Map number = new HashMap<>(); + number.put("number", objects[0].getString("number")); + map.put("asstact", number); + } + } else if ("bos_user".equals(asstacttype)) { + Map username = new HashMap<>(); + username.put("username", asstact.get("number").toString()); + map.put("shkd_user", username); + logger.info("人员用户名:{}", asstact.get("number").toString()); + DynamicObject[] objects = BusinessDataServiceHelper.load("bos_user", "id,name,number,username", new QFilter("username", QCP.equals, asstact.get("number").toString()).toArray()); + if (objects.length > 0) { + Map number = new HashMap<>(); + number.put("number", objects[0].getString("number")); + map.put("asstact", number); } - logger.info("payerbank:{}", payeebank); - map.put(fieldName2, payeebank); } } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiMappingBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiMappingBillPlugin.java index 9e0cd4b..8a8bd5c 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiMappingBillPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiMappingBillPlugin.java @@ -248,7 +248,7 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin { DynamicObject[] objects4 = BusinessDataServiceHelper.load("bei_elecreceipt", "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbank,oppbankname,description,company," + "oppbanknumber,oppunit,detaildatetime,accountbank,amount,use,debitamount,creditamount,detailid," + - "uploadfilename,shkd_businessnumber,shkd_businessid,shkd_businessname,filepath,receiptno" + "uploadfilename,shkd_businessnumber,shkd_businessid,shkd_businessname,filepath,receiptno,ismatch" , new QFilter("billno", QCP.equals, billNumber).toArray()); billObject = objects4[0]; logger.info("获取银企交易明细查询推送对象 → billObject:{}", billObject); diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/mob/ApprovalMobBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/mob/ApprovalMobBillPlugin.java new file mode 100644 index 0000000..cf145a8 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/mob/ApprovalMobBillPlugin.java @@ -0,0 +1,39 @@ +package shkd.sys.sys.plugin.mob; + +import kd.bos.bill.AbstractMobBillPlugIn; +import kd.bos.form.CloseCallBack; +import kd.bos.form.container.Container; +import kd.bos.form.control.Button; +import kd.bos.form.control.Toolbar; +import kd.bos.form.events.AfterDoOperationEventArgs; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.sdk.plugin.Plugin; +import shkd.sys.sys.plugin.form.ApiTestBillPlugin; + +import java.util.EventObject; +import java.util.HashMap; + +/** + * 单据界面插件(移动端) + */ +public class ApprovalMobBillPlugin extends AbstractMobBillPlugIn implements Plugin { + private static final Log logger = LogFactory.getLog(ApprovalMobBillPlugin.class); + + @Override + public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) { + super.afterDoOperation(afterDoOperationEventArgs); + logger.info("进入afterDoOperation方法"); + if (afterDoOperationEventArgs.getOperateKey().equals("donothing")) { + logger.info("进入donothing"); + // 插件代码 + HashMap map = new HashMap<>(); + map.put("method", "setLocalStorage"); + HashMap args = new HashMap<>(); + args.put("key", "123"); + args.put("value", "456"); + map.put("args", args); + this.getView().executeClientCommand("callAPPApi", map); + } + } +} \ No newline at end of file diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/PushTaskPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/PushTaskPlugin.java index bf901c0..ce1c469 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/PushTaskPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/PushTaskPlugin.java @@ -171,8 +171,9 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { DynamicObject[] elecreceiptArays = BusinessDataServiceHelper.load("bei_elecreceipt", "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbank,oppbankname,description,company," + "oppbanknumber,oppunit,detaildatetime,accountbank,amount,use,debitamount,creditamount,detailid," + - "uploadfilename,shkd_businessnumber,shkd_businessid,shkd_businessname,filepath,receiptno" + "uploadfilename,shkd_businessnumber,shkd_businessid,shkd_businessname,filepath,receiptno,ismatch" , new QFilter("bizdate", QCP.large_equals, getFirstDayOfMonth()) + .and("ismatch", QCP.equals, "1") .and("shkd_pushstatus", QCP.not_equals, "已推送").toArray()); Arrays.stream(elecreceiptArays).forEach(dynamicObject -> { DynamicObject companys = dynamicObject.getDynamicObject("company");