/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：ACSV0013_ACSV0013OPDBMapper
*	ソースファイル名：ACSV0013_ACSV0013OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年11月09日
*＜機能概要＞
*	BP（通話明細照会検索初期表示）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/11/09	FJ		新規作成
*	v5.00.00	2013/07/08	FJ)垣内		【LT-2013-0000273】照会可能期間開始日の設定を削除
*	v45.00.00	2019/08/01	FJ)星野		【ANK-3699-00-00】
**********************************************************************/
package eo.web.webview.mapping;

import java.math.BigDecimal;
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 com.sun.enterprise.tools.common.util.StringUtils;

import eo.common.constant.JACStrConst;
import eo.common.constant.JZM0171Constant;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.ACW00601SF.ACW00601SFConst;
import eo.web.webview.common.JCHWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class ACSV0013_ACSV0013OPDBMapper
{

	/** SCタイトル(eo光電話通話明細一覧照会) */
	private static final String TITLE_ACSV001306SC = "ACSV001306SC";

	/** SCタイトル(eo-netフォン通話明細一覧照会) */
	private static final String TITLE_ACSV001309SC = "ACSV001309SC";

	private static final String PERIOD = ".";

	private static final String COLON = ":";

	private static final BigDecimal HOUR_DIV = new BigDecimal(3600);

	private static final BigDecimal MINUTE_DIV = new BigDecimal(60);

	/** 未請求年月（"201308"）  */
	private static final String MISEIKY_YM = "201308";

	/**
	 * コンストラクタ
	 */
	public ACSV0013_ACSV0013OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCondition(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 電話種類 → 条件.電話種類
		parentMap.put("tel_kind", bean[0].sendMessageString("電話種類", X31CWebConst.DATABEAN_GET_VALUE));

		// イベント → 条件.イベント
		parentMap.put("event", bean[0].sendMessageString("イベント", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CONDITION", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV001301SC(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);

		// 業務パラメータID（照会可能期間） → 業務パラメータ管理一意照会マップ.ＫＥＹ＿業務パラメータＩＤ
		parentMap.put("key_work_param_id", "AC_TUWA_SHOKAI_PRD");

		outputMap.put("ACSV001301SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV001302SC(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);

		// 固定値（03） → 料金スケジュール定義一覧照会マップ.ＫＥＹ＿イベントコード
		parentMap.put("key_event_cd", "03");

		// オンライン運用日 → 料金スケジュール定義一覧照会マップ.ＫＥＹ＿基準年月日
		parentMap.put("key_stdardymd", bean[0].sendMessageString("オンライン運用日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("ACSV001302SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV001303SC(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_shokai_psb_prd_end", bean[0].sendMessageString("照会期間：期間指定　終了年", X31CWebConst.DATABEAN_GET_VALUE)
						+ bean[0].sendMessageString("照会期間：期間指定　終了月", X31CWebConst.DATABEAN_GET_VALUE)
						+ bean[0].sendMessageString("照会期間：期間指定　終了日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("ACSV001303SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV001304SC(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("ACSV001304SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV001305SC(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);

		// 電話番号（値） → eo光電話通話サービス種別名一覧照会マップ.ＫＥＹ＿電話番号
		X31SDataBeanAccessArray telnoList = bean[0].getDataBeanArray("電話番号");
		X31SDataBeanAccess subBean = telnoList.getDataBean(0);
		String index = subBean.sendMessageString("選択電話番号", X31CWebConst.DATABEAN_GET_VALUE);

		if (!"".equals(index))
		{
			// 電話番号リストが存在する場合のみリストから値を設定する
			// リストが無い場合（光電話初期表示）はSC間でのデータ引継で値を設定
			parentMap.put("key_telno", subBean.sendMessageString("電話番号（値）", X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index)));
		}

		// 照会可能期間終了日 → eo光電話通話サービス種別名一覧照会マップ.ＫＥＹ＿運用日
		parentMap.put("key_unyo_ymd", bean[0].sendMessageString("照会期間：期間指定　終了年", X31CWebConst.DATABEAN_GET_VALUE)
				+ bean[0].sendMessageString("照会期間：期間指定　終了月", X31CWebConst.DATABEAN_GET_VALUE)
				+ bean[0].sendMessageString("照会期間：期間指定　終了日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("ACSV001305SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV001306SC(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);
		bean[0].sendMessageString("機能コード", X31CWebConst.DATABEAN_SET_VALUE, func_code);

		// サービス契約番号 → eo光電話通話明細一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		// 指定番号 → eo光電話通話明細一覧照会マップ.ＫＥＹ＿課金先電話番号
		parentMap.put("key_kakins_telno", bean[0].sendMessageString("指定番号", X31CWebConst.DATABEAN_GET_VALUE));

		// 課金可否 → eo光電話通話明細一覧照会マップ.ＫＥＹ＿課金可否
		parentMap.put("key_chrg_kh", bean[0].sendMessageString("課金可否", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間開始 → eo光電話通話明細一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＦＲＯＭ＿１
		parentMap.put("key_pcall_staymd_from_1", bean[0].sendMessageString("通話開始年月日ＦＲＯＭ１", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間終了 → eo光電話通話明細一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＴＯ＿１
		parentMap.put("key_pcall_staymd_to_1", bean[0].sendMessageString("通話開始年月日ＴＯ１", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間開始（一ヶ月前） → eo光電話通話明細一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＦＲＯＭ＿２
		parentMap.put("key_pcall_staymd_from_2", bean[0].sendMessageString("通話開始年月日ＦＲＯＭ２", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間終了（一ヶ月前） → eo光電話通話明細一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＴＯ＿２
		parentMap.put("key_pcall_staymd_to_2", bean[0].sendMessageString("通話開始年月日ＴＯ２", X31CWebConst.DATABEAN_GET_VALUE));

		// 料金グループコード → eo光電話通話明細一覧照会マップ.ＫＥＹ＿料金グループコード
		parentMap.put("key_prc_grp_cd", bean[0].sendMessageString("料金グループコード", X31CWebConst.DATABEAN_GET_VALUE));

		// オンライン運用日 → eo光電話通話明細一覧照会マップ.ＫＥＹ＿運用日付
		parentMap.put("key_unyo_ymd", bean[0].sendMessageString("オンライン運用日", X31CWebConst.DATABEAN_GET_VALUE));

		// 固定値(0) → eo光電話通話明細一覧照会マップ.ＫＥＹ＿課金対象利用月識別コード＿１
		parentMap.put("key_chrg_tg_use_mon_skbt_cd_1", "0");

		// 固定値(1) → eo光電話通話明細一覧照会マップ.ＫＥＹ＿課金対象利用月識別コード＿２
		parentMap.put("key_chrg_tg_use_mon_skbt_cd_2", "1");

		// 固定値(CD00987) → eo光電話通話明細一覧照会マップ.ＫＥＹ＿コード種別コード
		parentMap.put("key_cd_sbt_cd", JZM0171Constant.CD00987);

		// 引数情報の取得
		HashMap<String, Object> paramMap = (HashMap<String, Object>)outputMap.get(TITLE_ACSV001306SC);

		// eo光電話明細表示件数 → eo光電話通話明細一覧照会マップ.ＫＥＹ＿eo光電話明細表示件数
		parentMap.put("display_num", paramMap.get("display_num"));
		// eo光電話明細表示ページ番号 → eo光電話通話明細一覧照会マップ.ＫＥＹ＿eo光電話明細表示ページ番号
		parentMap.put("display_page_num", paramMap.get("display_page_num"));
		parentMap.put("max_search_num", Integer.toString(Integer.MAX_VALUE));

		// 内部情報を削除
		outputMap.remove(TITLE_ACSV001306SC);

		outputMap.put("ACSV001306SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV001307SC(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);

		// サービス契約番号 → eo光電話通話明細合計一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		// 指定番号 → eo光電話通話明細合計一覧照会マップ.ＫＥＹ＿課金先電話番号
		parentMap.put("key_kakins_telno", bean[0].sendMessageString("指定番号", X31CWebConst.DATABEAN_GET_VALUE));

		// 課金可否 → eo光電話通話明細一覧照会マップ.ＫＥＹ＿課金可否
		parentMap.put("key_chrg_kh", bean[0].sendMessageString("課金可否", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間開始 → eo光電話通話明細合計一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＦＲＯＭ＿１
		parentMap.put("key_pcall_staymd_from_1", bean[0].sendMessageString("通話開始年月日ＦＲＯＭ１", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間終了 → eo光電話通話明細合計一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＴＯ＿１
		parentMap.put("key_pcall_staymd_to_1", bean[0].sendMessageString("通話開始年月日ＴＯ１", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間開始（一ヶ月前） → eo光電話通話明細合計一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＦＲＯＭ＿２
		parentMap.put("key_pcall_staymd_from_2", bean[0].sendMessageString("通話開始年月日ＦＲＯＭ２", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間終了（一ヶ月前） → eo光電話通話明細合計一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＴＯ＿２
		parentMap.put("key_pcall_staymd_to_2", bean[0].sendMessageString("通話開始年月日ＴＯ２", X31CWebConst.DATABEAN_GET_VALUE));

		// 料金グループコード → eo光電話通話明細合計一覧照会マップ.ＫＥＹ＿料金グループコード
		parentMap.put("key_prc_grp_cd", bean[0].sendMessageString("料金グループコード", X31CWebConst.DATABEAN_GET_VALUE));

		// オンライン運用日 → eo光電話通話明細合計一覧照会マップ.ＫＥＹ＿運用日付
		parentMap.put("key_unyo_ymd", bean[0].sendMessageString("オンライン運用日", X31CWebConst.DATABEAN_GET_VALUE));

		// 固定値(0) → eo光電話通話明細合計一覧照会マップ.ＫＥＹ＿課金対象利用月識別コード＿１
		parentMap.put("key_chrg_tg_use_mon_skbt_cd_1", "0");

		// 固定値(1) → eo光電話通話明細合計一覧照会マップ.ＫＥＹ＿課金対象利用月識別コード＿２
		parentMap.put("key_chrg_tg_use_mon_skbt_cd_2", "1");

		outputMap.put("ACSV001307SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV001308SC(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);

		// 電話番号（値） → オプション通話サービス種別名一覧照会マップ.ＫＥＹ＿公衆網電話番号
		X31SDataBeanAccessArray telnoList = bean[0].getDataBeanArray("電話番号");
		X31SDataBeanAccess subBean = telnoList.getDataBean(0);
		String index = subBean.sendMessageString("選択電話番号", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("key_koshumo_telno", subBean.sendMessageString("電話番号（値）", X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index)));

		// オンライン運用日 → オプション通話サービス種別名一覧照会マップ.ＫＥＹ＿運用日付
		parentMap.put("key_unyo_ymd", bean[0].sendMessageString("オンライン運用日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("ACSV001308SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV001309SC(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_kakins_telno", bean[0].sendMessageString("指定番号", X31CWebConst.DATABEAN_GET_VALUE));

		// 課金可否 → ｅｏ−ｎｅｔフォン通話明細一覧照会マップ.ＫＥＹ＿課金可否
		parentMap.put("key_chrg_kh", bean[0].sendMessageString("課金可否", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間開始 → ｅｏ−ｎｅｔフォン通話明細一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＦＲＯＭ＿１
		parentMap.put("key_pcall_staymd_from_1", bean[0].sendMessageString("通話開始年月日ＦＲＯＭ１", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間終了 → ｅｏ−ｎｅｔフォン通話明細一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＴＯ＿１
		parentMap.put("key_pcall_staymd_to_1", bean[0].sendMessageString("通話開始年月日ＴＯ１", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間開始（一ヶ月前） → ｅｏ−ｎｅｔフォン通話明細一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＦＲＯＭ＿２
		parentMap.put("key_pcall_staymd_from_2", bean[0].sendMessageString("通話開始年月日ＦＲＯＭ２", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間終了（一ヶ月前） → ｅｏ−ｎｅｔフォン通話明細一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＴＯ＿２
		parentMap.put("key_pcall_staymd_to_2", bean[0].sendMessageString("通話開始年月日ＴＯ２", X31CWebConst.DATABEAN_GET_VALUE));

		// オプションサービスコード → ｅｏ−ｎｅｔフォン通話明細一覧照会マップ.ＫＥＹ＿オプションサービスコード
		parentMap.put("key_op_svc_cd", bean[0].sendMessageString("オプションサービスコード", X31CWebConst.DATABEAN_GET_VALUE));

		// オンライン運用日 → ｅｏ−ｎｅｔフォン通話明細一覧照会マップ.ＫＥＹ＿運用日付
		parentMap.put("key_unyo_ymd", bean[0].sendMessageString("オンライン運用日", X31CWebConst.DATABEAN_GET_VALUE));

		// 固定値(0) → ｅｏ−ｎｅｔフォン通話明細一覧照会マップ.ＫＥＹ＿課金対象利用月識別コード＿１
		parentMap.put("key_chrg_tg_use_mon_skbt_cd_1", "0");

		// 固定値(1) → ｅｏ−ｎｅｔフォン通話明細一覧照会マップ.ＫＥＹ＿課金対象利用月識別コード＿２
		parentMap.put("key_chrg_tg_use_mon_skbt_cd_2", "1");

		// 固定値(CD00987) → ｅｏ−ｎｅｔフォン通話明細一覧照会マップ.ＫＥＹ＿コード種別コード
		parentMap.put("key_cd_sbt_cd", "CD00987");

		// 引数情報の取得
		HashMap<String, Object> paramMap = (HashMap<String, Object>)outputMap.get(TITLE_ACSV001309SC);

		// ｅｏ−ｎｅｔフォン明細表示件数 → ｅｏ−ｎｅｔフォン通話明細一覧照会マップ.ＫＥＹ＿ｅｏ−ｎｅｔフォン明細表示件数
		parentMap.put("display_num", paramMap.get("display_num"));
		// ｅｏ−ｎｅｔフォン明細表示ページ番号 → ｅｏ−ｎｅｔフォン通話明細一覧照会マップ.ＫＥＹ＿ｅｏ−ｎｅｔフォン明細表示ページ番号
		parentMap.put("display_page_num", paramMap.get("display_page_num"));
		parentMap.put("max_search_num", Integer.toString(Integer.MAX_VALUE));

		// 内部情報を削除
		outputMap.remove(TITLE_ACSV001309SC);

		outputMap.put("ACSV001309SC", parentMap);

		return outputMap;
	}

	/***
	 * 上りマッピングをする
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV001310SC(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_kakins_telno", bean[0].sendMessageString("指定番号", X31CWebConst.DATABEAN_GET_VALUE));

		// 課金可否 → ｅｏ−ｎｅｔフォン通話明細合計一覧照会マップ.ＫＥＹ＿課金可否
		parentMap.put("key_chrg_kh", bean[0].sendMessageString("課金可否", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間開始 → ｅｏ−ｎｅｔフォン通話明細合計一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＦＲＯＭ＿１
		parentMap.put("key_pcall_staymd_from_1", bean[0].sendMessageString("通話開始年月日ＦＲＯＭ１", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間終了 → ｅｏ−ｎｅｔフォン通話明細合計一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＴＯ＿１
		parentMap.put("key_pcall_staymd_to_1", bean[0].sendMessageString("通話開始年月日ＴＯ１", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間開始（一ヶ月前） → ｅｏ−ｎｅｔフォン通話明細合計一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＦＲＯＭ＿２
		parentMap.put("key_pcall_staymd_from_2", bean[0].sendMessageString("通話開始年月日ＦＲＯＭ２", X31CWebConst.DATABEAN_GET_VALUE));

		// 照会期間終了（一ヶ月前） → ｅｏ−ｎｅｔフォン通話明細合計一覧照会マップ.ＫＥＹ＿通話開始年月日＿ＴＯ＿２
		parentMap.put("key_pcall_staymd_to_2", bean[0].sendMessageString("通話開始年月日ＴＯ２", X31CWebConst.DATABEAN_GET_VALUE));

		// オプションサービスコード → ｅｏ−ｎｅｔフォン通話明細合計一覧照会マップ.ＫＥＹ＿オプションサービスコード
		parentMap.put("key_op_svc_cd", bean[0].sendMessageString("オプションサービスコード", X31CWebConst.DATABEAN_GET_VALUE));

		// オンライン運用日 → ｅｏ−ｎｅｔフォン通話明細合計一覧照会マップ.ＫＥＹ＿運用日付
		parentMap.put("key_unyo_ymd", bean[0].sendMessageString("オンライン運用日", X31CWebConst.DATABEAN_GET_VALUE));

		// 固定値(0) → ｅｏ−ｎｅｔフォン通話明細合計一覧照会マップ.ＫＥＹ＿課金対象利用月識別コード＿１
		parentMap.put("key_chrg_tg_use_mon_skbt_cd_1", "0");

		// 固定値(1) → ｅｏ−ｎｅｔフォン通話明細合計一覧照会マップ.ＫＥＹ＿課金対象利用月識別コード＿２
		parentMap.put("key_chrg_tg_use_mon_skbt_cd_2", "1");

		outputMap.put("ACSV001310SC", parentMap);

		return outputMap;
	}

	/***
	 * 上りマッピングをする
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV001311SC(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_seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		// 固定値("010"：仮確定) → 請求一覧照会マップ.ＫＥＹ＿請求ステータス
		parentMap.put("key_seiky_stat", JACStrConst.SEIKY_STAT_KR_FIX);

		// 固定値("201308") → 請求一覧照会マップ.ＫＥＹ＿請求年月
		parentMap.put("key_seiky_ym", MISEIKY_YM);

		outputMap.put("ACSV001311SC", parentMap);

		return outputMap;
	}

// ANK-3699-00-00対応 20190801 星野 ADD START
	/**
	 * @param bean
	 * @param outputMap
	 * @param func_code
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV001312SC(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("ACSV001312SC", parentMap);
		
		return outputMap;
	}
// ANK-3699-00-00対応 20190801 星野 ADD END
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV001301SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("ACSV001301SC"))
		{
			parentMap = (HashMap)outputMap.get("ACSV001301SC");
		}

		ArrayList childList = null;

		childList = null;
		if (parentMap != null && parentMap.containsKey("EZM0321A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EZM0321A010CBSMsg1List");

			if (childList.size() == 0)
			{
				return null;
			}

			HashMap childMap = (HashMap)childList.get(0);

			// 照会可能月数 ← 業務パラメータ管理一意照会マップ.業務パラメータ管理一意照会明細.業務パラメータ設定値
			bean[0].sendMessageString("照会可能月数", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("work_param_sette_value"));
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV001302SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("ACSV001302SC"))
		{
			parentMap = (HashMap)outputMap.get("ACSV001302SC");
		}

		ArrayList childList = null;

		childList = null;
		if (parentMap != null && parentMap.containsKey("ECH0501B010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECH0501B010CBSMsg1List");

			HashMap childMap = (HashMap)childList.get(0);

			// 料金計算状況 ← 料金スケジュール定義一覧照会マップ.料金スケジュール定義一覧照会結果リスト.請求年月
			bean[0].sendMessageString("料金計算状況", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_ym"));
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV001303SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("ACSV001303SC"))
		{
			parentMap = (HashMap)outputMap.get("ACSV001303SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listACSV001303SC_telno_list_EKK0161B507CBSMsg1List = bean[0].getDataBeanArray("電話番号");
		childList = null;
		if (listACSV001303SC_telno_list_EKK0161B507CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0161B507CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0161B507CBSMsg1List");

			int count = 1;
			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = listACSV001303SC_telno_list_EKK0161B507CBSMsg1List.getDataBean(0);

				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				String no = Integer.toString(count++);
				String telno = (String)childMap.get("telno");
				String svc_sta_ymd = (String)childMap.get("svc_sta_ymd");
				String svc_endymd = (String)childMap.get("svc_endymd");

				// 電話番号.電話番号 ← 通話明細電話番号履歴一覧照会マップ.通話明細電話番号履歴一覧照会明細.電話番号
				// + サービス開始日 + サービス終了日
				if (childMap != null)
				{
					subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_ADD_VALUE, no + " " + telno + " " + JPCUtilCommon.formatDate(svc_sta_ymd)
									+ "〜" + JPCUtilCommon.formatDate(svc_endymd));
				}
				else
				{
					subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 電話番号.電話番号（値） ← 通話明細電話番号履歴一覧照会マップ.通話明細電話番号履歴一覧照会明細.電話番号
				if (childMap != null)
				{
					subbean.sendMessageString("電話番号（値）", X31CWebConst.DATABEAN_ADD_VALUE, telno);
				}
				else
				{
					subbean.sendMessageString("電話番号（値）", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 電話番号.サービス開始年月日 ← 通話明細電話番号履歴一覧照会マップ.通話明細電話番号履歴一覧照会明細.サービス開始日
				if (childMap != null)
				{
					subbean.sendMessageString("サービス開始年月日", X31CWebConst.DATABEAN_ADD_VALUE, svc_sta_ymd);
				}
				else
				{
					subbean.sendMessageString("サービス開始年月日", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// 電話番号.サービス終了年月日 ← 通話明細電話番号履歴一覧照会マップ.通話明細電話番号履歴一覧照会明細.サービス終了日
				if (childMap != null)
				{
					subbean.sendMessageString("サービス終了年月日", X31CWebConst.DATABEAN_ADD_VALUE, svc_endymd);
				}
				else
				{
					subbean.sendMessageString("サービス終了年月日", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
			}
		}

		if(childList != null)
		{
			if (childList.size() != 0)
			{
	
				// 指定番号
				bean[0].sendMessageString("指定番号", X31CWebConst.DATABEAN_SET_VALUE, listACSV001303SC_telno_list_EKK0161B507CBSMsg1List.getDataBean(0)
								.sendMessageString("電話番号（値）", X31CWebConst.DATABEAN_GET_VALUE, 0));
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV001304SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("ACSV001304SC"))
		{
			parentMap = (HashMap)outputMap.get("ACSV001304SC");
		}

		ArrayList childList = null;

		childList = null;
		if (parentMap != null && parentMap.containsKey("EKK0081A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0081A010CBSMsg1List");

			if (childList.size() == 0)
			{
				return null;
			}

			HashMap childMap = (HashMap)childList.get(0);

			// 契約者氏名 ← サービス契約一意照会マップ.サービス契約一意照会明細.SYSID名称
			bean[0].sendMessageString("契約者氏名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sysid_nm"));
			
			// 料金グループコード ← サービス契約一意照会マップ.サービス契約一意照会明細.料金グループコード
			bean[0].sendMessageString("料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_grp_cd"));
			
			// 料金コースコード ← サービス契約一意照会マップ.サービス契約一意照会明細.料金コースコード
			bean[0].sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcrs_cd"));
			
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV001305SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("ACSV001305SC"))
		{
			parentMap = (HashMap)outputMap.get("ACSV001305SC");
		}

		ArrayList childList = null;

		childList = null;
		if (parentMap != null && parentMap.containsKey("EKK0081B510CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0081B510CBSMsg1List");

			if (childList.size() == 0)
			{
				return null;
			}

			HashMap childMap = (HashMap)childList.get(0);

			// 種類 ← eo光電話通話サービス種別名一覧照会マップ.eo光電話通話サービス種別名一覧照会明細.コード区分名
			bean[0].sendMessageString("種類", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div_nm"));
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
// ANK-3699-00-00対応 20190801 星野 MOD START
//	public X31SDataBeanAccess[] getACSV001306SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	public X31SDataBeanAccess[] getACSV001306SC(X31SDataBeanAccess[] bean, HashMap outputMap, String jotoYmd)
// ANK-3699-00-00対応 20190801 星野 MOD END
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("ACSV001306SC"))
		{
			parentMap = (HashMap)outputMap.get("ACSV001306SC");
		}

		ArrayList childList = null;

		// 通話明細総検索件数 ← eo光電話通話明細一覧照会マップ.通話明細総検索件数
		bean[0].sendMessageString("通話明細総検索件数", X31CWebConst.DATABEAN_SET_VALUE, (String) parentMap.get("tw_dtl_total_search_num"));

		// 通話明細総ページ数 ← eo光電話通話明細一覧照会マップ.通話明細総ページ数
		bean[0].sendMessageString("通話明細総ページ数", X31CWebConst.DATABEAN_SET_VALUE, (String) parentMap.get("tw_dtl_total_page_num"));

		X31SDataBeanAccessArray listACSV001306SC_tw_dtl_list_EAC0391B010CBSMsg1List = bean[0].getDataBeanArray("通話明細リスト");
		childList = null;
		if (listACSV001306SC_tw_dtl_list_EAC0391B010CBSMsg1List != null && parentMap != null && parentMap.containsKey("EAC0391B010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EAC0391B010CBSMsg1List");

			if (childList.size() != 0)
			{
				// 光電話通話明細存在フラグにtrueを設定
				bean[0].sendMessageBoolean("光電話通話明細存在フラグ", X31CWebConst.DATABEAN_SET_VALUE, true);
			}
			else
			{
				// 光電話通話明細存在フラグにfalseを設定
				bean[0].sendMessageBoolean("光電話通話明細存在フラグ", X31CWebConst.DATABEAN_SET_VALUE, false);
			}

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listACSV001306SC_tw_dtl_list_EAC0391B010CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listACSV001306SC_tw_dtl_list_EAC0391B010CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listACSV001306SC_tw_dtl_list_EAC0391B010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// 通話明細リスト.No ← eo光電話通話明細一覧照会マップ.ｅｏ光電話通話明細一覧照会.Ｎｏ．
				if (childMap != null)
				{
					subbean.sendMessageString("Ｎｏ．", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("no"));
				}
				else
				{
					subbean.sendMessageString("Ｎｏ．", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
// ANK-3699-00-00対応 20190801 星野 ADD START
				// 譲渡前明細か判定
				boolean isBeforeJotoDtl = false;
				if (childMap != null)
				{
					String pcallStaYmd = (String)childMap.get("pcall_staymd");
					if(!StringUtils.isEmpty(pcallStaYmd) && pcallStaYmd.compareTo(jotoYmd)<0)
					{
						// 通話開始日が譲渡日より前なら譲渡前明細（当日は譲渡後扱い）
						isBeforeJotoDtl = true;
					}
				}
				
				// 譲渡前明細の場合、「Ｎｏ．」と「通話料」以外は空白表示
				if(isBeforeJotoDtl)
				{
					subbean.sendMessageString("通話開始日時", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("通話終了日時", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("通話時間", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				else
				{
// ANK-3699-00-00対応 20190801 星野 ADD END
				
					// 通話明細リスト.通話開始日時 ← eo光電話通話明細一覧照会マップ.ｅｏ光電話通話明細一覧照会.通話開始年月日 +
					// 通話開始時分秒
					if (childMap != null)
					{
						subbean.sendMessageString("通話開始日時", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.formatDate((String)childMap
										.get("pcall_staymd"))
										+ " " + editHms((String)childMap.get("pcall_sta_hms")));
					}
					else
					{
						subbean.sendMessageString("通話開始日時", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 通話明細リスト.通話終了日時 ← eo光電話通話明細一覧照会マップ.ｅｏ光電話通話明細一覧照会.通話終了年月日 +
					// 通話終了時分秒
					if (childMap != null)
					{
						subbean.sendMessageString("通話終了日時", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.formatDate((String)childMap
										.get("pcall_endymd"))
										+ " " + editHms((String)childMap.get("pcall_end_hms")));
					}
					else
					{
						subbean.sendMessageString("通話終了日時", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 通話明細リスト.通話時間 ← eo光電話通話明細一覧照会マップ.ｅｏ光電話通話明細一覧照会.通話秒数
					if (childMap != null)
					{
						subbean.sendMessageString("通話時間", X31CWebConst.DATABEAN_SET_VALUE, editTwTime((String)childMap.get("pcall_sec_cnt")));
					}
					else
					{
						subbean.sendMessageString("通話時間", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 通話明細リスト.電話番号 ← eo光電話通話明細一覧照会マップ.ｅｏ光電話通話明細一覧照会.着信電話番号
					if (childMap != null)
					{
						subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("incoming_telno"));
					}
					else
					{
						subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
// ANK-3699-00-00対応 20190801 星野 ADD START
				}
// ANK-3699-00-00対応 20190801 星野 ADD END
				// 通話明細リスト.通話料 ← eo光電話通話明細一覧照会マップ.ｅｏ光電話通話明細一覧照会.通話料金
				if (childMap != null)
				{
					subbean.sendMessageString("通話料", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.formatNumber((String)childMap.get("pcall_prc")));
				}
				else
				{
					subbean.sendMessageString("通話料", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
// ANK-3699-00-00対応 20190801 星野 ADD START
				// 譲渡前明細の場合、「Ｎｏ．」と「通話料」以外は空白表示
				if(isBeforeJotoDtl)
				{
					subbean.sendMessageString("種別コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("種別名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("課金非課金名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("国名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				else
				{
// ANK-3699-00-00対応 20190801 星野 ADD END
					// 通話明細リスト.種別コード ← eo光電話通話明細一覧照会マップ.ｅｏ光電話通話明細一覧照会.通話種別コード
					if (childMap != null)
					{
						subbean.sendMessageString("種別コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcall_sbt"));
					}
					else
					{
						subbean.sendMessageString("種別コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 通話明細リスト.種別名称 ← eo光電話通話明細一覧照会マップ.ｅｏ光電話通話明細一覧照会.通話種別略称
					if (childMap != null)
					{
						subbean.sendMessageString("種別名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcall_sbt") + COLON
										+ (String)childMap.get("tuwa_sbt_ali"));
					}
					else
					{
						subbean.sendMessageString("種別名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 通話明細リスト.課金非課金名称 ← eo光電話通話明細一覧照会マップ.ｅｏ光電話通話明細一覧照会.コード区分略称
					if (childMap != null)
					{
						subbean.sendMessageString("課金非課金名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div_ali"));
					}
					else
					{
						subbean.sendMessageString("課金非課金名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 通話明細リスト.国名 ← eo光電話通話明細一覧照会マップ.ｅｏ光電話通話明細一覧照会.国名
					if (childMap != null)
					{
						subbean.sendMessageString("国名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("country_nm"));
					}
					else
					{
						subbean.sendMessageString("国名", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
// ANK-3699-00-00対応 20190801 星野 ADD START
				}
// ANK-3699-00-00対応 20190801 星野 ADD END
			}
		}

		// ページ情報の設定
		// 検索総件数
		String totalSearchNum = bean[0].sendMessageString(ACW00601SFConst.TW_DTL_TOTAL_SEARCH_NUM, X31CWebConst.DATABEAN_GET_VALUE);
		if (totalSearchNum == null || "".equals(totalSearchNum))
		{
			parentMap.put("total_search_num", "0");
		}
		else
		{
			parentMap.put("total_search_num", totalSearchNum);
		}
		// 総ページ数
		String totalPageNum = bean[0].sendMessageString(ACW00601SFConst.TW_DTL_TOTAL_PAGE_NUM, X31CWebConst.DATABEAN_GET_VALUE);
		if (totalPageNum == null || "".equals(totalPageNum))
		{
			parentMap.put("total_page_num", "0");
		}
		else
		{
			parentMap.put("total_page_num", totalPageNum);
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV001307SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		bean[0].sendMessageString("課税分通話合計数", X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString("課税分通話合計金額", X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString("免税分通話合計数", X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString("免税分通話合計金額", X31CWebConst.DATABEAN_SET_VALUE, "0");

		HashMap parentMap = null;
		if (outputMap.containsKey("ACSV001307SC"))
		{
			parentMap = (HashMap)outputMap.get("ACSV001307SC");
		}

		ArrayList childList = null;

		childList = null;
		if (parentMap != null && parentMap.containsKey("EAC0391B020CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EAC0391B020CBSMsg1List");

			for (Object obj : childList)
			{
				HashMap childMap = (HashMap)obj;

				if ("1".equals((String)childMap.get("eoh_tel_tw_dtl_kazei_hikazei_cd")))
				{

					// 課税分通話合計数 ← eo光電話通話明細合計一覧照会マップ.ｅｏ光電話通話明細合計一覧照会.ｅｏ光電話通話明細合計
					bean[0].sendMessageString("課税分通話合計数", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.formatNumber((String)childMap
									.get("eoh_tel_tw_dtl_gokei")));

					// 課税分通話合計金額 ←
					// eo光電話通話明細合計一覧照会マップ.ｅｏ光電話通話明細合計一覧照会.ｅｏ光電話通話明細通話料金合計
					bean[0].sendMessageString("課税分通話合計金額", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon
									.formatNumber((String)childMap.get("eoh_tel_tw_dtl_pcall_prc_gokei")));
				}
				else
				{

					// 免税分通話合計数 ← eo光電話通話明細合計一覧照会マップ.ｅｏ光電話通話明細合計一覧照会.ｅｏ光電話通話明細合計
					bean[0].sendMessageString("免税分通話合計数", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.formatNumber((String)childMap
									.get("eoh_tel_tw_dtl_gokei")));

					// 免税分通話合計金額 ←
					// eo光電話通話明細合計一覧照会マップ.ｅｏ光電話通話明細合計一覧照会.ｅｏ光電話通話明細通話料金合計
					bean[0].sendMessageString("免税分通話合計金額", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon
									.formatNumber((String)childMap.get("eoh_tel_tw_dtl_pcall_prc_gokei")));
				}
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV001308SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("ACSV001308SC"))
		{
			parentMap = (HashMap)outputMap.get("ACSV001308SC");
		}

		ArrayList childList = null;

		childList = null;
		if (parentMap != null && parentMap.containsKey("EKK0351B508CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0351B508CBSMsg1List");

			if (childList.size() == 0)
			{
				return null;
			}

			HashMap childMap = (HashMap)childList.get(0);

			// オプションサービスコード ←
			// オプション通話サービス種別名一覧照会マップ.オプション通話サービス種別名一覧照会明細.オプションサービスコード
			bean[0].sendMessageString("オプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_no"));

			// 種類 ← オプション通話サービス種別名一覧照会マップ.オプション通話サービス種別名一覧照会明細.コード区分名
			bean[0].sendMessageString("種類", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div_nm"));
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV001309SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("ACSV001309SC"))
		{
			parentMap = (HashMap)outputMap.get("ACSV001309SC");
		}

		// 光電話通話明細存在フラグにfalseを設定
		bean[0].sendMessageBoolean("光電話通話明細存在フラグ", X31CWebConst.DATABEAN_SET_VALUE, false);

		ArrayList childList = null;

		// 通話明細総検索件数 ← eo-netフォン通話明細一覧照会マップ.通話明細総検索件数
		bean[0].sendMessageString("通話明細総検索件数", X31CWebConst.DATABEAN_SET_VALUE, (String) parentMap.get("tw_dtl_total_search_num"));

		// 通話明細総ページ数 ← eo-netフォン通話明細一覧照会マップ.通話明細総ページ数
		bean[0].sendMessageString("通話明細総ページ数", X31CWebConst.DATABEAN_SET_VALUE, (String) parentMap.get("tw_dtl_total_page_num"));

		X31SDataBeanAccessArray listACSV001306SC_tw_dtl_list_EAC0391B010CBSMsg1List = bean[0].getDataBeanArray("通話明細リスト");
		childList = null;
		if (listACSV001306SC_tw_dtl_list_EAC0391B010CBSMsg1List != null && parentMap != null && parentMap.containsKey("EAC0421B010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EAC0421B010CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listACSV001306SC_tw_dtl_list_EAC0391B010CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listACSV001306SC_tw_dtl_list_EAC0391B010CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listACSV001306SC_tw_dtl_list_EAC0391B010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// 通話明細リスト.No ← eo-netフォン通話明細一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細一覧照会.Ｎｏ．
				if (childMap != null)
				{
					subbean.sendMessageString("Ｎｏ．", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("no"));
				}
				else
				{
					subbean.sendMessageString("Ｎｏ．", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 通話明細リスト.通話開始日時 ←
				// eo-netフォン通話明細一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細一覧照会.通話開始年月日 + 通話開始時分秒
				if (childMap != null)
				{
					subbean.sendMessageString("通話開始日時", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.formatDate((String)childMap
									.get("pcall_staymd"))
									+ " " + editHms((String)childMap.get("pcall_sta_hms")));
				}
				else
				{
					subbean.sendMessageString("通話開始日時", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 通話明細リスト.通話終了日時 ←
				// eo-netフォン通話明細一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細一覧照会.通話終了年月日 + 通話終了時分秒
				if (childMap != null)
				{
					subbean.sendMessageString("通話終了日時", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.formatDate((String)childMap
									.get("pcall_endymd"))
									+ " " + editHms((String)childMap.get("pcall_end_hms")));
				}
				else
				{
					subbean.sendMessageString("通話終了日時", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 通話明細リスト.通話時間 ← eo-netフォン通話明細一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細一覧照会.通話秒数
				if (childMap != null)
				{
					subbean.sendMessageString("通話時間", X31CWebConst.DATABEAN_SET_VALUE, editTwTime((String)childMap.get("pcall_sec_cnt")));
				}
				else
				{
					subbean.sendMessageString("通話時間", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 通話明細リスト.電話番号 ← eo-netフォン通話明細一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細一覧照会.着信電話番号
				if (childMap != null)
				{
					subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("incoming_telno"));
				}
				else
				{
					subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 通話明細リスト.通話料 ← eo-netフォン通話明細一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細一覧照会.通話料金
				if (childMap != null)
				{
					subbean.sendMessageString("通話料", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.formatNumber((String)childMap.get("pcall_prc")));
				}
				else
				{
					subbean.sendMessageString("通話料", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 通話明細リスト.種別コード ←
				// eo-netフォン通話明細一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細一覧照会.通話種別コード
				if (childMap != null)
				{
					subbean.sendMessageString("種別コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcall_sbt"));
				}
				else
				{
					subbean.sendMessageString("種別コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 通話明細リスト.種別名称 ← eo-netフォン通話明細一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細一覧照会.通話種別略称
				if (childMap != null)
				{
					subbean.sendMessageString("種別名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcall_sbt") + COLON
									+ (String)childMap.get("tuwa_sbt_ali"));
				}
				else
				{
					subbean.sendMessageString("種別名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 通話明細リスト.課金非課金名称 ←
				// eo-netフォン通話明細一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細一覧照会.コード区分略称
				if (childMap != null)
				{
					subbean.sendMessageString("課金非課金名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div_ali"));
				}
				else
				{
					subbean.sendMessageString("課金非課金名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 通話明細リスト.国名 ← eo-netフォン通話明細一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細一覧照会.国名
				if (childMap != null)
				{
					subbean.sendMessageString("国名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("country_nm"));
				}
				else
				{
					subbean.sendMessageString("国名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		// ページ情報の設定
		// 検索総件数
		String totalSearchNum = bean[0].sendMessageString(ACW00601SFConst.TW_DTL_TOTAL_SEARCH_NUM, X31CWebConst.DATABEAN_GET_VALUE);
		if (totalSearchNum == null || "".equals(totalSearchNum))
		{
			parentMap.put("total_search_num", "0");
		}
		else
		{
			parentMap.put("total_search_num", totalSearchNum);
		}
		// 総ページ数
		String totalPageNum = bean[0].sendMessageString(ACW00601SFConst.TW_DTL_TOTAL_PAGE_NUM, X31CWebConst.DATABEAN_GET_VALUE);
		if (totalPageNum == null || "".equals(totalPageNum))
		{
			parentMap.put("total_page_num", "0");
		}
		else
		{
			parentMap.put("total_page_num", totalPageNum);
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：通話明細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV001310SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		// 合計欄初期化
		bean[0].sendMessageString("課税分通話合計数", X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString("課税分通話合計金額", X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString("免税分通話合計数", X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString("免税分通話合計金額", X31CWebConst.DATABEAN_SET_VALUE, "0");

		HashMap parentMap = null;
		if (outputMap.containsKey("ACSV001310SC"))
		{
			parentMap = (HashMap)outputMap.get("ACSV001310SC");
		}

		ArrayList childList = null;

		childList = null;
		if (parentMap != null && parentMap.containsKey("EAC0421B020CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EAC0421B020CBSMsg1List");

			for (Object obj : childList)
			{
				HashMap childMap = (HashMap)obj;

				// 課税非課税区分判定
				if ("1".equals((String)childMap.get("eonet_tw_dtl_kazei_hikazei_cd")))
				{

					// 課税の場合
					// 課税分通話合計数 ←
					// eo-netフォン通話明細合計一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細合計一覧照会.ｅｏ光電話通話明細合計
					bean[0].sendMessageString("課税分通話合計数", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.formatNumber((String)childMap
									.get("eonet_tw_dtl_gokei")));

					// 課税分通話合計金額 ←
					// eo-netフォン通話明細合計一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細合計一覧照会.ｅｏ光電話通話明細通話料金合計
					bean[0].sendMessageString("課税分通話合計金額", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon
									.formatNumber((String)childMap.get("eonet_tw_dtl_pcall_prc_gokei")));
				}
				else
				{

					// 非課税の場合
					// 免税分通話合計数 ←
					// eo-netフォン通話明細合計一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細合計一覧照会.ｅｏ光電話通話明細合計
					bean[0].sendMessageString("免税分通話合計数", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.formatNumber((String)childMap
									.get("eonet_tw_dtl_gokei")));

					// 免税分通話合計金額 ←
					// eo-netフォン通話明細合計一覧照会マップ.ｅｏ−ｎｅｔフォン通話明細合計一覧照会.ｅｏ光電話通話明細通話料金合計
					bean[0].sendMessageString("免税分通話合計金額", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon
									.formatNumber((String)childMap.get("eonet_tw_dtl_pcall_prc_gokei")));
				}
			}
		}

		return bean;
	}

	/**
	 * 時分秒変換<BR>
	 * hhmmssSをh:mm:ss.Sに編集する
	 * @param str 編集前文字列
	 * @return 編集後文字列
	 */
	private String editHms(String str)
	{
		StringBuilder sb = new StringBuilder(str);

		return sb.insert(6, PERIOD).insert(4, COLON).insert(2, COLON).toString();
	}

	/**
	 * 通話時間編集<BR>
	 * 通話秒数（9,1）を通話時間（h:mm:ss.S）に編集する
	 * @param str 通話秒数（11,2）
	 * @return 通話時間（h:mm:ss.S）
	 */
	private String editTwTime(String callSecCnt)
	{
		String strInteger = "";   // 整数
		String strDecimal = "";   // 小数

		if (callSecCnt.indexOf(".") != -1)
		{
			strInteger = callSecCnt.substring(0, callSecCnt.indexOf("."));
			strDecimal = callSecCnt.substring(callSecCnt.indexOf("."));
		}
		else
		{
			strInteger = callSecCnt;
		}

		if (JCHWebCommon.isNullOrEmpty(strInteger))
		{
			strInteger = "0";
		}
		if (JCHWebCommon.isNullOrEmpty(strDecimal))
		{
			strDecimal = ".0";
		}

		BigDecimal decInteger = new BigDecimal(strInteger);
		BigDecimal[] result = decInteger.divideAndRemainder(new BigDecimal(3600));  // 変換(秒 → 時間)
		BigDecimal[] result2 = result[1].divideAndRemainder(new BigDecimal(60));    // 変換(秒 → 分)

		String hour = result[0].toString();
		String minute = JPCUtilCommon.fillZero(result2[0].toString(), 2, false);
		String second = JPCUtilCommon.fillZero(result2[1].toString(), 2, false);

		return hour + ":" + minute + ":" + second + strDecimal;
	}

	/**
	 * 合計金額編集<BR>
	 * 合計金額の小数部を切り捨てる
	 * @param str 合計金額（編集前）
	 * @return 合計金額（編集後）
	 */
	private String editPcallPrcGokei(String str)
	{
		if (str.indexOf(PERIOD) != -1)
		{
			return str.substring(0, str.indexOf(PERIOD));
		}
		return str;
	}
}