/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0270_FUSV0270OPDBMapper
*	ソースファイル名：FUSV0270_FUSV0270OPDBMapper.java
*	作成者			：富士通
*	日付			：2013年02月25日
*＜機能概要＞
*	BP(料金プラン固定単価取得)へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v5.00		2013/04/03	FJ)大塚     新規作成
*   v5.01		2013/05/16	FJ)大村     障害No.764:PLCは、２台セットのため、金額を倍にする
*   v7.00		2013/11/08	FJ)岡井     【ANK-1578-00-00】多機能ルーター(機器追加)
*   v50.00      2020/07/24  FJ) 西川    【ANK-3754-00-00】トビラフォン対応
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import eo.common.constant.JFUStrConst;
import eo.web.webview.FUW00940SF.FUW00940SFConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをします。
 * 
 * <br>
 * @author 富士通
 */
public class FUSV0270_FUSV0270OPDBMapper
{
	/** 金額単位 円/月 */
	private static final String YEN_M = "円/月";

	/** 金額単位 円/台・月 */
	private static final String YEN_DM = "円/台";

	/** 金額単位 無料 */
	private static final String FREE = "無料";

	/** 0 */
	private static final String ZERO = "0";

	/**
	 * 上りマッピングをします。(料金プラン固定単価取得CC)
	 * 
	 * <br>
	 * @param bean  [0]：お客様控え・取扱店控え・取次票印刷(量販・訪販)
	 * @param outputMap
	 * @param func_code  機能コード
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV027001CC(X31SDataBeanAccess bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		HashMap<String, Object> childMap = new HashMap<String, Object>();
		ArrayList<Object> childList = new ArrayList<Object>();

		// 共通情報のマッピング
		parentMap.put(JCMConstants.FUNC_CODE_KEY, func_code);

		// ファミリーパック
		childMap = new HashMap<String, Object>();
		// KEY_料金プランコード
		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PF0101);
		childList.add(childMap);

		// リモートサポートプラス
		childMap = new HashMap<String, Object>();
		// KEY_料金プランコード
		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PB2501);
		childList.add(childMap);

		// eo光無線ルーター
		childMap = new HashMap<String, Object>();
		// KEY_料金プランコード
		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PC2301);
		childList.add(childMap);

		// eo光ベーシックルーター
		childMap = new HashMap<String, Object>();
		// KEY_料金プランコード
		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PC2501);
		childList.add(childMap);

//		// TODO 暖簾分け後プランコード修正
//		// eo光多機能ルーター 無線ルーター機能
//		childMap = new HashMap<String, Object>();
//		// KEY_料金プランコード
//		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PC2301);
//		childList.add(childMap);
//
//		// TODO 暖簾分け後プランコード修正
//		// eo光多機能ルーター 有線ルーター機能
//		childMap = new HashMap<String, Object>();
//		// KEY_料金プランコード
//		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PC2601);
//		childList.add(childMap);

		// eo光PLCアダプターレンタルサービス
		childMap = new HashMap<String, Object>();
		// KEY_料金プランコード
		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PC2601);
		childList.add(childMap);

		// eo光スティック
		childMap = new HashMap<String, Object>();
		// KEY_料金プランコード
		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PC9001);
		childList.add(childMap);

		// eoスマートリンクプレミアムパック
		childMap = new HashMap<String, Object>();
		// KEY_料金プランコード
		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PB8001);
		childList.add(childMap);

		// 電話番号通知
		childMap = new HashMap<String, Object>();
		// KEY_料金プランコード
		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PB2601);
		childList.add(childMap);

		// 発信者番号表示
		childMap = new HashMap<String, Object>();
		// KEY_料金プランコード
		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PB2901);
		childList.add(childMap);

		// 転送電話サービス
		childMap = new HashMap<String, Object>();
		// KEY_料金プランコード
		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PB2801);
		childList.add(childMap);

		// 非通知着信拒否
		childMap = new HashMap<String, Object>();
		// KEY_料金プランコード
		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PD0801);
		childList.add(childMap);

		// 割込電話
		childMap = new HashMap<String, Object>();
		// KEY_料金プランコード
		childMap.put("key_pplan_cd", JFUStrConst.CD00565_PB2701);
		childList.add(childMap);

		parentMap.put("pplan_list", childList);

		outputMap.put("JFUGetPplanKttankaCC", parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピングをします。(料金プラン固定単価取得CC)
	 * 
	 * <br> 
	 * @param bean [0]:お客様控え・取扱店控え・取次票印刷(量販・訪販)
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV027001CC(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("JFUGetPplanKttankaCC"))
		{
			parentMap = (HashMap)outputMap.get("JFUGetPplanKttankaCC");
		}

		ArrayList childList = null;

		childList = new ArrayList();

		if (parentMap != null && parentMap.containsKey("pPlanKttankaList"))
		{
			childList = (ArrayList)parentMap.get("pPlanKttankaList");

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				if (childMap != null)
				{
					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PF0101))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PF0101);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_M;
						}

						// 料金（ファミリーパック）
						bean.sendMessageString(FUW00940SFConst.FP_PRC, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}
					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PB2501))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PB2501);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_M;
						}
						// 料金（リモートサポートプラス）
						bean.sendMessageString(FUW00940SFConst.RMTSPRT_PRC, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}
					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PC2301))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PC2301);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_M;
						}
						//  料金（無線ルータ）
						bean.sendMessageString(FUW00940SFConst.RDO_RUTA_PRC, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}
					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PC2501))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PC2501);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_M;
						}
						//料金（ベーシックルータ）
						bean.sendMessageString(FUW00940SFConst.BSC_RUTA_PRC, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}

					// ●多機能ルーター
					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PC2301))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PC2301);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_M;
						}
						//  料金（無線ルーター機能）
						bean.sendMessageString(FUW00940SFConst.TKN_MUSEN_PRC, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}
					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PC2501))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PC2501);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_M;
						}
						// 料金（有線ルーター機能）
						bean.sendMessageString(FUW00940SFConst.TKN_YUSEN_PRC, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}

					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PC2601))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PC2601);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// 障害No.764:PLCは、２台セットのため、金額を倍にする >>>
							amnt = String.valueOf(Integer.parseInt(amnt)*2);
							// 障害No.764:PLCは、２台セットのため、金額を倍にする <<<E
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_M;
						}
						// 料金（ｅｏ光ＰＬＣアダプタレンタル）
						bean.sendMessageString(FUW00940SFConst.PLC_PRC, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}
					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PC9001))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PC9001);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_DM;
						}
						// 料金（スティック型ＳＴＢレンタル）
						bean.sendMessageString(FUW00940SFConst.NET_STICK_STB_PRC, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}
					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PB8001))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PB8001);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_M;
						}
						// 料金（プレミアムパック）
						bean.sendMessageString(FUW00940SFConst.PREMIUM_PACK_PRC, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}
					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PB2601))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PB2601);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_M;
						}
						//  料金（発信者番号通知）
						bean.sendMessageString(FUW00940SFConst.PRC_HASHINNO_TCH, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}
					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PB2801))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PB2801);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_M;
						}
						// 料金（発信者番号表示）
						bean.sendMessageString(FUW00940SFConst.PRC_FORWARD_TEL, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}
					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PB2901))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PB2901);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_M;
						}
						// 料金（発信者番号表示）
						bean.sendMessageString(FUW00940SFConst.PRC_HASHINNO_DSP, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}
					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PD0801))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PD0801);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_M;
						}
						//  料金（非通知着信拒否）
						bean.sendMessageString(FUW00940SFConst.PRC_HITSUCHI_KYOHI, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}
					// 料金プランコードが存在する場合
					if (childMap.containsKey(JFUStrConst.CD00565_PB2701))
					{
						String amnt = (String)childMap.get(JFUStrConst.CD00565_PB2701);

						// 金額が0円の場合
						if (ZERO.equals(amnt))
						{
							amnt = FREE;
						}
						else
						{
							// カンマ区切りの編集を行う。
							amnt = JFUWebCommon.formatNumber(amnt) + YEN_M;
						}
						// 料金（割込電話）
						bean.sendMessageString(FUW00940SFConst.PRC_WARIKOMI, X31CWebConst.DATABEAN_SET_VALUE, amnt);
					}
				}
			}
		}

		return bean;
	}
}