/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CNSV0002_CNSV0002OPDBMapper
*	ソースファイル名：CNSV0002_CNSV0002OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年08月03日
*＜機能概要＞
*	BP（コンテンツ契約一覧照会(検索ボタン押下)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/03	FJ		新規作成
*	v10.00.01	2014/07/30  FJ)味岡		【ANK-2139-00-00】eoスマートリンクプレミアムパック解約の簡易化ボタン制御を追加
*	v10.00.02	2014/09/11	FJ)味岡		【ANK-2139-02-00】スマートリンク関連コンテンツ全解約APIについて、コンテンツ解約APIを呼出する変更対応
*   v13.00.00	2015/03/11  FJ)森脇		【ANK-2401-00-00】検索結果の最大表示件数見直し
*	ｖ18.00.00	2015/10/22  FJ)頼経	     ANK-2694-00-00 ワンストップ案件（ＳＴＥＰ２）※koptWebBからkoptWebAへコピー
*	v20.00.00	2015/11/13	FJ)清原		【ANK-2565-00-00】クレジットカード番号預かりサービス導入（Step3：預かり番号化）
*   v20.00.01	2015/12/17  FJ)頼経		【ANK-2663-00-00】LalaCALL 代理店対応(STNet・テレビトクシマ)
*	v65.00.00	2023/10/17	FJ)張		【ANK-4346-00-00】【eo定期】CCMG再構築対応
**********************************************************************/
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.constant.JCNStrConst;
import eo.web.webview.CNA00901SF.CNW00101SFConst;
import eo.web.webview.commonOneStop.JCCWebCommon;
import eo.web.webview.commonOneStop.JCNWebCommon;
import eo.web.webview.commonOneStop.JCNWebConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CNSV0002_CNSV0002OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public CNSV0002_CNSV0002OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：コンテンツ契約一覧照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	// ANK-4346-00-00 MOD START
	//public HashMap setCNSV000201SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
	public HashMap setCNSV000201CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
	// ANK-4346-00-00 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);

		// ＳＹＳＩＤ → コンテンツ契約一覧照会マップ.SYSID
		parentMap.put("sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// ANK-4346-00-00 MOD START
		//// コンテンツサービスコード選択値 → コンテンツ契約一覧照会マップ.コンテンツサービスコード
		//parentMap.put("cont_svc_cd", bean[0].sendMessageString("コンテンツサービスコード選択値", X31CWebConst.DATABEAN_GET_VALUE));
		//// コンテンツ契約ステータス（契約中）値 → コンテンツ契約一覧照会マップ.コンテンツ契約状態契約中
		//parentMap.put("cont_kei_in", bean[0].sendMessageString("コンテンツ契約ステータス（契約中）値", X31CWebConst.DATABEAN_GET_VALUE));
		//// コンテンツ契約ステータス（契約終了）値 → コンテンツ契約一覧照会マップ.コンテンツ契約状態契約終了
		//parentMap.put("cont_kei_end", bean[0].sendMessageString("コンテンツ契約ステータス（契約終了）値", X31CWebConst.DATABEAN_GET_VALUE));
		//// コンテンツ契約ステータス（解約済）値 → コンテンツ契約一覧照会マップ.コンテンツ契約状態解約済
		//parentMap.put("cont_kei_out", bean[0].sendMessageString("コンテンツ契約ステータス（解約済）値", X31CWebConst.DATABEAN_GET_VALUE));
		// 契約状態コード選択値 → コンテンツ契約一覧情報取得（CCMG）CCマップ.コンテンツ契約状態コード
		String contKeiStatCd = bean[0].sendMessageString("契約状態コード選択値", X31CWebConst.DATABEAN_GET_VALUE);
		
		// ANK-4346-00-00 DEL START
//		if("0".equals(contKeiStatCd))
//		{
//			// 契約中(強制解約予告含む)の場合
//			contKeiStatCd = "0";
//		}
//		else if("1".equals(contKeiStatCd))
//		{
//			// 契約終了の場合
//			contKeiStatCd = "1";
//		}
//		else if("2".equals(contKeiStatCd))
//		{
//			// 全解約対象（契約中+強制解約予告期限切れ）の場合
//			contKeiStatCd = "2";
//		}
//		else if("3".equals(contKeiStatCd))
//		{
//			// 強制解約予告（強制解約予告期限切れ含む）の場合
//			contKeiStatCd = "3";
//		}
//		else if("4".equals(contKeiStatCd))
//		{
//			// 強制解約済みの場合
//			contKeiStatCd = "4";
//		}
//		else if("5".equals(contKeiStatCd))
//		{
//			// 解約済みの場合
//			contKeiStatCd = "0";
//		}
		// ANK-4346-00-00 DEL END
		
		parentMap.put("cont_kei_stat_cd", contKeiStatCd );
		// 部品呼び出し → コンテンツ契約一覧情報取得（CCMG）CCマップ.ソート順  6:コンテンツサービスID、5:コンテンツID
		parentMap.put("sort", "6,5");
		// 部品呼び出し → コンテンツ契約一覧情報取得（CCMG）CCマップ.昇順/降順 0:昇順，0:昇順
		parentMap.put("sort_order", "0,0");
		// 部品呼び出し → コンテンツ契約一覧情報取得（CCMG）CCマップ.コンテンツ契約情報要否 1:要
		parentMap.put("return_contract", "1");
		// 部品呼び出し → コンテンツ契約一覧情報取得（CCMG）CCマップ.直近課金情報要否 0:不要
		parentMap.put("return_charge", "0");
		// 部品呼び出し → コンテンツ契約一覧情報取得（CCMG）CCマップ.契約付加情報要否 1:要
		parentMap.put("return_contract_adds", "1");
		// ANK-4346-00-00 MOD END
		// ANK-2401-00-00 ADD START
		// コンテンツ契約開始年月日（FROM） → コンテンツ契約一覧照会マップ.コンテンツ契約開始年月日（FROM）
		parentMap.put("cont_kei_sta_dtm_from", bean[0].sendMessageString("コンテンツ契約開始年月日（FROM）", X31CWebConst.DATABEAN_GET_VALUE));
		// コンテンツ契約開始年月日（TO） → コンテンツ契約一覧照会マップ.コンテンツ契約開始年月日（TO）
		parentMap.put("cont_kei_sta_dtm_to", bean[0].sendMessageString("コンテンツ契約開始年月日（TO）", X31CWebConst.DATABEAN_GET_VALUE));
		// コンテンツ契約終了年月日（FROM） → コンテンツ契約一覧照会マップ.コンテンツ契約終了年月日（FROM）
		parentMap.put("cont_kei_end_dtm_from", bean[0].sendMessageString("コンテンツ契約終了年月日（FROM）", X31CWebConst.DATABEAN_GET_VALUE));
		// コンテンツ契約終了年月日（TO） → コンテンツ契約一覧照会マップ.コンテンツ契約終了年月日（TO）
		parentMap.put("cont_kei_end_dtm_to", bean[0].sendMessageString("コンテンツ契約終了年月日（TO）", X31CWebConst.DATABEAN_GET_VALUE));
		// ANK-2401-00-00 ADD END

		// ANK-4346-00-00 MOD START
		//outputMap.put("CNSV000201SC", parentMap);
		outputMap.put("CNSV000201CC", parentMap);
		// ANK-4346-00-00 MOD END
						
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：コンテンツ契約一覧照会(050IP電話アプリ)
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCNSV000202SC(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);

		// ＳＹＳＩＤ → コンテンツ契約一覧照会マップ.SYSID
		parentMap.put("key_sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CNSV000202SC", parentMap);
						
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：コンテンツ契約一覧照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	// ANK-4346-00-00 MOD START
	//public X31SDataBeanAccess[] getCNSV000201SC(X31SDataBeanAccess[] bean, HashMap outputMap ,boolean authFlg, long lopeDatetime){
	public X31SDataBeanAccess[] getCNSV000201CC(X31SDataBeanAccess[] bean, HashMap outputMap ,boolean authFlg, long lopeDatetime){
	// ANK-4346-00-00 MOD END

		// ANK-4346-00-00 MOD START
		//HashMap parentMap = null;
		//if(outputMap.containsKey("CNSV000201SC")){
		//	parentMap = (HashMap)outputMap.get("CNSV000201SC");
		//}
		HashMap parentMap = null;
		if(outputMap.containsKey("CNSV000201CC")){
			parentMap = (HashMap)outputMap.get("CNSV000201CC");
		}
		// ANK-4346-00-00 MOD END

		/* ++++++++++ v1.00.00 追加開始 ++++++++++ */
		ArrayList childList = null;
		ArrayList svcList = null;
		

		// ANK-2139-00-00 ADD START
		// スマートリンクコンテンツ全解約ボタンの表示制御(初期値は"0":表示しない)
		bean[0].sendMessageString(CNW00101SFConst.SMLN_CN_ALL_DSL, X31CWebConst.DATABEAN_SET_VALUE, "0");
		
		// 判定用設定値格納用変数
		String strContSvcCd = "";
		String strContKeiStatCd = "";
		long lContKeiEndDtm = 0;
		
		// ANK-2139-00-00 ADD END
		
		// ANK-4346-00-00 MOD START
		//X31SDataBeanAccessArray listCNSV000201SC_cont_svc_kobet_list_cont_kei_list = bean[0].getDataBeanArray("コンテンツサービス個別");
		//childList = null;
		//if(listCNSV000201SC_cont_svc_kobet_list_cont_kei_list != null && parentMap != null && parentMap.containsKey("cont_kei_list")){
		X31SDataBeanAccessArray listCNSV000201CC_cont_svc_kobet_list_cont_kei_list = bean[0].getDataBeanArray("コンテンツサービス個別");
		childList = null;
		if(listCNSV000201CC_cont_svc_kobet_list_cont_kei_list != null && parentMap != null && parentMap.containsKey("cont_kei_list")){
		// ANK-4346-00-00 MOD END
			childList = (ArrayList)parentMap.get("cont_kei_list");
			svcList = (ArrayList)parentMap.get("cont_svc_detail_list");

			for(int i = 0, j = 0; i < childList.size(); ){
				// 明細カウント初期化
				X31SDataBeanAccess subbean = null;
				// ANK-4346-00-00 MOD START
				//if(listCNSV000201SC_cont_svc_kobet_list_cont_kei_list.getCount() -1 >= i){
				//	subbean = listCNSV000201SC_cont_svc_kobet_list_cont_kei_list.getDataBean(i);
				//}else{
				//	subbean = listCNSV000201SC_cont_svc_kobet_list_cont_kei_list.addDataBean();
				//}
				if(listCNSV000201CC_cont_svc_kobet_list_cont_kei_list.getCount() -1 >= i){
					subbean = listCNSV000201CC_cont_svc_kobet_list_cont_kei_list.getDataBean(i);
				}else{
					subbean = listCNSV000201CC_cont_svc_kobet_list_cont_kei_list.addDataBean();
				}
				// ANK-4346-00-00 MOD END
				HashMap childMap = (HashMap)childList.get(i);
				HashMap svcMap = (HashMap)svcList.get(i);
				if (subbean == null) {
					continue;
				}

				// コンテンツサービス個別処理
				// コンテンツサービス個別.コンテンツサービス名 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.コンテンツサービス名
				if (childMap != null) {
					subbean.sendMessageString("コンテンツサービス名", X31CWebConst.DATABEAN_SET_VALUE, (String)svcMap.get("cont_svc_nm"));
				} else {
					subbean.sendMessageString("コンテンツサービス名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// コンテンツサービス個別.コンテンツサービスコード ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.コンテンツサービスコード
				if (childMap != null) {
					subbean.sendMessageString("コンテンツサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cont_svc_cd"));
				} else {
					subbean.sendMessageString("コンテンツサービスコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// 比較用にコンテンツサービス名取得
				String saveStr = (String)svcMap.get("cont_svc_nm");
				X31SDataBeanAccessArray detailArray = subbean.getDataBeanArray("コンテンツ契約個別");
				for (j = i; j <  childList.size(); j++, i++) {
					HashMap detailMap = (HashMap)childList.get(j);
					HashMap diffSvcMap = (HashMap)svcList.get(j);
					// コンテンツサービス名が異なれば、次のコンテンツサービス単位へ
					if (!saveStr.equals((String)diffSvcMap.get("cont_svc_nm"))) {
						break;
					}
					
					// コンテンツ契約個別処理
					X31SDataBeanAccess detail = detailArray.addDataBean();
					// コンテンツサービス個別.コンテンツ契約個別.コンテンツ契約番号 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.コンテンツ契約番号
					if (detailMap != null) {
						detail.sendMessageString("コンテンツ契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("cont_kei_no"));
					} else {
						detail.sendMessageString("コンテンツ契約番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// コンテンツサービス個別.コンテンツ契約個別.コンテンツコード ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.コンテンツコード
					if (detailMap != null) {
						detail.sendMessageString("コンテンツコード", X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("cont_cd"));
					} else {
						detail.sendMessageString("コンテンツコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// コンテンツサービス個別.コンテンツ契約個別.コンテンツ名 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.コンテンツ名
					if (detailMap != null) {
						// ANK-2663-00-00 MOD START
						//detail.sendMessageString("コンテンツ名", X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("cont_nm"));
						// コンテンツ名用編集
						String wkContNm = "";
						// コンテンツサービスコードが0070（LaLaCall）かつ仕入先が設定されている場合
						if (JCNStrConst.CN0011_CONT_SVC_CD_050.equals((String)detailMap.get("cont_svc_cd")) && (String)detailMap.get("supplier") != null 
								&& !"".equals((String)detailMap.get("supplier"))){
							wkContNm = (String)detailMap.get("cont_nm") + "【" + (String)detailMap.get("supplier") + "】";
						} else {
							wkContNm = (String)detailMap.get("cont_nm") ;
						}
						detail.sendMessageString("コンテンツ名", X31CWebConst.DATABEAN_SET_VALUE, wkContNm);
						// ANK-2663-00-00 MOD END
					} else {
						detail.sendMessageString("コンテンツ名", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// コンテンツサービス個別.コンテンツ契約個別.コンテンツサービス種別コード ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.コンテンツ種別コード
					if (detailMap != null) {
						detail.sendMessageString("コンテンツサービス種別コード", X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("cont_sbt_cd"));
					} else {
						detail.sendMessageString("コンテンツサービス種別コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// コンテンツサービス個別.コンテンツ契約個別.コンテンツ契約ステータス ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.コンテンツ契約状態コード
					if (detailMap != null) {
						detail.sendMessageString("コンテンツ契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("cont_kei_stat_cd"));
					} else {
						detail.sendMessageString("コンテンツ契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// コンテンツサービス個別.コンテンツ契約個別.コンテンツ契約ステータス和名 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.コンテンツ契約スタータス名
					if (detailMap != null) {
						detail.sendMessageString("コンテンツ契約ステータス和名", X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("cont_kei_stat_nm"));
					} else {
						detail.sendMessageString("コンテンツ契約ステータス和名", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// コンテンツサービス個別.コンテンツ契約個別.コンテンツ契約開始日 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.コンテンツ契約開始年月日時分秒
					if (detailMap != null) {
						String dateWork = (String)detailMap.get("cont_kei_sta_dtm");
						detail.sendMessageString("コンテンツ契約開始日", X31CWebConst.DATABEAN_SET_VALUE, dateWork.substring(0, 8));
					} else {
						detail.sendMessageString("コンテンツ契約開始日", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// コンテンツサービス個別.コンテンツ契約個別.コンテンツ契約終了日 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.コンテンツ契約終了年月日時分秒
					if (detailMap != null) {
						String dateWork = (String)detailMap.get("cont_kei_end_dtm");
						if (dateWork != null && dateWork.length() != 0)
						{
							if (dateWork.substring(0, 8).equals(JCNWebConst.DEFAULT_END_DTM))
							{
								dateWork = "";
							}
							else
							{
								dateWork = dateWork.substring(0, 8);
							}
							detail.sendMessageString("コンテンツ契約終了日", X31CWebConst.DATABEAN_SET_VALUE, dateWork);
						}
						else
						{
							detail.sendMessageString("コンテンツ契約終了日", X31CWebConst.DATABEAN_SET_VALUE, new String());
						}
					} else {
						detail.sendMessageString("コンテンツ契約終了日", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// コンテンツサービス個別.コンテンツ契約個別.コンテンツ支払い方法コード ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.コンテンツ支払方法コード
					if (detailMap != null) {
						detail.sendMessageString("コンテンツ支払い方法コード", X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("cont_payway_cd"));
					} else {
						detail.sendMessageString("コンテンツ支払い方法コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// コンテンツサービス個別.コンテンツ契約個別.クレジットカードＩＤ ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.クレジットカードID
					if (detailMap != null) {
						detail.sendMessageString("クレジットカードＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("crecard_id"));
					} else {
						detail.sendMessageString("クレジットカードＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// コンテンツサービス個別.コンテンツ契約個別.ＩＳＰ決済サービス契約番号 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.ISP決済サービス契約番号
					if (detailMap != null) {
						detail.sendMessageString("ＩＳＰ決済サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("isp_kssai_svc_kei_cd"));
					} else {
						detail.sendMessageString("ＩＳＰ決済サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// コンテンツサービス個別.コンテンツ契約個別.更新年月日時分秒 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会リスト.更新年月日時分秒
					if (detailMap != null) {
						detail.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("upd_dtm"));
					} else {
						detail.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// コンテンツサービス個別.コンテンツ契約個別.コンテンツＩＤ
					if (detailMap != null) {
						detail.sendMessageString("コンテンツＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("cont_cd"));
					} else {
						detail.sendMessageString("コンテンツＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}

					// 支払い方法表示用編集
					String payway = "";
					if (detailMap.get("cont_payway_cd").equals(JCNWebConst.PAYWAY_CD_CRECA))
					{
						// クレジットカード決済
//						v20.00.00 Mod Start
//						payway = "クレジットカード　" + (String)detailMap.get("crecard_comp_nm") + "　" + JCNWebCommon.crecardNoEdit((String)detailMap.get("crecard_no"));
						// ANK-4346-00-00 MOD START
						// payway = JCNWebCommon.editCreditCard((String)detailMap.get("crecard_comp_nm"),
						payway = JCNWebCommon.editCreditCard((String)detailMap.get("crecard_comp_ali"),
						// ANK-4346-00-00 MOD END
								(String)detailMap.get("crecard_no"),
								(String)detailMap.get("crecard_yk_kigen"),
								(String)detailMap.get("crecard_no_azkri_id"));
//						v20.00.00 Mod End
						if(!authFlg)
						{
							payway = JCNStrConst.MASK_CARD_NO;;
						}
					}
					else if (detailMap.get("cont_payway_cd").equals(JCNWebConst.PAYWAY_CD_ISP))
					{
						// ISP決済
						payway = "プロバイダ料金に合算【お客さまID：" + (String)detailMap.get("isp_kssai_svc_kei_no") + "】";
					}
					else
					{
						payway = "";
					}
					if (childMap != null) {
						detail.sendMessageString("支払い方法表示", X31CWebConst.DATABEAN_SET_VALUE, payway);
					} else {
						detail.sendMessageString("支払い方法表示", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					if (j % 2 == 1) {
						detail.sendMessageString("ＣＳＳクラス名", X31CWebConst.DATABEAN_SET_VALUE, "odd");
					} else {
						detail.sendMessageString("ＣＳＳクラス名", X31CWebConst.DATABEAN_SET_VALUE, "even");
					}
					// 行番号
					detail.sendMessageString("行番号", X31CWebConst.DATABEAN_SET_VALUE, Integer.toString(j));
					
					// コンテンツサービス個別.コンテンツ契約個別.０５０電話番号
					if (detailMap != null) {
						detail.sendMessageString("０５０電話番号", X31CWebConst.DATABEAN_SET_VALUE, JCNWebCommon.formatTelNo((String)detailMap.get("n_050_telno")));
					} else {
						detail.sendMessageString("０５０電話番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					
					// ANK-2139-00-00 ADD START
					// コンテンツサービスコード、コンテンツ契約種別コード、コンテンツ契約終了年月日を取得し、ボタン表示判定を実施
					if (detailMap != null) {
						strContSvcCd = (String)childMap.get("cont_svc_cd");
						strContKeiStatCd = (String)detailMap.get("cont_kei_stat_cd");
						
						if (detailMap.containsKey("cont_kei_end_dtm"))
						{
							if (null != detailMap.get("cont_kei_end_dtm") && !"".equals(detailMap.get("cont_kei_end_dtm")))
							{
								lContKeiEndDtm = Long.valueOf(((String)detailMap.get("cont_kei_end_dtm")));
							}
						}
					}
					
					// コンテンツサービスがスマリンプレミアムパックか判定、契約ステータスが0:契約中か判定
					if(JCNStrConst.SMLN_CONT_SVC_CD.equals(strContSvcCd) && "0".equals(strContKeiStatCd))
					{
						lContKeiEndDtm = Long.valueOf(((String)detailMap.get("cont_kei_end_dtm")));
						
						// スマリンプレミアムパックかつ契約中かつ、終了年月日が未来日の場合はボタンを表示する
						if(lContKeiEndDtm >= lopeDatetime)
						{
							// スマートリンクコンテンツ全解約ボタンの表示制御("1":表示しない)
							bean[0].sendMessageString(CNW00101SFConst.SMLN_CN_ALL_DSL, X31CWebConst.DATABEAN_SET_VALUE, "1");
							
							// ANK-2139-02-00 ADD START
							bean[0].sendMessageString("スマートリンクコンテンツ契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("cont_kei_no"));

							String strUpddtm = "";
							if (detailMap.containsKey("upd_dtm"))
							{
								strUpddtm = ((String)detailMap.get("upd_dtm")).substring(0, 14);
							}
							bean[0].sendMessageString("スマートリンク更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, strUpddtm);
							// ANK-2139-02-00 ADD END
						}
					}
					
					// ANK-2139-00-00 ADD END
				}
			}
		}
		/* ++++++++++ v1.00.00 追加終了 ++++++++++ */

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：コンテンツ契約一覧照会(050IP電話アプリサービス用)
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCNSV000202SC(X31SDataBeanAccess[] bean, HashMap outputMap, String opeDate) {

		HashMap parentMap = null;
		if(outputMap.containsKey("CNSV000202SC")){
			parentMap = (HashMap)outputMap.get("CNSV000202SC");
		}

		// コンテンツ050電話番号契約内訳一覧照会の実行結果を取得
		ArrayList utiwakeList = new ArrayList();
		utiwakeList = (ArrayList)parentMap.get("ECN0331B001CBSMsg1List");
		
		String n050ContKeiNo = "";
		String endDtm050 = "";
		
		HashMap utiwakeMap = new HashMap();
		if(utiwakeList.size() != 0)
		{
			utiwakeMap = (HashMap) utiwakeList.get(0);
			n050ContKeiNo = (String) utiwakeMap.get("cont_kei_no");
			
			bean[0].sendMessageString(CNW00101SFConst.N_050_CONT_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, n050ContKeiNo);
		
		
			if("".equals(n050ContKeiNo))
			{
				// コンテンツ050電話番号内訳.コンテンツ契約番号が取得できない場合はボタン非表示("3")を設定
				bean[0].sendMessageString(CNW00101SFConst.MEISAI_BTN_DISP_CTL, X31CWebConst.DATABEAN_SET_VALUE, "3");
			}
			else
			{
				endDtm050 = (String) utiwakeMap.get("svc_end_dtm");
				// サービス終了年月日がNULLの場合は20991231を設定
				if("".equals(endDtm050))
				{
					endDtm050 = "20991231";
				}

				// プロパティから050IP電話通話明細保管月数を取得
				String saveMM = JCNWebCommon.getApplicationConst("CN_050_MEISAI_SAVE_MM");
				// オンライン運用日の年月を取得
				String opeDateMM = opeDate.substring(0, 6);
				
				try {
					saveMM = JCNWebCommon.addMonth(endDtm050.substring(0, 8), Integer.parseInt(saveMM));
				} catch (Exception e) {
					e.printStackTrace();
				}
				saveMM = saveMM.substring(0, 6);
				
				if(Integer.parseInt(saveMM) >= Integer.parseInt(opeDateMM))
				{
					bean[0].sendMessageString(CNW00101SFConst.MEISAI_BTN_DISP_CTL, X31CWebConst.DATABEAN_SET_VALUE, "1");
				}
				else
				{
					bean[0].sendMessageString(CNW00101SFConst.MEISAI_BTN_DISP_CTL, X31CWebConst.DATABEAN_SET_VALUE, "2");
				}
			}

		}
		else
		{
			// コンテンツ050電話番号内訳.コンテンツ契約番号が取得できない場合はボタン非表示("3")を設定
			bean[0].sendMessageString(CNW00101SFConst.MEISAI_BTN_DISP_CTL, X31CWebConst.DATABEAN_SET_VALUE, "3");
		}
		
		return bean;
	}

}