Skip to content

グループ情報変更実装編#

1.1. 処理概要#

グループ情報の検索で取得した情報をもとに、画面上で入力ができる形でグループ情報を表示します。
変更ボタンが押された際に、画面の入力内容をもとにグループ情報の変更を行います。
また、顧客追加ボタンから顧客を選択し、グループの作成と同時にそのグループに紐づく顧客の作成及び削除も行います。
本処理を行うには、API認証よりAPIを呼び出すためのアクセストークンが必要となります。

1.1.1. 呼出API#

以下、グループ変更で呼び出すAPIとなります。

No API 処理内容 使用用途
1 PUT /v2/api/group/{group_id} グループを変更する グループ編集画面で変更ボタン押下時にグループ情報を変更
2 GET /v2/api/group グループを検索する グループ編集画面表示時に変更対象のグループ情報を検索
3 GET /v2/api/customers 顧客を検索する グループ編集画面で顧客追加ボタン押下時に顧客情報を検索
4 POST /v2/api/grouprelation グループに紐づく顧客を追加する グループ編集画面で変更ボタン押下時に、変更対象のグループに紐づく顧客情報を追加
5 DELETE /v2/api/grouprelation グループに紐づく顧客を削除する グループ編集画面で変更ボタン押下時に、変更対象のグループから除外する顧客情報を削除

1.1.2. 処理フロー#

グループ変更を行うまでの処理は以下のフローとなります。

1.1.3. 実装例#

以下API呼出の実装例となります。
グループ変更画面表示時の「グループを検索する」API呼び出しについては、「グループ情報検索実装編」及び提供ソースをご確認ください。
顧客追加ボタン押下時の「顧客を検索する」API呼び出しについては、「顧客情報検索実装編」及び提供ソースをご確認ください。
※本マニュアルに記載している実装例は、分かりやすさを優先し簡易的に記載しております。提供しているソースと異なりますので詳細については提供ソースをご確認ください。

GroupChangeController.java

/**
 * 変更処理
 */
