parent
7cd95368ea
commit
eb34c158d9
|
@ -1055,13 +1055,13 @@ public class ApiService {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询星空收付款单
|
* 查询星空收付款单(司库推送星空)
|
||||||
* @param dataEntity API映射元数据对象
|
* @param dataEntity API映射元数据对象
|
||||||
* @param billMark 单据类型(收付款)
|
* @param billMark 单据类型(收付款)
|
||||||
* @param billNumber 单据编码
|
* @param billNumber 单据编码
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static HashMap<String, Object> getBillObject(DynamicObject dataEntity, String billMark, String billNumber) {
|
public static HashMap<String, Object> getSKPushXKBill(DynamicObject dataEntity, String billMark, String billNumber) {
|
||||||
logger.info("获取推送单据类型 → billMark:{}", billMark);
|
logger.info("获取推送单据类型 → billMark:{}", billMark);
|
||||||
String xkBillType = null;
|
String xkBillType = null;
|
||||||
if ("cas_paybill".equals(billMark)) {
|
if ("cas_paybill".equals(billMark)) {
|
||||||
|
@ -1098,6 +1098,50 @@ public class ApiService {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询星空收付款单(星空推送司库)
|
||||||
|
* @param dataEntity API映射元数据对象
|
||||||
|
* @param billMark 单据类型(收付款)
|
||||||
|
* @param billNumber 推送单据编码(星空单据编码)
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static HashMap<String, Object> getXKPushSKBill(DynamicObject dataEntity, String billMark, String billNumber) {
|
||||||
|
logger.info("获取推送单据类型 → billMark:{}", billMark);
|
||||||
|
String xkBillType = null;
|
||||||
|
if ("cas_paybill".equals(billMark)) {
|
||||||
|
xkBillType = "AP_PAYBILL";
|
||||||
|
} else if ("cas_recbill".equals(billMark)) {
|
||||||
|
xkBillType = "AR_RECEIVEBILL";
|
||||||
|
}
|
||||||
|
|
||||||
|
HashMap<String, Object> result = new HashMap<>();
|
||||||
|
K3CloudApi k3CloudApi = getK3CloudApi(dataEntity);
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
jsonObject.put("OrderString", "");
|
||||||
|
jsonObject.put("TopRowCount", 0);
|
||||||
|
jsonObject.put("SubSystemId", "");
|
||||||
|
jsonObject.put("FieldKeys", "FBillNo,FID");
|
||||||
|
jsonObject.put("FormId", xkBillType);
|
||||||
|
jsonObject.put("Limit", 2000);
|
||||||
|
jsonObject.put("FilterString", "FBillNo='" + billNumber + "'");
|
||||||
|
jsonObject.put("StartRow", 0);
|
||||||
|
try {
|
||||||
|
List<List<Object>> lists = k3CloudApi.executeBillQuery(jsonObject.toString());
|
||||||
|
if (lists.isEmpty()) {
|
||||||
|
result.put("result", false);
|
||||||
|
} else {
|
||||||
|
List<Object> objects = lists.get(0);
|
||||||
|
result.put("billNumber", objects.get(0));
|
||||||
|
result.put("billId", objects.get(1));
|
||||||
|
result.put("billType", xkBillType);
|
||||||
|
result.put("result", true);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 推送星空单据附件
|
* 推送星空单据附件
|
||||||
* @param dataEntity API映射元数据对象
|
* @param dataEntity API映射元数据对象
|
||||||
|
@ -1111,7 +1155,7 @@ public class ApiService {
|
||||||
// 获取想要推送单据编码
|
// 获取想要推送单据编码
|
||||||
String billNumber = dataEntity.getString("shkd_sourcenumber");
|
String billNumber = dataEntity.getString("shkd_sourcenumber");
|
||||||
logger.info("获取推送单据编码 → billNumber:{}", billNumber);
|
logger.info("获取推送单据编码 → billNumber:{}", billNumber);
|
||||||
HashMap<String, Object> xkBillData = getBillObject(dataEntity, billMark, billNumber);
|
HashMap<String, Object> xkBillData = getSKPushXKBill(dataEntity, billMark, billNumber);
|
||||||
String uploadAttachmentResult = null;
|
String uploadAttachmentResult = null;
|
||||||
if ((Boolean)xkBillData.get("result")) {
|
if ((Boolean)xkBillData.get("result")) {
|
||||||
List<Map<String, String>> attachmentData = get_attachment(dataEntity);
|
List<Map<String, String>> attachmentData = get_attachment(dataEntity);
|
||||||
|
|
|
@ -182,7 +182,7 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
|
||||||
DynamicObject ApiMapping = ApiMappingArray[0];
|
DynamicObject ApiMapping = ApiMappingArray[0];
|
||||||
|
|
||||||
// 获取多选基础资料银行类别(推送银行类别)
|
// 获取多选基础资料银行类别(推送银行类别)
|
||||||
ArrayList<String> bankTypeArray = new ArrayList<>();
|
ArrayList<String> bankTypeArray = new ArrayList<>();
|
||||||
DynamicObjectCollection bankTypeArr = ApiMapping.getDynamicObjectCollection("shkd_banktype");
|
DynamicObjectCollection bankTypeArr = ApiMapping.getDynamicObjectCollection("shkd_banktype");
|
||||||
for (DynamicObject bankTypeData : bankTypeArr) {
|
for (DynamicObject bankTypeData : bankTypeArr) {
|
||||||
DynamicObject bankType = bankTypeData.getDynamicObject("fbasedataid");//银行类别基础资料数据包
|
DynamicObject bankType = bankTypeData.getDynamicObject("fbasedataid");//银行类别基础资料数据包
|
||||||
|
@ -193,7 +193,7 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取多选基础资料业务单元(推送组织)
|
// 获取多选基础资料业务单元(推送组织)
|
||||||
ArrayList<Long> orgArray = new ArrayList<>();
|
ArrayList<Long> orgArray = new ArrayList<>();
|
||||||
DynamicObjectCollection orgArr = ApiMapping.getDynamicObjectCollection("shkd_orgs");
|
DynamicObjectCollection orgArr = ApiMapping.getDynamicObjectCollection("shkd_orgs");
|
||||||
for (DynamicObject orgData : orgArr) {
|
for (DynamicObject orgData : orgArr) {
|
||||||
orgArray.add(orgData.getLong("fbasedataid_Id"));
|
orgArray.add(orgData.getLong("fbasedataid_Id"));
|
||||||
|
@ -234,26 +234,33 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
|
||||||
break;
|
break;
|
||||||
/**
|
/**
|
||||||
* 推送星空电子回单
|
* 推送星空电子回单
|
||||||
|
* 改造
|
||||||
*/
|
*/
|
||||||
case "bei_xkfile":
|
case "bei_xkfile":
|
||||||
K3CloudApi k3CloudApi = new K3CloudApi();
|
|
||||||
ArrayList<DynamicObject> paymentObjects = new ArrayList<>(); //所有符合条件存在电子回单的付款单
|
ArrayList<DynamicObject> paymentObjects = new ArrayList<>(); //所有符合条件存在电子回单的付款单
|
||||||
ArrayList<DynamicObject> receivableObjects = new ArrayList<>(); //所有符合条件存在电子回单的收款单
|
ArrayList<DynamicObject> receivableObjects = 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," +
|
||||||
|
"entryentity.shkd_tartype,entryentity.shkd_parentfield,entryentity.shkd_soufield,entryentity.shkd_defaultdata," +
|
||||||
|
"entryentity.shkd_required,entryentity.shkd_remarks,shkd_submiturl,shkd_xkusername,shkd_xkappid,shkd_xkacctid," +
|
||||||
|
"shkd_xkappsec,shkd_xkserverurl,shkd_banktype,shkd_orgs,shkd_startdate",
|
||||||
|
new QFilter("shkd_targetsystem", QCP.equals, "XK").toArray());
|
||||||
|
|
||||||
|
DynamicObject xkApiMapping = shkd_apimappings[0];
|
||||||
|
|
||||||
|
// 获取多选基础资料业务单元(推送组织)
|
||||||
ArrayList<Long> orgIds = new ArrayList<>();
|
ArrayList<Long> orgIds = new ArrayList<>();
|
||||||
orgIds.add(2122671180270829568L);//1
|
DynamicObjectCollection orgsArr = xkApiMapping.getDynamicObjectCollection("shkd_orgs");
|
||||||
orgIds.add(2122671723777131520L);//2
|
for (DynamicObject orgData : orgsArr) {
|
||||||
orgIds.add(2122671728936125440L);//3
|
orgIds.add(orgData.getLong("fbasedataid_Id"));
|
||||||
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," +
|
DynamicObject[] objects5 = BusinessDataServiceHelper.load("cas_paybill", "id," +
|
||||||
"billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,entry.e_actamt,settletype," +
|
"billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,entry.e_actamt,settletype," +
|
||||||
"payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype," +
|
"payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype," +
|
||||||
|
@ -263,8 +270,29 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
|
||||||
.and("billstatus", QCP.equals, "D")
|
.and("billstatus", QCP.equals, "D")
|
||||||
.and("org", QCP.in, orgIds).toArray());
|
.and("org", QCP.in, orgIds).toArray());
|
||||||
|
|
||||||
|
for (DynamicObject dynamicObject : objects5) {
|
||||||
|
// 星空推送司库单据
|
||||||
|
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"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Arrays.stream(objects5).forEach(dynamicObject -> {
|
// 获取k3cloudapi
|
||||||
|
K3CloudApi k3CloudApi = getK3CloudApi(xkApiMapping);
|
||||||
|
|
||||||
|
// 筛选出符合条件的付款单,查询是否有回单,如果有则推送
|
||||||
|
for (DynamicObject dynamicObject : paymentObjects) {
|
||||||
// 银行收付处理
|
// 银行收付处理
|
||||||
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());
|
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()) {
|
if (!transDetails.isEmpty()) {
|
||||||
|
@ -273,63 +301,48 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
|
||||||
if (!details.isEmpty()) {
|
if (!details.isEmpty()) {
|
||||||
// 交易明细查询的电子回单关联标记字段
|
// 交易明细查询的电子回单关联标记字段
|
||||||
if (details.get(0).get("receiptno") != null) {
|
if (details.get(0).get("receiptno") != null) {
|
||||||
/**
|
// 推
|
||||||
* 1、第一步 通过查询到的符合条件的收款或者付款单单据编号查到对应星空的对应单据的单据ID和单据编码
|
DynamicObject[] dynamicObjects1 = BusinessDataServiceHelper.load("t_bei_elecreceipt", "id,receiptno", new QFilter("receiptno", QCP.equals, details.get(0).getString("receiptno")).toArray());
|
||||||
* 2、推送电子回单至星空对应单据
|
DynamicObject dynamicObjectObj = BusinessDataServiceHelper.loadSingle(dynamicObjects1[0].getPkValue(), dynamicObjects1[0].getDynamicObjectType().getName());
|
||||||
*/
|
IFormView viewByDynamicObj = createViewByDynamicObj(dynamicObjectObj);
|
||||||
// 查
|
List<String> errMsgList = new ArrayList<>();
|
||||||
DynamicObject[] objects = BusinessDataServiceHelper.load("shkd_apimapping", "id,billno," +
|
DynamicObjectCollection receipts = QueryServiceHelper.query("bei_elecreceipt", "id,bank," +
|
||||||
"shkd_name,shkd_sourcenumber,shkd_domainname,shkd_appkey,shkd_appsecret,shkd_token,shkd_url,shkd_bodytype," +
|
"fileflag,filepath,biztype,bankcheckflag,fileserverurl,tcpurl,uploadfilename,username,password," +
|
||||||
"shkd_sourcebill,shkd_targetsystem,entryentity,entryentity.shkd_tarfield,entryentity.shkd_tartier," +
|
"bank.bank_cate bankcate", new QFilter[]{new QFilter("id", QCP.equals, dynamicObject.getPkValue())});
|
||||||
"entryentity.shkd_tartype,entryentity.shkd_parentfield,entryentity.shkd_soufield,entryentity.shkd_defaultdata," +
|
String pdfUrl = getPdfUrl(viewByDynamicObj.getPageId(), receipts, errMsgList);
|
||||||
"entryentity.shkd_required,entryentity.shkd_remarks,shkd_submiturl,shkd_xkusername,shkd_xkappid,shkd_xkacctid," +
|
Path path = Paths.get(dynamicObject.getString("filepath"));
|
||||||
"shkd_xkappsec,shkd_xkserverurl",
|
String upfileName = path.getFileName().toString();
|
||||||
new QFilter("shkd_targetsystem", QCP.equals, "XK").toArray());
|
logger.info("付款单:{},电子回单查询 → 电子回单附件推送接口 → 获取pdf地址:{}", dynamicObject.getString("billno"), pdfUrl);
|
||||||
String billNumber = dynamicObject.getString("billno");
|
|
||||||
HashMap<String, Object> resultMap = getBillObject(objects[0], dynamicObject.getDataEntityType().getName(), billNumber);
|
|
||||||
if ((boolean) resultMap.get("result")) {
|
|
||||||
// 推
|
|
||||||
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 jsonObject = new JSONObject();
|
||||||
jsonObject.put("FileName", upfileName);// 文件名
|
jsonObject.put("FileName", upfileName);// 文件名
|
||||||
jsonObject.put("FormId", "AP_PAYBILL");// 表单id(付款单:AP_PAYBILL)
|
jsonObject.put("FormId", "AP_PAYBILL");// 表单id(付款单:AP_PAYBILL)
|
||||||
jsonObject.put("IsLast", true);// 是否最后一次上传
|
jsonObject.put("IsLast", true);// 是否最后一次上传
|
||||||
jsonObject.put("InterId", "单据内码");// 单据内码
|
jsonObject.put("InterId", resultMap.get("billId"));// 单据内码
|
||||||
jsonObject.put("BillNO", dynamicObject.getString("billno"));// 单据编码
|
jsonObject.put("BillNO", resultMap.get("billNumber"));// 单据编码
|
||||||
jsonObject.put("AliasFileName", upfileName);// 附件别名
|
jsonObject.put("AliasFileName", upfileName);// 附件别名
|
||||||
jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串
|
jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串
|
||||||
|
|
||||||
String uploadAttachmentResult;
|
String uploadAttachmentResult;
|
||||||
try {
|
try {
|
||||||
uploadAttachmentResult = k3CloudApi.attachmentUpload(jsonObject.toString());
|
uploadAttachmentResult = k3CloudApi.attachmentUpload(jsonObject.toString());
|
||||||
JSONObject resultJson = JSON.parseObject(uploadAttachmentResult);
|
JSONObject resultJson = JSON.parseObject(uploadAttachmentResult);
|
||||||
JSONObject Result = resultJson.getJSONObject("Result");
|
JSONObject Result = resultJson.getJSONObject("Result");
|
||||||
JSONObject ResponseStatus = Result.getJSONObject("ResponseStatus");
|
JSONObject ResponseStatus = Result.getJSONObject("ResponseStatus");
|
||||||
Boolean isSuccess = ResponseStatus.getBoolean("IsSuccess");
|
Boolean isSuccess = ResponseStatus.getBoolean("IsSuccess");
|
||||||
if (isSuccess) {
|
if (isSuccess) {
|
||||||
dynamicObject.set("shkd_xkfilestatus", "已推送");
|
dynamicObject.set("shkd_xkfilestatus", "已推送");
|
||||||
paymentObjects.add(dynamicObject);// 付款处理单据收集
|
logger.info("付款处理 → 电子回单推送星空,单据编码:" + dynamicObject.getString("billno") + "\n附件上传结果:" + uploadAttachmentResult);
|
||||||
logger.info("付款处理 → 电子回单推送星空,单据编码:" + dynamicObject.getString("billno") + "\n附件上传结果:" + uploadAttachmentResult);
|
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
|
|
||||||
// 收款处理
|
// 收款处理
|
||||||
DynamicObject[] objects6 = BusinessDataServiceHelper.load("cas_recbill",
|
DynamicObject[] objects6 = BusinessDataServiceHelper.load("cas_recbill",
|
||||||
|
@ -340,7 +353,16 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
|
||||||
.and("billstatus", QCP.equals, "D")
|
.and("billstatus", QCP.equals, "D")
|
||||||
.and("org", QCP.in, orgIds).toArray());
|
.and("org", QCP.in, orgIds).toArray());
|
||||||
|
|
||||||
Arrays.stream(objects6).forEach(dynamicObject -> {
|
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) {
|
||||||
// 银行收付处理
|
// 银行收付处理
|
||||||
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());
|
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()) {
|
if (!transDetails.isEmpty()) {
|
||||||
|
@ -349,67 +371,48 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
|
||||||
if (!details.isEmpty()) {
|
if (!details.isEmpty()) {
|
||||||
// 交易明细查询的电子回单关联标记字段
|
// 交易明细查询的电子回单关联标记字段
|
||||||
if (details.get(0).get("receiptno") != null) {
|
if (details.get(0).get("receiptno") != null) {
|
||||||
receivableObjects.add(dynamicObject);// 收款处理单据收集
|
// 推
|
||||||
/**
|
DynamicObject[] dynamicObjects1 = BusinessDataServiceHelper.load("t_bei_elecreceipt", "id,receiptno", new QFilter("receiptno", QCP.equals, details.get(0).getString("receiptno")).toArray());
|
||||||
* 1、第一步 通过查询到的符合条件的收款或者付款单单据编号查到对应星空的对应单据的单据ID和单据编码
|
DynamicObject dynamicObjectObj = BusinessDataServiceHelper.loadSingle(dynamicObjects1[0].getPkValue(), dynamicObjects1[0].getDynamicObjectType().getName());
|
||||||
* 2、推送电子回单至星空对应单据
|
IFormView viewByDynamicObj = createViewByDynamicObj(dynamicObjectObj);
|
||||||
*/
|
List<String> errMsgList = new ArrayList<>();
|
||||||
// 查
|
DynamicObjectCollection receipts = QueryServiceHelper.query("bei_elecreceipt", "id,bank," +
|
||||||
DynamicObject[] objects = BusinessDataServiceHelper.load("shkd_apimapping", "id,billno," +
|
"fileflag,filepath,biztype,bankcheckflag,fileserverurl,tcpurl,uploadfilename,username,password," +
|
||||||
"shkd_name,shkd_sourcenumber,shkd_domainname,shkd_appkey,shkd_appsecret,shkd_token,shkd_url,shkd_bodytype," +
|
"bank.bank_cate bankcate", new QFilter[]{new QFilter("id", QCP.equals, dynamicObject.getPkValue())});
|
||||||
"shkd_sourcebill,shkd_targetsystem,entryentity,entryentity.shkd_tarfield,entryentity.shkd_tartier," +
|
String pdfUrl = getPdfUrl(viewByDynamicObj.getPageId(), receipts, errMsgList);
|
||||||
"entryentity.shkd_tartype,entryentity.shkd_parentfield,entryentity.shkd_soufield,entryentity.shkd_defaultdata," +
|
Path path = Paths.get(dynamicObject.getString("filepath"));
|
||||||
"entryentity.shkd_required,entryentity.shkd_remarks,shkd_submiturl,shkd_xkusername,shkd_xkappid,shkd_xkacctid," +
|
String upfileName = path.getFileName().toString();
|
||||||
"shkd_xkappsec,shkd_xkserverurl",
|
logger.info("收款单:{},电子回单查询 → 电子回单附件推送接口 → 获取pdf地址:{}", dynamicObject.getString("billno"), pdfUrl);
|
||||||
new QFilter("shkd_targetsystem", QCP.equals, "XK").toArray());
|
|
||||||
String billNumber = dynamicObject.getString("billno");
|
|
||||||
HashMap<String, Object> resultMap = getBillObject(objects[0], dynamicObject.getDataEntityType().getName(), billNumber);
|
|
||||||
if ((boolean) resultMap.get("result")) {
|
|
||||||
// 推
|
|
||||||
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 jsonObject = new JSONObject();
|
||||||
jsonObject.put("FileName", upfileName);// 文件名
|
jsonObject.put("FileName", upfileName);// 文件名
|
||||||
jsonObject.put("FormId", "AP_PAYBILL");// 表单id(收款单:)
|
jsonObject.put("FormId", "AR_RECEIVEBILL");// 表单id(收款单:AR_RECEIVEBILL)
|
||||||
jsonObject.put("IsLast", true);// 是否最后一次上传
|
jsonObject.put("IsLast", true);// 是否最后一次上传
|
||||||
jsonObject.put("InterId", "单据内码");// 单据内码
|
jsonObject.put("InterId", resultMap.get("billId"));// 单据内码
|
||||||
jsonObject.put("BillNO", dynamicObject.getString("billno"));// 单据编码
|
jsonObject.put("BillNO", resultMap.get("billNumber"));// 单据编码
|
||||||
jsonObject.put("AliasFileName", upfileName);// 附件别名
|
jsonObject.put("AliasFileName", upfileName);// 附件别名
|
||||||
jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串
|
jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串
|
||||||
|
|
||||||
String uploadAttachmentResult;
|
String uploadAttachmentResult;
|
||||||
try {
|
try {
|
||||||
uploadAttachmentResult = k3CloudApi.attachmentUpload(jsonObject.toString());
|
uploadAttachmentResult = k3CloudApi.attachmentUpload(jsonObject.toString());
|
||||||
|
|
||||||
JSONObject resultJson = JSON.parseObject(uploadAttachmentResult);
|
JSONObject resultJson = JSON.parseObject(uploadAttachmentResult);
|
||||||
JSONObject Result = resultJson.getJSONObject("Result");
|
JSONObject Result = resultJson.getJSONObject("Result");
|
||||||
JSONObject ResponseStatus = Result.getJSONObject("ResponseStatus");
|
JSONObject ResponseStatus = Result.getJSONObject("ResponseStatus");
|
||||||
Boolean isSuccess = ResponseStatus.getBoolean("IsSuccess");
|
Boolean isSuccess = ResponseStatus.getBoolean("IsSuccess");
|
||||||
if (isSuccess) {
|
if (isSuccess) {
|
||||||
dynamicObject.set("shkd_xkfilestatus", "已推送");
|
dynamicObject.set("shkd_xkfilestatus", "已推送");
|
||||||
receivableObjects.add(dynamicObject);// 收款处理单据收集
|
logger.info("收款处理 → 电子回单推送星空,单据编码:" + dynamicObject.getString("billno") + "\n附件上传结果:" + uploadAttachmentResult);
|
||||||
logger.info("收款处理 → 电子回单推送星空,单据编码:" + dynamicObject.getString("billno") + "\n附件上传结果:" + uploadAttachmentResult);
|
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
SaveServiceHelper.save(paymentObjects.toArray(new DynamicObject[0]));
|
|
||||||
SaveServiceHelper.save(receivableObjects.toArray(new DynamicObject[0]));
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue