Kaynağa Gözat

NPO问题处理

chenkang11 15 saat önce
ebeveyn
işleme
e21def9453

+ 395 - 394
mjava-ts/src/main/java/com/malk/taisen/service/impl/NonPoServerImpl.java

@@ -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);
+
+            }
+        }
+
+
+    }
 
     /***
      * 发票勾选处理