グループ情報変更実装編#
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]の実装例についてはこちらをご参照ください。