サービス契約情報検索実装編#
1.1. 処理概要#
前画面より引き継がれた条件をもとに、サービス契約の件数の取得と、サービス契約情報の検索を行います。
取得したサービス契約件数をもとに、サービス契約情報を表示するページ数を算出して画面に表示します。
画面上でページ番号が選択された場合は、その数によってサービス契約情報の検索の開始位置と終了位置を指定することで、ページング処理を実装しています。
本処理を行うには、API認証よりAPIを呼び出すためのアクセストークンが必要となります。
1.1.1. 呼出API#
以下、サービス契約情報検索で呼び出すAPIとなります。
No | API | 処理内容 | 使用用途 |
---|---|---|---|
1 | GET /API/v2/api/servicecontracts | サービス契約を検索する | サービス契約一覧画面で前画面より引き継がれた情報をもとにサービス契約情報を検索 |
2 | GET /API/v2/api/servicecontractslistcount | サービス契約の件数を取得する | 前画面より受け渡された情報を基にサービス契約情報の件数を検索 |
1.1.2. 処理フロー#
サービス契約情報検索を行うまでの処理は以下のフローとなります。
1.1.3. 実装例#
以下API呼び出しの実装例となります。
※本マニュアルに記載している実装例は、分かりやすさを優先し簡易的に記載しております。提供しているソースと異なりますので詳細については提供ソースをご確認ください。
ServiceContractListController.java
/** * 検索処理 * @param model モデル * @param basicContractId 基本契約ID * @param customerId 顧客ID * @param customerName 顧客名 * @param billToId 請求先ID * @return サービス契約一覧 */ @RequestMapping(value = "/ServiceContractList/search") public String search( Model model, @ModelAttribute("basicContractId") String basicContractId, @ModelAttribute("customerId") String customerId, @ModelAttribute("customerName") String customerName, @ModelAttribute("billToId") String billToId) { ServiceContractListForm form = new ServiceContractListForm(); serviceContractListFormSession.setServiceContractListForm(form); model.addAttribute("serviceContractListForm", form); form.setSelectedIndex(new String[0]); //選択中情報をリセット form.setBasicContractId(basicContractId); form.setCustomerId(customerId); form.setCustomerName(customerName); form.setBillToId(billToId); form.setNowPage(1L); List<ServiceContractListDto> serviceContractList = new ArrayList<ServiceContractListDto>(); form.setServiceContractList(serviceContractList); Web_IFServiceContractCountSearch_I web_IFServiceContractCountSearch_I = new Web_IFServiceContractCountSearch_I(); Web_IFServiceContractCountSearch_O web_IFServiceContractCountSearch_O = new Web_IFServiceContractCountSearch_O(); web_IFServiceContractCountSearch_I.service_contract_id = SampleUtil.emptyToNull(form.getServiceContractId()); web_IFServiceContractCountSearch_I.basic_contract_id = SampleUtil.emptyToNull(form.getBasicContractId()); web_IFServiceContractCountSearch_I.customer_id = SampleUtil.emptyToNull(form.getCustomerId()); web_IFServiceContractCountSearch_I.bill_to_id = SampleUtil.emptyToNull(form.getBillToId()); try { // サービス契約の件数検索を行う web_IFServiceContractCountSearch_O = serviceContractService.serviceContractCountSearch(web_IFServiceContractCountSearch_I); if (ControllerConstants.API_RESULT_NG.equals(web_IFServiceContractCountSearch_O.result_information.result)) { form.setErrorInformation(web_IFServiceContractCountSearch_O.result_information.detailed_result); return ControllerConstants.SERVICE_CONTRACT_LIST_JSP; } form.setListSize(Long.valueOf(web_IFServiceContractCountSearch_O.count)); } 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.SERVICE_CONTRACT_LIST_JSP; } } catch (Exception e) { return ControllerConstants.SYSTEM_ERROR_JSP; } Web_IFServiceContractSearch_I web_IFServiceContractSearch_I = new Web_IFServiceContractSearch_I(); Web_IFServiceContractSearch_O web_IFServiceContractSearch_O = new Web_IFServiceContractSearch_O(); ServiceContractListDto serviceContractListDto = new ServiceContractListDto(); web_IFServiceContractSearch_I.basic_contract_id = SampleUtil.emptyToNull(form.getBasicContractId()); web_IFServiceContractSearch_I.customer_id = SampleUtil.emptyToNull(form.getCustomerId()); web_IFServiceContractSearch_I.bill_to_id = SampleUtil.emptyToNull(form.getBillToId()); web_IFServiceContractSearch_I.start_position = String.valueOf(form.getStartPosition()); web_IFServiceContractSearch_I.end_position = String.valueOf(form.getEndPosition()); web_IFServiceContractSearch_I.language_locale = CommonConstants.言語ロケール_ja; web_IFServiceContractSearch_I.sort1 = SortCat.昇順.getCode(); web_IFServiceContractSearch_I.sort_item1 = CommonConstants.ソート項目名_サービス契約ID; try { // サービス契約の検索を行う web_IFServiceContractSearch_O = serviceContractService.serviceContractSearch(web_IFServiceContractSearch_I); for (Web_CustomerAppointServiceContractInformationList list : web_IFServiceContractSearch_O.customer_appoint_service_contract_information_list) { serviceContractListDto = new ServiceContractListDto(); serviceContractListDto.setServiceContractId(list.service_contract_id); serviceContractListDto.setServiceCode(list.service_code); serviceContractListDto.setServiceName(list.service_name); serviceContractListDto.setStatusName(SampleUtil.getStatus(list.apply_start_date, list.apply_end_date, list.cancel_date)); serviceContractList.add(serviceContractListDto); } } 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.SERVICE_CONTRACT_LIST_JSP; } } catch (Exception e) { return ControllerConstants.SYSTEM_ERROR_JSP; } return ControllerConstants.SERVICE_CONTRACT_LIST_JSP; }
ServiceContractService.java
/** * サービス契約_件数_検索 API * * @param web_IFServiceContractCountSearch_I IFサービス契約_件数_検索_入力 * @return IFサービス契約_件数_検索_出力 */ public Web_IFServiceContractCountSearch_O serviceContractCountSearch(Web_IFServiceContractCountSearch_I web_IFServiceContractCountSearch_I) { // 通信設定 HashMap<String, String> mapQueryString = ClientUtil.makeMapQueryString(web_IFServiceContractCountSearch_I); String strURI = ClientUtil.makeURI(UriInfo.ServiceContractsCount, null, mapQueryString); HttpGet getMethod = ClientUtil.makeHttpGet(strURI); // 通信実行 return CommonHttpClient.httpGet(getMethod, Web_IFServiceContractCountSearch_O.class); } /** * サービス契約_検索 API * * @param web_IFServiceContractCountSearch_I IFサービス契約_検索_入力 * @return IFサービス契約_検索_出力 */ public Web_IFServiceContractSearch_O serviceContractSearch(Web_IFServiceContractSearch_I web_IFServiceContractSearch_I) { // 通信設定 HashMap<String, String> mapQueryString = ClientUtil.makeMapQueryString(web_IFServiceContractSearch_I); String strURI = ClientUtil.makeURI(UriInfo.ServiceContractsSearch, null, mapQueryString); HttpGet getMethod = ClientUtil.makeHttpGet(strURI); // 通信実行 return CommonHttpClient.httpGet(getMethod, Web_IFServiceContractSearch_O.class); }
共通HTTPリクエストクラス[CommonHttpClient.java]の実装例についてはこちらをご参照ください。