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 3547d81..a62ea21 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 @@ -74,7 +74,7 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin { if ("shkd_generatejson".equals(itemKey)) { DynamicObject billObject = getDynamicObject(dataEntity); if (billObject == null) { - this.getView().showTipNotification("未查询到具体推送单据"); + this.getView().showTipNotification("未查询到具体推送单据或单据不符合过滤要求"); return; } String requestBody = ApiService.assembleRequestBody(billObject, dataEntity); @@ -123,7 +123,7 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin { String billNumber = dataEntity.getString("shkd_sourcenumber"); logger.info("获取推送单据编码 → billNumber:{}", billNumber); HashMap map = getBillObject(dataEntity, billMark, billNumber); - this.getView().showTipNotification("查找到单据 → 星空单据编码:" + map.get("billNumber") + ",星空单据ID:" + map.get("billId")); + this.getView().showTipNotification("查找到单据 → 星空单据编码:" + map.get("billNumber") + ",星空单据ID:" + map.get("billId")); } // 推送星空单据附件 @@ -266,16 +266,75 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin { break; // 电子回单查询 case "bei_elecreceipt": + // 获取多选基础资料银行类别(推送银行类别) + ArrayList bankTypeArray = new ArrayList<>(); + DynamicObjectCollection bankTypeArr = dataEntity.getDynamicObjectCollection("shkd_banktype"); + for (DynamicObject bankTypeData : bankTypeArr) { + DynamicObject bankType = bankTypeData.getDynamicObject("fbasedataid");//银行类别基础资料数据包 + if (bankType != null) { + String bankTypeName = bankType.getString("name");//银行类别名称 + bankTypeArray.add(bankTypeName); + } + } + + // 获取多选基础资料业务单元(推送组织) + ArrayList orgArray = new ArrayList<>(); + DynamicObjectCollection orgArr = dataEntity.getDynamicObjectCollection("shkd_orgs"); + for (DynamicObject orgData : orgArr) { + orgArray.add(orgData.getLong("fbasedataid_Id")); + } + + // 获取推送开始时间 + Date shkdStartdate = dataEntity.getDate("shkd_startdate"); + 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,ismatch" + , new QFilter("bizdate", QCP.large_equals, shkdStartdate) + .and("ismatch", QCP.equals, "1") + .and("shkd_pushstatus", QCP.not_equals, "已推送") + .and("company", QCP.in, orgArray) + .and("billno", QCP.equals, billNumber).toArray()); + + if (objects4 == null || objects4.length == 0) { + logger.info("无符合条件的推送数据!"); + return null; + } + + //开户银行(银行账户) + DynamicObject accountbank = objects4[0].getDynamicObject("accountbank"); + + //开户行(合作金融机构) + DynamicObject bank = accountbank.getDynamicObject("bank"); + + String bank_number = bank.getString("number"); + DynamicObject[] bd_finorginfo = BusinessDataServiceHelper.load("bd_finorginfo", "id,number,bank_cate", new QFilter("number", QCP.equals, bank_number).toArray()); + + //银行类别 + DynamicObject bank_cate = bd_finorginfo[0].getDynamicObject("bank_cate"); + + String bank_name = bank_cate.getString("name"); + + if (!bankTypeArray.contains(bank_name)) { + logger.info("银行类别不匹配,不推送!"); + return null; + } + billObject = objects4[0]; + + + + /* 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,ismatch" , new QFilter("billno", QCP.equals, billNumber).toArray()); billObject = objects4[0]; - logger.info("获取银企交易明细查询推送对象 → billObject:{}", billObject); + logger.info("获取银企交易明细查询推送对象 → billObject:{}", billObject);*/ break; default: - billObject = null; + return null; } return billObject; } 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 7ed2a9e..a4df39c 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,13 +171,62 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { * 星空推送不会有影响吧? */ case "bei_elecreceipt": - 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,ismatch" - , new QFilter("bizdate", QCP.large_equals, getFirstDayOfMonth(3)) + DynamicObject[] ApiMappingArray = BusinessDataServiceHelper.load("shkd_apimapping", "id,billno," + + "shkd_name,shkd_sourcenumber,shkd_domainname,shkd_appkey,shkd_appsecret,shkd_token,shkd_url,shkd_bodytype," + + "shkd_sourcebill,shkd_targetsystem,entryentity,entryentity.shkd_tarfield,entryentity.shkd_tartier," + + "entryentity.shkd_tartype,entryentity.shkd_parentfield,entryentity.shkd_soufield,entryentity.shkd_defaultdata," + + "entryentity.shkd_required,entryentity.shkd_remarks,shkd_submiturl,shkd_banktype,shkd_startdate,shkd_orgs", + new QFilter("shkd_sourcebill", QCP.equals, "bei_elecreceipt").and( + new QFilter("shkd_targetsystem", QCP.equals, "BIP")).toArray()); + + DynamicObject ApiMapping = ApiMappingArray[0]; + + // 获取多选基础资料银行类别(推送银行类别) + ArrayList bankTypeArray = new ArrayList<>(); + DynamicObjectCollection bankTypeArr = ApiMapping.getDynamicObjectCollection("shkd_banktype"); + for (DynamicObject bankTypeData : bankTypeArr) { + DynamicObject bankType = bankTypeData.getDynamicObject("fbasedataid");//银行类别基础资料数据包 + if (bankType != null) { + String bankTypeName = bankType.getString("name");//银行类别名称 + bankTypeArray.add(bankTypeName); + } + } + + // 获取多选基础资料业务单元(推送组织) + ArrayList orgArray = new ArrayList<>(); + DynamicObjectCollection orgArr = ApiMapping.getDynamicObjectCollection("shkd_orgs"); + for (DynamicObject orgData : orgArr) { + orgArray.add(orgData.getLong("fbasedataid_Id")); + } + + // 获取推送开始时间 + Date shkdStartdate = ApiMapping.getDate("shkd_startdate"); + + 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,ismatch" + , new QFilter("bizdate", QCP.large_equals, shkdStartdate) .and("ismatch", QCP.equals, "1") - .and("shkd_pushstatus", QCP.not_equals, "已推送").toArray()); + .and("shkd_pushstatus", QCP.not_equals, "已推送") + .and("company", QCP.in, orgArray).toArray()); Arrays.stream(elecreceiptArays).forEach(dynamicObject -> { - DynamicObject companys = dynamicObject.getDynamicObject("company"); - if (("SIG1040100、SIG1040901、SIG1040201、SIG1090000、SIG1040700、SIG000101135、SIG1040600、SIG1040300、SIG000100079、SIG000003001、SIG1041000、SIG1040802、SIG000101558、SIG1040808、SIG1040804、SIG1040803、SIG1040801、SIG1040400、SIG104010101、SIG104010102、SIG1040202、SIG1040203、SIG1040204、SIG1040902、SIG000101822、SIG000101799").contains(companys.getString("number"))) { + //开户银行(银行账户) + DynamicObject accountbank = dynamicObject.getDynamicObject("accountbank"); + + //开户行(合作金融机构) + DynamicObject bank = accountbank.getDynamicObject("bank"); + + String bank_number = bank.getString("number"); + DynamicObject[] bd_finorginfo = BusinessDataServiceHelper.load("bd_finorginfo", "id,number,bank_cate", new QFilter("number", QCP.equals, bank_number).toArray()); + + //银行类别 + DynamicObject bank_cate = bd_finorginfo[0].getDynamicObject("bank_cate"); + + String bank_name = bank_cate.getString("name"); + + if (bankTypeArray.contains(bank_name)) { ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null); } }); @@ -235,7 +284,7 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { "entryentity.shkd_tartype,entryentity.shkd_parentfield,entryentity.shkd_soufield,entryentity.shkd_defaultdata," + "entryentity.shkd_required,entryentity.shkd_remarks,shkd_submiturl,shkd_xkusername,shkd_xkappid,shkd_xkacctid," + "shkd_xkappsec,shkd_xkserverurl", - new QFilter("shkd_targetsystem", QCP.equals, "XK").toArray()); + new QFilter("shkd_targetsystem", QCP.equals, "XK").toArray()); String billNumber = dynamicObject.getString("billno"); HashMap resultMap = getBillObject(objects[0], dynamicObject.getDataEntityType().getName(), billNumber); if ((boolean) resultMap.get("result")) { @@ -271,7 +320,7 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { if (isSuccess) { dynamicObject.set("shkd_xkfilestatus", "已推送"); paymentObjects.add(dynamicObject);// 付款处理单据收集 - logger.info("付款处理 → 电子回单推送星空,单据编码:"+ dynamicObject.getString("billno") +"\n附件上传结果:" + uploadAttachmentResult); + logger.info("付款处理 → 电子回单推送星空,单据编码:" + dynamicObject.getString("billno") + "\n附件上传结果:" + uploadAttachmentResult); } } catch (Exception e) { throw new RuntimeException(e); @@ -349,7 +398,7 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { if (isSuccess) { dynamicObject.set("shkd_xkfilestatus", "已推送"); receivableObjects.add(dynamicObject);// 收款处理单据收集 - logger.info("收款处理 → 电子回单推送星空,单据编码:"+ dynamicObject.getString("billno") +"\n附件上传结果:" + uploadAttachmentResult); + logger.info("收款处理 → 电子回单推送星空,单据编码:" + dynamicObject.getString("billno") + "\n附件上传结果:" + uploadAttachmentResult); } } catch (Exception e) { throw new RuntimeException(e); @@ -390,6 +439,7 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { /** * 获取指定月份的第一天 + * * @param month * @return */ @@ -406,6 +456,7 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { /** * 获取当前月份的第一天 + * * @return */ private static Date getAdjustedFirstDayOfCurrentMonth() {