/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKKnytcsCfmCC
*	ソースファイル名：JKKKnytcsCfmCC.java
*	作成者			：FJ
*	日付			：2016年01月06日
*＜機能概要＞ 
*	契約内容通知書照会の共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v23.00.00	2016/01/06	FJ）中原	新規作成【ANK-2737-00-00】消費者保護ルールの見直し対応
*	v23.00.01	2016/02/03	FJ）中原	【ANK-2737-00-00】置換対象文字列を"\\$"から"＄"に変更
*   v23.01.00   2016/04/06   FJ)原田    【ANK-2827-00-00】消費者保護ルール見直し追加対応
*   v27.01.00   2016/09/07   FJ)栗秋    【ANK-2985-00-00】消費者保護ルール見直し追加対応STEP3
*	v27.00.01	2016/10/07	FJ) 中原	【IT1-2016-0000144】排他制御未実装サービスインターフェイス改修
*	v48.00.01	2020/02/20	FJ)荒木		【ANK-3639-00-00】契約内容通知書の修正可能項目追加
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

/* 契約内容通知書一意照会 */
import eo.ejb.cbs.cbsmsg.EKK3011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3011A010CBSMsg1List;
/* 契約内容通知書内訳一覧照会 */
import eo.ejb.cbs.cbsmsg.EKK3031B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3031B010CBSMsg1List;
/* 契約内容通知書非定型部一覧照会 */
import eo.ejb.cbs.cbsmsg.EKK3041B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3041B010CBSMsg1List;
/* 契約内容通知書訂正一意照会 */
import eo.ejb.cbs.cbsmsg.EKK3211A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3211A010CBSMsg1List;



/**
 * 
 * @author 919955
 *
 */
public class JKKKnytcsCfmCC extends AbstractCommonComponent
{
	/** 契約内容通知書非定型部種別：置換 */
	private static final String KNYTCS_HTKB_SBT_CD_REP = "01";
	/**
	 * テンプレートID
	 */
	private static final String TEMPLATE_ID_TSU = "EKK3011A010";
	private static final String TEMPLATE_ID_UTI = "EKK3031B010";
	private static final String TEMPLATE_ID_HTE = "EKK3041B010";
// ANK-3639-00-00 ADD START
	private static final String TEMPLATE_ID_TEI = "EKK3211A010";
// ANK-3639-00-00 ADD END
	private static final String KUGIRI_MOJI_HENSHU_PTN_CD_01 = "01";
	private static final String KUGIRI_MOJI_HENSHU_PTN_CD_02 = "02";
	private static final String KUGIRI_MOJI_HENSHU_PTN_KAIGYO = "\r\n";
	private static final String KUGIRI_MOJI_HENSHU_PTN_COMMA = "、";
	
