/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0471_KKSV0471OPDBMapper
*	ソースファイル名：KKSV0471_KKSV0471OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2012年02月29日
*＜機能概要＞
*	BP（面開発案件情報更新処理）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/02/29	Fujitsu		新規作成
*
**********************************************************************/
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.KKW05905SF.KKW05905SFConst;
import eo.web.webview.common.JKKWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0471_KKSV0471OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0471_KKSV0471OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：面開発案件情報更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV047101SC(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);

		// キャンペーンコード → 割引サービス対象サービス一覧照会（表示用ＣＰ）SCマップ.ＫＥＹ＿表示用キャンペーンコード
		parentMap.put("key_dsp_campaign_cd", bean[0].sendMessageString("キャンペーンコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 基準日 → 割引サービス対象サービス一覧照会（表示用ＣＰ）SCマップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV047101SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：面開発案件情報更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV047102SC(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);

		// 面開発案件番号 → 面開発案件変更SCマップ.面開発案件番号
		parentMap.put("menkaihat_anken_no", bean[0].sendMessageString("面開発案件番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 案件名 → 面開発案件変更SCマップ.案件名
		parentMap.put("anken_nm", bean[0].sendMessageString("案件名", X31CWebConst.DATABEAN_GET_VALUE));
		// 案件カナ名 → 面開発案件変更SCマップ.案件カナ名
		parentMap.put("anken_kana", bean[0].sendMessageString("案件カナ名", X31CWebConst.DATABEAN_GET_VALUE));
		// ディベロッパ名 → 面開発案件変更SCマップ.ディベロッパー名
		parentMap.put("developer_nm", bean[0].sendMessageString("ディベロッパ名", X31CWebConst.DATABEAN_GET_VALUE));
		// 物件名 → 面開発案件変更SCマップ.物件名
		parentMap.put("bukken_nm", bean[0].sendMessageString("物件名", X31CWebConst.DATABEAN_GET_VALUE));
		// 覚書有効期限 → 面開発案件変更SCマップ.覚書有効期限年月日
		parentMap.put("oboegaki_yk_kigen_ymd", bean[0].sendMessageString("覚書有効期限", X31CWebConst.DATABEAN_GET_VALUE));
		// 分譲戸数 → 面開発案件変更SCマップ.分譲戸数
		parentMap.put("bunjo_kosu", bean[0].sendMessageString("分譲戸数", X31CWebConst.DATABEAN_GET_VALUE));
		// キャンペーンコード → 面開発案件変更SCマップ.割引サービスコード
		parentMap.put("wrib_svc_cd", bean[0].sendMessageString("キャンペーンコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 住所コード → 面開発案件変更SCマップ.面開発案件住所コード
		parentMap.put("menkaihat_anken_ad_cd", bean[0].sendMessageString("住所コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 郵便番号 → 面開発案件変更SCマップ.面開発案件郵便番号
		parentMap.put("menkaihat_anken_pcd", bean[0].sendMessageString("郵便番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 都道府県 → 面開発案件変更SCマップ.面開発案件都道府県名
		parentMap.put("menkaihat_anken_state_nm", bean[0].sendMessageString("都道府県", X31CWebConst.DATABEAN_GET_VALUE));
		// 市区町村 → 面開発案件変更SCマップ.面開発案件市区町村名
		parentMap.put("menkaihat_anken_city_nm", bean[0].sendMessageString("市区町村", X31CWebConst.DATABEAN_GET_VALUE));
		// 大字通称名 → 面開発案件変更SCマップ.面開発案件大字通称名
		parentMap.put("menkaihat_anken_oaztsu_nm", bean[0].sendMessageString("大字通称名", X31CWebConst.DATABEAN_GET_VALUE));
		// 字丁目 → 面開発案件変更SCマップ.面開発案件字丁目名
		parentMap.put("menkaihat_anken_azcho_nm", bean[0].sendMessageString("字丁目", X31CWebConst.DATABEAN_GET_VALUE));
		// 番地・号 → 面開発案件変更SCマップ.面開発案件番地号
		parentMap.put("menkaihat_anken_bnchigo", bean[0].sendMessageString("番地・号", X31CWebConst.DATABEAN_GET_VALUE));
		// 電話番号 → 面開発案件変更SCマップ.面開発案件電話番号
		parentMap.put("menkaihat_anken_telno", bean[0].sendMessageString("電話番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 導入担当者（ユーザ名） → 面開発案件変更SCマップ.導入担当者ユーザー名
		parentMap.put("donyu_tntsha_user_nm", bean[0].sendMessageString("導入担当者（ユーザ名）", X31CWebConst.DATABEAN_GET_VALUE));
		// 導入担当者（組織名） → 面開発案件変更SCマップ.導入担当者組織名
		parentMap.put("donyu_tntsha_org_nm", bean[0].sendMessageString("導入担当者（組織名）", X31CWebConst.DATABEAN_GET_VALUE));
		// 導入担当者（立場） → 面開発案件変更SCマップ.導入担当者立場名
		parentMap.put("donyu_tntsha_position_nm", bean[0].sendMessageString("導入担当者（立場）", X31CWebConst.DATABEAN_GET_VALUE));
		// フォロー担当者（ユーザ名） → 面開発案件変更SCマップ.フォロー担当者ユーザー名
		parentMap.put("follow_tntsha_user_nm", bean[0].sendMessageString("フォロー担当者（ユーザ名）", X31CWebConst.DATABEAN_GET_VALUE));
		// フォロー担当者（組織名） → 面開発案件変更SCマップ.フォロー担当者組織名
		parentMap.put("follow_tntsha_org_nm", bean[0].sendMessageString("フォロー担当者（組織名）", X31CWebConst.DATABEAN_GET_VALUE));
		// フォロー担当者（立場） → 面開発案件変更SCマップ.フォロー担当者立場名
		parentMap.put("follow_tntsha_position_nm", bean[0].sendMessageString("フォロー担当者（立場）", X31CWebConst.DATABEAN_GET_VALUE));
		// 覚書締結年月日 → 面開発案件変更SCマップ.覚書締結年月日
		parentMap.put("oboegaki_cnc_ymd", bean[0].sendMessageString("覚書締結年月日", X31CWebConst.DATABEAN_GET_VALUE));
		// 受注年月 → 面開発案件変更SCマップ.受注年月
		parentMap.put("juchu_ym", bean[0].sendMessageString("受注年月", X31CWebConst.DATABEAN_GET_VALUE));
		// 内示年月 → 面開発案件変更SCマップ.内示年月
		parentMap.put("naiji_ym", bean[0].sendMessageString("内示年月", X31CWebConst.DATABEAN_GET_VALUE));
		// Ｅハウス報告 → 面開発案件変更SCマップ.Eハウス報告インセンティブ支払年月
		parentMap.put("ehouse_rpt_incntv_pay_ym", bean[0].sendMessageString("Ｅハウス報告", X31CWebConst.DATABEAN_GET_VALUE));
		// 備考 → 面開発案件変更SCマップ.面開発案件補足備考
		parentMap.put("menkaihat_anken_hsk_biko", bean[0].sendMessageString("備考", X31CWebConst.DATABEAN_GET_VALUE));
		// 更新年月日時分秒 → 面開発案件変更SCマップ.更新年月日時分秒（更新前）
		parentMap.put("upd_dtm_bf", bean[0].sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 手修正  START
		// リスト項目
		// 獲得チャネル
		parentMap.put("kakutoku_channel_cd", JKKWebCommon.convertCode(bean[0],
																		KKW05905SFConst.KAKUTOKU_CHANNEL,
																		KKW05905SFConst.SELECT_INDEX_01,
																		KKW05905SFConst.CD_DIV_CD_LIST_01));
		// 標準サービス区分
		parentMap.put("stdard_svc_div", JKKWebCommon.convertCode(bean[0],
																KKW05905SFConst.STDARD_SVC_DIV,
																KKW05905SFConst.SELECT_INDEX_01,
																KKW05905SFConst.CD_DIV_CD_LIST_01));
		// 物件パターンコード
		parentMap.put("bukken_pattern_cd", JKKWebCommon.convertCode(bean[0],
																	KKW05905SFConst.BKN_PATTERN,
																	KKW05905SFConst.SELECT_INDEX_01,
																	KKW05905SFConst.CD_DIV_CD_LIST_01));
		// インセ対象コード
		parentMap.put("ince_trgt_cd", JKKWebCommon.convertCode(bean[0],
																KKW05905SFConst.INSE_TG,
																KKW05905SFConst.SELECT_INDEX_01,
																KKW05905SFConst.CD_DIV_CD_LIST_01));
		// 関電支店コード
		parentMap.put("kepco_shiten_cd", JKKWebCommon.convertCode(bean[0],
																KKW05905SFConst.KEPCO_SHITEN,
																KKW05905SFConst.SELECT_INDEX_01,
																KKW05905SFConst.CD_DIV_CD_LIST_01));
		
		// 面開発案件住所手動入力フラグの設定
		if(bean[0].sendMessageBoolean(KKW05905SFConst.EXCEPT, X31CWebConst.DATABEAN_GET_VALUE))
		{
			parentMap.put("mnkhtank_ad_man_input_flg", "1");
			parentMap.put("menkaihat_ad_chk_lv", "0");
		}
		else
		{
			parentMap.put("mnkhtank_ad_man_input_flg", "0");
			parentMap.put("menkaihat_ad_chk_lv", "1");
		}
		
		   
		if("".equals(bean[0].sendMessageString("住所コード", X31CWebConst.DATABEAN_GET_VALUE))){
			parentMap.put("menkaihat_ad_chk_lv", "0");
		}
		
		// 手修正  END
		
		outputMap.put("KKSV047102SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：面開発案件情報更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV047103CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 面開発案件番号 → 面開発担当者更新CCマップ.ＫＥＹ＿面開発案件番号
		parentMap.put("key_menkaihat_anken_no", bean[0].sendMessageString("面開発案件番号", X31CWebConst.DATABEAN_GET_VALUE));

		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("面開発担当者");
		if(parentMap.containsKey("menkaihat_tntsha_list")){
			list = (ArrayList)parentMap.get("menkaihat_tntsha_list");
		}else{
			list = new ArrayList();
		}
		if(arraybean != null && arraybean.getCount() > 0){
			for(int i = 0; i < arraybean.getCount(); i++){
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				HashMap childMap = null;
				if(list.size() -1 >= i){
					childMap = (HashMap)list.get(i);
				}else{
					childMap = new HashMap();
				}

				// 面開発担当者.担当者名 → 面開発担当者更新CCマップ.面開発担当者リスト.担当者名
				if (subbean != null) {
					childMap.put("tntsha_nm", subbean.sendMessageString("担当者名", X31CWebConst.DATABEAN_GET_VALUE));
				}
				// 面開発担当者.担当者カナ名 → 面開発担当者更新CCマップ.面開発担当者リスト.担当者カナ名
				if (subbean != null) {
					childMap.put("tntsha_kana", subbean.sendMessageString("担当者カナ名", X31CWebConst.DATABEAN_GET_VALUE));
				}
				// 面開発担当者.電話番号 → 面開発担当者更新CCマップ.面開発担当者リスト.電話番号
				if (subbean != null) {
					childMap.put("telno", subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_GET_VALUE));
				}
				// 面開発担当者.備考 → 面開発担当者更新CCマップ.面開発担当者リスト.面開発担当者補足備考
				if (subbean != null) {
					childMap.put("menkaihat_tntsha_hsk_biko", subbean.sendMessageString("備考", X31CWebConst.DATABEAN_GET_VALUE));
				}

				list.add(childMap);
			}
		}
		parentMap.put("menkaihat_tntsha_list", list);

		outputMap.put("KKSV047103CC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：面開発案件情報更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV047104CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}

		X31SDataBeanAccess beanTemp = bean[0];

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 面開発案件番号 → 面開発担当者更新CCマップ.ＫＥＹ＿面開発案件番号
		parentMap.put("key_menkaihat_anken_no", bean[0].sendMessageString("面開発案件番号", X31CWebConst.DATABEAN_GET_VALUE));
		//面開発保証金（ネット）
		setHoshokinListMapper(parentMap, beanTemp, KKW05905SFConst.MAEUKKIN_NET, KKW05905SFConst.PRC_UW_ALI, "01");
		// //面開発保証金（電話）
		setHoshokinListMapper(parentMap, beanTemp, KKW05905SFConst.MAEUKKIN_TEL, KKW05905SFConst.PRC_UW_ALI_TEL, "02");
		//面開発保証金（テレビ）
		setHoshokinListMapper(parentMap, beanTemp, KKW05905SFConst.MAEUKKIN_TV, KKW05905SFConst.PRC_UW_ALI_TV, "03");

		outputMap.put("KKSV047104CC", parentMap);
						
		return outputMap;
	}

	/**
	 * 面開発保証金の上りマッピングをする
	 * @param parentMap：マッピング用マップ
	 * @param beanTemp：面開発案件情報登録
	 * @param beanListName リスト項目名
	 * @param beanListPrcUcwkName リスト明細項目名
	 * @param svc_cd：サービス区分(01:ネット,02:電話,03:テレビ)
	 */
	@SuppressWarnings("unchecked")
	private void setHoshokinListMapper(HashMap<String, Object> parentMap,
										X31SDataBeanAccess beanTemp,
										String beanListName,
										String beanListPrcUcwkName,
										String svc_cd)
	{
		X31SDataBeanAccessArray arraybean = null;
		ArrayList list = null;
		String serviceListName = "menkaihat_hoshokin_list";

		// 元情報が存在しない場合
		if (beanTemp == null)
		{
			return;
		}
		
		arraybean = beanTemp.getDataBeanArray(beanListName);
		if (parentMap.containsKey(serviceListName))
		{
			list = (ArrayList)parentMap.get(serviceListName);
		}
		else
		{
			list = new ArrayList();
		}
		
		if (arraybean != null && arraybean.getCount() > 0)
		{
			for (int i = 0; i < arraybean.getCount(); i++)
			{
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				// 料金内訳略称
				String code = JKKWebCommon.convertCode(subbean,
														beanListPrcUcwkName,
														KKW05905SFConst.SELECT_INDEX_01,
														KKW05905SFConst.CD_DIV_CD_LIST_01);
				// 片方が未設定の場合
				if ("".equals(code) || "".equals(subbean.sendMessageString("金額", X31CWebConst.DATABEAN_GET_VALUE)))
				{
					continue;
				}
				
				HashMap childMap = new HashMap();
				
				if (subbean != null)
				{
					// 前受金情報.金額 → 面開発保証金登録CCマップ.面開発保証金リスト.金額
					childMap.put("amnt", subbean.sendMessageString(KKW05905SFConst.MAEUKKIN_03, X31CWebConst.DATABEAN_GET_VALUE));
					// 前受金情報.コードタイプコード → 面開発保証金登録CCマップ.面開発保証金リスト.面開発保証金コード
					childMap.put("menkaihat_hoshokin_cd", code);
					// 面開発保証金登録CCマップ.面開発保証金リスト.サービスコード
					childMap.put("svc_cd", svc_cd);
				}
				
				list.add(childMap);
			}
		}
		
		parentMap.put(serviceListName, list);
	}
}
