/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0078_FUSV0078OPDBMapper
*	ソースファイル名：FUSV0078_FUSV0078OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年06月12日
*＜機能概要＞
*	BP（支払関連情報取得）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00   	2012/06/12	FJ			新規作成
*	v4.00		2012/09/27	FJ) 池田   【案件番号：ANK-1218-00-00】【巻き取りA】お客さまID非通知対応に関わる請求先（窓口払い表示対応）
*   v4.01       2013/02/13  FJ) 大塚    No244 ハイブリッド引継ぎ対応
*   v4.02       2013/04/01  FJ) 大塚    No466 クレジットカード番号マスク化対応
*   v5.00       2013/06/10  FJ）知識   【ANK-1534-00-00】eoモバイル42Mエリア縮小対応
*   v10.00      2014/09/24	FJ）中谷   【TAI-2014-0000026】文字列編集処理の改修
*   v20.00      2015/11/20	FJ）岡井   【ANK-2565-00-00】クレカ番号預かりサービス導入(STEP3)
*   v36.00      2017/12/14	FJ) 岡井   【ANK-3313-02-00】クレジットカード非通過対応【案件内仕変2:申し込み時の５大カードブランド聞き取り化】
*   v58.00.00   2022/05/16	 FJ) 新谷  【ANK-3846-00-00】【クレカ】クリアパス→ペイジェント移行
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW00115SF.FUW00115SFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.common.util.JZMFormatForMask;

/**
 * DataBean-BPマッピングをする。
 * @author 富士通
 * 
 */
public class FUSV0078_FUSV0078OPDBMapper
{
	/** ダミー情報 銀行・口割りの値の場合は処理をスキップ */
	public static final String CARD_COMP_CD_DUMMY = "99999";
	/**  引継ぎリスト表示名 ゆうちょ銀行*/
	public static final String YUCHO = "ゆうちょ銀行";
	/**  引継ぎリスト表示名 支店 */
	public static final String SHITEN = "支店";

	/**
	 * コンストラクタ
	 */
	public FUSV0078_FUSV0078OPDBMapper()
	{
	}

	/**
	 * サービス契約一覧照会（同一請求先回線情報取得）の上りマッピングをする
	 * @param bean [0]：お支払い方法入力  [1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV007801SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		X31SDataBeanAccess web_new_bean = null; // 共有フォームBeanのＷＥＢ新規以下へのアクセサ
		X31SDataBeanAccess keiyaku_svc_info = null; // 共有フォームBeanのＷＥＢ新規以下へのアクセサ
		X31SDataBeanAccessArray bean_array = null;

		bean_array = bean[1].getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		web_new_bean = bean_array.getDataBean(0);
		bean_array = web_new_bean.getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		keiyaku_svc_info = bean_array.getDataBean(0);

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 共有フォームBean.ＷＥＢ新規[0].ｓｙｓＩＤ → 支払方法一覧照会マップ.ＫＥＹ＿SYSID
		parentMap.put("key_sysid", web_new_bean.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE));

		/**
		 * 機能コードが２の場合は共有フォームBean.契約サービス情報.サービス契約回線内訳番号を設定する。
		 */
		if (JPCModelConstant.FUNC_CD_2.equals(func_code))
		{
			parentMap.put("key_svc_kei_kaisen_ucwk_no", keiyaku_svc_info.sendMessageString(CommonInfoCFConst.SVC_KEI_KAISEN_UCWK_NO_10,
					X31CWebConst.DATABEAN_GET_VALUE));
		}

		outputMap.put("FUSV007801SC", parentMap);