@RequestMapping(value = "/GroupChange/change", method = RequestMethod.POST)
public String change(
        Model model,
        @Valid GroupChangeForm form,
        BindingResult result,
        String groupId){

    model.addAttribute("groupChangeForm", form);
    groupChangeFormSession.setGroupChangeForm(form);

    // バリデーションエラー
    if (result.hasErrors()) {
        return ControllerConstants.GROUP_CHANGE_JSP;
    }

    Web_IFGroupChange_I web_IFGroupChange_I = new Web_IFGroupChange_I();
    Web_IFGroupChange_O web_IFGroupChange_O = new Web_IFGroupChange_O();
    Web_GroupInformationList web_GroupInformationList = new Web_GroupInformationList();
    Web_IFGroupRelationCreate_I web_IFGroupRelationCreate_I = new Web_IFGroupRelationCreate_I();
    Web_IFGroupRelationCreate_O web_IFGroupRelationCreate_O = new Web_IFGroupRelationCreate_O();
    Web_IFGroupRelationDelete_I web_IFGroupRelationDelete_I = new Web_IFGroupRelationDelete_I();
    Web_IFGroupRelationDelete_O web_IFGroupRelationDelete_O = new Web_IFGroupRelationDelete_O();

    // 変更に必要な情報を詰める
    web_IFGroupChange_I.entry_id = CommonConstants.登録者ID;
    web_GroupInformationList.group_id = groupId;
    web_IFGroupChange_I.group_name = form.getGroupName();
    web_IFGroupChange_I.version_info = form.getVersionInfo();

    // フリー項目
    JsonObject free_json = new JsonObject();
    if (!form.getRepresentative().isEmpty() || !form.getTEL().isEmpty() ||
            !form.getEmail().isEmpty() || !form.getNote().isEmpty()) {
        free_json.addProperty("representative", SampleUtil.emptyToNull(form.getRepresentative()));
        free_json.addProperty("TEL", SampleUtil.emptyToNull(form.getTEL()));
        free_json.addProperty("email", SampleUtil.emptyToNull(form.getEmail()));
        free_json.addProperty("note", SampleUtil.emptyToNull(form.getNote()));
    }
    web_IFGroupChange_I.free_item = free_json;
    web_IFGroupChange_I.free_item1 = form.getNumberOfPersons();

    try {
        // グループを変更する
        web_IFGroupChange_O = groupService.groupChange(web_IFGroupChange_I, web_GroupInformationList, form);

        try {
            // 顧客ID、顧客名を初期化
            form.setCustomerId("");
            form.setCustomerName("");
            // 顧客の検索をする
            form = this.searchCustomer(form, groupId);
        } catch (ApiException e) {
            // 対象なしの場合は次の処理へ
            form.setCustomerList(null);
        }

        if (ControllerConstants.API_RESULT_NG.equals(web_IFGroupChange_O.result_information.result)) {
            form.setErrorInformation(web_IFGroupChange_O.result_information.detailed_result);
            return ControllerConstants.GROUP_CHANGE_JSP;
        }

    } catch (ApiException e) {

        if(ApiErrorType.排他エラー.getValue().equals(e.getErrorCode())) {
            // メッセージ表示
            form.setErrorInformation(getMsg(MessageConstants.MSGE00001,
                    getMsg(MessageConstants.SCN000008),
                    web_IFGroupChange_O.group_id));

        } else {
            model.addAttribute("errorCode", e.getErrorCode().getValue());
            return ControllerConstants.SYSTEM_ERROR_JSP;
        }

    } catch (Exception e) {
        return ControllerConstants.SYSTEM_ERROR_JSP;
    }

        List<CustomerInformationListDto> customerList = form.getCustomerList();
        List<String> input_customer_list = form.getMemberId();
        List<String> create_customer_list = new ArrayList<String>();
        List<String> delete_customer_list = new ArrayList<String>();
        boolean flg = false;
        //customerListとメンバー情報欄に顧客情報がない場合は処理を行わない
        if(customerList != null && input_customer_list != null){
            // 登録される顧客IDのリストを作成(重複エラーを避ける)
                for (int i = 0; input_customer_list.size() > i; i++) {
                    flg = false;
                    for (int j = 0; customerList.size() > j; j++) {
                        if (input_customer_list.get(i).equals(
                            customerList.get(j).customerId)) {
                            flg = true;
                            break;
                        }
                    }
                    if (!flg) {
                        create_customer_list.add(input_customer_list.get(i));
                    }
                }
            // 削除される顧客IDのリストを作成
                for (int i = 0; customerList.size() > i; i++) {
                    flg = false;
                    for (int j = 0; input_customer_list.size() > j; j++) {
                        if (customerList.get(i).customerId
                                .equals(input_customer_list.get(j))) {
                            flg = true;
                            break;
                        }
                    }
                    if (!flg) {
                        delete_customer_list.add(customerList.get(i).customerId);
                    }
                }
            //登録されていた顧客情報がすべてチェックを外され、何も登録しない場合の処理
            } else if(customerList != null && input_customer_list == null){
                for (int i = 0; customerList.size() > i; i++) {
                    delete_customer_list.add(customerList.get(i).customerId);
                    }
                }
            //登録されていた顧客情報がなく、新たに顧客が登録される場合の処理
            if(customerList == null && input_customer_list != null){
                for(int i = 0; i < input_customer_list.size(); i++){
                    String st = input_customer_list.get(i);
                    create_customer_list.add(st);

                }
            }
        // グループに紐づく顧客の追加を実行
        if (create_customer_list != null) {
            for (int i = 0; create_customer_list.size() > i; i++) {
                web_IFGroupRelationCreate_I.entry_id = CommonConstants.登録者ID;
                web_IFGroupRelationCreate_I.group_id = web_IFGroupChange_O.group_id;
                web_IFGroupRelationCreate_I.customer_id = create_customer_list.get(i);

            try {
                // グループに紐づく顧客の追加
                web_IFGroupRelationCreate_O = groupService.groupRelationCreate(web_IFGroupRelationCreate_I);

                if (ControllerConstants.API_RESULT_NG.equals(web_IFGroupRelationCreate_O.result_information.result)) {
                    form.setErrorInformation(web_IFGroupRelationCreate_O.result_information.detailed_result);
                    return ControllerConstants.GROUP_CHANGE_JSP;
                }

            } catch (ApiException e) {
                model.addAttribute("errorCode", e.getErrorCode().getValue());
                return ControllerConstants.SYSTEM_ERROR_JSP;

            } catch (Exception e) {
                return ControllerConstants.SYSTEM_ERROR_JSP;
            }
        }
    }

        // グループに紐づく顧客の削除を実行
        if (delete_customer_list != null) {
            for (int i = 0; delete_customer_list.size() > i; i++) {
                web_IFGroupRelationDelete_I.entry_id = CommonConstants.登録者ID;
                web_IFGroupRelationDelete_I.group_id = web_IFGroupChange_O.group_id;
                web_IFGroupRelationDelete_I.customer_id = delete_customer_list.get(i);

        try {
            // グループに紐づく顧客の削除
            web_IFGroupRelationDelete_O = groupService.groupRelationDelete(web_IFGroupRelationDelete_I);

            if (ControllerConstants.API_RESULT_NG.equals(web_IFGroupRelationDelete_O.result_information.result)) {
                form.setErrorInformation(web_IFGroupRelationCreate_O.result_information.detailed_result);
                return ControllerConstants.GROUP_CHANGE_JSP;
            }

        } catch (ApiException e) {
            model.addAttribute("errorCode", e.getErrorCode().getValue());
            return ControllerConstants.SYSTEM_ERROR_JSP;

        } catch (Exception e) {
            return ControllerConstants.SYSTEM_ERROR_JSP;
        }
    }
}

    // メッセージ表示
    form.setMessage(getMsg(MessageConstants.MSGI00002,
            getMsg(MessageConstants.LBL000005),
            web_IFGroupChange_O.group_id));

    form.setGroupId(web_IFGroupChange_O.group_id);

    return ControllerConstants.GROUP_CHANGE_JSP;
}

