提交内容:推送电子回单附件给星空

时间:2025-04-27 18:45
提交人:邹江涛
This commit is contained in:
zoujiangtao 2025-04-27 18:46:01 +08:00
parent 739498083f
commit 4b76adfa00
3 changed files with 724 additions and 338 deletions

View File

@ -804,7 +804,7 @@ public class ApiService {
return jsonArray.toJSONString();
}
private static String getPdfUrl(String pageId, DynamicObjectCollection receipts, List<String> errMsgList) {
public static String getPdfUrl(String pageId, DynamicObjectCollection receipts, List<String> errMsgList) {
List<String> listPdf = new ArrayList<>(10);
List<byte[]> 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();// 业务单据FormIdFSRCFormId
// model.setfSrcBillId();// 业务单据IDFSRCBILLID
// 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<String> 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 "单据推送失败";
}
}*/
}

View File

@ -57,138 +57,568 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
String fieldName2;//字段名称/付款银行.number
for (Map<String, Object> 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<String, Object> payeebank = (Map<String, Object>) 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<String, Object> settletype = (Map<String, Object>) map.get("settletype");
String settletype_number = settletype.get("number").toString();
Map<String, Object> payeracctbank = (Map<String, Object>) 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<String, Object> 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<String, Object> billtype = (Map<String, Object>) 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<String, Object> payeebank = (Map<String, Object>) 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<String, Object> settletype = (Map<String, Object>) map.get("settletype");
String settletype_number = settletype.get("number").toString();
Map<String, Object> payeracctbank = (Map<String, Object>) 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> payeebank = (Map<String, Object>) 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<String, Object> settletype = (Map<String, Object>) map.get("settletype");
String settletype_number = settletype.get("number").toString();
Map<String, Object> payeracctbank = (Map<String, Object>) 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> payeebank = (Map<String, Object>) 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<String, Object> settletype = (Map<String, Object>) map.get("settletype");
String settletype_number = settletype.get("number").toString();
Map<String, Object> payeracctbank = (Map<String, Object>) 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> payeebank = (Map<String, Object>) 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<String, Object> settletype = (Map<String, Object>) map.get("settletype");
String settletype_number = settletype.get("number").toString();
Map<String, Object> payeracctbank = (Map<String, Object>) 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> payeebank = (Map<String, Object>) 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<String, Object> settletype = (Map<String, Object>) map.get("settletype");
String settletype_number = settletype.get("number").toString();
Map<String, Object> payeracctbank = (Map<String, Object>) 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<String, Object> 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<String, Object> 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<String, Object> payeebank = (Map<String, Object>) 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<String, Object> settletype = (Map<String, Object>) map.get("settletype");
String settletype_number = settletype.get("number").toString();
Map<String, Object> payeracctbank = (Map<String, Object>) 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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");
}
}
}

View File

@ -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<DynamicObject> paymentObjects = new ArrayList<>(); //所有存在电子回单的付款单
ArrayList<DynamicObject> receivableObjects = new ArrayList<>(); //所有存在电子回单的收款单
ArrayList<String> receiptNos = new ArrayList<>();
ArrayList<Long> orgIds = new ArrayList<Long>();
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<String> 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<String> 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:
}
}