		return outputMap;
	}

	/**
	 * クレジットカード会社一覧照会の上りマッピングをする
	 * @param bean　[0]：お支払い方法入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV007802SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// クレジットカード事業コード → クレジット会社一覧照会マップ.ＫＥＹ＿クレジットカード事業コード
		parentMap.put("key_crecard_jigyo_cd", bean[0].sendMessageString("クレジットカード事業コード", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV007802SC", parentMap);

		return outputMap;
	}

	/**
	 * 請求契約一覧照会(支払方法取得)の上りマッピングをする
	 * @param bean　[0]：お支払い方法入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV007803SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		X31SDataBeanAccess web_new_bean = null; // 共有フォームBeanのＷＥＢ新規以下へのアクセサ
		X31SDataBeanAccess mob_bean = null; // 共有フォームBeanのモバイル以下へのアクセサ
		X31SDataBeanAccessArray bean_array = null;

		bean_array = bean[1].getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		web_new_bean = bean_array.getDataBean(0);
		bean_array = web_new_bean.getDataBeanArray(CommonInfoCFConst.EOMOBILE);
		mob_bean = bean_array.getDataBean(0);

		String mskm_kbn = web_new_bean.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, X31CWebConst.DATABEAN_GET_VALUE);
		// モバイルコース
		String mobCourse = mob_bean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14, X31CWebConst.DATABEAN_GET_VALUE);

		//追加申込 かつ モバイルコースが「6:3G 7.2M光ハイブリッド」または「7:3G 21M光ハイブリッド」の場合マッピングを行う
		if (!(JFUStrConst.MSKM_KBN_ADD.equals(mskm_kbn) && ((JFUStrConst.MOBILE_COURSE_3G_HHB.equals(mobCourse)) || (JFUStrConst.MOBILE_COURSE_3G_21M_HHB
				.equals(mobCourse)))))
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 共有フォームBean.ＷＥＢ新規[0].ｓｙｓＩＤ → 支払方法一覧照会マップ.ＫＥＹ＿SYSID
		parentMap.put("key_sysid", web_new_bean.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV007803SC", parentMap);

		return outputMap;
	}

	/**
	 * 金融機関一意照会の上りマッピングをする
	 * @param bean　[0]：お支払い方法入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param opeDate
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV007804SC(X31SDataBeanAccess[] bean, HashMap outputMap, String opeDate, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		X31SDataBeanAccess web_new_bean = null; // 共有フォームBeanのＷＥＢ新規以下へのアクセサ
		X31SDataBeanAccess payway_bean = null; // 共有フォームBeanの支払方法情報以下へのアクセサ
		X31SDataBeanAccessArray bean_array = null;

		bean_array = bean[1].getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		web_new_bean = bean_array.getDataBean(0);
		bean_array = web_new_bean.getDataBeanArray(CommonInfoCFConst.PAYWAY_INFO);
		payway_bean = bean_array.getDataBean(0);

		String mskm_kbn = web_new_bean.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, X31CWebConst.DATABEAN_GET_VALUE);

		String bank_cd = payway_bean.sendMessageString(CommonInfoCFConst.BANK_CD_15, X31CWebConst.DATABEAN_GET_VALUE);
		String branch_cd = payway_bean.sendMessageString(CommonInfoCFConst.BRANCH_CD_15, X31CWebConst.DATABEAN_GET_VALUE);
		// ＫＥＹ＿金融機関コード、ＫＥＹ＿金融機関支店コードに値が設定されている場合のみマッピングを行う
		if ((bank_cd == null || bank_cd.trim().length() == 0) || 
			(branch_cd == null || branch_cd.trim().length() == 0))
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 共有フォームBean.ＷＥＢ新規[0].支払方法情報[0].銀行コード → 金融機関一意照会マップ.ＫＥＹ＿金融機関コード
		parentMap.put("key_bank_cd", bank_cd);

		// 共有フォームBean.ＷＥＢ新規[0].支払方法情報[0].支店コード → 金融機関一意照会マップ.ＫＥＹ＿金融機関支店コード
		parentMap.put("key_bank_shiten_cd", branch_cd);

		// 運用日付 → 金融機関一意照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", opeDate);

		outputMap.put("FUSV007804SC", parentMap);

		return outputMap;
	}

	/**
	 * 業務パラメータ管理一意照会の上りマッピングをする
	 * @param bean　[0]：お支払い方法入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV007805SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		outputMap.put("FUSV007805SC", parentMap);

		return outputMap;
	}

	/**
	 * 業務パラメータ管理一意照会（ペイジェント向けマーチャントID）の上りマッピングをする
	 * @param bean　[0]：支払方法変更受付　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV007806SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		outputMap.put("FUSV007806SC", parentMap);

		return outputMap;
	}

	/**
	 * 請求契約一覧照会(支払方法取得)の下りマッピング
	 * @param bean　[0]：お支払い方法入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param key_Sei_kei_no : 共有フォームビーン.請求契約番号(登録時に発行された請求契約番号)
	 * @param hbFlg 追加ハイブリッド限定フラグ true：追加 かつ 光ハイブリッド かつ ネット契約未選択
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV007801SC(X31SDataBeanAccess[] bean, HashMap outputMap, String key_Sei_kei_no, Boolean hbFlg) throws Exception
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV007801SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV007801SC");
		}

		ArrayList childList = null;

		// 支払い方法フラグ
		Boolean creCardFlg1 = false;
		Boolean creCardFlg2 = false;
		Boolean yuchoFlg1 = false;
		Boolean yuchoFlg2 = false;
		Boolean bankFlg1 = false;
		Boolean bankFlg2 = false;
		Boolean bankFlg3 = false;

		StringBuffer payWayBuff = new StringBuffer();

		// 請求契約番号
		ArrayList<String> seiky_kei_no = new ArrayList<String>();

		// 追加ハイブリッド限定フラグONの場合
		if (hbFlg)
		{
			X31SDataBeanAccess seiky_saki_list = bean[0].getDataBeanArray(FUW00115SFConst.SEIKY_SAKI_LIST).getDataBean(0);
			int seiky_saki_list_count = (Integer)seiky_saki_list.sendMessage(FUW00115SFConst.SEIKY_KEI_NO_07, X31CWebConst.DATABEAN_GET_COUNT);

			// ループ：サービス契約一覧照会（同一請求先回線情報取得）件数分
			for (int i = 0; i < seiky_saki_list_count; i++)
			{

				// 請求契約番号をArrayListに格納
				seiky_kei_no.add(seiky_saki_list.sendMessageString(FUW00115SFConst.SEIKY_KEI_NO_07, X31CWebConst.DATABEAN_GET_VALUE, i));
			}
		}

		X31SDataBeanAccessArray listFUSV007801SC_hktgi_payway_EKK0491B505CBSMsg1List = bean[0].getDataBeanArray("引継支払方法");

		if (listFUSV007801SC_hktgi_payway_EKK0491B505CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0491B505CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0491B505CBSMsg1List");

			X31SDataBeanAccess subbean = listFUSV007801SC_hktgi_payway_EKK0491B505CBSMsg1List.getDataBean(0);

			/**
			 * 有効なものだけにする。
			 */
			childList = validList(subbean, key_Sei_kei_no, hbFlg, seiky_kei_no, childList);

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				// 初期化
				creCardFlg1 = false;
				creCardFlg2 = false;
				yuchoFlg1 = false;
				yuchoFlg2 = false;
				bankFlg1 = false;
				bankFlg2 = false;
				bankFlg3 = false;
				payWayBuff.setLength(0);
				if (subbean == null)
				{
					continue;
				}

				// 引継支払方法.請求契約番号 ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.請求契約番号
				if (childMap != null)
				{
					subbean.sendMessageString("請求契約番号", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("seiky_kei_no"));
				}
				else
				{
					subbean.sendMessageString("請求契約番号", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.請求契約ステータス ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.請求契約ステータス
				if (childMap != null)
				{
					subbean.sendMessageString("請求契約ステータス", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("seiky_kei_stat"));
				}
				else
				{
					subbean.sendMessageString("請求契約ステータス", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.請求契約ステータス名称 ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.請求契約ステータス名称
				if (childMap != null)
				{
					subbean.sendMessageString("請求契約ステータス名称", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("seiky_kei_stat_nm"));
				}
				else
				{
					subbean.sendMessageString("請求契約ステータス名称", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.請求方法コード ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.請求方法コード
				if (childMap != null)
				{
					subbean.sendMessageString("請求方法コード", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("seiky_way_cd"));
				}
				else
				{
					subbean.sendMessageString("請求方法コード", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.請求方法コード名称 ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.請求方法コード名称
				if (childMap != null)
				{
					subbean.sendMessageString("請求方法コード名称", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("seiky_way_cd_nm"));
				}
				else
				{
					subbean.sendMessageString("請求方法コード名称", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.請求方法番号（口座） ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.請求方法番号（口座）
				if (childMap != null)
				{
					subbean.sendMessageString("請求方法番号（口座）", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("seiky_way_no_koza"));
				}
				else
				{
					subbean.sendMessageString("請求方法番号（口座）", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.請求方法番号（クレジットカード） ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.請求方法番号（クレジットカード）
				if (childMap != null)
				{
					subbean.sendMessageString("請求方法番号（クレジットカード）", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("seiky_way_no_crecard"));
				}
				else
				{
					subbean.sendMessageString("請求方法番号（クレジットカード）", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.金融機関名 ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.金融機関名
				if (childMap != null)
				{
					subbean.sendMessageString("金融機関名", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("bank_nm"));
					if (childMap.get("bank_nm").toString().length() > 0)
					{
						bankFlg1 = true;
					}
				}
				else
				{
					subbean.sendMessageString("金融機関名", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.金融機関支店名 ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.金融機関支店名
				if (childMap != null)
				{
					subbean.sendMessageString("金融機関支店名", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("bank_shiten_nm"));
					if (childMap.get("bank_shiten_nm").toString().length() > 0)
					{
						bankFlg2 = true;
					}
				}
				else
				{
					subbean.sendMessageString("金融機関支店名", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.預金種目コード ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.預金種目コード
				if (childMap != null)
				{
					subbean.sendMessageString("預金種目コード", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("yokin_shumoku_cd"));
				}
				else
				{
					subbean.sendMessageString("預金種目コード", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.預金種目コード名称 ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.預金種目コード名称
				if (childMap != null)
				{
					subbean.sendMessageString("預金種目コード名称", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("yokin_shumoku_cd_nm"));
				}
				else
				{
					subbean.sendMessageString("預金種目コード名称", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.口座番号 ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.口座番号
				if (childMap != null)
				{
					subbean.sendMessageString("口座番号", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("koza_no"));
					if (childMap.get("koza_no").toString().length() > 0)
					{
						bankFlg3 = true;
					}
				}
				else
				{
					subbean.sendMessageString("口座番号", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}

				// 引継支払方法.クレジットカード番号 ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.クレジットカード番号
				if (childMap != null)
				{
					subbean.sendMessageString("クレジットカード番号", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("crecard_no"));
					if (childMap.get("crecard_no").toString().length() > 0)
					{
						creCardFlg1 = true;
					}
				}
				else
				{
					subbean.sendMessageString("クレジットカード番号", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.クレジットカード会社名 ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.クレジットカード会社名
				if (childMap != null)
				{
					subbean.sendMessageString("クレジットカード会社名", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("crecard_comp_nm"));
					if (childMap.get("crecard_comp_nm").toString().length() > 0)
					{
						creCardFlg2 = true;
					}
				}
				else
				{
					subbean.sendMessageString("クレジットカード会社名", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.通帳記号 ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.通帳記号
				if (childMap != null)
				{
					subbean.sendMessageString("通帳記号", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("tsucho_symbol"));
					if (childMap.get("tsucho_symbol").toString().length() > 0)
					{
						yuchoFlg1 = true;
					}
				}
				else
				{
					subbean.sendMessageString("通帳記号", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.通帳番号 ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.通帳番号
				if (childMap != null)
				{
					subbean.sendMessageString("通帳番号", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("tsucho_no"));
					if (childMap.get("tsucho_no").toString().length() > 0)
					{
						yuchoFlg2 = true;
					}
				}
				else
				{
					subbean.sendMessageString("通帳番号", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 引継支払方法.更新年月日時分秒 ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.更新年月日時分秒
				if (childMap != null)
				{
					subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("upd_dtm"));
				}
				else
				{
					subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}

				if (childMap != null)
				{
					subbean.sendMessageString("送付先名", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("sohus_nm"));
					subbean.sendMessageString("送付先市区町村名", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("sohus_city_nm"));
					subbean.sendMessageString("送付先大字通称名", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("sohus_oaztsu_nm"));
					subbean.sendMessageString("送付先字丁目名", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("sohus_azcho_nm"));
					subbean.sendMessageString("送付先住所補記・建物名", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("sohus_adrttm"));
					subbean.sendMessageString("送付先住所補記・部屋番号", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("sohus_adrrm"));
					subbean.sendMessageString("送付先番地号", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("sohus_bnchigo"));
				}
				else
				{
					subbean.sendMessageString("送付先名", X31CWebConst.DATABEAN_ADD_VALUE, new String());
					subbean.sendMessageString("送付先市区町村名", X31CWebConst.DATABEAN_ADD_VALUE, new String());
					subbean.sendMessageString("送付先大字通称名", X31CWebConst.DATABEAN_ADD_VALUE, new String());
					subbean.sendMessageString("送付先字丁目名", X31CWebConst.DATABEAN_ADD_VALUE, new String());
					subbean.sendMessageString("送付先住所補記・建物名", X31CWebConst.DATABEAN_ADD_VALUE, new String());
					subbean.sendMessageString("送付先住所補記・部屋番号", X31CWebConst.DATABEAN_ADD_VALUE, new String());
					subbean.sendMessageString("送付先番地号", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}

				/** 支払方法表示作成処理 */

				// クレジットカードの場合
				if (creCardFlg1 && creCardFlg2)
				{
					payWayBuff.append(JFUWebCommon.trim((String)childMap.get("crecard_comp_nm")));
					payWayBuff.append(JFUStrConst.HALF_SPACE);
					// マスク化処理
					// No466 2013/04/01 Otsuka start
					String creNo = JZMFormatForMask.crecardExcLeft6Right4((String)childMap.get("crecard_no"));
					payWayBuff.append(creNo);
					// No466 2013/04/01 Otsuka end
				}

				//ゆうちょ銀行の場合
				if (yuchoFlg1 && yuchoFlg2)
				{
					payWayBuff.append(YUCHO);
					payWayBuff.append(JFUStrConst.HALF_SPACE);
					payWayBuff.append(JFUStrConst.ASTERISK_HALF);
					payWayBuff.append(JZMFormatForMask.stdMask((String)childMap.get("tsucho_symbol"), true));
					payWayBuff.append(JFUStrConst.ASTERISK_HALF);
					payWayBuff.append(JFUStrConst.HALF_HAIHUN);
					payWayBuff.append(JZMFormatForMask.maskExcRight4((String)childMap.get("tsucho_no")));

				}

				// 銀行の場合
				else if (bankFlg1 && bankFlg2 && bankFlg3)
				{
					payWayBuff.append(JFUWebCommon.trim((String)childMap.get("bank_nm")));
					payWayBuff.append(JFUStrConst.HALF_SPACE);
					payWayBuff.append(JFUWebCommon.trim((String)childMap.get("bank_shiten_nm")));
					payWayBuff.append(SHITEN);
					payWayBuff.append(JFUStrConst.HALF_SPACE);
					payWayBuff.append((String)childMap.get("yokin_shumoku_cd_nm"));
					payWayBuff.append(JFUStrConst.HALF_SPACE);
					payWayBuff.append(JZMFormatForMask.maskExcRight4((String)childMap.get("koza_no")));
				}

				// 窓口払い
				else if (JFUStrConst.CD00166_1.equals(childMap.get("seiky_way_cd")))
				{

					payWayBuff.append(JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00115, "CD00166_1"));
					addSohus(payWayBuff, childMap);
				}
				// 支払い方法情報 引継支払方法名称リスト ← 引継ぎ支払い方法
				subbean.sendMessageString(FUW00115SFConst.HKTGI_PAYWAY_NM_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, payWayBuff.toString());
			}
		}
		return bean;
	}

	/**
	 * 有効な支払い情報を返します。
	 * 
	 * @param subbean
	 * @param key_Sei_kei_no
	 * @param hbFlg
	 * @param seiky_kei_no
	 * @param childList
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private ArrayList validList(X31SDataBeanAccess subbean, String key_Sei_kei_no, boolean hbFlg, ArrayList<String> seiky_kei_no, ArrayList childList)
	{
		ArrayList ret = new ArrayList(childList.size());
		for (int i = 0; i < childList.size(); i++)
		{
			HashMap childMap = (HashMap)childList.get(i);

			//  仮請求番号であればリストに追加しない
			String seiky_kei_no2 = (String)childMap.get("seiky_kei_no");
			if (key_Sei_kei_no.equals(seiky_kei_no2))
			{
				continue;
			}

			// 初期化
			if (subbean == null)
			{
				continue;
			}

			// 引継支払方法.請求契約番号 ← 請求契約一覧照会（支払方法取得）マップ.請求契約一覧照会明細.請求契約番号
			if (childMap != null)
			{
				/**
				 * 追加ハイブリッド限定フラグONの場合、請求先リスト.請求契約番号にない請求契約番号のリストは
				 * マッピングしない。
				 */
				if (hbFlg)
				{
					if (!seiky_kei_no.contains((String)childMap.get("seiky_kei_no")))
					{
						continue;
					}
				}
			}
			ret.add(childMap);
		}
		return ret;
	}

	/**
	 * 送付先を付与します。
	 * 
	 * <br>
	 * @param sb 追加対象となるバッファ
	 * @param map 送付先情報が入ったMap
	 */
	private void addSohus(StringBuffer sb, Map map)
	{
		sb.append(JFUStrConst.KIGOU_KAKKO_STA_HALF);
		sb.append(JFUWebCommon.trim((String)map.get("sohus_city_nm")));
		sb.append(JFUWebCommon.trim((String)map.get("sohus_oaztsu_nm")));
		sb.append(JFUWebCommon.trim((String)map.get("sohus_azcho_nm")));
		sb.append(JFUWebCommon.trim((String)map.get("sohus_bnchigo")));
		sb.append(JFUStrConst.SPACE);
		sb.append(JFUWebCommon.trim((String)map.get("sohus_adrttm")));
		sb.append(JFUWebCommon.trim((String)map.get("sohus_adrrm")));
		sb.append(JFUStrConst.SPACE);
		sb.append(JFUWebCommon.trim((String)map.get("sohus_nm")));
		sb.append(JFUStrConst.KIGOU_KAKKO_END_HALF);
	}

	/**
	 * クレジットカード会社一覧照会の下りマッピング
	 * @param bean　[0]：お支払い方法入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV007802SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV007802SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV007802SC");
		}

		// 表示するクレジットカード会社を取得
		HashMap parentMapWp = null;
		if (outputMap.containsKey("FUSV007805SC"))
		{
			parentMapWp = (HashMap)outputMap.get("FUSV007805SC");
		}

		String dspCrecardComp = JFUStrConst.EMPTY;
		if (parentMapWp != null && parentMapWp.containsKey("EZM0321A010CBSMsg1List"))
		{
			ArrayList childListWp = (ArrayList)parentMapWp.get("EZM0321A010CBSMsg1List");
			if (childListWp != null)
			{
				for (int i = 0; i < childListWp.size(); i++)
				{
					HashMap childMap = (HashMap)childListWp.get(i);

					if (childMap != null && childMap.containsKey("work_param_sette_value"))
					{
						dspCrecardComp = (String)childMap.get("work_param_sette_value");
					}
				}
			}
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listFUSV007802SC_crecard_comp_lst_EKK0531B501CBSMsg1List = bean[0].getDataBeanArray("クレジットカード会社リスト");

		if (listFUSV007802SC_crecard_comp_lst_EKK0531B501CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0531B501CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0531B501CBSMsg1List");

			X31SDataBeanAccess subbean = listFUSV007802SC_crecard_comp_lst_EKK0531B501CBSMsg1List.getDataBean(0);

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				// クレジットカード会社リスト.クレジット会社コード値リスト ← クレジット会社一覧照会マップ.クレジットカード会社一覧照会明細.クレジットカード会社コード
				if (childMap != null)
				{
					/** ダミー情報 銀行・口割りの値の場合は処理をスキップ START */
					if (CARD_COMP_CD_DUMMY.equals((String)childMap.get("crecard_comp_cd")))
					{
						continue;
					}

					// 表示するクレジットカード会社でない場合は処理をスキップ
					if (!JFUWebCommon.isNull(dspCrecardComp) && !dspCrecardComp.contains((String)childMap.get("crecard_comp_cd")))
					{
						continue;
					}

					subbean.sendMessageString("クレジット会社コード値リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("crecard_comp_cd"));
				}
				else
				{
					subbean.sendMessageString("クレジット会社コード値リスト", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// クレジットカード会社リスト.クレジット会社コード名リスト ← クレジット会社一覧照会マップ.クレジットカード会社一覧照会明細.クレジットカード会社略称
				if (childMap != null)
				{
					subbean.sendMessageString("クレジット会社コード名リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("crecard_comp_nm"));
				}
				else
				{
					subbean.sendMessageString("クレジット会社コード名リスト", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// クレジットカード会社リスト.加盟店番号（１５桁） ← クレジット会社一覧照会マップ.クレジットカード会社一覧照会明細.加盟店番号（15桁）
				if (childMap != null)
				{
					subbean.sendMessageString("加盟店番号（１５桁）", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("membstr_no_15"));
				}
				else
				{
					subbean.sendMessageString("加盟店番号（１５桁）", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// クレジットカード会社リスト.加盟店番号（１２桁） ← クレジット会社一覧照会マップ.クレジットカード会社一覧照会明細.加盟店番号（12桁）
				if (childMap != null)
				{
					subbean.sendMessageString("加盟店番号（１２桁）", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("membstr_no_12"));
				}
				else
				{
					subbean.sendMessageString("加盟店番号（１２桁）", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// クレジットカード会社リスト.クレジット交換コードリスト ← クレジット会社一覧照会マップ.クレジットカード会社一覧照会明細.クレジット交換コードリスト
				if (childMap != null)
				{
					subbean.sendMessageString("クレジット交換コードリスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("credit_kokan_cd"));
				}
				else
				{
					subbean.sendMessageString("クレジット交換コードリスト", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
			}
		}

		return bean;
	}

	/**
	 * サービス契約一覧照会（同一請求先回線情報取得）の下りマッピング
	 * @param bean　[0]：お支払い方法入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV007803SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV007803SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV007803SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listFUSV007803SC_seiky_saki_list_EKK0081B524CBSMsg1List = bean[0].getDataBeanArray("請求先リスト");

		if (listFUSV007803SC_seiky_saki_list_EKK0081B524CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0081B524CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0081B524CBSMsg1List");

			X31SDataBeanAccess subbean = listFUSV007803SC_seiky_saki_list_EKK0081B524CBSMsg1List.getDataBean(0);

			for (int i = 0; i < childList.size(); i++)
			{
				// No244 Otsuka 2013/02/13 start
				HashMap childMap = (HashMap)childList.get(i);

				if (childMap != null)
				{
					// 料金グループコードがeoモバイル(EM)の場合
					if (JFUStrConst.CD00133_08.equals(childMap.get("prc_grp_cd")))
					{
						// 料金コースコードが3G 7.2Mハイブリッドまたは3G 21M ハイブリッド以外の場合、マッピングを行わない。
						if (!(JFUStrConst.CD00134_A59.equals(childMap.get("pcrs_cd")) || JFUStrConst.CD00134_A60.equals(childMap.get("pcrs_cd"))))
						{
							continue;
						}
					}
				}
				// No244 Otsuka 2013/02/13 end

				// 請求先リスト.サービス契約番号 ← サービス契約一覧照会（同一請求先回線情報取得）マップ.サービス契約一覧照会（同一請求先回線情報取得）明細.サービス契約番号
				if (childMap != null)
				{
					subbean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("svc_kei_no"));
				}
				else
				{
					subbean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 請求先リスト.料金グループコード ← サービス契約一覧照会（同一請求先回線情報取得）マップ.サービス契約一覧照会（同一請求先回線情報取得）明細.料金グループコード
				if (childMap != null)
				{
					subbean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("prc_grp_cd"));
				}
				else
				{
					subbean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 請求先リスト.料金コースコード ← サービス契約一覧照会（同一請求先回線情報取得）マップ.サービス契約一覧照会（同一請求先回線情報取得）明細.料金コースコード
				if (childMap != null)
				{
					subbean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pcrs_cd"));
				}
				else
				{
					subbean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 請求先リスト.請求契約番号 ← サービス契約一覧照会（同一請求先回線情報取得）マップ.サービス契約一覧照会（同一請求先回線情報取得）明細.請求契約番号
				if (childMap != null)
				{
					subbean.sendMessageString("請求契約番号", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("seiky_kei_no"));
				}
				else
				{
					subbean.sendMessageString("請求契約番号", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
			}
		}

		return bean;
	}

	/**
	 * 金融機関一意照会の下りマッピング
	 * @param bean　[0]：お支払い方法入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV007804SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV007804SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV007804SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listFUSV007804SC_kinyu_kikan_list_EKK0511A010CBSMsg1List = bean[0].getDataBeanArray("口座振替リスト");

		if (listFUSV007804SC_kinyu_kikan_list_EKK0511A010CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0511A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0511A010CBSMsg1List");

			if (listFUSV007804SC_kinyu_kikan_list_EKK0511A010CBSMsg1List.getCount() == 0)
			{
				listFUSV007804SC_kinyu_kikan_list_EKK0511A010CBSMsg1List.addDataBean();
			}
			X31SDataBeanAccess subbean = listFUSV007804SC_kinyu_kikan_list_EKK0511A010CBSMsg1List.getDataBean(0);

			if (childList.size() > 0)
			{
				HashMap childMap = (HashMap)childList.get(0);

				// 金融機関リスト.金融機関コード ← 金融機関一意照会マップ.金融機関一意照会明細.金融機関コード
				if (childMap != null)
				{
					subbean.sendMessageString("金融機関コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("bank_cd"));
				}
				else
				{
					subbean.sendMessageString("金融機関コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 金融機関リスト.金融機関支店コード ← 金融機関一意照会マップ.金融機関一意照会明細.金融機関支店コード
				if (childMap != null)
				{
					subbean.sendMessageString("金融機関支店コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("bank_shiten_cd"));
				}
				else
				{
					subbean.sendMessageString("金融機関支店コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 金融機関リスト.金融機関名 ← 金融機関一意照会マップ.金融機関一意照会明細.金融機関名
				if (childMap != null)
				{
					subbean.sendMessageString("金融機関名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("bank_nm"));
				}
				else
				{
					subbean.sendMessageString("金融機関名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 金融機関リスト.金融機関カナ名 ← 金融機関一意照会マップ.金融機関一意照会明細.金融機関カナ名
				if (childMap != null)
				{
					subbean.sendMessageString("金融機関カナ名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("bank_kana"));
				}
				else
				{
					subbean.sendMessageString("金融機関カナ名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 金融機関リスト.金融機関支店名 ← 金融機関一意照会マップ.金融機関一意照会明細.金融機関支店名
				if (childMap != null)
				{
					subbean.sendMessageString("金融機関支店名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("bank_shiten_nm"));
				}
				else
				{
					subbean.sendMessageString("金融機関支店名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 金融機関リスト.金融機関支店カナ名 ← 金融機関一意照会マップ.金融機関一意照会明細.金融機関支店カナ名
				if (childMap != null)
				{
					subbean.sendMessageString("金融機関支店カナ名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("bank_shiten_kana"));
				}
				else
				{
					subbean.sendMessageString("金融機関支店カナ名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		return bean;
	}

	/**
	 * 業務パラメータ管理一意照会（ペイジェント向けマーチャントID）の下りマッピング
	 * @param bean　[0]：支払方法変更受付　[1]：共有フォームビーン
	 * @param outputMap
	 * @return bean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV007806SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV007806SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV007806SC");
		}

		if (null != parentMap && parentMap.containsKey("EZM0321A010CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("EZM0321A010CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				if (childMap.containsKey("work_param_sette_value"))
				{
					// 業務パラメータ設定値(ペイジェント向けマーチャントID)
					bean[0].sendMessageString(FUW00115SFConst.MERCHANT_ID, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("work_param_sette_value"));
				}
			}
		}
		return bean;
	}
}