/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：視聴制御
*	モジュール名	：WCW00806SFLogic
*	ソースファイル名：WCW00806SFLogic.java
*	作成者			：富士通
*	日付			：2011年07月20日
*＜機能概要＞
*	メッセージ送信更新のビューロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日5		修正者		修正内容
*	v1.00.00	2011/07/20	富士通		新規作成
*	v3.00.00	2012/05/01	FJ)竹之下	【ANK-0315-00-00】宅内対応を実施
*
**********************************************************************/
package eo.web.webview.WCW00806SF;

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.WCSV0003_WCSV0003OP_06DBMapper;
import eo.web.webview.mapping.WCSV0057_WCSV0057OP_06DBMapper;

public class WCW00806SFLogic extends JCCWebBusinessLogic {

	// エラーメッセージ表示用定数定義
	private String Error_Mode_1 = "1";
	private String Error_Mode_2 = "2";
	private String Error_Mode_3 = "3";
	private String Search_Error_1 = "1";
	private String Search_Error_2 = "2";
	private String Search_Error_3 = "3";
	private String MaxShowCnt = "WCW00801_MAX_SHOW_CNT";

	/**
	 * メッセージ送信更新初期処理
	 * @return
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		
		///// 共有フォームBean設定/////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		HashMap<String, Object> screenInfo = null;
		
		screenInfo = JCCWebCommon.getScreenInfo(this,JWCScreenConst.SCREEN_ID_WC00801);
		
		// メッセージＩＤを取得する。
		String he_msg_id = (String)screenInfo.get("ＨＥメッセージＩＤ");

		// サービスフォームBeanを設定
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		bean.sendMessageString(WCW00806SFConst.MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, he_msg_id);
		
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;


		if (bean == null)
		{
			throw new Exception();
		}

		// 制御タイプを０に設定する。
		bean.sendMessageString(WCW00806SFConst.SET_WCTRL_TYPE , X31CWebConst.DATABEAN_SET_VALUE,
				JWCStrConst.CD_DIV_WCTRL_TRN_CD_REAL);

		// STBメッセージオーダーステータスを０に設定
		bean.sendMessageString(WCW00806SFConst.SET_ORDER_ST , X31CWebConst.DATABEAN_SET_VALUE,
				JWCStrConst.CD_DIV_WATCH_ORDER_FLG_NORMAL);
		
		// 制御コマンド発行済フラグを０に設定
		bean.sendMessageString(WCW00806SFConst.SET_CTRL_CMD_HAKKO_ZUMI_FLG , X31CWebConst.DATABEAN_SET_VALUE,
				JWCStrConst.CD_DIV_WATCH_CMD_HAKKO_FLG_HAKKOZUMI);

		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};


		paramMap = new HashMap<String, Object>();
		inputMap = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();

		mappingForDB_BP_WCSV0057_SET(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "WCSV005701SC", inputMap);
		
		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0057");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0057OP");

		///// STBメッセージオーダ送信一覧照会処理のサービスを呼び出す/////
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		///// サービス処理結果の判定/////
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		mappingForDB_BP_WCSV0057_GET(paramBean, outputMap);
		// 検索エラーフラグの取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("WCSV005701SC", outputMap);

		if(!search_Error(searchErrFlg)) {
			// 送信期間情報に、送信日の項目を設定する。
			X31SDataBeanAccessArray snd_list = bean.getDataBeanArray(WCW00806SFConst.SND_LIST);
			if(snd_list.getCount() ==0) {
				snd_list.addDataBean();
			}
			return true;
		}
		
		// ページングの情報を設定する。
		JCCWebCommon.downmapperPageLinkInfo(this, "0", "WCSV005701SC", outputMap);

		// 送信メッセージ情報の内容を、制御情報に設定する。
		X31SDataBeanAccessArray msg_order_info = bean.getDataBeanArray(WCW00806SFConst.MSG_ORDER_INFO);
		
		// MSG_ID
		if(msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.HE_MSG_ID_04, X31CWebConst.DATABEAN_GET_VALUE) != null) {
			bean.sendMessageString(WCW00806SFConst.MSG_ID,X31CWebConst.DATABEAN_SET_VALUE, msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.HE_MSG_ID_04, X31CWebConst.DATABEAN_GET_VALUE));
		}
		// SET_STB_ID
		if(msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.STB_ID_04, X31CWebConst.DATABEAN_GET_VALUE) != null) {
			bean.sendMessageString(WCW00806SFConst.SET_STB_ID,X31CWebConst.DATABEAN_SET_VALUE, msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.STB_ID_04, X31CWebConst.DATABEAN_GET_VALUE).trim());
		}
		
		// SET_STB_KIKI_SEIZO_NO
		if(msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.STB_KIKI_SEIZO_NO_04, X31CWebConst.DATABEAN_GET_VALUE) != null) {
			bean.sendMessageString(WCW00806SFConst.SET_STB_KIKI_SEIZO_NO,X31CWebConst.DATABEAN_SET_VALUE, msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.STB_KIKI_SEIZO_NO_04, X31CWebConst.DATABEAN_GET_VALUE).trim());
		}
		
		// SET_GRP_ID_TRITORY_CD
		if(msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.GRP_ID_TRITORY_CD_04, X31CWebConst.DATABEAN_GET_VALUE) != null) {
			bean.sendMessageString(WCW00806SFConst.SET_GRP_ID_TRITORY_CD,X31CWebConst.DATABEAN_SET_VALUE, msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.GRP_ID_TRITORY_CD_04, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// SET_STB_GRP_ID
		if(msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.STB_GRP_ID_04, X31CWebConst.DATABEAN_GET_VALUE) != null) {
			bean.sendMessageString(WCW00806SFConst.SET_STB_GRP_ID,X31CWebConst.DATABEAN_SET_VALUE, msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.STB_GRP_ID_04, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// SET_MSG_TITLE
		if(msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.STB_MSG_TITLE_04, X31CWebConst.DATABEAN_GET_VALUE) != null) {
			bean.sendMessageString(WCW00806SFConst.SET_MSG_TITLE,X31CWebConst.DATABEAN_SET_VALUE, msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.STB_MSG_TITLE_04, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// SET_MSG_NAIYO
		if(msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.STB_MSG_NAIYO_04, X31CWebConst.DATABEAN_GET_VALUE) != null) {
			bean.sendMessageString(WCW00806SFConst.SET_MSG_NAIYO,X31CWebConst.DATABEAN_SET_VALUE, msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.STB_MSG_NAIYO_04, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// ATESAKI_SBT_CD
		if(msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.STB_MSG_ORDER_SBT_CD_04, X31CWebConst.DATABEAN_GET_VALUE) != null) {
			bean.sendMessageString(WCW00806SFConst.ATESAKI_SBT_CD,X31CWebConst.DATABEAN_SET_VALUE, msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.STB_MSG_ORDER_SBT_CD_04, X31CWebConst.DATABEAN_GET_VALUE));
		}

		//SET_MSG_SEND_ST_DTM
		if(msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_DTM_04, X31CWebConst.DATABEAN_GET_VALUE) != null) {
			bean.sendMessageString(WCW00806SFConst.SET_MSG_SEND_ST_DTM,X31CWebConst.DATABEAN_SET_VALUE, msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_DTM_04, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		//SET_MSG_SEND_ED_DTM
		if(msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_STP_DTM_04, X31CWebConst.DATABEAN_GET_VALUE) != null) {
			bean.sendMessageString(WCW00806SFConst.SET_MSG_SEND_ED_DTM,X31CWebConst.DATABEAN_SET_VALUE, msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_STP_DTM_04, X31CWebConst.DATABEAN_GET_VALUE));
		}
		//KYOKU_CD
		if(msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.KYOKU_CD_04, X31CWebConst.DATABEAN_GET_VALUE) != null) {
			bean.sendMessageString(WCW00806SFConst.KYOKU_CD,X31CWebConst.DATABEAN_SET_VALUE, msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.KYOKU_CD_04, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		//CTRL_AREA_CD
		if(msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.CTRL_AREA_CD_04, X31CWebConst.DATABEAN_GET_VALUE) != null) {
			bean.sendMessageString(WCW00806SFConst.CTRL_AREA_CD,X31CWebConst.DATABEAN_SET_VALUE, msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.CTRL_AREA_CD_04, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// SET_CTRL_CMD_HAKKO_ZUMI_FLG

		// SET_RSLT_RCV_FLG
		
		// SET_ORDER_ST

		//wctrl_order_cd 視聴制御オーダコード
		bean.sendMessageString(WCW00806SFConst.WCTRL_ORDER_CD, X31CWebConst.DATABEAN_SET_VALUE, null);
		//wctrl_req_trn_cd 視聴制御依頼処理コード
		bean.sendMessageString(WCW00806SFConst.WCTRL_REQ_TRN_CD, X31CWebConst.DATABEAN_SET_VALUE, 
			JWCStrConst.CD_DIV_WCTRL_REQ_TRN_CD_MSG_SEND);

		// 送信期間情報に、送信日の項目を設定する。
		X31SDataBeanAccessArray snd_list = bean.getDataBeanArray(WCW00806SFConst.SND_LIST);
		if(snd_list.getCount() ==0) {
			snd_list.addDataBean();
		}
		
		String msg_st_date = msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_DTM_04, X31CWebConst.DATABEAN_GET_VALUE);
		String msg_ed_date = msg_order_info.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_STP_DTM_04, X31CWebConst.DATABEAN_GET_VALUE);
		
		snd_list.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ST_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE , msg_st_date.substring(0,4));
		snd_list.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ST_MONTH_01, X31CWebConst.DATABEAN_SET_VALUE , msg_st_date.substring(4,6));
		snd_list.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ST_DAY_01, X31CWebConst.DATABEAN_SET_VALUE , msg_st_date.substring(6,8));
		snd_list.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ST_JI_01, X31CWebConst.DATABEAN_SET_VALUE , msg_st_date.substring(8,10));
		snd_list.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ST_FUN_01, X31CWebConst.DATABEAN_SET_VALUE , msg_st_date.substring(10,12));

		snd_list.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ED_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE , msg_ed_date.substring(0,4));
		snd_list.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ED_MONTH_01, X31CWebConst.DATABEAN_SET_VALUE , msg_ed_date.substring(4,6));
		snd_list.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ED_DAY_01, X31CWebConst.DATABEAN_SET_VALUE , msg_ed_date.substring(6,8));
		snd_list.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ED_JI_01, X31CWebConst.DATABEAN_SET_VALUE , msg_ed_date.substring(8,10));
		snd_list.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ED_FUN_01, X31CWebConst.DATABEAN_SET_VALUE , msg_ed_date.substring(10,12));

		// メッセージ送出年月日時分秒が、現在日付を超えている場合、メッセージを表示し更新ボタンをロックする。
		// システム日付を取得
		String systemYmd = JCCWebCommon.getSysDateTime();
		
		if(Long.parseLong(msg_st_date) <= Long.parseLong(systemYmd + "000")) 
		{
			bean.sendMessageString(WCW00806SFConst.SET_MSG_SEND_ST_DTM,X31CWebConst.DATABEAN_SET_VALUE, "");

			String MESSAGE_ID = "";
			String[] stringArray = new String[0];

			
			// メッセージは確認後に設定
			MESSAGE_ID = JPCOnlineMessageConstant.EKB7250_KW;
			stringArray = new String[1];
			stringArray[0] = "";
//			if(Long.parseLong(msg_ed_date) <= Long.parseLong(systemYmd + "000")) 
//			{
//				stringArray[1] = "既に送信済";
//			}
//			else
//			{
//				stringArray[1] = "送信中";
//			}
//			stringArray[2] = "更新を行うこと";

			// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
			X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
			// MESSAGE_LISTをクリアする。
			commonBeanArray.clearArray();
			
			JCCWebCommon.setMessageInfo( this, MESSAGE_ID,stringArray,"");
		}
		else 
		{

			///// メッセージ表示処理 /////
//			String strMsg = JWCCommonConst.Msg_WCW00806_1;
			String MESSAGE_ID = JPCOnlineMessageConstant.EKB7040__I;
			String[] stringArray;
			stringArray = new String[1];
			stringArray[0] = "送信情報";
			
			// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
			X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
			
			// MESSAGE_LISTをクリアする。
			commonBeanArray.clearArray();
			
			// MESSAGE_LISTにメッセージを追加する。
			X31SDataBeanAccess commonSubbean = commonBeanArray.addDataBean();
//			commonSubbean.sendMessageString(CommonInfoCFConst.MESSAGE_ID_02, X31CWebConst.DATABEAN_SET_VALUE, "");
//			commonSubbean.sendMessageString(CommonInfoCFConst.MESSAGE_02, X31CWebConst.DATABEAN_SET_VALUE, strMsg);
//			commonSubbean.sendMessageString("項目ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, "");
			JCCWebCommon.setMessageInfo( this, MESSAGE_ID,stringArray,"");

		}

		return true;
	}
	
	
	/**
	 * メッセージ送信更新 更新確認ボタン押下処理
	 * @return
	 * @throws Exception
	 */
	public boolean kakunin() throws Exception {
		
		///// 共有フォームBean設定/////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		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();
		}
		
