/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0611_KKSV0611OPDBMapper
*	ソースファイル名：KKSV0611_KKSV0611OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年07月19日
*＜機能概要＞
*	BP（eo光テレビ新コース登録／コース変更初期表示）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/07/19	FJ)磯俣		新規作成
*	v4.00.00	2012/10/27	FJ)磯俣		IT1-2012-0001738(参照履歴ボタンの設定カウント修正)
*   v4.00.01    2012/11/07  FJ）磯俣    IT1-1709(ヘッダ部表示の変更対応)
*   v4.00.02    2012/12/12  FJ）磯俣    IT2-2339(プルダウン項目でSDコース対応)
*   v4.00.03    2013/02/28  FJ）野口   【IT2-2012-0002413】対応
*   v4.00.04	2013/07/09  FJ)磯俣	   【IT1-2013-0001369】視聴制御対応
*   v6.00.00	2013/12/20  FJ)磯俣	   【ANK-2013-1672】異動区分がSTB以外の予約は取得しない
*   v9.00.00    2014/07/02  FJ)藤本    【OM-2014-0002043】STBのコース変更予約が複数投入できてしまう
*   v19.00.00   2015/09/03  FJ)森脇    【OM-2015-0000178】コース変更予約中STBの画面制御不備
*   v25.00.00	2016/03/16	FJ)抱      【ANK-2530-00-00】TV新コースおよびVOD導入
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.util.JPCUtilCommon;
import eo.web.webview.common.JKKCommonConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0611_KKSV0611OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0611_KKSV0611OPDBMapper(){
	}
	
	/**
	 * STB機器種別コード
	 */
	private static final String SBT_CD_STB = "A0";
	
	/**
	 * BCAS機器種別コード
	 */
	private static final String SBT_CD_BCAS = "B0";
	
	/**
	 * CCAS機器種別コード
	 */
	private static final String SBT_CD_CCAS = "C0";

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV061101CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// サービス契約番号 → 設置済STB一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 異動区分 → 設置済STB一覧照会マップ.ＫＥＹ＿異動区分
		parentMap.put("key_ido_div", "");

		outputMap.put("KKSV061101CC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV061102SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// テレビの料金グループコード → 料金プラン・料金コース一覧照会マップ.ＫＥＹ＿料金グループコード
//		parentMap.put("key_pplan_div", "11,12,13");
		
		// サービス契約内訳の料金プラン区分コード → 料金プラン・料金コース一覧照会マップ.ＫＥＹ＿料金プラン区分
		parentMap.put("key_pplan_div", "05");

		outputMap.put("KKSV061102SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV061103CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// サービス契約番号 → サービス契約共通情報取得マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 異動区分 → サービス契約共通情報取得マップ.ＫＥＹ＿業務パラメータＩＤ
		parentMap.put("ido_div", bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		
		
		outputMap.put("KKSV061103CC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV061104SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// サービス契約番号 → サービス契約一意照会マップ.サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 運用日 → サービス契約一意照会マップ.基準日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV061104SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV061105SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ヘッダー料金コースコード → 料金コース一意照会マップ.ＫＥＹ＿料金コースコード
		parentMap.put("key_pcrs_cd", bean[0].sendMessageString("ヘッダー料金コースコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 運用日 → 料金コース一意照会マップ.基準日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV061105SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV061106SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// サービス契約番号 → マンション情報一覧照会(サービス契約番号)マップ.サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 運用日 → マンション情報一覧照会(サービス契約番号)マップ.基準日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV061106SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV061107SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		String pcrsCd = bean[0].sendMessageString("ヘッダー料金コースコード", X31CWebConst.DATABEAN_GET_VALUE);
		
		// 料金コースコードがＳＤコースの場合
		if(JKKCommonConst.PCRS_CD_A24.equals(pcrsCd) || JKKCommonConst.PCRS_CD_A38.equals(pcrsCd))
		{
			// "0" → 料金プラン一覧照会(タイプ別)マップ.ＫＥＹ＿TVコースグループコード
			parentMap.put("key_tv_course_grp_cd", "0");
		}
		// 料金コースコードがＨＤコースの場合
		else if(JKKCommonConst.PCRS_CD_A39.equals(pcrsCd) || JKKCommonConst.PCRS_CD_A64.equals(pcrsCd))
		{
			// "1" → 料金プラン一覧照会(タイプ別)マップ.ＫＥＹ＿TVコースグループコード
			parentMap.put("key_tv_course_grp_cd", "1");
		}
		else
		{
			parentMap.put("key_tv_course_grp_cd", "");
		}
		
		// "2" → 料金プラン一覧照会(タイプ別)マップ.ＫＥＹ＿料金コース種別コード
		parentMap.put("key_pcrs_sbt_cd", "2");
		// "05" → 料金プラン一覧照会(タイプ別)マップ.ＫＥＹ＿料金プラン区分
		parentMap.put("key_pplan_div", "05");
		// "01" → 料金プラン一覧照会(タイプ別)マップ.ＫＥＹ＿料金プラン料金種別コード
		parentMap.put("key_pplan_prc_sbt_cd", "01");

		outputMap.put("KKSV061107SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV061108SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// サービス契約番号 → マンション情報一覧照会(サービス契約番号)マップ.サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		

		outputMap.put("KKSV061108SC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV061109SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		outputMap.put("KKSV061109SC", parentMap);
						
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV061101CC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV061101CC")){
			parentMap = (HashMap)outputMap.get("KKSV061101CC");
		}

		ArrayList childList = null;
		ArrayList tkniList = null;
		
		// サービス契約内訳番号
		String svcKeiUcwk = "";

		X31SDataBeanAccessArray listKKSV061101SC_stb_chg_mskm_list_EKK0161B007CBSMsg1List = bean[0].getDataBeanArray("ＳＴＢ変更申込情報リスト");
		listKKSV061101SC_stb_chg_mskm_list_EKK0161B007CBSMsg1List.clearArray();
		
		if(parentMap.containsKey("EKK0161B007CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0161B007CBSMsg1List");

			if(parentMap.containsKey("EKKA0020003CBSMsg2List")){
				tkniList = (ArrayList)parentMap.get("EKKA0020003CBSMsg2List");
			}
			
			// 履歴参照ボタン用カウント
			int btnCount = 0;
			
			// STB-ID番号編集用変数
			int stbNo = 1;
			X31SDataBeanAccess subbean = null;
			
			// OM-2015-0000178 ADD START
			// 宅内機器型式コード退避用
			String bkTkMdlCd = null;
			// 機器製造番号退避用
			String bkKikiNo = null;
			// OM-2015-0000178 ADD END
			
			for(int i = 0; i < childList.size(); i++){
				
				
				
				HashMap childMap = (HashMap)childList.get(i);
			
				// 宅内機器種別コード
				String tkSbtCd = (String)childMap.get("taknkiki_sbt_cd");
				// 宅内機器型式コード
				String tkMdlCd = (String)childMap.get("taknkiki_model_cd");
				// 機器製造番号
				String kikiNo = (String)childMap.get("kiki_seizo_no");
				
				
				// 初回のみの処理
				if(i == 0){
				
					subbean = listKKSV061101SC_stb_chg_mskm_list_EKK0161B007CBSMsg1List.addDataBean();
					
					// ＳＴＢ変更申込情報リスト.サービス契約内訳番号 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.サービス契約内訳番号
					subbean.sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_ucwk_no"));
					// ＳＴＢ変更申込情報リスト.メーカー ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.メーカー名1
					subbean.sendMessageString("メーカー", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("maker_nm_1"));
					// ＳＴＢ変更申込情報リスト.型番号 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.宅内機器型式コード
					subbean.sendMessageString("型番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("taknkiki_model_cd"));
					// ＳＴＢ変更申込情報リスト.ＨＤＤ容量 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.HDD容量コード名称
					subbean.sendMessageString("ＨＤＤ容量", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hdd_capa_cd_nm"));
					// ANK-2530-00-00 2016/03/16 ADD START
					// ＳＴＢ変更申込情報リスト.ＨＤＤ容量コード ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.HDD容量コード
					subbean.sendMessageString("ＨＤＤ容量コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hdd_capa_cd"));
					// ANK-2530-00-00 2016/03/16 ADD END
					// ＳＴＢ変更申込情報リスト.変更前ＴＶコースコード ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード
					subbean.sendMessageString("変更前ＴＶコースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd"));
					// ＳＴＢ変更申込情報リスト.変更後ＴＶコース名 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード名称
					subbean.sendMessageString("変更前ＴＶコース名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd_nm"));
					
					// ＳＴＢ変更申込情報リスト.変更後ＴＶコースコード ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード（予約）
					subbean.sendMessageString("変更後ＴＶコースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd_rsv"));
					// ＳＴＢ変更申込情報リスト.変更後ＴＶコース名 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード名称（予約）
					subbean.sendMessageString("変更後ＴＶコース名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd_nm_rsv"));
					
					// ＳＴＢ変更申込情報リスト.プラン課金開始年月日 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.プラン課金開始年月日
					String planChrgStaymd = (String)childMap.get("plan_chrg_staymd_rsv");
					subbean.sendMessageString("課金開始日（年）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toYearFromYmd(planChrgStaymd));
					subbean.sendMessageString("課金開始日（月）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toMonthFromYmd(planChrgStaymd));
					subbean.sendMessageString("課金開始日（日）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toDayFromYmd(planChrgStaymd));
					// ＳＴＢ変更申込情報リスト.プラン課金開始年月日 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.プラン課金開始年月日
					String planChrgEndymd = (String)childMap.get("plan_chrg_endymd");
					subbean.sendMessageString("課金終了日（年）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toYearFromYmd(planChrgEndymd));
					subbean.sendMessageString("課金終了日（月）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toMonthFromYmd(planChrgEndymd));
					subbean.sendMessageString("課金終了日（日）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toDayFromYmd(planChrgEndymd));
					// ＳＴＢ変更申込情報リスト.提供方式契約番号 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.提供方式契約番号
					subbean.sendMessageString("提供方式契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tk_hoshiki_kei_no"));
					// ＳＴＢ変更申込情報リスト.異動区分予約 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.異動区分（予約）
					String idoDivRsv = (String)childMap.get("ido_div_rsv");
					// OM-2014-0002043 STBのコース変更予約が複数投入できてしまう 2014/07/02 START
//					if(idoDivRsv == null || "".equals(idoDivRsv) || !JKKCommonConst.IDO_DIV_VALUE_00068.equals(idoDivRsv)) {
					// 異動予約詳細コードを取得
					String idoRsvDtlCd = (String)childMap.get("ido_rsv_dtl_cd");
					// STBのコース変更予約がない場合
					if(idoDivRsv == null || "".equals(idoDivRsv) || !JKKCommonConst.IDO_RSV_DTL_CD_COURSECHG.equals(idoRsvDtlCd)) {
					// OM-2014-0002043 STBのコース変更予約が複数投入できてしまう 2014/07/02 END
						subbean.sendMessageString("異動区分予約", X31CWebConst.DATABEAN_SET_VALUE, "");
					} else {
						subbean.sendMessageString("異動区分予約", X31CWebConst.DATABEAN_SET_VALUE, idoDivRsv);
					}
					// ＳＴＢ変更申込情報リスト.予約適用年月日 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.予約適用年月日
					subbean.sendMessageString("予約適用年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("rsv_aply_ymd"));
					
					// 履歴参照ボタン押下時の設定
					subbean.sendMessageString("履歴参照ボタン", X31CWebConst.DATABEAN_SET_VALUE, "selRirekiBtn('" + btnCount + "');");
					btnCount++;
					
					// STBの場合
					if(SBT_CD_STB.equals(tkSbtCd)){
						
						subbean.sendMessageString("機器製造番号", X31CWebConst.DATABEAN_SET_VALUE, kikiNo);
						
						if(tkniList != null && tkniList.size() > 0)
						{
							// STB-IDを取得する
							for(int j = 0; j < tkniList.size(); j++){
								
								HashMap tkniMap = (HashMap)tkniList.get(j);
								
								// 宅内機器一意照会（４）明細.宅内機器型式コード
								String tkni_tkMdlCd = (String)tkniMap.get("tk_mdl_cd");
								// 宅内機器一意照会（４）明細.機器製造番号
								String tkni_kikiSeizoNo = (String)tkniMap.get("kk_seizo_no");
								
								if(tkMdlCd.equals(tkni_tkMdlCd) && kikiNo.equals(tkni_kikiSeizoNo))
								{
									subbean.sendMessageString("ＳＴＢーＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)tkniMap.get("stbid"));
									break;
								}
							}
						}
						
					// BCASの場合
					}else if(SBT_CD_BCAS.equals(tkSbtCd)){
						
						subbean.sendMessageString("ＢＣＡＳーＩＤ", X31CWebConst.DATABEAN_SET_VALUE, kikiNo);
					
					// CCASの場合
					}else if(SBT_CD_CCAS.equals(tkSbtCd)){
						
						subbean.sendMessageString("ＣＣＡＳーＩＤ", X31CWebConst.DATABEAN_SET_VALUE, kikiNo);
					}
					
					// STB-IDのラベル番号
					subbean.sendMessageString("ＳＴＢーＩＤ番号", X31CWebConst.DATABEAN_SET_VALUE, "STB" + String.valueOf(stbNo));
					stbNo++;
					
					// サービス契約内訳番号を退避
					svcKeiUcwk = (String)childMap.get("svc_kei_ucwk_no");
					
					// OM-2015-0000178 ADD START
					// 宅内機器型式コードを退避
					bkTkMdlCd = tkMdlCd;
					// 機器製造番号を退避
					bkKikiNo = kikiNo;
					// OM-2015-0000178 ADD END

					continue;
				}

				
				// サービス契約内訳番号が同じ間、１レコードに集約する
				if(svcKeiUcwk.equals((String)childMap.get("svc_kei_ucwk_no"))){
					
					
					// STBの場合
					if(SBT_CD_STB.equals(tkSbtCd)){
						
						subbean.sendMessageString("機器製造番号", X31CWebConst.DATABEAN_SET_VALUE, kikiNo);
						
						if(tkniList != null && tkniList.size() > 0)
						{
							// STB-IDを取得する
							for(int j = 0; j < tkniList.size(); j++){
								
								HashMap tkniMap = (HashMap)tkniList.get(j);
								
								// 宅内機器一意照会（４）明細.宅内機器型式コード
								String tkni_tkMdlCd = (String)tkniMap.get("tk_mdl_cd");
								// 宅内機器一意照会（４）明細.機器製造番号
								String tkni_kikiSeizoNo = (String)tkniMap.get("kk_seizo_no");
								
								if(tkMdlCd.equals(tkni_tkMdlCd) && kikiNo.equals(tkni_kikiSeizoNo))
								{
									subbean.sendMessageString("ＳＴＢーＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)tkniMap.get("stbid"));
									break;
								}
							}
						}
						
					// BCASの場合
					}else if(SBT_CD_BCAS.equals(tkSbtCd)){
						
						subbean.sendMessageString("ＢＣＡＳーＩＤ", X31CWebConst.DATABEAN_SET_VALUE, kikiNo);
					
					// CCASの場合
					}else if(SBT_CD_CCAS.equals(tkSbtCd)){
						
						subbean.sendMessageString("ＣＣＡＳーＩＤ", X31CWebConst.DATABEAN_SET_VALUE, kikiNo);
					}
					
					// OM-2015-0000178 ADD START
					// 機器型式コード、機器製造番号が一致する場合（重複処理の制御）
					if (bkTkMdlCd.equals(tkMdlCd) && bkKikiNo.equals(kikiNo))
					{
						// 異動区分（予約）
						String idoDivRsv = (String)childMap.get("ido_div_rsv");
						// 異動予約詳細コードを取得
						String idoRsvDtlCd = (String)childMap.get("ido_rsv_dtl_cd");
						// STBのコース変更予約がある場合は再設定
						if(idoDivRsv != null && !"".equals(idoDivRsv) && JKKCommonConst.IDO_RSV_DTL_CD_COURSECHG.equals(idoRsvDtlCd)) 
						{
							// ＳＴＢ変更申込情報リスト.サービス契約内訳番号 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.サービス契約内訳番号
							subbean.sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_ucwk_no"));
							// ＳＴＢ変更申込情報リスト.メーカー ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.メーカー名1
							subbean.sendMessageString("メーカー", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("maker_nm_1"));
							// ＳＴＢ変更申込情報リスト.型番号 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.宅内機器型式コード
							subbean.sendMessageString("型番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("taknkiki_model_cd"));
							// ＳＴＢ変更申込情報リスト.ＨＤＤ容量 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.HDD容量コード名称
							subbean.sendMessageString("ＨＤＤ容量", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hdd_capa_cd_nm"));
							// ANK-2530-00-00 2016/03/16 ADD START
							// ＳＴＢ変更申込情報リスト.ＨＤＤ容量コード ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.HDD容量コード
							subbean.sendMessageString("ＨＤＤ容量コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hdd_capa_cd"));
							// ANK-2530-00-00 2016/03/16 ADD END
							// ＳＴＢ変更申込情報リスト.変更前ＴＶコースコード ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード
							subbean.sendMessageString("変更前ＴＶコースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd"));
							// ＳＴＢ変更申込情報リスト.変更後ＴＶコース名 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード名称
							subbean.sendMessageString("変更前ＴＶコース名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd_nm"));
							
							// ＳＴＢ変更申込情報リスト.変更後ＴＶコースコード ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード（予約）
							subbean.sendMessageString("変更後ＴＶコースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd_rsv"));
							// ＳＴＢ変更申込情報リスト.変更後ＴＶコース名 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード名称（予約）
							subbean.sendMessageString("変更後ＴＶコース名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd_nm_rsv"));
							
							// ＳＴＢ変更申込情報リスト.プラン課金開始年月日 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.プラン課金開始年月日
							String planChrgStaymd = (String)childMap.get("plan_chrg_staymd_rsv");
							subbean.sendMessageString("課金開始日（年）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toYearFromYmd(planChrgStaymd));
							subbean.sendMessageString("課金開始日（月）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toMonthFromYmd(planChrgStaymd));
							subbean.sendMessageString("課金開始日（日）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toDayFromYmd(planChrgStaymd));
							// ＳＴＢ変更申込情報リスト.プラン課金開始年月日 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.プラン課金開始年月日
							String planChrgEndymd = (String)childMap.get("plan_chrg_endymd");
							subbean.sendMessageString("課金終了日（年）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toYearFromYmd(planChrgEndymd));
							subbean.sendMessageString("課金終了日（月）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toMonthFromYmd(planChrgEndymd));
							subbean.sendMessageString("課金終了日（日）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toDayFromYmd(planChrgEndymd));
							// ＳＴＢ変更申込情報リスト.提供方式契約番号 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.提供方式契約番号
							subbean.sendMessageString("提供方式契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tk_hoshiki_kei_no"));
							// ＳＴＢ変更申込情報リスト.異動区分予約 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.異動区分（予約）
							subbean.sendMessageString("異動区分予約", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_div_rsv"));
							// ＳＴＢ変更申込情報リスト.予約適用年月日 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.予約適用年月日
							subbean.sendMessageString("予約適用年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("rsv_aply_ymd"));
						}
					}
					// OM-2015-0000178 ADD END
				}else{
				
					// 次のレコードを作成する
					subbean = null;
					subbean = listKKSV061101SC_stb_chg_mskm_list_EKK0161B007CBSMsg1List.addDataBean();
					
					// ＳＴＢ変更申込情報リスト.サービス契約内訳番号 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.サービス契約内訳番号
					subbean.sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_ucwk_no"));
					// ＳＴＢ変更申込情報リスト.メーカー ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.メーカー名1
					subbean.sendMessageString("メーカー", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("maker_nm_1"));
					// ＳＴＢ変更申込情報リスト.型番号 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.宅内機器型式コード
					subbean.sendMessageString("型番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("taknkiki_model_cd"));
					// ＳＴＢ変更申込情報リスト.ＨＤＤ容量 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.HDD容量コード名称
					subbean.sendMessageString("ＨＤＤ容量", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hdd_capa_cd_nm"));
					// ANK-2530-00-00 2016/03/16 ADD START
					// ＳＴＢ変更申込情報リスト.ＨＤＤ容量コード ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.HDD容量コード
					subbean.sendMessageString("ＨＤＤ容量コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hdd_capa_cd"));
					// ANK-2530-00-00 2016/03/16 ADD END
					// ＳＴＢ変更申込情報リスト.変更前ＴＶコースコード ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード
					subbean.sendMessageString("変更前ＴＶコースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd"));
					// ＳＴＢ変更申込情報リスト.変更後ＴＶコース名 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード名称
					subbean.sendMessageString("変更前ＴＶコース名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd_nm"));
					
					
					// ＳＴＢ変更申込情報リスト.変更後ＴＶコースコード ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード（予約）
					subbean.sendMessageString("変更後ＴＶコースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd_rsv"));
					// ＳＴＢ変更申込情報リスト.変更後ＴＶコース名 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード名称（予約）
					subbean.sendMessageString("変更後ＴＶコース名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd_nm_rsv"));
					
					// ＳＴＢ変更申込情報リスト.プラン課金開始年月日 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.プラン課金開始年月日
					String planChrgStaymd = (String)childMap.get("plan_chrg_staymd_rsv");
					subbean.sendMessageString("課金開始日（年）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toYearFromYmd(planChrgStaymd));
					subbean.sendMessageString("課金開始日（月）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toMonthFromYmd(planChrgStaymd));
					subbean.sendMessageString("課金開始日（日）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toDayFromYmd(planChrgStaymd));
					// ＳＴＢ変更申込情報リスト.プラン課金開始年月日 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.プラン課金開始年月日
					String planChrgEndymd = (String)childMap.get("plan_chrg_endymd");
					subbean.sendMessageString("課金終了日（年）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toYearFromYmd(planChrgEndymd));
					subbean.sendMessageString("課金終了日（月）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toMonthFromYmd(planChrgEndymd));
					subbean.sendMessageString("課金終了日（日）", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toDayFromYmd(planChrgEndymd));
					// ＳＴＢ変更申込情報リスト.提供方式契約番号 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.提供方式契約番号
					subbean.sendMessageString("提供方式契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tk_hoshiki_kei_no"));
					// ＳＴＢ変更申込情報リスト.異動区分予約 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.異動区分（予約）
					String idoDivRsv = (String)childMap.get("ido_div_rsv");
					// OM-2014-0002043 STBのコース変更予約が複数投入できてしまう 2014/07/02 START
//					if(idoDivRsv == null || "".equals(idoDivRsv) || !JKKCommonConst.IDO_DIV_VALUE_00068.equals(idoDivRsv)) {
					// 異動予約詳細コードを取得
					String idoRsvDtlCd = (String)childMap.get("ido_rsv_dtl_cd");
					// STBのコース変更予約がない場合
					if(idoDivRsv == null || "".equals(idoDivRsv) || !JKKCommonConst.IDO_RSV_DTL_CD_COURSECHG.equals(idoRsvDtlCd)) {
					// OM-2014-0002043 STBのコース変更予約が複数投入できてしまう 2014/07/02 END
						subbean.sendMessageString("異動区分予約", X31CWebConst.DATABEAN_SET_VALUE, "");
					} else {
						subbean.sendMessageString("異動区分予約", X31CWebConst.DATABEAN_SET_VALUE, idoDivRsv);
					}
					// ＳＴＢ変更申込情報リスト.予約適用年月日 ← 設置済STB一覧照会マップ.設置済ＳＴＢ一覧照会明細.予約適用年月日
					subbean.sendMessageString("予約適用年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("rsv_aply_ymd"));
					
					
					// 履歴参照ボタン押下時の設定
					subbean.sendMessageString("履歴参照ボタン", X31CWebConst.DATABEAN_SET_VALUE, "selRirekiBtn('" + btnCount + "');");
					btnCount++;
					
					// STBの場合
					if(SBT_CD_STB.equals(tkSbtCd)){
						
						subbean.sendMessageString("機器製造番号", X31CWebConst.DATABEAN_SET_VALUE, kikiNo);
						
						if(tkniList != null && tkniList.size() > 0)
						{
							// STB-IDを取得する
							for(int j = 0; j < tkniList.size(); j++){
								
								HashMap tkniMap = (HashMap)tkniList.get(j);
								
								// 宅内機器一意照会（４）明細.宅内機器型式コード
								String tkni_tkMdlCd = (String)tkniMap.get("tk_mdl_cd");
								// 宅内機器一意照会（４）明細.機器製造番号
								String tkni_kikiSeizoNo = (String)tkniMap.get("kk_seizo_no");
								
								if(tkMdlCd.equals(tkni_tkMdlCd) && kikiNo.equals(tkni_kikiSeizoNo))
								{
									subbean.sendMessageString("ＳＴＢーＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)tkniMap.get("stbid"));
									break;
								}
							}
						}
						
					// BCASの場合
					}else if(SBT_CD_BCAS.equals(tkSbtCd)){
						
						subbean.sendMessageString("ＢＣＡＳーＩＤ", X31CWebConst.DATABEAN_SET_VALUE, kikiNo);
					
					// CCASの場合
					}else if(SBT_CD_CCAS.equals(tkSbtCd)){
						
						subbean.sendMessageString("ＣＣＡＳーＩＤ", X31CWebConst.DATABEAN_SET_VALUE, kikiNo);
					}
					
					// STB-IDのラベル番号
					subbean.sendMessageString("ＳＴＢーＩＤ番号", X31CWebConst.DATABEAN_SET_VALUE, "STB" + String.valueOf(stbNo));
					stbNo++;
					
					// OM-2015-0000178 ADD START
					// 宅内機器型式コードを退避
					bkTkMdlCd = tkMdlCd;
					// 機器製造番号を退避
					bkKikiNo = kikiNo;
					// OM-2015-0000178 ADD END
				}
				
				// サービス契約内訳番号を退避する
				svcKeiUcwk = (String)childMap.get("svc_kei_ucwk_no");
			}
		}


		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV061102SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV061102SC")){
			parentMap = (HashMap)outputMap.get("KKSV061102SC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV061102SC_tv_crs_list_EKK0591B005CBSMsg1List = bean[0].getDataBeanArray("ＴＶコースリスト");
		listKKSV061102SC_tv_crs_list_EKK0591B005CBSMsg1List.clearArray();
		
		X31SDataBeanAccess subbean = listKKSV061102SC_tv_crs_list_EKK0591B005CBSMsg1List.addDataBean();
		
		childList = null;
		if(parentMap.containsKey("EKK0591B005CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0591B005CBSMsg1List");

			
			
			// 先頭空白行
			subbean.sendMessageString("コードタイプコード値リスト", X31CWebConst.DATABEAN_ADD_VALUE, "");
			subbean.sendMessageString("コードタイプ名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, "");
			subbean.sendMessageString("初期設定コード", X31CWebConst.DATABEAN_ADD_VALUE, "");
			
			for(int i = 0; i < childList.size(); i++){
				
				HashMap childMap = (HashMap)childList.get(i);
			
				// ＴＶコースリスト.コードタイプコード値リスト ← 料金プラン・料金コース一覧照会マップ.料金プラン一覧照会（サービス契約ＴＶ）明細.料金プランコード
				subbean.sendMessageString("コードタイプコード値リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pplan_cd"));
				// ＴＶコースリスト.コードタイプ名称リスト ← 料金プラン・料金コース一覧照会マップ.料金プラン一覧照会（サービス契約ＴＶ）明細.料金プラン名
				subbean.sendMessageString("コードタイプ名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pplan_nm"));
				// ＴＶコースリスト.初期設定コード ← 料金プラン・料金コース一覧照会マップ.料金プラン一覧照会（サービス契約ＴＶ）明細.料金コースコード
				subbean.sendMessageString("初期設定コード", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pcrs_cd"));
				
			}
		}


		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV061103CC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV061103CC")){
			parentMap = (HashMap)outputMap.get("KKSV061103CC");
		}
		
		ArrayList childList = null;
		
		if (parentMap != null)
		{
			
			// ヘッダーマンションID ← サービス契約共通情報一覧照会明細.マンションＩＤ
			bean[0].sendMessageString("ヘッダーマンションＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("mansion_id"));
			// ヘッダーマンション名 ← サービス契約共通情報一覧照会明細.マンション名
//			bean[0].sendMessageString("ヘッダーマンション名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mansion_nm"));
			
			// ヘッダーマンション名 ← サービス契約共通情報一覧照会明細.回線使用契約物件名
			bean[0].sendMessageString("ヘッダーマンション名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("kisnusekei_bkn_nm"));
			// PID ← サービス契約共通情報一覧照会明細.Ｐ−ＩＤ
			bean[0].sendMessageString("Ｐ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("p_id"));
			// CATID ← サービス契約共通情報一覧照会明細.ＣＡＴ−ＩＤ
			bean[0].sendMessageString("ＣＡＴ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("cat_id"));
			
			// ヘッダーお客様名 ← サービス契約共通情報一覧照会明細.お客様名
			bean[0].sendMessageString("ヘッダーお客様名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("cust_nm"));
			// ヘッダー契約者電話番号 ← サービス契約共通情報一覧照会明細.契約者電話番号
			bean[0].sendMessageString("ヘッダー契約者電話番号", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("keisha_telno"));
			// ヘッダー契約者住所 ← サービス契約共通情報一覧照会明細.契約者住所
//			bean[0].sendMessageString("ヘッダー契約者住所", X31CWebConst.DATABEAN_SET_VALUE, setAdInfo(childMap));
			bean[0].sendMessageString("ヘッダー契約者住所", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("keisha_ad"));
			// ヘッダー請求契約番号 ← サービス契約共通情報一覧照会明細.請求契約番号
			bean[0].sendMessageString("ヘッダー請求契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("seiky_kei_no"));
			// ヘッダーＳＹＳＩＤ ← サービス契約共通情報一覧照会明細.ＳＹＳＩＤ
			bean[0].sendMessageString("ヘッダーＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sysid"));
			// ヘッダーｅｏＩＤ ← サービス契約共通情報一覧照会明細.ｅｏＩＤ
			bean[0].sendMessageString("ヘッダーｅｏＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("eoid"));
			// ヘッダー料金グループコード ← サービス契約共通情報一覧照会明細.料金グループコード
			bean[0].sendMessageString("ヘッダー料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("prc_grp_cd"));
			// ヘッダー料金グループ名 ← サービス契約共通情報一覧照会明細.料金グループ名
			bean[0].sendMessageString("ヘッダー料金グループ名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("prc_grp_nm"));
			// ヘッダー料金コースコード ← サービス契約共通情報一覧照会明細.料金コースコード
			bean[0].sendMessageString("ヘッダー料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("pcrs_cd"));
			// ヘッダーＡＤＳＬ表示フラグ ← サービス契約共通情報一覧照会明細.ＡＤＳＬ表示フラグ
			bean[0].sendMessageString("ヘッダーＡＤＳＬ表示フラグ", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("adsl_dsp_flg"));
			
			// ヘッダー料金コース名 ← サービス契約共通情報一覧照会マップ.料金プラン名
			bean[0].sendMessageString("ヘッダー料金コース名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("pplan_nm"));
			
			// ヘッダー機器提供サービス契約番号 ← サービス契約共通情報一覧照会明細.機器提供サービス契約番号
//			bean[0].sendMessageString("ヘッダー機器提供サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kktk_svc_kei_no"));
			
			
			// ヘッダー割引サービス契約番号 ← サービス契約共通情報一覧照会明細.ファミリーパック
			bean[0].sendMessageString("ヘッダー割引サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("family_pack_um"));
			// ヘッダーサービス契約ステータス名称
			bean[0].sendMessageString("ヘッダーサービス契約ステータス名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("svc_kei_stat_nm"));
			// ヘッダー異動区分名称
			bean[0].sendMessageString("ヘッダー異動区分名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("ido_nm"));
			// ヘッダー督促状態
			bean[0].sendMessageString("ヘッダー督促状態", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("tokusoku_stat_nm"));
			// ヘッダールータ有無
			bean[0].sendMessageString("ヘッダールータ有無", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("router_sbt_nm"));
			
/* ++++++++++ v4.00.03 追加開始 ++++++++++ */
			// ヘッダー予約状況
			bean[0].sendMessageString("ヘッダー予約状況", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("rsv_jokyo"));
/* ++++++++++ v4.00.03 追加終了 ++++++++++ */
		
		}
		
		
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV061104SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV061104SC")){
			parentMap = (HashMap)outputMap.get("KKSV061104SC");
		}

		
		// 申込明細番号 ← サービス契約一意照会マップ.申込明細番号
//		bean[0].sendMessageString("申込明細番号", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("mskm_dtl_no"));
		// 最終更新年月日時分秒 ← サービス契約一意照会マップ.最終更新年月日時分秒
		bean[0].sendMessageString("最終更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("last_upd_dtm"));
		

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：ｅｏ光テレビ　新コース登録／変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV061107SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV061107SC")){
			parentMap = (HashMap)outputMap.get("KKSV061107SC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV061107SC_tv_crs_list_EKK0591B007CBSMsg1List = bean[0].getDataBeanArray("ＴＶコースリスト");
		listKKSV061107SC_tv_crs_list_EKK0591B007CBSMsg1List.clearArray();
		
		childList = null;
		
		X31SDataBeanAccess subbean = listKKSV061107SC_tv_crs_list_EKK0591B007CBSMsg1List.addDataBean();
		
		// 先頭空白行
		subbean.sendMessageString("コードタイプコード値リスト", X31CWebConst.DATABEAN_ADD_VALUE, "");
		subbean.sendMessageString("コードタイプ名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, "");
		subbean.sendMessageString("初期設定コード", X31CWebConst.DATABEAN_ADD_VALUE, "");
		
		if(parentMap.containsKey("EKK0591B007CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0591B007CBSMsg1List");

			
			
			for(int i = 0; i < childList.size(); i++){
				
				HashMap childMap = (HashMap)childList.get(i);
			
				// ＴＶコースリスト.コードタイプコード値リスト ← 料金プラン・料金コース一覧照会マップ.料金プラン一覧照会（サービス契約ＴＶ）明細.料金プランコード
				subbean.sendMessageString("コードタイプコード値リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pplan_cd"));
				// ＴＶコースリスト.コードタイプ名称リスト ← 料金プラン・料金コース一覧照会マップ.料金プラン一覧照会（サービス契約ＴＶ）明細.料金プラン名
				subbean.sendMessageString("コードタイプ名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pplan_nm"));
				// ＴＶコースリスト.初期設定コード ← 料金プラン・料金コース一覧照会マップ.料金プラン一覧照会（サービス契約ＴＶ）明細.料金コースコード
				subbean.sendMessageString("初期設定コード", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pcrs_cd"));
				
			}
			
			// 予約情報を取得する
			if(outputMap.containsKey("KKSV061108SC")){
				parentMap = (HashMap)outputMap.get("KKSV061108SC");
			}
			// 新料金コースコード
			String newPcrsCd = "";
			if(parentMap.containsKey("new_pcrs_cd"))
			{
				newPcrsCd = (String)parentMap.get("new_pcrs_cd");
				// 予約コースがHDでない場合
				if(!JKKCommonConst.PCRS_CD_A39.equals(newPcrsCd) && !JKKCommonConst.PCRS_CD_A64.equals(newPcrsCd))
				{
					newPcrsCd = "";
				}
			}
			
			// HDコースのプルダウン値を取得する
			if(outputMap.containsKey("KKSV061109SC")){
				parentMap = (HashMap)outputMap.get("KKSV061109SC");
			}
			
			String div = bean[0].sendMessageString("処理区分", X31CWebConst.DATABEAN_GET_VALUE);
			String flg = bean[0].sendMessageString("遷移フラグ", X31CWebConst.DATABEAN_GET_VALUE);
			
			// 遷移元が異動区分選択画面でサービスに紐付く予約がある場合
			if("1".equals(div) && !"1".equals(flg) && !"".equals(newPcrsCd))
			{
				childList = null;
				
				if(parentMap.containsKey("EKK0591B007CBSMsg1ListHD")){
					childList = (ArrayList)parentMap.get("EKK0591B007CBSMsg1ListHD");
					
					for(int i = 0; i < childList.size(); i++){
						
						HashMap childMap = (HashMap)childList.get(i);
					
						// ＴＶコースリスト.コードタイプコード値リスト ← 料金プラン・料金コース一覧照会マップ.料金プラン一覧照会（サービス契約ＴＶ）明細.料金プランコード
						subbean.sendMessageString("コードタイプコード値リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pplan_cd"));
						// ＴＶコースリスト.コードタイプ名称リスト ← 料金プラン・料金コース一覧照会マップ.料金プラン一覧照会（サービス契約ＴＶ）明細.料金プラン名
						subbean.sendMessageString("コードタイプ名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pplan_nm"));
						// ＴＶコースリスト.初期設定コード ← 料金プラン・料金コース一覧照会マップ.料金プラン一覧照会（サービス契約ＴＶ）明細.料金コースコード
						subbean.sendMessageString("初期設定コード", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pcrs_cd"));
					}
				}
			}
		}


		return bean;
	}


}
