解析凭证响应参数
This commit is contained in:
parent
c87261361a
commit
ab52a9c81e
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 处理金额
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue