解析凭证响应参数

This commit is contained in:
李贵强 2025-04-16 10:14:39 +08:00
parent c87261361a
commit ab52a9c81e
3 changed files with 131 additions and 9 deletions

View File

@ -26,6 +26,7 @@ import shjh.jhzj7.fi.fi.utils.ApiUtils;
import shjh.jhzj7.fi.fi.utils.EsbUtils;
import shjh.jhzj7.fi.fi.utils.JhzjUtils;
import shjh.jhzj7.fi.fi.utils.SysUtils;
import shjh.jhzj7.fi.fi.utils.domin.ResponseData;
import java.io.IOException;
import java.math.BigDecimal;
@ -165,6 +166,11 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
if (null != response) {
String code = (String) response.get("code");
if ("0".equals(code)) {
ResponseData responseData = ApiUtils.getResponseData(response);
if (responseData!=null){
recBill.set("shjh_vouchernum",responseData.getNumber());
recBill.set("shjh_sapfiscalyear",responseData.getYear());
}
recBill.set("shjh_ispushsap", true);
SaveServiceHelper.update(recBill);
}else {
@ -291,20 +297,40 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
for (DynamicObject entry : entries) {
JSONObject IT_ITEMS = new JSONObject();
// 设置客户/供应商编号
switch (payerType) {
case "bd_customer":
IT_ITEMS.put("KUNNR", cusOrSupNumber);
break;
case "bd_supplier":
IT_ITEMS.put("LIFNR", cusOrSupNumber);
break;
}
// // 设置客户/供应商编号
// switch (payerType) {
// case "bd_customer":
// IT_ITEMS.put("KUNNR", cusOrSupNumber);
// break;
// case "bd_supplier":
// IT_ITEMS.put("LIFNR", cusOrSupNumber);
// break;
// }
// 设置科目
DynamicObject account = entry.getDynamicObject("account");
if (account != null) {
IT_ITEMS.put("HKONT", account.getString("number"));
//查找核算维度
DynamicObjectCollection checkItems = account.getDynamicObjectCollection("checkitementry");
if (checkItems!=null&&checkItems.size()!=0){
for (DynamicObject checkItem : checkItems) {
//是否已经反写
boolean isMark=false;
//核算维度
String assTactItemNum = checkItem.getString("asstactitem.number");
if (assTactItemNum!=null){
switch (assTactItemNum){
case "0001"://客户
IT_ITEMS.put("KUNNR", cusOrSupNumber);
break;
case "0005"://供应商
IT_ITEMS.put("LIFNR", cusOrSupNumber);
break;
}
}
}
}
}
// 处理金额

View File

@ -12,6 +12,7 @@ import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import shjh.jhzj7.fi.fi.utils.domin.ResponseData;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@ -220,4 +221,46 @@ public class ApiUtils {
}
return isSuccess;
}
/**
* 解析凭证响应参数
* @param response
* @return
*/
public static ResponseData getResponseData(JSONObject response) {
if (response == null) {
return null;
}
JSONObject data = response.getJSONObject("data");
if (data == null) {
return null;
}
String key = data.getString("OBJ_KEY");
if (key == null || key.isEmpty()) {
return null;
}
ResponseData responseData = new ResponseData();
// 1. 提取number前10位
String number = key.length() >= 10 ? key.substring(0, 10) : key;
responseData.setNumber(number);
// 2. 提取year后4位
String year = key.length() >= 4 ? key.substring(key.length() - 4) : key;
responseData.setYear(year);
// 3. 提取orgNumber中间部分11-14位
String orgNumber = "";
if (key.length() > 14) { // 如果长度超过14说明有中间部分
orgNumber = key.substring(10, key.length() - 4);
} else if (key.length() > 10) { // 如果长度在11-14之间只取10位之后的部分
orgNumber = key.substring(10);
}
responseData.setOrgNumber(orgNumber);
return responseData;
}
}

View File

@ -0,0 +1,53 @@
package shjh.jhzj7.fi.fi.utils.domin;
public class ResponseData {
/**
* SAP凭证号
*/
private String number;
/**
* 公司编码
*/
private String orgNumber;
/**
* 会计年度
*/
private String year;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getOrgNumber() {
return orgNumber;
}
public void setOrgNumber(String orgNumber) {
this.orgNumber = orgNumber;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
@Override
public String toString() {
return "ResponseData{" +
"number='" + number + '\'' +
", orgNumber='" + orgNumber + '\'' +
", year='" + year + '\'' +
'}';
}
}