/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名	  ：eo顧客基幹システム
*   モジュール名	：JKKAddWribSvcKeiUtil
*   ソースファイル名：JKKAddWribSvcKeiUtil.java
*   作成者		  ：富士通
*   日付			：2012年08月07日
*＜機能概要＞
*   割引サービス契約登録コモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日	   修正者	  修正内容
*   v4.00.00	2012/08/07 FJ）渡邉	  新規作成
*   v6.00.00	2013/12/03 FJ）中山	  【OM-2013-0004868】ファミリーパック割引サービス契約再登録時の課金先登録もれ対応
*   v9.00.00	2014/04/22 FJ）中山	  【ANK-2056-00-00】光電話セレクトオプションパック
*   v10.00.00	2014/06/30 FJ）中山	  【ANK-2135-00-00】BSオプションチャンネル「スターチャンネル」とのセット割検討
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.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 com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0321D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451D010CBSMsg2List;
import eo.ejb.cbs.cbsmsg.EKK0451D010CBSMsg3List;
import eo.ejb.cbs.cbsmsg.EKK0851B503CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0851B503CBSMsg1List;

/**
 * 割引サービス契約登録部品
 * <br>
 * @author 富士通
 */
public class JKKAddWribSvcKeiUtil extends AbstractCommonComponent
{
	/** リターンメッセージ **/
	private static final String RETURN_MESSAGE_STRING = "RETURN_MESSAGE_";
	/** リターンメッセージ **/
	private static final String RETURN_MESSAGE_FORMAT = "%1$04d";
	/** エラー用 */
	private static final String SC_ERROR_STRING = "サービスコンポーネントエラー";
	/** 作業マップ */
	private static final String CC_WORK_AREA_NAME = "JKKAddWribSvcKeiUtilWork";
	
	/** プレフィックス（課金先） */
	private static final String PREFIX_KK0321 = "kk0321_";
	
	/** 割引サービス契約番号（課金先登録用） */
	private String kk0321WribSvcKeiNo = null;
	
	/**
	 * 割引サービス契約登録処理
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param inMap 登録用マップ
	 * @param inPrefixTxt プレフィックス
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite addWribSvcKei(SessionHandle handle, IRequestParameterReadWrite param, HashMap inMap, String inPrefixTxt) 
	throws Exception
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		Map<?, ?> result = null;
		CAANMsg template = null;

		/* ユーザデータ情報 */
		if (inMap == null)
		{
			return param;
		}

		// プレフィックスの設定
		String  prefix = "";
		if (inPrefixTxt != null)
		{
			prefix = inPrefixTxt;
		}
		
		// 割引サービス対象サービスコード一覧照会
		template = editInEKK0851B503Msg(param, inMap, prefix); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		editOutEKK0851B503Msg(result, param, inMap, prefix); // 下りマッピング
		if (getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
		{ // ステータスが単項目エラー以上であれば例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		// 割引サービス契約登録
		template = editInEKK0451D010Msg(param, inMap, prefix); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		editOutEKK0451D010Msg(result, param, inMap, prefix); // 下りマッピング
		if (getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
		{
			// ステータスが単項目エラー以上であれば例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		
		// マップに請求契約番号がセットされている場合は課金先の登録を行う
		String seikyKeiNo = (String)inMap.get(PREFIX_KK0321 + "seiky_kei_no");
		if (null != seikyKeiNo && !"".equals(seikyKeiNo))
		{
			// 課金先登録
			template = editInEKK0321D010Msg(param, inMap, PREFIX_KK0321); // 上りマッピング
			result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
			editOutEKK0321D010Msg(result, param, inMap, PREFIX_KK0321); // 下りマッピング
			if (getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
			{
				// ステータスが単項目エラー以上であれば例外をスロー
				throw new CCException(SC_ERROR_STRING, new Exception());
			}
		}

		return param;
	}

	/**
	 * SCインプット共通データ設定処理を行います。
	 * <br>
	 * @param param
	 * @param paramMap
	 * @return パラメータマップ
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> setSCInputCommonData(IRequestParameterReadWrite param, HashMap<String, Object> paramMap)
			throws RequestParameterException
	{
		/* 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));

		return paramMap;
	}

	/**
	 * 単一CAANMsgのマッピング処理を行います。
	 * <br>
	 * @param paramMap
	 * @param template
	 * @return パラメータマップ
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> putParamMap(HashMap<String, Object> paramMap, CAANMsg template) throws RequestParameterException
	{
		CAANMsg[] templates = { template };
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * SCの実行ステータスの取得処理を行います。
	 * <br>
	 * @param param
	 * @return SCの実行ステータス
	 * @throws Exception
	 */
	private int getReturnCode(IRequestParameterReadWrite param) throws Exception
	{
		return Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
	}

	/**
	 * 割引サービス対象サービスコード一覧照会上りマッピング処理
	 * <br>
	 * @param param
	 * @param inMap
	 * @param prefix
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0851B503Msg(IRequestParameterReadWrite param, HashMap inMap, String prefix) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0851B503CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0851B503CBSMsg.TEMPLATEID, "EKK0851B503");

		// 機能コード（デフォルト：１）
		template.set(EKK0851B503CBSMsg.FUNC_CODE, "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);
		
		// ＫＥＹ＿割引サービスコード
		if (inMap == null || inMap.get(prefix + "key_wrib_svc_cd") == null || "".equals(inMap.get(prefix + "key_wrib_svc_cd")))
		{
			template.setNull(EKK0851B503CBSMsg.KEY_WRIB_SVC_CD);
		}
		else
		{
			template.set(EKK0851B503CBSMsg.KEY_WRIB_SVC_CD, (String)inMap.get(prefix + "key_wrib_svc_cd"));
		}

		// ＫＥＹ＿サービスコード
		if (inMap == null || inMap.get(prefix + "key_svc_cd") == null || "".equals(inMap.get(prefix + "key_svc_cd")))
		{
			template.setNull(EKK0851B503CBSMsg.KEY_SVC_CD);
		}
		else
		{
			template.set(EKK0851B503CBSMsg.KEY_SVC_CD, (String)inMap.get(prefix + "key_svc_cd"));
		}

		// ＫＥＹ＿料金グループコード
		if (inMap == null || inMap.get(prefix + "key_prc_grp_cd") == null || "".equals(inMap.get(prefix + "key_prc_grp_cd")))
		{
			template.setNull(EKK0851B503CBSMsg.KEY_PRC_GRP_CD);
		}
		else
		{
			template.set(EKK0851B503CBSMsg.KEY_PRC_GRP_CD, (String)inMap.get(prefix + "key_prc_grp_cd"));
		}

		// ＫＥＹ＿料金コースコード
		if (inMap == null || inMap.get(prefix + "key_pcrs_cd") == null || "".equals(inMap.get(prefix + "key_pcrs_cd")))
		{
			template.setNull(EKK0851B503CBSMsg.KEY_PCRS_CD);
		}
		else
		{
			template.set(EKK0851B503CBSMsg.KEY_PCRS_CD, (String)inMap.get(prefix + "key_pcrs_cd"));
		}

		// ＫＥＹ＿料金プランコード
		if (inMap == null || inMap.get(prefix + "key_pplan_cd") == null || "".equals(inMap.get(prefix + "key_pplan_cd")))
		{
			template.setNull(EKK0851B503CBSMsg.KEY_PPLAN_CD);
		}
		else
		{
			template.set(EKK0851B503CBSMsg.KEY_PPLAN_CD, (String)inMap.get(prefix + "key_pplan_cd"));
		}

		return template;
	}

	/**
	 * 割引サービス契約登録上りマッピング処理
	 * <br>
	 * @param param
	 * @param inMap
	 * @param prefix
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0451D010Msg(IRequestParameterReadWrite param, HashMap inMap, String prefix) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0451D010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0451D010CBSMsg.TEMPLATEID, "EKK0451D010");

		// 機能コード（デフォルト：１）
		template.set(EKK0451D010CBSMsg.FUNC_CODE, "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);

		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();

		/* 作業項目情報 */
		HashMap ccWorkMap = null;
		String wribSvcTrgtSvcCd = null;
		if (workMap != null)
		{
			ccWorkMap = (HashMap)workMap.get(CC_WORK_AREA_NAME);
			if (ccWorkMap != null)
			{
				wribSvcTrgtSvcCd = (String)ccWorkMap.get("wrib_svc_trgt_svc_cd");
			}
		}
		
		// 機能コード
		template.set(EKK0451D010CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));

		// SYSID
		if (inMap == null || inMap.get(prefix + "sysid") == null || "".equals(inMap.get(prefix + "sysid")))
		{
			template.setNull(EKK0451D010CBSMsg.SYSID);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.SYSID, (String)inMap.get(prefix + "sysid"));
		}

		// 割引サービスコード
		if (inMap == null || inMap.get(prefix + "wrib_svc_cd") == null || "".equals(inMap.get(prefix + "wrib_svc_cd")))
		{
			template.setNull(EKK0451D010CBSMsg.WRIB_SVC_CD);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.WRIB_SVC_CD, (String)inMap.get(prefix + "wrib_svc_cd"));
		}

		// 料金コースコード
		if (inMap == null || inMap.get(prefix + "pcrs_cd") == null || "".equals(inMap.get(prefix + "pcrs_cd")))
		{
			template.setNull(EKK0451D010CBSMsg.PCRS_CD);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.PCRS_CD, (String)inMap.get(prefix + "pcrs_cd"));
		}

