/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0165_KKSV0165OPDBMapper
*	ソースファイル名：KKSV0165_KKSV0165OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2011年07月27日
*＜機能概要＞
*	BP（eo光テレビオプションチャンネル更新画面登録処理OP）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/27	Fujitsu		新規作成
*	v4.00.00	2012/08/30	Fujitsu		ANK-0288-00-00,ANK-0524-00-00対応
*
**********************************************************************/
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.JPCFomatString;
import eo.web.webview.KKW02525SF.KKW02525SFConst;
import eo.web.webview.common.JKKCommonConst;

/**
 * DataBean-BPマッピングをする。
 * @author 909488
 */
public class KKSV0165_KKSV0165OPDBMapper
{
	
	/**
	 * コンストラクタ
	 */
	public KKSV0165_KKSV0165OPDBMapper()
	{
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：eo光テレビオプションチャンネル更新画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV016501SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate)
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		// 表示モードの取得
		String hyojiMode = bean[0].sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// SYSID → 申込内容承認登録マップ.SYSID
		parentMap.put("sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 申込種別コード → 申込内容承認登録マップ.申込種別コード
		if ("1".equals(hyojiMode))
		{
			// 利用開始モードの場合、オプション申込(00026)を設定する。
			parentMap.put("mskm_sbt_cd", "00026");
		}
		else if ("2".equals(hyojiMode))
		{
			// 解約登録モードの場合、解約申込(00005)を設定する。
			parentMap.put("mskm_sbt_cd", "00005");
		}
		else if ("3".equals(hyojiMode))
		{
			// 取消モードの場合、キャンセル申込(00006)を設定する。
			parentMap.put("mskm_sbt_cd", "00006");
		}
		
		// 基準日時分秒 → 申込内容承認登録マップ.申込受付年月日時分秒
		parentMap.put("mskm_uk_dtm", bean[0].sendMessageString("基準日時分秒", X31CWebConst.DATABEAN_GET_VALUE));
		// 基準日 → 申込内容承認登録マップ.申込年月日
//		parentMap.put("mskm_ymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put("mskm_ymd", opeDate);
		// "04"(承認済) → 申込内容承認登録マップ.コンシューマ営業用申込状態識別コード
		parentMap.put("consmbsn_mskm_stat_skbt_cd", "04");
		
		outputMap.put("KKSV016501SC", parentMap);
		
		return outputMap;
	}

//	/**
//	 * 上りマッピングをする
//	 * @param bean　[0]：eo光テレビオプションチャンネル更新画面
//	 * @param outputMap
//	 * @param func_code　機能コード
//	 * @return HashMap
//	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setKKSV016506SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
//	{
//		
//		if(bean == null)
//		{
//			return null;
//		}
//		
//		if(bean.length != 1)
//		{
//			return null;
//		}
//		
//		// 表示モードの取得
//		String hyojiMode = bean[0].sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
//		
//		// 表示モードが利用開始モードの場合
//		if ("1".equals(hyojiMode))
//		{
//			X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray("ｅｏ光テレビオプションチャンネル情報一覧");
//			if (0 < arraybean.getCount())
//			{
//				X31SDataBeanAccess subbean = arraybean.getDataBean(0);
//				
//				HashMap<String, Object> parentMap = new HashMap<String, Object>();
//				
//				// 共通情報のマッピング
//				parentMap.put("func_code", func_code);
//				
//				// オプションサービスコード → オプションサービス一意照会マップ.ＫＥＹ＿オプションサービスコード
//				parentMap.put("key_op_svc_cd", subbean.sendMessageString("オプションサービスコード", X31CWebConst.DATABEAN_GET_VALUE));
//				// 基準日 → オプションサービス一意照会マップ.ＫＥＹ＿予約適用年月日
//				parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
//				// 利用開始日 → オプションサービス一意照会マップ.利用開始日 ■実行判定で使用
//				parentMap.put("use_staymd", subbean.sendMessageString("利用開始日", X31CWebConst.DATABEAN_GET_VALUE));
//				
//				outputMap.put("KKSV016506SC", parentMap);
//			}
//		}
//		
//		return outputMap;
//	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：eo光テレビオプションチャンネル更新画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV016508SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate)
	{
		
		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);
		
//		// 申込明細番号 → 申込明細照査・後続業務依頼マップ.申込明細番号 ※申込明細番号はSCで新たに作成した物を使用する
//		parentMap.put("mskm_dtl_no", bean[0].sendMessageString("申込明細番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 基準日 → 申込明細照査・後続業務依頼マップ.後続業務依頼年月日
//		parentMap.put("kzkwrk_reqymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put("kzkwrk_reqymd", opeDate);
//		// 更新年月日時分秒（更新前）（申込明細） → 申込明細照査・後続業務依頼マップ.更新年月日時分秒（更新前）（申込明細）
//		parentMap.put("upd_dtm_bf", bean[0].sendMessageString("更新年月日時分秒（更新前）（申込明細）", X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV016508SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：eo光テレビオプションチャンネル更新画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV016502CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate)
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		// 表示モードの取得
		String hyojiMode = bean[0].sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 表示モードが利用開始モードの場合
		if ("1".equals(hyojiMode))
		{
			// DataBeanの構造と合わないため、追記
			X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray("ｅｏ光テレビオプションチャンネル情報一覧");
			ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
			ArrayList<HashMap<String, Object>> list2 = null;
			HashMap<String, Object> parentMap = new HashMap<String, Object>();
			
			if (0 < arraybean.getCount())
			{
				X31SDataBeanAccess subbean = arraybean.getDataBean(0);
				
				HashMap<String, Object> childMap = new HashMap<String, Object>();
				HashMap<String, Object> childMap2 = null;
				
				// 共通情報のマッピング
				childMap.put("func_code", func_code);
				
				// サービス契約番号 → eo光テレビオプションチャンネル利用開始マップ.サービス契約番号
				childMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
				// オプションサービス契約番号 → eo光テレビオプションチャンネル利用開始マップ.オプションサービス契約番号
				childMap.put("op_svc_kei_no", subbean.sendMessageString("オプションサービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
				// 異動区分 → eo光テレビオプションチャンネル利用開始マップ.異動区分
				childMap.put("ido_div", bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));
				// 基準日時分秒 → eo光テレビオプションチャンネル利用開始マップ.異動年月日時分秒
//				childMap.put("ido_dtm", bean[0].sendMessageString("基準日時分秒", X31CWebConst.DATABEAN_GET_VALUE));
				// 更新年月日時分秒（更新前）（サービス契約） → eo光テレビオプションチャンネル利用開始マップ.更新年月日時分秒(更新前)
				childMap.put("upd_dtm_bf", bean[0].sendMessageString("更新年月日時分秒（更新前）（サービス契約）", X31CWebConst.DATABEAN_GET_VALUE));
				// 利用開始日 → eo光テレビオプションチャンネル利用開始マップ.サービス開始年月日
				childMap.put("svc_staymd", subbean.sendMessageString("利用開始日", X31CWebConst.DATABEAN_GET_VALUE));
				// 利用開始日 → eo光テレビオプションチャンネル利用開始マップ.サービス利用開始希望年月日
				childMap.put("svc_use_sta_kibo_ymd", subbean.sendMessageString("利用開始日", X31CWebConst.DATABEAN_GET_VALUE));
				// 利用開始日 → eo光テレビオプションチャンネル利用開始マップ.予約適用開始希望年月日
				childMap.put("rsv_tsta_kibo_ymd", subbean.sendMessageString("利用開始日", X31CWebConst.DATABEAN_GET_VALUE));
				// 利用開始日 → eo光テレビオプションチャンネル利用開始マップ.表示用サービス提供開始年月日
				childMap.put("dsp_svctk_staymd", subbean.sendMessageString("利用開始日", X31CWebConst.DATABEAN_GET_VALUE));
				// 基準日 → eo光テレビオプションチャンネル利用開始マップ.予約適用年月日（進捗ステータス判定に使用）
//				childMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
//				childMap.put("key_rsv_aply_ymd", opeDate);
				
				/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
				String redBcasNo = subbean.sendMessageString("赤Ｂ−ＣＡＳ番号", X31CWebConst.DATABEAN_GET_VALUE);
				// 赤Ｂ−ＣＡＳ番号が変更された場合
				if(!redBcasNo.equals(subbean.sendMessageString("赤Ｂ−ＣＡＳ番号＿退避", X31CWebConst.DATABEAN_GET_VALUE)))
				{
					// 赤Ｂ−ＣＡＳ番号 → eo光テレビオプションチャンネル利用開始マップ.赤Ｂ−ＣＡＳ番号
					childMap.put("red_bcas_no", redBcasNo);
				}
				else
				{
					childMap.put("red_bcas_no", "");
				}
				/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
				
				// 進捗特記事項1,進捗特記事項2
				StringBuilder prgTkjk = new StringBuilder();
				prgTkjk.append("オプションチャンネル情報登録　チャンネル名：");
				prgTkjk.append(subbean.sendMessageString("チャンネル名", X31CWebConst.DATABEAN_GET_VALUE));
				// 赤Ｂ−ＣＡＳ番号が変更された場合
				if(!redBcasNo.equals(subbean.sendMessageString("赤Ｂ−ＣＡＳ番号＿退避", X31CWebConst.DATABEAN_GET_VALUE)))
				{
					prgTkjk.append("　BCAS-ID：");
					prgTkjk.append(subbean.sendMessageString("赤Ｂ−ＣＡＳ番号", X31CWebConst.DATABEAN_GET_VALUE));
				}
				prgTkjk.append("　利用開始日：");
				prgTkjk.append(JPCFomatString.formatDate(subbean.sendMessageString("利用開始日", X31CWebConst.DATABEAN_GET_VALUE)));
				
				if(prgTkjk.length() < 129)
				{
					childMap.put("prg_tkjk_1", prgTkjk.toString());
					childMap.put("prg_tkjk_2", "");
				}
				else if(prgTkjk.length() < 257)
				{
					childMap.put("prg_tkjk_1", prgTkjk.substring(0, 128));
					childMap.put("prg_tkjk_2", prgTkjk.substring(128));
				}
				else
				{
					childMap.put("prg_tkjk_1", prgTkjk.substring(0, 128));
					childMap.put("prg_tkjk_2", prgTkjk.substring(128, 256));
				}
				
				// 異動理由コード
				list2 = new ArrayList<HashMap<String, Object>>();
				int idoRsnCount = (Integer)bean[0].sendMessage("異動理由コード", X31CWebConst.DATABEAN_GET_COUNT);
				for (int i = 0; i < idoRsnCount; i++)
				{
					childMap2 = new HashMap<String, Object>();
					childMap2.put("ido_rsn_cd", bean[0].sendMessageString("異動理由コード", X31CWebConst.DATABEAN_GET_VALUE, i));
					list2.add(childMap2);
				}
				childMap.put("EKK1091D010CBSMsg1List", list2);
				
				list.add(childMap);
			}
			
			parentMap.put("option_ch_select", list);
			outputMap.put("KKSV016502CC", parentMap);
		}
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：eo光テレビオプションチャンネル更新画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV016503CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate)
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		// 表示モードの取得
		String hyojiMode = bean[0].sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 表示モードが解約モードの場合
		if ("2".equals(hyojiMode))
		{
			// DataBeanの構造と合わないため、追記
			X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray("ｅｏ光テレビオプションチャンネル情報一覧");
			ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
			ArrayList<HashMap<String, Object>> list2 = null;
			HashMap<String, Object> parentMap = new HashMap<String, Object>();
			StringBuilder prgTkjk = new StringBuilder();
			
			for(int i = 0; i < arraybean.getCount(); i++)
			{
				
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				
				boolean choice = subbean.sendMessageBoolean(KKW02525SFConst.CHOICE_01, X31CWebConst.DATABEAN_GET_VALUE);
				if (choice)
				{
					// 選択チェックボックスがON状態の場合
					
					HashMap<String, Object> childMap = new HashMap<String, Object>();
					HashMap<String, Object> childMap2 = null;
					
					// 共通情報のマッピング
					childMap.put("func_code", func_code);
					
					// サービス契約番号 → eo光テレビオプションチャンネル解約マップ.サービス契約番号
					childMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
					// オプションサービス契約番号 → eo光テレビオプションチャンネル解約マップ.オプションサービス契約番号
					childMap.put("op_svc_kei_no", subbean.sendMessageString("オプションサービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
//					// 申込明細番号 → eo光テレビオプションチャンネル解約マップ.申込明細番号 ※申込明細番号はSCで新たに作成した物を使用する
//					childMap.put("mskm_dtl_no", bean[0].sendMessageString("申込明細番号", X31CWebConst.DATABEAN_GET_VALUE));
					// 利用終了日 → eo光テレビオプションチャンネル解約マップ.サービス終了年月日
					childMap.put("svc_endymd", subbean.sendMessageString("利用終了日", X31CWebConst.DATABEAN_GET_VALUE));
					/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
					// 課金終了日 → eo光テレビオプションチャンネル解約マップ.サービス課金終了年月日
					childMap.put("svc_chrg_endymd", subbean.sendMessageString("課金終了日", X31CWebConst.DATABEAN_GET_VALUE));
					/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
					// 基準日 → eo光テレビオプションチャンネル解約マップ.サービス解約年月日（進捗ステータス判定に使用）
//					childMap.put("svc_dsl_ymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
//					childMap.put("svc_dsl_ymd", opeDate);
					// サービス解約理由コード → eo光テレビオプションチャンネル解約マップ.サービス解約理由コード
					childMap.put("svc_dlre_cd", JKKCommonConst.SVC_DLRE_CD_VALUE_01);
					// 異動区分 → eo光テレビオプションチャンネル解約マップ.異動区分
					childMap.put("ido_div", bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));
					// 基準日時分秒 → eo光テレビオプションチャンネル解約マップ.異動年月日時分秒
//					childMap.put("ido_dtm", bean[0].sendMessageString("基準日時分秒", X31CWebConst.DATABEAN_GET_VALUE));
					// 更新年月日時分秒（更新前）（サービス契約） → eo光テレビオプションチャンネル解約マップ.更新年月日時分秒(更新前)
					childMap.put("upd_dtm_bf", bean[0].sendMessageString("更新年月日時分秒（更新前）（サービス契約）", X31CWebConst.DATABEAN_GET_VALUE));
					// 進捗特記事項1,進捗特記事項2（解約するオプションチャンネル分　進捗は最後のレコードの情報で登録を行う）
					if(prgTkjk.length() == 0)
					{
						prgTkjk.append("オプションチャンネル情報解約");
					}
					prgTkjk.append("　チャンネル名：");
					prgTkjk.append(subbean.sendMessageString("チャンネル名", X31CWebConst.DATABEAN_GET_VALUE));
					prgTkjk.append("　利用終了日：");
					prgTkjk.append(JPCFomatString.formatDate(subbean.sendMessageString("利用終了日", X31CWebConst.DATABEAN_GET_VALUE)));
					prgTkjk.append("　課金終了日：");
					prgTkjk.append(JPCFomatString.formatDate(subbean.sendMessageString("課金終了日", X31CWebConst.DATABEAN_GET_VALUE)));
					
					if(prgTkjk.length() < 129)
					{
						childMap.put("prg_tkjk_1", prgTkjk.toString());
						childMap.put("prg_tkjk_2", "");
					}
					else if(prgTkjk.length() < 257)
					{
						childMap.put("prg_tkjk_1", prgTkjk.substring(0, 128));
						childMap.put("prg_tkjk_2", prgTkjk.substring(128));
					}
					else
					{
						childMap.put("prg_tkjk_1", prgTkjk.substring(0, 128));
						childMap.put("prg_tkjk_2", prgTkjk.substring(128, 256));
					}
					
					// 異動理由コード
					list2 = new ArrayList<HashMap<String, Object>>();
					int idoRsnCount = (Integer)bean[0].sendMessage("異動理由コード", X31CWebConst.DATABEAN_GET_COUNT);
					for (int j = 0; j < idoRsnCount; j++)
					{
						childMap2 = new HashMap<String, Object>();
						childMap2.put("ido_rsn_cd", bean[0].sendMessageString("異動理由コード", X31CWebConst.DATABEAN_GET_VALUE, j));
						list2.add(childMap2);
					}
					childMap.put("EKK1091D010CBSMsg1List", list2);
					
					list.add(childMap);
				}
			}
			
			parentMap.put("option_ch_select", list);
			outputMap.put("KKSV016503CC", parentMap);
		}
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：eo光テレビオプションチャンネル更新画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV016504CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate)
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		// 表示モードの取得
		String hyojiMode = bean[0].sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 表示モードが取消モードの場合
		if ("3".equals(hyojiMode))
		{
			// DataBeanの構造と合わないため、追記
			X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray("ｅｏ光テレビオプションチャンネル情報一覧");
			ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
			ArrayList<HashMap<String, Object>> list2 = null;
			HashMap<String, Object> parentMap = new HashMap<String, Object>();
			
			for(int i = 0; i < arraybean.getCount(); i++)
			{
				
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				
				HashMap<String, Object> childMap = new HashMap<String, Object>();
				HashMap<String, Object> childMap2 = null;
				
				// 共通情報のマッピング
				childMap.put("func_code", func_code);
				
				// サービス契約番号 → eo光テレビオプションチャンネル取消マップ.サービス契約番号
				childMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
				// オプションサービス契約番号 → eo光テレビオプションチャンネル取消マップ.オプションサービス契約番号
				childMap.put("op_svc_kei_no", subbean.sendMessageString("オプションサービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
				// オプションサービス契約ステータス → eo光テレビオプションチャンネル取消マップ.オプションサービス契約ステータス
				childMap.put("op_svc_kei_stat", subbean.sendMessageString("オプションサービス契約ステータス", X31CWebConst.DATABEAN_GET_VALUE));
				// 申込明細番号 → eo光テレビオプションチャンネル取消マップ.申込明細番号 ※申込明細番号はSCで新たに作成した物を使用する
				//childMap.put("mskm_dtl_no", bean[0].sendMessageString("申込明細番号", X31CWebConst.DATABEAN_GET_VALUE));
				/* ++++++++++ v4.00.00 削除開始 ++++++++++ */
//				// 選択値 → eo光テレビオプションチャンネル取消マップ.処理区分
//				childMap.put("syori_kbn", subbean.sendMessageString("選択値", X31CWebConst.DATABEAN_GET_VALUE));
				/* ++++++++++ v4.00.00 削除終了 ++++++++++ */
				// 基準日 → eo光テレビオプションチャンネル取消マップ.サービス終了年月日
//				childMap.put("svc_endymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
				childMap.put("svc_endymd", opeDate);
				// サービス解約理由コード → eo光テレビオプションチャンネル解約マップ.サービス解約理由コード
				childMap.put("svc_dlre_cd", JKKCommonConst.SVC_DLRE_CD_VALUE_01);
				// 異動区分 → eo光テレビオプションチャンネル取消マップ.異動区分
				childMap.put("ido_div", bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));
				// 基準日時分秒 → eo光テレビオプションチャンネル取消マップ.異動年月日時分秒
//				childMap.put("ido_dtm", bean[0].sendMessageString("基準日時分秒", X31CWebConst.DATABEAN_GET_VALUE));
				// 更新年月日時分秒(更新前) → eo光テレビオプションチャンネル取消マップ.更新年月日時分秒(更新前)
				childMap.put("upd_dtm_bf", bean[0].sendMessageString("更新年月日時分秒（更新前）（サービス契約）", X31CWebConst.DATABEAN_GET_VALUE));
				// 進捗特記事項1
				String opSvcKeiStat = subbean.sendMessageString("オプションサービス契約ステータス", X31CWebConst.DATABEAN_GET_VALUE);
				if(JKKCommonConst.SVC_KEI_STAT_010.equals(opSvcKeiStat) || JKKCommonConst.SVC_KEI_STAT_030.equals(opSvcKeiStat))
				{
					childMap.put("prg_tkjk_1", "オプションチャンネル情報登録予約取消");
				}
				else
				{
					childMap.put("prg_tkjk_1", "オプションチャンネル情報解約予約取消");
				}
				
				// 異動理由コード
				list2 = new ArrayList<HashMap<String, Object>>();
				int idoRsnCount = (Integer)bean[0].sendMessage("異動理由コード", X31CWebConst.DATABEAN_GET_COUNT);
				for (int j = 0; j < idoRsnCount; j++)
				{
					childMap2 = new HashMap<String, Object>();
					childMap2.put("ido_rsn_cd", bean[0].sendMessageString("異動理由コード", X31CWebConst.DATABEAN_GET_VALUE, j));
					list2.add(childMap2);
				}
				childMap.put("EKK1091D010CBSMsg1List", list2);
				
				list.add(childMap);
			}
			
			parentMap.put("option_ch_select", list);
			outputMap.put("KKSV016504CC", parentMap);
		}
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：eo光テレビオプションチャンネル更新画面
	 * @param outputMap
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV0165WORK01(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 表示モード → eo光テレビオプションチャンネル更新画面登録処理サービス作業項目マップ01.表示モード
		parentMap.put("hyoji_mode", bean[0].sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_GET_VALUE));
		// イベントID → eo光テレビオプションチャンネル更新画面登録処理サービス作業項目マップ01.イベントID
		parentMap.put("event_id", bean[0].sendMessageString(KKW02525SFConst.EVENT_ID, X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV0165WORK01", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：eo光テレビオプションチャンネル登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 * @throws  throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV016509CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate) throws Exception
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		// DataBeanの構造と合わないため、追記
		X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray("ｅｏ光テレビオプションチャンネル情報一覧");
		ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		for(int i = 0; i < arraybean.getCount(); i++)
		{
			X31SDataBeanAccess subbean = arraybean.getDataBean(i);
			
			HashMap<String, Object> childMap = new HashMap<String, Object>();
			
			// 共通情報のマッピング
			childMap.put("func_code", func_code);
			
			// オプションサービス契約番号 → デジタルティアグループコード取得マップ.オプションサービス契約番号
			childMap.put("op_svc_kei_no", subbean.sendMessageString("オプションサービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
			/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
			// オプションサービス契約ステータス → デジタルティアグループコード取得マップ.オプションサービス契約ステータス
			childMap.put("op_svc_kei_stat", subbean.sendMessageString("オプションサービス契約ステータス", X31CWebConst.DATABEAN_GET_VALUE));
			/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
			// 選択値 → デジタルティアグループコード取得マップ.処理区分
			childMap.put("syori_kbn", subbean.sendMessageString("選択値", X31CWebConst.DATABEAN_GET_VALUE));
			// 利用開始日 → デジタルティアグループコード取得マップ.利用開始日
			childMap.put("use_staymd", subbean.sendMessageString("利用開始日", X31CWebConst.DATABEAN_GET_VALUE));
			// 予約適用年月日
//			childMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
			childMap.put("key_rsv_aply_ymd", opeDate);
			
			list.add(childMap);
		}
		
		parentMap.put("option_ch_select", list);
		outputMap.put("KKSV016509CC", parentMap);
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：eo光テレビオプションチャンネル登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 * @throws  throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV016510CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) throws Exception
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}

		// 表示モードの取得
		String hyojiMode = bean[0].sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// SYSID
		parentMap.put("wc0011d_sysid", bean[0].sendMessageString(KKW02525SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));

		// サービス契約番号
		parentMap.put("wc0011d_svc_kei_no", bean[0].sendMessageString(KKW02525SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 宅内機器型式コード
		X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray(KKW02525SFConst.SETTIZUMI_STB_LIST);
		if (arraybean != null && arraybean.getCount() > 0)
		{
			X31SDataBeanAccess subbean = arraybean.getDataBean(0);
			parentMap.put("wca001_key_tk_mdl_cd", subbean.sendMessageString(KKW02525SFConst.TAKNKIKI_MODEL_03, X31CWebConst.DATABEAN_GET_VALUE));
		}

		// 機器製造番号
		parentMap.put("wca001_key_kk_seizo_no", bean[0].sendMessageString(KKW02525SFConst.KIKI_SEIZO_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 視聴制御依頼処理コード
		// 表示モードが利用開始モードの場合
		if ("1".equals(hyojiMode))
		{
			parentMap.put("wc0011d_wctrl_req_trn_cd", "30");
		}
		// 表示モードが取消モードの場合
		else if ("3".equals(hyojiMode))
		{
			parentMap.put("wc0011d_wctrl_req_trn_cd", "34");
		}
		
		ArrayList dgtiaList = new ArrayList<HashMap<String, Object>>();
		parentMap.put("wc", "0");
		parentMap.put("wc01611_EWC0161D010CBSMsg1List", dgtiaList);
		
		outputMap.put("WctrlOrderSendMap", parentMap);
		return outputMap;
	}

	/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：eo光テレビオプションチャンネル更新画面　[1]：共有フォームＢｅａｎ
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV016511CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 2){
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// サービス契約番号 → ワンストップ対応履歴登録マップ.サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// ユーザーＩＤ → ワンストップ対応履歴登録マップ.ユーザーＩＤ
		parentMap.put("user_id", bean[1].sendMessageString("ユーザーＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// ユーザー名 → ワンストップ対応履歴登録マップ.ユーザー名
		parentMap.put("user_nm", bean[1].sendMessageString("ユーザー名", X31CWebConst.DATABEAN_GET_VALUE));

		beanTemp = bean[1];
		if(beanTemp.getDataBeanArray("権限リスト").getCount() >= 2)
		{
			X31SDataBeanAccess kggrpCdListBean = beanTemp.getDataBeanArray("権限リスト").getDataBean(1);
			// 権限リスト.組織コード → ワンストップ対応履歴登録マップ.組織コード
			parentMap.put("org_cd", kggrpCdListBean.sendMessageString("組織コード", X31CWebConst.DATABEAN_GET_VALUE));
			// 権限リスト.組織名 → ワンストップ対応履歴登録マップ.組織名
			parentMap.put("org_nm", kggrpCdListBean.sendMessageString("組織名", X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// "KK_TV_OPCH_DL_TITLE" → ワンストップ対応履歴登録マップ.タイトルパラメータＩＤ
		parentMap.put("title_param_id", "KK_TV_OPCH_DL_TITLE");
		// ワンストップフラグ → ワンストップ対応履歴登録マップ.ワンストップフラグ
		parentMap.put("onestop_flg", bean[0].sendMessageString("ワンストップフラグ", X31CWebConst.DATABEAN_GET_VALUE));
		
		// ワンストップ対応履歴登録マップ.回答内容編集リストを回答内容の行数分作成する
		list = new ArrayList();
		HashMap childMap = null;
		
		// １行目「■回答内容」
		childMap = new HashMap();
		// "KK_TV_OPCH_DL_NYO_01" → ワンストップ対応履歴登録マップ.回答内容編集リスト.回答内容パラメータＩＤ
		childMap.put("ans_param_id", "KK_TV_OPCH_DL_NYO_01");
		list.add(childMap);
		
		// ２行目「ワンストップによるオプションチャネル解約」
		childMap = new HashMap();
		// "KK_TV_OPCH_DL_NYO_02" → ワンストップ対応履歴登録マップ.回答内容編集リスト.回答内容パラメータＩＤ
		childMap.put("ans_param_id", "KK_TV_OPCH_DL_NYO_02");
		list.add(childMap);
		
		// ３行目「・・・オプションチャンネル数分(START)・・・」
		childMap = new HashMap();
		// "KK_TV_OPCH_DL_NYO_03" → ワンストップ対応履歴登録マップ.回答内容編集リスト.回答内容パラメータＩＤ
		childMap.put("ans_param_id", "KK_TV_OPCH_DL_NYO_03");
		list.add(childMap);
		
		// ４行目〜９行目は登録したオプションチャンネル数分設定する
		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("ｅｏ光テレビオプションチャンネル情報一覧");
		
		String ccasId = editCasId(bean[0].sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		String bcasId = editCasId(bean[0].sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		
		for(int i = 0; i < arraybean.getCount(); i++)
		{
			X31SDataBeanAccess subbean = arraybean.getDataBean(i);
			
			boolean choice = subbean.sendMessageBoolean(KKW02525SFConst.CHOICE_01, X31CWebConst.DATABEAN_GET_VALUE);
			// 選択チェックボックスがON状態の場合
			if (choice)
			{
				// ４行目「オプションサービスコード：[@]」
				childMap = new HashMap();
				// "KK_TV_OPCH_DL_NYO_04" → ワンストップ対応履歴登録マップ.回答内容編集リスト.回答内容パラメータＩＤ
				childMap.put("ans_param_id", "KK_TV_OPCH_DL_NYO_04");
				// "@" → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換前文字列１
				childMap.put("replace_mae1", "@");
				// オプションサービスコード → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換後文字列１
				childMap.put("replace_ato1", subbean.sendMessageString("オプションサービスコード", X31CWebConst.DATABEAN_GET_VALUE));
				list.add(childMap);
				
				// ５行目「オプションチャンネル名：[A]」
				childMap = new HashMap();
				// "KK_TV_OPCH_DL_NYO_05" → ワンストップ対応履歴登録マップ.回答内容編集リスト.回答内容パラメータＩＤ
				childMap.put("ans_param_id", "KK_TV_OPCH_DL_NYO_05");
				// "A" → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換前文字列１
				childMap.put("replace_mae1", "A");
				// チャンネル名 → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換後文字列１
				childMap.put("replace_ato1", subbean.sendMessageString("チャンネル名", X31CWebConst.DATABEAN_GET_VALUE));
				list.add(childMap);
				
				// ６行目「C-CAS番号：[B]」
				childMap = new HashMap();
				// "KK_TV_OPCH_DL_NYO_06" → ワンストップ対応履歴登録マップ.回答内容編集リスト.回答内容パラメータＩＤ
				childMap.put("ans_param_id", "KK_TV_OPCH_DL_NYO_06");
				// "B" → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換前文字列１
				childMap.put("replace_mae1", "B");
				// ＣＣＡＳ−ＩＤ → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換後文字列１
				childMap.put("replace_ato1", ccasId);
				list.add(childMap);
				
				// ７行目「B-CAS番号：[C]」
				childMap = new HashMap();
				// "KK_TV_OPCH_DL_NYO_07" → ワンストップ対応履歴登録マップ.回答内容編集リスト.回答内容パラメータＩＤ
				childMap.put("ans_param_id", "KK_TV_OPCH_DL_NYO_07");
				// "C" → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換前文字列１
				childMap.put("replace_mae1", "C");
				// ＢＣＡＳ−ＩＤ → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換後文字列１
				if(!"".equals(subbean.sendMessageString("赤Ｂ−ＣＡＳ番号", X31CWebConst.DATABEAN_GET_VALUE)))
				{
					// 赤Ｂ−ＣＡＳ番号が空白でない場合、そちらを設定する
					bcasId = editCasId(subbean.sendMessageString("赤Ｂ−ＣＡＳ番号", X31CWebConst.DATABEAN_GET_VALUE));
				}
				childMap.put("replace_ato1", bcasId);
				list.add(childMap);
				
				// ８行目「利用終了日：[D]」
				childMap = new HashMap();
				// "KK_TV_OPCH_DL_NYO_08" → ワンストップ対応履歴登録マップ.回答内容編集リスト.回答内容パラメータＩＤ
				childMap.put("ans_param_id", "KK_TV_OPCH_DL_NYO_08");
				// "D" → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換前文字列１
				childMap.put("replace_mae1", "D");
				// 利用終了日 → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換後文字列１
				childMap.put("replace_ato1", subbean.sendMessageString("利用終了日", X31CWebConst.DATABEAN_GET_VALUE));
				list.add(childMap);
				
				// ９行目「課金終了日：[E]」
				childMap = new HashMap();
				// "KK_TV_OPCH_DL_NYO_09" → ワンストップ対応履歴登録マップ.回答内容編集リスト.回答内容パラメータＩＤ
				childMap.put("ans_param_id", "KK_TV_OPCH_DL_NYO_09");
				// "E" → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換前文字列１
				childMap.put("replace_mae1", "E");
				// 課金終了日 → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換後文字列１
				childMap.put("replace_ato1", subbean.sendMessageString("課金終了日", X31CWebConst.DATABEAN_GET_VALUE));
				list.add(childMap);
			}
		}
		
		// １０行目「・・・オプションチャンネル数分(END)・・・」
		childMap = new HashMap();
		// "KK_TV_OPCH_DL_NYO_10" → ワンストップ対応履歴登録マップ.回答内容編集リスト.回答内容パラメータＩＤ
		childMap.put("ans_param_id", "KK_TV_OPCH_DL_NYO_10");
		list.add(childMap);
		
		// １１行目「[F]:[G]」
		childMap = new HashMap();
		// "KK_TV_OPCH_DL_NYO_11" → ワンストップ対応履歴登録マップ.回答内容編集リスト.回答内容パラメータＩＤ
		childMap.put("ans_param_id", "KK_TV_OPCH_DL_NYO_11");
		// "F" → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換前文字列１
		childMap.put("replace_mae1", "F");
		// ユーザーＩＤ → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換後文字列１
		childMap.put("replace_ato1", bean[1].sendMessageString("ユーザーＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// "G" → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換前文字列２
		childMap.put("replace_mae2", "G");
		// ユーザー名 → ワンストップ対応履歴登録マップ.回答内容編集リスト.置換後文字列２
		childMap.put("replace_ato2", bean[1].sendMessageString("ユーザー名", X31CWebConst.DATABEAN_GET_VALUE));
		list.add(childMap);
		
		parentMap.put("ans_list", list);

		outputMap.put("OnestopRirekiAddMap", parentMap);
						
		return outputMap;
	}

	/**
	 * ＣＡＳ−ＩＤを「9999-9999-9999-9999-9999」形式に編集します。
	 * @param casId ＣＡＳ−ＩＤ
	 * @return 編集したＣＡＳ−ＩＤ
	 */
	private String editCasId(String casId)
	{
		if(casId.length() == 20)
		{
			// 「9999-9999-9999-9999-9999」編集
			casId = casId.substring(0, 4) + "-" + 
					casId.substring(4, 8) + "-" + 
					casId.substring(8, 12) + "-" + 
					casId.substring(12, 16) + "-" + 
					casId.substring(16);
		}
		return casId;
	}
	/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
}
