/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0796_KKSV0796OPDBMapper
*	ソースファイル名：KKSV0796_KKSV0796OPDBMapper.java
*	作成者			：FJ
*	日付			：2014年06月23日
*＜機能概要＞
*	BP（ＧＧ乗換登録）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v10.00.00	2014/07/15	FJ)藤田		【ANK-1918-00-00】新規作成
*	v10.01.00	2014/08/07	FJ)藤田		【IT1-2014-0000264】申込明細番号が再度採番される
*	v10.02.00	2014/08/27	FJ)藤田		【IT2-2014-0000291】ＧＧ乗換で排他チェックエラー
*
**********************************************************************/
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.KKW00401SF.KKW00401SFConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0796_KKSV0796OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0796_KKSV0796OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：サービス契約番号を保持するBeanリスト
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV079601CC(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);
		X31SDataBeanAccess subbean = null;
		
		// サービス契約一意照会リスト
		X31SDataBeanAccess svcKeiBean = bean[0].getDataBeanArray(KKW00401SFConst.EKK0081A010_LIST).getDataBean(0);

		// 顧客契約引継リスト
		X31SDataBeanAccess kkHktgBean = bean[0].getDataBeanArray(KKW00401SFConst.KTGI_CUST_KEI_HKTGI_LIST).getDataBean(0);
		
		// 宅内機器型式コード
		subbean = bean[0].getDataBeanArray(KKW00401SFConst.KIKI_MODEL_HOJI).getDataBean(0);
		parentMap.put("taknkiki_model_cd", subbean.sendMessageString(KKW00401SFConst.KIKI_MODEL_CD_22, X31CWebConst.DATABEAN_GET_VALUE));
		// 提供種別コード
		subbean = bean[0].getDataBeanArray(KKW00401SFConst.TK_SBT).getDataBean(0);
		parentMap.put("tk_sbt_cd", subbean.sendMessageString(KKW00401SFConst.CD_DIV_CD_01, X31CWebConst.DATABEAN_GET_VALUE));
		// 付加情報コード
		subbean = bean[0].getDataBeanArray(KKW00401SFConst.HUKA_INFO).getDataBean(0);
		parentMap.put("huka_info_cd", subbean.sendMessageString(KKW00401SFConst.CD_DIV_CD_01, X31CWebConst.DATABEAN_GET_VALUE));
		// SYSID
		parentMap.put("sysid", svcKeiBean.sendMessageString(KKW00401SFConst.SYSID_03, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 更新年月日時分秒（サービス契約）
		parentMap.put("svc_kei_upd_dtm", svcKeiBean.sendMessageString(KKW00401SFConst.UPD_DTM_03, X31CWebConst.DATABEAN_GET_VALUE));

		// IT2-2014-0000291 ＧＧ乗換で排他チェックエラー 2014/08/27 藤田 ADD START
		// 同一回線最新＿更新年月日時分秒
		parentMap.put("kaisen_upd_dtm", bean[0].sendMessageString(KKW00401SFConst.KAISEN_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE));
		// IT2-2014-0000291 ＧＧ乗換で排他チェックエラー 2014/08/27 藤田 ADD END
		
		// 機器提供サービス契約番号
		parentMap.put("kktk_svc_kei_no", bean[0].sendMessageString(KKW00401SFConst.BF_VDSL_KTKK_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 異動区分
		parentMap.put("ido_div", bean[0].sendMessageString(KKW00401SFConst.IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE));
		// 工事案件番号
		parentMap.put("kojiak_no", bean[0].sendMessageString(KKW00401SFConst.KOJIAK_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 異動理由明細リスト
		ArrayList list = new ArrayList();
		X31SDataBeanAccessArray subbeanArray = bean[0].getDataBeanArray(KKW00401SFConst.KTGI_CUST_KEI_HKTGI_LIST);
		for (int i = 0; i < subbeanArray.getCount(); i++)
		{
			subbean = subbeanArray.getDataBean(i);
			Integer count = (Integer)subbean.sendMessage(KKW00401SFConst.HKTGI_IDO_RSN_CD_09, X31CWebConst.DATABEAN_GET_COUNT);
			for (int j = 0; j < count.intValue(); j++)
			{
				HashMap<String, Object> childMap = new HashMap<String, Object>();
				// 異動理由コード
				childMap.put("ido_rsn_cd", subbean.sendMessageString(KKW00401SFConst.HKTGI_IDO_RSN_CD_09, X31CWebConst.DATABEAN_GET_VALUE, j));
				list.add(childMap);
			}
		}
		parentMap.put("ido_rsn_cd_list", list);
		
		// 異動理由メモ
		parentMap.put("ido_rsn_memo", kkHktgBean.sendMessageString(KKW00401SFConst.HKTGI_IDO_RSN_MEMO_09, X31CWebConst.DATABEAN_GET_VALUE));
		// 申込書番号
		parentMap.put("mskmsho_no", bean[0].sendMessageString(KKW00401SFConst.MSKMSHO_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 工事希望年月日
		parentMap.put("koji_kibo_ymd", bean[0].sendMessageString(KKW00401SFConst.KOJI_KIBO_YMD, X31CWebConst.DATABEAN_GET_VALUE));
		// 工事案件備考
		parentMap.put("kojiak_biko", bean[0].sendMessageString(KKW00401SFConst.RRK_WAY_HOKI, X31CWebConst.DATABEAN_GET_VALUE));
		// 工事案件備考１
		parentMap.put("kojiak_biko_1", bean[0].sendMessageString(KKW00401SFConst.KOJIAK_BIKO_1, X31CWebConst.DATABEAN_GET_VALUE));
		// 工事案件備考２
		parentMap.put("kojiak_biko_2", bean[0].sendMessageString(KKW00401SFConst.KOJIAK_BIKO_2, X31CWebConst.DATABEAN_GET_VALUE));
		// 申込者名
		parentMap.put("mskmsha_nm", bean[0].sendMessageString(KKW00401SFConst.CUST_NM, X31CWebConst.DATABEAN_GET_VALUE));
		// 宅内工事希望アポ期限年月日
		parentMap.put("tnkj_kibo_apo_kigen_ymd", bean[0].sendMessageString(KKW00401SFConst.TNKJ_KIBO_APO_KIGEN_YMD, X31CWebConst.DATABEAN_GET_VALUE));
		// 電話連絡希望時間帯コード
		subbean = bean[0].getDataBeanArray(KKW00401SFConst.TEL_RRK_KIBO_TIME).getDataBean(0);
		parentMap.put("tel_rrk_kibo_time_cd", subbean.sendMessageString(KKW00401SFConst.CD_DIV_CD_01, X31CWebConst.DATABEAN_GET_VALUE));
		// 工事アポ連絡先指定コード
		subbean = bean[0].getDataBeanArray(KKW00401SFConst.KOJI_APO_RRKS).getDataBean(0);
		parentMap.put("koji_apo_rrks_shitei_cd", subbean.sendMessageString(KKW00401SFConst.CD_DIV_CD_01, X31CWebConst.DATABEAN_GET_VALUE));
		// 工事アポ連絡先電話番号
		parentMap.put("koji_apo_rrks_telno", bean[0].sendMessageString(KKW00401SFConst.CUST_RRKS_TELNO, X31CWebConst.DATABEAN_GET_VALUE));

		// 処理日付（運用日付）
		parentMap.put("ope_date", bean[0].sendMessageString(KKW00401SFConst.STDARDYMD, X31CWebConst.DATABEAN_GET_VALUE));
		// 販売種別コード -> "10"：標準（新品）
		parentMap.put("hambai_sbt_cd", "10");
		
		// IT1-2014-0000264 申込明細番号が再度採番される 2014/08/07 藤田 ADD START
		// 申込明細番号
		parentMap.put("mskm_dtl_no", bean[0].sendMessageString(KKW00401SFConst.MSKM_DTL_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// IT1-2014-0000264 申込明細番号が再度採番される 2014/08/07 藤田 ADD END
		
		// メッセージリスト
		parentMap.put("message_list", new ArrayList());
		
		// エラーフラグ
		parentMap.put("err_flg", "");
		
		outputMap.put("KKSV079601CC", parentMap);
						
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：結果を詰める対象のBeanリスト
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV079601CC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV079601SC")){
			parentMap = (HashMap)outputMap.get("KKSV079601SC");
		}

		if (parentMap != null)
		{
			ArrayList childList = (ArrayList)parentMap.get("EKK0241B001CBSMsg1List");
			if (childList != null)
			{
//				for (int i=0; i < childList.size(); i++)
//				{
//					HashMap childMap = (HashMap)childList.get(i);
//					
//				}
			}
		}
		
		return bean;
	}
}
