/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW12101SFLogic
*   ソースファイル名：KKW12101SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年03月08日
*＜機能概要＞
*   有料視聴者一覧画面のビューロジック
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2012/03/08   FJ          新規作成
*   v4.00.00    2013/01/27   FJ)強矢     【ST4-2013-0000094】性能障害対応
*   v4.00.01    2013/03/05   FJ)強矢     【IT1-2013-0000373】対応
*
**********************************************************************/

package eo.web.webview.KKW12101SF;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
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.JPCDateUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0498_KKSV0498OPDBMapper;
import eo.web.webview.mapping.KKSV0499_KKSV0499OPDBMapper;
import eo.web.webview.mapping.KKSV0500_KKSV0500OPDBMapper;
import eo.web.webview.mapping.KKSV0501_KKSV0501OPDBMapper;


/**
 * 有料視聴者一覧画面のビューロジックです
 * <BR>
 * @author 富士通
 */
public class KKW12101SFLogic extends JCCWebBusinessLogic
{
	
	/** テレビオプション視聴実績件数リストの件数 */
	private static final int TV_OP_WATCH_JSK_CNT_LIST_CNT = 3;
	
	/**
	 * 初期表示処理を行います。
	 * <br>
	 * @return boolean 処理結果
	 * @exception Exception 例外が発生した場合
	 */
	public boolean init() throws Exception
	{
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// マッピングクラスに渡すために配列にする
		X31SDataBeanAccess[] paramBean = {bean};
		
		// サービスの処理を行う。
		serviceCall(paramBean);
		
		// 初期値設定
		bean.sendMessageString(KKW12101SFConst.SELECT_ROW, X31CWebConst.DATABEAN_SET_VALUE, "3");
		
		// ファイル作成制御フラグを非活性に設定
		bean.sendMessageString(KKW12101SFConst.CREATE_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW12101);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW12101);
		
