/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JCKCustAddChkCC
*	ソースファイル名：JCKCustAddChkCC.java
*	作成者			：FJ
*	日付			：2012年12月10日
*＜機能概要＞
*	お客様登録チェック処理の共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/12/21	FJ）庭山	【IT1-2012-0002526】対応
*	v4.00.01	2012/12/23	FJ）庭山	【IT1-2012-0002546】対応
*	v4.00.02	2012/12/27	FJ）庭山	【IT1-2012-0002602】対応
*	v4.01.00	2013/02/17	FJ）野口	【ST3-2013-0000040】対応
*   v10.00.00   2014/11/04	FJ)舩橋		 ANK-2273-00-00
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
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.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.constant.JCKStrConst;
import eo.common.constant.JZM0171Constant;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011B070CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0021D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0031D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0031D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0111B001CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0111B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0111B003CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0111B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2541B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2541B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0111B040CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0111B040CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0161B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0161B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0171A010CBSMsg;
// ANK-2273-00-00 ADD START
import eo.ejb.cbs.cbsmsg.EKK2951A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2951A010CBSMsg;
// ANK-2273-00-00 ADD END

/**
 * お客様登録チェック共通部品。<p>
 * <BR>
 * @author 富士通
 */
public class JCKCustAddChkCC extends AbstractCommonComponent
{
	/** エイジング一覧照会（ユニーク） */
	private static final String TEMPLATE_ID_EZM0111B040 = "EZM0111B040";
	/** コード名称管理一意照会 */
	private static final String TEMPLATE_ID_EZM0171A010 = "EZM0171A010";
	/** NGワード一覧照会 */
	private static final String TEMPLATE_ID_EZM0161B010 = "EZM0161B010";
	
	/** お客様一意照会 */
	private static final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";
	/** お客様<個人>登録 */
	private static final String TEMPLATE_ID_ECK0021D010 = "ECK0021D010";
	/** お客様<法人>登録 */
	private static final String TEMPLATE_ID_ECK0031D010 = "ECK0031D010";
	/** 同一人チェック（PMP連携用） */
	private static final String TEMPLATE_ID_ECK0011B070 = "ECK0011B070";
	/** グループリーダー一覧照会（POPID） */
	private static final String TEMPLATE_ID_ECK0111B001 = "ECK0111B001";
	/** ファミリー会員グループ一覧照会グループ入会コード */
	private static final String TEMPLATE_ID_ECK0111B003 = "ECK0111B003";
	
	/** 異動予約一覧照会 */
	private static final String TEMPLATE_ID_EKK1681B001 = "EKK1681B001";
	/** 割賦契約履歴一覧照会 */
	private static final String TEMPLATE_ID_EKK2541B002 = "EKK2541B002";
	
	// ANK-2273-00-00 ADD START
	/** ＣＩＣ参照用請求契約一意照会 */
	private static final String TEMPLATE_ID_EKK2951A010 = "EKK2951A010";
	// ANK-2273-00-00 ADD END

	/**
	 * お客様登録の共通処理をする。
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite execute(SessionHandle handle,
												IRequestParameterReadWrite param,
												String fixedText) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		String opeDate = (String)ccMsg.get("ope_date");
		String compSkbtCd = (String)ccMsg.get("comp_skbt_cd");
		boolean kapFlg = false;
		boolean idoRsvFlg = false;
		boolean openChkFlg = false;
		boolean compChkFlg = false;
		
		// ANK-2273-00-00 ADD START
		boolean cicChkFlg = false;
		// ANK-2273-00-00 ADD END

		// SC呼び出し部品のインスタンス生成
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// オープン会員の場合
		if ((Boolean)ccMsg.get("open_mmb_flg"))
		{
			Object[][] eck0011b070In = {{ECK0011B070CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0011B070},
										{ECK0011B070CBSMsg.FUNC_CODE, "1"},
										{ECK0011B070CBSMsg.KEY_FUNC_CODE, "1"},
										{ECK0011B070CBSMsg.KEY_CUST_KANA, ccMsg.get("key_cust_kana")},
										{ECK0011B070CBSMsg.KEY_CUST_BIRTHD, ccMsg.get("key_cust_birthd")},
										{ECK0011B070CBSMsg.KEY_MLAD, ccMsg.get("key_mlad")}};
			
			CAANMsg[] eck0011b070 = callSC(handle, scCall, param, fixedText, eck0011b070In).getCAANMsgList(ECK0011B070CBSMsg.ECK0011B070CBSMSG1LIST);
			if (eck0011b070 != null && eck0011b070.length > 0)
			{
				openChkFlg = true;
			}
			ccMsg.put("open_chk_flg", openChkFlg);
		}
		
		// ファミリー会員の場合
		if ((Boolean)ccMsg.get("family_mmb_flg"))
		{
			ccMsg = getMasterMmb(handle, scCall, param, fixedText, ccMsg, opeDate);
		}
		
		// eoid
		ccMsg.put("eoid_list", callEZM0111B040(handle, scCall, param, fixedText, JCKStrConst.CD00412_EOID, (String)ccMsg.get("eoid")));
		// ニックネーム
		ccMsg.put("nkname_list", callEZM0111B040(handle, scCall, param, fixedText, JCKStrConst.CD00412_NKNAME, (String)ccMsg.get("nkname")));
		
		// 企業識別コード
		if (compSkbtCd != null && compSkbtCd.length() > 0)
		{
			// コード名称管理一意照会
			Object[][] ezm0171a010In = {{EZM0171A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0171A010},
										{EZM0171A010CBSMsg.FUNC_CODE, "1"},
										{EZM0171A010CBSMsg.KEY_CD_SBT_CD, JZM0171Constant.CD00669},
										{EZM0171A010CBSMsg.KEY_CD_DIV, compSkbtCd}};
			
			CAANMsg[] ezm0171a010 = callSC(handle, scCall, param, fixedText, ezm0171a010In).getCAANMsgList(EZM0171A010CBSMsg.EZM0171A010CBSMSG1LIST);
			if (ezm0171a010 == null || ezm0171a010.length == 0)
			{
				compChkFlg = true;
			}
			ccMsg.put("comp_chk_flg", compChkFlg);
		}
		
		// 新規の場合
		if (!(Boolean)ccMsg.get("bnkt_flg"))
		{
			// NGワード一覧照会
			Object[][] ezm0161b010In = {{EZM0161B010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0161B010},
										{EZM0161B010CBSMsg.FUNC_CODE, "1"},
										{EZM0161B010CBSMsg.DISPLAY_NUM, "1"},
										{EZM0161B010CBSMsg.DISPLAY_PAGE_NUM, "1"},
										{EZM0161B010CBSMsg.MAX_SEARCH_NUM, "1000"},
										{EZM0161B010CBSMsg.KEY_NG_WORD_CD, ccMsg.get("key_ng_word_cd")}};
			
			CAANMsg[] ezm0161b010 = callSC(handle, scCall, param, fixedText, ezm0161b010In).getCAANMsgList(EZM0161B010CBSMsg.EZM0161B010CBSMSG1LIST);
			ArrayList list = new ArrayList();
			if (ezm0161b010 != null)
			{
				for (int i = 0; i < ezm0161b010.length; i++)
				{
					HashMap map = new HashMap();
					map.put("ng_word", ezm0161b010[i].getString(EZM0161B010CBSMsg1List.NG_WORD));
					list.add(map);
				}
			}
			ccMsg.put("ng_word_list", list);
			
			// お客様二重チェック
			callCust(handle, scCall, param, fixedText, ccMsg);
			
			return param;
		}
		
		// 異動予約一覧照会
		Object[][] ekk1681b001In = {{EKK1681B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1681B001},
									{EKK1681B001CBSMsg.FUNC_CODE, "1"},
									{EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, ccMsg.get("key_ido_rsv_dtl_cd")},
									{EKK1681B001CBSMsg.KEY_RSV_APLY_YMD, opeDate},
									{EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, ccMsg.get("key_ido_rsv_stat_cd")},
									{EKK1681B001CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("key_svc_kei_no")}};
		
		CAANMsg[] ekk1681b001Out = callSC(handle, scCall, param, fixedText, ekk1681b001In).getCAANMsgList(EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
		if (ekk1681b001Out != null && ekk1681b001Out.length > 0)
		{
			idoRsvFlg = true;
		}
		ccMsg.put("ido_rsv_flg", idoRsvFlg);
		
		// お客様一意照会
		CAANMsg[] eck0011a010Out = callECK0011A010(handle, scCall, param, fixedText, (String)ccMsg.get("key_sysid"), opeDate);
		if (eck0011a010Out != null && eck0011a010Out.length > 0)
		{
			ccMsg.put("ksh_type_cd", eck0011a010Out[0].getString(ECK0011A010CBSMsg1List.KEISHA_TYPE_CD));
		}
		
		// 分割元がマスター会員の場合
		if (isMasterChk(eck0011a010Out))
		{
			
			// 割賦契約履歴一覧照会
			Object[][] ekk2541b002In = {{EKK2541B002CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2541B002},
										{EKK2541B002CBSMsg.FUNC_CODE, "1"},
										{EKK2541B002CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("key_svc_kei_no")}};
			
			CAANMsg[] ekk2541b002 = callSC(handle, scCall, param, fixedText, ekk2541b002In).getCAANMsgList(EKK2541B002CBSMsg.EKK2541B002CBSMSG1LIST);
			
			for (int i = 0; i < ekk2541b002.length; i++)
			{
				CAANMsg msg = ekk2541b002[i];
				
				// 割賦請求終了年月日、割賦契約解約年月、割賦契約キャンセル年月日が未設定の場合
				if (msg.isNull(EKK2541B002CBSMsg1List.KAP_SEIKY_ENDYMD_KK2541)
						&& msg.isNull(EKK2541B002CBSMsg1List.KAP_KEI_DSL_YMD_KK2541)
						&& msg.isNull(EKK2541B002CBSMsg1List.KAP_KEI_CANCEL_YMD_KK2541))
				{
					kapFlg = true;
					break;
				}
			}
		}
		
		ccMsg.put("kap_flg", kapFlg);
		
		// お客様二重チェック
		callCust(handle, scCall, param, fixedText, ccMsg);

		// ANK-2273-00-00 ADD START
		// 請求同時分割の場合
		if ((Boolean)ccMsg.get("seiky_bnkt_flg")) {
			
			// ＣＩＣ参照用請求契約一意照会
			Object[][] ekk2951a010In = {{EKK2951A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2951A010},
										{EKK2951A010CBSMsg.FUNC_CODE, "1"},
										{EKK2951A010CBSMsg.KEY_SEIKY_KEI_NO, ccMsg.get("mt_seiky_kei_no")}};
			
			CAANMsg[] ekk2951a010Out = callSC(handle, scCall, param, fixedText, ekk2951a010In).getCAANMsgList(EKK2951A010CBSMsg.EKK2951A010CBSMSG1LIST);

			// 通常連携以外の場合、NG
			if (ekk2951a010Out != null && ekk2951a010Out.length != 0 &&
				!"00".equals(ekk2951a010Out[0].getString(EKK2951A010CBSMsg1List.CIC_RNKI_NAIYO_CD))) {
				cicChkFlg = true;
			}
		}
		ccMsg.put("cic_chk_flg", cicChkFlg);
		// ANK-2273-00-00 ADD END

		
		return param;
	}

	/**
	 * チェック処理<br>
	 * サービスコンポーネント実行用CAANMsgを返却します。<br>
	 * <br>
	 * @param handle セッションハンドル
	 * @param param (I) 業務データ取得用I/F
	 * @param fixedText (I) ユーザ定義文字列
	 * @return HashMap<String, Object>
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	public  HashMap<String, Object> getInvokeCBS(SessionHandle handle,
												IRequestParameterReadWrite param,
												String fixedText) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		List<CAANMsg> templates = new ArrayList<CAANMsg>();
		
		// チェック用サービスインターフェイス
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, Arrays.asList(templates));
		
		return paramMap;
	}

	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得<br>
	 * 業務データ取得・書込用I/Fをそのまま返却します。<br>
	 * <br>
	 * @param param デルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param,
													CAANMsg[] templates,
													int returnCode,
													String fixedText) throws Throwable
	{
		HashMap<String, Object> dataMap = (HashMap)param.getData(fixedText);
		for (CAANMsg template : templates)
		{
			CAANMsg[] workTemplates = {template};
		}
		return param;
	}

	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param mappingData
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callSC(SessionHandle handle,
							ServiceComponentRequestInvoker scCall,
							IRequestParameterReadWrite param,
							String dataMapKey,
							Object[][] mappingData) throws Exception
	{
		HashMap<String, Object> paramMap = editInMsg(param, mappingData);
		
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[0];
		
		// リターンコード取得
		int returnCode = (Integer)result.get(JCMConstants.RET_CD_INT_KEY);
		
		int templateStatus = msg.getInt(EKK0011D020CBSMsg.STATUS);
		
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		String errCode = null;
		boolean waFlg = false;
		boolean wbFlg = false;
		
		setErrorInf(msg, ccMsg);
		
		if (TEMPLATE_ID_ECK0031D010.equals(mappingData[0][1]))
		{
			ArrayList inList = (ArrayList)mappingData[mappingData.length - 1][1];
			CAANMsg[] templateArray = msg.getCAANMsgList(ECK0031D010CBSMsg.ECK0031D010CBSMSG1LIST);
			
			if (templateArray != null)
			{
				for (int i = 0; i < templateArray.length; i++)
				{
					setErrorInf(templateArray[i], (HashMap)inList.get(i));
				}
			}
			
			errCode = (String)ccMsg.get("cust_nm_err");
			
			if (errCode != null)
			{
				if ("WA".equals(errCode))
				{
					waFlg = true;
				}
				else if ("WB".equals(errCode))
				{
					wbFlg = true;
				}
			}
			ccMsg.put("cust_chk_flg", waFlg);
			ccMsg.put("huryo_chk_flg", wbFlg);
		}
		else if (TEMPLATE_ID_ECK0021D010.equals(mappingData[0][1]))
		{
			errCode = (String)ccMsg.get("member_sbt_cd_err");
			
			if (errCode != null)
			{
				if ("WA".equals(errCode))
				{
					waFlg = true;
				}
				else if ("WB".equals(errCode))
				{
					wbFlg = true;
				}
			}
			ccMsg.put("cust_chk_flg", waFlg);
			ccMsg.put("huryo_chk_flg", wbFlg);
		}
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		/* ◇処理結果の判定*/
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = result.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = msg.getInt(JCMConstants.STATUS_INT_KEY);
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status.intValue()))
		{
/* ++++++++++ v4.01.00 追加開始 ++++++++++ */
			if(!("0".equals(rtnCode) && 4 == status.intValue()))
			{
/* ++++++++++ v4.01.00 追加終了 ++++++++++ */
				SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
				throw scCallEx;
/* ++++++++++ v4.01.00 追加開始 ++++++++++ */
			}
/* ++++++++++ v4.01.00 追加終了 ++++++++++ */

		}
		return msg;
	}

	/**
	 * @param param
	 * @param mappingData
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param,
												Object[][] mappingData) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		
		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		
		String svcIf = (String)mappingData[0][1];
		
		CAANMsg template = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg", svcIf));
		setMsgAll(template);
		
		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));
		
		if (TEMPLATE_ID_ECK0031D010.equals(svcIf))
		{
			for (int i = 0; i < mappingData.length - 1; i++)
			{
				template = setMsgVal(template, (String)mappingData[i][0], (String)mappingData[i][1]);
			}
			
			ArrayList list = (ArrayList)mappingData[mappingData.length - 1][1];
			CAANMsg[] templateArray = template.getCAANMsgList(ECK0031D010CBSMsg.ECK0031D010CBSMSG1LIST);
			if (templateArray == null)
			{
				templateArray = new CAANMsg[1];
			}
			
			HashMap map = (HashMap)list.get(0);
			CAANMsg childTemplate = templateArray[0];
			if (childTemplate == null)
			{
				childTemplate = new CAANMsg(ECK0031D010CBSMsg1List.class.getName());
			}
			
			setMsgAll(childTemplate);
			childTemplate.set(ECK0031D010CBSMsg1List.RRKS_CD, map.get("rrks_cd"));
			childTemplate.set(ECK0031D010CBSMsg1List.HJRRKS_NM, map.get("hjrrks_nm"));
			childTemplate.set(ECK0031D010CBSMsg1List.HJRRKS_AD_CD, map.get("hjrrks_ad_cd"));
			childTemplate.set(ECK0031D010CBSMsg1List.HJRRKS_PCD, map.get("hjrrks_pcd"));
			childTemplate.set(ECK0031D010CBSMsg1List.HJRRKS_STATE_NM, map.get("hjrrks_state_nm"));
			childTemplate.set(ECK0031D010CBSMsg1List.HJRRKS_CITY_NM, map.get("hjrrks_city_nm"));
			childTemplate.set(ECK0031D010CBSMsg1List.HJRRKS_OAZTSU_NM, map.get("hjrrks_oaztsu_nm"));
			childTemplate.set(ECK0031D010CBSMsg1List.HJRRKS_AZCHO_NM, map.get("hjrrks_azcho_nm"));
			childTemplate.set(ECK0031D010CBSMsg1List.HJRRKS_BNCHIGO, map.get("hjrrks_bnchigo"));
			childTemplate.set(ECK0031D010CBSMsg1List.HJRRKS_ADRTTM, map.get("hjrrks_adrttm"));
			childTemplate.set(ECK0031D010CBSMsg1List.HJRRKS_ADRRM, map.get("hjrrks_adrrm"));
			childTemplate.set(ECK0031D010CBSMsg1List.HJRRKS_TNTSHA_NM, map.get("hjrrks_tntsha_nm"));
			childTemplate.set(ECK0031D010CBSMsg1List.HJRRKS_TNTSHA_KANA, map.get("hjrrks_tntsha_kana"));
			childTemplate.set(ECK0031D010CBSMsg1List.HJRRKS_TNTSHA_SHOZKBSHO_NM, map.get("hjrrks_tntsha_shozkbsho_nm"));
			
			templateArray[0] = childTemplate;
			template.set(ECK0031D010CBSMsg.ECK0031D010CBSMSG1LIST, templateArray);
		}
		else
		{
			for (int i = 0; i < mappingData.length; i++)
			{
				template.set((String)mappingData[i][0], (String)mappingData[i][1]);
			}
		}
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		return paramMap;
	}

	/**
	 * 値を設定します。
	 * 
	 * @param msg
	 * @param key
	 * @param value
	 * @return CAANMsg
	 */
	private CAANMsg setMsgVal(CAANMsg msg, String key, String value)
	{
		if (value == null || "".equals(value))
		{
			msg.setNull(key);
		}
		else
		{
			msg.set(key, value);
		}
		return msg;
	}

	/**
	 * 上り項目全てに空値を設定します。
	 * 
	 * @param msg
	 */
	@SuppressWarnings("unchecked")
	private void setMsgAll(CAANMsg msg)
	{
		Iterator<String> msgKey = msg.getSchema().getSchemaKeySet().iterator();
		
		while (msgKey.hasNext())
		{
			String key = msgKey.next();
			
			if (!key.endsWith("_err"))
			{
				msg.setNull(key);
			}
		}
	}

	/**
	 * エラー情報を設定します。
	 * 
	 * @param msg
	 * @param map
	 * 
	 */
	@SuppressWarnings("unchecked")
	private void setErrorInf(CAANMsg msg, HashMap<String, Object> map)
	{
		Iterator<String> msgKey = msg.getSchema().getSchemaKeySet().iterator();
		
		while (msgKey.hasNext())
		{
			String key = msgKey.next();
			
			if (key.endsWith("_err"))
			{
				if (!msg.isNull(key))
				{
					if (!map.containsKey(key))
					{
						map.put(key, msg.getString(key));
					}
				}
			}
		}
	}

	/**
	 * お客様<個人>登録上り項目を設定します。
	 * 
	 * @param map
	 * @return Object[][]
	 */
	@SuppressWarnings("unchecked")
	private Object[][] setECK0021D010(HashMap map)
	{
		Object[][] eck0021d010In = {{ECK0021D010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0021D010},
									{ECK0021D010CBSMsg.FUNC_CODE, "2"},
									{ECK0021D010CBSMsg.KEISHA_TYPE_CD, map.get("keisha_type_cd")},
									{ECK0021D010CBSMsg.CUST_NM, map.get("cust_nm")},
									{ECK0021D010CBSMsg.CUST_KANA, map.get("cust_kana")},
									{ECK0021D010CBSMsg.CUST_SEX_CD, map.get("cust_sex_cd")},
									{ECK0021D010CBSMsg.CUST_BIRTHD, map.get("cust_birthd")},
									{ECK0021D010CBSMsg.CUST_CFM_BIKO, map.get("cust_cfm_biko")},
									{ECK0021D010CBSMsg.KEISHA_AD_CD, map.get("keisha_ad_cd")},
									{ECK0021D010CBSMsg.KEISHA_PCD, map.get("keisha_pcd")},
									{ECK0021D010CBSMsg.KEISHA_STATE_NM, map.get("keisha_state_nm")},
									{ECK0021D010CBSMsg.KEISHA_CITY_NM, map.get("keisha_city_nm")},
									{ECK0021D010CBSMsg.KEISHA_OAZTSU_NM, map.get("keisha_oaztsu_nm")},
									{ECK0021D010CBSMsg.KEISHA_AZCHO_NM, map.get("keisha_azcho_nm")},
									{ECK0021D010CBSMsg.KEISHA_BNCHIGO, map.get("keisha_bnchigo")},
									{ECK0021D010CBSMsg.KEISHA_ADRTTM, map.get("keisha_adrttm")},
									{ECK0021D010CBSMsg.KEISHA_ADRRM, map.get("keisha_adrrm")},
									{ECK0021D010CBSMsg.KEISHA_TELNO, map.get("keisha_telno")},
									{ECK0021D010CBSMsg.RRK_WAY_CD, map.get("rrk_way_cd")},
									{ECK0021D010CBSMsg.RRK_WAY_HOKI, map.get("rrk_way_hoki")},
									{ECK0021D010CBSMsg.EOID, map.get("eoid")},
									{ECK0021D010CBSMsg.EOID_CHGE_YMD, map.get("eoid_chge_ymd")},
									{ECK0021D010CBSMsg.CONT_CUST_NM, map.get("cont_cust_nm")},
									{ECK0021D010CBSMsg.CONT_CUST_KANA, map.get("cont_cust_kana")},
									{ECK0021D010CBSMsg.CONT_CUST_SEX_CD, map.get("cont_cust_sex_cd")},
									{ECK0021D010CBSMsg.CONT_CUST_BIRTHD, map.get("cont_cust_birthd")},
									{ECK0021D010CBSMsg.CONT_AD_CD, map.get("cont_ad_cd")},
									{ECK0021D010CBSMsg.CONT_BNCHIGO, map.get("cont_bnchigo")},
									{ECK0021D010CBSMsg.CONT_ADRTTM, map.get("cont_adrttm")},
									{ECK0021D010CBSMsg.CONT_ADRRM, map.get("cont_adrrm")},
									{ECK0021D010CBSMsg.CONT_AD_BNKT_STA_PST, map.get("cont_ad_bnkt_sta_pst")},
									{ECK0021D010CBSMsg.MEMBER_SBT_CD, map.get("member_sbt_cd")},
									{ECK0021D010CBSMsg.CONT_ISP_USE_FAIL_FLG, map.get("cont_isp_use_fail_flg")},
									{ECK0021D010CBSMsg.CONT_ISP_USE_STP_YMD, map.get("cont_isp_use_stp_ymd")},
									{ECK0021D010CBSMsg.JOIN_YMD, map.get("join_ymd")},
									{ECK0021D010CBSMsg.PWD_REMINDER_QS_CD, map.get("pwd_reminder_qs_cd")},
									{ECK0021D010CBSMsg.PWD_REMINDER_ANS, map.get("pwd_reminder_ans")},
									{ECK0021D010CBSMsg.NKNAME, map.get("nkname")},
									{ECK0021D010CBSMsg.NKNAME_CHGE_YMD, map.get("nkname_chge_ymd")},
									{ECK0021D010CBSMsg.NAIHAN_GAIHAN_CD, map.get("naihan_gaihan_cd")},
									{ECK0021D010CBSMsg.NAIHAN_COMP_SKBT_CD, map.get("naihan_comp_skbt_cd")},
									{ECK0021D010CBSMsg.EONETID_MI_IKO_FLG, map.get("eonetid_mi_iko_flg")},
									{ECK0021D010CBSMsg.LOGIN_NINSHO_KH, map.get("login_ninsho_kh")},
									{ECK0021D010CBSMsg.CUST_NTAIKAI_CD, map.get("cust_ntaikai_cd")},
									{ECK0021D010CBSMsg.MMB_SBT_TOKUT_FLG, map.get("mmb_sbt_tokut_flg")},
									{ECK0021D010CBSMsg.MMB_ISP_KSSAI_STAT_CD, map.get("mmb_isp_kssai_stat_cd")},
									{ECK0021D010CBSMsg.SHOKUGYO_CD, map.get("shokugyo_cd")},
									{ECK0021D010CBSMsg.OFFC_NM, map.get("offc_nm")},
									{ECK0021D010CBSMsg.OFFC_TELNO, map.get("offc_telno")},
									{ECK0021D010CBSMsg.OFFC_NISNNO, map.get("offc_nisnno")},
									{ECK0021D010CBSMsg.SKSHA_NM, map.get("sksha_nm")},
									{ECK0021D010CBSMsg.SKSHA_KANA, map.get("sksha_kana")},
									{ECK0021D010CBSMsg.SKSHA_BIRTHD, map.get("sksha_birthd")},
									{ECK0021D010CBSMsg.SKSHA_ZOKUGARA_CD, map.get("sksha_zokugara_cd")},
									{ECK0021D010CBSMsg.ZOKUGARA_OTHER, map.get("zokugara_other")},
									{ECK0021D010CBSMsg.SKSHA_AD_CD, map.get("sksha_ad_cd")},
									{ECK0021D010CBSMsg.SKSHA_PCD, map.get("sksha_pcd")},
									{ECK0021D010CBSMsg.SKSHA_STATE_NM, map.get("sksha_state_nm")},
									{ECK0021D010CBSMsg.SKSHA_CITY_NM, map.get("sksha_city_nm")},
									{ECK0021D010CBSMsg.SKSHA_OAZTSU_NM, map.get("sksha_oaztsu_nm")},
									{ECK0021D010CBSMsg.SKSHA_AZCHO_NM, map.get("sksha_azcho_nm")},
									{ECK0021D010CBSMsg.SKSHA_AD_BNCHIGO, map.get("sksha_ad_bnchigo")},
									{ECK0021D010CBSMsg.SKSHA_ADRTTM, map.get("sksha_adrttm")},
									{ECK0021D010CBSMsg.SKSHA_ADRRM, map.get("sksha_adrrm")},
									{ECK0021D010CBSMsg.SKSHA_TELNO, map.get("sksha_telno")},
									{ECK0021D010CBSMsg.KEISHA_AD_MAN_INPUT_FLG, map.get("keisha_ad_man_input_flg")},
									{ECK0021D010CBSMsg.SKSHA_AD_MAN_INPUT_FLG, map.get("sksha_ad_man_input_flg")},
									{ECK0021D010CBSMsg.KEISHA_AD_CHK_LV, map.get("keisha_ad_chk_lv")},
									{ECK0021D010CBSMsg.SKSHA_AD_CHK_LV, map.get("sksha_ad_chk_lv")}};
		
		return eck0021d010In;
	}

	/**
	 * お客様<法人>登録上り項目を設定します。
	 * 
	 * @param map
	 * @return Object[][]
	 */
	@SuppressWarnings("unchecked")
	private Object[][] setECK0031D010(HashMap map)
	{
		Object[][] eck0031d010In = {{ECK0031D010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0031D010},
									{ECK0031D010CBSMsg.FUNC_CODE, "2"},
									{ECK0031D010CBSMsg.KEISHA_TYPE_CD, map.get("keisha_type_cd")},
									{ECK0031D010CBSMsg.CUST_NM, map.get("cust_nm")},
									{ECK0031D010CBSMsg.CUST_KANA, map.get("cust_kana")},
									{ECK0031D010CBSMsg.CUST_SEX_CD, map.get("cust_sex_cd")},
									{ECK0031D010CBSMsg.CUST_BIRTHD, map.get("cust_birthd")},
									{ECK0031D010CBSMsg.CUST_CFM_BIKO, map.get("cust_cfm_biko")},
									{ECK0031D010CBSMsg.KEISHA_AD_CD, map.get("keisha_ad_cd")},
									{ECK0031D010CBSMsg.KEISHA_PCD, map.get("keisha_pcd")},
									{ECK0031D010CBSMsg.KEISHA_STATE_NM, map.get("keisha_state_nm")},
									{ECK0031D010CBSMsg.KEISHA_CITY_NM, map.get("keisha_city_nm")},
									{ECK0031D010CBSMsg.KEISHA_OAZTSU_NM, map.get("keisha_oaztsu_nm")},
									{ECK0031D010CBSMsg.KEISHA_AZCHO_NM, map.get("keisha_azcho_nm")},
									{ECK0031D010CBSMsg.KEISHA_BNCHIGO, map.get("keisha_bnchigo")},
									{ECK0031D010CBSMsg.KEISHA_ADRTTM, map.get("keisha_adrttm")},
									{ECK0031D010CBSMsg.KEISHA_ADRRM, map.get("keisha_adrrm")},
									{ECK0031D010CBSMsg.KEISHA_TELNO, map.get("keisha_telno")},
									{ECK0031D010CBSMsg.RRK_WAY_CD, map.get("rrk_way_cd")},
									{ECK0031D010CBSMsg.RRK_WAY_HOKI, map.get("rrk_way_hoki")},
									{ECK0031D010CBSMsg.CONT_CUST_NM, map.get("cont_cust_nm")},
									{ECK0031D010CBSMsg.CONT_CUST_KANA, map.get("cont_cust_kana")},
									{ECK0031D010CBSMsg.CONT_CUST_SEX_CD, map.get("cont_cust_sex_cd")},
									{ECK0031D010CBSMsg.CONT_CUST_BIRTHD, map.get("cont_cust_birthd")},
									{ECK0031D010CBSMsg.CONT_PCD, map.get("cont_pcd")},
									{ECK0031D010CBSMsg.CONT_BNCHIGO, map.get("cont_bnchigo")},
									{ECK0031D010CBSMsg.CONT_ADRTTM, map.get("cont_adrttm")},
									{ECK0031D010CBSMsg.CONT_ADRRM, map.get("cont_adrrm")},
									{ECK0031D010CBSMsg.CONT_AD_BNKT_STA_PST, map.get("cont_ad_bnkt_sta_pst")},
									{ECK0031D010CBSMsg.MEMBER_SBT_CD, map.get("member_sbt_cd")},
									{ECK0031D010CBSMsg.JOIN_YMD, map.get("join_ymd")},
									{ECK0031D010CBSMsg.PWD_REMINDER_QS_CD, map.get("pwd_reminder_qs_cd")},
									{ECK0031D010CBSMsg.PWD_REMINDER_ANS, map.get("pwd_reminder_ans")},
									{ECK0031D010CBSMsg.NKNAME, map.get("nkname")},
									{ECK0031D010CBSMsg.NAIHAN_GAIHAN_CD, map.get("naihan_gaihan_cd")},
									{ECK0031D010CBSMsg.NAIHAN_COMP_SKBT_CD, map.get("naihan_comp_skbt_cd")},
									{ECK0031D010CBSMsg.EONETID_MI_IKO_FLG, map.get("eonetid_mi_iko_flg")},
									{ECK0031D010CBSMsg.LOGIN_NINSHO_KH, map.get("login_ninsho_kh")},
									{ECK0031D010CBSMsg.MMB_SBT_TOKUT_FLG, map.get("mmb_sbt_tokut_flg")},
									{ECK0031D010CBSMsg.MMB_ISP_KSSAI_STAT_CD, map.get("mmb_isp_kssai_stat_cd")},
									{ECK0031D010CBSMsg.HOJIN_SBT_CD, map.get("hojin_sbt_cd")},
									{ECK0031D010CBSMsg.HOJIN_ZENGO_SHITEI_CD, map.get("hojin_zengo_shitei_cd")},
									{ECK0031D010CBSMsg.COMP_NM, map.get("comp_nm")},
									{ECK0031D010CBSMsg.COMP_KANA, map.get("comp_kana")},
									{ECK0031D010CBSMsg.DIHYSHA_POST_NM, map.get("dihysha_post_nm")},
									{ECK0031D010CBSMsg.GSHU_CD, map.get("gshu_cd")},
									{ECK0031D010CBSMsg.KEISHA_AD_MAN_INPUT_FLG, map.get("keisha_ad_man_input_flg")},
									{ECK0031D010CBSMsg.KEISHA_AD_CHK_LV, map.get("keisha_ad_chk_lv")},
									{ECK0031D010CBSMsg.ECK0031D010CBSMSG1LIST, map.get("ECK0031D010CBSMsg1List")}};
		
		return eck0031d010In;
	}

	/**
	 * お客様二重登録チェックを行う。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param ccMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void callCust(SessionHandle handle,
							ServiceComponentRequestInvoker scCall,
							IRequestParameterReadWrite param,
							String fixedText,
							HashMap ccMsg) throws Exception
	{
		// 個人の場合
		if ((Boolean)ccMsg.get("mmb_sbt_flg"))
		{
			// お客様<個人>登録
			Object[][] eck0021d010In = setECK0021D010((HashMap)ccMsg.get("ECK0021"));
			CAANMsg eck0021d010Out = callSC(handle, scCall, param, fixedText, eck0021d010In);
		}
		else
		{
			// お客様<法人>登録
			Object[][] eck0031d010In = setECK0031D010((HashMap)ccMsg.get("ECK0031"));
			CAANMsg eck0031d010Out = callSC(handle, scCall, param, fixedText, eck0031d010In);
		}
	}

	/**
	 * お客様一意照会を行う。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param sysid
	 * @param opeDate
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] callECK0011A010(SessionHandle handle,
										ServiceComponentRequestInvoker scCall,
										IRequestParameterReadWrite param,
										String fixedText,
										String sysid,
										String opeDate) throws Exception
	{
		// お客様一意照会
		Object[][] eck0011a010In = {{ECK0011A010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0011A010},
									{ECK0011A010CBSMsg.FUNC_CODE, "2"},
									{ECK0011A010CBSMsg.KEY_SYSID, sysid},
									{ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, opeDate}};
		
		return callSC(handle, scCall, param, fixedText, eck0011a010In).getCAANMsgList(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST);
	}

	/**
	 * エイジング一覧照会を行う。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param sbtCd
	 * @param tgValue
	 * @return ArrayList
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private ArrayList callEZM0111B040(SessionHandle handle,
										ServiceComponentRequestInvoker scCall,
										IRequestParameterReadWrite param,
										String fixedText,
										String sbtCd,
										String tgValue) throws Exception
	{
		if (tgValue == null || tgValue.length() == 0)
		{
			return null;
		}
		
		// エイジング一覧照会
		Object[][] ezm0111b040In = {{EZM0111B040CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0111B040},
									{EZM0111B040CBSMsg.FUNC_CODE, "1"},
									{EZM0111B040CBSMsg.KEY_AGING_SBT_CD, sbtCd},
									{EZM0111B040CBSMsg.KEY_AGING_TG_VALUE, tgValue}};
		
		CAANMsg[] ezm0111b040Out = callSC(handle, scCall, param, fixedText, ezm0111b040In).getCAANMsgList(EZM0111B040CBSMsg.EZM0111B040CBSMSG1LIST);
		ArrayList list = new ArrayList();
		
		if (ezm0111b040Out != null && ezm0111b040Out.length > 0)
		{
			HashMap map = new HashMap();
			map.put("aging_stat", ezm0111b040Out[0].getString(EZM0111B040CBSMsg1List.AGING_STAT));		// エイジングステータス
			map.put("use_end_dtm", ezm0111b040Out[0].getString(EZM0111B040CBSMsg1List.USE_END_DTM));	// 使用終了年月日時分秒
			map.put("upd_dtm", ezm0111b040Out[0].getString(EZM0111B040CBSMsg1List.UPD_DTM));			// 更新年月日時分秒
			list.add(map);
		}
		
		return list;
	}

	/**
	 * マスター会員の検索を行う。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param ccMsg
	 * @param opeDate
	 * @return HashMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private HashMap getMasterMmb(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String fixedText,
									HashMap ccMsg,
									String opeDate) throws Exception
	{
		CAANMsg[] outMsg = null;
		
		if ("1".equals(ccMsg.get(JCMConstants.FUNC_CODE_KEY)))
		{
			// ファミリー会員グループ一覧照会グループ入会コード
			Object[][] eck0111b003In = {{ECK0111B003CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0111B003},
										{ECK0111B003CBSMsg.FUNC_CODE, "1"},
										{ECK0111B003CBSMsg.KEY_GRP_JOIN_CD, ccMsg.get("family_cd_pop_id")}};
			
			outMsg = callSC(handle, scCall, param, fixedText, eck0111b003In).getCAANMsgList(ECK0111B003CBSMsg.ECK0111B003CBSMSG1LIST);
		}
		else
		{
			// グループリーダー一覧照会（POPID）
			Object[][] eck0111b001In = {{ECK0111B001CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0111B001},
										{ECK0111B001CBSMsg.FUNC_CODE, "1"},
										{ECK0111B001CBSMsg.KEY_POP_ID, ccMsg.get("family_cd_pop_id")}};
			
			outMsg = callSC(handle, scCall, param, fixedText, eck0111b001In).getCAANMsgList(ECK0111B001CBSMsg.ECK0111B001CBSMSG1LIST);
		}
		
		if (outMsg == null || outMsg.length == 0)
		{
			 return ccMsg;
		}
		
		// お客様一意照会
		Object[][] eck0011a010In = {{ECK0011A010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0011A010},
									{ECK0011A010CBSMsg.FUNC_CODE, "2"},
									{ECK0011A010CBSMsg.KEY_SYSID, outMsg[0].getString(ECK0111B001CBSMsg1List.GRP_LEADER_SYSID)},
									{ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, opeDate}};
		
		CAANMsg[] eck0011a010Out = callSC(handle, scCall, param, fixedText, eck0011a010In).getCAANMsgList(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST);
		if (eck0011a010Out != null && eck0011a010Out.length > 0)
		{
			ccMsg.put("grp_cd", outMsg[0].getString(ECK0111B003CBSMsg1List.GRP_CD));								// グループコード
			ccMsg.put("grp_leader_sysid", outMsg[0].getString(ECK0111B003CBSMsg1List.GRP_LEADER_SYSID));			// グループリーダーSYSID
			ccMsg.put("mst_member_sbt_cd", eck0011a010Out[0].getString(ECK0011A010CBSMsg1List.MEMBER_SBT_CD));		// 会員種別コード
			ccMsg.put("mst_keisha_type_cd", eck0011a010Out[0].getString(ECK0011A010CBSMsg1List.KEISHA_TYPE_CD));	// 契約者タイプ
		}
		return ccMsg;
	}

	/**
	 * マスター会員判定処理
	 * <br>
	 * @param msgList
	 * @return boolean
	 */
	private boolean isMasterChk(CAANMsg[] msgList)
	{
		if (msgList != null && msgList.length > 0)
		{
			String mmbSbtCd = msgList[0].getString(ECK0011A010CBSMsg1List.MEMBER_SBT_CD);
			
			if (JCKStrConst.CD00039_MASTER_KOJIN.equals(mmbSbtCd) || JCKStrConst.CD00039_MASTER_HOJIN.equals(mmbSbtCd))
			{
				return true;
			}
		}
		
		return false;
	}
}
