/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUBfOpenChgPayWayRelChkCC
*   ソースファイル名：JFUBfOpenChgPayWayRelChkCC.java
*   作成者          ：富士通
*   日付            ：2018年05月08日
*＜機能概要＞
*   開通前支払方法変更関連チェックコモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v37.00      2018/05/08   FJ)岡井    【ANK-3119-00-00】開通前でもＷｅｂから支払方法を変更可能とする
*   v53.00      2021/05/20   FJ)岡井    【ANK-4009-00-00】CX戦略WG方針対応
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021B504CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021B504CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B036CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B036CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B548CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B548CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321B501CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321B501CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0491A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0491B507CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491B507CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0491B508CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491B508CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0541B502CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0541B502CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0091B020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0091B020CBSMsg1List;

/**
 * 開通前支払方法変更関連チェックコモンコンポーネント部品です。
 * <br>
 * @author 富士通
 */

public class JFUBfOpenChgPayWayRelChkCC extends JFUBaseCC
{

	/* ■□ 申込書番号（申込書明細番号）存在チェック一覧参照 ■□ */
	/** テンプレートID(申込書番号（申込書明細番号）存在チェック一覧参照) */
	private static final String TEMPLATE_ID_EKK0021B504 = "EKK0021B504";
	/** テンプレートID(申込書番号（申込書明細番号）存在チェック一覧参照明細) */
	private static final String TEMPLATE_ID_EKK0021B504_DETAIL = EKK0021B504CBSMsg.EKK0021B504CBSMSG1LIST;
	/** IN項目リスト(申込書番号（申込書明細番号）存在チェック一覧参照) */
	private static final List<String> IN_COLUMN_LIST_EKK0021B504 = Arrays.asList(EKK0021B504CBSMsg.KEY_MSKMSHO_NO);
	/** 関連チェックエラー項目(申込書番号（申込書明細番号）存在チェック一覧参照) */
	private static final String ERROR_COLUMN_EKK0021B504 = EKK0021B504CBSMsg.KEY_MSKMSHO_NO_ERR;
	/** SC実行結果取得キー(申込書番号（申込書明細番号）存在チェック一覧参照) */
	private static final String TEMP_TEMPLATE_KEY_EKK0021B504 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0021B504 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 申込明細_工事案件一覧照会（工事案件番号） ■□ */
	/** テンプレートID(申込明細_工事案件一覧照会（工事案件番号）) */
	private static final String TEMPLATE_ID_EKU0091B020 = "EKU0091B020";
	/** テンプレートID(申込明細_工事案件一覧照会（工事案件番号）明細) */
	private static final String TEMPLATE_ID_EKU0091B020_DETAIL = EKU0091B020CBSMsg.EKU0091B020CBSMSG1LIST;
	/** IN項目リスト(申込明細_工事案件一覧照会（工事案件番号）) */
	private static final List<String> IN_COLUMN_LIST_EKU0091B020 = Arrays.asList(EKU0091B020CBSMsg.KEY_KOJIAK_NO);
	/** 関連チェックエラー項目(申込明細_工事案件一覧照会（工事案件番号）) */
	private static final String ERROR_COLUMN_EKU0091B020 = EKU0091B020CBSMsg.KEY_KOJIAK_NO_ERR;
	/** SC実行結果取得キー(申込明細_工事案件一覧照会（工事案件番号）) */
	private static final String TEMP_TEMPLATE_KEY_EKU0091B020 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKU0091B020 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 申込明細一意照会 ■□ */
	/** テンプレートID(申込明細一意照会) */
	private static final String TEMPLATE_ID_EKK0021A010 = "EKK0021A010";
	/** テンプレートID(申込明細一意照会明細) */
	private static final String TEMPLATE_ID_EKK0021A010_DETAIL = EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST;
	/** IN項目リスト(申込明細一意照会) */
	private static final List<String> IN_COLUMN_LIST_EKK0021A010 = Arrays.asList(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO);
	/** 関連チェックエラー項目(申込明細一意照会) */
	private static final String ERROR_COLUMN_EKK0021A010 = EKK0021A010CBSMsg.KEY_MSKM_DTL_NO_ERR;
	/** SC実行結果取得キー(申込明細一意照会) */
	private static final String TEMP_TEMPLATE_KEY_EKK0021A010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0021A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ サービス契約一覧照会(履歴) ■□ */
	/** テンプレートID(サービス契約一覧照会(履歴)) */
	private static final String TEMPLATE_ID_EKK0081B548 = "EKK0081B548";
	/** テンプレートID(サービス契約一覧照会(履歴)明細) */
	private static final String TEMPLATE_ID_EKK0081B548_DETAIL = EKK0081B548CBSMsg.EKK0081B548CBSMSG1LIST;
	/** IN項目リスト(サービス契約一覧照会(履歴)) */
	private static final List<String> IN_COLUMN_LIST_EKK0081B548 = Arrays.asList(EKK0081B548CBSMsg.KEY_SYSID,
			EKK0081B548CBSMsg.KEY_MSKM_DTL_NO);
	/** 関連チェックエラー項目(サービス契約一覧照会(履歴)) */
	private static final String ERROR_COLUMN_EKK0081B548 = EKK0081B548CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(サービス契約一覧照会(履歴)) */
	private static final String TEMP_TEMPLATE_KEY_EKK0081B548 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0081B548 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ サービス契約一意照会 ■□ */
	/** テンプレートID(サービス契約一意照会) */
	private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";
	/** テンプレートID(サービス契約一意照会明細) */
	private static final String TEMPLATE_ID_EKK0081A010_DETAIL = EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST;
	/** IN項目リスト(サービス契約一意照会) */
	private static final List<String> IN_COLUMN_LIST_EKK0081A010 = Arrays.asList(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, EKK0081A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(サービス契約一意照会) */
	private static final String ERROR_COLUMN_EKK0081A010 = EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(サービス契約一意照会) */
	private static final String TEMP_TEMPLATE_KEY_EKK0081A010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0081A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 請求契約一覧照会（サービス契約番号） ■□ */
	/** テンプレートID(請求契約一覧照会（サービス契約番号）) */
	private static final String TEMPLATE_ID_EKK0491B507 = "EKK0491B507";
	/** テンプレートID(請求契約一覧照会（サービス契約番号）明細) */
	private static final String TEMPLATE_ID_EKK0491B507_DETAIL = EKK0491B507CBSMsg.EKK0491B507CBSMSG1LIST;
	/** IN項目リスト(請求契約一覧照会（サービス契約番号）) */
	private static final List<String> IN_COLUMN_LIST_EKK0491B507 = Arrays.asList(EKK0491B507CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目(請求契約一覧照会（サービス契約番号）) */
	private static final String ERROR_COLUMN_EKK0491B507 = EKK0491B507CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(請求契約一覧照会（サービス契約番号）) */
	private static final String TEMP_TEMPLATE_KEY_EKK0491B507 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0491B507 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 請求契約一覧照会（予約手続中） ■□ */
	/** テンプレートID(請求契約一覧照会（予約手続中）) */
	private static final String TEMPLATE_ID_EKK0491B508 = "EKK0491B508";
	/** テンプレートID(請求契約一覧照会（予約手続中）明細) */
	private static final String TEMPLATE_ID_EKK0491B508_DETAIL = EKK0491B508CBSMsg.EKK0491B508CBSMSG1LIST;
	/** IN項目リスト(請求契約一覧照会（予約手続中）) */
	private static final List<String> IN_COLUMN_LIST_EKK0491B508 = Arrays.asList(EKK0491B508CBSMsg.KEY_SYSID);
	/** 関連チェックエラー項目(請求契約一覧照会（予約手続中）) */
	private static final String ERROR_COLUMN_EKK0491B508 = EKK0491B508CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(請求契約一覧照会（予約手続中）) */
	private static final String TEMP_TEMPLATE_KEY_EKK0491B508 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0491B508 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 同一請求先照会 ■□ */
	/** テンプレートID(同一請求先照会) */
	private static final String TEMPLATE_ID_EKK0321B501 = "EKK0321B501";
	/** テンプレートID(同一請求先照会明細) */
	private static final String TEMPLATE_ID_EKK0321B501_DETAIL = EKK0321B501CBSMsg.EKK0321B501CBSMSG1LIST;
	/** IN項目リスト(同一請求先照会) */
	private static final List<String> IN_COLUMN_LIST_EKK0321B501 = Arrays.asList(EKK0321B501CBSMsg.KEY_SEIKY_KEI_NO);
	/** 関連チェックエラー項目(同一請求先照会) */
	private static final String ERROR_COLUMN_EKK0321B501 = EKK0321B501CBSMsg.KEY_SEIKY_KEI_NO_ERR;
	/** SC実行結果取得キー(同一請求先照会) */
	private static final String TEMP_TEMPLATE_KEY_EKK0321B501 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0321B501 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ お客様一意照会 ■□ */
	/** テンプレートID(お客様一意照会) */
	private static final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";
	/** テンプレートID(お客様一意照会明細) */
	private static final String TEMPLATE_ID_ECK0011A010_DETAIL = ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST;
	/** IN項目リスト(お客様一意照会) */
	private static final List<String> IN_COLUMN_LIST_ECK0011A010 = Arrays.asList(ECK0011A010CBSMsg.KEY_SYSID, ECK0011A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(お客様一意照会) */
	private static final String ERROR_COLUMN_ECK0011A010 = ECK0011A010CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(お客様一意照会) */
	private static final String TEMP_TEMPLATE_KEY_ECK0011A010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_ECK0011A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 解約済以外サービス契約一覧照会（SYSID） ■□ */
	/** テンプレートID(解約済以外サービス契約一覧照会（SYSID）) */
	private static final String TEMPLATE_ID_EKK0081B003 = "EKK0081B003";
	/** テンプレートID(解約済以外サービス契約一覧照会（SYSID）明細) */
	private static final String TEMPLATE_ID_EKK0081B003_DETAIL = EKK0081B003CBSMsg.EKK0081B003CBSMSG1LIST;
	/** IN項目リスト(解約済以外サービス契約一覧照会（SYSID）) */
	private static final List<String> IN_COLUMN_LIST_EKK0081B003 = Arrays.asList(EKK0081B003CBSMsg.KEY_SYSID);
	/** 関連チェックエラー項目(解約済以外サービス契約一覧照会（SYSID）) */
	private static final String ERROR_COLUMN_EKK0081B003 = EKK0081B003CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(解約済以外サービス契約一覧照会（SYSID）) */
	private static final String TEMP_TEMPLATE_KEY_EKK0081B003 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0081B003 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 請求抑止一覧照会（口座番号表示抑止制御） ■□ */
	/** テンプレートID(請求抑止一覧照会（口座番号表示抑止制御）) */
	private static final String TEMPLATE_ID_EKK0541B502 = "EKK0541B502";
	/** テンプレートID(請求抑止一覧照会（口座番号表示抑止制御）明細) */
	private static final String TEMPLATE_ID_EKK0541B502_DETAIL = EKK0541B502CBSMsg.EKK0541B502CBSMSG1LIST;
	/** IN項目リスト(請求抑止一覧照会（口座番号表示抑止制御）) */
	private static final List<String> IN_COLUMN_LIST_EKK0541B502 = Arrays.asList(EKK0541B502CBSMsg.KEY_SEIKY_KEI_NO);
	/** 関連チェックエラー項目(請求抑止一覧照会（口座番号表示抑止制御）) */
	private static final String ERROR_COLUMN_EKK0541B502 = EKK0541B502CBSMsg.KEY_SEIKY_KEI_NO_ERR;
	/** SC実行結果取得キー(請求抑止一覧照会（口座番号表示抑止制御）) */
	private static final String TEMP_TEMPLATE_KEY_EKK0541B502 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0541B502 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 請求契約一意照会 ■□ */
	/** テンプレートID(請求契約一意照会) */
	private static final String TEMPLATE_ID_EKK0491A010 = "EKK0491A010";
	/** テンプレートID(請求契約一意照会明細) */
	private static final String TEMPLATE_ID_EKK0491A010_DETAIL = EKK0491A010CBSMsg.EKK0491A010CBSMSG1LIST;
	/** IN項目リスト(請求契約一意照会) */
	private static final List<String> IN_COLUMN_LIST_EKK0491A010 = Arrays.asList(EKK0491A010CBSMsg.KEY_SEIKY_KEI_NO,
			EKK0491A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(請求契約一意照会) */
	private static final String ERROR_COLUMN_EKK0491A010 = EKK0491A010CBSMsg.KEY_SEIKY_KEI_NO_ERR;
	/** SC実行結果取得キー(請求契約一意照会) */
	private static final String TEMP_TEMPLATE_KEY_EKK0491A010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0491A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 同一請求内サービス契約一覧照会 ■□ */
	/** テンプレートID(同一請求内サービス契約一覧照会) */
	private static final String TEMPLATE_ID_EKK0081B036 = "EKK0081B036";
	/** テンプレートID(同一請求内サービス契約一覧照会明細) */
	private static final String TEMPLATE_ID_EKK0081B036_DETAIL = EKK0081B036CBSMsg.EKK0081B036CBSMSG1LIST;
	/** IN項目リスト(同一請求内サービス契約一覧照会) */
	private static final List<String> IN_COLUMN_LIST_EKK0081B036 = Arrays.asList(EKK0081B036CBSMsg.KEY_SEIKY_KEI_NO);
	/** 関連チェックエラー項目(同一請求内サービス契約一覧照会) */
	private static final String ERROR_COLUMN_EKK0081B036 = EKK0081B036CBSMsg.KEY_SEIKY_KEI_NO_ERR;
	/** SC実行結果取得キー(同一請求内サービス契約一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_EKK0081B036 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0081B036 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ エラー項目ID ■□ */
	/** エラー項目ID：in_mskm_no_err */
	private static final String ERROR_ITEM_IN_MSKM_NO = "in_mskm_no_err";
	/** エラー項目ID：mskm_no_not_found_err */
	private static final String ERROR_ITEM_MSKM_NO_NOT_FOUND = "mskm_no_not_found_err";
	/** エラー項目ID：seiky_kei_not_found_err */
	private static final String ERROR_ITEM_SEIKY_KEI_NOT_FOUND = "seiky_kei_not_found_err";
	/** エラー項目ID：seiky_kei_fukusu_err */
	private static final String ERROR_ITEM_SEIKY_KEI_FUKUSU = "seiky_kei_fukusu_err";
	/** エラー項目ID：same_seikyno_rsv_err */
	private static final String ERROR_ITEM_SAME_SEIKYNO_RSV = "same_seikyno_rsv_err";
	/** エラー項目ID：diff_seikyno_rsv_err */
	private static final String ERROR_ITEM_DIFF_SEIKYNO_RSV = "diff_seikyno_rsv_err";
	/** エラー項目ID：cust_nm_fukusu_err */
	private static final String ERROR_ITEM_CUST_NM_FUKUSU = "cust_nm_fukusu_err";
	/** エラー項目ID：mansion_owner_id_err */
	private static final String ERROR_ITEM_MANSION_OWNER_ID = "mansion_owner_id_err";
	/** エラー項目ID：seiky_yoksi_cd_err */
	private static final String ERROR_ITEM_SEIKY_YOKSI_CD = "seiky_yoksi_cd_err";
	/** エラー項目ID：web_op_add_kh_err */
	private static final String ERROR_ITEM_WEB_OP_ADD_KH = "web_op_add_kh_err";
	/** エラー項目ID：svc_kei_stat_err */
	private static final String ERROR_ITEM_SVC_KEI_STAT = "svc_kei_stat_err";
	/** エラー項目ID：svc_kei_prc_grp_cd_err */
	private static final String ERROR_ITEM_SVC_KEI_PRC_GRP_CD = "svc_kei_prc_grp_cd_err";
	/** エラー項目ID：sysid_not_search_err */
	private static final String ERROR_ITEM_SYSID_NOT_SEARCH = "sysid_not_search_err";
	/** エラー項目ID：svc_kei_not_found_err */
	private static final String ERROR_ITEM_SVC_KEI_NOT_FOUND = "svc_kei_not_found_err";

	/* ■□ IN項目 ■□ */
	/** IN：機能コード */
	private static final String FUNC_CODE = "func_code";
	/** IN：申込番号 */
	private static final String IN_MSKM_NO = "in_mskm_no";
	/** IN：申込可能料金グループコード */
	private static final String IN_MSKM_OK_PRC_GRP_CD = "in_mskm_ok_prc_grp_cd";
	/** IN：申込可能サービス契約ステータス */
	private static final String IN_MSKM_OK_SVC_KEI_STAT = "in_mskm_ok_svc_kei_stat";

	/* ■□ OUT項目 ■□ */
	/** OUT：請求契約番号 */
	private static final String OUT_SEIKY_KEI_NO = "out_seiky_kei_no";
	/** OUT：請求方法コード */
	private static final String OUT_SEIKY_WAY_CD = "out_seiky_way_cd";
	/** OUT：請求方法番号(クレジットカード) */
	private static final String OUT_SEIKY_WAY_NO_CRECARD = "out_seiky_way_no_crecard";
	/** OUT：請求方法番号(口座) */
	private static final String OUT_SEIKY_WAY_NO_KOZA = "out_seiky_way_no_koza";
	/** OUT：最終更新年月日時分秒(請求契約) */
	private static final String OUT_SEIKY_LAST_UPD_DTM = "out_seiky_last_upd_dtm";
	/** OUT：お客様名 */
	private static final String OUT_CUST_NM = "out_cust_nm";
	/** OUT：お客様名カナ */
	private static final String OUT_CUST_NM_KANA = "out_cust_nm_kana";
	/** OUT：サービス契約リスト */
	private static final String OUT_SVC_KEI_LIST = "out_svc_kei_list";
	/** OUT：サービス契約リスト(請求契約) */
	private static final String OUT_SEIKY_KEI_SVC_KEI_LIST = "out_seiky_kei_svc_kei_list";

	/* ■□ その他 ■□ */
	/** サービス契約ステータス：解約・キャンセル */
	private static final List<String> SVC_KEI_NG_STAT_LIST = Arrays.asList(JFUStrConst.CD00037_910, JFUStrConst.CD00037_920);
	/** 項目ID：サービス契約情報リスト */
	private static final String MSKM_SVC_KEI_LIST = "mskm_svc_kei_list";
	/** 項目ID：全サービス契約情報リスト */
	private static final String SVC_KEI_ALL_LIST = "svc_kei_all_list";
	/** 項目ID：サービス契約情報リスト(請求契約) */
	private static final String SEIKY_KEI_SVC_KEI_LIST = "seiky_kei_svc_kei_list";
	/** 項目ID：SYSID(ワーク) */
	private static final String WORK_SYSID = "work_sysid";
	/** 項目ID：請求契約番号(ワーク) */
	private static final String WORK_SEIKY_KEI_NO = "work_seiky_kei_no";
	/** 項目ID：請求方法コード(ワーク) */
	private static final String WORK_SEIKY_WAY_CD = "work_seiky_way_cd";
	/** 項目ID：請求方法番号(クレジットカード) */
	private static final String WORK_SEIKY_WAY_NO_CRECARD = "work_seiky_way_no_crecard";
	/** 項目ID：請求方法番号(口座) */
	private static final String WORK_SEIKY_WAY_NO_KOZA = "work_seiky_way_no_koza";
	/** 項目ID：最終更新年月日時分秒(ワーク) */
	private static final String WORK_SEIKY_LAST_UPD_DTM = "work_seiky_last_upd_dtm";
	/** 項目ID：お客様名 */
	private static final String WORK_CUST_NM = "work_cust_nm";
	/** 項目ID：お客様名カナ */
	private static final String WORK_CUST_NM_KANA = "work_cust_nm_kana";

	/**
	 * メイン処理です。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		// 実行判定
		if(!JPCModelConstant.FUNC_CD_1.equals((String)inMap.get(FUNC_CODE)))
		{
			// 機能コードが「1：チェック実施」以外の場合は実行しない
			return param;
		}

		// ●請求契約取得処理
		getSeikyKeiInfo(handle, param, fixedText);

		// ●請求契約複数チェック
		chkSeikyKeiNo(handle, param, fixedText);

		// ●同一請求契約番号、同一請求契約番号以外の予約存在チェック
		chkSeikyKeiRsv(handle, param, fixedText);

		// ●お客様名複数チェック
		chkCustNm(handle, param, fixedText);

		// ●マンションオーナーIDチェック
		chkMansionOwnerId(handle, param, fixedText);

		// ●請求抑止コード「05：ＷＥＢ請求情報公開要否」チェック
		chkSeikyYoksiCd(handle, param, fixedText);

		// ●WEBオプション追加可否チェック
		chkWebOpAddKh(param, fixedText);

		// ●申込可能ステータスとサービスのチェック
		chkSvcAndStat(param, fixedText);

		// ●返却値設定
		setResult(param, fixedText);

		return param;
	}

	/**
	 * チェック処理です。
	 * 
	 * <br>
	 * @param handle セッションハンドルo
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}

	/**
	 * 請求契約情報取得処理です。
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void getSeikyKeiInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		// 申込番号
		String inMskmNo = (String)inMap.get(IN_MSKM_NO);

		if(JFUBPCommon.isNull(inMskmNo))
		{
			// 申込番号が未設定
			setRelationErrorInfo(param, TEMPLATE_ID_EKK0021B504, ERROR_ITEM_IN_MSKM_NO, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
					String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
		}

		// ●EKK0021B504_申込書番号（申込書明細番号）存在チェック一覧参照
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0021B504);
		// 上りマッピング
		setEKK0021B504(param, fixedText, inMskmNo);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0021B504, TEMPLATE_ID_EKK0021B504_DETAIL, IN_COLUMN_LIST_EKK0021B504,
				ERROR_COLUMN_EKK0021B504);
		// 結果取得
		List<HashMap> eKK0021B504List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0021B504),
				TEMPLATE_ID_EKK0021B504_DETAIL);

		// 結果チェック
		List<String> mskmDtlNoList = new ArrayList<String>();
		if(isNullForList(eKK0021B504List))
		{
			// ●EKU0091B020_申込明細_工事案件一覧照会（工事案件番号）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_EKU0091B020);
			// 上りマッピング
			setEKU0091B020(param, fixedText, inMskmNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_EKU0091B020, TEMPLATE_ID_EKU0091B020_DETAIL, IN_COLUMN_LIST_EKU0091B020,
					ERROR_COLUMN_EKU0091B020);
			// 結果取得
			List<HashMap> eKU0091B020List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKU0091B020),
					TEMPLATE_ID_EKU0091B020_DETAIL);

			if(isNullForList(eKU0091B020List))
			{
				// 結果なし
				setRelationErrorInfo(param, TEMPLATE_ID_EKK0021B504, ERROR_ITEM_MSKM_NO_NOT_FOUND, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
						String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}

			// 結果あり
			for (int i = 0; i < eKU0091B020List.size(); i++)
			{
				HashMap eKU0091B020Map = eKU0091B020List.get(i);
				if (!isNullForMapValue(eKU0091B020Map, EKU0091B020CBSMsg1List.MSKM_DTL_NO)
						&& !mskmDtlNoList.contains((String)eKU0091B020Map.get(EKU0091B020CBSMsg1List.MSKM_DTL_NO)))
				{
					mskmDtlNoList.add((String)eKU0091B020Map.get(EKU0091B020CBSMsg1List.MSKM_DTL_NO));
				}
			}
		}
		else
		{
			// 結果あり
			for (int i = 0; i < eKK0021B504List.size(); i++)
			{
				HashMap eKK0021B504Map = eKK0021B504List.get(i);
				if (!isNullForMapValue(eKK0021B504Map, EKK0021B504CBSMsg1List.MSKM_DTL_NO)
						&& !mskmDtlNoList.contains((String)eKK0021B504Map.get(EKK0021B504CBSMsg1List.MSKM_DTL_NO)))
				{
					mskmDtlNoList.add((String)eKK0021B504Map.get(EKK0021B504CBSMsg1List.MSKM_DTL_NO));
				}
			}
		}

		if(isNullForList(mskmDtlNoList))
		{
			// 結果なし
			setRelationErrorInfo(param, TEMPLATE_ID_EKK0021B504, ERROR_ITEM_MSKM_NO_NOT_FOUND, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
					String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
		}

		// 申込明細番号に紐付く申込明細情報を取得
		ArrayList<HashMap> mskmDtlList = new ArrayList<HashMap>();
		for (int i = 0; i < mskmDtlNoList.size(); i++)
		{
			String mskmDtlNo = mskmDtlNoList.get(i);

			// ●EKK0021A010_申込明細一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_EKK0021A010);
			// 上りマッピング
			setEKK0021A010(param, fixedText, mskmDtlNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0021A010, TEMPLATE_ID_EKK0021A010_DETAIL, IN_COLUMN_LIST_EKK0021A010,
					ERROR_COLUMN_EKK0021A010);
			// 結果取得
			List<HashMap> eKK0021A010List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0021A010),
					TEMPLATE_ID_EKK0021A010_DETAIL);

			if(isNullForList(eKK0021A010List))
			{
				continue;
			}

			for (int j = 0; j < eKK0021A010List.size(); j++)
			{
				HashMap eKK0021A010Map = eKK0021A010List.get(j);

				if(eKK0021A010Map != null && eKK0021A010Map.size() > 0)
				{
					// 申込明細情報を格納
					mskmDtlList.add(eKK0021A010Map);
				}
			}
		}

		// SYSIDチェック
		String sysid = JFUStrConst.EMPTY;
		List<String> sysidList = new ArrayList<String>();
		for (int j = 0; j < mskmDtlList.size(); j++)
		{
			HashMap mskmDtlMap = mskmDtlList.get(j);

			if(!isNullForMapValue(mskmDtlMap, EKK0021A010CBSMsg1List.SYSID)
					&& !sysidList.contains((String)mskmDtlMap.get(EKK0021A010CBSMsg1List.SYSID)))
			{
				// SYSIDリストに格納
				sysidList.add((String)mskmDtlMap.get(EKK0021A010CBSMsg1List.SYSID));
			}
		}

		if(sysidList == null || sysidList.size() == 0 || sysidList.size() > 1)
		{
			// SYSIDが取得できない、または、SYSIDが複数存在する
			setRelationErrorInfo(param, TEMPLATE_ID_EKK0021A010, ERROR_ITEM_SYSID_NOT_SEARCH, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
					String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
		}
		else
		{
			// SYSIDを特定
			sysid = sysidList.get(0);
		}

		// ●申込書番号に紐付くサービス契約情報リスト
		ArrayList<HashMap> mskmSvcKeiList = getMskmSvcKeiList(handle, param, fixedText, mskmDtlList);

		if(isNullForList(mskmSvcKeiList))
		{
			// 有効なサービス契約が存在しない
			setRelationErrorInfo(param, TEMPLATE_ID_EKK0081A010, ERROR_ITEM_SVC_KEI_NOT_FOUND, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
					String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
		}

		// サービス契約情報に請求契約情報を設定
		for (int i = 0; i < mskmSvcKeiList.size(); i++)
		{
			HashMap mskmSvcKeiMap = mskmSvcKeiList.get(i);

			// ●EKK0491B507_請求契約一覧照会（サービス契約番号）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_EKK0491B507);
			// 上りマッピング
			setEKK0491B507(param, fixedText, (String)mskmSvcKeiMap.get(EKK0081B004CBSMsg1List.SVC_KEI_NO));
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0491B507, TEMPLATE_ID_EKK0491B507_DETAIL, IN_COLUMN_LIST_EKK0491B507,
					ERROR_COLUMN_EKK0491B507);
			// 結果取得
			List<HashMap> eKK0491B507List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0491B507),
						TEMPLATE_ID_EKK0491B507_DETAIL);

			if(!isNullForList(eKK0491B507List))
			{
				for (int j = 0; j < eKK0491B507List.size(); j++)
				{
					HashMap eKK0491B507Map = eKK0491B507List.get(j);

					if(isNullForMapValue(eKK0491B507Map, EKK0491B507CBSMsg1List.SEIKY_KEI_NO))
					{
						continue;
					}

					mskmSvcKeiMap.put(EKK0491B507CBSMsg1List.SEIKY_KEI_NO, eKK0491B507Map.get(EKK0491B507CBSMsg1List.SEIKY_KEI_NO));
					mskmSvcKeiMap.put(EKK0491B507CBSMsg1List.SEIKY_KEI_STAT, eKK0491B507Map.get(EKK0491B507CBSMsg1List.SEIKY_KEI_STAT));
				}
			}
		}

		// サービス契約情報リストを格納
		inMap.put(MSKM_SVC_KEI_LIST, mskmSvcKeiList);
		// SYSIDを格納
		inMap.put(WORK_SYSID, sysid);

		// 全サービス契約情報リストを取得
		getSvcKeiAllList(handle, param, fixedText);
	}

	/**
	 * 申込書番号に紐付くサービス契約リストを取得します。
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param mskmDtlList
	 * @return サービス契約リスト
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap> getMskmSvcKeiList(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			ArrayList mskmDtlList) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		ArrayList<HashMap> svcKeiInfoList = new ArrayList<HashMap>();

		for (int i = 0; i < mskmDtlList.size(); i++)
		{
			HashMap mskmDtlMap = (HashMap)mskmDtlList.get(i);

			// SYSID
			String sysid = (String)mskmDtlMap.get(EKK0021A010CBSMsg1List.SYSID);
			// 申込明細番号
			String mskmDtlNo = (String)mskmDtlMap.get(EKK0021A010CBSMsg1List.MSKM_DTL_NO);

			// ●EKK0081B548_サービス契約一覧照会(履歴)
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_EKK0081B548);
			// 上りマッピング
			setEKK0081B548(param, fixedText, sysid, mskmDtlNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0081B548, TEMPLATE_ID_EKK0081B548_DETAIL, IN_COLUMN_LIST_EKK0081B548,
					ERROR_COLUMN_EKK0081B548);
			// 結果取得
			List<HashMap> eKK0081B548List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0081B548),
						TEMPLATE_ID_EKK0081B548_DETAIL);

			if(isNullForList(eKK0081B548List))
			{
				continue;
			}

			// カレント情報取得
			for (int j = 0; j < eKK0081B548List.size(); j++)
			{
				HashMap eKK0081B548Map = eKK0081B548List.get(j);

				if(isNullForMapValue(eKK0081B548Map, EKK0081B548CBSMsg1List.SVC_KEI_NO))
				{
					continue;
				}

				// ●EKK0081A010_サービス契約一意照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COLUMN_LIST_EKK0081A010);
				// 上りマッピング
				setEKK0081A010(param, fixedText, (String)eKK0081B548Map.get(EKK0081B548CBSMsg1List.SVC_KEI_NO));
				//検索エラーなし設定
				ignoreSearchError(param, fixedText);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0081A010, TEMPLATE_ID_EKK0081A010_DETAIL, IN_COLUMN_LIST_EKK0081A010,
						ERROR_COLUMN_EKK0081A010);
				// 結果取得
				List<HashMap> eKK0081A010List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0081A010),
							TEMPLATE_ID_EKK0081A010_DETAIL);

				if(isNullForList(eKK0081A010List))
				{
					continue;
				}

				for (int k = 0; k < eKK0081A010List.size(); k++)
				{
					HashMap eKK0081A010Map = eKK0081A010List.get(k);

					if(isNullForMapValue(eKK0081A010Map, EKK0081A010CBSMsg1List.SYSID))
					{
						continue;
					}

					if(!sysid.equals(eKK0081A010Map.get(EKK0081A010CBSMsg1List.SYSID)))
					{
						// SYSIDが異なるものは除外する
						continue;
					}

					if(SVC_KEI_NG_STAT_LIST.contains(eKK0081A010Map.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT)))
					{
						// 910、920は除外する
						continue;
					}

					svcKeiInfoList.add(eKK0081A010Map);
				}
			}
		}

		return svcKeiInfoList;
	}

	/**
	 * 請求契約複数チェック処理です。
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void chkSeikyKeiNo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		// サービス契約情報リスト
		ArrayList<HashMap> mskmSvcKeiList = (ArrayList<HashMap>)inMap.get(MSKM_SVC_KEI_LIST);

		// 請求契約番号を特定
		List<String> seikyKeiNoList = new ArrayList<String>();
		String seikyKeiNo = JFUStrConst.EMPTY;
		for (int i = 0; i < mskmSvcKeiList.size(); i++)
		{
			HashMap mskmSvcKeiMap = mskmSvcKeiList.get(i);

			if(!isNullForMapValue(mskmSvcKeiMap, EKK0491B507CBSMsg1List.SEIKY_KEI_NO)
					&& JFUStrConst.CD00057_100.equals(mskmSvcKeiMap.get(EKK0491B507CBSMsg1List.SEIKY_KEI_STAT))
					&& !seikyKeiNoList.contains((String)mskmSvcKeiMap.get(EKK0491B507CBSMsg1List.SEIKY_KEI_NO)))
			{
				// 有効な請求契約を格納
				seikyKeiNoList.add((String)mskmSvcKeiMap.get(EKK0491B507CBSMsg1List.SEIKY_KEI_NO));
			}
		}

		if(seikyKeiNoList == null || seikyKeiNoList.size() == 0)
		{
			// 請求契約番号が存在しない
			setRelationErrorInfo(param, TEMPLATE_ID_EKK0491B507, ERROR_ITEM_SEIKY_KEI_NOT_FOUND, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
					String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
		}
		else if(seikyKeiNoList.size() > 1)
		{
			// 請求契約番号が複数存在する
			setRelationErrorInfo(param, TEMPLATE_ID_EKK0491B507, ERROR_ITEM_SEIKY_KEI_FUKUSU, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
					String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
		}
		else
		{
			// 請求契約番号を特定
			seikyKeiNo = seikyKeiNoList.get(0);
		}

		// ●EKK0491A010_請求契約一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0491A010);
		// 上りマッピング
		setEKK0491A010(param, fixedText, seikyKeiNo);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0491A010, TEMPLATE_ID_EKK0491A010_DETAIL, IN_COLUMN_LIST_EKK0491A010,
				ERROR_COLUMN_EKK0491A010);
		// 結果取得
		List<HashMap> eKK0491A010List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0491A010),
					TEMPLATE_ID_EKK0491A010_DETAIL);

		// 必要な情報を取得
		String seikyWayCd = JFUStrConst.EMPTY;
		String seikyWayNoCrecard = JFUStrConst.EMPTY;
		String seikyWayNoKoza = JFUStrConst.EMPTY;
		String seikyKeiLastUpdDtm = JFUStrConst.EMPTY;
		if(!isNullForList(eKK0491A010List))
		{
			for (int i = 0; i < eKK0491A010List.size(); i++)
			{
				HashMap eKK0491A010Map = eKK0491A010List.get(i);

				// 請求方法コード
				if(!isNullForMapValue(eKK0491A010Map, EKK0491A010CBSMsg1List.SEIKY_WAY_CD))
				{
					seikyWayCd = (String)eKK0491A010Map.get(EKK0491A010CBSMsg1List.SEIKY_WAY_CD);
				}

				// 請求方法番号(クレジットカード)
				if(!isNullForMapValue(eKK0491A010Map, EKK0491A010CBSMsg1List.SEIKY_WAY_NO_CRECARD))
				{
					seikyWayNoCrecard = (String)eKK0491A010Map.get(EKK0491A010CBSMsg1List.SEIKY_WAY_NO_CRECARD);
				}

				// 請求方法番号(口座)
				if(!isNullForMapValue(eKK0491A010Map, EKK0491A010CBSMsg1List.SEIKY_WAY_NO_KOZA))
				{
					seikyWayNoKoza = (String)eKK0491A010Map.get(EKK0491A010CBSMsg1List.SEIKY_WAY_NO_KOZA);
				}

				// 最終更新年月日時分秒
				if(!isNullForMapValue(eKK0491A010Map, EKK0491A010CBSMsg1List.LAST_UPD_DTM))
				{
					seikyKeiLastUpdDtm = (String)eKK0491A010Map.get(EKK0491A010CBSMsg1List.LAST_UPD_DTM);
				}
			}
		}

		// ●EKK0081B036_同一請求内サービス契約一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0081B036);
		// 上りマッピング
		setEKK0081B036(param, fixedText, seikyKeiNo);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0081B036, TEMPLATE_ID_EKK0081B036_DETAIL, IN_COLUMN_LIST_EKK0081B036,
				ERROR_COLUMN_EKK0081B036);
		// 結果取得
		List<HashMap> eKK0081B036List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0081B036),
					TEMPLATE_ID_EKK0081B036_DETAIL);

		ArrayList<HashMap> seikyKeiSvcKeiList = new ArrayList<HashMap>();
		if(!isNullForList(eKK0081B036List))
		{
			for (int i = 0; i < eKK0081B036List.size(); i++)
			{
				HashMap eKK0081B036Map = eKK0081B036List.get(i);

				if(eKK0081B036Map == null || eKK0081B036Map.size() == 0)
				{
					continue;
				}

				String svcKeiStat = (String)eKK0081B036Map.get(EKK0081B036CBSMsg1List.SVC_KEI_STAT);
				if(SVC_KEI_NG_STAT_LIST.contains(svcKeiStat))
				{
					// 解約、キャンセルは除外
					continue;
				}

				seikyKeiSvcKeiList.add(eKK0081B036Map);
			}
		}

		// 特定した請求契約情報を格納
		inMap.put(WORK_SEIKY_KEI_NO, seikyKeiNo);
		inMap.put(WORK_SEIKY_WAY_CD, seikyWayCd);
		inMap.put(WORK_SEIKY_WAY_NO_CRECARD, seikyWayNoCrecard);
		inMap.put(WORK_SEIKY_WAY_NO_KOZA, seikyWayNoKoza);
		inMap.put(WORK_SEIKY_LAST_UPD_DTM, seikyKeiLastUpdDtm);
		inMap.put(SEIKY_KEI_SVC_KEI_LIST, seikyKeiSvcKeiList);
	}

	/**
	 * 同一請求契約番号、同一請求契約番号以外の予約存在チェック処理です。
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void chkSeikyKeiRsv(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		// ●EKK0491B508_請求契約一覧照会（予約手続中）
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0491B508);
		// 上りマッピング
		setEKK0491B508(param, fixedText, (String)inMap.get(WORK_SYSID));
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0491B508, TEMPLATE_ID_EKK0491B508_DETAIL, IN_COLUMN_LIST_EKK0491B508,
				ERROR_COLUMN_EKK0491B508);
		// 結果取得
		List<HashMap> eKK0491B508List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0491B508),
					TEMPLATE_ID_EKK0491B508_DETAIL);

		// 自請求契約番号
		String sameSeikyKeiNo = (String)inMap.get(WORK_SEIKY_KEI_NO);

		if(!isNullForList(eKK0491B508List))
		{
			for (int i = 0; i < eKK0491B508List.size(); i++)
			{
				HashMap eKK0491B508Map = eKK0491B508List.get(i);

				if(isNullForMapValue(eKK0491B508Map, EKK0491B508CBSMsg1List.SEIKY_KEI_NO))
				{
					continue;
				}

				String seikyKeiNo = (String)eKK0491B508Map.get(EKK0491B508CBSMsg1List.SEIKY_KEI_NO);

				if (sameSeikyKeiNo.equals(seikyKeiNo))
				{
					// 同一請求番号で予約あり
					setRelationErrorInfo(param, TEMPLATE_ID_EKK0491B508, ERROR_ITEM_SAME_SEIKYNO_RSV, fixedText);
					throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
							String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
				}
				else
				{
					// 同一請求番号以外で予約あり
					setRelationErrorInfo(param, TEMPLATE_ID_EKK0491B508, ERROR_ITEM_DIFF_SEIKYNO_RSV, fixedText);
					throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
							String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
				}
			}
		}
	}

	/**
	 * お客様名複数チェック処理です。
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void chkCustNm(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		// 請求契約番号
		String seikyKeiNo = (String)inMap.get(WORK_SEIKY_KEI_NO);

		// ●EKK0321B501_同一請求先照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0321B501);
		// 上りマッピング
		setEKK0321B501(param, fixedText, seikyKeiNo);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0321B501, TEMPLATE_ID_EKK0321B501_DETAIL, IN_COLUMN_LIST_EKK0321B501,
				ERROR_COLUMN_EKK0321B501);
		// 結果取得
		List<HashMap> eKK0321B501List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0321B501),
					TEMPLATE_ID_EKK0321B501_DETAIL);

		if(isNullForList(eKK0321B501List))
		{
			setRelationErrorInfo(param, TEMPLATE_ID_EKK0321B501, ERROR_ITEM_SEIKY_KEI_NOT_FOUND, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
					String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
		}

		int cnt = 0;
		String custTgt = JFUStrConst.EMPTY;
		String custTgtKana = JFUStrConst.EMPTY;
		for (int i = 0; i < eKK0321B501List.size(); i++)
		{
			HashMap eKK0321B501Map = eKK0321B501List.get(i);

			String sysid = (String)eKK0321B501Map.get(EKK0321B501CBSMsg1List.SYSID);

			if (JFUBPCommon.isNull(sysid))
			{
				continue;
			}

			// ●ECK0011A010_お客様一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_ECK0011A010);
			// 上りマッピング
			setECK0011A010(param, fixedText, sysid);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_ECK0011A010, TEMPLATE_ID_ECK0011A010_DETAIL, IN_COLUMN_LIST_ECK0011A010,
					ERROR_COLUMN_ECK0011A010);
			// 結果取得
			List<HashMap> eCK0011A010List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_ECK0011A010),
					TEMPLATE_ID_ECK0011A010_DETAIL);

			if(!isNullForList(eCK0011A010List))
			{
				for (int j = 0; j < eCK0011A010List.size(); j++)
				{
					HashMap eCK0011A010Map = eCK0011A010List.get(j);

					if(!isNullForMapValue(eCK0011A010Map, ECK0011A010CBSMsg1List.CUST_NM))
					{
						// お客様名
						eKK0321B501Map.put(EKK0321B501CBSMsg1List.CUST_NM, (String)eCK0011A010Map.get(ECK0011A010CBSMsg1List.CUST_NM));
					}

					if(!isNullForMapValue(eCK0011A010Map, ECK0011A010CBSMsg1List.CUST_KANA))
					{
						// お客様名かな
						eKK0321B501Map.put(ECK0011A010CBSMsg1List.CUST_KANA, (String)eCK0011A010Map.get(ECK0011A010CBSMsg1List.CUST_KANA));
					}
				}
			}

			if (cnt == 0)
			{
				//お客様名 (1件目のお客様名を取得)
				custTgt = (String)eKK0321B501Map.get(EKK0321B501CBSMsg1List.CUST_NM);
				custTgtKana = (String)eKK0321B501Map.get(ECK0011A010CBSMsg1List.CUST_KANA);
				cnt++;
			}

			// お客様名(n件目のお客様名を取得)
			String custNm = (String)eKK0321B501Map.get(EKK0321B501CBSMsg1List.CUST_NM);

			if (!(custTgt.equals(custNm)))
			{
				// SYSIDのお客様名が1件でも異なっている
				setRelationErrorInfo(param, TEMPLATE_ID_EKK0491B508, ERROR_ITEM_CUST_NM_FUKUSU, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
						String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}
		}

		// お客様名
		inMap.put(WORK_CUST_NM, custTgt);
		// お客様名カナ
		inMap.put(WORK_CUST_NM_KANA, custTgtKana);
	}

	/**
	 * マンションオーナーIDチェック処理です。
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void chkMansionOwnerId(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		// 全サービス契約情報リスト
		ArrayList<HashMap> svcKeiAllList = (ArrayList<HashMap>)inMap.get(SVC_KEI_ALL_LIST);

		// 請求契約情報取得処理
		for (int i = 0; i < svcKeiAllList.size(); i++)
		{
			HashMap svcKeiAllMap = (HashMap)svcKeiAllList.get(i);

			if(svcKeiAllMap == null || svcKeiAllMap.size() == 0)
			{
				continue;
			}

			if(isNullForMapValue(svcKeiAllMap, EKK0081A010CBSMsg1List.SVC_KEI_NO))
			{
				// サービス契約番号が存在しない、
				continue;
			}

			// サービス契約番号
			String svcKeiNo = (String)svcKeiAllMap.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);

			// ●EKK0491B507_請求契約一覧照会（サービス契約番号）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_EKK0491B507);
			// 上りマッピング
			setEKK0491B507(param, fixedText, svcKeiNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0491B507, TEMPLATE_ID_EKK0491B507_DETAIL, IN_COLUMN_LIST_EKK0491B507,
					ERROR_COLUMN_EKK0491B507);
			// 結果取得
			List<HashMap> eKK0491B507List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0491B507),
						TEMPLATE_ID_EKK0491B507_DETAIL);

			if(!isNullForList(eKK0491B507List))
			{
				for (int j = 0; j < eKK0491B507List.size(); j++)
				{
					HashMap eKK0491B507Map = eKK0491B507List.get(j);

					if(eKK0491B507Map == null || eKK0491B507Map.size() == 0)
					{
						continue;
					}

					// マンションオーナーID
					String mansionOwnrId = (String)eKK0491B507Map.get(EKK0491B507CBSMsg1List.MANSION_OWNR_ID);
					// 請求契約ステータス
					String seikyKeiStat = (String)eKK0491B507Map.get(EKK0491B507CBSMsg1List.SEIKY_KEI_STAT);

					if(JFUStrConst.CD00057_100.equals(seikyKeiStat) && !JFUBPCommon.isNull(mansionOwnrId))
					{
						// 請求契約ステータスが「100」、かつ、マンションオーナーIDがセットされている
						setRelationErrorInfo(param, TEMPLATE_ID_EKK0491B507, ERROR_ITEM_MANSION_OWNER_ID, fixedText);
						throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
								String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
					}
				}
			}
		}
	}

	/**
	 * 請求抑止コード「05：ＷＥＢ請求情報公開要否」チェック処理です。
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void chkSeikyYoksiCd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		String seikyKeiNo = (String)inMap.get(WORK_SEIKY_KEI_NO);

		// ●EKK0541B502_請求抑止一覧照会（口座番号表示抑止制御）
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0541B502);
		// 上りマッピング
		setEKK0541B502(param, fixedText, seikyKeiNo);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0541B502, TEMPLATE_ID_EKK0541B502_DETAIL, IN_COLUMN_LIST_EKK0541B502,
				ERROR_COLUMN_EKK0541B502);
		// 結果取得
		List<HashMap> eKK0541B502List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0541B502),
					TEMPLATE_ID_EKK0541B502_DETAIL);

		if(isNullForList(eKK0541B502List))
		{
			// 結果が存在しない場合はチェックしない
			return;
		}

		for (int i = 0; i < eKK0541B502List.size(); i++)
		{
			HashMap eKK0541B502Map = eKK0541B502List.get(i);

			if(eKK0541B502Map == null || eKK0541B502Map.size() == 0)
			{
				continue;
			}

			if(JFUStrConst.CD00111_05.equals(eKK0541B502Map.get(EKK0541B502CBSMsg1List.SEIKY_YOKSI_CD)))
			{
				// 請求抑止コードが「05：ＷＥＢ請求情報公開要否」である
				setRelationErrorInfo(param, TEMPLATE_ID_EKK0541B502, ERROR_ITEM_SEIKY_YOKSI_CD, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
						String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}
		}
	}

	/**
	 * WEBオプション追加可否チェック処理です。
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void chkWebOpAddKh(IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		// サービス契約情報リスト
		ArrayList<HashMap> svcKeiAllList = (ArrayList<HashMap>)inMap.get(SVC_KEI_ALL_LIST);

		for (int i = 0; i < svcKeiAllList.size(); i++)
		{
			HashMap svcKeiAllMap = svcKeiAllList.get(i);

			if(svcKeiAllMap == null || svcKeiAllMap.size() == 0)
			{
				continue;
			}

			if(JFUStrConst.CD01564_1.equals(svcKeiAllMap.get(EKK0081A010CBSMsg1List.WEB_OP_ADD_FAIL_FLG)))
			{
				// 1つでもWEBオプション追加不可フラグが「1：不可」である
				setRelationErrorInfo(param, TEMPLATE_ID_EKK0081A010, ERROR_ITEM_WEB_OP_ADD_KH, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
						String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}
		}
	}

	/**
	 * 申込可能ステータスとサービスのチェック処理です。
	 * 
	 * <br>
	 * @param param
	 * @param fixedText
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void chkSvcAndStat(IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		// 申込可能料金グループコード
		String mskmOkPrcGrpCd = (String)inMap.get(IN_MSKM_OK_PRC_GRP_CD);
		// 申込可能サービス契約ステータス
		String mskmOkSvcKeiStat = (String)inMap.get(IN_MSKM_OK_SVC_KEI_STAT);

		if(JFUBPCommon.isNull(mskmOkPrcGrpCd) || JFUBPCommon.isNull(mskmOkSvcKeiStat))
		{
			// 値が設定されていない
			return;
		}

		// 申込可能料金グループコードをリスト化
		List<String> mskmOkPrcGrpCdList = new ArrayList<String>();
		if(mskmOkPrcGrpCd.contains(JFUStrConst.COMMA))
		{
			// 複数設定されている
			String[] tmpList = mskmOkPrcGrpCd.split(JFUStrConst.COMMA);

			for (int i = 0; i < tmpList.length; i++)
			{
				if(!JFUBPCommon.isNull(tmpList[i]))
				{
					mskmOkPrcGrpCdList.add(tmpList[i]);
				}
			}
		}
		else
		{
			// 1つだけ設定さている
			mskmOkPrcGrpCdList.add(mskmOkPrcGrpCd);
		}

		// 申込可能サービス契約ステータスをリスト化
		List<String> mskmOkSvcKeiStatList = new ArrayList<String>();
		if(mskmOkSvcKeiStat.contains(JFUStrConst.COMMA))
		{
			// 複数設定されている
			String[] tmpList = mskmOkSvcKeiStat.split(JFUStrConst.COMMA);

			for (int i = 0; i < tmpList.length; i++)
			{
				if(!JFUBPCommon.isNull(tmpList[i]))
				{
					mskmOkSvcKeiStatList.add(tmpList[i]);
				}
			}
		}
		else
		{
			// 1つだけ設定さている
			mskmOkSvcKeiStatList.add(mskmOkSvcKeiStat);
		}

		// サービス契約情報リスト
		ArrayList<HashMap> svcKeiAllList = (ArrayList<HashMap>)inMap.get(SVC_KEI_ALL_LIST);
		// 判定結果
		boolean chkSvc = false;

		for (int i = 0; i < svcKeiAllList.size(); i++)
		{
			HashMap svcKeiAllMap = svcKeiAllList.get(i);

			if(svcKeiAllMap == null || svcKeiAllMap.size() == 0)
			{
				continue;
			}

			String prcGrpCd = (String)svcKeiAllMap.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
			String svcKeiStat = (String)svcKeiAllMap.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
			String shosaDslFinCd = (String)svcKeiAllMap.get(EKK0081A010CBSMsg1List.SHOSA_DSL_FIN_CD);

			if(!mskmOkSvcKeiStatList.contains(svcKeiStat))
			{
				// 1つでも申込可能ステータス以外が存在する
				// 解約・キャンセル済は前処理で外している為、設定されていないステータス(開通後のステータス)が当たる
				setRelationErrorInfo(param, TEMPLATE_ID_EKK0081A010, ERROR_ITEM_SVC_KEI_STAT, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
						String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}

			// 照査済(NG)の場合はOKとしないため処理を飛ばす
			if(JFUStrConst.CD00037_020.equals(svcKeiStat) && JFUStrConst.CD00469_2.equals(shosaDslFinCd))
			{
				continue;
			}

			// ステータスチェックOK
			if(mskmOkPrcGrpCdList.contains(prcGrpCd))
			{
				// 申込可能サービスが1つ以上存在する
				chkSvc = true;
			}
		}

		if(!chkSvc)
		{
			// ステータスチェックOKで申込可能サービスが1つもない
			setRelationErrorInfo(param, TEMPLATE_ID_EKK0081A010, ERROR_ITEM_SVC_KEI_PRC_GRP_CD, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
					String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
		}
	}

	/**
	 * 返却値設定処理です。
	 * 
	 * <br>
	 * @param param
	 * @param fixedText
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void setResult(IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		// 請求契約番号
		inMap.put(OUT_SEIKY_KEI_NO, inMap.get(WORK_SEIKY_KEI_NO));
		// 請求方法コード
		inMap.put(OUT_SEIKY_WAY_CD, inMap.get(WORK_SEIKY_WAY_CD));
		// 請求方法番号(クレジットカード)
		inMap.put(OUT_SEIKY_WAY_NO_CRECARD, inMap.get(WORK_SEIKY_WAY_NO_CRECARD));
		// 請求方法番号(口座)
		inMap.put(OUT_SEIKY_WAY_NO_KOZA, inMap.get(WORK_SEIKY_WAY_NO_KOZA));
		// 最終更新年月日時分秒(請求契約)
		inMap.put(OUT_SEIKY_LAST_UPD_DTM, inMap.get(WORK_SEIKY_LAST_UPD_DTM));
		// お客様名
		inMap.put(OUT_CUST_NM, inMap.get(WORK_CUST_NM));
		// お客様名カナ
		inMap.put(OUT_CUST_NM_KANA, inMap.get(WORK_CUST_NM_KANA));
		// サービス契約リスト
		inMap.put(OUT_SVC_KEI_LIST, inMap.get(SVC_KEI_ALL_LIST));
		// サービス契約リスト(請求契約)
		inMap.put(OUT_SEIKY_KEI_SVC_KEI_LIST, inMap.get(SEIKY_KEI_SVC_KEI_LIST));
	}

	/**
	 * 全サービス契約情報を取得します。
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void getSvcKeiAllList(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		ArrayList<HashMap> svcKeiAllList = new ArrayList<HashMap>();

		// SYSID
		String sysid = (String)inMap.get(WORK_SYSID);

		// ●EKK0081B003_解約済以外サービス契約一覧照会（SYSID）
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0081B003);
		// 上りマッピング
		setEKK0081B003(param, fixedText, sysid);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0081B003, TEMPLATE_ID_EKK0081B003_DETAIL, IN_COLUMN_LIST_EKK0081B003,
				ERROR_COLUMN_EKK0081B003);
		// 結果取得
		List<HashMap> eKK0081B003List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0081B003),
					TEMPLATE_ID_EKK0081B003_DETAIL);

		if(isNullForList(eKK0081B003List))
		{
			// サービス契約取得結果なしの場合、エラー
			// ※この処理に来ることはないが、念のために入れておく
			setRelationErrorInfo(param, TEMPLATE_ID_EKK0081B003, ERROR_ITEM_SVC_KEI_NOT_FOUND, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
					String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
		}

		for (int i = 0; i < eKK0081B003List.size(); i++)
		{
			HashMap eKK0081B003Map = (HashMap)eKK0081B003List.get(i);

			if(eKK0081B003Map == null || eKK0081B003Map.size() == 0)
			{
				continue;
			}

			if(isNullForMapValue(eKK0081B003Map, EKK0081B003CBSMsg1List.SVC_KEI_NO))
			{
				// サービス契約番号が存在しない、
				continue;
			}

			// サービス契約番号
			String svcKeiNo = (String)eKK0081B003Map.get(EKK0081B003CBSMsg1List.SVC_KEI_NO);
			// サービス契約ステータス
			String svcKeiStat = (String)eKK0081B003Map.get(EKK0081B003CBSMsg1List.SVC_KEI_STAT);
			// サービスコード
			String svcCd = (String)eKK0081B003Map.get(EKK0081B003CBSMsg1List.SVC_CD);

			if(JFUStrConst.CD00130_04.equals(svcCd))
			{
				// ホスティングサービスは除外する
				continue;
			}

			if(SVC_KEI_NG_STAT_LIST.contains(svcKeiStat))
			{
				// サービス契約ステータスが「910」「920」のどれかの場合
				continue;
			}

			// ●EKK0081A010_サービス契約一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_EKK0081A010);
			// 上りマッピング
			setEKK0081A010(param, fixedText, svcKeiNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0081A010, TEMPLATE_ID_EKK0081A010_DETAIL, IN_COLUMN_LIST_EKK0081A010,
					ERROR_COLUMN_EKK0081A010);
			// 結果取得
			List<HashMap> eKK0081A010List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0081A010),
						TEMPLATE_ID_EKK0081A010_DETAIL);

			if(isNullForList(eKK0081A010List))
			{
				continue;
			}

			for (int j = 0; j < eKK0081A010List.size(); j++)
			{
				HashMap eKK0081A010Map = eKK0081A010List.get(j);

				if(eKK0081A010Map == null || eKK0081A010Map.size() == 0)
				{
					continue;
				}

				svcKeiAllList.add(eKK0081A010Map);
			}
		}

		// 全サービス契約情報リストを格納
		inMap.put(SVC_KEI_ALL_LIST, svcKeiAllList);
	}

	/**
	 * 申込書番号（申込書明細番号）存在チェック一覧参照の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param mskmNo
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0021B504(IRequestParameterReadWrite param, String fixedText, String mskmNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿申込書番号
		inMap.put(EKK0021B504CBSMsg.KEY_MSKMSHO_NO, mskmNo);
	}

	/**
	 * 申込明細_工事案件一覧照会（工事案件番号）の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param mskmNo
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKU0091B020(IRequestParameterReadWrite param, String fixedText, String mskmNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿申込書番号
		inMap.put(EKU0091B020CBSMsg.KEY_KOJIAK_NO, mskmNo);
	}

	/**
	 * 申込明細一意照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param mskmDtlNo
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0021A010(IRequestParameterReadWrite param, String fixedText, String mskmDtlNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);
		// ＫＥＹ＿申込明細番号
		inMap.put(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, mskmDtlNo);
	}

	/**
	 * サービス契約一覧照会(履歴)の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param sysid
	 * @param mskmDtlNo
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0081B548(IRequestParameterReadWrite param, String fixedText, String sysid, String mskmDtlNo)
		throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿SYSID
		inMap.put(EKK0081B548CBSMsg.KEY_SYSID, sysid);
		// ＫＥＹ＿申込明細番号
		inMap.put(EKK0081B548CBSMsg.KEY_MSKM_DTL_NO, mskmDtlNo);
	}

	/**
	 * サービス契約一意照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param svcKeiNo
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0081A010(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);
		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));
	}

	/**
	 * 請求契約一覧照会（サービス契約番号）の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param svcKeiNo
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0491B507(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0491B507CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * 請求契約一覧照会（予約手続中）の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param sysid
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0491B508(IRequestParameterReadWrite param, String fixedText, String sysid) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿SYSID
		inMap.put(EKK0491B508CBSMsg.KEY_SYSID, sysid);
	}

	/**
	 * 同一請求先照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param seikyKeiNo
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0321B501(IRequestParameterReadWrite param, String fixedText, String seikyKeiNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿請求契約番号
		inMap.put(EKK0321B501CBSMsg.KEY_SEIKY_KEI_NO, seikyKeiNo);
	}

	/**
	 * お客様一意照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param sysid
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setECK0011A010(IRequestParameterReadWrite param, String fixedText, String sysid) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);
		// ＫＥＹ＿SYSID
		inMap.put(ECK0011A010CBSMsg.KEY_SYSID, sysid);
		// ＫＥＹ＿予約適用年月日
		inMap.put(ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));
	}

	/**
	 * 解約済以外サービス契約一覧照会（SYSID）の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param sysid
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0081B003(IRequestParameterReadWrite param, String fixedText, String sysid) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);
		// ＫＥＹ＿SYSID
		inMap.put(EKK0081B003CBSMsg.KEY_SYSID, sysid);
	}

	/**
	 * 請求抑止一覧照会（口座番号表示抑止制御）の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param seikyKeiNo
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0541B502(IRequestParameterReadWrite param, String fixedText, String seikyKeiNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿SYSID
		inMap.put(EKK0541B502CBSMsg.KEY_SEIKY_KEI_NO, seikyKeiNo);
	}

	/**
	 * 請求契約一意照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param seikyKeiNo
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0491A010(IRequestParameterReadWrite param, String fixedText, String seikyKeiNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);
		// ＫＥＹ＿請求契約番号
		inMap.put(EKK0491A010CBSMsg.KEY_SEIKY_KEI_NO, seikyKeiNo);
		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK0491A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));
	}

	/**
	 * 同一請求内サービス契約一覧照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param seikyKeiNo
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0081B036(IRequestParameterReadWrite param, String fixedText, String seikyKeiNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿請求契約番号
		inMap.put(EKK0081B036CBSMsg.KEY_SEIKY_KEI_NO, seikyKeiNo);
	}

	/**
	 * リストのNULLチェック処理です。
	 * 
	 * <br>
	 * @param list リスト
	 * @return true:NULLまたは空 / false:値あり
	 */
	@SuppressWarnings("unchecked")
	private boolean isNullForList(List list)
	{
		boolean result = false;

		if(list == null || list.size() == 0)
		{
			// リストがNULLまたは空
			result = true;
		}

		return result;
	}

	/**
	 * マップ値のNULLチェック処理です。
	 * 
	 * <br>
	 * @param map マップ
	 * @param itemNm 項目名
	 * @return true:NULLまたは空 / false:値あり
	 */
	@SuppressWarnings("unchecked")
	private boolean isNullForMapValue(HashMap map, String itemNm)
	{
		boolean result = true;

		if (map != null && map.containsKey(itemNm) && !JFUBPCommon.isNull(map.get(itemNm)))
		{
			// マップがNULL以外、マップに指定キーが存在する、値がNULLまたは空でない
			result = false;
		}

		return result;
	}
}
