基本契約情報検索実装編#
1.1. 処理概要#
画面の入力内容をもとに、条件に合う基本契約の件数の取得と、基本契約情報の検索を行います。
取得した基本契約の件数をもとに、基本契約情報を表示するページ数を算出して画面に表示します。
画面上でページ番号が選択された場合は、その数によって基本契約情報の検索の開始位置と終了位置を指定することで、ページング処理を実装しています。
本処理を行うには、API認証よりAPIを呼び出すためのアクセストークンが必要となります。
1.1.1. 呼出API#
以下、基本契約情報検索で呼び出すAPIとなります。
No | API | 処理内容 | 使用用途 |
---|---|---|---|
1 | GET /v2/api/basiccontract | 基本契約を検索する | 基本契約一覧画面で検索ボタン押下時に基本契約情報を検索 |
2 | GET /v2/api/basiccontractlistcount | 基本契約の件数を取得する | 入力内容をもとに基本契約情報の件数を検索 |
1.1.2. 処理フロー#
基本契約情報検索を行うまでの処理は以下のフローとなります。
1.1.3. 実装例#
以下API呼び出しの実装例となります。
※本マニュアルに記載している実装例は、分かりやすさを優先し簡易的に記載しております。提供しているソースと異なりますので詳細については提供ソースをご確認ください。
BasicContractListController.java
/** * 検索処理 * @param model モデル * @return 基本契約一覧 */ @RequestMapping(value = "/BasicContractList/search") public String search( Model model, @ModelAttribute("customerId") String customerId, @ModelAttribute("customerName") String customerName) { BasicContractListForm form = new BasicContractListForm(); BasicContractListDto basicContractListDto = new BasicContractListDto(); List<BasicContractListDto> basicContractList = new ArrayList<BasicContractListDto>(); basicContractListFormSession.setBasicContractListForm(form); model.addAttribute("basicContractListForm", form); form.setCustomerId(customerId); form.setCustomerName(customerName); form.setNowPage(1L); Web_IFBasicContractCountSearch_I web_IFBasicContractCountSearch_I = new Web_IFBasicContractCountSearch_I(); Web_IFBasicContractCountSearch_O web_IFBasicContractCountSearch_O = new Web_IFBasicContractCountSearch_O(); Web_IFBasicContractListSearch_I web_IFBasicContractSearch_I = new Web_IFBasicContractListSearch_I(); Web_IFBasicContractListSearch_O web_IFBasicContractSearch_O = new Web_IFBasicContractListSearch_O(); web_IFBasicContractCountSearch_I.customer_id = form.getCustomerId(); //基本契約の件数検索を行う try{ web_IFBasicContractCountSearch_O = basicContractService.basicContractCountSearch(web_IFBasicContractCountSearch_I); if (ControllerConstants.API_RESULT_NG.equals(web_IFBasicContractCountSearch_O.result_information.result)) { form.setErrorInformation(web_IFBasicContractCountSearch_O.result_information.detailed_result); return ControllerConstants.BASIC_CONTRACT_LIST_JSP; } } catch (ApiException e) { // 対象なし以外はエラーとする if (!ApiErrorType.対象なし.equals(e.getErrorCode())) { model.addAttribute("errorCode", e.getErrorCode().getValue()); return ControllerConstants.SYSTEM_ERROR_JSP; } else { // メッセージ表示 form.setErrorInformation(getMsg(MessageConstants.MSGE00003)); return ControllerConstants.BASIC_CONTRACT_LIST_JSP; } }catch (Exception e) { return ControllerConstants.SYSTEM_ERROR_JSP; } form.setListSize(Long.valueOf(web_IFBasicContractCountSearch_O.count)); web_IFBasicContractSearch_I.customer_id = SampleUtil.emptyToNull(form.getCustomerId()); web_IFBasicContractSearch_I.sort_item1 = "basic_contract_id"; web_IFBasicContractSearch_I.sort1 = SampleUtil.emptyToNull(SortCat.昇順.getCode()); web_IFBasicContractSearch_I.start_position = SampleUtil.emptyToNull(String.valueOf(form.getStartPosition())); web_IFBasicContractSearch_I.end_position = SampleUtil.emptyToNull(String.valueOf(form.getEndPosition())); //基本契約の検索を行う try{ web_IFBasicContractSearch_O = basicContractService.basicContractSearch(web_IFBasicContractSearch_I); if (ControllerConstants.API_RESULT_NG.equals(web_IFBasicContractSearch_O.result_information.result)) { form.setErrorInformation(web_IFBasicContractSearch_O.result_information.detailed_result); return ControllerConstants.BASIC_CONTRACT_LIST_JSP; } } catch (ApiException e) { // 対象なし以外はエラーとする if (!ApiErrorType.対象なし.equals(e.getErrorCode())) { model.addAttribute("errorCode", e.getErrorCode().getValue()); return ControllerConstants.SYSTEM_ERROR_JSP; } else { // メッセージ表示 form.setErrorInformation(getMsg(MessageConstants.MSGE00003)); return ControllerConstants.BASIC_CONTRACT_LIST_JSP; } }catch (Exception e) { return ControllerConstants.SYSTEM_ERROR_JSP; } for (Web_BasicContractList list : web_IFBasicContractSearch_O.basic_contract_list) { basicContractListDto = new BasicContractListDto(); basicContractListDto.setBasicContractId(list.basic_contract_id); basicContractListDto.setClassificationOfContract(list.classification_of_contract); // 契約種別コードより契約種別名称を格納 basicContractListDto.setClassificationOfContractName(Catalog.getCatalogName(ContractClassificationCat.class, basicContractListDto.getClassificationOfContract())); basicContractListDto.setBillToId(list.bill_to_id); basicContractListDto.setBillToName(list.bill_to_name); basicContractListDto.setApplyStartDate(list.apply_start_date); basicContractListDto.setApplyEndDate(list.apply_end_date); // (システム日付と適用開始/終了を比較して)ステータス名を格納 basicContractListDto.setStatusName(SampleUtil.getStatus(list.apply_start_date, list.apply_end_date, null)); basicContractList.add(basicContractListDto); } form.setBasicContractList(basicContractList); return ControllerConstants.BASIC_CONTRACT_LIST_JSP; }
BasicContractService.java
/** * 基本契約_件数_検索 API * * @param web_IFBasicContractCountSearch_I IF基本契約_件数_検索_入力 * @return IF基本契約_件数_検索_出力 */ public Web_IFBasicContractCountSearch_O basicContractCountSearch(Web_IFBasicContractCountSearch_I web_IFBasicContractCountSearch_I) { // 通信設定 HashMap<String, String> mapQueryString = ClientUtil.makeMapQueryString(web_IFBasicContractCountSearch_I); String strURI = ClientUtil.makeURI(UriInfo.BasicContractCount, null, mapQueryString); HttpGet getMethod = ClientUtil.makeHttpGet(strURI); return CommonHttpClient.httpGet(getMethod, Web_IFBasicContractCountSearch_O.class); } /** * 基本契約_検索 API * * @param web_IFBasicContractListSearch_I IF基本契約_検索_入力 * @return IF基本契約_検索_出力 */ public Web_IFBasicContractListSearch_O basicContractSearch(Web_IFBasicContractListSearch_I web_IFBasicContractListSearch_I) { // 通信設定 HashMap<String, String> mapQueryString = ClientUtil.makeMapQueryString(web_IFBasicContractListSearch_I); String strURI = ClientUtil.makeURI(UriInfo.BasicContractSearch, null, mapQueryString); HttpGet getMethod = ClientUtil.makeHttpGet(strURI); return CommonHttpClient.httpGet(getMethod, Web_IFBasicContractListSearch_O.class); }
共通HTTPリクエストクラス[CommonHttpClient.java]の実装例についてはこちらをご参照ください。