/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUBaseTvChgCommonCC
*   ソースファイル名：JFUBaseTvChgCommonCC.java
*   作成者          ：富士通
*   日付            ：2013年05月17日
*＜機能概要＞
*   テレビ変更共通処理基底コモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v5.00       2013/05/16   FJ）瀧澤    新規作成【ANK-1523-00-00】フロントSテレビキャンペーン対応
*   v5.00       2013/10/16   FJ）中谷    変更【OM-2013-0002803】通知書登録対応
*   v39.00      2018/08/24   FJ) 大島   【ANK-3464-00-00】地デジ・BSコースにWEBからSTB追加した際のキャンペーン自動付与
*   v40.00.00   2019/01/04   FJ) 美濃原 【ANK-3509-00-00】TVコース変更時のVONU交換必須化対応（キャンペーン文言表示削除）
*
**********************************************************************/
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.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0451B506CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451B506CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0841A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0841A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0851B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0851B001CBSMsg1List;

/**
 * テレビ変更共通処理基底コモンコンポーネント部品
 * 
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public abstract class JFUBaseTvChgCommonCC extends JFUBaseNetChgCommonCC
{

	/** IN項目: ＫＥＹ＿割引サービスコード */
	protected static final String IN_PARAM_CMP_KEY_WRIB_SVC_CD = "key_wrib_svc_cd";

	/** OUT項目: 割引サービスコードリスト */
	private static final String OUT_PARAM_TV_BASE_WRIB_SVC_LIST = "tv_base_wrib_svc_list";
	/** OUT項目: 割引サービスコード */
	private static final String OUT_PARAM_WRIB_SVC_CD = "wrib_svc_cd";
	/** OUT項目: 割引サービスの適用状態のフラグ */
	private static final String OUT_PARAM_WRIB_STS_FLG = "wrib_sts_flg";
	/** OUT項目: 割引サービスの適用状態のフラグ　適用済（未適用） */
	private static final String OUT_PARAM_WRIB_STS_FLG_0 = "0";
	/** OUT項目: 割引サービスの適用状態のフラグ　適用済（適用中、適用済） */
	private static final String OUT_PARAM_WRIB_STS_FLG_1 = "1";
	/** OUT項目: 割引サービスの適用状態のフラグ　エラー */
	private static final String OUT_PARAM_WRIB_STS_FLG_ERR = "ERR";

	/** OUT項目: キャンペーン文言一覧照会明細 */
	private static final String OUT_PARAM_CMP_MONGON_LIST = "cmp_mongon_list";

	/** 登録処理区分 */
	private static final String PROC_DIV_REG = "01";
	/** ＢＳパススルー申し込みフラグ */
	private static final String BSPT_MSKM_FLG = "1";

	/* ■□ 通知書登録CC ■□ */
	/** 通知書(サービス契約番号) */
	private static final String TCHISHO_SVC_KEI_NO = "svc_kei_no";
	/** 通知書(料金グループコード) */
	private static final String TCHISHO_PRC_GRP_CD = "prc_grp_cd";
	/** 通知書(SYSID) */
	private static final String TCHISHO_SYSID = "sysid";
	/** 通知書(配送番号) */
	private static final String TCHISHO_HAISO_NO = "haiso_no";
	/** 通知書(申込書番号) */
	private static final String TCHISHO_MSKMSHO_NO = "mskmsho_no";
	/** 通知書(工事案件番号) */
	private static final String TCHISHO_KOJIAK_NO = "kojiak_no";
	/** 通知書(倉庫コード) */
	private static final String TCHISHO_SOKO_CD = "soko_cd";
	/** 通知書(リスト) */
	private static final String ADD_TCHISHO_LIST = "trgt_data_list";

	/* ■□ 割引サービス一意照会SC ■□ */
	/** 割引サービス一意照会 テンプレートID*/
	private static final String TEMPLATE_ID_2 = "EKK0841A010";
	/** テンプレートID(割引サービス一意照会明細) */
	private static final String TEMPLATE_ID_2_DETAIL = EKK0841A010CBSMsg.EKK0841A010CBSMSG1LIST;
	/** IN項目リスト(割引サービス一意照会) */
	private static final List<String> IN_COLUMN_LIST_2 =
			Arrays.asList(EKK0841A010CBSMsg.KEY_WRIB_SVC_CD, EKK0841A010CBSMsg.KEY_GENE_ADD_DTM, EKK0841A010CBSMsg.KEY_RSV_APLY_YMD);
	/** エラー項目(割引サービス一意照会) */
	private static final String ERROR_COLUMN_2 = EKK0841A010CBSMsg.KEY_WRIB_SVC_CD_ERR;
	/** SC実行結果取得キー(割引サービス一意照会) */
	private static final String TEMP_TEMPLATE_KEY_2 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_2 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 割引サービス契約(予約とカレント件数)一覧照会SC ■□ */
	/** テンプレートID(割引サービス契約(予約とカレント件数)一覧照会) */
	private static final String TEMPLATE_ID_3 = "EKK0451B506";
	/** テンプレートID(割引サービス契約(予約とカレント件数)一覧照会明細) */
	private static final String TEMPLATE_ID_3_DETAIL = EKK0451B506CBSMsg.EKK0451B506CBSMSG1LIST;
	/** IN項目リスト(割引サービス契約(予約とカレント件数)一覧照会) */
	private static final List<String> IN_COLUMN_LIST_3 =
			Arrays.asList(EKK0451B506CBSMsg.KEY_SYSID, EKK0451B506CBSMsg.KEY_SVC_KEI_NO, EKK0451B506CBSMsg.KEY_WRIB_SVC_CD);
	/** 関連チェックエラー項目(割引サービス契約(予約とカレント件数)一覧照会)(契約数超過) */
	private static final String ERROR_COLUMN_3_MAX_CNT = "max_kei_cnt_err";
	/** SC実行結果取得キー(割引サービス契約(予約とカレント件数)一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_3 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_3 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 割引サービス対象サービス一覧照会SC ■□ */
	/** テンプレートID(割引サービス対象サービス一覧照会) */
	private static final String TEMPLATE_ID_5 = "EKK0851B001";
	/** テンプレートID(割引サービス対象サービス一覧照会明細) */
	private static final String TEMPLATE_ID_5_DETAIL = EKK0851B001CBSMsg.EKK0851B001CBSMSG1LIST;
	/** IN項目リスト(割引サービス対象サービス一覧照会) */
	private static final List<String> IN_COLUMN_LIST_5 =
			Arrays.asList(EKK0851B001CBSMsg.KEY_WRIB_SVC_CD, EKK0851B001CBSMsg.KEY_PRC_GRP_CD, EKK0851B001CBSMsg.KEY_PCRS_CD,
					EKK0851B001CBSMsg.KEY_PPLAN_CD, EKK0851B001CBSMsg.KEY_KJNYMD, EKK0851B001CBSMsg.MAX_SEARCH_NUM);
	/** エラー項目(割引サービス対象サービス一覧照会) */
	private static final String ERROR_COLUMN_5 = EKK0851B001CBSMsg.KEY_WRIB_SVC_CD_ERR;
	/** SC実行結果取得キー(割引サービス対象サービス一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_5 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_5 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 割引サービス契約登録SC ■□ */
	/** テンプレートID(割引サービス契約登録) */
	private static final String TEMPLATE_ID_6 = "EKK0451D010";
	/** テンプレートID(割引サービス契約登録明細) */
	private static final String TEMPLATE_ID_6_DETAIL = EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST;
	/** IN項目リスト(割引サービス契約登録) */
	private static final List<String> IN_COLUMN_LIST_6 =
			Arrays.asList(EKK0451D010CBSMsg.SYSID, EKK0451D010CBSMsg.WRIB_SVC_CD, EKK0451D010CBSMsg.PCRS_CD, EKK0451D010CBSMsg.PPLAN_CD,
					EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD, EKK0451D010CBSMsg.RSV_TSTA_KIBO_YMD, EKK0451D010CBSMsg.MSKM_DTL_NO,
					EKK0451D010CBSMsg.APLY_JUN, EKK0451D010CBSMsg.PNLTY_HASSEI_CD, EKK0451D010CBSMsg.IDO_DIV, EKK0451D010CBSMsg.MSKM_KISAN_YMD,
					EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD, EKK0451D010CBSMsg.UPD_DTM_BF);
	/** IN項目リスト(割引サービス契約登録・明細部) */
	private static final List<String> IN_COLUMN_LIST_6_DETAIL =
			Arrays.asList(EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD, EKK0451D010CBSMsg1List.SVC_KEI_NO, EKK0451D010CBSMsg1List.SVC_KEI_UCWK_NO,
					EKK0451D010CBSMsg1List.OP_SVC_KEI_NO, EKK0451D010CBSMsg1List.SBOP_SVC_KEI_NO, EKK0451D010CBSMsg1List.KKTK_SVC_KEI_NO,
					EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD, EKK0451D010CBSMsg1List.SET_ADD_YMD, EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD,
					EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD);
	/** SC実行結果取得キー(割引サービス契約登録) */
	private static final String TEMP_TEMPLATE_KEY_6 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_6 + TEMP_TEMPLATE_PRIFIX_SEP;
	/** エラー項目(割引サービス契約登録) */
	private static final String ERROR_COLUMN_6 = null;

	/** 日付 文字列開始位置 */
	private static final int I_DAY_START = 0;
	/** 日付 文字列終了位置 */
	private static final int I_DAY_END = 12;

	/**
	 * テレビ用キャンペーン文言の取得、及び、割引サービス契約の登録処理です。<br>
	 * 
	 * 【ANK-3509-00-00】により修正</br>
	 * 　【変更前】</br>
	 * 　　パラメータ「割引サービス適用条件種別コード、サービス契約番号」が</br>
	 * 　　割引適用条件スキーマに登録されている場合、取得できた割引サービスコードで登録を行う。</br>
	 * 　　キャンペーン文言あり。</br>
	 * 　　※割引サービス条件種別コード 09:BSパススルー</br>
	 * 
	 * 　【変更後】</br>
	 * 　　パラメータ「割引サービス適用条件種別コード、サービス契約番号、割引サービスコード」で</br>
	 * 　　割引サービスコードに値が設定されている場合に割引サービスコードで登録を行う。</br>
	 * 　　キャンペーン文言表示なし。</br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	protected IRequestParameterReadWrite addTvCmp(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		if (dataMap == null)
		{
			// パラメータ未設定時は初期値を返却
			dataMap = new HashMap<String, Object>();
			// キャンペーン文言表示は廃止されたため初期化
			dataMap.put(OUT_PARAM_CMP_MONGON_LIST, new ArrayList<HashMap<String, String>>());
			dataMap.put(OUT_PARAM_TV_BASE_WRIB_SVC_LIST, new ArrayList<HashMap<String, String>>());
			return param;
		}

		// IN項目:ＫＥＹ＿サービス契約番号
		String inParamSvcKeiNo = (String)dataMap.get(IN_PARAM_CMP_KEY_SVC_KEI_NO);
		// IN項目:ＫＥＹ＿料金グループコード
		String inParamPrcGrpCd = (String)dataMap.get(IN_PARAM_CMP_KEY_PRC_GRP_CD);
		// IN項目:ＫＥＹ＿割引サービス適用条件種別コードリスト
		List<Map<String, String>> inParamWrsvAplyJknSbtCdList = (List<Map<String, String>>)dataMap.get(IN_PARAM_CMP_KEY_WRSV_SBT_LIST);
		// IN項目: ＫＥＹ＿処理区分
		String inParamProcDiv = (String)dataMap.get(IN_PARAM_CMP_KEY_PROC_DIV);
		// IN項目: ＫＥＹ＿SYSID
		String inParamSysId = (String)dataMap.get(IN_PARAM_CMP_KEY_SYSID);
		// IN項目: 申込明細番号
		String inParamMskmDtlNo = (String)dataMap.get(IN_PARAM_CMP_MSKM_DTL_NO);
		// IN項目: ＫＥＹ＿更新年月日時分秒(更新前)
		String inParamUpdDtmBf = (String)dataMap.get(IN_PARAM_CMP_KEY_UPD_DTM_BF);
		// IN項目：登録後料金コースコード
		String inParamChgeAfPcrsCd = (String)dataMap.get(IN_PARAM_CMP_PCRS_CD);
		// IN項目：登録後料金プランコード
		String inParamChgeAfPplanCd = (String)dataMap.get(IN_PARAM_CMP_PPLAN_CD);
		// IN項目：異動区分
		String inParamIdoDiv = (String)dataMap.get(IN_PARAM_CMP_IDO_DIV);
		// IN項目：ＢＳパススルーの申し込みフラグ
		String inParamBsptMskmFlg = (String)dataMap.get(IN_PARAM_CMP_BSPT_MSKM_FLG);

		String updDtmBf = inParamUpdDtmBf;

		// ●変数初期化
		// キャンペーン文言リスト
		List<HashMap<String, String>> resultList = new ArrayList<HashMap<String, String>>();

		// 指定された割引サービスコードのリスト分のループ処理を行う
		// ●繰り返し処理
		for (Map<String, String> wrsvAplyJknSbtCdMap : inParamWrsvAplyJknSbtCdList)
		{
			// 割引サービスコード
			String wribSvcCd = wrsvAplyJknSbtCdMap.get(IN_PARAM_CMP_KEY_WRIB_SVC_CD);
			if (JFUBPCommon.isNull(wribSvcCd))
			{
				continue;
			}

			// ●割引サービス一意照会 (割引サービスマスタ)
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_2);
			// 上りマッピング
			setInMapWribMstSearch(param, fixedText, wribSvcCd);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_2, TEMPLATE_ID_2_DETAIL, IN_COLUMN_LIST_2, ERROR_COLUMN_2);

			// □受付開始年月日時分、受付終了年月日時分の日付チェック
			String uk_sta_ymdhm =
					getTemplateListValue(dataMap, getMaxTempTempleteKey(dataMap, TEMP_TEMPLATE_KEY_2), TEMPLATE_ID_2_DETAIL,
							EKK0841A010CBSMsg1List.UK_STA_YMDHM, 0);
			String uk_end_ymdhm =
					getTemplateListValue(dataMap, getMaxTempTempleteKey(dataMap, TEMP_TEMPLATE_KEY_2), TEMPLATE_ID_2_DETAIL,
							EKK0841A010CBSMsg1List.UK_END_YMDHM, 0);

			// ●割引サービス契約(予約とカレント件数)一覧照会 (割引サービス契約 トラン) ※ステータス=010,100,300が存在するか
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_3);
			// 検索失敗エラーなし設定
			ignoreSearchError(param, fixedText);
			// 上りマッピング
			this.setInMapWribSvcKeiCntSearch(param, fixedText, inParamSvcKeiNo, wribSvcCd);
			// サービスI/F実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_3, TEMPLATE_ID_3_DETAIL, IN_COLUMN_LIST_3, ERROR_COLUMN_3_MAX_CNT);

			// 契約数
			int contCnt =
					Integer.parseInt(getTemplateListValue(dataMap, getMaxTempTempleteKey(dataMap, TEMP_TEMPLATE_KEY_3), TEMPLATE_ID_3_DETAIL,
							EKK0451B506CBSMsg1List.CNT, 0));
			// △△△△△ 割引サービス契約に既に登録されている(適用中、適用済)場合は、キャンペーンの対象として扱わない △△△△△
			if (contCnt > 0)
			{
				JFUBPCommon.printBpDebugLog(this.getClass(), "■■■ addTvCmp 割引サービス契約が「適用中、適用済」のため登録対象外  ■■■ proc_div_cmp=[" + inParamProcDiv + "]");
				HashMap<String, String> resMapMskm = new HashMap<String, String>();
				resMapMskm.put(OUT_PARAM_WRIB_SVC_CD, wribSvcCd);
				resMapMskm.put(OUT_PARAM_WRIB_STS_FLG, OUT_PARAM_WRIB_STS_FLG_1);
				resultList.add(resMapMskm);
				continue;
			}

			String wribStsFlg = OUT_PARAM_WRIB_STS_FLG_0;
			// ■登録区分が指定されている場合は、割引サービス契約へ登録を行う
			if (PROC_DIV_REG.equals(inParamProcDiv))
			{
				// ＢＳパススルー申し込みが選択されている場合は、登録処理を行う。(ＢＳパススルー申し込みフラグ＝'1')
				if (BSPT_MSKM_FLG.equals(inParamBsptMskmFlg))
				{
					if (!isDateHaniCheck(uk_sta_ymdhm, uk_end_ymdhm))
					{
						// 処理続行
						String message = "■■■ addTvCmp 割引サービスマスタの受付開始年月日時分、受付終了年月日時分が範囲外になっています。（処理を続行します）  ■■■" 
							+ "(KEY：割引サービスコード=" + wribSvcCd + ")";
						JFUBPCommon.printBpDebugLog(this.getClass(), message);
						wribStsFlg = OUT_PARAM_WRIB_STS_FLG_ERR;
					}
					// ●割引サービス対象サービス一覧照会
					// ユーザデータ初期化
					initData(param, fixedText, IN_COLUMN_LIST_5);
					// 上りマッピング
					setInMapWribSvcTrgtSearch(param, fixedText, wribSvcCd, inParamPrcGrpCd, inParamChgeAfPcrsCd, inParamChgeAfPplanCd);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMPLATE_ID_5, TEMPLATE_ID_5_DETAIL, IN_COLUMN_LIST_5, ERROR_COLUMN_5);
					// 割引サービス対象サービスコード
					List<HashMap> wribSvcTgSvcList =
							getTemplateList(dataMap, getMaxTempTempleteKey(dataMap, TEMP_TEMPLATE_KEY_5), TEMPLATE_ID_5_DETAIL);

					for (HashMap<String, String> wribSvcTgSvc : wribSvcTgSvcList)
					{
						String wribSvcTrgtCd = wribSvcTgSvc.get(EKK0851B001CBSMsg1List.WRIB_SVC_TRGT_SVC_CD);

						// 登録対象の場合、登録
						// ●割引サービス契約登録
						initData(param, fixedText, IN_COLUMN_LIST_6);
						// 上りマッピング
						setInMapWribSvcKeiRegist(param, fixedText, inParamSysId, inParamMskmDtlNo, inParamSvcKeiNo, updDtmBf, wribSvcTrgtCd,
								wribSvcCd, inParamIdoDiv);
						// サービスIF実行
						executeSC(handle, param, fixedText, TEMPLATE_ID_6, TEMPLATE_ID_6_DETAIL, IN_COLUMN_LIST_6, ERROR_COLUMN_6);

						// 更新年月日時分秒(新)
						updDtmBf = getTemplateValue(dataMap, getMaxTempTempleteKey(dataMap, TEMP_TEMPLATE_KEY_6), EKK0451D010CBSMsg.UPD_DTM);
					}
				}
			}
			HashMap<String, String> resMapMskm = new HashMap<String, String>();
			resMapMskm.put(OUT_PARAM_WRIB_SVC_CD, wribSvcCd);
			resMapMskm.put(OUT_PARAM_WRIB_STS_FLG, wribStsFlg);
			resultList.add(resMapMskm);

		}
		// 返却用にデータをマップに詰める
		dataMap.put(OUT_PARAM_CMP_MONGON_LIST, new ArrayList<HashMap<String, String>>()); // キャンペーン文言表示は廃止されたため初期化
		dataMap.put(OUT_PARAM_TV_BASE_WRIB_SVC_LIST, resultList);

		return param;
	}

	/**
	 * 通知書登録部品CC情報マッピング
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param svcKeiNo サービス契約番号
	 * @param prcGrpCd 料金グループコード
	 * @param sysid SYSID
	 * @param haisoNo 配送番号
	 * @param mskmDtlNo 申込明細番号
	 * @param kojiakNo 工事案件番号
	 * @param mskmshoNo 申込書番号
	 * @param fixedTextTchisho サービスメッセージ(通知書登録CC)
	 * @throws RequestParameterException
	 */
	protected void tchishoMapping(IRequestParameterReadWrite param, String svcKeiNo, String prcGrpCd, String sysid, String haisoNo, String mskmDtlNo,
			String kojiakNo, String mskmshoNo, String fixedTextTchisho) throws RequestParameterException
	{
		// オーダー発行用マップ設定
		param.setData(fixedTextTchisho, new HashMap());

		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedTextTchisho, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedTextTchisho);

		List trgtList = new ArrayList();

		// 通知書マップ
		HashMap tchishoMap = new HashMap();

		// サービス契約番号
		tchishoMap.put(TCHISHO_SVC_KEI_NO, svcKeiNo);
		// 料金グループコード
		tchishoMap.put(TCHISHO_PRC_GRP_CD, prcGrpCd);
		// SYSID
		tchishoMap.put(TCHISHO_SYSID, sysid);
		// 配送番号
		tchishoMap.put(TCHISHO_HAISO_NO, haisoNo);
		// 申込書番号
		tchishoMap.put(TCHISHO_MSKMSHO_NO, mskmshoNo);
		// 工事案件番号
		tchishoMap.put(TCHISHO_KOJIAK_NO, kojiakNo);
		// 倉庫コード
		tchishoMap.put(TCHISHO_SOKO_CD, SOKO_CD_MINATO);

		// 対象データリストへ追加
		trgtList.add(tchishoMap);

		inMap.put(ADD_TCHISHO_LIST, trgtList);

	}

	/**
	 * 通知書登録部品CC情報マッピング(コース変更なし)
	 * <br>
	 * @param param
	 * @throws RequestParameterException
	 */
	protected void tchishoMappingNoChg(IRequestParameterReadWrite param, String fixedTextTchisho) throws RequestParameterException
	{
		// 通知書登録用マップ設定
		param.setData(fixedTextTchisho, new HashMap());
	}

	/**
	 * 上りマッピング項目設定(割引サービス対象サービス一覧照会)です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param wribSvcCd 割引サービスコード
	 * @param prcGrpCd 料金グループコード
	 * @param prcsCd 料金コースコード
	 * @param pplanCd 料金プランコード
	 * @throws RequestParameterException
	 */
	protected void setInMapWribSvcTrgtSearch(IRequestParameterReadWrite param, String fixedText, String wribSvcCd, String prcGrpCd, String prcsCd,
			String pplanCd) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿割引サービスコード
		inMap.put(EKK0851B001CBSMsg.KEY_WRIB_SVC_CD, wribSvcCd);
		// ＫＥＹ＿料金グループコード
		inMap.put(EKK0851B001CBSMsg.KEY_PRC_GRP_CD, prcGrpCd);
		// ＫＥＹ＿料金コースコード
		inMap.put(EKK0851B001CBSMsg.KEY_PCRS_CD, prcsCd);
		// ＫＥＹ＿料金プランコード
		inMap.put(EKK0851B001CBSMsg.KEY_PPLAN_CD, pplanCd);
		// ＫＥＹ＿基準年月日
		inMap.put(EKK0851B001CBSMsg.KEY_KJNYMD, JFUBPCommon.getOpeDate(null));
		// 最大件数
		inMap.put(EKK0851B001CBSMsg.MAX_SEARCH_NUM, JFUStrConst.MAX_SEARCH_NUM);

	}

	/**
	 * 上りマッピング項目設定(割引サービス契約登録)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysId SYSID
	 * @param pcrsCd 料金コースコード
	 * @param pplanCd 料金プランコード
	 * @param mskmDtlNo 申込内容承認登録を実行したサービスID
	 * @param svcKeiNo サービス契約番号
	 * @param updDtm 更新年月日時分秒
	 * @param wribSvcTrgtSvcCd 割引サービス対象サービスコード
	 * @param wribSvcCd 割引サービスコード
	 * @param idoDiv 異動区分
	 * @throws RequestParameterException
	 */
	private void setInMapWribSvcKeiRegist(IRequestParameterReadWrite param, String fixedText, String sysId, String mskmDtlNo, String svcKeiNo,
			String updDtm, String wribSvcTrgtSvcCd, String wribSvcCd, String idoDiv) throws RequestParameterException
	{
		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// SYSID
		inMap.put(EKK0451D010CBSMsg.SYSID, sysId);
		// 割引サービスコード
		inMap.put(EKK0451D010CBSMsg.WRIB_SVC_CD, wribSvcCd);
		// 申込明細番号
		inMap.put(EKK0451D010CBSMsg.MSKM_DTL_NO, mskmDtlNo);
		// 即時適用フラグ
		inMap.put(EKK0451D010CBSMsg.APLY_JUN, JFUStrConst.CD00403_1);
		// 異動区分
		inMap.put(EKK0451D010CBSMsg.IDO_DIV, idoDiv);
		// 申込起算年月日
		inMap.put(EKK0451D010CBSMsg.MSKM_KISAN_YMD, JFUBPCommon.getOpeDate(null));
		// 割引登録契機コード
		inMap.put(EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD, JFUStrConst.CD00874_2);
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0451D010CBSMsg.UPD_DTM_BF, updDtm);

		ArrayList list = new ArrayList();
		HashMap childMap = new HashMap();

		for (String key : IN_COLUMN_LIST_6_DETAIL)
		{
			childMap.put(key, null);
		}

		// 対象契約識別コード
		childMap.put(EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD, JFUStrConst.CD00804_01);
		// サービス契約番号
		childMap.put(EKK0451D010CBSMsg1List.SVC_KEI_NO, svcKeiNo);
		// 割引サービス対象サービスコード
		childMap.put(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
		// 割引サービス対象契約適用開始年月日
		childMap.put(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD, JFUBPCommon.getOpeDate(null));
		// 割引サービス対象契約適用終了年月日
		childMap.put(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD, JFUStrConst.DEFAULT_YYYYMMDD);
		list.add(childMap);

		inMap.put(EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST, list);

	}

	/**
	 * 上りマッピング項目設定(割引サービス一意照会)です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param wribSvcCd 割引サービスコード
	 * @throws RequestParameterException
	 */
	protected void setInMapWribMstSearch(IRequestParameterReadWrite param, String fixedText, String wribSvcCd) throws RequestParameterException
	{
		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿割引サービスコード
		inMap.put(EKK0841A010CBSMsg.KEY_WRIB_SVC_CD, wribSvcCd);
		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK0841A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));
	}

	/**
	 * 上りマッピング項目設定(割引サービス契約(予約とカレント件数)一覧照会）です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @param wribSvcCd 割引サービスコード
	 * @throws RequestParameterException
	 */
	private void setInMapWribSvcKeiCntSearch(IRequestParameterReadWrite param, String fixedText, String svcKeiNo, String wribSvcCd)
			throws RequestParameterException
	{
		// 機能コード設定(3)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_3);
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0451B506CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿割引サービスコード
		inMap.put(EKK0451B506CBSMsg.KEY_WRIB_SVC_CD, wribSvcCd);
	}

	/**
	 * 運用日時が日付範囲内であるかチェック
	 * 
	 * <br>
	 * @param staymd 開始日時
	 * @param endymd 終了日時
	 * @return true:運用日時が開始、終了日時の範囲内、false:範囲外
	 */
	private boolean isDateHaniCheck(String staymdhm, String endymdhm)
	{

		String wk = JFUBPCommon.getOpeDateTime(null);
		long start = parseLong(staymdhm);
		long end = parseLong(endymdhm);
		wk = wk.substring(I_DAY_START, I_DAY_END);
		long opeDate = parseLong(wk);

		if ((start <= opeDate) && (opeDate <= end))
		{
			return true;
		}
		return false;
	}

	/**
	 * 数値変換
	 * 
	 * <br>
	 * @param value 数値文字列
	 * @return 数値
	 */
	private long parseLong(String value)
	{
		if (JFUBPCommon.isNull(value))
		{
			return 0;
		}
		return Long.parseLong(value);
	}

}
