|
@@ -32,78 +32,63 @@ public class SynSapFIServiceImpl implements SynSapService {
|
|
|
*
|
|
|
* 本方法负责从苍穹系统同步凭证到SAP凭证中
|
|
|
*
|
|
|
- * @param companyCode 公司代码,用于过滤特定公司的项目信息
|
|
|
+ * @param vouchsreIds 公司代码,用于过滤特定公司的项目信息
|
|
|
* @return 返回一个包含同步结果的Map,包括状态码(code)和消息(msg)
|
|
|
*/
|
|
|
@Override
|
|
|
- public Map<String, String> synVoucherForSap(String companyCode) {
|
|
|
+ public Map<String, String> synVoucherForSap(List<Long> vouchsreIds) {
|
|
|
Map<String, String> result = new HashMap<>();
|
|
|
+ StringBuilder err = new StringBuilder();
|
|
|
+ int count = 0;
|
|
|
+ for (Long vouchsreId : vouchsreIds) {
|
|
|
|
|
|
- QFilter qf1 = new QFilter("billstatus", QCP.equals, "C");
|
|
|
- QFilter qf2 = new QFilter("org.number", QCP.equals, companyCode);
|
|
|
+ QFilter qf1 = new QFilter("billstatus", QCP.equals, "C");
|
|
|
+ QFilter qf2 = new QFilter("id", QCP.equals, vouchsreId);
|
|
|
|
|
|
- String selectFields = SyncSapFIUtils.getVoucherFieldForQuery();
|
|
|
- DynamicObjectCollection voucherDyns = QueryServiceHelper.query("gl_voucher", selectFields, new QFilter[]{qf1,qf2});
|
|
|
+ String selectFields = SyncSapFIUtils.getVoucherFieldForQuery();
|
|
|
+ DynamicObjectCollection voucherDyns = QueryServiceHelper.query("gl_voucher", selectFields, new QFilter[]{qf1, qf2});
|
|
|
|
|
|
- String billid = "";
|
|
|
+ JSONArray ENTRY_ITEM = new JSONArray(); //凭证分录
|
|
|
+ JSONObject HEADERITEMINFO = new JSONObject(); //凭证表头
|
|
|
+ //现金流量项目编码 不在现金科目行上,需要单独处理下
|
|
|
+ String maincfitemNumber = "";
|
|
|
+ String voucherInfo = "";
|
|
|
|
|
|
- JSONArray ENTRY_ITEM = new JSONArray(); //凭证分录
|
|
|
- JSONObject HEADERITEMINFO = new JSONObject(); //凭证表头
|
|
|
- //现金流量项目编码 不在现金科目行上,需要单独处理下
|
|
|
- String maincfitemNumber = "";
|
|
|
- StringBuilder err = new StringBuilder();
|
|
|
- int count = 0;
|
|
|
- //voucherDyns 凭证表头与分录平铺
|
|
|
- for(DynamicObject voucherRow : voucherDyns) {
|
|
|
- String id = voucherRow.getString("id");
|
|
|
+ //voucherDyns 凭证表头与分录平铺
|
|
|
+ for (DynamicObject voucherRow : voucherDyns) {
|
|
|
+ String billid = voucherRow.getString("id");
|
|
|
+ String companyCode = voucherRow.getString("org.number");
|
|
|
|
|
|
- String voucherInfo = companyCode + "|" + voucherRow.getString("vouchertype") + "|" + voucherRow.getString("billno");
|
|
|
- Map<String, String> auxpropertiesMap = SyncSapFIUtils.getAssGrp(voucherRow);
|
|
|
-
|
|
|
- //判断 是不是另一张凭证
|
|
|
- if(billid.equals(id)) {
|
|
|
- if(StringUtils.isNotEmpty(auxpropertiesMap.get("maincfitemNumber"))){
|
|
|
- maincfitemNumber = auxpropertiesMap.get("maincfitemNumber");
|
|
|
- }
|
|
|
- /////处理凭证分录
|
|
|
- JSONObject entry = SyncSapFIUtils.convertCosmicVoucherToSAPForEntry(voucherRow,maincfitemNumber,auxpropertiesMap);
|
|
|
- ENTRY_ITEM.add(entry);
|
|
|
- } else {
|
|
|
- ///当走到另一张凭证时,处理凭证表头
|
|
|
- maincfitemNumber = "";
|
|
|
- HEADERITEMINFO = new JSONObject(); //凭证表头 清空
|
|
|
- ENTRY_ITEM = new JSONArray(); //凭证分录 清空
|
|
|
+ voucherInfo = companyCode + "|" + voucherRow.getString("vouchertype") + "|" + voucherRow.getString("billno");
|
|
|
+ Map<String, String> auxpropertiesMap = SyncSapFIUtils.getAssGrp(voucherRow);
|
|
|
|
|
|
- if(StringUtils.isNotEmpty(auxpropertiesMap.get("maincfitemNumber"))){
|
|
|
+ if (StringUtils.isNotEmpty(auxpropertiesMap.get("maincfitemNumber"))) {
|
|
|
maincfitemNumber = auxpropertiesMap.get("maincfitemNumber");
|
|
|
}
|
|
|
////处理凭证表头
|
|
|
HEADERITEMINFO = SyncSapFIUtils.convertCosmicVoucherToSAPForHead(voucherRow);
|
|
|
- JSONObject entry = SyncSapFIUtils.convertCosmicVoucherToSAPForEntry(voucherRow,maincfitemNumber,auxpropertiesMap);
|
|
|
+ JSONObject entry = SyncSapFIUtils.convertCosmicVoucherToSAPForEntry(voucherRow, maincfitemNumber, auxpropertiesMap);
|
|
|
ENTRY_ITEM.add(entry);
|
|
|
|
|
|
- String jsonData = SyncSapFIUtils.getVoucherData(HEADERITEMINFO,ENTRY_ITEM);
|
|
|
- System.out.println("凭证 info:"+voucherInfo);
|
|
|
- System.out.println("凭证 post:"+jsonData);
|
|
|
- //String response = SyncSapFIUtils.postDataToSAP(jsonData);
|
|
|
- String response = "{\"E_TYPE\":\"S\",\"E_MESSGE\":\"成功\"}";
|
|
|
- System.out.println("凭证 return:"+response);
|
|
|
- if(StringUtils.isEmpty(response)){
|
|
|
- err.append("同步失败,凭证:"+voucherInfo);
|
|
|
- return result;
|
|
|
- }
|
|
|
- JSONObject rData = JSONObject.parseObject(response);
|
|
|
+ }
|
|
|
|
|
|
- String etype = rData.getString("E_TYPE");
|
|
|
+ String jsonData = SyncSapFIUtils.getVoucherData(HEADERITEMINFO, ENTRY_ITEM);
|
|
|
+ System.out.println("凭证 info:" + voucherInfo);
|
|
|
+ System.out.println("凭证 post:" + jsonData);
|
|
|
+ String response = SyncSapFIUtils.postDataToSAP(jsonData);
|
|
|
+ //String response = "{\"E_TYPE\":\"S\",\"E_MESSGE\":\"成功\"}";
|
|
|
+ System.out.println("凭证 return:" + response);
|
|
|
+ if (StringUtils.isEmpty(response)) {
|
|
|
+ err.append("同步失败,凭证:" + voucherInfo);
|
|
|
+ }
|
|
|
+ JSONObject rData = JSONObject.parseObject(response);
|
|
|
+ String etype = rData.getString("E_TYPE");
|
|
|
|
|
|
- if(!"S".equals(etype)){
|
|
|
- err.append("/n 凭证:"+voucherInfo+",E_TYPE:"+etype+",错误信息:"+rData.getString("E_MESSGE"));
|
|
|
- return result;
|
|
|
- }else{
|
|
|
- count++;
|
|
|
- }
|
|
|
+ if (!"S".equals(etype)) {
|
|
|
+ err.append("/n 凭证:" + voucherInfo + ",E_TYPE:" + etype + ",错误信息:" + rData.getString("E_MESSGE"));
|
|
|
+ } else {
|
|
|
+ count++;
|
|
|
}
|
|
|
- billid = id;
|
|
|
}
|
|
|
|
|
|
if(StringUtils.isEmpty(err.toString())) {
|