/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKAddSjishoCCMapper
*   ソースファイル名：JKKAddSjishoCCMapper.java
*   作成者          ：富士通
*   日付            ：2012年04月12日
*＜機能概要＞
 *  JKKAddSjishoCC用のマッパー
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*  v3.00.00    2012/04/12  FJ          新規作成
*  v3.00.01    2012/12/05  FJ          ST2-2012-0001795
*  v5.00.00    2013/02/10  FJ          ST1-2013-0000283
*  v5.00.01    2013/02/21  FJ          ST1-2013-0000392
*  v5.00.02    2013/03/20  FJ          IT1-2013-0000538
*  v5.00.03    2013/07/10  FJ井熊      LT-2013-0000374
*  v5.00.04    2013/10/16  FJ鈴木      OM-2013-0003259：サービス契約一覧照会(SYSID)３ 取得を追加
*  v8.00.00    2014/04/27  FJ鈴木      OM-2014-0001627：グループ一覧照会、お客様グループ設定一覧照会の最大表示件数を修正
*  v37.00.00   2018/03/01  FJ) 岡      ANK-3366-00-00：eo光設備卸対応
*  v47.00.00   2019/11/07  FJ)三原     ANK-3706-00-00 ｅｏＩＤログインのセキュリティ強化対応
*  v48.00.00   2020/02/12  FJ)三原     ANK-3814-00-00 eoIDログインセキュリティ強化フォロー対応
*  v54.00.00   2021/10/15  FJ)上村     ANK-4171-00-00 mineo契約時の2段階認証ON対応
*  v63.00.00   2022/12/16  FJ)北村     ANK-4341-00-00 mineo照査時の2段階認証ON対応
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_CUST_GROUP_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_CUST_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_GROUP_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KAKIN_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055401SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055401SC_ECK0111B070CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055402SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055402SC_ECK0121B004CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055403SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055404SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055404SC_EKK0081A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055405SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055406SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055406SC_EKK0361A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055407SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055408SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055408SC_EKK0171A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055409SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055410SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055410SC_ECH0231B505CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055411SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055412SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055413SC;
/*ST2-2012-0001795 対応*/
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055413SC_EKK0321B005CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055414SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055414SC_EKK2141B001CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055415SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055415SC_EKK0451B001CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055416SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055416SC_EKK0191B001CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055417SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055417SC_EKK0791A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055418SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_KKSV055418SC_EKK0221A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_OLD_ICS_CONV_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_OP_SVC_KEI_ISP_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_PAYWAY_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_RENKEI_DATA_KBN_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_SVC_KEI_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_SVC_KEI_UCWK_TEL_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_SVC_UCWK_ADSL_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_SVC_UCWK_NET_INFO;
import com.fujitsu.futurity.bp.custom.constant.KKSV0554_KKSV0554OP_TOKUSOKU_INFO;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_ECH0231B505BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_ECK0011A010BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_ECK0111B070BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_ECK0121A010BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_ECK0121B004BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_ECK0151D010BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_ECN0131B008BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_EKK0081A010BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_EKK0161A010BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_EKK0171A010BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_EKK0191B001BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_EKK0221A010BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_EKK0351A010BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_EKK0361A010BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_EKK0451B001BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_EKK0791A010BSMapper;
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_EKK2141B001BSMapper;
/*ST2-2012-0001795 対応*/
import com.fujitsu.futurity.bp.custom.mapping.KKSV0554_KKSV0554OP_EKK0321B005BSMapper;


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.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
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.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.ECK0201B003CBSMsg;
import eo.ejb.cbs.cbsmsg.ECKA9010002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B519CBSMsg;
/**
 * 指示書登録ＣＣ_CC-SCマッピングクラス
 * 
 * @author 富士通
 *
 */
public class JKKAddSjishoCCMapper
{
	/* ----------------------------------------
	 * フィールド変数
	 * ---------------------------------------- */
	/** セッションハンドル */
	private SessionHandle cmnHandle = null;
	/** 業務データ取得用I/F */
	private IRequestParameterReadWrite cmnParam = null;
	/** オンライン運用日付 */
	private String opeDate = null;
	/** CCマップ名 */
	private String ccMapNm = null;
	
	/* ----------------------------------------
	 * 登録ＣＣ独自定数
	 * ---------------------------------------- */
	/** 機能コード */
	private static final String FUNC_CODE = "func_code";
	
	/** エラー用 */
	private static final String SC_ERROR_STRING = "サービスコンポーネントエラー";
	
	/** エラーメッセージ ：INVALID_RETURN_MESSAGE */
	public static final String ERR_MSG_INVALID_RET_MSG = "INVALID_RETURN_MESSAGE";

	/**
	 * コンストラクタです。<BR>
	 * <BR>
	 * フィールド変数の値を設定します。
	 * 
	 * @param iCmnHandle セッションハンドル
	 * @param iCmnParam 業務データ取得用I/F
	 * @param iOpeDate オンライン運用日付
	 * @param fixedText CCマップ名
	 */
	public  JKKAddSjishoCCMapper(SessionHandle iCmnHandle, IRequestParameterReadWrite iCmnParam,
			String iOpeDate, String fixedText)
	{
		this.cmnHandle = iCmnHandle;
		this.cmnParam = iCmnParam;
		this.opeDate = iOpeDate;
		this.ccMapNm = fixedText;
	}
	
	/**
	 * null値、又は空文字の場合はtrue、文字列が設定されている場合はfalse
	 * 
	 * @param str
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private boolean isNullEmpty(Object target)
	{
		if (target == null)
		{
			return true;
		}
		
		if (target instanceof String)
		{
			if (target.equals(""))
			{
				return true;
			}
		}
		
		if (target instanceof ArrayList)
		{
			if (((ArrayList) target).isEmpty())
			{
				return true;
			}
		}
		return false;
	}
		
	/**
	 * 呼び出したサービスIFの処理結果を判定します。
	 * 
	 * @param result
	 * @throws Throwable
	 */
	private void checkExecutionResult(Map<?, ?> result) throws Throwable
	{
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = result.get(JCMConstants.RET_CD_INT_KEY).toString();
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		Integer status = templates[0].getInt(JCMConstants.STATUS_INT_KEY);
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if (!("0".equals(rtnCode) && 0 == status.intValue()))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
	}
	
