/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUSpMskmViewCtrlCC
*   ソースファイル名：JFUSpMskmViewCtrlCC.java
*   作成者          ：富士通
*   日付            ：2017年05月02日
*＜機能概要＞
*   セキュリティパック申込表示制御CC
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v32.00.00   2017/05/02   FJ）中山    【ANK-3149-00-00】新セキュリティパック導入 新規作成
*   v40.00      2018/09/18   FJ）張本    【ANK-3412-00-00】５ギガ・１０ギガコース導入対応
*   v51.00      2020/11/12   FJ）張本    【ANK-3949-00-00】Netflix導入対応（STEP1）
*   v65.00      2024/01/22   FJ）藤本涼  【ANK-4346-00-00】【eo定期】CCMG再構築対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
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.exception.CCException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.JSYLogBase;
import com.fujitsu.futurity.common.JSYbpmLog;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import static com.fujitsu.futurity.bp.custom.common.JCNDslCommonUtil.printSyslog4War;

import eo.common.constant.JCNStrConst;
import eo.common.constant.JFUStrConst;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JCNStringUtil;
import eo.common.util.JKKCommonUtil;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B008CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B008CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0601B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0601B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2811B504CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2811B504CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0321B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg1List;

/**
 * セキュリティパック申込表示制御CC.
 * <br>
 * @author 富士通
 */
public class JFUSpMskmViewCtrlCC extends JKKSpMskmViewCtrlBaseCC
{
	/** 無線ルーター料金コースリスト */
	private static final String[] MUSEN_RT_PCRS_CD_LIST = {
		JKKStrConst.CD00134_MUSEN_100M_RENT,
		JKKStrConst.CD00134_MUSEN_1G_RENT,
		JKKStrConst.CD00134_MUSEN_100M_KAITORI,
		JKKStrConst.CD00134_MUSEN_1G_KAITORI,
		JKKStrConst.CD00134_OLD_MUSEN_100M_RENT,
	};
	
	/** ベーシックルーター料金コースリスト */
	private static final String[] BASIC_RT_PCRS_CD_LIST = {
		JKKStrConst.CD00134_BASIC_100M_RENT,
		JKKStrConst.CD00134_BASIC_1G_RENT,
		JKKStrConst.CD00134_BASIC_100M_KAITORI,
		JKKStrConst.CD00134_BASIC_1G_KAITORI,
	};
	
	/** 金額リスト */
	private static final String[][] AMNT_LIST = {
		{ JKKStrConst.PCRS_CD_FAMILY_PACK, JKKStrConst.PPLAN_CD_FAMILY_PACK, "famipaAmntDsp" },
		{ JKKStrConst.CD00134_KKOP_MUSEN, JKKStrConst.CD00565_KKOP_MUSEN, "takinortMusenAmntDsp" },
		{ JKKStrConst.OPSVC_PCRS_RMTSPRT_PLUS, JKKStrConst.OPSVC_PPLAN_RMTSPRT_PLUS, "rmtsprtPlusAmntDsp" },
		{ JKKStrConst.PCRS_CD_SECURITY_PACK_MSKM, JKKStrConst.PPLAN_CD_SECURITY_PACK_MSKM, "secpaAmntDsp" },
		{ JKKStrConst.OPSVC_PCRS_SMARTLINK_PREMIUM, JKKStrConst.OPSVC_PPLAN_SMARTLINK_PREMIUM, "prepaAmntDsp" },
		{ JKKStrConst.PCRS_CD_NTFMLPRM_FOR_EO, JKKStrConst.PPLAN_CD_NTFMLPRM_FOR_EO, "ntfmlprmAmntDsp" },
		{ JKKStrConst.PCRS_CD_INETSGW_FOR_EO, JKKStrConst.PPLAN_CD_INETSGW_FOR_EO, "inetsgwlAmntDsp" },
	};

	/** 10G多機能速度コード */
	private static final String RT_SPD_CD_10G = "30";
	// ANK-4346-00-00 ADD START
	/**  コンテンツサービスID */
	public static final String SERVICE_ID = "service_id";
	/** 契約フラグ */
	private static final String CONTRACT_FLG = "contract_flg";
	/**  契約中 */
	public static final String KEIYAKUCHU = "1";
	/** コンテンツサービスコード */
	private static final String PARAM_CONT_SVC_CD = "cont_svc_cd";
	/** コンテンツ種別コード */
	private static final String PARAM_CONT_SBT_CD = "cont_sbt_cd";
	/** SYSID */
	private static final String PARAM_SYSID = "sysid";
	/** コンテンツ契約情報要否 */
	private static final String PARAM_RETURN_CONTRACT = "return_contract";
	/** 直近課金情報要否 */
	private static final String PARAM_RETURN_CHARGE = "return_charge";
	/** 契約付加情報要否 */
	private static final String PARAM_RETURN_CONTRACT_ADDS = "return_contract_adds";

	// ANK-4346-00-00 ADD END

