|
@@ -92,7 +92,7 @@ public class SynSapFIServiceImpl implements SynSapService {
|
|
|
//System.out.println("凭证 info:" + voucherInfo);
|
|
|
logger.info("同步SAP凭证 info:" + voucherInfo);
|
|
|
logger.info("同步SAP凭证 post:" + jsonData);
|
|
|
- String response = SyncSapFIUtils.postDataToSAP(jsonData);
|
|
|
+ String response = SyncSapFIUtils.postDataToSAP("voucher",jsonData);
|
|
|
logger.info("同步SAP凭证 return:" + response);
|
|
|
if (StringUtils.isEmpty(response)) {
|
|
|
err.append("同步失败,SAP凭证:" + voucherInfo);
|
|
@@ -155,4 +155,75 @@ public class SynSapFIServiceImpl implements SynSapService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 同步凭证档案号
|
|
|
+ *
|
|
|
+ * @param companyCode
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+
|
|
|
+ public Map<String, String> synVoucherArchiveForSap(String companyCode,String year ) {
|
|
|
+ Map<String, String> result = new HashMap<>();
|
|
|
+ logger.info("同步SAP凭证归档号");
|
|
|
+ String data = SyncSapFIUtils.getVoucherArchiveData(companyCode,year);
|
|
|
+ logger.info("同步SAP凭证归档号,参数:" + data);
|
|
|
+ String response = SyncSapFIUtils.postDataToSAP("voucherArchive", data);
|
|
|
+ if (StringUtils.isEmpty(response)) {
|
|
|
+ result.put("code", "300");
|
|
|
+ result.put("msg", "同步SAP凭证归档号,同步失败");
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ JSONObject rData = JSONObject.parseObject(response);
|
|
|
+ String etype = rData.getString("E_TYPE");
|
|
|
+
|
|
|
+ if (!"S".equals(etype)) {
|
|
|
+ result.put("code", "301");
|
|
|
+ result.put("msg", "同步SAP凭证归档号,E_TYPE:" + etype + ",错误信息:" + rData.getString("E_MESSGE"));
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ JSONObject rEtItem = rData.getJSONObject("ET_ITEM");
|
|
|
+ if (rEtItem == null) {
|
|
|
+ result.put("code", "302");
|
|
|
+ result.put("msg", "同步SAP凭证归档号,ET_ITEM参数为空");
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ JSONArray rItemArray = rEtItem.getJSONArray("item");
|
|
|
+ if (rItemArray == null) {
|
|
|
+ result.put("code", "303");
|
|
|
+ result.put("msg", "同步SAP凭证归档号,item参数为空");
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String,String> voucherNumberMap = new HashMap<String, String>();
|
|
|
+ List<String> voucherNumberList = new ArrayList<String>();
|
|
|
+ for (int i = 0; i < rItemArray.size(); ++i) {
|
|
|
+ JSONObject item = rItemArray.getJSONObject(i);
|
|
|
+ String number = item.getString("BELNR");
|
|
|
+ String ArchiveNumber = item.getString("XBLNR_ALT"); //归档号
|
|
|
+ if(StringUtils.isNotEmpty(ArchiveNumber)) {
|
|
|
+ voucherNumberMap.put(number, ArchiveNumber);
|
|
|
+ voucherNumberList.add(number);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ QFilter filter = new QFilter("nckd_xblnr", QCP.in, voucherNumberList);
|
|
|
+ DynamicObject[] voucherDyns = BusinessDataServiceHelper.load("gl_voucher", "id,nckd_xblnr,nckd_xrlnr_alt", new QFilter[]{filter});
|
|
|
+
|
|
|
+ ArrayList<DynamicObject> voucherList = new ArrayList<>();
|
|
|
+ for (DynamicObject voucherDyn : voucherDyns) {
|
|
|
+ voucherDyn.set("nckd_xrlnr_alt", voucherNumberMap.get(voucherDyn.getString("nckd_xblnr")));
|
|
|
+ }
|
|
|
+ if (voucherList.size() > 0) {
|
|
|
+ DynamicObject[] saveDynamicObject = voucherList.toArray(new DynamicObject[voucherList.size()]);
|
|
|
+ Object[] save = SaveServiceHelper.save(saveDynamicObject);
|
|
|
+ int length = save.length;
|
|
|
+ logger.info("同步[凭证归档号]完成,本次新增数量:{}" , length);
|
|
|
+ result.put("code", "200");
|
|
|
+ result.put("msg", "同步SAP凭证归档号,执行成功,本次同步数量" + length);
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
}
|