		X31SDataBeanAccessArray msg_send_st = bean.getDataBeanArray(WCW00806SFConst.SND_LIST);

		// 開始日、終了日を編集する。
		String msg_send_st_year = msg_send_st.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ST_YEAR_01, X31CWebConst.DATABEAN_GET_VALUE);
		String msg_send_st_month = msg_send_st.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ST_MONTH_01, X31CWebConst.DATABEAN_GET_VALUE);
		String msg_send_st_day = msg_send_st.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ST_DAY_01, X31CWebConst.DATABEAN_GET_VALUE);
		String msg_send_st_ji = msg_send_st.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ST_JI_01, X31CWebConst.DATABEAN_GET_VALUE);
		String msg_send_st_fun = msg_send_st.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ST_FUN_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		String msg_send_ed_year = msg_send_st.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ED_YEAR_01, X31CWebConst.DATABEAN_GET_VALUE);
		String msg_send_ed_month = msg_send_st.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ED_MONTH_01, X31CWebConst.DATABEAN_GET_VALUE);
		String msg_send_ed_day = msg_send_st.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ED_DAY_01, X31CWebConst.DATABEAN_GET_VALUE);
		String msg_send_ed_ji = msg_send_st.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ED_JI_01, X31CWebConst.DATABEAN_GET_VALUE);
		String msg_send_ed_fun = msg_send_st.getDataBean(0).sendMessageString(WCW00806SFConst.MSG_SEND_ED_FUN_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		StringBuffer msg_send_st_buf = new StringBuffer();
		msg_send_st_buf.append(msg_send_st_year).append(msg_send_st_month).append(msg_send_st_day).append(msg_send_st_ji).append(msg_send_st_fun).append("00000");

		StringBuffer msg_send_ed_buf = new StringBuffer();
		msg_send_ed_buf.append(msg_send_ed_year).append(msg_send_ed_month).append(msg_send_ed_day).append(msg_send_ed_ji).append(msg_send_ed_fun).append("00000");
		
		
		bean.sendMessageString(WCW00806SFConst.SET_MSG_SEND_ST_DTM, X31CWebConst.DATABEAN_SET_VALUE, msg_send_st_buf.toString());
		bean.sendMessageString(WCW00806SFConst.SET_MSG_SEND_ED_DTM, X31CWebConst.DATABEAN_SET_VALUE, msg_send_ed_buf.toString());
		
		
		String atesaki_cd = (String)bean.sendMessageString(WCW00806SFConst.ATESAKI_SBT_CD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 宛先が個別指定の場合グループ番号、グループＩＤをクリアする
		if(JWCStrConst.CD_DIV_STB_MSG_ORDER_SBT_CD_KOBETU.equals(atesaki_cd))
		{
			bean.sendMessage(WCW00806SFConst.SET_STB_GRP_ID, X31CWebConst.DATABEAN_CLEAR);
			bean.sendMessage(WCW00806SFConst.SET_GRP_ID_TRITORY_CD, X31CWebConst.DATABEAN_CLEAR);
			bean.sendMessageString(WCW00806SFConst.WCTRL_ORDER_CD, X31CWebConst.DATABEAN_SET_VALUE, 
					JWCStrConst.CD_DIV_WCTRL_ORDER_STBMSGSND);
			//KEY_宅内機器種別コード
			bean.sendMessageString(WCW00806SFConst.KEY_TK_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE,
					JWCStrConst.CD_DIV_TAKNKIKI_SBT_CD_STB);
		}
		// 宛先がグループ指定の場合グループ番号、ＳＴＢ−ＩＤ、製造番号をクリアする。
		if(JWCStrConst.CD_DIV_STB_MSG_ORDER_SBT_CD_GRP.equals(atesaki_cd))
		{
			bean.sendMessage(WCW00806SFConst.SET_STB_KIKI_SEIZO_NO, X31CWebConst.DATABEAN_CLEAR);
			bean.sendMessage(WCW00806SFConst.SET_STB_ID, X31CWebConst.DATABEAN_CLEAR);
			bean.sendMessageString(WCW00806SFConst.WCTRL_ORDER_CD, X31CWebConst.DATABEAN_SET_VALUE, 
					JWCStrConst.CD_DIV_WCTRL_ORDER_GRPMSGSND);
		}
		
		//あて先：システム指定選択時 判定方法？　atesaki_cd ？ ありえないけど
		if(!JWCStrConst.CD_DIV_STB_MSG_ORDER_SBT_CD_KOBETU.equals(atesaki_cd) &&
				!JWCStrConst.CD_DIV_STB_MSG_ORDER_SBT_CD_GRP.equals(atesaki_cd))
		{
			bean.sendMessageString(WCW00806SFConst.ATESAKI_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, 
					JWCStrConst.CD_DIV_WCTRL_ORDER_MSGSNDSTOP);	//停止？
		}

		//共通　ここでよい？要確認
		//制御_制御タイプ
		bean.sendMessageString(WCW00806SFConst.SET_WCTRL_TYPE, X31CWebConst.DATABEAN_SET_VALUE, 
				JWCStrConst.CD_DIV_WCTRL_TRN_CD_REAL);
		//制御_オーダステータス
		bean.sendMessageString(WCW00806SFConst.SET_ORDER_ST, X31CWebConst.DATABEAN_SET_VALUE, 
				JWCStrConst.CD_DIV_WATCH_ORDER_FLG_NORMAL);
		//制御_制御コマンド発行済フラグ
		bean.sendMessageString(WCW00806SFConst.SET_CTRL_CMD_HAKKO_ZUMI_FLG, X31CWebConst.DATABEAN_SET_VALUE, 
				JWCStrConst.CD_DIV_WATCH_CMD_HAKKO_FLG_HAKKOZUMI);
		
		// 宅内情報の初期化
		X31SDataBeanAccessArray tk_info = bean.getDataBeanArray(WCW00806SFConst.TN_ICRN_INFO);
//		X31SDataBeanAccessArray tk_info = bean.getDataBeanArray(WCW00806SFConst.TK_KIKI_INFO);
		tk_info.clearArray();

		// グループＩＤ情報の初期化
		X31SDataBeanAccessArray grp_info = bean.getDataBeanArray(WCW00806SFConst.GRP_INFO);
		grp_info.clearArray();
		
		// グループ番号を３桁の数値に変更する。
		String grpno = bean.sendMessageString(WCW00806SFConst.SET_GRP_ID_TRITORY_CD, X31CWebConst.DATABEAN_GET_VALUE);
		grpno = fixGroupNo(grpno);
		bean.sendMessageString(WCW00806SFConst.SET_GRP_ID_TRITORY_CD, X31CWebConst.DATABEAN_SET_VALUE , grpno);

		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};

		paramMap = new HashMap<String, Object>();
		inputMap = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();

		mappingForDB_BP_WCSV0003_SET(paramBean, inputMap, 0);

		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0003");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0003OP");

		///// STBメッセージオーダ送信初期表示サービス呼出処理/////
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		///// サービス処理結果の判定/////
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		mappingForDB_BP_WCSV0003_GET(paramBean, outputMap);

		// 宅内情報の初期化
		tk_info = bean.getDataBeanArray(WCW00806SFConst.TN_ICRN_INFO);
		// グループＩＤ情報の初期化
		grp_info = bean.getDataBeanArray(WCW00806SFConst.GRP_INFO);
		//既存、存在チェック
		if(JWCStrConst.CD_DIV_STB_MSG_ORDER_SBT_CD_KOBETU.equals(atesaki_cd) && 
				tk_info.getDataBean(0) == null) 
		{
			kakunin_Error(Error_Mode_1);
			return false;
		}
		else if(JWCStrConst.CD_DIV_STB_MSG_ORDER_SBT_CD_GRP.equals(atesaki_cd) && 
				grp_info.getDataBean(0) == null)
		{
			kakunin_Error(Error_Mode_2);
			return false;
		}

		//STBステータスが仮登録または、本運用でない場合エラー
		//あて先：個別指定選択時
		if(JWCStrConst.CD_DIV_STB_MSG_ORDER_SBT_CD_KOBETU.equals(atesaki_cd))
		{
			String stbStat = (String)tk_info.getDataBean(0).sendMessageString(
					WCW00806SFConst.STB_STAT_CD_05, X31CWebConst.DATABEAN_GET_VALUE);
			if((!JWCStrConst.CD_DIV_WATCH_KIKI_KANRI_STAT_KARITO.equals(stbStat)) &&
				(!JWCStrConst.CD_DIV_WATCH_KIKI_KANRI_STAT_HONUNYO.equals(stbStat)))
			{
				kakunin_Error(Error_Mode_3);
				return false;
			}
		}

		// グループ番号を１桁の数値に変更する。
		grpno = bean.sendMessageString(WCW00806SFConst.SET_GRP_ID_TRITORY_CD, X31CWebConst.DATABEAN_GET_VALUE);
		grpno = viewGroupNo(grpno);
		bean.sendMessageString(WCW00806SFConst.SET_GRP_ID_TRITORY_CD, X31CWebConst.DATABEAN_SET_VALUE , grpno);

		///// メッセージ表示処理 /////
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB0370__I;
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "メッセージ送信更新";
		
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		// MESSAGE_LISTにメッセージを追加する。
		X31SDataBeanAccess commonSubbean = commonBeanArray.addDataBean();
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID,stringArray,"");
		// 強調表示
		JCCWebCommon.setMessageAreaBackColor(this, "1");
		///// 遷移先画面設定処理 /////
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC00807);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC00807);

		return true;
	}
	
	/**
	 * 確認ボタンエラー処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean kakunin_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] = "STBID，製造番号";
		}
		else if(strFlg.equals(Error_Mode_2))
		{
			MESSAGE_ID = JPCOnlineMessageConstant.EKB0300_KW;
			stringArray = new String[2];
			stringArray[0] = "選択されたグループ番号（ＳＴＢグループマスタ）";
			stringArray[1] = "グループID";
		}
		else if(strFlg.equals(Error_Mode_3))
		{
			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 
	{
		
		///// 共有フォームBean設定/////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		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();
		}
		
		// グループ番号を３桁の数値に変更する。
		String grpno = bean.sendMessageString(WCW00806SFConst.SET_GRP_ID_TRITORY_CD, X31CWebConst.DATABEAN_GET_VALUE);
		grpno = fixGroupNo(grpno);
		bean.sendMessageString(WCW00806SFConst.SET_GRP_ID_TRITORY_CD, X31CWebConst.DATABEAN_SET_VALUE , grpno) ;

		//機能コード コンスト要確認
		bean.sendMessageString(WCW00806SFConst.CTRL_CD, X31CWebConst.DATABEAN_SET_VALUE ,
				"1");
		//KEY_宅内機器種別コード
		bean.sendMessageString(WCW00806SFConst.KEY_TK_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE ,
				JWCStrConst.CD_DIV_TAKNKIKI_SBT_CD_STB);
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};


		paramMap = new HashMap<String, Object>();
		inputMap = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();

		mappingForDB_BP_WCSV0003_SET(paramBean, inputMap,1);

		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0003");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0003OP");

		///// STBメッセージオーダ送信初期表示サービス呼出処理/////
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		///// サービス処理結果の判定/////
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		mappingForDB_BP_WCSV0003_GET(paramBean, outputMap);

		
		///// メッセージ表示処理 /////
//		String strMsg = JWCCommonConst.Msg_WCW00808_1;
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB6990__I;
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "メッセージ送信変更";
		
		// グループ番号を１桁の数値に変更する。
		grpno = bean.sendMessageString(WCW00806SFConst.SET_GRP_ID_TRITORY_CD, X31CWebConst.DATABEAN_GET_VALUE);
		grpno = viewGroupNo(grpno);
		bean.sendMessageString(WCW00806SFConst.SET_GRP_ID_TRITORY_CD, X31CWebConst.DATABEAN_SET_VALUE , grpno);

		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		// MESSAGE_LISTにメッセージを追加する。
		X31SDataBeanAccess commonSubbean = commonBeanArray.addDataBean();
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID,stringArray,"");

		///// 遷移先画面設定処理 /////
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC00808);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC00808);

		return true;
	}

	/**
	 * メッセージ送信更新　キャンセルボタン押下処理
	 * @return
	 * @throws Exception
	 */
	public boolean cancel() throws Exception
	{
		///// 共有フォームBean設定/////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();

		///// 遷移先画面設定処理 /////
		//commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC00801);
		//commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC00801);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		return true;
	}
	
	/**
	 * メッセージ送信更新画面修正ボタン押下処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean syusei() throws Exception 
	{
		///// 共有フォームBean設定/////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		///// メッセージ表示処理 /////
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB7040__I;
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "送信情報";
		
		// グループ番号を３桁の数値に変更する。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		String grpno = bean.sendMessageString(WCW00806SFConst.SET_GRP_ID_TRITORY_CD, X31CWebConst.DATABEAN_GET_VALUE);
		grpno = fixGroupNo(grpno);
		bean.sendMessageString(WCW00806SFConst.SET_GRP_ID_TRITORY_CD, X31CWebConst.DATABEAN_SET_VALUE , grpno) ;

		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		// MESSAGE_LISTにメッセージを追加する。
		X31SDataBeanAccess commonSubbean = commonBeanArray.addDataBean();
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID,stringArray,"");

		///// 遷移先画面設定処理 /////
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC00806);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC00806);

		return true;
	}

	/**
	 * 検索ボタン押下時エラー処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean search_Error(String searchErrFlg) throws Exception
	{
		String MESSAGE_ID = "";
		String[] stringArray = new String[0];

		if(null == searchErrFlg)
		{
			return true;
		}
		if(searchErrFlg.equals(Search_Error_1))
		{
			MESSAGE_ID = JPCOnlineMessageConstant.EKB0330__I;
			stringArray = new String[1];
			stringArray[0] = "";
		}
		else if(searchErrFlg.equals(Search_Error_2))
		{
			MESSAGE_ID = JPCOnlineMessageConstant.EKB0340__I;
			stringArray = new String[1];
			stringArray[0] = JCCWebCommon.getSearchConst(MaxShowCnt);
		}
		else if(searchErrFlg.equals(Search_Error_3))
		{
			MESSAGE_ID = JPCOnlineMessageConstant.EKB0350__I;
			stringArray = new String[1];
			stringArray[0] = "";
		}
		else 
		{
			return true;
		}

		// 共有フォーム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 false;
	}

	/**
	 * メッセージ送信更新完了ボタン押下処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean fin() throws Exception  {
		
		///// 共有フォームBean設定/////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		
		///// 遷移先画面設定処理 /////
		//commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC00801);
		//commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC00801);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		return true;
	}

	/**
	 * STBメッセージオーダ送信一覧照会上りとのマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   上りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0057_SET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> inputMap, String func_code)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0057_WCSV0057OP_06DBMapper mapper = new WCSV0057_WCSV0057OP_06DBMapper();
		mapper.setWCSV005701SC(paramBean, inputMap, func_code);
		
		return;
	}

	/**
	 * STBメッセージオーダ送信一覧照会下りとのマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   下りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0057_GET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> outputMap)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0057_WCSV0057OP_06DBMapper mapper = new WCSV0057_WCSV0057OP_06DBMapper();

		mapper.getWCSV005701SC(paramBean, outputMap);

		return;
	}
	
	/**
	 * STBメッセージオーダ変更上りとのマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   上りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0003_SET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> inputMap, int mode)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0003_WCSV0003OP_06DBMapper mapper = new WCSV0003_WCSV0003OP_06DBMapper();
		
		if(mode == 0) 
		{
			mapper.setWCSV000301SC(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);
			mapper.setWCSV000302SC(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);
			mapper.setWCSV000303SC(paramBean, inputMap, JWCCommonConst.FUNC_CODE_2);
			mapper.setWCSV000304SC(paramBean, inputMap, JWCCommonConst.FUNC_CODE_2);
			mapper.setWCSV000305SC(paramBean, inputMap, JWCCommonConst.FUNC_CODE_2);
		}
		else 
		{
			mapper.setWCSV000301SC(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);
			mapper.setWCSV000302SC(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);
			mapper.setWCSV000303SC(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);
			mapper.setWCSV000304SC(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);
			mapper.setWCSV000305SC(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);
		}
		
		return;
	}

	
	/**
	 * STBメッセージオーダ変更下りとのマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   下りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0003_GET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> outputMap)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0003_WCSV0003OP_06DBMapper mapper = new WCSV0003_WCSV0003OP_06DBMapper();

		mapper.getWCSV000301SC(paramBean, outputMap);
		mapper.getWCSV000302SC(paramBean, outputMap);
		mapper.getWCSV000303SC(paramBean, outputMap);
		return;
	}

	/**
	 * ３桁のグループ番号を表示用に１桁に変更する。
	 * @param grpNo
	 * @return
	 */
	private String viewGroupNo(String grpNo) 
	{
		if(grpNo == null || "".equals(grpNo))
		{
			return "";
		}
		else
		{
			return Integer.toString(Integer.parseInt(grpNo));
		}
	}
	
	
	/**
	 * グループ番号を３桁の文字列に変更する。
	 */
	private String fixGroupNo(String grpNo)
	{
		if(grpNo == null || "".equals(grpNo))
		{
			return "";
		}
		else
		{
			return String.format("%03d",Integer.parseInt(grpNo));
		}
	}

}
