提交内容:推送星空回单数据

时间:2025-08-06 23:40
提交人:邹江涛
This commit is contained in:
zoujiangtao 2025-08-06 23:40:43 +08:00
parent 72745464ef
commit e3a407e0d0
3 changed files with 277 additions and 121 deletions

View File

@ -1117,9 +1117,19 @@ public class ApiService {
logger.info("获取推送单据类型 → billMark{}", billMark);
String xkBillType = null;
if ("cas_paybill".equals(billMark)) {
xkBillType = "AP_PAYBILL";// 表单id付款处理 付款单AP_PAYBILL
if (billNumber.contains("YHZZ")) {
xkBillType = "CN_BANKTRANSBILL";// 表单id付款处理 银行转账单
}else if (billNumber.contains("SKTKD")) {
xkBillType = "AR_REFUNDBILL";// 表单id付款处理 收款退款单AR_REFUNDBILL
} else if (billNumber.contains("FKD")) {
xkBillType = "AP_PAYBILL";// 表单id付款处理 付款单AP_PAYBILL
}
} else if ("cas_recbill".equals(billMark)) {
xkBillType = "AR_RECEIVEBILL";// 表单id收款处理 收款单AR_RECEIVEBILL
if (billNumber.contains("FKTKD")) {
xkBillType = "AP_REFUNDBILL";// 表单id收款处理 付款退款单AP_REFUNDBILL
} else if (billNumber.contains("SKD")) {
xkBillType = "AR_RECEIVEBILL";// 表单id收款处理 收款单AR_RECEIVEBILL
}
} else if ("fca_transupbill".equals(billMark)) {
xkBillType = "AR_RECEIVEBILL";// 表单id上划处理 收款单AR_RECEIVEBILL
} else if ("fca_transdownbil".equals(billMark)) {
@ -1270,9 +1280,21 @@ public class ApiService {
String entityName = dynamicObject.getDataEntityType().getName();
if ("cas_paybill".equals(entityName)) {
jsonObject.put("FormId", "AP_PAYBILL");// 表单id付款处理 付款单AP_PAYBILL
String billNumber = dynamicObject.getString("shkd_businessnumber");
if (billNumber.contains("YHZZ")) {
jsonObject.put("FormId", "CN_BANKTRANSBILL");// 表单id付款处理 银行转账单CN_BANKTRANSBILL
}else if (billNumber.contains("SKTKD")) {
jsonObject.put("FormId", "AR_REFUNDBILL");// 表单id付款处理 收款退款单AR_REFUNDBILL
} else if (billNumber.contains("FKD")) {
jsonObject.put("FormId", "AP_PAYBILL");// 表单id付款处理 付款单AP_PAYBILL
}
} else if ("cas_recbill".equals(entityName)) {
jsonObject.put("FormId", "AR_RECEIVEBILL");// 表单id收款处理 收款单AR_RECEIVEBILL
String billNumber = dynamicObject.getString("shkd_businessnumber");
if (billNumber.contains("FKTKD")) {
jsonObject.put("FormId", "AP_REFUNDBILL");// 表单id收款处理 付款退款单AP_REFUNDBILL
} else if (billNumber.contains("SKD")) {
jsonObject.put("FormId", "AR_RECEIVEBILL");// 表单id收款处理 收款单AR_RECEIVEBILL
}
} else if ("fca_transupbill".equals(entityName)) {
jsonObject.put("FormId", "AR_RECEIVEBILL");// 表单id上划处理 收款单AR_RECEIVEBILL
} else if ("fca_transdownbil".equals(entityName)) {

View File

@ -122,20 +122,35 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
if ("shkd_queryxk".equals(itemKey)) {
// 获取想要推送单据类型
String billMark = dataEntity.getDynamicObject("shkd_sourcebill").getString("number");
String billNumber;
HashMap<String, Object> map;
if (!"".equals(dataEntity.getString("shkd_sourcenumber"))) {
// 获取查询的源单单据编码已推送星空单据
billNumber = dataEntity.getString("shkd_sourcenumber");
map = getSKPushXKBill(dataEntity, billMark, billNumber);
} else {
// 获取想要查询星空单据编码
billNumber = dataEntity.getString("shkd_targetnumber");
map = getXKPushSKBill(dataEntity, billMark, billNumber);
}
logger.info("获取推送单据编码 → billNumber{}", billNumber);
String shkd_sourcenumber = dataEntity.getString("shkd_sourcenumber");
this.getView().showTipNotification("查找到单据 → 星空单据编码:" + map.get("billNumber") + "星空单据ID" + map.get("billId"));
// 查询单据对象
DynamicObject dynamicObject;
// 查询编码
String xkBillno = "";
if ("cas_paybill".equals(billMark)) {
dynamicObject = BusinessDataServiceHelper.loadSingle(billMark, "id,billno,name,shkd_businessnumber",
new QFilter("billno", QCP.equals, shkd_sourcenumber).toArray());// 表单id付款处理 付款单AP_PAYBILL
xkBillno = dynamicObject.getString("shkd_businessnumber");
} else if ("cas_recbill".equals(billMark)) {
dynamicObject = BusinessDataServiceHelper.loadSingle(billMark, "id,billno,name,shkd_businessnumber",
new QFilter("billno", QCP.equals, shkd_sourcenumber).toArray());// 表单id收款处理 收款单AR_RECEIVEBILL
xkBillno = dynamicObject.getString("shkd_businessnumber");
} else if ("fca_transupbill".equals(billMark)) {
dynamicObject = BusinessDataServiceHelper.loadSingle(billMark, "id,billno,name,shkd_pushxknumber",
new QFilter("billno", QCP.equals, shkd_sourcenumber).toArray());// 表单id上划处理 收款单AR_RECEIVEBILL
xkBillno = dynamicObject.getString("shkd_pushxknumber");
} else if ("fca_transdownbil".equals(billMark)) {
dynamicObject = BusinessDataServiceHelper.loadSingle(billMark, "id,billno,name,shkd_pushxknumber",
new QFilter("billno", QCP.equals, shkd_sourcenumber).toArray());// 表单id下拨处理 付款单AP_PAYBILL
xkBillno = dynamicObject.getString("shkd_pushxknumber");
}
HashMap<String, Object> resultMap = getXKPushSKBill(dataEntity, billMark, xkBillno);
this.getView().showTipNotification("查找到单据 → 星空单据编码:" + resultMap.get("billNumber") + "星空单据ID" + resultMap.get("billId"));
}
// 推送星空单据附件
@ -266,11 +281,11 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
DynamicObject bank_cate = bd_finorginfo[0].getDynamicObject("bank_cate");
if (bank_cate == null) {
logger.info("回单:{},银行类别为空,不推送!", dynamicObject.getString("billno"));
}else {
} else {
Object bank_name = bank_cate.get("name");
if (bank_name == null || "".equals(bank_name.toString())) {
logger.info("回单:{},银行类别为空,不推送!", dynamicObject.getString("billno"));
}else {
} else {
logger.info("回单:{},银行类别:{}", dynamicObject.getString("billno"), bank_name);
if (bankTypeArray.contains(bank_name.toString())) {
// logger.info("获取符合推送条件的单据:{}", dynamicObject.getString("billno"));
@ -299,7 +314,28 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
String shkdSourcenumber = dataEntity.getString("shkd_sourcenumber");
// 查询单据对象
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(billMark, "id,billno,name", new QFilter("billno", QCP.equals, shkdSourcenumber).toArray());
DynamicObject dynamicObject = null;
// 查询编码
String xkBillno = "";
if ("cas_paybill".equals(billMark)) {
dynamicObject = BusinessDataServiceHelper.loadSingle(billMark, "id,billno,name,shkd_businessnumber",
new QFilter("billno", QCP.equals, shkdSourcenumber).toArray());// 表单id付款处理 付款单AP_PAYBILL
xkBillno = dynamicObject.getString("shkd_businessnumber");
} else if ("cas_recbill".equals(billMark)) {
dynamicObject = BusinessDataServiceHelper.loadSingle(billMark, "id,billno,name,shkd_businessnumber",
new QFilter("billno", QCP.equals, shkdSourcenumber).toArray());// 表单id收款处理 收款单AR_RECEIVEBILL
xkBillno = dynamicObject.getString("shkd_businessnumber");
} else if ("fca_transupbill".equals(billMark)) {
dynamicObject = BusinessDataServiceHelper.loadSingle(billMark, "id,billno,name,shkd_pushxknumber",
new QFilter("billno", QCP.equals, shkdSourcenumber).toArray());// 表单id上划处理 收款单AR_RECEIVEBILL
xkBillno = dynamicObject.getString("shkd_pushxknumber");
} else if ("fca_transdownbil".equals(billMark)) {
dynamicObject = BusinessDataServiceHelper.loadSingle(billMark, "id,billno,name,shkd_pushxknumber",
new QFilter("billno", QCP.equals, shkdSourcenumber).toArray());// 表单id下拨处理 付款单AP_PAYBILL
xkBillno = dynamicObject.getString("shkd_pushxknumber");
}
// 获取k3cloudapi
K3CloudApi k3CloudApi = getK3CloudApi(dataEntity);
@ -310,16 +346,35 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
if (receiptNos.isEmpty()) {
this.getView().showTipNotification("未查询到关联回单");
} else {
HashMap<String, Object> resultMap = getSKPushXKBill(dataEntity, billMark, dynamicObject.getString("billno"));
Map<String, Object> receiptResult = new HashMap<>();
// 获取回单
getReceipt(receiptNos.get(0), receiptResult);
String pdfUrl = receiptResult.get("pdfUrl").toString();
String fileName = receiptResult.get("fileName").toString();
logger.info(billMark + "{},电子回单查询 → 电子回单附件推送接口 → 获取pdf地址{}", dynamicObject.getString("billno"), pdfUrl);
// 推送星空附件
String result = pushXkAttachment(dynamicObject, pdfUrl, fileName, resultMap, k3CloudApi);
this.getView().showTipNotification(result);
DynamicObject[] transdetails = BusinessDataServiceHelper.load("bei_transdetail_cas",
"id,billno,receiptno,ismatchereceipt", new QFilter("receiptno", QCP.in, receiptNos)
.and("ismatchereceipt", QCP.equals, "1").toArray());
logger.info("单据关联回单标记查询:{}条,关联标记匹配回单:{}条", receiptNos.size(), transdetails.length);
if (receiptNos.size() == transdetails.length) {
HashMap<String, Object> resultMap = getXKPushSKBill(dataEntity, billMark, xkBillno);
if ((boolean) resultMap.get("result")) {
logger.info("推送星空单据信息:{}", resultMap);
StringBuilder builder = new StringBuilder();
for (String receiptNo : receiptNos) {
Map<String, Object> receiptResult = new HashMap<>();
// 获取回单
getReceipt(receiptNo, receiptResult);
String pdfUrl = receiptResult.get("pdfUrl").toString();
String fileName = receiptResult.get("fileName").toString();
logger.info(billMark + "{},电子回单查询 → 电子回单附件推送接口 → 获取pdf地址{}", dynamicObject.getString("billno"), pdfUrl);
// 推送星空附件
String result = pushXkAttachment(dynamicObject, pdfUrl, fileName, resultMap, k3CloudApi);
builder.append(result).append("\n");
}
this.getView().showTipNotification(builder.toString());
} else {
this.getView().showTipNotification("通过反写字段为查找到星空对应单据数据");
}
} else {
this.getView().showTipNotification("此数据流水未与回单匹配完全,不符合推送条件");
}
}
}
}
@ -450,7 +505,8 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
"id,bizdate,billno,detailid,oppbank,oppunit,accountbank,description,company,oppbanknumber," +
"bankdetailno,transbalance,description,debitamount,creditamount,shkd_pushstatus," +
"shkd_businessnumber,shkd_businessid,shkd_businessname,recedbillentry,receiptno," +
"recedbillentry.e_recedbilltype,recedbillentry.e_recedbillnumber,recedbillentry.e_recedbillid"
"recedbillentry.e_recedbilltype,recedbillentry.e_recedbillnumber,recedbillentry.e_recedbillid," +
"bankcheckflag"
, new QFilter("billno", QCP.equals, billNumber).toArray());
billObject = objects3[0];
logger.info("获取银企交易明细查询推送对象 → billObject{}", billObject);

View File

@ -145,7 +145,12 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
* 收款 先有流水 后有单据
*/
case "bei_transdetail_cas":
DynamicObject[] objects3 = BusinessDataServiceHelper.load("bei_transdetail_cas", "id,bizdate,billno,detailid,oppbank,oppunit,accountbank,description,company,oppbanknumber,bankdetailno,transbalance,description,debitamount,creditamount,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,recedbillentry,receiptno,recedbillentry.e_recedbilltype,recedbillentry.e_recedbillnumber,recedbillentry.e_recedbillid"
DynamicObject[] objects3 = BusinessDataServiceHelper.load("bei_transdetail_cas",
"id,bizdate,billno,detailid,oppbank,oppunit,accountbank,description,company," +
"oppbanknumber,bankdetailno,transbalance,description,debitamount,creditamount," +
"shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname," +
"recedbillentry,receiptno,recedbillentry.e_recedbilltype,recedbillentry.e_recedbillnumber," +
"recedbillentry.e_recedbillid,bankcheckflag"
, new QFilter("bizdate", QCP.large_equals, getAdjustedFirstDayOfCurrentMonth())
.and("shkd_pushstatus", QCP.not_equals, "已推送").toArray());
@ -225,11 +230,11 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
DynamicObject bank_cate = bd_finorginfo[0].getDynamicObject("bank_cate");
if (bank_cate == null) {
logger.info("回单:{},银行类别为空,不推送!", dynamicObject.getString("billno"));
}else{
} else {
Object bank_name = bank_cate.get("name");
if (bank_name == null) {
logger.info("回单:{},银行类别为空,不推送!", dynamicObject.getString("billno"));
}else {
} else {
logger.info("回单:{},银行类别:{}", dynamicObject.getString("billno"), bank_name);
if (bankTypeArray.contains(bank_name.toString())) {
String result = paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null);
@ -250,14 +255,6 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
* 改造
*/
case "bei_xkfile":
ArrayList<DynamicObject> paymentObjects = new ArrayList<>(); //所有符合条件存在电子回单的付款单
ArrayList<DynamicObject> receivableObjects = new ArrayList<>(); //所有符合条件存在电子回单的收款单
ArrayList<DynamicObject> TopObjects = new ArrayList<>(); //所有符合条件存在电子回单的上划单
ArrayList<DynamicObject> AllocatedObjects = new ArrayList<>(); //所有符合条件存在电子回单的下拨单
HashMap<String, Object> resultMap = null;
DynamicObject[] shkd_apimappings = 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," +
@ -278,7 +275,7 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
orgIds.add(orgData.getLong("fbasedataid_Id"));
}
// 筛选选出未推送过回单我们推送他们他们推送我们的付款单
// 初步筛选 - 未推送过回单付款状态为已付款属于宏明的组织的付款单 - 付款单
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," +
@ -288,48 +285,60 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
.and("billstatus", QCP.equals, "D")
.and("org", QCP.in, orgIds).toArray());
// 第二次筛选 - 有反写字段有回单且所有回单匹配完全星空单据存在 - 付款单
for (DynamicObject dynamicObject : objects5) {
// 星空推送司库单据
// 没有反写字段shkd_businessnumber的不推送
Object shkdBusinessnumber = dynamicObject.get("shkd_businessnumber");
if (shkdBusinessnumber != null && shkdBusinessnumber != "") {
resultMap = getXKPushSKBill(xkApiMapping, dynamicObject.getDataEntityType().getName(), dynamicObject.getString("shkd_businessnumber"));
if ((boolean) resultMap.get("result")) {
paymentObjects.add(dynamicObject);
logger.info("付款处理:{},为星空推送司库单据,星空单据编码:{}", dynamicObject.getString("billno"), shkdBusinessnumber);
}
} else {
resultMap = getSKPushXKBill(xkApiMapping, dynamicObject.getDataEntityType().getName(), dynamicObject.getString("billno"));
if ((boolean) resultMap.get("result")) {
paymentObjects.add(dynamicObject);
logger.info("付款处理:{},为司库推送星空单据,星空单据编码:{}", dynamicObject.getString("billno"), resultMap.get("billNumber"));
}
if (shkdBusinessnumber == null || "".equals(shkdBusinessnumber.toString())) {
logger.info("付款处理:{}shkd_businessnumber星空推送编码字段为空不推送", dynamicObject.getString("billno"));
continue;
}
}
// 筛选出符合条件的付款单查询是否有回单如果有则推送
for (DynamicObject dynamicObject : paymentObjects) {
// 联查不到回单标记的不推送
List<String> receiptNos = HandLinkBillHelper.getReceiptNoByDetails(dynamicObject, dynamicObject.getDataEntityType().getName());
if (receiptNos.isEmpty()) {
logger.info("付款单:{},无回单", dynamicObject.getString("billno"));
} else {
logger.info("付款单:{},无回单,不推送", dynamicObject.getString("billno"));
continue;
}
// 存在回单未匹配的不推送
DynamicObject[] transdetails = BusinessDataServiceHelper.load("bei_transdetail_cas",
"id,billno,receiptno,ismatchereceipt", new QFilter("receiptno", QCP.in, receiptNos)
.and("ismatchereceipt", QCP.equals, "1").toArray());
if (receiptNos.size() != transdetails.length) {
logger.info("付款单:{},回单未完全匹配,不推送", dynamicObject.getString("billno"));
continue;
}
// 通过反写字段未找到星空单据的不推送
HashMap<String, Object> resultMap = getXKPushSKBill(xkApiMapping, dynamicObject.getDataEntityType().getName(), dynamicObject.getString("shkd_businessnumber"));
if (!(boolean) resultMap.get("result")) {
logger.info("付款处理:{},通过反写的星空编码字段未查找星空对应单据", dynamicObject.getString("billno"));
continue;
}
StringBuilder builder = new StringBuilder();
for (String receiptNo : receiptNos) {
Map<String, Object> receiptResult = new HashMap<>();
// 获取回单
getReceipt(receiptNos.get(0), receiptResult);
getReceipt(receiptNo, receiptResult);
String pdfUrl = receiptResult.get("pdfUrl").toString();
String fileName = receiptResult.get("fileName").toString();
logger.info("付款单:{},电子回单查询 → 电子回单附件推送接口 → 获取pdf地址{}", dynamicObject.getString("billno"), pdfUrl);
// 推送星空附件
String result = pushXkAttachment(dynamicObject, pdfUrl, fileName, resultMap, k3CloudApi);
if (result.contains("推送星空成功")) {
dynamicObject.set("shkd_xkfilestatus", "已推送");
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
}
builder.append(result).append("\n");
}
logger.info("付款单:{},电子回单推送星空结果:{}", dynamicObject.getString("billno"), builder.toString());
if (!builder.toString().contains("电子回单推送星空失败")) {
dynamicObject.set("shkd_xkfilestatus", "已推送");
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
}
}
// 收款处理
// 初步筛选 - 未推送过回单收款状态为已付款属于宏明的组织的收款单 - 收款处理
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," +
@ -338,105 +347,174 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
.and("billstatus", QCP.equals, "D")
.and("org", QCP.in, orgIds).toArray());
// 第二次筛选 - 有反写字段有回单且所有回单匹配完全星空单据存在 - 收款单
for (DynamicObject dynamicObject : objects6) {
// 只有司库推送星空业务
resultMap = getSKPushXKBill(xkApiMapping, dynamicObject.getDataEntityType().getName(), dynamicObject.getString("billno"));
if ((boolean) resultMap.get("result")) {
receivableObjects.add(dynamicObject);
logger.info("付款处理:{},为司库推送星空单据,星空单据编码:{}", dynamicObject.getString("billno"), resultMap.get("billNumber"));
}
}
for (DynamicObject dynamicObject : receivableObjects) {
// 没有反写字段shkd_businessnumber的不推送
Object shkdBusinessnumber = dynamicObject.get("shkd_businessnumber");
if (shkdBusinessnumber == null || "".equals(shkdBusinessnumber.toString())) {
logger.info("收款处理:{}shkd_businessnumber星空推送编码字段为空不推送", dynamicObject.getString("billno"));
continue;
}
// 联查不到回单标记的不推送
List<String> receiptNos = HandLinkBillHelper.getReceiptNoByDetails(dynamicObject, dynamicObject.getDataEntityType().getName());
if (receiptNos.isEmpty()) {
logger.info("收款单:{},无匹配回单", dynamicObject.getString("billno"));
} else {
logger.info("收款单:{},无关联回单,不推送", dynamicObject.getString("billno"));
continue;
}
// 存在回单未匹配的不推送
DynamicObject[] transdetails = BusinessDataServiceHelper.load("bei_transdetail_cas",
"id,billno,receiptno,ismatchereceipt", new QFilter("receiptno", QCP.in, receiptNos)
.and("ismatchereceipt", QCP.equals, "1").toArray());
if (receiptNos.size() != transdetails.length) {
logger.info("收款单:{},回单未完全匹配,不推送", dynamicObject.getString("billno"));
continue;
}
// 通过反写字段未找到星空单据的不推送
HashMap<String, Object> resultMap = getXKPushSKBill(xkApiMapping, dynamicObject.getDataEntityType().getName(), dynamicObject.getString("shkd_businessnumber"));
if (!(boolean) resultMap.get("result")) {
logger.info("收款处理:{},通过反写的星空编码字段未查找星空对应单据", dynamicObject.getString("billno"));
continue;
}
StringBuilder builder = new StringBuilder();
for (String receiptNo : receiptNos) {
Map<String, Object> receiptResult = new HashMap<>();
// 获取回单
getReceipt(receiptNos.get(0), receiptResult);
getReceipt(receiptNo, receiptResult);
String pdfUrl = receiptResult.get("pdfUrl").toString();
String fileName = receiptResult.get("fileName").toString();
logger.info("收款单:{},电子回单查询 → 电子回单附件推送接口 → 获取pdf地址{}", dynamicObject.getString("billno"), pdfUrl);
// 推送星空附件
String result = pushXkAttachment(dynamicObject, pdfUrl, fileName, resultMap, k3CloudApi);
if (result.contains("推送星空成功")) {
dynamicObject.set("shkd_xkfilestatus", "已推送");
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
}
builder.append(result).append("\n");
}
if (!builder.toString().contains("电子回单推送星空失败")) {
dynamicObject.set("shkd_xkfilestatus", "已推送");
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
}
}
// 上划处理
// 初步筛选 - 未推送过回单付款状态为已付款组织为000021成都宏明电子股份有限公司的上划处理 - 上划处理
DynamicObject[] objects7 = BusinessDataServiceHelper.load("fca_transupbill",
"id,billno,shkd_pushxknumber,shkd_xkfilestatus,company",
new QFilter("shkd_pushxknumber", QCP.not_equals, "")
.and("shkd_xkfilestatus", QCP.not_equals, "已推送")
.and("company", QCP.equals, "").toArray());
"id,billno,shkd_pushxknumber,shkd_xkfilestatus,company,billstatus",
new QFilter("shkd_xkfilestatus", QCP.not_equals, "已推送")
.and("billstatus", QCP.equals, "D")
.and("company", QCP.equals, "2122671180270829568").toArray());
// 第二次筛选 - 有反写字段有回单且所有回单匹配完全星空单据存在 - 上划处理
for (DynamicObject dynamicObject : objects7) {
// 只有司库推送星空业务
resultMap = getSKPushXKBill(xkApiMapping, dynamicObject.getDataEntityType().getName(), dynamicObject.getString("billno"));
if ((boolean) resultMap.get("result")) {
TopObjects.add(dynamicObject);
logger.info("上划处理:{},为司库推送星空单据,星空单据编码:{}", dynamicObject.getString("billno"), resultMap.get("billNumber"));
// 没有反写字段shkd_pushxknumber的不推送
Object shkd_pushxknumber = dynamicObject.get("shkd_pushxknumber");
if (shkd_pushxknumber == null || "".equals(shkd_pushxknumber.toString())) {
logger.info("上划处理:{}shkd_pushxknumber推送星空编码字段为空不推送", dynamicObject.getString("billno"));
continue;
}
}
for (DynamicObject dynamicObject : TopObjects) {
// 联查不到回单标记的不推送
List<String> receiptNos = HandLinkBillHelper.getReceiptNoByDetails(dynamicObject, dynamicObject.getDataEntityType().getName());
if (receiptNos.isEmpty()) {
logger.info("上划处理:{},无匹配回单", dynamicObject.getString("billno"));
} else {
logger.info("上划处理:{},无关联回单,不推送", dynamicObject.getString("billno"));
continue;
}
// 存在回单未匹配的不推送
DynamicObject[] transdetails = BusinessDataServiceHelper.load("bei_transdetail_cas",
"id,billno,receiptno,ismatchereceipt", new QFilter("receiptno", QCP.in, receiptNos)
.and("ismatchereceipt", QCP.equals, "1").toArray());
if (receiptNos.size() != transdetails.length) {
logger.info("上划处理:{},回单未完全匹配,不推送", dynamicObject.getString("billno"));
continue;
}
// 通过反写字段未找到星空单据的不推送
HashMap<String, Object> resultMap = getXKPushSKBill(xkApiMapping, dynamicObject.getDataEntityType().getName(), dynamicObject.getString("shkd_pushxknumber"));
if (!(boolean) resultMap.get("result")) {
logger.info("上划处理:{},通过反写的星空编码字段未查找星空对应单据", dynamicObject.getString("billno"));
continue;
}
StringBuilder builder = new StringBuilder();
for (String receiptNo : receiptNos) {
Map<String, Object> receiptResult = new HashMap<>();
// 获取回单
getReceipt(receiptNos.get(0), receiptResult);
getReceipt(receiptNo, receiptResult);
String pdfUrl = receiptResult.get("pdfUrl").toString();
String fileName = receiptResult.get("fileName").toString();
logger.info("上划处理:{},电子回单查询 → 电子回单附件推送接口 → 获取pdf地址{}", dynamicObject.getString("billno"), pdfUrl);
// 推送星空附件
String result = pushXkAttachment(dynamicObject, pdfUrl, fileName, resultMap, k3CloudApi);
if (result.contains("推送星空成功")) {
dynamicObject.set("shkd_xkfilestatus", "已推送");
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
}
builder.append(result).append("\n");
}
if (!builder.toString().contains("电子回单推送星空失败")) {
dynamicObject.set("shkd_xkfilestatus", "已推送");
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
}
}
// 下拨处理
// 初步筛选 - 未推送过回单付款状态为已付款组织为000021成都宏明电子股份有限公司的下拨处理 - 下拨处理
DynamicObject[] objects8 = BusinessDataServiceHelper.load("fca_transdownbil",
"id,billno,shkd_pushxknumber,shkd_xkfilestatus,company",
new QFilter("shkd_pushxknumber", QCP.not_equals, "")
.and("shkd_xkfilestatus", QCP.not_equals, "已推送")
.and("company", QCP.equals, "").toArray());
"id,billno,shkd_pushxknumber,shkd_xkfilestatus,company,billstatus",
new QFilter("shkd_xkfilestatus", QCP.not_equals, "已推送")
.and("billstatus", QCP.equals, "D")
.and("company", QCP.equals, "2122671180270829568").toArray());
// 第二次筛选 - 有反写字段有回单且所有回单匹配完全星空单据存在 - 下拨处理
for (DynamicObject dynamicObject : objects8) {
// 只有司库推送星空业务
resultMap = getSKPushXKBill(xkApiMapping, dynamicObject.getDataEntityType().getName(), dynamicObject.getString("billno"));
if ((boolean) resultMap.get("result")) {
AllocatedObjects.add(dynamicObject);
logger.info("下拨处理:{},为司库推送星空单据,星空单据编码:{}", dynamicObject.getString("billno"), resultMap.get("billNumber"));
// 没有反写字段shkd_pushxknumber的不推送
Object shkd_pushxknumber = dynamicObject.get("shkd_pushxknumber");
if (shkd_pushxknumber == null || "".equals(shkd_pushxknumber.toString())) {
logger.info("下拨处理:{}shkd_pushxknumber推送星空编码字段为空不推送", dynamicObject.getString("billno"));
continue;
}
}
for (DynamicObject dynamicObject : AllocatedObjects) {
// 联查不到回单标记的不推送
List<String> receiptNos = HandLinkBillHelper.getReceiptNoByDetails(dynamicObject, dynamicObject.getDataEntityType().getName());
if (receiptNos.isEmpty()) {
logger.info("下拨处理:{},无匹配回单", dynamicObject.getString("billno"));
} else {
logger.info("下拨处理:{},无关联回单,不推送", dynamicObject.getString("billno"));
continue;
}
// 存在回单未匹配的不推送
DynamicObject[] transdetails = BusinessDataServiceHelper.load("bei_transdetail_cas",
"id,billno,receiptno,ismatchereceipt", new QFilter("receiptno", QCP.in, receiptNos)
.and("ismatchereceipt", QCP.equals, "1").toArray());
if (receiptNos.size() != transdetails.length) {
logger.info("下拨处理:{},回单未完全匹配,不推送", dynamicObject.getString("billno"));
continue;
}
// 通过反写字段未找到星空单据的不推送
HashMap<String, Object> resultMap = getXKPushSKBill(xkApiMapping, dynamicObject.getDataEntityType().getName(), dynamicObject.getString("shkd_pushxknumber"));
if (!(boolean) resultMap.get("result")) {
logger.info("下拨处理:{},通过反写的星空编码字段未查找星空对应单据", dynamicObject.getString("billno"));
continue;
}
StringBuilder builder = new StringBuilder();
for (String receiptNo : receiptNos) {
Map<String, Object> receiptResult = new HashMap<>();
// 获取回单
getReceipt(receiptNos.get(0), receiptResult);
getReceipt(receiptNo, receiptResult);
String pdfUrl = receiptResult.get("pdfUrl").toString();
String fileName = receiptResult.get("fileName").toString();
logger.info("下拨处理:{},电子回单查询 → 电子回单附件推送接口 → 获取pdf地址{}", dynamicObject.getString("billno"), pdfUrl);
// 推送星空附件
String result = pushXkAttachment(dynamicObject, pdfUrl, fileName, resultMap, k3CloudApi);
if (result.contains("推送星空成功")) {
dynamicObject.set("shkd_xkfilestatus", "已推送");
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
}
builder.append(result).append("\n");
}
if (!builder.toString().contains("电子回单推送星空失败")) {
dynamicObject.set("shkd_xkfilestatus", "已推送");
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
}
}
break;