/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：WCW00921SFLogic
*	ソースファイル名：WCW00921SFLogic.java
*	作成者			：富士通
*	日付			：2011年06月27日
*＜機能概要＞
*	STB直接制御（登録解除・アンリンク）のビューロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/06/27	富士通		新規作成
*	v3.00.00	2012/05/01	FJ)竹之下	【ANK-0315-00-00】宅内対応を実施
*
**********************************************************************/
package eo.web.webview.WCW00921SF;

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.constant.JPCOnlineMessageConstant;
import eo.common.constant.JWCStrConst;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JWCCommonConst;
import eo.web.webview.common.JWCScreenConst;
import eo.web.webview.mapping.WCSV0001_WCSV0001OP_03DBMapper;
import eo.web.webview.mapping.WCSV0013_WCSV0013OPDBMapper;
import eo.web.webview.mapping.WCSV0062_WCSV0062OPDBMapper;
import eo.web.webview.mapping.WCSV0063_WCSV0063OPDBMapper;

/**
 * ＳＴＢ直接制御（アンリンク）を行う。
 *
 * @author 富士通
 */

public class WCW00921SFLogic extends JCCWebBusinessLogic
{

	// エラーメッセージ表示用定数定義
	private String Error_Mode_1 = "1";
	private String Error_Mode_2 = "2";
	private String Error_Mode_3 = "3";
	private String Error_Mode_4 = "4";

	/**
	 * 一覧照会画面初期表示処理
	 * @author 富士通
	 * @return 
	 * @throws Exception 
	 */
	public boolean init() throws Exception
	{
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;

		outputMap = new HashMap<String, Object>();
		inputMap = new HashMap<String, Object>();
		paramMap = new HashMap<String, Object>();

		///// 共有フォームBean設定/////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		///// メッセージ表示処理 /////
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB6910__I;
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "処理対象機器";
		
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();

		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");

		///// 遷移先画面設定処理 /////
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC00921);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC00921);

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		if (bean == null)
		{
			throw new Exception();
		}
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0062");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0062OP");
		///// サービス呼出処理/////
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		//視聴制御初期表示 下りマッピング定義
		mappingForDB_BP_WCSV0062_GET(paramBean, outputMap);

		// 検索エラー
		X31SDataBeanAccessArray stbBeanArray = bean.getDataBeanArray(WCW00921SFConst.KYOKU_INFO);
		if (stbBeanArray.getCount() == 0 ||stbBeanArray.getDataBean(0) == null)
		{
			notFoundErrorInit(Error_Mode_1);
			return true;
		}
		// 検索エラー
		X31SDataBeanAccessArray ctrlBeanArray = bean.getDataBeanArray(WCW00921SFConst.CTRL_AREA_INFO);
		if (ctrlBeanArray.getCount() == 0 ||ctrlBeanArray.getDataBean(0) == null)
		{
			notFoundErrorInit(Error_Mode_2);
			return true;
		}

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
//		X31SDataBeanAccess bean = super.getServiceFormBean();

		// パラメータ作成