	/**
	 * グループ一覧照会（複合検索）サービスIFを呼び出し、
	 * ＳＹＳＩＤが一致する、グループ一覧照会サービスレコードを取得します。（照査のみ）
	 * 
	 * @param ccMap 入力データ
	 * @param dataMap 登録データ
	 * @param funcCd 機能コード
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void callGrpIcrnShokai(HashMap<String, Object> ccMap, HashMap<String, Object> dataMap, String funcCd)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055401SC;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// 作業領域.連携データ区分情報.ＳＹＳＩＤ → グループ一覧照会（複合検索）.ＫＥＹ_ＳＹＳＩＤ
		inMap.put(KKSV0554_KKSV0554OP_KKSV055401SC.KEY_SYSID, ccMap.get(KKSV0554_KKSV0554OP_RENKEI_DATA_KBN_INFO.SYSID));
		
		// 検索処理タイプ → 検索処理タイプ
		inMap.put(KKSV0554_KKSV0554OP_KKSV055401SC.SEARCH_TYPE, "1");
		
		// 表示件数 → 表示件数
// 2014.04.27 OM-2014-0001627 mod start
//		inMap.put(KKSV0554_KKSV0554OP_KKSV055401SC.DISPLAY_NUM, "500");
		inMap.put(KKSV0554_KKSV0554OP_KKSV055401SC.DISPLAY_NUM, "99999");
// 2014.04.27 OM-2014-0001627 mod end
		
		// 表示ページ数 → 表示ページ数
		inMap.put(KKSV0554_KKSV0554OP_KKSV055401SC.DISPLAY_PAGE_NUM, "1");
		
		// 最大表示件数 → 最大表示件数
// 2014.04.27 OM-2014-0001627 mod start
//		inMap.put(KKSV0554_KKSV0554OP_KKSV055401SC.MAX_SEARCH_NUM, "1");
		inMap.put(KKSV0554_KKSV0554OP_KKSV055401SC.MAX_SEARCH_NUM, "99999");
// 2014.04.27 OM-2014-0001627 mod end
		
		// ソート項目番号 → グループ一覧照会（複合検索）.ＫＥＹ＿ソート項目Ｎｏ
// 2014.04.27 OM-2014-0001627 mod start
//		inMap.put(KKSV0554_KKSV0554OP_KKSV055401SC.KEY_SORT_ITEM_NO, "4");
		inMap.put(KKSV0554_KKSV0554OP_KKSV055401SC.KEY_SORT_ITEM_NO, "8");
// 2014.04.27 OM-2014-0001627 mod end
		
		// ソート区分 → グループ一覧照会（複合検索）.ＫＥＹ＿ソート区分
// 2014.04.27 OM-2014-0001627 mod start
//		inMap.put(KKSV0554_KKSV0554OP_KKSV055401SC.KEY_SORT_KBN, "1");
		inMap.put(KKSV0554_KKSV0554OP_KKSV055401SC.KEY_SORT_KBN, "2");
// 2014.04.27 OM-2014-0001627 mod end
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		KKSV0554_KKSV0554OP_ECK0111B070BSMapper mapper = new KKSV0554_KKSV0554OP_ECK0111B070BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		// グループ一覧照会リストマップ.グループ一覧照会（複合検索）明細
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055401SC.ECK0111B070CBSMSG1LIST);
		
		if (isNullEmpty(list))
		{ // レコードが存在しない場合例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		HashMap<String, Object>  map = list.get(0);
		
		// グループ一覧照会（複合検索）.グループ一覧照会（複合検索）明細.グループコード
		dataMap.put(KKSV0554_KKSV0554OP_GROUP_INFO.GRP_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055401SC_ECK0111B070CBSMsg1List.GRP_CD));
		
		// グループ一覧照会（複合検索）.グループ一覧照会（複合検索）明細.グループ種別コード
		dataMap.put(KKSV0554_KKSV0554OP_GROUP_INFO.GRP_SBT_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055401SC_ECK0111B070CBSMsg1List.GRP_SBT_CD));
		
		// グループ一覧照会（複合検索）.グループ一覧照会（複合検索）明細.グループリーダーSYSID
		dataMap.put(KKSV0554_KKSV0554OP_GROUP_INFO.GRP_LEADER_SYSID,
				map.get(KKSV0554_KKSV0554OP_KKSV055401SC_ECK0111B070CBSMsg1List.GRP_LEADER_SYSID));
		
		return;
	}
	
	/**
	 * お客様グループ設定一覧照会（お客様情報取得）サービスIFを呼び出し、
	 * グループコードが一致する、お客様グループ設定レコードを取得します。
	 * 
	 * @param ccMap 入力データ
	 * @param dataMap 登録データ
	 * @param funcCd 機能コード
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void callCustGrpSetteIcrnShokai(HashMap<String, Object> ccMap, HashMap<String, Object> dataMap, String funcCd)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055402SC;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// 作業領域.グループ情報.グループ種別コード
		//    → お客様グループ設定一覧照会（お客様情報取得）.ＫＥＹ＿グループコード
		inMap.put(KKSV0554_KKSV0554OP_KKSV055402SC.KEY_GRP_CD,
				ccMap.get(KKSV0554_KKSV0554OP_GROUP_INFO.GRP_CD));
		
		// 検索処理タイプ → 検索処理タイプ
		inMap.put(KKSV0554_KKSV0554OP_KKSV055402SC.SEARCH_TYPE, "1");
		
		// 表示件数 → 表示件数
// 2014.04.27 OM-2014-0001627 mod start
//		inMap.put(KKSV0554_KKSV0554OP_KKSV055402SC.DISPLAY_NUM, "500");
		inMap.put(KKSV0554_KKSV0554OP_KKSV055402SC.DISPLAY_NUM, "99999");
// 2014.04.27 OM-2014-0001627 mod end
		
		// 表示ページ数 → 表示ページ数
		inMap.put(KKSV0554_KKSV0554OP_KKSV055402SC.DISPLAY_PAGE_NUM, "1");
		
		// 最大表示件数 → 最大表示件数
// 2014.04.27 OM-2014-0001627 mod start
//		inMap.put(KKSV0554_KKSV0554OP_KKSV055402SC.MAX_SEARCH_NUM, "1");
		inMap.put(KKSV0554_KKSV0554OP_KKSV055402SC.MAX_SEARCH_NUM, "99999");
// 2014.04.27 OM-2014-0001627 mod end
		
		// ソート項目番号 →お客様グループ設定一覧照会（お客様情報取得）.ＫＥＹ＿ソート項目Ｎｏ
		inMap.put(KKSV0554_KKSV0554OP_KKSV055402SC.KEY_SORT_ITEM_NO,"3");
		
		// ソート区分 → お客様グループ設定一覧照会（お客様情報取得）.ＫＥＹ＿ソート区分
		inMap.put(KKSV0554_KKSV0554OP_KKSV055402SC.KEY_SORT_KBN, "1");
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		 KKSV0554_KKSV0554OP_ECK0121B004BSMapper mapper = new  KKSV0554_KKSV0554OP_ECK0121B004BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055402SC.ECK0121B004CBSMSG1LIST);
		
		if (isNullEmpty(list))
		{ // レコードが存在しない場合例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		HashMap<String, Object>  map = list.get(0);
		
		// お客様グループ設定一覧照会（お客様情報取得）.お客様グループ設定一覧照会（お客様情報取得）明細.お客様グループ設定番号
		dataMap.put(KKSV0554_KKSV0554OP_CUST_GROUP_INFO.CUST_GRP_SETTE_NO,
				map.get(KKSV0554_KKSV0554OP_KKSV055402SC_ECK0121B004CBSMsg1List.CUST_GRP_SETTE_NO));
			
		return;
	}
	
	/**
	 * お客さまグループ設定一意照会サービスIFを呼び出し、
	 * お客様グループ設定番号が一致する、お客さまグループ設定レコードを取得します。
	 * 
	 * @param custGrpSetteMap 登録データ
	 * @param funcCd 機能コード
	 * @return 
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void callCustGrpSetteIciShokai(HashMap<String, Object> custGrpSetteMap, String funcCd)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055403SC;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// 作業領域.お客様グループ設定情報.お客様グループ設定番号
		//    → お客様グループ設定一意照会.ＫＥＹ＿お客様グループ設定番号
		inMap.put(KKSV0554_KKSV0554OP_KKSV055403SC.KEY_CUST_GRP_SETTE_NO,
				custGrpSetteMap.get(KKSV0554_KKSV0554OP_CUST_GROUP_INFO.CUST_GRP_SETTE_NO));
		
		// オンライン運用日付 → お客様グループ設定一意照会.ＫＥＹ＿予約適用年月日
		inMap.put(KKSV0554_KKSV0554OP_KKSV055403SC.KEY_RSV_APLY_YMD, this.opeDate);
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		 KKSV0554_KKSV0554OP_ECK0121A010BSMapper mapper = new  KKSV0554_KKSV0554OP_ECK0121A010BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> retList
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055403SC.ECK0121A010CBSMSG1LIST);
		
		if (isNullEmpty(retList))
		{ // レコードが存在しない場合例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		HashMap<String, Object>  map = retList.get(0);
		
		// 作業領域.指示書情報区分リスト.お客様グループ設定情報.SYSID
		//  ← お客様グループ設定一意照会.お客様グループ設定一意照会明細.SYSID
		custGrpSetteMap.put(KKSV0554_KKSV0554OP_CUST_GROUP_INFO.SYSID,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.SYSID));
		
		// 作業領域.指示書情報区分リスト.お客様グループ設定情報.無効フラグ
		//  ← お客様グループ設定一意照会.お客様グループ設定一意照会明細.無効フラグ
		custGrpSetteMap.put(KKSV0554_KKSV0554OP_CUST_GROUP_INFO.MK_FLG,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.MK_FLG));
		
		// 作業領域.指示書情報区分リスト.お客様グループ設定情報.登録年月日時分秒
		//  ← お客様グループ設定一意照会.お客様グループ設定一意照会明細.登録年月日時分秒
		custGrpSetteMap.put(KKSV0554_KKSV0554OP_CUST_GROUP_INFO.ADD_DTM,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.ADD_DTM));
		
		// 作業領域.指示書情報区分リスト.お客様グループ設定情報.登録オペレータアカウント
		//  ← お客様グループ設定一意照会.お客様グループ設定一意照会明細.登録オペレータアカウント
		custGrpSetteMap.put(KKSV0554_KKSV0554OP_CUST_GROUP_INFO.ADD_OPEACNT,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.ADD_OPEACNT));
		
		// 作業領域.指示書情報区分リスト.お客様グループ設定情報.更新年月日時分秒
		//  ← お客様グループ設定一意照会.お客様グループ設定一意照会明細.更新年月日時分秒
		custGrpSetteMap.put(KKSV0554_KKSV0554OP_CUST_GROUP_INFO.UPD_DTM,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.UPD_DTM));
		
		// 作業領域.指示書情報区分リスト.お客様グループ設定情報.更新オペレータアカウント
		//  ← お客様グループ設定一意照会.お客様グループ設定一意照会明細.更新オペレータアカウント
		custGrpSetteMap.put(KKSV0554_KKSV0554OP_CUST_GROUP_INFO.UPD_OPEACNT,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.UPD_OPEACNT));
		
		return;
	}
	
	/**
	 * サービス契約一意照会サービスIFを呼び出し、
	 * サービス契約番号に該当するサービス契約情報レコードを取得します。
	 * 
	 * @param svcKeiNo サービス契約番号
	 * @param dataMap 登録データ
	 * @param funcCd 機能コード
	 * @param serial 連番
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void callSvcKeiIciShokai(HashMap<String, Object> ccMap, HashMap<String, Object> dataMap, String funcCd, String serial)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055404SC + serial;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// サービス契約番号 → サービス契約一意照会.ＫＥＹ＿サービス契約番号
		inMap.put(KKSV0554_KKSV0554OP_KKSV055404SC.KEY_SVC_KEI_NO,
				ccMap.get(KKSV0554_KKSV0554OP_SVC_KEI_INFO.SVC_KEI_NO));
		
		// オンライン運用日付 → サービス契約一意照会.ＫＥＹ＿予約適用年月日
		inMap.put(KKSV0554_KKSV0554OP_KKSV055404SC.KEY_RSV_APLY_YMD, this.opeDate);
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		 KKSV0554_KKSV0554OP_EKK0081A010BSMapper mapper = new  KKSV0554_KKSV0554OP_EKK0081A010BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055404SC.EKK0081A010CBSMSG1LIST);
		
		if (isNullEmpty(list))
		{ // レコードが存在しない場合例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		HashMap<String, Object> map = list.get(0);
		
		// サービス契約一意照会.SYSID
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.SYSID,
				map.get(KKSV0554_KKSV0554OP_KKSV055404SC_EKK0081A010CBSMsg1List.SYSID));
		// サービス契約一意照会.サービス契約番号
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.SVC_KEI_NO,
				map.get(KKSV0554_KKSV0554OP_KKSV055404SC_EKK0081A010CBSMsg1List.SVC_KEI_NO));
		// サービス契約一意照会.サービスコード
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.SVC_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055404SC_EKK0081A010CBSMsg1List.SVC_CD));
		// サービス契約一意照会.料金グループコード
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.PRC_GRP_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055404SC_EKK0081A010CBSMsg1List.PRC_GRP_CD));
		// サービス契約一意照会.料金コースコード
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.PCRS_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055404SC_EKK0081A010CBSMsg1List.PCRS_CD));
		// サービス契約一意照会.料金プランコード
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.PPLAN_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055404SC_EKK0081A010CBSMsg1List.PPLAN_CD));
		// サービス契約一意照会.サービス開始年月日時分秒
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.SVC_STA_YMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055404SC_EKK0081A010CBSMsg1List.SVC_STA_YMD));
		// サービス契約一意照会.サービス終了年月日時分秒
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.SVC_ENDYMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055404SC_EKK0081A010CBSMsg1List.SVC_ENDYMD));
		// サービス契約一意照会.登録年月日時分秒
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.ADD_DTM,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.ADD_DTM));
		// サービス契約一意照会.登録オペレータアカウント
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.ADD_OPEACNT,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.ADD_OPEACNT));
		// サービス契約一意照会.更新年月日時分秒
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.UPD_DTM,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.UPD_DTM));
		// サービス契約一意照会.更新オペレータアカウント
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.UPD_OPEACNT,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.UPD_OPEACNT));
		// サービス契約一意照会.無効フラグ
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.MK_FLG,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.MK_FLG));
		// サービス契約一意照会.サービス契約ステータス
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.SVC_KEI_STAT,
				map.get(KKSV0554_KKSV0554OP_KKSV055404SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT));
		// サービス契約一意照会.照査年月日
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.SHOSA_YMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055404SC_EKK0081A010CBSMsg1List.SHOSA_YMD));
		// サービス契約一意照会.サービスキャンセル年月日
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.SVC_CANCEL_YMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055404SC_EKK0081A010CBSMsg1List.SVC_CANCEL_YMD));
		
		// ST1-2013-0000283 2012.02.10 START ASARI
		// サービス契約一意照会.照査取消年月日
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_INFO.SHOSA_CL_YMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055404SC_EKK0081A010CBSMsg1List.SHOSA_CL_YMD));
		// ST1-2013-0000283 2012.02.10 END ASARI
		
		return;
	}
	
	/**
	 * オプションサービス契約一意照会サービスIFを呼び出し、
	 * オプションサービス契約番号に該当するオプションサービス契約情報レコードを取得します。
	 * 
	 * @param opSvckeiNo オプションサービス契約番号
	 * @param dataMap 登録データ
	 * @param funcCd 機能コード
	 * @param serial 連番
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void callOpSvcKeiIciShokai(String opSvckeiNo, HashMap<String, Object> dataMap, String funcCd, String serial)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055405SC + serial;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// オプションサービス契約番号 → オプションサービス契約一意照会.ＫＥＹ＿オプションサービス契約番号
		inMap.put(KKSV0554_KKSV0554OP_KKSV055405SC.KEY_OP_SVC_KEI_NO, opSvckeiNo);
		
		// オンライン運用日付 → オプションサービス契約一意照会.ＫＥＹ＿予約適用年月日
		inMap.put(KKSV0554_KKSV0554OP_KKSV055404SC.KEY_RSV_APLY_YMD, this.opeDate);
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		 KKSV0554_KKSV0554OP_EKK0351A010BSMapper mapper = new  KKSV0554_KKSV0554OP_EKK0351A010BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055405SC.EKK0351A010CBSMSG1LIST);
		
		if (isNullEmpty(list))
		{ 
// IT1-2013-000XXXX対応 20130610 星野 MOD START
//			// レコードが存在しない場合例外をスロー
//			throw new CCException(SC_ERROR_STRING, new Exception());
			
			// 強制解約後の回復の場合、オプションが回復対象外となり論理削除されるケースがある。
			// この場合一意照会結果がノーヒットとなるため、システムエラーとはせず処理対象外としてreturnする
			return;
// IT1-2013-000XXXX対応 20130610 星野 MOD END
		}
		
		HashMap<String, Object>  map= list.get(0);
		
		// オプションサービス契約一意照会.SYSID
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.SYSID,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.SYSID));
		// オプションサービス契約一意照会.オプションサービス契約番号
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.OP_SVC_KEI_NO,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
		// オプションサービス契約一意照会.サービス契約番号
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.SVC_KEI_NO,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.SVC_KEI_NO));
		// オプションサービス契約一意照会.プラン開始年月日
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.PLAN_STAYMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.PLAN_STAYMD));
		// オプションサービス契約一意照会.プラン終了年月日
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.PLAN_ENDYMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.PLAN_ENDYMD));
		// オプションサービス契約一意照会.無効フラグ
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.MK_FLG,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.MK_FLG));
		// オプションサービス契約一意照会.登録年月日時分秒
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.ADD_DTM,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.ADD_DTM));
		// オプションサービス契約一意照会.登録オペレータアカウント
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.ADD_OPEACNT,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.ADD_OPEACNT));
		// オプションサービス契約一意照会.更新年月日時分秒
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.UPD_DTM,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.UPD_DTM));
		// オプションサービス契約一意照会.更新オペレータアカウント
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.UPD_OPEACNT,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.UPD_OPEACNT));
		// オプションサービス契約一意照会.オプションサービス契約ステータス
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.OP_SVC_KEI_STAT,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT));
		// オプションサービス契約一意照会.照査年月日
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.SHOSA_YMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.SHOSA_YMD));
		// オプションサービス契約一意照会.サービス終了年月日
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.SVC_ENDYMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.SVC_ENDYMD));
		// オプションサービス契約一意照会.サービスキャンセル年月日
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.SVC_CANCEL_YMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.SVC_CANCEL_YMD));

		// ◆◆ LT-2013-0000374 START ◆◆
		// オプションサービス契約一意照会.照査取消年月日
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_INFO.SHOSA_CL_YMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055405SC_EKK0351A010CBSMsg1List.SHOSA_CL_YMD));
		// ◆◆ LT-2013-0000374 END   ◆◆

		return;
	}
	
	/**
	 * オプションサービス契約＜ISP＞一意照会サービスIFを呼び出し、
	 * オプションサービス契約番号に該当するオプションサービス契約<ISP>契約情報レコードを取得します。
	 * 
	 * @param opSvckeiNo オプションサービス契約番号
	 * @param dataMap 登録データ
	 * @param funcCd 機能コード
	 * @param serial 連番
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void callOpSvcKeiISPIciShokai(String opSvckeiNo, HashMap<String, Object> dataMap, String funcCd, String serial)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055406SC + serial;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// オプションサービス契約番号 → オプションサービス契約＜ISP＞一意照会.ＫＥＹ＿オプションサービス契約番号
		inMap.put(KKSV0554_KKSV0554OP_KKSV055406SC.KEY_OP_SVC_KEI_NO, opSvckeiNo);
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		 KKSV0554_KKSV0554OP_EKK0361A010BSMapper mapper = new  KKSV0554_KKSV0554OP_EKK0361A010BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055406SC.EKK0361A010CBSMSG1LIST);
		
		if (isNullEmpty(list))
		{ // レコードが存在しない場合例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		HashMap<String, Object>  map= list.get(0);
		
		// オプションサービス契約＜ISP＞一意照会.他システム連携サービス契約コード通番
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_ISP_INFO.TSYRN_SVKEI_CD_SEQ,
				map.get(KKSV0554_KKSV0554OP_KKSV055406SC_EKK0361A010CBSMsg1List.TSYRN_SVKEI_CD_SEQ));
		// オプションサービス契約＜ISP＞一意照会.POPID
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_ISP_INFO.POP_ID,
				map.get(KKSV0554_KKSV0554OP_KKSV055406SC_EKK0361A010CBSMsg1List.POP_ID));
		// オプションサービス契約＜ISP＞一意照会.メールアドレス
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_ISP_INFO.MLAD,
				map.get(KKSV0554_KKSV0554OP_KKSV055406SC_EKK0361A010CBSMsg1List.MLAD));
		// オプションサービス契約＜ISP＞一意照会.WebID
		dataMap.put(KKSV0554_KKSV0554OP_OP_SVC_KEI_ISP_INFO.WEB_ID,
				map.get(KKSV0554_KKSV0554OP_KKSV055406SC_EKK0361A010CBSMsg1List.WEB_ID));
		
		return;
	}
	
	/**
	 * サービス契約内訳一意照会サービスIFを呼び出し、
	 * サービス契約内訳番号に該当するサービス契約内訳情報レコードを取得します。
	 * 
	 * @param ccMap 入力データ
	 * @param dataMap 登録データ
	 * @param funcCd 機能コード
	 * @param serial 連番
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void callSvcKeiUcwkIciShokai(HashMap<String, Object> ccMap, HashMap<String, Object> dataMap, String funcCd, String serial)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055407SC + serial;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// サービス契約内訳番号 → サービス契約内訳一意照会.ＫＥＹ＿サービス契約内訳番号
		inMap.put(KKSV0554_KKSV0554OP_KKSV055407SC.KEY_SVC_KEI_UCWK_NO, 
				ccMap.get(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.SVC_KEI_UCWK_NO));
		
		// オンライン運用日付 → サービス契約内訳一意照会.ＫＥＹ＿予約適用年月日
		inMap.put(KKSV0554_KKSV0554OP_KKSV055407SC.KEY_RSV_APLY_YMD, this.opeDate);
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		 KKSV0554_KKSV0554OP_EKK0161A010BSMapper mapper = new  KKSV0554_KKSV0554OP_EKK0161A010BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055407SC.EKK0161A010CBSMSG1LIST);
		
		if (isNullEmpty(list))
		{ // レコードが存在しない場合例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		HashMap<String, Object>  map= list.get(0);
		
		// サービス契約内訳一意照会.サービス契約番号
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.SVC_KEI_NO,
				map.get(KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List.SVC_KEI_NO));
		// サービス契約内訳一意照会.サービス開始年月日
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.SVC_STA_YMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List.SVC_STA_YMD));
		// サービス契約内訳一意照会.サービス終了年月日
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.SVC_ENDYMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List.SVC_ENDYMD));
		// サービス契約内訳一意照会.無効フラグ
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.MK_FLG,
				map.get(KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List.MK_FLG));
		// サービス契約内訳一意照会.登録年月日時分秒
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.ADD_DTM,
				map.get(KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List.ADD_DTM));
		// サービス契約内訳一意照会.登録オペレータアカウント
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.ADD_OPEACNT,
				map.get(KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List.ADD_OPEACNT));
		// サービス契約内訳一意照会.更新年月日時分秒
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.UPD_DTM,
				map.get(KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List.UPD_DTM));
		// サービス契約内訳一意照会.更新オペレータアカウント
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.UPD_OPEACNT,
				map.get(KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List.UPD_OPEACNT));
		// サービス契約内訳一意照会.サービス契約内訳ステータス
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.SVC_KEI_UCWK_STAT,
				map.get(KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List.SVC_KEI_UCWK_STAT));
		// サービス契約内訳一意照会.照査年月日
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.SHOSA_YMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List.SHOSA_YMD));
		// サービス契約内訳一意照会.サービス終了年月日
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.SVC_ENDYMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List.SVC_ENDYMD));
		// サービス契約内訳一意照会.サービスキャンセル年月日
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.SVC_CANCEL_YMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List.SVC_CANCEL_YMD));

		// ◆◆ LT-2013-0000374 START ◆◆
		// サービス契約内訳一意照会.照査取消年月日
		dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.SHOSA_CL_YMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055407SC_EKK0161A010CBSMsg1List.SHOSA_CL_YMD));
		// ◆◆ LT-2013-0000374 END   ◆◆

		
		return;
	}
	
	/**
	 * サービス契約<eo光ネット>一意照会サービスIFを呼び出し、
	 * サービス契約内訳番号に該当するサービス契約<eo光ネット>情報レコードを取得します。
	 * 
	 * @param ccMap 入力データ
	 * @param funcCd 機能コード
	 * @param serial 連番
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> callSvcUcwkNetKeiIciShokai(HashMap<String, Object> ccMap, String funcCd, String serial)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055408SC + serial;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// サービス契約内訳番号 → サービス契約<eo光ネット>一意照会.ＫＥＹ＿サービス契約内訳番号
		inMap.put(KKSV0554_KKSV0554OP_KKSV055408SC.KEY_SVC_KEI_UCWK_NO, 
				ccMap.get(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.SVC_KEI_UCWK_NO));
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		 KKSV0554_KKSV0554OP_EKK0171A010BSMapper mapper = new  KKSV0554_KKSV0554OP_EKK0171A010BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055408SC.EKK0171A010CBSMSG1LIST);
		
		if (list == null || list.isEmpty())
		{
			return null;
		}
		HashMap<String, Object>  map = list.get(0);
		
		HashMap<String, Object> svcUcwkNetMap =  new HashMap<String, Object>();
		// サービス契約<eo光ネット>一意照会.ISP認証ID
		svcUcwkNetMap.put(KKSV0554_KKSV0554OP_SVC_UCWK_NET_INFO.ISP_NINSHO_ID,
				map.get(KKSV0554_KKSV0554OP_KKSV055408SC_EKK0171A010CBSMsg1List.ISP_NINSHO_ID));
		
		return svcUcwkNetMap;
	}
	
	/**
	 * 支払方法入力支援一覧照会（テーブル単一参照）サービスIFを呼び出し、
	 * SYSIDに該当するお客様情報レコードを取得します。
	 * 
	 * @param ccMap 入力データ
	 * @param dataMap 登録データ
	 * @param funcCd 機能コード
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<HashMap<String, Object>> callPayWayIcrnShokai(HashMap<String, Object> ccMap, String funcCd)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055409SC;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// 作業領域.連携データ区分情報.ＳＹＳＩＤ → 支払方法入力支援一覧照会（テーブル単一参照）.ＫＥＹ＿ＳＹＳＩＤ
		inMap.put(KKSV0554_KKSV0554OP_KKSV055409SC.KEY_SYSID, ccMap.get(KKSV0554_KKSV0554OP_RENKEI_DATA_KBN_INFO.SYSID));

		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		 KKSV0554_KKSV0554OP_ECN0131B008BSMapper mapper = new  KKSV0554_KKSV0554OP_ECN0131B008BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list =
			(ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055409SC.ECN0131B008CBSMSG1LIST);
		
		if (isNullEmpty(list))
		{ // レコードが存在しない場合例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		ArrayList<HashMap<String, Object>> retList = new ArrayList<HashMap<String,Object>>();
		
		for (HashMap<String, Object> map : list)
		{
			HashMap<String, Object> dataMap = new HashMap<String, Object>();
			
			// 支払方法入力支援一覧照会（テーブル単一参照）.SYSID
			dataMap.put(KKSV0554_KKSV0554OP_PAYWAY_INFO.SYSID,
					map.get(KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List.SYSID));
			// 支払方法入力支援一覧照会（テーブル単一参照）.支払い方法番号
			dataMap.put(KKSV0554_KKSV0554OP_PAYWAY_INFO.PAYWAY_NO,
					map.get(KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List.PAYWAY_NO));
			// 支払方法入力支援一覧照会（テーブル単一参照）.支払い方法入力支援コード
			dataMap.put(KKSV0554_KKSV0554OP_PAYWAY_INFO.PAYWAY_INPUT_SHIEN_CD,
					map.get(KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List.PAYWAY_INPUT_SHIEN_CD));
			// 支払方法入力支援一覧照会（テーブル単一参照）.クレジットカードID
			dataMap.put(KKSV0554_KKSV0554OP_PAYWAY_INFO.CRECARD_ID,
					map.get(KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List.CRECARD_ID));
			// 支払方法入力支援一覧照会（テーブル単一参照）.ISP決済サービス契約番号
			dataMap.put(KKSV0554_KKSV0554OP_PAYWAY_INFO.ISP_KSSAI_SVC_KEI_NO,
					map.get(KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List.ISP_KSSAI_SVC_KEI_NO));
			// 支払方法入力支援一覧照会（テーブル単一参照）.他システム連携支払通番
			dataMap.put(KKSV0554_KKSV0554OP_PAYWAY_INFO.TSYRN_PAY_SEQ,
					map.get(KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List.TSYRN_PAY_SEQ));
			// 支払方法入力支援一覧照会（テーブル単一参照）.更新年月日時分秒
			dataMap.put(KKSV0554_KKSV0554OP_PAYWAY_INFO.ADD_DTM,
					map.get(KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List.ADD_DTM));
			// 支払方法入力支援一覧照会（テーブル単一参照）.更新年月日時分秒
			dataMap.put(KKSV0554_KKSV0554OP_PAYWAY_INFO.ADD_OPEACNT,
					map.get(KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List.ADD_OPEACNT));
			// 支払方法入力支援一覧照会（テーブル単一参照）.更新年月日時分秒
			dataMap.put(KKSV0554_KKSV0554OP_PAYWAY_INFO.UPD_DTM,
					map.get(KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List.UPD_DTM));
			// 支払方法入力支援一覧照会（テーブル単一参照）.更新年月日時分秒
			dataMap.put(KKSV0554_KKSV0554OP_PAYWAY_INFO.UPD_OPEACNT,
					map.get(KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List.UPD_OPEACNT));
			// 支払方法入力支援一覧照会（テーブル単一参照）.更新年月日時分秒
			dataMap.put(KKSV0554_KKSV0554OP_PAYWAY_INFO.DEL_DTM,
					map.get(KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List.DEL_DTM));
			// 支払方法入力支援一覧照会（テーブル単一参照）.更新年月日時分秒
			dataMap.put(KKSV0554_KKSV0554OP_PAYWAY_INFO.DEL_OPEACNT,
					map.get(KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List.DEL_OPEACNT));
			// 支払方法入力支援一覧照会（テーブル単一参照）.無効フラグ
			dataMap.put(KKSV0554_KKSV0554OP_PAYWAY_INFO.MK_FLG,
					map.get(KKSV0554_KKSV0554OP_KKSV055409SC_ECN0131B008CBSMsg1List.MK_FLG));
			retList.add(dataMap);
		}
		return retList;
	}
	
	/**
	 * 督促一覧照会（サービス契約番号）サービスIFを呼び出し、
	 * サービス契約番号に該当する督促情報レコードを取得します。
	 * 
	 * @param svcKeiNo サービス契約番号
	 * @param dataMap 登録データ
	 * @param funcCd 機能コード
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void callTkskIcrnShokai(String svcKeiNo, HashMap<String, Object> dataMap, String funcCd)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055410SC;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// サービス契約番号 → 督促一覧照会（サービス契約番号）マップ.ＫＥＹ＿サービス契約番号
		inMap.put(KKSV0554_KKSV0554OP_KKSV055410SC.KEY_SVC_KEI_NO, svcKeiNo);

		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		 KKSV0554_KKSV0554OP_ECH0231B505BSMapper mapper = new  KKSV0554_KKSV0554OP_ECH0231B505BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055410SC.ECH0231B505CBSMSG1LIST);
		
		if (isNullEmpty(list))
		{ 
			// ST1-2013-0000392 2012.02.21 START ASARI
//			// レコードが存在しない場合例外をスロー
//			throw new CCException(SC_ERROR_STRING, new Exception());
			// 督促レコードが存在しない場合は、「督促なし(00)」を設定
			dataMap.put(KKSV0554_KKSV0554OP_TOKUSOKU_INFO.TOKUSOKU_STAT,"00");
			return;
			// ST1-2013-0000392 2012.02.21 END ASARI
		}
		
		HashMap<String, Object>  map= list.get(0);
		
		// 督促一覧照会（サービス契約番号）.督促ステータス
		dataMap.put(KKSV0554_KKSV0554OP_TOKUSOKU_INFO.TOKUSOKU_STAT,
				map.get(KKSV0554_KKSV0554OP_KKSV055410SC_ECH0231B505CBSMsg1List.TOKUSOKU_STAT));
		return;
	}
	
	/**
	 * お客様一意照会サービスIFを呼び出し、
	 * SYSIDに該当するお客様情報レコードを取得します。
	 * 
	 * @param ccMap 入力データ
	 * @param dataMap 登録データ
	 * @param funcCd 機能コード
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void callCustIciShokai(HashMap<String, Object> ccMap, HashMap<String, Object> dataMap, String funcCd)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055411SC;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// 作業領域.連携データ区分情報.ＳＹＳＩＤ → お客様一意照会.ＫＥＹ＿SYSID
		inMap.put(KKSV0554_KKSV0554OP_KKSV055411SC.KEY_SYSID, 
				ccMap.get(KKSV0554_KKSV0554OP_RENKEI_DATA_KBN_INFO.SYSID));
		
		// オンライン運用日付 → お客様一意照会.ＫＥＹ＿予約適用年月日
		inMap.put(KKSV0554_KKSV0554OP_KKSV055411SC.KEY_RSV_APLY_YMD, this.opeDate);

		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		 KKSV0554_KKSV0554OP_ECK0011A010BSMapper mapper = new  KKSV0554_KKSV0554OP_ECK0011A010BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055411SC.ECK0011A010CBSMSG1LIST);
		
		if (isNullEmpty(list))
		{ // レコードが存在しない場合例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		HashMap<String, Object>  map= list.get(0);
		
		// お客様一意照会.SYSID
		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.EOID,
				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.EOID));
		// お客様一意照会.SYSID
		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.SYSID,
				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.SYSID));
		// お客様一意照会.初期eoIDパスワード
		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.SHK_EOID_PWD,
				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.SHK_EOID_PWD));
		// お客様一意照会.ニックネーム
		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.NKNAME,
				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.NKNAME));
		// お客様一意照会.会員種別コード
		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.MEMBER_SBT_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.MEMBER_SBT_CD));
		// お客様一意照会.お客様生年月日
		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.CUST_BIRTHD,
				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.CUST_BIRTHD));
		// お客様一意照会.お客様性別コード
		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.CUST_SEX_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.CUST_SEX_CD));
		// お客様一意照会.コンテンツISP利用不可フラグ
		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.CONT_ISP_USE_FAIL_FLG,
				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.CONT_ISP_USE_FAIL_FLG));
		// お客様一意照会.契約者タイプコード
		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.KEISHA_TYPE_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.KEISHA_TYPE_CD));
		// お客様一意照会.会員ISP決済状態コード
		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.MMB_ISP_KSSAI_STAT_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.MMB_ISP_KSSAI_STAT_CD));
		// お客様一意照会.会員種別特定フラグ
		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.MMB_SBT_TOKUT_FLG,
				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.MMB_SBT_TOKUT_FLG));
		// お客様一意照会.更新年月日時分秒
		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.UPD_DTM,
				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.UPD_DTM));
		// ANK-3366-00-00 2018/03/01 ADD START
		// お客様一意照会.卸先事業者コード
		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.ORSJGS_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.ORSJGS_CD));
		// ANK-3366-00-00 2018/03/01 ADD END
		// ANK-3814-00-00 DEL START
//		// ANK-3706-00-00 ADD START
//		// お客様一意照会.契約者電話番号
//		dataMap.put(KKSV0554_KKSV0554OP_CUST_INFO.KEISHA_TELNO,
//				map.get(KKSV0554_KKSV0554OP_KKSV055411SC_ECK0011A010CBSMsg1List.KEISHA_TELNO));
//		// ANK-3706-00-00 ADD END
		// ANK-3814-00-00 DEL END
		return;
	}
	
	/**
	 * 指示書登録サービスIFを呼び出し、指示書レコードを作成します。
	 * 
	 * @param dataMap 登録データ
	 * @param funcCd 機能コード
	 * @param serial 連番
	 * 
	 * @throws Throwable
	 */
	public void callSjishoAdd(HashMap<String, Object> dataMap, String funcCd, String serial) throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055412SC + serial;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// 処理コード
		inMap.put(KKSV0554_KKSV0554OP_KKSV055412SC.TRN_CD,
				dataMap.get(KKSV0554_KKSV0554OP_KKSV055412SC.TRN_CD));
		// 対象テーブルID
		inMap.put(KKSV0554_KKSV0554OP_KKSV055412SC.TRGT_TABLE_ID,
				dataMap.get(KKSV0554_KKSV0554OP_KKSV055412SC.TRGT_TABLE_ID));
		// 処理対象SYSID
		inMap.put(KKSV0554_KKSV0554OP_KKSV055412SC.TRAN_TRGT_SYSID,
				dataMap.get(KKSV0554_KKSV0554OP_KKSV055412SC.TRAN_TRGT_SYSID));
		// 結果フラグ
		inMap.put(KKSV0554_KKSV0554OP_KKSV055412SC.RSLT_FLG,
				dataMap.get(KKSV0554_KKSV0554OP_KKSV055412SC.RSLT_FLG));
		// パラメータ有効数
		String paramCnt = (String)dataMap.get(KKSV0554_KKSV0554OP_KKSV055412SC.PARAMETER_YK_CNT);
		inMap.put(KKSV0554_KKSV0554OP_KKSV055412SC.PARAMETER_YK_CNT, paramCnt);
		
