/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：eo-netフォン通話明細照会
*   ソースファイル名：FUW08302SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年12月09日
*＜機能概要＞
*  通話明細照会のビューロジッククラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/12/09   FJ）垣本    新規作成
*   v17.00      2015/08/07   FJ) 岡井    【ANK-2557-00-00】PMP再構築対応(不具合修正)
*
**********************************************************************/
package eo.web.webview.FUW08302SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.web.x00.JCCBusinessException;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JFUStrConst;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW08301SF.FUW08301SFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.mapping.FUSV0044_FUSV0044OPDBMapper;

/**
 * eo-netフォン通話明細照会のビューロジッククラスです。<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW08302SFLogic extends JCCWebBusinessLogic
{

	/** 機能モード：1 */
	private static final String FUNC_CODE_1 = "1";

	/** ユースケースID（FUSV0044） */
	private static final String USECASE_ID_FUSV0044 = "FUSV0044";

	/** 時分秒書式：HHmmssS */
	private static final String FMT_HMS = "HHmmssS";

	/** 時分秒編集書式：HH:mm:ss.S */
	private static final String EDIT_HMS = "HH:mm:ss.S";

	/** 時分秒初期値 */
	private static final String DEF_HMS = "00:00:00.0";

	/** SCタイトル：eo-netフォン通話合計一意照会 */
	private static final String SC_TITLE_FUSV004402SC = "FUSV004402SC";

	/** Mapキー：eo-netフォン通話合計一意明細 */
	private static final String MAP_KEY_CBSMSGLIST = "EAC0431A010CBSMsg1List";

	/** Mapキー：通話数合計 */
	private static final String MAP_KEY_PCALL_CNT_GK = "pcall_cnt_gk";

	/** Mapキー：課税分料金合計 */
	private static final String MAP_KEY_KAZEIBUN_PRC_GK = "kazeibun_prc_gk";

	/** Mapキー：免税分料金合計 */
	private static final String MAP_KEY_MENZEIBUN_PRC_GK = "menzeibun_prc_gk";

	/** Mapキー：通話料金合計 */
	private static final String MAP_KEY_PCALL_PRC_GK = "pcall_prc_gk";

	/** 文字列：0 */
	private static final String ZERO = "0";

	/** 文字列：ピリオド */
	private static final String PERIOD = ".";

	/** 表示フラグ：表示 */
	private static final String DISP_FLG_ON = "1";

	/** 表示フラグ：非表示 */
	private static final String DISP_FLG_OFF = "2";

	/** タイトル：通話 */
	private static final String TITLE_PCALL_CNT_SBT = "通話";

	/** 通話明細合計存在フラグ:不存在 */
	private static final String PCALL_DTL_GK_SONZAI_FLG_2 = "2";

	/** DataBean操作種別：項目値設定 */
	private static final String SET = X31CWebConst.DATABEAN_SET_VALUE;
	/** DataBean操作種別：項目値取得 */
	private static final String GET = X31CWebConst.DATABEAN_GET_VALUE;

	/** 料金サービスコードの桁数 */
	private static final int PRC_SVC_CD_LEN = 12;

	/** 画面引継ぎ情報取得キー１ */
	private static final String PARAM_1 = "PARAM_1";

	/** 画面引継ぎ情報取得キー２ */
	private static final String PARAM_2 = "PARAM_2";

	/**
	 * 初期表示処理
	 * 
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean init() throws Exception
	{
		// 共有フォームBean保持
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// サービスフォームBean保持
		X31SDataBeanAccess serviceFormBean = getServiceFormBean();

		// 画面情報を取得し、サービスフォームBeanに設定
		HashMap<String, Object> dataMap = JFUWebCommon.getScreenInfo(this, JFUScreenConst.SCREEN_ID_FUW08302);

		// 共通関連チェック
		JFUWebCommon.checkCommonRelation(this, USECASE_ID_FUSV0044);

		ArrayList<String> targetList = (ArrayList<String>)dataMap.get(PARAM_1);
		ArrayList<String> meisaiList = (ArrayList<String>)dataMap.get(PARAM_2);

		Collections.sort(meisaiList);
		Collections.reverse(meisaiList);

		// サービスフォームBean.明細リスト
		X31SDataBeanAccessArray meisaiBeanArray = serviceFormBean.getDataBeanArray(FUW08302SFConst.MEISAI_LIST);

		for (int i = 0; i < meisaiList.size(); i++)
		{
			String[] meisaiArray = meisaiList.get(i).split(JFUStrConst.HALF_COLON);

			X31SDataBeanAccess subbean = meisaiBeanArray.addDataBean();
			subbean.sendMessageString(FUW08301SFConst.SEIKY_YM_03, SET, meisaiArray[0]);
			// サービスフォームBean.明細リスト.通話明細照会ボタンフラグの設定
			subbean.sendMessageString(FUW08301SFConst.PCALL_DTL_SHOKAI_BUTTON_FLG_03, SET, meisaiArray[1]);
		}

		// サービスフォームBean.ご利用年月
		String useYm = targetList.get(0);
		serviceFormBean.sendMessageString(FUW08302SFConst.USE_YM, SET, useYm);

		// サービスフォームBean.電話番号
		String telNo = targetList.get(1);
		serviceFormBean.sendMessageString(FUW08302SFConst.KAKINS_TELNO, SET, telNo);

		// 表示メイン処理
		dispMain(commonInfoBean, serviceFormBean, Integer.parseInt(useYm), telNo);

		return true;
	}

	/**
	 * 翌月を照会ボタン押下処理
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean yokugetuShokai() throws Exception
	{
		// 共有フォームBean保持
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// サービスフォームBean保持
		X31SDataBeanAccess serviceFormBean = getServiceFormBean();

		// サービスフォームBean.ご利用年月
		int useYm = Integer.parseInt(serviceFormBean.sendMessageString(FUW08302SFConst.USE_YM, GET));
		useYm = useYm - 1;
		// サービスフォームBean.電話番号
		String telNo = serviceFormBean.sendMessageString(FUW08302SFConst.KAKINS_TELNO, GET);

		// 表示メイン処理
		dispMain(commonInfoBean, serviceFormBean, useYm, telNo);

		return true;
	}

	/**
	 * 前月を照会ボタン押下処理
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean zengetuShokai() throws Exception
	{
		// 共有フォームBean保持
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// サービスフォームBean保持
		X31SDataBeanAccess serviceFormBean = getServiceFormBean();

		// サービスフォームBean.ご利用年月
		int useYm = Integer.parseInt(serviceFormBean.sendMessageString(FUW08302SFConst.USE_YM, GET));
		useYm = useYm + 1;
		// サービスフォームBean.電話番号
		String telNo = serviceFormBean.sendMessageString(FUW08302SFConst.KAKINS_TELNO, GET);

		// 表示メイン処理
		dispMain(commonInfoBean, serviceFormBean, useYm, telNo);

		return true;
	}

	/**
	 * 戻るボタン押下処理
	 * @return 処理結果
	 */
	public boolean back()
	{
		// サービスBean保持
		X31SDataBeanAccess serviceInfoBean = getServiceFormBean();
		// 引き継ぎの情報を格納するMAPを生成する。
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// 引き継ぎを行う画面AのサービスフォームBeanの内容を項目名をキーとしてdataMapに転記する。
		// 電話番号
		dataMap.put(FUW08301SFConst.KAKINS_TELNO, serviceInfoBean.sendMessageString(FUW08302SFConst.KAKINS_TELNO, GET));
		// 画面情報を設定
		JFUWebCommon.setScreenInfo(this, JFUScreenConst.SCREEN_ID_FUW08301, dataMap);

		// 共有フォームBean保持
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, SET, JFUScreenConst.SCREEN_ID_FUW08301);
		// 遷移先画面名称
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, SET, JFUScreenConst.SCREEN_NAME_FUW08301);

		return true;
	}

	/**
	 * 表示メイン処理
	 * 
	 * @param commonInfoBean 共有フォームBean
	 * @param serviceFormBean サービスフォームBean
	 * @param intUseYm ご利用年月
	 * @param strTelNo 電話番号
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public void dispMain(X31SDataBeanAccess commonInfoBean, X31SDataBeanAccess serviceFormBean, int intUseYm, String strTelNo) throws Exception
	{
		// -------------------------------------------------
		// 共有フォームBean情報の取得
		// -------------------------------------------------
		// サービス契約情報
		X31SDataBeanAccess svcKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO);

		// サービス契約内訳情報
		X31SDataBeanAccess svcKeiUcwkInfoBean = svcKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_UCWK_INFO).getDataBean(0);
		// オプションサービス契約情報（配列）
		X31SDataBeanAccessArray opSvcKeiInfoArray = svcKeiUcwkInfoBean.getDataBeanArray(CommonInfoCFConst.OP_SVC_KEI_INFO);

		// オプションサービス契約情報
		X31SDataBeanAccess opSvcKeiInfoBean = null;
		for (int m = 0; m < opSvcKeiInfoArray.getCount(); m++)
		{
			// オプションサービス契約情報（作業用）
			X31SDataBeanAccess tmpOpSvcKeiInfoBean = opSvcKeiInfoArray.getDataBean(m);
			// オプションサービスコード
			String opSvCd = tmpOpSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.OP_SVC_CD_28, GET);
			// "B014"eo-netフォンの場合
			if (JFUStrConst.CD00136_B014.equals(opSvCd))
			{
				// オプションサービス契約情報（確定）
				opSvcKeiInfoBean = tmpOpSvcKeiInfoBean;
			}
		}

		// サービス契約番号
		String svcKeiNo = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_23, GET);
		// 料金コースコード
		String pcrsCd = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.PCRS_CD_23, GET);
		// オプションサービス契約番号
		String opSvcKeiNo = opSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.OP_SVC_KEI_NO_28, GET);
		// 料金サービスコード
		String prcSvcCd = opSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.PPLAN_CD_28, GET);

		// サービスフォームBean.明細リスト
		X31SDataBeanAccessArray meisaiListBeanArray = serviceFormBean.getDataBeanArray(FUW08302SFConst.MEISAI_LIST);
		X31SDataBeanAccess meisaiListBean = meisaiListBeanArray.getDataBean(intUseYm);

		// 請求年月 ← サービスフォームBean.請求年月リスト.請求年月
		String seikym = meisaiListBean.sendMessageString(FUW08302SFConst.SEIKY_YM_03, GET);

		if (intUseYm == 0)
		{
			// 当月

			// サービスフォームBean.前月表示フラグ
			serviceFormBean.sendMessageString(FUW08302SFConst.ZEN_DISP_FLG, SET, getLinkDispFlg(meisaiListBeanArray, 1));
			// サービスフォームBean.翌月表示フラグ
			serviceFormBean.sendMessageString(FUW08302SFConst.YOKU_DISP_FLG, SET, DISP_FLG_OFF);
		}
		else if (intUseYm == 1)
		{
			// 1カ月前

			// サービスフォームBean.前月表示フラグ
			serviceFormBean.sendMessageString(FUW08302SFConst.ZEN_DISP_FLG, SET, getLinkDispFlg(meisaiListBeanArray, 2));
			// サービスフォームBean.翌月表示フラグ
			serviceFormBean.sendMessageString(FUW08302SFConst.YOKU_DISP_FLG, SET, getLinkDispFlg(meisaiListBeanArray, 0));
		}
		else if (intUseYm == 2)
		{
			// 2カ月前

			// サービスフォームBean.前月表示フラグ
			serviceFormBean.sendMessageString(FUW08302SFConst.ZEN_DISP_FLG, SET, getLinkDispFlg(meisaiListBeanArray, 3));
			// サービスフォームBean.翌月表示フラグ
			serviceFormBean.sendMessageString(FUW08302SFConst.YOKU_DISP_FLG, SET, getLinkDispFlg(meisaiListBeanArray, 1));
		}
		else if (intUseYm == 3)
		{
			// 3カ月前

			// サービスフォームBean.前月表示フラグ
			serviceFormBean.sendMessageString(FUW08302SFConst.ZEN_DISP_FLG, SET, getLinkDispFlg(meisaiListBeanArray, 4));
			// サービスフォームBean.翌月表示フラグ
			serviceFormBean.sendMessageString(FUW08302SFConst.YOKU_DISP_FLG, SET, getLinkDispFlg(meisaiListBeanArray, 2));
		}
		else if (intUseYm == 4)
		{
			// 4カ月前

			// サービスフォームBean.前月表示フラグ
			serviceFormBean.sendMessageString(FUW08302SFConst.ZEN_DISP_FLG, SET, DISP_FLG_OFF);
			// サービスフォームBean.翌月表示フラグ
			serviceFormBean.sendMessageString(FUW08302SFConst.YOKU_DISP_FLG, SET, getLinkDispFlg(meisaiListBeanArray, 3));
		}

		// -------------------------------------------------
		// サービス呼出処理
		// -------------------------------------------------
		// サービス検索条件格納用マップ
		HashMap<String, HashMap<String, String>> inputMap = new HashMap<String, HashMap<String, String>>();
		// サービス処理結果格納用マップ
		HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap =
				new HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>>();

		// サービスパラメータ生成
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_FUSV0044);

		// 上りマッピング用にサービスフォームBeanにセット
		// サービスフォームBean.サービス契約番号
		serviceFormBean.sendMessageString(FUW08302SFConst.SVC_KEI_NO, SET, svcKeiNo);
		// サービスフォームBean.オプションサービス契約番号
		serviceFormBean.sendMessageString(FUW08302SFConst.OP_SVC_KEI_NO, SET, opSvcKeiNo);
		// サービスフォームBean.料金コースコード
		serviceFormBean.sendMessageString(FUW08302SFConst.PCRS_CD, SET, pcrsCd);
		// サービスフォームBean.料金サービスコード
		serviceFormBean.sendMessageString(FUW08302SFConst.PRC_SVC_CD, SET, rpad(prcSvcCd, PRC_SVC_CD_LEN));
		// サービスフォームBean.請求年月
		serviceFormBean.sendMessageString(FUW08302SFConst.SEIKY_YM, SET, seikym);
		// サービスフォームBean.電話番号
		serviceFormBean.sendMessageString(FUW08302SFConst.KAKINS_TELNO, SET, strTelNo);

		// DataBean-BPマッピング
		FUSV0044_FUSV0044OPDBMapper mapper = new FUSV0044_FUSV0044OPDBMapper();

		X31SDataBeanAccess[] paramBean = { serviceFormBean };

		// 機能コード「1」を設定
		mapper.setFUSV004401SC(paramBean, inputMap, FUNC_CODE_1);
		mapper.setFUSV004402SC(paramBean, inputMap, FUNC_CODE_1);

		try
		{
			// サービス呼び出し
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{
			DEBUG_LOG.debug("FUW08302_callSvcFUSV0044【システムエラー】FUSV0044_JCCWebServiceException発生");
			// 業務用例外クラスをthrowする。
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		X31SDataBeanAccess[] paramBeanOut = { serviceFormBean };

		// サービスフォームBean.通話明細
		X31SDataBeanAccessArray pcallDtl = serviceFormBean.getDataBeanArray(FUW08302SFConst.PCALL_DTL);
		// サービスフォームBean.通話明細クリア
		pcallDtl.clearArray();
		// サービスからの戻りデータをBeanにセット
		mapper.getFUSV004401SC(paramBeanOut, outputMap);
		mapper.getFUSV004402SC(paramBeanOut, outputMap);

		// 明細エリアの編集
		editMeisai(serviceFormBean);

		// 合計エリアの編集
		editGoukei(serviceFormBean, outputMap.get(SC_TITLE_FUSV004402SC));

		// サービスフォームBean.ご利用年月
		serviceFormBean.sendMessageString(FUW08302SFConst.USE_YM, SET, String.valueOf(intUseYm));
		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, SET, JFUScreenConst.SCREEN_ID_FUW08302);
		// 遷移先画面名称
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, SET, JFUScreenConst.SCREEN_NAME_FUW08302);
	}

	/**
	 * 明細エリア編集処理
	 * <br>
	 * @param serviceFormBean サービスフォームBean
	 */
	private void editMeisai(X31SDataBeanAccess serviceFormBean)
	{
		// サービスフォームBean.通話明細
		X31SDataBeanAccessArray pcallDtl = serviceFormBean.getDataBeanArray(FUW08302SFConst.PCALL_DTL);
		for (int i = 0; i < pcallDtl.getCount(); i++)
		{
			X31SDataBeanAccess subbean = pcallDtl.getDataBean(i);
			// サービスフォームBean.通話明細.通話開始日時（時分秒）
			String pcallStaHms = subbean.sendMessageString(FUW08302SFConst.PCALL_STA_HMS_01, GET);
			// サービスフォームBean.通話明細.通話時間（時分秒）
			String pcallTimeHms = subbean.sendMessageString(FUW08302SFConst.PCALL_TIME_HMS_01, GET);

			// HH:mm:ss.S形式に編集
			pcallStaHms = toFormatDate(pcallStaHms, FMT_HMS, EDIT_HMS);
			if (pcallTimeHms == null || JFUStrConst.EMPTY.equals(pcallTimeHms))
			{
				pcallTimeHms = DEF_HMS;
			}
			else
			{
				pcallTimeHms = editPcallTimeHms(pcallTimeHms);
			}

			// サービスフォームBeanに設定
			subbean.sendMessageString(FUW08302SFConst.PCALL_STA_HMS_01, SET, pcallStaHms);
			subbean.sendMessageString(FUW08302SFConst.PCALL_TIME_HMS_01, SET, pcallTimeHms);
		}
	}

	/**
	 * 合計エリア編集処理
	 * <br>
	 * @param serviceFormBean サービスフォームBean
	 * @param fusv0044SCMap サービス検索結果マップ
	 */
	private void editGoukei(X31SDataBeanAccess serviceFormBean, HashMap<String, ArrayList<HashMap<String, String>>> fusv0044SCMap)
	{
		// サービス処理結果.eo-netフォン通話合計一意明細
		ArrayList<HashMap<String, String>> cbsMsgList = fusv0044SCMap.get(MAP_KEY_CBSMSGLIST);
		// eo-netフォン通話合計一意照会情報
		HashMap<String, String> cbsMsg = new HashMap<String, String>();

		// 通話数合計
		String pcallCntGk = JFUStrConst.EMPTY;
		// 課税分料金合計
		String kazeibunPrcGk = JFUStrConst.EMPTY;
		// 免税分料金合計
		String menzeibunPrcGk = JFUStrConst.EMPTY;
		// 通話料金合計
		String pcallPrcGk = JFUStrConst.EMPTY;

		if (cbsMsgList.size() != 0)
		{
			cbsMsg = cbsMsgList.get(0);

			// 通話数合計
			pcallCntGk = cbsMsg.get(MAP_KEY_PCALL_CNT_GK);
			// 課税分料金合計
			kazeibunPrcGk = cbsMsg.get(MAP_KEY_KAZEIBUN_PRC_GK);
			// 免税分料金合計
			menzeibunPrcGk = cbsMsg.get(MAP_KEY_MENZEIBUN_PRC_GK);
			// 通話料金合計
			pcallPrcGk = cbsMsg.get(MAP_KEY_PCALL_PRC_GK);
		}
		else
		{
			// サービスフォームBean.通話明細合計存在フラグ
			serviceFormBean.sendMessageString(FUW08302SFConst.PCALL_DTL_GK_SONZAI_FLG, SET, PCALL_DTL_GK_SONZAI_FLG_2);
		}

		// サービスフォームBean.通話数
		serviceFormBean.sendMessageString(FUW08302SFConst.PCALL_CNT, SET, pcallCntGk);
		// サービスフォームBean.通話種別
		serviceFormBean.sendMessageString(FUW08302SFConst.PCALL_CNT_SBT, SET, TITLE_PCALL_CNT_SBT);

		// サービスフォームBean.課税分合計額（税込）
		serviceFormBean.sendMessageString(FUW08302SFConst.KAZEI_GOKEI_AMNT, SET, kazeibunPrcGk);
		// サービスフォームBean.免税分合計金額
		serviceFormBean.sendMessageString(FUW08302SFConst.MENZEI_GOKEI_AMNT, SET, menzeibunPrcGk);
		// サービスフォームBean.合計金額
		serviceFormBean.sendMessageString(FUW08302SFConst.GOKEI_AMNT, SET, pcallPrcGk);
	}

	/**
	 * 日付オブジェクトを指定された形式の文字列に編集します。
	 * <br>
	 * @param arg0 編集する日付オブジェクト
	 * @param arg1 java.util.Date型の日付書式
	 * @param arg2 編集する文字列の日付書式
	 * @return String 指定された形式に編集された文字列
	 */
	private String toFormatDate(String arg0, String arg1, String arg2)
	{
		try
		{
			SimpleDateFormat instance = new SimpleDateFormat(arg1);

			return new SimpleDateFormat(arg2).format(instance.parse(arg0));

		}
		catch (ParseException pe)
		{
			return arg0;
		}
	}

	/**
	 * 通話時間(秒)を編集します。
	 * <br>
	 * @param strPcallTimeHms 通話時間(秒)
	 * @return String 通話時間(HH:mm:ss.S形式)
	 */
	private String editPcallTimeHms(String strPcallTimeHms)
	{
		BigDecimal bdTimeHms = new BigDecimal(strPcallTimeHms);
		// 通話時間(秒)から整数部のみ取得
		int hms = bdTimeHms.intValue();
		// 小数点の位置を取得
		int point = strPcallTimeHms.indexOf(PERIOD);
		// 通話時間(秒)の少数部
		String smallNumber = JFUStrConst.EMPTY;
		if (point == -1)
		{
			// 小数部がない場合
			smallNumber = ZERO;
		}
		else
		{
			// 小数部がある場合、小数部を取得
			smallNumber = strPcallTimeHms.substring(point + 1, strPcallTimeHms.length());
		}
		// 通話時間(秒)から時分秒に変換する
		int minutes = hms / 60;
		int second = hms % 60;
		int hour = minutes / 60;
		minutes = minutes % 60;
		String hh = String.valueOf(hour);
		String mm = String.valueOf(minutes);
		String ss = String.valueOf(second);
		hh = JFUWebCommon.fillZero(hh, 2, false);
		mm = JFUWebCommon.fillZero(mm, 2, false);
		ss = JFUWebCommon.fillZero(ss, 2, false);

		// 通話時間(時分秒)
		String pcallTimeHms = hh + mm + ss + smallNumber;
		// 通話時間(時分秒)の編集 ※HH:mm:ss.S形式
		pcallTimeHms = toFormatDate(pcallTimeHms, FMT_HMS, EDIT_HMS);
		return pcallTimeHms;
	}

	/**
	 * 文字列をパディングします
	 * <br>
	 * @param str 文字列
	 * @param padLen パディング桁数
	 * @return パディングされた文字列
	 */
	private String rpad(String str, int padLen)
	{
		StringBuffer sb = new StringBuffer();
		sb.append(str);
		for (int i = 0; i < padLen - str.length(); i++)
		{
			sb.append(JFUStrConst.HALF_SPACE);
		}
		return sb.toString();
	}

	private String getLinkDispFlg(X31SDataBeanAccessArray dataBeanArray, int num)
	{
		if (dataBeanArray == null || dataBeanArray.getCount() <= num)
		{
			return DISP_FLG_OFF;
		}

		X31SDataBeanAccess dataBean = dataBeanArray.getDataBean(num);
		if (dataBean == null)
		{
			return DISP_FLG_OFF;
		}

		String eonetTwGkUm = dataBean.sendMessageString(FUW08302SFConst.PCALL_DTL_SHOKAI_BUTTON_FLG_03, GET);
		return ZERO.equals(eonetTwGkUm) ? DISP_FLG_OFF : DISP_FLG_ON;
	}

}