/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹PT
*	モジュール名	：KKSV0780_KKSV0780OPDBMapper
*	ソースファイル名：KKSV0780_KKSV0780OPDBMapper.java
*	作成者			：富士通
*	日付			：2013年12月17日
*＜機能概要＞
*	BP（サービス契約情報照会(ＭＶＮＯ)初期表示）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2013/12/17	富士通		新規作成
*   v26.00.00	2016/06/10  FJ)笠川    【ANK-2687-00-00】 プレミアムサポート施策
*   v46.00.00   2019/11/03  FJ)星野      ANK-3752-00-00
*   v49.00.00   2020/06/10	FJ)荒木    【ANK-3840-00-00】テレビリースサービス新規申込対応
**********************************************************************/
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.common.util.JKKStringUtil;
import eo.web.webview.KKW00194SF.KKW00194SFConst;
import eo.web.webview.common.JKKCommonConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0780_KKSV0780OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0780_KKSV0780OPDBMapper(){
	}
	


	/**
	 * 下りマッピング
	 * @param bean　[0]：サービス契約情報照会（ＭＶＮＯ）
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV078002SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV078002SC")){
			parentMap = (HashMap)outputMap.get("KKSV078002SC");
		}
		
		ArrayList childList = null;
		

		X31SDataBeanAccessArray listEKK0081A010_ekk0081a010cbsmsg1list_EKK0081A010CBSMsg1List = bean[0].getDataBeanArray("サービス契約一意照会明細");
		childList = null;
		if(listEKK0081A010_ekk0081a010cbsmsg1list_EKK0081A010CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0081A010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0081A010CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listEKK0081A010_ekk0081a010cbsmsg1list_EKK0081A010CBSMsg1List.getCount() -1 >= i){
					subbean = listEKK0081A010_ekk0081a010cbsmsg1list_EKK0081A010CBSMsg1List.getDataBean(i);
				}else{
					subbean = listEKK0081A010_ekk0081a010cbsmsg1list_EKK0081A010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// サービス契約一意照会明細.サービス契約ステータス ← サービス契約一意照会.サービス契約一意照会明細.サービス契約ステータス
				if (childMap != null) {
					subbean.sendMessageString("サービス契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_stat"));
				} else {
					subbean.sendMessageString("サービス契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.面開発案件番号 ← サービス契約一意照会.サービス契約一意照会明細.面開発案件番号
				if (childMap != null) {
					subbean.sendMessageString("面開発案件番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("menkaihat_anken_no"));
				} else {
					subbean.sendMessageString("面開発案件番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.料金グループコード ← サービス契約一意照会.サービス契約一意照会明細.料金グループコード
				if (childMap != null) {
					subbean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_grp_cd"));
				} else {
					subbean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.料金コースコード ← サービス契約一意照会.サービス契約一意照会明細.料金コースコード
				if (childMap != null) {
					subbean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcrs_cd"));
				} else {
					subbean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.審査結果コード ← サービス契約一意照会.サービス契約一意照会明細.審査結果コード
				if (childMap != null) {
					subbean.sendMessageString("審査結果コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("skekka_cd"));
				} else {
					subbean.sendMessageString("審査結果コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.審査結果詳細コード ← サービス契約一意照会.サービス契約一意照会明細.審査結果詳細コード
				if (childMap != null) {
					subbean.sendMessageString("審査結果詳細コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("skekka_dtl_cd"));
				} else {
					subbean.sendMessageString("審査結果詳細コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.審査結果補記 ← サービス契約一意照会.サービス契約一意照会明細.審査結果補記コード
				if (childMap != null) {
					subbean.sendMessageString("審査結果補記", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("skekka_hoki_cd"));
				} else {
					subbean.sendMessageString("審査結果補記", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.サービス課金開始年月日 ← サービス契約一意照会.サービス契約一意照会明細.サービス課金開始年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス課金開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_chrg_staymd"));
				} else {
					subbean.sendMessageString("サービス課金開始年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.ＷＥＢオプション追加不可フラグ ← サービス契約一意照会.サービス契約一意照会明細.WEBオプション追加不可フラグ
				if (childMap != null) {
					subbean.sendMessageString("ＷＥＢオプション追加不可フラグ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("web_op_add_fail_flg"));
				} else {
					subbean.sendMessageString("ＷＥＢオプション追加不可フラグ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.サービス停止年月日 ← サービス契約一意照会.サービス契約一意照会明細.サービス停止年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス停止年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_stp_ymd"));
				} else {
					subbean.sendMessageString("サービス停止年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.サービス停止解除年月日 ← サービス契約一意照会.サービス契約一意照会明細.サービス停止解除年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス停止解除年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_stp_rls_ymd"));
				} else {
					subbean.sendMessageString("サービス停止解除年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.サービス休止年月日 ← サービス契約一意照会.サービス契約一意照会明細.サービス休止年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス休止年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_pause_ymd"));
				} else {
					subbean.sendMessageString("サービス休止年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.サービス休止理由メモ ← サービス契約一意照会.サービス契約一意照会明細.サービス休止理由メモ
				if (childMap != null) {
					subbean.sendMessageString("サービス休止理由メモ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_pause_rsn_memo"));
				} else {
					subbean.sendMessageString("サービス休止理由メモ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.サービス休止解除年月日 ← サービス契約一意照会.サービス契約一意照会明細.サービス休止解除年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス休止解除年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_pause_rls_ymd"));
				} else {
					subbean.sendMessageString("サービス休止解除年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.サービス終了年月日 ← サービス契約一意照会.サービス契約一意照会明細.サービス終了年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_endymd"));
				} else {
					subbean.sendMessageString("サービス終了年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.サービス課金終了年月日 ← サービス契約一意照会.サービス契約一意照会明細.サービス課金終了年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス課金終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_chrg_endymd"));
				} else {
					subbean.sendMessageString("サービス課金終了年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.違約金発生コード ← サービス契約一意照会.サービス契約一意照会明細.違約金発生コード
				if (childMap != null) {
					subbean.sendMessageString("違約金発生コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pnlty_hassei_cd"));
				} else {
					subbean.sendMessageString("違約金発生コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.備考 ← サービス契約一意照会.サービス契約一意照会明細.業務連絡備考
				if (childMap != null) {
					subbean.sendMessageString("備考", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("work_rrk_biko"));
				} else {
					subbean.sendMessageString("備考", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約一意照会明細.最終更新年月日時分秒 ← サービス契約一意照会.サービス契約一意照会明細.最終更新年月日時分秒
				if (childMap != null) {
					subbean.sendMessageString("最終更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("last_upd_dtm"));
				} else {
					subbean.sendMessageString("最終更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				if (childMap != null) {
					// サービス開始年月日
					subbean.sendMessageString(KKW00194SFConst.SVC_STA_YMD_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_sta_ymd"));
					// サービス解約起算年月日
					subbean.sendMessageString(KKW00194SFConst.SVC_DSL_KISAN_YMD_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_dsl_kisan_ymd"));
					// サービスキャンセル年月日
					subbean.sendMessageString(KKW00194SFConst.SVC_CANCEL_YMD_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_cancel_ymd"));
				} else {
					subbean.sendMessageString(KKW00194SFConst.SVC_STA_YMD_02, X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString(KKW00194SFConst.SVC_DSL_KISAN_YMD_02, X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString(KKW00194SFConst.SVC_CANCEL_YMD_02, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}


		return bean;
	}

// ANK-3752-00-00対応 20191103 星野 ADD START
	/**
	 * 下りマッピング
	 * @param bean　[0]：サービス契約情報照会（ＭＶＮＯ）
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV078004SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV078004SC")){
			parentMap = (HashMap)outputMap.get("KKSV078004SC");
		}
		ArrayList childList = null;
		
		if(parentMap != null && parentMap.containsKey("EKK2821A010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK2821A010CBSMsg1List");

			if (!childList.isEmpty()) {
				HashMap childMap = (HashMap)childList.get(0);
				
				String joto_ymd = JKKStringUtil.nullToBlank((String) childMap.get("joto_ymd"));
				String dateYMD = null;
				
				if (joto_ymd != null && !joto_ymd.trim().isEmpty() && joto_ymd.length() == 8) {
					dateYMD = joto_ymd.substring(0, 4) + "/" + joto_ymd.substring(4, 6) + "/" + joto_ymd.substring(6, 8);
				} else {
					dateYMD = "";
				}
				
				bean[0].sendMessageString(KKW00194SFConst.JOTO_YMD, X31CWebConst.DATABEAN_SET_VALUE, dateYMD);
			}
		}


		return bean;
	}
// ANK-3752-00-00対応 20191103 星野 ADD END


	/**
	 * 上りマッピングをする
	 * @param bean　[0]：サービス契約情報更新（ｅｏ光ネット）
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV078001SC(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("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV078001SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：サービス契約情報更新（ｅｏ光ネット）
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV078002SC(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("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 運用年月日 → サービス契約一意照会.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV078002SC", parentMap);
						
		return outputMap;
	}
	
// ANK-3752-00-00対応 20191103 星野 ADD START
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：サービス契約情報更新（ｅｏ光ネット）
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV078004SC(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("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV078004SC", parentMap);
						
		return outputMap;
	}
// ANK-3752-00-00対応 20191103 星野 ADD END
	
	// 2016/06/10 ANK-2687-00-00 ADD START
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：サービス契約情報更新（ｅｏ光ネット）
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV078007CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}
		
		ArrayList childList = null;
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		X31SDataBeanAccessArray custKeiHktgiList = bean[0].getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		if(custKeiHktgiList != null && parentMap != null ){
			X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
			String sysid     = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SYSID,      X31CWebConst.DATABEAN_GET_VALUE);
			parentMap.put("key_sysid", sysid);
			outputMap.put("KKSV078007CC", parentMap);
		}
		return outputMap;
	}

	// 2016/06/10 ANK-2687-00-00 ADD END
// ANK-3840-00-00 ADD START
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：サービス契約情報照会（ＭＶＮＯ）
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV078008CC(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_func_code", String.valueOf(JKKCommonConst.VCMS_TEGAK_SVC_FUNC_CODE));
		// 部品呼び出し → ＫＥＹ＿契約種別コード
		parentMap.put("key_kyk_sbt_cd", String.valueOf(JKKCommonConst.VCMS_TEGAK_SVC_KYK_SBT_CODE));
		// SYSID → ＫＥＹ＿ＳＹＳＩＤ
		X31SDataBeanAccessArray custKeiHktgiList = bean[0].getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
		parentMap.put("key_sysid", custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV078008CC", parentMap);
		
		return outputMap;
	}
// ANK-3840-00-00 ADD END
}