diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java index 2367499..7f1b5a9 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java @@ -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; + } + } } diff --git a/main/java/shjh/jhzj7/fi/fi/utils/SapUtils.java b/main/java/shjh/jhzj7/fi/fi/utils/SapUtils.java index 84bd7db..cba826f 100644 --- a/main/java/shjh/jhzj7/fi/fi/utils/SapUtils.java +++ b/main/java/shjh/jhzj7/fi/fi/utils/SapUtils.java @@ -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 buildCustomerHeader(Map thirdPartyMap) { Map 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 thirdPartyMap) { + public static void unlocked_status(Map 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 thirdPartyMap) { + public static JSONObject vouchers_payable(JSONArray IT_LIST,String billno){ + Map thirdPartyMap = new HashMap<>(); thirdPartyMap.put("interfaceID",interfaceID2); - thirdPartyMap.put("senderID",receiverID1); + thirdPartyMap.put("receiverID",receiverID1); thirdPartyMap.put("URL",vouchersUrl); - // 构建请求头 - Map 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 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 Lists = (List) 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 thirdPartyMap) { + public static void withholding_billing(){ + Map 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 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 customerHeader, JSONObject pendingsBody, Map thirdPartyMap,String apiName) { - String pendingPostjson = null; + private static JSONObject processRequest(JSONObject pendingsBody, Map 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 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);