/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：WCW01913SFLogic
*	ソースファイル名：WCW01913SFLogic.java
*	作成者			：富士通
*	日付			：2011年08月17日
*＜機能概要＞
*	グループID設定(お客さまＩＤ指定)登録のビューロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日5		修正者		修正内容
*	v1.00.00	2011/08/17	富士通		新規作成
*	v3.00.00	2012/05/01	FJ)松嶋		【ANK-0315-00-00】宅内対応を実施
*										【ANK-0280-00-00】制御タイプ対応を実施
*	v10.00.00	2014/10/24	FJ)大山		OM-2014-0003079
*	v10.00.01	2014/10/25	FJ)大山		OM-2014-0003079
*	v10.00.02	2014/11/07	FJ)大山		OM-2014-0003079
*
**********************************************************************/
package eo.web.webview.WCW01913SF;

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.constant.JPCModelConstant;
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.JWCScreenConst;
import eo.web.webview.mapping.WCSV0001_WCSV0001OP_12DBMapper;
import eo.web.webview.mapping.WCSV0024_WCSV0024OPDBMapper;
import eo.web.webview.mapping.WCSV0060_WCSV0060OP_01DBMapper;



/**
 *グループID設定(お客さまＩＤ指定)登録を行う。
 *
 * @author 富士通
 */

public class WCW01913SFLogic extends JCCWebBusinessLogic
{
	private String ERR_MESSAGE_TIAGRP_UNKNOWN = "契約チャンネル（ティアグループ）が設定されていません。";
	private String ERR_MESSAGE_TIAGRP_000 = "ティアグループが０００のみ設定されています。";
	