		// 料金プランコード
		if (inMap == null || inMap.get(prefix + "pplan_cd") == null || "".equals(inMap.get(prefix + "pplan_cd")))
		{
			template.setNull(EKK0451D010CBSMsg.PPLAN_CD);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.PPLAN_CD, (String)inMap.get(prefix + "pplan_cd"));
		}

		// サービス利用開始希望年月日
		if (inMap == null || inMap.get(prefix + "svc_use_sta_kibo_ymd") == null || "".equals(inMap.get(prefix + "svc_use_sta_kibo_ymd")))
		{
			template.setNull(EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD, (String)inMap.get(prefix + "svc_use_sta_kibo_ymd"));
		}

		// 予約適用開始希望年月日
		if (inMap == null || inMap.get(prefix + "rsv_tsta_kibo_ymd") == null || "".equals(inMap.get(prefix + "rsv_tsta_kibo_ymd")))
		{
			template.setNull(EKK0451D010CBSMsg.RSV_TSTA_KIBO_YMD);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.RSV_TSTA_KIBO_YMD, (String)inMap.get(prefix + "rsv_tsta_kibo_ymd"));
		}

		// 申込明細番号
		if (inMap == null || inMap.get(prefix + "mskm_dtl_no") == null || "".equals(inMap.get(prefix + "mskm_dtl_no")))
		{
			template.setNull(EKK0451D010CBSMsg.MSKM_DTL_NO);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.MSKM_DTL_NO, (String)inMap.get(prefix + "mskm_dtl_no"));
		}

		// 即時適用フラグ
		if (inMap == null || inMap.get(prefix + "aply_jun") == null || "".equals(inMap.get(prefix + "aply_jun")))
		{
			template.setNull(EKK0451D010CBSMsg.APLY_JUN);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.APLY_JUN, (String)inMap.get(prefix + "aply_jun"));
		}

		// 違約金発生コード
		if (inMap == null || inMap.get(prefix + "pnlty_hassei_cd") == null || "".equals(inMap.get(prefix + "pnlty_hassei_cd")))
		{
			template.setNull(EKK0451D010CBSMsg.PNLTY_HASSEI_CD);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.PNLTY_HASSEI_CD, (String)inMap.get(prefix + "pnlty_hassei_cd"));
		}

		// 異動区分
		if (inMap == null || inMap.get(prefix + "ido_div") == null || "".equals(inMap.get(prefix + "ido_div")))
		{
			template.setNull(EKK0451D010CBSMsg.IDO_DIV);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.IDO_DIV, (String)inMap.get(prefix + "ido_div"));
		}

		// 申込起算年月日
		if (inMap == null || inMap.get(prefix + "mskm_kisan_ymd") == null || "".equals(inMap.get(prefix + "mskm_kisan_ymd")))
		{
			template.setNull(EKK0451D010CBSMsg.MSKM_KISAN_YMD);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.MSKM_KISAN_YMD, (String)inMap.get(prefix + "mskm_kisan_ymd"));
		}

		// 割引登録契機コード
		if (inMap == null || inMap.get(prefix + "wrib_add_opty_cd") == null || "".equals(inMap.get(prefix + "wrib_add_opty_cd")))
		{
			template.setNull(EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD, (String)inMap.get(prefix + "wrib_add_opty_cd"));
		}

		// 割引サービス対象契約明細
		ArrayList<HashMap<String, Object>> msg1List = (ArrayList<HashMap<String, Object>>)inMap.get(prefix + "EKK0451D010CBSMsg1List");
		if(null == msg1List)
		{
			msg1List = new ArrayList<HashMap<String, Object>>();
		}
		CAANMsg[] templateArray = new CAANMsg[msg1List.size()];

		int i = 0;
		CAANMsg childTemplate = null;
		for(HashMap<String, Object> childMap : msg1List)
		{
			childTemplate = templateArray[i];
			
			if (childTemplate == null)
			{
				childTemplate = new CAANMsg(EKK0451D010CBSMsg1List.class.getName());
				templateArray[i] = childTemplate;
			}
			
			i++;

			// 対象契約識別コード
			if (childMap == null || childMap.get(prefix + "tg_kei_skbt_cd") == null || "".equals(childMap.get(prefix + "tg_kei_skbt_cd")))
			{
				childTemplate.setNull(EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD);
			}
			else
			{
				childTemplate.set(EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD, (String)childMap.get(prefix + "tg_kei_skbt_cd"));
			}

			// サービス契約番号
			if (childMap == null || childMap.get(prefix + "svc_kei_no") == null || "".equals(childMap.get(prefix + "svc_kei_no")))
			{
				childTemplate.setNull(EKK0451D010CBSMsg1List.SVC_KEI_NO);
			}
			else
			{
				childTemplate.set(EKK0451D010CBSMsg1List.SVC_KEI_NO, (String)childMap.get(prefix + "svc_kei_no"));
			}

			// サービス契約内訳番号
			if (childMap == null || childMap.get(prefix + "svc_kei_ucwk_no") == null || "".equals(childMap.get(prefix + "svc_kei_ucwk_no")))
			{
				childTemplate.setNull(EKK0451D010CBSMsg1List.SVC_KEI_UCWK_NO);
			}
			else
			{
				childTemplate.set(EKK0451D010CBSMsg1List.SVC_KEI_UCWK_NO, (String)childMap.get(prefix + "svc_kei_ucwk_no"));
			}

			// オプションサービス契約番号
			if (childMap == null || childMap.get(prefix + "op_svc_kei_no") == null || "".equals(childMap.get(prefix + "op_svc_kei_no")))
			{
				childTemplate.setNull(EKK0451D010CBSMsg1List.OP_SVC_KEI_NO);
			}
			else
			{
				childTemplate.set(EKK0451D010CBSMsg1List.OP_SVC_KEI_NO, (String)childMap.get(prefix + "op_svc_kei_no"));
			}

			// サブオプションサービス契約番号
			if (childMap == null || childMap.get(prefix + "sbop_svc_kei_no") == null || "".equals(childMap.get(prefix + "sbop_svc_kei_no")))
			{
				childTemplate.setNull(EKK0451D010CBSMsg1List.SBOP_SVC_KEI_NO);
			}
			else
			{
				childTemplate.set(EKK0451D010CBSMsg1List.SBOP_SVC_KEI_NO, (String)childMap.get(prefix + "sbop_svc_kei_no"));
			}

			// 機器提供サービス契約番号
			if (childMap == null || childMap.get(prefix + "kktk_svc_kei_no") == null || "".equals(childMap.get(prefix + "kktk_svc_kei_no")))
			{
				childTemplate.setNull(EKK0451D010CBSMsg1List.KKTK_SVC_KEI_NO);
			}
			else
			{
				childTemplate.set(EKK0451D010CBSMsg1List.KKTK_SVC_KEI_NO, (String)childMap.get(prefix + "kktk_svc_kei_no"));
			}

			// 割引サービス対象サービスコード
			if (childMap == null || childMap.get(prefix + "wrib_svc_trgt_svc_cd") == null || "".equals(childMap.get(prefix + "wrib_svc_trgt_svc_cd")))
			{
				if (wribSvcTrgtSvcCd == null || "".equals(wribSvcTrgtSvcCd))
				{
					childTemplate.setNull(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD);
				}
				else
				{
					childTemplate.set(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
				}
			}
			else
			{
				childTemplate.set(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD, (String)childMap.get(prefix + "wrib_svc_trgt_svc_cd"));
			}

			// 設定登録年月日
			if (childMap == null || childMap.get(prefix + "set_add_ymd") == null || "".equals(childMap.get(prefix + "set_add_ymd")))
			{
				childTemplate.setNull(EKK0451D010CBSMsg1List.SET_ADD_YMD);
			}
			else
			{
				childTemplate.set(EKK0451D010CBSMsg1List.SET_ADD_YMD, (String)childMap.get(prefix + "set_add_ymd"));
			}

			// 割引サービス対象契約適用開始年月日
			if (childMap == null || childMap.get(prefix + "wrisvc_tg_kei_tstaymd") == null || "".equals(childMap.get(prefix + "wrisvc_tg_kei_tstaymd")))
			{
				childTemplate.setNull(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD);
			}
			else
			{
				childTemplate.set(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD, (String)childMap.get(prefix + "wrisvc_tg_kei_tstaymd"));
			}

			// 割引サービス対象契約適用終了年月日
			if (childMap == null || childMap.get(prefix + "wrisvc_tg_kei_tendymd") == null || "".equals(childMap.get(prefix + "wrisvc_tg_kei_tendymd")))
			{
				childTemplate.setNull(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD);
			}
			else
			{
				childTemplate.set(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD, (String)childMap.get(prefix + "wrisvc_tg_kei_tendymd"));
			}
		}
		
		template.set(EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST, templateArray);

		// 更新年月日時分秒(更新前)
		if (inMap == null || inMap.get(prefix + "upd_dtm_bf") == null || "".equals(inMap.get(prefix + "upd_dtm_bf")))
		{
			template.setNull(EKK0451D010CBSMsg.UPD_DTM_BF);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.UPD_DTM_BF, (String)inMap.get(prefix + "upd_dtm_bf"));
		}

		// 割引サービス契約自動継続識別コード
		if (inMap == null || inMap.get(prefix + "wrib_svc_kei_at_keizk_skcd") == null || "".equals(inMap.get(prefix + "wrib_svc_kei_at_keizk_skcd")))
		{
			template.setNull(EKK0451D010CBSMsg.WRIB_SVC_KEI_AT_KEIZK_SKCD);
		}
		else
		{
			template.set(EKK0451D010CBSMsg.WRIB_SVC_KEI_AT_KEIZK_SKCD, (String)inMap.get(prefix + "wrib_svc_kei_at_keizk_skcd"));
		}


		return template;
	}

	/**
	 * 課金先登録上りマッピング処理
	 * <br>
	 * @param param リクエストパラメータ
	 * @param inMap インプットマップ
	 * @param prefix プレフィックス
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0321D010Msg(IRequestParameterReadWrite param, HashMap inMap, String prefix) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0321D010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0321D010CBSMsg.TEMPLATEID, "EKK0321D010");

		// 機能コード（デフォルト：１）
		template.set(EKK0321D010CBSMsg.FUNC_CODE, "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(EKK0321D010CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));

		// 請求契約番号
		if (inMap == null || inMap.get(prefix + "seiky_kei_no") == null || "".equals(inMap.get(prefix + "seiky_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.SEIKY_KEI_NO, (String)inMap.get(prefix + "seiky_kei_no"));
		}

		// 割引サービス契約番号
		if (kk0321WribSvcKeiNo == null || "".equals(kk0321WribSvcKeiNo))
		{
			template.setNull(EKK0321D010CBSMsg.WRIB_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.WRIB_SVC_KEI_NO, kk0321WribSvcKeiNo);
		}

		// 課金先適用開始年月日
		if (inMap == null || inMap.get(prefix + "kakins_tstaymd") == null || "".equals(inMap.get(prefix + "kakins_tstaymd")))
		{
			template.setNull(EKK0321D010CBSMsg.KAKINS_TSTAYMD);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.KAKINS_TSTAYMD, (String)inMap.get(prefix + "kakins_tstaymd"));
		}

		// 更新年月日時分秒(更新前)
		if (inMap == null || inMap.get(prefix + "upd_dtm_bf") == null || "".equals(inMap.get(prefix + "upd_dtm_bf")))
		{
			template.setNull(EKK0321D010CBSMsg.UPD_DTM_BF);
		}
		else
		{
			String kk0491UpdDtm = JKKBpCommon.getLastDtmBySeiky(param, (String)inMap.get(prefix + "upd_dtm_bf"));
			template.set(EKK0321D010CBSMsg.UPD_DTM_BF, kk0491UpdDtm);
		}

		return template;
	}

	/**
	 * 割引サービス対象サービスコード一覧照会下りマッピング処理
	 * <br>
	 * @param msgList
	 * @param param
	 * @param dataMap
	 * @param prefix
	 * @return リクエストパラメータ
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutEKK0851B503Msg(Map<?, ?> msgList, IRequestParameterReadWrite param, HashMap dataMap, String prefix)
			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);
		
		// 作業領域のマップを取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME);
		if (workDataMap == null)
		{
			workDataMap = new HashMap();
			workMap.put(CC_WORK_AREA_NAME, workDataMap);
		}

		ArrayList dataList = null;

		templateArray = template.getCAANMsgList(EKK0851B503CBSMsg.EKK0851B503CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0851B503CBSMsg1List");

		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		String wribSvcTrgtSvcCd = "";
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];

				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);
				
				// 割引サービス対象サービスコード
				if (childTemplate.isNull(EKK0851B503CBSMsg1List.WRIB_SVC_TRGT_SVC_CD))
				{
					childMap.put("wrib_svc_trgt_svc_cd", "");
				}
				else
				{
					wribSvcTrgtSvcCd = childTemplate.getString(EKK0851B503CBSMsg1List.WRIB_SVC_TRGT_SVC_CD);
					childMap.put("wrib_svc_trgt_svc_cd", wribSvcTrgtSvcCd);
				}
			}
		}
		workDataMap.put("EKK0851B503CBSMsg1List", dataList);
		workDataMap.put("wrib_svc_trgt_svc_cd", wribSvcTrgtSvcCd);

		// エラー情報の設定
		editErrInfoEKK0851B503Msg(param, template, (Integer)returnCode, dataMap, prefix);

		// エラー情報のマップを取得
		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
	 * @param param
	 * @param dataMap
	 * @param prefix
	 * @return リクエストパラメータ
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutEKK0451D010Msg(Map<?, ?> msgList, IRequestParameterReadWrite param, HashMap dataMap, String prefix)
			throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 割引サービス契約番号
		if (template.isNull(EKK0451D010CBSMsg.WRIB_SVC_KEI_NO))
		{
			dataMap.put(prefix + "wrib_svc_kei_no", "");
		}
		else
		{
			dataMap.put(prefix + "wrib_svc_kei_no", template.getString(EKK0451D010CBSMsg.WRIB_SVC_KEI_NO));
			kk0321WribSvcKeiNo = template.getString(EKK0451D010CBSMsg.WRIB_SVC_KEI_NO);
		}

		// 世代登録年月日時分秒（割引サービス契約）
		if (template.isNull(EKK0451D010CBSMsg.KK0451_GENE_ADD_DTM))
		{
			dataMap.put(prefix + "kk0451_gene_add_dtm", "");
		}
		else
		{
			dataMap.put(prefix + "kk0451_gene_add_dtm", template.getString(EKK0451D010CBSMsg.KK0451_GENE_ADD_DTM));
		}

		// 割引サービス契約ステータス
		if (template.isNull(EKK0451D010CBSMsg.WRIB_SVC_KEI_STAT))
		{
			dataMap.put(prefix + "wrib_svc_kei_stat", "");
		}
		else
		{
			dataMap.put(prefix + "wrib_svc_kei_stat", template.getString(EKK0451D010CBSMsg.WRIB_SVC_KEI_STAT));
		}

		// 予約適用年月日
		if (template.isNull(EKK0451D010CBSMsg.RSV_APLY_YMD))
		{
			dataMap.put(prefix + "rsv_aply_ymd", "");
		}
		else
		{
			dataMap.put(prefix + "rsv_aply_ymd", template.getString(EKK0451D010CBSMsg.RSV_APLY_YMD));
		}

		// 予約適用コード
		if (template.isNull(EKK0451D010CBSMsg.RSV_APLY_CD))
		{
			dataMap.put(prefix + "rsv_aply_cd", "");
		}
		else
		{
			dataMap.put(prefix + "rsv_aply_cd", template.getString(EKK0451D010CBSMsg.RSV_APLY_CD));
		}

		ArrayList<HashMap<String, Object>> msg1List = (ArrayList<HashMap<String, Object>>)dataMap.get(prefix + "EKK0451D010CBSMsg1List");
		if(null == msg1List)
		{
			msg1List = new ArrayList<HashMap<String, Object>>();
		}
		
		CAANMsg[] templateArray1 = template.getCAANMsgList(EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST);
		if (templateArray1 == null)
		{
			templateArray1 = new CAANMsg[1];
		}

		int i = 0;
		HashMap childMap1 = null;
		for(CAANMsg childTemplate1 : templateArray1)
		{
			if (childTemplate1 == null)
			{
				childTemplate1 = new CAANMsg(EKK0451D010CBSMsg1List.class.getName());
			}
			
			if(msg1List.size() <= i)
			{
				childMap1 = new HashMap();
				msg1List.add(childMap1);
			}
			else
			{
				childMap1 = msg1List.get(i);
			}
			i++;

			// 割引サービス対象契約番号
			if (childTemplate1.isNull(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_KEI_NO))
			{
				childMap1.put(prefix + "wrib_svc_trgt_kei_no", "");
			}
			else
			{
				childMap1.put(prefix + "wrib_svc_trgt_kei_no", childTemplate1.getString(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_KEI_NO));
			}

			// 世代登録年月日時分秒（割引サービス対象契約）
			if (childTemplate1.isNull(EKK0451D010CBSMsg1List.KK0481_GENE_ADD_DTM))
			{
				childMap1.put(prefix + "kk0481_gene_add_dtm", "");
			}
			else
			{
				childMap1.put(prefix + "kk0481_gene_add_dtm", childTemplate1.getString(EKK0451D010CBSMsg1List.KK0481_GENE_ADD_DTM));
			}
		}

		dataMap.put(prefix + "EKK0451D010CBSMsg1List", msg1List);

		ArrayList<HashMap<String, Object>> msg2List = (ArrayList<HashMap<String, Object>>)dataMap.get(prefix + "EKK0451D010CBSMsg2List");
		if(null == msg2List)
		{
			msg2List = new ArrayList<HashMap<String, Object>>();
		}

		CAANMsg[] templateArray2 = template.getCAANMsgList(EKK0451D010CBSMsg.EKK0451D010CBSMSG2LIST);

		if (templateArray2 == null)
		{
			templateArray2 = new CAANMsg[1];
		}

		i = 0;
		HashMap childMap2 = null;
		for(CAANMsg childTemplate2 : templateArray2)
		{
			if (childTemplate2 == null)
			{
				childTemplate2 = new CAANMsg(EKK0451D010CBSMsg2List.class.getName());
			}
			
			if(msg2List.size() <= i)
			{
				childMap2 = new HashMap();
				msg2List.add(childMap2);
			}
			else
			{
				childMap2 = msg2List.get(i);
			}
			i++;

			// オプションサービス契約番号
			if (childTemplate2.isNull(EKK0451D010CBSMsg2List.FP_OP_SVC_KEI_NO))
			{
				childMap2.put(prefix + "fp_op_svc_kei_no", "");
			}
			else
			{
				childMap2.put(prefix + "fp_op_svc_kei_no", childTemplate2.getString(EKK0451D010CBSMsg2List.FP_OP_SVC_KEI_NO));
			}

			// サブオプションサービス契約番号
			if (childTemplate2.isNull(EKK0451D010CBSMsg2List.FP_SBOP_SVC_KEI_NO))
			{
				childMap2.put(prefix + "fp_sbop_svc_kei_no", "");
			}
			else
			{
				childMap2.put(prefix + "fp_sbop_svc_kei_no", childTemplate2.getString(EKK0451D010CBSMsg2List.FP_SBOP_SVC_KEI_NO));
			}

			// 世代登録年月日時分秒(サブオプションサービス契約)
			if (childTemplate2.isNull(EKK0451D010CBSMsg2List.FP_KK0401_GENE_ADD_DTM))
			{
				childMap2.put(prefix + "fp_kk0401_gene_add_dtm", "");
			}
			else
			{
				childMap2.put(prefix + "fp_kk0401_gene_add_dtm", childTemplate2.getString(EKK0451D010CBSMsg2List.FP_KK0401_GENE_ADD_DTM));
			}

			// 更新年月日時分秒（サブオプションサービス契約）
			if (childTemplate2.isNull(EKK0451D010CBSMsg2List.FP_KK0401_UPD_DTM))
			{
				childMap2.put(prefix + "fp_kk0401_upd_dtm", "");
			}
			else
			{
				childMap2.put(prefix + "fp_kk0401_upd_dtm", childTemplate2.getString(EKK0451D010CBSMsg2List.FP_KK0401_UPD_DTM));
			}
		}
		
		dataMap.put(prefix + "EKK0451D010CBSMsg2List", msg2List);

		ArrayList<HashMap<String, Object>> msg3List = (ArrayList<HashMap<String, Object>>)dataMap.get(prefix + "EKK0451D010CBSMsg3List");
		if(null == msg3List)
		{
			msg3List = new ArrayList<HashMap<String, Object>>();
		}

		CAANMsg[] templateArray3 = template.getCAANMsgList(EKK0451D010CBSMsg.EKK0451D010CBSMSG3LIST);

		if (templateArray3 == null)
		{
			templateArray3 = new CAANMsg[1];
		}

		i = 0;
		HashMap childMap3 = null;
		for(CAANMsg childTemplate3 : templateArray3)
		{
			if (childTemplate3 == null)
			{
				childTemplate3 = new CAANMsg(EKK0451D010CBSMsg3List.class.getName());
			}
			
			if(msg3List.size() <= i)
			{
				childMap3 = new HashMap();
				msg3List.add(childMap3);
			}
			else
			{
				childMap3 = msg3List.get(i);
			}
			i++;

			// 割引サービス契約番号
			if (childTemplate3.isNull(EKK0451D010CBSMsg3List.KK2361_WRIB_SVC_KEI_NO))
			{
				childMap3.put(prefix + "kk2361_wrib_svc_kei_no", "");
			}
			else
			{
				childMap3.put(prefix + "kk2361_wrib_svc_kei_no", childTemplate3.getString(EKK0451D010CBSMsg3List.KK2361_WRIB_SVC_KEI_NO));
			}

			// 割引サービス契約内訳番号
			if (childTemplate3.isNull(EKK0451D010CBSMsg3List.KK2361_WRIB_SVC_KEI_UCWK_NO))
			{
				childMap3.put(prefix + "kk2361_wrib_svc_kei_ucwk_no", "");
			}
			else
			{
				childMap3.put(prefix + "kk2361_wrib_svc_kei_ucwk_no", childTemplate3.getString(EKK0451D010CBSMsg3List.KK2361_WRIB_SVC_KEI_UCWK_NO));
			}

			// 世代登録年月日時分秒（割引サービス契約内訳）
			if (childTemplate3.isNull(EKK0451D010CBSMsg3List.KK2361_GENE_ADD_DTM))
			{
				childMap3.put(prefix + "kk2361_gene_add_dtm", "");
			}
			else
			{
				childMap3.put(prefix + "kk2361_gene_add_dtm", childTemplate3.getString(EKK0451D010CBSMsg3List.KK2361_GENE_ADD_DTM));
			}

			// 割引サービス契約内訳ステータス
			if (childTemplate3.isNull(EKK0451D010CBSMsg3List.KK2361_WRIB_SVC_KEI_UCWK_STAT))
			{
				childMap3.put(prefix + "kk2361_wrib_svc_kei_ucwk_stat", "");
			}
			else
			{
				childMap3.put(prefix + "kk2361_wrib_svc_kei_ucwk_stat", childTemplate3.getString(EKK0451D010CBSMsg3List.KK2361_WRIB_SVC_KEI_UCWK_STAT));
			}

			// 割引サービス詳細コード
			if (childTemplate3.isNull(EKK0451D010CBSMsg3List.KK2361_WRIB_SVC_DTL_CD))
			{
				childMap3.put(prefix + "kk2361_wrib_svc_dtl_cd", "");
			}
			else
			{
				childMap3.put(prefix + "kk2361_wrib_svc_dtl_cd", childTemplate3.getString(EKK0451D010CBSMsg3List.KK2361_WRIB_SVC_DTL_CD));
			}

			// 割引適用回数
			if (childTemplate3.isNull(EKK0451D010CBSMsg3List.KK2361_WRIB_APLY_CNT))
			{
				childMap3.put(prefix + "kk2361_wrib_aply_cnt", "");
			}
			else
			{
				childMap3.put(prefix + "kk2361_wrib_aply_cnt", childTemplate3.getString(EKK0451D010CBSMsg3List.KK2361_WRIB_APLY_CNT));
			}

			// 課金開始年月日補正有無
			if (childTemplate3.isNull(EKK0451D010CBSMsg3List.KK2361_CHRG_STA_YMD_HOSEI_UM))
			{
				childMap3.put(prefix + "kk2361_chrg_sta_ymd_hosei_um", "");
			}
			else
			{
				childMap3.put(prefix + "kk2361_chrg_sta_ymd_hosei_um", childTemplate3.getString(EKK0451D010CBSMsg3List.KK2361_CHRG_STA_YMD_HOSEI_UM));
			}
		}
		
		dataMap.put(prefix + "EKK0451D010CBSMsg3List", msg2List);

		// 登録年月日時分秒
		if (template.isNull(EKK0451D010CBSMsg.ADD_DTM))
		{
			dataMap.put(prefix + "add_dtm", "");
		}
		else
		{
			dataMap.put(prefix + "add_dtm", template.getString(EKK0451D010CBSMsg.ADD_DTM));
		}

		// 登録オペレータアカウント
		if (template.isNull(EKK0451D010CBSMsg.ADD_OPEACNT))
		{
			dataMap.put(prefix + "add_opeacnt", "");
		}
		else
		{
			dataMap.put(prefix + "add_opeacnt", template.getString(EKK0451D010CBSMsg.ADD_OPEACNT));
		}

		// 更新年月日時分秒
		if (template.isNull(EKK0451D010CBSMsg.UPD_DTM))
		{
			dataMap.put(prefix + "upd_dtm", "");
		}
		else
		{
			dataMap.put(prefix + "upd_dtm", template.getString(EKK0451D010CBSMsg.UPD_DTM));
		}

		// 更新オペレータアカウント
		if (template.isNull(EKK0451D010CBSMsg.UPD_OPEACNT))
		{
			dataMap.put(prefix + "upd_opeacnt", "");
		}
		else
		{
			dataMap.put(prefix + "upd_opeacnt", template.getString(EKK0451D010CBSMsg.UPD_OPEACNT));
		}

		// 無効フラグ
		if (template.isNull(EKK0451D010CBSMsg.MK_FLG))
		{
			dataMap.put(prefix + "mk_flg", "");
		}
		else
		{
			dataMap.put(prefix + "mk_flg", template.getString(EKK0451D010CBSMsg.MK_FLG));
		}

		// エラー情報の設定
		editErrInfoEKK0451D010Msg(param, template, (Integer)returnCode, dataMap, prefix);

		// エラー情報のマップを取得
		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 メッセージリスト
	 * @param param リクエストパラメータ
	 * @param dataMap データ格納マップ
	 * @param prefix プレフィックス
	 * @return リクエストパラメータ
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutEKK0321D010Msg(Map<?, ?> msgList, IRequestParameterReadWrite param, HashMap dataMap, String prefix)
			throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 課金先番号
		if (template.isNull(EKK0321D010CBSMsg.KAKINS_NO))
		{
			dataMap.put(prefix + "kakins_no", "");
		}
		else
		{
			dataMap.put(prefix + "kakins_no", template.getString(EKK0321D010CBSMsg.KAKINS_NO));
		}

		// 登録年月日時分秒
		if (template.isNull(EKK0321D010CBSMsg.ADD_DTM))
		{
			dataMap.put(prefix + "add_dtm", "");
		}
		else
		{
			dataMap.put(prefix + "add_dtm", template.getString(EKK0321D010CBSMsg.ADD_DTM));
		}

		// 登録オペレータアカウント
		if (template.isNull(EKK0321D010CBSMsg.ADD_OPEACNT))
		{
			dataMap.put(prefix + "add_opeacnt", "");
		}
		else
		{
			dataMap.put(prefix + "add_opeacnt", template.getString(EKK0321D010CBSMsg.ADD_OPEACNT));
		}

		// 更新年月日時分秒
		if (template.isNull(EKK0321D010CBSMsg.UPD_DTM))
		{
			dataMap.put(prefix + "upd_dtm", "");
		}
		else
		{
			dataMap.put(prefix + "upd_dtm", template.getString(EKK0321D010CBSMsg.UPD_DTM));
			JKKBpCommon.setLastDtmBySeiky(param, template.getString(EKK0321D010CBSMsg.UPD_DTM));
		}

		// 更新オペレータアカウント
		if (template.isNull(EKK0321D010CBSMsg.UPD_OPEACNT))
		{
			dataMap.put(prefix + "upd_opeacnt", "");
		}
		else
		{
			dataMap.put(prefix + "upd_opeacnt", template.getString(EKK0321D010CBSMsg.UPD_OPEACNT));
		}

		// 無効フラグ
		if (template.isNull(EKK0321D010CBSMsg.MK_FLG))
		{
			dataMap.put(prefix + "mk_flg", "");
		}
		else
		{
			dataMap.put(prefix + "mk_flg", template.getString(EKK0321D010CBSMsg.MK_FLG));
		}

		// エラー情報の設定
		editErrInfoEKK0321D010Msg(param, template, (Integer)returnCode, dataMap, prefix);

		// エラー情報のマップを取得
		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 param
	 * @param template
	 * @param returnCode
	 * @param inMap
	 * @param prefix
	 * @return リクエストパラメータ
	 * @throws NumberFormatException
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0851B503Msg(IRequestParameterReadWrite param, CAANMsg template, int returnCode,
			HashMap inMap, String prefix) throws NumberFormatException, RequestParameterException
	{
		int templateStatus = template.getInt(EKK0851B503CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + String.format(RETURN_MESSAGE_FORMAT, 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)
		{
			String formatStatus = String.format(RETURN_MESSAGE_FORMAT, templateStatus);
			String message = JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		// ＫＥＹ＿割引サービスコード
		if (!template.isNull(EKK0851B503CBSMsg.KEY_WRIB_SVC_CD_ERR))
		{
			if (!inMap.containsKey(prefix + "key_wrib_svc_cd_err"))
			{
				inMap.put(prefix + "key_wrib_svc_cd_err", template.getString(EKK0851B503CBSMsg.KEY_WRIB_SVC_CD_ERR));
			}
		}

		// ＫＥＹ＿サービスコード
		if (!template.isNull(EKK0851B503CBSMsg.KEY_SVC_CD_ERR))
		{
			if (!inMap.containsKey(prefix + "key_svc_cd_err"))
			{
				inMap.put(prefix + "key_svc_cd_err", template.getString(EKK0851B503CBSMsg.KEY_SVC_CD_ERR));
			}
		}

		// ＫＥＹ＿料金コースコード
		if (!template.isNull(EKK0851B503CBSMsg.KEY_PCRS_CD_ERR))
		{
			if (!inMap.containsKey(prefix + "key_pcrs_cd_err"))
			{
				inMap.put(prefix + "key_pcrs_cd_err", template.getString(EKK0851B503CBSMsg.KEY_PCRS_CD_ERR));
			}
		}

		// ＫＥＹ＿料金プランコード
		if (!template.isNull(EKK0851B503CBSMsg.KEY_PPLAN_CD_ERR))
		{
			if (!inMap.containsKey(prefix + "key_pplan_cd_err"))
			{
				inMap.put(prefix + "key_pplan_cd_err", template.getString(EKK0851B503CBSMsg.KEY_PPLAN_CD_ERR));
			}
		}

		return param;
	}
	
	/**
	 * 割引サービス契約登録のエラー情報マッピング処理を行います。
	 * 
	 * <br>
	 * @param param
	 * @param template
	 * @param returnCode
	 * @param inMap
	 * @param prefix
	 * @return リクエストパラメータ
	 * @throws NumberFormatException
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0451D010Msg(IRequestParameterReadWrite param, CAANMsg template, int returnCode,
			HashMap inMap, String prefix) throws NumberFormatException, RequestParameterException
	{
		int templateStatus = template.getInt(EKK0451D010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + String.format(RETURN_MESSAGE_FORMAT, 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)
		{
			String formatStatus = String.format(RETURN_MESSAGE_FORMAT, templateStatus);
			String message = JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		// SYSID
		if (!template.isNull(EKK0451D010CBSMsg.SYSID_ERR))
		{
			if (!inMap.containsKey(prefix + "sysid_err"))
			{
				inMap.put(prefix + "sysid_err", template.getString(EKK0451D010CBSMsg.SYSID_ERR));
			}
		}

		// 割引サービスコード
		if (!template.isNull(EKK0451D010CBSMsg.WRIB_SVC_CD_ERR))
		{
			if (!inMap.containsKey(prefix + "wrib_svc_cd_err"))
			{
				inMap.put(prefix + "wrib_svc_cd_err", template.getString(EKK0451D010CBSMsg.WRIB_SVC_CD_ERR));
			}
		}

		// 料金コースコード
		if (!template.isNull(EKK0451D010CBSMsg.PCRS_CD_ERR))
		{
			if (!inMap.containsKey(prefix + "pcrs_cd_err"))
			{
				inMap.put(prefix + "pcrs_cd_err", template.getString(EKK0451D010CBSMsg.PCRS_CD_ERR));
			}
		}

		// 料金プランコード
		if (!template.isNull(EKK0451D010CBSMsg.PPLAN_CD_ERR))
		{
			if (!inMap.containsKey(prefix + "pplan_cd_err"))
			{
				inMap.put(prefix + "pplan_cd_err", template.getString(EKK0451D010CBSMsg.PPLAN_CD_ERR));
			}
		}

		// サービス利用開始希望年月日
		if (!template.isNull(EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD_ERR))
		{
			if (!inMap.containsKey(prefix + "svc_use_sta_kibo_ymd_err"))
			{
				inMap.put(prefix + "svc_use_sta_kibo_ymd_err", template.getString(EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD_ERR));
			}
		}

		// 予約適用開始希望年月日
		if (!template.isNull(EKK0451D010CBSMsg.RSV_TSTA_KIBO_YMD_ERR))
		{
			if (!inMap.containsKey(prefix + "rsv_tsta_kibo_ymd_err"))
			{
				inMap.put(prefix + "rsv_tsta_kibo_ymd_err", template.getString(EKK0451D010CBSMsg.RSV_TSTA_KIBO_YMD_ERR));
			}
		}

		// 申込明細番号
		if (!template.isNull(EKK0451D010CBSMsg.MSKM_DTL_NO_ERR))
		{
			if (!inMap.containsKey(prefix + "mskm_dtl_no_err"))
			{
				inMap.put(prefix + "mskm_dtl_no_err", template.getString(EKK0451D010CBSMsg.MSKM_DTL_NO_ERR));
			}
		}

		// 即時適用フラグ
		if (!template.isNull(EKK0451D010CBSMsg.APLY_JUN_ERR))
		{
			if (!inMap.containsKey(prefix + "aply_jun_err"))
			{
				inMap.put(prefix + "aply_jun_err", template.getString(EKK0451D010CBSMsg.APLY_JUN_ERR));
			}
		}

		// 違約金発生コード
		if (!template.isNull(EKK0451D010CBSMsg.PNLTY_HASSEI_CD_ERR))
		{
			if (!inMap.containsKey(prefix + "pnlty_hassei_cd_err"))
			{
				inMap.put(prefix + "pnlty_hassei_cd_err", template.getString(EKK0451D010CBSMsg.PNLTY_HASSEI_CD_ERR));
			}
		}

		// 異動区分
		if (!template.isNull(EKK0451D010CBSMsg.IDO_DIV_ERR))
		{
			if (!inMap.containsKey(prefix + "ido_div_err"))
			{
				inMap.put(prefix + "ido_div_err", template.getString(EKK0451D010CBSMsg.IDO_DIV_ERR));
			}
		}

		// 申込起算年月日
		if (!template.isNull(EKK0451D010CBSMsg.MSKM_KISAN_YMD_ERR))
		{
			if (!inMap.containsKey(prefix + "mskm_kisan_ymd_err"))
			{
				inMap.put(prefix + "mskm_kisan_ymd_err", template.getString(EKK0451D010CBSMsg.MSKM_KISAN_YMD_ERR));
			}
		}

		// 割引登録契機コード
		if (!template.isNull(EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD_ERR))
		{
			if (!inMap.containsKey(prefix + "wrib_add_opty_cd_err"))
			{
				inMap.put(prefix + "wrib_add_opty_cd_err", template.getString(EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD_ERR));
			}
		}

		ArrayList<HashMap<String, Object>> msg1List = (ArrayList<HashMap<String, Object>>)inMap.get(prefix + "EKK0451D010CBSMsg1List");
		CAANMsg[] templateArray = template.getCAANMsgList(EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST);

		if (templateArray == null)
		{
			templateArray = new CAANMsg[1];
		}
		
		int i = 0;
		HashMap<String, Object> childMap = null;
		for(CAANMsg childTemplate : templateArray)
		{
			if (childTemplate == null)
			{
				childTemplate = new CAANMsg(EKK0451D010CBSMsg1List.class.getName());
			}
			
			if(msg1List.size() <= i)
			{
				childMap = new HashMap<String, Object>();
				msg1List.add(childMap);
			}
			else
			{
				childMap = msg1List.get(i);
			}
			i++;
			
			// 対象契約識別コード
			if (!childTemplate.isNull(EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD_ERR))
			{
				if (!childMap.containsKey(prefix + "tg_kei_skbt_cd_err"))
				{
					childMap.put(prefix + "tg_kei_skbt_cd_err", childTemplate.getString(EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD_ERR));
				}
			}

			// サービス契約番号
			if (!childTemplate.isNull(EKK0451D010CBSMsg1List.SVC_KEI_NO_ERR))
			{
				if (!childMap.containsKey(prefix + "svc_kei_no_err"))
				{
					childMap.put(prefix + "svc_kei_no_err", childTemplate.getString(EKK0451D010CBSMsg1List.SVC_KEI_NO_ERR));
				}
			}

			// サービス契約内訳番号
			if (!childTemplate.isNull(EKK0451D010CBSMsg1List.SVC_KEI_UCWK_NO_ERR))
			{
				if (!childMap.containsKey(prefix + "svc_kei_ucwk_no_err"))
				{
					childMap.put(prefix + "svc_kei_ucwk_no_err", childTemplate.getString(EKK0451D010CBSMsg1List.SVC_KEI_UCWK_NO_ERR));
				}
			}

			// オプションサービス契約番号
			if (!childTemplate.isNull(EKK0451D010CBSMsg1List.OP_SVC_KEI_NO_ERR))
			{
				if (!childMap.containsKey(prefix + "op_svc_kei_no_err"))
				{
					childMap.put(prefix + "op_svc_kei_no_err", childTemplate.getString(EKK0451D010CBSMsg1List.OP_SVC_KEI_NO_ERR));
				}
			}

			// サブオプションサービス契約番号
			if (!childTemplate.isNull(EKK0451D010CBSMsg1List.SBOP_SVC_KEI_NO_ERR))
			{
				if (!childMap.containsKey(prefix + "sbop_svc_kei_no_err"))
				{
					childMap.put(prefix + "sbop_svc_kei_no_err", childTemplate.getString(EKK0451D010CBSMsg1List.SBOP_SVC_KEI_NO_ERR));
				}
			}

			// 機器提供サービス契約番号
			if (!childTemplate.isNull(EKK0451D010CBSMsg1List.KKTK_SVC_KEI_NO_ERR))
			{
				if (!childMap.containsKey(prefix + "kktk_svc_kei_no_err"))
				{
					childMap.put(prefix + "kktk_svc_kei_no_err", childTemplate.getString(EKK0451D010CBSMsg1List.KKTK_SVC_KEI_NO_ERR));
				}
			}

			// 割引サービス対象サービスコード
			if (!childTemplate.isNull(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD_ERR))
			{
				if (!childMap.containsKey(prefix + "wrib_svc_trgt_svc_cd_err"))
				{
					childMap.put(prefix + "wrib_svc_trgt_svc_cd_err", childTemplate.getString(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD_ERR));
				}
			}

			// 設定登録年月日
			if (!childTemplate.isNull(EKK0451D010CBSMsg1List.SET_ADD_YMD_ERR))
			{
				if (!childMap.containsKey(prefix + "set_add_ymd_err"))
				{
					childMap.put(prefix + "set_add_ymd_err", childTemplate.getString(EKK0451D010CBSMsg1List.SET_ADD_YMD_ERR));
				}
			}

			// 割引サービス対象契約適用開始年月日
			if (!childTemplate.isNull(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD_ERR))
			{
				if (!childMap.containsKey(prefix + "wrisvc_tg_kei_tstaymd_err"))
				{
					childMap.put(prefix + "wrisvc_tg_kei_tstaymd_err", childTemplate.getString(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD_ERR));
				}
			}

			// 割引サービス対象契約適用終了年月日
			if (!childTemplate.isNull(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD_ERR))
			{
				if (!childMap.containsKey(prefix + "wrisvc_tg_kei_tendymd_err"))
				{
					childMap.put(prefix + "wrisvc_tg_kei_tendymd_err", childTemplate.getString(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD_ERR));
				}
			}
		}

		template.set(EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST, templateArray);

		// 更新年月日時分秒(更新前)
		if (!template.isNull(EKK0451D010CBSMsg.UPD_DTM_BF_ERR))
		{
			if (!inMap.containsKey(prefix + "upd_dtm_bf_err"))
			{
				inMap.put(prefix + "upd_dtm_bf_err", template.getString(EKK0451D010CBSMsg.UPD_DTM_BF_ERR));
			}
		}

		return param;
	}
	
	/**
	 * 課金先登録のエラー情報マッピング処理を行います。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param template CAANMsg
	 * @param returnCode リターンコード
	 * @param inMap インプットマップ
	 * @param prefix プレフィックス
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0321D010Msg(IRequestParameterReadWrite param, CAANMsg template, int returnCode,
			HashMap inMap, String prefix) throws RequestParameterException
	{
		int templateStatus = template.getInt(EKK0321D010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + String.format(RETURN_MESSAGE_FORMAT, 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)
		{
			String formatStatus = String.format(RETURN_MESSAGE_FORMAT, templateStatus);
			String message = JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		// 請求契約番号
		if (!template.isNull(EKK0321D010CBSMsg.SEIKY_KEI_NO_ERR))
		{
			if (!inMap.containsKey(prefix + "seiky_kei_no_err"))
			{
				inMap.put(prefix + "seiky_kei_no_err", template.getString(EKK0321D010CBSMsg.SEIKY_KEI_NO_ERR));
			}
		}

		// 割引サービス契約番号
		if (!template.isNull(EKK0321D010CBSMsg.WRIB_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey(prefix + "wrib_svc_kei_no_err"))
			{
				inMap.put(prefix + "wrib_svc_kei_no_err", template.getString(EKK0321D010CBSMsg.WRIB_SVC_KEI_NO_ERR));
			}
		}

		// 課金先適用開始年月日
		if (!template.isNull(EKK0321D010CBSMsg.KAKINS_TSTAYMD_ERR))
		{
			if (!inMap.containsKey(prefix + "kakins_tstaymd_err"))
			{
				inMap.put(prefix + "kakins_tstaymd_err", template.getString(EKK0321D010CBSMsg.KAKINS_TSTAYMD_ERR));
			}
		}

		// 更新年月日時分秒(更新前)
		if (!template.isNull(EKK0321D010CBSMsg.UPD_DTM_BF_ERR))
		{
			if (!inMap.containsKey(prefix + "upd_dtm_bf_err"))
			{
				inMap.put(prefix + "upd_dtm_bf_err", template.getString(EKK0321D010CBSMsg.UPD_DTM_BF_ERR));
			}
		}

		return param;
	}
	
	/**
	 * eo光電話パック登録処理を行います。
	 * <br/>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param inMap 登録用マップ
	 * @return リクエストパラメータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite addEohtlPack(SessionHandle handle, IRequestParameterReadWrite param, HashMap inMap)
	throws Throwable
	{
		HashMap dataMap = new HashMap();
		
		// 機能コード
		dataMap.put("func_cd", "1");	// チェック＆登録
		// 処理区分
		dataMap.put("trn_div", "01");	// 登録
		// SYSID
		dataMap.put("sysid", inMap.get("sysid"));
		// サービス契約番号
		dataMap.put("svc_kei_no", inMap.get("svc_kei_no"));
		// サービス契約内訳番号
		dataMap.put("svc_kei_ucwk_no", inMap.get("svc_kei_ucwk_no"));
		// 申込明細番号
		dataMap.put("mskm_dtl_no", inMap.get("mskm_dtl_no"));
		// 起算日
		dataMap.put("kisan_ymd", inMap.get("kisan_ymd"));
		// 異動区分
		dataMap.put("ido_div", inMap.get("ido_div"));
		// パック割区分
		dataMap.put("pack_div", inMap.get("pack_div"));
		// 更新年月日時分秒（更新前）
		dataMap.put("kk0081_upd_dtm", inMap.get("kk0081_upd_dtm"));
		
		param.setData("addEohtlPackMap", dataMap);
		
		JSYbpmLog.println(JSYLogBase.EXECUTION, this.getClass(), null, "BPCON0I002",
				new String[]{"[KK2]JKKAddWribSvcKeiUtil#addEohtlPack->JKKTelSelectOpPackOperateCC#execute:START"}, "");
		
		IRequestParameterReadWrite retParam = (new JKKTelSelectOpPackOperateCC()).execute(handle, param, "addEohtlPackMap");
		
		JSYbpmLog.println(JSYLogBase.EXECUTION, this.getClass(), null, "BPCON0I002",
				new String[]{"[KK2]JKKAddWribSvcKeiUtil#addEohtlPack->JKKTelSelectOpPackOperateCC#execute:END"}, "");
		
		// 更新年月日時分秒
		inMap.put("upd_dtm", dataMap.get("upd_dtm"));

		return retParam;
	}
	
	/**
	 * eo光電話パックキャンセル処理を行います。
	 * <br/>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param inMap キャンセル用マップ
	 * @return リクエストパラメータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite cnclEohtlPack(SessionHandle handle, IRequestParameterReadWrite param, HashMap inMap)
	throws Throwable
	{
		HashMap dataMap = new HashMap();
		
		// 機能コード
		dataMap.put("func_cd", "1");	// チェック＆登録
		// 処理区分
		dataMap.put("trn_div", "02");	// 解約
		// SYSID
		dataMap.put("sysid", inMap.get("sysid"));
		// サービス契約番号
		dataMap.put("svc_kei_no", inMap.get("svc_kei_no"));
		// サービス契約内訳番号
		dataMap.put("svc_kei_ucwk_no", inMap.get("svc_kei_ucwk_no"));
		// 申込明細番号
		dataMap.put("mskm_dtl_no", inMap.get("mskm_dtl_no"));
		// サービスキャンセル理由コード
		dataMap.put("svc_cancel_rsn_cd", inMap.get("svc_cancel_rsn_cd"));
		// 起算日
		dataMap.put("kisan_ymd", inMap.get("kisan_ymd"));
		// 異動区分
		dataMap.put("ido_div", inMap.get("ido_div"));
		// パック割区分
		dataMap.put("pack_div", inMap.get("pack_div"));
		// 課金区分
		dataMap.put("kakin_div", "2");	// 非課金
		// 違約金区分
		dataMap.put("pnlty_div", "0");	// 違約金なし
		// 更新年月日時分秒（更新前）
		dataMap.put("kk0081_upd_dtm", inMap.get("kk0081_upd_dtm"));
		
		param.setData("cnclEohtlPackMap", dataMap);
		
		JSYbpmLog.println(JSYLogBase.EXECUTION, this.getClass(), null, "BPCON0I002",
				new String[]{"[KK2]JKKAddWribSvcKeiUtil#cnclEohtlPack->JKKTelSelectOpPackOperateCC#execute:START"}, "");
		
		IRequestParameterReadWrite retParam = (new JKKTelSelectOpPackOperateCC()).execute(handle, param, "cnclEohtlPackMap");
		
		JSYbpmLog.println(JSYLogBase.EXECUTION, this.getClass(), null, "BPCON0I002",
				new String[]{"[KK2]JKKAddWribSvcKeiUtil#cnclEohtlPack->JKKTelSelectOpPackOperateCC#execute:END"}, "");
		
		// 更新年月日時分秒
		inMap.put("upd_dtm", dataMap.get("upd_dtm"));
		
		return retParam;
	}
	
	/**
	 * スターチャンネルセット登録処理を行います。
	 * <br/>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param inMap 登録用マップ
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite addStarChannelSet(SessionHandle handle, IRequestParameterReadWrite param, HashMap inMap)
	throws Throwable
	{
		IRequestParameterReadWrite retParam = null;
		
		HashMap dataMap = new HashMap();
		
		// 機能コード
		dataMap.put("func_cd", "1");	// チェック＆登録
		// 処理区分
		dataMap.put("trn_div", "01");	// 登録
		// SYSID
		dataMap.put("sysid", inMap.get("sysid"));
		// サービス契約番号
		dataMap.put("svc_kei_no", inMap.get("svc_kei_no"));
		// 申込明細番号
		dataMap.put("mskm_dtl_no", inMap.get("mskm_dtl_no"));
		// 起算日
		dataMap.put("kisan_ymd", inMap.get("kisan_ymd"));
		// 利用開始希望日
		dataMap.put("use_sta_kibo_ymd", "20991231");
		// 異動区分
		dataMap.put("ido_div", inMap.get("ido_div"));
		// 更新年月日時分秒（更新前）
		dataMap.put("kk0081_upd_dtm", inMap.get("kk0081_upd_dtm"));
		
		param.setData("addStarChannelSetMap", dataMap);
		
		JSYbpmLog.println(JSYLogBase.EXECUTION, this.getClass(), null, "BPCON0I002",
				new String[]{"[KK2]JKKAddWribSvcKeiUtil#addStarChannelSet->JKKStarChannelSetwariCC#execute:START"}, "");
		
		retParam = (new JKKStarChannelSetwariCC()).execute(handle, param, "addStarChannelSetMap");
		
		JSYbpmLog.println(JSYLogBase.EXECUTION, this.getClass(), null, "BPCON0I002",
				new String[]{"[KK2]JKKAddWribSvcKeiUtil#addStarChannelSet->JKKStarChannelSetwariCC#execute:END"}, "");
		
		// 更新年月日時分秒
		inMap.put("upd_dtm", dataMap.get("upd_dtm"));

		return retParam;
	}
	
	/**
	 * スターチャンネルセットキャンセル処理を行います。
	 * <br/>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param inMap キャンセル用マップ
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite cnclStarChannelSet(SessionHandle handle, IRequestParameterReadWrite param, HashMap inMap)
	throws Throwable
	{
		IRequestParameterReadWrite retParam = null;
		
		HashMap dataMap = new HashMap();
		
		// 機能コード
		dataMap.put("func_cd", "1");	// チェック＆登録
		// 処理区分
		dataMap.put("trn_div", "02");	// キャンセル
		// SYSID
		dataMap.put("sysid", inMap.get("sysid"));
		// サービス契約番号
		dataMap.put("svc_kei_no", inMap.get("svc_kei_no"));
		// 申込明細番号
		dataMap.put("mskm_dtl_no", inMap.get("mskm_dtl_no"));
		// サービスキャンセル理由コード
		dataMap.put("svc_cancel_rsn_cd", inMap.get("svc_cancel_rsn_cd"));
		// 起算日
		dataMap.put("kisan_ymd", inMap.get("kisan_ymd"));
		// 異動区分
		dataMap.put("ido_div", inMap.get("ido_div"));
		// 更新年月日時分秒（更新前）
		dataMap.put("kk0081_upd_dtm", inMap.get("kk0081_upd_dtm"));
		
		param.setData("cnclStarChannelSetMap", dataMap);
		
		JSYbpmLog.println(JSYLogBase.EXECUTION, this.getClass(), null, "BPCON0I002",
				new String[]{"[KK2]JKKAddWribSvcKeiUtil#cnclStarChannelSet->JKKStarChannelSetwariCC#execute:START"}, "");
		
		retParam = (new JKKStarChannelSetwariCC()).execute(handle, param, "cnclStarChannelSetMap");
		
		JSYbpmLog.println(JSYLogBase.EXECUTION, this.getClass(), null, "BPCON0I002",
				new String[]{"[KK2]JKKAddWribSvcKeiUtil#cnclStarChannelSet->JKKStarChannelSetwariCC#execute:END"}, "");
		
		// 更新年月日時分秒
		inMap.put("upd_dtm", dataMap.get("upd_dtm"));
		
		return retParam;
	}
}