	/**
	 * 表示制御取得を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite getViewCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		if (inMap == null)
		{
			return param;
		}
		
		// 継承元の表示制御取得（共通）を呼び出す
		super.getViewCtrlBase(handle, param, fixedText);
		
		// ANK-4346-00-00 ADD START
		// エラーコード
		String errCd = (String) inMap.get("fu_cnife047_return_code");
		
		// CNIFE047にて正常(00000)以外のエラーコードが返却された場合
		if (!JKKStringUtil.isNullBlank(errCd))
		{
			if (!("00000".equals(errCd)))
			{
				// mes.logに業務エラーを設定する
				String svcKeiNo = (String) inMap.get("svc_kei_no");
				String strMessage = "セキュリティーオプション申込画面にて、CNIFE047_契約一覧情報取得処理に失敗しました。[サービス契約番号：{" + svcKeiNo + "}][エラーコード：{" + errCd + "}]";
				JSYbpmLog.println(JSYLogBase.EXECUTION, JCKPmpCommonUtil.class ,strMessage, "",  new String[]{"", ""}, "");
				// メッセージログ（システムログ）にメッセージID「EKF2290-KW」に該当するメッセージを出力する
				printSyslog4War("CNIFE047","EKF2290-KW",strMessage);
				
				throw new CCException(SC_ERROR_STRING, new Exception());
			}
		}
		
		if (super.getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
		{ // ステータスが単項目エラー以上であれば例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		// ANK-4346-00-00 ADD END
		
		// ファミリーパック契約有無設定
		if (JKKStrConst.FAMILY_PACK_VIEW_PTN_NASI.equals(inMap.get("fpViewPtn")))
		{
			// ファミリーパック表示パターンが「表示なし」の場合、ファミリーパック契約有無に「契約なし」を設定
			inMap.put("famipaKeiUm", "0");
		}
		else if (JKKStrConst.FAMILY_PACK_VIEW_PTN_ARI.equals(inMap.get("fpViewPtn")))
		{
			// ファミリーパック表示パターンが「表示あり」の場合、ファミリーパック契約有無に「契約あり」を設定
			inMap.put("famipaKeiUm", "1");
		}
		
		// セキュリティパック関連設定
		setSecpaInfo(handle, param, fixedText);
		
		// プレミアムパック関連設定
		setPrepaInfo(handle, param, fixedText);
		
		// オプションサービス契約関連設定
		setOpSvcKeiInfo(handle, param, fixedText);
		
		// 機器提供サービス契約関連設定
		setKktkSvcKeiInfo(handle, param, fixedText);
		
		// コンテンツ契約関連設定
		setContKeiInfo(handle, param, fixedText);
		
		// 各種オプション金額設定
		setOptionAmnt(handle, param, fixedText);
		
		return param;
	}
	
	/**
	 * セキュリティパック関連の設定を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void setSecpaInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		ArrayList<HashMap<String, Object>> ekk0451b010OutputList = new ArrayList<HashMap<String, Object>>();
		if (null == ekk0451b010OutputList)
		{
			return;
		}
		
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		HashMap<String, Object> paramMap = super.setSCInputCommonData(param, new HashMap<String, Object>());
		Map<?, ?> result = null;
		CAANMsg template = null;
		
		// 割引サービス契約一覧照会（割引サービス指定）
		//   セキュリティパックの割引サービス契約を照会する
		template = editInEKK0451B010(param, fixedText, JKKStrConst.WRIB_SVC_CD_SECURITY_PACK); // 上りマッピング
		result = scCall.run(super.putParamMap(paramMap, template), handle); // SC呼び出し
		editRetEKK0451B010(result, param, fixedText, ekk0451b010OutputList); // 下りマッピング
		if (super.getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
		{ // ステータスが単項目エラー以上であれば例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		// セキュリティパック有無関連設定
		if (ekk0451b010OutputList.size() == 0)
		{
			// セキュリティパック表示パターンに「表示なし」を設定
			inMap.put("secpaViewPtn", "0");
			// セキュリティパック契約有無に「契約なし」を設定
			inMap.put("secpaKeiUm", "0");
		}
		else
		{
			// セキュリティパック表示パターンに「表示あり」を設定
			inMap.put("secpaViewPtn", "1");
			// セキュリティパック契約有無に「契約あり」を設定
			inMap.put("secpaKeiUm", "1");
		}
	}
	
	/**
	 * プレミアムパック関連の設定を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void setPrepaInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		ArrayList<HashMap<String, Object>> ekk0451b010OutputList = new ArrayList<HashMap<String, Object>>();
		if (null == ekk0451b010OutputList)
		{
			return;
		}
		
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		HashMap<String, Object> paramMap = super.setSCInputCommonData(param, new HashMap<String, Object>());
		Map<?, ?> result = null;
		CAANMsg template = null;
		
		// 割引サービス契約一覧照会（割引サービス指定）
		//   プレミアムパックの割引サービス契約を照会する
		template = editInEKK0451B010(param, fixedText, JKKStrConst.WRIB_SVC_SMARTLINK_PREMIUM); // 上りマッピング
		result = scCall.run(super.putParamMap(paramMap, template), handle); // SC呼び出し
		editRetEKK0451B010(result, param, fixedText, ekk0451b010OutputList); // 下りマッピング
		if (super.getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
		{ // ステータスが単項目エラー以上であれば例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		// プレミアムパック有無関連設定
		if (ekk0451b010OutputList.size() == 0)
		{
			// プレミアムパック表示パターンに「表示なし」を設定
			inMap.put("prepaViewPtn", "0");
			// プレミアムパック契約有無に「契約なし」を設定
			inMap.put("prepaKeiUm", "0");
		}
		else
		{
			// プレミアムパック表示パターンに「表示あり」を設定
			inMap.put("prepaViewPtn", "1");
			// プレミアムパック契約有無に「契約あり」を設定
			inMap.put("prepaKeiUm", "1");
		}
	}
	
	/**
	 * オプションサービス契約関連の設定を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void setOpSvcKeiInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		ArrayList<HashMap<String, Object>> ekk0351b002OutputList = new ArrayList<HashMap<String, Object>>();
		if (null == ekk0351b002OutputList)
		{
			return;
		}
		
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		HashMap<String, Object> paramMap = super.setSCInputCommonData(param, new HashMap<String, Object>());
		Map<?, ?> result = null;
		CAANMsg template = null;
		
		// オプションサービス契約一覧照会（サービス契約番号）
		template = editInEKK0351B002(param, fixedText); // 上りマッピング
		result = scCall.run(super.putParamMap(paramMap, template), handle); // SC呼び出し
		editRetEKK0351B002(result, param, fixedText, ekk0351b002OutputList); // 下りマッピング
		if (super.getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
		{ // ステータスが単項目エラー以上であれば例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		// オプションサービス契約有無関連設定
		
		// リモートサポートプラス存在フラグ
		boolean rmtsprtPlusSonzaiFlg = false;
		// インターネットサギウォール存在フラグ
		boolean inetsgwlSonzaiFlg = false;
		// ノートンファミリープレミア存在フラグ
		boolean ntfmlprmSonzaiFlg = false;
		
		for (HashMap<String, Object> childMap : ekk0351b002OutputList)
		{
			// オプションサービス契約ステータスが「解約済」以上の場合、次の要素を処理する
			if (JKKStrConst.CD00037_DSL_ZM.compareTo((String)childMap.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)) <= 0)
			{
				continue;
			}
			
			// オプションサービスコード
			String opSvcCd = (String)childMap.get(EKK0351B002CBSMsg1List.OP_SVC_CD);
			
			if (JKKStrConst.OP_SVC_CD_RMTSPRT_PLUS.equals(opSvcCd))
			{
				// リモートサポートプラスあり
				rmtsprtPlusSonzaiFlg = true;
			}
			else if (JKKStrConst.OP_SVC_CD_INETSGWL.equals(opSvcCd))
			{
				// インターネットサギウォールあり
				inetsgwlSonzaiFlg = true;
			}
			else if (JKKStrConst.OP_SVC_CD_NTFMLPRM.equals(opSvcCd))
			{
				// ノートンファミリープレミアあり
				ntfmlprmSonzaiFlg = true;
			}
		}
		
		if (rmtsprtPlusSonzaiFlg)
		{
			// リモートサポートプラス表示パターン表示パターンに「表示なし」を設定
			inMap.put("rmtsprtPlusViewPtn", "0");
		}
		else
		{
			// リモートサポートプラス表示パターン表示パターンに「表示あり」を設定
			inMap.put("rmtsprtPlusViewPtn", "1");
		}
		
		if (inetsgwlSonzaiFlg)
		{
			// インターネットサギウォール表示パターンに「表示なし」を設定
			inMap.put("inetsgwlViewPtn", "0");
			// インターネットサギウォール契約有無に「契約あり」を設定
			inMap.put("inetsgwlKeiUm", "1");
		}
		else
		{
			// インターネットサギウォール表示パターンに「表示あり」を設定
			inMap.put("inetsgwlViewPtn", "1");
			// インターネットサギウォール契約有無に「契約なし」を設定
			inMap.put("inetsgwlKeiUm", "0");
		}
		
		if (ntfmlprmSonzaiFlg)
		{
			// ノートンファミリープレミア表示パターンに「表示なし」を設定
			inMap.put("ntfmlprmViewPtn", "0");
		}
		else
		{
			// ノートンファミリープレミア表示パターンに「表示あり」を設定
			inMap.put("ntfmlprmViewPtn", "1");
		}
	}
	
	/**
	 * 機器提供サービス契約関連の設定を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void setKktkSvcKeiInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		HashMap<String, Object> paramMap = super.setSCInputCommonData(param, new HashMap<String, Object>());
		Map<?, ?> result = null;
		CAANMsg template = null;
		
		// FP解約ルーター表示パターンに「表示なし」を設定
		inMap.put("fpDslRtViewPtn", "0");
		// FP継続ルーター表示パターンに「表示なし」を設定
		inMap.put("fpKeizkRtViewPtn", "0");
		// 多機能ルーターVA区分に「VAのみ」を設定
		inMap.put("takinortVaKbn", "0");
		// ルーター区分に「ルーターなし」を設定
		inMap.put("rtKbn", "0");
		
		// 多機能ルーター無線ルーター機能存在フラグ
		boolean kkopMusenSonzaiFlg = false;
		// 多機能ルーター有線ルーター機能存在フラグ
		boolean kkopYusenSonzaiFlg = false;
		// 多機能ルーター電話アダプター機能存在フラグ
		boolean kkopTelAdaptSonzaiFlg = false;
		// 無線ルーター（指定型番）存在フラグ
		boolean shiteiMusenRtSonzaiFlg = false;
		// 無線ルーター（指定型番以外）存在フラグ
		boolean shiteigaiMusenRtSonzaiFlg = false;
		// 無線ベーシックルーター存在フラグ
		boolean basicRtSonzaiFlg = false;
		
		// 機器提供サービス契約番号リスト
		ArrayList<String> kktkSvcKeiNoList = new ArrayList<String>();
		
		ArrayList<HashMap<String, Object>> ekk2811b504OutputList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> ezm0351B010OutputMap = new HashMap<String, Object>();
		HashMap<String, Object> ekk0341a010OutputMap = new HashMap<String, Object>();
		HashMap<String, Object> ezm0411a010OutputMap = new HashMap<String, Object>();
		HashMap<String, Object> ekk0081a010OutputMap = new HashMap<String, Object>();
		HashMap<String, Object> ekk1681b001OutputMap = new HashMap<String, Object>();
		
		// 多機能ルーター存在判定
		if (!JKKCommonUtil.isNull(super.ekk0341b019KktkSvcKeiNo))
		{
			// 機器オプションサービス契約一覧照会（複合検索）
			template = editInEKK2811B504(param, fixedText); // 上りマッピング
			result = scCall.run(super.putParamMap(paramMap, template), handle); // SC呼び出し
			editRetEKK2811B504(result, param, fixedText, ekk2811b504OutputList); // 下りマッピング
			if (super.getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
			{ // ステータスが単項目エラー以上であれば例外をスロー
				throw new CCException(SC_ERROR_STRING, new Exception());
			}
		}
		else
		{
			ArrayList<HashMap<String, Object>> ekk0341b008OutputList = new ArrayList<HashMap<String, Object>>();
			
			// 機器提供サービス契約一覧照会
			template = editInEKK0341B008(param, fixedText); // 上りマッピング
			result = scCall.run(super.putParamMap(paramMap, template), handle); // SC呼び出し
			editRetEKK0341B008(result, param, fixedText, ekk0341b008OutputList); // 下りマッピング
			if (super.getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
			{ // ステータスが単項目エラー以上であれば例外をスロー
				throw new CCException(SC_ERROR_STRING, new Exception());
			}
			
			String key = "";
			HashSet<String> keys = new HashSet<String>();
			
			// ルーター特定
			for (HashMap<String, Object> childMap : ekk0341b008OutputList)
			{
				// 世代登録年月日時分秒の降順で返却されるため、機器提供サービス契約番号単位で先頭のデータ（カレント）を取得する。
				key = (String)childMap.get(EKK0341B008CBSMsg1List.KKTK_SVC_KEI_NO);
				if(keys.contains(key))
				{
					continue;
				}
				
				keys.add(key);
				
				if (!JKKStrConst.TAKNKIKI_SBT_CD_BBR.equals(childMap.get(EKK0341B008CBSMsg1List.TAKNKIKI_SBT_CD)))
				{
					continue;
				}
				
				if (JKKStrConst.CD00056_STAT_DSLZUMI.compareTo((String)childMap.get(EKK0341B008CBSMsg1List.KKTK_SVC_KEI_STAT)) <= 0)
				{
					continue;
				}
				
				// 機器提供サービス契約番号を保持
				kktkSvcKeiNoList.add(key);
			}
			
			// 機器提供サービス契約番号が１件の場合
			if (kktkSvcKeiNoList.size() == 1)
			{
				// 機器提供サービス契約一意照会
				template = editInEKK0341A010(param, fixedText, kktkSvcKeiNoList.get(0)); // 上りマッピング
				result = scCall.run(super.putParamMap(paramMap, template), handle); // SC呼び出し
				editRetEKK0341A010(result, param, fixedText, ekk0341a010OutputMap); // 下りマッピング
				if (super.getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
				{ // ステータスが単項目エラー以上であれば例外をスロー
					throw new CCException(SC_ERROR_STRING, new Exception());
				}
				
				// 業務パラメータ一覧照会
				template = editInEZM0321B010(param, fixedText); // 上りマッピング
				result = scCall.run(super.putParamMap(paramMap, template), handle); // SC呼び出し
				editRetEZM0321B010(result, param, fixedText, ezm0351B010OutputMap); // 下りマッピング
				if (super.getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
				{ // ステータスが単項目エラー以上であれば例外をスロー
					throw new CCException(SC_ERROR_STRING, new Exception());
				}
			}
		}
		
		// 機器提供サービス契約有無関連設定
		for (HashMap<String, Object> childMap : ekk2811b504OutputList)
		{
			// オプションサービス契約ステータスが「解約済」以上の場合、次の要素を処理する
			if (JKKStrConst.CD01616_STAT_DSLZUMI.compareTo((String)childMap.get(EKK2811B504CBSMsg1List.KKOP_SVC_KEI_STAT)) <= 0)
			{
				continue;
			}
			
			// 機器オプションサービスコード
			String kkopSvcCd = (String)childMap.get(EKK2811B504CBSMsg1List.KKOP_SVC_CD);
			
			if (JKKStrConst.KKOP_SVC_CD_ROUTER.equals(kkopSvcCd))
			{
				String kkopPcrsCd = (String)childMap.get(EKK2811B504CBSMsg1List.PCRS_CD);
				
				if (JKKStrConst.CD00134_KKOP_YUSEN.equals(kkopPcrsCd))
				{
					kkopYusenSonzaiFlg = true;
				}
				else if (JKKStrConst.CD00134_KKOP_MUSEN.equals(kkopPcrsCd))
				{
					kkopMusenSonzaiFlg = true;
				}
			}
			else if (JKKStrConst.KKOP_SVC_CD_TEL_ADAPT.equals(kkopSvcCd))
			{
				kkopTelAdaptSonzaiFlg = true;
				
				// サービス契約一意照会
				template = editInEKK0081A010(param, fixedText); // 上りマッピング
				result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
				editRetEKK0081A010(result, param, fixedText, ekk0081a010OutputMap); // 下りマッピング
				if (getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
				{ // ステータスが単項目エラー以上であれば例外をスロー
					throw new CCException(SC_ERROR_STRING, new Exception());
				}

				// 異動予約一覧照会
				template = editInEKK1681B001(param, fixedText); // 上りマッピング
				result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
				editRetEKK1681B001(result, param, fixedText, ekk1681b001OutputMap); // 下りマッピング
				if (getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
				{ // ステータスが単項目エラー以上であれば例外をスロー
					throw new CCException(SC_ERROR_STRING, new Exception());
				}

				String nowPcrsCd = (String)ekk0081a010OutputMap.get(EKK0081A010CBSMsg1List.PCRS_CD);
				String newPcrsCd = (String)ekk1681b001OutputMap.get(EKK1681B001CBSMsg1List.NEW_PCRS_CD);
				
				if (newPcrsCd != null)
				{
					nowPcrsCd = newPcrsCd;
				}

				// 10ギガ提供エリアコースで低速多機能ルータVAのみの場合は除外する
				if (JFUStrConst.PCRS_CD_5G10G.contains(nowPcrsCd))
				{
					// 機器提供サービス契約一意照会
					template = editInEKK0341A010(param, fixedText, ekk0341b019KktkSvcKeiNo); // 上りマッピング
					result = scCall.run(super.putParamMap(paramMap, template), handle); // SC呼び出し
					editRetEKK0341A010(result, param, fixedText, ekk0341a010OutputMap); // 下りマッピング
					if (super.getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
					{ // ステータスが単項目エラー以上であれば例外をスロー
						throw new CCException(SC_ERROR_STRING, new Exception());
					}

					// 宅内機器型式一意照会
					String modelCd = (String)ekk0341a010OutputMap.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
					template = editInEZM0411A010(param, fixedText, modelCd); // 上りマッピング
					result = scCall.run(super.putParamMap(paramMap, template), handle); // SC呼び出し
					editRetEZM0411A010(result, param, fixedText, ezm0411a010OutputMap); // 下りマッピング
					if (super.getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
					{ // ステータスが単項目エラー以上であれば例外をスロー
						throw new CCException(SC_ERROR_STRING, new Exception());
					}
					// 10ギガ速度のルータでない場合はルータ機器なし
					if (!RT_SPD_CD_10G.equals(ezm0411a010OutputMap.get(EZM0411A010CBSMsg1List.ROUTER_SPEED_SBT_CD)))
					{
						kkopTelAdaptSonzaiFlg = false;
					}
				}
			}
		}
		
		// 料金コースコード
		String rtPcrsCd = (String)ekk0341a010OutputMap.get(EKK0341A010CBSMsg1List.PCRS_CD);
		
		// 無線ルータ料金コースリストに存在するかをチェック
		if (Arrays.asList(MUSEN_RT_PCRS_CD_LIST).contains(rtPcrsCd))
		{
			// 業務パラメータの指定型番に存在するかをチェック
			String workParamSetteValue = (String)ezm0351B010OutputMap.get(EZM0321B010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
			if (null != workParamSetteValue)
			{
				if (Arrays.asList(workParamSetteValue.split(",")).contains(ekk0341a010OutputMap.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD)))
				{
					shiteiMusenRtSonzaiFlg = true;
				}
				else
				{
					shiteigaiMusenRtSonzaiFlg = true;
				}
			}
		}
		
		// ベーシックルータ料金コースリストに存在するかをチェック
		if (Arrays.asList(BASIC_RT_PCRS_CD_LIST).contains(rtPcrsCd))
		{
			basicRtSonzaiFlg = true;
		}
		
		if (kkopMusenSonzaiFlg)
		{
			// FP解約ルーター表示パターンに「多機能ルーター（無線）」を設定
			inMap.put("fpDslRtViewPtn", "2");
			// ルーター区分に「多機能ルーター(無線)」を設定
			inMap.put("rtKbn", "3");
		}
		else if (kkopYusenSonzaiFlg)
		{
			// FP継続ルーター表示パターンに「多機能ルーター（有線またはVAのみ）」を設定
			inMap.put("fpKeizkRtViewPtn", "2");
			// ルーター区分に「多機能ルーター(有線)」を設定
			inMap.put("rtKbn", "4");
		}
		else if (kkopTelAdaptSonzaiFlg)
		{
			// FP継続ルーター表示パターンに「多機能ルーター（有線またはVAのみ）」を設定
			inMap.put("fpKeizkRtViewPtn", "2");
			// 多機能ルーターVA区分に｢VAのみ｣を設定
			inMap.put("takinortVaKbn", "1");
		}
		else if (shiteiMusenRtSonzaiFlg)
		{
			// FP解約ルーター表示パターンに「無線ルーター契約中」を設定
			inMap.put("fpDslRtViewPtn", "4");
			// ルーター区分に「無線ルーター」を設定
			inMap.put("rtKbn", "2");
		}
		else if (shiteigaiMusenRtSonzaiFlg)
		{
			// FP解約ルーター表示パターンに「無線ルーター契約中」を設定
			inMap.put("fpDslRtViewPtn", "3");
			// ルーター区分に「無線ルーター」を設定
			inMap.put("rtKbn", "2");
		}
		else if (basicRtSonzaiFlg)
		{
			// FP継続ルーター表示パターンに「ルーターなしまたはベーシックルーター」を設定
			inMap.put("fpKeizkRtViewPtn", "1");
			// ルーター区分に「ベーシックルーター」を設定
			inMap.put("rtKbn", "1");
		}
		else if (kktkSvcKeiNoList.size() > 1) {
			// 機器提供サービス契約番号が複数件の場合
			// ルーター区分に「複数ルーター」を設定
			inMap.put("rtKbn", "9");
		}
		else
		{
			// FP継続ルーター表示パターンに「ルーターなしまたはベーシックルーター」を設定
			inMap.put("fpKeizkRtViewPtn", "1");
			// 多機能ルーターVA区分に未設定
			inMap.put("takinortVaKbn", JFUStrConst.EMPTY);
		}
	}
	
	/**
	 * コンテンツ契約関連の設定を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void setContKeiInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// ANK-4346-00-00 DEL START
//		ArrayList<HashMap<String, Object>> ecn0021b001OutputList = new ArrayList<HashMap<String, Object>>();
		// ANK-4346-00-00 DEL END
		
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		
		// ANK-4346-00-00 MOD START
//		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
//		HashMap<String, Object> paramMap = super.setSCInputCommonData(param, new HashMap<String, Object>());
//		Map<?, ?> result = null;
//		CAANMsg template = null;
//		
//		if (0 < super.sysidList.size())
//		{
//			// コンテンツ契約一覧照会
//			template = super.editInECN0021B001(param, fixedText, super.sysidList); // 上りマッピング
//			result = scCall.run(super.putParamMap(paramMap, template), handle); // SC呼び出し
//			super.editRetECN0021B001(result, param, fixedText, ecn0021b001OutputList); // 下りマッピング
//			if (super.getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
//			{ // ステータスが単項目エラー以上であれば例外をスロー
//				throw new CCException(SC_ERROR_STRING, new Exception());
//			}
//		}
//		
//		// 有害Webフィルター件数
//		int yugaiWebFltDslCount = 0;
//		
//		// コンテンツ契約有無関連設定
//		for (HashMap<String, Object> childMap : ecn0021b001OutputList)
//		{
//			// コンテンツサービスコードが有害Webフィルター以外の場合
//			if (!JKKStrConst.CONT_SVC_CD_YUGAI_WEB_FLT.equals(childMap.get(ECN0021B001CBSMsgList.CONT_SVC_CD)))
//			{
//				continue;
//			}
//			// コンテンツ種別コードがコンテンツ以外の場合
//			if (!JKKStrConst.CONT_SBT_CD_CONT.equals(childMap.get(ECN0021B001CBSMsgList.CONT_SBT_CD)))
//			{
//				continue;
//			}
//			// コンテンツ契約終了年月日時分秒が日付最大値文字列以外の場合
//			if (!CONT_KEI_END_DTM_MAX_DATE.equals(childMap.get(ECN0021B001CBSMsgList.CONT_KEI_END_DTM)))
//			{
//				continue;
//			}
//			
//			yugaiWebFltDslCount++;
//		}
		// 有害Webフィルター件数
		int yugaiWebFltDslCount = 0;

		if (0 < super.sysidList.size())
		{
			try
			{
				
				// コンテンツ契約一覧照会
				JCNContKeiListInfoCC contkeiInfo = new JCNContKeiListInfoCC();
				for (int i = 0; i < sysidList.size(); i++)
				{
					List<HashMap<String, Object>> inContDetailList = new ArrayList<HashMap<String, Object>>();
					
					HashMap<String, Object> inParam = new HashMap();
					inParam.put("func_code", "8");
					inParam.put(PARAM_SYSID,  sysidList.get(i));
					inParam.put(PARAM_CONT_SVC_CD, JKKStrConst.CONT_SVC_CD_YUGAI_WEB_FLT);
					inParam.put(PARAM_CONT_SBT_CD, DIVISION_1);
					inParam.put(PARAM_RETURN_CONTRACT, INFO_YOHI_1);
					inParam.put(PARAM_RETURN_CHARGE, INFO_YOHI_0);
					inParam.put(PARAM_RETURN_CONTRACT_ADDS, INFO_YOHI_0);
					param.setData("JCNContKeiListInfoCC", inParam);
					
					// コンテンツ契約一覧照会CC呼び出し
					IRequestParameterReadWrite eca0170001result = contkeiInfo.execute(handle, param, "JCNContKeiListInfoCC");
					HashMap<String, Object> ccMsg = (HashMap<String, Object>)eca0170001result.getData("JCNContKeiListInfoCC");
					
					// エラーコード
					String errCd = (String) ccMsg.get("return_code");
					
					// CNIFE047にて正常(00000)以外のエラーコードが返却された場合
					if (!JKKStringUtil.isNullBlank(errCd))
					{
						if (!("00000".equals(errCd)))
						{
							// mes.logに業務エラーを設定する
							String svcKeiNo = (String) inMap.get("svc_kei_no");
							String strMessage = "セキュリティーオプション申込画面にて、CNIFE047_契約一覧情報取得処理に失敗しました。[サービス契約番号：{" + svcKeiNo + "}][エラーコード：{" + errCd + "}]";
							JSYbpmLog.println(JSYLogBase.EXECUTION, JCKPmpCommonUtil.class ,strMessage, "",  new String[]{"", ""}, "");
							// メッセージログ（システムログ）にメッセージID「EKF2290-KW」に該当するメッセージを出力する
							printSyslog4War("CNIFE047","EKF2290-KW",strMessage);
							
							throw new CCException(SC_ERROR_STRING, new Exception());
						}
					}
					else
					{
						inParam.put("return_code", "");
						throw new CCException(SC_ERROR_STRING, new Exception());
					}
	
					// 下りマッピング
					editJCNContKeiListInfoCC(inContDetailList, inParam);
					
					// 有害Webフィルターかつ契約中の件数をカウントする
					for(HashMap<String, Object> resultMap : inContDetailList)
					{
						// 有害Webフィルター件数を＋１する
						yugaiWebFltDslCount++;
					}
				}
			}
			catch (Throwable e)
			{
				throw new CCException(SC_ERROR_STRING, new Exception());
			}
		}
		// ANK-4346-00-00 MOD END
		
		if (yugaiWebFltDslCount == 0)
		{
			// 有害Webフィルター件数が0件の場合、有害Webフィルター表示パターンに「表示なし」を設定
			inMap.put("yugaiWebFltViewPtn", "0");
		}
		else if (yugaiWebFltDslCount == 1)
		{
			// 有害Webフィルター件数が1件の場合、有害Webフィルター表示パターンに「単独契約」を設定
			inMap.put("yugaiWebFltViewPtn", "1");
		}
		else
		{
			// 上記以外の場合、有害Webフィルター表示パターンに「複数契約」を設定
			inMap.put("yugaiWebFltViewPtn", "2");
		}
	}
	
	/**
	 * 各種オプション金額の設定を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void setOptionAmnt(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		HashMap<String, Object> paramMap = super.setSCInputCommonData(param, new HashMap<String, Object>());
		Map<?, ?> result = null;
		CAANMsg template = null;
		
		// 所得金額繰返し
		for (String[] amntParam : AMNT_LIST)
		{
			HashMap<String, Object> ekk0601b001OutputMap = new HashMap<String, Object>();
			
			// 料金プラン固定単価（オプション申込料金）一覧照会
			template = editInEKK0601B001(param, fixedText, amntParam[0], amntParam[1]); // 上りマッピング
			result = scCall.run(super.putParamMap(paramMap, template), handle); // SC呼び出し
			editRetEKK0601B001(result, param, fixedText, ekk0601b001OutputMap); // 下りマッピング
			if (super.getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
			{ // ステータスが単項目エラー以上であれば例外をスロー
				throw new CCException(SC_ERROR_STRING, new Exception());
			}
			
			// 料金プラン固定金額
			String pplanKoteiAmnt = (String)ekk0601b001OutputMap.get(EKK0601B001CBSMsg1List.PPLAN_KOTEI_AMNT);
			// 料金プラン固定単位コード名
			String pplanKoteiTaniCdNm = (String)ekk0601b001OutputMap.get(EKK0601B001CBSMsg1List.PPLAN_KOTEI_TANI_CD_NM);
			
			if (null != pplanKoteiAmnt & null != pplanKoteiTaniCdNm)
			{
				inMap.put(amntParam[2], pplanKoteiAmnt + pplanKoteiTaniCdNm);
			}
		}
	}
	
	/**
	 * 割引サービス契約一覧照会（割引サービス指定）の上りマップ
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param wribSvcCd 割引サービスコード
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0451B010(IRequestParameterReadWrite param, String fixedText, String wribSvcCd) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0451B010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0451B010CBSMsg.TEMPLATEID, "EKK0451B010");

		// 機能コード
		template.set(EKK0451B010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// オペレータ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);
		
		// マッピング情報
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 割引サービス契約一覧照会（割引サービス指定）.ＫＥＹ＿サービス契約番号
		super.setTemplate(template, EKK0451B010CBSMsg.KEY_SVC_KEI_NO, inMap, "", "svc_kei_no");
		
		// 割引サービス契約一覧照会（割引サービス指定）.ＫＥＹ＿割引サービスコード
		template.set(EKK0451B010CBSMsg.KEY_WRIB_SVC_CD, wribSvcCd);

		return template;
	}
	
	/**
	 * 割引サービス契約一覧照会（割引サービス指定）の下りマッピング処理
	 * <br>
	 * @param msgList メッセージリスト
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param outputList 出力リスト
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK0451B010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, ArrayList<HashMap<String, Object>> outputList) throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		CAANMsg[] templateArray = null;
		
		// リターンコード取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		templateArray = template.getCAANMsgList(EKK0451B010CBSMsg.EKK0451B010CBSMSG1LIST);
		
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				HashMap<String, Object> childMap = new HashMap<String, Object>();
				
				// 割引サービス契約番号 ← 割引サービス契約一覧照会（割引サービス指定）.割引サービス契約番号
				super.setDataMap(childMap, "", EKK0451B010CBSMsg1List.WRIB_SVC_KEI_NO, templateArray[i], EKK0451B010CBSMsg1List.WRIB_SVC_KEI_NO);
				
				// リストにマップを格納する
				outputList.add(childMap);
			}
		}
		
		// エラー情報の設定
		editErrInfoEKK0451B010(param, template, (Integer)returnCode, fixedText);
		
		// エラー情報のマップを取得
		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 iparam リクエストパラメータ
	 * @param template CAANMsg
	 * @param returnCode リターンコード
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0451B010(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = super.setControlMapErrInfo(iparam, template.getInt(EKK0451B010CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// 割引サービス契約一覧照会.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号のエラー情報返却
		super.setErrInfo(inMap, "", EKK0451B010CBSMsg.KEY_SVC_KEI_NO_ERR, template, EKK0451B010CBSMsg.KEY_SVC_KEI_NO_ERR);
		
		// 割引サービス契約一覧照会.ＫＥＹ＿割引サービスコード → ＫＥＹ＿割引サービスコードのエラー情報返却
		super.setErrInfo(inMap, "", EKK0451B010CBSMsg.KEY_WRIB_SVC_CD_ERR, template, EKK0451B010CBSMsg.KEY_WRIB_SVC_CD_ERR);

		return param;
	}
	
	/**
	 * オプションサービス契約一覧照会（サービス契約番号）の上りマップ
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0351B002(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0351B002CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0351B002CBSMsg.TEMPLATEID, "EKK0351B002");

		// 機能コード
		template.set(EKK0351B002CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// オペレータ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);
		
		// マッピング情報
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// オプションサービス契約一覧照会（サービス契約番号）.ＫＥＹ＿サービス契約番号
		super.setTemplate(template, EKK0351B002CBSMsg.KEY_SVC_KEI_NO, inMap, "", "svc_kei_no");
		
		// オプションサービス契約一覧照会（サービス契約番号）.ＫＥＹ＿ソート項目Ｎｏ
		//   オプションサービス契約番号
		template.set(EKK0351B002CBSMsg.KEY_SORT_ITEM_NO, "7");
		
		// オプションサービス契約一覧照会（サービス契約番号）.ＫＥＹ＿ソート区分
		//   昇順
		template.set(EKK0351B002CBSMsg.KEY_SORT_KBN, "1");

		return template;
	}
	
	/**
	 * 割引サービス契約一覧照会（割引サービス指定）の下りマッピング処理
	 * <br>
	 * @param msgList メッセージリスト
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param outputList 出力リスト
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK0351B002(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, ArrayList<HashMap<String, Object>> outputList) throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		CAANMsg[] templateArray = null;
		
		// リターンコード取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		templateArray = template.getCAANMsgList(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST);
		
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				HashMap<String, Object> childMap = new HashMap<String, Object>();
				
				// オプションサービス契約ステータス ← オプションサービス契約一覧照会（サービス契約番号）.オプションサービス契約ステータス
				super.setDataMap(childMap, "", EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT, templateArray[i], EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT);
				// オプションサービスコード ← オプションサービス契約一覧照会（サービス契約番号）.オプションサービスコード
				super.setDataMap(childMap, "", EKK0351B002CBSMsg1List.OP_SVC_CD, templateArray[i], EKK0351B002CBSMsg1List.OP_SVC_CD);
				
				// リストにマップを格納する
				outputList.add(childMap);
			}
		}
		
		// エラー情報の設定
		editErrInfoEKK0351B002(param, template, (Integer)returnCode, fixedText);
		
		// エラー情報のマップを取得
		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 iparam リクエストパラメータ
	 * @param template CAANMsg
	 * @param returnCode リターンコード
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0351B002(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = super.setControlMapErrInfo(iparam, template.getInt(EKK0351B002CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// オプションサービス契約一覧照会（サービス契約番号）.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号のエラー情報返却
		super.setErrInfo(inMap, "", EKK0351B002CBSMsg.KEY_SVC_KEI_NO_ERR, template, EKK0351B002CBSMsg.KEY_SVC_KEI_NO_ERR);
		
		// オプションサービス契約一覧照会（サービス契約番号）.ＫＥＹ＿ソート項目Ｎｏ → ＫＥＹ＿ソート項目Ｎｏのエラー情報返却
		super.setErrInfo(inMap, "", EKK0351B002CBSMsg.KEY_SORT_ITEM_NO_ERR, template, EKK0351B002CBSMsg.KEY_SORT_ITEM_NO_ERR);
		
		// オプションサービス契約一覧照会（サービス契約番号）.ＫＥＹ＿ソート区分 → ＫＥＹ＿ソート区分のエラー情報返却
		super.setErrInfo(inMap, "", EKK0351B002CBSMsg.KEY_SORT_KBN_ERR, template, EKK0351B002CBSMsg.KEY_SORT_KBN_ERR);

		return param;
	}
	
	/**
	 * 機器オプションサービス契約一覧照会（複合検索）の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK2811B504(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK2811B504CBSMsg.class.getName());
		
		// テンプレートID
		template.set(EKK2811B504CBSMsg.TEMPLATEID, "EKK2811B504");
		
		// 機能コード
		template.set(EKK2811B504CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);
		
		// オペレータ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);
		
		// 機器オプションサービス契約一覧照会.ＫＥＹ＿機器提供サービス契約番号
		template.set(EKK2811B504CBSMsg.KEY_KKTK_SVC_KEI_NO, super.ekk0341b019KktkSvcKeiNo);
		
		// 機器オプションサービス契約一覧照会.ＫＥＹ＿予約適用年月日
		template.set(EKK2811B504CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));

		return template;
	}
	
	/**
	 * 機器オプションサービス契約一覧照会（複合検索）の下りマッピング処理
	 * <br>
	 * @param msgList メッセージリスト
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param outputList 出力リスト
	 * @return リクエストパラメータ
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK2811B504(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, ArrayList<HashMap<String, Object>> outputList)
			throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		CAANMsg[] templateArray = null;
		
		// リターンコード取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		templateArray = template.getCAANMsgList(EKK2811B504CBSMsg.EKK2811B504CBSMSG1LIST);

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				HashMap<String, Object> childMap = new HashMap<String, Object>();
				
				// 機器オプションサービス契約ステータス ← 機器オプションサービス契約一覧照会.機器オプションサービス契約ステータス
				super.setDataMap(childMap, "", EKK2811B504CBSMsg1List.KKOP_SVC_KEI_STAT, templateArray[i], EKK2811B504CBSMsg1List.KKOP_SVC_KEI_STAT);
				
				// 機器オプションサービスコード ← 機器オプションサービス契約一覧照会.機器オプションサービスコード
				super.setDataMap(childMap, "", EKK2811B504CBSMsg1List.KKOP_SVC_CD, templateArray[i], EKK2811B504CBSMsg1List.KKOP_SVC_CD);
				
				// 料金コースコード ← 機器オプションサービス契約一覧照会.料金コースコード
				super.setDataMap(childMap, "", EKK2811B504CBSMsg1List.PCRS_CD, templateArray[i], EKK2811B504CBSMsg1List.PCRS_CD);
				
				// リストにマップを格納する
				outputList.add(childMap);
			}
		}
		// エラー情報の設定
		editErrInfoEKK2811B504(param, template, (Integer)returnCode, fixedText);
		
		//エラー情報のマップを取得
		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 iparam ユーザー固定文字列
	 * @param template CAANMsg
	 * @param returnCode リターンコード
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK2811B504(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = super.setControlMapErrInfo(iparam, template.getInt(EKK2811B504CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		//  機器オプションサービス契約一覧照会.ＫＥＹ＿機器提供サービス契約番号 → 機器提供サービス契約番号のエラー情報返却
		super.setErrInfo(inMap, "", EKK2811B504CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR, template, EKK2811B504CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR);
		
		//  機器オプションサービス契約一覧照会.ＫＥＹ＿予約適用年月日 → 予約適用年月日のエラー情報返却
		super.setErrInfo(inMap, "", EKK2811B504CBSMsg.KEY_RSV_APLY_YMD_ERR, template, EKK2811B504CBSMsg.KEY_RSV_APLY_YMD_ERR);
		
		return param;
	}
	
	/**
	 * 機器提供サービス契約一覧照会の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0341B008(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0341B008CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0341B008CBSMsg.TEMPLATEID, "EKK0341B008");

		// 機能コード
		template.set(EKK0341B008CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// オペレータ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);
		
		// マッピング情報
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 機器提供サービス契約一覧照会.ＫＥＹ＿サービス契約番号
		super.setTemplate(template, EKK0341B008CBSMsg.KEY_SVC_KEI_NO, inMap, "", "svc_kei_no");

		return template;
	}
	
	/**
	 * 機器提供サービス契約一覧照会の下りマッピング処理
	 * <br>
	 * @param msgList メッセージリスト
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param outputList 出力リスト
	 * @return リクエストパラメータ
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK0341B008(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, ArrayList<HashMap<String, Object>> outputList)
			throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		templateArray = template.getCAANMsgList(EKK0341B008CBSMsg.EKK0341B008CBSMSG1LIST);
		
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				HashMap<String, Object> childMap = new HashMap<String, Object>();
				
				// 機器提供サービス契約番号
				super.setDataMap(childMap, "", EKK0341B008CBSMsg1List.KKTK_SVC_KEI_NO, templateArray[i], EKK0341B008CBSMsg1List.KKTK_SVC_KEI_NO);
				// 機器提供サービス契約ステータス
				super.setDataMap(childMap, "", EKK0341B008CBSMsg1List.KKTK_SVC_KEI_STAT, templateArray[i], EKK0341B008CBSMsg1List.KKTK_SVC_KEI_STAT);
				// 宅内機器種別コード
				super.setDataMap(childMap, "", EKK0341B008CBSMsg1List.TAKNKIKI_SBT_CD, templateArray[i], EKK0341B008CBSMsg1List.TAKNKIKI_SBT_CD);
				
				// リストにマップを格納する
				outputList.add(childMap);
			}
		}
		
		// エラー情報の設定
		editErrInfoEKK0341B008(param, template, (Integer)returnCode, fixedText);
		
		//エラー情報のマップを取得
		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 iparam リクエストパラメータ
	 * @param template CAANMsg
	 * @param returnCode リターンコード
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0341B008(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = super.setControlMapErrInfo(iparam, template.getInt(EKK0341B008CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機器提供サービス契約一覧照会.ＫＥＹ＿機器提供サービス契約番号 → 機器提供サービス契約番号のエラー情報返却
		super.setErrInfo(inMap, "", EKK0341B008CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR, template, EKK0341B008CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR);
		
		return param;
	}
	
	/**
	 * 機器提供サービス契約一意照会の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK0341A010(IRequestParameterReadWrite param, String fixedText, String kktkSvcKeiNo) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0341A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0341A010CBSMsg.TEMPLATEID, "EKK0341A010");

		// 機能コード
		template.set(EKK0341A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2);

		// オペレータ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);
		
		// 機器提供サービス契約一意照会.ＫＥＹ＿機器提供サービス契約番号
		template.set(EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
		
		// 機器提供サービス契約一意照会.ＫＥＹ＿予約適用年月日
		template.set(EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));

		return template;
	}
	
	/**
	 * 機器提供サービス契約一意照会の下りマッピング処理
	 * <br>
	 * @param msgList メッセージリスト
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param outputList 出力リスト
	 * @return リクエストパラメータ
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK0341A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> outputMap)
			throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		templateArray = template.getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST);
		
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				// 料金コースコード
				super.setDataMap(outputMap, "", EKK0341A010CBSMsg1List.PCRS_CD, templateArray[i], EKK0341A010CBSMsg1List.PCRS_CD);
				// 宅内機器型式コード
				super.setDataMap(outputMap, "", EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD, templateArray[i], EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
				
				break;
			}
		}
		
		// エラー情報の設定
		editErrInfoEKK0341A010(param, template, (Integer)returnCode, fixedText);
		
		//エラー情報のマップを取得
		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 iparam リクエストパラメータ
	 * @param template CAANMsg
	 * @param returnCode リターンコード
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0341A010(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = super.setControlMapErrInfo(iparam, template.getInt(EKK0341A010CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機器提供サービス契約一意照会.ＫＥＹ＿機器提供サービス契約番号 → ＫＥＹ＿機器提供サービス契約番号のエラー情報返却
		super.setErrInfo(inMap, "", EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR, template, EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR);
		
		// 機器提供サービス契約一意照会.ＫＥＹ＿予約適用年月日 → ＫＥＹ＿予約適用年月日のエラー情報返却
		super.setErrInfo(inMap, "", EKK0341A010CBSMsg.KEY_RSV_APLY_YMD_ERR, template, EKK0341A010CBSMsg.KEY_RSV_APLY_YMD_ERR);
		
		return param;
	}
	
	/**
	 * 業務パラメータ管理一覧照会の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEZM0321B010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EZM0321B010CBSMsg.class.getName());

		// テンプレートID
		template.set(EZM0321B010CBSMsg.TEMPLATEID, "EZM0321B010");

		// 機能コード
		template.set(EZM0321B010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// オペレータ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);
		
		// 業務パラメータ管理一覧照会.ＫＥＹ＿業務パラメータID
		//   指定型番
		template.set(EZM0321B010CBSMsg.KEY_WORK_PARAM_ID, "KK_SHITEI_KTBN");

		return template;
	}
	
	/**
	 * 業務パラメータ管理一覧照会の下りマッピング処理
	 * <br>
	 * @param msgList メッセージリスト
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param outputList 出力リスト
	 * @return リクエストパラメータ
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEZM0321B010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> outputMap)
			throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		templateArray = template.getCAANMsgList(EZM0321B010CBSMsg.EZM0321B010CBSMSG1LIST);

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				// 業務パラメータ設定値
				super.setDataMap(outputMap, "", EZM0321B010CBSMsg1List.WORK_PARAM_SETTE_VALUE, templateArray[i], EZM0321B010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
				
				break;
			}
		}
		
		// エラー情報の設定
		editErrInfoEZM0321B010(param, template, (Integer)returnCode, fixedText);
		
		//エラー情報のマップを取得
		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 iparam リクエストパラメータ
	 * @param template CAANMsg
	 * @param returnCode リターンコード
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEZM0321B010(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = super.setControlMapErrInfo(iparam, template.getInt(EZM0321B010CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// 業務パラメータ管理一覧照会.ＫＥＹ＿業務パラメータID → ＫＥＹ＿業務パラメータIDのエラー情報返却
		super.setErrInfo(inMap, "", EZM0321B010CBSMsg.KEY_WORK_PARAM_ID_ERR, template, EZM0321B010CBSMsg.KEY_WORK_PARAM_ID_ERR);
		
		return param;
	}
	
	/**
	 * 料金プラン固定単価（オプション申込料金）一覧照会の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param pcrsCd 料金コースコード
	 * @param pplanCd 料金プランコード
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK0601B001(IRequestParameterReadWrite param, String fixedText, String pcrsCd, String pplanCd) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0601B001CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0601B001CBSMsg.TEMPLATEID, "EKK0601B001");

		// 機能コード
		template.set(EKK0601B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// オペレータ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);
		
		// 料金プラン固定単価（オプション申込料金）一覧照会.ＫＥＹ＿料金コースコード
		template.set(EKK0601B001CBSMsg.KEY_PCRS_CD, pcrsCd);
		
		// 料金プラン固定単価（オプション申込料金）一覧照会.ＫＥＹ＿料金プランコード
		template.set(EKK0601B001CBSMsg.KEY_PPLAN_CD, pplanCd);

		// 料金プラン固定単価（オプション申込料金）一覧照会.最大検索件数
		template.set(EKK0601B001CBSMsg.MAX_SEARCH_NUM, "1000");
		
		return template;
	}
	
	/**
	 * 料金プラン固定単価（オプション申込料金）一覧照会の下りマッピング処理
	 * <br>
	 * @param msgList メッセージリスト
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param outputList 出力リスト
	 * @return リクエストパラメータ
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK0601B001(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> outputMap)
			throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		templateArray = template.getCAANMsgList(EKK0601B001CBSMsg.EKK0601B001CBSMSG1LIST);

		
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				// 料金プラン固定金額
				super.setDataMap(outputMap, "", EKK0601B001CBSMsg1List.PPLAN_KOTEI_AMNT, templateArray[i], EKK0601B001CBSMsg1List.PPLAN_KOTEI_AMNT);
				// 料金プラン固定単位コード名
				super.setDataMap(outputMap, "", EKK0601B001CBSMsg1List.PPLAN_KOTEI_TANI_CD_NM, templateArray[i], EKK0601B001CBSMsg1List.PPLAN_KOTEI_TANI_CD_NM);
				
				break;
			}
		}
		
		// エラー情報の設定
		editErrInfoEKK0601B001(param, template, (Integer)returnCode, fixedText);
		
		//エラー情報のマップを取得
		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 iparam リクエストパラメータ
	 * @param template CAANMsg
	 * @param returnCode リターンコード
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0601B001(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = super.setControlMapErrInfo(iparam, template.getInt(EKK0601B001CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// 料金プラン固定単価（オプション申込料金）一覧照会.ＫＥＹ＿料金コースコード → ＫＥＹ＿料金コースコードのエラー情報返却
		super.setErrInfo(inMap, "", EKK0601B001CBSMsg.KEY_PCRS_CD_ERR, template, EKK0601B001CBSMsg.KEY_PCRS_CD_ERR);
		
		// 料金プラン固定単価（オプション申込料金）一覧照会.ＫＥＹ＿料金プランコード → ＫＥＹ＿料金プランコードのエラー情報返却
		super.setErrInfo(inMap, "", EKK0601B001CBSMsg.KEY_PPLAN_CD_ERR, template, EKK0601B001CBSMsg.KEY_PPLAN_CD_ERR);
		
		return param;
	}
	
	/**
	 * 宅内機器型式一意照会の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param modelCd 宅内機器型式コード
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEZM0411A010(IRequestParameterReadWrite param, String fixedText, String modelCd) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EZM0411A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EZM0411A010CBSMsg.TEMPLATEID, "EZM0411A010");

		// 機能コード
		template.set(EZM0411A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// オペレータ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);
		
		// 宅内機器型式一意照会.ＫＥＹ＿宅内機器型式コード
		template.set(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, modelCd);

		return template;
	}
	
	/**
	 * 機宅内機器型式一意照会の下りマッピング処理
	 * <br>
	 * @param msgList メッセージリスト
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param outputList 出力リスト
	 * @return リクエストパラメータ
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEZM0411A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> outputMap)
			throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		templateArray = template.getCAANMsgList(EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST);
		
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				// 宅内機器型式コード
				super.setDataMap(outputMap, "", EZM0411A010CBSMsg1List.TAKNKIKI_MODEL_CD, templateArray[i], EZM0411A010CBSMsg1List.TAKNKIKI_MODEL_CD);
				// ルータ速度コード
				super.setDataMap(outputMap, "", EZM0411A010CBSMsg1List.ROUTER_SPEED_SBT_CD, templateArray[i], EZM0411A010CBSMsg1List.ROUTER_SPEED_SBT_CD);
				
				break;
			}
		}
		
		// エラー情報の設定
		editErrInfoEZM0411A010(param, template, (Integer)returnCode, fixedText);
		
		//エラー情報のマップを取得
		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 iparam リクエストパラメータ
	 * @param template CAANMsg
	 * @param returnCode リターンコード
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEZM0411A010(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = super.setControlMapErrInfo(iparam, template.getInt(EZM0321B010CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// 宅内機器型式一意照会.ＫＥＹ＿宅内機器型式コード → ＫＥＹ＿宅内機器型式コードのエラー情報返却
		super.setErrInfo(inMap, "", EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, template, EZM0321B010CBSMsg.KEY_WORK_PARAM_ID_ERR);
		
		return param;
	}

	
	/**
	 * サービス契約一意照会の上りマッピング処理を行います。
	 * 
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0081A010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0081A010CBSMsg.class.getName());
		String prefix = "";

		// テンプレートID
		template.set(EKK0081A010CBSMsg.TEMPLATEID, "EKK0081A010");

		// 機能コード
		template.set(EKK0081A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2);

		// オペレータ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);

		// マッピング情報
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// サービス契約一意照会.ＫＥＹ＿サービス契約番号
		setTemplate(template, EKK0081A010CBSMsg.KEY_SVC_KEI_NO, inMap, prefix, "svc_kei_no");

		// サービス契約一意照会.ＫＥＹ＿予約適用年月日
		String gyomuOpDate = JCCBPCommon.getOpeDate(null);
		template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, gyomuOpDate);

		return template;
	}
	
	/**
	 * サービス契約一意照会の下りマッピング処理
	 * <br>
	 * @param msgList
	 * @param param
	 * @param fixedText
	 * @param outputMap
	 * @return リクエストパラメータ
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK0081A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> outputMap)
			throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		templateArray = template.getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				// 料金コースコード
				super.setDataMap(outputMap, "", EKK0081A010CBSMsg1List.PCRS_CD, templateArray[i], EKK0081A010CBSMsg1List.PCRS_CD);

				break;
			}
		}

		// エラー情報の設定
		editErrInfoEKK0081A010(param, template, (Integer)returnCode, fixedText);

		//エラー情報のマップを取得
		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 iparam
	 * @param template
	 * @param returnCode
	 * @param fixedText
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0081A010(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = setControlMapErrInfo(iparam, template.getInt(EKK0451B010CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// サービス契約一意照会.ＫＥＹ＿サービス契約番号 → サービス契約番号のエラー情報返却
		setErrInfo(inMap, "", EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR, template, EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR);
		
		// サービス契約一意照会.ＫＥＹ＿予約適用年月日 → 予約適用年月日のエラー情報返却
		setErrInfo(inMap, "", EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR, template, EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR);

		return param;
	}

	/**
	 * 異動予約一覧照会の上りマッピング処理を行います。
	 * 
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK1681B001(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK1681B001CBSMsg.class.getName());
		String prefix = "";

		// テンプレートID
		template.set(EKK1681B001CBSMsg.TEMPLATEID, "EKK1681B001");

		// 機能コード
		template.set(EKK1681B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2);

		// オペレータ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);

		// マッピング情報
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 異動予約一覧照会.ＫＥＹ＿サービス契約番号
		setTemplate(template, EKK1681B001CBSMsg.KEY_SVC_KEI_NO, inMap, prefix, "svc_kei_no");

		// 異動予約一覧照会.ＫＥＹ＿異動区分
		template.set(EKK1681B001CBSMsg.KEY_IDO_DIV, JFUStrConst.CD00576_00009);

		// 異動予約一覧照会.ＫＥＹ＿異動予約詳細コード
		template.set(EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, JFUStrConst.CD01167_003);

		return template;
	}
	
	/**
	 * 異動予約一覧照会の下りマッピング処理
	 * <br>
	 * @param msgList
	 * @param param
	 * @param fixedText
	 * @param outputMap
	 * @return リクエストパラメータ
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK1681B001(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> outputMap)
			throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		templateArray = template.getCAANMsgList(EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
		
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				String idoRsvStatCd = templateArray[i].getString(EKK1681B001CBSMsg1List.IDO_RSV_STAT_CD);
				// 予約手続き中、または、未反映
				if (JFUStrConst.CD01168_00.equals(idoRsvStatCd) || JFUStrConst.CD01168_03.equals(idoRsvStatCd))
				{
					// 料金コースコード
					super.setDataMap(outputMap, "", EKK1681B001CBSMsg1List.NEW_PCRS_CD, templateArray[i], EKK1681B001CBSMsg1List.NEW_PCRS_CD);

					break;
				}
			}
		}

		// エラー情報の設定
		editErrInfoEKK1681B001(param, template, (Integer)returnCode, fixedText);

		//エラー情報のマップを取得
		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 iparam
	 * @param template
	 * @param returnCode
	 * @param fixedText
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK1681B001(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = setControlMapErrInfo(iparam, template.getInt(EKK0451B010CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// 異動予約一覧照会.ＫＥＹ＿サービス契約番号 → サービス契約番号のエラー情報返却
		setErrInfo(inMap, "", EKK1681B001CBSMsg.KEY_SVC_KEI_NO_ERR, template, EKK1681B001CBSMsg.KEY_SVC_KEI_NO_ERR);
		
		// 異動予約一覧照会.ＫＥＹ＿異動区分 → 異動区分のエラー情報返却
		setErrInfo(inMap, "", EKK1681B001CBSMsg.KEY_IDO_DIV_ERR, template, EKK1681B001CBSMsg.KEY_IDO_DIV_ERR);
		// 異動予約一覧照会.ＫＥＹ＿異動予約詳細コード → 異動予約詳細コードのエラー情報返却
		setErrInfo(inMap, "", EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD_ERR, template, EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD_ERR);

		return param;
	}
	
	// ANK-4346-00-00 ADD START
	/**
	 * コンテンツ契約サービスの下りマッピング
	 * @param map
	 * @param paramMap
	 */
	@SuppressWarnings("unchecked")
	private void editJCNContKeiListInfoCC(List<HashMap<String, Object>> map, HashMap<String, Object> paramMap)
	{
		if (paramMap != null)
		{
			List<Map<String, Object>> inMap = (List<Map<String, Object>>)paramMap.get("cont_kei_list");
			String opeDate = JCCBPCommon.getOpeDate(null);
			if (inMap != null)
			{
				// レスポンス設定
				for (Map<String, Object> contInfo : inMap)
				{
					HashMap<String, Object> retMap = new HashMap<String, Object>();

					if(JCNStrConst.CD01821_KEI.equals(contInfo.get("cont_kei_stat_cd")))
					{
						String endDate = JCNStringUtil.nullToBlank((String) contInfo.get("contract_end_date"));
						// 契約終了年月日時がNULL または 空の場合、または運用日より未来日の場合契約中
						if(opeDate.compareTo(endDate) >= 0)
						{
							// 契約中
							retMap.put(CONTRACT_FLG, "1");
							map.add(retMap);
						}
					}
				}
			}
			
		}
	}

// ANK-4346-00-00 ADD END
}