		// パラメータ群の設定
		String baseKey = "parameter_";
		for (int i = 1; i <= Integer.parseInt(paramCnt); i++)
		{
			inMap.put(baseKey + i, dataMap.get(baseKey + i));
		}
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		KKSV0554_KKSV0554OP_ECK0151D010BSMapper mapper = new KKSV0554_KKSV0554OP_ECK0151D010BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		return;
	}

	/**
	 * 課金先一覧照会（請求契約番号）サービスIFを呼び出し、
	 * サービス契約番号に該当する課金先情報レコードを取得します。
	 * 
	 * @param svcKeiNo サービス契約番号
	 * @param dataMap 登録データ
	 * @param funcCd 機能コード
	 * @param serial 連番
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void callKakinIcrnShokai(HashMap<String, Object> ccMap, HashMap<String, Object> dataMap, String funcCd, String serial)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055413SC + serial;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// サービス契約番号 → サービス契約一意照会.ＫＥＹ＿サービス契約番号
		inMap.put(KKSV0554_KKSV0554OP_KKSV055413SC.KEY_SVC_KEI_NO,
				ccMap.get(KKSV0554_KKSV0554OP_SVC_KEI_INFO.SVC_KEI_NO));
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		/*ST2-2012-0001795 対応ここから*/
		KKSV0554_KKSV0554OP_EKK0321B005BSMapper mapper = new KKSV0554_KKSV0554OP_EKK0321B005BSMapper(mapName);
		/*ST2-2012-0001795 対応ここまで*/
				
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		/*ST2-2012-0001795 対応ここから*/
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055413SC.EKK0321B005CBSMSG1LIST);
		/*ST2-2012-0001795 対応ここまで*/		
		if (isNullEmpty(list))
		{ // レコードが存在しない場合例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		HashMap<String, Object> map = list.get(0);
		/*ST2-2012-0001795 対応ここから*/		
		// 課金先一覧照会（請求契約番号）.サービス契約番号
		dataMap.put(KKSV0554_KKSV0554OP_KAKIN_INFO.SVC_KEI_NO,
				map.get(KKSV0554_KKSV0554OP_KKSV055413SC_EKK0321B005CBSMsg1List.SVC_KEI_NO));
		// 課金先一覧照会（請求契約番号）.請求契約番号
		dataMap.put(KKSV0554_KKSV0554OP_KAKIN_INFO.SEIKY_KEI_NO,
				map.get(KKSV0554_KKSV0554OP_KKSV055413SC_EKK0321B005CBSMsg1List.SEIKY_KEI_NO));
		// 課金先一覧照会（請求契約番号）.課金先適用開始年月日
		dataMap.put(KKSV0554_KKSV0554OP_KAKIN_INFO.KAKINS_TSTAYMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055413SC_EKK0321B005CBSMsg1List.KAKINS_TSTAYMD));
		// 課金先一覧照会（請求契約番号）.課金先適用終了年月日
		dataMap.put(KKSV0554_KKSV0554OP_KAKIN_INFO.KAKINS_TENDYMD,
				map.get(KKSV0554_KKSV0554OP_KKSV055413SC_EKK0321B005CBSMsg1List.KAKINS_TENDYMD));
		/*ST2-2012-0001795 対応ここまで*/
		// 課金先一覧照会（請求契約番号）.登録年月日時分秒
		dataMap.put(KKSV0554_KKSV0554OP_KAKIN_INFO.ADD_DTM,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.ADD_DTM));
		// 課金先一覧照会（請求契約番号）.登録オペレータアカウント
		dataMap.put(KKSV0554_KKSV0554OP_KAKIN_INFO.ADD_OPEACNT,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.ADD_OPEACNT));
		// 課金先一覧照会（請求契約番号）.更新年月日時分秒
		dataMap.put(KKSV0554_KKSV0554OP_KAKIN_INFO.UPD_DTM,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.UPD_DTM));
		// 課金先一覧照会（請求契約番号）.更新オペレータアカウント
		dataMap.put(KKSV0554_KKSV0554OP_KAKIN_INFO.UPD_OPEACNT,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.UPD_OPEACNT));
		// 課金先一覧照会（請求契約番号）.無効フラグ
		dataMap.put(KKSV0554_KKSV0554OP_KAKIN_INFO.MK_FLG,
				map.get(KKSV0554_KKSV0554OP_KKSV055403SC_ECK0121A010CBSMsg1List.MK_FLG));
		
		return;
	}
	
	/**
	 * 旧ICSコード変換一覧照会サービスIFを呼び出し、
	 * 対象レコードを取得します。
	 * 
	 * @param ccMap 入力データ
	 * @param dataMap 登録データ
	 * @param funcCd 機能コード
	 * @param sokuwari 即割有無（1:有/0:無）
	 * @param serial 連番
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void callOldICSConvIcrnShokai(HashMap<String, Object> ccMap, HashMap<String, Object> dataMap, String funcCd, String sokuwari, String serial)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055414SC + serial;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// 02(AxM) → 旧ICSコード変換一覧照会.ＫＥＹ＿連携先システム識別コード
		inMap.put(KKSV0554_KKSV0554OP_KKSV055414SC.KEY_RNK_SAKI_SYS_SKBT_CD, "02");
		// 04 → 旧ICSコード変換一覧照会.ＫＥＹ＿旧ICSコード変換種別コード
		inMap.put(KKSV0554_KKSV0554OP_KKSV055414SC.KEY_OLD_ICS_CD_CHG_SBT_CD, "04");
		// 旧ICSコード変換一覧照会.ＫＥＹ＿料金グループコード
		inMap.put(KKSV0554_KKSV0554OP_KKSV055414SC.KEY_PRC_GRP_CD, ccMap.get(KKSV0554_KKSV0554OP_SVC_KEI_INFO.PRC_GRP_CD));
		// 旧ICSコード変換一覧照会.ＫＥＹ＿料金コースコード
		inMap.put(KKSV0554_KKSV0554OP_KKSV055414SC.KEY_PCRS_CD, ccMap.get(KKSV0554_KKSV0554OP_SVC_KEI_INFO.PCRS_CD));
		// 旧ICSコード変換一覧照会.ＫＥＹ＿料金プランコード
		inMap.put(KKSV0554_KKSV0554OP_KKSV055414SC.KEY_PPLAN_CD, ccMap.get(KKSV0554_KKSV0554OP_SVC_KEI_INFO.PPLAN_CD));
		// 旧ICSコード変換一覧照会.ＫＥＹ＿即割有無
		inMap.put(KKSV0554_KKSV0554OP_KKSV055414SC.KEY_SOKU_WARI_UM, sokuwari);
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		KKSV0554_KKSV0554OP_EKK2141B001BSMapper mapper = new KKSV0554_KKSV0554OP_EKK2141B001BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055414SC.EKK2141B001CBSMSG1LIST);
		
		if (isNullEmpty(list))
		{
			return;
		}
		
		HashMap<String, Object>  map = list.get(0);
		
		// 旧ＩＣＳコード変換一覧照会.旧ICSコード変換一覧照会明細.旧ICS契約サービスコード
		dataMap.put(KKSV0554_KKSV0554OP_OLD_ICS_CONV_INFO.OLD_ICS_KEI_SVC_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055414SC_EKK2141B001CBSMsg1List.OLD_ICS_KEI_SVC_CD));
		// 旧ＩＣＳコード変換一覧照会.旧ICSコード変換一覧照会明細.旧ICS料金プランコード
		dataMap.put(KKSV0554_KKSV0554OP_OLD_ICS_CONV_INFO.OLD_ICS_PPLAN_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055414SC_EKK2141B001CBSMsg1List.OLD_ICS_PPLAN_CD));
		// 旧ＩＣＳコード変換一覧照会.旧ICSコード変換一覧照会明細.旧ICS付加サービス種別コード
		dataMap.put(KKSV0554_KKSV0554OP_OLD_ICS_CONV_INFO.OLD_ICS_HUKA_SVC_SBT_CD,
				map.get(KKSV0554_KKSV0554OP_KKSV055414SC_EKK2141B001CBSMsg1List.OLD_ICS_HUKA_SVC_SBT_CD));
		return;
	}

	/**
	 * 割引サービス契約一覧照会を呼び出し、即割適用中かどうか判定します。
	 * 
	 * @param svcKeiNo サービス契約番号
	 * @param funcCd 機能コード
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public int callWrsvAplyCntIcrnShokai(String svcKeiNo, String funcCd) throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055415SC;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// 割引サービス契約一覧照会.ＫＥＹ＿サービス契約番号
		inMap.put(KKSV0554_KKSV0554OP_KKSV055415SC.KEY_SVC_KEI_NO, svcKeiNo);
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		KKSV0554_KKSV0554OP_EKK0451B001BSMapper mapper = new KKSV0554_KKSV0554OP_EKK0451B001BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055415SC.EKK0451B001CBSMSG1LIST);
		
		// 即割のレコード数をカウントする
		int retCnt = 0;
		for (HashMap<String, Object> map : list)
		{
			String mapWribSvcTypeCd = (String)map.get(KKSV0554_KKSV0554OP_KKSV055415SC_EKK0451B001CBSMsg1List.WRIB_TYPE_CD);
			if (!"31".equals(mapWribSvcTypeCd))
			{
				continue;
			}
			// IT1-2013-0000538 2013.03.20 DEL START ASARI
//			String status = (String)map.get(KKSV0554_KKSV0554OP_KKSV055415SC_EKK0451B001CBSMsg1List.WRIB_SVC_KEI_STAT);
//			if (JKKSvcConst.SVC_KEI_STAT_910.equals(status) || JKKSvcConst.SVC_KEI_STAT_920.equals(status))
//			{
//				continue;
//			}
			// IT1-2013-0000538 2013.03.20 DEL END ASARI
			retCnt++;
		}
		return retCnt;
	}

	/**
	 * サービス契約内訳＜eo光電話＞一覧照会（サービス契約番号）サービスIFを呼び出し、
	 * SYSIDに該当するサービス契約内訳レコードを取得します。
	 * 
	 * @param ccMap 入力データ
	 * @param funcCd 機能コード
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<HashMap<String, Object>> callSvcKeiUcwkTelIcrnShokai(HashMap<String, Object> ccMap, String funcCd)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055416SC;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// サービス契約番号 → サービス契約内訳＜eo光電話＞一覧照会（サービス契約番号）.ＫＥＹ＿サービス契約番号
		inMap.put(KKSV0554_KKSV0554OP_KKSV055416SC.KEY_SVC_KEI_NO, ccMap.get(KKSV0554_KKSV0554OP_SVC_KEI_INFO.SVC_KEI_NO));

		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		KKSV0554_KKSV0554OP_EKK0191B001BSMapper mapper = new  KKSV0554_KKSV0554OP_EKK0191B001BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list =
			(ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055416SC.EKK0191B001CBSMSG1LIST);
		
		if (isNullEmpty(list))
		{ // レコードが存在しない場合例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		ArrayList<HashMap<String, Object>> retList = new ArrayList<HashMap<String,Object>>();
		
		for (HashMap<String, Object> map : list)
		{
			HashMap<String, Object> dataMap = new HashMap<String, Object>();
			
			// サービス契約内訳＜eo光電話＞一覧照会（サービス契約番号）.電話番号順番
			dataMap.put(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_TEL_INFO.TELNO_JUN,
					map.get(KKSV0554_KKSV0554OP_KKSV055416SC_EKK0191B001CBSMsg1List.TELNO_JUN));
			retList.add(dataMap);
		}
		return retList;
	}
	
	
	/**
	 * 料金コース一意照会サービスIFを呼び出し、
	 * 料金コースに該当する料金コース情報レコードを取得します。
	 * 
	 * @param pcrsCd 料金コースコード
	 * @param funcCd 機能コード
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public String callPcrsIciShokai(String pcrsCd, String funcCd) throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055417SC;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// 料金コースコード → 料金コース一意照会.ＫＥＹ＿料金コースコード
		inMap.put(KKSV0554_KKSV0554OP_KKSV055417SC.KEY_PCRS_CD, pcrsCd);
		
		// オンライン運用日付 → 料金コース一意照会.ＫＥＹ＿予約適用年月日
		inMap.put(KKSV0554_KKSV0554OP_KKSV055417SC.KEY_RSV_APLY_YMD, this.opeDate);
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		KKSV0554_KKSV0554OP_EKK0791A010BSMapper mapper = new  KKSV0554_KKSV0554OP_EKK0791A010BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055417SC.EKK0791A010CBSMSG1LIST);
		
		if (isNullEmpty(list))
		{ // レコードが存在しない場合例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		HashMap<String, Object> map = list.get(0);
		
		// ID通知書発行識別コード
		return (String)map.get(KKSV0554_KKSV0554OP_KKSV055417SC_EKK0791A010CBSMsg1List.ID_TCHISHO_HAK_SKBT_CD);
	}
	
	/**
	 * サービス契約<eoADSL>一意照会サービスIFを呼び出し、
	 * サービス契約内訳番号に該当するサービス契約<eoADSL>情報レコードを取得します。
	 * 
	 * @param ccMap 入力データ
	 * @param funcCd 機能コード
	 * @param serial 連番
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> callSvcUcwkADSLIciShokai(HashMap<String, Object> ccMap, String funcCd, String serial)
			throws Throwable
	{
		String mapName = this.ccMapNm + KKSV0554_KKSV0554OP.KKSV055418SC + serial;
		
		/* --------------------------------------------------
		 * CC項目 -> SC項目 上りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		this.cmnParam.setData(mapName, inMap);
		
		// 共通情報のマッピング
		inMap.put(FUNC_CODE, funcCd);
		
		// サービス契約内訳番号 → サービス契約<eoADSL>一意照会.ＫＥＹ＿サービス契約内訳番号
		inMap.put(KKSV0554_KKSV0554OP_KKSV055418SC.KEY_SVC_KEI_UCWK_NO, 
				ccMap.get(KKSV0554_KKSV0554OP_SVC_KEI_UCWK_INFO.SVC_KEI_UCWK_NO));
		
		/* --------------------------------------------------
		 * サービスIF実行
		 * -------------------------------------------------- */
		KKSV0554_KKSV0554OP_EKK0221A010BSMapper mapper = new  KKSV0554_KKSV0554OP_EKK0221A010BSMapper(mapName);
		
		HashMap<String, Object> paramMap = mapper.editInMsg(this.cmnParam);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, this.cmnHandle);
		
		this.cmnParam = mapper.editResultRP(result, this.cmnParam);
		
		checkExecutionResult(result);
		
		/* --------------------------------------------------
		 * CC項目 <- SC項目 下りマッピング
		 * -------------------------------------------------- */
		HashMap<String, Object> outMap = (HashMap<String, Object>)this.cmnParam.getData(mapName);
		
		ArrayList<HashMap<String, Object>> list
				= (ArrayList<HashMap<String, Object>>)outMap.get(KKSV0554_KKSV0554OP_KKSV055418SC.EKK0221A010CBSMSG1LIST);
		
		if (list == null || list.isEmpty())
		{
			return null;
		}
		
		HashMap<String, Object> map = list.get(0);
		
		HashMap<String, Object> svcUcwkADSLMap =  new HashMap<String, Object>();
		// サービス契約<eoADSL>一意照会.ADSL認証ID
		svcUcwkADSLMap.put(KKSV0554_KKSV0554OP_SVC_UCWK_ADSL_INFO.ADSL_NINSHO_ID,
				map.get(KKSV0554_KKSV0554OP_KKSV055418SC_EKK0221A010CBSMsg1List.ADSL_NINSHO_ID));
		
		return svcUcwkADSLMap;
	}
	