GroupService.java

public Web_IFGroupChange_O groupChange(Web_IFGroupChange_I web_IFGroupChange_I, Web_GroupInformationList web_GroupInformationList, GroupChangeForm form){

    // 通信設定
    HashMap<String, String> mapUri = new HashMap<String, String>();
    mapUri.put(UriInfo.group_id, form.getGroupId());
    String strURI = ClientUtil.makeURI(UriInfo.GroupChange, mapUri, null);
    HttpPut putMethod = ClientUtil.makeHttpPut(strURI, web_IFGroupChange_I);

    return CommonHttpClient.httpPut(putMethod, Web_IFGroupChange_O.class);
}

//・・・ 省略・・・

public Web_IFGroupRelationCreate_O groupRelationCreate(Web_IFGroupRelationCreate_I web_IFGroupRelationCreate_I){

    // 通信設定
    String strURI = ClientUtil.makeURI(UriInfo.GroupRelationCreate, null, null);
    HttpPost postMethod = ClientUtil.makeHttpPost(strURI, web_IFGroupRelationCreate_I);

    return CommonHttpClient.httpPost(postMethod, Web_IFGroupRelationCreate_O.class);
}
public Web_IFGroupRelationDelete_O groupRelationDelete(Web_IFGroupRelationDelete_I web_IFGroupRelationDelete_I){
    // 通信設定
    HashMap<String, String> mapQueryString = new HashMap<String, String>();
    mapQueryString.put(UriInfo.entry_id, web_IFGroupRelationDelete_I.entry_id);
    mapQueryString.put(UriInfo.group_id, web_IFGroupRelationDelete_I.group_id);
    mapQueryString.put(UriInfo.customer_id, web_IFGroupRelationDelete_I.customer_id);

    String strURI = ClientUtil.makeURI(UriInfo.GroupRelationDelete, null, mapQueryString);

    HttpDelete deleteMethod = ClientUtil.makeHttpDelete(strURI);

    return CommonHttpClient.httpDelete(deleteMethod, Web_IFGroupRelationDelete_O.class);
}   

共通HTTPリクエストクラス[CommonHttpClient.java]の実装例についてはこちらをご参照ください。

Top