		return true;
	}
	
	/**
	 * オプションコードの検索を行います。
	 * <br>
	 * @return boolean オプションコード一意検索結果
	 * @throws Exception エラーが発生した場合
	 */
	public boolean search() throws Exception
	{
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 前回の検索結果を削除
		bean.sendMessageString(KKW12101SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.OP_SVC_NAME, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// ■ サービス呼び出し準備
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		X31SDataBeanAccess[] paramBean = {bean};
		
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0499");
		
		// ■上りマッピング
		KKSV0499_KKSV0499OPDBMapper mapper = new KKSV0499_KKSV0499OPDBMapper();
		
		mapper.setKKSV049901SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		
		// ■サービス呼出
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(null != msgResult)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// ■サービス結果の転記
		mapper.getKKSV049901SC(paramBean, outputMap);
		
		String op_svc_cd = bean.sendMessageString(KKW12101SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String op_channel_sbt_cd = bean.sendMessageString(KKW12101SFConst.OP_CHANNEL_SBT_CD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// サービス結果より一意照会で値が取得できていない場合、または、
		// オプションチャンネル種別コードが"01:通常チャンネル"または"02:アダルトチャンネル"以外の場合
		if(null == op_svc_cd || "".equals(op_svc_cd)
				|| !("01".equals(op_channel_sbt_cd) || "02".equals(op_channel_sbt_cd)))
		{
			// エラーメッセージを格納する。
			JCCWebCommon.setMessageInfo(this, "EKB0300-KW", new String[]{"オプションサービス", "コード"});
			
			// 画面遷移
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW12101);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW12101);
			return true;
		}
		
		// オプションコードと名称を表示する配列の編集を行う。
		setOpSvcCdArray();
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW12101);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW12101);
		
		return true;
	}
	
	
	/**
	 * 取得したオプションコードの解除を行います。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean release() throws Exception
	{
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		ArrayList<String> codeList = new ArrayList<String>();
		ArrayList<String> nameList = new ArrayList<String>();
		
		X31SDataBeanAccessArray opSvcList = bean.getDataBeanArray(KKW12101SFConst.OP_SVC_LIST);
		
		for (int i = 0; i < opSvcList.getCount(); i++)
		{
			X31SDataBeanAccess subbean = opSvcList.getDataBean(i);
			
			boolean rls = subbean.sendMessageBoolean(KKW12101SFConst.RLS_02, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 解除チェックボックスが選択されていない場合
			if (rls == false)
			{
				codeList.add(subbean.sendMessageString(KKW12101SFConst.CODE_02, X31CWebConst.DATABEAN_GET_VALUE));
				nameList.add(subbean.sendMessageString(KKW12101SFConst.OP_SVC_NM_02, X31CWebConst.DATABEAN_GET_VALUE));
			}
			
			// 解除チェックボックスを未選択にし、コードとオプションサービス名を消去する
			subbean.sendMessageBoolean(KKW12101SFConst.RLS_02, X31CWebConst.DATABEAN_SET_VALUE, false);
			subbean.sendMessageString(KKW12101SFConst.CODE_02, X31CWebConst.DATABEAN_SET_VALUE, "");
			subbean.sendMessageString(KKW12101SFConst.OP_SVC_NM_02, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		
		for (int i = 0; i < codeList.size(); i++)
		{
			X31SDataBeanAccess subbean = opSvcList.getDataBean(i);
			
			subbean.sendMessageString(KKW12101SFConst.CODE_02, X31CWebConst.DATABEAN_SET_VALUE, codeList.get(i));
			subbean.sendMessageString(KKW12101SFConst.OP_SVC_NM_02, X31CWebConst.DATABEAN_SET_VALUE, nameList.get(i));
		}
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW12101);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW12101);
		
		return true;
	}
	
	/**
	 * 抽出ボタン押下処理を行います
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean chushutsu() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 運用日の取得
		String stdard_ymd = JCCWebCommon.getOpeDate(this, null);
		bean.sendMessageString(KKW12101SFConst.STDARDYMD, X31CWebConst.DATABEAN_GET_VALUE, stdard_ymd);

		// 入力した年月を一つの項目として設定
		String yyyy = bean.sendMessageString(KKW12101SFConst.CHSHT_Y, X31CWebConst.DATABEAN_GET_VALUE);
		String mm = bean.sendMessageString(KKW12101SFConst.CHSHT_M, X31CWebConst.DATABEAN_GET_VALUE);
		
		String yyyymm = yyyy + mm;
		
		// 共通部品を使用する為、ymdの形式に変更
		String yyyymmdd = yyyymm + "01";
		
		// 運用月−抽出年月の差分月数を求める
		int subtractMonth = JPCDateUtil.subtractMonth(stdard_ymd, yyyymmdd);
		
		// 集計実行月(最新集計年月)の取得
		int execSubtractMonth = 0;
		X31SDataBeanAccess execBean = bean.getDataBeanArray(KKW12101SFConst.TV_OP_WATCH_JSK_CNT_LIST).getDataBean(0);
		String exec_ym = execBean.sendMessageString(KKW12101SFConst.SHUK_YM_01, X31CWebConst.DATABEAN_GET_VALUE);
		if (exec_ym != null && !"".equals(exec_ym))
		{
			// 集計実行月(最新集計年月)−抽出年月の差分月数を求める
			String exec_ymd = exec_ym + "01";
			execSubtractMonth = JPCDateUtil.subtractMonth(exec_ymd, yyyymmdd);
		}
		
		// ■ 入力した抽出年月が集計実行月(最新集計年月)より3ヶ月以前の場合、または、
		//    入力した抽出年月が運用月より未来月の場合(運用月をイレギュラーで集計することはないため、運用月もエラーとする)
		if(2 < execSubtractMonth || subtractMonth <= 0)
		{
			// エラーメッセージを表示する。
			// EKB5150-KW：該当の年月は集計対象外です。
			JCCWebCommon.setMessageInfo(this, "EKB5150-KW", "chsht_y");
			JCCWebCommon.setMessageInfo(this, "EKB5150-KW", "chsht_m");
			
			// 画面遷移
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW12101);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW12101);
			return true;
		}
		
		boolean shuk_flg = false;
		// テレビオプション視聴実績件数リスト
		X31SDataBeanAccessArray tvOpWatchJskCntList = bean.getDataBeanArray(KKW12101SFConst.TV_OP_WATCH_JSK_CNT_LIST);
		for (int i = 0; i < tvOpWatchJskCntList.getCount(); i++)
		{
			X31SDataBeanAccess subbean = tvOpWatchJskCntList.getDataBean(i);
			
			String shuk_ym = subbean.sendMessageString(KKW12101SFConst.SHUK_YM_01, X31CWebConst.DATABEAN_GET_VALUE);
			if (yyyymm.equals(shuk_ym))
			{
				shuk_flg = true;
				break;
			}
		}
		// ■ 入力された抽出年月が、スキーマ.テレビオプション視聴実績に存在しない場合ワーニング
		if (!shuk_flg)
		{
			// エラーメッセージを表示する。
			// EKB5140-KW：該当の年月は集計されていません。集計処理を行ってください。
			JCCWebCommon.setMessageInfo(this, "EKB5140-KW", "chsht_y");
			JCCWebCommon.setMessageInfo(this, "EKB5140-KW", "chsht_m");
			
			// 画面遷移
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW12101);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW12101);
			return true;
		}
		
		bean.sendMessageString(KKW12101SFConst.CTRL_CHSHT_YM, X31CWebConst.DATABEAN_SET_VALUE, yyyymm);
		
		// ■ サービス呼び出し準備
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		X31SDataBeanAccess[] paramBean = {bean};
		
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0500");
		
		// ■上りマッピング
		KKSV0500_KKSV0500OPDBMapper mapper = new KKSV0500_KKSV0500OPDBMapper();
		
		mapper.setKKSV050001CC(paramBean, inputMap);
		
		// ■サービス呼出
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// ■サービス結果の転記
		mapper.getKKSV050001CC(paramBean, outputMap);
		
		// ■ 抽出時のオプションサービス一覧情報を保持する
		X31SDataBeanAccessArray opSvcList = bean.getDataBeanArray(KKW12101SFConst.OP_SVC_LIST);
		X31SDataBeanAccessArray ctrlOpSvcList = bean.getDataBeanArray(KKW12101SFConst.CTRL_OP_SVC_LIST);
		for (int i = 0; i < opSvcList.getCount(); i++)
		{
			X31SDataBeanAccess subbean = opSvcList.getDataBean(i);
			X31SDataBeanAccess ctrlbean = ctrlOpSvcList.getDataBean(i);
			
			boolean rls = subbean.sendMessageBoolean(KKW12101SFConst.RLS_02, X31CWebConst.DATABEAN_GET_VALUE);
			String code = subbean.sendMessageString(KKW12101SFConst.CODE_02, X31CWebConst.DATABEAN_GET_VALUE);
			String name = subbean.sendMessageString(KKW12101SFConst.OP_SVC_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
			
			ctrlbean.sendMessageBoolean(KKW12101SFConst.RLS_02, X31CWebConst.DATABEAN_SET_VALUE, rls);
			ctrlbean.sendMessageString(KKW12101SFConst.CODE_02, X31CWebConst.DATABEAN_SET_VALUE, code);
			ctrlbean.sendMessageString(KKW12101SFConst.OP_SVC_NM_02, X31CWebConst.DATABEAN_SET_VALUE, name);
		}
		
		// 初期値設定
		bean.sendMessageString(KKW12101SFConst.SELECT_ROW, X31CWebConst.DATABEAN_SET_VALUE, "3");
		
		// ファイル作成制御フラグを活性に設定
		bean.sendMessageString(KKW12101SFConst.CREATE_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW12101);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW12101);

		return true;
	}
	
	/**
	 * ファイル作成処理
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean create() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// ■ サービス呼び出し準備
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		X31SDataBeanAccess[] paramBean = {bean};
		
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0501");
		
		// ■上りマッピング
		KKSV0501_KKSV0501OPDBMapper mapper = new KKSV0501_KKSV0501OPDBMapper();
		
		mapper.setKKSV050101CC(paramBean, inputMap);
		
		// ■サービス呼出
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		if(null != msgResult)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// インフォメーションメッセージを表示する。
		// EKB4390--I：ファイル作成処理が完了しました。
		JCCWebCommon.setMessageInfo(this, "EKB4390--I", new String[]{"ファイル作成処理"});
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW12101);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW12101);
		
		return true;
	}
	
	/**
	 * 画面をクリアします。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean clear() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		//サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 入力項目のクリア
		// オプションコード
		bean.sendMessageString(KKW12101SFConst.OP_CD, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.OP_SVC_NAME, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// 抽出年月
		bean.sendMessageString(KKW12101SFConst.CHSHT_Y, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.CHSHT_M, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.CTRL_CHSHT_YM, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// オプションコードリストのクリア
		X31SDataBeanAccessArray opSvcList = bean.getDataBeanArray(KKW12101SFConst.OP_SVC_LIST);
		for (int i = 0; i < opSvcList.getCount(); i++)
		{
			X31SDataBeanAccess subbean = opSvcList.getDataBean(i);
			
			subbean.sendMessageBoolean(KKW12101SFConst.RLS_02, X31CWebConst.DATABEAN_SET_VALUE, false);
			subbean.sendMessageString(KKW12101SFConst.CODE_02, X31CWebConst.DATABEAN_SET_VALUE, "");
			subbean.sendMessageString(KKW12101SFConst.OP_SVC_NM_02, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		
		// オプションコードリスト(制御)のクリア
		X31SDataBeanAccessArray ctrlOpSvcList = bean.getDataBeanArray(KKW12101SFConst.CTRL_OP_SVC_LIST);
		for (int i = 0; i < ctrlOpSvcList.getCount(); i++)
		{
			X31SDataBeanAccess subbean = ctrlOpSvcList.getDataBean(i);
			
			subbean.sendMessageBoolean(KKW12101SFConst.RLS_02, X31CWebConst.DATABEAN_SET_VALUE, false);
			subbean.sendMessageString(KKW12101SFConst.CODE_02, X31CWebConst.DATABEAN_SET_VALUE, "");
			subbean.sendMessageString(KKW12101SFConst.OP_SVC_NM_02, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		
		// 表示情報のクリア
		bean.getDataBeanArray(KKW12101SFConst.TV_OP_WATCH_JSK_CNT_LIST).clearArray();
		
		// 抽出情報のクリア
		bean.getDataBeanArray(KKW12101SFConst.TV_OP_LIST_GK_KEI).clearArray();
		bean.getDataBeanArray(KKW12101SFConst.TV_OP_LIST_GK_STB).clearArray();
		bean.getDataBeanArray(KKW12101SFConst.TV_OP_GK_BACK_MONTH_RT_ZOU).clearArray();
		bean.getDataBeanArray(KKW12101SFConst.TV_OP_GK_BACK_MONTH_RT_GEN).clearArray();
		
		// 抽出情報の件数をクリア
		bean.sendMessageString(KKW12101SFConst.TV_OP_LIST_YRYO_KEI_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_LIST_MURYO_KEI_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_LIST_STP_KEI_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_LIST_GK_STB_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_LIST_YRYO_STB_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_LIST_MURYO_STB_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_LIST_STP_STB_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_GK_BACK_MONTH_RT_ZOU_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_YRYO_BACK_MONTH_RT_ZOU_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_MRYO_BACK_MONTH_RT_ZOU_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_STP_BACK_MONTH_RT_ZOU_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_GK_BACK_MONTH_RT_GEN_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_YRYO_BACK_MONTH_RT_GEN_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_MRYO_BACK_MONTH_RT_GEN_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12101SFConst.TV_OP_STP_BACK_MONTH_RT_GEN_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// サービスの呼び出しを行う
		serviceCall(paramBean);
		
		// 初期値設定
		bean.sendMessageString(KKW12101SFConst.SELECT_ROW, X31CWebConst.DATABEAN_SET_VALUE, "3");
		
		// ファイル作成制御フラグを非活性に設定
		bean.sendMessageString(KKW12101SFConst.CREATE_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW12101);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW12101);
		
		return true;
	}
	
	/**
	 * 初期表示処理に呼び出すサービス処理を行います。
	 * <br>
	 * @param paramBean
	 * @return サービスの処理結果
	 */
	private boolean serviceCall(X31SDataBeanAccess[] paramBean)
	{
		// 運用日付の設定
		paramBean[0].sendMessageString(KKW12101SFConst.STDARDYMD, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, null));
		
		// ■ サービス呼び出し準備
		HashMap< String, String > paramMap = new HashMap< String, String >();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0498");
		
		HashMap< String, Object > inputMap = new HashMap< String, Object >();
		HashMap< String, Object > outputMap = new HashMap< String, Object >();
		
		// ■上りマッピング
		KKSV0498_KKSV0498OPDBMapper mapper = new KKSV0498_KKSV0498OPDBMapper();
		mapper.setKKSV049801SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		
		// ■サービス呼出
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(null != msgResult)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// ■サービス結果の転記
		mapper.getKKSV049801SC(paramBean, outputMap);
		
		// テレビオプション視聴実績件数リストの件数が３件となるまで、空のDataBeanを追加
		X31SDataBeanAccessArray tvOpWatchJskCntList = paramBean[0].getDataBeanArray(KKW12101SFConst.TV_OP_WATCH_JSK_CNT_LIST);
		for (int i = tvOpWatchJskCntList.getCount(); i < TV_OP_WATCH_JSK_CNT_LIST_CNT; i++)
		{
			tvOpWatchJskCntList.addDataBean();
		}
		
		return true;
	}
	
	/**
	 * 一意照会で取得したオプションサービスコード、オプションサービス名を配列に格納します。
	 * <br>
	 */
	private void setOpSvcCdArray()
	{
		//サービスフォームBean
		X31SDataBeanAccess srvBean = getServiceFormBean();
		
		X31SDataBeanAccessArray array = srvBean.getDataBeanArray(KKW12101SFConst.OP_SVC_LIST);
		int count = array.getCount();
		
		// 既に設定されているレコードを一つ下のへ移動する
		for(int i = count - 1; i > 0; i--)
		{
			X31SDataBeanAccess bean = array.getDataBean(i - 1);
			X31SDataBeanAccess bean2 = array.getDataBean(i);
			
			boolean rls = bean.sendMessageBoolean(KKW12101SFConst.RLS_02, X31CWebConst.DATABEAN_GET_VALUE);
			String code = bean.sendMessageString(KKW12101SFConst.CODE_02, X31CWebConst.DATABEAN_GET_VALUE);
			String name = bean.sendMessageString(KKW12101SFConst.OP_SVC_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
			
			bean2.sendMessageBoolean(KKW12101SFConst.RLS_02, X31CWebConst.DATABEAN_SET_VALUE, rls);
			bean2.sendMessageString(KKW12101SFConst.CODE_02, X31CWebConst.DATABEAN_SET_VALUE, code);
			bean2.sendMessageString(KKW12101SFConst.OP_SVC_NM_02, X31CWebConst.DATABEAN_SET_VALUE, name);
		}
		
		// 配列[0]に検索結果のレコードを格納する
		X31SDataBeanAccess bean = array.getDataBean(0);
		
		String op_svc_cd = srvBean.sendMessageString(KKW12101SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String op_svc_name = srvBean.sendMessageString(KKW12101SFConst.OP_SVC_NAME, X31CWebConst.DATABEAN_GET_VALUE);
		
		bean.sendMessageBoolean(KKW12101SFConst.RLS_02, X31CWebConst.DATABEAN_SET_VALUE, false);
		bean.sendMessageString(KKW12101SFConst.CODE_02, X31CWebConst.DATABEAN_SET_VALUE, op_svc_cd);
		bean.sendMessageString(KKW12101SFConst.OP_SVC_NM_02, X31CWebConst.DATABEAN_SET_VALUE, op_svc_name);
		
	}

}
