/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0461_KKSV0461OPDBMapper
*	ソースファイル名：KKSV0461_KKSV0461OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年12月23日
*＜機能概要＞
*	BP（機器提供サービス画面遷移判定情報取得）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/12/23	FJ		新規作成
*   v4.11.00    2012/12/22   FJ)鳩本     【IT1-2012-0009999】
*   v4.12.00    2013/02/26   FJ)古田     【OT-2013-0000227】
*   v4.13.00    2013/03/13   FJ)鳩本     【IT2-2013-0000294】
*   v5.00.00    2013/03/14   FJ)田原     【ANK-1429-00-00】住所変更に伴うVA移動機器登録の解除の対応
*   v5.00.01    2013/04/16   FJ)田原     【IT1-2013-0000931】
*   v5.00.02    2013/05/02   FJ)古田     【IT1-2013-0001192】
**********************************************************************/
package eo.web.webview.mapping;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.web.webview.KKW03301SF.KKW03301SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0461_KKSV0461OPDBMapper {
	
	/** 工事案件種別コード検索文字列 */
	/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
	private static final String KEY_KOJIAK_SBT_CD = "001,002,003,004,009";
	//private static final String KEY_KOJIAK_SBT_CD = "003,009";
	/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
	/**
	 * コンストラクタ
	 */
	public KKSV0461_KKSV0461OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器提供サービス契約一覧
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param selectBean 選択行
	 * @param stdardymd　運用日付
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV046101SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, X31SDataBeanAccess selectBean, String stdardymd) {
		
		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_BTRYHOZN_NO", selectBean.sendMessageString(KKW03301SFConst.BTRYHOZN_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
		// 引数_運用日付 → 物流保全一意照会ＳＣ.ＫＥＹ＿運用日付
		parentMap.put("KEY_UNYO_YMD", stdardymd);

		outputMap.put("KKSV046101SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器提供サービス契約一覧
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param onymd　オンライン日付
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV046102SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String onymd) {
		
		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(KKW03301SFConst.KEY_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
//		// ＫＥＹ＿割引サービスコード → サービス契約一意照会ＳＣ.ＫＥＹ＿世代登録年月日時分秒
//		parentMap.put("key_gene_add_dtm", bean[0].sendMessageString("ＫＥＹ＿割引サービスコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 引数_オンライン日付 → サービス契約一意照会ＳＣ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", onymd);

		outputMap.put("KKSV046102SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器提供サービス契約一覧
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV046103SC(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(KKW03301SFConst.KEY_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 異動区分"機器機種変更" → 機器提供サービス契約一覧照会（予約）ＳＣ.ＫＥＹ＿予約異動区分
		parentMap.put("key_rsv_ido_div", JKKCommonConst.IDO_DIV_VALUE_00028);
		
		outputMap.put("KKSV046103SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器提供サービス契約一覧
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV046104SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, X31SDataBeanAccess selectBean) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}
//
//		// サービス契約共通情報一覧照会明細の取得
//		X31SDataBeanAccess service_list2 = bean[0].getDataBeanArray(KKW03301SFConst.EKK0081B010CBSMSG1LIST).getDataBean(0);

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 機器解約（013）固定 → 異動予約一覧照会ＳＣ.ＫＥＹ＿異動予約詳細コード
		parentMap.put("key_ido_rsv_dtl_cd", "013");
		// サービス契約共通情報一覧照会明細.機器提供サービス契約番号 → 異動予約一覧照会ＳＣ.ＫＥＹ＿機器提供サービス契約番号
		parentMap.put("key_kktk_svc_kei_no", selectBean.sendMessageString(KKW03301SFConst.KKTK_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV046104SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器提供サービス契約一覧
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param selectBean 選択行
	 * @param opeymd 運用日付
	 * @param event イベント
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV046105SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, X31SDataBeanAccess selectBean, String opeymd, String event) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}

		// サービス契約共通情報一覧照会明細の取得
		X31SDataBeanAccess service_list2 = bean[0].getDataBeanArray(KKW03301SFConst.EKK0081B010CBSMSG1LIST).getDataBean(0);
		
		// 料金グループをチェック
		String prc_grp_cd = service_list2.sendMessageString(KKW03301SFConst.PRC_GRP_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
		

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		/* ++++++++++ v5.00.02 変更開始 ++++++++++ */
		String tkmdlChshtJokenSbtCd = "10";
		/* ++++++++++ v5.00.02 変更完了 ++++++++++ */
		
		boolean prcSearch = false;
		
		String[] tkml_jk_prc_gp_cd = bean[0].sendMessageString(KKW03301SFConst.TKML_JK_PRC_GP_CD, X31CWebConst.DATABEAN_GET_VALUE).split(",");
		
		for(int i=0;i<tkml_jk_prc_gp_cd.length;i++)
		{
			// 一致する場合、料金コースで検索する。
			if(prc_grp_cd.equals(tkml_jk_prc_gp_cd[i]))
			{
				prcSearch = true;
				tkmdlChshtJokenSbtCd = "20";
				break;
			}
		}
		

		if(prcSearch)
		{
			// モバイルの場合
			// サービス契約共通情報一覧.料金コースコード → サービス別宅内機器型式候補一覧照会ＳＣ.ＫＥＹ＿料金コースコード
			parentMap.put("key_pcrs_cd", service_list2.sendMessageString(KKW03301SFConst.PCRS_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
		}
		else
		{
			// モバイル以外の場合
			// サービス契約共通情報一覧.料金グループコード → サービス別宅内機器型式候補一覧照会ＳＣ.ＫＥＹ＿料金グループコード
			parentMap.put("key_prc_grp_cd", service_list2.sendMessageString(KKW03301SFConst.PRC_GRP_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		/* ++++++++++ v5.00.02 変更開始 ++++++++++ */
		// 宅内機器型式抽出条件種別コード
		parentMap.put("key_tkmdl_chsht_joken_sbt_cd", tkmdlChshtJokenSbtCd);
		/* ++++++++++ v5.00.02 変更完了 ++++++++++ */
		
		// 選択行.宅内機器型式コード → サービス別宅内機器型式候補一覧照会ＳＣ.ＫＥＹ＿宅内機器型式コード
		parentMap.put("key_taknkiki_model_cd", selectBean.sendMessageString(KKW03301SFConst.TAKNKIKI_MODEL_CD_01, X31CWebConst.DATABEAN_GET_VALUE));
		
		/* ++++++++++ v5.00.02 変更開始 ++++++++++ */
//		// 押下されたボタンをチェックする
//		if("1".equals(event))
//		{
//			// "1":修理受付の場合
//			// "1" → サービス別宅内機器型式候補一覧照会ＳＣ.ＫＥＹ＿修理交換可否
//			parentMap.put("key_shuri_kokan_kh", "1");
//		}
//		else
//		{
//			// "1":修理受付以外の場合
//			// "1" → サービス別宅内機器型式候補一覧照会ＳＣ.ＫＥＹ＿機種変更可否
//			parentMap.put("key_mdl_chg_kh", "1");
//		}
		if("1".equals(event))
		{
			// "1":修理受付の場合
			// "1" → サービス別宅内機器型式候補一覧照会ＳＣ.ＫＥＹ＿修理交換可否
			parentMap.put("key_shuri_kokan_kh", "1");
		}
		else if("2".equals(event))
		{
			// "1":修理受付以外の場合
			// "1" → サービス別宅内機器型式候補一覧照会ＳＣ.ＫＥＹ＿機種変更可否
			parentMap.put("key_mdl_chg_kh", "1");
		}
		else
		{
			// 処理なし
		}
		/* ++++++++++ v5.00.02 変更完了 ++++++++++ */

		// 引数_運用日付 → サービス別宅内機器型式候補一覧照会ＳＣ.ＫＥＹ＿基準年月日
		parentMap.put("key_base_ymd", opeymd);
		
		
		outputMap.put("KKSV046105SC", parentMap);
						
		return outputMap;
	}

//	/**
//	 * 上りマッピングをする
//	 * @param bean　[0]：機器提供サービス契約一覧
//	 * @param outputMap
//	 * @param func_code　機能コード
//	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setKKSV046106SC(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("search_type", "1");
//
//		// ＫＥＹ＿サービス契約番号 → 工事中工事案件一覧照会（サービス契約番号）ＳＣ.ＫＥＹ＿サービス契約番号
//		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("ＫＥＹ＿サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
//		// 009（プラン変更（収容替））固定 → 工事中工事案件一覧照会（サービス契約番号）ＳＣ.ＫＥＹ＿工事案件種別コード
//		parentMap.put("key_kojiak_sbt_cd", "009");
//
//		outputMap.put("KKSV046106SC", parentMap);
//						
//		return outputMap;
//	}
//
//	/**
//	 * 上りマッピングをする
//	 * @param bean　[0]：機器提供サービス契約一覧
//	 * @param outputMap
//	 * @param func_code　機能コード
//	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setKKSV046107SC(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("search_type", "1");
//		// 最大検索件数
//		parentMap.put("max_search_num", JCCWebCommon.getSearchConst("KKW03301_MAX_SHOW_CNT"));
//		// 表示件数
//		parentMap.put("display_num", JCCWebCommon.getSearchConst("KKW03301_ROW_PER_PAGE"));
//		
//		// 取得総ページ数("1"固定)
//		parentMap.put("total_page_num", "1");
//
//		// ＫＥＹ＿工事案件種別コード（一覧） → 工事案件対象宅内機器一覧照会ＳＣ.ＫＥＹ＿工事案件番号
////		parentMap.put("key_kojiak_no", bean[0].sendMessageString("ＫＥＹ＿工事案件種別コード（一覧）", X31CWebConst.DATABEAN_GET_VALUE));
//
//		outputMap.put("KKSV046107SC", parentMap);
//						
//		return outputMap;
//	}
//	
//	/**
//	 * 上りマッピングをする
//	 * @param bean　[0]：機器提供サービス契約一覧
//	 * @param outputMap
//	 * @param func_code　機能コード
//	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setKKSV046108SC(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("search_type", "1");
//
//		// ＫＥＹ＿サービス契約番号 → 工事中工事案件一覧照会（サービス契約番号）ＳＣ.ＫＥＹ＿サービス契約番号
//		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("ＫＥＹ＿サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
//		// 003（住所変更（新設））固定 → 工事中工事案件一覧照会（サービス契約番号）ＳＣ.ＫＥＹ＿工事案件種別コード
//		parentMap.put("key_kojiak_sbt_cd", "003");
//
//		outputMap.put("KKSV046108SC", parentMap);
//						
//		return outputMap;
//	}
//
//	/**
//	 * 上りマッピングをする
//	 * @param bean　[0]：機器提供サービス契約一覧
//	 * @param outputMap
//	 * @param func_code　機能コード
//	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setKKSV046109SC(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("search_type", "1");
//		// 最大検索件数
//		parentMap.put("max_search_num", JCCWebCommon.getSearchConst("KKW03301_MAX_SHOW_CNT"));
//		// 表示件数
//		parentMap.put("display_num", JCCWebCommon.getSearchConst("KKW03301_ROW_PER_PAGE"));
//		
//		// 取得総ページ数("1"固定)
//		parentMap.put("total_page_num", "1");
//
//		// 工事案件対象宅内機器一覧照会ＳＣ.ＫＥＹ＿工事案件番号(KKSV046108SCで取得した工事案件番号をBP側で設定)
//
//		outputMap.put("KKSV046109SC", parentMap);
//						
//		return outputMap;
//	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器提供サービス契約一覧
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param selectBean 選択行
	 * @param stdardymd　運用日付
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV046110SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, X31SDataBeanAccess selectBean, String stdardymd) {
		
		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_kap_kei_no", selectBean.sendMessageString(KKW03301SFConst.KAP_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 引数_運用日付 → 割賦契約一意照会ＳＣ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", stdardymd);

		outputMap.put("KKSV046110SC", parentMap);
						
		return outputMap;
	}
	
	/* ++++++++++ v4.12.00 追加開始 ++++++++++ */
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器提供サービス契約一覧
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param selectBean 選択行
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV046111SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, X31SDataBeanAccess selectBean) {
		
		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("ＫＥＹ＿サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 選択行.機器提供サービス契約番号
		parentMap.put("kktk_svc_kei_no", selectBean.sendMessageString(KKW03301SFConst.KKTK_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV046111CC", parentMap);
						
		return outputMap;
	}
	/* ++++++++++ v4.12.00 追加完了 ++++++++++ */
	
	/* ++++++++++ v4.13.00 追加開始 ++++++++++ */
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器提供サービス契約一覧
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param selectBean 選択行
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV046112CC(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("search_type", "1");
		// 最大検索件数
		parentMap.put("max_search_num", JCCWebCommon.getSearchConst("KKW03301_MAX_SHOW_CNT"));
		// 表示件数
		parentMap.put("display_num", JCCWebCommon.getSearchConst("KKW03301_ROW_PER_PAGE"));
		
		// 取得総ページ数("1"固定)
		parentMap.put("total_page_num", "1");
		
		// サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("ＫＥＹ＿サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 工事案件種別コード
		parentMap.put("key_kojiak_sbt_cd", KEY_KOJIAK_SBT_CD);
		
		outputMap.put("KKSV046112CC", parentMap);
		
		return outputMap;
	}
	/* ++++++++++ v4.13.00 追加完了 ++++++++++ */

	/* ++++++++++ v5.00.01 追加開始 ++++++++++ */
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器提供サービス契約一覧
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param selectBean 選択行
	 * @param stdardymd　運用日付
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV046113SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, X31SDataBeanAccess selectBean, String stdardymd) {
		
		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_btryhozn_no", selectBean.sendMessageString(KKW03301SFConst.BTRYHOZN_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
		// 引数_運用日付 → 物流保全一意照会ＳＣ.ＫＥＹ＿運用日付
		parentMap.put("key_unyo_ymd", stdardymd);

		outputMap.put("KKSV046113SC", parentMap);
						
		return outputMap;
	}
	/* ++++++++++ v5.00.01 追加終了 ++++++++++ */
}
