From 4b76adfa00701dfcdea108b5e71bc71ee5528e76 Mon Sep 17 00:00:00 2001 From: zoujiangtao Date: Sun, 27 Apr 2025 18:46:01 +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=8E=A8=E9=80=81=E7=94=B5=E5=AD=90=E5=9B=9E=E5=8D=95=E9=99=84?= =?UTF-8?q?=E4=BB=B6=E7=BB=99=E6=98=9F=E7=A9=BA=20=E6=97=B6=E9=97=B4?= =?UTF-8?q?=EF=BC=9A2025-04-27=2018=EF=BC=9A45=20=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=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 --- .../shkd/sys/sys/mservice/ApiService.java | 195 +---- .../sys/plugin/api/PayBillApiSavePlugin.java | 712 ++++++++++++++---- .../sys/sys/plugin/task/PushTaskPlugin.java | 155 +++- 3 files changed, 724 insertions(+), 338 deletions(-) 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 b6b8b3a..336fe81 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 @@ -804,7 +804,7 @@ public class ApiService { return jsonArray.toJSONString(); } - private static String getPdfUrl(String pageId, DynamicObjectCollection receipts, List errMsgList) { + public static String getPdfUrl(String pageId, DynamicObjectCollection receipts, List errMsgList) { List listPdf = new ArrayList<>(10); List resList = new ArrayList<>(10); String getEreceipturlError = (new BeiBizResource()).getGetEreceipturlError(); @@ -1055,197 +1055,4 @@ public class ApiService { } } } -/* - *//** - * 电子回单推送星空 - * - * @param dynamicObject - * @param k3CloudApi - * @return - *//* - public static String pushElectronicReceipts(DynamicObject dynamicObject, K3CloudApi k3CloudApi) throws Exception { - PaymentRequest paymentRequest = new PaymentRequest(); - paymentRequest.setIsDeleteEntry("true");// 是否删除已存在的分录 - paymentRequest.setIsVerifyBaseDataField("false");// 是否验证所有的基础资料有效性 - paymentRequest.setIsEntryBatchFill("true");// 是否批量填充分录 - paymentRequest.setValidateFlag("true");// 是否验证数据合法性标志 - paymentRequest.setNumberSearch("true");// 是否用编码搜索基础资料 - paymentRequest.setIsAutoAdjustField("false");// 是否自动调整JSON字段顺序 - paymentRequest.setIsControlPrecision("false");// 是否控制精度,为true时对金额、单价和数量字段进行精度验证 - paymentRequest.setValidateRepeatJson("false");// 是否控制精度,为true时对金额、单价和数量字段进行精度验证 - - *//** - * { - * "NeedUpDateFields": [], - * "NeedReturnFields": [], - * "IsDeleteEntry": "true", - * "SubSystemId": "", - * "IsVerifyBaseDataField": "false", - * "IsEntryBatchFill": "true", - * "ValidateFlag": "true", - * "NumberSearch": "true", - * "IsAutoAdjustField": "false", - * "InterationFlags": "", - * "IgnoreInterationFlag": "", - * "IsControlPrecision": "false", - * "ValidateRepeatJson": "false", - * "Model": { - * "FID": 0, - * "FDATE": "2025-04-18 00:00:00", - * "FCURRENCYID": { - * "FNUMBER": "PRE001" - * }, - * "FBANKID": { - * "FNUMBER": "001" - * }, - * "FPAYORGID": { - * "FNumber": "100" - * }, - * "FACCOUNTID": { - * "FNUMBER": "087826120100302087331" - * }, - * "FDEBITAMOUNT": 10.0, - * "FCREDITAMOUNT": 0.0, - * "FAmount": 10.0, - * "FEXPLANATION": "测试摘要", - * "FOPPOSITEBANKNAME": "中国工商银行股份有限公司北京中电财支行", - * "FOPPOSITEBANKACNTNO": "1602022101276101", - * "FOPPOSITECCOUNTNAME": "中国工商银行股份有限公司北京中电财支行", - * "FPRINTCOUNT": 0, - * "FMATCHED": false, - * "FReceiptNo": "123", - * "FFlowNo": "456", - * "FSRCBILLID": 0, - * "FReceiptInfo": "测试附言", - * "FRemark": "测试备注", - * "FUSECN": "测试用途" - * } - * } - *//* - - PaymentRequest.Model model = new PaymentRequest.Model(); - - // 交易日期 - Date bizdate = dynamicObject.getDate("bizdate"); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String formattedDate = sdf.format(bizdate); - model.setfDate(formattedDate);// 交易日期:FDATE - - model.setfBillNo(dynamicObject.getString("billno"));// 单据编号:FBillNo - - - DynamicObject currency = dynamicObject.getDynamicObject("currency"); - String currencyNumber = currency.getString("number"); - *//** - * CNY 人民币 - * HKD 港币 - * JPY 日元 - * USD 美元 - * EUR 欧元 - * GBP 英镑 - * GEL 格鲁吉亚拉里 - * NPR 尼泊尔卢比 - *//* - PaymentRequest.Model.FNumberWrapper currency_number = new PaymentRequest.Model.FNumberWrapper(); - switch (currencyNumber) { - case "CNY": - currency_number.setFNumber("PRE001"); - break; - case "HKD": - currency_number.setFNumber("PRE002"); - break; - case "JPY": - currency_number.setFNumber("PRE004"); - break; - case "USD": - currency_number.setFNumber("PRE007"); - break; - case "EUR": - currency_number.setFNumber("PRE003"); - break; - case "GBP": - currency_number.setFNumber("PRE006"); - break; - } - model.setfCurrencyId(currency_number);// 币别 - - DynamicObject bank = dynamicObject.getDynamicObject("bank"); - String bank_name = bank.getString("name"); - PaymentRequest.Model.FNameWrapper bank_number = new PaymentRequest.Model.FNameWrapper(); - bank_number.setFName(bank_name); - model.setfBankId(bank_number);// 银行:FBANKID (必填项) - - DynamicObject company = dynamicObject.getDynamicObject("company"); - String company_number = company.getString("shkd_xkorgnumber");//星空组织编码(shkd_xkorgnumber) - PaymentRequest.Model.FNumberWrapper payOrg_number = new PaymentRequest.Model.FNumberWrapper(); - payOrg_number.setFNumber(company_number); - model.setfPayOrgId(payOrg_number);// 收付组织:FPAYORGID (必填项) - - DynamicObject accountbank = dynamicObject.getDynamicObject("accountbank"); - String accountbank_bankaccountnumber = accountbank.getString("bankaccountnumber"); - PaymentRequest.Model.FNumberWrapper Account_number = new PaymentRequest.Model.FNumberWrapper(); - Account_number.setFNumber(accountbank_bankaccountnumber); - model.setfAccountId(Account_number);// 银行账号:FACCOUNTID (必填项) - -// model.setfSrcBillTypeId();// 业务单据类型:FSRCBILLTYPEID - model.setfSrcBillNo(dynamicObject.getString("billno"));// 业务单据编号:FSRCBILLNO -// model.setfBusiRefeNo();// 业务参考号:FBUSIREFENO - model.setfDebitAmount(dynamicObject.getBigDecimal("debitamount"));// 借方(付款)金额:FDEBITAMOUNT - model.setfCreditAmount(dynamicObject.getBigDecimal("creditamount"));// 贷方(收款)金额:FCREDITAMOUNT - model.setfAmount(dynamicObject.getBigDecimal("amount"));// 金额:FAmount - model.setfExplanation(dynamicObject.getString("description"));// 摘要:FEXPLANATION - model.setfOppositeBankName(dynamicObject.getString("oppbank"));// 对方开户银行:FOPPOSITEBANKNAME - model.setfOppositeBankAcntNo(dynamicObject.getString("oppbanknumber"));// 对方银行账号:FOPPOSITEBANKACNTNO - model.setfOppositeCcountName(dynamicObject.getString("oppbankname"));// 对方账号名称:FOPPOSITECCOUNTNAME - model.setfPrintCount(0);// 打印次数:FPRINTCOUNT -// model.setfFirstPrintDate();// 首次打印时间:FFIRSTPRINTDATE - model.setfMatched("false");// 匹配交易明细:FMATCHED - model.setfReceiptNo(dynamicObject.getString("receiptno"));// 电子回单编号:FReceiptNo - model.setfFlowNo(dynamicObject.getString("detailid"));// 交易流水号:FFlowNo -// model.setfDetailNo();// 关联标记:FDetailNo -// model.setfVerificationCode();// 验证码:FVerificationCode -// model.setfSrcFormId();// 业务单据FormId:FSRCFormId -// model.setfSrcBillId();// 业务单据ID:FSRCBILLID -// model.setfKdRetFlag();// KD标志:FKDRETFLAG -// model.setfReceiptInfo(dynamicObject.getString(""));// 附言:FReceiptInfo - model.setfRemark(dynamicObject.getString("remarks"));// 备注:FRemark - model.setfUseCN(dynamicObject.getString("use"));// 用途:FUSECN - paymentRequest.setModel(model); - Gson gson = new Gson(); - String requestJson = gson.toJson(paymentRequest); - String result = k3CloudApi.save("WB_ReceiptBill", requestJson); - JSONObject resultJson = JSON.parseObject(result); - JSONObject responseStatus = resultJson.getJSONObject("Result").getJSONObject("ResponseStatus"); - JSONArray successEntitys = responseStatus.getJSONArray("SuccessEntitys"); - - if (!successEntitys.isEmpty()) { - JSONObject firstEntity = successEntitys.getJSONObject(0); - String id = firstEntity.getString("Id"); - - DynamicObject dynamicObjectObj = BusinessDataServiceHelper.loadSingle(dynamicObject.getPkValue(), dynamicObject.getDynamicObjectType().getName()); - IFormView viewByDynamicObj = createViewByDynamicObj(dynamicObjectObj); - List errMsgList = new ArrayList<>(); - DynamicObjectCollection receipts = QueryServiceHelper.query("bei_elecreceipt", "id,bank," + - "fileflag,filepath,biztype,bankcheckflag,fileserverurl,tcpurl,uploadfilename,username,password," + - "bank.bank_cate bankcate", new QFilter[]{new QFilter("id", QCP.equals, dynamicObject.getPkValue())}); - String pdfUrl = getPdfUrl(viewByDynamicObj.getPageId(), receipts, errMsgList); - Path path = Paths.get(dynamicObject.getString("filepath")); - String upfileName = path.getFileName().toString(); - logger.info("电子回单查询 → 电子回单附件推送接口 → 获取pdf地址:{}", pdfUrl); - - JSONObject jsonObject = new JSONObject(); - jsonObject.put("FileName", upfileName);// 文件名 - jsonObject.put("FormId", "WB_ReceiptBill");// 表单id - jsonObject.put("IsLast", true);// 是否最后一次上传 - jsonObject.put("InterId", id);// 单据内码 - jsonObject.put("BillNO", dynamicObject.getString("billno"));// 单据编码 - jsonObject.put("AliasFileName", upfileName);// 附件别名 - jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串 - - String uploadAttachmentResult = k3CloudApi.attachmentUpload(jsonObject.toString()); - return "单据上传结果:" + result + "\n附件上传结果:" + uploadAttachmentResult; - } else { - return "单据推送失败"; - } - }*/ } \ No newline at end of file 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 3f07149..c713d7b 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 @@ -57,138 +57,568 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { String fieldName2;//字段名称(收/付款银行.number) for (Map map : reqData) { - Object payeetype = map.get("payeetype");//如果是收款人类型 则为付款处理保存接口 - Object payertype = map.get("payertype");//如果是付款人类型 则为收款处理保存接口 + Object billtypeObject = map.get("billtype");// 单据类型 + Object payeetype = map.get("payeetype");// 如果是收款人类型 则为付款处理保存接口 + Object payertype = map.get("payertype");// 如果是付款人类型 则为收款处理保存接口 Object recorg = map.get("recorg");// 收款组织 财务应收单 Object payorg = map.get("payorg");// 付款组织 财务应付单 + String shkd_businessname = map.get("shkd_businessname").toString();// 推送系统 - - // 付款处理保存接口 - if (payeetype != null) { - logger.info("进入付款处理单API"); - // 收款人ID - fieldName1 = "payee"; - // 付款银行编码 - fieldName2 = "payerbank"; - String billstatus = map.get("billstatus").toString(); - if ("A".equals(billstatus)) { - map.put("shkd_pushstatus", "未结算"); - } - - if ("D".equals(billstatus)) { - map.put("shkd_pushstatus", "已结算"); - } - - 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 = "other"; - map.put("payeetype", "other"); - map.put("payeeformid", "other"); - } - - 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()); - if (bd_bebank.length > 0) { - map.put("recprovince", bd_bebank[0].getString("provincetxt")); - map.put("reccity", bd_bebank[0].getString("citytxt")); - } - - Map settletype = (Map) map.get("settletype"); - String settletype_number = settletype.get("number").toString(); - - - Map payeracctbank = (Map) map.get("payeracctbank"); - bankNumber = payeracctbank.get("number").toString(); // 付款银行账号 - - // 账户查询,通过银行账号查对应的付款账户 - DynamicObject[] amAccountbanks = BusinessDataServiceHelper.load("am_accountbank", "id,bank,bank.number,issetbankinterface", new QFilter("number", QCP.equals, bankNumber).toArray()); - logger.info("账户查询,通过银行账号查对应的付款账户长度:{}", amAccountbanks.length); - Map payerbank = new HashMap<>(); - if (amAccountbanks.length > 0) { - payerbank.put("number", amAccountbanks[0].getDynamicObject("bank").getString("number")); - logger.info("账户查询,通过银行账号查对应的付款账户信息:{}", amAccountbanks[0]); - - if ("JSFS17、JSFS18".contains(settletype_number) && amAccountbanks[0].getBoolean("issetbankinterface")) { - map.put("paymentchannel", "bei"); - } else { - map.put("paymentchannel", "counter"); + if (billtypeObject != null) { + 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"); + // 收款人ID + fieldName1 = "payee"; + // 付款银行编码 + fieldName2 = "payerbank"; + String billstatus = map.get("billstatus").toString(); + if ("A".equals(billstatus)) { + map.put("shkd_pushstatus", "未结算"); } + if ("D".equals(billstatus)) { + map.put("shkd_pushstatus", "已结算"); + } + + 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()); + if (bd_bebank.length > 0) { + map.put("recprovince", bd_bebank[0].getString("provincetxt")); + map.put("reccity", bd_bebank[0].getString("citytxt")); + } + + Map settletype = (Map) map.get("settletype"); + String settletype_number = settletype.get("number").toString(); + + + Map payeracctbank = (Map) map.get("payeracctbank"); + bankNumber = payeracctbank.get("number").toString(); // 付款银行账号 + + // 账户查询,通过银行账号查对应的付款账户 + DynamicObject[] amAccountbanks = BusinessDataServiceHelper.load("am_accountbank", "id,bank,bank.number,issetbankinterface", new QFilter("number", QCP.equals, bankNumber).toArray()); + logger.info("账户查询,通过银行账号查对应的付款账户长度:{}", amAccountbanks.length); + Map payerbank = new HashMap<>(); + if (amAccountbanks.length > 0) { + payerbank.put("number", amAccountbanks[0].getDynamicObject("bank").getString("number")); + logger.info("账户查询,通过银行账号查对应的付款账户信息:{}", amAccountbanks[0]); + + if ("JSFS17、JSFS18".contains(settletype_number) && amAccountbanks[0].getBoolean("issetbankinterface")) { + map.put("paymentchannel", "bei"); + } else { + map.put("paymentchannel", "counter"); + } + + } + logger.info("付款银行:{}", payerbank); + map.put(fieldName2, payerbank); + + + // 如果为供应商或者客户 + if ("bd_supplier".equals(payeetype)) { + 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()); + + if (objects.length > 0) { + DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); + logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); + + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } else if ("bd_customer".equals(payeetype)) { + Map societycreditcode = new HashMap<>(); + societycreditcode.put("societycreditcode", map.get("payeenumber").toString()); + map.put("shkd_customer", 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()); + + if (objects.length > 0) { + DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); + logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } else if ("bos_user".equals(payeetype)) { + Map username = new HashMap<>(); + username.put("username", map.get("payeenumber").toString()); + map.put("shkd_user", username); + + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payeenumber").toString()).toArray()); + if (objects.length > 0) { + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } else if ("bos_org".equals(payeetype)) { + Map number = new HashMap<>(); + number.put("number", map.get("payeenumber").toString()); + map.put("shkd_org", number); + + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,number,name,", new QFilter("number", QCP.equals, map.get("payeenumber").toString()).toArray()); + if (objects.length > 0) { + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } } - logger.info("付款银行:{}", payerbank); - map.put(fieldName2, payerbank); - - - - // 如果为供应商或者客户 - if ("bd_supplier".equals(payeetype)) { - 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()); - - if (objects.length > 0) { - DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); - logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); - - // 收款人编码 - map.put("payeenumber", objects[0].getString("number")); - // 收款人ID - map.put(fieldName1, objects[0].getPkValue()); - //收款人编码 - objectNumber = objects[0].getString("number"); + else if ("cas_paybill_syn_BT_S".equals(billtype_number) && "共享系统".equals(shkd_businessname)) {// BIP传的跨主体调拨 + logger.info("进入付款处理单API"); + // 收款人ID + fieldName1 = "payee"; + // 付款银行编码 + fieldName2 = "payerbank"; + String billstatus = map.get("billstatus").toString(); + if ("A".equals(billstatus)) { + map.put("shkd_pushstatus", "未结算"); } - } else if ("bd_customer".equals(payeetype)) { - Map societycreditcode = new HashMap<>(); - societycreditcode.put("societycreditcode", map.get("payeenumber").toString()); - map.put("shkd_customer", 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()); - - if (objects.length > 0) { - DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); - logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); - // 收款人编码 - map.put("payeenumber", objects[0].getString("number")); - // 收款人ID - map.put(fieldName1, objects[0].getPkValue()); - //收款人编码 - objectNumber = objects[0].getString("number"); + if ("D".equals(billstatus)) { + map.put("shkd_pushstatus", "已结算"); } - } else if ("bos_user".equals(payeetype)) { - Map username = new HashMap<>(); - username.put("username", map.get("payeenumber").toString()); - map.put("shkd_user", username); - DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payeenumber").toString()).toArray()); - if (objects.length > 0) { - // 收款人编码 - map.put("payeenumber", objects[0].getString("number")); - // 收款人ID - map.put(fieldName1, objects[0].getPkValue()); - //收款人编码 - objectNumber = objects[0].getString("number"); + 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()); + if (bd_bebank.length > 0) { + map.put("recprovince", bd_bebank[0].getString("provincetxt")); + map.put("reccity", bd_bebank[0].getString("citytxt")); } - } else if ("bos_org".equals(payeetype)) { + + Map settletype = (Map) map.get("settletype"); + String settletype_number = settletype.get("number").toString(); + + + Map payeracctbank = (Map) map.get("payeracctbank"); + bankNumber = payeracctbank.get("number").toString(); // 付款银行账号 + + // 账户查询,通过银行账号查对应的付款账户 + DynamicObject[] amAccountbanks = BusinessDataServiceHelper.load("am_accountbank", "id,bank,bank.number,issetbankinterface", new QFilter("number", QCP.equals, bankNumber).toArray()); + logger.info("账户查询,通过银行账号查对应的付款账户长度:{}", amAccountbanks.length); + Map payerbank = new HashMap<>(); + if (amAccountbanks.length > 0) { + payerbank.put("number", amAccountbanks[0].getDynamicObject("bank").getString("number")); + logger.info("账户查询,通过银行账号查对应的付款账户信息:{}", amAccountbanks[0]); + + if ("JSFS17、JSFS18".contains(settletype_number) && amAccountbanks[0].getBoolean("issetbankinterface")) { + map.put("paymentchannel", "bei"); + } else { + map.put("paymentchannel", "counter"); + } + + } + logger.info("付款银行:{}", payerbank); + map.put(fieldName2, payerbank); + + + // 如果为供应商或者客户 + if ("bd_supplier".equals(payeetype)) { + 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()); + + if (objects.length > 0) { + DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); + logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); + + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } else if ("bd_customer".equals(payeetype)) { + Map societycreditcode = new HashMap<>(); + societycreditcode.put("societycreditcode", map.get("payeenumber").toString()); + map.put("shkd_customer", 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()); + + if (objects.length > 0) { + DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); + logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } else if ("bos_user".equals(payeetype)) { + Map username = new HashMap<>(); + username.put("username", map.get("payeenumber").toString()); + map.put("shkd_user", username); + + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payeenumber").toString()).toArray()); + if (objects.length > 0) { + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } else if ("bos_org".equals(payeetype)) { + Map number = new HashMap<>(); + number.put("number", map.get("payeenumber").toString()); + map.put("shkd_org", number); + + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,number,name,", new QFilter("number", QCP.equals, map.get("payeenumber").toString()).toArray()); + if (objects.length > 0) { + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } + } + else if ("cas_paybill_span_BT_S".equals(billtype_number) && "共享系统".equals(shkd_businessname)) {// BIP传的同名转账 + logger.info("进入付款处理单API"); + // 收款人ID + fieldName1 = "payee"; + // 付款银行编码 + fieldName2 = "payerbank"; + String billstatus = map.get("billstatus").toString(); + if ("A".equals(billstatus)) { + map.put("shkd_pushstatus", "未结算"); + } + + if ("D".equals(billstatus)) { + map.put("shkd_pushstatus", "已结算"); + } + + 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()); + if (bd_bebank.length > 0) { + map.put("recprovince", bd_bebank[0].getString("provincetxt")); + map.put("reccity", bd_bebank[0].getString("citytxt")); + } + + Map settletype = (Map) map.get("settletype"); + String settletype_number = settletype.get("number").toString(); + + + Map payeracctbank = (Map) map.get("payeracctbank"); + bankNumber = payeracctbank.get("number").toString(); // 付款银行账号 + + // 账户查询,通过银行账号查对应的付款账户 + DynamicObject[] amAccountbanks = BusinessDataServiceHelper.load("am_accountbank", "id,bank,bank.number,issetbankinterface", new QFilter("number", QCP.equals, bankNumber).toArray()); + logger.info("账户查询,通过银行账号查对应的付款账户长度:{}", amAccountbanks.length); + Map payerbank = new HashMap<>(); + if (amAccountbanks.length > 0) { + payerbank.put("number", amAccountbanks[0].getDynamicObject("bank").getString("number")); + logger.info("账户查询,通过银行账号查对应的付款账户信息:{}", amAccountbanks[0]); + + if ("JSFS17、JSFS18".contains(settletype_number) && amAccountbanks[0].getBoolean("issetbankinterface")) { + map.put("paymentchannel", "bei"); + } else { + map.put("paymentchannel", "counter"); + } + + } + logger.info("付款银行:{}", payerbank); + map.put(fieldName2, payerbank); + + + // 如果为供应商或者客户 + if ("bd_supplier".equals(payeetype)) { + 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()); + + if (objects.length > 0) { + DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); + logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); + + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } else if ("bd_customer".equals(payeetype)) { + Map societycreditcode = new HashMap<>(); + societycreditcode.put("societycreditcode", map.get("payeenumber").toString()); + map.put("shkd_customer", 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()); + + if (objects.length > 0) { + DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); + logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } else if ("bos_user".equals(payeetype)) { + Map username = new HashMap<>(); + username.put("username", map.get("payeenumber").toString()); + map.put("shkd_user", username); + + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payeenumber").toString()).toArray()); + if (objects.length > 0) { + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } else if ("bos_org".equals(payeetype)) { + Map number = new HashMap<>(); + number.put("number", map.get("payeenumber").toString()); + map.put("shkd_org", number); + + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,number,name,", new QFilter("number", QCP.equals, map.get("payeenumber").toString()).toArray()); + if (objects.length > 0) { + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } + } + else if ("cas_paybill_other_BT_S".equals(billtype_number) && "XK".equals(shkd_businessname)) {//星空推送的其他单据类型付款单 + logger.info("进入付款处理单API"); + // 收款人ID + fieldName1 = "payee"; + // 付款银行编码 + fieldName2 = "payerbank"; + + map.put("billstatus", "A"); + + String billstatus = map.get("billstatus").toString(); + if ("A".equals(billstatus)) { + map.put("shkd_pushstatus", "未结算"); + } + + if ("D".equals(billstatus)) { + map.put("shkd_pushstatus", "已结算"); + } + + 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 = "other"; + map.put("payeetype", "other"); + map.put("payeeformid", "other"); + } + + 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()); + if (bd_bebank.length > 0) { + map.put("recprovince", bd_bebank[0].getString("provincetxt")); + map.put("reccity", bd_bebank[0].getString("citytxt")); + } + + Map settletype = (Map) map.get("settletype"); + String settletype_number = settletype.get("number").toString(); + + + Map payeracctbank = (Map) map.get("payeracctbank"); + bankNumber = payeracctbank.get("number").toString(); // 付款银行账号 + + // 账户查询,通过银行账号查对应的付款账户 + DynamicObject[] amAccountbanks = BusinessDataServiceHelper.load("am_accountbank", "id,bank,bank.number,issetbankinterface", new QFilter("number", QCP.equals, bankNumber).toArray()); + logger.info("账户查询,通过银行账号查对应的付款账户长度:{}", amAccountbanks.length); + Map payerbank = new HashMap<>(); + if (amAccountbanks.length > 0) { + payerbank.put("number", amAccountbanks[0].getDynamicObject("bank").getString("number")); + logger.info("账户查询,通过银行账号查对应的付款账户信息:{}", amAccountbanks[0]); + + if ("JSFS17、JSFS18".contains(settletype_number) && amAccountbanks[0].getBoolean("issetbankinterface")) { + map.put("paymentchannel", "bei"); + } else { + map.put("paymentchannel", "counter"); + } + + } + logger.info("付款银行:{}", payerbank); + map.put(fieldName2, payerbank); + + + // 如果为供应商或者客户 + if ("bd_supplier".equals(payeetype)) { + 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()); + + if (objects.length > 0) { + DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); + logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); + + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + //收款人编码 + } + } else if ("bd_customer".equals(payeetype)) { + Map societycreditcode = new HashMap<>(); + societycreditcode.put("societycreditcode", map.get("payeenumber").toString()); + map.put("shkd_customer", 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()); + + if (objects.length > 0) { + DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); + logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + //收款人编码 + } + } else if ("bos_user".equals(payeetype)) { + Map user_number = new HashMap<>(); + user_number.put("number", map.get("payernumber").toString()); + 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()); + if (objects.length > 0) { + // 付款人编码 + map.put("payernumber", objects[0].getString("number")); + // 付款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } else if ("bos_org".equals(payeetype)) { + Map number = new HashMap<>(); + number.put("number", map.get("payeenumber").toString()); + map.put("shkd_org", number); + + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,number,name,", new QFilter("number", QCP.equals, map.get("payeenumber").toString()).toArray()); + if (objects.length > 0) { + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + //收款人编码 + } + } + } + else if ("cas_paybill_span_BT_S".equals(billtype_number) && "XK".equals(shkd_businessname)) {// 星空传的跨主体调拨 + // 收款人ID + fieldName1 = "payee"; + // 付款银行编码 + fieldName2 = "payerbank"; + 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()); + if (bd_bebank.length > 0) { + map.put("recprovince", bd_bebank[0].getString("provincetxt")); + map.put("reccity", bd_bebank[0].getString("citytxt")); + } + + Map settletype = (Map) map.get("settletype"); + String settletype_number = settletype.get("number").toString(); + + + Map payeracctbank = (Map) map.get("payeracctbank"); + bankNumber = payeracctbank.get("number").toString(); // 付款银行账号 + + // 账户查询,通过银行账号查对应的付款账户 + DynamicObject[] amAccountbanks = BusinessDataServiceHelper.load("am_accountbank", "id,bank,bank.number,issetbankinterface", new QFilter("number", QCP.equals, bankNumber).toArray()); + logger.info("账户查询,通过银行账号查对应的付款账户长度:{}", amAccountbanks.length); + Map payerbank = new HashMap<>(); + if (amAccountbanks.length > 0) { + payerbank.put("number", amAccountbanks[0].getDynamicObject("bank").getString("number")); + logger.info("账户查询,通过银行账号查对应的付款账户信息:{}", amAccountbanks[0]); + + if ("JSFS17、JSFS18".contains(settletype_number) && amAccountbanks[0].getBoolean("issetbankinterface")) { + map.put("paymentchannel", "bei"); + } else { + map.put("paymentchannel", "counter"); + } + + } + logger.info("付款银行:{}", payerbank); + map.put(fieldName2, payerbank); + + Map number = new HashMap<>(); + number.put("number", map.get("payeenumber").toString()); + map.put("shkd_org", number); + + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,number,name,", new QFilter("number", QCP.equals, map.get("payeenumber").toString()).toArray()); + if (objects.length > 0) { + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); + //收款人编码 + } + } + else if ("cas_paybill_syn_BT_S".equals(billtype_number) && "XK".equals(shkd_businessname)) {// 星空传的同名转账 + // 收款人ID + fieldName1 = "payee"; + // 付款银行编码 + fieldName2 = "payerbank"; + 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()); + if (bd_bebank.length > 0) { + map.put("recprovince", bd_bebank[0].getString("provincetxt")); + map.put("reccity", bd_bebank[0].getString("citytxt")); + } + + Map settletype = (Map) map.get("settletype"); + String settletype_number = settletype.get("number").toString(); + + + Map payeracctbank = (Map) map.get("payeracctbank"); + bankNumber = payeracctbank.get("number").toString(); // 付款银行账号 + + // 账户查询,通过银行账号查对应的付款账户 + DynamicObject[] amAccountbanks = BusinessDataServiceHelper.load("am_accountbank", "id,bank,bank.number,issetbankinterface", new QFilter("number", QCP.equals, bankNumber).toArray()); + logger.info("账户查询,通过银行账号查对应的付款账户长度:{}", amAccountbanks.length); + Map payerbank = new HashMap<>(); + if (amAccountbanks.length > 0) { + payerbank.put("number", amAccountbanks[0].getDynamicObject("bank").getString("number")); + logger.info("账户查询,通过银行账号查对应的付款账户信息:{}", amAccountbanks[0]); + + if ("JSFS17、JSFS18".contains(settletype_number) && amAccountbanks[0].getBoolean("issetbankinterface")) { + map.put("paymentchannel", "bei"); + } else { + map.put("paymentchannel", "counter"); + } + + } + logger.info("付款银行:{}", payerbank); + map.put(fieldName2, payerbank); + Map number = new HashMap<>(); number.put("number", map.get("payeenumber").toString()); map.put("shkd_org", number); @@ -200,7 +630,6 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { // 收款人ID map.put(fieldName1, objects[0].getPkValue()); //收款人编码 - objectNumber = objects[0].getString("number"); } } } @@ -260,8 +689,6 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { map.put("payernumber", objects[0].getString("number")); // 付款人ID map.put(fieldName1, objects[0].getPkValue()); - //收款人编码 - objectNumber = objects[0].getString("number"); } } else if ("bd_customer".equals(payertype)) { Map societycreditcode = new HashMap<>(); @@ -278,21 +705,30 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { map.put("payernumber", objects[0].getString("number")); // 付款人ID map.put(fieldName1, objects[0].getPkValue()); - //收款人编码 - objectNumber = objects[0].getString("number"); } } else if ("bos_user".equals(payertype)) { - Map username = new HashMap<>(); - username.put("username", map.get("payernumber").toString()); - map.put("shkd_user", username); - DynamicObject[] objects = BusinessDataServiceHelper.load(payertype.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"); + if (map.get("shkd_businessname").toString().equals("XK")) { + Map user_number = new HashMap<>(); + user_number.put("number", map.get("payernumber").toString()); + 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()); + if (objects.length > 0) { + // 付款人编码 + map.put("payernumber", objects[0].getString("number")); + // 付款人ID + map.put(fieldName1, objects[0].getPkValue()); + } + } else { + Map username = new HashMap<>(); + username.put("username", map.get("payernumber").toString()); + map.put("shkd_user", username); + DynamicObject[] objects = BusinessDataServiceHelper.load(payertype.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()); + } } } else if ("bos_org".equals(payertype)) { Map number = new HashMap<>(); @@ -305,8 +741,6 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { map.put("payernumber", objects[0].getString("number")); // 付款人ID map.put(fieldName1, objects[0].getPkValue()); - //收款人编码 - objectNumber = objects[0].getString("number"); } } } 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 47fb07c..8e37337 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 @@ -1,29 +1,34 @@ package shkd.sys.sys.plugin.task; +import com.alibaba.fastjson.JSONObject; import com.kingdee.bos.qing.util.DateUtils; - -import java.time.YearMonth; -import java.time.ZoneId; - +import com.kingdee.bos.webapi.sdk.K3CloudApi; import kd.bos.context.RequestContext; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.exception.KDException; +import kd.bos.form.IFormView; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.schedule.executor.AbstractTask; import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.sdk.plugin.Plugin; import shkd.sys.sys.mservice.ApiService; +import java.nio.file.Path; +import java.nio.file.Paths; import java.text.ParseException; import java.time.LocalDate; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.*; +import static shkd.sys.sys.mservice.ApiService.*; + /** * 后台任务插件 */ @@ -112,7 +117,10 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { break; // 收款处理 case "cas_recbill": - DynamicObject[] objects2 = BusinessDataServiceHelper.load("cas_recbill", "id,billno,entry,entry.e_expenseitem,settletype,entry.e_remark,receivingtype,payertype,org,bizdate,accountbank,payernumber,actrecamt,txt_description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus" + DynamicObject[] objects2 = BusinessDataServiceHelper.load("cas_recbill", + "id,billno,entry,entry.e_expenseitem,settletype,entry.e_remark,receivingtype," + + "payertype,org,bizdate,accountbank,payernumber,actrecamt,txt_description,shkd_pushstatus," + + "shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus" , new QFilter("bizdate", QCP.large_equals, calculateTheDate(2)) .and("shkd_pushstatus", QCP.not_equals, "已结算") .and("billstatus", QCP.equals, "D").toArray()); @@ -165,6 +173,143 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { }); SaveServiceHelper.save(dynamicObjectList.toArray(new DynamicObject[0])); break; + /** + * 推送星空电子回单 + * 星空推送不会有影响吧? + */ + case "bei_xkfile": + K3CloudApi k3CloudApi = new K3CloudApi(); + ArrayList paymentObjects = new ArrayList<>(); //所有存在电子回单的付款单 + ArrayList receivableObjects = new ArrayList<>(); //所有存在电子回单的收款单 + ArrayList receiptNos = new ArrayList<>(); + ArrayList orgIds = new ArrayList(); + orgIds.add(2122671180270829568L);//1 + orgIds.add(2122671723777131520L);//2 + orgIds.add(2122671728936125440L);//3 + orgIds.add(2122671726377598976L);//4 + orgIds.add(2122671730244747264L);//5 + orgIds.add(2122671185438212096L);//6 + orgIds.add(2122671186830721024L);//7 + orgIds.add(2122671188307116032L);//8 + orgIds.add(2122671190010003456L);//9 + orgIds.add(2122671195059946496L);//10 + orgIds.add(2122671198541217792L);//11 + orgIds.add(2122671200252493824L);//12 + orgIds.add(2122671722317512704L);//13 + // 付款处理 + DynamicObject[] objects5 = BusinessDataServiceHelper.load("cas_paybill", "id," + + "billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,entry.e_actamt,settletype," + + "payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype," + + "org,bizdate,description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname," + + "billstatus,bankpaystatus,sourcetype,shkd_xkfilestatus" + , new QFilter("shkd_xkfilestatus", QCP.not_equals, "已推送") + .and("billstatus", QCP.equals, "D") + .and("org", QCP.in, orgIds).toArray()); + + + Arrays.stream(objects5).forEach(dynamicObject -> { + // 银行收付处理 + DynamicObjectCollection transDetails = QueryServiceHelper.query("bei_transdetail_cas", "id,receredway,debitamount,creditamount,recedbillentry.e_recedbillid", (new QFilter("recedbillentry.e_recedbillid", QCP.equals, dynamicObject.getPkValue())).and(new QFilter("recedbillentry.e_recedbilltype", QCP.equals, "cas_paybill")).toArray()); + if (!transDetails.isEmpty()) { + // 交易明细查询 + DynamicObjectCollection details = QueryServiceHelper.query("bei_transdetail", "id,company,accountbank,currency,matchreceiptentry.e_receiptno receiptno", new QFilter[]{new QFilter("id", QCP.equals, transDetails.get(0).getPkValue())}); + if (!details.isEmpty()) { + // 交易明细查询的电子回单关联标记字段 + if (details.get(0).get("receiptno") != null) { + paymentObjects.add(dynamicObject);// 付款处理单据收集 + /** + * 1、第一步 通过查询到的符合条件的收款或者付款单单据编号查到对应星空的对应单据的单据ID和单据编码 + * 2、推送电子回单至星空对应单据 + */ + DynamicObject[] dynamicObjects1 = BusinessDataServiceHelper.load("t_bei_elecreceipt", "id,receiptno", new QFilter("receiptno", QCP.equals, details.get(0).getString("receiptno")).toArray()); + DynamicObject dynamicObjectObj = BusinessDataServiceHelper.loadSingle(dynamicObjects1[0].getPkValue(), dynamicObjects1[0].getDynamicObjectType().getName()); + IFormView viewByDynamicObj = createViewByDynamicObj(dynamicObjectObj); + List errMsgList = new ArrayList<>(); + DynamicObjectCollection receipts = QueryServiceHelper.query("bei_elecreceipt", "id,bank," + + "fileflag,filepath,biztype,bankcheckflag,fileserverurl,tcpurl,uploadfilename,username,password," + + "bank.bank_cate bankcate", new QFilter[]{new QFilter("id", QCP.equals, dynamicObject.getPkValue())}); + String pdfUrl = getPdfUrl(viewByDynamicObj.getPageId(), receipts, errMsgList); + Path path = Paths.get(dynamicObject.getString("filepath")); + String upfileName = path.getFileName().toString(); + logger.info("电子回单查询 → 电子回单附件推送接口 → 获取pdf地址:{}", pdfUrl); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("FileName", upfileName);// 文件名 + jsonObject.put("FormId", "表单id");// 表单id + jsonObject.put("IsLast", true);// 是否最后一次上传 + jsonObject.put("InterId", "单据内码");// 单据内码 + jsonObject.put("BillNO", dynamicObject.getString("billno"));// 单据编码 + jsonObject.put("AliasFileName", upfileName);// 附件别名 + jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串 + + String uploadAttachmentResult = null; + try { + uploadAttachmentResult = k3CloudApi.attachmentUpload(jsonObject.toString()); + logger.info("付款处理 → 电子回单推送星空,单据编码:"+ dynamicObject.getString("billno") +"\n附件上传结果:" + uploadAttachmentResult); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + } + }); + + // 收款处理 + DynamicObject[] objects6 = BusinessDataServiceHelper.load("cas_recbill", + "id,billno,entry,entry.e_expenseitem,settletype,entry.e_remark,receivingtype," + + "payertype,org,bizdate,accountbank,payernumber,actrecamt,txt_description,shkd_pushstatus," + + "shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,shkd_xkfilestatus" + , new QFilter("shkd_xkfilestatus", QCP.not_equals, "已推送") + .and("billstatus", QCP.equals, "D") + .and("org", QCP.in, orgIds).toArray()); + + Arrays.stream(objects6).forEach(dynamicObject -> { + // 银行收付处理 + DynamicObjectCollection transDetails = QueryServiceHelper.query("bei_transdetail_cas", "id,receredway,debitamount,creditamount,recedbillentry.e_recedbillid", (new QFilter("recedbillentry.e_recedbillid", QCP.equals, dynamicObject.getPkValue())).and(new QFilter("recedbillentry.e_recedbilltype", QCP.equals, "cas_recbill")).toArray()); + if (!transDetails.isEmpty()) { + // 交易明细查询 + DynamicObjectCollection details = QueryServiceHelper.query("bei_transdetail", "id,company,accountbank,currency,matchreceiptentry.e_receiptno receiptno", new QFilter[]{new QFilter("id", QCP.equals, transDetails.get(0).getPkValue())}); + if (!details.isEmpty()) { + // 交易明细查询的电子回单关联标记字段 + if (details.get(0).get("receiptno") != null) { + receivableObjects.add(dynamicObject);// 收款处理单据收集 + /** + * 1、第一步 通过查询到的符合条件的收款或者付款单单据编号查到对应星空的对应单据的单据ID和单据编码 + * 2、推送电子回单至星空对应单据 + */ + DynamicObject[] dynamicObjects1 = BusinessDataServiceHelper.load("t_bei_elecreceipt", "id,receiptno", new QFilter("receiptno", QCP.equals, details.get(0).getString("receiptno")).toArray()); + DynamicObject dynamicObjectObj = BusinessDataServiceHelper.loadSingle(dynamicObjects1[0].getPkValue(), dynamicObjects1[0].getDynamicObjectType().getName()); + IFormView viewByDynamicObj = createViewByDynamicObj(dynamicObjectObj); + List errMsgList = new ArrayList<>(); + DynamicObjectCollection receipts = QueryServiceHelper.query("bei_elecreceipt", "id,bank," + + "fileflag,filepath,biztype,bankcheckflag,fileserverurl,tcpurl,uploadfilename,username,password," + + "bank.bank_cate bankcate", new QFilter[]{new QFilter("id", QCP.equals, dynamicObject.getPkValue())}); + String pdfUrl = getPdfUrl(viewByDynamicObj.getPageId(), receipts, errMsgList); + Path path = Paths.get(dynamicObject.getString("filepath")); + String upfileName = path.getFileName().toString(); + logger.info("电子回单查询 → 电子回单附件推送接口 → 获取pdf地址:{}", pdfUrl); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("FileName", upfileName);// 文件名 + jsonObject.put("FormId", "表单id");// 表单id + jsonObject.put("IsLast", true);// 是否最后一次上传 + jsonObject.put("InterId", "单据内码");// 单据内码 + jsonObject.put("BillNO", dynamicObject.getString("billno"));// 单据编码 + jsonObject.put("AliasFileName", upfileName);// 附件别名 + jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串 + + String uploadAttachmentResult = null; + try { + uploadAttachmentResult = k3CloudApi.attachmentUpload(jsonObject.toString()); + logger.info("收款处理 → 电子回单推送星空,单据编码:"+ dynamicObject.getString("billno") +"\n附件上传结果:" + uploadAttachmentResult); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + } + }); + break; default: } }