// OM-2013-0003259 2013.10.16 add start
	
	/**
	 * EKK0081B519_サービス契約一覧照会(SYSID)3 サービスインタフェースを呼び出します。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param sysid SYSID
	 * @return サービス契約一覧照会(SYSID)3結果
	 * @throws Throwable
	 */
	public CAANMsg[] callSvcKeiIchiranBySidShokai(String sysid)
	throws Throwable
	{
		
		// 上りマッピング処理
		HashMap<String, Object> inMapEKK0081B519 = editInMsgEKK0081B519(this.cmnParam, sysid);

		// サービスインターフェース呼び出し
		CAANMsg rsltMsgEKK0081B519 = callSvcInter(this.cmnHandle, this.cmnParam, this.ccMapNm, inMapEKK0081B519, new EKK0081B519CBSMsg().getContents());

		// 照会結果を返す
		return rsltMsgEKK0081B519.getCAANMsgList(EKK0081B519CBSMsg.EKK0081B519CBSMSG1LIST);
	}

	/**
	 * EKK0081B519_サービス契約一覧照会(SYSID)
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
	 * 
	 * @param param リクエストパラメータ
	 * @param sysid SYSID
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsgEKK0081B519(IRequestParameterReadWrite param, String sysid)
	throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0081B519CBSMsg.class.getName());

		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new EKK0081B519CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(EKK0081B519CBSMsg.TEMPLATEID, "EKK0081B519");

		// 機能コード
		template.set(EKK0081B519CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿SYSID
		template.set(
				EKK0081B519CBSMsg.KEY_SYSID,
				sysid);

		// 上り情報を生成
		return editInMsgCmn(param, template);
	}

	/**
	 * 条件部の共通する項目の設定する
	 * 
	 * @param param リクエストパラメータ
	 * @param template 条件の設定先
	 * @throws RequestParameterException
	 */
	private void editInMsgBasicCmn(IRequestParameterReadOnly param, CAANMsg template)
	throws RequestParameterException
	{
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
	}

	/**
	 * 持ちうるフィールドにNullマッピングで埋める
	 * 
	 * @param msg 対象クラス
	 * @param contents 対応クラスのフィールド列挙
	 */
	private void fillCAANMSGNullMapping(CAANMsg msg, Object[][] contents)
	{
		// 要素ごとのループ
		for(int i = 0 ; i < contents.length ; i++)
		{
			Object element = null;
			// キーに該当する箇所の取得
			element = contents[i][0];
			// Nullでマッピング
			msg.setNull((String)element);
		}
	}

	/**
	 * サービスI/F実行用の上り情報を生成する
	 * 
	 * @param param リクエストパラメータ
	 * @param template 条件の設定先
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 * @exception RequestParameterException
	 */
	private HashMap<String, Object> editInMsgCmn(IRequestParameterReadOnly param, CAANMsg template)
	throws RequestParameterException 
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * <pre>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 * 
	 * </pre>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @param contents サービスインターフェースのテンプレート項目の配列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP(
			Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			String fixedText,
			Object[][] contents) 
			throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		// ステータス取得
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		if (returnCode.intValue() != 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 inMap = (HashMap)param.getData(fixedText);

		// ユーザデータ情報にエラー情報をマッピング
		for(int i = 0 ; contents != null && i < contents.length ; i++)
		{
			String element = null;
			element = (String)contents[i][0];
			if (element.indexOf("_err") > 0)
			{
				if (!template.isNull(element))
				{
					if (!inMap.containsKey(element))
					{
						inMap.put(element, template.getString(element));
					}
				}
			}
		}

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 * エラーチェック処理です。
	 * <br>
	 * @param msgList サービスインタフェース実行結果
	 * @throws SCCallException 
	 */
	private void errChk(
			Map<?, ?> msgList) 
			throws SCCallException
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		// ステータス取得
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		if ((0 != returnCode.intValue()) || (0 != templateStatus))
		{
			String errMsg = ERR_MSG_INVALID_RET_MSG;
			throw new SCCallException(errMsg, String.valueOf(returnCode), templateStatus);
		}
	}

	/**
	 * 業務データの取得処理です。
	 * <br>
	 * @param workMapKey 業務データのマップキー
	 * @param rslt SVIFの実行結果データ
	 * @return 業務データ
	 */
	private CAANMsg getWorkCAANMsg(Map<?, ?> rslt)
	{
		CAANMsg[] templates = (CAANMsg[])rslt.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		return parentTemplate;
	}

	/**
	 * サービスインターフェース呼び出し処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param siInMap サービスインターフェースの入力マップ
	 * @param contents サービスインターフェースのテンプレート項目の配列
	 * @return 業務データ
	 * @throws Throwable 
	 */
	private CAANMsg callSvcInter(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			HashMap<String, Object> siInMap,
			Object[][] contents)
			throws Throwable
	{
		
		// サービスインターフェースの呼び出し
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		Map<?, ?> rsltMap = scCall.run(siInMap, handle);
		// エラーマッピング処理
		editResultRP(rsltMap, param, fixedText, contents);
		// エラーチェック処理
		errChk(rsltMap);
		// 業務データ取得処理
		CAANMsg workData = getWorkCAANMsg(rsltMap);

		return workData;
	}
