parent
193ac58f71
commit
0b172097a1
|
|
@ -1,9 +1,12 @@
|
|||
package shjh.jhzj7.fi.fi.plugin.form;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.OperateOption;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.entity.operate.OperateOptionConst;
|
||||
import kd.bos.entity.operate.result.OperateErrorInfo;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
|
|
@ -22,8 +25,10 @@ import shjh.jhzj7.fi.fi.utils.JhzjUtils;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
import static shjh.jhzj7.fi.fi.utils.SapUtils.vouchers_payable;
|
||||
import static shjh.jhzj7.fi.fi.webapi.ApplyBillControler.*;
|
||||
|
||||
/**
|
||||
|
|
@ -57,43 +62,107 @@ public class SappzFormPlugin extends AbstractFormPlugin {
|
|||
String procurementteam = (String) this.getModel().getValue("shjh_procurementteam");//采购组
|
||||
Boolean isselfprocurement = (Boolean) this.getModel().getValue("shjh_isselfprocurement");//是否自行采购
|
||||
|
||||
// 日期格式
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
|
||||
JSONArray IT_LIST = new JSONArray();
|
||||
// 添加公司过滤条件
|
||||
if (shjhOrgfield != null) {
|
||||
addFilterCondition(IT_LIST, "BUKRS", shjhOrgfield.getString("number"), shjhOrgfield.getString("number"));
|
||||
}
|
||||
// 添加SAP应付凭证号过滤条件
|
||||
if (StringUtils.isNotEmpty(payablevouchernumber)) {
|
||||
addFilterCondition(IT_LIST, "BELNR", payablevouchernumber, payablevouchernumber);
|
||||
}
|
||||
// 添加会计科目编号过滤条件
|
||||
if (StringUtils.isNotEmpty(accountingsubjects)) {
|
||||
addFilterCondition(IT_LIST, "HKONT", accountingsubjects, accountingsubjects);
|
||||
}
|
||||
// 添加SAP应付凭过账日期过滤条件
|
||||
if (postingdate_start != null || postingdate_endda != null) {
|
||||
String postingdate_starts = formatDate(sdf, postingdate_start);
|
||||
String postingdate_enddas = formatDate(sdf, postingdate_endda);
|
||||
addFilterCondition(IT_LIST, "BUDAT", postingdate_starts, postingdate_enddas);
|
||||
}
|
||||
// 添加SAP应付凭到期日过滤条件
|
||||
if (duedate_start != null || duedate_end != null) {
|
||||
String duedate_starts = formatDate(sdf, duedate_start);
|
||||
String duedate_ends = formatDate(sdf, duedate_end);
|
||||
addFilterCondition(IT_LIST, "FAEDT", duedate_starts, duedate_ends);
|
||||
}
|
||||
// 添加SAP应付凭证制单日期过滤条件
|
||||
if (dateofpreparat_start != null && dateofpreparat_end != null) {
|
||||
String dateofpreparat_starts = formatDate(sdf, dateofpreparat_start);
|
||||
String dateofpreparat_ends = formatDate(sdf, dateofpreparat_end);
|
||||
addFilterCondition(IT_LIST, "BLDAT", dateofpreparat_starts, dateofpreparat_ends);
|
||||
}
|
||||
DynamicObjectCollection shjhEntryentity = this.getModel().getEntryEntity("shjh_entryentity");
|
||||
shjhEntryentity.clear();
|
||||
//todo:根据查询条件,调用SAP查询凭证接口,生成分录行
|
||||
//模拟查询到两个数据
|
||||
for (int i = 0; i < 3; i++) {
|
||||
DynamicObject add = shjhEntryentity.addNew();
|
||||
if (null != shjhOrgfield) {
|
||||
this.getModel().setValue("shjh_orgnumber", shjhOrgfield.getString("number"), i);//公司编号
|
||||
JSONObject result = vouchers_payable(IT_LIST, payablevouchernumber);
|
||||
if (null != result && result.containsKey("data")) {
|
||||
// 处理查询结果
|
||||
JSONObject data = (JSONObject) result.get("data");
|
||||
if (null != data && data.containsKey("IT_ITEM")) {
|
||||
JSONArray IT_ITEMs = (JSONArray) data.get("IT_ITEM");
|
||||
if (!IT_ITEMs.isEmpty()) {
|
||||
// for (int i = 0; i <5000; i++) {
|
||||
for (int i = 0; i < IT_ITEMs.size(); i++) {
|
||||
JSONObject it_list = (JSONObject)IT_ITEMs.get(i);
|
||||
DynamicObject add = shjhEntryentity.addNew();
|
||||
this.getModel().setValue("shjh_orgnumber", it_list.getString("BUKRS"), i);//公司编号,"公司代码
|
||||
this.getModel().setValue("shjh_vouchernumber", it_list.getString("BELNR"), i);//凭证号,会计凭证编号
|
||||
this.getModel().setValue("shjh_accountingyear", it_list.getString("GJAHR"), i);//会计年度,会计年度
|
||||
this.getModel().setValue("shjh_accountingsubject", it_list.getString("SAKNR"), i);//todo:会计科目:1001,总帐科目编号
|
||||
this.getModel().setValue("shjh_accountingsubjecline", it_list.getString("EBELP"), i);//会计科目行项目号,采购凭证的项目编号
|
||||
this.getModel().setValue("shjh_outstandingamount", new BigDecimal(it_list.getString("WRBTR")), i);//未清金额,凭证货币金额
|
||||
BigDecimal KURSF = new BigDecimal(it_list.getString("KURSF"));
|
||||
if (KURSF.compareTo(BigDecimal.ZERO) == 0) {
|
||||
KURSF = BigDecimal.ONE;
|
||||
}
|
||||
this.getModel().setValue("shjh_exchangerate",KURSF, i);//汇率
|
||||
this.getModel().setValue("shjh_applyforconversionof",new BigDecimal(it_list.getString("DMBTR")), i);//申请金额折结算币别,按本位币计的金额
|
||||
String FAEDT = it_list.getString("FAEDT");
|
||||
if (StringUtils.isNotEmpty(FAEDT)) {
|
||||
Date date = StrToDate(FAEDT);
|
||||
this.getModel().setValue("shjh_duedat", date, i);//到期日,净价到期日
|
||||
}
|
||||
String BUDAT = it_list.getString("BUDAT");
|
||||
if (StringUtils.isNotEmpty(BUDAT)) {
|
||||
Date date = StrToDate(BUDAT);
|
||||
this.getModel().setValue("shjh_bookkeepingdate", date, i);//记账日期,凭证中的过帐日期
|
||||
}
|
||||
String BLDAT = it_list.getString("BLDAT");
|
||||
if (StringUtils.isNotEmpty(BLDAT)) {
|
||||
Date date = StrToDate(BLDAT);
|
||||
this.getModel().setValue("shjh_documentdate", date, i);//凭证日期,凭证中的凭证日期
|
||||
}
|
||||
String ZFBDT = it_list.getString("ZFBDT");
|
||||
if (StringUtils.isNotEmpty(ZFBDT)) {
|
||||
Date date = StrToDate(ZFBDT);
|
||||
this.getModel().setValue("shjh_basedate", date, i);//基准日期,用于到期日计算的基准日期
|
||||
}
|
||||
// this.getModel().setValue("shjh_payee", "供应商", i);//todo:往来类型
|
||||
// this.getModel().setValue("shjh_payeebanknum", it_list.getString("ZWLZH"), i);//todo:往来户名称
|
||||
this.getModel().setValue("shjh_payee", "供应商", i);//往来类型
|
||||
this.getModel().setValue("shjh_payeebanknum", "上海家化销售有限公司", i);//往来户名称
|
||||
this.getModel().setValue("shjh_description",it_list.getString("BVTYP") , i);//合作银行类型.合作银行类型
|
||||
this.getModel().setValue("shjh_reasoncode", "014", i);//todo:原因码
|
||||
this.getModel().setValue("shjh_classificationoffund", payablevouchernumber, i);//todo:资金计划分类
|
||||
this.getModel().setValue("shjh_secondarydept", it_list.getString("ZREQ_DEPT"), i);//二级部门,需求部门
|
||||
this.getModel().setValue("shjh_procurementeam", it_list.getString("EKGRP"), i);//采购组
|
||||
this.getModel().setValue("shjh_isselfprocurment", it_list.getString("ZZXCG_FLAG"), i);//todo:是否自行采购
|
||||
this.getModel().setValue("shjh_paymentcurrency", it_list.getString("WAERS"), i);//付款币别编号CNY,货币码
|
||||
this.getModel().setValue("shjh_settlementcurrency", it_list.getString("WAERS"), i);//结算币别编号,货币码
|
||||
|
||||
}
|
||||
this.getView().updateView("shjh_entryentity");
|
||||
}
|
||||
}
|
||||
this.getModel().setValue("shjh_vouchernumber", payablevouchernumber, i);//凭证号
|
||||
this.getModel().setValue("shjh_accountingyear", payablevouchernumber, i);//会计年度
|
||||
// this.getModel().setValue("shjh_accountingsubject", accountingsubjects, i);//会计科目:1001
|
||||
this.getModel().setValue("shjh_accountingsubject", "1001", i);//会计科目:1001
|
||||
this.getModel().setValue("shjh_accountingsubjecline", payablevouchernumber, i);//会计科目行项目号
|
||||
this.getModel().setValue("shjh_outstandingamount", BigDecimal.ONE, i);//未清金额
|
||||
this.getModel().setValue("shjh_exchangerate", BigDecimal.ONE, i);//汇率
|
||||
this.getModel().setValue("shjh_applyforconversionof", BigDecimal.ONE, i);//申请金额折结算币别
|
||||
this.getModel().setValue("shjh_duedat", new Date(), i);//到期日
|
||||
this.getModel().setValue("shjh_bookkeepingdate", new Date(), i);//记账日期
|
||||
this.getModel().setValue("shjh_documentdate", new Date(), i);//凭证日期
|
||||
this.getModel().setValue("shjh_basedate", new Date(), i);//基准日期
|
||||
this.getModel().setValue("shjh_payee", "供应商", i);//往来类型
|
||||
this.getModel().setValue("shjh_payeebanknum", "上海家化销售有限公司", i);//往来户名称
|
||||
this.getModel().setValue("shjh_description", payablevouchernumber, i);//合作银行类型
|
||||
this.getModel().setValue("shjh_reasoncode", "014", i);//原因码
|
||||
this.getModel().setValue("shjh_classificationoffund", payablevouchernumber, i);//资金计划分类
|
||||
this.getModel().setValue("shjh_secondarydept", payablevouchernumber, i);//二级部门
|
||||
this.getModel().setValue("shjh_procurementeam", procurementteam, i);//采购组
|
||||
this.getModel().setValue("shjh_isselfprocurment", isselfprocurement, i);//是否自行采购
|
||||
this.getModel().setValue("shjh_paymentcurrency", "CNY", i);//付款币别编号
|
||||
this.getModel().setValue("shjh_settlementcurrency", "CNY", i);//结算币别编号
|
||||
}
|
||||
this.getView().updateView("shjh_entryentity");
|
||||
break;
|
||||
//todo:(字段待确认)遍历选中的分录行,生成付款申请单 7.1.3
|
||||
// 日志中入参根据分录中存入的存储
|
||||
case "confirm":
|
||||
//todo:(字段待确认)遍历选中的分录行,生成付款申请单 7.1.3
|
||||
// 日志中入参根据分录中存入的存储
|
||||
EntryGrid entryentitys = (EntryGrid) this.getView().getControl("shjh_entryentity");
|
||||
int[] selectRows = entryentitys.getSelectRows();
|
||||
if (selectRows.length == 0) {
|
||||
|
|
@ -188,7 +257,7 @@ public class SappzFormPlugin extends AbstractFormPlugin {
|
|||
this.getView().showMessage("同步失败,凭证号:" + fkBillNum + "的费控单据已锁定");
|
||||
return;
|
||||
} else {
|
||||
//存在且单据中SAP锁定状态为未锁定,更新数据
|
||||
//todo:存在且单据中SAP锁定状态为未锁定,更新数据
|
||||
ap_payapply = ap_payapplys;
|
||||
}
|
||||
}
|
||||
|
|
@ -242,6 +311,9 @@ public class SappzFormPlugin extends AbstractFormPlugin {
|
|||
this.getView().showMessage("同步失败,凭证号:" + fkBillNum + "的" + currencyTypeName + "为空");
|
||||
return;
|
||||
}
|
||||
if ("RMB".equals(currencyNumber)) {
|
||||
currencyNumber = "CNY";
|
||||
}
|
||||
QFilter filter = new QFilter("number", QCP.equals, currencyNumber);
|
||||
DynamicObject currency = BusinessDataServiceHelper.loadSingle(BD_CURRENCY, new QFilter[]{filter});
|
||||
// 检查 currency 是否为空
|
||||
|
|
@ -455,14 +527,14 @@ public class SappzFormPlugin extends AbstractFormPlugin {
|
|||
|
||||
}
|
||||
//若多条数据相同,则合并为一条数据处理
|
||||
for (DynamicObject ap_payapply : bills.values()){
|
||||
for (DynamicObject ap_payapply : bills.values()) {
|
||||
String fkBillNum = ap_payapply.getString("shjh_vouchernum");
|
||||
OperateOption option= OperateOption.create();
|
||||
OperateOption option = OperateOption.create();
|
||||
option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(false)); // 不执行警告级别校验器
|
||||
// 新增数据
|
||||
OperationResult saveResult = OperationServiceHelper.executeOperate("save", AP_PAYAPPLY, new DynamicObject[]{ap_payapply}, option);
|
||||
if (!saveResult.isSuccess()) {
|
||||
handleAndLogError(saveResult, "保存失败",apimenthod, fkBillNum, null);
|
||||
handleAndLogError(saveResult, "保存失败", apimenthod, fkBillNum, null);
|
||||
String errorMessage = getFirstErrorMessage(saveResult);
|
||||
this.getView().showErrorNotification(errorMessage);
|
||||
return;
|
||||
|
|
@ -470,12 +542,18 @@ public class SappzFormPlugin extends AbstractFormPlugin {
|
|||
//todo:SAP是否锁定
|
||||
OperationResult submitResult = OperationServiceHelper.executeOperate("submit", AP_PAYAPPLY, new DynamicObject[]{ap_payapply}, option);
|
||||
if (!submitResult.isSuccess()) {
|
||||
handleAndLogError(submitResult, "提交失败",apimenthod, fkBillNum, null);
|
||||
// 提交失败,将保存的数据删除,记录日志
|
||||
OperationServiceHelper.executeOperate("delete", AP_PAYAPPLY, new DynamicObject[]{ap_payapply}, option);
|
||||
handleAndLogError(submitResult, "提交失败", apimenthod, fkBillNum, null);
|
||||
String errorMessage = getFirstErrorMessage(submitResult);
|
||||
this.getView().showErrorNotification(errorMessage);
|
||||
return;
|
||||
}
|
||||
OperationResult auditResult = OperationServiceHelper.executeOperate("audit", AP_PAYAPPLY, new DynamicObject[]{ap_payapply}, option);
|
||||
if (!auditResult.isSuccess()) {
|
||||
handleAndLogError(auditResult, "审核失败",apimenthod, fkBillNum, null);
|
||||
handleAndLogError(auditResult, "审核失败", apimenthod, fkBillNum, null);
|
||||
String errorMessage = getFirstErrorMessage(auditResult);
|
||||
this.getView().showErrorNotification(errorMessage);
|
||||
return;
|
||||
}
|
||||
log.error("审核成功,凭证号:" + fkBillNum);
|
||||
|
|
@ -491,8 +569,19 @@ public class SappzFormPlugin extends AbstractFormPlugin {
|
|||
}
|
||||
|
||||
|
||||
private Date StrToDate(String strDate){
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
try {
|
||||
return sdf.parse(strDate);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取第一个错误信息
|
||||
*
|
||||
* @param result 操作返回结果
|
||||
*/
|
||||
private String getFirstErrorMessage(OperationResult result) {
|
||||
|
|
@ -512,7 +601,7 @@ public class SappzFormPlugin extends AbstractFormPlugin {
|
|||
*/
|
||||
private void handleAndLogError(OperationResult result, String operationType, String fkBillNum, String apimenthod, String jsonBodyString) {
|
||||
String errorMessage = getFirstErrorMessage(result);
|
||||
handleError(operationType +",原因:" + errorMessage, apimenthod, fkBillNum, jsonBodyString);
|
||||
handleError(operationType + ",原因:" + errorMessage, apimenthod, fkBillNum, jsonBodyString);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -527,4 +616,29 @@ public class SappzFormPlugin extends AbstractFormPlugin {
|
|||
log.error(errorMessage);
|
||||
JhzjUtils.saveLog(apimenthod, moduleName, inputParam, errorMessage, false, "API");
|
||||
}
|
||||
|
||||
// 添加过滤条件到IT_LIST的方法
|
||||
private void addFilterCondition(JSONArray IT_LIST, String field, String low, String high) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("FIELD", field); // 字段
|
||||
jsonObject.put("SIGN", "I"); // I:包含 E:排除
|
||||
jsonObject.put("LOW", low); // LOW ,枚举字段所代表值的区间开始值
|
||||
jsonObject.put("HIGH", high); // HIGH,枚举字段所代表值的区间结束值
|
||||
jsonObject.put("OPTION", "BT"); // 默认BT
|
||||
IT_LIST.add(jsonObject);
|
||||
}
|
||||
|
||||
// 日期格式化方法,添加异常处理
|
||||
private String formatDate(SimpleDateFormat sdf, Date date) {
|
||||
if (date == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return sdf.format(date);
|
||||
} catch (Exception e) {
|
||||
// 处理日期格式化异常
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,9 +5,18 @@ import com.alibaba.fastjson.JSONObject;
|
|||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.bos.util.HttpClientUtils;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.client.HttpClient;
|
||||
import org.apache.http.client.config.RequestConfig;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
|
||||
import java.sql.Date;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -26,7 +35,7 @@ public class SapUtils {
|
|||
public static final String unlockedUrl = "https://hipint-stg.jahwa.com.cn:6443/gateway/HIP_ReceiveFromFM/1.0/fm/send";//测试环境(SAP应付凭证锁定解锁状态回写)
|
||||
// public static final String unlockedUrl = "https://hipint.jahwa.com.cn:6443/gateway/HIP_ReceiveFromFM/1.0/fm/send";//正式环境
|
||||
private static final String Apimenthod2 = "SAP应付凭证清单接口";
|
||||
private static final String interfaceID2 = "ZFS_GET_AP_OPENITEMS";//识别被调接口并进行路由
|
||||
private static final String interfaceID2 = "PayableVoucherList";//识别被调接口并进行路由
|
||||
|
||||
public static final String vouchersUrl = "https://hipint-stg.jahwa.com.cn:6443/gateway/HIP_ReceiveFromFM/1.0/fm/send";//测试环境(SAP应付凭证清单)
|
||||
// public static final String vouchersUrl = "https://hipint.jahwa.com.cn:6443/gateway/HIP_ReceiveFromFM/1.0/fm/send";//正式环境
|
||||
|
|
@ -44,8 +53,6 @@ public class SapUtils {
|
|||
*/
|
||||
private static Map<String, String> buildCustomerHeader(Map<String, Object> thirdPartyMap) {
|
||||
Map<String, String> customerHeader = new HashMap<>();
|
||||
customerHeader.put("Content-Type", "application/json;charset=UTF-8");//请求报文类型
|
||||
customerHeader.put("x-Gateway-APIKey",APIKey);//apiKey,由ESB提供
|
||||
customerHeader.put("interfaceID", ""+thirdPartyMap.get("interfaceID"));//识别被调接口并进行路由
|
||||
customerHeader.put("receiverID", ""+thirdPartyMap.get("receiverID"));
|
||||
return customerHeader;
|
||||
|
|
@ -55,7 +62,7 @@ public class SapUtils {
|
|||
/**
|
||||
* SAP应付凭证锁定解锁状态回写
|
||||
*/
|
||||
public static void unlocked_status(Map<String, Object> thirdPartyMap) {
|
||||
public static void unlocked_status(Map<String, Object> thirdPartyMap){
|
||||
thirdPartyMap.put("interfaceID",interfaceID1);
|
||||
thirdPartyMap.put("receiverID",receiverID1);
|
||||
thirdPartyMap.put("URL",unlockedUrl);
|
||||
|
|
@ -64,7 +71,7 @@ public class SapUtils {
|
|||
// 组装请求体
|
||||
JSONObject pendingsBody = unlockedBody(thirdPartyMap);
|
||||
// 发送请求并处理响应
|
||||
processRequest(customerHeader, pendingsBody, thirdPartyMap,Apimenthod1);
|
||||
// processRequest(customerHeader, pendingsBody, thirdPartyMap,Apimenthod1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -102,43 +109,36 @@ public class SapUtils {
|
|||
/**
|
||||
* SAP应付凭证清单接口
|
||||
*/
|
||||
public static void vouchers_payable(Map<String, Object> thirdPartyMap) {
|
||||
public static JSONObject vouchers_payable(JSONArray IT_LIST,String billno){
|
||||
Map<String, Object> thirdPartyMap = new HashMap<>();
|
||||
thirdPartyMap.put("interfaceID",interfaceID2);
|
||||
thirdPartyMap.put("senderID",receiverID1);
|
||||
thirdPartyMap.put("receiverID",receiverID1);
|
||||
thirdPartyMap.put("URL",vouchersUrl);
|
||||
// 构建请求头
|
||||
Map<String, String> customerHeader = buildCustomerHeader(thirdPartyMap);
|
||||
thirdPartyMap.put("billno",billno);
|
||||
// 组装请求体
|
||||
JSONObject payableBody = payableBody(thirdPartyMap);
|
||||
JSONObject payableBody = payableBody(IT_LIST);
|
||||
// 发送请求并处理响应
|
||||
processRequest(customerHeader, payableBody, thirdPartyMap,Apimenthod2);
|
||||
return processRequest(payableBody, thirdPartyMap, Apimenthod2);
|
||||
}
|
||||
|
||||
/**
|
||||
* SAP应付凭证清单接口组装请求体:
|
||||
* @param thirdPartyMap 第三方数据映射
|
||||
* @return 请求体的 JSON 对象
|
||||
*/
|
||||
private static JSONObject payableBody(Map<String, Object> thirdPartyMap) {
|
||||
private static JSONObject payableBody(JSONArray IT_LIST) {
|
||||
// 获取当前日期和时间
|
||||
LocalDateTime date = LocalDateTime.now();
|
||||
// 定义日期时间格式
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
|
||||
// 格式化当前日期和时间
|
||||
String dates = date.format(formatter);
|
||||
//组装请求体
|
||||
JSONObject pendingsBody = new JSONObject();
|
||||
pendingsBody.put("rootContextID",""+System.currentTimeMillis());//todo:唯一事务ID,采用UUID或其他强唯一性ID
|
||||
pendingsBody.put("requestTime", ""+(thirdPartyMap.get("createdatetime")));//请求时间,格式为yyyy-MM-dd HH:mm:ss.SSS
|
||||
pendingsBody.put("rootContextID",""+System.currentTimeMillis());//唯一事务ID,采用UUID或其他强唯一性ID
|
||||
pendingsBody.put("requestTime",dates);//请求时间,格式为yyyy-MM-dd HH:mm:ss.SSS
|
||||
|
||||
JSONObject data = new JSONObject();
|
||||
JSONArray IT_LIST = new JSONArray();
|
||||
//todo:多
|
||||
List<DynamicObject> Lists = (List<DynamicObject>) thirdPartyMap.get("Lists");
|
||||
for (DynamicObject obj : Lists) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("FIELD", ""+(thirdPartyMap.get("FIELD")));//字段
|
||||
jsonObject.put("SIGN", ""+(thirdPartyMap.get("SIGN")));//I:包含 E:排除
|
||||
jsonObject.put("LOW", ""+(thirdPartyMap.get("LOW")));//LOW ,枚举字段所代表值的区间开始值
|
||||
jsonObject.put("HIGH", ""+(thirdPartyMap.get("HIGH")));//HIGH,枚举字段所代表值的区间结束值
|
||||
jsonObject.put("OPTION", "BT");//默认BT
|
||||
IT_LIST.add(jsonObject);
|
||||
}
|
||||
data.put("IT_LIST",IT_LIST);
|
||||
data.put("IT_INPUT",IT_LIST);
|
||||
pendingsBody.put("data", data);
|
||||
return pendingsBody;
|
||||
}
|
||||
|
|
@ -146,16 +146,24 @@ public class SapUtils {
|
|||
/**
|
||||
* 生成代扣款记账单接口
|
||||
*/
|
||||
public static void withholding_billing(Map<String, Object> thirdPartyMap) {
|
||||
public static void withholding_billing(){
|
||||
Map<String, Object> thirdPartyMap = new HashMap<>();
|
||||
thirdPartyMap.put("interfaceID",interfaceID3);
|
||||
thirdPartyMap.put("senderID",receiverID2);
|
||||
thirdPartyMap.put("receiverID",receiverID2);
|
||||
thirdPartyMap.put("URL",withholdingUrl);
|
||||
// 获取当前日期和时间
|
||||
LocalDateTime date = LocalDateTime.now();
|
||||
// 定义日期时间格式
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
|
||||
// 格式化当前日期和时间
|
||||
String dates = date.format(formatter);
|
||||
thirdPartyMap.put("createdatetime",dates);
|
||||
// 构建请求头
|
||||
Map<String, String> customerHeader = buildCustomerHeader(thirdPartyMap);
|
||||
// 组装请求体
|
||||
JSONObject withholdingBody = withholdingBody(thirdPartyMap);
|
||||
// 发送请求并处理响应
|
||||
processRequest(customerHeader, withholdingBody, thirdPartyMap, Apimenthod3);
|
||||
// processRequest(customerHeader, withholdingBody, thirdPartyMap, Apimenthod3);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -213,29 +221,58 @@ public class SapUtils {
|
|||
/**
|
||||
* 发送请求并处理响应
|
||||
*
|
||||
* @param customerHeader 请求头
|
||||
* @param pendingsBody 请求体
|
||||
* @param thirdPartyMap 第三方数据映射
|
||||
* @param apiName 接口名称
|
||||
*/
|
||||
private static void processRequest(Map<String, String> customerHeader, JSONObject pendingsBody, Map<String, Object> thirdPartyMap,String apiName) {
|
||||
String pendingPostjson = null;
|
||||
private static JSONObject processRequest(JSONObject pendingsBody, Map<String, Object> thirdPartyMap, String apiName){
|
||||
|
||||
// 配置超时时间
|
||||
RequestConfig requestConfig = RequestConfig.custom()
|
||||
.setConnectTimeout(10000) // 连接超时时间,单位毫秒
|
||||
.setConnectionRequestTimeout(10000) // 请求获取连接的超时时间,单位毫秒
|
||||
.setSocketTimeout(30000) // 读取超时时间,单位毫秒
|
||||
.build();
|
||||
|
||||
// 创建 HttpClient 实例并应用配置
|
||||
HttpClient httpClient = HttpClients.custom()
|
||||
.setDefaultRequestConfig(requestConfig)
|
||||
.build();
|
||||
|
||||
// 创建 HttpPost 请求
|
||||
HttpPost httpPost = new HttpPost(thirdPartyMap.get("URL").toString());
|
||||
|
||||
// 设置请求头
|
||||
httpPost.setHeader("Content-Type", "application/json");
|
||||
httpPost.setHeader("x-Gateway-APIKey", APIKey);
|
||||
httpPost.setHeader("interfaceID", "" + thirdPartyMap.get("interfaceID"));
|
||||
httpPost.setHeader("receiverID", "" + thirdPartyMap.get("receiverID"));
|
||||
|
||||
JSONObject jsonObject = null;
|
||||
try {
|
||||
// 发送POST请求并获取响应
|
||||
pendingPostjson = HttpClientUtils.postjson(thirdPartyMap.get("URL").toString(), customerHeader, pendingsBody.toJSONString());
|
||||
jsonObject = parseResponse(pendingPostjson,apiName);
|
||||
|
||||
// 检查JSON对象是否为空
|
||||
if (jsonObject != null && !jsonObject.isEmpty()) {
|
||||
// 设置请求体
|
||||
StringEntity entity = new StringEntity(pendingsBody.toJSONString(), "UTF-8");
|
||||
httpPost.setEntity(entity);
|
||||
|
||||
// 执行请求
|
||||
HttpResponse response = httpClient.execute(httpPost);
|
||||
|
||||
// 获取响应实体
|
||||
HttpEntity responseEntity = response.getEntity();
|
||||
if (responseEntity != null) {
|
||||
String responseString = EntityUtils.toString(responseEntity, "UTF-8");
|
||||
jsonObject = JSONObject.parseObject(responseString);
|
||||
handleResponse(jsonObject, pendingsBody, thirdPartyMap,apiName);
|
||||
return com.alibaba.fastjson.JSONObject.parseObject(responseString);
|
||||
}else {
|
||||
logger.info(apiName +"失败!");
|
||||
saveLog(apiName +(thirdPartyMap.get("billno").toString()), pendingsBody, jsonObject, false,apiName);
|
||||
saveLog(apiName +(thirdPartyMap.get("billno").toString()), pendingsBody, null, false,apiName);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
handleException(e, pendingsBody, thirdPartyMap, jsonObject,apiName);
|
||||
}
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -261,15 +298,15 @@ public class SapUtils {
|
|||
* @param apiName 接口名称
|
||||
*/
|
||||
private static void handleResponse(JSONObject jsonObject, JSONObject pendingsBody, Map<String, Object> thirdPartyMap,String apiName) {
|
||||
JSONArray data1 = jsonObject.getJSONArray("data");
|
||||
if (data1 == null || data1.isEmpty()) {
|
||||
String operResult = jsonObject.getString("code");
|
||||
JSONObject jsonobject = jsonObject.getJSONObject("data");
|
||||
if (jsonobject == null || jsonobject.isEmpty()) {
|
||||
logger.info(apiName + "失败!");
|
||||
saveLog(apiName + (thirdPartyMap.get("billno").toString()), pendingsBody, jsonObject, false,apiName);
|
||||
return;
|
||||
}
|
||||
JSONObject jsonobject = data1.getJSONObject(0);
|
||||
String operResult = jsonobject.getString("operResult");
|
||||
String logMessage = Objects.equals(operResult, "1") ? apiName +"成功!" : apiName +"失败!";
|
||||
|
||||
String logMessage = Objects.equals(operResult, "0") ? apiName +"成功!" : apiName +"失败!";
|
||||
|
||||
// 记录日志
|
||||
logger.info(logMessage);
|
||||
|
|
|
|||
Loading…
Reference in New Issue