	/**
	 * 契約内容通知書照会処理を行います。
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite cfmKnytcs(SessionHandle handle, 
												IRequestParameterReadWrite param, 
												String fixedText) throws Exception
	{
		// ユーザデータ情報
		HashMap<String, Object> dataMap = (HashMap<String, Object>)param.getData(fixedText);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = null;
		IRequestParameterReadWrite retParam = param;
		HashMap<String, Object> paramMap = null;
		HashMap<String, String> svcMap = null;
		
		// 入力データの取得
		// 契約内容通知書番号
		String knytcsNo= (String)dataMap.get("knytcs_no");
		
		
		// 契約内容通知書一意照会サービスI/Fを呼び出す
		paramMap = editInMsgTsu(param, dataMap, svcMap, knytcsNo);
		result = scCall.run(paramMap, handle);
		retParam = editOutMsg(result, param, dataMap, fixedText, svcMap);
		// リターンコード判定
		if(0 != (Integer)(result.get(JCMConstants.RET_CD_INT_KEY)))
		{
			return retParam;
		}
		CAANMsg[] templatesTsu = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplateTsu = templatesTsu[0];
		CAANMsg[] EKK3011A010list = parentTemplateTsu.getCAANMsgList(EKK3011A010CBSMsg.EKK3011A010CBSMSG1LIST);
		// データが取得できない場合、処理終了
		if (EKK3011A010list == null)
		{
			return retParam;
		}

		// 契約内容通知書内訳一覧照会サービスI/Fを呼び出す
		paramMap = editInMsgUti(param, dataMap, svcMap, knytcsNo);
		result = scCall.run(paramMap, handle);
		retParam = editOutMsg(result, param, dataMap, fixedText, svcMap);
		// リターンコード判定
		if(0 != (Integer)(result.get(JCMConstants.RET_CD_INT_KEY)))
		{
			return retParam;
		}
		CAANMsg[] templatesUti = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplateUti = templatesUti[0];
		CAANMsg[] EKK3031B010list = parentTemplateUti.getCAANMsgList(EKK3031B010CBSMsg.EKK3031B010CBSMSG1LIST);
		// データが取得できない場合、処理終了
		if (EKK3031B010list == null)
		{
			return retParam;
		}

		// 契約内容通知書非定型部一覧照会サービスI/Fを呼び出す
		paramMap = editInMsgHte(param, dataMap, svcMap, knytcsNo);
		result = scCall.run(paramMap, handle);
		retParam = editOutMsg(result, param, dataMap, fixedText, svcMap);
		// リターンコード判定
		if(0 != (Integer)(result.get(JCMConstants.RET_CD_INT_KEY)))
		{
			return retParam;
		}
		CAANMsg[] templatesHte = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplateHte= templatesHte[0];
		CAANMsg[] EKK3041B010ist = parentTemplateHte.getCAANMsgList(EKK3041B010CBSMsg.EKK3041B010CBSMSG1LIST);
		// データが取得できない場合、処理終了
		if (EKK3041B010ist == null)
		{
			return retParam;
		}

// ANK-3639-00-00 ADD START
		// 契約内容通知書訂正一意照会サービスI/Fを呼び出す
		paramMap = editInMsgTei(param, dataMap, svcMap, knytcsNo);
		result = scCall.run(paramMap, handle);
		retParam = editOutMsg(result, param, dataMap, fixedText, svcMap);
		// リターンコード判定
		if(0 != (Integer)(result.get(JCMConstants.RET_CD_INT_KEY)))
		{
			return retParam;
		}
		CAANMsg[] templatesTei = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplateTei= templatesTei[0];
		CAANMsg[] EKK3211A010list = parentTemplateTei.getCAANMsgList(EKK3211A010CBSMsg.EKK3211A010CBSMSG1LIST);
// ANK-3639-00-00 ADD END

		// 出力データ編集処理
		//SYSID
		dataMap.put("sysid", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.SYSID));
		//サービス契約回線内訳番号
		dataMap.put("svc_kei_kaisen_ucwk_no", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
		//申込種別
		dataMap.put("mskm_sybtu", "");
		//送付先_お客様名
		dataMap.put("sohus_nm", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_SOHUS_NM));
		//送付先_郵便番号
		dataMap.put("sohus_pcd", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_SOHUS_PCD));
		//送付先_都道府県名
		dataMap.put("sohus_state_nm", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_SOHUS_STATE_NM));
		//送付先_市区町村名
		dataMap.put("sohus_city_nm", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_SOHUS_CITY_NM));
		//送付先_大字通称名
		dataMap.put("sohus_oaztsu_nm", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_SOHUS_OAZTSU_NM));
		//送付先_字丁目名
		dataMap.put("sohus_azcho_nm", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_SOHUS_AZCHO_NM));
		//送付先_番地号
		dataMap.put("sohus_bnchigo", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_SOHUS_BNCHIGO));
		//送付先_住所補記・建物名
		dataMap.put("sohus_adrttm", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_SOHUS_ADRTTM));
		//送付先_住所補記・部屋番号
		dataMap.put("sohus_adrrm", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_SOHUS_ADRRM));
		//契約内容通知書印刷依頼年月日
		dataMap.put("knytcs_print_reqymd", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_PRINT_REQYMD));
		//契約内容通知書Web公開年月日
		dataMap.put("knytcs_web_kokai_ymd", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_WEB_KOKAI_YMD));
		//ANK-2827-00-00 ADD START
		//加入御礼書同封制御コード
		dataMap.put("kanuoreso_dofu_ctrl_cd", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KANUORESO_DOFU_CTRL_CD));
		//ANK-2827-00-00 ADD END
		//ANK-2985-00-00 ADD START
		//契約内容通知書交付方法コード
		dataMap.put("knytcs_kohu_way_cd", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_KOHU_WAY_CD));
		//契約内容通知書印刷実施先コード
		dataMap.put("knytcs_print_jssi_sk_cd", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_PRINT_JSSI_SK_CD));
		//契約成立年月日
		dataMap.put("kei_seirt_ymd", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KEI_SEIRT_YMD));
		//契約内容通知書送付先住所コード
		dataMap.put("knytcs_sohus_ad_cd", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_SOHUS_AD_CD));
		//契約内容通知書送付先電話番号
		dataMap.put("knytcs_sohus_telno", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_SOHUS_TELNO));
		//異動区分
		dataMap.put("ido_div", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.IDO_DIV));
		//発行日
		dataMap.put("knytcs_hakko_ymd", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.KNYTCS_HAKKO_YMD));
		//レター発送仕分区分
		dataMap.put("letter_hasso_shiwake_div", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.LETTER_HASSO_SHIWAKE_DIV));
		//ANK-2985-00-00 ADD END
		// 20161007 IT1-2016-0000144 ADD START
		//更新年月日時分秒
		dataMap.put("upd_dtm", EKK3011A010list[0].getString(EKK3011A010CBSMsg1List.UPD_DTM));
		// 20161007 IT1-2016-0000144 ADD END
// ANK-3639-00-00 ADD START
		//訂正更新年月日時分秒
		if (EKK3211A010list != null && EKK3211A010list.length > 0)
		{
			dataMap.put("teise_upd_dtm", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.UPD_DTM));
		}
		else
		{
			dataMap.put("teise_upd_dtm", "");
		}
// ANK-3639-00-00 ADD END

		// 表示文言バッファ
		String dspMngnBuff = "";
		// 表示位置(表示識別コード、表示位置識別通番ごとの出力処理
		if (EKK3031B010list != null)
		{
			for (int i = 0; i < EKK3031B010list.length; i++)
			{
				// 表示文言ワーク
				String dspMngn = "";
				// 表示位置識別コードワーク
				String dspPstSkcd = "";
				String dspPstSkcdNext = "";
				// 表示位置識別通番ワーク
				String dspPstSkbtSeq = "";
				String dspPstSkbtSeqNext = "";
				// 区切り文字編集パターンコードワーク
				String kugiriMojiHenshuPtnCdNext = "";
				// 区切り文字編集パターンコード値
				String kugiriMojiHenshuPtnCdValue = "";
				// 契約内容通知書内訳番号ワーク	
				String knytcsUwNo = "";

				
				CAANMsg childTemplate = EKK3031B010list[i];
				// 表示文言
				if (!childTemplate.isNull(EKK3031B010CBSMsg1List.DSP_MNGN))
				{
					dspMngn = childTemplate.getString(EKK3031B010CBSMsg1List.DSP_MNGN);
				}
				// 表示位置識別コード
				if (!childTemplate.isNull(EKK3031B010CBSMsg1List.DSP_PST_SKCD))
				{
					dspPstSkcd = childTemplate.getString(EKK3031B010CBSMsg1List.DSP_PST_SKCD);
				}
				// 表示位置識別通番
				if (!childTemplate.isNull(EKK3031B010CBSMsg1List.DSP_PST_SKBT_SEQ))
				{
					dspPstSkbtSeq = childTemplate.getString(EKK3031B010CBSMsg1List.DSP_PST_SKBT_SEQ);
				}
				// 契約内容通知書内訳番号
				if (!childTemplate.isNull(EKK3031B010CBSMsg1List.KNYTCS_UW_NO))
				{
					knytcsUwNo = childTemplate.getString(EKK3031B010CBSMsg1List.KNYTCS_UW_NO);
				}
				
				// 契約内容通知書非定型部一覧照会で取得したリストから契約内容通知書内訳番号が同様のものを探す
				if (EKK3041B010ist != null)
				{
					// 契約内容通知書非定型部連番が存在するだけ全件ループ
					for (int j = 0; j < EKK3041B010ist.length; j++)
					{
						CAANMsg magoTemplate = EKK3041B010ist[j];
						// 契約内容通知書内訳番号
						if (!magoTemplate.isNull(EKK3041B010CBSMsg1List.KNYTCS_UW_NO))
						{
							if ( knytcsUwNo.equals(magoTemplate.getString(EKK3031B010CBSMsg1List.KNYTCS_UW_NO)))
							{
								// 置換対象がある場合は置換をおこなう
								// ANK-2737-00-00 2016/02/03 UPDATE START
								// dspMngn = dspMngn.replaceFirst("\\$", magoTemplate.getString(EKK3041B010CBSMsg1List.KNYTCS_HTK_CKAN_MOJI));
								dspMngn = dspMngn.replaceFirst("＄", magoTemplate.getString(EKK3041B010CBSMsg1List.KNYTCS_HTK_CKAN_MOJI));
								// ANK-2737-00-00 2016/02/03 UPDATE END
							}
						}

					}
				}
				// 最終リストの場合は次のリストを取得しない
				if ( i + 1 != EKK3031B010list.length ) {
					CAANMsg childTemplateNext = EKK3031B010list[i+1];
					// 表示位置識別コード
					if (!childTemplateNext.isNull(EKK3031B010CBSMsg1List.DSP_PST_SKCD))
					{
						dspPstSkcdNext = childTemplateNext.getString(EKK3031B010CBSMsg1List.DSP_PST_SKCD);
					}
					// 表示位置識別通番
					if (!childTemplateNext.isNull(EKK3031B010CBSMsg1List.DSP_PST_SKBT_SEQ))
					{
						dspPstSkbtSeqNext = childTemplateNext.getString(EKK3031B010CBSMsg1List.DSP_PST_SKBT_SEQ);
					}
					// 区切り文字編集パターンコード
					if (!childTemplateNext.isNull(EKK3031B010CBSMsg1List.KUGIRI_MOJI_HENSHU_PTN_CD))
					{
						kugiriMojiHenshuPtnCdNext = childTemplateNext.getString(EKK3031B010CBSMsg1List.KUGIRI_MOJI_HENSHU_PTN_CD);
						// 区切り文字編集パターンコードが"０１"の場合は改行コードを設定
						if ( kugiriMojiHenshuPtnCdNext.equals(KUGIRI_MOJI_HENSHU_PTN_CD_01))
						{
							kugiriMojiHenshuPtnCdValue = KUGIRI_MOJI_HENSHU_PTN_KAIGYO;
						}
						// 区切り文字編集パターンコードが"０２"の場合は”、”を設定
						if ( kugiriMojiHenshuPtnCdNext.equals(KUGIRI_MOJI_HENSHU_PTN_CD_02))
						{
							kugiriMojiHenshuPtnCdValue = KUGIRI_MOJI_HENSHU_PTN_COMMA;
						}
					}
				}
				// 置換後出力データ遷移判定
				// 次レコードの表示位置識別コードと表示位置識別通番が同様であれば、文字列の連結処理有り
				if ( dspPstSkcd.equals(dspPstSkcdNext) && dspPstSkbtSeq.equals(dspPstSkbtSeqNext) )
				{
					// 表示文言をバッファ領域に設定、次レコードの区切り文字を設定
					dspMngnBuff = dspMngnBuff + dspMngn.concat(kugiriMojiHenshuPtnCdValue);
				}
				else
				{
					// 表示文言をバッファ領域に設定
					dspMngnBuff = dspMngnBuff + dspMngn;
					// 置換後出力データ編集
					setOutData(dataMap, dspPstSkcd, dspPstSkbtSeq, dspMngnBuff);
					// バッファ領域を初期化
					dspMngnBuff = "";
				}

			
			}
		}
		
// ANK-3639-00-00 ADD START
		// 契約内容通知書訂正スキーマにレコードがあった場合に項目の値を上書き
		if (EKK3211A010list != null && EKK3211A010list.length > 0)
		{
			setOutDataTeise(dataMap, EKK3211A010list);
		}
// ANK-3639-00-00 ADD END
		
		return retParam;
	}
	
	/**
	 * チェック処理です。<br>
	 * <br>
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	public HashMap getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
			throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		List<CAANMsg> templates = new ArrayList<CAANMsg>();
		
		// チェック用サービスインターフェイス
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, Arrays.asList(templates));
		
		return paramMap;
	}
	
	/**
	 * 契約内容通知書一意照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @param svcMap
	 * @param knytcsNo
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsgTsu(IRequestParameterReadWrite param,
												HashMap<String, Object> inMap,
												HashMap<String, String> svcMap,
												String knytcsNo) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		
		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		
		CAANMsg template = new CAANMsg(EKK3011A010CBSMsg.class.getName());
		
		// テンプレートID
		template.set(EKK3011A010CBSMsg.TEMPLATEID, TEMPLATE_ID_TSU);
		
		template.set(EKK3011A010CBSMsg.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(EKK3011A010CBSMsg.KEY_KNYTCS_NO, knytcsNo);				// 契約内容通知書番号
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		
		return paramMap;
	}

	/**
	 * 契約内容通知書内訳一覧照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @param svcMap
	 * @param knytcsNo
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsgUti(IRequestParameterReadWrite param,
												HashMap<String, Object> inMap,
												HashMap<String, String> svcMap,
												String knytcsNo) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		
		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		
		CAANMsg template = new CAANMsg(EKK3031B010CBSMsg.class.getName());
		
		// テンプレートID
		template.set(EKK3031B010CBSMsg.TEMPLATEID, TEMPLATE_ID_UTI);
		
		template.set(EKK3031B010CBSMsg.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(EKK3031B010CBSMsg.KEY_KNYTCS_NO, knytcsNo);				// 契約内容通知書番号
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		
		return paramMap;
	}

	/**
	 * 契約内容通知書非定型部一覧照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @param svcMap
	 * @param knytcsNo
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsgHte(IRequestParameterReadWrite param,
												HashMap<String, Object> inMap,
												HashMap<String, String> svcMap,
												String knytcsNo) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		
		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		
		CAANMsg template = new CAANMsg(EKK3041B010CBSMsg.class.getName());
		
		// テンプレートID
		template.set(EKK3041B010CBSMsg.TEMPLATEID, TEMPLATE_ID_HTE);
		
		template.set(EKK3041B010CBSMsg.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(EKK3041B010CBSMsg.KEY_KNYTCS_NO, knytcsNo);						// 契約内容通知書番号
		template.set(EKK3041B010CBSMsg.KEY_KNYTCS_HTKB_SBT_CD, KNYTCS_HTKB_SBT_CD_REP);	// 契約内容通知書非定型部種別
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		
		return paramMap;
	}

// ANK-3639-00-00 ADD START
	/**
	 * 契約内容通知書訂正一意照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @param svcMap
	 * @param knytcsNo
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsgTei(IRequestParameterReadWrite param,
			HashMap<String, Object> inMap,
			HashMap<String, String> svcMap,
			String knytcsNo) throws RequestParameterException
			{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		
		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		
		CAANMsg template = new CAANMsg(EKK3211A010CBSMsg.class.getName());
		
		// テンプレートID
		template.set(EKK3211A010CBSMsg.TEMPLATEID, TEMPLATE_ID_TEI);
		
		template.set(EKK3211A010CBSMsg.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(EKK3211A010CBSMsg.KEY_KNYTCS_NO, knytcsNo);				// 契約内容通知書番号
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		
		return paramMap;
	}
// ANK-3639-00-00 ADD END

	
	/**
	 * サービスI/F出力用のメッセージを取得します。
	 * @param msgList
	 * @param param
	 * @param dataMap
	 * @param fixedText
	 * @param svcMap
	 * @return IRequestParameterReadWrite
	 * 
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutMsg(Map<?, ?> msgList,
													IRequestParameterReadWrite param,
													HashMap<String, Object> dataMap,
													String fixedText,
													HashMap<String, String> svcMap) throws Exception
	
	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		HashMap<String, Object> workDataMap = (HashMap<String, Object>)workMap.get("WORK");
		if (workDataMap == null) {
			workDataMap = new HashMap();
			workMap.put("WORK", workDataMap);
		}
		// 検索系 共通部
		workDataMap.put("total_search_num", parentTemplate.getString("total_search_num"));
		workDataMap.put("total_page_num", parentTemplate.getString("total_page_num"));
		workDataMap.put("search_err_flg", parentTemplate.getString("search_err_flg"));

		/* ◇処理結果の判定*/
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		// リターンコード取得
		String rtnCode = msgList.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);
		
		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo(param, templates, Integer.parseInt(rtnCode), fixedText);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status)){
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
		
		return retParam;
	}
	

	/**
	 * エラー情報を設定します。
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, 
														CAANMsg[] templates,
														int returnCode,
														String fixedText) throws RequestParameterException
	{
		CAANMsg template = templates[0];
		
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		// ユーザデータ情報
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		
		// エラー情報の設定
		setErr(template, inMap, EKK3011A010CBSMsg.KEY_KNYTCS_NO_ERR, "key_knytcs_no_err");	// 契約内容通知書番号エラー
		setErr(template, inMap, EKK3031B010CBSMsg.KEY_KNYTCS_NO_ERR, "key_knytcs_no_err");	// 契約内容通知書番号エラー
		setErr(template, inMap, EKK3041B010CBSMsg.KEY_KNYTCS_NO_ERR, "key_knytcs_no_err");	// 契約内容通知書番号エラー

		return param;
	}
	/**
	 * 置換後出力データを設定します。
	 * @param dataMap
	 * @param dspPstSkcd
	 * @param dspPstSkbtSeq
	 * @param dspMngnBuff
	 */
	private void setOutData(HashMap<String, Object> dataMap, String dspPstSkcd, String dspPstSkbtSeq, String dspMngn) {
		
		if (!isNull(dspMngn))
		{
			// 表示位置識別コード=001　表示位置識別通番=01
			if( dspPstSkcd.equals("001") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("knytcs_mngo", dspMngn);
			}
			// 表示位置識別コード=002　表示位置識別通番=01
			if( dspPstSkcd.equals("002") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("kiyk_sei_ymd", dspMngn);
			}
			// 表示位置識別コード=003　表示位置識別通番=01
			if( dspPstSkcd.equals("003") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("cust_cust_nm", dspMngn);
			}
			// 表示位置識別コード=004　表示位置識別通番=01
			if( dspPstSkcd.equals("004") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("cust_keisha_ad", dspMngn);
			}
			// 表示位置識別コード=005　表示位置識別通番=01
			if( dspPstSkcd.equals("005") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("ryobsy_ad", dspMngn);
			}
			// 表示位置識別コード=006　表示位置識別通番=01
			if( dspPstSkcd.equals("006") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("svc_tk_sta_jiki", dspMngn);
			}
			// 表示位置識別コード=007　表示位置識別通番=01
			if( dspPstSkcd.equals("007") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("net_mskm_no", dspMngn);
			}
			// 表示位置識別コード=008　表示位置識別通番=01
			if( dspPstSkcd.equals("008") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("net_corse", dspMngn);
			}
			// 表示位置識別コード=009　表示位置識別通番=01
			if( dspPstSkcd.equals("009") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("net_wrib_svc", dspMngn);
			}
			// 表示位置識別コード=010　表示位置識別通番=01
			if( dspPstSkcd.equals("010") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("net_op_svc", dspMngn);
			}
			// 表示位置識別コード=011　表示位置識別通番=01
			if( dspPstSkcd.equals("011") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("net_aply_cp", dspMngn);
			}
			// 表示位置識別コード=012　表示位置識別通番=01
			if( dspPstSkcd.equals("012") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("net_knyhen_can", dspMngn);
			}
			// 表示位置識別コード=013　表示位置識別通番=01
			if( dspPstSkcd.equals("013") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tel_mskm_no", dspMngn);
			}
			// 表示位置識別コード=014　表示位置識別通番=01
			if( dspPstSkcd.equals("014") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tel_corse", dspMngn);
			}
			// 表示位置識別コード=015　表示位置識別通番=01
			if( dspPstSkcd.equals("015") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tel_wrib_svc", dspMngn);
			}
			// 表示位置識別コード=016　表示位置識別通番=01
			if( dspPstSkcd.equals("016") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tel_aply_cp", dspMngn);
			}
			// 表示位置識別コード=017　表示位置識別通番=01
			if( dspPstSkcd.equals("017") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tel1_tel_no", dspMngn);
			}
			// 表示位置識別コード=018　表示位置識別通番=01
			if( dspPstSkcd.equals("018") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tel1_op_svc", dspMngn);
			}
			// 表示位置識別コード=017　表示位置識別通番=02
			if( dspPstSkcd.equals("017") && dspPstSkbtSeq.equals("02") )
			{

				dataMap.put("tel2_tel_no", dspMngn);
			}
			// 表示位置識別コード=018　表示位置識別通番=02
			if( dspPstSkcd.equals("018") && dspPstSkbtSeq.equals("02") )
			{

				dataMap.put("tel2_op_svc", dspMngn);
			}
			// 表示位置識別コード=019　表示位置識別通番=01
			if( dspPstSkcd.equals("019") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tv_mskm_no", dspMngn);
			}
			// 表示位置識別コード=020　表示位置識別通番=01
			if( dspPstSkcd.equals("020") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tv_wrib_svc", dspMngn);
			}
			// 表示位置識別コード=021　表示位置識別通番=01
			if( dspPstSkcd.equals("021") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tv_aply_cp", dspMngn);
			}
			// 表示位置識別コード=022　表示位置識別通番=01
			if( dspPstSkcd.equals("022") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tv_op_svc", dspMngn);
			}
			// 表示位置識別コード=023　表示位置識別通番=01
			if( dspPstSkcd.equals("023") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tv1_title", dspMngn);
			}
			// 表示位置識別コード=024　表示位置識別通番=01
			if( dspPstSkcd.equals("024") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tv1_dtl", dspMngn);
			}
			// 表示位置識別コード=023　表示位置識別通番=02
			if( dspPstSkcd.equals("023") && dspPstSkbtSeq.equals("02") )
			{

				dataMap.put("tv2_title", dspMngn);
			}
			// 表示位置識別コード=024　表示位置識別通番=02
			if( dspPstSkcd.equals("024") && dspPstSkbtSeq.equals("02") )
			{

				dataMap.put("tv2_dtl", dspMngn);
			}
			// 表示位置識別コード=023　表示位置識別通番=03
			if( dspPstSkcd.equals("023") && dspPstSkbtSeq.equals("03") )
			{

				dataMap.put("tv3_title", dspMngn);
			}
			// 表示位置識別コード=024　表示位置識別通番=03
			if( dspPstSkcd.equals("024") && dspPstSkbtSeq.equals("03") )
			{

				dataMap.put("tv3_dtl", dspMngn);
			}
			// 表示位置識別コード=023　表示位置識別通番=04
			if( dspPstSkcd.equals("023") && dspPstSkbtSeq.equals("04") )
			{

				dataMap.put("tv4_title", dspMngn);
			}
			// 表示位置識別コード=024　表示位置識別通番=04
			if( dspPstSkcd.equals("024") && dspPstSkbtSeq.equals("04") )
			{

				dataMap.put("tv4_dtl", dspMngn);
			}
			// 表示位置識別コード=023　表示位置識別通番=05
			if( dspPstSkcd.equals("023") && dspPstSkbtSeq.equals("05") )
			{

				dataMap.put("tv5_title", dspMngn);
			}
			// 表示位置識別コード=024　表示位置識別通番=05
			if( dspPstSkcd.equals("024") && dspPstSkbtSeq.equals("05") )
			{

				dataMap.put("tv5_dtl", dspMngn);
			}
			// 表示位置識別コード=025　表示位置識別通番=01
			if( dspPstSkcd.equals("025") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tv_kynyh_jyoko", dspMngn);
			}
			// 表示位置識別コード=026　表示位置識別通番=01
			if( dspPstSkcd.equals("026") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("pay_way", dspMngn);
			}
			// 表示位置識別コード=027　表示位置識別通番=01
			if( dspPstSkcd.equals("027") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("net_prc_kihonprc_dtl", dspMngn);
			}
			// 表示位置識別コード=028　表示位置識別通番=01
			if( dspPstSkcd.equals("028") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("net_stdard_kojihi", dspMngn);
			}
			// 表示位置識別コード=029　表示位置識別通番=01
			if( dspPstSkcd.equals("029") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("net_commision", dspMngn);
			}
			// 表示位置識別コード=030　表示位置識別通番=01
			if( dspPstSkcd.equals("030") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("net_prc_wribsvc_dtl", dspMngn);
			}
			// 表示位置識別コード=031　表示位置識別通番=01
			if( dspPstSkcd.equals("031") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("net_prc_cp_dtl", dspMngn);
			}
			// 表示位置識別コード=032　表示位置識別通番=01
			if( dspPstSkcd.equals("032") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tel_prc_kihonprc_dtl", dspMngn);
			}
			// 表示位置識別コード=033　表示位置識別通番=01
			if( dspPstSkcd.equals("033") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tel_stdard_kojihi", dspMngn);
			}
			// 表示位置識別コード=034　表示位置識別通番=01
			if( dspPstSkcd.equals("034") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tel_commision", dspMngn);
			}
			// 表示位置識別コード=035　表示位置識別通番=01
			if( dspPstSkcd.equals("035") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tel_prc_wribsvc_dtl", dspMngn);
			}
			// 表示位置識別コード=036　表示位置識別通番=01
			if( dspPstSkcd.equals("036") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tel_prc_cp_dtl", dspMngn);
			}
			// 表示位置識別コード=037　表示位置識別通番=01
			if( dspPstSkcd.equals("037") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tv1_prc_title", dspMngn);
			}
			// 表示位置識別コード=038　表示位置識別通番=01
			if( dspPstSkcd.equals("038") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tv1_prc_dtl", dspMngn);
			}
			// 表示位置識別コード=037　表示位置識別通番=02
			if( dspPstSkcd.equals("037") && dspPstSkbtSeq.equals("02") )
			{

				dataMap.put("tv2_prc_title", dspMngn);
			}
			// 表示位置識別コード=038　表示位置識別通番=02
			if( dspPstSkcd.equals("038") && dspPstSkbtSeq.equals("02") )
			{

				dataMap.put("tv2_prc_dtl", dspMngn);
			}
			// 表示位置識別コード=037　表示位置識別通番=03
			if( dspPstSkcd.equals("037") && dspPstSkbtSeq.equals("03") )
			{

				dataMap.put("tv3_prc_title", dspMngn);
			}
			// 表示位置識別コード=038　表示位置識別通番=03
			if( dspPstSkcd.equals("038") && dspPstSkbtSeq.equals("03") )
			{

				dataMap.put("tv3_prc_dtl", dspMngn);
			}
			// 表示位置識別コード=037　表示位置識別通番=04
			if( dspPstSkcd.equals("037") && dspPstSkbtSeq.equals("04") )
			{

				dataMap.put("tv4_prc_title", dspMngn);
			}
			// 表示位置識別コード=038　表示位置識別通番=04
			if( dspPstSkcd.equals("038") && dspPstSkbtSeq.equals("04") )
			{

				dataMap.put("tv4_prc_dtl", dspMngn);
			}
			// 表示位置識別コード=037　表示位置識別通番=05
			if( dspPstSkcd.equals("037") && dspPstSkbtSeq.equals("05") )
			{

				dataMap.put("tv5_prc_title", dspMngn);
			}
			// 表示位置識別コード=038　表示位置識別通番=05
			if( dspPstSkcd.equals("038") && dspPstSkbtSeq.equals("05") )
			{

				dataMap.put("tv5_prc_dtl", dspMngn);
			}
			// 表示位置識別コード=039　表示位置識別通番=01
			if( dspPstSkcd.equals("039") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tv_stdard_kojihi", dspMngn);
			}
			// 表示位置識別コード=040　表示位置識別通番=01
			if( dspPstSkcd.equals("040") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tv_commision", dspMngn);
			}
			// 表示位置識別コード=041　表示位置識別通番=01
			if( dspPstSkcd.equals("041") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tv_prc_wribsvc_dtl", dspMngn);
			}
			// 表示位置識別コード=042　表示位置識別通番=01
			if( dspPstSkcd.equals("042") && dspPstSkbtSeq.equals("01") )
			{

				dataMap.put("tv_prc_cp_dtl", dspMngn);
			}
			
		}
	}
	
// ANK-3639-00-00 ADD START
	/**
	 * 契約内容通知書訂正の値で上書きします。
	 * @param dataMap
	 * @param EKK3211A010list
	 */
	private void setOutDataTeise(HashMap<String, Object> dataMap, CAANMsg[] EKK3211A010list) {
		
		//お客様_お客様名
		dataMap.put("cust_cust_nm", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.CUST_RAN_CUST_NM));
		//お客様_住所
		dataMap.put("cust_keisha_ad", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.CUST_RAN_AD));
		//利用場所_住所
		dataMap.put("ryobsy_ad", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.UEPCAD));
		//ネット_オプションサービス
		dataMap.put("net_op_svc", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.NET_RAN_OP_SVC));
		//ネット_適用キャンペーン
		dataMap.put("net_aply_cp", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.NET_RAN_APLY_CMP));
		//ネット_契約内容変更・解除等に関する条項
		dataMap.put("net_knyhen_can", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.NET_RAN_KNYO_CHG_KNRN_JKO));
		//電話_適用キャンペーン
		dataMap.put("tel_aply_cp", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.TEL_RAN_APLY_CMP));
		//電話1_オプションサービス
		dataMap.put("tel1_op_svc", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.TEL_1_RAN_OP_SVC));
		//電話2_オプションサービス
		dataMap.put("tel2_op_svc", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.TEL_2_RAN_OP_SVC));
		//テレビ_適用キャンペーン
		dataMap.put("tv_aply_cp", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.TV_RAN_APLY_CMP));
		//テレビ_オプションサービス
		dataMap.put("tv_op_svc", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.TV_RAN_OP_SVC));
		//テレビ_契約内容変更・解除等に関する条項
		dataMap.put("tv_kynyh_jyoko", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.TV_RAN_KNYO_CHG_KNRN_JKO));
		//ネット_料金_割引サービス_詳細
		dataMap.put("net_prc_wribsvc_dtl", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.NET_RAN_WRIB_SVC_DTL));
		//ネット_料金_キャンペーン_詳細
		dataMap.put("net_prc_cp_dtl", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.NET_RAN_CMP_DTL));
		//電話_料金_割引サービス_詳細
		dataMap.put("tel_prc_wribsvc_dtl", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.TEL_RAN_WRIB_SVC_DTL));
		//電話_料金_キャンペーン_詳細
		dataMap.put("tel_prc_cp_dtl", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.TEL_RAN_CMP_DTL));
		//テレビ_料金_割引サービス_詳細
		dataMap.put("tv_prc_wribsvc_dtl", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.TV_RAN_WRIB_SVC_DTL));
		//テレビ_料金_キャンペーン_詳細
		dataMap.put("tv_prc_cp_dtl", EKK3211A010list[0].getString(EKK3211A010CBSMsg1List.TV_RAN_CMP_DTL));
		
	}
// ANK-3639-00-00 ADD END
	
	/**
	 * エラー情報を設定します。
	 * @param template
	 * @param map
	 * @param item
	 * @param key
	 * @return 判定結果
	 */
	private void setErr(CAANMsg template, HashMap<String, Object> inMap, String item, String key) {
		
		if (!template.isNull(item))
		{
			if (!inMap.containsKey(key))
			{
				inMap.put(key, template.getString(item));
			}
		}
	}
	
	/**
	 * 引数のNULL判定を行います。
	 * @param param
	 * @return 判定結果
	 */
	private boolean isNull(Object param)
	{
		if(param == null)
		{
			return true;
		}
		return false;
	}
	
}
