sap应收未清优化
This commit is contained in:
		
							parent
							
								
									c094710ceb
								
							
						
					
					
						commit
						ab05e6bae9
					
				|  | @ -15,12 +15,11 @@ import kd.bos.form.plugin.AbstractFormPlugin; | |||
| import kd.bos.logging.Log; | ||||
| import kd.bos.logging.LogFactory; | ||||
| import kd.sdk.plugin.Plugin; | ||||
| import shjh.jhzj7.fi.fi.utils.ApiUtils; | ||||
| import shjh.jhzj7.fi.fi.utils.EsbUtils; | ||||
| import shjh.jhzj7.fi.fi.utils.SapUtils; | ||||
| 
 | ||||
| import java.text.SimpleDateFormat; | ||||
| import java.util.Date; | ||||
| import java.util.EventObject; | ||||
| import java.util.HashMap; | ||||
| 
 | ||||
| /** | ||||
|  * 动态表单插件-【SAP应收未清】 shjh_sapyswq | ||||
|  | @ -29,8 +28,7 @@ import java.util.HashMap; | |||
| public class ASParbillFormPlugin extends AbstractFormPlugin implements Plugin { | ||||
| 
 | ||||
|     private final static Log logger = LogFactory.getLog(ASParbillFormPlugin.class); | ||||
|     private final static String entryID = "shjh_details";//分录标识 | ||||
|     private final static String apiurl = "shjh_details";//接口地址 | ||||
|     private final static String entryID = "shjh_entryentity";//分录标识 | ||||
|     private static final String QUERY_BUTTON_KEY = "shjh_btnquery";//查询按钮 | ||||
|     private static final String SELECTED_BUTTON_KEY = "shjh_btnok";//确认勾选按钮 | ||||
|     private static final String RESET_BUTTON_KEY = "shjh_btnreset";//重置按钮 | ||||
|  | @ -64,6 +62,8 @@ public class ASParbillFormPlugin extends AbstractFormPlugin implements Plugin { | |||
|         if("clearBillForm".equals(showParam.getCustomParam("Apikey"))){ | ||||
|             this.getView().setVisible(false, SELECTED_BUTTON_KEY); | ||||
|         } | ||||
|         this.getModel().setValue("shjh_org",((JSONObject)showParam.getCustomParam("billorg")).getLong("id"));//公司从父页面带过来 | ||||
|         this.getModel().setValue("shjh_customer",((JSONObject)showParam.getCustomParam("billcustomer")).getLong("id"));//客户从父页面带过来 | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -84,33 +84,31 @@ public class ASParbillFormPlugin extends AbstractFormPlugin implements Plugin { | |||
|             String key = source.getKey(); | ||||
|             if (StringUtils.equals(QUERY_BUTTON_KEY, key)) { | ||||
|                 // 校验和获取过滤条件 | ||||
|                 DynamicObject org = (DynamicObject) this.getModel().getValue("shjh_orgfield"); | ||||
|                 DynamicObject customer = (DynamicObject) this.getModel().getValue("shjh_customer"); | ||||
|                 if (customer == null) { | ||||
|                     this.getView().showMessage("请选择一个客户!"); | ||||
|                     return; | ||||
|                 } | ||||
|                 String customerCode = customer.getString("number"); | ||||
|                 DynamicObject org = (DynamicObject) this.getModel().getValue("shjh_org"); | ||||
|                 if (org == null) { | ||||
|                     this.getView().showMessage("请选择公司!"); | ||||
|                     this.getView().showMessage("请选择一个公司!"); | ||||
|                     return; | ||||
|                 } | ||||
| 
 | ||||
|                 Date startDate = (Date) this.getModel().getValue("shjh_startdate"); | ||||
|                 if (startDate == null) { | ||||
|                     this.getView().showMessage("请选择开始日期!"); | ||||
|                     return; | ||||
|                 } | ||||
| 
 | ||||
|                 Date endDate = (Date) this.getModel().getValue("shjh_enddate"); | ||||
|                 if (endDate == null) { | ||||
|                     this.getView().showMessage("请选择结束日期!"); | ||||
|                     return; | ||||
|                 } | ||||
| 
 | ||||
|                 String companyCode = org.getString("number"); | ||||
|                 String orgrCode = org.getString("number"); | ||||
|                 // 点击查询按钮 | ||||
|                 handleQueryButtonClick(companyCode, startDate, endDate); | ||||
|                 handleQueryButtonClick(orgrCode,customerCode); | ||||
|             } else if (StringUtils.equals(SELECTED_BUTTON_KEY, key)) { | ||||
|                 // 点击选择按钮 | ||||
|                 handleSelectedButton(); | ||||
|             } else if (StringUtils.equals(RESET_BUTTON_KEY, key)) { | ||||
|                 // 点击重置按钮 | ||||
|                 this.getModel().setValue("shjh_textfield",null); | ||||
|                 this.getModel().setValue("shjh_pzh",null);//SAP应收凭证号 | ||||
|                 this.getModel().setValue("shjh_kmbh",null);//总账科目编号 | ||||
|                 this.getModel().setValue("shjh_fph",null);//发票号 | ||||
|                 this.getModel().setValue("shjh_year",null);//会计年度 | ||||
|                 this.getModel().setValue("shjh_gzrq_startdate",null);//SAP应收凭过账日期 | ||||
|                 this.getModel().setValue("shjh_gzrq_enddate",null);//SAP应收凭过账日期 | ||||
|             } | ||||
|         } catch (Exception e) { | ||||
|             logger.error("按钮处理异常:"+e.getMessage()); | ||||
|  | @ -118,144 +116,124 @@ public class ASParbillFormPlugin extends AbstractFormPlugin implements Plugin { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     // 添加过滤条件到IT_LIST的方法 | ||||
|     public void addFilterCondition(JSONArray IT_LIST, String field, String low, String high) { | ||||
|         JSONObject jsonObject = new JSONObject(); | ||||
|         jsonObject.put("FIELD", field); // 字段 | ||||
|         jsonObject.put("SIGN", "I"); // I:包含 E:排除 | ||||
|         jsonObject.put("LOW", low); // LOW ,枚举字段所代表值的区间开始值 | ||||
|         jsonObject.put("HIGH", high); // HIGH,枚举字段所代表值的区间结束值 | ||||
|         jsonObject.put("OPTION", "BT"); // 默认BT | ||||
|         IT_LIST.add(jsonObject); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 点击查询按钮 | ||||
|      * @param companyCode 公司编码 | ||||
|      * @param startDate   开始日期 | ||||
|      * @param endDate     结束日期 | ||||
|      * @param customerCode   客户编码 | ||||
|      */ | ||||
|     private void handleQueryButtonClick(String companyCode, Date startDate, Date endDate) { | ||||
|     private void handleQueryButtonClick(String companyCode, String customerCode) { | ||||
|         try { | ||||
|             FormShowParameter showParameter = this.getView().getFormShowParameter(); | ||||
|             String apiKey = showParameter.getCustomParam("Apikey"); | ||||
|             String billNumber = showParameter.getCustomParam("billNumber"); | ||||
|             //组装入参,调用SAP接口,处理返回值 | ||||
|             handleSAPApi(companyCode, startDate, endDate, billNumber); | ||||
|             this.getView().updateView(entryID); | ||||
|             //组装查询入参 日期格式 | ||||
|             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | ||||
|             String shjh_pzh = (String) this.getModel().getValue("shjh_pzh");//SAP应收凭证号 | ||||
|             String shjh_kmbh = (String) this.getModel().getValue("shjh_kmbh");//会计科目编号 | ||||
|             String shjh_year = (String) this.getModel().getValue("shjh_year");//会计年度 | ||||
|             Date postingdate_start = (Date) this.getModel().getValue("shjh_gzrq_startdate");//SAP应收凭过账日期(开始) | ||||
|             Date postingdate_endda = (Date) this.getModel().getValue("shjh_gzrq_enddate");//SAP应收凭过账日期(结束) | ||||
|             JSONArray IT_LIST = new JSONArray(); | ||||
|             // 添加公司过滤条件 | ||||
|             addFilterCondition(IT_LIST, "BUKRS", companyCode, companyCode); | ||||
|             // 添加客户过滤条件 | ||||
|             addFilterCondition(IT_LIST, "KUNNR", customerCode, customerCode); | ||||
|             // 添加SAP应收凭证号过滤条件 | ||||
|             if (StringUtils.isNotEmpty(shjh_pzh)) { | ||||
|                 addFilterCondition(IT_LIST, "BELNR", shjh_pzh, shjh_pzh); | ||||
|             } | ||||
|             // 添加会计科目编号过滤条件 | ||||
|             if (StringUtils.isNotEmpty(shjh_kmbh)) { | ||||
|                 addFilterCondition(IT_LIST, "HKONT", shjh_kmbh, shjh_kmbh); | ||||
|             } | ||||
|             // 会计年度 | ||||
|             if (StringUtils.isNotEmpty(shjh_year)) { | ||||
|                 addFilterCondition(IT_LIST, "GJAHR", shjh_year, shjh_year); | ||||
|             } | ||||
|             // 添加SAP应收凭过账日期过滤条件 | ||||
|             if (postingdate_start != null || postingdate_endda != null) { | ||||
|                 String postingdate_starts = postingdate_start == null ? "" : sdf.format(postingdate_start); | ||||
|                 String postingdate_enddas = postingdate_endda == null ? "" : sdf.format(postingdate_endda); | ||||
|                 addFilterCondition(IT_LIST, "BUDAT", postingdate_starts, postingdate_enddas); | ||||
|             } | ||||
|             JSONObject sapReturnData = SapUtils.sapArAPI(IT_LIST,billNumber); | ||||
|             //sap返回的结果不为空且正确,执行分录插入数据 | ||||
|             if(sapReturnData != null && parseResponse(sapReturnData)){ | ||||
|                 JSONObject data = sapReturnData.getJSONObject("data"); | ||||
|                 JSONArray rows = data.getJSONArray("IT_ITEMS"); | ||||
|                 DynamicObjectCollection entry = this.getModel().getEntryEntity(entryID); | ||||
|                 entry.clear(); | ||||
|                 JSONObject detail; | ||||
|                 for (int i = 0; i < rows.size(); i++) { | ||||
|                     detail = (JSONObject) rows.get(i); | ||||
|                     entry.addNew(); | ||||
|                     setEntityRowValues(detail, i); | ||||
|                 } | ||||
|                 this.getView().updateView(entryID); | ||||
|             } | ||||
| 
 | ||||
|         } catch (Exception e) { | ||||
|             logger.error("查询操作失败: " + e.getMessage()); | ||||
|             this.getView().showMessage("查询操作失败"+e.getMessage()); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 调用SAP接口 | ||||
|      * @param companyCode 公司编码 | ||||
|      * @param startDate   开始日期 | ||||
|      * @param endDate     结束日期 | ||||
|      * @param billNumber  本单单号:日志记录用 | ||||
|      */ | ||||
|     private void handleSAPApi(String companyCode, Date startDate, Date endDate, String billNumber) { | ||||
|         try { | ||||
|             DynamicObject supplier = (DynamicObject) this.getModel().getValue("shjh_supplier"); | ||||
|             if (supplier == null) { | ||||
|                 this.getView().showMessage("请选择供应商!"); | ||||
|                 return; | ||||
|             } | ||||
|             String supplierCode = supplier.getString("number"); | ||||
|             String interfaceID="FMGetJahYFKList"; | ||||
|             HashMap<String, String> head = ApiUtils.buildHead(interfaceID); | ||||
|             HashMap<String, Object> body = ApiUtils.buildBody(companyCode, null, startDate, endDate); | ||||
|             HashMap<String, Object> data = (HashMap<String, Object>) body.get("data"); | ||||
| 
 | ||||
|             // 添加额外的参数 | ||||
|             data.put("SupplierCode", supplierCode); | ||||
|             data.put("IsWriteOffDetail", true); | ||||
| 
 | ||||
|             String response = ApiUtils.sendPost(head, body, apiurl); | ||||
|             if (response != null) { | ||||
|                 Boolean result = parseResponse(response, billNumber, String.valueOf(body), "预付款单清单查询接口"); | ||||
|                 if (result) { | ||||
|                     handleAspApiResponse(response); | ||||
|                 } | ||||
|             } | ||||
|         } catch (Exception e) { | ||||
|             logger.error("处理SAP应收未清接口时发生错误: "+e.getMessage()); | ||||
|             this.getView().showMessage("处理SAP应收未清接口时发生错误!"+e.getMessage()); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 日志记录 | ||||
|      * @param response 响应参数 | ||||
|      * @param billNumber 本单单号 | ||||
|      * @param body 请求体 | ||||
|      * @param apiName 接口名 | ||||
|      */ | ||||
|     private Boolean parseResponse(String response, String billNumber, String body, String apiName) { | ||||
|         JSONObject result = JSONObject.parseObject(response); | ||||
|     private boolean parseResponse(JSONObject result) { | ||||
|         boolean success = false; | ||||
|         if (null != result) { | ||||
|             String code = result.getString("code"); | ||||
|             switch (code) { | ||||
|                 case "0": | ||||
|                     success = true; | ||||
|                     EsbUtils.saveLog(billNumber, apiName, body, response, true, "ESBQueryApi", "查询成功"); | ||||
|                     break; | ||||
|                 case "1": | ||||
|                     this.getView().showMessage("服务异常"); | ||||
|                     EsbUtils.saveLog(billNumber, apiName, body, response, false, "ESBQueryApi", "服务异常"); | ||||
|                     break; | ||||
|                 case "2": | ||||
|                     this.getView().showMessage("三方服务异常"); | ||||
|                     EsbUtils.saveLog(billNumber, apiName, body, response, false, "ESBQueryApi", "三方服务异常"); | ||||
|                     break; | ||||
|                 case "3": | ||||
|                     this.getView().showMessage("业务异常"); | ||||
|                     EsbUtils.saveLog(billNumber, apiName, body, response, false, "ESBQueryApi", "业务异常"); | ||||
|                     break; | ||||
|                 default: | ||||
|                     this.getView().showMessage("未知异常"); | ||||
|                     EsbUtils.saveLog(billNumber, apiName, body, response, false, "ESBQueryApi", "未知异常"); | ||||
|                     break; | ||||
|             } | ||||
|         String code = result.getString("code"); | ||||
|         String msg = result.getString("msg"); | ||||
|         switch (code) { | ||||
|             case "0": | ||||
|                 success = true; | ||||
|                 break; | ||||
|             case "1": | ||||
|                 this.getView().showMessage("服务异常:"+msg); | ||||
|                 break; | ||||
|             case "2": | ||||
|                 this.getView().showMessage("三方服务异常:"+msg); | ||||
|                 break; | ||||
|             case "3": | ||||
|                 this.getView().showMessage("业务异常:"+msg); | ||||
|                 break; | ||||
|             default: | ||||
|                 this.getView().showMessage("未知异常:"+msg); | ||||
|                 break; | ||||
|         } | ||||
|         return success; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * sap接口数据解析 | ||||
|      * @param response 响应参数 | ||||
|      * 应收未清分录赋值 | ||||
|      * @param detail sap接口返回json分录参数 | ||||
|      * @param i 分录行号 | ||||
|      */ | ||||
|     private void handleAspApiResponse(String response) { | ||||
|     private void setEntityRowValues(JSONObject detail, int i) { | ||||
|         //TODO 与sap沟通确认字段对应 | ||||
|         try { | ||||
|             JSONObject root = JSONObject.parseObject(response); | ||||
|             JSONObject data = root.getJSONObject("data"); | ||||
|             JSONArray rows = data.getJSONArray("rows"); | ||||
|             DynamicObjectCollection entry = this.getModel().getEntryEntity(entryID); | ||||
|             entry.clear(); | ||||
|             for (int i = 0; i < rows.size(); i++) { | ||||
|                 JSONObject top = (JSONObject) rows.get(i); | ||||
|                 JSONArray loanDetailInfo = top.getJSONArray("LoanDetailInfo"); | ||||
|                 JSONObject detail = (JSONObject) loanDetailInfo.get(0); | ||||
|                 entry.addNew(); | ||||
|                 setPaymentApiValues(top, detail, i); | ||||
|             } | ||||
|         } catch (Exception e) { | ||||
|             logger.error("SAP应收未清数据解析异常: " + e.getMessage()); | ||||
|             this.getView().showMessage("SAP应收未清数据解析异常!"+e.getMessage()); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 预付单赋值 | ||||
|      * | ||||
|      * @param top    json头参数 | ||||
|      * @param detail json分录参数 | ||||
|      * @param i | ||||
|      */ | ||||
|     private void setPaymentApiValues(JSONObject top, JSONObject detail, int i) { | ||||
|         try { | ||||
|             this.getModel().setValue("shjh_billno", top.getString("CompanyCode"), i); | ||||
|             this.getModel().setValue("shjh_prepaymentnum", top.getString("RequestCode"), i); | ||||
|             this.getModel().setValue("shjh_purchasenum", detail.getString("PoOrderNo"), i); | ||||
|             this.getModel().setValue("shjh_purchaselinenum", detail.getString("PoOrderColNo"), i); | ||||
|             this.getModel().setValue("shjh_billsubject", detail.getString("RequestName"), i); | ||||
|             this.getModel().setValue("shjh_prepaymentdate", detail.getDate("CreatedDate"), i); | ||||
|             this.getModel().setValue("shjh_paymentamount", top.getBigDecimal("RequestAmt"), i); | ||||
|             this.getModel().setValue("shjh_documentamount", top.getBigDecimal("AvailableAmt"), i); | ||||
|             this.getModel().setValue("shjh_verificationnum", top.getString("StrColumn20"), i); | ||||
|             this.getModel().setValue("shjh_fiscalyear", top.getString("GLDate").substring(0, 4), i); | ||||
|             this.getModel().setValue("shjh_e_pzh",detail.getString("BELNR"), i);//凭证号 | ||||
|             this.getModel().setValue("shjh_e_pzlx",detail.getString("BLART"), i);//凭证类型 | ||||
|             this.getModel().setValue("shjh_e_pzhh",detail.getString("BUZEI"), i);//凭证行项目号 | ||||
|             this.getModel().setValue("shjh_e_fph",detail.getString("XREF1"), i);//发票号 | ||||
| //            this.getModel().setValue("shjh_e_fpdate",detail.getDate(""), i);//发票日期 | ||||
|             this.getModel().setValue("shjh_e_account",detail.getString("HKONT"), i);// 总账科目 | ||||
| //            this.getModel().setValue("shjh_e_fenpei",detail.getString(""), i);// 分配 | ||||
|             this.getModel().setValue("shjh_e_canzhao",detail.getString("AWKEY"), i);// 参照 | ||||
|             this.getModel().setValue("shjh_e_ckdm1",detail.getString("XREF2"), i);//参考代码1 | ||||
|             this.getModel().setValue("shjh_e_ckdm2",detail.getString("XREF3"), i);// 参考代码2 | ||||
| //            this.getModel().setValue("shjh_e_text",detail.getString(""), i);// 文本 | ||||
|             this.getModel().setValue("shjh_e_gzdate",detail.getDate("BUDAT"), i);// 过账日期 | ||||
|             this.getModel().setValue("shjh_e_unsettle",detail.getBigDecimal("DMBTR"), i);//未核销金额 | ||||
|             this.getModel().setValue("shjh_e_year",detail.getString("GJAHR"), i);//会计年度 | ||||
|         } catch (Exception e) { | ||||
|             logger.error("分录赋值异常: " + e.getMessage()); | ||||
|             this.getView().showMessage("分录赋值异常!"+e.getMessage()); | ||||
|  | @ -267,19 +245,20 @@ public class ASParbillFormPlugin extends AbstractFormPlugin implements Plugin { | |||
|      */ | ||||
|     private void handleSelectedButton() { | ||||
|         try { | ||||
|             //清空 | ||||
|             PARAM_LIST.clear(); | ||||
|             EntryGrid entryGrid = this.getControl(entryID); | ||||
|             EntryGrid entryGrid = this.getView().getControl(entryID);//获得分录的控件对象 | ||||
|             int[] selectRows = entryGrid.getSelectRows(); | ||||
|             DynamicObjectCollection entity = this.getModel().getEntryEntity(entryID); | ||||
|             if (selectRows != null && selectRows.length > 0) { | ||||
|                 DynamicObjectCollection docolls = this.getModel().getEntryEntity(entryID); | ||||
|                 //清空返回数据包 | ||||
|                 PARAM_LIST.clear(); | ||||
|                 DynamicObject doinfo; | ||||
|                 for (int selectRow : selectRows) { | ||||
|                     DynamicObject dynamicObject = entity.get(selectRow); | ||||
|                     PARAM_LIST.add(dynamicObject); | ||||
|                     doinfo = docolls.get(selectRow); | ||||
|                     PARAM_LIST.add(doinfo); | ||||
|                 } | ||||
|                 this.getView().close(); | ||||
|             } else { | ||||
|                 this.getView().showMessage("请选中一条数据!"); | ||||
|                 this.getView().showMessage("请选择一条明细数据!"); | ||||
|             } | ||||
|         } catch (Exception e) { | ||||
|             logger.error("传递参数异常: " + e.getMessage()); | ||||
|  |  | |||
|  | @ -71,11 +71,13 @@ public class ClearBillFormPlugin extends AbstractFormPlugin implements Plugin { | |||
|      * @param apiKey 按钮来源的区分标识 | ||||
|      */ | ||||
|     private FormShowParameter createASPParam(String apiKey) { | ||||
|         HashMap<String, Object> map = new HashMap<>(2); | ||||
|         HashMap<String, Object> map = new HashMap<>(4); | ||||
|         //按钮区分标识 | ||||
|         map.put("Apikey",apiKey); | ||||
|         //清账明细单单号 | ||||
|         //清账单单号 | ||||
|         map.put("billNumber",this.getModel().getValue("billno")); | ||||
|         map.put("billorg",this.getModel().getValue("org"));//清账单公司 | ||||
|         map.put("billcustomer",this.getModel().getValue("shjh_customer"));//清账单客户 | ||||
|         FormShowParameter showParameter = new FormShowParameter(); | ||||
|         //需要打开单据的标识 | ||||
|         showParameter.setFormId(SAPFormID); | ||||
|  | @ -89,6 +91,7 @@ public class ClearBillFormPlugin extends AbstractFormPlugin implements Plugin { | |||
|     } | ||||
| 
 | ||||
|     private BillShowParameter createDetailBillParam(String detailBillid) { | ||||
|         //组装打开清账明细单的界面参数 | ||||
| //        HashMap<String, Object> map = new HashMap<>(2); | ||||
| //        //按钮区分标识 | ||||
| //        map.put("Apikey",apiKey); | ||||
|  | @ -106,7 +109,7 @@ public class ClearBillFormPlugin extends AbstractFormPlugin implements Plugin { | |||
|         //pageid | ||||
| //        showParameter.setPageId(); | ||||
|         //传到目标页面的自定义参数 | ||||
|         showParameter.setCustomParam("Apikey","viewDetailFromClear"); | ||||
|         showParameter.setCustomParam("parentFromCustomParam","viewDetailFromClear"); | ||||
|         //回调方法 | ||||
| //        showParameter.setCloseCallBack(); | ||||
|         return showParameter; | ||||
|  |  | |||
|  | @ -30,20 +30,20 @@ public class ClearBillListPlugin extends AbstractListPlugin implements Plugin { | |||
|     @Override | ||||
|     public void itemClick(ItemClickEvent evt) { | ||||
|         super.itemClick(evt); | ||||
|         try { | ||||
|             if ("shjh_unclearacctount".equals(evt.getItemKey())) { | ||||
|                 //点击反清账按钮 | ||||
| //        try { | ||||
| //            if ("shjh_unclearacctount".equals(evt.getItemKey())) { | ||||
| //                //点击反清账按钮 | ||||
| //                FormShowParameter showParameter = createParam(evt.getItemKey(),unClearFormID); | ||||
| //                this.getView().showForm(showParameter); | ||||
|             }else if("shjh_changestatus".equals(evt.getItemKey())){ | ||||
|                 //点击修改清账单状态按钮 | ||||
| //            }else if("shjh_changestatus".equals(evt.getItemKey())){ | ||||
| //                //点击修改清账单状态按钮 | ||||
| //                FormShowParameter showParameter = createParam(evt.getItemKey(),updateStatusFormID); | ||||
| //                this.getView().showForm(showParameter); | ||||
|             } | ||||
|         } catch (Exception e) { | ||||
|             logger.error("按钮处理异常:"+e.getMessage()); | ||||
|             this.getView().showMessage("按钮处理异常"+e.getMessage()); | ||||
|         } | ||||
| //            } | ||||
| //        } catch (Exception e) { | ||||
| //            logger.error("按钮处理异常:"+e.getMessage()); | ||||
| //            this.getView().showMessage("按钮处理异常"+e.getMessage()); | ||||
| //        } | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|  |  | |||
|  | @ -53,18 +53,21 @@ public class ClearDetailFormPlugin extends AbstractFormPlugin implements Plugin | |||
|      * 构建表单之间的传参 弹框展示SAP应收未清列表 | ||||
|      */ | ||||
|     private FormShowParameter createFormParameter() { | ||||
|         HashMap<String, Object> map = new HashMap<>(2); | ||||
| //        HashMap<String, Object> map = new HashMap<>(2); | ||||
|         //按钮区分标识 | ||||
| //        map.put("Apikey",SAP_BUTTON_KEY); | ||||
|         //清账明细单单号 | ||||
|         map.put("billNumber",this.getModel().getValue("billno")); | ||||
|         FormShowParameter showParameter = new FormShowParameter(); | ||||
|         //需要打开单据的标识 | ||||
|         showParameter.setFormId(destFormID); | ||||
|         //打开方式 | ||||
|         showParameter.getOpenStyle().setShowType(ShowType.Modal); | ||||
|         //传到子页面参数 | ||||
|         showParameter.setCustomParams(map); | ||||
| //        showParameter.setCustomParams(map); | ||||
|         showParameter.setCustomParam("billNumber",this.getModel().getValue("billno"));//清账明细单单号 | ||||
|         showParameter.setCustomParam("billorg",this.getModel().getValue("org"));//清账明细单公司 | ||||
|         showParameter.setCustomParam("billcustomer",this.getModel().getValue("shjh_customer"));//清账明细单客户 | ||||
| //        map.put("billorg",(DynamicObject)this.getModel().getValue("org")); | ||||
| //        map.put("billcustomer",(DynamicObject)this.getModel().getValue("shjh_customer")); | ||||
|         //回调方法 | ||||
|         showParameter.setCloseCallBack(new CloseCallBack(this, SAP_BUTTON_KEY)); | ||||
|         return showParameter; | ||||
|  | @ -144,7 +147,7 @@ public class ClearDetailFormPlugin extends AbstractFormPlugin implements Plugin | |||
|         this.getModel().setValue("shjh_e_text",returnInfo.getString("shjh_e_text"), i);// 文本 | ||||
|         this.getModel().setValue("shjh_e_gzdate",returnInfo.getDate("shjh_e_gzdate"), i);// 过账日期 | ||||
|         this.getModel().setValue("shjh_e_unsettle",returnInfo.getBigDecimal("shjh_e_unsettle"), i);//未核销金额 | ||||
|         this.getModel().setValue("shjh_e_cursettle",returnInfo.getBigDecimal("shjh_e_cursettle"), i);//本次核销金额 | ||||
| //        this.getModel().setValue("shjh_e_cursettle",returnInfo.getBigDecimal("shjh_e_cursettle"), i);//本次核销金额 | ||||
|         this.getModel().setValue("shjh_e_year",returnInfo.getString("shjh_e_year"), i);//会计年度 | ||||
|         this.getModel().setValue("shjh_e_qzpztext",returnInfo.getString("shjh_e_qzpztext"), i);// 清账凭证文本 | ||||
|     } | ||||
|  | @ -157,7 +160,7 @@ public class ClearDetailFormPlugin extends AbstractFormPlugin implements Plugin | |||
|         super.afterBindData(e); | ||||
|         FormShowParameter showParam = this.getView().getFormShowParameter(); | ||||
|         //如果是清账单过来的,只能进行查看 | ||||
|         if("viewDetailFromClear".equals(showParam.getCustomParam("Apikey"))){ | ||||
|         if("viewDetailFromClear".equals(showParam.getCustomParam("parentFromCustomParam"))){ | ||||
|             this.getView().setVisible(false, "tbmain"); | ||||
|         } | ||||
|     } | ||||
|  |  | |||
|  | @ -63,7 +63,7 @@ public class SappzFormPlugin extends AbstractFormPlugin { | |||
|                 Boolean isselfprocurement = (Boolean) this.getModel().getValue("shjh_isselfprocurement");//是否自行采购 | ||||
| 
 | ||||
|                 // 日期格式 | ||||
|                 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); | ||||
|                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | ||||
|                 JSONArray IT_LIST = new JSONArray(); | ||||
|                 // 添加公司过滤条件 | ||||
|                 if (shjhOrgfield != null) { | ||||
|  |  | |||
|  | @ -2,7 +2,6 @@ package shjh.jhzj7.fi.fi.utils; | |||
| 
 | ||||
| import com.alibaba.fastjson.JSONArray; | ||||
| import com.alibaba.fastjson.JSONObject; | ||||
| import kd.bos.dataentity.entity.DynamicObject; | ||||
| import kd.bos.logging.Log; | ||||
| import kd.bos.logging.LogFactory; | ||||
| import org.apache.http.HttpEntity; | ||||
|  | @ -17,7 +16,6 @@ import org.apache.http.util.EntityUtils; | |||
| import java.time.LocalDateTime; | ||||
| import java.time.format.DateTimeFormatter; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Objects; | ||||
| 
 | ||||
|  | @ -45,6 +43,11 @@ public class SapUtils { | |||
|     //    public static final String withholdingUrl = "https://hipint.jahwa.com.cn:6443/gateway//HIP_ReceiveFromFM/1.0/fm/send";//正式环境 | ||||
|     public static final String receiverID2 = "FeiKong";//定义的发送者 | ||||
| 
 | ||||
|     private static final String interfaceID5 = "AccountsReceivableVoucherList";//识别被调接口并进行路由 | ||||
|     private static final String Apimenthod5 = "SAP应收凭证清单"; | ||||
|     public static final String sapArUrl = "https://hipint-stg.jahwa.com.cn:6443/gateway/HIP_ReceiveFromFM/1.0/fm/send";//测试环境(SAP应收凭证清单) | ||||
|     //    public static final String sapArUrl = "https://hipint.jahwa.com.cn:6443/gateway/HIP_ReceiveFromFM/1.0/fm/send";//正式环境 | ||||
| 
 | ||||
|     /** | ||||
|      * SAP应付凭证锁定解锁状态回写 | ||||
|      */ | ||||
|  | @ -83,6 +86,46 @@ public class SapUtils { | |||
|         return pendingsBody; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * SAP应收凭证清单接口 | ||||
|      * @param IT_LIST 过滤条件入参 | ||||
|      * @param billno 单据编号 | ||||
|      * @author yuxueliang | ||||
|      */ | ||||
|     public static JSONObject sapArAPI(JSONArray IT_LIST,String billno){ | ||||
|         Map<String, Object> thirdPartyMap = new HashMap<>(); | ||||
|         thirdPartyMap.put("interfaceID",interfaceID5); | ||||
|         thirdPartyMap.put("receiverID",receiverID1); | ||||
|         thirdPartyMap.put("URL",sapArUrl); | ||||
|         thirdPartyMap.put("billno",billno); | ||||
|         // 组装请求体 | ||||
|         JSONObject arBody = sapArBody(IT_LIST); | ||||
|         // 发送请求并处理响应 | ||||
|         return processRequest(arBody, thirdPartyMap, Apimenthod5); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * SAP应收凭证清单接口组装请求体 | ||||
|      * @param IT_LIST 过滤条件入参 | ||||
|      * @author yuxueliang | ||||
|      */ | ||||
|     private static JSONObject sapArBody(JSONArray IT_LIST) { | ||||
|         // 获取当前日期和时间 | ||||
|         LocalDateTime date = LocalDateTime.now(); | ||||
|         // 定义日期时间格式 | ||||
|         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); | ||||
|         // 格式化当前日期和时间 | ||||
|         String dates = date.format(formatter); | ||||
|         //组装请求体 | ||||
|         JSONObject pendingsBody = new JSONObject(); | ||||
|         pendingsBody.put("rootContextID",""+System.currentTimeMillis());//唯一事务ID,采用UUID或其他强唯一性ID | ||||
|         pendingsBody.put("requestTime",dates);//请求时间,格式为yyyy-MM-dd HH:mm:ss.SSS | ||||
| 
 | ||||
|         JSONObject data = new JSONObject(); | ||||
|         data.put("IT_INPUT",IT_LIST); | ||||
|         pendingsBody.put("data", data); | ||||
|         return pendingsBody; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * SAP应付凭证清单接口 | ||||
|  | @ -251,7 +294,7 @@ public class SapUtils { | |||
|     private static void handleResponse(JSONObject jsonObject, JSONObject pendingsBody, Map<String, Object> thirdPartyMap,String apiName) { | ||||
|         String operResult = jsonObject.getString("code"); | ||||
|         JSONObject jsonobject = jsonObject.getJSONObject("data"); | ||||
|         if (jsonobject == null&&!"0".equals(operResult)) { | ||||
|         if (jsonobject == null && !"0".equals(operResult)) { | ||||
|             logger.info(apiName + "失败!"); | ||||
|             saveLog((thirdPartyMap.get("billno").toString()), pendingsBody, jsonObject, false,apiName); | ||||
|             return; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue