Skip to content

サービス契約情報検索実装編#

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]の実装例についてはこちらをご参照ください。

Top