/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0599_KKSV0599OPDBMapper
*	ソースファイル名：KKSV0599_KKSV0599OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2012年05月19日
*＜機能概要＞
*	BP（機器提供サービス契約履歴一覧照会）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/05/19	FJ）		新規作成
*	v4.01.00	2012/12/13	FJ）鳩本	【IT1-2012-0002406】機器一覧から１件取得時の添え字を修正
*	v5.00.00	2013/03/07	FJ）鳩本	【ANK-1438-00-00】関連対応
*	v5.00.01	2013/03/30	FJ）鳩本	【IT1-2013-0000696】関連対応
*	v5.00.02	2013/06/20	FJ）古田	【IT1-2013-0001272】関連対応
*
**********************************************************************/
package eo.web.webview.mapping;

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 eo.web.webview.KKW03301SF.KKW03301SFConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0599_KKSV0599OPDBMapper
{
	/* ++++++++++ v5.00.01 追加開始 ++++++++++ */
	/** 機器提供サービス契約履歴一覧照会ID*/
	private static final String SCRN_ID_KKW03307 = "KKW03307";
	/* ++++++++++ v5.00.01 追加完了 ++++++++++ */
	
	/**
	 * コンストラクタ
	 */
	public KKSV0599_KKSV0599OPDBMapper()
	{
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器提供サービス契約履歴一覧照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV059901CC(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("svc_kei_no", bean[0].sendMessageString(KKW03301SFConst.KEY_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 異動区分 → 異動区分
		parentMap.put("ido_div", bean[0].sendMessageString(KKW03301SFConst.IDO_KBN, X31CWebConst.DATABEAN_GET_VALUE));
		
		/* ++++++++++ v5.00.01 追加開始 ++++++++++ */
		// 画面ID
		parentMap.put("check_scrn_id", SCRN_ID_KKW03307);
		/* ++++++++++ v5.00.01 追加完了 ++++++++++ */
		
		/** 機器提供サービス契約履歴一覧の取得 */
		X31SDataBeanAccessArray rirekiList = bean[0].getDataBeanArray(KKW03301SFConst.SERVICE_RIREKI_LIST);
		/** 機器提供サービス契約一覧明細リスト */
		X31SDataBeanAccessArray kktkSvcKeiList = bean[0].getDataBeanArray(KKW03301SFConst.SERVICE_LIST);
		
		HashMap<String, Object> rirekiMap = null;
		ArrayList KeiChgCanList = new ArrayList();
		
		// 機器提供サービス契約履歴リストを件数分ループ
		for (int i = 0; i < rirekiList.getCount(); i++)
		{
			// １件取得
			X31SDataBeanAccess subBean = rirekiList.getDataBean(i);
			boolean select = subBean.sendMessageBoolean(KKW03301SFConst.SELECT_15, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 画面選択されていれば処理対象とする。
			if (select)
			{
				rirekiMap = new HashMap<String, Object>();
				// 機器提供サービス契約機器中止
				
				// 機器提供サービス契約履歴一覧.機器提供サービス契約番号 → 機器提供サービス契約番号
				rirekiMap.put("kktk_svc_kei_no", subBean.sendMessageString(KKW03301SFConst.KKTK_SVC_KEI_NO_15, X31CWebConst.DATABEAN_GET_VALUE));
				//  機器提供サービス契約履歴一覧.世代登録年月日時分秒 → 世代登録年月日時分秒
				rirekiMap.put("gene_add_dtm", subBean.sendMessageString(KKW03301SFConst.GENE_ADD_DTM_15, X31CWebConst.DATABEAN_GET_VALUE));
				// 機器提供サービス契約履歴一覧.料金コースコード → 予約_料金コースコード
				rirekiMap.put("rsv_pcrs_cd", subBean.sendMessageString(KKW03301SFConst.PCRS_CD_15, X31CWebConst.DATABEAN_GET_VALUE));
				
				/* ++++++++++ v5.00.02 変更開始 ++++++++++ */
				// 住所変更の場合、機器一覧のデータが表示されないパターンがあるため
				// 機器提供サービス契約カレントの料金コースと返品機器番号はJKKKikiIchiranKeiChgCanCCで取得します。
//				rirekiMap.put("pcrs_cd", "");
//				
//				// 機器提供サービス契約リストを件数分ループ
//				for (int j = 0; j < kktkSvcKeiList.getCount(); j++)
//				{
//					// 機器提供サービス契約リストから１件取得
//				/* ++++++++++ v4.01.00 修正開始 ++++++++++ */
////					X31SDataBeanAccess kktkBean = kktkSvcKeiList.getDataBean(i);
//					X31SDataBeanAccess kktkBean = kktkSvcKeiList.getDataBean(j);
//				/* ++++++++++ v4.01.00 修正完了 ++++++++++ */
//					// 機器提供サービス契約番号を取得
//					String kikiSvcKeiNo = kktkBean.sendMessageString(KKW03301SFConst.KKTK_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
//					// 機器提供サービス契約履歴一覧.機器提供サービス契約番号と一致するかチェック
//					if (kikiSvcKeiNo.equals(subBean.sendMessageString(KKW03301SFConst.KKTK_SVC_KEI_NO_15, X31CWebConst.DATABEAN_GET_VALUE)))
//					{
//						// 一致する場合、料金コースコードを設定する。
//						rirekiMap.put("pcrs_cd", kktkBean.sendMessageString(KKW03301SFConst.PCRS_CD_KKTK_01, X31CWebConst.DATABEAN_GET_VALUE));
//						
//						/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
//						// 機器提供サービス契約一覧.返品機器番号
//						rirekiMap.put("hmpin_kiki_no", kktkBean.sendMessageString(KKW03301SFConst.HMPIN_KIKI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
//						/* ++++++++++ v5.00.00 追加完了 ++++++++++ */
//						
//						break;
//					}
//				}
				/* ++++++++++ v5.00.02 変更完了 ++++++++++ */
				/* ++++++++++ v5.00.00 削除開始 ++++++++++ */
				// 機器提供サービス契約履歴一覧.返品機器番号 → 返品機器番号
//				rirekiMap.put("hmpin_kiki_no", subBean.sendMessageString(KKW03301SFConst.HMPIN_KIKI_NO_15, X31CWebConst.DATABEAN_GET_VALUE));
				/* ++++++++++ v5.00.00 削除完了 ++++++++++ */
				// 機器提供サービス契約履歴一覧.配送ステータス → 配送ステータス
				rirekiMap.put("haiso_stat", subBean.sendMessageString(KKW03301SFConst.HAISO_STAT_15, X31CWebConst.DATABEAN_GET_VALUE));
				
				KeiChgCanList.add(rirekiMap);
			}
			
		}
		parentMap.put("upd_dtm_svc_kei", bean[0].sendMessageString(KKW03301SFConst.UPD_DTM_SVC_KEI, X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put("rireki_list", KeiChgCanList);
		// 進捗登録
		X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray(KKW03301SFConst.KTGI_CUST_KEI_HKTGI_LIST);
		ArrayList list = new ArrayList();
		if (arraybean != null && arraybean.getCount() > 0)
		{
			for (int i = 0; i < arraybean.getCount(); i++)
			{
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				int count = (Integer)subbean.sendMessage(KKW03301SFConst.HKTGI_IDO_RSN_CD_04, X31CWebConst.DATABEAN_GET_COUNT);
				for (int j = 0; j < count; j++)
				{
					HashMap childMap = new HashMap();
					// 異動理由コード
					if (subbean != null)
					{
						childMap.put("ido_rsn_cd", subbean.sendMessageString(KKW03301SFConst.HKTGI_IDO_RSN_CD_04, X31CWebConst.DATABEAN_GET_VALUE, j));
					}
					list.add(childMap);
				}
			}
		}
		parentMap.put("EKK1091D010CBSMsg1List", list);
		outputMap.put("KKSV059901CC", parentMap);
		return outputMap;
	}
}
