/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：FUW00166SFLogic
*   ソースファイル名：FUW00166SFLogic.java
*   作成者          ：富士通
*   日付            ：2018年11月06日
*＜機能概要＞
*   キャンペーン選択画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v39.00.00    2018/11/06   FJ）大島    新規作成
*   v42.00.00    2019/05/15   FJ)大島    【ANK-3642-00-00】スマートリンクタブレット新機種追加（2019年6月〜）
*   v42.00.00    2019/05/30   FJ)大島    【ANK-3606-00-00】201907CP切替案件他
*   v50.00.00    2020/05/14   FJ)大島    【ANK-3832-00-00】202007CP対応
*   v51.00       2020/11/12   FJ）張本   【ANK-3949-00-00】Netflix導入対応（STEP1）
*   v52.00       2021/01/22   FJ）張本   【ANK-3987-00-00】Netflix導入対応（STEP2）
*   v60.00       2022/09/01   FJ) 西川   【ANK-4319-00-00】202210月CP対応
*   v64.00       2023/02/27   FJ) 西川   【ANK-4389-00-00】202304月CP対応
*   v70.00       2024/02/05   FJ) 美濃原 【ANK-4551-00-00】202404CP対応
*   v73.00       2024/09/24   FJ）福山   【ANK-4570-00-00】コンテンツ新規同時申込み時契約仕様見直し対応
*   v74.00       2025/03/19   FJ) 飯田   【ANK-4639-00-00】eo光ネットの一部コース料金改定
**********************************************************************/
package eo.web.webview.FUW00166SF;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.web.x00.JCCBusinessException;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x31.X31CMessageResult.X31CMessageMoreInfo;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JFULinkSettingCache;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.mapping.FUSV0330_FUSV0330OPDBMapper;

/**
 * キャンペーン選択画面サービスフォームBeanビューロジック
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW00166SFLogic extends JCCWebBusinessLogic
{

	/** 確認画面へ戻るボタン表示フラグ:1:表示 */
	private static final String KAKUNIN_BACK_BTN_DSP_FLG_ON = "1";
	/** 戻るボタン表示フラグ:1:表示 */
	private static final String BACK_BTN_DSP_FLG_ON = "1";
// ANK-4570-00-00 ADD START
	/** 戻るボタン表示フラグ:0:非表示 */
	private static final String BACK_BTN_DSP_FLG_OFF = "0";
