parent
72745464ef
commit
e3a407e0d0
|
@ -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)) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue