|
|
@@ -49,105 +49,105 @@ public class NonPoServerImpl implements NonPoServer {
|
|
|
|
|
|
private String QA_sapUrl = "https://etl-nonprod-tasks.tysondt.com:443/api/1/rest/feed/run/task/TysonNonProd/Ultra_PoC/10-QA-team-fssc/tk_oa_to_sap_p2p?bearer_token=bBiGTA7PS0JJ6wKhQU8Vm0vLsIDNjLaN&interface_id=";
|
|
|
|
|
|
- @Override
|
|
|
- public void NonPoinsetSAP0005(String type, String InstanceId) {
|
|
|
- YDParam ydParam = _getYDTokenKPD();
|
|
|
- ydParam.setFormInstanceId(InstanceId);
|
|
|
- DDR_New ddr = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id);
|
|
|
- Map dataForm = ddr.getFormData();
|
|
|
- String paymentType = getString(dataForm, "selectField_mejfoona", "");//Type / 付款类型
|
|
|
- // 发票总额 or 支付金额
|
|
|
- String invoiceAmt = getNumberValue(dataForm, "numberField_mejfoook_value");//Invoice Amount / 发票总额
|
|
|
- String payAmt = getNumberValue(dataForm, "numberField_mejfoool_value");//Payment Amount / 支付总额(含税)
|
|
|
-
|
|
|
-
|
|
|
- String PD = formatDate(dataForm, "selectField_mj1cq2oz_id");//
|
|
|
- String SAPID = formatDate(dataForm, "textField_mejezfwk").equals("")? formatDate(dataForm, "textField_mj2gpdiu"): formatDate(dataForm, "textField_mejezfwk");
|
|
|
-
|
|
|
- // 若不需要生成 SAP 凭证,但已有 SAPID,则执行发票勾选
|
|
|
- if ("否".equals(PD) && !SAPID.isEmpty()) {
|
|
|
- FPGX(InstanceId, SAPID, getString(dataForm, "textField_mi73dy3n", ""));
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- // 只有“是”才继续处理
|
|
|
- if ("否".equals(PD)) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- JSONObject sapJson = new JSONObject();
|
|
|
- sapJson.put("ZDUEDATE", formatDate(dataForm, "dateField_mejfoonv"));
|
|
|
- sapJson.put("BKTXT", getString(dataForm, "textareaField_mejfoonw", ""));
|
|
|
- sapJson.put("ZOA_NUMBER", getString(dataForm, "textField_mi73dy3n", ""));
|
|
|
- sapJson.put("interface_id", "SAP005");
|
|
|
-
|
|
|
-
|
|
|
- if ("收据支付".equals(paymentType)) {
|
|
|
- sapJson.put("ZINVOICE_AMT", payAmt);
|
|
|
- } else {
|
|
|
- sapJson.put("ZINVOICE_AMT", invoiceAmt);
|
|
|
- }
|
|
|
-
|
|
|
- sapJson.put("BANKA", getString(dataForm, "textField_mejfoon9", ""));
|
|
|
- sapJson.put("BLDAT", formatDate(dataForm, "dateField_l9nsavm3"));
|
|
|
-
|
|
|
- // 获取过账人 UID
|
|
|
- String uid = getPostingUserUid(dataForm);
|
|
|
- sapJson.put("USNAM", uid);
|
|
|
-
|
|
|
- sapJson.put("BUDAT", formatDate(dataForm, "dateField_mhxdzyaa"));
|
|
|
- sapJson.put("ZOA_TYPE", "无票预付".equals(paymentType) ? "AD" : "NP");
|
|
|
- sapJson.put("ZPAY_AMT", payAmt);
|
|
|
- sapJson.put("BUKRS", getString(dataForm, "textField_mejfj9iw", ""));
|
|
|
- sapJson.put("BANKN", getString(dataForm, "textField_mejfoon8", ""));
|
|
|
- sapJson.put("WAERS", getString(dataForm, "selectField_mejfoong", ""));
|
|
|
- sapJson.put("KOINH", getString(dataForm, "textField_mejezfwl", ""));
|
|
|
- sapJson.put("LIFNR", getString(dataForm, "textField_mejezfwv", ""));
|
|
|
-
|
|
|
- // 设置凭证类型 & 构建 ITEM
|
|
|
- JSONArray itemArray = new JSONArray();
|
|
|
- if ("发票支付".equals(paymentType)) {
|
|
|
- sapJson.put("BLART", "Z2");
|
|
|
- buildInvoicePaymentItems(dataForm, "tableField_l6ujr47b", itemArray);
|
|
|
- } else if ("无票预付".equals(paymentType)) {
|
|
|
- sapJson.put("BLART", "Z4");
|
|
|
- sapJson.put("UMSKZ", "A");
|
|
|
- buildAdvancePaymentItem(dataForm, itemArray);
|
|
|
- } else if ("收据支付".equals(paymentType)) {
|
|
|
- sapJson.put("BLART", "Z2");
|
|
|
- buildReceiptPaymentItems(dataForm, "tableField_mi7c3wl9", itemArray);
|
|
|
- } else if ("100%清预付款".equals(paymentType)) {
|
|
|
- sapJson.put("BLART", "Z2");
|
|
|
- String xref1 = "", xref2 = "";
|
|
|
- List<Map<String, Object>> refList = getList(dataForm, "tableField_mi8q495e");
|
|
|
- if (refList != null && !refList.isEmpty()) {
|
|
|
- if (refList.size() == 1) {
|
|
|
- xref1 = getString(refList.get(0), "textField_mi8q495f", "");
|
|
|
- } else {
|
|
|
- refList.sort((a, b) -> {
|
|
|
- Long timeA = getDateTimestamp(a, "dateField_mj13wpls");
|
|
|
- Long timeB = getDateTimestamp(b, "dateField_mj13wpls");
|
|
|
- return Long.compare(timeB, timeA);
|
|
|
- });
|
|
|
- xref1 = getString(refList.get(0), "textField_mi8q495f", "");
|
|
|
- xref2 = getString(refList.get(1), "textField_mi8q495f", "");
|
|
|
- }
|
|
|
- }
|
|
|
- buildClearAdvanceItems(dataForm, "tableField_l6ujr47b", xref1, xref2, itemArray);
|
|
|
- }
|
|
|
-
|
|
|
- sapJson.put("ITEM", itemArray);
|
|
|
-
|
|
|
- // 调用 SAP 接口
|
|
|
- log.info("发起POST请求:URL={},参数={}", QA_sapUrl + "SAP005", sapJson);
|
|
|
- System.out.println(sapJson);
|
|
|
- String post = HttpUtil.post(QA_sapUrl + "SAP005", null, sapJson.toString(), null);
|
|
|
- log.info("{} POST反馈={}", getString(dataForm, "textField_mi73dy3n", ""), post);
|
|
|
- System.out.println("POST反馈=====" + post);
|
|
|
-
|
|
|
- handleSapResponse(post, InstanceId, dataForm, paymentType);
|
|
|
- }
|
|
|
+ // @Override
|
|
|
+// public void NonPoinsetSAP0005_tse(String type, String InstanceId) {
|
|
|
+// YDParam ydParam = _getYDTokenKPD();
|
|
|
+// ydParam.setFormInstanceId(InstanceId);
|
|
|
+// DDR_New ddr = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id);
|
|
|
+// Map dataForm = ddr.getFormData();
|
|
|
+// String paymentType = getString(dataForm, "selectField_mejfoona", "");//Type / 付款类型
|
|
|
+// // 发票总额 or 支付金额
|
|
|
+// String invoiceAmt = getNumberValue(dataForm, "numberField_mejfoook_value");//Invoice Amount / 发票总额
|
|
|
+// String payAmt = getNumberValue(dataForm, "numberField_mejfoool_value");//Payment Amount / 支付总额(含税)
|
|
|
+//
|
|
|
+//
|
|
|
+// String PD = (String) dataForm.get("selectField_mj1cq2oz_id");//formatDate(dataForm, "selectField_mj1cq2oz_id");//
|
|
|
+// String SAPID = (String) dataForm.get("textField_mejezfwk");//formatDate(dataForm, "textField_mejezfwk").equals("")? formatDate(dataForm, "textField_mj2gpdiu"): formatDate(dataForm, "textField_mejezfwk");
|
|
|
+//
|
|
|
+// // 若不需要生成 SAP 凭证,但已有 SAPID,则执行发票勾选
|
|
|
+// if ("否".equals(PD) && !SAPID.isEmpty()) {
|
|
|
+// FPGX(InstanceId, SAPID, getString(dataForm, "textField_mi73dy3n", ""));
|
|
|
+// return;
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// // 只有“是”才继续处理
|
|
|
+// if ("否".equals(PD)) {
|
|
|
+// return;
|
|
|
+// }
|
|
|
+//
|
|
|
+// JSONObject sapJson = new JSONObject();
|
|
|
+// sapJson.put("ZDUEDATE", formatDate(dataForm, "dateField_mejfoonv"));
|
|
|
+// sapJson.put("BKTXT", getString(dataForm, "textareaField_mejfoonw", ""));
|
|
|
+// sapJson.put("ZOA_NUMBER", getString(dataForm, "textField_mi73dy3n", ""));
|
|
|
+// sapJson.put("interface_id", "SAP005");
|
|
|
+//
|
|
|
+//
|
|
|
+// if ("收据支付".equals(paymentType)) {
|
|
|
+// sapJson.put("ZINVOICE_AMT", payAmt);
|
|
|
+// } else {
|
|
|
+// sapJson.put("ZINVOICE_AMT", invoiceAmt);
|
|
|
+// }
|
|
|
+//
|
|
|
+// sapJson.put("BANKA", getString(dataForm, "textField_mejfoon9", ""));
|
|
|
+// sapJson.put("BLDAT", formatDate(dataForm, "dateField_l9nsavm3"));
|
|
|
+//
|
|
|
+// // 获取过账人 UID
|
|
|
+// String uid = getPostingUserUid(dataForm);
|
|
|
+// sapJson.put("USNAM", uid);
|
|
|
+//
|
|
|
+// sapJson.put("BUDAT", formatDate(dataForm, "dateField_mhxdzyaa"));
|
|
|
+// sapJson.put("ZOA_TYPE", "无票预付".equals(paymentType) ? "AD" : "NP");
|
|
|
+// sapJson.put("ZPAY_AMT", payAmt);
|
|
|
+// sapJson.put("BUKRS", getString(dataForm, "textField_mejfj9iw", ""));
|
|
|
+// sapJson.put("BANKN", getString(dataForm, "textField_mejfoon8", ""));
|
|
|
+// sapJson.put("WAERS", getString(dataForm, "selectField_mejfoong", ""));
|
|
|
+// sapJson.put("KOINH", getString(dataForm, "textField_mejezfwl", ""));
|
|
|
+// sapJson.put("LIFNR", getString(dataForm, "textField_mejezfwv", ""));
|
|
|
+//
|
|
|
+// // 设置凭证类型 & 构建 ITEM
|
|
|
+// JSONArray itemArray = new JSONArray();
|
|
|
+// if ("发票支付".equals(paymentType)) {
|
|
|
+// sapJson.put("BLART", "Z2");
|
|
|
+// buildInvoicePaymentItems(dataForm, "tableField_l6ujr47b", itemArray);
|
|
|
+// } else if ("无票预付".equals(paymentType)) {
|
|
|
+// sapJson.put("BLART", "Z4");
|
|
|
+// sapJson.put("UMSKZ", "A");
|
|
|
+// buildAdvancePaymentItem(dataForm, itemArray);
|
|
|
+// } else if ("收据支付".equals(paymentType)) {
|
|
|
+// sapJson.put("BLART", "Z2");
|
|
|
+// buildReceiptPaymentItems(dataForm, "tableField_mi7c3wl9", itemArray);
|
|
|
+// } else if ("100%清预付款".equals(paymentType)) {
|
|
|
+// sapJson.put("BLART", "Z2");
|
|
|
+// String xref1 = "", xref2 = "";
|
|
|
+// List<Map<String, Object>> refList = getList(dataForm, "tableField_mi8q495e");
|
|
|
+// if (refList != null && !refList.isEmpty()) {
|
|
|
+// if (refList.size() == 1) {
|
|
|
+// xref1 = getString(refList.get(0), "textField_mi8q495f", "");
|
|
|
+// } else {
|
|
|
+// refList.sort((a, b) -> {
|
|
|
+// Long timeA = getDateTimestamp(a, "dateField_mj13wpls");
|
|
|
+// Long timeB = getDateTimestamp(b, "dateField_mj13wpls");
|
|
|
+// return Long.compare(timeB, timeA);
|
|
|
+// });
|
|
|
+// xref1 = getString(refList.get(0), "textField_mi8q495f", "");
|
|
|
+// xref2 = getString(refList.get(1), "textField_mi8q495f", "");
|
|
|
+// }
|
|
|
+// }
|
|
|
+// buildClearAdvanceItems(dataForm, "tableField_l6ujr47b", xref1, xref2, itemArray);
|
|
|
+// }
|
|
|
+//
|
|
|
+// sapJson.put("ITEM", itemArray);
|
|
|
+//
|
|
|
+// // 调用 SAP 接口
|
|
|
+// log.info("发起POST请求:URL={},参数={}", QA_sapUrl + "SAP005", sapJson);
|
|
|
+// System.out.println(sapJson);
|
|
|
+// String post = HttpUtil.post(QA_sapUrl + "SAP005", null, sapJson.toString(), null);
|
|
|
+// log.info("{} POST反馈={}", getString(dataForm, "textField_mi73dy3n", ""), post);
|
|
|
+// System.out.println("POST反馈=====" + post);
|
|
|
+//
|
|
|
+// handleSapResponse(post, InstanceId, dataForm, paymentType);
|
|
|
+// }
|
|
|
|
|
|
// === 辅助方法(全部为 private static 或局部 lambda,但 Java 不支持局部函数,故用 private 方法)===
|
|
|
// 注意:这些方法必须定义在类中,但未扩展主逻辑
|
|
|
@@ -172,11 +172,11 @@ public class NonPoServerImpl implements NonPoServer {
|
|
|
}
|
|
|
|
|
|
private String formatDate(Map map, String dateKey) {
|
|
|
- // Object val = map.get(dateKey);
|
|
|
-// if (val instanceof Long) {
|
|
|
-// return CusutUtil.getFormatDate((Long) val);
|
|
|
-// }
|
|
|
- return (String) map.get(dateKey);
|
|
|
+ Object val = map.get(dateKey);
|
|
|
+ if (val instanceof Long) {
|
|
|
+ return CusutUtil.getFormatDate((Long) val);
|
|
|
+ }
|
|
|
+ return "";
|
|
|
}
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
@@ -233,7 +233,7 @@ public class NonPoServerImpl implements NonPoServer {
|
|
|
for (Map<String, Object> row : rows) {
|
|
|
JSONObject item = new JSONObject();
|
|
|
item.put("KOSTL", getString(row, "textField_mi5kjmwk", ""));
|
|
|
- item.put("DMBTR", getNumberValue(row, "numberField_l6ujr47g_value"));
|
|
|
+ item.put("DMBTR", getNumberValue(row, "numberField_mi7c3wky"));
|
|
|
item.put("XREF1", xref1);
|
|
|
if (!xref2.isEmpty()) {
|
|
|
item.put("XREF2", xref2);
|
|
|
@@ -242,7 +242,7 @@ public class NonPoServerImpl implements NonPoServer {
|
|
|
item.put("HKONT", getString(row, "textField_l6lvt6lj", ""));
|
|
|
item.put("ZTAXOUT_AMT", "0");
|
|
|
item.put("MWSKZ", hasTax ? getString(row, "textField_l7a6bzpv", "") : "");
|
|
|
- item.put("ZTAX_AMT", hasTax ? getNumberValue(row, "numberField_l6vu65fp_value") : "0");
|
|
|
+ item.put("ZTAX_AMT", hasTax ? getNumberValue(row, "numberField_l6vu65fp") : "0");
|
|
|
item.put("SGTXT", getString(row, "textField_mejfoonz", ""));
|
|
|
itemArray.add(item);
|
|
|
}
|
|
|
@@ -339,294 +339,295 @@ public class NonPoServerImpl implements NonPoServer {
|
|
|
YDConf.FORM_OPERATION.update
|
|
|
);
|
|
|
}
|
|
|
-// @Override
|
|
|
-// public void NonPoinsetSAP0005(String type, String InstanceId) {
|
|
|
-// YDParam ydParam = _getYDTokenKPD();
|
|
|
-// ydParam.setFormInstanceId(InstanceId);
|
|
|
-// DDR_New ddr = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id);
|
|
|
-// Map dataForm = ddr.getFormData();
|
|
|
-// // dataForm.put("InstanceId", InstanceId);
|
|
|
-// JSONObject sapJson = new JSONObject();
|
|
|
-// JSONObject upJson = new JSONObject();
|
|
|
-// String PD = (String) dataForm.get("radioField_mj13wplt");//是否生成SAP凭证
|
|
|
-// String SAPID = (String) dataForm.get("textField_mejezfwk");//SAP凭证号码
|
|
|
-///**
|
|
|
-// * 是否需要生成SAP凭证
|
|
|
-// */
|
|
|
-// if (PD.equals("是")) {
|
|
|
-//
|
|
|
-// // 添加顶级键值对
|
|
|
-// sapJson.put("ZDUEDATE", CusutUtil.getFormatDate((Long) dataForm.get("dateField_mejfoonv"))); //Due date / 到期日
|
|
|
-// sapJson.put("BKTXT", dataForm.get("textareaField_mejfoonw"));//备注 抬头文本
|
|
|
-// sapJson.put("ZOA_NUMBER", dataForm.get("textField_mi73dy3n")); //钉钉单据号
|
|
|
-// if (dataForm.get("selectField_mejfoona").equals("收据支付")) {//☑ 票据支付时 代码ZINVOICE_AMT 默认ZPAY_AMT的值
|
|
|
-// sapJson.put("ZINVOICE_AMT", dataForm.get("numberField_mejfoool_value").equals("") ? "0" : dataForm.get("numberField_mejfoool_value"));//支付金额
|
|
|
-// } else {
|
|
|
-// sapJson.put("ZINVOICE_AMT", dataForm.get("numberField_mejfoook_value").equals("") ? "0" : dataForm.get("numberField_mejfoook_value"));//发票总额
|
|
|
-// }
|
|
|
-//
|
|
|
-// sapJson.put("BANKA", dataForm.get("textField_mejfoon9")); //开户行
|
|
|
-// sapJson.put("BLDAT", CusutUtil.getFormatDate((Long) dataForm.get("dateField_l9nsavm3"))); //凭证日期ƒ Date / 申请日期
|
|
|
-// String uid = "TEST-CN001";
|
|
|
-// String uname = "";
|
|
|
-// if (!dataForm.get("employeeField_mhxdzya9_id").equals("")) {
|
|
|
-//
|
|
|
-// List<Map<String, Object>> conditions = new ArrayList<>(Arrays.asList(buildCondition("textField_l6dddg5k", dataForm.get("employeeField_mhxdzya9_id"), "TEXT", "eq", "TextField")));
|
|
|
-// String listJson = JSON.toJSONString(conditions);
|
|
|
-// YDParam YGydParam = _getYDTokenZXXZ(listJson);
|
|
|
-// List<Map> dataList = (List<Map>) ydClient.queryData(YGydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
|
|
|
-// if (dataList != null && dataList.size() > 0) {
|
|
|
-// Map map = dataList.get(0);
|
|
|
-// Map formData = (Map) map.get("formData");
|
|
|
-// uid = formData.get("textField_l6djch1m").toString();
|
|
|
-// uid = "CHN-0" + uid;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// // uid = "CHN-01000332";//测试过账人
|
|
|
-// sapJson.put("USNAM", uid); //过账人
|
|
|
-// sapJson.put("BUDAT", CusutUtil.getFormatDate((Long) dataForm.get("dateField_mhxdzyaa"))); //过账日期
|
|
|
-// sapJson.put("ZOA_TYPE", dataForm.get("selectField_mejfoona").equals("无票预付") ? "AD" : "NP");//OA单据类型
|
|
|
-// sapJson.put("ZPAY_AMT", dataForm.get("numberField_mejfoool_value").equals("") ? "0" : dataForm.get("numberField_mejfoool_value")); //支付金额
|
|
|
-// sapJson.put("BUKRS", dataForm.get("textField_mejfj9iw"));//公司代码
|
|
|
-// sapJson.put("BANKN", dataForm.get("textField_mejfoon8")); //银行账号
|
|
|
-// sapJson.put("WAERS", dataForm.get("selectField_mejfoong")); //币种
|
|
|
-// sapJson.put("KOINH", dataForm.get("textField_mejezfwl")); //收款方名称
|
|
|
-// sapJson.put("LIFNR", dataForm.get("textField_mejezfwv"));//供应商代码
|
|
|
-// sapJson.put("interface_id", "SAP005");
|
|
|
-// //获取子表
|
|
|
-// if (dataForm.get("selectField_mejfoona").equals("发票支付")) {
|
|
|
-// sapJson.put("BLART", "Z2");//凭证类型
|
|
|
-// JSONArray itemArray = new JSONArray();
|
|
|
-// int x = 1;//OA单据行号累计用
|
|
|
-// List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_l6ujr47b");
|
|
|
-// if (tableFils != null && tableFils.size() > 0) {
|
|
|
-// for (int n = 0; n < tableFils.size(); n++) {
|
|
|
-// Map<String, Object> row = new HashMap(tableFils.get(n));
|
|
|
-//
|
|
|
-//
|
|
|
-// JSONObject itemObj = new JSONObject();
|
|
|
-// itemObj.put("KOSTL", String.valueOf(row.get("textField_mi5kjmwk"))); //成本中心
|
|
|
-// itemObj.put("DMBTR", String.valueOf(row.get("numberField_l6ujr47g_value"))); //不含税金额
|
|
|
-// itemObj.put("XREF1", "");//参考码 9000242
|
|
|
-//
|
|
|
-// String sjItemNo = "";
|
|
|
-// if (x < 10) {
|
|
|
-// sjItemNo += "00" + x;
|
|
|
-// } else if (x < 100) {
|
|
|
-// sjItemNo += "0" + x;
|
|
|
-// } else {
|
|
|
-// sjItemNo += x;
|
|
|
-// }
|
|
|
-// x++;
|
|
|
-// itemObj.put("ZOA_ITEMNO", sjItemNo);//OA单据行号
|
|
|
-// itemObj.put("HKONT", String.valueOf(row.get("textField_l6lvt6lj"))); //会计科目
|
|
|
-// itemObj.put("ZTAXOUT_AMT", "0");//进项税转出金额 、、、 String.valueOf(row.get("numberField_l6bx7hqk_value"))
|
|
|
-// itemObj.put("MWSKZ", String.valueOf(row.get("textField_l7a6bzpv")));///税码
|
|
|
-// itemObj.put("ZTAX_AMT", String.valueOf(row.get("numberField_l6vu65fp_value")).equals("") ? "0" : String.valueOf(row.get("numberField_l6vu65fp_value"))); //税额
|
|
|
-// itemObj.put("SGTXT", String.valueOf(row.get("textField_mejfoonz"))); //行项目文本
|
|
|
-//
|
|
|
-//
|
|
|
-// itemArray.put(itemObj);
|
|
|
-// }
|
|
|
-//
|
|
|
-//
|
|
|
-// }
|
|
|
-//
|
|
|
-// sapJson.put("ITEM", itemArray);
|
|
|
-// } else if (dataForm.get("selectField_mejfoona").equals("无票预付")) {
|
|
|
-//
|
|
|
-// sapJson.put("BLART", "Z4");//凭证类型
|
|
|
-// sapJson.put("UMSKZ", "A");//特别总账标识
|
|
|
-// JSONArray SapItem = new JSONArray(); //子表
|
|
|
-// JSONObject itemObject = new JSONObject();
|
|
|
-// itemObject.put("ZOA_ITEMNO", "001"); //OA单据行号
|
|
|
-// itemObject.put("HKONT", ""); //会计科目
|
|
|
-// itemObject.put("KOSTL", ""); //成本中心
|
|
|
-// BigDecimal bigBhsje = new BigDecimal(dataForm.get("numberField_mejfoool_value").toString());//改大数
|
|
|
-// bigBhsje = bigBhsje.setScale(2, RoundingMode.HALF_UP);
|
|
|
-// itemObject.put("DMBTR", bigBhsje); //不含税金额
|
|
|
-//
|
|
|
-//// itemObject.put("DMBTR", object.get("numberField_l6bwb4hg").toString()); //不含税金额--支付金额
|
|
|
-// itemObject.put("MWSKZ", ""); //税码
|
|
|
-// itemObject.put("ZTAX_AMT", "0"); //税额
|
|
|
-// itemObject.put("ZTAXOUT_AMT", "0"); //进项税转出金额
|
|
|
-// itemObject.put("SGTXT", ""); //行项目文本
|
|
|
-// itemObject.put("XREF1", dataForm.get("textareaField_mejfoonw")); //cir项目号
|
|
|
-//
|
|
|
-// SapItem.put(itemObject);
|
|
|
-// sapJson.put("ITEM", SapItem);
|
|
|
-// } else if (dataForm.get("selectField_mejfoona").equals("收据支付")) {
|
|
|
-//
|
|
|
-// sapJson.put("BLART", "Z2");//凭证类型
|
|
|
-// JSONArray itemArray = new JSONArray();
|
|
|
-// int x = 1;//OA单据行号累计用
|
|
|
-// List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_mi7c3wl9");
|
|
|
-// if (tableFils != null && tableFils.size() > 0) {
|
|
|
-// for (int n = 0; n < tableFils.size(); n++) {
|
|
|
-// Map<String, Object> row = new HashMap(tableFils.get(n));
|
|
|
-// JSONObject itemObj = new JSONObject();
|
|
|
-// itemObj.put("KOSTL", String.valueOf(row.get("textField_mi7c3wku"))); //成本中心
|
|
|
-// itemObj.put("DMBTR", String.valueOf(row.get("numberField_mi7c3wky_value"))); //不含税金额
|
|
|
-// itemObj.put("XREF1", "");//参考码 9000242
|
|
|
-// String sjItemNo = "";
|
|
|
-// if (x < 10) {
|
|
|
-// sjItemNo += "00" + x;
|
|
|
-// } else if (x < 100) {
|
|
|
-// sjItemNo += "0" + x;
|
|
|
-// } else {
|
|
|
-// sjItemNo += x;
|
|
|
-// }
|
|
|
-// x++;
|
|
|
-// itemObj.put("ZOA_ITEMNO", sjItemNo);//OA单据行号
|
|
|
-// itemObj.put("HKONT", String.valueOf(row.get("textField_mi7c3wl5"))); //会计科目
|
|
|
-// itemObj.put("ZTAXOUT_AMT", "0");//进项税转出金额 、、、 String.valueOf(row.get("numberField_l6bx7hqk_value"))
|
|
|
-// itemObj.put("MWSKZ", "");///税码
|
|
|
-// itemObj.put("ZTAX_AMT", "0"); //税额
|
|
|
-// itemObj.put("SGTXT", String.valueOf(row.get("textField_mi7c3wkn"))); //行项目文本
|
|
|
-// itemArray.put(itemObj);
|
|
|
-// }
|
|
|
-//
|
|
|
-// }
|
|
|
-// sapJson.put("ITEM", itemArray);
|
|
|
-// } else if (dataForm.get("selectField_mejfoona").equals("100%清预付款")) {
|
|
|
-// String XREF1 = "";
|
|
|
-// String XREF2 = "";
|
|
|
-// /***
|
|
|
-// * 获取参考代码1 2
|
|
|
-// */
|
|
|
-//
|
|
|
-// List<Map<String, Object>> XREFlist = (List<Map<String, Object>>) dataForm.get("tableField_mi8q495e");
|
|
|
-//
|
|
|
-// if (XREFlist != null && !XREFlist.isEmpty()) {
|
|
|
-// if (XREFlist.size() == 1) {
|
|
|
-// Map<String, Object> row = XREFlist.get(0);
|
|
|
-// XREF1 = row.get("textField_mi5kjmwk") != null ? row.get("textField_mi5kjmwk").toString() : "";
|
|
|
-// } else {
|
|
|
-// // 多于一条,按时间戳降序排序
|
|
|
-// XREFlist.sort((a, b) -> {
|
|
|
-// Long timeA = a.get("dateField_mj13wpls") instanceof Number
|
|
|
-// ? ((Number) a.get("dateField_mj13wpls")).longValue()
|
|
|
-// : 0L;
|
|
|
-// Long timeB = b.get("dateField_mj13wpls") instanceof Number
|
|
|
-// ? ((Number) b.get("dateField_mj13wpls")).longValue()
|
|
|
-// : 0L;
|
|
|
-// return Long.compare(timeB, timeA); // 降序:最新在前
|
|
|
-// });
|
|
|
-//
|
|
|
-// // 取前两条
|
|
|
-// XREF1 = XREFlist.get(0).get("textField_mi5kjmwk") != null
|
|
|
-// ? XREFlist.get(0).get("textField_mi5kjmwk").toString() : "";
|
|
|
-// XREF2 = XREFlist.get(1).get("textField_mi5kjmwk") != null
|
|
|
-// ? XREFlist.get(1).get("textField_mi5kjmwk").toString() : "";
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-//
|
|
|
-// sapJson.put("BLART", "Z2");//凭证类型
|
|
|
-// JSONArray itemArray = new JSONArray();
|
|
|
-// int x = 1;//OA单据行号累计用
|
|
|
-// List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_l6ujr47b");
|
|
|
-// if (tableFils != null && tableFils.size() > 0) {
|
|
|
-// for (int n = 0; n < tableFils.size(); n++) {
|
|
|
-// Map<String, Object> row = new HashMap(tableFils.get(n));
|
|
|
-//
|
|
|
-//
|
|
|
-// JSONObject itemObj = new JSONObject();
|
|
|
-// itemObj.put("KOSTL", String.valueOf(row.get("textField_mi5kjmwk"))); //成本中心
|
|
|
-// itemObj.put("DMBTR", String.valueOf(row.get("numberField_l6ujr47g_value"))); //不含税金额
|
|
|
-// itemObj.put("XREF1", XREF1);//参考码1
|
|
|
-// itemObj.put("XREF2", XREF2);//参考码2
|
|
|
-// String sjItemNo = "";
|
|
|
-// if (x < 10) {
|
|
|
-// sjItemNo += "00" + x;
|
|
|
-// } else if (x < 100) {
|
|
|
-// sjItemNo += "0" + x;
|
|
|
-// } else {
|
|
|
-// sjItemNo += x;
|
|
|
-// }
|
|
|
-// x++;
|
|
|
-// itemObj.put("ZOA_ITEMNO", sjItemNo);//OA单据行号
|
|
|
-// itemObj.put("HKONT", String.valueOf(row.get("textField_l6lvt6lj"))); //会计科目
|
|
|
-// itemObj.put("ZTAXOUT_AMT", "0");//进项税转出金额 、、、 String.valueOf(row.get("numberField_l6bx7hqk_value"))
|
|
|
-// itemObj.put("MWSKZ", String.valueOf(row.get("textField_l7a6bzpv")));///税码
|
|
|
-// itemObj.put("ZTAX_AMT", String.valueOf(row.get("numberField_l6vu65fp_value")).equals("") ? "0" : String.valueOf(row.get("numberField_l6vu65fp_value"))); //税额
|
|
|
-// itemObj.put("SGTXT", String.valueOf(row.get("textField_mejfoonz"))); //行项目文本
|
|
|
-//
|
|
|
-//
|
|
|
-// itemArray.put(itemObj);
|
|
|
-// }
|
|
|
-//
|
|
|
-//
|
|
|
-// }
|
|
|
-//
|
|
|
-// sapJson.put("ITEM", itemArray);
|
|
|
-// }
|
|
|
-//
|
|
|
-//
|
|
|
-// /***
|
|
|
-// * 调用接口
|
|
|
-// */
|
|
|
-// System.out.println(sapJson);
|
|
|
-// log.info("发起POST请求:URL={},参数={}", QA_sapUrl + "SAP005", sapJson);
|
|
|
-// String post = HttpUtil.post(QA_sapUrl + "SAP005", null, sapJson.toString(), null);
|
|
|
-// log.info(dataForm.get("textField_mi73dy3n") + "POST反馈={}", post);
|
|
|
-// System.out.println("POST反馈=====" + post);
|
|
|
-// if (!post.equals("")) {
|
|
|
-// JSONArray jsonArray = new JSONArray(post);
|
|
|
-// if (jsonArray.size() > 0) {
|
|
|
-// String voucherNumber = "";
|
|
|
-// try {
|
|
|
-// cn.hutool.json.JSONObject postJsonObject = jsonArray.getJSONObject(0);
|
|
|
-// String E_SYSMSGTYPE = postJsonObject.getStr("E_SYSMSGTYPE");//状态
|
|
|
-// String E_MESSAGE = postJsonObject.getStr("E_MESSAGE");//SAP005 接口 反馈值
|
|
|
-// if (E_SYSMSGTYPE.equals("S")) {
|
|
|
-// String e_belnr = postJsonObject.getStr("E_BELNR");
|
|
|
-// if (e_belnr.contains(";")) {
|
|
|
-// String[] split = e_belnr.split(";");
|
|
|
-// try {
|
|
|
-// e_belnr = split[0];//+ ";";
|
|
|
-// } catch (Exception ex) {
|
|
|
-// e_belnr = ";";
|
|
|
-// }
|
|
|
-//
|
|
|
-// }
|
|
|
-// voucherNumber = e_belnr;
|
|
|
-// String E_GJAHR = postJsonObject.getStr("E_GJAHR");//凭证年度
|
|
|
-// // 执行完加入,把更改表单凭证数据
|
|
|
-// ydClient.operateData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formInstanceId(String.valueOf(InstanceId)).updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_l9nsavm2, textField_mejezfwk, textareaField_mi5kjmxb, selectField_mi72r4s6", E_GJAHR, e_belnr, E_MESSAGE, "成功"))).build(), YDConf.FORM_OPERATION.update);
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * 执行勾选发票
|
|
|
-// */
|
|
|
-// if (dataForm.get("selectField_mejfoona").equals("发票支付")) {
|
|
|
-// FPGX(InstanceId, voucherNumber, (String) dataForm.get("textField_mi73dy3n"));
|
|
|
-// }
|
|
|
-// } else {
|
|
|
-// // 报错写入
|
|
|
-// ydClient.operateData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formInstanceId(String.valueOf(InstanceId)).updateFormDataJson(JSON.toJSONString(UtilMap.map("textareaField_mi5kjmxb, selectField_mi72r4s6", E_MESSAGE, "失败"))).build(), YDConf.FORM_OPERATION.update);
|
|
|
-//
|
|
|
-// }
|
|
|
-//
|
|
|
-//
|
|
|
-// } catch (Exception ex) {
|
|
|
-// }
|
|
|
-// } else {
|
|
|
-//
|
|
|
-//
|
|
|
-// }
|
|
|
-//
|
|
|
-// } else {
|
|
|
-//
|
|
|
-// // 报错写入
|
|
|
-// ydClient.operateData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formInstanceId(String.valueOf(InstanceId)).updateFormDataJson(JSON.toJSONString(UtilMap.map("textareaField_mi5kjmxb, selectField_mi72r4s6", post, "失败"))).build(), YDConf.FORM_OPERATION.update);
|
|
|
-//
|
|
|
-// }
|
|
|
-// } else if (PD.equals("否") && !SAPID.equals("")) {
|
|
|
-// FPGX(InstanceId, SAPID, (String) dataForm.get("textField_mi73dy3n"));
|
|
|
-// }
|
|
|
-//
|
|
|
-//
|
|
|
-// }
|
|
|
+
|
|
|
+ // @Override
|
|
|
+ public void NonPoinsetSAP0005(String type, String InstanceId) {
|
|
|
+ YDParam ydParam = _getYDTokenKPD();
|
|
|
+ ydParam.setFormInstanceId(InstanceId);
|
|
|
+ DDR_New ddr = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id);
|
|
|
+ Map dataForm = ddr.getFormData();
|
|
|
+ // dataForm.put("InstanceId", InstanceId);
|
|
|
+ JSONObject sapJson = new JSONObject();
|
|
|
+ JSONObject upJson = new JSONObject();
|
|
|
+ String PD = (String) dataForm.get("selectField_mj1cq2oz");//是否生成SAP凭证
|
|
|
+ String SAPID = (String) dataForm.get("textField_mejezfwk");//SAP凭证号码
|
|
|
+ String SFXCFK = (String) dataForm.get("radioField_mj1gc7qe");//仅携程付款是否
|
|
|
+/**
|
|
|
+ * 是否需要生成SAP凭证
|
|
|
+ */
|
|
|
+ if ( ("否".equals(PD) && !SAPID.equals("") )|| "是".equals(SFXCFK) ) {
|
|
|
+ FPGX(InstanceId, SAPID, (String) dataForm.get("textField_mi73dy3n"));
|
|
|
+ } else if (!"否".equals(PD)) {
|
|
|
+ // 添加顶级键值对
|
|
|
+ sapJson.put("ZDUEDATE", CusutUtil.getFormatDate((Long) dataForm.get("dateField_mejfoonv"))); //Due date / 到期日
|
|
|
+ sapJson.put("BKTXT", dataForm.get("textareaField_mejfoonw"));//备注 抬头文本
|
|
|
+ sapJson.put("ZOA_NUMBER", dataForm.get("textField_mi73dy3n")); //钉钉单据号
|
|
|
+ if (dataForm.get("selectField_mejfoona").equals("收据支付")) {//☑ 票据支付时 代码ZINVOICE_AMT 默认ZPAY_AMT的值
|
|
|
+ sapJson.put("ZINVOICE_AMT", dataForm.get("numberField_mejfoool_value").equals("") ? "0" : dataForm.get("numberField_mejfoool_value"));//支付金额
|
|
|
+ } else {
|
|
|
+ sapJson.put("ZINVOICE_AMT", dataForm.get("numberField_mejfoook_value").equals("") ? "0" : dataForm.get("numberField_mejfoook_value"));//发票总额
|
|
|
+ }
|
|
|
+
|
|
|
+ sapJson.put("BANKA", dataForm.get("textField_mejfoon9")); //开户行
|
|
|
+ sapJson.put("BLDAT", CusutUtil.getFormatDate((Long) dataForm.get("dateField_l9nsavm3"))); //凭证日期ƒ Date / 申请日期
|
|
|
+ String uid = "TEST-CN001";
|
|
|
+ String uname = "";
|
|
|
+ if (!dataForm.get("employeeField_mhxdzya9_id").equals("")) {
|
|
|
+
|
|
|
+ List<Map<String, Object>> conditions = new ArrayList<>(Arrays.asList(buildCondition("textField_l6dddg5k", dataForm.get("employeeField_mhxdzya9_id"), "TEXT", "eq", "TextField")));
|
|
|
+ String listJson = JSON.toJSONString(conditions);
|
|
|
+ YDParam YGydParam = _getYDTokenZXXZ(listJson);
|
|
|
+ List<Map> dataList = (List<Map>) ydClient.queryData(YGydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
|
|
|
+ if (dataList != null && dataList.size() > 0) {
|
|
|
+ Map map = dataList.get(0);
|
|
|
+ Map formData = (Map) map.get("formData");
|
|
|
+ uid = formData.get("textField_l6djch1m").toString();
|
|
|
+ uid = "CHN-0" + uid;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // uid = "CHN-01000332";//测试过账人
|
|
|
+ sapJson.put("USNAM", uid); //过账人
|
|
|
+ sapJson.put("BUDAT", CusutUtil.getFormatDate((Long) dataForm.get("dateField_mhxdzyaa"))); //过账日期
|
|
|
+ sapJson.put("ZOA_TYPE", dataForm.get("selectField_mejfoona").equals("无票预付") || dataForm.get("selectField_mejfoona").equals("100%清预付款") ? "AD" : "NP");//OA单据类型
|
|
|
+ sapJson.put("ZPAY_AMT", dataForm.get("numberField_mejfoool_value").equals("") ? "0" : dataForm.get("numberField_mejfoool_value")); //支付金额
|
|
|
+ sapJson.put("BUKRS", dataForm.get("textField_mejfj9iw"));//公司代码
|
|
|
+ sapJson.put("BANKN", dataForm.get("textField_mejfoon8")); //银行账号
|
|
|
+ sapJson.put("WAERS", dataForm.get("selectField_mejfoong")); //币种
|
|
|
+ sapJson.put("KOINH", dataForm.get("textField_mejezfwl")); //收款方名称
|
|
|
+ sapJson.put("LIFNR", dataForm.get("textField_mejezfwv"));//供应商代码
|
|
|
+ sapJson.put("interface_id", "SAP005");
|
|
|
+ //获取子表
|
|
|
+ if (dataForm.get("selectField_mejfoona").equals("发票支付")) {
|
|
|
+ sapJson.put("BLART", "Z2");//凭证类型
|
|
|
+ JSONArray itemArray = new JSONArray();
|
|
|
+ int x = 1;//OA单据行号累计用
|
|
|
+ List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_l6ujr47b");
|
|
|
+ if (tableFils != null && tableFils.size() > 0) {
|
|
|
+ for (int n = 0; n < tableFils.size(); n++) {
|
|
|
+ Map<String, Object> row = new HashMap(tableFils.get(n));
|
|
|
+
|
|
|
+
|
|
|
+ JSONObject itemObj = new JSONObject();
|
|
|
+ itemObj.put("KOSTL", String.valueOf(row.get("textField_mi5kjmwk"))); //成本中心
|
|
|
+ itemObj.put("DMBTR", String.valueOf(row.get("numberField_l6ujr47g_value"))); //不含税金额
|
|
|
+ itemObj.put("XREF1", "");//参考码 9000242
|
|
|
+
|
|
|
+ String sjItemNo = "";
|
|
|
+ if (x < 10) {
|
|
|
+ sjItemNo += "00" + x;
|
|
|
+ } else if (x < 100) {
|
|
|
+ sjItemNo += "0" + x;
|
|
|
+ } else {
|
|
|
+ sjItemNo += x;
|
|
|
+ }
|
|
|
+ x++;
|
|
|
+ itemObj.put("ZOA_ITEMNO", sjItemNo);//OA单据行号
|
|
|
+ itemObj.put("HKONT", String.valueOf(row.get("textField_l6lvt6lj"))); //会计科目
|
|
|
+ itemObj.put("ZTAXOUT_AMT", "0");//进项税转出金额 、、、 String.valueOf(row.get("numberField_l6bx7hqk_value"))
|
|
|
+ itemObj.put("MWSKZ", String.valueOf(row.get("textField_l7a6bzpv")));///税码
|
|
|
+ itemObj.put("ZTAX_AMT", String.valueOf(row.get("numberField_l6vu65fp_value")).equals("") ? "0" : String.valueOf(row.get("numberField_l6vu65fp_value"))); //税额
|
|
|
+ itemObj.put("SGTXT", String.valueOf(row.get("textField_mejfoonz"))); //行项目文本
|
|
|
+
|
|
|
+
|
|
|
+ itemArray.put(itemObj);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ sapJson.put("ITEM", itemArray);
|
|
|
+ } else if (dataForm.get("selectField_mejfoona").equals("无票预付")) {
|
|
|
+
|
|
|
+ sapJson.put("BLART", "Z4");//凭证类型
|
|
|
+ sapJson.put("UMSKZ", "A");//特别总账标识
|
|
|
+ JSONArray SapItem = new JSONArray(); //子表
|
|
|
+ JSONObject itemObject = new JSONObject();
|
|
|
+ itemObject.put("ZOA_ITEMNO", "001"); //OA单据行号
|
|
|
+ itemObject.put("HKONT", ""); //会计科目
|
|
|
+ itemObject.put("KOSTL", ""); //成本中心
|
|
|
+ BigDecimal bigBhsje = new BigDecimal(dataForm.get("numberField_mejfoool_value").toString());//改大数
|
|
|
+ bigBhsje = bigBhsje.setScale(2, RoundingMode.HALF_UP);
|
|
|
+ itemObject.put("DMBTR", bigBhsje); //不含税金额
|
|
|
+
|
|
|
+// itemObject.put("DMBTR", object.get("numberField_l6bwb4hg").toString()); //不含税金额--支付金额
|
|
|
+ itemObject.put("MWSKZ", ""); //税码
|
|
|
+ itemObject.put("ZTAX_AMT", "0"); //税额
|
|
|
+ itemObject.put("ZTAXOUT_AMT", "0"); //进项税转出金额
|
|
|
+ itemObject.put("SGTXT", ""); //行项目文本
|
|
|
+ itemObject.put("XREF1", dataForm.get("textareaField_mejfoonw")); //cir项目号
|
|
|
+
|
|
|
+ SapItem.put(itemObject);
|
|
|
+ sapJson.put("ITEM", SapItem);
|
|
|
+ } else if (dataForm.get("selectField_mejfoona").equals("收据支付")) {
|
|
|
+
|
|
|
+ sapJson.put("BLART", "Z2");//凭证类型
|
|
|
+ JSONArray itemArray = new JSONArray();
|
|
|
+ int x = 1;//OA单据行号累计用
|
|
|
+ List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_mi7c3wl9");
|
|
|
+ if (tableFils != null && tableFils.size() > 0) {
|
|
|
+ for (int n = 0; n < tableFils.size(); n++) {
|
|
|
+ Map<String, Object> row = new HashMap(tableFils.get(n));
|
|
|
+ JSONObject itemObj = new JSONObject();
|
|
|
+ itemObj.put("KOSTL", String.valueOf(row.get("textField_mi7c3wku"))); //成本中心
|
|
|
+ itemObj.put("DMBTR", String.valueOf(row.get("numberField_mi7c3wky_value"))); //不含税金额
|
|
|
+ itemObj.put("XREF1", "");//参考码 9000242
|
|
|
+ String sjItemNo = "";
|
|
|
+ if (x < 10) {
|
|
|
+ sjItemNo += "00" + x;
|
|
|
+ } else if (x < 100) {
|
|
|
+ sjItemNo += "0" + x;
|
|
|
+ } else {
|
|
|
+ sjItemNo += x;
|
|
|
+ }
|
|
|
+ x++;
|
|
|
+ itemObj.put("ZOA_ITEMNO", sjItemNo);//OA单据行号
|
|
|
+ itemObj.put("HKONT", String.valueOf(row.get("textField_mi7c3wl5"))); //会计科目
|
|
|
+ itemObj.put("ZTAXOUT_AMT", "0");//进项税转出金额 、、、 String.valueOf(row.get("numberField_l6bx7hqk_value"))
|
|
|
+ itemObj.put("MWSKZ", "");///税码
|
|
|
+ itemObj.put("ZTAX_AMT", "0"); //税额
|
|
|
+ itemObj.put("SGTXT", String.valueOf(row.get("textField_mi7c3wkn"))); //行项目文本
|
|
|
+ itemArray.put(itemObj);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ sapJson.put("ITEM", itemArray);
|
|
|
+ } else if (dataForm.get("selectField_mejfoona").equals("100%清预付款")) {
|
|
|
+ String XREF1 = "";
|
|
|
+ String XREF2 = "";
|
|
|
+ /***
|
|
|
+ * 获取参考代码1 2
|
|
|
+ */
|
|
|
+
|
|
|
+ List<Map<String, Object>> XREFlist = (List<Map<String, Object>>) dataForm.get("tableField_mi8q495e");
|
|
|
+
|
|
|
+ if (XREFlist != null && !XREFlist.isEmpty()) {
|
|
|
+ if (XREFlist.size() == 1) {
|
|
|
+ Map<String, Object> row = XREFlist.get(0);
|
|
|
+ XREF1 = row.get("textField_mi5kjmwk") != null ? row.get("textField_mi5kjmwk").toString() : "";
|
|
|
+ } else {
|
|
|
+ // 多于一条,按时间戳降序排序
|
|
|
+ XREFlist.sort((a, b) -> {
|
|
|
+ Long timeA = a.get("dateField_mj13wpls") instanceof Number
|
|
|
+ ? ((Number) a.get("dateField_mj13wpls")).longValue()
|
|
|
+ : 0L;
|
|
|
+ Long timeB = b.get("dateField_mj13wpls") instanceof Number
|
|
|
+ ? ((Number) b.get("dateField_mj13wpls")).longValue()
|
|
|
+ : 0L;
|
|
|
+ return Long.compare(timeB, timeA); // 降序:最新在前
|
|
|
+ });
|
|
|
+
|
|
|
+ // 取前两条
|
|
|
+ XREF1 = XREFlist.get(0).get("textField_mi8q495f") != null
|
|
|
+ ? XREFlist.get(0).get("textField_mi8q495f").toString() : "";
|
|
|
+ XREF2 = XREFlist.get(1).get("textField_mi8q495f") != null
|
|
|
+ ? XREFlist.get(1).get("textField_mi8q495f").toString() : "";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ sapJson.put("BLART", "Z2");//凭证类型
|
|
|
+ JSONArray itemArray = new JSONArray();
|
|
|
+ int x = 1;//OA单据行号累计用
|
|
|
+ List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_l6ujr47b");
|
|
|
+ if (tableFils != null && tableFils.size() > 0) {
|
|
|
+ for (int n = 0; n < tableFils.size(); n++) {
|
|
|
+ Map<String, Object> row = new HashMap(tableFils.get(n));
|
|
|
+
|
|
|
+
|
|
|
+ JSONObject itemObj = new JSONObject();
|
|
|
+ itemObj.put("KOSTL", String.valueOf(row.get("textField_mi5kjmwk"))); //成本中心
|
|
|
+ itemObj.put("DMBTR", String.valueOf(row.get("numberField_l6ujr47g_value"))); //不含税金额
|
|
|
+ itemObj.put("XREF1", XREF1);//参考码1
|
|
|
+ itemObj.put("XREF2", XREF2);//参考码2
|
|
|
+ String sjItemNo = "";
|
|
|
+ if (x < 10) {
|
|
|
+ sjItemNo += "00" + x;
|
|
|
+ } else if (x < 100) {
|
|
|
+ sjItemNo += "0" + x;
|
|
|
+ } else {
|
|
|
+ sjItemNo += x;
|
|
|
+ }
|
|
|
+ x++;
|
|
|
+ itemObj.put("ZOA_ITEMNO", sjItemNo);//OA单据行号
|
|
|
+ itemObj.put("HKONT", String.valueOf(row.get("textField_l6lvt6lj"))); //会计科目
|
|
|
+ itemObj.put("ZTAXOUT_AMT", "0");//进项税转出金额 、、、 String.valueOf(row.get("numberField_l6bx7hqk_value"))
|
|
|
+ itemObj.put("MWSKZ", String.valueOf(row.get("textField_l7a6bzpv")));///税码
|
|
|
+ itemObj.put("ZTAX_AMT", String.valueOf(row.get("numberField_l6vu65fp_value")).equals("") ? "0" : String.valueOf(row.get("numberField_l6vu65fp_value"))); //税额
|
|
|
+ itemObj.put("SGTXT", String.valueOf(row.get("textField_mejfoonz"))); //行项目文本
|
|
|
+
|
|
|
+
|
|
|
+ itemArray.put(itemObj);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ sapJson.put("ITEM", itemArray);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /***
|
|
|
+ * 调用接口
|
|
|
+ */
|
|
|
+ System.out.println(sapJson);
|
|
|
+ log.info("发起POST请求:URL={},参数={}", QA_sapUrl + "SAP005", sapJson);
|
|
|
+ String post = HttpUtil.post(QA_sapUrl + "SAP005", null, sapJson.toString(), null);
|
|
|
+ log.info(dataForm.get("textField_mi73dy3n") + "POST反馈={}", post);
|
|
|
+ System.out.println("POST反馈=====" + post);
|
|
|
+ if (!post.equals("")) {
|
|
|
+ JSONArray jsonArray = new JSONArray(post);
|
|
|
+ if (jsonArray.size() > 0) {
|
|
|
+ String voucherNumber = "";
|
|
|
+ try {
|
|
|
+ cn.hutool.json.JSONObject postJsonObject = jsonArray.getJSONObject(0);
|
|
|
+ String E_SYSMSGTYPE = postJsonObject.getStr("E_SYSMSGTYPE");//状态
|
|
|
+ String E_MESSAGE = postJsonObject.getStr("E_MESSAGE");//SAP005 接口 反馈值
|
|
|
+ if (E_SYSMSGTYPE.equals("S")) {
|
|
|
+ String e_belnr = postJsonObject.getStr("E_BELNR");
|
|
|
+ if (e_belnr.contains(";")) {
|
|
|
+ String[] split = e_belnr.split(";");
|
|
|
+ try {
|
|
|
+ e_belnr = split[0];//+ ";";
|
|
|
+ } catch (Exception ex) {
|
|
|
+ e_belnr = ";";
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ voucherNumber = e_belnr;
|
|
|
+ String E_GJAHR = postJsonObject.getStr("E_GJAHR");//凭证年度
|
|
|
+ // 执行完加入,把更改表单凭证数据
|
|
|
+ ydClient.operateData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formInstanceId(String.valueOf(InstanceId)).updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_l9nsavm2, textField_mejezfwk, textareaField_mi5kjmxb, selectField_mi72r4s6", E_GJAHR, e_belnr, E_MESSAGE, "成功"))).build(), YDConf.FORM_OPERATION.update);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 执行勾选发票
|
|
|
+ */
|
|
|
+ if (dataForm.get("selectField_mejfoona").equals("发票支付")) {
|
|
|
+ FPGX(InstanceId, voucherNumber, (String) dataForm.get("textField_mi73dy3n"));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 报错写入
|
|
|
+ ydClient.operateData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formInstanceId(String.valueOf(InstanceId)).updateFormDataJson(JSON.toJSONString(UtilMap.map("textareaField_mi5kjmxb, selectField_mi72r4s6", E_MESSAGE, "失败"))).build(), YDConf.FORM_OPERATION.update);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ } catch (Exception ex) {
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ // 报错写入
|
|
|
+ ydClient.operateData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formInstanceId(String.valueOf(InstanceId)).updateFormDataJson(JSON.toJSONString(UtilMap.map("textareaField_mi5kjmxb, selectField_mi72r4s6", post, "失败"))).build(), YDConf.FORM_OPERATION.update);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
/***
|
|
|
* 发票勾选处理
|