// OM-2013-0003259 2013.10.16 add end

// ANK-4171-00-00 ADD START
	/**
	 * ECK0201B003_連絡先履歴一覧照会 サービスインタフェースを呼び出します。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param sysid SYSID
	 * @return ECK0201B003_連絡先履歴一覧照会結果
	 * @throws Throwable
	 */
	public CAANMsg[] callrnrkIcrnShokai(String sysid)
	throws Throwable
	{
		
		// 上りマッピング処理
		HashMap<String, Object> inMapECK0201B003 = editInMsgECK0201B003(this.cmnParam, sysid);

		// サービスインターフェース呼び出し
		CAANMsg rsltMsgECK0201B003 = callSvcInter(this.cmnHandle, this.cmnParam, this.ccMapNm, inMapECK0201B003, new ECK0201B003CBSMsg().getContents());

		// 照会結果を返す
		return rsltMsgECK0201B003.getCAANMsgList(ECK0201B003CBSMsg.ECK0201B003CBSMSG1LIST);
	}
	
	/**
	 * ECK0201B003_連絡先履歴一覧照会
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
	 * 
	 * @param param リクエストパラメータ
	 * @param sysid SYSID
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsgECK0201B003(IRequestParameterReadWrite param, String sysid)
	throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(ECK0201B003CBSMsg.class.getName());

		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new ECK0201B003CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(ECK0201B003CBSMsg.TEMPLATEID, "ECK0201B003");

		// 機能コード
		template.set(ECK0201B003CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿SYSID
		template.set(
				ECK0201B003CBSMsg.KEY_SYSID,
				sysid);

		// 上り情報を生成
		return editInMsgCmn(param, template);
	}
// ANK-4171-00-00 ADD END

// ANK-4341-00-00 ADD START
		/**
		 * ECKA9010002_AXM会員情報更新依頼（検索） サービスインタフェースを呼び出します。
		 * <br>
		 * @param handle セッションマネージャなどを持ったハンドル
		 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
		 * @param fixedText ユーザ任意文字列
		 * @param sysid SYSID
		 * @return ECKA9010002_AXM会員情報更新依頼（検索）
		 * @throws Throwable
		 */
		public CAANMsg[] calliDAKaiinUpdateIraiSearch(String sysid)
		throws Throwable
		{
			
			// 上りマッピング処理
			HashMap<String, Object> inMapECKA9010002 = editInMsgECKA9010002(this.cmnParam, sysid);

			// サービスインターフェース呼び出し
			CAANMsg rsltMsgECKA9010002 = callSvcInter(this.cmnHandle, this.cmnParam, this.ccMapNm, inMapECKA9010002, new ECKA9010002CBSMsg().getContents());

			// 照会結果を返す
			return rsltMsgECKA9010002.getCAANMsgList(ECKA9010002CBSMsg.ECKA9010002CBSMSG1LIST);
		}
		
		/**
		 * ECKA9010002_AXM会員情報更新依頼（検索）
		 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
		 * 
		 * @param param リクエストパラメータ
		 * @param sysid SYSID
		 * @return S/I上り情報
		 * @throws RequestParameterException
		 */
		private HashMap<String, Object> editInMsgECKA9010002(IRequestParameterReadWrite param, String sysid)
		throws RequestParameterException
		{
			CAANMsg template = new CAANMsg(ECKA9010002CBSMsg.class.getName());

			// nullマッピングを実施
			fillCAANMSGNullMapping(template, new ECKA9010002CBSMsg().getContents());

			// 共通部を設定
			editInMsgBasicCmn(param, template);

			// テンプレートID(SIFのID)
			template.set(ECKA9010002CBSMsg.TEMPLATEID, "ECKA9010002");

			// 機能コード
			template.set(ECKA9010002CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

			// ＫＥＹ＿SYSID
			template.set(
					ECKA9010002CBSMsg.KEY_SYSID,
					sysid);

			// 上り情報を生成
			return editInMsgCmn(param, template);
		}
// ANK-4341-00-00 ADD END
}
