/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKAdchgModifyTvCC
*   ソースファイル名：JKKAdchgModifyTvCC.java
*   作成者          ：FJ
*   日付            ：2013年02月01日
*＜機能概要＞
*   eo光テレビサービス契約登録内容の更新を行う。
*＜修正履歴＞
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00       2013/02/01   FJ          新規作成
*   v8.00.00    2014/04/28   FJ)星野     OM-2014-0001716対応
**********************************************************************/
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.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;
import com.sun.enterprise.tools.common.util.StringUtils;

import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0101A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0101A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0101C040CBSMsg;


/**
 * eo光テレビ登録内容変更ＣＣです。<p>
 * <br>
 * @author 富士通
 */
public class JKKAdchgModifyTvCC extends AbstractCommonComponent 
{
	/** SC呼び出し部品 */
	ServiceComponentRequestInvoker scCall = null;

	/**
	 * eo光テレビ登録内容変更処理です。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @exception Exceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite execute(SessionHandle handle, 
			IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		/* ユーザデータ情報 */
		HashMap parentMap = null;
		parentMap = (HashMap)param.getData(fixedText);
		
		if (StringUtils.isEmpty((String)parentMap.get("svc_kei_no")))
		{
			return param;
		}
		
		// 作業用マップ
		HashMap<String, Object> workMap = new HashMap<String, Object>();
		
		// サービス契約一意照会情報の取得
		if (!callSvcKeiIchiiShoKai(handle, param, parentMap, fixedText, workMap))
		{
			return param;
		}
		
		// 対象サービス契約情報
		getSvcKeiInfo(workMap);
		
