/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0496_KKSV0496OPDBMapper
*	ソースファイル名：KKSV0496_KKSV0496OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2012年03月06日
*＜機能概要＞
*	BP（NHK団体一括支払変更・解約・回復初期表示処理OP）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/03/06	Fujitsu		新規作成
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

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.JPCEditString;
import eo.web.webview.KKW02537SF.KKW02537SFConst;

/**
 * DataBean-BPマッピングをする。
 * @author 909488
 */
public class KKSV0496_KKSV0496OPDBMapper
{
	
	/**
	 * コンストラクタ
	 */
	public KKSV0496_KKSV0496OPDBMapper()
	{
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	public HashMap setKKSV049601SC(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(KKW02537SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		
		// "" → サービス契約一意照会マップ.ＫＥＹ＿世代登録年月日時分秒
		parentMap.put("key_gene_add_dtm", "");
		
		// 運用日 → サービス契約一意照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString(KKW02537SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV049601SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	public HashMap setKKSV049602SC(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_op_svc_kei_no", bean[0].sendMessageString(KKW02537SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		
		// "" → オプションサービス契約一意照会マップ.ＫＥＹ＿世代登録年月日時分秒
		parentMap.put("key_gene_add_dtm", "");
		
		// 運用日 → オプションサービス契約一意照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString(KKW02537SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV049602SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	public HashMap setKKSV049603SC(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);
		
		// オプションサービス契約番号 → オプションサービス契約＜TV＞一意照会マップ.ＫＥＹ＿オプションサービス契約番号
		parentMap.put("key_op_svc_kei_no", bean[0].sendMessageString(KKW02537SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		
		// "" → オプションサービス契約＜TV＞一意照会マップ.ＫＥＹ＿世代登録年月日時分秒
		parentMap.put("key_gene_add_dtm", "");
		
		outputMap.put("KKSV049603SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	public HashMap setKKSV049604SC(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);
		
		// "CD00675"(NHK団体一括支払サイクルコード) → コード名称管理コード区分一覧照会マップ.ＫＥＹ＿コード種別コード
		parentMap.put("key_cd_sbt_cd", "CD00675");
		
		// 運用日 → コード名称管理コード区分一覧照会マップ.ＫＥＹ＿基準年月日
		parentMap.put("key_stdardymd", bean[0].sendMessageString(KKW02537SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV049604SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	public HashMap setKKSV049605SC(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);
		
		// "B069":NHK団体一括支払割引 → オプションサービス一意照会マップ.ＫＥＹ＿オプションサービスコード
		parentMap.put("key_op_svc_cd", "B069");
		
		// "" → オプションサービス一意照会マップ.ＫＥＹ＿世代登録年月日時分秒
		parentMap.put("key_gene_add_dtm", "");
		
		// 運用日 → オプションサービス一意照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString(KKW02537SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV049605SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	public HashMap setKKSV049606SC(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_ido_div", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿異動予約詳細コード
		parentMap.put("key_ido_rsv_dtl_cd", "");
		
		// 運用日 → 異動予約一覧照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString(KKW02537SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE));
		
		// "00":未反映 → 異動予約一覧照会マップ.ＫＥＹ＿異動予約状態コード
		parentMap.put("key_ido_rsv_stat_cd", "00");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿申込明細番号
		parentMap.put("key_mskm_dtl_no", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿ＳＹＳＩＤ
		parentMap.put("key_sysid", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿請求契約番号
		parentMap.put("key_seiky_kei_no", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿サービス契約内訳番号
		parentMap.put("key_svc_kei_ucwk_no", "");
		
		// オプションサービス契約番号 → 異動予約一覧照会マップ.ＫＥＹ＿オプションサービス契約番号
		parentMap.put("key_op_svc_kei_no", bean[0].sendMessageString(KKW02537SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿サブオプションサービス契約番号
		parentMap.put("key_sbop_svc_kei_no", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿機器提供サービス契約番号
		parentMap.put("key_kktk_svc_kei_no", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿割引サービス契約番号
		parentMap.put("key_wrib_svc_kei_no", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿サービス契約回線内訳番号
		parentMap.put("key_svc_kei_kaisen_ucwk_no", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿併合先ＳＹＳＩＤ
		parentMap.put("key_heigo_sk_sysid", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿分割先ＳＹＳＩＤ
		parentMap.put("key_bunkatsu_sk_sysid", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿併合先請求契約番号
		parentMap.put("key_heigo_sk_seiky_kei_no", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿分割先請求契約番号
		parentMap.put("key_bunkatsu_sk_seiky_kei_no", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿工事案件番号
		parentMap.put("key_kojiak_no", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿オプション引継先サービス契約番号
		parentMap.put("key_op_hktgi_sk_svc_kei_no", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿ソート項目Ｎｏ
		parentMap.put("key_sort_item_no", "");
		// "" → 異動予約一覧照会マップ.ＫＥＹ＿ソート区分
		parentMap.put("key_sort_kbn", "");
		
		outputMap.put("KKSV049606SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @return HashMap
	 */
	public HashMap setKKSV0496WORK01(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 処理区分 → NHK団体一括支払変更初期表示作業項目マップ01.処理区分
		parentMap.put("tran_div", bean[0].sendMessageString(KKW02537SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("REQCHK_WORK01", parentMap);
		
		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	public X31SDataBeanAccess[] getKKSV049601SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV049601SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV049601SC");
		}
		
		if(parentMap.containsKey("EKK0081A010CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("EKK0081A010CBSMsg1List");
			
			if(0 != childList.size())
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				// 最終更新年月日時分秒 ← サービス契約一意照会マップ.最終更新年月日時分秒
				bean[0].sendMessageString(KKW02537SFConst.LAST_UPD_DTM, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("last_upd_dtm"));
			}
		}
		
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	public X31SDataBeanAccess[] getKKSV049602SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV049602SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV049602SC");
		}
		
		if(parentMap.containsKey("EKK0351A010CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("EKK0351A010CBSMsg1List");
			
			if(0 != childList.size())
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				// オプションサービス契約ステータス ← オプションサービス契約一意照会マップ.オプションサービス契約ステータス
				bean[0].sendMessageString(KKW02537SFConst.OP_SVC_KEI_STAT, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_kei_stat"));
				
				// 試用加入年月日 ← オプションサービス契約一意照会マップ.試用加入年月日
				bean[0].sendMessageString(KKW02537SFConst.FTRIAL_KANYU_YMD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ftrial_kanyu_ymd"));
				
				// 試用期間終了年月日 ← オプションサービス契約一意照会マップ.試用期間終了年月日
				bean[0].sendMessageString(KKW02537SFConst.FTRIAL_PRD_ENDYMD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ftrial_prd_endymd"));
				
				// 本加入年月日 ← オプションサービス契約一意照会マップ.本加入年月日
				bean[0].sendMessageString(KKW02537SFConst.HONKANYU_YMD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("honkanyu_ymd"));
				
//				// 契約日 ← オプションサービス契約一意照会マップ.NHK団体一括契約NHK締結年月日
//				bean[0].sendMessageString(KKW02537SFConst.KEI_YMD, 
//						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kei_cnc_ymd"));
				
				// サービスキャンセル年月日 ← オプションサービス契約一意照会マップ.サービスキャンセル年月日
				bean[0].sendMessageString(KKW02537SFConst.SVC_CANCEL_YMD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_cancel_ymd"));
				
				// 契約期間（自） ← オプションサービス契約一意照会マップ.サービス利用開始希望年月日
				bean[0].sendMessageString(KKW02537SFConst.KEI_PRD_STA, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_use_sta_kibo_ymd"));
				
//				// 課金開始年月 ← オプションサービス契約一意照会マップ.サービス課金開始年月日
//				String svc_chrg_staymd = (String)childMap.get("svc_chrg_staymd");
//				if (svc_chrg_staymd != null && !"".equals(svc_chrg_staymd))
//				{
//					StringBuilder sb = new StringBuilder();
//					sb.append(JPCEditString.toYearFromYmd(svc_chrg_staymd));
//					sb.append(JPCEditString.toMonthFromYmd(svc_chrg_staymd));
//					bean[0].sendMessageString(KKW02537SFConst.CHRG_STA_YM, 
//							X31CWebConst.DATABEAN_SET_VALUE, sb.toString());
//				}
				
				// 契約期間（至） ← オプションサービス契約一意照会マップ.サービス終了年月日
				String svcEndymd = (String)childMap.get("svc_endymd");
				if("20991231".equals(svcEndymd))
				{
					svcEndymd = "";
				}
				bean[0].sendMessageString(KKW02537SFConst.KEI_PRD_END, 
						X31CWebConst.DATABEAN_SET_VALUE, svcEndymd);
				
				// サービス解約年月日 ← オプションサービス契約一意照会マップ.サービス解約年月日
				bean[0].sendMessageString(KKW02537SFConst.SVC_DSL_YMD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_dsl_ymd"));
				
				// 違約金発生コード ← オプションサービス契約一意照会マップ.違約金発生コード
				bean[0].sendMessageString(KKW02537SFConst.PNLTY_HASSEI_CD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pnlty_hassei_cd"));
				
			}
		}
		
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	public X31SDataBeanAccess[] getKKSV049603SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV049603SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV049603SC");
		}
		
		if(parentMap.containsKey("EKK0381A010CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("EKK0381A010CBSMsg1List");
			
			if(0 != childList.size())
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				// NHK団体一括支払サイクルコード
				String nhk_grp_ikt_pay_cycle_cd = (String)childMap.get("nhk_grp_ikt_pay_cycle_cd");
				// 0を削除
				String chbf_seiky_knk = zeroSuppress(nhk_grp_ikt_pay_cycle_cd);
				
				// NHK団体一括支払サイクルコード名称
				String nhk_grp_ikt_pay_cycle_cd_nm = (String)childMap.get("nhk_grp_ikt_pay_cycle_cd_nm");
				StringBuilder sb = new StringBuilder();
				sb.append(nhk_grp_ikt_pay_cycle_cd);
				sb.append(".");
				sb.append(nhk_grp_ikt_pay_cycle_cd_nm);
				
				/** v4.00.00 ANK-1223-00-00 start **/
				// 契約日 ← オプションサービス契約＜TV＞一意照会マップ.NHK団体一括契約NHK締結年月日
				bean[0].sendMessageString(KKW02537SFConst.KEI_YMD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("nhk_dntiktkei_nhk_cnc_ymd"));
				
				/** v4.00.00 ANK-1223-00-00 end **/
				// 変更前請求間隔
				bean[0].sendMessageString(KKW02537SFConst.CHBF_SEIKY_KNK, X31CWebConst.DATABEAN_SET_VALUE, chbf_seiky_knk);
				
				// 変更前契約内容
				bean[0].sendMessageString(KKW02537SFConst.CHBF_KEI_NAIYO, X31CWebConst.DATABEAN_SET_VALUE, sb.toString());
				
				// ケーブルガイド申込数 ← オプションサービス契約＜TV＞一意照会マップ.ケーブルガイド申込数
				bean[0].sendMessageString(KKW02537SFConst.CABLE_GUIDE_MSKM_CNT, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cable_guide_mskm_cnt"));
				
				// ガイド誌送付先名 ← オプションサービス契約＜TV＞一意照会マップ.ガイド誌送付先名
				bean[0].sendMessageString(KKW02537SFConst.GUIDEMG_SOHUS_NM, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("guidemg_sohus_nm"));
				
				// ガイド誌送付先カナ名 ← オプションサービス契約＜TV＞一意照会マップ.ガイド誌送付先カナ名
				bean[0].sendMessageString(KKW02537SFConst.GUIDEMG_SOHUS_KANA, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("guidemg_sohus_kana"));
				
				// ガイド誌送付先住所コード ← オプションサービス契約＜TV＞一意照会マップ.ガイド誌送付先住所コード
				bean[0].sendMessageString(KKW02537SFConst.GUIDEMG_SOHUS_AD_CD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("guidemg_sohus_ad_cd"));
				
				// ガイド誌送付先郵便番号 ← オプションサービス契約＜TV＞一意照会マップ.ガイド誌送付先郵便番号
				bean[0].sendMessageString(KKW02537SFConst.GUIDEMG_SOHUS_PCD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("guidemg_sohus_pcd"));
				
				// ガイド誌送付先都道府県名 ← オプションサービス契約＜TV＞一意照会マップ.ガイド誌送付先都道府県名
				bean[0].sendMessageString(KKW02537SFConst.GUIDEMG_SOHUS_STATE_NM, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("guidemg_sohus_state_nm"));
				
				// ガイド誌送付先市区町村名 ← オプションサービス契約＜TV＞一意照会マップ.ガイド誌送付先市区町村名
				bean[0].sendMessageString(KKW02537SFConst.GUIDEMG_SOHUS_CITY_NM, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("guidemg_sohus_city_nm"));
				
				// ガイド誌送付先大字通称名 ← オプションサービス契約＜TV＞一意照会マップ.ガイド誌送付先大字通称名
				bean[0].sendMessageString(KKW02537SFConst.GUIDEMG_SOHUS_OAZTSU_NM, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("guidemg_sohus_oaztsu_nm"));
				
				// ガイド誌送付先字丁目名 ← オプションサービス契約＜TV＞一意照会マップ.ガイド誌送付先字丁目名
				bean[0].sendMessageString(KKW02537SFConst.GUIDEMG_SOHUS_AZCHO_NM, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("guidemg_sohus_azcho_nm"));
				
				// ガイド誌送付先番地号 ← オプションサービス契約＜TV＞一意照会マップ.ガイド誌送付先番地号
				bean[0].sendMessageString(KKW02537SFConst.GUIDEMG_SOHUS_BNCHIGO, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("guidemg_sohus_bnchigo"));
				
				// ガイド誌送付先住所補記・建物名 ← オプションサービス契約＜TV＞一意照会マップ.ガイド誌送付先住所補記・建物名
				bean[0].sendMessageString(KKW02537SFConst.GUIDEMG_SOHUS_ADRTTM, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("guidemg_sohus_adrttm"));
				
				// ガイド誌送付先住所補記・部屋番号 ← オプションサービス契約＜TV＞一意照会マップ.ガイド誌送付先住所補記・部屋番号
				bean[0].sendMessageString(KKW02537SFConst.GUIDEMG_SOHUS_ADRRM, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("guidemg_sohus_adrrm"));
				
				// ガイド誌送付先電話番号 ← オプションサービス契約＜TV＞一意照会マップ.ガイド誌送付先電話番号
				bean[0].sendMessageString(KKW02537SFConst.GUIDEMG_SOHUS_TELNO, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("guidemg_sohus_telno"));
				
				// ガイド誌送付先個別指定フラグ ← オプションサービス契約＜TV＞一意照会マップ.ガイド誌送付先個別指定フラグ
				bean[0].sendMessageString(KKW02537SFConst.GUIDEMG_SHS_KSITEI_FLG, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("guidemg_shs_ksitei_flg"));
				
				// ＮＨＫお客様Ｎｏ ← オプションサービス契約＜TV＞一意照会マップ.NHKお客様番号
				bean[0].sendMessageString(KKW02537SFConst.NHK_CUST_NO, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("nhk_cust_no"));
				
				// 集計年月日 ← オプションサービス契約＜TV＞一意照会マップ.集計年月日
				bean[0].sendMessageString(KKW02537SFConst.SHUK_YMD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("shuk_ymd"));
				
				// 登録メモ ← オプションサービス契約＜TV＞一意照会マップ.NHK団体一括契約登録メモ
				bean[0].sendMessageString(KKW02537SFConst.ADD_MEMO, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("nhk_dntiktkei_add_memo"));
				
				// 課金開始年月 ← オプションサービス契約＜TV＞一意照会マップ.初回請求年月日
				String svc_chrg_staymd = (String)childMap.get("first_seiymd");
				if (svc_chrg_staymd != null && !"".equals(svc_chrg_staymd))
				{
					sb = new StringBuilder();
					sb.append(JPCEditString.toYearFromYmd(svc_chrg_staymd));
					sb.append(JPCEditString.toMonthFromYmd(svc_chrg_staymd));
					bean[0].sendMessageString(KKW02537SFConst.CHRG_STA_YM, 
							X31CWebConst.DATABEAN_SET_VALUE, sb.toString());
				}
			}
		}
		
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	public X31SDataBeanAccess[] getKKSV049604SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV049604SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV049604SC");
		}
		
		X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray(KKW02537SFConst.KEI_NAIYO);
		arraybean.clearArray();
		
		if(parentMap.containsKey("EZM0171B012CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("EZM0171B012CBSMsg1List");
			
			X31SDataBeanAccess subbean = arraybean.addDataBean();
			
			// 空白選択支の設定
			subbean.sendMessageString(KKW02537SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, "");
			subbean.sendMessageString(KKW02537SFConst.CD_DIV_NM_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, "");
			subbean.sendMessageString(KKW02537SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "0");
			
			for(int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				
				// コードタイプコード値リスト ← コード区分
				String cd_div = (String)childMap.get("cd_div");
				subbean.sendMessageString(KKW02537SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, cd_div);
				
				// コードタイプ名称リスト ← コード区分名
				String cd_div_nm = (String)childMap.get("cd_div_nm");
				subbean.sendMessageString(KKW02537SFConst.CD_DIV_NM_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, cd_div + "." + cd_div_nm);
				
				// 初期表示コード
				String shk_dsp_cd = (String)childMap.get("shk_dsp_cd");
				
				// 初期表示コードが設定されている場合
				if(shk_dsp_cd != null && "1".equals(shk_dsp_cd))
				{
					subbean.sendMessageString(KKW02537SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i + 1));
				}
			}
		}
		
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	public X31SDataBeanAccess[] getKKSV049605SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV049605SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV049605SC");
		}
		
		if(parentMap.containsKey("EKK0821A010CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("EKK0821A010CBSMsg1List");
			
			if(0 != childList.size())
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				// 違約金発生有無 ← オプションサービス一意照会マップ.違約金発生有無
				bean[0].sendMessageString(KKW02537SFConst.PNLTY_HASSEI_UM, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pnlty_hassei_um"));
				
				// 回復可能期間 ← オプションサービス一意照会マップ.回復可能期間
				bean[0].sendMessageString(KKW02537SFConst.KAIHK_PSB_PRD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kaihk_psb_prd"));
				
				// 未来日許容期間 ← オプションサービス一意照会マップ.予約可能期間
				bean[0].sendMessageString(KKW02537SFConst.FUTURE_DAY_PRD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("rsv_psb_prd"));
			}
		}
		
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	public X31SDataBeanAccess[] getKKSV049606SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV049606SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV049606SC");
		}
		
		if(parentMap.containsKey("EKK1681B001CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("EKK1681B001CBSMsg1List");
			
			if(0 != childList.size())
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				// 異動予約詳細コード ← 異動予約一覧照会マップ.異動予約詳細コード
				bean[0].sendMessageString(KKW02537SFConst.IDO_RSV_DTL_CD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_rsv_dtl_cd"));
				
				// 予約適用年月日 ← 異動予約一覧照会マップ.予約適用年月日
				bean[0].sendMessageString(KKW02537SFConst.RSV_APLY_YMD, 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("rsv_aply_ymd"));
			}
		}
		
		return bean;
	}

	/**
	 * ０を削除した値を返します
	 * @param cycle_cd
	 * @return String
	 */
	private String zeroSuppress(String cycle_cd)
	{
		String str = "";
		if (!"".equals(cycle_cd))
		{
			str = cycle_cd;
			
			// ゼロサプレス
			Matcher mtc = Pattern.compile("^0+([0-9]+.*)").matcher(str);
			if (mtc.matches())
			{
				str = mtc.group(1);
			}
		}
		return str;
	}

}