// ANK-4570-00-00 ADD END
	/** 次へボタン表示フラグ:1:表示 */
	private static final String NEXT_BTN_DSP_FLG_ON = "1";
	/** エラー表示用定数 */
	private static final String ERR_CD_EKF1040_TW = "EKF1040-TW";
	/** エラー表示用定数 */
	private static final String ERR_CD_EKF1590_TW = "EKF1590-KW";
	/** エラー表示用文 */
	private static final String CAMPAIGN = "キャンペーン";
	/** エラー表示用項目ID */
	private static final String CAMPAIGNLIST = "campaign_list";

	/** ユースケースＩＤ　FUSV0330 */
	private static final String USECASE_ID_FUSV0330 = "FUSV0330";
	/** プロパティファイル取得文字列（グループID指定）キャンペーン */
	private static final String CAMPAIGN_PATTERN_START = "DISPSETTING/SETTING[@screenId='COMMONSETTING']/DISPTEXT[@groupid='CMP_";
	private static final String CAMPAIGN_PATTERN_END = "']";
	/** 属性名 */
	private static final String QUERY_ATTR_NAME = "id";
	
	/**
	 * 初期処理
	 * 
	 * @return true
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// 画面情報を取得し、サービスフォームBeanに設定
		JCCWebCommon.getScreenInfo(this);

		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// WEB新規
		X31SDataBeanAccessArray webnewList = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		X31SDataBeanAccess webnewBean = webnewList.getDataBean(0);

		// WEB割キャンペーンリスト
		String campaignDispDefine = JFUWebCommon.getWebWariCampList(JCCWebCommon.getOpeDate(this, null));
		List<String> webWariCmpList = new ArrayList<String>();
		if (campaignDispDefine != null)
		{
			webWariCmpList = Arrays.asList(campaignDispDefine.split(","));
		}

		// WEB割特別キャンペーンリスト
		String spCampaignDispDefine = JFUWebCommon.getDispText("COMMONSETTING", "WEB_WARI_SP_CAMP_LIST");
		List<String> webWariSpeCmpList = new ArrayList<String>();
		if (spCampaignDispDefine != null)
		{
			webWariSpeCmpList = Arrays.asList(spCampaignDispDefine.split(","));
		}

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
		// 選択キャンペーンリストを作成
		campaignListEdit(serviceFormBean, webnewBean, webWariSpeCmpList);
		// キャンペーン注釈リストを作成
		// ANK-3642-00-00 MOD START
		campaignTextEdit(serviceFormBean, webnewBean, webWariSpeCmpList);
		// ANK-3642-00-00 MOD END

		// 選択キャンペーンエリア
		boolean isSelectCampaign = false;
		X31SDataBeanAccessArray campaignSelectList = serviceFormBean.getDataBeanArray(FUW00166SFConst.CAMPAIGN_LIST);
		Integer campaignSelectListCount = campaignSelectList.getCount();
		if (campaignSelectList != null && campaignSelectListCount > 0)
		{
			for (int i = 0; i < campaignSelectListCount; i++)
			{
				X31SDataBeanAccess campaignInfo = campaignSelectList.getDataBean(i);
				String campaignCd = campaignInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

				// 選択されているキャンペーンを設定
				X31SDataBeanAccessArray hanyoCdListBeanArray = webnewBean.getDataBeanArray(CommonInfoCFConst.HANYO_CD_LIST);
				if (hanyoCdListBeanArray != null)
				{
					for (int k = 0; k < hanyoCdListBeanArray.getCount(); k++)
					{
						// 汎用コードリストを取得
						X31SDataBeanAccess hanyoInfoBean = hanyoCdListBeanArray.getDataBean(k);
						String selectHanyoCd = hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_CD_46, X31CWebConst.DATABEAN_GET_VALUE);

						if (campaignCd.startsWith(selectHanyoCd))
						{
							serviceFormBean.sendMessageString(FUW00166SFConst.CAMPAIGN_SELECT, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i));
							isSelectCampaign = true;
						}
					}
				}
			}

			if (!isSelectCampaign)
			{
				for (int i = 0; i < campaignSelectListCount; i++)
				{
					X31SDataBeanAccess campaignInfo = campaignSelectList.getDataBean(i);
					String campaignCd = campaignInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

					if (webWariCmpList.contains(campaignCd))
					{
						serviceFormBean.sendMessageString(FUW00166SFConst.CAMPAIGN_SELECT, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i));
					}
				}
			}
		}

		// 特別キャンペーンエリア
		boolean isSelectSpCampaign = false;
		X31SDataBeanAccessArray spCampaignSelectList = serviceFormBean.getDataBeanArray(FUW00166SFConst.SP_CAMPAIGN_LIST);
		Integer spCampaignSelectListCount = spCampaignSelectList.getCount();
		if (spCampaignSelectList != null && spCampaignSelectListCount > 0)
		{
			for (int j = 0; j < spCampaignSelectListCount; j++)
			{
				X31SDataBeanAccess spCampaignInfo = spCampaignSelectList.getDataBean(j);
				String spCampaignCd = spCampaignInfo.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_CD_03, X31CWebConst.DATABEAN_GET_VALUE);

				// 選択されているキャンペーンを設定
				X31SDataBeanAccessArray hanyoCdListBeanArray = webnewBean.getDataBeanArray(CommonInfoCFConst.HANYO_CD_LIST);
				if (hanyoCdListBeanArray != null)
				{
					for (int k = 0; k < hanyoCdListBeanArray.getCount(); k++)
					{
						// 汎用コードリストを取得
						X31SDataBeanAccess hanyoInfoBean = hanyoCdListBeanArray.getDataBean(k);
						String selectHanyoCd = hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_CD_46, X31CWebConst.DATABEAN_GET_VALUE);

						if (spCampaignCd.startsWith(selectHanyoCd))
						{
							serviceFormBean.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_SELECT, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(j));
							isSelectSpCampaign = true;
						}
					}
				}
			}

			if (!isSelectSpCampaign)
			{
				serviceFormBean.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_SELECT, X31CWebConst.DATABEAN_SET_VALUE, "0");
			}
		}

		// 画面遷移モード：1:確認画面遷移の場合
		if (webnewBean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_GET_VALUE).equals(JFUStrConst.SCREEN_MODE_KAKUNIN))
		{
			// 確認画面へ戻るボタン表示
			serviceFormBean.sendMessageString(FUW00166SFConst.KAKUNIN_BACK_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, KAKUNIN_BACK_BTN_DSP_FLG_ON);
		}
		// 画面遷移モード：0:通常遷移の場合
		else if (webnewBean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_GET_VALUE).equals(JFUStrConst.SCREEN_MODE_DEF))
		{
// ANK-4570-00-00 MOD START
			boolean tvSingleflg = tvSingleCheck(commonInfoBean);

			// FUW00117(登録完了)から遷移してきた場合(テレビ単独(地デジ・BS、WiFi・WiMAX&白ロム)
			if (tvSingleflg)
			{
				serviceFormBean.sendMessageString(FUW00166SFConst.BACK_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, BACK_BTN_DSP_FLG_OFF);
			}
			else
			// それ以外
			{
				serviceFormBean.sendMessageString(FUW00166SFConst.BACK_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, BACK_BTN_DSP_FLG_ON);
			}
// ANK-4570-00-00 MOD END
			
			// 次へボタン表示
			serviceFormBean.sendMessageString(FUW00166SFConst.NEXT_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, NEXT_BTN_DSP_FLG_ON);
		}

		// その他情報を取得
		X31SDataBeanAccess elseInfoBean = webnewBean.getDataBeanArray(CommonInfoCFConst.ELSE_INFO).getDataBean(0);
		// 処理結果コード
		String resultCode = elseInfoBean.sendMessageString(CommonInfoCFConst.CAMPAIGN_RESULTCODE_18, X31CWebConst.DATABEAN_GET_VALUE);

		// キャンペーン選択.処理結果コードが "1" (キャンペーン存在チェックエラー) の場合
		if ("1".equals(resultCode))
		{
			// 指定されたキャンペーンは存在しません。
			JCCWebCommon.setMessageInfo(this, ERR_CD_EKF1040_TW, new String[] { CAMPAIGN }, CAMPAIGNLIST);

			// 処理結果コードを初期化する。
			elseInfoBean.sendMessageString(CommonInfoCFConst.CAMPAIGN_RESULTCODE_18, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		// 共有フォームBean.キャンペーン選択.処理結果コードが "2" (受付期間外) の場合
		if ("2".equals(resultCode))
		{
			// 指定されたキャンペーンは受付期間外です。
			JCCWebCommon.setMessageInfo(this, ERR_CD_EKF1590_TW, new String[] { CAMPAIGN }, CAMPAIGNLIST);

			// 処理結果コードを初期化する。
			elseInfoBean.sendMessageString(CommonInfoCFConst.CAMPAIGN_RESULTCODE_18, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		// 申込受付実績登録部品実行
		JFUWebCommon.executeWebMskmUkJskAdd(this);

		return true;
	}

	/**
	 * 次へボタン押下
	 * 
	 * @return 必ずtrue
	 * @throws Exception
	 */
	public boolean next() throws Exception
	{
		// 画面情報を取得し、サービスフォームBeanに設定
		JCCWebCommon.getScreenInfo(this);
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		// WEB新規
		X31SDataBeanAccessArray webnewList = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		X31SDataBeanAccess webnewBean = webnewList.getDataBean(0);
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		// 共有フォームBeanに選択されたキャンペーンを設定する。
		setSelectCampaign(serviceFormBean, webnewBean);

		// サービス呼び出し
		if (!callService(serviceFormBean, commonInfoBean))
		{
			return true;
		}

		// お支払い方法入力画面へ遷移
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00115);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00115);

		return true;
	}

	/**
	 * 戻るボタン押下
	 * 
	 * @return true
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// WEB新規
		X31SDataBeanAccessArray webnewList = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		X31SDataBeanAccess webnewBean = webnewList.getDataBean(0);

		// 契約サービス情報
		X31SDataBeanAccessArray keiyakuSvcInfoList = webnewBean.getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		X31SDataBeanAccess keiyakuSvcInfoBean = keiyakuSvcInfoList.getDataBean(0);

		// 共有フォームBeanにデータを設定
		webnewBean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.SCREEN_MODE_DEF);

		// クリア処理
		JFUWebCommon.comClear(this);
		webnewBean.getDataBeanArray(CommonInfoCFConst.HANYO_CD_LIST).clearArray();

		// テレビコース（ｅｏ光テレビ入力）
		// ■共有フォームBean.ｅｏ光テレビ
		X31SDataBeanAccessArray bean_array = webnewBean.getDataBeanArray(CommonInfoCFConst.EOTV);
		X31SDataBeanAccess eo_tv_bean = bean_array.getDataBean(0);
		String tvCrs = eo_tv_bean.sendMessageString(CommonInfoCFConst.EO_TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE);
		// 申込区分
		String mskmKbn = webnewBean.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, X31CWebConst.DATABEAN_GET_VALUE);

// ANK-4570-00-00 MOD START
		// 選択サービス(テレビ)が1:選択の場合
		if (keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TV_10, X31CWebConst.DATABEAN_GET_VALUE).equals(
				JFUStrConst.SELECT_SVC_TV_CHOICE) && JFUStrConst.EO_TV_COURSE_BASIC.equals(tvCrs))
// ANK-4570-00-00 MOD END
		{
			// eo光テレビオプション選択画面へ遷移
			JCCWebCommon.setScreenId(this, JFUScreenConst.SCREEN_ID_FUW00166, JFUScreenConst.SCREEN_ID_FUW00120);
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00120);
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00120);
		}
		// 選択サービス(電話)が1:選択の場合
		else if (keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TEL_10, X31CWebConst.DATABEAN_GET_VALUE).equals(
				JFUStrConst.SELECT_SVC_TEL_CHOICE))
		{
			// eo光電話オプション選択画面へ遷移
			JCCWebCommon.setScreenId(this, JFUScreenConst.SCREEN_ID_FUW00166, JFUScreenConst.SCREEN_ID_FUW00119);
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00119);
			commonInfoBean
					.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00119);
		}
		else
		{

			// eo光ネットオプション選択画面へ遷移
			JCCWebCommon.setScreenId(this, JFUScreenConst.SCREEN_ID_FUW00166, JFUScreenConst.SCREEN_ID_FUW00118);
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00118);
			commonInfoBean
					.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00118);
		}

		return true;

	}

	/**
	 * 確認画面へ戻るボタン押下
	 * 
	 * @return true
	 * @throws Exception
	 */
	public boolean backKakunin() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		// WEB新規
		X31SDataBeanAccessArray webnewList = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		X31SDataBeanAccess webnewBean = webnewList.getDataBean(0);
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		// 共有フォームBeanに選択されたキャンペーンを設定する。
		setSelectCampaign(serviceFormBean, webnewBean);
		
		// サービス呼び出し
		if (!callService(serviceFormBean, commonInfoBean))
		{
			return true;
		}

		// お支払い方法確認へ遷移
		// 遷移先画面IDを設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00116);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00116);

		return true;
	}

	/**
	 * キャンペーン選択CCを呼び出す
	 * @param serviceFormBean
	 * @param commonInfoBean
	 * @return
	 * @throws Exception
	 */
	private boolean callService(X31SDataBeanAccess serviceFormBean, X31SDataBeanAccess commonInfoBean) throws Exception
	{
		HashMap<String, String> paramMap = new HashMap<String, String>();
		// ユースケースID
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_FUSV0330);
		// 機能コード:2
		paramMap.put(JCMConstants.FUNC_CODE_KEY, JPCModelConstant.FUNC_CD_2);
		// 設定値格納用マップを生成。
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		X31SDataBeanAccess[] paramBean = { commonInfoBean, serviceFormBean };
		// DataBean-BPマッピング
		FUSV0330_FUSV0330OPDBMapper mapper = new FUSV0330_FUSV0330OPDBMapper();
		// WEB新規
		X31SDataBeanAccessArray webnewList = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		X31SDataBeanAccess webnewBean = webnewList.getDataBean(0);
		if (webnewBean.getDataBeanArray(CommonInfoCFConst.HANYO_CD_LIST).getCount() > 0)
		{
			// サービスの入力値設定
			mapper.setFUSV033002CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		}
		try
		{
			// サービス呼出
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException e)
		{
			// 例外詳細情報を取得
			X31CMessageMoreInfo[] moreInfo = e.getMessageList().getMessageMoreInfoList();
			// メッセージ詳細情報クラスを取得
			// (関連チェック系は必ずエラーが1つのため0番目から取得する)
			X31CMessageMoreInfo info = moreInfo[0];

			String itemid = info.getItemId();
			String status = info.getStatus();
			String errFlg = info.getItemCheckErr();

			if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(status))
			{
				if (JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg))
				{
					if ("notfound".equals(itemid))
					{
						// データなし
						JCCWebCommon.setMessageInfo(this, ERR_CD_EKF1040_TW, new String[] { CAMPAIGN }, CAMPAIGNLIST);
						return false;
					} else if("outofrange".equals(itemid))
					{
						// キャンペーン適用期間外
						JCCWebCommon.setMessageInfo(this, ERR_CD_EKF1590_TW, new String[] { CAMPAIGN }, CAMPAIGNLIST);
						return false;
					}
				}
			}
			// 上記以外の場合システムエラーをスロー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}
		return true;
	}

	/**
	 * 
	 * キャンペーン選択リストの作成
	 * @param serviceFormBean
	 * @param webnewBean
	 * @param webWariSpeCmpList WEB割特別キャンペーンリスト
	 * @throws Exception
	 */
	private void campaignListEdit(X31SDataBeanAccess serviceFormBean, X31SDataBeanAccess webnewBean, List<String> webWariSpeCmpList) throws Exception
	{
		// キャンペーンリストをクリア
		X31SDataBeanAccessArray campaignSelectList = serviceFormBean.getDataBeanArray(FUW00166SFConst.CAMPAIGN_LIST);
		campaignSelectList.clearArray();

		// 特別キャンペーンリストをクリア
		X31SDataBeanAccessArray spCampaignSelectList = serviceFormBean.getDataBeanArray(FUW00166SFConst.SP_CAMPAIGN_LIST);
		spCampaignSelectList.clearArray();

		// 選択可能キャンペーンリストを取得
		X31SDataBeanAccessArray campaignList = webnewBean.getDataBeanArray(CommonInfoCFConst.CAMPAIGN_LIST);

		String opeDate = JCCWebCommon.getOpeDate(this, null);

		// キャンペーンリストを設定
		for (int i = 0; i < campaignList.getCount(); i++)
		{
			// 共有フォームBean.選択可能キャンペーン
			X31SDataBeanAccess campaignInfo = campaignList.getDataBean(i);
			String campaignCd = campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_CD_66, X31CWebConst.DATABEAN_GET_VALUE);

			// キャンペーンが表示対象でない場合
			if (!JFUWebCommon.isCampaignDisp(webnewBean, campaignCd, JCCWebCommon.getOpeDate(this, null)))
			{
				continue;
			}

			// タブレット用のキャンペーンを表示
			if (JFUWebCommon.isTabletCampaign(campaignCd))
			{
				setTabletCampaign(webnewBean, campaignSelectList, campaignCd);
				continue;
			}

			if (webWariSpeCmpList.contains(campaignCd))
			{
				// 特別キャンペーンエリア

				X31SDataBeanAccess spCampaignSelectInfo = spCampaignSelectList.addDataBean();
				// 特別キャンペーンコード
				spCampaignSelectInfo.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_CD_03, X31CWebConst.DATABEAN_SET_VALUE, campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_CD_66,
						X31CWebConst.DATABEAN_GET_VALUE));
				// 特別キャンペーン名称
				spCampaignSelectInfo.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_NM_03, X31CWebConst.DATABEAN_SET_VALUE, campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_NM_66,
						X31CWebConst.DATABEAN_GET_VALUE));
				// 受付開始日
				spCampaignSelectInfo.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_STA_DTM_03, X31CWebConst.DATABEAN_SET_VALUE, campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_STA_DTM_66,
						X31CWebConst.DATABEAN_GET_VALUE));
				// 受付終了日
				spCampaignSelectInfo.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_END_DTM_03, X31CWebConst.DATABEAN_SET_VALUE, campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_END_DTM_66,
						X31CWebConst.DATABEAN_GET_VALUE));
				// 特別キャンペーン種別コード
				spCampaignSelectInfo.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_SBT_CD_03, X31CWebConst.DATABEAN_SET_VALUE, campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_SBT_CD_66,
						X31CWebConst.DATABEAN_GET_VALUE));

				// 複数特別キャンペーン表示の場合、プロパティより取得する
				Map<String, String> servicenameMap = JFUWebCommon.getDispItemsAsMap(CAMPAIGN_PATTERN_START + campaignCd + CAMPAIGN_PATTERN_END, QUERY_ATTR_NAME);
				for (Map.Entry<String, String> entry : servicenameMap.entrySet())
				{
					if (entry.getKey().equals("group_cd"))
					{
						// 特別キャンペーンコード
						spCampaignSelectInfo.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_CD_03, X31CWebConst.DATABEAN_SET_VALUE, entry.getValue());
					}
					if (entry.getKey().equals("group_nm"))
					{
						// 特別キャンペーン名称
						spCampaignSelectInfo.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_NM_03, X31CWebConst.DATABEAN_SET_VALUE, entry.getValue());
					}
				}
			}
			else
			{
				// 選択キャンペーンエリア

				X31SDataBeanAccess campaignSelectInfo = campaignSelectList.addDataBean();
				// キャンペーンコード
				campaignSelectInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_CD_66,
						X31CWebConst.DATABEAN_GET_VALUE));
				// キャンペーン名称
				campaignSelectInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_NM_01, X31CWebConst.DATABEAN_SET_VALUE, campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_NM_66,
						X31CWebConst.DATABEAN_GET_VALUE));
				// 受付開始日
				campaignSelectInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_STA_DTM_01, X31CWebConst.DATABEAN_SET_VALUE, campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_STA_DTM_66,
						X31CWebConst.DATABEAN_GET_VALUE));
				// 受付終了日
				campaignSelectInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_END_DTM_01, X31CWebConst.DATABEAN_SET_VALUE, campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_END_DTM_66,
						X31CWebConst.DATABEAN_GET_VALUE));
				// キャンペーン種別コード
				campaignSelectInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_SBT_CD_01, X31CWebConst.DATABEAN_SET_VALUE, campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_SBT_CD_66,
						X31CWebConst.DATABEAN_GET_VALUE));

				// 複数キャンペーン表示の場合、プロパティより取得する
				Map<String, String> servicenameMap = JFUWebCommon.getDispItemsAsMap(CAMPAIGN_PATTERN_START + campaignCd + CAMPAIGN_PATTERN_END, QUERY_ATTR_NAME);
				for (Map.Entry<String, String> entry : servicenameMap.entrySet())
				{
					// idが「"group_cd_"」+「開始日」+「"_"」+「終了日」の場合は、運用日付が有効範囲内の値を処理対象とする。
					if (entry.getKey().startsWith("group_cd_"))
					{
						String[] groupCdInfo = entry.getKey().split("_");
						if (groupCdInfo.length == 4 && Integer.parseInt(groupCdInfo[2]) <= Integer.parseInt(opeDate) && Integer.parseInt(opeDate) <= Integer.parseInt(groupCdInfo[3]))
						{
							// キャンペーンコード
							campaignSelectInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, entry.getValue());
						}
					}

					if (entry.getKey().equals("group_cd"))
					{
						// キャンペーンコード
						campaignSelectInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, entry.getValue());
					}
					if (entry.getKey().equals("group_nm"))
					{
						// キャンペーン名称
						campaignSelectInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_NM_01, X31CWebConst.DATABEAN_SET_VALUE, entry.getValue());
					}
				}
			}
		}
	}

	/**
	 * タブレット割引情報を追加
	 * @param webnewBean
	 * @param campaignSelectList
	 * @param campaignCd
	 * @throws Exception
	 */
	private void setTabletCampaign(X31SDataBeanAccess webnewBean, X31SDataBeanAccessArray campaignSelectList, String campaignCd)
			throws Exception
	{
		// タブレット割引情報を追加
		HashMap<String, String> tabletCamPaignMap = JFUWebCommon.getTabletCampaignInfo(webnewBean, JCCWebCommon.getOpeDate(this, null));

		if (!tabletCamPaignMap.isEmpty())
		{
			String waribikiSvcCd = tabletCamPaignMap.get("waribikiSvcCd");
			String waribikiSvcName = tabletCamPaignMap.get("waribikiSvcName");
			if (!JFUWebCommon.isNull(waribikiSvcCd) && campaignCd.equals(waribikiSvcCd))
			{
				campaignSelectList.addDataBean();
				X31SDataBeanAccess campaignSelectInfo = campaignSelectList.getDataBean(campaignSelectList.getCount() - 1);
				// キャンペーンコード
				campaignSelectInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, waribikiSvcCd);
				// キャンペーン名称
				campaignSelectInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_NM_01, X31CWebConst.DATABEAN_SET_VALUE, waribikiSvcName);
				// 受付開始日
				campaignSelectInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_STA_DTM_01, X31CWebConst.DATABEAN_SET_VALUE, "");
				// 受付終了日
				campaignSelectInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_END_DTM_01, X31CWebConst.DATABEAN_SET_VALUE, "");
				// キャンペーン種別コード
				campaignSelectInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_SBT_CD_01, X31CWebConst.DATABEAN_SET_VALUE, "2");
			}
		}
	}

	/**
	 * キャンペーン注釈リストの出力
	 * @param serviceFormBean
	 * @param webnewBean
	 * @param webWariSpeCmpList WEB割特別キャンペーンリスト
	 * @throws Exception
	 */
	private void campaignTextEdit(X31SDataBeanAccess serviceFormBean, X31SDataBeanAccess webnewBean, List<String> webWariSpeCmpList) throws Exception
	{
		// 選択可能キャンペーンリストを取得
		X31SDataBeanAccessArray campaignList = webnewBean.getDataBeanArray(CommonInfoCFConst.CAMPAIGN_LIST);
		// キャンペーン注釈リストをクリア
		serviceFormBean.getDataBeanArray(FUW00166SFConst.CAMPAIGN_TEXT_LIST).clearArray();
		X31SDataBeanAccessArray campaignTextList = serviceFormBean.getDataBeanArray(FUW00166SFConst.CAMPAIGN_TEXT_LIST);

		// 特別キャンペーン注釈リストをクリア
		serviceFormBean.getDataBeanArray(FUW00166SFConst.SP_CAMPAIGN_TEXT_LIST).clearArray();
		X31SDataBeanAccessArray spCampaignTextList = serviceFormBean.getDataBeanArray(FUW00166SFConst.SP_CAMPAIGN_TEXT_LIST);

		// リンクプロパティのインスタンス作成
		JFULinkSettingCache linkProp = JFULinkSettingCache.getInstance();

		String opeDate = JCCWebCommon.getOpeDate(this, null);

		// タブレット割引情報を追加
		HashMap<String, String> tabletCamPaignMap = JFUWebCommon.getTabletCampaignInfo(webnewBean, JCCWebCommon.getOpeDate(this, null));
		String waribikiSvcCd = JFUStrConst.EMPTY;
		String waribikiSvcName = JFUStrConst.EMPTY;
		String waribikiSvcInfo = JFUStrConst.EMPTY;
		String waribikiSvcLink = JFUStrConst.EMPTY;
		if (!tabletCamPaignMap.isEmpty())
		{
			waribikiSvcCd = tabletCamPaignMap.get("waribikiSvcCd");
			waribikiSvcName = tabletCamPaignMap.get("waribikiSvcName");
			waribikiSvcInfo = tabletCamPaignMap.get("waribikiSvcInfo");
			waribikiSvcLink = tabletCamPaignMap.get("waribikiSvcLink");
		}

		for (int i = 0; i < campaignList.getCount(); i++)
		{
			// 共有フォームBean.選択可能キャンペーン
			X31SDataBeanAccess campaignInfo = campaignList.getDataBean(i);
			String campaignCd = campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_CD_66, X31CWebConst.DATABEAN_GET_VALUE);
			// プロパティよりキャンペーンの注釈を取得
			String campaignText = null;
			String campaignTitle = null;
			String campaignLinkId = null;
// ANK-3642-00-00 MOD START
			if (!JFUWebCommon.isNull(waribikiSvcCd) && waribikiSvcCd.equals(campaignCd))
			{
				campaignTitle = waribikiSvcName;
				campaignText = waribikiSvcInfo;
				campaignTitle = waribikiSvcName;
				String strlink = linkProp.getLink(JFUScreenConst.SCREEN_ID_FUW00166, waribikiSvcLink);
				campaignLinkId = strlink;
			}
			else
			{
				Map<String, String> servicenameMap =
						JFUWebCommon.getDispItemsAsMap(CAMPAIGN_PATTERN_START + campaignCd + CAMPAIGN_PATTERN_END, QUERY_ATTR_NAME);
				for (Map.Entry<String, String> entry : servicenameMap.entrySet())
				{
					if (entry.getKey().equals("disp"))
					{
						campaignTitle = entry.getValue();
					}
					if (entry.getKey().equals("text"))
					{
						campaignText = entry.getValue();
					}
					// idが「"text_"」+「開始日」+「"_"」+「終了日」の場合は、運用日付が有効範囲内の値を処理対象とする。
					if (entry.getKey().startsWith("text_"))
					{
						String[] textInfo = entry.getKey().split("_");
						if (textInfo.length == 3 && Integer.parseInt(textInfo[1]) <= Integer.parseInt(opeDate) && Integer.parseInt(opeDate) <= Integer.parseInt(textInfo[2]))
						{
							campaignText = entry.getValue();
						}
					}
					if (entry.getKey().equals("link_id"))
					{
						String strlink = linkProp.getLink(JFUScreenConst.SCREEN_ID_FUW00166, entry.getValue());
						campaignLinkId = strlink;
					}

					// idが「"group_cd_"」+「開始日」+「"_"」+「終了日」の場合は、運用日付が有効範囲内の値を処理対象とする。
					if (entry.getKey().startsWith("group_cd_"))
					{
						String[] groupCdInfo = entry.getKey().split("_");
						if (groupCdInfo.length == 4 && Integer.parseInt(groupCdInfo[2]) <= Integer.parseInt(opeDate) && Integer.parseInt(opeDate) <= Integer.parseInt(groupCdInfo[3]))
						{
							campaignCd = entry.getValue();
						}
					}

					if (entry.getKey().equals("group_cd"))
					{
						campaignCd = entry.getValue();
					}
				}
			}
// ANK-3642-00-00 MOD END

			// キャンペーン注釈を設定する。
			if (webWariSpeCmpList.contains(campaignCd))
			{
				// 特別キャンペーン注釈エリア

				spCampaignTextList.addDataBean();
				X31SDataBeanAccess spCampaignTextInfo = spCampaignTextList.getDataBean(spCampaignTextList.getCount() - 1);
				spCampaignTextInfo.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_TITLE_04, X31CWebConst.DATABEAN_SET_VALUE, campaignTitle);
				spCampaignTextInfo.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_TEXT_04, X31CWebConst.DATABEAN_SET_VALUE, campaignText);
				spCampaignTextInfo.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_LINK_04, X31CWebConst.DATABEAN_SET_VALUE, campaignLinkId);
				spCampaignTextInfo.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_CD_CTL_04, X31CWebConst.DATABEAN_SET_VALUE, campaignCd);

			}
			else
			{
				// 選択キャンペーン注釈エリア

				campaignTextList.addDataBean();
				X31SDataBeanAccess campaignTextInfo = campaignTextList.getDataBean(campaignTextList.getCount() - 1);
				campaignTextInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_TITLE_02, X31CWebConst.DATABEAN_SET_VALUE, campaignTitle);
				campaignTextInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_TEXT_02, X31CWebConst.DATABEAN_SET_VALUE, campaignText);
				campaignTextInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_LINK_02, X31CWebConst.DATABEAN_SET_VALUE, campaignLinkId);
				campaignTextInfo.sendMessageString(FUW00166SFConst.CAMPAIGN_CD_CTL_02, X31CWebConst.DATABEAN_SET_VALUE, campaignCd);
			}
		}
	}

	/**
	 * 共有フォームBeanに選択されたキャンペーンを設定する。
	 * @param serviceFormBean
	 * @param webnewBean
	 * @throws Exception 
	 */
	private void setSelectCampaign(X31SDataBeanAccess serviceFormBean, X31SDataBeanAccess webnewBean) throws Exception
	{
		// 汎用コードリストをクリア
		X31SDataBeanAccessArray hanyoInfoBeanList = webnewBean.getDataBeanArray(CommonInfoCFConst.HANYO_CD_LIST);
		// TODO: 汎用コードリストクリア
		hanyoInfoBeanList.clearArray();

		// 選択されているキャンペーンコードを取得
		String selectIndex = serviceFormBean.sendMessageString(FUW00166SFConst.CAMPAIGN_SELECT, X31CWebConst.DATABEAN_GET_VALUE);
		if (!JFUWebCommon.isNull(selectIndex) || !JFUStrConst.EMPTY.equals(selectIndex))
		{
			// 選択キャンペーンエリア

			// キャンペーン数が4桁超えたらシステムエラーとする。
			if (selectIndex.length() > 4)
			{
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
			}
			X31SDataBeanAccessArray campaignBeanList = serviceFormBean.getDataBeanArray(FUW00166SFConst.CAMPAIGN_LIST);
			X31SDataBeanAccess campaignInfoBean = campaignBeanList.getDataBean(Integer.parseInt(selectIndex));
			String selectCampaignCd = campaignInfoBean.sendMessageString(FUW00166SFConst.CAMPAIGN_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			String selectCampaignNm = campaignInfoBean.sendMessageString(FUW00166SFConst.CAMPAIGN_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
			String selectCampaignStaDtm = campaignInfoBean.sendMessageString(FUW00166SFConst.CAMPAIGN_STA_DTM_01, X31CWebConst.DATABEAN_GET_VALUE);
			String selectCampaignEndDtm = campaignInfoBean.sendMessageString(FUW00166SFConst.CAMPAIGN_END_DTM_01, X31CWebConst.DATABEAN_GET_VALUE);
			String selectCampaignSbtCd = campaignInfoBean.sendMessageString(FUW00166SFConst.CAMPAIGN_SBT_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 選択可能キャンペーンリストを取得
			X31SDataBeanAccessArray campaignList = webnewBean.getDataBeanArray(CommonInfoCFConst.CAMPAIGN_LIST);
			// キャンペーンリストを設定
			for (int i = 0; i < campaignList.getCount(); i++)
			{
				// 共有フォームBean.選択可能キャンペーン
				X31SDataBeanAccess campaignInfo = campaignList.getDataBean(i);
				String campaignCd = campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_CD_66, X31CWebConst.DATABEAN_GET_VALUE);

				// キャンペーンが表示対象でない場合
				if (!selectCampaignCd.startsWith(campaignCd) && !selectCampaignCd.endsWith(campaignCd))
				{
					continue;
				}
				// 選択したキャンペーンが複数の場合
				if (!selectCampaignCd.equals(campaignCd))
				{
					// 共有フォームBeanから取り直す
					selectCampaignNm = campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_NM_66, X31CWebConst.DATABEAN_GET_VALUE);
					selectCampaignStaDtm = campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_STA_DTM_66, X31CWebConst.DATABEAN_GET_VALUE);
					selectCampaignEndDtm = campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_END_DTM_66, X31CWebConst.DATABEAN_GET_VALUE);
					selectCampaignSbtCd = campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_SBT_CD_66, X31CWebConst.DATABEAN_GET_VALUE);
				}
				
				// 汎用コードリストに選択されたキャンペーン情報を設定
				X31SDataBeanAccess hanyoInfoBean =  hanyoInfoBeanList.addDataBean();
				hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_CD_46, X31CWebConst.DATABEAN_SET_VALUE, campaignCd);
				hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_NM_46, X31CWebConst.DATABEAN_SET_VALUE, selectCampaignNm);
				hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_STA_DTM_46, X31CWebConst.DATABEAN_SET_VALUE, selectCampaignStaDtm);
				hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_END_DTM_46, X31CWebConst.DATABEAN_SET_VALUE, selectCampaignEndDtm);
				hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_SBT_CD_46, X31CWebConst.DATABEAN_SET_VALUE, selectCampaignSbtCd);
			}
		}

		// 選択されている特別キャンペーンコードを取得
		String selectSpCmpIndex = serviceFormBean.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_SELECT, X31CWebConst.DATABEAN_GET_VALUE);
		if (!JFUWebCommon.isNull(selectSpCmpIndex) || !JFUStrConst.EMPTY.equals(selectSpCmpIndex))
		{
			// 特別キャンペーンエリア

			X31SDataBeanAccessArray spCampaignBeanList = serviceFormBean.getDataBeanArray(FUW00166SFConst.SP_CAMPAIGN_LIST);
			X31SDataBeanAccess spCampaignInfoBean = spCampaignBeanList.getDataBean(Integer.parseInt(selectSpCmpIndex));
			String selectSpCampaignCd = spCampaignInfoBean.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
			String selectSpCampaignNm = spCampaignInfoBean.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_NM_03, X31CWebConst.DATABEAN_GET_VALUE);
			String selectSpCampaignStaDtm = spCampaignInfoBean.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_STA_DTM_03, X31CWebConst.DATABEAN_GET_VALUE);
			String selectSpCampaignEndDtm = spCampaignInfoBean.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_END_DTM_03, X31CWebConst.DATABEAN_GET_VALUE);
			String selectSpCampaignSbtCd = spCampaignInfoBean.sendMessageString(FUW00166SFConst.SP_CAMPAIGN_SBT_CD_03, X31CWebConst.DATABEAN_GET_VALUE);

			// 選択可能特別キャンペーンリストを取得
			X31SDataBeanAccessArray spCampaignList = webnewBean.getDataBeanArray(CommonInfoCFConst.CAMPAIGN_LIST);
			// 特別キャンペーンリストを設定
			for (int i = 0; i < spCampaignList.getCount(); i++)
			{
				// 共有フォームBean.選択可能特別キャンペーン
				X31SDataBeanAccess campaignInfo = spCampaignList.getDataBean(i);
				String campaignCd = campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_CD_66, X31CWebConst.DATABEAN_GET_VALUE);

				// 特別キャンペーンが表示対象でない場合
				if (!selectSpCampaignCd.startsWith(campaignCd) && !selectSpCampaignCd.endsWith(campaignCd))
				{
					continue;
				}
				// 選択した特別キャンペーンが複数の場合
				if (!selectSpCampaignCd.equals(campaignCd))
				{
					// 共有フォームBeanから取り直す
					// 共有フォームBeanから取り直す
					selectSpCampaignNm = campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_NM_66, X31CWebConst.DATABEAN_GET_VALUE);
					selectSpCampaignStaDtm = campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_STA_DTM_66, X31CWebConst.DATABEAN_GET_VALUE);
					selectSpCampaignEndDtm = campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_END_DTM_66, X31CWebConst.DATABEAN_GET_VALUE);
					selectSpCampaignSbtCd = campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_SBT_CD_66, X31CWebConst.DATABEAN_GET_VALUE);
				}

				// 汎用コードリストに選択された特別キャンペーン情報を設定
				X31SDataBeanAccess hanyoInfoBean =  hanyoInfoBeanList.addDataBean();
				hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_CD_46, X31CWebConst.DATABEAN_SET_VALUE, campaignCd);
				hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_NM_46, X31CWebConst.DATABEAN_SET_VALUE, selectSpCampaignNm);
				hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_STA_DTM_46, X31CWebConst.DATABEAN_SET_VALUE, selectSpCampaignStaDtm);
				hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_END_DTM_46, X31CWebConst.DATABEAN_SET_VALUE, selectSpCampaignEndDtm);
				hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_SBT_CD_46, X31CWebConst.DATABEAN_SET_VALUE, selectSpCampaignSbtCd);
			}
		}
	}
	