		// サービス契約情報変更
		if(!svcKeiInfoChg(handle, param, parentMap, fixedText, workMap))
		{
			return param;
		}
		return param;
	}



	/**
	 * サービス契約一意照会情報取得処理<br>
	 * <br>
	 * @param handle
	 * @param param
	 * @param parentMap
	 * @param fixedText
	 * @param workMap
	 * @return boolean
	 * @exception Exceptionがスローされます。
	 */
	private boolean callSvcKeiIchiiShoKai(SessionHandle handle, IRequestParameterReadWrite param, 
			HashMap<String, Object> parentMap, String fixedText, HashMap<String, Object> workMap) throws Exception
	{
		// サービス契約一意照会情報の取得
		HashMap<String, Object> kk0081a010_map = getKK0081A010Map(handle, param, parentMap, fixedText);
		// 取得件数確認
		if (!getCntChk(kk0081a010_map, "EKK0081A010CBSMsg1List"))
		{
			return false;
		}
		else
		{
			// 作業マップに退避
			workMap.put("kk0081a010_map", kk0081a010_map);
			return true;
		}
	}





	/**
	 * サービス契約一意照会から対象サービス契約を取得<br>
	 * <br>
	 * @param workMap
	 * @exception Exceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	private void getSvcKeiInfo(HashMap<String, Object> workMap) throws Exception
	{
		ArrayList kk0081a010_list = null;
		// サービス契約一意照会マップの取り出し
		HashMap<String, Object> kk0081a010_map = (HashMap)workMap.get("kk0081a010_map");
		
		// 明細の取り出し
		kk0081a010_list = (ArrayList)kk0081a010_map.get("EKK0081A010CBSMsg1List");
		// サービス契約情報結果マップの取得
		HashMap kk0081a010childMap = (HashMap)kk0081a010_list.get(0);

		// サービス契約番号取得
		workMap.put("svc_kei_no", kk0081a010childMap.get("svc_kei_no"));
		// 料金グループコード
		workMap.put("prc_grp_cd", kk0081a010childMap.get("prc_grp_cd"));
		// 申込明細番号
		workMap.put("mskm_dtl_no", kk0081a010childMap.get("mskm_dtl_no"));
		// 面開発案件番号
		workMap.put("menkaihat_anken_no", kk0081a010childMap.get("menkaihat_anken_no"));
		// 提供方式契約番号
		workMap.put("tk_hoshiki_kei_no", kk0081a010childMap.get("tk_hoshiki_kei_no"));
		// サービス利用開始希望年月日
		workMap.put("svc_use_sta_kibo_ymd", kk0081a010childMap.get("svc_use_sta_kibo_ymd"));
		// ID速報書出力要否
		workMap.put("id_sokhosho_output_yh", kk0081a010childMap.get("id_sokhosho_output_yh"));
		// 審査結果コード
		workMap.put("skekka_cd", kk0081a010childMap.get("skekka_cd"));
		// 審査結果詳細コード
		workMap.put("skekka_dtl_cd", kk0081a010childMap.get("skekka_dtl_cd"));
		// 審査結果補記コード
		workMap.put("skekka_hoki_cd", kk0081a010childMap.get("skekka_hoki_cd"));
		// 審査結果送信コード
		workMap.put("skekka_send_cd", kk0081a010childMap.get("skekka_send_cd"));
		// 支払い方法継続フラグ
		workMap.put("payway_keizoku_flg", kk0081a010childMap.get("payway_keizoku_flg"));
		// 試用加入年月日
		workMap.put("ftrial_kanyu_ymd", kk0081a010childMap.get("ftrial_kanyu_ymd"));
		// 試用期間終了年月日
		workMap.put("ftrial_prd_endymd", kk0081a010childMap.get("ftrial_prd_endymd"));
		// 本加入年月日
		workMap.put("honkanyu_ymd", kk0081a010childMap.get("honkanyu_ymd"));
		// 本加入移行期限年月日
		workMap.put("honkanyu_iko_kigen_ymd", kk0081a010childMap.get("honkanyu_iko_kigen_ymd"));
		// 予約適用年月日
		workMap.put("rsv_aply_ymd", kk0081a010childMap.get("rsv_aply_ymd"));
		// 予約適用コード
		workMap.put("rsv_aply_cd", kk0081a010childMap.get("rsv_aply_cd"));
		// レター発送仕分区分
		workMap.put("letter_hasso_shiwake_div", kk0081a010childMap.get("letter_hasso_shiwake_div"));
		// サンキューレター送付先コード
		workMap.put("thnx_letter_shs_cd", kk0081a010childMap.get("thnx_letter_shs_cd"));
		// WEBオプション追加不可フラグ
		workMap.put("web_op_add_fail_flg", kk0081a010childMap.get("web_op_add_fail_flg"));
		// 変更元法人eo読替サービス契約番号
		workMap.put("chmt_hjin_eo_ykae_svkei_no", kk0081a010childMap.get("chmt_hjin_eo_ykae_svkei_no"));
		// 違約金発生コード
		workMap.put("pnlty_hassei_cd", kk0081a010childMap.get("pnlty_hassei_cd"));
		// 異動区分
		workMap.put("ido_div", kk0081a010childMap.get("ido_div"));
		// 紹介コード
		workMap.put("intr_cd", kk0081a010childMap.get("intr_cd"));
		// 異動NG状態コード
		workMap.put("ido_ng_stat_cd", kk0081a010childMap.get("ido_ng_stat_cd"));
		// 業務連絡備考
		workMap.put("work_rrk_biko", kk0081a010childMap.get("work_rrk_biko"));
		// 自動照査処理状態コード
		workMap.put("auto_shosa_tran_stat_cd", kk0081a010childMap.get("auto_shosa_tran_stat_cd"));
		// 更新年月日時分秒
		workMap.put("upd_dtm", kk0081a010childMap.get("upd_dtm"));
		// v3.00.01 2012/05/16 MOD START
		// 最終更新年月日時分秒
		workMap.put("last_upd_dtm", kk0081a010childMap.get("last_upd_dtm"));
		// v3.00.01 2012/05/16 MOD END
		// 整理番号
		workMap.put("seiri_no", kk0081a010childMap.get("seiri_no"));
	}

	/**
	 * サービス契約情報変更（サービス種別判定）<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param (I) 業務データ取得用I/F
	 * @param parentMap (I) ユーザデータ情報
	 * @param fixedText ユーザ任意文字列
	 * @param workMap
	 * @return boolean
	 * @exception Exceptionがスローされます。
	 */
	private boolean svcKeiInfoChg(SessionHandle handle, IRequestParameterReadWrite param, 
			HashMap<String, Object> parentMap, String fixedText, HashMap<String, Object> workMap) throws Exception
	{
		// 取得件数判定フラグ
		boolean cntChkFlg = true; 
		
		// サービス契約＜eo光TV＞一意照会
		HashMap<String, Object> kk0101a010_map = getKK0101A010Map(handle, param, parentMap, fixedText, workMap);
		// 取得件数判定
		cntChkFlg = getCntChk(kk0101a010_map, "EKK0101A010CBSMsg1List");
		
		if (!cntChkFlg)
		{
			return false;
		}
		else
		{
			// 作業マップに退避
			workMap.put("kk0101a010_map", kk0101a010_map);
		}
		// サービス契約＜eo光TV＞情報変更更新
		setKK0101C040Map(handle, param, parentMap, fixedText, workMap);
		
		return true;
	}
	
	/**
	 * 取得件数確認処理。<br>
	 * <br>
	 * @param map
	 * @param cbsMsgListNm
	 * @return boolean
	 * @exception Exceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	private boolean getCntChk(HashMap<String, Object> map, String cbsMsgListNm) throws Exception
	{
		ArrayList chkTrgtList = null;
		// 明細の取り出し
		chkTrgtList = (ArrayList)map.get(cbsMsgListNm);
		// 明細件数チェック
		if(0 >= chkTrgtList.size())
		{
			return false;
		}
		return true;
	}



	/**
	 * サービス契約一意照会情報の取得処理。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param (I) 業務データ取得用I/F
	 * @param parentMap (I) ユーザデータ情報
	 * @param fixedText ユーザ任意文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception Exceptionがスローされます。
	 */
	private HashMap<String, Object> getKK0081A010Map(SessionHandle handle, IRequestParameterReadWrite param, 
			HashMap<String, Object> parentMap, String fixedText) throws Exception
	{
		/* ◇上りマッピング処理 */
		// 上りマッピングの処理結果を取得するためのマップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		paramMap = editInMsgKK0081A010(param, parentMap);

		/* ◇ＳＣ呼出実行 */
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker serviceIfCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = serviceIfCall.run(paramMap, handle);

		/* ◇下りマッピング処理 */
		HashMap<String, Object> kk0081a010_map = new HashMap<String, Object>();
		kk0081a010_map = editResultRPKK0081A010(result, param, fixedText);

		return kk0081a010_map;

	}


	

	
	/**
	 * サービス契約＜eo光TV＞一意照会情報の取得処理。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param (I) 業務データ取得用I/F
	 * @param parentMap (I) ユーザデータ情報
	 * @param fixedText ユーザ任意文字列
	 * @param workMap 作業用マップ
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception Exceptionがスローされます。
	 */
	private HashMap<String, Object> getKK0101A010Map(SessionHandle handle, IRequestParameterReadWrite param, 
			HashMap<String, Object> parentMap, String fixedText, HashMap<String, Object> workMap) throws Exception
	{
		/* ◇上りマッピング処理 */
		// 上りマッピングの処理結果を取得するためのマップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		paramMap = editInMsgKK0101A010(param, workMap);

		/* ◇ＳＣ呼出実行 */
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker serviceIfCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = serviceIfCall.run(paramMap, handle);

		/* ◇下りマッピング処理 */
		HashMap<String, Object> kk0101a010_map = new HashMap<String, Object>();
		kk0101a010_map = editResultRPKK0101A010(result, param, fixedText);

		return kk0101a010_map;

	}
	

	/**
	 * サービス契約＜eo光TV＞情報変更<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param (I) 業務データ取得用I/F
	 * @param parentMap (I) ユーザデータ情報
	 * @param fixedText ユーザ任意文字列
	 * @param workMap 作業用マップ
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception Exceptionがスローされます。
	 */
	private IRequestParameterReadWrite setKK0101C040Map(SessionHandle handle, IRequestParameterReadWrite param, 
			HashMap<String, Object> parentMap, String fixedText, HashMap<String, Object> workMap) throws Exception
	{
		/* ◇上りマッピング処理 */
		// 上りマッピングの処理結果を取得するためのマップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		paramMap = editInMsgKK0101C040(param, parentMap, workMap);

		/* ◇ＳＣ呼出実行 */
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker serviceIfCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = serviceIfCall.run(paramMap, handle);

		/* ◇下りマッピング処理 */
		IRequestParameterReadWrite re_param = null;
		re_param = editResultRPKK0101c040(result, param, fixedText);

		return re_param;

	}

	/**
	 * CAANMsgに必要なデータをマッピングします。<br>
	 * サービス契約一意照会（上り）<br>
	 * @param param (I) 業務データ取得用I/F
	 * @param parentMap
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます。
	 */
	private HashMap<String, Object> editInMsgKK0081A010(IRequestParameterReadOnly param, HashMap<String, Object> parentMap)
	throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// メッセージ共通部の設定
		setCommonParamMap(param, paramMap);

		CAANMsg template = new CAANMsg(EKK0081A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0081A010CBSMsg.TEMPLATEID, "EKK0081A010");

		// 機能コード（1）
		template.set(EKK0081A010CBSMsg.FUNC_CODE, "2");

		// サービスインターフェイス共通部の設定
		setCommonTemplate(param, template);		
		
		// リクエストパラメータ.サービス契約番号 → ＫＥＹ＿サービス契約番号
		if (parentMap == null || parentMap.get("svc_kei_no") == null || "".equals(parentMap.get("svc_kei_no")))
		{
			template.setNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, (String)parentMap.get("svc_kei_no"));
		}
		
		// サービス契約一意照会マップ.ＫＥＹ＿世代登録年月日時分秒 → 空白
		template.setNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM);

		// サービス契約一意照会マップ.ＫＥＹ＿予約適用年月日 → 運用日
		template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
			
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * IRequestParameterReadWriteに必要なデータをマッピングします。<br>
	 * サービス契約一意照会（下り）<br>
	 * @param msgList (I) CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @param fixedText (I) ユーザ定義文字列
	 * @return 業務データ取得・書込用I/F
	 * @exception Exceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editResultRPKK0081A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText)
	throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null) 
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}
		
		// サービス一意照会結果マップ
		HashMap kk0081a010_map = new HashMap();
		ArrayList kk0081a010List = null;
		
		templateArray = parentTemplate.getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		kk0081a010List = (ArrayList)kk0081a010_map.get("EKK0081A010CBSMsg1List");
		
		if (kk0081a010List == null) 
		{
			kk0081a010List = new ArrayList();
		}
		
		if (templateArray != null) 
		{
			for (int i = 0; i < templateArray.length; i++) 
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= kk0081a010List.size()) 
				{
					kk0081a010List.add(new HashMap());
				}
				HashMap childMap = (HashMap)kk0081a010List.get(i);
				
				// サービス契約番号 ← サービス契約一意照会明細.サービス契約番号
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.SVC_KEI_NO))
				{
					childMap.put("svc_kei_no", null);
				}
				else
				{
					childMap.put("svc_kei_no", childTemplate.getString(EKK0081A010CBSMsg1List.SVC_KEI_NO));
				}
				
				// 整理番号 ← サービス契約一意照会明細.整理番号
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.SEIRI_NO))
				{
					childMap.put("seiri_no", null);
				}
				else
				{
					childMap.put("seiri_no", childTemplate.getString(EKK0081A010CBSMsg1List.SEIRI_NO));
				}
				
				// 料金グループコード ← サービス契約一意照会明細.料金グループコード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.PRC_GRP_CD))
				{
					childMap.put("prc_grp_cd", null);
				}
				else
				{
					childMap.put("prc_grp_cd", childTemplate.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
				}
				
				// 申込明細番号 ← サービス契約一意照会明細.申込明細番号
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.MSKM_DTL_NO))
				{
					childMap.put("mskm_dtl_no", null);
				}
				else
				{
					childMap.put("mskm_dtl_no", childTemplate.getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO));
				}
				
				// 面開発案件番号 ← サービス契約一意照会明細.面開発案件番号
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.MENKAIHAT_ANKEN_NO))
				{
					childMap.put("menkaihat_anken_no", null);
				}
				else
				{
					childMap.put("menkaihat_anken_no", childTemplate.getString(EKK0081A010CBSMsg1List.MENKAIHAT_ANKEN_NO));
				}
				
				// 提供方式契約番号 ← サービス契約一意照会明細.提供方式契約番号
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO))
				{
					childMap.put("tk_hoshiki_kei_no", null);
				}
				else
				{
					childMap.put("tk_hoshiki_kei_no", childTemplate.getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO));
				}
				
				// サービス利用開始希望年月日 ← サービス契約一意照会明細.サービス利用開始希望年月日
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.SVC_USE_STA_KIBO_YMD))
				{
					childMap.put("svc_use_sta_kibo_ymd", null);
				}
				else
				{
					childMap.put("svc_use_sta_kibo_ymd", childTemplate.getString(EKK0081A010CBSMsg1List.SVC_USE_STA_KIBO_YMD));
				}
				
				// ID速報書出力要否 ← サービス契約一意照会明細.ID速報書出力要否
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.ID_SOKHOSHO_OUTPUT_YH))
				{
					childMap.put("id_sokhosho_output_yh", null);
				}
				else
				{
					childMap.put("id_sokhosho_output_yh", childTemplate.getString(EKK0081A010CBSMsg1List.ID_SOKHOSHO_OUTPUT_YH));
				}
				
				// 審査結果コード ← サービス契約一意照会明細.審査結果コード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.SKEKKA_CD))
				{
					childMap.put("skekka_cd", null);
				}
				else
				{
					childMap.put("skekka_cd", childTemplate.getString(EKK0081A010CBSMsg1List.SKEKKA_CD));
				}
				
				// 審査結果詳細コード ← サービス契約一意照会明細.審査結果詳細コード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.SKEKKA_DTL_CD))
				{
					childMap.put("skekka_dtl_cd", null);
				}
				else
				{
					childMap.put("skekka_dtl_cd", childTemplate.getString(EKK0081A010CBSMsg1List.SKEKKA_DTL_CD));
				}
				
				// 審査結果補記コード ← サービス契約一意照会明細.審査結果補記コード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.SKEKKA_HOKI_CD))
				{
					childMap.put("skekka_hoki_cd", null);
				}
				else
				{
					childMap.put("skekka_hoki_cd", childTemplate.getString(EKK0081A010CBSMsg1List.SKEKKA_HOKI_CD));
				}
				
				// 審査結果送信コード ← サービス契約一意照会明細.審査結果送信コード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.SKEKKA_SEND_CD))
				{
					childMap.put("skekka_send_cd", null);
				}
				else
				{
					childMap.put("skekka_send_cd", childTemplate.getString(EKK0081A010CBSMsg1List.SKEKKA_SEND_CD));
				}
				
				// 支払い方法継続フラグ ← サービス契約一意照会明細.支払い方法継続フラグ
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.PAYWAY_KEIZOKU_FLG))
				{
					childMap.put("payway_keizoku_flg", null);
				}
				else
				{
					childMap.put("payway_keizoku_flg", childTemplate.getString(EKK0081A010CBSMsg1List.PAYWAY_KEIZOKU_FLG));
				}
				
				// 試用加入年月日 ← サービス契約一意照会明細.試用加入年月日
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.FTRIAL_KANYU_YMD))
				{
					childMap.put("ftrial_kanyu_ymd", null);
				}
				else
				{
					childMap.put("ftrial_kanyu_ymd", childTemplate.getString(EKK0081A010CBSMsg1List.FTRIAL_KANYU_YMD));
				}
				
				// 試用期間終了年月日 ← サービス契約一意照会明細.試用期間終了年月日
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.FTRIAL_PRD_ENDYMD))
				{
					childMap.put("ftrial_prd_endymd", null);
				}
				else
				{
					childMap.put("ftrial_prd_endymd", childTemplate.getString(EKK0081A010CBSMsg1List.FTRIAL_PRD_ENDYMD));
				}
				
				// 本加入年月日 ← サービス契約一意照会明細.本加入年月日
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.HONKANYU_YMD))
				{
					childMap.put("honkanyu_ymd", null);
				}
				else
				{
					childMap.put("honkanyu_ymd", childTemplate.getString(EKK0081A010CBSMsg1List.HONKANYU_YMD));
				}
				
				// 本加入移行期限年月日 ← サービス契約一意照会明細.本加入移行期限年月日
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.HONKANYU_IKO_KIGEN_YMD))
				{
					childMap.put("honkanyu_iko_kigen_ymd", null);
				}
				else
				{
					childMap.put("honkanyu_iko_kigen_ymd", childTemplate.getString(EKK0081A010CBSMsg1List.HONKANYU_IKO_KIGEN_YMD));
				}
				
				// 予約適用年月日 ← サービス契約一意照会明細.予約適用年月日
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.RSV_APLY_YMD))
				{
					childMap.put("rsv_aply_ymd", null);
				}
				else
				{
					childMap.put("rsv_aply_ymd", childTemplate.getString(EKK0081A010CBSMsg1List.RSV_APLY_YMD));
				}
				
				// 予約適用コード ← サービス契約一意照会明細.予約適用コード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.RSV_APLY_CD))
				{
					childMap.put("rsv_aply_cd", null);
				}
				else
				{
					childMap.put("rsv_aply_cd", childTemplate.getString(EKK0081A010CBSMsg1List.RSV_APLY_CD));
				}
				
				// レター発送仕分区分 ← サービス契約一意照会明細.レター発送仕分区分
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.LETTER_HASSO_SHIWAKE_DIV))
				{
					childMap.put("letter_hasso_shiwake_div", null);
				}
				else
				{
					childMap.put("letter_hasso_shiwake_div", childTemplate.getString(EKK0081A010CBSMsg1List.LETTER_HASSO_SHIWAKE_DIV));
				}
				
				// サンキューレター送付先コード ← サービス契約一意照会明細.サンキューレター送付先コード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.THNX_LETTER_SHS_CD))
				{
					childMap.put("thnx_letter_shs_cd", null);
				}
				else
				{
					childMap.put("thnx_letter_shs_cd", childTemplate.getString(EKK0081A010CBSMsg1List.THNX_LETTER_SHS_CD));
				}
				
				// WEBオプション追加不可フラグ ← サービス契約一意照会明細.WEBオプション追加不可フラグ
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.WEB_OP_ADD_FAIL_FLG))
				{
					childMap.put("web_op_add_fail_flg", null);
				}
				else
				{
					childMap.put("web_op_add_fail_flg", childTemplate.getString(EKK0081A010CBSMsg1List.WEB_OP_ADD_FAIL_FLG));
				}
				
				// 変更元法人eo読替サービス契約番号 ← サービス契約一意照会明細.変更元法人eo読替サービス契約番号
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.CHMT_HJIN_EO_YKAE_SVKEI_NO))
				{
					childMap.put("chmt_hjin_eo_ykae_svkei_no", null);
				}
				else
				{
					childMap.put("chmt_hjin_eo_ykae_svkei_no", childTemplate.getString(EKK0081A010CBSMsg1List.CHMT_HJIN_EO_YKAE_SVKEI_NO));
				}
				
				// 違約金発生コード ← サービス契約一意照会明細.違約金発生コード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.PNLTY_HASSEI_CD))
				{
					childMap.put("pnlty_hassei_cd", null);
				}
				else
				{
					childMap.put("pnlty_hassei_cd", childTemplate.getString(EKK0081A010CBSMsg1List.PNLTY_HASSEI_CD));
				}
				
				// 異動区分 ← サービス契約一意照会明細.異動区分
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.IDO_DIV))
				{
					childMap.put("ido_div", null);
				}
				else
				{
					childMap.put("ido_div", childTemplate.getString(EKK0081A010CBSMsg1List.IDO_DIV));
				}
				
				// 紹介コード ← サービス契約一意照会明細.紹介コード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.INTR_CD))
				{
					childMap.put("intr_cd", null);
				}
				else
				{
					childMap.put("intr_cd", childTemplate.getString(EKK0081A010CBSMsg1List.INTR_CD));
				}
				
				// 異動NG状態コード ← サービス契約一意照会明細.異動NG状態コード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.IDO_NG_STAT_CD))
				{
					childMap.put("ido_ng_stat_cd", null);
				}
				else
				{
					childMap.put("ido_ng_stat_cd", childTemplate.getString(EKK0081A010CBSMsg1List.IDO_NG_STAT_CD));
				}
				
				// 業務連絡備考 ← サービス契約一意照会明細.業務連絡備考
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.WORK_RRK_BIKO))
				{
					childMap.put("work_rrk_biko", null);
				}
				else
				{
					childMap.put("work_rrk_biko", childTemplate.getString(EKK0081A010CBSMsg1List.WORK_RRK_BIKO));
				}
				
				// リクエストパラメータ.サービス契約一意照会明細.自動照査処理状態コード ← サービス契約一意照会明細.自動照査処理状態コード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.AUTO_SHOSA_TRAN_STAT_CD))
				{
					childMap.put("auto_shosa_tran_stat_cd", null);
				}
				else
				{
					childMap.put("auto_shosa_tran_stat_cd", childTemplate.getString(EKK0081A010CBSMsg1List.AUTO_SHOSA_TRAN_STAT_CD));
				}
				
				// リクエストパラメータ.サービス契約一意照会明細.更新年月日時分秒 ← サービス契約一意照会明細.更新年月日時分秒
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.UPD_DTM))
				{
					childMap.put("upd_dtm", null);
				}
				else
				{
					childMap.put("upd_dtm", childTemplate.getString(EKK0081A010CBSMsg1List.UPD_DTM));
				}
				// v3.00.01 2012/05/16 ADD START
				// 最終更新年月日時分秒 ← サービス契約一意照会明細.最終更新年月日時分秒
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.LAST_UPD_DTM))
				{
					childMap.put("last_upd_dtm", null);
				}
				else
				{
					childMap.put("last_upd_dtm", childTemplate.getString(EKK0081A010CBSMsg1List.LAST_UPD_DTM));
				}
				// v3.00.01 2012/05/16 ADD END
			}
		}
		kk0081a010_map.put("EKK0081A010CBSMsg1List", kk0081a010List);

		
        // エラー情報の設定
		IRequestParameterReadWrite err_param = null;
		err_param = editErrorInfoKK0081A010(param, templates, (Integer)return_code, fixedText);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)err_param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		err_param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		/* ◇処理結果の判定*/
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = return_code.toString();
		int status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);

		// 異常の場合、SCCallExceptionを生成してスローする
		if (!("0".equals(rtnCode) && 0 == status))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
		return kk0081a010_map;
	}

	/**
	 * IRequestParameterReadWriteにエラー情報をマッピングする。<br>
	 * サービス契約一意照会（エラー情報）<br>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @exception RequestParameterExceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoKK0081A010(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws RequestParameterException
	{
		
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);
		if (returnCode != 0) 
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) 
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) 
		{
			bpStatus = -1;
		} 
		else 
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) 
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null) 
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}
		// リクエストパラメータ.サービス契約番号 → サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("key_svc_kei_no_err"))
			{
				inMap.put("key_svc_kei_no_err", template.getString(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}
		// 世代登録年月日時分 のエラー情報返却
		if (!template.isNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM_ERR))
		{
			if (!inMap.containsKey("key_gene_add_dtm_err"))
			{
				inMap.put("key_gene_add_dtm_err", template.getString(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
			}
		}
		// 予約適用年月日 のエラー情報返却
		if (!template.isNull(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR))
		{
			if (!inMap.containsKey("key_rsv_aply_ymd_err"))
			{
				inMap.put("key_rsv_aply_ymd_err", template.getString(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR));
			}
		}
		return param;
	}

	
	/**
	 * CAANMsgに必要なデータをマッピングします。<br>
	 * サービス契約＜eo光TV＞一意照会（上り）<br>
	 * @param param (I) 業務データ取得用I/F
	 * @param workMap
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます。
	 */
	private HashMap<String, Object> editInMsgKK0101A010(IRequestParameterReadOnly param, HashMap<String, Object> workMap)
	throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// メッセージ共通部の設定
		setCommonParamMap(param, paramMap);

		CAANMsg template = new CAANMsg(EKK0101A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0101A010CBSMsg.TEMPLATEID, "EKK0101A010");

		// 機能コード（1）
		template.set(EKK0101A010CBSMsg.FUNC_CODE, "2");

		// サービスインターフェイス共通部の設定
		setCommonTemplate(param, template);		
		
		// リクエストパラメータ.サービス契約番号 → ＫＥＹ＿サービス契約番号
		if (workMap == null || workMap.get("svc_kei_no") == null || "".equals(workMap.get("svc_kei_no")))
		{
			template.setNull(EKK0101A010CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0101A010CBSMsg.KEY_SVC_KEI_NO, (String)workMap.get("svc_kei_no"));
		}
		
		//  空白 → サービス契約＜eo光TV＞一意照会マップ.ＫＥＹ＿世代登録年月日時分秒
		template.setNull(EKK0101A010CBSMsg.KEY_GENE_ADD_DTM);
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * IRequestParameterReadWriteに必要なデータをマッピングします。<br>
	 * サービス契約＜eo光TV＞一意照会（下り）<br>
	 * @param msgList (I) CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @param fixedText (I) ユーザ定義文字列
	 * @return 業務データ取得・書込用I/F
	 * @exception Exceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editResultRPKK0101A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText)
	throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null) 
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}
		
		// サービス一意照会結果マップ
		HashMap kk0101a010_map = new HashMap();
		ArrayList kk0101a010List = null;
		
		templateArray = parentTemplate.getCAANMsgList(EKK0101A010CBSMsg.EKK0101A010CBSMSG1LIST);
		kk0101a010List = (ArrayList)kk0101a010_map.get("EKK0101A010CBSMsg1List");
		
		if (kk0101a010List == null) 
		{
			kk0101a010List = new ArrayList();
		}
		
		if (templateArray != null) 
		{
			for (int i = 0; i < templateArray.length; i++) 
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= kk0101a010List.size()) 
				{
					kk0101a010List.add(new HashMap());
				}
				HashMap childMap = (HashMap)kk0101a010List.get(i);
				
				// サービス契約番号 ← サービス契約＜eo光TV＞一意照会明細.サービス契約番号
				if (childTemplate.isNull(EKK0101A010CBSMsg1List.SVC_KEI_NO))
				{
					childMap.put("svc_kei_no", null);
				}
				else
				{
					childMap.put("svc_kei_no", childTemplate.getString(EKK0101A010CBSMsg1List.SVC_KEI_NO));
				}
				
				// 電波障害案件番号 ← サービス契約＜eo光TV＞一意照会明細.電波障害案件番号
				if (childTemplate.isNull(EKK0101A010CBSMsg1List.DMPS_ANKEN_NO))
				{
					childMap.put("dmps_anken_no", null);
				}
				else
				{
					childMap.put("dmps_anken_no", childTemplate.getString(EKK0101A010CBSMsg1List.DMPS_ANKEN_NO));
				}
				
				// 再送信提供サービス種別コード ← サービス契約＜eo光TV＞一意照会明細.再送信提供サービス種別コード
				if (childTemplate.isNull(EKK0101A010CBSMsg1List.RE_SEND_TK_SVC_SBT_CD))
				{
					childMap.put("re_send_tk_svc_sbt_cd", null);
				}
				else
				{
					childMap.put("re_send_tk_svc_sbt_cd", childTemplate.getString(EKK0101A010CBSMsg1List.RE_SEND_TK_SVC_SBT_CD));
				}
				
				// TV営業地区コード← サービス契約＜eo光TV＞一意照会明細.TV営業地区コード
				if (childTemplate.isNull(EKK0101A010CBSMsg1List.TV_BUSINESS_CHIK_CD))
				{
					childMap.put("tv_business_chik_cd", null);
				}
				else
				{
					childMap.put("tv_business_chik_cd", childTemplate.getString(EKK0101A010CBSMsg1List.TV_BUSINESS_CHIK_CD));
				}
				
				// TV営業担当ユーザーID ← サービス契約＜eo光TV＞一意照会明細.TV営業担当ユーザーID
				if (childTemplate.isNull(EKK0101A010CBSMsg1List.TV_BUSINESS_TNT_USER_ID))
				{
					childMap.put("tv_business_tnt_user_id", null);
				}
				else
				{
					childMap.put("tv_business_tnt_user_id", childTemplate.getString(EKK0101A010CBSMsg1List.TV_BUSINESS_TNT_USER_ID));
				}
				
				// バンドル情報コード ← サービス契約＜eo光TV＞一意照会明細.バンドル情報コード
				if (childTemplate.isNull(EKK0101A010CBSMsg1List.BUNDLE_IF_CD))
				{
					childMap.put("bundle_if_cd", null);
				}
				else
				{
					childMap.put("bundle_if_cd", childTemplate.getString(EKK0101A010CBSMsg1List.BUNDLE_IF_CD));
				}
			}
		}
		kk0101a010_map.put("EKK0101A010CBSMsg1List", kk0101a010List);

		
        // エラー情報の設定
		IRequestParameterReadWrite err_param = null;
		err_param = editErrorInfoKK0101A010(param, templates, (Integer)return_code, fixedText);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)err_param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		err_param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		/* ◇処理結果の判定*/
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = return_code.toString();
		int status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);

		// 異常の場合、SCCallExceptionを生成してスローする
		if (!("0".equals(rtnCode) && 0 == status))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
		return kk0101a010_map;
	}

	/**
	 * IRequestParameterReadWriteにエラー情報をマッピングする。<br>
	 * サービス契約＜eo光TV＞一意照会（エラー情報）<br>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @exception RequestParameterExceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoKK0101A010(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws RequestParameterException
	{
		
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0101A010CBSMsg.STATUS);
		if (returnCode != 0) 
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) 
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) 
		{
			bpStatus = -1;
		} 
		else 
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) 
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null) 
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}
		// リクエストパラメータ.サービス契約番号 → サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0101A010CBSMsg.KEY_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("key_svc_kei_no_err"))
			{
				inMap.put("key_svc_kei_no_err", template.getString(EKK0101A010CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}
		return param;
	}

	
	/**
	 * CAANMsgに必要なデータをマッピングします。<br>
	 * サービス契約＜eo光TV＞情報変更（上り）<br>
	 * @param param (I) 業務データ取得用I/F
	 * @param parentMap
	 * @param workMap
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsgKK0101C040(IRequestParameterReadOnly param, 
			HashMap<String, Object> parentMap, HashMap<String, Object> workMap)
	throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// メッセージ共通部の設定
		setCommonParamMap(param, paramMap);

		CAANMsg template = new CAANMsg(EKK0101C040CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0101C040CBSMsg.TEMPLATEID, "EKK0101C040");

		// 機能コード（1）
		template.set(EKK0101C040CBSMsg.FUNC_CODE, "1");

		// サービスインターフェイス共通部の設定
		setCommonTemplate(param, template);
		
		// サービス契約＜eo光TV＞一意照会明細の取り出し
		ArrayList kk0101a010_list = null;
		HashMap<String, Object> kk0101a010_map = (HashMap)workMap.get("kk0101a010_map");
		kk0101a010_list = (ArrayList)kk0101a010_map.get("EKK0101A010CBSMsg1List");
		HashMap param_map = (HashMap)kk0101a010_list.get(0);
		
		// サービス契約一意照会.サービス契約番号 → サービス契約＜eo光TV＞情報変更.サービス契約番号
		if (workMap == null || workMap.get("svc_kei_no") == null || "".equals(workMap.get("svc_kei_no")))
		{
			template.setNull(EKK0101C040CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.SVC_KEI_NO, (String)workMap.get("svc_kei_no"));
		}
		
// 品質強化IT障害対応 20121225 星野 ADD START
		// 入力.申込明細番号 → サービス契約＜eo光TV＞情報変更.申込明細番号
		if (parentMap == null || parentMap.get("mskm_dtl_no_tv") == null || "".equals(parentMap.get("mskm_dtl_no_tv"))){
// 品質強化IT障害対応 20121225 星野 ADD END
			
			// .サービス契約一意照会明細.申込明細番号 → サービス契約＜eo光TV＞情報変更.申込明細番号
			if (workMap == null || workMap.get("mskm_dtl_no") == null || "".equals(workMap.get("mskm_dtl_no")))
			{
				template.setNull(EKK0101C040CBSMsg.MSKM_DTL_NO);
			}
			else
			{
				template.set(EKK0101C040CBSMsg.MSKM_DTL_NO, (String)workMap.get("mskm_dtl_no"));
			}
		
// 品質強化IT障害対応 20121225 星野 ADD START
		}
		else
		{
			template.set(EKK0101C040CBSMsg.MSKM_DTL_NO, (String)parentMap.get("mskm_dtl_no_tv"));
		}
// 品質強化IT障害対応 20121225 星野 ADD END
		
		// .サービス契約一意照会明細.支払い方法継続フラグ → サービス契約＜eo光TV＞情報変更.支払い方法継続フラグ
		if (workMap == null || workMap.get("payway_keizoku_flg") == null || "".equals(workMap.get("payway_keizoku_flg")))
		{
			template.setNull(EKK0101C040CBSMsg.PAYWAY_KEIZOKU_FLG);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.PAYWAY_KEIZOKU_FLG, (String)workMap.get("payway_keizoku_flg"));
		}
		// .サービス契約一意照会明細.ＩＤ速報書出力要否 → サービス契約＜eo光TV＞情報変更.ＩＤ速報書出力要否
		if (workMap == null || workMap.get("id_sokhosho_output_yh") == null || "".equals(workMap.get("id_sokhosho_output_yh")))
		{
			template.setNull(EKK0101C040CBSMsg.ID_SOKHOSHO_OUTPUT_YH);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.ID_SOKHOSHO_OUTPUT_YH, (String)workMap.get("id_sokhosho_output_yh"));
		}
		// .サービス契約一意照会明細.レター発送仕分区分 → サービス契約＜eo光TV＞情報変更.レター発送仕分区分
		if (workMap == null || workMap.get("letter_hasso_shiwake_div") == null || "".equals(workMap.get("letter_hasso_shiwake_div")))
		{
			template.setNull(EKK0101C040CBSMsg.LETTER_HASSO_SHIWAKE_DIV);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.LETTER_HASSO_SHIWAKE_DIV, (String)workMap.get("letter_hasso_shiwake_div"));
		}
		// .サービス契約一意照会明細.審査結果コード → サービス契約＜eo光TV＞情報変更.審査結果コード
		if (workMap == null || workMap.get("skekka_cd") == null || "".equals(workMap.get("skekka_cd")))
		{
			template.setNull(EKK0101C040CBSMsg.SKEKKA_CD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.SKEKKA_CD, (String)workMap.get("skekka_cd"));
		}
		// .サービス契約一意照会明細.審査結果詳細コード → サービス契約＜eo光TV＞情報変更.審査結果詳細コード
		if (workMap == null || workMap.get("skekka_dtl_cd") == null || "".equals(workMap.get("skekka_dtl_cd")))
		{
			template.setNull(EKK0101C040CBSMsg.SKEKKA_DTL_CD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.SKEKKA_DTL_CD, (String)workMap.get("skekka_dtl_cd"));
		}
		// .サービス契約一意照会明細.審査結果補記コード → サービス契約＜eo光TV＞情報変更.審査結果補記コード
		if (workMap == null || workMap.get("skekka_hoki_cd") == null || "".equals(workMap.get("skekka_hoki_cd")))
		{
			template.setNull(EKK0101C040CBSMsg.SKEKKA_HOKI_CD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.SKEKKA_HOKI_CD, (String)workMap.get("skekka_hoki_cd"));
		}
		// .サービス契約一意照会明細.審査結果送信コード → サービス契約＜eo光TV＞情報変更.審査結果送信コード
		if (workMap == null || workMap.get("skekka_send_cd") == null || "".equals(workMap.get("skekka_send_cd")))
		{
			template.setNull(EKK0101C040CBSMsg.SKEKKA_SEND_CD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.SKEKKA_SEND_CD, (String)workMap.get("skekka_send_cd"));
		}
		// .サービス契約一意照会明細.違約金発生コード → サービス契約＜eo光TV＞情報変更.違約金発生コード
		if (workMap == null || workMap.get("pnlty_hassei_cd") == null || "".equals(workMap.get("pnlty_hassei_cd")))
		{
			template.setNull(EKK0101C040CBSMsg.PNLTY_HASSEI_CD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.PNLTY_HASSEI_CD, (String)workMap.get("pnlty_hassei_cd"));
		}
		
// 品質強化IT障害対応 20121225 星野 ADD START
		// 入力.申込明細番号 → サービス契約＜eo光TV＞情報変更.申込明細番号
		if (parentMap == null || parentMap.get("ido_div") == null || "".equals(parentMap.get("ido_div"))){
// 品質強化IT障害対応 20121225 星野 ADD END
			
			// .サービス契約一意照会明細.異動区分 → サービス契約＜eo光TV＞情報変更.異動区分
			if (workMap == null || workMap.get("ido_div") == null || "".equals(workMap.get("ido_div")))
			{
				template.setNull(EKK0101C040CBSMsg.IDO_DIV);
			}
			else
			{
				template.set(EKK0101C040CBSMsg.IDO_DIV, (String)workMap.get("ido_div"));
			}
		
// 品質強化IT障害対応 20121225 星野 ADD START
		}
		else
		{
			template.set(EKK0101C040CBSMsg.IDO_DIV, (String)parentMap.get("ido_div"));
		}
// 品質強化IT障害対応 20121225 星野 ADD END
		
		// .サービス契約一意照会明細.紹介コード → サービス契約＜eo光TV＞情報変更.紹介コード
		if (workMap == null || workMap.get("intr_cd") == null || "".equals(workMap.get("intr_cd")))
		{
			template.setNull(EKK0101C040CBSMsg.INTR_CD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.INTR_CD, (String)workMap.get("intr_cd"));
		}
		// .サービス契約一意照会明細.異動ＮＧ状態コード → サービス契約＜eo光TV＞情報変更.異動ＮＧ状態コード
		if (workMap == null || workMap.get("ido_ng_stat_cd") == null || "".equals(workMap.get("ido_ng_stat_cd")))
		{
			template.setNull(EKK0101C040CBSMsg.IDO_NG_STAT_CD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.IDO_NG_STAT_CD, (String)workMap.get("ido_ng_stat_cd"));
		}
		// .サービス契約一意照会明細.業務連絡備考 → サービス契約＜eo光TV＞情報変更.業務連絡備考
		if (workMap == null || workMap.get("work_rrk_biko") == null || "".equals(workMap.get("work_rrk_biko")))
		{
			template.setNull(EKK0101C040CBSMsg.WORK_RRK_BIKO);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.WORK_RRK_BIKO, (String)workMap.get("work_rrk_biko"));
		}
		// .サービス契約一意照会明細.自動照査処理状態コード → サービス契約＜eo光TV＞情報変更.自動照査処理状態コード
		if (workMap == null || workMap.get("auto_shosa_tran_stat_cd") == null || "".equals(workMap.get("auto_shosa_tran_stat_cd")))
		{
			template.setNull(EKK0101C040CBSMsg.AUTO_SHOSA_TRAN_STAT_CD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.AUTO_SHOSA_TRAN_STAT_CD, (String)workMap.get("auto_shosa_tran_stat_cd"));
		}
		// .サービス契約一意照会明細.面開発案件番号 → サービス契約＜eo光TV＞情報変更.面開発案件番号
		if (workMap == null || workMap.get("menkaihat_anken_no") == null || "".equals(workMap.get("menkaihat_anken_no")))
		{
			template.setNull(EKK0101C040CBSMsg.MENKAIHAT_ANKEN_NO);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.MENKAIHAT_ANKEN_NO, (String)workMap.get("menkaihat_anken_no"));
		}
		// .サービス契約一意照会明細.試用加入年月日 → サービス契約＜eo光TV＞情報変更.試用加入年月日
		if (workMap == null || workMap.get("ftrial_kanyu_ymd") == null || "".equals(workMap.get("ftrial_kanyu_ymd")))
		{
			template.setNull(EKK0101C040CBSMsg.FTRIAL_KANYU_YMD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.FTRIAL_KANYU_YMD, (String)workMap.get("ftrial_kanyu_ymd"));
		}
		// .サービス契約一意照会明細.試用期間終了年月日 → サービス契約＜eo光TV＞情報変更.試用期間終了年月日
		if (workMap == null || workMap.get("ftrial_prd_endymd") == null || "".equals(workMap.get("ftrial_prd_endymd")))
		{
			template.setNull(EKK0101C040CBSMsg.FTRIAL_PRD_ENDYMD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.FTRIAL_PRD_ENDYMD, (String)workMap.get("ftrial_prd_endymd"));
		}
		// .サービス契約一意照会明細.本加入年月日 → サービス契約＜eo光TV＞情報変更.本加入年月日
		if (workMap == null || workMap.get("honkanyu_ymd") == null || "".equals(workMap.get("honkanyu_ymd")))
		{
			template.setNull(EKK0101C040CBSMsg.HONKANYU_YMD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.HONKANYU_YMD, (String)workMap.get("honkanyu_ymd"));
		}
		// .サービス契約一意照会明細.本加入移行期限年月日 → サービス契約＜eo光TV＞情報変更.本加入移行期限年月日
		if (workMap == null || workMap.get("honkanyu_iko_kigen_ymd") == null || "".equals(workMap.get("honkanyu_iko_kigen_ymd")))
		{
			template.setNull(EKK0101C040CBSMsg.HONKANYU_IKO_KIGEN_YMD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.HONKANYU_IKO_KIGEN_YMD, (String)workMap.get("honkanyu_iko_kigen_ymd"));
		}
		// .サービス契約一意照会明細.サンキューレター送付先コード → サービス契約＜eo光TV＞情報変更.サンキューレター送付先コード
		if (workMap == null || workMap.get("thnx_letter_shs_cd") == null || "".equals(workMap.get("thnx_letter_shs_cd")))
		{
			template.setNull(EKK0101C040CBSMsg.THNX_LETTER_SHS_CD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.THNX_LETTER_SHS_CD, (String)workMap.get("thnx_letter_shs_cd"));
		}
		// .サービス契約一意照会明細.WEBオプション追加不可フラグ → サービス契約＜eo光TV＞情報変更.WEBオプション追加不可フラグ
		if (workMap == null || workMap.get("web_op_add_fail_flg") == null || "".equals(workMap.get("web_op_add_fail_flg")))
		{
			template.setNull(EKK0101C040CBSMsg.WEB_OP_ADD_FAIL_FLG);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.WEB_OP_ADD_FAIL_FLG, (String)workMap.get("web_op_add_fail_flg"));
		}
		// .サービス契約一意照会明細.提供方式契約番号 → サービス契約＜eo光TV＞情報変更.提供方式契約番号
		if (workMap == null || workMap.get("tk_hoshiki_kei_no") == null || "".equals(workMap.get("tk_hoshiki_kei_no")))
		{
			template.setNull(EKK0101C040CBSMsg.TK_HOSHIKI_KEI_NO);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.TK_HOSHIKI_KEI_NO, (String)workMap.get("tk_hoshiki_kei_no"));
		}
		// .サービス契約一意照会明細.サービス利用開始希望年月日 → サービス契約＜eo光TV＞情報変更.サービス利用開始希望年月日
		if (workMap == null || workMap.get("svc_use_sta_kibo_ymd") == null || "".equals(workMap.get("svc_use_sta_kibo_ymd")))
		{
			template.setNull(EKK0101C040CBSMsg.SVC_USE_STA_KIBO_YMD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.SVC_USE_STA_KIBO_YMD, (String)workMap.get("svc_use_sta_kibo_ymd"));
		}
		
		// 入力.電波障害案件番号 → サービス契約＜eo光TV＞情報変更.電波障害案件番号
		if (parentMap == null || parentMap.get("dmps_anken_no") == null || "".equals(parentMap.get("dmps_anken_no"))){
// OM-2014-0001716対応 20140501 星野 DEL START
//			// .サービス契約一意照会明細.電波障害案件番号 → サービス契約＜eo光TV＞情報変更.電波障害案件番号
//			if (param_map == null || param_map.get("dmps_anken_no") == null || "".equals(param_map.get("dmps_anken_no")))
//			{
// OM-2014-0001716対応 20140501 星野 DEL END
			
			template.setNull(EKK0101C040CBSMsg.DMPS_ANKEN_NO);
			
// OM-2014-0001716対応 20140501 星野 DEL START
//			}
//			else
//			{
//				template.set(EKK0101C040CBSMsg.DMPS_ANKEN_NO, (String)param_map.get("dmps_anken_no"));
//			}
// OM-2014-0001716対応 20140501 星野 DEL END
		}
		else
		{
			template.set(EKK0101C040CBSMsg.DMPS_ANKEN_NO, (String)parentMap.get("dmps_anken_no"));
		}

		// 入力.電波障害案件番号 → サービス契約＜eo光TV＞情報変更.電波障害案件番号
		if (parentMap == null || parentMap.get("re_send_tk_svc_sbt_cd") == null || "".equals(parentMap.get("re_send_tk_svc_sbt_cd"))){
// OM-2014-0001716対応 20140501 星野 DEL START
//			// .サービス契約一意照会明細.再送信提供サービス種別コード → サービス契約＜eo光TV＞情報変更.再送信提供サービス種別コード
//			if (param_map == null || param_map.get("re_send_tk_svc_sbt_cd") == null || "".equals(param_map.get("re_send_tk_svc_sbt_cd")))
//			{
// OM-2014-0001716対応 20140501 星野 DEL END
			
			template.setNull(EKK0101C040CBSMsg.RE_SEND_TK_SVC_SBT_CD);
			
// OM-2014-0001716対応 20140501 星野 DEL START
//			}
//			else
//			{
//				template.set(EKK0101C040CBSMsg.RE_SEND_TK_SVC_SBT_CD, (String)param_map.get("re_send_tk_svc_sbt_cd"));
//			}
// OM-2014-0001716対応 20140501 星野 DEL END
		}
		else
		{
			template.set(EKK0101C040CBSMsg.RE_SEND_TK_SVC_SBT_CD, (String)parentMap.get("re_send_tk_svc_sbt_cd"));
		}
		
		// .サービス契約一意照会明細.TV営業地区コード → サービス契約＜eo光TV＞情報変更.TV営業地区コード
		if (param_map == null || param_map.get("tv_business_chik_cd") == null || "".equals(param_map.get("tv_business_chik_cd")))
		{
			template.setNull(EKK0101C040CBSMsg.TV_BUSINESS_CHIK_CD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.TV_BUSINESS_CHIK_CD, (String)param_map.get("tv_business_chik_cd"));
		}
		// .サービス契約一意照会明細.TV営業担当ユーザーID → サービス契約＜eo光TV＞情報変更.TV営業担当ユーザーID
		if (param_map == null || param_map.get("tv_business_tnt_user_id") == null || "".equals(param_map.get("tv_business_tnt_user_id")))
		{
			template.setNull(EKK0101C040CBSMsg.TV_BUSINESS_TNT_USER_ID);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.TV_BUSINESS_TNT_USER_ID, (String)param_map.get("tv_business_tnt_user_id"));
		}
		// .サービス契約一意照会明細.バンドル情報コード → サービス契約＜eo光TV＞情報変更.バンドル情報コード
		if (param_map == null || param_map.get("bundle_if_cd") == null || "".equals(param_map.get("bundle_if_cd")))
		{
			template.setNull(EKK0101C040CBSMsg.BUNDLE_IF_CD);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.BUNDLE_IF_CD, (String)param_map.get("bundle_if_cd"));
		}
		// v3.00.01 2012/05/16 MOD START
		// .サービス契約一意照会明細.更新年月日時分秒 → サービス契約＜eo光TV＞情報変更.更新年月日時分秒（更新前）
//		if (workMap == null || workMap.get("upd_dtm") == null || "".equals(workMap.get("upd_dtm")))
//		{
//			template.setNull(EKK0101C040CBSMsg.UPD_DTM_BF);
//		}
//		else
//		{
//			template.set(EKK0101C040CBSMsg.UPD_DTM_BF, (String)workMap.get("upd_dtm"));
//		}
		// .サービス契約一意照会明細.最終更新年月日時分秒 → サービス契約＜eo光TV＞情報変更.更新年月日時分秒（更新前）
		if (workMap == null || workMap.get("last_upd_dtm") == null || "".equals(workMap.get("last_upd_dtm")))
		{
			template.setNull(EKK0101C040CBSMsg.UPD_DTM_BF);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.UPD_DTM_BF, (String)workMap.get("last_upd_dtm"));
		}
		// v3.00.01 2012/05/16 MOD END
		
		// サービス契約一意照会.整理番号 → 整理番号
		if (workMap.get("seiri_no") == null || "".equals(workMap.get("seiri_no")))
		{
			template.setNull(EKK0101C040CBSMsg.SEIRI_NO);
		}
		else
		{
			template.set(EKK0101C040CBSMsg.SEIRI_NO, workMap.get("seiri_no"));
		}
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * IRequestParameterReadWriteに必要なデータをマッピングします。<br>
	 * サービス契約＜eo光TV＞情報変更（下り）<br>
	 * @param msgList (I) CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @param fixedText (I) ユーザ定義文字列
	 * @return 業務データ取得・書込用I/F
	 * @exception Exceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRPKK0101c040(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText)
	throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null) 
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}
		
		if (dataList == null) 
		{
			dataList = new ArrayList();
		}
		
        // エラー情報の設定
		IRequestParameterReadWrite err_param = null;
		err_param = editErrorInfoKK0101C040(param, templates, (Integer)return_code, fixedText);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)err_param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		err_param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		/* ◇処理結果の判定*/
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = return_code.toString();
		int status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);

		// 異常の場合、SCCallExceptionを生成してスローする
		if (!("0".equals(rtnCode) && 0 == status))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
		return param;
	}

	/**
	 * IRequestParameterReadWriteにエラー情報をマッピングする。<br>
	 * サービス契約＜eo光TV＞情報変更（エラー情報）<br>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @exception RequestParameterExceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoKK0101C040(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws RequestParameterException
	{
		
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0101C040CBSMsg.STATUS);
		if (returnCode != 0) 
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) 
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) 
		{
			bpStatus = -1;
		} 
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) 
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null) 
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}
		// サービス契約情報変更.サービス契約番号 → サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_no_err"))
			{
				inMap.put("svc_kei_no_err", template.getString(EKK0101C040CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// .サービス契約一意照会明細.申込明細番号 → 申込明細番号 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.MSKM_DTL_NO_ERR))
		{
			if (!inMap.containsKey("mskm_dtl_no_err"))
			{
				inMap.put("mskm_dtl_no_err", template.getString(EKK0101C040CBSMsg.MSKM_DTL_NO_ERR));
			}
		}
		// .サービス契約一意照会明細.ＩＤ速報書出力要否 → ＩＤ速報書出力要否 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.ID_SOKHOSHO_OUTPUT_YH_ERR))
		{
			if (!inMap.containsKey("id_sokhosho_output_yh_err"))
			{
				inMap.put("id_sokhosho_output_yh_err", template.getString(EKK0101C040CBSMsg.ID_SOKHOSHO_OUTPUT_YH_ERR));
			}
		}
		// .サービス契約一意照会明細.審査結果コード → 審査結果コード のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.SKEKKA_CD_ERR))
		{
			if (!inMap.containsKey("skekka_cd_err"))
			{
				inMap.put("skekka_cd_err", template.getString(EKK0101C040CBSMsg.SKEKKA_CD_ERR));
			}
		}
		// .サービス契約一意照会明細.審査結果詳細コード → 審査結果詳細コード のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.SKEKKA_DTL_CD_ERR))
		{
			if (!inMap.containsKey("skekka_dtl_cd_err"))
			{
				inMap.put("skekka_dtl_cd_err", template.getString(EKK0101C040CBSMsg.SKEKKA_DTL_CD_ERR));
			}
		}
		// .サービス契約一意照会明細.審査結果補記コード → 審査結果補記コード のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.SKEKKA_HOKI_CD_ERR))
		{
			if (!inMap.containsKey("skekka_hoki_cd_err"))
			{
				inMap.put("skekka_hoki_cd_err", template.getString(EKK0101C040CBSMsg.SKEKKA_HOKI_CD_ERR));
			}
		}
		// .サービス契約一意照会明細.審査結果送信コード → 審査結果送信コード のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.SKEKKA_SEND_CD_ERR))
		{
			if (!inMap.containsKey("skekka_send_cd_err"))
			{
				inMap.put("skekka_send_cd_err", template.getString(EKK0101C040CBSMsg.SKEKKA_SEND_CD_ERR));
			}
		}
		// .サービス契約一意照会明細.支払い方法継続フラグ → 支払い方法継続フラグ のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.PAYWAY_KEIZOKU_FLG_ERR))
		{
			if (!inMap.containsKey("payway_keizoku_flg_err"))
			{
				inMap.put("payway_keizoku_flg_err", template.getString(EKK0101C040CBSMsg.PAYWAY_KEIZOKU_FLG_ERR));
			}
		}
		// .サービス契約一意照会明細.レター発送仕分区分 → レター発送仕分区分 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.LETTER_HASSO_SHIWAKE_DIV_ERR))
		{
			if (!inMap.containsKey("letter_hasso_shiwake_div_err"))
			{
				inMap.put("letter_hasso_shiwake_div_err", template.getString(EKK0101C040CBSMsg.LETTER_HASSO_SHIWAKE_DIV_ERR));
			}
		}
		// .サービス契約一意照会明細.違約金発生コード → 違約金発生コード のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.PNLTY_HASSEI_CD_ERR))
		{
			if (!inMap.containsKey("pnlty_hassei_cd_err"))
			{
				inMap.put("pnlty_hassei_cd_err", template.getString(EKK0101C040CBSMsg.PNLTY_HASSEI_CD_ERR));
			}
		}
		// .サービス契約一意照会明細.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.IDO_DIV_ERR))
		{
			if (!inMap.containsKey("ido_div_err"))
			{
				inMap.put("ido_div_err", template.getString(EKK0101C040CBSMsg.IDO_DIV_ERR));
			}
		}
		// .サービス契約一意照会明細.紹介コード → 紹介コード のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.INTR_CD_ERR))
		{
			if (!inMap.containsKey("intr_cd_err"))
			{
				inMap.put("intr_cd_err", template.getString(EKK0101C040CBSMsg.INTR_CD_ERR));
			}
		}
		// .サービス契約一意照会明細.異動ＮＧ状態コード → 異動ＮＧ状態コード のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.IDO_NG_STAT_CD_ERR))
		{
			if (!inMap.containsKey("ido_ng_stat_cd_err"))
			{
				inMap.put("ido_ng_stat_cd_err", template.getString(EKK0101C040CBSMsg.IDO_NG_STAT_CD_ERR));
			}
		}
		// .サービス契約一意照会明細.業務連絡備考 → 業務連絡備考 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.WORK_RRK_BIKO_ERR))
		{
			if (!inMap.containsKey("work_rrk_biko_err"))
			{
				inMap.put("work_rrk_biko_err", template.getString(EKK0101C040CBSMsg.WORK_RRK_BIKO_ERR));
			}
		}
		// .サービス契約一意照会明細.自動照査処理状態コード → 自動照査処理状態コード のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.AUTO_SHOSA_TRAN_STAT_CD_ERR))
		{
			if (!inMap.containsKey("auto_shosa_tran_stat_cd_err"))
			{
				inMap.put("auto_shosa_tran_stat_cd_err", template.getString(EKK0101C040CBSMsg.AUTO_SHOSA_TRAN_STAT_CD_ERR));
			}
		}
		// .サービス契約一意照会明細.面開発案件番号→ 面開発案件番号 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.MENKAIHAT_ANKEN_NO_ERR))
		{
			if (!inMap.containsKey("menkaihat_anken_no_err"))
			{
				inMap.put("menkaihat_anken_no_err", template.getString(EKK0101C040CBSMsg.MENKAIHAT_ANKEN_NO_ERR));
			}
		}
		// .サービス契約一意照会明細.試用加入年月日 → 試用加入年月日 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.FTRIAL_KANYU_YMD_ERR))
		{
			if (!inMap.containsKey("ftrial_kanyu_ymd"))
			{
				inMap.put("ftrial_kanyu_ymd_err", template.getString(EKK0101C040CBSMsg.FTRIAL_KANYU_YMD_ERR));
			}
		}
		// .サービス契約一意照会明細.試用期間終了年月日 → 試用期間終了年月日 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.FTRIAL_PRD_ENDYMD_ERR))
		{
			if (!inMap.containsKey("ftrial_prd_endymd_err"))
			{
				inMap.put("ftrial_prd_endymd_err", template.getString(EKK0101C040CBSMsg.FTRIAL_PRD_ENDYMD));
			}
		}
		// .サービス契約一意照会明細.本加入年月日 → 本加入年月日 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.HONKANYU_YMD_ERR))
		{
			if (!inMap.containsKey("honkanyu_ymd_err"))
			{
				inMap.put("honkanyu_ymd_err", template.getString(EKK0101C040CBSMsg.HONKANYU_YMD_ERR));
			}
		}
		// .サービス契約一意照会明細.本加入移行期限年月日 → 本加入移行期限年月日 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.HONKANYU_IKO_KIGEN_YMD_ERR))
		{
			if (!inMap.containsKey("honkanyu_iko_kigen_ymd_err"))
			{
				inMap.put("honkanyu_iko_kigen_ymd_err", template.getString(EKK0101C040CBSMsg.HONKANYU_IKO_KIGEN_YMD_ERR));
			}
		}
		// .サービス契約一意照会明細.サンキューレター送付先コード → サンキューレター送付先コード のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.THNX_LETTER_SHS_CD_ERR))
		{
			if (!inMap.containsKey("thnx_letter_shs_cd_err"))
			{
				inMap.put("thnx_letter_shs_cd_err", template.getString(EKK0101C040CBSMsg.THNX_LETTER_SHS_CD_ERR));
			}
		}
		// .サービス契約一意照会明細.WEBオプション追加不可フラグ → WEBオプション追加不可フラグ のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.WEB_OP_ADD_FAIL_FLG_ERR))
		{
			if (!inMap.containsKey("web_op_add_fail_flg_err"))
			{
				inMap.put("web_op_add_fail_flg_err", template.getString(EKK0101C040CBSMsg.WEB_OP_ADD_FAIL_FLG_ERR));
			}
		}
		// .サービス契約一意照会明細.提供方式契約番号 → 提供方式契約番号 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.TK_HOSHIKI_KEI_NO_ERR))
		{
			if (!inMap.containsKey("tk_hoshiki_kei_no_err"))
			{
				inMap.put("tk_hoshiki_kei_no_err", template.getString(EKK0101C040CBSMsg.TK_HOSHIKI_KEI_NO_ERR));
			}
		}
		// .サービス契約一意照会明細.サービス利用開始希望年月日 → サービス利用開始希望年月日 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.SVC_USE_STA_KIBO_YMD_ERR))
		{
			if (!inMap.containsKey("svc_use_sta_kibo_ymd_err"))
			{
				inMap.put("svc_use_sta_kibo_ymd_err", template.getString(EKK0101C040CBSMsg.SVC_USE_STA_KIBO_YMD_ERR));
			}
		}
		// .サービス契約一意照会明細.電波障害案件番号 → 電波障害案件番号 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.DMPS_ANKEN_NO_ERR))
		{
			if (!inMap.containsKey("dmps_anken_no_err"))
			{
				inMap.put("dmps_anken_no_err", template.getString(EKK0101C040CBSMsg.DMPS_ANKEN_NO_ERR));
			}
		}
		// .サービス契約一意照会明細.再送信提供サービス種別コード → 再送信提供サービス種別コード のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.RE_SEND_TK_SVC_SBT_CD_ERR))
		{
			if (!inMap.containsKey("re_send_tk_svc_sbt_cd_err"))
			{
				inMap.put("re_send_tk_svc_sbt_cd_err", template.getString(EKK0101C040CBSMsg.RE_SEND_TK_SVC_SBT_CD_ERR));
			}
		}
		// .サービス契約一意照会明細.TV営業地区コード → TV営業地区コード のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.TV_BUSINESS_CHIK_CD_ERR))
		{
			if (!inMap.containsKey("tv_business_chik_cd_err"))
			{
				inMap.put("tv_business_chik_cd_err", template.getString(EKK0101C040CBSMsg.TV_BUSINESS_CHIK_CD_ERR));
			}
		}
		// .サービス契約一意照会明細.TV営業担当ユーザーID → TV営業担当ユーザーID のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.TV_BUSINESS_TNT_USER_ID))
		{
			if (!inMap.containsKey("tv_business_tnt_user_id_err"))
			{
				inMap.put("tv_business_tnt_user_id_err", template.getString(EKK0101C040CBSMsg.TV_BUSINESS_TNT_USER_ID));
			}
		}
		// .サービス契約一意照会明細.バンドル情報コード → バンドル情報コード のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.BUNDLE_IF_CD_ERR))
		{
			if (!inMap.containsKey("bundle_if_cd_err"))
			{
				inMap.put("bundle_if_cd_err", template.getString(EKK0101C040CBSMsg.BUNDLE_IF_CD_ERR));
			}
		}
		// .サービス契約一意照会明細.更新年月日時分秒 → 更新年月日時分秒（更新前） のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.UPD_DTM_BF_ERR))
		{
			if (!inMap.containsKey("upd_dtm_err"))
			{
				inMap.put("upd_dtm_err", template.getString(EKK0101C040CBSMsg.UPD_DTM_BF_ERR));
			}
		} 
		// サービス契約＜eo光TV＞情報変更.整理番号 → 整理番号 のエラー情報返却
		if (!template.isNull(EKK0101C040CBSMsg.SEIRI_NO_ERR))
		{
			if (!inMap.containsKey("seiri_no_err"))
			{
				inMap.put("seiri_no_err", template.getString(EKK0101C040CBSMsg.SEIRI_NO_ERR));
			}
		}
		return param;
	}

	/**
	 * メッセージ共通部の設定。<br>
	 * <br>
	 * @param param (I) 業務データ取得用I/F
	 * @param paramMap (O) メッセージ共通部
	 * @exception RequestParameterExceptionがスローされます。
	 */
	private void setCommonParamMap(IRequestParameterReadOnly 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));

	}

	/**
	 * サービスインターフェイス共通部の設定。<br>
	 * <br>
	 * @param param (I) 業務データ取得用I/F
	 * @param template (O) サービスインターフェイス
	 * @exception RequestParameterExceptionがスローされます。
	 */
	private void setCommonTemplate(IRequestParameterReadOnly param, CAANMsg template)
	throws RequestParameterException
	{
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

	}

}

