/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0223_KKSV0223OPDBMapper
*	ソースファイル名：KKSV0223_KKSV0223OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年11月11日
*＜機能概要＞
*	BP（オプションサービス引継対象更新）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/11/11	FJ		新規作成
*	v32.00.00	2017/05/29	FJ)三原		ANK-3149-08-00_新セキュリティパック導入(オプション引継でのセキュリティーパック引継)
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.KKW00127SF.KKW00127SFConst;
import eo.web.webview.KKW02201SF.KKW02201SFConst;
import eo.web.webview.common.JCCWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0223_KKSV0223OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0223_KKSV0223OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：オプション引継
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	// 2012/07/03 IT2-2012-0001104 MOD START 引数を追加
//	public HashMap setOpSvcHktgiUpd(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
	public HashMap setOpSvcHktgiUpd(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, List<Map<String, Object>> opList) {
	// 2012/07/03 IT2-2012-0001104 MOD END
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 2012/03/26 ST2-2012-0000463 START
		X31SDataBeanAccessArray svcInfoList = bean[0].getDataBeanArray(KKW02201SFConst.HIKIMOTO_SVC_INFO);
		String selectSvcInfoNo = bean[0].sendMessageString("引継元サービス一覧．選択", X31CWebConst.DATABEAN_GET_VALUE);
		//String svcKeiNo = bean[0].sendMessageString(KKW02201SFConst.HIKIMOTO_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String lastUpdDtm = "";
		//for (int i = 0; i < svcInfoList.getCount().intValue(); i++)
		//{
		X31SDataBeanAccess svcInfo = svcInfoList.getDataBean(Integer.parseInt(selectSvcInfoNo));
		lastUpdDtm = svcInfo.sendMessageString("最終更新年月日時分秒", X31CWebConst.DATABEAN_GET_VALUE);
			//if (svcKeiNo.equals(svcInfo.sendMessageString(KKW02201SFConst.SVC_KEI_NO_02, X31CWebConst.DATABEAN_GET_VALUE))) {
				//lastUpdDtm = svcInfo.sendMessageString("最終更新年月日時分秒", X31CWebConst.DATABEAN_GET_VALUE);
				//break;
			//}
		//}
		// 2012/03/26 ST2-2012-0000463 END
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		parentMap.put("ido_div", bean[0].sendMessageString(KKW02201SFConst.IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put("mskmsho_no", bean[0].sendMessageString(KKW02201SFConst.MSKMSHO_NO, X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put("mskmsho_dtl_no", bean[0].sendMessageString(KKW02201SFConst.MSKMSHO_DTL_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// KT1-2013-0000236 2013-02-27 引継元ＳＹＳＩＤ＿保持を設定 EDIT_START
		parentMap.put("hikimoto_sysid", bean[0].sendMessageString(KKW02201SFConst.HIKIMOTO_SYSID_HOJI, X31CWebConst.DATABEAN_GET_VALUE));
		// KT1-2013-0000236 2013-02-27 EDIT_END
		parentMap.put("hikimoto_svc_kei_no", bean[0].sendMessageString(KKW02201SFConst.HIKIMOTO_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 引継先契約者情報．ＳＹＳＩＤ → オプションサービス引継対象更新マップ.引継先契約者情報.ＳＹＳＩＤ
		parentMap.put("hikisaki_sysid", bean[0].sendMessageString("引継先契約者情報．ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// 引継先契約者情報．サービス契約番号 → オプションサービス引継対象更新マップ.引継先契約者情報.サービス契約番号
		parentMap.put("hikisaki_svc_kei_no", bean[0].sendMessageString("引継先契約者情報．サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put("hikisaki_seiky_kei_no", "");
		// 引継先ファミリーパック有無 → オプションサービス引継対象更新マップ.引継先ファミリーパック有無
		parentMap.put("hikisaki_fami_pack_umu", bean[0].sendMessageBoolean("引継先ファミリーパック有無", X31CWebConst.DATABEAN_GET_VALUE));
		// 引継先契約者情報．サービス契約ステータス → オプションサービス引継対象更新マップ.引継先契約者情報.サービス契約ステータス
		parentMap.put("hikisaki_svc_kei_stat_cd", bean[0].sendMessageString("引継先契約者情報．サービス契約ステータス", X31CWebConst.DATABEAN_GET_VALUE));
		// 引継先契約者情報．最終更新年月日時分秒 → オプションサービス引継対象更新マップ.引継先契約者情報.最終更新年月日時分秒
		parentMap.put("hikisaki_last_upd_dtm", bean[0].sendMessageString("引継先契約者情報．最終更新年月日時分秒", X31CWebConst.DATABEAN_GET_VALUE));

		String hikisakiAplyYmd = bean[0].sendMessageString(KKW02201SFConst.HIKISAKI_APLY_Y,
				X31CWebConst.DATABEAN_GET_VALUE)
				+ bean[0].sendMessageString(KKW02201SFConst.HIKISAKI_APLY_M, X31CWebConst.DATABEAN_GET_VALUE)
				+ bean[0].sendMessageString(KKW02201SFConst.HIKISAKI_APLY_D, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("hikisaki_aply_ymd", hikisakiAplyYmd);

		parentMap.put("last_upd_dtm", lastUpdDtm);

		//ANK-3149-08-00 ADD START
		// オプションパック選択 → オプションサービス契約一覧照会マップ.オプションパック選択
		parentMap.put("option_pack_choice", bean[0].sendMessageBoolean("オプションパック選択", X31CWebConst.DATABEAN_GET_VALUE));
		//ANK-3149-08-00 ADD END
		// 2012/07/03 IT2-2012-0001104 MOD START 引数によって処理を分岐
//		X31SDataBeanAccessArray hikisakiOpList = bean[0].getDataBeanArray(KKW02201SFConst.HIKISAKI_OPTION_SVC_INFO);
//		List<Map<String, Object>> appendList = new ArrayList<Map<String, Object>>();
//		for (int i = 0; i < hikisakiOpList.getCount().intValue(); i++)
//		{
//			X31SDataBeanAccess op = hikisakiOpList.getDataBean(i);
//			boolean isAppend = op.sendMessageBoolean(KKW02201SFConst.CHOICE_03, X31CWebConst.DATABEAN_GET_VALUE);
//			if (isAppend) {
//				Map<String, Object> map = new HashMap<String, Object>();
//				map.put("op_svc_kei_no", op.sendMessageString(KKW02201SFConst.OP_SVC_KEI_NO_03, X31CWebConst.DATABEAN_GET_VALUE));
//				map.put("op_svc_kei_stat", op.sendMessageString(KKW02201SFConst.OP_SVC_KEI_STAT_03, X31CWebConst.DATABEAN_GET_VALUE));
//				map.put("op_svc_cd", op.sendMessageString(KKW02201SFConst.OP_SVC_CD_03, X31CWebConst.DATABEAN_GET_VALUE));
//				map.put("pcrs_cd", op.sendMessageString(KKW02201SFConst.PCRS_CD_03, X31CWebConst.DATABEAN_GET_VALUE));
//				map.put("op_svc_kei_rvc_flg", op.sendMessageString(KKW02201SFConst.OP_SVC_KEI_RVC_FLG_03, X31CWebConst.DATABEAN_GET_VALUE));
//				map.put("vi_ck_umu", op.sendMessageString(KKW02201SFConst.VI_CK_UMU_03, X31CWebConst.DATABEAN_GET_VALUE));
//				appendList.add(map);
//			}
//		}
		List<Map<String, Object>> appendList = new ArrayList<Map<String, Object>>();
		if(null == opList)
		{
			X31SDataBeanAccessArray hikisakiOpList = bean[0].getDataBeanArray(KKW02201SFConst.HIKISAKI_OPTION_SVC_INFO);
		for (int i = 0; i < hikisakiOpList.getCount().intValue(); i++)
		{
			X31SDataBeanAccess op = hikisakiOpList.getDataBean(i);
			boolean isAppend = op.sendMessageBoolean(KKW02201SFConst.CHOICE_03, X31CWebConst.DATABEAN_GET_VALUE);
			if (isAppend) {
				Map<String, Object> map = new HashMap<String, Object>();
				map.put("op_svc_kei_no", op.sendMessageString(KKW02201SFConst.OP_SVC_KEI_NO_03, X31CWebConst.DATABEAN_GET_VALUE));
				map.put("op_svc_kei_stat", op.sendMessageString(KKW02201SFConst.OP_SVC_KEI_STAT_03, X31CWebConst.DATABEAN_GET_VALUE));
				map.put("op_svc_cd", op.sendMessageString(KKW02201SFConst.OP_SVC_CD_03, X31CWebConst.DATABEAN_GET_VALUE));
				map.put("pcrs_cd", op.sendMessageString(KKW02201SFConst.PCRS_CD_03, X31CWebConst.DATABEAN_GET_VALUE));
				map.put("op_svc_kei_rvc_flg", op.sendMessageString(KKW02201SFConst.OP_SVC_KEI_RVC_FLG_03, X31CWebConst.DATABEAN_GET_VALUE));
				map.put("vi_ck_umu", op.sendMessageString(KKW02201SFConst.VI_CK_UMU_03, X31CWebConst.DATABEAN_GET_VALUE));
				appendList.add(map);
			}
		}
		}
		else
		{
			for (int i = 0; i < opList.size(); i++)
			{
				Map<String, Object> map = new HashMap<String, Object>();
				map.put("op_svc_kei_no", (String)opList.get(i).get("op_svc_kei_no"));
				map.put("op_svc_kei_stat", (String)opList.get(i).get("op_svc_kei_stat"));
				map.put("op_svc_cd", (String)opList.get(i).get("op_svc_cd"));
				map.put("pcrs_cd", (String)opList.get(i).get("pcrs_cd"));
				map.put("op_svc_kei_rvc_flg", (String)opList.get(i).get("op_svc_kei_rvc_flg"));
				map.put("vi_ck_umu", (String)opList.get(i).get("vi_ck_umu"));
				appendList.add(map);
			}
		}
		// 2012/07/03 IT2-2012-0001104 MOD END

//ariyoshi追加
		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;
		
		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("異動理由明細");
		if(parentMap.containsKey("ido_rsn_cdList")){
			list = (ArrayList)parentMap.get("ido_rsn_cdList");
		}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();
				}

				// 異動理由明細.異動理由コード → オプションサービス契約＜電話＞一括登録　作業項目リスト.異動理由コードリスト.異動理由コード
				if (subbean != null) {
					childMap.put("ido_rsn_cd", subbean.sendMessageString("異動理由コード", X31CWebConst.DATABEAN_GET_VALUE));
				}

				// 異動理由明細.異動理由メモ → オプションサービス契約＜電話＞一括登録　作業項目リスト.異動理由コードリスト.異動理由メモ
				if (subbean != null) {
					childMap.put("ido_rsn_memo", subbean.sendMessageString("異動理由メモ", X31CWebConst.DATABEAN_GET_VALUE));
				}

				list.add(childMap);
			}
		}
		parentMap.put("ido_rsn_cdList", list);
//ariyoshi追加

		parentMap.put("opSvcKeiList", appendList);
		outputMap.put("OpSvcHktgiUpd", parentMap);
						
		return outputMap;
	}


	/**
	 * 上りマッピングをする
	 * @param bean　[0]：マルチセッション情報登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	// 2012/07/03 IT2-2012-0001104 MOD START 引数を追加
//	public HashMap setKKSV022303SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
	public HashMap setKKSV022303SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, List<Map<String, Object>> opList) {
	// 2012/07/03 IT2-2012-0001104 MOD END
		
		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("aply_ymd", bean[0].sendMessageString("引継先契約者情報．適用開始年月日", X31CWebConst.DATABEAN_GET_VALUE));
		String hikisakiAplyYmd = bean[0].sendMessageString(KKW02201SFConst.HIKISAKI_APLY_Y,
				X31CWebConst.DATABEAN_GET_VALUE)
				+ bean[0].sendMessageString(KKW02201SFConst.HIKISAKI_APLY_M, X31CWebConst.DATABEAN_GET_VALUE)
				+ bean[0].sendMessageString(KKW02201SFConst.HIKISAKI_APLY_D, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("aply_ymd", hikisakiAplyYmd);

		// 引継元契約者情報.サービス契約番号 → オプションサービス引継チェック.引継元サービス契約番号
		parentMap.put("hktgi_mt_svc_kei_no", bean[0].sendMessageString(KKW02201SFConst.HIKIMOTO_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 引継先契約者情報.サービス契約番号 → オプションサービス引継チェック.引継先サービス契約番号
		parentMap.put("hktgi_sk_svc_kei_no", bean[0].sendMessageString(KKW02201SFConst.HIKISAKI_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 引継元サービス契約内訳番号 → オプションサービス引継チェック.引継元サービス契約内訳番号
		parentMap.put("hktgi_mt_svc_kei_ucwk_no", bean[0].sendMessageString(KKW02201SFConst.HIKIMOTO_SVC_KEI_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 引継先契約者情報.引継元料金コースコード → オプションサービス引継チェック.引継元料金コースコード
		parentMap.put("hktgi_mt_pcrs_cd", bean[0].sendMessageString(KKW02201SFConst.HIKIMOTO_PCRS_CD, X31CWebConst.DATABEAN_GET_VALUE));

		// 引継先契約者情報.引継先料金コースコード → オプションサービス引継チェック.引継先料金コースコード
		parentMap.put("hktgi_sk_pcrs_cd", bean[0].sendMessageString(KKW02201SFConst.HIKISAKI_PCRS_CD, X31CWebConst.DATABEAN_GET_VALUE));

		List<Map<String, Object>> appendList = new ArrayList<Map<String, Object>>();
		// 2012/07/03 IT2-2012-0001104 MOD START 引数によって処理を分岐
//		X31SDataBeanAccessArray hikisakiOpList = bean[0].getDataBeanArray(KKW02201SFConst.HIKISAKI_OPTION_SVC_INFO);
//		for (int i = 0; i < hikisakiOpList.getCount().intValue(); i++)
//		{
//			X31SDataBeanAccess op = hikisakiOpList.getDataBean(i);
//			boolean isAppend = op.sendMessageBoolean(KKW02201SFConst.CHOICE_03, X31CWebConst.DATABEAN_GET_VALUE);
//			if (isAppend) {
//				Map<String, Object> map = new HashMap<String, Object>();
//				map.put("hktgi_trg_op_svc_kei_no", op.sendMessageString(KKW02201SFConst.OP_SVC_KEI_NO_03, X31CWebConst.DATABEAN_GET_VALUE));
//				map.put("hktgi_trg_op_svc_cd", op.sendMessageString(KKW02201SFConst.OP_SVC_CD_03, X31CWebConst.DATABEAN_GET_VALUE));
//				appendList.add(map);
//			}
//		}
		if(null == opList)
		{
			X31SDataBeanAccessArray hikisakiOpList = bean[0].getDataBeanArray(KKW02201SFConst.HIKISAKI_OPTION_SVC_INFO);
			for (int i = 0; i < hikisakiOpList.getCount().intValue(); i++)
			{
				X31SDataBeanAccess op = hikisakiOpList.getDataBean(i);
				boolean isAppend = op.sendMessageBoolean(KKW02201SFConst.CHOICE_03, X31CWebConst.DATABEAN_GET_VALUE);
				if (isAppend) {
					Map<String, Object> map = new HashMap<String, Object>();
					map.put("hktgi_trg_op_svc_kei_no", op.sendMessageString(KKW02201SFConst.OP_SVC_KEI_NO_03, X31CWebConst.DATABEAN_GET_VALUE));
					map.put("hktgi_trg_op_svc_cd", op.sendMessageString(KKW02201SFConst.OP_SVC_CD_03, X31CWebConst.DATABEAN_GET_VALUE));
					appendList.add(map);
				}
			}
		}
		else
		{
			for (int i = 0; i < opList.size(); i++)
			{
				Map<String, Object> map = new HashMap<String, Object>();
				map.put("hktgi_trg_op_svc_kei_no", (String)opList.get(i).get("op_svc_kei_no"));
				map.put("hktgi_trg_op_svc_cd", (String)opList.get(i).get("op_svc_cd"));
				appendList.add(map);
			}
		}
		// 2012/07/03 IT2-2012-0001104 MOD END
		parentMap.put("EKK0351C011CBSMsg1List", appendList);

		outputMap.put("KKSV022303SC", parentMap);
						
		return outputMap;
	}
	
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込内容承認登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param func_code　運用日付Map
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV022304SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, HashMap<String, String> unyo_dtm) {
		
		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);
		

		X31SDataBeanAccessArray cust_kei_hktg_list = bean[0].getDataBeanArray(KKW02201SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess cust_kei_hktg_bean = cust_kei_hktg_list.getDataBean(0);
		parentMap.put("sysid", cust_kei_hktg_bean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));

		// 部品呼び出し → 申込内容承認登録マップ.申込種別コード
		parentMap.put("mskm_sbt_cd", String.valueOf("00004"));
		// 運用年月日時分秒 → 申込内容承認登録マップ.申込受付年月日時分秒//
		parentMap.put("mskm_uk_dtm", unyo_dtm.get("運用年月日時分秒"));
		// 運用年月日 → 申込内容承認登録マップ.申込年月日
		parentMap.put("mskm_ymd", unyo_dtm.get("運用年月日"));

		parentMap.put("mskmsho_no", bean[0].sendMessageString("申込書番号", X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put("mskmsho_dtl_no", bean[0].sendMessageString("申込書明細番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV022304SC", parentMap);
						
		return outputMap;
	}
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV022305SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, HashMap<String, String> unyo_dtm) {
		
		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("mskm_ymd", unyo_dtm.get("運用年月日"));
		// 申込明細番号 → 申込明細照査・後続業務依頼マップ.申込明細番号
//		parentMap.put("mskm_dtl_no", bean[0].sendMessageString("申込明細番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 異動区分 → 申込明細照査・後続業務依頼マップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 認証ＩＤ → 申込明細照査・後続業務依頼マップ.機器認証ＩＤ
//		parentMap.put("kiki_ninsho_id", bean[0].sendMessageString("認証ＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// 認証ＩＤパスワード → 申込明細照査・後続業務依頼マップ.機器認証ＩＤパスワード
//		parentMap.put("kiki_ninsho_id_pwd", bean[0].sendMessageString("認証ＩＤパスワード", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV022305SC", parentMap);
						
		return outputMap;
	}
}