	/**
	 * グループID設定(お客さまＩＤ指定)登録画面初期表示処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean init() throws Exception
	{
		
		JCCWebCommon.getScreenInfo(this);
		
		///// 共有フォームBean設定/////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		///// メッセージ表示処理 /////
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB7090__I;
		String MESSAGE_ID1 = JPCOnlineMessageConstant.EKB7070__I;
		String MESSAGE_ID2 = JPCOnlineMessageConstant.EKB7080__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にメッセージを追加する。
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID,stringArray,"");
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID1,stringArray,"");
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID2,stringArray,"");

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};

		paramBean[0].sendMessageString(WCW01913SFConst.WCTRL_ORDER_CD, X31CWebConst.DATABEAN_SET_VALUE, JWCStrConst.CD_DIV_WCTRL_ORDER_CONTROL);
		//paramBean[0].sendMessageString(WCW01913SFConst.WCTRL_TYPE, X31CWebConst.DATABEAN_SET_VALUE, JWCStrConst.CD_DIV_WCTRL_TRN_CD_REAL);
		paramBean[0].sendMessageString(WCW01913SFConst.WCTRL_TYPE, X31CWebConst.DATABEAN_SET_VALUE, JWCStrConst.CD_DIV_WCTRL_TRN_CD_BAT);
		paramBean[0].sendMessageString(WCW01913SFConst.WCTRL_MODE, X31CWebConst.DATABEAN_SET_VALUE, "0");
		paramBean[0].sendMessageString(WCW01913SFConst.CHRG_FLG, X31CWebConst.DATABEAN_SET_VALUE, JWCStrConst.CD_DIV_WCTRL_CHRG_FLG_CHRG_TRGT);
		paramBean[0].sendMessageString(WCW01913SFConst.RE_SETTEI_FLG, X31CWebConst.DATABEAN_SET_VALUE, JWCStrConst.CD_DIV_WATCH_RE_SETTE_FLG_ADDCHG);
		
		///// 遷移先画面設定処理 /////
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01913);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01913);

		return true;
	}
	
	/**
	 * 登録確認ボタン押下処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean kakunin() 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};

		X31SDataBeanAccessArray grpIdBeanArray = bean.getDataBeanArray(WCW01913SFConst.GRP_ID_INFO);
		if (grpIdBeanArray.getDataBean(0) != null)
		{
			grpIdBeanArray.clearArray();
		}
		X31SDataBeanAccessArray buyCourceBeanArray = bean.getDataBeanArray(WCW01913SFConst.BUY_COURCE_INFO);
		if (buyCourceBeanArray.getDataBean(0) != null)
		{
			buyCourceBeanArray.clearArray();
		}
		X31SDataBeanAccessArray buyOptionCourceBeanArray = bean.getDataBeanArray(WCW01913SFConst.BUY_OPTION_COURCE_INFO);
		if (buyOptionCourceBeanArray.getDataBean(0) != null)
		{
			buyOptionCourceBeanArray.clearArray();
		}
		X31SDataBeanAccessArray buyTiaGrpBeanArray = bean.getDataBeanArray(WCW01913SFConst.BUY_TIA_GRP_INFO);
		if (buyTiaGrpBeanArray.getDataBean(0) != null)
		{
			buyTiaGrpBeanArray.clearArray();
		}
		
		//DataBean内容編集
		paramBean[0].sendMessageString(WCW01913SFConst.WCTRL_REQ_TRN_CD, X31CWebConst.DATABEAN_SET_VALUE, JWCStrConst.CD_DIV_WCTRL_REQ_TRN_CD_GRPID_SVC);
		
		Boolean[] SelectArray = new Boolean[6];
		String[] GrpIdArray = new String[6];
		
		SelectArray[0] = paramBean[0].sendMessageBoolean(WCW01913SFConst.SELECT_1, X31CWebConst.DATABEAN_GET_VALUE);
		GrpIdArray[0] = paramBean[0].sendMessageString(WCW01913SFConst.GRP_ID_1, X31CWebConst.DATABEAN_GET_VALUE);
		SelectArray[1] = paramBean[0].sendMessageBoolean(WCW01913SFConst.SELECT_2, X31CWebConst.DATABEAN_GET_VALUE);
		GrpIdArray[1] = paramBean[0].sendMessageString(WCW01913SFConst.GRP_ID_2, X31CWebConst.DATABEAN_GET_VALUE);
		SelectArray[2] = paramBean[0].sendMessageBoolean(WCW01913SFConst.SELECT_3, X31CWebConst.DATABEAN_GET_VALUE);
		GrpIdArray[2] = paramBean[0].sendMessageString(WCW01913SFConst.GRP_ID_3, X31CWebConst.DATABEAN_GET_VALUE);
		SelectArray[3] = paramBean[0].sendMessageBoolean(WCW01913SFConst.SELECT_4, X31CWebConst.DATABEAN_GET_VALUE);
		GrpIdArray[3] = paramBean[0].sendMessageString(WCW01913SFConst.GRP_ID_4, X31CWebConst.DATABEAN_GET_VALUE);
		SelectArray[4] = paramBean[0].sendMessageBoolean(WCW01913SFConst.SELECT_5, X31CWebConst.DATABEAN_GET_VALUE);
		GrpIdArray[4] = paramBean[0].sendMessageString(WCW01913SFConst.GRP_ID_5, X31CWebConst.DATABEAN_GET_VALUE);
		SelectArray[5] = paramBean[0].sendMessageBoolean(WCW01913SFConst.SELECT_6, X31CWebConst.DATABEAN_GET_VALUE);
		GrpIdArray[5] = paramBean[0].sendMessageString(WCW01913SFConst.GRP_ID_6, X31CWebConst.DATABEAN_GET_VALUE);
		
		paramMap = new HashMap<String, Object>();
		inputMap = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();
		
		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0024");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0024OP");
		
		String[] grp_id_range_cd = {"001", "002","003","004","005","006"};
		
		for(int i = 0 ; i < 6; i++)
		{
			if(SelectArray[i] && (GrpIdArray[i] != null && !"".equals(GrpIdArray[i])))
			{
				paramBean[0].sendMessageString(WCW01913SFConst.GRP_ID, X31CWebConst.DATABEAN_SET_VALUE, GrpIdArray[i]);
				
				//STBグループ一覧照会上りマッピング定義
				mappingForDB_BP_WCSV0024_SET(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, grp_id_range_cd[i]);

				
				///// STBグループ一覧照会サービス呼出処理 /////
				X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
				
				// エラー処理 
				if(msgResult != null)
				{
					JCCWebCommon.setMessageInfo(this, msgResult);
					return true;
				} 

				//STBグループ一覧照会下りマッピング定義
				mappingForDB_BP_WCSV0024_GET(paramBean, outputMap);
				
				// 検索エラーフラグの取得	add 2011/11/11
				String searchErrFlg = JCCWebCommon.getSearchErrFlg("WCSV002401SC", outputMap);
				//グループIDがSTBグループマスタに存在しなければエラーとし、画面遷移しない
				if(!checkGroupID(searchErrFlg)){
					return false;
				}
			}
		}
		
		
		//X31SDataBeanAccessArray stbBeanArray = bean.getDataBeanArray(WCW01913SFConst.STB_INFO);
		X31SDataBeanAccessArray stbBeanArray = bean.getDataBeanArray(WCW01913SFConst.TN_ICRN_INFO);
		
		ArrayList aryBuyCource;
		ArrayList aryBuyOptionCource;
		ArrayList aryBuyCourceSeizoNo;
		ArrayList aryBuyOptionSeizoNo;

		aryBuyCource = new ArrayList();
		aryBuyOptionCource = new ArrayList();
		aryBuyCourceSeizoNo = new ArrayList();
		aryBuyOptionSeizoNo = new ArrayList();
		
		int cntBuyCource = -1;
		int cntBuyOptionCource = -1;
		
		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成。
		paramMap.clear();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0060");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0060OP");
		
		for(int i = 0 ; i < stbBeanArray.getCount(); i++)
		{
			//String strSeizoNo = stbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
			String strSeizoNo = stbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_KK_SEIZO_NO_08, X31CWebConst.DATABEAN_GET_VALUE);
			// OM-2014-0003079 MOD START
			String strTkMdlCd = stbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_TK_MDL_CD_08, X31CWebConst.DATABEAN_GET_VALUE);
			
			mappingForDB_BP_WCSV0060_SET(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, strSeizoNo , strTkMdlCd);

			// OM-2014-0003079 MOD END
			
			///// サービス呼出処理/////
			X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
	
			///// エラー処理 /////
			if(msgResult != null)
			{
				JCCWebCommon.setMessageInfo(this, msgResult);
				return true;
			}

			if ((HashMap)outputMap.get("WCSV006004SC") != null)
			{
				if(!((ArrayList)((HashMap)outputMap.get("WCSV006004SC")).get("EKK0791A010CBSMsg1List")).isEmpty())
				{
					for (int j = 0; j < ((ArrayList)((HashMap)outputMap.get("WCSV006004SC")).get("EKK0791A010CBSMsg1List")).size(); j++)
					{
						cntBuyCource++;
						aryBuyCource.add(cntBuyCource, ((ArrayList)((HashMap)outputMap.get("WCSV006004SC")).get("EKK0791A010CBSMsg1List")).get(j));
						aryBuyCourceSeizoNo.add(cntBuyCource, (String)strSeizoNo);
					}
				}
			}
			// OM-2014-0003079 MOD START
			if ((HashMap)outputMap.get("WCSV006005SC") != null)
			{
			// OM-2014-0003079 MOD START
				if(((HashMap)outputMap.get("WCSV006005SC")).get("EKK0821A010CBSMsg1List") != null && !((ArrayList)((HashMap)outputMap.get("WCSV006005SC")).get("EKK0821A010CBSMsg1List")).isEmpty())
				{
			// OM-2014-0003079 MOD END
					for (int j = 0; j < ((ArrayList)((HashMap)outputMap.get("WCSV006005SC")).get("EKK0821A010CBSMsg1List")).size(); j++)
					{
						cntBuyOptionCource++;
						aryBuyOptionCource.add(cntBuyOptionCource, ((ArrayList)((HashMap)outputMap.get("WCSV006005SC")).get("EKK0821A010CBSMsg1List")).get(j));
						aryBuyOptionSeizoNo.add(cntBuyOptionCource, (String)strSeizoNo);
					}
				}
			}
			
			if ((HashMap)outputMap.get("WCSV006004SC") != null)
			{
				((ArrayList)((HashMap)outputMap.get("WCSV006004SC")).get("EKK0791A010CBSMsg1List")).clear();
			}
			// OM-2014-0003079 MOD START
			if ((HashMap)outputMap.get("WCSV006005SC") != null && (ArrayList)((HashMap)outputMap.get("WCSV006005SC")).get("EKK0821A010CBSMsg1List") != null)
			// OM-2014-0003079 MOD END
			{
				((ArrayList)((HashMap)outputMap.get("WCSV006005SC")).get("EKK0821A010CBSMsg1List")).clear();
			}
		}

		for (int i = 0; i < cntBuyCource + 1; i++) {
			((ArrayList)((HashMap)outputMap.get("WCSV006004SC")).get("EKK0791A010CBSMsg1List")).add(aryBuyCource.get(i));
		}
		for (int i = 0; i < cntBuyOptionCource + 1; i++) {
			((ArrayList)((HashMap)outputMap.get("WCSV006005SC")).get("EKK0821A010CBSMsg1List")).add(aryBuyOptionCource.get(i));
		}
		// OM-2014-0003079 MOD END
		
		///// サービス処理結果の取得/////
		mappingForDB_BP_WCSV0060_GET(paramBean, outputMap);
		
		// 機器製造番号を設定
		buyCourceBeanArray = bean.getDataBeanArray(WCW01913SFConst.BUY_COURCE_INFO);
		buyOptionCourceBeanArray = bean.getDataBeanArray(WCW01913SFConst.BUY_OPTION_COURCE_INFO);
		
		for (int i = 0; i < buyCourceBeanArray.getCount(); i++) {
			X31SDataBeanAccess subBuyCourceBean = buyCourceBeanArray.getDataBean(i);
			//subBuyCourceBean.sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_08, X31CWebConst.DATABEAN_SET_VALUE, (String)aryBuyCourceSeizoNo.get(i));
			subBuyCourceBean.sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_05, X31CWebConst.DATABEAN_SET_VALUE, (String)aryBuyCourceSeizoNo.get(i));
		}
		for (int i = 0; i < buyOptionCourceBeanArray.getCount(); i++) {
			X31SDataBeanAccess subBuyOptionBean = buyOptionCourceBeanArray.getDataBean(i);
			//subBuyOptionBean.sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_09, X31CWebConst.DATABEAN_SET_VALUE, (String)aryBuyOptionSeizoNo.get(i));
			subBuyOptionBean.sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_06, X31CWebConst.DATABEAN_SET_VALUE, (String)aryBuyOptionSeizoNo.get(i));
		}
		
		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();

		///// メッセージ表示処理 /////
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB0370__I;
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "グループID設定登録";
		
		// MESSAGE_LISTにメッセージを追加する。
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		
		MESSAGE_ID = JPCOnlineMessageConstant.EKB9260__I;

		// MESSAGE_LISTにメッセージを追加する。
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID);
		
		// 強調表示
		JCCWebCommon.setMessageAreaBackColor(this, "1");
		
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01914);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01914);
		

		return true;
	}
	
	/**
	 * キャンセルボタン完了処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean cancel() throws Exception
	{
		
		///// 共有フォーム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();
		
		// MESSAGE_LISTにメッセージを追加する。
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID,stringArray,"");
		
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01911);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01911);
		return true;
	}

	/**
	 * 修正ボタン押下処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean syusei() throws Exception 
	{
		
		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		

		///// メッセージ表示処理 /////
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB7090__I;
		String MESSAGE_ID1 = JPCOnlineMessageConstant.EKB7070__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にメッセージを追加する。
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID1, stringArray, "");
		
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01913);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01913);
		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();

		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};

		paramMap = new HashMap<String, Object>();
		inputMap = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();
		
		//比較用項目定義
		String strStbSeizoNo = "";
		String strBuyCourceSeizoNo = "";
		String strBuyOptionSeizoNo = "";
		
		String strTiaGrpCd = "";
		String strTiaGrpNm = "";
		
		//入力情報
		paramBean[0].sendMessageString(WCW01913SFConst.WCTRL_REQ_TRN_CD, X31CWebConst.DATABEAN_SET_VALUE, JWCStrConst.CD_DIV_WCTRL_REQ_TRN_CD_GRPID_SVC);
		Boolean[] SelectArray = new Boolean[6];
		String[] GrpIdArray = new String[6];
		
		SelectArray[0] = paramBean[0].sendMessageBoolean(WCW01913SFConst.SELECT_1, X31CWebConst.DATABEAN_GET_VALUE);
		GrpIdArray[0] = paramBean[0].sendMessageString(WCW01913SFConst.GRP_ID_1, X31CWebConst.DATABEAN_GET_VALUE);
		SelectArray[1] = paramBean[0].sendMessageBoolean(WCW01913SFConst.SELECT_2, X31CWebConst.DATABEAN_GET_VALUE);
		GrpIdArray[1] = paramBean[0].sendMessageString(WCW01913SFConst.GRP_ID_2, X31CWebConst.DATABEAN_GET_VALUE);
		SelectArray[2] = paramBean[0].sendMessageBoolean(WCW01913SFConst.SELECT_3, X31CWebConst.DATABEAN_GET_VALUE);
		GrpIdArray[2] = paramBean[0].sendMessageString(WCW01913SFConst.GRP_ID_3, X31CWebConst.DATABEAN_GET_VALUE);
		SelectArray[3] = paramBean[0].sendMessageBoolean(WCW01913SFConst.SELECT_4, X31CWebConst.DATABEAN_GET_VALUE);
		GrpIdArray[3] = paramBean[0].sendMessageString(WCW01913SFConst.GRP_ID_4, X31CWebConst.DATABEAN_GET_VALUE);
		SelectArray[4] = paramBean[0].sendMessageBoolean(WCW01913SFConst.SELECT_5, X31CWebConst.DATABEAN_GET_VALUE);
		GrpIdArray[4] = paramBean[0].sendMessageString(WCW01913SFConst.GRP_ID_5, X31CWebConst.DATABEAN_GET_VALUE);
		SelectArray[5] = paramBean[0].sendMessageBoolean(WCW01913SFConst.SELECT_6, X31CWebConst.DATABEAN_GET_VALUE);
		GrpIdArray[5] = paramBean[0].sendMessageString(WCW01913SFConst.GRP_ID_6, X31CWebConst.DATABEAN_GET_VALUE);

		//X31SDataBeanAccessArray StbBeanArray = bean.getDataBeanArray(WCW01913SFConst.STB_INFO);
		X31SDataBeanAccessArray StbBeanArray = bean.getDataBeanArray(WCW01913SFConst.TN_ICRN_INFO);
		X31SDataBeanAccessArray BuyCourceBeanArray = bean.getDataBeanArray(WCW01913SFConst.BUY_COURCE_INFO);
		X31SDataBeanAccessArray BuyOptionBeanArray = bean.getDataBeanArray(WCW01913SFConst.BUY_OPTION_COURCE_INFO);

		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0001");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0001OP");

		for(int i = 0 ; i < StbBeanArray.getCount(); i++)
		{
			//strStbSeizoNo = StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
			strStbSeizoNo = StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_KK_SEIZO_NO_08, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 製造番号をキーに、Bean上の「契約済コース情報」「契約済オプションコース情報」の情報を「契約済ティアグループ情報」に統合する。
			int tiaGrpCnt = 0;
			String tiaGrpCd = "";

			X31SDataBeanAccessArray BuyTiaGrpBeanArray = bean.getDataBeanArray(WCW01913SFConst.BUY_TIA_GRP_INFO);
			if (BuyTiaGrpBeanArray.getDataBean(0) != null)
			{
				BuyTiaGrpBeanArray.clearArray();
			}

//			// 契約済コース情報
//			for(int j = 0; j < BuyCourceBeanArray.getCount(); j++)
//			{
//				X31SDataBeanAccess subBuyCourceBean = BuyCourceBeanArray.getDataBean(j);
//				strBuyCourceSeizoNo = subBuyCourceBean.sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_08, X31CWebConst.DATABEAN_GET_VALUE);
//				strTiaGrpCd = subBuyCourceBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_CD_08, X31CWebConst.DATABEAN_GET_VALUE);
//				strTiaGrpNm = subBuyCourceBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_NM_08, X31CWebConst.DATABEAN_GET_VALUE);
//				
//				if(strStbSeizoNo.equals(strBuyCourceSeizoNo) && strTiaGrpCd != null && !"".equals(strTiaGrpCd))
//				{
//					X31SDataBeanAccess subBuyTiaGrpBean = BuyTiaGrpBeanArray.addDataBean();
//					
//					subBuyTiaGrpBean.sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_10, X31CWebConst.DATABEAN_SET_VALUE, strStbSeizoNo);
//					subBuyTiaGrpBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_CD_10, X31CWebConst.DATABEAN_SET_VALUE, strTiaGrpCd);
//					subBuyTiaGrpBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_NM_10, X31CWebConst.DATABEAN_SET_VALUE, strTiaGrpNm);
//
//					tiaGrpCnt++;
//				}
//			}
//			// 契約済オプションコース情報
//			for(int j = 0; j < BuyOptionBeanArray.getCount(); j++)
//			{
//				X31SDataBeanAccess subBuyOptionBean = BuyOptionBeanArray.getDataBean(j);
//				strBuyOptionSeizoNo = subBuyOptionBean.sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_09, X31CWebConst.DATABEAN_GET_VALUE);
//				strTiaGrpCd = subBuyOptionBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_CD_09, X31CWebConst.DATABEAN_GET_VALUE);
//				strTiaGrpNm = subBuyOptionBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_NM_09, X31CWebConst.DATABEAN_GET_VALUE);
//				
//				if(strStbSeizoNo.equals(strBuyOptionSeizoNo) && strTiaGrpCd != null && !"".equals(strTiaGrpCd))
//				{
//					X31SDataBeanAccess subBuyTiaGrpBean = BuyTiaGrpBeanArray.addDataBean();
//					
//					subBuyTiaGrpBean.sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_10, X31CWebConst.DATABEAN_SET_VALUE, strStbSeizoNo);
//					subBuyTiaGrpBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_CD_10, X31CWebConst.DATABEAN_SET_VALUE, strTiaGrpCd);
//					subBuyTiaGrpBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_NM_10, X31CWebConst.DATABEAN_SET_VALUE, strTiaGrpNm);
//
//					tiaGrpCnt++;
//				}
//			}
			// 契約済コース情報
			for(int j = 0; j < BuyCourceBeanArray.getCount(); j++)
			{
				X31SDataBeanAccess subBuyCourceBean = BuyCourceBeanArray.getDataBean(j);
				strBuyCourceSeizoNo = subBuyCourceBean.sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_05, X31CWebConst.DATABEAN_GET_VALUE);
				strTiaGrpCd = subBuyCourceBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_CD_05, X31CWebConst.DATABEAN_GET_VALUE);
				strTiaGrpNm = subBuyCourceBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_NM_05, X31CWebConst.DATABEAN_GET_VALUE);
				
				if(strStbSeizoNo.equals(strBuyCourceSeizoNo) && strTiaGrpCd != null && !"".equals(strTiaGrpCd))
				{
					X31SDataBeanAccess subBuyTiaGrpBean = BuyTiaGrpBeanArray.addDataBean();
					
					subBuyTiaGrpBean.sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_07, X31CWebConst.DATABEAN_SET_VALUE, strStbSeizoNo);
					subBuyTiaGrpBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_CD_07, X31CWebConst.DATABEAN_SET_VALUE, strTiaGrpCd);
					subBuyTiaGrpBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_NM_07, X31CWebConst.DATABEAN_SET_VALUE, strTiaGrpNm);

					tiaGrpCd = strTiaGrpCd;
					tiaGrpCnt++;
				}
			}
			// 契約済オプションコース情報
			for(int j = 0; j < BuyOptionBeanArray.getCount(); j++)
			{
				X31SDataBeanAccess subBuyOptionBean = BuyOptionBeanArray.getDataBean(j);
				strBuyOptionSeizoNo = subBuyOptionBean.sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_06, X31CWebConst.DATABEAN_GET_VALUE);
				strTiaGrpCd = subBuyOptionBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_CD_06, X31CWebConst.DATABEAN_GET_VALUE);
				strTiaGrpNm = subBuyOptionBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_NM_06, X31CWebConst.DATABEAN_GET_VALUE);
				
				if(strStbSeizoNo.equals(strBuyOptionSeizoNo) && strTiaGrpCd != null && !"".equals(strTiaGrpCd))
				{
					X31SDataBeanAccess subBuyTiaGrpBean = BuyTiaGrpBeanArray.addDataBean();
					
					subBuyTiaGrpBean.sendMessageString(WCW01913SFConst.KIKI_SEIZO_NO_07, X31CWebConst.DATABEAN_SET_VALUE, strStbSeizoNo);
					subBuyTiaGrpBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_CD_07, X31CWebConst.DATABEAN_SET_VALUE, strTiaGrpCd);
					subBuyTiaGrpBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_NM_07, X31CWebConst.DATABEAN_SET_VALUE, strTiaGrpNm);

					tiaGrpCd = strTiaGrpCd;
					tiaGrpCnt++;
				}
			}
			// ティアグループが設定されていなければ、実行しない
			if (tiaGrpCnt == 0)
			{
				StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.ERR_NAIYO_08, X31CWebConst.DATABEAN_SET_VALUE, ERR_MESSAGE_TIAGRP_UNKNOWN);
				continue;
			}
			// ティアグループが000のみの場合、実行しない
			else if(tiaGrpCnt == 1)
			{
				//X31SDataBeanAccess tiaGrpBean = bean.getDataBeanArray(WCW01913SFConst.BUY_TIA_GRP_INFO).getDataBean(0);
				//strTiaGrpCd = tiaGrpBean.sendMessageString(WCW01913SFConst.BUY_TIA_GRP_CD_07, X31CWebConst.DATABEAN_GET_VALUE);
				//if(strTiaGrpCd.equals(JWCStrConst.NON_DGTIA_GRP_CD))
				if(tiaGrpCd.equals(JWCStrConst.NON_DGTIA_GRP_CD))
				{
					StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.ERR_NAIYO_08, X31CWebConst.DATABEAN_SET_VALUE, ERR_MESSAGE_TIAGRP_000);
					tiaGrpCd = "";
					continue;
				}
			}
			

//			//入力があれば置換える
//			if(SelectArray[0])
//			{
//				StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_GRP_ID_1_01, 
//						X31CWebConst.DATABEAN_SET_VALUE, GrpIdArray[0]);
//			}
//			if(SelectArray[1])
//			{
//				StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_GRP_ID_2_01, 
//						X31CWebConst.DATABEAN_SET_VALUE, GrpIdArray[1]);
//			}
//			if(SelectArray[2])
//			{
//				StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_GRP_ID_3_01, 
//						X31CWebConst.DATABEAN_SET_VALUE, GrpIdArray[2]);
//			}
//			if(SelectArray[3])
//			{
//				StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_GRP_ID_4_01, 
//						X31CWebConst.DATABEAN_SET_VALUE, GrpIdArray[3]);
//			}
//			if(SelectArray[4])
//			{
//				StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_GRP_ID_5_01, 
//						X31CWebConst.DATABEAN_SET_VALUE, GrpIdArray[4]);
//			}
//			if(SelectArray[5])
//			{
//				StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_GRP_ID_6_01, 
//						X31CWebConst.DATABEAN_SET_VALUE, GrpIdArray[5]);
//			}			//入力があれば置換える
			if(SelectArray[0])
			{
				StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_MATSU_YO_GRPID1_08, 
						X31CWebConst.DATABEAN_SET_VALUE, GrpIdArray[0]);
			}
			if(SelectArray[1])
			{
				StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_MATSU_YO_GRPID2_08, 
						X31CWebConst.DATABEAN_SET_VALUE, GrpIdArray[1]);
			}
			if(SelectArray[2])
			{
				StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_MATSU_YO_GRPID3_08, 
						X31CWebConst.DATABEAN_SET_VALUE, GrpIdArray[2]);
			}
			if(SelectArray[3])
			{
				StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_MATSU_YO_GRPID4_08, 
						X31CWebConst.DATABEAN_SET_VALUE, GrpIdArray[3]);
			}
			if(SelectArray[4])
			{
				StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_MATSU_YO_GRPID5_08, 
						X31CWebConst.DATABEAN_SET_VALUE, GrpIdArray[4]);
			}
			if(SelectArray[5])
			{
				StbBeanArray.getDataBean(i).sendMessageString(WCW01913SFConst.STB_MATSU_YO_GRPID6_08, 
						X31CWebConst.DATABEAN_SET_VALUE, GrpIdArray[5]);
			}
			//マッピング
			mappingForDB_BP_WCSV0001_SET(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, i);
			
			///// サービス呼出処理 /////
			X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
			
			// エラー処理 
			if(msgResult != null)
			{
				JCCWebCommon.setMessageInfo(this, msgResult);
				return true;
			} 
		}
		
		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		///// メッセージ表示処理 /////
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB6990__I;
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "グループID設定登録";
		
		// MESSAGE_LISTにメッセージを追加する。
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");

		MESSAGE_ID = JPCOnlineMessageConstant.EKB9270_KW;
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID);
		
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01915);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01915);
		
		return true;
	}

	/**
	 * 完了ボタン押下処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean fin() throws Exception
	{
		
		///// 共有フォーム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();
		
		// MESSAGE_LISTにメッセージを追加する。
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01911);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01911);
		return true;
	}

	/**
	 * サービスフォームBean項目とSTBグループ一覧照会サービス項目のマッピングを行う
	 * @param  paramBean        DataBean項目の配列
	 * @param  inputMap         上りデータマップ
	 * @param  func_code        機能コード
	 * @param  grp_id_range_cd  グループID値域コード
	 */
	private void mappingForDB_BP_WCSV0024_SET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> inputMap, String func_code, String grp_id_range_cd)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0024_WCSV0024OPDBMapper mapper = new WCSV0024_WCSV0024OPDBMapper();
		mapper.setWCSV002401SC(paramBean, inputMap, func_code, grp_id_range_cd);

		return;
	}
	
	/**
	 * サービスフォームBean項目とSTBグループ一覧照会サービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   下りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0024_GET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> outputMap)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0024_WCSV0024OPDBMapper mapper = new WCSV0024_WCSV0024OPDBMapper();

		mapper.getWCSV002401SC(paramBean, outputMap);
		return;
	}

	// OM-2014-0003079 MOD START
	/**
	 * サービスフォームBean項目とサービス契約ティアグループ一覧照会サービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   上りデータマップ
	 * @param  func_code  機能コード
	 * @param  seizo_no   機器製造番号
	 */
	private void mappingForDB_BP_WCSV0060_SET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> inputMap, String func_code, String seizo_no, String tk_mdl_cd)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0060_WCSV0060OP_01DBMapper mapper = new WCSV0060_WCSV0060OP_01DBMapper();
		mapper.setWCSV006001SC(paramBean, inputMap, func_code, seizo_no , tk_mdl_cd);

		return;
	}
	// OM-2014-0003079 MOD END
	
	/**
	 * サービスフォームBean項目とサービス契約ティアグループ一覧照会サービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   下りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0060_GET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> outputMap)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0060_WCSV0060OP_01DBMapper mapper = new WCSV0060_WCSV0060OP_01DBMapper();

		mapper.getWCSV006004SC(paramBean, outputMap);
		mapper.getWCSV006006SC(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, int index)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0001_WCSV0001OP_12DBMapper mapper = new WCSV0001_WCSV0001OP_12DBMapper();

		mapper.setWCSV000108SC(paramBean, inputMap, func_code, index);
		mapper.setWCSV000109SC(paramBean, inputMap, func_code, index);
		mapper.setWCSV000110SC(paramBean, inputMap, func_code);
		mapper.setWCSV000122SC(paramBean, inputMap, func_code, index);
		return;
	}

	/**
	 * グループIDがSTBマスタに存在するかをチェックします。
	 * @param searchErrFlg 検索エラーフラグ
	 * @return 判定結果
	 */
	private boolean checkGroupID(String searchErrFlg) {

		String MESSAGE_ID = "";
		String[] stringArray = new String[1];
		///// 共有フォームBean設定/////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
		//	MESSAGE_ID = JPCOnlineMessageConstant.EKB0330__I;
			MESSAGE_ID = JPCOnlineMessageConstant.EKB0720_KW;
		}
		else if(JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			MESSAGE_ID = JPCOnlineMessageConstant.EKB0340__I;
		}
		else if(JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
		{
			MESSAGE_ID = JPCOnlineMessageConstant.EKB0350__I;
		}

		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			stringArray = new String[2];
			stringArray[0] = "ＳＴＢグループマスタ";
			stringArray[1] = "指定されたグループＩＤ値";
			// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
			X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
			// MESSAGE_LISTをクリアする。
			commonBeanArray.clearArray();
			JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
			return false;
		}
		else if(!"".equals(MESSAGE_ID)){
			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, "");
			return false;
		}

		return true;
	}
}