//		X31SDataBeanAccess[] paramBean = {bean};

		paramBean[0].sendMessageString(WCW00921SFConst.WCTRL_ORDER_CD, X31CWebConst.DATABEAN_SET_VALUE, 
				JWCStrConst.CD_DIV_WCTRL_ORDER_UNSET);
		paramBean[0].sendMessageString(WCW00921SFConst.WCTRL_REQ_TRN_CD, X31CWebConst.DATABEAN_SET_VALUE,
				JWCStrConst.CD_DIV_WCTRL_REQ_TRN_CD_STBCTRL_UNSET);
		paramBean[0].sendMessageString(WCW00921SFConst.WCTRL_TYPE, X31CWebConst.DATABEAN_SET_VALUE,
				JWCStrConst.CD_DIV_WCTRL_TRN_CD_REAL);
		paramBean[0].sendMessageString(WCW00921SFConst.CTRL_MODE, X31CWebConst.DATABEAN_SET_VALUE,
				"1");	//元 "0"
		paramBean[0].sendMessageString(WCW00921SFConst.CHRG_FLG, 
				X31CWebConst.DATABEAN_SET_VALUE, null);
		paramBean[0].sendMessageString(WCW00921SFConst.RE_SETTE_FLG , 
				X31CWebConst.DATABEAN_SET_VALUE, null);
		paramBean[0].sendMessageString(WCW00921SFConst.CTRL_CMD_HAKKO_ZUMI_FLG , X31CWebConst.DATABEAN_SET_VALUE, 
				JWCStrConst.CD_DIV_WATCH_CMD_HAKKO_FLG_MIHAKKO);
		paramBean[0].sendMessageString(WCW00921SFConst.RSLT_RCV_FLG , X31CWebConst.DATABEAN_SET_VALUE, 
				JWCStrConst.CD_DIV_WATCH_RSLT_RCV_FLG_MIREV);
		paramBean[0].sendMessageString(WCW00921SFConst.DLYD_FLG , X31CWebConst.DATABEAN_SET_VALUE, 
				JWCStrConst.CD_DIV_DLYD_FLG_TAISYOGAI);
		paramBean[0].sendMessageString(WCW00921SFConst.CCAS_SHKKA_CMD_HAK_FLG , 
				X31CWebConst.DATABEAN_SET_VALUE, null);

		return true;
	}

	/**
	 * 検索ボタン押下処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean search() throws Exception 
	{
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		if (bean == null)
		{
			throw new Exception();
		}
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};

		String strStbId = paramBean[0].sendMessageString(WCW00921SFConst.KEY_STB_ID, X31CWebConst.DATABEAN_GET_VALUE);
		String strSeizoNo = paramBean[0].sendMessageString(WCW00921SFConst.KEY_STB_KIKI_SEIZO_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String strCcasId = paramBean[0].sendMessageString(WCW00921SFConst.KEY_CCAS_ID, X31CWebConst.DATABEAN_GET_VALUE);
		String strBcasId = paramBean[0].sendMessageString(WCW00921SFConst.KEY_BCAS_ID, X31CWebConst.DATABEAN_GET_VALUE);
		//key 宅内機器種別コード 要確認 エラーなしの場合のセットは不要？
		String tkniKkSbtCd = getTkSbtCd(strStbId, strSeizoNo, strCcasId, strBcasId);
		paramBean[0].sendMessageString(WCW00921SFConst.KEY_TK_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, tkniKkSbtCd);

		paramMap = new HashMap<String, Object>();
		inputMap = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();

		X31SDataBeanAccessArray stbBeanArray = bean.getDataBeanArray(WCW00921SFConst.TN_ICRN_INFO);
		if (stbBeanArray.getDataBean(0) != null)
		{
			stbBeanArray.clearArray();
		}
		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0063");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0063OP");
		//宅内機器照会一覧上りマッピング定義
		mappingForDB_BP_WCSV0063_SET(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);
		
		///// サービス呼出処理 /////
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
//		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0013");
//		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0013OP");

		//手動リンク一覧照会上りマッピング定義
//		mappingForDB_BP_WCSV0013_SET(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);

//		X31SDataBeanAccessArray ccasBeanArray = bean.getDataBeanArray(WCW00921SFConst.CCAS_INFO);
//		if (ccasBeanArray.getDataBean(0) != null)
//		{
//			ccasBeanArray.clearArray();
//		}
//		X31SDataBeanAccessArray bcasBeanArray = bean.getDataBeanArray(WCW00921SFConst.BCAS_INFO);
//		if (bcasBeanArray.getDataBean(0) != null)
//		{
//			bcasBeanArray.clearArray();
//		}
//		X31SDataBeanAccessArray stbBeanArray = bean.getDataBeanArray(WCW00921SFConst.STB_INFO);
//		if (stbBeanArray.getDataBean(0) != null)
//		{
//			stbBeanArray.clearArray();
//		}

		//宅内機器一覧照会 下りマッピング
		mappingForDB_BP_WCSV0063_GET(paramBean, outputMap);
		//手動リンク一覧照会下りマッピング定義
//		mappingForDB_BP_WCSV0013_GET(paramBean, outputMap);

		String strGetCcasId = "";
		String strGetBcasId = "";
		String strGetStbId = "";
		String strGetSeizoNo = "";
		
//		ccasBeanArray = bean.getDataBeanArray(WCW00921SFConst.CCAS_INFO);
//		if (ccasBeanArray.getDataBean(0) != null && ccasBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.CASID_02, X31CWebConst.DATABEAN_GET_VALUE) != null)
//		{
//			strGetCcasId = ccasBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.CASID_02, X31CWebConst.DATABEAN_GET_VALUE);
//		}
//		bcasBeanArray = bean.getDataBeanArray(WCW00921SFConst.BCAS_INFO);
//		if (bcasBeanArray.getDataBean(0) != null && bcasBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.CASID_02, X31CWebConst.DATABEAN_GET_VALUE) != null)
//		{
//			strGetBcasId = bcasBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.CASID_02, X31CWebConst.DATABEAN_GET_VALUE);
//		}
//		stbBeanArray = bean.getDataBeanArray(WCW00921SFConst.STB_INFO);
//		if (stbBeanArray.getDataBean(0) != null)
//		{
//			if (stbBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.STBID_01, X31CWebConst.DATABEAN_GET_VALUE) != null)
//			{
//				strGetStbId = stbBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.STBID_01, X31CWebConst.DATABEAN_GET_VALUE);
//			}
//			if ( stbBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.STB_KIKI_SEIZO_NO_01, X31CWebConst.DATABEAN_GET_VALUE) != null)
//			{
//				strGetSeizoNo = stbBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.STB_KIKI_SEIZO_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
//			}
//		}
		//宅内情報取得
		X31SDataBeanAccessArray tknBeanArray = bean.getDataBeanArray(WCW00921SFConst.TN_ICRN_INFO);
		if (tknBeanArray.getCount() == 0 ||tknBeanArray.getDataBean(0) == null){
			search_Error(Error_Mode_1);
			return false;
		}
		//宅内情報
		if(tknBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.CCAS_KK_SEIZO_NO_02, 
				X31CWebConst.DATABEAN_GET_VALUE) != null)
		{
			strGetCcasId = tknBeanArray.getDataBean(0).sendMessageString(
					WCW00921SFConst.CCAS_KK_SEIZO_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
		}
		if(tknBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.BCAS_KK_SEIZO_NO_02, 
				X31CWebConst.DATABEAN_GET_VALUE) != null)
		{
			strGetBcasId = tknBeanArray.getDataBean(0).sendMessageString(
					WCW00921SFConst.BCAS_KK_SEIZO_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
		}
		if(tknBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.STBID_02, 
				X31CWebConst.DATABEAN_GET_VALUE) != null)
		{
			strGetStbId = tknBeanArray.getDataBean(0).sendMessageString(
					WCW00921SFConst.STBID_02, X31CWebConst.DATABEAN_GET_VALUE);
		}
		if(tknBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.STB_KK_SEIZO_NO_02, 
				X31CWebConst.DATABEAN_GET_VALUE) != null)
		{
			strGetSeizoNo = tknBeanArray.getDataBean(0).sendMessageString(
					WCW00921SFConst.STB_KK_SEIZO_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
		}

//		else if ((strStbId != null && !"".equals(strStbId) && !strStbId.equals(strGetStbId))
		if ((strStbId != null && !"".equals(strStbId) && !strStbId.equals(strGetStbId))
		 || (strSeizoNo != null && !"".equals(strSeizoNo) && !strSeizoNo.equals(strGetSeizoNo))
		 || (strCcasId != null && !"".equals(strCcasId) && !strCcasId.equals(strGetCcasId))
		 || (strBcasId != null && !"".equals(strBcasId) && !strBcasId.equals(strGetBcasId)))

		{
			//各入力項目のコードが同一のＳＴＢにあたらない場合
		//	Search_Error(Error_Mode_2);
			search_Error(Error_Mode_1);
			return false;
		}
		else
		{
			paramBean[0].sendMessageString(WCW00921SFConst.KEY_STB_ID, X31CWebConst.DATABEAN_SET_VALUE, strGetStbId);
			paramBean[0].sendMessageString(WCW00921SFConst.KEY_STB_KIKI_SEIZO_NO, X31CWebConst.DATABEAN_SET_VALUE, strGetSeizoNo);
			paramBean[0].sendMessageString(WCW00921SFConst.KEY_CCAS_ID, X31CWebConst.DATABEAN_SET_VALUE, strGetCcasId);
			paramBean[0].sendMessageString(WCW00921SFConst.KEY_BCAS_ID, X31CWebConst.DATABEAN_SET_VALUE, strGetBcasId);
			//宅内機器種別セット 要確認？
			paramBean[0].sendMessageString(WCW00921SFConst.KEY_TK_SBT_CD ,X31CWebConst.DATABEAN_SET_VALUE, tkniKkSbtCd);
		}

		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		///// メッセージ表示処理 /////
		String MESSAGE_ID = "";
		String strStbStat = "";
		String ccasStat = "";
		String[] stringArray = new String[0];
//		if(stbBeanArray.getDataBean(0) != null && stbBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.STB_STATUS_01, X31CWebConst.DATABEAN_GET_VALUE) != null)
		if(tknBeanArray.getDataBean(0) != null && tknBeanArray.getDataBean(0).sendMessageString(
				WCW00921SFConst.STB_STAT_CD_02, X31CWebConst.DATABEAN_GET_VALUE) != null)
		{
			strStbStat = tknBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.STB_STAT_CD_02, 
					X31CWebConst.DATABEAN_GET_VALUE);
		}
		// CCASステータス取得　要確認
		if(tknBeanArray.getDataBean(0) != null && tknBeanArray.getDataBean(0).sendMessageString(
				WCW00921SFConst.CCAS_CARD_STAT_CD_02, X31CWebConst.DATABEAN_GET_VALUE) != null)
		{
			ccasStat = tknBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.CCAS_CARD_STAT_CD_02, 
					X31CWebConst.DATABEAN_GET_VALUE);
		}

		boolean flg = true;
		//STBステータスが仮登録または、本運用でない場合、遷移後メッセージ表示
		if (!strStbStat.equals(JWCStrConst.CD_DIV_WATCH_KIKI_KANRI_STAT_KARITO) && 
			!strStbStat.equals(JWCStrConst.CD_DIV_WATCH_KIKI_KANRI_STAT_HONUNYO))
		{
			MESSAGE_ID = JPCOnlineMessageConstant.EKB9220_KW;
			stringArray = new String[1];
			stringArray[0] = "仮登録または本運用";

			flg = false;
		}
		else if(!JWCStrConst.CD_DIV_CCAS_CARD_KANRI_STAT_LINKCHU.equals(ccasStat))
		{
			//CASカード管理ステータスがリンク中でない場合、遷移後メッセージ表示
			MESSAGE_ID = JPCOnlineMessageConstant.EKB9340_KW;
			stringArray = new String[1];
			stringArray[0] = "リンク中";
			flg = false;
		}
		if(flg)
		{
			MESSAGE_ID = JPCOnlineMessageConstant.EKB0370__I;
			stringArray = new String[1];
			stringArray[0] = "STB直接制御(登録解除:アンリンク)";
		}

		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);

		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();

		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");

		// 強調表示
		JCCWebCommon.setMessageAreaBackColor(this, "1");

		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC00924);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC00924);

		return true;
	}

	/**
	 * 検索ボタン押下時エラー処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean search_Error(String strFlg) throws Exception
	{
		String MESSAGE_ID = "";
		String[] stringArray = new String[0];
		
		if(strFlg.equals(Error_Mode_1))
		{
			MESSAGE_ID = JPCOnlineMessageConstant.EKB0300_KW;
			stringArray = new String[2];
			stringArray[0] = "宅内機器";
			stringArray[1] = "データ";
		}
		else if(strFlg.equals(Error_Mode_2))
		{
		//	MESSAGE_ID = JPCOnlineMessageConstant.EKB1040_JW;
		//	stringArray = new String[3];
		//	stringArray[0] = "指定されたSTBと製造番号";
		//	stringArray[1] = "同一STBのものと異なる";
		//	stringArray[2] ="処理";
			MESSAGE_ID = JPCOnlineMessageConstant.EKB7230_TW;
			stringArray = new String[1];
			stringArray[0] = "";
		}
		else if(strFlg.equals(Error_Mode_3))
		{
			MESSAGE_ID = JPCOnlineMessageConstant.EKB9220_KW;
			stringArray = new String[1];
			stringArray[0] = "仮登録または本運用";
		}
		else if(strFlg.equals(Error_Mode_4))
		{
			MESSAGE_ID = JPCOnlineMessageConstant.EKB9220_KW;
			stringArray = new String[1];
			stringArray[0] = "リンク中";
		}

		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		return true;
	}

	/**
	 * 登録確認画面確定ボタン押下処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean fix() throws Exception
	{
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		//宅内一覧情報クリア
		bean.getDataBeanArray(WCW00921SFConst.TN_ICRN_INFO).clearArray();
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};

		paramMap = new HashMap<String, Object>();
		inputMap = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();
		

		String strStbId = paramBean[0].sendMessageString(WCW00921SFConst.KEY_STB_ID, X31CWebConst.DATABEAN_GET_VALUE);
		String strSeizoNo = paramBean[0].sendMessageString(WCW00921SFConst.KEY_STB_KIKI_SEIZO_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String strCcasId = paramBean[0].sendMessageString(WCW00921SFConst.KEY_CCAS_ID, X31CWebConst.DATABEAN_GET_VALUE);
		String strBcasId = paramBean[0].sendMessageString(WCW00921SFConst.KEY_BCAS_ID, X31CWebConst.DATABEAN_GET_VALUE);
		//key 宅内機器種別コード 要確認 エラーなしの場合のセットは不要？
		String tkniKkSbtCd = getTkSbtCd(strStbId, strSeizoNo, strCcasId, strBcasId);
		paramBean[0].sendMessageString(WCW00921SFConst.KEY_TK_SBT_CD ,X31CWebConst.DATABEAN_SET_VALUE, tkniKkSbtCd);

		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0063");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0063OP");

		//宅内機器一覧照会上りマッピング定義
		mappingForDB_BP_WCSV0063_SET(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);
		///// サービス呼出処理/////
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		///// 取得データ件数チェック/////
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		//視聴制御オーダ送信下りマッピング定義
		mappingForDB_BP_WCSV0063_GET(paramBean, outputMap);

		// 検索エラー
//		X31SDataBeanAccessArray stbBeanArray = bean.getDataBeanArray(WCW00921SFConst.STB_INFO);
		X31SDataBeanAccessArray stbBeanArray = bean.getDataBeanArray(WCW00921SFConst.TN_ICRN_INFO);
		if (stbBeanArray.getCount() == 0 || stbBeanArray.getDataBean(0) == null)
		{
			search_Error(Error_Mode_1);
			return false;
		}

		String strStbStat = "";
		String ccasStat = "";
//		if(stbBeanArray.getDataBean(0) != null && stbBeanArray.getDataBean(0).sendMessageString(
//				WCW00921SFConst.STB_STATUS_01, X31CWebConst.DATABEAN_GET_VALUE) != null)
//		{
//			strStbStat = stbBeanArray.getDataBean(0).sendMessageString(
//					WCW00921SFConst.STB_STATUS_01, X31CWebConst.DATABEAN_GET_VALUE);
//		}
		// CCASステータス取得　要確認
//		if(.getDataBean(0) != null && stbBeanArray.getDataBean(0).sendMessageString(
//				WCW00921SFConst.CAS_STATUS_02, X31CWebConst.DATABEAN_GET_VALUE) != null)
//		{
//			ccasStat = stbBeanArray.getDataBean(0).sendMessageString(WCW00921SFConst.CAS_STATUS_02, 
//					X31CWebConst.DATABEAN_GET_VALUE);
//		}
		
		if(stbBeanArray.getDataBean(0) != null && stbBeanArray.getDataBean(0).sendMessageString(
				WCW00921SFConst.STB_STAT_CD_02, X31CWebConst.DATABEAN_GET_VALUE) != null)
		{
			strStbStat = stbBeanArray.getDataBean(0).sendMessageString(
					WCW00921SFConst.STB_STAT_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
		}
		// CCASステータス取得　要確認
		if(stbBeanArray.getDataBean(0) != null && stbBeanArray.getDataBean(0).sendMessageString(
		WCW00921SFConst.CCAS_CARD_STAT_CD_02, X31CWebConst.DATABEAN_GET_VALUE) != null)
		{
			ccasStat = stbBeanArray.getDataBean(0).sendMessageString(
					WCW00921SFConst.CCAS_CARD_STAT_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
		}

		//STBステータスが仮登録または、本運用でない場合
		if((!JWCStrConst.CD_DIV_WATCH_KIKI_KANRI_STAT_KARITO.equals(strStbStat)) &&
			(!JWCStrConst.CD_DIV_WATCH_KIKI_KANRI_STAT_HONUNYO.equals(strStbStat)))
		{
			search_Error(Error_Mode_3);
			return false;
		}
		//C-CASステータスが「012（リンク中）」でない場合
		if(!JWCStrConst.CD_DIV_CCAS_CARD_KANRI_STAT_LINKCHU.equals(ccasStat))
		{
			search_Error(Error_Mode_4);
			return false;
		}

		//新STBステータス "019"（撤去済）
		paramBean[0].sendMessageString(WCW00921SFConst.NEW_STB_STAT, X31CWebConst.DATABEAN_SET_VALUE, 
				JWCStrConst.CD_DIV_WATCH_KIKI_KANRI_STAT_TEKKYOZUMI);
		//新CASステータス "019"（未初期化）
		paramBean[0].sendMessageString(WCW00921SFConst.NEW_CCAS_STAT, X31CWebConst.DATABEAN_SET_VALUE, 
				JWCStrConst.CD_DIV_CCAS_CARD_KANRI_STAT_MISYOKIKA);

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0001");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0001OP");
		//視聴制御オーダー送信 上りマッピング定義
		mappingForDB_BP_WCSV0001_SET(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);
		///// サービス呼出処理 /////
		msgResult = invokeService(paramMap, inputMap, outputMap);
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}


		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		///// メッセージ表示処理 /////
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB6990__I;
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "STB直接制御(登録解除:アンリンク)";
		
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC00925);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC00925);
		
		return true;
	}

	/**
	 * 登録確認画面完了ボタン完了処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean fin() throws Exception
	{

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		clearBean(bean);
		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		///// メッセージ表示処理 /////
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB6910__I;
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "処理対象機器";
		
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC00921);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC00921);
		return true;
	}
		
	/**
	 * キャンセルボタン完了処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean cancel() throws Exception
	{

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		clearBean(bean);
		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		///// メッセージ表示処理 /////
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB6910__I;
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "処理対象機器";
		
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC00921);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC00921);
		return true;
	}

	/**
	 * サービスフォームBean項目とアンリンク一覧照会サービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   上りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0013_SET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> inputMap, String func_code)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0013_WCSV0013OPDBMapper mapper = new WCSV0013_WCSV0013OPDBMapper();
		mapper.setWCSV001302SC(paramBean, inputMap, func_code);
		mapper.setWCSV001303SC(paramBean, inputMap, func_code);
		mapper.setWCSV001304SC(paramBean, inputMap, func_code);
		mapper.setWCSV001305SC(paramBean, inputMap, func_code);

		return;
	}
	
	/**
	 * サービスフォームBean項目とアンリンク一覧照会サービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   下りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0013_GET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> outputMap)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0013_WCSV0013OPDBMapper mapper = new WCSV0013_WCSV0013OPDBMapper();

		mapper.getWCSV001301SC(paramBean, outputMap);
		mapper.getWCSV001305SC(paramBean, outputMap);
		mapper.getWCSV001306SC(paramBean, outputMap);
		mapper.getWCSV001307SC(paramBean, outputMap);
		return;
	}

	/**
	 * サービスフォームBean項目と視聴制御オーダサービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   上りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0001_SET(X31SDataBeanAccess[] paramBean, 
			HashMap<String, Object> inputMap, String func_code)
	{
		WCSV0001_WCSV0001OP_03DBMapper mapper = new WCSV0001_WCSV0001OP_03DBMapper();
		mapper.setWCSV000101SC(paramBean, inputMap, func_code);
		mapper.setWCSV000102SC(paramBean, inputMap, func_code);
		mapper.setWCSV000108SC(paramBean, inputMap, func_code);
		mapper.setWCSV000109SC(paramBean, inputMap, func_code);
		mapper.setWCSV000122SC(paramBean, inputMap, func_code);
		return;
	}
	
	/**
	 * 視聴制御初期表示 下りとのマッピングを行う
	 * @param paramBean
	 * @param outputMap
	 */
	private void mappingForDB_BP_WCSV0062_GET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> outputMap)
	{
		WCSV0062_WCSV0062OPDBMapper mapper = new WCSV0062_WCSV0062OPDBMapper();
		mapper.getWCSV006201SC(paramBean, outputMap);
		mapper.getWCSV006202SC(paramBean, outputMap);
		return;
	}

	/**
	 * 宅内機器一覧照会 上りとのマッピングを行う
	 * @param paramBean
	 * @param inputMap
	 * @param func_code
	 */
	private void mappingForDB_BP_WCSV0063_SET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> inputMap, String func_code)
	{
		WCSV0063_WCSV0063OPDBMapper mapper = new WCSV0063_WCSV0063OPDBMapper();
		mapper.setWCSV006301SC(paramBean, inputMap, func_code);
		return;
	}

	/**
	 * 宅内機器一覧照会 下りとのマッピングを行う
	 * @param paramBean
	 * @param outputMap
	 */
	private void mappingForDB_BP_WCSV0063_GET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> outputMap)
	{
		WCSV0063_WCSV0063OPDBMapper mapper = new WCSV0063_WCSV0063OPDBMapper();
		mapper.getWCSV006301SC(paramBean, outputMap);
		return;
	}

	/**
	 * Bean初期化
	 * @param paramBean
	 * @throws Exception
	 */
	public void clearBean(X31SDataBeanAccess paramBean) throws Exception
	{
		String strItemList[] = paramBean.getItemNameList();
		
		for(int i = 0 ; i < strItemList.length; i++)
		{
//			if(WCW00921SFConst.STB_INFO.equals(strItemList[i]) || 
//				WCW00921SFConst.BCAS_INFO.equals(strItemList[i]) || 
//				WCW00921SFConst.CCAS_INFO.equals(strItemList[i]) || 
			if(WCW00921SFConst.KYOKU_INFO.equals(strItemList[i])||
				WCW00921SFConst.TN_ICRN_INFO.equals(strItemList[i]) ||
				WCW00921SFConst.CTRL_AREA_INFO.equals(strItemList[i]))
			{
				paramBean.getDataBeanArray(strItemList[i]).clearArray();
			}
			else
			{
				paramBean.sendMessage(strItemList[i], X31CWebConst.DATABEAN_CLEAR);
			}
		}
		
		init();
	}

	/**
	 * 初期表示検索エラー処理
	 * @param errMsg
	 */
	private void notFoundErrorInit(String errCd)
	{
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB9230_KW;
		String[] stringArray = new String[0];
		
		stringArray = new String[1];
		if(errCd.equals(Error_Mode_1))
		{
			stringArray[0] = "局";
		}
		else if(errCd.equals(Error_Mode_2))
		{
			stringArray[0] = "制御エリア";
		}

		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = 
			commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		return;
	}

	/**
	 * 宅内機器種別コード取得
	 * @param stbId
	 * @param keySeizo
	 * @param ccasId
	 * @param bcasId
	 * @return 宅内機器製種別コード
	 */
	private String getTkSbtCd(String stbId, String keySeizo, String ccasId, String bcasId)
	{
		String tkniCd = JWCStrConst.CD_DIV_TAKNKIKI_SBT_CD_STB;
		// KEY_STBID、KEY_製造番号ともに設定されていない場合
		if("".equals(stbId) && "".equals(keySeizo))
		{
			if(!"".equals(bcasId))	//判定方法 要確認
			{
				tkniCd = JWCStrConst.CD_DIV_TAKNKIKI_SBT_CD_BCAS;
			}
			else if(!"".equals(ccasId))
			{
				tkniCd = JWCStrConst.CD_DIV_TAKNKIKI_SBT_CD_CCAS;
			}
		}
		return tkniCd;
	}
	/**
	 * 戻るボタン完了処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean back() throws Exception
	{
		
		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);

		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		return true;
	}
}