// ANK-4570-00-00 ADD START
	/**
	 * テレビ単独チェック
	 *
	 * @param commonInfoBean
	 * @return boolean true:テレビ単独  false:それ以外
	 */
	private boolean tvSingleCheck(X31SDataBeanAccess commonInfoBean)
	{

		boolean result = false;
		X31SDataBeanAccess webNewInfoBean = getWebInfo(commonInfoBean);
		X31SDataBeanAccess keiSvcInfoBean = getKeiyakusvcinfo(webNewInfoBean);
		X31SDataBeanAccess tvInfoBean = getTvInfo(webNewInfoBean);

		String tvCourse = tvInfoBean.sendMessageString(CommonInfoCFConst.EO_TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE);
		String tv = keiSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TV_10, X31CWebConst.DATABEAN_GET_VALUE);
		String net = keiSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_NET_10, X31CWebConst.DATABEAN_GET_VALUE);
		String tel = keiSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TEL_10, X31CWebConst.DATABEAN_GET_VALUE);

		// 画面遷移元IDを取得する。
		String screenId = JFUWebCommon.getScreenId(this);

		if (JFUScreenConst.SCREEN_ID_FUW00117.equals(screenId))
		{
			return true;
		}

		if (JFUStrConst.SELECT_SVC_TV_CHOICE.equals(tv)
				&& (JFUStrConst.EO_TV_COURSE_BS.equals(tvCourse) || JFUStrConst.EO_TV_COURSE_BS_STAR.equals(tvCourse)))
		{
			if (JFUStrConst.SELECT_SVC_NET_MI_CHOICE.equals(net) && JFUStrConst.SELECT_SVC_TEL_MI_CHOICE.equals(tel))
			{
				result = true;
			}
		}

		return result;
	}
	
	/**
	 * WEB新規情報
	 *
	 * @param bean
	 * @return bn
	 */
	private X31SDataBeanAccess getWebInfo(X31SDataBeanAccess bean)
	{

		X31SDataBeanAccessArray arr = bean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		if (arr.getCount() == 0)
		{
			arr.addDataBean();
		}
		X31SDataBeanAccess bn = arr.getDataBean(0);

		return bn;
	}

	/**
	 * 契約サービス情報
	 *
	 * @param bn WEB新規情報
	 * @return bn1
	 */
	private X31SDataBeanAccess getKeiyakusvcinfo(X31SDataBeanAccess bn)
	{

		X31SDataBeanAccessArray arr = bn.getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		if (arr.getCount() == 0)
		{
			arr.addDataBean();
		}
		X31SDataBeanAccess bn1 = arr.getDataBean(0);

		return bn1;
	}

	/**
	 * 光テレビ情報
	 *
	 * @param bn
	 * @return bn1
	 */
	private X31SDataBeanAccess getTvInfo(X31SDataBeanAccess bn)
	{

		X31SDataBeanAccessArray arr = bn.getDataBeanArray(CommonInfoCFConst.EOTV);
		if (arr.getCount() == 0)
		{
			arr.addDataBean();
		}
		X31SDataBeanAccess bn1 = arr.getDataBean(0);

		return bn1;
	}
// ANK-4570-00-00 ADD END
}
