/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：FUW06802SFLogic
*   ソースファイル名：FUW06802SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年04月01日
*＜機能概要＞
*    eo光テレビSTB追加変更申込画面サービスフォームBeanビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/04/01   FJ）今村    新規作成
*   v3.00       2012/04/20   FJ) 谷本    【ANK-0041-00-00】 申込完了メール対応
*   v4.00       2012/07/20   FJ) 瀧澤    【ANK-0368-00-00】 キャンペーン文言出力対応
*   v4.00       2012/07/27   FJ) 瀧澤    【ANK-editDispMapSC10361-00-00】 IPv6無料文言不備対応
*   v3.00       2012/09/13   FJ) 山名    【ST1-2012-0000447】
*   v4.00		2012/10/25	 FJ) 岡井	 【IT1-2012-0001669】LOT2-IT1障害対応
*   v4.00		2012/12/29	 FJ) 瀧澤	 【TAI-2012-0000136】異なる連絡先未入力時の対応
*   v4.00		2013/01/29	 FJ) 美濃原	 【ANK-1399-00-00】  フロントＳ文言確認修正対応
*   v5.00		2013/02/18	 FJ) 文元	 【ST2-2013-0000820】メゾンコース名が表示されない不具合対応
*   v5.00       2013/02/28   FJ）文元    【ANK-1399-00-00】  フロントＳ文言確認修正対応
*   v5.00       2013/03/27   FJ）文元    【IT1-2013-0000661】「EKK0341B509(機器提供サービス契約一覧照会)」の項目追加による修正
*   v5.00       2013/05/23   FJ）文元    【ANK-1523-00-00】〔現行システム対応〕フロントＳテレビキャンペーン対応(TV共通チェック追加)
*   v5.01       2013/08/29   FJ）文元    【OM-2013-0001219】機器提供サービス契約が解約、またはキャンセルの場合に宅内機器を取得しないよう対応
*	v8.00.00	2014/01/10	 FJ）大島    【ANK-1796-00-00】STB提供メニュー拡充(機器追加・価格改定)A
*	v8.00       2014/01/27   FJ) 文元    【ANK-1589-00-00】消費増税に伴う料金施策
*   v8.00       2014/01/27   FJ) 畑中    【ANK-1916-00-00】フロント変更系料金シミュレーション注釈見直し
*   v11.00      2014/08/11   FJ) 谷本    【ANK-2141-00-00】STB交換方法の変更
*   v11.00      2014/09/06   FJ) 谷本    【IT2-2014-0000303】宅配交換機種変更時の宅内機器型式コードを設定する対応
*   v11.00      2014/09/08   FJ) 谷本    【ANK-2141-01-00】【案件内仕様変更】フロント画面の文言見直し
*   v13.00      2015/01/27   FJ) 横山    【ANK-2432-00-00】WEBフロントSのeo光テレビSTB宅配交換2台以上受付停止
*   v14.00      2015/04/22   FJ）西川    【OM-2015-0000720】工事案件の設定値(電話番号)の改修
*   v14.00      2015/05/07   FJ）西川    【OM-2015-0001000】BSパススルーのバナー表示条件誤り対応
*   v23.00      2016/01/30   FJ) 張本    【ANK-2716-00-00】STB申込時の申込完了メールの文面変更
*   v25.00      2016/05/10   FJ) 岡井    【ANK-2530-00-00】ＴＶ新コースおよびＶＯＤ導入
*   v26.00      2016/06/17   FJ) 横山    【ANK-2687-00-00】プレミアムサポート施策
*   v27.00      2016/09/09   FJ) 横山    【ANK-2985-00-00】消費者保護ルール見直し対応STEP3
*   v32.00      2017/06/07   FJ) 西川     【ANK-3100-00-00】スマートコンパクト受付対応
*   v32.00.01   2017/05/30   FJ) 謝      【ANK-3057-00-00】自動送信メールの文面変更
*   v39.00.00   2018/08/29   FJ）美濃原  【ANK-3488-00-00】４KSTB（ACASチップ）導入対応
*   v40.00      2019/01/04   FJ) 美濃原  【ANK-3509-00-00】TVコース変更時のVONU交換必須化対応（キャンペーン文言表示削除）
*   v52.00.00   2021/02/25   FJ) 謝      【ANK-3977-00-00】eoWeb画面の料金表記変更
*   v52.00.01   2021/03/02   FJ) 美濃原  【ANK-3991-00-00】STB新機種追加(2021年4月〜)
*   v53.00      2021/06/07   FJ）岡井    【ANK-4066-00-00】新4KSTBの申込可能条件変更
*   v62.00      2022/10/20   FJ）美濃原  【ANK-4335-00-00】ACAS対応新STB導入対応
*   v66.0.0     2023/01/31   FJ) 美濃原  【ANK-4307-00-00】【eo定期】プレミアムクラブリニューアル対応
*
**********************************************************************/
package eo.web.webview.FUW06802SF;

import static com.fujitsu.futurity.web.x31.X31CWebConst.TELEGRAM_INFO_USECASE_ID;
import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;
import static eo.common.constant.JFUStrConst.CD00134_A33;
import static eo.common.constant.JFUStrConst.CD00134_A34;
import static eo.common.constant.JFUStrConst.CD00134_A35;
import static eo.common.constant.JFUStrConst.CD00134_A36;
import static eo.common.constant.JFUStrConst.CD00134_A37;
import static eo.common.constant.JFUStrConst.CD00134_A38;
import static eo.common.constant.JFUStrConst.CD00134_A39;
import static eo.common.constant.JFUStrConst.CD00134_A40;
import static eo.common.constant.JFUStrConst.CD00134_A41;
import static eo.common.constant.JFUStrConst.CD00134_A85;
import static eo.common.constant.JFUStrConst.CD00134_A86;
import static eo.common.constant.JFUStrConst.CD00134_A87;
import static eo.common.constant.JFUStrConst.ERROR_CODE_0002;
import static eo.common.constant.JFUStrConst.ERROR_CODE_0009;
import static eo.common.constant.JFUStrConst.ERROR_CODE_0102;
import static eo.common.constant.JPCModelConstant.FUNC_CD_1;
import static eo.common.constant.JPCModelConstant.FUNC_CD_2;
import static eo.web.webview.CommonInfoCF.CommonInfoCFConst.NEXT_SCREEN_ID;
import static eo.web.webview.CommonInfoCF.CommonInfoCFConst.NEXT_SCREEN_NAME;
import static eo.web.webview.common.JFUScreenConst.SCREEN_ID_FUW06802;
import static eo.web.webview.common.JFUScreenConst.SCREEN_ID_FUW06803;
import static eo.web.webview.common.JFUScreenConst.SCREEN_ID_FUW06804;
import static eo.web.webview.common.JFUScreenConst.SCREEN_ID_FUW09501;
import static eo.web.webview.common.JFUScreenConst.SCREEN_NAME_FUW06802;
import static eo.web.webview.common.JFUScreenConst.SCREEN_NAME_FUW06803;
import static eo.web.webview.common.JFUScreenConst.SCREEN_NAME_FUW06804;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.web.x00.JCCBusinessException;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
import com.fujitsu.futurity.web.x31.X31BWebBusinessLogic;
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 com.fujitsu.futurity.web.x31.X31CMessageResult.X31CMessageMoreInfo;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JPCDateUtil;
import eo.common.util.JPCUtilCommon;
import eo.common.util.JZMCommonUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.mapping.FUSV0130_FUSV0130OPDBMapper;
import eo.web.webview.mapping.FUSV0131_FUSV0131OPDBMapper;

/**
 * eo光テレビSTB追加変更申込画面サービスフォームBeanビューロジック
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW06802SFLogic extends JCCWebBusinessLogic
{

	/** STB追加申込数 0件 */
	private static final String MSKM_STB_ADD_CNT0 = "-1";
	/** 申込完了メール 申込(BSPTの申込を含む場合) */
	private static final String MSKM_FIN_MAIL_FUW068_1 = "FUW068_1";
	/** 申込完了メール 申込(宅配交換の場合) */
	private static final String MSKM_FIN_MAIL_FUW068_2 = "FUW068_2";
	/** 申込完了メール 申込(上記以外の場合) */
	private static final String MSKM_FIN_MAIL_FUW068_3 = "FUW068_3";

	/** 住居フラグ　１：ホーム */
	private static final String AD_FORM_FLG_1 = "1";
	/** 住居フラグ　２：マンション */
	private static final String AD_FORM_FLG_2 = "2";
	/** 住居フラグ　３：メゾン */
	private static final String AD_FORM_FLG_3 = "3";

	/** STB月額料金名 取得キー */
	private static final String STB_RYOKIN_KEI_NAME = "stb_ryokin_kei_name";
	/** 合計名 取得キー */
	private static final String ALL_RYOKIN_KEI_NAME = "all_ryokin_kei_name";
	/** 初期費用リスト項目名 取得キー */
	private static final String SHOKI_RYOKIN_NAME = "syoki_ryokin_name";
	/** 初期費用リスト項目名 取得キー */
	private static final String TAKUHAI_RYOKIN_NAME = "takuhai_ryokin_name";
	/** 初期費用リスト項目名 取得キー */
	private static final String SHOKI_BSPT_KOJI_RYOKIN_NAME = "bspt_ryokin_kei_name";
	/** 契約可能件数  */
	private static final int KEI_LIMIT_CNT = 5;
	/** 機器リスト　選択しない用のグレード */
	private static final String MAX_GRADE = "999";
	/** 料金コース種別コード */
	private static final String PCRS_STB_CD_01 = "1";
	/** 工事案件備考 接頭辞（電話番号）  */
	private static final String KOJIAK_BIKO_PREFIX_TEL = "●連絡先：連絡先電話番号：";
	/** 工事案件備考 接頭辞（携帯番号）  */
	private static final String KOJIAK_BIKO_PREFIX_KTAI = "●連絡先：携帯用電話番号：";
// ANK-3057-00-00 MOD START
	/** メール文言 STB用 */
//	private static final String ML_STB_PREFIX =
//		"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + JFUStrConst.RETURN_CODE +
//		"なお、eo光テレビチューナーの変更・追加のお申込内容については" + JFUStrConst.RETURN_CODE +
//		"以下の通りとなります。" + JFUStrConst.RETURN_CODE + JFUStrConst.RETURN_CODE +
//		"《お申し込み内容》" + JFUStrConst.RETURN_CODE;
	/** メール文言 STB用 宅配交換 */
	private static final String ML_STB_PREFIX_TK_CHG =
		"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + JFUStrConst.RETURN_CODE +
		"■お申し込み内容" + JFUStrConst.RETURN_CODE +
		"　　eo光テレビチューナーの宅配交換" + JFUStrConst.RETURN_CODE + JFUStrConst.RETURN_CODE;
	
	/** メール文言 STB用 宅配交換以外 */
	private static final String ML_STB_PREFIX_TK_CHG_OTHER =
		"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + JFUStrConst.RETURN_CODE +
		"■お申し込み内容" + JFUStrConst.RETURN_CODE + JFUStrConst.RETURN_CODE;
// ANK-3057-00-00 MOD END

	/** コース種別：0　旧コース */
	private static final String PCRS_TYPE00 = "0";
	/** コース種別：1　現HDコース */
	private static final String PCRS_TYPE01 = "1";
	/** コース種別：2　新HDコース */
	private static final String PCRS_TYPE02 = "2";

	/** スタンダードコース */
	private static final String PCRS00 = "0";
	/** バリューコース */
	private static final String PCRS01 = "1";
	/** ライトコース */
	private static final String PCRS02 = "2";
	/** ベーシックＨＤコース */
	private static final String PCRS03 = "3";
	/** プレミアムＨＤコース */
	private static final String PCRS04 = "4";
	/** コンパクトコース */
	private static final String PCRS05 = "5";
	/** スマートベーシックコース */
	private static final String PCRS09 = "9";
	/** スマートプレミアムコース */
	private static final String PCRS10 = "10";

	/** コースリスト対応配列 0:スタンダード 1：バリュー 2：ライト 3：ベーシックHD 4：プレミアムHD 5：コンパクト
	 * 6：地デジ・BS 7：SDコース 8：HDコース 9：スマートベーシック 10：スマートプレミアム 11：スマートコンパクト */
	private static final String[] PCRS_CNG_LIST =
			{ CD00134_A35, CD00134_A33, CD00134_A34, CD00134_A40, CD00134_A41, CD00134_A36, CD00134_A37, CD00134_A38, CD00134_A39,
				CD00134_A86, CD00134_A87, CD00134_A85};
	/** 現HDコース(ベーシック、プレミアム、コンパクト) */

	@SuppressWarnings("unchecked")
	private static final List NORMAL_HD_LIST = Arrays.asList(CD00134_A40, CD00134_A41, CD00134_A36);
	/** 新HDコース(スマートベーシック、スマートプレミアム、スマートコンパクト) */
	@SuppressWarnings("unchecked")
	private static final List SMART_HD_LIST = Arrays.asList(CD00134_A86, CD00134_A87, CD00134_A85);

	/** 契約状態 「0:STB契約中のみ」*/
	private static final String STATUS_0 = "0";
	/** 契約状態 「1:STB変更予約あり」*/
	private static final String STATUS_1 = "1";
	/** 契約状態 「2:STB新規追加」*/
	private static final String STATUS_2 = "2";

	/** 契約情報リスト STB変更 「1:変更」*/
	private static final String CHG_STB_1 = "1";

	/** 契約情報リスト 内訳契約状態：0：契約中 */
	private static final String UCWK_STATUS_0 = "0";
	/** 契約情報リスト 内訳契約状態：1：予約中 */
	private static final String UCWK_STATUS_1 = "1";
	/** 契約情報リスト 内訳契約状態：2：なし */
	private static final String UCWK_STATUS_2 = "2";

	/** DataBean操作種別：配列型項目の要素数取得 */
	private static final String GET_COUNT = X31CWebConst.DATABEAN_GET_COUNT;
	/** DataBean操作種別：項目値設定 */
	private static final String SET = X31CWebConst.DATABEAN_SET_VALUE;
	/** DataBean操作種別：項目値取得 */
	private static final String GET = X31CWebConst.DATABEAN_GET_VALUE;
	/** DataBean操作種別：配列型項目に要素を追加 */
	private static final String ADD = X31CWebConst.DATABEAN_ADD_VALUE;
	/** 要素セパレータ N要素(末尾) */
	private static final String N_LAST = JFUWebCommon.SEP_N_LAST;

	/** サービスユースケースID：eo光テレビSTB追加変更申込(初期表示) */
	private static final String SVC_USECASE_ID_FUSV0130 = "FUSV0130";
	/** サービスユースケースID：eo光テレビSTB追加変更申込(申し込む) */
	private static final String SVC_USECASE_ID_FUSV0131 = "FUSV0131";

	/** CCタイトル：eo光テレビSTB追加変更申込(初期表示）宅内機器(STB／CASID)一覧照会CC */
	private static final String CC_TITLE_FUSV013001CC = "FUSV013001CC";
	/** CCタイトル：eo光テレビSTB追加変更申込(初期表示）キャンペーン文言一覧照会 */
	private static final String CC_TITLE_FUSV013002CC = "FUSV013002CC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）機器提供サービス契約一覧照会(STB) */
	private static final String SC_TITLE_FUSV013001SC = "FUSV013001SC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）機器提供サービス契約一覧照会(BCAS) */
	private static final String SC_TITLE_FUSV013002SC = "FUSV013002SC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）機器提供サービス契約一覧照会(CCAS) */
	private static final String SC_TITLE_FUSV013003SC = "FUSV013003SC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）機器提供サービス契約一覧照会(VONU) */
	private static final String SC_TITLE_FUSV013004SC = "FUSV013004SC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）サービス契約一覧照会 */
	private static final String SC_TITLE_FUSV013005SC = "FUSV013005SC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）サービス契約内訳一覧照会 */
	private static final String SC_TITLE_FUSV013006SC = "FUSV013006SC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）連絡先一覧照会 */
	private static final String SC_TITLE_FUSV013007SC = "FUSV013007SC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）一時支払金一意照会（出張費） */
	private static final String SC_TITLE_FUSV013008SC = "FUSV013008SC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）一時支払金一意照会（交換手数料） */
	private static final String SC_TITLE_FUSV013009SC = "FUSV013009SC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）一時支払金一意照会（追加手数料） */
	private static final String SC_TITLE_FUSV013010SC = "FUSV013010SC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）一時支払金一意照会（BSPT工事費） */
	private static final String SC_TITLE_FUSV013011SC = "FUSV013011SC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）マンション物件一意照会 */
	private static final String SC_TITLE_FUSV013012SC = "FUSV013012SC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）宅内機器型式一意照会 */
	private static final String SC_TITLE_FUSV013014SC = "FUSV013014SC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）料金コース一覧照会 */
	private static final String SC_TITLE_FUSV013015SC = "FUSV013015SC";
	/** CCタイトル：STB宅内機器一覧取得 */
	private static final String CC_TITLE_FUSV013003CC = "FUSV013003CC";
	/** SCタイトル：eo光テレビSTB追加変更申込(初期表示）一時支払金一意照会（STB交換契約事務手数料） */
	private static final String SC_TITLE_FUSV013016SC = "FUSV013016SC";

	/** eo光テレビSTB追加変更申込CC */
	private static final String CC_TITLE_FUSV013101CC = "FUSV013101CC";

	/** テンプレートID(機器提供サービス契約料金コース変更) */
	private static final String TEMPLATE_ID_SVC_KEI_KKTK_UPD = "EKK0341C160";
	/** テンプレートID(機器提供サービス契約登録) */
	private static final String TEMPLATE_ID_SVC_KEI_KKTK_TRK = "EKK0341D010";
	/** テンプレートID(機器提供サービス契約機器変更手続開始) */
	private static final String TEMPLATE_ID_SVC_KEI_KKTK_CNG = "EKK0341C530";
	/** アイテムID(upd_dtm_bf) */
	private static final String ITEM_ID_UPD_DTM_DF = "upd_dtm_bf";
	/** アイテムID(kktk_svc_cd) */
	private static final String ITEM_ID_KKTK_SVC_CD = "kktk_svc_cd";
	/** アイテムID(ido_div) */
	private static final String ITEM_ID_IDO_DIV = "ido_div";

	/** Mapキー：宅内機器(STB／CASID)一覧照会明細 */
	private static final String MAP_KEY_CC01CBSMSGLIST = "TKKIKISHOKAI1List";
	/** Mapキー：機器提供サービス契約一覧明細(STB) */
	private static final String MAP_KEY_SC1CBSMSGLIST = "EKK0341B509CBSMsg1List";
	/** Mapキー：機器提供サービス契約一覧明細(BCAS) */
	private static final String MAP_KEY_SC2CBSMSGLIST = "EKK0341B509CBSMsg1List";
	/** Mapキー：機器提供サービス契約一覧明細(CCAS) */
	private static final String MAP_KEY_SC3CBSMSGLIST = "EKK0341B509CBSMsg1List";
	/** Mapキー：機器提供サービス契約一覧明細(VONU) */
	private static final String MAP_KEY_SC4CBSMSGLIST = "EKK0341B509CBSMsg1List";
	/** Mapキー：サービス契約一覧明細 */
	private static final String MAP_KEY_SC5CBSMSGLIST = "EKK0081B515CBSMsg1List";
	/** Mapキー：サービス契約内訳一覧明細 */
	private static final String MAP_KEY_SC6CBSMSGLIST = "EKK0161B509CBSMsg1List";
	/** Mapキー：連絡先一覧明細 */
	private static final String MAP_KEY_SC7CBSMSGLIST = "ECK0201B001CBSMsg1List";
	/** Mapキー：一時支払金一意照会明細（出張費） */
	private static final String MAP_KEY_SC8CBSMSGLIST = "EKK0721A010CBSMsg1List";
	/** Mapキー：一時支払金一意照会明細（交換手数料） */
	private static final String MAP_KEY_SC9CBSMSGLIST = "EKK0721A010CBSMsg1List";
	/** Mapキー：一時支払金一意照会明細（追加手数料） */
	private static final String MAP_KEY_SC10CBSMSGLIST = "EKK0721A010CBSMsg1List";
	/** Mapキー：一時支払金一意照会明細（BSPT工事費） */
	private static final String MAP_KEY_SC11CBSMSGLIST = "EKK0721A010CBSMsg1List";
	/** Mapキー：マンション物件一意照会明細 */
	private static final String MAP_KEY_SC12CBSMSGLIST = "EKK0861A010CBSMsg1List";
	/** Mapキー：宅内機器型式一意照会明細 */
	private static final String MAP_KEY_SC14CBSMSGLIST = "EZM0411A010CBSMsg1List";
	/** Mapキー：料金コース一覧照会明細 */
	private static final String MAP_KEY_SC15CBSMSGLIST = "EKK0791B502CBSMsg1List";
	/** Mapキー：STB宅内機器一覧リスト(グレード考慮)  */
	private static final String MAP_KEY_CHG_STB_KIKI_LIST = "chg_stb_kiki_list";
	/** Mapキー：STB宅内機器一覧リスト(全て) */
	private static final String MAP_KEY_ADD_STB_KIKI_LIST = "add_stb_kiki_list";
	/** Mapキー：一時支払金一意照会明細（BSPT工事費） */
	private static final String MAP_KEY_SC16CBSMSGLIST = "EKK0721A010CBSMsg1List";

	/** Mapキー：マンション物件コード */
	private static final String MAP_KEY_MANSION_BUKKEN_CD = "mansion_bukken_cd";
	/** Mapキー：オーナー契約番号  */
	private static final String MAP_KEY_OWNR_KEI_NO = "ownr_kei_no";
	/** Mapキー：料金グループコード */
	private static final String MAP_KEY_PRC_GRP_CD = "prc_grp_cd";
	/** Mapキー：料金コースコード */
	private static final String MAP_KEY_PCRS_CD = "pcrs_cd";
	/** Mapキー：料金コースコード名 */
	private static final String MAP_KEY_PCRS_CD_NM = "pcrs_cd_nm";
	/** Mapキー：料金プランコード */
	private static final String MAP_KEY_PPLAN_CD = "pplan_cd";
	/** Mapキー：料金プランコード(マンション基本) */
	private static final String MAP_KEY_PPLANM_CD = "pplanm_cd";
	/** Mapキー：料金プランコード(メゾン基本) */
	private static final String MAP_KEY_PPLANMZ_CD = "pplanmz_cd";
	/** Mapキー：料金コース追加料金プランコード（ホーム追加）  */
	private static final String MAP_KEY_PPLAN_CD_ADD = "pplan_cd_add";
	/** Mapキー：料金コース追加料金プランコード（マンション追加）  */
	private static final String MAP_KEY_PPLANM_CD_ADD = "pplanm_cd_add";
	/** Mapキー：料金コース基本プランの料金（ホーム基本）  */
	private static final String MAP_KEY_PRICE = "price";
	/** Mapキー：料金コース基本プランの料金（マンション基本）  */
	private static final String MAP_KEY_PRICEM = "pricem";
	/** Mapキー：料金コース基本プランの料金（メゾン基本）  */
	private static final String MAP_KEY_PRICEMZ = "pricemz";
	/** Mapキー：料金コース追加プランの料金（ホーム追加）  */
	private static final String MAP_KEY_PRICE_ADD = "price_add";
	/** Mapキー：料金コース追加プランの料金（マンション追加）  */
	private static final String MAP_KEY_PRICEM_ADD = "pricem_add";
	/** Mapキー：機器提供サービス契約番号 */
	private static final String MAP_KEY_KKTK_SVC_KEI_NO = "kktk_svc_kei_no";
	/** Mapキー：機器変更番号 */
	private static final String MAP_KEY_KK_CHG_NO = "kiki_chg_no";
	/** Mapキー：サービス契約内訳番号 */
	private static final String MAP_KEY_SVC_KEI_UCWK_NO = "svc_kei_ucwk_no";
	/** Mapキー：機器製造番号 */
	private static final String MAP_KIKI_SEIZO_NO = "kiki_seizo_no";
	/** Mapキー：機器製造番号 */
	private static final String MAP_KEY_KIKI_SEIZO_NO = "key_kiki_seizo_no";
	/** Mapキー：連絡先コード */
	private static final String MAP_KEY_RRKS_CD = "rrks_cd";
	/** Mapキー：連絡方法コード */
	private static final String MAP_KEY_RRK_WAY_CD = "rrk_way_cd";
	/** Mapキー：連絡先種別コード */
	private static final String MAP_KEY_RRKS_SBT_CD = "rrks_sbt_cd";
	/** Mapキー：電話番号 */
	private static final String MAP_KEY_TELNO = "telno";
	/** Mapキー：一時支払料金額 */
	private static final String MAP_KEY_TMP_PAY_PRC_AMNT = "tmp_pay_prc_amnt";
	/** Mapキー：サービス開始年月日 */
	private static final String MAP_KEY_SVC_STA_YMD = "svc_sta_ymd";
	/** Mapキー：世代登録年月日時分秒 */
	private static final String MAP_KEY_GENE_ADD_DTM = "gene_add_dtm";
	/** Mapキー：料金コース名   */
	private static final String MAP_KEY_PCRS_NM = "pcrs_nm";
	/** Mapキー： 料金プラン単位名	    */
	private static final String MAP_KEY_PPLAN_KOTEI_TANI_NM = "pplan_kotei_tani_nm";
	/** Mapキー：TVコースグループコード  */
	private static final String MAP_KEY_TV_COURSE_GRP_CD = "tv_course_grp_cd";
	/** Mapキー：料金コース種別コード   */
	private static final String MAP_KEY_PCRS_SBT_CD = "pcrs_sbt_cd";
	/** Mapキー：料金コースグレード順位  */
	private static final String MAP_KEY_PCRS_GRADE_JUN = "pcrs_grade_jun";
	/** Mapキー：機器提供サービスコード  */
	private static final String MAP_KEY_KKTK_SVC_CD = "kktk_svc_cd";
	/** Mapキー：表示順序  */
	private static final String MAP_KEY_DSP_JUN = "dsp_jun";
	/** Mapキー：ＨＤＤ容量コード名称  */
	private static final String MAP_KEY_HDD_CAPA_CD_NM = "hdd_capa_cd_nm";
	/** Mapキー：ＨＤＤ容量コード  */
	private static final String MAP_KEY_HDD_CAPA_CD = "hdd_capa_cd";
	/** Mapキー：予約中ＨＤＤ容量コード  */
	private static final String MAP_KEY_RSV_HDD_CAPA_CD = "rsv_hdd_capa_cd";
	/** Mapキー：宅内機器型式コード  */
	private static final String MAP_KEY_TAKNKIKI_MODEL_CD = "taknkiki_model_cd";
	/** Mapキー：機器の料金コースコード  */
	private static final String MAP_KEY_KIKI_PCRS_CD = "kiki_pcrs_cd";
	/** Mapキー：ＳＴＢＩＤ  */
	private static final String MAP_KEY_STB_ID = "stb_id";
	/** Mapキー：ＶＯＮＵＢＳパススルー可否  */
	private static final String MAP_KEY_VONU_BSPT_KH = "vonu_bspt_kh";
	/** Mapキー：契約状態フラグ (0：追加予約中 1：契約中  011：機器コース変更 012：機器変更手続 013：機器解約 014：次月開始オプション有 ) */
	private static final String MAP_KEY_STATUS_FLG = "status_flg";
	/** Mapキー：異動レコード有無フラグ  */
	private static final String MAP_KEY_IDO_RSV_FLG = "ido_rsv_flg";
	/** Mapキー：異動予約詳細コード (003:コース変更、005:サービス休止、006:サービス休止解除、007:サービス解約) */
	private static final String MAP_KEY_IDO_RSV_DTL_CD = "ido_rsv_dtl_cd";
	/** Mapキー：選択機器コース名  */
	private static final String MAP_KEY_RSV_PCRS_CD_NM = "rsv_pcrs_cd_nm";
	/** Mapキー：選択機器コースコード  */
	private static final String MAP_KEY_RSV_PCRS_CD = "rsv_pcrs_cd";
	/** Mapキー：選択機器プランコード  */
	private static final String MAP_KEY_RSV_PPLAN_CD = "rsv_pplan_cd";
	/** Mapキー：選択宅内機器型式コード  */
	private static final String MAP_KEY_RSV_TAKNKIKI_MODEL_CD = "rsv_taknkiki_model_cd";
	/** Mapキー：STB宅内機器リスト(グレード考慮)  */
	private static final String MAP_KEY_CHG_STB_LIST = "chg_stb_list";
	/** Mapキー：コード  */
	private static final String MAP_KEY_CD = "cd";
	/** Mapキー：名称  */
	private static final String MAP_KEY_NM = "nm";
	/** Mapキー：HDD  */
	private static final String MAP_KEY_HDD = "hdd";
	/** Mapキー：HDD容量  */
	private static final String MAP_KEY_HDDCD = "hddCd";
	/** Mapキー：プラン  */
	private static final String MAP_KEY_PPLAN = "pplan";
	/** Mapキー：料金  */
	private static final String MAP_KEY_PRC = "prc";
	/** Mapキー：グレード  */
	private static final String MAP_KEY_GLADE = "glade";
	/** Mapキー：表示順  */
	private static final String MAP_KEY_DISP = "disp";
	/** Mapキー：単価名  */
	private static final String MAP_KEY_TANINM = "taniNm";
	/** Mapキー：ＢＣＡＳ不要ＳＴＢフラグ */
	private static final String MAP_KEY_BCAS_FUYO_STB_FLG = "bcas_fuyo_stb_flg";

	/** 料金表用定数：備考識別情報  */
	private static final String PRC_INFO_AREA_BIKO_0_0 = "biko_0_0";
	/** 料金表用定数：備考識別情報  */
	private static final String PRC_INFO_AREA_BIKO_1_0 = "biko_1_0";
	/** 料金表用定数：備考表示内容（訪問交換時） */
	private static final String PRC_INFO_AREA_BIKO1 = "<dl class=\"marginalNote bold\"><dt><span>※</span></dt><dd id=\"prc_area_biko_homon\">別途工事費用がかかります。</dd><dd id=\"prc_area_biko_takhi\">別途交換費用がかかります。</dd></dl>";
	/** 料金表用定数：備考表示内容 */
	private static final String PRC_INFO_AREA_BIKO2 =
			"<dl class=\"marginalNote\"><dt><span>※</span></dt><dd><p id=\"plan\">工事内容により別途追加費用が発生する場合がございます。</p></dd></dl>";
	/** 料金表用定数：備考表示内容 */
	private static final String PRC_INFO_AREA_BIKO3 = 
			"※最後に選択されたeo光テレビチューナー月額料金・コース月額料金が表示されます。<br/>※確認画面で合計金額をご確認ください。";
	/** 料金表用定数：備考標準スタイル  */
	private static final String BIKO_NORMAL_STYLE = "<span class='FUW06802_biko'>";
	/** THMLタグ /span  */
	private static final String TAG_SPAN_E = "</span>";
	/** 料金表用定数：テーブルタイトル識別情報 */
	private static final String PRC_INFO_AREA_TITLE_0_0 = "title_0_0";
	/** 料金表用定数：テーブルタイトル識別情報 */
	private static final String PRC_INFO_AREA_TITLE_1_0 = "title_1_0";
	/** 料金表用定数：テーブルタイトル識別情報 */
	private static final String PRC_INFO_AREA_TITLE_2_0 = "title_2_0";
	/** 料金表用定数：テーブルタイトル識別情報 */
	private static final String PRC_INFO_AREA_TITLE_3_0 = "title_3_0";
	/** 料金表用定数：テーブルタイトル識別情報 */
	private static final String PRC_INFO_AREA_TITLE_4_0 = "title_4_0";
	/** 料金表用定数：テーブルタイトル */
	private static final String PRC_INFO_AREA_TITLE1 = "eo光テレビチューナー月額料金";
	/** 料金表用定数：テーブルタイトル */
	private static final String PRC_INFO_AREA_TITLE2 = "コース月額料金";
	/** 料金表用定数：テーブルタイトル */
	private static final String PRC_INFO_AREA_TITLE3 = "初期費用";
	/** 料金表用定数：テーブルタイトル */
	private static final String PRC_INFO_AREA_TITLE4 = "お申し込み後の月額料金";
	/** 料金表用定数：テーブルスタイルクラス */
	private static final String PRC_INFO_AREA_CLASS1 = "fixed_fee";
	/** 料金表用定数：テーブルスタイルクラス */
	private static final String PRC_INFO_AREA_CLASS2 = "initial_cost";
	/** 料金表用定数：テーブルスタイルクラス */
	private static final String PRC_INFO_AREA_CLASS3 = "wid120p:wid80p";
	/** 料金表用定数：テーブルスタイルクラス */
	private static final String PRC_INFO_AREA_CLASS4 = "fixed_fee m0";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT1 = "k_space";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT2 = "c_space";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT3 = "c0_0";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT4 = "c0_1";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT5 = "c1_0";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT6 = "c1_1";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT7 = "c3_0";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT8 = "c3_1";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT9 = "c4_0";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT10 = "c4_1";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT11 = "c6_0";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT12 = "c6_1";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT13 = "c7_0";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT14 = "c7_1";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT15 = "c8_0";
	/** 料金表用定数：テーブル識別情報 */
	private static final String PRC_INFO_AREA_SKBT16 = "c8_1";
	/** 料金表用定数：初期費用 */
	private static final String PRC_INFO_AREA_INIT_PRC_BSPT = "bspt";
	/** 料金表用定数：単位  */
	private static final String PRC_INFO_AREA_HALF_SPACE_YEN = " 円";
	/** 料金表用定数：0  */
	private static final String PRC_INFO_AREA_ZERO = "0";
	/** 料金表用定数：1  */
	private static final String PRC_INFO_AREA_ONE = "1";
	/** 料金表用定数：2  */
	private static final String PRC_INFO_AREA_TWO = "2";
	/** 料金表用定数：タイトル  */
	private static final String PRC_INFO_AREA_TITLE_BSPT_ = "bspt_";
	/** 料金表用定数：タイトル  */
	private static final String PRC_INFO_AREA_TITLE_MSKM_ = "mskm_";

	/** STB追加変更有フラグ */
	private static final String STB_CNG_FLG = "1";
	/** BSパススルー工事費用表示フラグ 表示 */
	private static final String BSPS_KOJI_DISP_FLG_DSP = "1";
	/** BSパススルー工事費用表示フラグ 非表示 */
	private static final String BSPS_KOJI_DISP_FLG_HIDSP = "0";

	/** 機器変更可否フラグ：変更可能 */
	private static final String STB_CNG_FLG_1 = "1";
	/** ＢＳパススルー申込可否フラグ：可能 */
	private static final String BSPASS_DISP_FLG_1 = "1";

	/**機器コンボボックス値 「変更なし」*/
	private static final String KIKI_COMBO_NOCNG = "変更なし";

	/** 定義取得パス 曜日 */
	private static final String PATH_WEEK_NM = "DISPSETTING/SETTING[@screenId='FUW06803']/DISPTEXT[@groupid='WEEK_NM']";
	/** 定義取得パス 機器情報 */
	private static final String PATH_STB_KIKI = "DISPSETTING/SETTING[@screenId='FUW01501']/DISPTEXT[@groupid='stbPattern']";
	/** 属性名 */
	private static final String QUERY_ATTR_NAME = "id";
	/**  2016/09/09 ANK-2985-00-00 mod start */
	/** 有効機器取得項目配列 */
	private static final String[] STB_KIKI_ITEM_LIST = { "pattern_", "disp_start_", "disp_end_",
		"disp_pcrs_", "disp_jun_", "kiki_pcrs_cd_", "knytcs_flg_" };
	/**  2016/09/09 ANK-2985-00-00 mod end */
	/** 交換方法 訪問交換 */
	private static final String CHG_WAY_CD_HOUMON = "1";
	/** 交換方法 宅配交換 */
	private static final String CHG_WAY_CD_TAKUHAI = "2";

	/**  2016/09/09 ANK-2985-00-00 add start */
	/** 契約内容通知書フラグ：可 */
	private static final String KKPCRS_KNYCTS_LIST_FLG_KA = "1";
	/**  2016/09/09 ANK-2985-00-00 add end */

	/** CCタイトル：異動予約取得コモンコンポーネント処理 */
	private static final String CC_TITLE_FUSV013004CC = "FUSV013004CC";
	/** 異動予約一覧 */
	private static final String OUT_IDO_RSV_SVC_KEI_LIST = "ido_rsv_svc_kei_list";

	/** ＢＣＡＳ不要ＳＴＢフラグ：不要 */
	private static final String BCAS_FUYO_STB = "1";
	/** ＢＣＡＳ不要ＳＴＢフラグ：必要 */
	private static final String BCAS_NEED_STB = "0";

	/** フラグON */
	private static final String FLG_ON = "1";
	/** フラグOFF */
	private static final String FLG_OFF = "0";

	/**
	 * 初期処理
	 * <br>
	 * @return	処理結果
	 * @throws Exception	例外
	 */
	public boolean init() throws Exception
	{
		DEBUG_LOG.debug("★★★★★eo光テレビSTB追加変更申込のビューロジック処理(INIT) START★★★★★");

		// 初期設定
		JFUWebCommon.getScreenInfo(this);
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		X31SDataBeanAccess serviceInfoBean = super.getServiceFormBean();

		// リクエスト情報の取得(メニューから遷移した場合のみ)
		String motoScreenId = serviceInfoBean.sendMessageString(FUW06802SFConst.MOTO_SCREEN_ID, GET);
		if (SCREEN_ID_FUW09501.equals(motoScreenId))
		{
			// 現顧客契約情報の最新化
			JFUWebCommon.refreshGenCustKei(this);
			// 利用可能サービスチェック
			JFUWebCommon.checkCommonRelation(this, SVC_USECASE_ID_FUSV0131);
		}
		else if (!JFUStrConst.EMPTY.equals(motoScreenId))
		{
			// 遷移元画面IDが設定され、メニュー画面以外の場合　共通エラー用 アクセスエラー
			DEBUG_LOG.info("----- FUW06802_init() アクセスエラー -----");
			throw new JCCBusinessException(ERROR_CODE_0009);
		}

		// 運用日付
		String opeDate = JFUWebCommon.getOpeDate(this, null);
		setFuOpedate(commonInfoBean, opeDate);

		// サービスフォームBean初期値設定
		initSFBean(serviceInfoBean);

		// 共有フォームBeanからサービスフォームBeanへ値のコピー
		copySFBean(commonInfoBean, serviceInfoBean);

		// 料金コースコードチェック
		checkPrcCd(commonInfoBean);

		// サービス処理結果マップ
		HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap =
				new HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>>();

		// サービス呼出処理
		callFUSV0130(commonInfoBean, serviceInfoBean, outputMap);

		// サービスフォームBean設定
		setSFBean(commonInfoBean, serviceInfoBean, outputMap, opeDate);

		// ご利用料金枠の設定
		makeRyokinList(serviceInfoBean);

		// 料金表表示現在日設定処理
		JFUWebCommon.setPrcDspNowDay(this);

		// 遷移先画面情報の設定
		commonInfoBean.sendMessageString(NEXT_SCREEN_ID, SET, SCREEN_ID_FUW06802);
		commonInfoBean.sendMessageString(NEXT_SCREEN_NAME, SET, SCREEN_NAME_FUW06802);

		DEBUG_LOG.debug("★★★★★eo光テレビSTB追加変更申込のビューロジック処理(INIT) END★★★★★");
		return true;
	}

	/**
	 * 確認するボタン押下処理
	 * <br>
	 * @return	処理結果
	 * @throws Exception 例外
	 */
	public boolean cfm() throws Exception
	{
		DEBUG_LOG.debug("★★★★★eo光テレビSTB追加変更申込のビューロジック処理(CONFIRM) START★★★★★");

		// 初期設定
		JFUWebCommon.getScreenInfo(this);
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		X31SDataBeanAccess serviceInfoBean = super.getServiceFormBean();

		// 宅配時の処理
		setTakuhaiInfo(serviceInfoBean);
		
		// 契約情報変更追加リスト、機器情報変更追加リストの設定
		setKeiKikiCfmList(serviceInfoBean);

// ANK-3872-00-00 ADD START
		// 連絡先電話番号
		String rrksTelNo = JFUStrConst.EMPTY;
		if ("1".equals(serviceInfoBean.sendMessageString(FUW06802SFConst.RRKS_TEL_SELECT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			rrksTelNo = serviceInfoBean.sendMessageString(FUW06802SFConst.CONTRACT_TELNO, X31CWebConst.DATABEAN_GET_VALUE);
		} else if("2".equals(serviceInfoBean.sendMessageString(FUW06802SFConst.RRKS_TEL_SELECT, X31CWebConst.DATABEAN_GET_VALUE))) {
			rrksTelNo = serviceInfoBean.sendMessageString(FUW06802SFConst.USE_PLACE_TELNO, X31CWebConst.DATABEAN_GET_VALUE);
		} else if("3".equals(serviceInfoBean.sendMessageString(FUW06802SFConst.RRKS_TEL_SELECT, X31CWebConst.DATABEAN_GET_VALUE))) {
			rrksTelNo = serviceInfoBean.sendMessageString(FUW06802SFConst.RRKS_TEL_OTHRE_AREA, X31CWebConst.DATABEAN_GET_VALUE) +
			serviceInfoBean.sendMessageString(FUW06802SFConst.RRKS_TEL_OTHRE_LOCAL, X31CWebConst.DATABEAN_GET_VALUE) +
			serviceInfoBean.sendMessageString(FUW06802SFConst.RRKS_TEL_OTHRE_SUBSCRIBER, X31CWebConst.DATABEAN_GET_VALUE);
		} else {
			// ---------------------------------------------
			// 上記以外で工事案件が呼び出される場合はエラー
			// 「」
			// ---------------------------------------------
			String stbCngUmuFlg = serviceInfoBean.sendMessageString(FUW06802SFConst.STB_CNG_UMU_FLG, GET);
			String bsptMskmFlg = serviceInfoBean.sendMessageString(FUW06802SFConst.BSPT_MSKM_FLG, GET);
			if (!"1".equals(stbCngUmuFlg) && !"1".equals(bsptMskmFlg))
			{
				JCCWebCommon.setMessageInfo(this, "EKF0420-TW", new String[] { "連絡先電話番号", "選択" }, "koji_rrsk");
				return true;
			}
		}
		serviceInfoBean.sendMessageString(FUW06802SFConst.RRKS_TELNO, X31CWebConst.DATABEAN_SET_VALUE, rrksTelNo);
// ANK-3872-00-00 ADD END
		// サービスフォームBeanより契約情報リスト取得
		X31SDataBeanAccessArray keiCfmList = serviceInfoBean.getDataBeanArray(FUW06802SFConst.CFM_LIST);

		// ライトコース有無フラグの設定
		setLightFlg(keiCfmList, serviceInfoBean);

		// 基本コースのレコード取得
		String mainChkFlg = getMainCnt(keiCfmList);

		// ご利用料金リスト３および４作成
		setRyokinList(serviceInfoBean, keiCfmList, mainChkFlg);

		// ご利用料金枠の設定
		makeRyokinList2(serviceInfoBean);

		// 登録サービス呼出用パラメータ設定
		setFUSV0131Parameter(serviceInfoBean);

		// 工事案件(eo光テレビ)受付 情報設定
		setKojiAnkenInfo(serviceInfoBean);

		// サービス呼出処理
		callFUSV0131(serviceInfoBean, FUNC_CD_2, commonInfoBean);

		// 遷移先画面情報の設定(eo光テレビSTB追加変更申込確認画面へ遷移)
		commonInfoBean.sendMessageString(NEXT_SCREEN_ID, SET, SCREEN_ID_FUW06803);
		commonInfoBean.sendMessageString(NEXT_SCREEN_NAME, SET, SCREEN_NAME_FUW06803);

		DEBUG_LOG.debug("★★★★★eo光テレビSTB追加変更申込のビューロジック処理(CONFIRM) END★★★★★");
		return true;
	}

	/**
	 * 戻るボタン押下処理
	 * <br>
	 * @return	処理結果
	 * @throws Exception 例外
	 */
	public boolean back() throws Exception
	{
		DEBUG_LOG.debug("★★★★★eo光テレビSTB追加変更申込のビューロジック処理(BACK) START★★★★★");

		// 初期設定
		JFUWebCommon.getScreenInfo(this);
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		X31SDataBeanAccess serviceInfoBean = super.getServiceFormBean();

		// 電話番号
		String telNo = serviceInfoBean.sendMessageString(FUW06802SFConst.SAVE_KIKI_STC_SK_TELNO, GET);
		serviceInfoBean.sendMessageString(FUW06802SFConst.I_DT_RRKS_TELNO, SET, telNo);
		// 携帯電話／ＰＨＳ番号
		String ktaiTelNo = serviceInfoBean.sendMessageString(FUW06802SFConst.SAVE_RRKS_KTAI_TELNO, GET);
		serviceInfoBean.sendMessageString(FUW06802SFConst.I_RRKS_KTAI_TELNO, SET, ktaiTelNo);

		// ご利用料金枠の設定
		makeRyokinList(serviceInfoBean);

		// 遷移先画面情報の設定(eo光テレビSTB追加変更申込画面へ遷移)
		commonInfoBean.sendMessageString(NEXT_SCREEN_ID, SET, SCREEN_ID_FUW06802);
		commonInfoBean.sendMessageString(NEXT_SCREEN_NAME, SET, SCREEN_NAME_FUW06802);

		DEBUG_LOG.debug("★★★★★eo光テレビSTB追加変更申込のビューロジック処理(BACK) END★★★★★");
		return true;
	}

	/**
	 * 申し込むボタン押下処理
	 * <br>
	 * @return	処理結果
	 * @throws Exception 例外
	 */
	public boolean mskm() throws Exception
	{
		DEBUG_LOG.debug("★★★★★eo光テレビSTB追加変更申込のビューロジック処理(MOSHIKOMU) START★★★★★");

		// 初期設定
		JFUWebCommon.getScreenInfo(this);
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		X31SDataBeanAccess serviceInfoBean = super.getServiceFormBean();

		// 利用可能サービスチェック
		JFUWebCommon.checkCommonRelation(this, SVC_USECASE_ID_FUSV0131);

		// サービス呼出処理
		callFUSV0131(serviceInfoBean, FUNC_CD_1, commonInfoBean);

		// 申込完了メール送信部品呼出処理
		boolean bsptFlg = serviceInfoBean.sendMessageBoolean(FUW06802SFConst.CHKBOX_BSPASS, GET);	// ＢＳパススルーフラグ
		String chgWay = serviceInfoBean.sendMessageString(FUW06802SFConst.CHG_WAY, GET);			// 交換方法
		// 可変文字リスト
// ANK-3057-00-00 MOD START
//		String[] textList = { getMailTextStb() };
		String[] textList = { getMailTextStb(serviceInfoBean) };
// ANK-3057-00-00 MOD END

		if (bsptFlg)
		{
			// BSパススルー申込有の場合
			JFUWebCommon.sendMskmFinMail(this, MSKM_FIN_MAIL_FUW068_1, null, textList);
		}
		else if (CHG_WAY_CD_TAKUHAI.equals(chgWay))
		{
			// 宅配交換の場合（STB変更のみ）
			JFUWebCommon.sendMskmFinMail(this, MSKM_FIN_MAIL_FUW068_2, null, textList);
		}
		else
		{
			// 上記以外の場合
			JFUWebCommon.sendMskmFinMail(this, MSKM_FIN_MAIL_FUW068_3, null, textList);
		}

		// 遷移先画面情報の設定(eo光テレビSTB追加変更申込結果画面へ遷移)
		commonInfoBean.sendMessageString(NEXT_SCREEN_ID, SET, SCREEN_ID_FUW06804);
		commonInfoBean.sendMessageString(NEXT_SCREEN_NAME, SET, SCREEN_NAME_FUW06804);

		DEBUG_LOG.debug("★★★★★eo光テレビSTB追加変更申込のビューロジック処理(MOSHIKOMU) END★★★★★");
		return true;
	}

	/**
	 * サービスフォームBean初期値設定
	 * <br>
	 * @param serviceInfoBean サービスフォームBean
	 */
	private void initSFBean(X31SDataBeanAccess serviceInfoBean)
	{
		// 運用日付
		serviceInfoBean.sendMessageString(FUW06802SFConst.OPERATE_DATE, SET, JFUWebCommon.getOpeDate(this, null));
		// コース種別
		serviceInfoBean.sendMessageString(FUW06802SFConst.PCRS_TYPE, SET, JFUStrConst.EMPTY);

		// 数量関連
		serviceInfoBean.sendMessageString(FUW06802SFConst.KIKI_KENSU_CNT, SET, "0"); // 機器リスト格納件数
		serviceInfoBean.sendMessageString(FUW06802SFConst.MSKM_STB_CNT, SET, MSKM_STB_ADD_CNT0); // 台数選択
		serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_KOUJI_PRC, SET, "0"); // ＢＳパススルー工事費
		serviceInfoBean.sendMessageString(FUW06802SFConst.STB_PRC, SET, "0");

		// フラグ関連
		serviceInfoBean.sendMessageString(FUW06802SFConst.BSPT_MSKM_FLG, SET, "0"); // ＢＳパススルー申込有無
		serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_DISP_FLG, SET, "0"); // ＢＳパススルー申込可否フラグ
		serviceInfoBean.sendMessageString(FUW06802SFConst.STB_CNG_FLG, SET, "0"); // 機器変更可否フラグ
		serviceInfoBean.sendMessageString(FUW06802SFConst.YOYAKU_FLG, SET, "0"); // 予約レコード有無フラグ
		serviceInfoBean.sendMessageString(FUW06802SFConst.YOYAKU_FLG_VONU, SET, "0"); // 予約レコード有無フラグ＿ＶＯＮＵ
		serviceInfoBean.sendMessageString(FUW06802SFConst.LIGHT_DISP_FLG, SET, "0"); // ライトコース有無フラグ
		serviceInfoBean.sendMessageString(FUW06802SFConst.VONU_BSPT_KH, SET, "1"); // ＶＯＮＵＢＳパススルー可否
		serviceInfoBean.sendMessageString(FUW06802SFConst.STB_CNG_UMU_FLG, SET, "0"); // STB追加変更有無フラグ
		serviceInfoBean.sendMessageString(FUW06802SFConst.AD_FORM_FLG, SET, AD_FORM_FLG_1); // 住居フラグ

		// 一時支払料金
		serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_11_LIST, SET, "0");
		serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_12_LIST, SET, "0");
		serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_13_LIST, SET, "0");
		serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_14_LIST, SET, "0");
		serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_15_LIST, SET, "0");
	}

	/**
	 * 共有フォームBeanからサービスフォームBeanへ値をコピーします
	 * <br>
	 * @param commonInfoBean 共有フォームBean
	 * @param serviceInfoBean サービスフォームBean
	 */
	private void copySFBean(X31SDataBeanAccess commonInfoBean, X31SDataBeanAccess serviceInfoBean)
	{
		// サービスフォームBean ← 共有フォームBean.現顧客契約情報
		X31SDataBeanAccess genCustKeiInfo = commonInfoBean.getDataBeanArray(JFUWebCommon.GEN_CUST_KEI_INFO).getDataBean(0);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.SYSID_22, FUW06802SFConst.SYSID);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.CUST_NM_22, FUW06802SFConst.CUST_NM);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.CUST_KANA_22, FUW06802SFConst.CUST_KANA);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.OFFC_NM_22, FUW06802SFConst.OFFC_NM);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.KEISHA_AD_CD_22, FUW06802SFConst.KEISHA_AD_CD);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.KEISHA_PCD_22, FUW06802SFConst.KEISHA_PCD);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.KEISHA_TELNO_22, FUW06802SFConst.KEISHA_TELNO);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.KEISHA_STATE_NM_22, FUW06802SFConst.KEISHA_STATE_NM);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.KEISHA_CITY_NM_22, FUW06802SFConst.KEISHA_CITY_NM);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.KEISHA_OAZTSU_NM_22, FUW06802SFConst.KEISHA_OAZTSU_NM);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.KEISHA_AZCHO_NM_22, FUW06802SFConst.KEISHA_AZCHO_NM);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.KEISHA_BNCHIGO_22, FUW06802SFConst.KEISHA_BNCHIGO);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.KEISHA_ADRTTM_22, FUW06802SFConst.KEISHA_ADRTTM);
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.KEISHA_ADRRM_22, FUW06802SFConst.KEISHA_ADRRM);
// ANK-3872-00-00 ADD START
		copyValue(genCustKeiInfo, serviceInfoBean, CommonInfoCFConst.KEISHA_TELNO_22, FUW06802SFConst.CONTRACT_TELNO);
// ANK-3872-00-00 ADD END

		// サービスフォームBean ← 共有フォームBean.サービス契約情報
		X31SDataBeanAccess svcKeiInfo = commonInfoBean.getDataBeanArray(JFUWebCommon.SVC_KEI_INFO).getDataBean(0);
		copyValue(svcKeiInfo, serviceInfoBean, CommonInfoCFConst.SVC_KEI_NO_23, FUW06802SFConst.SVC_KEI_NO);
		copyValue(svcKeiInfo, serviceInfoBean, CommonInfoCFConst.SVC_CD_23, FUW06802SFConst.SVC_CD);
		copyValue(svcKeiInfo, serviceInfoBean, CommonInfoCFConst.TK_HOSHIKI_KEI_NO_23, FUW06802SFConst.TK_HOSHIKI_KEI_NO);
		copyValue(svcKeiInfo, serviceInfoBean, CommonInfoCFConst.LAST_UPD_DTM_23, FUW06802SFConst.LAST_UPD_DTM_KEI);

		// サービスフォームBean ← 共有フォームBean.サービス契約回線内訳情報
		X31SDataBeanAccess svcKeiKaisenUcwkInfo = commonInfoBean.getDataBeanArray(JFUWebCommon.SVC_KEI_KAISEN_UCWK_INFO).getDataBean(0);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.SVC_KEI_KAISEN_UCWK_NO_26, FUW06802SFConst.SVC_KEI_KAISEN_UCWK_NO);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.MANSION_BUKKEN_NO_26, FUW06802SFConst.MANSION_BUKKEN_NO);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.LGTD_26, FUW06802SFConst.LGTD);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.LTTD_26, FUW06802SFConst.LTTD);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.ZAHYO_HOSEI_UM_26, FUW06802SFConst.ZAHYO_HOSEI_UM);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.SHUGJ_NYUKYO_FLR_CNT_CD_26, FUW06802SFConst.SHUGJ_NYUKYO_FLR_CNT_CD);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KODATE_KCKU_FLR_CNT_CD_26, FUW06802SFConst.KODATE_KCKU_FLR_CNT_CD);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.DIRECTION_CD_1_26, FUW06802SFConst.DIRECTION_CD_1);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.DIRECTION_CD_2_26, FUW06802SFConst.DIRECTION_CD_2);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.AD_FORM_CD_26, FUW06802SFConst.AD_FORM_CD);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLACE_TELNO_26, FUW06802SFConst.KIKI_STC_SK_TELNO);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLACE_TELNO_26, FUW06802SFConst.KAISEN_PLACE_TELNO);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLACE_AD_CD_26, FUW06802SFConst.KAISEN_PLACE_AD_CD);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLACE_PCD_26, FUW06802SFConst.KAISEN_PLACE_PCD);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLACE_NO_26, FUW06802SFConst.KAISEN_PLACE_NO);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KISN_PLC_KKK_SEIRI_CHU_FLG_26, FUW06802SFConst.KISN_PLC_KKK_SEIRI_CHU_FLG);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KISN_PLC_AD_MI_FIX_FLG_26, FUW06802SFConst.KISN_PLC_AD_MI_FIX_FLG);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLC_KSH_AD_SAI_FLG_26, FUW06802SFConst.KAISEN_PLC_KSH_AD_SAI_FLG);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLACE_STATE_NM_26, FUW06802SFConst.KAISEN_PLACE_STATE_NM);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLACE_CITY_NM_26, FUW06802SFConst.KAISEN_PLACE_CITY_NM);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLACE_OAZTSU_NM_26, FUW06802SFConst.KAISEN_PLACE_OAZTSU_NM);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLACE_AZCHO_NM_26, FUW06802SFConst.KAISEN_PLACE_AZCHO_NM);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLACE_BNCHIGO_26, FUW06802SFConst.KAISEN_PLACE_BNCHIGO);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLACE_ADRTTM_26, FUW06802SFConst.KAISEN_PLACE_ADRTTM);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLACE_ADRRM_26, FUW06802SFConst.KAISEN_PLACE_ADRRM);
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KEPCO_BUSIOFFICE_CD_26, FUW06802SFConst.KEPCO_BUSIOFFICE_NO);
// ANK-3872-00-00 ADD START
		copyValue(svcKeiKaisenUcwkInfo, serviceInfoBean, CommonInfoCFConst.KAISEN_PLACE_TELNO_26, FUW06802SFConst.USE_PLACE_TELNO);
// ANK-3872-00-00 ADD END

		// ｅｏ光テレビチューナー設置場所住所
		String stateNm = svcKeiKaisenUcwkInfo.sendMessageString(CommonInfoCFConst.KAISEN_PLACE_STATE_NM_26, GET);
		String cityNm = svcKeiKaisenUcwkInfo.sendMessageString(CommonInfoCFConst.KAISEN_PLACE_CITY_NM_26, GET);
		String oaztsuNm = svcKeiKaisenUcwkInfo.sendMessageString(CommonInfoCFConst.KAISEN_PLACE_OAZTSU_NM_26, GET);
		String azchoNm = svcKeiKaisenUcwkInfo.sendMessageString(CommonInfoCFConst.KAISEN_PLACE_AZCHO_NM_26, GET);
		String bnchigo = svcKeiKaisenUcwkInfo.sendMessageString(CommonInfoCFConst.KAISEN_PLACE_BNCHIGO_26, GET);
		String adrttm = svcKeiKaisenUcwkInfo.sendMessageString(CommonInfoCFConst.KAISEN_PLACE_ADRTTM_26, GET);
		String adrrm = svcKeiKaisenUcwkInfo.sendMessageString(CommonInfoCFConst.KAISEN_PLACE_ADRRM_26, GET);
		String kaisenPlace = JZMCommonUtil.getPtn01(stateNm, cityNm, oaztsuNm, azchoNm, bnchigo, adrttm, adrrm);
		serviceInfoBean.sendMessageString(FUW06802SFConst.KIKI_STC_SAKI, SET, kaisenPlace);

		// サービスフォームBean ← 共有フォームBean.請求契約情報
		X31SDataBeanAccess seikyKeiInfo = commonInfoBean.getDataBeanArray(JFUWebCommon.SEIKY_KEI_INFO).getDataBean(0);
		copyValue(seikyKeiInfo, serviceInfoBean, CommonInfoCFConst.SEIKY_KEI_NO_32, FUW06802SFConst.SEIKY_KEI_NO);

		// サービスフォームBean ← 共有フォームBean.機器提供サービス契約情報
		X31SDataBeanAccessArray kktkSvcKeiList = commonInfoBean.getDataBeanArray(JFUWebCommon.KKTK_SVC_KEI_INFO);
		String vonuKktkSvcKeiNo = JFUStrConst.EMPTY;
		String vonuTaknkikiModelCd = JFUStrConst.EMPTY;
		String vonuKikiSeizoNo = JFUStrConst.EMPTY;
		String vonulastupdDtm = JFUStrConst.EMPTY;
		String vonuPcrsCd = JFUStrConst.EMPTY;

		// ループ：機器提供サービス契約情報件数分
		int stbCnt = 0;
		for (int i = 0; i < kktkSvcKeiList.getCount(); i++)
		{
			X31SDataBeanAccess kktkSvcKeiInfo = kktkSvcKeiList.getDataBean(i);
			String kktkSvcCd = kktkSvcKeiInfo.sendMessageString(CommonInfoCFConst.KKTK_SVC_CD_27, GET);
			String kktkSvcKeiStat = kktkSvcKeiInfo.sendMessageString(CommonInfoCFConst.KKTK_SVC_KEI_STAT_27, X31CWebConst.DATABEAN_GET_VALUE);

			// 機器提供サービス契約ステータスが申し込み不可のステータスの場合、読み飛ばし
			if (!enableKktkSvcKeiStat(kktkSvcKeiStat))
			{
				continue;
			}

			if (JFUStrConst.KK0771_KKTK_SVC_CD_C009.equals(kktkSvcCd))
			{
				// 機器提供サービスコードがSTBの場合
				String kikiSeizoNo = kktkSvcKeiInfo.sendMessageString(CommonInfoCFConst.KIKI_SEIZO_NO_27, GET);

				if (kikiSeizoNo != null && !JFUStrConst.EMPTY.equals(kikiSeizoNo))
				{
					X31SDataBeanAccess stbidInfo =
							JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.STBID_LIST + N_LAST, stbCnt);
					stbidInfo.sendMessageString(FUW06802SFConst.KIKI_SEIZO_NO_06, SET, kikiSeizoNo);
					stbCnt++;
				}
			}
			else if (JFUStrConst.KK0771_KKTK_SVC_CD_C013.equals(kktkSvcCd))
			{
				// 機器提供サービスコードがV-ONUの場合
				vonuKktkSvcKeiNo = kktkSvcKeiInfo.sendMessageString(CommonInfoCFConst.KKTK_SVC_KEI_NO_27, GET);
				vonuTaknkikiModelCd = kktkSvcKeiInfo.sendMessageString(CommonInfoCFConst.TAKNKIKI_MODEL_CD_27, GET);
				vonuKikiSeizoNo = kktkSvcKeiInfo.sendMessageString(CommonInfoCFConst.KIKI_SEIZO_NO_27, GET);
				vonulastupdDtm = kktkSvcKeiInfo.sendMessageString(CommonInfoCFConst.LAST_UPD_DTM_27, GET);
				vonuPcrsCd = kktkSvcKeiInfo.sendMessageString(CommonInfoCFConst.PCRS_CD_27, GET);
			}
		}
		serviceInfoBean.sendMessageString(FUW06802SFConst.V_ONU_NO, SET, vonuKktkSvcKeiNo); // 機器提供サービス契約番号＿ＶＯＮＵ
		serviceInfoBean.sendMessageString(FUW06802SFConst.TAKNKIKI_MODEL_CD, SET, vonuTaknkikiModelCd); // 宅内機器型式コード＿ＶＯＮＵ
		serviceInfoBean.sendMessageString(FUW06802SFConst.KIKI_SEIZO_NO_VONU, SET, vonuKikiSeizoNo); // 機器製造番号＿ＶＯＮＵ
		serviceInfoBean.sendMessageString(FUW06802SFConst.LAST_UPD_DTM_VONU, SET, vonulastupdDtm);
		serviceInfoBean.sendMessageString(FUW06802SFConst.VONU_PCRS_CD, SET, vonuPcrsCd);
// ANK-3872-00-00 ADD START
		// 連絡先電話選択(契約者電話番号を初期選択とする)
		serviceInfoBean.sendMessageString(FUW06802SFConst.RRKS_TEL_SELECT, X31CWebConst.DATABEAN_SET_VALUE, "1");
// ANK-3872-00-00 ADD END
	}

	/**
	 * サービスフォームBeanの設定を行います
	 * <br>
	 * @param commonInfoBean 共通フォームBean
	 * @param serviceInfoBean サービスフォームBean
	 * @param outputMap サービス処理結果マップ
	 * @param opeDate 運用日付
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void setSFBean(X31SDataBeanAccess commonInfoBean, X31SDataBeanAccess serviceInfoBean,
			HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap, String opeDate) throws Exception
	{

		// 機器機種変更中の予約中の場合は、エラーにする。
		chkKikiMdlChgRsvcv(outputMap);

		// テレビ関連の申し込み可否チェック処理
		checkTvMskmAvailable(outputMap);

		// 機器提供サービス契約レコード
		HashMap<String, HashMap<String, String>> stb_all_kei_map = new HashMap<String, HashMap<String, String>>();
		HashMap<String, HashMap<String, String>> stb_all_kei_map_bcas = new HashMap<String, HashMap<String, String>>();
		HashMap<String, HashMap<String, String>> stb_all_kei_map_ccas = new HashMap<String, HashMap<String, String>>();

		// サービス契約内訳レコード
		HashMap<String, HashMap<String, String>> pcrs_all_kei_map = new HashMap<String, HashMap<String, String>>();

		// 機器提供サービス契約番号格納リスト
		TreeSet<String> stb_no_list = new TreeSet<String>();

		// ＳＴＢＩＤマップ
		HashMap<String, String> stbid_map = new HashMap<String, String>();
		// Ｂ−ＣＡＳマップ
		HashMap<String, String> bcas_map = new HashMap<String, String>();

		// B-CAS不要情報（業務パラメータ、マスタから取得したB-CAS不要機器の情報。データが存在しない場合は空）
		List<String> bcasMasterList = JFUWebCommon.getWorkParamSplit(this, JFUStrConst.KK_HDD_CAPA_BCASNONE);

		// サービス処理結果マップの編集処理
		editDispMapSC1(outputMap, stb_all_kei_map, stb_no_list, bcasMasterList);
		editDispMapSC2(outputMap, stb_all_kei_map, stb_all_kei_map_bcas);
		editDispMapSC3(outputMap, stb_all_kei_map, stb_all_kei_map_ccas);
		editDispMapSC4(serviceInfoBean, outputMap);
		editDispMapSC12(serviceInfoBean, outputMap);
		// 料金コース一覧照会(機器リスト（参照用）KIKI_SAVE_LIST)
		editDispMapSC15(serviceInfoBean, outputMap, bcasMasterList, opeDate);
		editDispMapSC5(serviceInfoBean, outputMap);
		// ●契約中のB-CAS不要STBの件数
		HashMap<String, String> resutMap = get4KBcasFuyoCount(serviceInfoBean, stb_no_list, stb_all_kei_map);
		int bcasFuyoCnt = Integer.parseInt(resutMap.get("bcasFuyoCnt"));
		String old4Kstb = resutMap.get("old4Kstb");

		serviceInfoBean.sendMessageString(FUW06802SFConst.HOYU_STB_4K_OLD, X31CWebConst.DATABEAN_SET_VALUE, old4Kstb);
		editDispMapSC6(serviceInfoBean, outputMap, pcrs_all_kei_map, bcasFuyoCnt);
		editDispMapSC7(commonInfoBean, serviceInfoBean, outputMap);
		editDispMapSC8(serviceInfoBean, outputMap);
		editDispMapSC9(serviceInfoBean, outputMap);
		editDispMapSC10(serviceInfoBean, outputMap);
		editDispMapSC11(serviceInfoBean, outputMap);
		editDispMapCC01(outputMap, stbid_map, bcas_map);
		editDispMapSC14(serviceInfoBean, outputMap);
		// BSパススルー工事費割引CPの適用可否を考慮した結果を取得（割引サービスコードが空でない場合は適用）
		String bsptWribTekiyoFlg = editDispMapCC02(outputMap);
		editDispMapSC16(serviceInfoBean, outputMap);

		String adFormFlg = serviceInfoBean.sendMessageString(FUW06802SFConst.AD_FORM_FLG, GET);
		if (!AD_FORM_FLG_3.equals(adFormFlg) && stb_no_list.size() > KEI_LIMIT_CNT)
		{
			// ホーム・マンションの場合、機器提供サービス契約が6件以上存在するためエラー
			DEBUG_LOG.info("----- FUW06802_setSFBean() 機器提供サービス契約件数超過エラー[メゾン以外] -----");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
		}
		else if (AD_FORM_FLG_3.equals(adFormFlg) && stb_no_list.size() > 1)
		{
			// メゾンの場合、機器提供サービス契約が2件以上存在するためエラー
			DEBUG_LOG.info("----- FUW06802_setSFBean() 機器提供サービス契約件数超過エラー[メゾン] -----");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
		}

		// ◆ＢＳパススルー申込可否フラグの設定
		setBSPassDispFlg(commonInfoBean, serviceInfoBean, bsptWribTekiyoFlg);

		// ◆ＶＯＮＵ4Ｋ−ＳＴＢ登録可否
		String vOnu4KstbChk = getVOnu4KStbChk(serviceInfoBean);
		serviceInfoBean.sendMessageString(FUW06802SFConst.HOYU_VONU_4KSTB_KH, SET, vOnu4KstbChk);

		// BSパススルー工事費
		int shutchoPrc = Integer.parseInt(serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_11_LIST, GET));
		int bsptPrc = Integer.parseInt(serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_14_LIST, GET));

		// BSパススルー工事費の金額が0円でない場合、BSパススルー工事費用の表示フラグに"1"を設定する
		if ((shutchoPrc + bsptPrc) != 0)
		{
			serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_KOUJI_PRC_DISP_FLG, SET, BSPS_KOJI_DISP_FLG_DSP);
		}
		else
		{
			// 0円の場合は、BSパススルー工事費用の表示フラグに"0"を設定する
			serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_KOUJI_PRC_DISP_FLG, SET, BSPS_KOJI_DISP_FLG_HIDSP);
		}

// ANK-3977-00-00 MOD START
//		// BSパススルー工事費(税抜き金額用)
//		String shutchoPrcStr = serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_11_LIST, GET);
//		String shutchoPrcStrZeinuki = JFUWebCommon.getCalcPlanPrcExcludeTax(this, shutchoPrcStr);
//
//		String bsptPrcStr = serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_14_LIST, GET);
//		String bsptPrcStrZeinuki = JFUWebCommon.getCalcPlanPrcExcludeTax(this, bsptPrcStr);
//
//		String bspassKoujiPrcZeinuki =
//				formatNumber(Integer.toString(Integer.parseInt(shutchoPrcStrZeinuki) + Integer.parseInt(bsptPrcStrZeinuki)))
//						+ PRC_INFO_AREA_HALF_SPACE_YEN;
//		
//		// 税抜き金額を設定
//		serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_KOUJI_PRC, SET, bspassKoujiPrcZeinuki);
		// BSパススルー工事費(税込金額用)
		String shutchoPrcStr = serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_11_LIST, GET);
		String bsptPrcStr = serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_14_LIST, GET);
		String bspassKoujiPrc =
				formatNumber(Integer.toString(Integer.parseInt(shutchoPrcStr) + Integer.parseInt(bsptPrcStr)))
						+ PRC_INFO_AREA_HALF_SPACE_YEN;
		
		// 税込金額を設定
		serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_KOUJI_PRC, SET, bspassKoujiPrc);
// ANK-3977-00-00 MOD END

		// 契約情報変更リスト、機器情報変更リストの設定
		setKeiKikiChgList(serviceInfoBean, stb_no_list, stb_all_kei_map, stb_all_kei_map_bcas, stb_all_kei_map_ccas, pcrs_all_kei_map, stbid_map,
				(HashMap)outputMap.get(CC_TITLE_FUSV013003CC), bcas_map, opeDate);

		String stbChgFlg = serviceInfoBean.sendMessageString(FUW06802SFConst.STB_CNG_FLG, GET);
		String bspassDispFlg = serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_DISP_FLG, GET);
		int keiChgCnt = serviceInfoBean.getDataBeanArray(FUW06802SFConst.CHG_LIST).getCount();

		if (!STB_CNG_FLG_1.equals(stbChgFlg) && !BSPASS_DISP_FLG_1.equals(bspassDispFlg) && KEI_LIMIT_CNT == keiChgCnt)
		{
			// 機器変更可否フラグが「0：変更不可能」かつＢＳパススルー可否「0:不可能」かつ契約情報リストが5件の場合、契約状態エラー
			DEBUG_LOG.info("----- FUW06802_setSFBean() 契約状態エラー -----");
			throw new JCCBusinessException(ERROR_CODE_0102);
		}

		// 契約情報追加リスト、機器情報追加リストの設定
		setKeiKikiAddList(serviceInfoBean, (HashMap)outputMap.get(CC_TITLE_FUSV013003CC), opeDate);

		// 開始台数の設定
		// 「保持機器+1台目」からではなく「追加する機器の何台目」かの表記になるので1から開始
		// 追加する台数のリストにするので手持ち分を足しての選択後の台数表示はしない
		serviceInfoBean.sendMessageString(FUW06802SFConst.START_MSKM_STB_CNT, SET, Integer.toString(1));
	}

	/**
	 * 契約情報変更リスト、機器情報変更リストの設定
	 * <br>
	 * @param serviceInfoBean サービスフォームBean
	 * @param stb_no_list 機器提供サービス契約番号格納リスト
	 * @param stb_all_kei_map 機器提供サービス契約中レコード(STB)
	 * @param stb_all_kei_map_bcas 機器提供サービス契約中レコード(BCAS)
	 * @param stb_all_kei_map_ccas 機器提供サービス契約中レコード(CCAS)
	 * @param pcrs_all_kei_map サービス契約内訳契約中レコード
	 * @param stbid_map ＳＴＢＩＤマップ
	 * @param bcas_map Ｂ−ＣＡＳマップ
	 * @param opeDate 運用日付
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void setKeiKikiChgList(X31SDataBeanAccess serviceInfoBean, TreeSet<String> stb_no_list,
			HashMap<String, HashMap<String, String>> stb_all_kei_map, HashMap<String, HashMap<String, String>> stb_all_kei_map_bcas,
			HashMap<String, HashMap<String, String>> stb_all_kei_map_ccas, HashMap<String, HashMap<String, String>> pcrs_all_kei_map,
			HashMap<String, String> stbid_map, HashMap kikiMap, HashMap<String, String> bcas_map, String opeDate) throws Exception
	{
		// データタイプBeanの初期化
		serviceInfoBean.getDataBeanArray(FUW06802SFConst.CHG_LIST).clearArray();
		serviceInfoBean.getDataBeanArray(FUW06802SFConst.KIKI_CNG_LIST).clearArray();

		// ■機器リスト（参照用）の取得
		X31SDataBeanAccess kikiSaveInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.KIKI_SAVE_LIST);

		String stbCngFlg = "0";
		String kikiKensuCnt = serviceInfoBean.sendMessageString(FUW06802SFConst.KIKI_KENSU_CNT, GET);
		boolean yoyakuFlg = false;
		boolean gladeFlg = false;

		// ■ループ：機器提供サービス契約番号格納リスト(STB) -----> START
		int i = 0;
		boolean stbNameFlg = JFUWebCommon.getStbNameFlg(opeDate);
		for (String stb_no : stb_no_list)
		{
			// 機器提供サービスレコード
			HashMap<String, String> stbAllKeiMap = stb_all_kei_map.get(stb_no);
			HashMap<String, String> stbAllKeiMapBcas = stb_all_kei_map_bcas.get(stb_no);
			if (stbAllKeiMapBcas == null)
			{
				// B-CASがない場合があるため（B-CAS製造番号（＝ACAS製造番号）は、視聴制御CC内にて取得設定されるため未設定のまま）
				stbAllKeiMapBcas = new HashMap<String, String>();
				stbAllKeiMapBcas.put(MAP_KIKI_SEIZO_NO, JFUStrConst.EMPTY);
				stbAllKeiMapBcas.put(MAP_KEY_KKTK_SVC_KEI_NO, JFUStrConst.EMPTY);
				stbAllKeiMapBcas.put(MAP_KEY_KK_CHG_NO, JFUStrConst.EMPTY);
				stbAllKeiMapBcas.put(MAP_KEY_GENE_ADD_DTM, JFUStrConst.EMPTY);
				stbAllKeiMapBcas.put(MAP_KEY_TAKNKIKI_MODEL_CD, JFUStrConst.EMPTY);
			}
			HashMap<String, String> stbAllKeiMapCcas = stb_all_kei_map_ccas.get(stb_no);
			// サービス契約内訳レコード
			HashMap<String, String> pcrsAllKeiMap = pcrs_all_kei_map.get(stbAllKeiMap.get(MAP_KEY_SVC_KEI_UCWK_NO));
			// 契約情報リストを生成
			X31SDataBeanAccess keiChgInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.CHG_LIST + N_LAST, i);

			keiChgInfo.sendMessageString(FUW06802SFConst.MAKE_FLG_01, SET, "0"); // レコード作成フラグ
			keiChgInfo.sendMessageString(FUW06802SFConst.KEI_CNT_01, SET, Integer.toString(i + 1)); // 契約台数
			keiChgInfo.sendMessageString(FUW06802SFConst.CHG_STB_01, SET, "0"); // ＳＴＢ変更
			keiChgInfo.sendMessageString(FUW06802SFConst.SVC_KEI_UCWK_NO_01, SET, pcrsAllKeiMap.get(MAP_KEY_SVC_KEI_UCWK_NO)); // サービス契約内訳番号

			keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_SEIZO_NO_STB_01, SET, stbAllKeiMap.get(MAP_KIKI_SEIZO_NO)); // 機器製造番号
			keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_SEIZO_NO_BCAS_01, SET, stbAllKeiMapBcas.get(MAP_KIKI_SEIZO_NO));
			keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_SEIZO_NO_CCAS_01, SET, stbAllKeiMapCcas.get(MAP_KIKI_SEIZO_NO));
			String ccasDisp = editKikiSeizoNo(stbAllKeiMapCcas.get(MAP_KIKI_SEIZO_NO));
			keiChgInfo.sendMessageString(FUW06802SFConst.C_CAS_NO_DISP_01, SET, ccasDisp);

			keiChgInfo.sendMessageString(FUW06802SFConst.KKTK_SVC_KEI_NO_01, SET, stbAllKeiMap.get(MAP_KEY_KKTK_SVC_KEI_NO)); // 機器提供サービス契約番号
			keiChgInfo.sendMessageString(FUW06802SFConst.KK_CHG_NO_01, SET, stbAllKeiMap.get(MAP_KEY_KK_CHG_NO)); // 機器変更番号
			keiChgInfo.sendMessageString(FUW06802SFConst.KKTK_SVC_KEI_NO_BCAS_01, SET, stbAllKeiMapBcas.get(MAP_KEY_KKTK_SVC_KEI_NO));
			keiChgInfo.sendMessageString(FUW06802SFConst.KK_CHG_NO_BCAS_01, SET, stbAllKeiMapBcas.get(MAP_KEY_KK_CHG_NO));
			keiChgInfo.sendMessageString(FUW06802SFConst.KKTK_SVC_KEI_NO_CCAS_01, SET, stbAllKeiMapCcas.get(MAP_KEY_KKTK_SVC_KEI_NO));
			keiChgInfo.sendMessageString(FUW06802SFConst.KK_CHG_NO_CCAS_01, SET, stbAllKeiMapCcas.get(MAP_KEY_KK_CHG_NO));

			keiChgInfo.sendMessageString(FUW06802SFConst.GENE_ADD_DTM_KIKI_01, SET, stbAllKeiMap.get(MAP_KEY_GENE_ADD_DTM)); // 世代登録年月日時分秒
			keiChgInfo.sendMessageString(FUW06802SFConst.GENE_ADD_DTM_KIKI_BCAS_01, SET, stbAllKeiMapBcas.get(MAP_KEY_GENE_ADD_DTM));
			keiChgInfo.sendMessageString(FUW06802SFConst.GENE_ADD_DTM_KIKI_CCAS_01, SET, stbAllKeiMapCcas.get(MAP_KEY_GENE_ADD_DTM));
			keiChgInfo.sendMessageString(FUW06802SFConst.GENE_ADD_DTM_PCRS_01, SET, pcrsAllKeiMap.get(MAP_KEY_GENE_ADD_DTM));

			keiChgInfo.sendMessageString(FUW06802SFConst.CHG_PCRS_01, SET, getChgPcrs(pcrsAllKeiMap.get(MAP_KEY_PCRS_CD))); // コース選択
			keiChgInfo.sendMessageString(FUW06802SFConst.PCRS_NM_01, SET, pcrsAllKeiMap.get(MAP_KEY_PCRS_NM)); // コース名

			String ucwkStatusFlg = pcrsAllKeiMap.get(MAP_KEY_STATUS_FLG);
			if ("0".equals(ucwkStatusFlg))
			{
				// 内訳契約状態フラグ(0：追加予約中)の場合
				keiChgInfo.sendMessageString(FUW06802SFConst.PCRS_CD_01, SET, pcrsAllKeiMap.get(MAP_KEY_PCRS_CD)); // 選択コースコード
				keiChgInfo.sendMessageString(FUW06802SFConst.PPLAN_CD_01, SET, pcrsAllKeiMap.get(MAP_KEY_PPLAN_CD)); // 選択プランコード
				keiChgInfo.sendMessageString(FUW06802SFConst.PCRS_01, SET, pcrsAllKeiMap.get(MAP_KEY_PCRS_NM)); // 選択コース
			}
			else
			{
				keiChgInfo.sendMessageString(FUW06802SFConst.KEI_PCRS_01, SET, pcrsAllKeiMap.get(MAP_KEY_PCRS_NM)); // 契約中コース
				keiChgInfo.sendMessageString(FUW06802SFConst.KEI_PCRS_CD_01, SET, pcrsAllKeiMap.get(MAP_KEY_PCRS_CD)); // 契約中コースコード
				keiChgInfo.sendMessageString(FUW06802SFConst.KEI_PPLAN_CD_01, SET, pcrsAllKeiMap.get(MAP_KEY_PPLAN_CD)); // 契約中プランコード
			}

			String kikiStatusFlg = stbAllKeiMap.get(MAP_KEY_STATUS_FLG);
			if (!"0".equals(kikiStatusFlg))
			{
				// 契約状態フラグ(0：追加予約中)以外の場合
				keiChgInfo.sendMessageString(FUW06802SFConst.KEI_KIKI_PCRS_01, SET, stbAllKeiMap.get(MAP_KEY_PCRS_CD_NM)); // 契約中機器コース
				keiChgInfo.sendMessageString(FUW06802SFConst.KEI_KIKI_PCRS_CD_01, SET, stbAllKeiMap.get(MAP_KEY_PCRS_CD)); // 契約中機器コースコード
				keiChgInfo.sendMessageString(FUW06802SFConst.KEI_KIKI_PPLAN_CD_01, SET, stbAllKeiMap.get(MAP_KEY_PPLAN_CD)); // 契約中機器プランコード
				keiChgInfo.sendMessageString(FUW06802SFConst.KEI_HDD_CAPA_CD_01, SET, stbAllKeiMap.get(MAP_KEY_HDD_CAPA_CD)); // 契約中ＨＤＤ容量コード
				// 契約中宅内機器型式コード
				keiChgInfo.sendMessageString(FUW06802SFConst.KEI_TAKNKIKI_MODEL_CD_STB_01, SET, stbAllKeiMap.get(MAP_KEY_TAKNKIKI_MODEL_CD)); // 契約中宅内機器型式コード
				keiChgInfo.sendMessageString(FUW06802SFConst.KEI_TAKNKIKI_MODEL_CD_BCAS_01, SET, stbAllKeiMapBcas.get(MAP_KEY_TAKNKIKI_MODEL_CD)); // 契約中宅内機器型式コード(BCAS)
				keiChgInfo.sendMessageString(FUW06802SFConst.KEI_TAKNKIKI_MODEL_CD_CCAS_01, SET, stbAllKeiMapCcas.get(MAP_KEY_TAKNKIKI_MODEL_CD)); // 契約中宅内機器型式コード(CCAS)
			}

			// 機器契約詳細コード(0：追加予約中 1：契約中  011：機器コース変更 012：機器変更手続 013：機器解約 014：次月開始オプション有 )
			keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_RSV_DTL_CD_01, SET, stbAllKeiMap.get(MAP_KEY_STATUS_FLG));
			// 異動予約詳細コード(003:コース変更、005:サービス休止、006:サービス休止解除、007:サービス解約)
			keiChgInfo.sendMessageString(FUW06802SFConst.UCWK_RSV_DTL_CD_01, SET, pcrsAllKeiMap.get(MAP_KEY_IDO_RSV_DTL_CD));

			// ＳＴＢ＿ＩＤ
			String kikiSeizoNo = stbAllKeiMap.get(MAP_KIKI_SEIZO_NO);
			if (kikiSeizoNo != null && !JFUStrConst.EMPTY.equals(kikiSeizoNo))
			{
				keiChgInfo.sendMessageString(FUW06802SFConst.STB_ID_01, SET, stbid_map.get(kikiSeizoNo));
			}

			if (!"0".equals(ucwkStatusFlg))
			{
				// 契約中のサービス契約内訳がある場合
				keiChgInfo.sendMessageString(FUW06802SFConst.UCWK_STATUS_01, SET, UCWK_STATUS_0);
			}
			else
			{
				keiChgInfo.sendMessageString(FUW06802SFConst.UCWK_STATUS_01, SET, UCWK_STATUS_2);
				yoyakuFlg = true;
			}

			// 異動予約詳細コード(003:コース変更、005:サービス休止、006:サービス休止解除、007:サービス解約)
			String ucwkIdoRsvDtlCd = pcrsAllKeiMap.get(MAP_KEY_IDO_RSV_DTL_CD);
			if (JFUStrConst.CD01167_003.equals(ucwkIdoRsvDtlCd))
			{
				// サービス契約内訳にコース変更予約レコードが存在する場合
				String ucwkIidoNewPcrsCd = pcrsAllKeiMap.get("ido_new_pcrs_cd");
				keiChgInfo.sendMessageString(FUW06802SFConst.CHG_PCRS_01, SET, getChgPcrs(ucwkIidoNewPcrsCd)); // コース選択
				keiChgInfo.sendMessageString(FUW06802SFConst.PCRS_NM_01, SET, pcrsAllKeiMap.get("ido_new_pcrs_nm")); // コース名
				keiChgInfo.sendMessageString(FUW06802SFConst.PCRS_CD_01, SET, ucwkIidoNewPcrsCd); // 選択コースコード
				keiChgInfo.sendMessageString(FUW06802SFConst.PPLAN_CD_01, SET, pcrsAllKeiMap.get("ido_new_pplan_cd")); // 選択プランコード
				keiChgInfo.sendMessageString(FUW06802SFConst.PCRS_01, SET, pcrsAllKeiMap.get("ido_new_pcrs_nm")); // 選択コース
				keiChgInfo.sendMessageString(FUW06802SFConst.UCWK_STATUS_01, SET, UCWK_STATUS_1); // 内訳契約状態
				yoyakuFlg = true;
			}
			else if (JFUStrConst.CD01167_005.equals(ucwkIdoRsvDtlCd) || JFUStrConst.CD01167_006.equals(ucwkIdoRsvDtlCd)
					|| JFUStrConst.CD01167_007.equals(ucwkIdoRsvDtlCd))
			{
				// サービス契約内訳にコース変更以外の予約レコードが存在する場合
				keiChgInfo.sendMessageString(FUW06802SFConst.UCWK_STATUS_01, SET, UCWK_STATUS_1); // 内訳契約状態
				yoyakuFlg = true;
			}

			// ■機器情報リストを生成（機器選択）
			X31SDataBeanAccess kikiChgInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.KIKI_CNG_LIST + N_LAST, i);

			if ("1".equals(kikiStatusFlg))
			{
				// 機器提供サービス契約のレコードが契約中の場合
				keiChgInfo.sendMessageString(FUW06802SFConst.STATUS_01, SET, STATUS_0); // 契約状態
				keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_DISP_FLG_01, SET, "0"); // 機器選択リスト表示フラグ(0:表示、1:非表示)

				// ■「STB宅内機器一覧リスト(グレード考慮)」を取得
				// STB機器リスト(変更)を編集
				// kikiMap：『「chg_stb_kiki_list > chg_stb_list」「kiki_list > taknkiki_model_cd, pcrs_cd, taknkiki_sbt_cd」』
				boolean emptyFlg = false;
				// 4K視聴環境を満たしている場合は、B-CAS不要STBを表示させる。
				ArrayList kikiList = (ArrayList)kikiMap.get(MAP_KEY_CHG_STB_KIKI_LIST);

				// ■画面表示用に選択リストを作成する（chg_stb_list[候補リスト]とkikiSaveInfo[基本の選択リスト情報]を突き合わせる）
				// kikiSaveInfo   マスタ設定の全リスト『　：変更なし、00:録画機能なし、01:250GB、02:500GB(DVD)、03:500GB(BD)、04:1000GB、05:500GB(HDD)、06:1000GB(BD)』
				// chg_stb_list   契約中機器を除外したリスト
				ArrayList tgStbKikiList = new ArrayList();
				for (int h = 0; h < Integer.parseInt(kikiKensuCnt); h++)
				{
					String hddCd = kikiSaveInfo.sendMessageString(FUW06802SFConst.HDD_CD_LIST_02, GET, h);
					String cd = kikiSaveInfo.sendMessageString(FUW06802SFConst.CD_LIST_02, GET, h);
					String nm = kikiSaveInfo.sendMessageString(FUW06802SFConst.NM_LIST_02, GET, h);
					String hdd = kikiSaveInfo.sendMessageString(FUW06802SFConst.HDD_LIST_02, GET, h);
					String pplan = kikiSaveInfo.sendMessageString(FUW06802SFConst.PPLAN_LIST_02, GET, h);
					String prc = kikiSaveInfo.sendMessageString(FUW06802SFConst.PRC_LIST_02, GET, h);
					String glade = kikiSaveInfo.sendMessageString(FUW06802SFConst.GLADE_LIST_02, GET, h);
					String taniNm = kikiSaveInfo.sendMessageString(FUW06802SFConst.TANI_NM_LIST_02, GET, h);
					String modelCd = kikiSaveInfo.sendMessageString(FUW06802SFConst.TAKNKIKI_MODEL_CD_LIST_02, GET, h);

					// 自身のSTBに対応するchg_stb_listを取得する
					// stbkikiList：契約中STBよりもグレードの高い機器のリスト（STBの件数分設定されている）例：１台目、２台目・・・
					for (int j = i; j < kikiList.size(); j++)
					{
						HashMap childMap = (HashMap)kikiList.get(j);
						ArrayList stbkikiList = (ArrayList)childMap.get(MAP_KEY_CHG_STB_LIST);
						ArrayList ykKikiList = null;

						if (stbkikiList != null && stbkikiList.size() > 0)
						{
							// ◇有効機器（プロパティで定義されているフロント申込可能な機器）◇
							ykKikiList = getYkKikiList(serviceInfoBean, stbkikiList, opeDate);
						}

						if (stbkikiList == null || stbkikiList.size() == 0 || ykKikiList == null || ykKikiList.size() == 0)
						{
							keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_DISP_FLG_01, SET, "1"); // 機器選択リスト表示フラグ(0:表示、1:非表示)
						}
						else
						{

							keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_DISP_FLG_01, SET, "0"); // 機器選択リスト表示フラグ(0:表示、1:非表示)

							for (int k = 0; k < ykKikiList.size(); k++)
							{
								HashMap chgStbMap = (HashMap)ykKikiList.get(k);
								String disp = (String)chgStbMap.get(MAP_KEY_DSP_JUN);
								String ykTknkikiModelCd = JFUWebCommon.nvl((String)chgStbMap.get(MAP_KEY_TAKNKIKI_MODEL_CD), JFUStrConst.EMPTY);

								// ◇kikiSaveInfoに、候補機器が存在した場合は、料金関係の情報も含めて選択リストを作成する◇
								if ((JFUStrConst.EMPTY.equals(hddCd) && !emptyFlg) || (ykTknkikiModelCd.equals(modelCd)))
								{
									// "変更なし"の選択と選択可能なSTBリスト作成
									HashMap tgStbKikiMap = new HashMap();
									tgStbKikiMap.put(MAP_KEY_CD, cd);
									tgStbKikiMap.put(MAP_KEY_NM, nm);
									tgStbKikiMap.put(MAP_KEY_HDDCD, hddCd);
									tgStbKikiMap.put(MAP_KEY_HDD, hdd);
									tgStbKikiMap.put(MAP_KEY_PPLAN, pplan);
									tgStbKikiMap.put(MAP_KEY_PRC, prc);
									tgStbKikiMap.put(MAP_KEY_GLADE, glade);
									tgStbKikiMap.put(MAP_KEY_DISP, disp);
									tgStbKikiMap.put(MAP_KEY_TANINM, taniNm);
									tgStbKikiMap.put(MAP_KEY_TAKNKIKI_MODEL_CD, (String)chgStbMap.get(MAP_KEY_TAKNKIKI_MODEL_CD));

									// 空(変更なし)の場合、空フラグをTRUEにし、カウントをマイナスする
									if (JFUStrConst.EMPTY.equals(hddCd))
									{
										emptyFlg = true;
										k--;
										// 表示順を「0」とする
										tgStbKikiMap.put(MAP_KEY_DISP, JFUStrConst.S_ZERO);
										// 宅配機器型式コードを空文字にする
										tgStbKikiMap.put(MAP_KEY_TAKNKIKI_MODEL_CD, JFUStrConst.EMPTY);
									}
									else
									{
										// 自身のグレードが最上位でない場合は、変更可能
										gladeFlg = true;
									}

									// 対象リストに追加
									tgStbKikiList.add(tgStbKikiMap);
								}
							}
						}

						// 自身のSTB処理後に抜ける
						break;
					}
				}

				// 機器選択リスト並び替え
				Collections.sort(tgStbKikiList, new Comparator()
				{
					public int compare(Object o1, Object o2)
					{
						HashMap map1 = (HashMap)o1;
						HashMap map2 = (HashMap)o2;
						Integer str1 = Integer.valueOf((String)map1.get(MAP_KEY_DISP));
						Integer str2 = Integer.valueOf((String)map2.get(MAP_KEY_DISP));
						return str1.compareTo(str2);
					}
				});

				// サービスフォームBeanに設定
				for (int j = 0; j < tgStbKikiList.size(); j++)
				{
					HashMap tgStbKikiMap = (HashMap)tgStbKikiList.get(j);

					kikiChgInfo.sendMessageString(FUW06802SFConst.CD_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_CD)); 		// コースコード
					kikiChgInfo.sendMessageString(FUW06802SFConst.NM_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_NM)); 		// 名称
					kikiChgInfo.sendMessageString(FUW06802SFConst.HDD_CD_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_HDDCD));	// HDDコード
					kikiChgInfo.sendMessageString(FUW06802SFConst.HDD_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_HDD));		// HDD
					kikiChgInfo.sendMessageString(FUW06802SFConst.PPLAN_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_PPLAN)); 	// プランコード
					kikiChgInfo.sendMessageString(FUW06802SFConst.PRC_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_PRC)); 		// 月額料金
					kikiChgInfo.sendMessageString(FUW06802SFConst.GLADE_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_GLADE)); 	// グレード
					kikiChgInfo.sendMessageString(FUW06802SFConst.DISP_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_DISP)); 	// 表示順
					kikiChgInfo.sendMessageString(FUW06802SFConst.TANI_NM_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_TANINM));// 料金プラン単位名
					kikiChgInfo.sendMessageString(FUW06802SFConst.TAKNKIKI_MODEL_CD_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_TAKNKIKI_MODEL_CD));// 宅内機器型式コード
				}
			}
			else if (JFUStrConst.CD01167_011.equals(kikiStatusFlg))
			{
				// 機器提供サービス契約のレコードがコース変更予約中の場合
				keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_PCRS_01, SET, stbAllKeiMap.get(MAP_KEY_RSV_PCRS_CD_NM)); // 選択機器コース名
				keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_PCRS_CD_01, SET, stbAllKeiMap.get(MAP_KEY_RSV_PCRS_CD)); // 選択機器コースコード
				keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_PPLAN_CD_01, SET, stbAllKeiMap.get(MAP_KEY_RSV_PPLAN_CD)); // 選択機器プランコード
				keiChgInfo.sendMessageString(FUW06802SFConst.HDD_CAPA_CD_01, SET, stbAllKeiMap.get(MAP_KEY_RSV_HDD_CAPA_CD)); // 選択ＨＤＤ容量コード
				// 選択宅内機器型式コード
				keiChgInfo.sendMessageString(FUW06802SFConst.TAKNKIKI_MODEL_CD_01, SET, stbAllKeiMap.get(MAP_KEY_RSV_TAKNKIKI_MODEL_CD));
				keiChgInfo.sendMessageString(FUW06802SFConst.STATUS_01, SET, STATUS_1); // 契約状態
				keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_DISP_FLG_01, SET, "1"); // 機器選択リスト表示フラグ(0:表示、1:非表示)

				deepCopyDataBean(kikiSaveInfo, kikiChgInfo);
			}
			else if ("0".equals(kikiStatusFlg))
			{
				// 機器提供サービス契約が追加予約中の場合
				keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_PCRS_01, SET, stbAllKeiMap.get(MAP_KEY_PCRS_CD_NM)); // 選択機器コース名
				keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_PCRS_CD_01, SET, stbAllKeiMap.get(MAP_KEY_PCRS_CD)); // 選択機器コースコード
				keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_PPLAN_CD_01, SET, stbAllKeiMap.get(MAP_KEY_PPLAN_CD)); // 選択機器プランコード
				keiChgInfo.sendMessageString(FUW06802SFConst.HDD_CAPA_CD_01, SET, stbAllKeiMap.get(MAP_KEY_HDD_CAPA_CD)); // 選択ＨＤＤ容量コード
				keiChgInfo.sendMessageString(FUW06802SFConst.TAKNKIKI_MODEL_CD_01, SET, stbAllKeiMap.get(MAP_KEY_TAKNKIKI_MODEL_CD)); // 選択宅内機器型式コード
				keiChgInfo.sendMessageString(FUW06802SFConst.STATUS_01, SET, STATUS_2); // 契約状態
				keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_DISP_FLG_01, SET, "1"); // 機器選択リスト表示フラグ(0:表示、1:非表示)
			}
			else
			{
				// 機器提供サービス契約がコース変更以外の予約中
				keiChgInfo.sendMessageString(FUW06802SFConst.STATUS_01, SET, STATUS_1); // 契約状態
				keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_DISP_FLG_01, SET, "1"); // 機器選択リスト表示フラグ(0:表示、1:非表示)
			}

			// 料金コースの異動予約詳細コードが設定されている（予約中）場合は、機器の変更不可
			if (!JFUStrConst.EMPTY.equals(ucwkIdoRsvDtlCd))
			{
				// 機器提供サービス契約がコース変更以外の予約中
				keiChgInfo.sendMessageString(FUW06802SFConst.STATUS_01, SET, STATUS_1); // 契約状態
				keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_DISP_FLG_01, SET, "1"); // 機器選択リスト表示フラグ(0:表示、1:非表示)
			}

			// 機器コース名の設定
			keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_PCRS_NM_01, SET, stbAllKeiMap.get(MAP_KEY_PCRS_CD_NM)); // 機器コース名
			DEBUG_LOG.debug(stbAllKeiMap.get(MAP_KEY_PCRS_CD_NM) + " "
					+ keiChgInfo.sendMessageString(FUW06802SFConst.KEI_TAKNKIKI_MODEL_CD_STB_01, GET));
			// ---------------------------//
			String pcrsNm = stbAllKeiMap.get(MAP_KEY_PCRS_CD_NM);

			// 契約中機器    STBの表示名称編集：機器の料金コース名（宅内機器型式コード）
			pcrsNm = JFUWebCommon.getDisplayStbName(stbNameFlg, pcrsNm, keiChgInfo.sendMessageString(FUW06802SFConst.KEI_TAKNKIKI_MODEL_CD_STB_01, GET));
			// ---------------------------//
			keiChgInfo.sendMessageString(FUW06802SFConst.KIKI_PCRS_NM_01, SET, pcrsNm); // 機器コース名

			i++;
		}
		// ■ループ：機器提供サービス契約番号格納リスト(STB) -----> END

		if ((stb_no_list.size() < KEI_LIMIT_CNT) || gladeFlg)
		{
			// 契約情報リストの格納件数が5件以下の場合、機器変更可能
			stbCngFlg = "1";
		}
		serviceInfoBean.sendMessageString(FUW06802SFConst.STB_CNG_FLG, SET, stbCngFlg); // 機器変更可否フラグ

		if (yoyakuFlg)
		{
			// 1件でもサービス契約内訳に予約中レコードが存在する場合
			serviceInfoBean.sendMessageString(FUW06802SFConst.YOYAKU_FLG, SET, "1");
		}

		// ＳＴＢ変更対象数の設定
		serviceInfoBean.sendMessageString(FUW06802SFConst.STB_CHANGE_NUM, SET, serviceInfoBean.getDataBeanArray(FUW06802SFConst.CHG_LIST).getCount()
				.toString());

	}

	/**
	 * 契約情報追加リスト、機器情報追加リストの設定
	 * <br>
	 * @param serviceInfoBean
	 * @param kikiMap
	 * @param opeDate 運用日付
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void setKeiKikiAddList(X31SDataBeanAccess serviceInfoBean, HashMap kikiMap, String opeDate) throws Exception
	{
		// データタイプBeanの初期化
		serviceInfoBean.getDataBeanArray(FUW06802SFConst.ADD_LIST).clearArray();
		serviceInfoBean.getDataBeanArray(FUW06802SFConst.KIKI_ADD_LIST).clearArray();

		int keiChgCnt = serviceInfoBean.getDataBeanArray(FUW06802SFConst.CHG_LIST).getCount();
		// 機器リスト（参照用）の取得
		X31SDataBeanAccess kikiSaveInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.KIKI_SAVE_LIST);

		// ループ：追加可能な契約情報、機器情報リスト件数分
		for (int i = 0; i < KEI_LIMIT_CNT - keiChgCnt; i++)
		{
			// 契約情報リストを生成
			int keiCfmCnt = (i + 1) + keiChgCnt;
			X31SDataBeanAccess keiAddInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.ADD_LIST + N_LAST, i);
			keiAddInfo.sendMessageString(FUW06802SFConst.KEI_CNT_01, SET, Integer.toString(keiCfmCnt)); // 契約台数(STB追加欄の「X台目追加」の「X」に使用される)
			keiAddInfo.sendMessageString(FUW06802SFConst.CHG_PCRS_01, SET, JFUStrConst.EMPTY); // コース選択
			keiAddInfo.sendMessageString(FUW06802SFConst.PCRS_NM_01, SET, JFUStrConst.EMPTY); // コース名
			keiAddInfo.sendMessageString(FUW06802SFConst.STATUS_01, SET, STATUS_2); // 契約状態
			keiAddInfo.sendMessageString(FUW06802SFConst.UCWK_STATUS_01, SET, UCWK_STATUS_2); // 内訳契約状態
			keiAddInfo.sendMessageString(FUW06802SFConst.CHG_STB_01, SET, "0"); // ＳＴＢ変更
			keiAddInfo.sendMessageString(FUW06802SFConst.MAKE_FLG_01, SET, "1"); // レコード作成フラグ
			keiAddInfo.sendMessageString(FUW06802SFConst.KIKI_DISP_FLG_01, SET, "0"); // 機器選択リスト表示フラグ

			// 機器情報リストを生成
			X31SDataBeanAccess kikiAddInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.KIKI_ADD_LIST + N_LAST, i);

			boolean emptyFlg = false;
			// 4K視聴環境を満たしている場合は、B-CAS不要STBを表示させる。
			ArrayList kikiList = (ArrayList)kikiMap.get(MAP_KEY_ADD_STB_KIKI_LIST);
			String kikiKensuCnt = serviceInfoBean.sendMessageString(FUW06802SFConst.KIKI_KENSU_CNT, GET);

			// 有効機器（プロパティで定義されているフロント申込可能な機器）
			ArrayList ykKikiList = getYkKikiList(serviceInfoBean, kikiList, opeDate);

			// ループ：機器リスト格納件数分
			ArrayList tgStbKikiList = new ArrayList();
			for (int j = 0; j < Integer.parseInt(kikiKensuCnt); j++)
			{
				String cd = kikiSaveInfo.sendMessageString(FUW06802SFConst.CD_LIST_02, GET, j);
				String nm = kikiSaveInfo.sendMessageString(FUW06802SFConst.NM_LIST_02, GET, j);
				String pplan = kikiSaveInfo.sendMessageString(FUW06802SFConst.PPLAN_LIST_02, GET, j);
				String hddCd = kikiSaveInfo.sendMessageString(FUW06802SFConst.HDD_CD_LIST_02, GET, j);
				String prc = kikiSaveInfo.sendMessageString(FUW06802SFConst.PRC_LIST_02, GET, j);
				String glade = kikiSaveInfo.sendMessageString(FUW06802SFConst.GLADE_LIST_02, GET, j);
				String hdd = kikiSaveInfo.sendMessageString(FUW06802SFConst.HDD_LIST_02, GET, j);
				String tani = kikiSaveInfo.sendMessageString(FUW06802SFConst.TANI_NM_LIST_02, GET, j);
				String modelCd = kikiSaveInfo.sendMessageString(FUW06802SFConst.TAKNKIKI_MODEL_CD_LIST_02, GET, j);

				for (int h = 0; h < ykKikiList.size(); h++)
				{
					HashMap childMap = (HashMap)ykKikiList.get(h);
					String disp = (String)childMap.get(MAP_KEY_DSP_JUN);
					String ykTknkikiModelCd = JFUWebCommon.nvl((String)childMap.get(MAP_KEY_TAKNKIKI_MODEL_CD), JFUStrConst.EMPTY);

					// ◇kikiSaveInfoに、候補機器が存在した場合は、料金関係の情報も含めて選択リストを作成する◇
					if ((JFUStrConst.EMPTY.equals(hddCd) && !emptyFlg) || (ykTknkikiModelCd.equals(modelCd)))
					{
						HashMap tgStbKikiMap = new HashMap();
						tgStbKikiMap.put(MAP_KEY_CD, cd);
						tgStbKikiMap.put(MAP_KEY_NM, nm);
						tgStbKikiMap.put(MAP_KEY_HDDCD, hddCd);
						tgStbKikiMap.put(MAP_KEY_HDD, hdd);
						tgStbKikiMap.put(MAP_KEY_PPLAN, pplan);
						tgStbKikiMap.put(MAP_KEY_PRC, prc);
						tgStbKikiMap.put(MAP_KEY_GLADE, glade);
						tgStbKikiMap.put(MAP_KEY_DISP, disp);
						tgStbKikiMap.put(MAP_KEY_TANINM, tani);
						tgStbKikiMap.put(MAP_KEY_TAKNKIKI_MODEL_CD, (String)childMap.get(MAP_KEY_TAKNKIKI_MODEL_CD));

						// 空(変更なし)の場合、空フラグをTRUEにし、カウントをマイナスする
						if (JFUStrConst.EMPTY.equals(hddCd))
						{
							emptyFlg = true;
							h--;
							// 表示順を「0」とする
							tgStbKikiMap.put(MAP_KEY_DISP, JFUStrConst.S_ZERO);
						}

						// 対象リストに追加
						tgStbKikiList.add(tgStbKikiMap);

						break;
					}
				}

			}

			// 機器選択リスト並び替え
			Collections.sort(tgStbKikiList, new Comparator()
			{
				public int compare(Object o1, Object o2)
				{
					HashMap map1 = (HashMap)o1;
					HashMap map2 = (HashMap)o2;
					Integer str1 = Integer.valueOf((String)map1.get(MAP_KEY_DISP));
					Integer str2 = Integer.valueOf((String)map2.get(MAP_KEY_DISP));
					return str1.compareTo(str2);
				}
			});

			// サービスフォーBeanに設定
			for (int k = 0; k < tgStbKikiList.size(); k++)
			{
				HashMap tgStbKikiMap = (HashMap)tgStbKikiList.get(k);

				// 機器リストの設定
				kikiAddInfo.sendMessageString(FUW06802SFConst.CD_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_CD)); // コースコード

				kikiAddInfo.sendMessageString(FUW06802SFConst.NM_LIST_02, ADD,
						((String)tgStbKikiMap.get(MAP_KEY_NM)).replace(KIKI_COMBO_NOCNG, JFUStrConst.EMPTY)); // 名称

				kikiAddInfo.sendMessageString(FUW06802SFConst.PPLAN_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_PPLAN)); // プランコード
				kikiAddInfo.sendMessageString(FUW06802SFConst.PRC_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_PRC)); // 月額料金
				kikiAddInfo.sendMessageString(FUW06802SFConst.GLADE_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_GLADE)); // グレード
				kikiAddInfo.sendMessageString(FUW06802SFConst.DISP_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_DISP)); // 表示順序
				kikiAddInfo.sendMessageString(FUW06802SFConst.HDD_CD_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_HDDCD));
				kikiAddInfo.sendMessageString(FUW06802SFConst.HDD_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_HDD));
				kikiAddInfo.sendMessageString(FUW06802SFConst.TANI_NM_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_TANINM));
				kikiAddInfo.sendMessageString(FUW06802SFConst.TAKNKIKI_MODEL_CD_LIST_02, ADD, (String)tgStbKikiMap.get(MAP_KEY_TAKNKIKI_MODEL_CD));// 宅内機器型式コード
			}
		}
	}

	/**
	 * ＢＳパススルー申込可否フラグを設定します
	 * <br>
	 * @param commonInfoBean  共有フォームBean
	 * @param serviceInfoBean サービスフォームBean
	 * @param bsptWribTekiyoFlg BSパススルー工事費割引CPの適用状態
	 */
	private void setBSPassDispFlg(X31SDataBeanAccess commonInfoBean, X31SDataBeanAccess serviceInfoBean, String bsptWribTekiyoFlg)
	{
		String pcrGrpCd = serviceInfoBean.sendMessageString(FUW06802SFConst.PRC_GRP_CD_KEI, GET);
		String pcrsType = serviceInfoBean.sendMessageString(FUW06802SFConst.PCRS_TYPE, GET);
		String vonuBsptKh = serviceInfoBean.sendMessageString(FUW06802SFConst.VONU_BSPT_KH, GET);
		String mansionBukkenCd = serviceInfoBean.sendMessageString(FUW06802SFConst.MANSION_BUKKEN_CD, GET);
		String yoyakuFlgVonu = serviceInfoBean.sendMessageString(FUW06802SFConst.YOYAKU_FLG_VONU, GET);

		// ＢＳパススルー申込可否フラグ
		if (!"0".equals(vonuBsptKh))
		{
			// 「BSパススルー契約有無」が「BSパススルー対応機」の場合
			serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_DISP_FLG, SET, "0");
		}
		else if ("1".equals(yoyakuFlgVonu))
		{
			// VONUの予約レコードがありの場合
			serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_DISP_FLG, SET, "0");
		}
		else if (!PCRS_TYPE01.equals(pcrsType) && !PCRS_TYPE02.equals(pcrsType))
		{
			// コース種別が新コース以外の場合 ※コース変更の場合と条件が異なる
			serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_DISP_FLG, SET, "0");
		}
		else if (JFUStrConst.CD00133_12.equals(pcrGrpCd))
		{
			// サービス契約の料金グループが「12：eo光テレビ(KCN)」の場合
			serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_DISP_FLG, SET, "0");
		}
		else if (JFUStrConst.CD01228_001.equals(mansionBukkenCd))
		{
			// マンション物件コードがマンションの場合
			serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_DISP_FLG, SET, "0");
		}
		else if (!JFUStrConst.EMPTY.equals(bsptWribTekiyoFlg))
		{
			// BSパススルー工事費割引CPが適用済の場合
			serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_DISP_FLG, SET, "0");
		}
		else
		{
			// 上記以外の場合　BSパススルー申込権限あり
			serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_DISP_FLG, SET, "1");
		}

		// BSパススルーの申込チェックボックスの初期値設定
		// 申し込むボタン初期化
		serviceInfoBean.sendMessageBoolean(FUW06802SFConst.CHKBOX_BSPASS, X31CWebConst.DATABEAN_SET_VALUE, false);
		if (BSPASS_DISP_FLG_1.equals(serviceInfoBean.sendMessageString(FUW06802SFConst.BSPASS_DISP_FLG, GET)))
		{
			if (isBsptMuryo(serviceInfoBean))
			{
				// 申し込むボタン初期化
				serviceInfoBean.sendMessageBoolean(FUW06802SFConst.CHKBOX_BSPASS, X31CWebConst.DATABEAN_SET_VALUE, true);
			}
		}

	}

	/**
	 * 契約情報変更追加リスト、機器情報変更追加リストの設定
	 * <br>
	 * @param serviceInfoBean サービスフォームBean
	 */
	private void setKeiKikiCfmList(X31SDataBeanAccess serviceInfoBean)
	{
		// データタイプBeanの初期化
		serviceInfoBean.getDataBeanArray(FUW06802SFConst.CFM_LIST).clearArray();
		serviceInfoBean.getDataBeanArray(FUW06802SFConst.KIKI_CFM_LIST).clearArray();

		X31SDataBeanAccessArray keiChgList = serviceInfoBean.getDataBeanArray(FUW06802SFConst.CHG_LIST);
		X31SDataBeanAccessArray kikiChgList = serviceInfoBean.getDataBeanArray(FUW06802SFConst.KIKI_CNG_LIST);

		// 変更リストと追加リストを結合し、変更追加リストを作成
		// 【既契約情報】ループ：契約情報リスト(変更)件数分
		DEBUG_LOG.info("＊＊＊＊＊【既契約情報】＊＊＊＊＊");
		for (int i = 0; i < keiChgList.getCount(); i++)
		{
			X31SDataBeanAccess keiChgInfo = keiChgList.getDataBean(i);
			X31SDataBeanAccess keiCfmInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.CFM_LIST + N_LAST, i);
			deepCopyDataBean(keiChgInfo, keiCfmInfo);
		}
		// 【変更選択機器】ループ：機器情報リスト(変更)件数分
		DEBUG_LOG.info("＊＊＊＊＊【変更選択機器】＊＊＊＊＊");
		for (int i = 0; i < kikiChgList.getCount(); i++)
		{
			X31SDataBeanAccess kikiChgInfo = kikiChgList.getDataBean(i);
			X31SDataBeanAccess kikiCfmInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.KIKI_CFM_LIST + N_LAST, i);
			deepCopyDataBean(kikiChgInfo, kikiCfmInfo);
		}

		// 【追加選択機器】台数選択
		DEBUG_LOG.info("＊＊＊＊＊【追加選択機器】＊＊＊＊＊");
		String mskmStbCnt = serviceInfoBean.sendMessageString(FUW06802SFConst.MSKM_STB_CNT, GET);
		String startMskmStbCnt = serviceInfoBean.sendMessageString(FUW06802SFConst.START_MSKM_STB_CNT, GET);
		mskmStbCnt = Integer.toString(Integer.parseInt(mskmStbCnt) + Integer.parseInt(startMskmStbCnt));
		if (!JFUStrConst.EMPTY.equals(mskmStbCnt) && !MSKM_STB_ADD_CNT0.equals(mskmStbCnt) && !"0".equals(mskmStbCnt))
		{
			// 台数選択が「変更なし」以外の場合
			X31SDataBeanAccessArray keiAddList = serviceInfoBean.getDataBeanArray(FUW06802SFConst.ADD_LIST);
			X31SDataBeanAccessArray kikiAddList = serviceInfoBean.getDataBeanArray(FUW06802SFConst.KIKI_ADD_LIST);

			// ループ：契約情報リスト(追加)件数分
			for (int i = 0; i < Integer.parseInt(mskmStbCnt); i++)
			{
				int idx = i + keiChgList.getCount();
				X31SDataBeanAccess keiAddInfo = keiAddList.getDataBean(i);
				X31SDataBeanAccess keiCfmInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.CFM_LIST + N_LAST, idx);

				// 「追加する機器の何台目」ではなく「変更する機器含めて何台目の機器」の表記にする。
				//    (機器1台保持していて追加機器の2台目の処理なら1+2=3で3を設定する。
				keiAddInfo.sendMessageString(FUW06802SFConst.KEI_CNT_01, SET, Integer.toString(idx + 1));
				deepCopyDataBean(keiAddInfo, keiCfmInfo);
			}
			// ループ：機器情報リスト(追加)件数分
			for (int i = 0; i < Integer.parseInt(mskmStbCnt); i++)
			{
				int idx = i + kikiChgList.getCount();
				X31SDataBeanAccess kikiAddInfo = kikiAddList.getDataBean(i);
				X31SDataBeanAccess kikiCfmInfo =
						JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.KIKI_CFM_LIST + N_LAST, idx);
				deepCopyDataBean(kikiAddInfo, kikiCfmInfo);
			}
		}
	}

	/**
	 * ライトコース有無フラグ設定
	 * <br>
	 * @param keiList 契約情報リスト
	 * @param serviceInfoBean	サービスフォームBean
	 * @throws Exception 例外
	 */
	private void setLightFlg(X31SDataBeanAccessArray keiList, X31SDataBeanAccess serviceInfoBean) throws Exception
	{
		String lightDispFlg = "0";
		// ループ：契約情報リスト件数分
		for (int i = 0; i < keiList.getCount(); i++)
		{
			X31SDataBeanAccess keiInfo = keiList.getDataBean(i);

			String pcrsCd = keiInfo.sendMessageString(FUW06802SFConst.CHG_PCRS_01, GET);
			if (PCRS02.equals(pcrsCd) || PCRS05.equals(pcrsCd))
			{
				//ライトコース又はコンパクトコースが契約中リストに存在する場合
				lightDispFlg = "1";
				break;
			}
		}
		serviceInfoBean.sendMessageString(FUW06802SFConst.LIGHT_DISP_FLG, SET, lightDispFlg);
	}

	/**
	 * ご利用料金リスト３および４作成
	 * <br>
	 * @param serviceInfoBean	サービスフォームBean
	 * @param keiCfmList			契約情報リスト
	 * @param mainChkFlg		基本コース設定フラグ
	 * @throws Exception 例外
	 */
	private void setRyokinList(X31SDataBeanAccess serviceInfoBean, X31SDataBeanAccessArray keiCfmList, String mainChkFlg) throws Exception
	{
		// データタイプBeanの初期化
		serviceInfoBean.getDataBeanArray(FUW06802SFConst.MSKM_PRC_LIST).clearArray();
		X31SDataBeanAccessArray ryokinList = serviceInfoBean.getDataBeanArray(FUW06802SFConst.RYOKIN); // コースリスト

		int stbKei = 0; // テレビチューナー料金合計
		int allKei = 0; // 総合計
		int cngStbCnt = 0; // STB交換台数
		int addStbCnt = 0; // STB追加台数
		String stbTaniNm = JFUStrConst.EMPTY;

		serviceInfoBean.sendMessageString(FUW06802SFConst.STB_CNG_UMU_FLG, SET, "0"); // STB追加変更有無フラグ

		// ループ：契約情報リスト(変更追加)件数分
		for (int i = 0; i < keiCfmList.getCount(); i++)
		{
			X31SDataBeanAccess keiCfmInfo = keiCfmList.getDataBean(i);

			// 契約中コース取得
			String keiPcrsCd = keiCfmInfo.sendMessageString(FUW06802SFConst.KEI_PCRS_CD_01, GET);
			// 契約中コース名
			String keiPcrsNm = keiCfmInfo.sendMessageString(FUW06802SFConst.KEI_PCRS_01, GET);
			// 契約中コースに紐づくコース選択を取得
			String keiKeiPcrs = getChgPcrs(keiPcrsCd);
			// コース選択取得
			String keiCngPcrs = keiCfmInfo.sendMessageString(FUW06802SFConst.CHG_PCRS_01, GET);

			if (JFUStrConst.EMPTY.equals(keiCngPcrs))
			{
				// コース選択が未設定の場合は、契約中コース、コース名を設定
				keiCfmInfo.sendMessageString(FUW06802SFConst.CHG_PCRS_01, SET, keiKeiPcrs);
				keiCfmInfo.sendMessageString(FUW06802SFConst.PCRS_NM_01, SET, keiPcrsNm);
				keiCngPcrs = keiKeiPcrs;
			}

			// 「選択コース」を選択された「料金コースコード」に返還
			String afterPcrs = PCRS_CNG_LIST[Integer.parseInt(keiCngPcrs)];

			// お申し込み後の月額料金
			X31SDataBeanAccess mskmPrcInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.MSKM_PRC_LIST + N_LAST, i);

			// ループ：料金リスト件数分
			for (int j = 0; j < ryokinList.getCount(); j++)
			{
				X31SDataBeanAccess ryokinInfo = ryokinList.getDataBean(j);
				String ryokinCd = ryokinInfo.sendMessageString(FUW06802SFConst.CD_03, GET);
				if (!afterPcrs.equals(ryokinCd))
				{
					// 選択コース.料金コースコードと料金リスト.料金コースコードが異なる場合
					continue;
				}

				String ryokinNm = ryokinInfo.sendMessageString(FUW06802SFConst.NM_03, GET);
				String ryokinPrc = ryokinInfo.sendMessageString(FUW06802SFConst.PRC_03, GET);
				String ryokinPplanCd = ryokinInfo.sendMessageString(FUW06802SFConst.PLAN_CD_03, GET);
				String ryokinTani = ryokinInfo.sendMessageString(FUW06802SFConst.PPLAN_KOTEI_TANI_NM_03, GET);
				mskmPrcInfo.sendMessageString(FUW06802SFConst.MAIN_FLG_04, SET, "1"); // 料金リスト.基本コースフラグ
				if (i != Integer.parseInt(mainChkFlg))
				{
					// 追加コースの場合
					ryokinNm = ryokinInfo.sendMessageString(FUW06802SFConst.NM_ADD_03, GET);
					ryokinPrc = ryokinInfo.sendMessageString(FUW06802SFConst.PRC_ADD_03, GET);
					ryokinPplanCd = ryokinInfo.sendMessageString(FUW06802SFConst.PLAN_CD_ADD_03, GET);
					mskmPrcInfo.sendMessageString(FUW06802SFConst.MAIN_FLG_04, SET, "0"); // 料金リスト.基本コースフラグ
				}
				mskmPrcInfo.sendMessageString(FUW06802SFConst.CD_04, SET, ryokinCd); // 料金リスト.コード
				mskmPrcInfo.sendMessageString(FUW06802SFConst.NM_04, SET, ryokinNm); // 料金リスト.名称
				mskmPrcInfo.sendMessageString(FUW06802SFConst.PRC_04, SET, ryokinPrc); // 料金リスト.料金
				mskmPrcInfo.sendMessageString(FUW06802SFConst.TANI_04, SET, ryokinTani); // 料金リスト.料金プラン単位名
				keiCfmInfo.sendMessageString(FUW06802SFConst.PCRS_01, SET, ryokinNm); // 契約情報リスト.選択コース
				keiCfmInfo.sendMessageString(FUW06802SFConst.PCRS_CD_01, SET, ryokinCd); // 契約情報リスト.選択コースコード

				String ucwkStatus = keiCfmInfo.sendMessageString(FUW06802SFConst.UCWK_STATUS_01, GET);
				if (UCWK_STATUS_1.equals(ucwkStatus))
				{
					// サービス契約内訳予約中レコード存在時
					String pplanCd = keiCfmInfo.sendMessageString(FUW06802SFConst.PPLAN_CD_01, GET);
					if (!ryokinPplanCd.equals(pplanCd))
					{
						// サービス契約内訳が予約中のレコードに対しプラン変更が発生したためエラー
						DEBUG_LOG.info("----- FUW06802_setRyokinList() サービス契約内訳予約中のプラン変更エラー -----");
						throw new JCCBusinessException(ERROR_CODE_0102);
					}
				}
				keiCfmInfo.sendMessageString(FUW06802SFConst.PPLAN_CD_01, SET, ryokinPplanCd); // 選択プランコード

				if (i == Integer.parseInt(mainChkFlg))
				{
					// 基本コースの場合
					String ryokinTvCourseGrpCd = ryokinInfo.sendMessageString(FUW06802SFConst.TV_COURSE_GRP_CD_03, GET);
					// ループ：料金リスト件数分
					for (int k = 0; k < ryokinList.getCount(); k++)
					{
						X31SDataBeanAccess ryokinInfo2 = ryokinList.getDataBean(k);
						String ryokinTvCourseGrpCd2 = ryokinInfo2.sendMessageString(FUW06802SFConst.TV_COURSE_GRP_CD_03, GET);
						String pcrsSbtCd = ryokinInfo2.sendMessageString(FUW06802SFConst.PCRS_SBT_CD_03, GET);

						if (PCRS_STB_CD_01.equals(pcrsSbtCd) && ryokinTvCourseGrpCd.equals(ryokinTvCourseGrpCd2))
						{
							// コースリストの料金コース種別コードが「1(サービス契約)」かつTVコースグループコード取得が同一の場合
							String ryokinCd2 = ryokinInfo2.sendMessageString(FUW06802SFConst.CD_03, GET);
							String ryokinPplanCd2 = ryokinInfo2.sendMessageString(FUW06802SFConst.PLAN_CD_03, GET);
							String ryokinPrcGrpCd2 = ryokinInfo2.sendMessageString(FUW06802SFConst.PRC_GRP_CD_03, GET);
							serviceInfoBean.sendMessageString(FUW06802SFConst.PCRS_CD_KEI, SET, ryokinCd2);
							serviceInfoBean.sendMessageString(FUW06802SFConst.PPLAN_CD_KEI, SET, ryokinPplanCd2);
							serviceInfoBean.sendMessageString(FUW06802SFConst.PRC_GRP_CD_KEI, SET, ryokinPrcGrpCd2);
						}
					}
				}

				// 総合計に料金コースの月額料金を加算
				allKei = allKei + Integer.parseInt(ryokinPrc);

				// STBの月額使用料計算
				X31SDataBeanAccess kikiCfmInfo = serviceInfoBean.getDataBeanArray(FUW06802SFConst.KIKI_CFM_LIST).getDataBean(i);

				String kikiSelectCd = kikiCfmInfo.sendMessageString(FUW06802SFConst.SELECT_CD_02, GET);
				if (!JFUStrConst.EMPTY.equals(kikiSelectCd) && !"0".equals(kikiSelectCd))
				{
					// 機器リストの機器が選択されている場合
					int index = Integer.parseInt(kikiSelectCd);
					// 総合計にSTBの月額料金を加算
					String kikiPrc = kikiCfmInfo.sendMessageString(FUW06802SFConst.PRC_LIST_02, GET, index);

					String kikiPrcCd = kikiCfmInfo.sendMessageString(FUW06802SFConst.CD_LIST_02, GET, index);
					String kikiPplanCd = kikiCfmInfo.sendMessageString(FUW06802SFConst.PPLAN_LIST_02, GET, index);
					String kikiPrcNm = kikiCfmInfo.sendMessageString(FUW06802SFConst.NM_LIST_02, GET, index);
					String hddCd = kikiCfmInfo.sendMessageString(FUW06802SFConst.HDD_CD_LIST_02, GET, index);
					String taknkikiModelCd = kikiCfmInfo.sendMessageString(FUW06802SFConst.TAKNKIKI_MODEL_CD_LIST_02, GET, index);
					stbTaniNm = kikiCfmInfo.sendMessageString(FUW06802SFConst.TANI_NM_LIST_02, GET, index);
					keiCfmInfo.sendMessageString(FUW06802SFConst.KIKI_PCRS_CD_01, SET, kikiPrcCd); // 選択機器コースコード
					keiCfmInfo.sendMessageString(FUW06802SFConst.KIKI_PPLAN_CD_01, SET, kikiPplanCd); // 選択機器プランコード
					keiCfmInfo.sendMessageString(FUW06802SFConst.KIKI_PCRS_01, SET, kikiPrcNm); // 選択機器コース名
					keiCfmInfo.sendMessageString(FUW06802SFConst.HDD_CAPA_CD_01, SET, hddCd);
					keiCfmInfo.sendMessageString(FUW06802SFConst.TAKNKIKI_MODEL_CD_01, SET, taknkikiModelCd); // 選択宅内機器型式コード
					// 総合計を求める為、無料の文言→"0",月額料金の単位→""の対応を行う
					kikiPrc = kikiPrc.replace(JFUStrConst.FREE_LABEL, JFUStrConst.S_ZERO).replace(stbTaniNm, JFUStrConst.EMPTY);
					// 通常は単位置換されているはずだが、念のため実施
					kikiPrc = kikiPrc.replace(JFUStrConst.YEN, JFUStrConst.EMPTY);
					stbKei = stbKei + Integer.parseInt(kikiPrc);

					String status = keiCfmInfo.sendMessageString(FUW06802SFConst.STATUS_01, GET);
					if (!STATUS_1.equals(status))
					{
						// 契約情報リスト.契約状態がSTB変更予約あり以外の場合
						keiCfmInfo.sendMessageString(FUW06802SFConst.CHG_STB_01, SET, "1"); // ＳＴＢ変更
					}
					serviceInfoBean.sendMessageString(FUW06802SFConst.STB_CNG_UMU_FLG, SET, "1"); // ＳＴＢ追加変更有無フラグ
					if (STATUS_2.equals(status))
					{
						addStbCnt++;
					}
					else
					{
						cngStbCnt++;
					}
				}
				else
				{
					String keiKikiPcrsCd = keiCfmInfo.sendMessageString(FUW06802SFConst.KEI_KIKI_PCRS_CD_01, GET);
					if (i == Integer.parseInt(mainChkFlg))
					{
						// 基本コースの場合
						if (!JFUStrConst.EMPTY.equals(keiKikiPcrsCd))
						{
							// 契約中の機器と同一の料金コースコードの場合、月額料金を加算
							stbKei = stbKei + getSTBMonthRyokin(serviceInfoBean, keiKikiPcrsCd);
						}
					}
					else
					{
						// 追加コースの場合
						if (JFUStrConst.EMPTY.equals(keiKikiPcrsCd))
						{
							// 契約中の機器がない場合は、契約情報リストより選択機器コースコード取得
							keiKikiPcrsCd = keiCfmInfo.sendMessageString(FUW06802SFConst.KIKI_PCRS_CD_01, GET);
						}
						// 契約中の機器と同一の料金コースコードの場合、月額料金を加算
						stbKei = stbKei + getSTBMonthRyokin(serviceInfoBean, keiKikiPcrsCd);
					}

					// 確認画面で表示する機器名が空白の状態なので、機器コース名を設定する
					String kikiNm = keiCfmInfo.sendMessageString(FUW06802SFConst.KIKI_PCRS_NM_01, GET);
					keiCfmInfo.sendMessageString(FUW06802SFConst.KIKI_PCRS_01, SET, kikiNm); // 選択機器コース名

				}
				break;
			}
		}

		int idx = keiCfmList.getCount();
		X31SDataBeanAccess mskmPrcInfo = null; // 料金リスト(お申し込み後の月額料金)

		// お申し込み後の月額料金の設定
		if (stbKei > 0)
		{
			// 全ての機器の変更をしていない場合、単位名が未設定となる為、それを回避する為の設定(index1以降から単位が設定されている)
			if (JFUStrConst.EMPTY.equals(stbTaniNm))
			{
				// ■機器リスト（参照用）の取得
				X31SDataBeanAccess kikiSaveInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.KIKI_SAVE_LIST);
				stbTaniNm = kikiSaveInfo.sendMessageString(FUW06802SFConst.TANI_NM_LIST_02, GET, 1);
			}

			allKei = allKei + stbKei;
			mskmPrcInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.MSKM_PRC_LIST + N_LAST, idx);
			mskmPrcInfo.sendMessageString(FUW06802SFConst.NM_04, SET, JFUWebCommon.getDispText(SCREEN_ID_FUW06802, STB_RYOKIN_KEI_NAME)); // 料金リストの名称
			mskmPrcInfo.sendMessageString(FUW06802SFConst.PRC_04, SET, Integer.toString(stbKei)); // 料金リストの料金
			mskmPrcInfo.sendMessageString(FUW06802SFConst.TANI_04, SET, " " + stbTaniNm);
			idx++;
		}

		// 合計額の設定
		mskmPrcInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.MSKM_PRC_LIST + N_LAST, idx);
		mskmPrcInfo.sendMessageString(FUW06802SFConst.NM_04, SET, JFUWebCommon.getDispText(SCREEN_ID_FUW06802, ALL_RYOKIN_KEI_NAME)); // 料金リストの名称
		mskmPrcInfo.sendMessageString(FUW06802SFConst.PRC_04, SET, Integer.toString(allKei)); // 料金リストの料金
		mskmPrcInfo.sendMessageString(FUW06802SFConst.TANI_04, SET, PRC_INFO_AREA_HALF_SPACE_YEN); // 合計額の単位

		// 料金リスト(初期費用)の設定
		setRyokinInitList(serviceInfoBean, cngStbCnt, addStbCnt);
	}

	/**
	 * 料金リスト(初期費用)を設定します
	 * <br>
	 * @param serviceInfoBean サービスフォームBean
	 * @param cngStbCnt STB交換台数
	 * @param addStbCnt STB追加台数
	 * @throws Exception すべての例外
	 */
	private void setRyokinInitList(X31SDataBeanAccess serviceInfoBean, int cngStbCnt, int addStbCnt) throws Exception
	{
		// データタイプBeanの初期化
		serviceInfoBean.getDataBeanArray(FUW06802SFConst.START_PRC_LIST).clearArray();
		X31SDataBeanAccess initPrcInfo = null;

		String chgWay = serviceInfoBean.sendMessageString(FUW06802SFConst.CHG_WAY, GET);
		
		// 料金表の計算
		// STBの初期工事費
		//  （交換手数料×変更台数)＋（追加手数料×追加台数)＋出張費
		// BSパススルーの初期工事費
		//  BSパススルー工事費 ＋出張費
		// 両方の選択がある場合、出張費はBSパススルーの工事費に付与させ、STBの初期工事費には加算しない
		int shutchoPrc = Integer.parseInt(serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_11_LIST, GET)); // 一時支払料金出張費
		int cngPrc = Integer.parseInt(serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_12_LIST, GET)); // 一時支払料金交換手数料
		int addPrc = Integer.parseInt(serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_13_LIST, GET)); // 一時支払料金追加手数料
		int bsptPrc = Integer.parseInt(serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_14_LIST, GET)); // 一時支払料金ＢＳＰＴ工事費
		int jimuPrc = Integer.parseInt(serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_15_LIST, GET)); // 一時支払料金ＳＴＢ交換契約事務手数料
		// BSパススルーの初期工事費用
		int bsptInitKojihi = bsptPrc + shutchoPrc;
		// STBの初期費用 ※出張費は、BSパススルーの申し込みがない場合に加算する為、ここでは足さない
		int stbChgAddInitKojihi = (cngStbCnt * cngPrc) + (addStbCnt * addPrc);
		// 事務手数料（宅配交換の場合に使用する）
		int stbTakhaiPrc = (cngStbCnt * jimuPrc);
		// 合計額
		int shoki_kei = 0;
		// 初期表示用明細要素数
		int idx = 0;

		boolean bsptFlg = serviceInfoBean.sendMessageBoolean(FUW06802SFConst.CHKBOX_BSPASS, GET);
		serviceInfoBean.sendMessageString(FUW06802SFConst.BSPT_MSKM_FLG, SET, "0");
		if (bsptFlg)
		{
			// BSパススルー申込ボタンONの場合
			serviceInfoBean.sendMessageString(FUW06802SFConst.BSPT_MSKM_FLG, SET, "1");
			if (isBsptMuryo(serviceInfoBean))
			{
				// 新HDコースの場合は、無料扱い
				bsptInitKojihi = 0;
			}
			// BSパススルーの工事費用が0円よりも大きい場合、初期費用の明細行を追加する
			if (bsptInitKojihi > 0)
			{
				initPrcInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.START_PRC_LIST + N_LAST, idx);
				idx++;
				// 料金リストの名称
				initPrcInfo.sendMessageString(FUW06802SFConst.NM_04, SET, JFUWebCommon.getDispText(SCREEN_ID_FUW06802, SHOKI_BSPT_KOJI_RYOKIN_NAME));
				// BSパススルーの初期工事費
				initPrcInfo.sendMessageString(FUW06802SFConst.PRC_04, SET, Integer.toString(bsptInitKojihi));
				initPrcInfo.sendMessageString(FUW06802SFConst.TANI_04, SET, PRC_INFO_AREA_HALF_SPACE_YEN); // 料金リストの料金
				// ☆合計額を作成
				shoki_kei = shoki_kei + bsptInitKojihi;
			}
			else
			{
				// 「無料」の行を作成する
				initPrcInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.START_PRC_LIST + N_LAST, idx);
				idx++;
				// 料金リストの名称
				initPrcInfo.sendMessageString(FUW06802SFConst.NM_04, SET, JFUWebCommon.getDispText(SCREEN_ID_FUW06802, SHOKI_BSPT_KOJI_RYOKIN_NAME));
				// BSパススルーの初期工事費
				initPrcInfo.sendMessageString(FUW06802SFConst.PRC_04, SET, Integer.toString(bsptInitKojihi));
				initPrcInfo.sendMessageString(FUW06802SFConst.TANI_04, SET, JFUStrConst.FREE_LABEL); // 「無料」文言
				// ☆合計額を作成
				shoki_kei = shoki_kei + bsptInitKojihi;
			}
		}
		else
		{
			// BSパススルー申込ボタンOFFの場合
			// STBの初期費用に出張費を加算する
			stbChgAddInitKojihi = stbChgAddInitKojihi + shutchoPrc;
		}
		
		// 宅配交換以外の場合に、「取付、交換費」を設定する。
		if (!CHG_WAY_CD_TAKUHAI.equals(chgWay))
		{
			if (stbChgAddInitKojihi > 0)
			{
				initPrcInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.START_PRC_LIST + N_LAST, idx);
				idx++;
				// STBの初期費用が発生している場合、追加・変更ありとみなし、初期費用の明細行を追加する
				initPrcInfo.sendMessageString(FUW06802SFConst.NM_04, SET, JFUWebCommon.getDispText(SCREEN_ID_FUW06802, SHOKI_RYOKIN_NAME)); // 料金リストの名称
				initPrcInfo.sendMessageString(FUW06802SFConst.PRC_04, SET, Integer.toString(stbChgAddInitKojihi)); // 料金リストの料金
				initPrcInfo.sendMessageString(FUW06802SFConst.TANI_04, SET, PRC_INFO_AREA_HALF_SPACE_YEN); // 料金リストの料金
				// ☆合計額を作成
				shoki_kei = shoki_kei + stbChgAddInitKojihi;
			}
		}
		else
		{
			initPrcInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.START_PRC_LIST + N_LAST, idx);
			idx++;
			// 宅配交換が選択されている場合に、事務手数料の初期費用の明細行を追加する
			initPrcInfo.sendMessageString(FUW06802SFConst.NM_04, SET, JFUWebCommon.getDispText(SCREEN_ID_FUW06802, TAKUHAI_RYOKIN_NAME)); // 料金リストの名称
			initPrcInfo.sendMessageString(FUW06802SFConst.PRC_04, SET, Integer.toString(stbTakhaiPrc)); // 料金リストの料金
			initPrcInfo.sendMessageString(FUW06802SFConst.TANI_04, SET, PRC_INFO_AREA_HALF_SPACE_YEN); // 料金リストの料金
			// ☆合計額を作成
			shoki_kei = shoki_kei + stbTakhaiPrc;
		}
		// 合計額が0円よりも大きい場合、有料の初期費用が発生しているとみなし、合計行を作成する
		if (shoki_kei > 0)
		{
			initPrcInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.START_PRC_LIST + N_LAST, idx);
			idx++;
			initPrcInfo.sendMessageString(FUW06802SFConst.NM_04, SET, JFUWebCommon.getDispText(SCREEN_ID_FUW06802, ALL_RYOKIN_KEI_NAME)); // 料金リストの名称
			initPrcInfo.sendMessageString(FUW06802SFConst.PRC_04, SET, Integer.toString(shoki_kei)); // 料金リストの料金
			initPrcInfo.sendMessageString(FUW06802SFConst.TANI_04, SET, PRC_INFO_AREA_HALF_SPACE_YEN); // 料金リストの料金
		}
	}

	/**
	 * 登録サービス呼出用パラメータ設定
	 * <br>
	 * @param serviceInfoBean	サービスフォームBean
	 * @throws Exception		すべての例外
	 */
	private void setFUSV0131Parameter(X31SDataBeanAccess serviceInfoBean) throws Exception
	{
		// データタイプBeanの初期化
		serviceInfoBean.getDataBeanArray(FUW06802SFConst.CCLIST_STB_MSKM_LIST).clearArray();
		X31SDataBeanAccessArray keiCfmList = serviceInfoBean.getDataBeanArray(FUW06802SFConst.CFM_LIST);

		// ループ：契約情報リスト(変更追加)件数分
		for (int i = 0; i < keiCfmList.getCount(); i++)
		{
			X31SDataBeanAccess keiCfmInfo = keiCfmList.getDataBean(i);

			//コース変更＆ＳＴＢ変更用リストのレコード作成
			X31SDataBeanAccess ccInfo =
					JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.CCLIST_STB_MSKM_LIST + N_LAST, i);

			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.SVC_KEI_UCWK_NO_01, FUW06802SFConst.SVC_KEI_UCWK_NO_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.STB_ID_01, FUW06802SFConst.STB_ID_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.UCWK_STATUS_01, FUW06802SFConst.UCWK_STATUS_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.STATUS_01, FUW06802SFConst.STATUS_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.CHG_STB_01, FUW06802SFConst.CHG_STB_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.MAKE_FLG_01, FUW06802SFConst.MAKE_FLG_05);

			// 変更前情報
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KEI_PPLAN_CD_01, FUW06802SFConst.KEI_PPLAN_CD_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KEI_KIKI_PCRS_CD_01, FUW06802SFConst.KEI_KIKI_PCRS_CD_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KEI_KIKI_PPLAN_CD_01, FUW06802SFConst.KEI_KIKI_PPLAN_CD_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KEI_HDD_CAPA_CD_01, FUW06802SFConst.KEI_HDD_CAPA_CD_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KEI_TAKNKIKI_MODEL_CD_STB_01, FUW06802SFConst.KEI_TAKNKIKI_MODEL_CD_STB_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KEI_TAKNKIKI_MODEL_CD_BCAS_01, FUW06802SFConst.KEI_TAKNKIKI_MODEL_CD_BCAS_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KEI_TAKNKIKI_MODEL_CD_CCAS_01, FUW06802SFConst.KEI_TAKNKIKI_MODEL_CD_CCAS_05);

			// 機器製造番号
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KIKI_SEIZO_NO_STB_01, FUW06802SFConst.KEI_KKSEIZO_NO_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KIKI_SEIZO_NO_BCAS_01, FUW06802SFConst.KEI_KKSEIZO_NO_BCAS_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KIKI_SEIZO_NO_CCAS_01, FUW06802SFConst.KEI_KKSEIZO_NO_CCAS_05);

			// 変更後情報
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.PCRS_CD_01, FUW06802SFConst.PCRS_CD_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.PPLAN_CD_01, FUW06802SFConst.PPLAN_CD_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KIKI_PCRS_CD_01, FUW06802SFConst.KIKI_PCRS_CD_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KIKI_PPLAN_CD_01, FUW06802SFConst.KIKI_PPLAN_CD_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.HDD_CAPA_CD_01, FUW06802SFConst.HDD_CAPA_CD_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.TAKNKIKI_MODEL_CD_01, FUW06802SFConst.TAKNKIKI_MODEL_CD_05);

			// 機器提供サービス契約番号
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KKTK_SVC_KEI_NO_01, FUW06802SFConst.KKTK_SVC_KEI_NO_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KKTK_SVC_KEI_NO_BCAS_01, FUW06802SFConst.KKTK_SVC_KEI_NO_BCAS_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KKTK_SVC_KEI_NO_CCAS_01, FUW06802SFConst.KKTK_SVC_KEI_NO_CCAS_05);

			// 機器変更番号
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KK_CHG_NO_01, FUW06802SFConst.KK_CHG_NO_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KK_CHG_NO_BCAS_01, FUW06802SFConst.KK_CHG_NO_BCAS_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.KK_CHG_NO_CCAS_01, FUW06802SFConst.KK_CHG_NO_CCAS_05);

			// 世代登録年月日時分秒
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.GENE_ADD_DTM_PCRS_01, FUW06802SFConst.GENE_ADD_DTM_PCRS_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.GENE_ADD_DTM_KIKI_01, FUW06802SFConst.GENE_ADD_DTM_KIKI_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.GENE_ADD_DTM_KIKI_BCAS_01, FUW06802SFConst.GENE_ADD_DTM_KIKI_BCAS_05);
			copyValue(keiCfmInfo, ccInfo, FUW06802SFConst.GENE_ADD_DTM_KIKI_CCAS_01, FUW06802SFConst.GENE_ADD_DTM_KIKI_CCAS_05);
		}
	}

	/**
	 * 工事案件(eo光テレビ)受付 情報設定<br>
	 * 工事案件(eo光テレビ)受付呼出用のパラメータを設定します。
	 * <br>
	 * @param serviceInfoBean	サービスフォームBean
	 * @throws Exception		すべての例外
	 */
	private void setKojiAnkenInfo(X31SDataBeanAccess serviceInfoBean) throws Exception
	{
		// 電話番号、携帯電話／ＰＨＳ番号
		String telNo = serviceInfoBean.sendMessageString(FUW06802SFConst.I_DT_RRKS_TELNO, GET);
		String ktaiTelNo = serviceInfoBean.sendMessageString(FUW06802SFConst.I_RRKS_KTAI_TELNO, GET);
		serviceInfoBean.sendMessageString(FUW06802SFConst.SAVE_KIKI_STC_SK_TELNO, SET, telNo);
		serviceInfoBean.sendMessageString(FUW06802SFConst.SAVE_RRKS_KTAI_TELNO, SET, ktaiTelNo);

		// 工事範囲コード
		String stbCngUmuFlg = serviceInfoBean.sendMessageString(FUW06802SFConst.STB_CNG_UMU_FLG, GET);
		String bsptMskmFlg = serviceInfoBean.sendMessageString(FUW06802SFConst.BSPT_MSKM_FLG, GET);
		if ("1".equals(stbCngUmuFlg) && "1".equals(bsptMskmFlg))
		{
			// STBおよびV-ONU変更時
			serviceInfoBean.sendMessageString(FUW06802SFConst.KOJI_SCOPE_CD, SET, JFUStrConst.CD00484_230);
		}
		else if ("1".equals(stbCngUmuFlg))
		{
			// STB変更時(ＳＴＢ追加変更有無フラグが"1")
			serviceInfoBean.sendMessageString(FUW06802SFConst.KOJI_SCOPE_CD, SET, JFUStrConst.CD00484_210);
		}
		else if ("1".equals(bsptMskmFlg))
		{
			// V-ONU変更時(ＢＳパススルー申込有無が"1")
			serviceInfoBean.sendMessageString(FUW06802SFConst.KOJI_SCOPE_CD, SET, JFUStrConst.CD00484_220);
		}

		if (AD_FORM_FLG_2.equals(serviceInfoBean.sendMessageString(FUW06802SFConst.AD_FORM_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 工事案件備考
			StringBuffer kojiakBiko = new StringBuffer();
			if ((0 < JFUWebCommon.getLength(telNo)) && (0 < JFUWebCommon.getLength(ktaiTelNo)))
			{
				// 両方入力
				kojiakBiko.append(KOJIAK_BIKO_PREFIX_TEL).append(telNo).append(" ").append(KOJIAK_BIKO_PREFIX_KTAI).append(ktaiTelNo);
			}
			else if (0 < JFUWebCommon.getLength(telNo))
			{
				// 電話番号のみ入力
				kojiakBiko.append(KOJIAK_BIKO_PREFIX_TEL).append(telNo);
			}
			else if (0 < JFUWebCommon.getLength(ktaiTelNo))
			{
				// 携帯番号のみ入力
				kojiakBiko.append(KOJIAK_BIKO_PREFIX_KTAI).append(ktaiTelNo);
			}
			serviceInfoBean.sendMessageString(FUW06802SFConst.KOJIAK_BIKO, SET, kojiakBiko.toString());
		}
	}

	/**
	 * 宅配 情報設定<br>
	 * <br>
	 * @param serviceInfoBean	サービスフォームBean
	 * @throws Exception		すべての例外
	 */
	private void setTakuhaiInfo(X31SDataBeanAccess serviceInfoBean) throws Exception
	{
		// 入力データ取得
		String chgWay = serviceInfoBean.sendMessageString(FUW06802SFConst.CHG_WAY, GET);
		String tkChgKiboYear = serviceInfoBean.sendMessageString(FUW06802SFConst.TK_CHG_KIBO_YEAR, GET);
		String tkChgKiboMonth = serviceInfoBean.sendMessageString(FUW06802SFConst.TK_CHG_KIBO_MONTH, GET);
		String tkChgKiboDay = serviceInfoBean.sendMessageString(FUW06802SFConst.TK_CHG_KIBO_DAY, GET);
		String mskmStbCnt = serviceInfoBean.sendMessageString(FUW06802SFConst.MSKM_STB_CNT, GET); // STB追加（申し込まない場合は、"-1"）
		boolean bsptFlg = serviceInfoBean.sendMessageBoolean(FUW06802SFConst.CHKBOX_BSPASS, GET); // ＢＳパススルーフラグ
		int chgCount = 0;
		X31SDataBeanAccessArray kikiChgList = serviceInfoBean.getDataBeanArray(FUW06802SFConst.KIKI_CNG_LIST);

		// クリア
		serviceInfoBean.sendMessageString(FUW06802SFConst.TK_CHG_KIBO_DATE, SET, JFUStrConst.EMPTY);
		serviceInfoBean.sendMessageString(FUW06802SFConst.TK_CHG_KIBO_WEEK, SET, JFUStrConst.EMPTY);

		// ループ：機器情報リスト(変更)件数分
		for (int i = 0; i < kikiChgList.getCount(); i++)
		{
			X31SDataBeanAccess kikiChgInfo = kikiChgList.getDataBean(i);

			String kikiSelectCd = kikiChgInfo.sendMessageString(FUW06802SFConst.SELECT_CD_02, GET);

			if (!JFUStrConst.EMPTY.equals(kikiSelectCd) && !"0".equals(kikiSelectCd))
			{
				chgCount++;// 選択されている場合ここにくるのでカウントする
			}
		}

		// ＳＴＢ追加または、ＢＳパススルー申込または、訪問交換選択時または、1台のみ変更申込以外は、クリア
		if (!MSKM_STB_ADD_CNT0.equals(mskmStbCnt) || bsptFlg || CHG_WAY_CD_HOUMON.equals(chgWay) || chgCount != 1)
		{
			// 交換方法は、ＳＴＢ追加または、ＢＳパススルー申込時または、1台のみ変更申込以外のみクリア
			if (!MSKM_STB_ADD_CNT0.equals(mskmStbCnt) || bsptFlg || chgCount != 1)
			{
				serviceInfoBean.sendMessageString(FUW06802SFConst.CHG_WAY, SET, JFUStrConst.EMPTY);
			}
			serviceInfoBean.sendMessageString(FUW06802SFConst.TK_CHG_KIBO_YEAR, SET, JFUStrConst.EMPTY);
			serviceInfoBean.sendMessageString(FUW06802SFConst.TK_CHG_KIBO_MONTH, SET, JFUStrConst.EMPTY);
			serviceInfoBean.sendMessageString(FUW06802SFConst.TK_CHG_KIBO_DAY, SET, JFUStrConst.EMPTY);

		}
		else
		{

			if (CHG_WAY_CD_TAKUHAI.equals(chgWay))
			{
				// 宅配交換希望年月日を生成
				String tkChgKiboDate = tkChgKiboYear + tkChgKiboMonth + tkChgKiboDay;
				// 定義を取得
				Map<String, String> pcrsNmMap = JFUWebCommon.getDispItemsAsMap(PATH_WEEK_NM, QUERY_ATTR_NAME);
				// 曜日を取得
				String dayOfWeek = JPCDateUtil.getDayOfWeek(tkChgKiboDate);

				// 宅配交換希望年月日
				serviceInfoBean.sendMessageString(FUW06802SFConst.TK_CHG_KIBO_DATE, SET, tkChgKiboDate);
				// 宅配交換希望年月日(曜日)
				serviceInfoBean.sendMessageString(FUW06802SFConst.TK_CHG_KIBO_WEEK, SET, pcrsNmMap.get(dayOfWeek));
			}
		}

	}

	/**
	 * サービス呼出処理(eo光テレビSTB追加変更申込(初期表示))
	 * 
	 * <br>
	 * @param commonInfoBean 共通フォームBean
	 * @param serviceInfoBean サービスフォームBean
	 * @param outputMap サービス実行結果格納マップ
	 * @throws Exception 
	 */
	private void callFUSV0130(X31SDataBeanAccess commonInfoBean, X31SDataBeanAccess serviceInfoBean,
			HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap) throws Exception
	{
		FUSV0130_FUSV0130OPDBMapper mapper = new FUSV0130_FUSV0130OPDBMapper();
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(TELEGRAM_INFO_USECASE_ID, SVC_USECASE_ID_FUSV0130);
		X31SDataBeanAccess[] bean = new X31SDataBeanAccess[] { serviceInfoBean, commonInfoBean };
		HashMap<String, HashMap<String, String>> inputMap = new HashMap<String, HashMap<String, String>>();

		// DataBean-BP上りマッピング
		mapper.setFUSV0130WORK01(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013001SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013002SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013003SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013004SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013005SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013006SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013007SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013008SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013009SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013010SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013011SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013012SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013001CC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013014SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013015SC(bean, inputMap, FUNC_CD_1);
		// BSパススルーの割引サービス契約が登録されているかチェック
		mapper.setFUSV013002CC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013003CC(bean, inputMap, JFUScreenConst.SCREEN_ID_FUW06802);
		mapper.setFUSV013016SC(bean, inputMap, FUNC_CD_1);
		mapper.setFUSV013004CC(bean, inputMap);

		try
		{
			// サービス呼び出し
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{
			// 業務エラーを再throw
			DEBUG_LOG.info("----- FUW06802_callFUSV0130() サービス実行エラー -----");
			throw new JCCBusinessException(ERROR_CODE_0002);
		}
	}

	/**
	 * サービス呼出処理(eo光テレビSTB追加変更申込(申し込む))
	 * <br>
	 * @param serviceInfoBean サービスフォームBean
	 * @param funcCode 機能コード
	 * @param commonInfoBean 共有フォームBean
	 * @throws Exception 
	 */
	private void callFUSV0131(X31SDataBeanAccess serviceInfoBean, String funcCode, X31SDataBeanAccess commonInfoBean) throws Exception
	{
		// オンライン運用日取得
		String opeDate = JFUWebCommon.getOpeDate(this, null);

		FUSV0131_FUSV0131OPDBMapper mapper = new FUSV0131_FUSV0131OPDBMapper();
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(TELEGRAM_INFO_USECASE_ID, SVC_USECASE_ID_FUSV0131);
		X31SDataBeanAccess[] bean = new X31SDataBeanAccess[] { serviceInfoBean, commonInfoBean };
		HashMap<String, HashMap<String, String>> inputMap = new HashMap<String, HashMap<String, String>>();
		HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap =
				new HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>>();

		String bsptWribSvcCd = getBsptWribSvcCd(serviceInfoBean);
		// DataBean-BP上りマッピング
		mapper.setFUSV013101CC(bean, inputMap, funcCode, bsptWribSvcCd);
		// eoプレミアムクラブ施策申請条件一覧照会コモンコンポーネント部品上りマッピング
		mapper.setFUSV013103CC(bean, inputMap, funcCode, bsptWribSvcCd);

		// チケット利用申請依頼コモンコンポーネント部品上りマッピング
		mapper.setFUSV013104CC(bean, inputMap, funcCode);

		
		/**  2016/09/09 ANK-2985-00-00 add start */
		if (getKikipcrsKnytcsflg(serviceInfoBean))
		{
			// サービスIF結果データ移送CC上りマッピング
			mapper.setFUSV013105CC(bean, inputMap, funcCode);
			// 契約内容通知書登録CC上りマッピング
			mapper.setFUSV013106CC(bean, inputMap, funcCode, this);
		}
		/**  2016/09/09 ANK-2985-00-00 add end */

		try
		{
			// サービス呼び出し
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{
			checkInsertErr(se);
		}
		// BSパススルー工事費CP妥当性チェック
		checkBsptWrib(outputMap, serviceInfoBean, this);
		// eoプレミアムクラブ施策申請条件一覧照会コモンコンポーネント部品下りマッピング
		mapper.getPremiumClubList(bean, outputMap, funcCode, opeDate);
	}

	/**
	 *  登録時のエラー内容判定
	 * @param se JCCWebServiceException
	 */
	private void checkInsertErr(JCCWebServiceException se)
	{
		// 例外情報を取得
		X31CMessageResult msgResult = se.getMessageList();
		X31CMessageMoreInfo[] moreInfo = msgResult.getMessageMoreInfoList();
		X31CMessageMoreInfo info = moreInfo[0];// 関連チェック系は必ずエラーが1つのため0番目から取得する。
		String templateid = info.getTemplateId();
		String itemid = info.getItemId();
		String status = info.getStatus();
		String errFlg = info.getItemCheckErr();

		// ステータスが"1100"（内部スキーマ関連チェックエラー）または"1400"（概念スキーマの関連チェックでエラー発生)
		// または"1300"（外部スキーマの相関チェックでエラー発生)の場合
		if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(status) || String.valueOf(JPCModelConstant.ENTITY_RELATION_ERR).equals(status)
				|| String.valueOf(JPCModelConstant.STATUSTRANS_ERR).equals(status)
				|| String.valueOf(JPCModelConstant.TEMPLATE_CORRELATION_ERR).equals(status))
		{
			// テンプレートIDが"EKK0341C160"(機器提供サービス契約料金コース変更)かつエラーフラグが"EA"の場合
			if (TEMPLATE_ID_SVC_KEI_KKTK_UPD.equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg))
			{
				// アイテムIDが"upd_dtm_df"(更新年月日時分秒(更新前))の場合
				if (ITEM_ID_UPD_DTM_DF.equals(itemid))
				{
					// 業務共通例外クラス："0201"（お客様情報変更エラー）
					DEBUG_LOG.info("----- FUW06802_checkInserErr() 機器提供サービス契約料金コース変更EAエラー -----");
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0201);
				}
			}
			//  テンプレートIDが"EKK0341C160"(機器提供サービス契約料金コース変更)かつ エラーフラグが"ED""EL""EP""EM"のいづれかの場合
			else if (TEMPLATE_ID_SVC_KEI_KKTK_UPD.equals(templateid)
					&& (JFUStrConst.RELATION_CHECK_ERR_ED.equals(errFlg) || JFUStrConst.RELATION_CHECK_ERR_EL.equals(errFlg)
							|| JFUStrConst.RELATION_CHECK_ERR_EP.equals(errFlg) || JFUStrConst.RELATION_CHECK_ERR_EM.equals(errFlg)))
			{
				// アイテムIDが"ido_div"(異動予約)の場合
				if (ITEM_ID_IDO_DIV.equals(itemid))
				{
					// 業務共通例外クラス："0102"（契約状態エラー）
					DEBUG_LOG.info("----- FUW06802_checkInserErr() 機器提供サービス契約料金コース変更ED-EL-EP-EMエラー -----");
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
				}
			}
			// テンプレートIDが"EKK0341D010"(機器提供サービス契約登録)、かつエラーフラグが"ED"の場合
			else if (TEMPLATE_ID_SVC_KEI_KKTK_TRK.equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_ED.equals(errFlg))
			{
				// アイテムが"機器提供サービスコード：kktk_svc_cd"の場合
				if (ITEM_ID_KKTK_SVC_CD.equals(itemid))
				{
					// 業務共通例外クラス："0201"（お客様情報変更エラー）
					DEBUG_LOG.info("----- FUW06802_checkInserErr() 機器提供サービス契約登録EDエラー -----");
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0201);
				}
			}
			// テンプレートIDが"EKK0341C530"(機器提供サービス契約機器変更手続開始)、かつエラーフラグが"EA"の場合
			else if (TEMPLATE_ID_SVC_KEI_KKTK_CNG.equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg))
			{
				// アイテムIDが"upd_dtm_df"(更新年月日時分秒(更新前))の場合
				if (ITEM_ID_UPD_DTM_DF.equals(itemid))
				{
					// 業務共通例外クラス："0201"（お客様情報変更エラー）
					DEBUG_LOG.info("----- FUW06802_checkInserErr() 機器提供サービス契約機器変更手続開始EAエラー -----");
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0201);
				}
			}
		}

		// 業務共通例外クラス："0002"（システムエラー）
		DEBUG_LOG.info("----- FUW06802_checkInserErr() システムエラー -----");
		throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);

	}

	/**
	 * ご利用料金枠の設定（eo光テレビSTB追加変更申込画面用
	 * <br>
	 * @param serviceInfoBean	サービスフォームBean
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void makeRyokinList(X31SDataBeanAccess serviceInfoBean) throws Exception
	{
		//*****************************************************************************************************
		// *ご利用料金リスト設定
		//*****************************************************************************************************
		// ご利用料金リスト取得
		X31SDataBeanAccess prcInfoAreaList = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.PRC_INFO_AREA_LIST);
		// タイトルリストの初期化
		prcInfoAreaList.getDataBeanArray(JFUStrConst.PRC_INFO_TITLE_LIST).clearArray();
		// 備考リストの初期化
		prcInfoAreaList.getDataBeanArray(JFUStrConst.PRC_INFO_BIKO_LIST).clearArray();
		// コメントリストの初期化
		prcInfoAreaList.getDataBeanArray(JFUStrConst.PRC_INFO_COMMENT_LIST).clearArray();

		// ************************************************************************************************************************
		// ●コメントエリア情報設定処理
		// ************************************************************************************************************************
		JFUWebCommon.setCommentList(prcInfoAreaList, new ArrayList(), new ArrayList());

		// ************************************************************************************************************************
		// ●備考エリア情報設定処理
		// ************************************************************************************************************************
		// 備考識別リスト(任意)
		List<String> setBikoSkbtList = new ArrayList<String>();
		setBikoSkbtList.add(PRC_INFO_AREA_BIKO_0_0);
		// 備考エリア表示用リスト
		List<String> setBikoList = new ArrayList<String>();
		setBikoList.add(PRC_INFO_AREA_BIKO1);

		// ************************************************************************************************************************
		// ●タイトル・テーブルエリア情報設定処理
		// ************************************************************************************************************************
		// テーブルタイトル識別子リスト(任意)
		List<String> setTableTitleSkbtList = new ArrayList<String>();
		setTableTitleSkbtList.add(PRC_INFO_AREA_TITLE_0_0);
		setTableTitleSkbtList.add(PRC_INFO_AREA_TITLE_1_0);
		// テーブルタイトルエリア表示用リスト
		List<String> setTableTitleList = new ArrayList<String>();
		setTableTitleList.add(PRC_INFO_AREA_TITLE1);
		setTableTitleList.add(PRC_INFO_AREA_TITLE2);

		// ************************************************************************************************************************
		// テーブルスタイルクラスリスト(任意)
		// テーブルスタイル(タイトルの背景色)に値を入れたい場合に設定する。
		// ************************************************************************************************************************
		List<String> setTableStyleClass1List = new ArrayList<String>();
		List<String> setTableStyleClass2List = new ArrayList<String>();
		setTableStyleClass1List.add(PRC_INFO_AREA_CLASS1);
		setTableStyleClass1List.add(PRC_INFO_AREA_CLASS1);
		setTableStyleClass2List.add(PRC_INFO_AREA_CLASS3);
		setTableStyleClass2List.add(PRC_INFO_AREA_CLASS3);

		// ************************************************************************************************************************
		// eo光テレビチューナー月額料金用
		// ************************************************************************************************************************
		// 月額料金用
		List<String> setTableValueSkbtList = new ArrayList<String>();
		setTableValueSkbtList.add(PRC_INFO_AREA_SKBT1);
		// 右値リスト
		List<String> setTableRightValueList = new ArrayList<String>();
		setTableRightValueList.add(JFUStrConst.SPACE);
		// 左値リスト
		List<String> setTableLeftValueList = new ArrayList<String>();
		setTableLeftValueList.add(JFUStrConst.SPACE);

		// ************************************************************************************************************************
		// コース月額料金用
		// ************************************************************************************************************************
		// 月額料金用
		List<String> setTableValueSkbtList2 = new ArrayList<String>();
		setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT2);
		// 右値リスト
		List<String> setTableRightValueList2 = new ArrayList<String>();
		setTableRightValueList2.add(JFUStrConst.SPACE);
		// 左値リスト
		List<String> setTableLeftValueList2 = new ArrayList<String>();
		setTableLeftValueList2.add(JFUStrConst.SPACE);

		String adFormFlg = serviceInfoBean.sendMessageString(FUW06802SFConst.AD_FORM_FLG, GET);

		// サービスフォームBeanよりコースリスト取得
		X31SDataBeanAccessArray ryokinList = serviceInfoBean.getDataBeanArray(FUW06802SFConst.RYOKIN);
		for (int i = 0; i < ryokinList.getCount(); i++)
		{
			// コースリストより1件取得
			X31SDataBeanAccess ryokinInfo = ryokinList.getDataBean(i);
			// 料金リストの料金コースコード取得
			String ryokinCd = ryokinInfo.sendMessageString(FUW06802SFConst.CD_03, GET);
			// 料金リストの名称取得
			String ryokinNm = ryokinInfo.sendMessageString(FUW06802SFConst.NM_03, GET);
			String ryokinNmAdd = ryokinInfo.sendMessageString(FUW06802SFConst.NM_ADD_03, GET);
			// 料金リストの料金取得
			String ryokinPrc = ryokinInfo.sendMessageString(FUW06802SFConst.PRC_03, GET);
			String ryokinPrcAdd = ryokinInfo.sendMessageString(FUW06802SFConst.PRC_ADD_03, GET);
			String ryokinTani = ryokinInfo.sendMessageString(FUW06802SFConst.PPLAN_KOTEI_TANI_NM_03, GET);

			// 料金リストに表示する金額の生成
			String dispRyokin = formatRyokin(ryokinPrc, ryokinTani);
			// 料金リストの表示する追加金額の生成
			String dispAddRyokin = formatRyokin(ryokinPrcAdd, ryokinTani);

			if (JFUStrConst.CD00134_A35.equals(ryokinCd))
			{
				// 料金コースがスタンダード
				setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT3);
				setTableLeftValueList2.add(ryokinNm);
				setTableRightValueList2.add(dispRyokin);
				if (!AD_FORM_FLG_3.equals(adFormFlg))
				{
					setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT4);
					setTableLeftValueList2.add(ryokinNmAdd);
					setTableRightValueList2.add(dispAddRyokin);
				}
			}
			else if (JFUStrConst.CD00134_A33.equals(ryokinCd))
			{
				// 料金コースがバリュー
				setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT5);
				setTableLeftValueList2.add(ryokinNm);
				setTableRightValueList2.add(dispRyokin);
				if (!AD_FORM_FLG_3.equals(adFormFlg))
				{
					setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT6);
					setTableLeftValueList2.add(ryokinNmAdd);
					setTableRightValueList2.add(dispAddRyokin);
				}
			}
			else if (JFUStrConst.CD00134_A40.equals(ryokinCd))
			{
				// 料金コースがベーシック
				setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT7);
				setTableLeftValueList2.add(ryokinNm);
				setTableRightValueList2.add(dispRyokin);
				if (!AD_FORM_FLG_3.equals(adFormFlg))
				{
					setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT8);
					setTableLeftValueList2.add(ryokinNmAdd);
					setTableRightValueList2.add(dispAddRyokin);
				}
			}
			else if (JFUStrConst.CD00134_A41.equals(ryokinCd))
			{
				// 料金コースがプレミアム
				setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT9);
				setTableLeftValueList2.add(ryokinNm);
				setTableRightValueList2.add(dispRyokin);
				if (!AD_FORM_FLG_3.equals(adFormFlg))
				{
					setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT10);
					setTableLeftValueList2.add(ryokinNmAdd);
					setTableRightValueList2.add(dispAddRyokin);
				}
			}
			else if (JFUStrConst.CD00134_A86.equals(ryokinCd))
			{
				// 料金コースがスマートベーシック
				setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT11);
				setTableLeftValueList2.add(ryokinNm);
				setTableRightValueList2.add(dispRyokin);
				if (!AD_FORM_FLG_3.equals(adFormFlg))
				{
					setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT12);
					setTableLeftValueList2.add(ryokinNmAdd);
					setTableRightValueList2.add(dispAddRyokin);
				}
			}
			else if (JFUStrConst.CD00134_A87.equals(ryokinCd))
			{
				// 料金コースがスマートプレミアム
				setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT13);
				setTableLeftValueList2.add(ryokinNm);
				setTableRightValueList2.add(dispRyokin);
				if (!AD_FORM_FLG_3.equals(adFormFlg))
				{
					setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT14);
					setTableLeftValueList2.add(ryokinNmAdd);
					setTableRightValueList2.add(dispAddRyokin);
				}
			}
			else if (JFUStrConst.CD00134_A85.equals(ryokinCd))
			{
				// 料金コースがスマートプレミアム
				setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT15);
				setTableLeftValueList2.add(ryokinNm);
				setTableRightValueList2.add(dispRyokin);
				if (!AD_FORM_FLG_3.equals(adFormFlg))
				{
					setTableValueSkbtList2.add(PRC_INFO_AREA_SKBT16);
					setTableLeftValueList2.add(ryokinNmAdd);
					setTableRightValueList2.add(dispAddRyokin);
				}
			}
		}

		// ************************************************************************************************************************
		// 初期費用
		// ************************************************************************************************************************
		int shutchoPrc = Integer.parseInt(serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_11_LIST, GET)); // 一時支払料金出張費
		int bsptPrc = Integer.parseInt(serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_14_LIST, GET)); // 一時支払料金ＢＳＰＴ工事費
		int bsptInitKojihi = shutchoPrc + bsptPrc;
		// 初期費用
		List<String> setTableValueSkbtList3 = new ArrayList<String>();
		setTableValueSkbtList3.add(PRC_INFO_AREA_INIT_PRC_BSPT);
		// 右値リスト
		List<String> setTableRightValueList3 = new ArrayList<String>();

		if (isBsptMuryo(serviceInfoBean))
		{
			// 無料の場合
			bsptInitKojihi = 0;
		}
		if (bsptInitKojihi == 0)
		{
			// 一時支払金の合計が0円の場合、料金表の作成を行わない設定を行う
			setTableRightValueList3.add(JFUStrConst.FREE_LABEL);
		}
		else
		{
			setTableRightValueList3.add(formatNumber(String.valueOf(shutchoPrc + bsptPrc)) + PRC_INFO_AREA_HALF_SPACE_YEN);
			setBikoList.add(JFUStrConst.EMPTY);
		}
		// 左値リスト
		List<String> setTableLeftValueList3 = new ArrayList<String>();
		setTableLeftValueList3.add(JFUWebCommon.getDispText(SCREEN_ID_FUW06802, SHOKI_BSPT_KOJI_RYOKIN_NAME));

		// ************************************************************************************************************************
		// テーブルの値、左値、右値の各リストを格納するマップ
		// ************************************************************************************************************************
		Map<String, List<String>> tableValueMap = new LinkedHashMap<String, List<String>>();
		tableValueMap.put(PRC_INFO_AREA_TITLE1 + PRC_INFO_AREA_ZERO + JFUStrConst.KEY_TABLE_VALUE_SKBT_LIST, setTableValueSkbtList);
		tableValueMap.put(PRC_INFO_AREA_TITLE1 + PRC_INFO_AREA_ZERO + JFUStrConst.KEY_TABLE_LEFT_VALUE_LIST, setTableLeftValueList);
		tableValueMap.put(PRC_INFO_AREA_TITLE1 + PRC_INFO_AREA_ZERO + JFUStrConst.KEY_TABLE_RIGHT_VALUE_LIST, setTableRightValueList);
		tableValueMap.put(PRC_INFO_AREA_TITLE2 + PRC_INFO_AREA_ONE + JFUStrConst.KEY_TABLE_VALUE_SKBT_LIST, setTableValueSkbtList2);
		tableValueMap.put(PRC_INFO_AREA_TITLE2 + PRC_INFO_AREA_ONE + JFUStrConst.KEY_TABLE_LEFT_VALUE_LIST, setTableLeftValueList2);
		tableValueMap.put(PRC_INFO_AREA_TITLE2 + PRC_INFO_AREA_ONE + JFUStrConst.KEY_TABLE_RIGHT_VALUE_LIST, setTableRightValueList2);

		// 初期費用の表示エリアを作成する
		setTableTitleSkbtList.add(PRC_INFO_AREA_TITLE_2_0);
		setTableTitleList.add(PRC_INFO_AREA_TITLE3);
		setTableStyleClass1List.add(PRC_INFO_AREA_CLASS2);
		setTableStyleClass2List.add(PRC_INFO_AREA_CLASS3);

		tableValueMap.put(PRC_INFO_AREA_TITLE3 + PRC_INFO_AREA_TWO + JFUStrConst.KEY_TABLE_VALUE_SKBT_LIST, setTableValueSkbtList3);
		tableValueMap.put(PRC_INFO_AREA_TITLE3 + PRC_INFO_AREA_TWO + JFUStrConst.KEY_TABLE_LEFT_VALUE_LIST, setTableLeftValueList3);
		tableValueMap.put(PRC_INFO_AREA_TITLE3 + PRC_INFO_AREA_TWO + JFUStrConst.KEY_TABLE_RIGHT_VALUE_LIST, setTableRightValueList3);

		// テーブルタイトルエリア表示用リスト設定
		JFUWebCommon.setTableTitleList(prcInfoAreaList, setTableTitleSkbtList, setTableTitleList, setTableStyleClass1List, setTableStyleClass2List,
				tableValueMap);

		setBikoList.add(BIKO_NORMAL_STYLE + PRC_INFO_AREA_BIKO3 + TAG_SPAN_E);

		// 備考エリア表示用リスト設定
		JFUWebCommon.setBikoList(prcInfoAreaList, setBikoSkbtList, setBikoList);
	}

	/**
	 * ご利用料金枠の設定（eo光テレビSTB追加変更申込確認画面、eo光テレビSTB追加変更申込結果画面用）
	 * <br>
	 * @param serviceInfoBean	サービスフォームBean
	 */
	@SuppressWarnings("unchecked")
	private void makeRyokinList2(X31SDataBeanAccess serviceInfoBean)
	{
		//*****************************************************************************************************
		// *ご利用料金リスト設定
		//*****************************************************************************************************
		// ご利用料金リスト取得
		X31SDataBeanAccess prcInfoAreaList = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.PRC_INFO_AREA_LIST);
		// タイトルリストの初期化
		prcInfoAreaList.getDataBeanArray(JFUStrConst.PRC_INFO_TITLE_LIST).clearArray();
		// 備考リストの初期化
		prcInfoAreaList.getDataBeanArray(JFUStrConst.PRC_INFO_BIKO_LIST).clearArray();
		// コメントリストの初期化
		prcInfoAreaList.getDataBeanArray(JFUStrConst.PRC_INFO_COMMENT_LIST).clearArray();

		// ************************************************************************************************************************
		// ●コメントエリア情報設定処理
		// ************************************************************************************************************************
		JFUWebCommon.setCommentList(prcInfoAreaList, new ArrayList(), new ArrayList());

		// ************************************************************************************************************************
		// ●備考エリア情報設定処理
		// ************************************************************************************************************************
		// 備考識別リスト(任意)
		List<String> setBikoSkbtList = new ArrayList<String>();
		setBikoSkbtList.add(PRC_INFO_AREA_BIKO_0_0);
		setBikoSkbtList.add(PRC_INFO_AREA_BIKO_1_0);
		// 備考エリア表示用リスト
		List<String> setBikoList = new ArrayList<String>();
		setBikoList.add(JFUStrConst.EMPTY);
		// 宅配交換以外の場合、備考を設定する。
		if (!CHG_WAY_CD_TAKUHAI.equals(serviceInfoBean.sendMessageString(FUW06802SFConst.CHG_WAY, GET)))
		{
			setBikoList.add(PRC_INFO_AREA_BIKO2);
		}
		// 備考エリア表示用リスト設定
		JFUWebCommon.setBikoList(prcInfoAreaList, setBikoSkbtList, setBikoList);

		// ************************************************************************************************************************
		// ●タイトル・テーブルエリア情報設定処理
		// ************************************************************************************************************************
		// テーブルタイトル識別子リスト(任意)
		List<String> setTableTitleSkbtList = new ArrayList<String>();
		setTableTitleSkbtList.add(PRC_INFO_AREA_TITLE_3_0);
		// テーブルタイトルエリア表示用リスト
		List<String> setTableTitleList = new ArrayList<String>();
		setTableTitleList.add(PRC_INFO_AREA_TITLE4);

		// ************************************************************************************************************************
		// テーブルスタイルクラスリスト(任意)
		// テーブルスタイル(タイトルの背景色)に値を入れたい場合に設定する。
		// ************************************************************************************************************************
		List<String> setTableStyleClass1List = new ArrayList<String>();
		List<String> setTableStyleClass2List = new ArrayList<String>();
		setTableStyleClass1List.add(PRC_INFO_AREA_CLASS4);
		setTableStyleClass2List.add(PRC_INFO_AREA_CLASS3);

		// ************************************************************************************************************************
		// テーブルの値、左値、右値の各リストを格納するマップ
		// ************************************************************************************************************************
		Map<String, List<String>> tableValueMap = new LinkedHashMap<String, List<String>>();
		List<String> setTableLeftValueList = new ArrayList<String>();
		List<String> setTableRightValueList = new ArrayList<String>();

		X31SDataBeanAccessArray mskmPrcList = serviceInfoBean.getDataBeanArray(FUW06802SFConst.MSKM_PRC_LIST);
		List<String> setTableValueSkbtList = new ArrayList<String>();

		// ループ：お申し込み後の月額料金リスト件数分
		for (int i = 0; i < mskmPrcList.getCount(); i++)
		{
			X31SDataBeanAccess mskmPrcInfo = mskmPrcList.getDataBean(i);
			String ryokinNm = mskmPrcInfo.sendMessageString(FUW06802SFConst.NM_04, GET);
			String ryokinPrc = mskmPrcInfo.sendMessageString(FUW06802SFConst.PRC_04, GET);
			String ryokinTani = mskmPrcInfo.sendMessageString(FUW06802SFConst.TANI_04, GET);

			setTableValueSkbtList.add(PRC_INFO_AREA_TITLE_MSKM_ + i);
			setTableLeftValueList.add(ryokinNm);
			setTableRightValueList.add(formatRyokin(ryokinPrc, ryokinTani));
		}

		// STB追加変更有無フラグ取得
		String stbCngUmuFlg = serviceInfoBean.sendMessageString(FUW06802SFConst.STB_CNG_UMU_FLG, GET);
		boolean bsptFlg = serviceInfoBean.sendMessageBoolean(FUW06802SFConst.CHKBOX_BSPASS, GET);

		if (STB_CNG_FLG.equals(stbCngUmuFlg) || bsptFlg)
		{
			// BSパススルーを申し込む場合
			setTableTitleSkbtList.add(PRC_INFO_AREA_TITLE_4_0);
			setTableTitleList.add(PRC_INFO_AREA_TITLE3);
			setTableStyleClass1List.add(PRC_INFO_AREA_CLASS2);
			setTableStyleClass2List.add(PRC_INFO_AREA_CLASS3);

			List<String> setTableValueSkbtList2 = new ArrayList<String>();
			List<String> setTableLeftValueList2 = new ArrayList<String>();
			List<String> setTableRightValueList2 = new ArrayList<String>();
			X31SDataBeanAccessArray initPrcList = serviceInfoBean.getDataBeanArray(FUW06802SFConst.START_PRC_LIST);

			// ループ：初期費用リスト件数分
			for (int i = 0; i < initPrcList.getCount(); i++)
			{
				X31SDataBeanAccess initPrcInfo = initPrcList.getDataBean(i);
				String ryokinNm = initPrcInfo.sendMessageString(FUW06802SFConst.NM_04, GET);
				String ryokinPrc = initPrcInfo.sendMessageString(FUW06802SFConst.PRC_04, GET);
				String ryokinTani = initPrcInfo.sendMessageString(FUW06802SFConst.TANI_04, GET);

				setTableValueSkbtList2.add(PRC_INFO_AREA_TITLE_BSPT_ + i);
				setTableLeftValueList2.add(ryokinNm);
				setTableRightValueList2.add(formatRyokin(ryokinPrc, ryokinTani));
			}

			tableValueMap.put(PRC_INFO_AREA_TITLE4 + PRC_INFO_AREA_ZERO + JFUStrConst.KEY_TABLE_VALUE_SKBT_LIST, setTableValueSkbtList);
			tableValueMap.put(PRC_INFO_AREA_TITLE4 + PRC_INFO_AREA_ZERO + JFUStrConst.KEY_TABLE_LEFT_VALUE_LIST, setTableLeftValueList);
			tableValueMap.put(PRC_INFO_AREA_TITLE4 + PRC_INFO_AREA_ZERO + JFUStrConst.KEY_TABLE_RIGHT_VALUE_LIST, setTableRightValueList);

			if (initPrcList.getCount() > 0)
			{
				// 初期費用のリストが1件以上ある場合、タイトルを設定する
				tableValueMap.put(PRC_INFO_AREA_TITLE3 + PRC_INFO_AREA_ONE + JFUStrConst.KEY_TABLE_VALUE_SKBT_LIST, setTableValueSkbtList2);
				tableValueMap.put(PRC_INFO_AREA_TITLE3 + PRC_INFO_AREA_ONE + JFUStrConst.KEY_TABLE_LEFT_VALUE_LIST, setTableLeftValueList2);
				tableValueMap.put(PRC_INFO_AREA_TITLE3 + PRC_INFO_AREA_ONE + JFUStrConst.KEY_TABLE_RIGHT_VALUE_LIST, setTableRightValueList2);
			}

		}
		else
		{
			tableValueMap.put(PRC_INFO_AREA_TITLE4 + PRC_INFO_AREA_ZERO + JFUStrConst.KEY_TABLE_VALUE_SKBT_LIST, setTableValueSkbtList);
			tableValueMap.put(PRC_INFO_AREA_TITLE4 + PRC_INFO_AREA_ZERO + JFUStrConst.KEY_TABLE_LEFT_VALUE_LIST, setTableLeftValueList);
			tableValueMap.put(PRC_INFO_AREA_TITLE4 + PRC_INFO_AREA_ZERO + JFUStrConst.KEY_TABLE_RIGHT_VALUE_LIST, setTableRightValueList);
		}

		// テーブルタイトルエリア表示用リスト設定
		JFUWebCommon.setTableTitleList(prcInfoAreaList, setTableTitleSkbtList, setTableTitleList, setTableStyleClass1List, setTableStyleClass2List,
				tableValueMap);
	}

	/**
	 * STBの月額料金を取得します
	 * <br>
	 * @param serviceInfoBean サービスフォームBean
	 * @param keiKikiPcrsCd 契約中の機器
	 * @return STBの月額料金
	 */
	private int getSTBMonthRyokin(X31SDataBeanAccess serviceInfoBean, String keiKikiPcrsCd)
	{
		int stbKei = 0;
		// 機器リスト（参照用）より機器コースコードリスト取得
		X31SDataBeanAccess kikiSaveInfo = serviceInfoBean.getDataBeanArray(FUW06802SFConst.KIKI_SAVE_LIST).getDataBean(0);
		int saveCnt = Integer.parseInt(serviceInfoBean.sendMessageString(FUW06802SFConst.KIKI_KENSU_CNT, GET));
		for (int i = 0; i < saveCnt; i++)
		{
			String kikiPcsCd = kikiSaveInfo.sendMessageString(FUW06802SFConst.CD_LIST_02, GET, i);
			if (keiKikiPcrsCd.equals(kikiPcsCd))
			{
				// 契約中の機器と同一の料金コースコード取得時、月額料金を加算する
				String kikiPrc = kikiSaveInfo.sendMessageString(FUW06802SFConst.PRC_LIST_02, GET, i);
				String stbTaniNm = kikiSaveInfo.sendMessageString(FUW06802SFConst.TANI_NM_LIST_02, GET, i);
				// 総合計を求める為、無料の文言→"0",月額料金の単位→""の対応を行う
				kikiPrc = kikiPrc.replace(JFUStrConst.FREE_LABEL, JFUStrConst.S_ZERO).replace(stbTaniNm, JFUStrConst.EMPTY);
				// 通常は単位置換されているはずだが、念のため実施
				kikiPrc = kikiPrc.replace(JFUStrConst.YEN, JFUStrConst.EMPTY);
				// 総合計にSTBの月額料金を加算
				stbKei = stbKei + Integer.parseInt(kikiPrc);
			}
		}
		return stbKei;
	}

	/**
	 * 基本コースのレコード番号取得処理
	 * <br>
	 * @param keiCfmList 契約情報リスト
	 * @return	基本コースのレコード番号
	 * @throws Exception 例外
	 */
	private String getMainCnt(X31SDataBeanAccessArray keiCfmList) throws Exception
	{
		// ループ：契約台数分
		for (int i = 0; i < keiCfmList.getCount(); i++)
		{
			X31SDataBeanAccess keiInfo = keiCfmList.getDataBean(i);
			String keiCngPcrs = keiInfo.sendMessageString(FUW06802SFConst.CHG_PCRS_01, GET);

			if (isJdgKeiCngPcrs(keiCngPcrs))
			{
				// コース選択が「スタンダード」または「プレミアムＨＤ」または「スマートプレミアム」の場合
				return Integer.toString(i);
			}
		}
		// ループ：契約台数分
		for (int i = 0; i < keiCfmList.getCount(); i++)
		{
			X31SDataBeanAccess keiInfo = keiCfmList.getDataBean(i);
			String keiCngPcrs = keiInfo.sendMessageString(FUW06802SFConst.CHG_PCRS_01, GET);

			if (isJdgKeiCngPcrs2(keiCngPcrs))
			{
				// コース選択が「バリュー」または「ベーシックＨＤ」または「スマートベーシック」の場合
				return Integer.toString(i);
			}
		}
		return "0";
	}

	/**
	 * 料金コースコードに紐づくコース選択を取得します
	 * <br>
	 * @param pcrsCd 料金コースコード
	 * @return コース選択
	 */
	private String getChgPcrs(String pcrsCd)
	{
		for (int i = 0; i < PCRS_CNG_LIST.length; i++)
		{
			if (PCRS_CNG_LIST[i].equals(pcrsCd))
			{
				return Integer.toString(i);
			}
		}
		return JFUStrConst.EMPTY;
	}

	/**
	 * 料金コースコードに紐づくコース種別を取得します
	 * <br>
	 * @param pcrsCd 料金コースコード
	 * @return コース種別
	 */
	private String getPcrsType(String pcrsCd)
	{
		if (CD00134_A35.equals(pcrsCd) || CD00134_A33.equals(pcrsCd) || CD00134_A34.equals(pcrsCd))
		{
			// コース種別「0：旧コース」の場合
			return PCRS_TYPE00;
		}
		else if (CD00134_A40.equals(pcrsCd) || CD00134_A41.equals(pcrsCd) || CD00134_A36.equals(pcrsCd))
		{
			// コース種別「1：現HDコース」の場合
			return PCRS_TYPE01;
		}
		else if (CD00134_A85.equals(pcrsCd) || CD00134_A86.equals(pcrsCd) || CD00134_A87.equals(pcrsCd))
		{
			// コース種別「2：新HDコース」の場合
			return PCRS_TYPE02;
		}

		return JFUStrConst.EMPTY;
	}

	/**
	 * コース選択判定
	 * スタンダードコースまたはプレミアムコースまたはスマートプレミアムか確認<br>
	 * @param keiCngPcrs	コース選択
	 * @return	判定結果
	 * @throws Exception	すべての例外
	 */
	private boolean isJdgKeiCngPcrs(String keiCngPcrs) throws Exception
	{
		if ((PCRS00.equals(keiCngPcrs) || PCRS04.equals(keiCngPcrs) || PCRS10.equals(keiCngPcrs)))
		{
			// コース選択が「スタンダード」または「プレミアムＨＤ」または「スマートプレミアム」の場合
			return true;
		}
		return false;
	}

	/**
	 * コース選択判定2
	 * バリューコースまたはベーシックコースまたはスマートベーシックか確認<br>
	 * @param keiCngPcrs	コース選択
	 * @return	判定結果
	 * @throws Exception	すべての例外
	 */
	private boolean isJdgKeiCngPcrs2(String keiCngPcrs) throws Exception
	{
		if ((PCRS01.equals(keiCngPcrs) || PCRS03.equals(keiCngPcrs) || PCRS09.equals(keiCngPcrs)))
		{
			// コース選択が「バリュー」または「ベーシックＨＤ」または「スマートベーシック」の場合
			return true;
		}
		return false;
	}

	/**
	 * サービス検索結果マップの値が存在するか判定します。
	 * <br>
	 * @param outputMap サービス検索結果マップ
	 * @param keySC SCタイトルキー
	 * @param keyCBSMsg CBSMsgキー
	 * @return サービス検索結果マップの値が存在する場合は、TRUE
	 */
	private boolean existsOutPutMap(HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap, String keySC, String keyCBSMsg)
	{
		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = null;
		if (outputMap.containsKey(keySC))
		{
			parentMap = outputMap.get(keySC);
		}
		if (parentMap == null || !parentMap.containsKey(keyCBSMsg))
		{
			// パラメータ異常ならば終了
			return false;
		}
		ArrayList<HashMap<String, String>> childList = parentMap.get(keyCBSMsg);
		if (childList == null || childList.size() == 0)
		{
			// パラメータ異常ならば終了
			return false;
		}
		return true;
	}

	/**
	 * DataBeanをディープコピーします。<br>
	 * @param srcBean コピー元DataBean
	 * @param destBean コピー先DataBean
	 */
	private void deepCopyDataBean(X31SDataBeanAccess srcBean, X31SDataBeanAccess destBean)
	{
		String[] items = srcBean.getItemNameList();
		DEBUG_LOG.info("  deepCopyDataBean");
		for (int i = 0; i < items.length; i++)
		{
			String itemName = items[i];
			String itemId = srcBean.getItemId(itemName);
			if (itemId.indexOf("list") > -1)
			{
				int count = ((Integer)srcBean.sendMessage(itemName, GET_COUNT)).intValue();

				for (int j = 0; j < count; j++)
				{
					String obj = srcBean.sendMessageString(itemName, GET, j);
					destBean.sendMessageString(itemName, ADD, obj);
					DEBUG_LOG.info("     ADD " + itemName + "[" + obj + "]");
				}
			}
			else
			{
				String obj = srcBean.sendMessageString(itemName, GET);
				destBean.sendMessageString(itemName, SET, obj);
				DEBUG_LOG.info("     SET " + itemName + "[" + obj + "]");
			}
		}
	}

	/**
	 * コピー元DataBean項目をコピー先DataBeanへコピーします
	 * <br>
	 * @param srcBean コピー元DataBean
	 * @param destBean コピー先DataBean
	 * @param srcName コピー元項目名
	 * @param destName コピー先項目名
	 */
	private void copyValue(X31SDataBeanAccess srcBean, X31SDataBeanAccess destBean, String srcName, String destName)
	{
		String value = srcBean.sendMessageString(srcName, GET);
		destBean.sendMessageString(destName, SET, value);
	}

	/**
	 * C-CASカード番号のハイフン処理
	 * <br>
	 * @param arg0 	C-CASカード番号
	 * @return String 編集されたC-CASカード番号
	 */
	private static String editKikiSeizoNo(String arg0)
	{
		if (arg0 == null || JFUStrConst.EMPTY.equals(arg0))
		{
			return JFUStrConst.EMPTY;
		}

		StringBuffer strBuf = new StringBuffer();

		// C-CASカード番号の文字数を取得
		int length = arg0.length();

		for (int i = 0; i < length; i++)
		{
			// C-CASカード番号の4桁目、8桁目、12桁目、16桁目にハイフンを設定
			if (4 == length - i || 8 == length - i || 12 == length - i || 16 == length - i)
			{
				strBuf.append("-");
			}

			strBuf.append(arg0.substring(i, i + 1));
		}

		return strBuf.toString();
	}

	/**
	 * 数値書式(カンマ区切り)の編集を行います。
	 * <br>
	 * @param arg0 カンマ区切りに編集する文字列
	 * @return String 数値書式(カンマ区切り)に編集された文字列
	 */
	private static String formatNumber(String arg0)
	{
		return JPCUtilCommon.formatNumber(arg0);
	}

	/**
	 * 料金表に表示する金額の編集を行います。
	 * <br>
	 * @param ryokinPrc 料金
	 * @param ryokinTani 単位
	 * @return String 料金表に表示する単位が付与された金額
	 */
	private String formatRyokin(String ryokinPrc, String ryokinTani)
	{
		// 金額が0の場合、無料の表示とし、それ以外の場合は金額をカンマ区切りにして単位を付けて返す
		String resultString = JFUStrConst.EMPTY;
		if (JFUStrConst.S_ZERO.equals(ryokinPrc))
		{
			resultString = JFUStrConst.FREE_LABEL;
		}
		else
		{
			resultString = formatNumber(ryokinPrc) + ryokinTani;
		}

		return resultString;
	}

	/**
	 * 機器提供サービス契約一覧（STB)の加工編集処理（FUSV013001SC）
	 * <br>
	 * @param outputMap	 サービス検索結果マップ
	 * @param stb_all_kei_map 機器提供サービス契約中レコード(STB)
	 * @param stb_no_list 機器提供サービス契約番号格納リスト
	 * @param bcasMasterList B-CAS不要情報（業務パラメータ、マスタから取得したB-CAS不要機器の情報。データが存在しない場合は空）
	 */
	private void editDispMapSC1(final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap,
			HashMap<String, HashMap<String, String>> stb_all_kei_map, TreeSet<String> stb_no_list, List<String> bcasMasterList)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013001SC, MAP_KEY_SC1CBSMSGLIST))
		{
			// 機器提供サービス契約が存在しない場合、契約状態エラー
			DEBUG_LOG.info("----- FUW06802_editDispMapSC1() データ未存在エラー -----");
			throw new JCCBusinessException(ERROR_CODE_0102);
		}

		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013001SC);
		ArrayList<HashMap<String, String>> stbList = parentMap.get(MAP_KEY_SC1CBSMSGLIST);

		// 機器提供サービス契約一覧（STB）の件数分Loop
		for (int i = 0; i < stbList.size(); i++)
		{
			HashMap<String, String> stbMap = stbList.get(i);
			String kktkSvckeiNo = stbMap.get(MAP_KEY_KKTK_SVC_KEI_NO);
			String stbKkChgNo = stbMap.get(MAP_KEY_KK_CHG_NO);
			String hddCapaCd = stbMap.get(MAP_KEY_HDD_CAPA_CD);
			stbMap.put(MAP_KEY_BCAS_FUYO_STB_FLG, getBcasFuyoCd(bcasMasterList, hddCapaCd));
			// 機器提供サービス契約番号格納配列に機器提供サービス契約番号を追加
			stb_no_list.add(kktkSvckeiNo);
			// 機器提供サービス契約レコードの設定
			stb_all_kei_map.put(kktkSvckeiNo, stbMap);
			stb_all_kei_map.put(stbKkChgNo, stbMap);
		}
	}

	/**
	 * 機器提供サービス契約一覧（BCAS)の加工編集処理（FUSV013002SC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param outputMap       サービス検索結果マップ
	 * @param stb_all_kei_map 機器提供サービス契約中レコード(STB)
	 * @param stb_all_kei_map_bcas 機器提供サービス契約中レコード(BCAS)
	 */
	private void editDispMapSC2(final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap,
			final HashMap<String, HashMap<String, String>> stb_all_kei_map, HashMap<String, HashMap<String, String>> stb_all_kei_map_bcas)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013002SC, MAP_KEY_SC2CBSMSGLIST))
		{
			// 機器提供サービス契約(B-CAS)が存在しないSTBがあるため処理を抜ける
			DEBUG_LOG.info("----- FUW06802_editDispMapSC2() 機器提供サービス契約(B-CAS)が存在しないSTBがあるため処理を抜ける -----");
			return;
		}

		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013002SC);
		ArrayList<HashMap<String, String>> bcasList = parentMap.get(MAP_KEY_SC2CBSMSGLIST);

		// 機器提供サービス契約一覧（BCAS）の件数分Loop
		for (int i = 0; i < bcasList.size(); i++)
		{
			HashMap<String, String> bcasMap = bcasList.get(i);
			String bcasUcwkNo = bcasMap.get(MAP_KEY_SVC_KEI_UCWK_NO);
			String stbKktkSvckeiNo = JFUStrConst.EMPTY; // 機器提供サービス契約番号(STB)
			String stbKkChgNo = JFUStrConst.EMPTY; // 機器変更番号(STB)

			// 機器提供サービス契約一覧（STB）の件数分Loop
			for (HashMap<String, String> stbMap : stb_all_kei_map.values())
			{
				String stbUcwkNo = stbMap.get(MAP_KEY_SVC_KEI_UCWK_NO);
				if (bcasUcwkNo.equals(stbUcwkNo))
				{
					// 全機器リスト(STB).サービス契約内訳番号と全機器リスト(BCAS).サービス契約内訳番号が同じ場合
					stbKktkSvckeiNo = stbMap.get(MAP_KEY_KKTK_SVC_KEI_NO);
					stbKkChgNo = stbMap.get(MAP_KEY_KK_CHG_NO);
					break;
				}
			}
			// 機器提供サービス契約レコードの設定
			stb_all_kei_map_bcas.put(stbKktkSvckeiNo, bcasMap);
			stb_all_kei_map_bcas.put(stbKkChgNo, bcasMap);
		}
	}

	/**
	 * 機器提供サービス契約一覧（CCAS)の加工編集処理（FUSV013003SC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param outputMap       サービス検索結果マップ
	 * @param stb_all_kei_map 機器提供サービス契約中レコード(STB)
	 * @param stb_all_kei_map_ccas 機器提供サービス契約中レコード(CCAS)
	 */
	private void editDispMapSC3(final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap,
			final HashMap<String, HashMap<String, String>> stb_all_kei_map, HashMap<String, HashMap<String, String>> stb_all_kei_map_ccas)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013003SC, MAP_KEY_SC3CBSMSGLIST))
		{
			// 機器提供サービス契約が存在しない場合、契約状態エラー
			DEBUG_LOG.info("----- FUW06802_editDispMapSC3() データ未存在エラー -----");
			throw new JCCBusinessException(ERROR_CODE_0102);
		}

		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013003SC);
		ArrayList<HashMap<String, String>> ccasList = parentMap.get(MAP_KEY_SC3CBSMSGLIST);

		// 機器提供サービス契約一覧（CCAS）の件数分Loop
		for (int i = 0; i < ccasList.size(); i++)
		{
			HashMap<String, String> ccasMap = ccasList.get(i);
			String ccasUcwkNo = ccasMap.get(MAP_KEY_SVC_KEI_UCWK_NO);
			String stbKktkSvckeiNo = JFUStrConst.EMPTY; // 機器提供サービス契約番号(STB)
			String stbKkChgNo = JFUStrConst.EMPTY; // 機器変更番号(STB)

			// 機器提供サービス契約一覧（STB）の件数分Loop
			for (HashMap<String, String> stbMap : stb_all_kei_map.values())
			{
				String stbUcwkNo = stbMap.get(MAP_KEY_SVC_KEI_UCWK_NO);
				if (ccasUcwkNo.equals(stbUcwkNo))
				{
					// 全機器リスト(STB).サービス契約内訳番号と全機器リスト(CCAS).サービス契約内訳番号が同じ場合
					stbKktkSvckeiNo = stbMap.get(MAP_KEY_KKTK_SVC_KEI_NO);
					stbKkChgNo = stbMap.get(MAP_KEY_KK_CHG_NO);
					break;
				}
			}
			// 機器提供サービス契約レコードの設定
			stb_all_kei_map_ccas.put(stbKktkSvckeiNo, ccasMap);
			stb_all_kei_map_ccas.put(stbKkChgNo, ccasMap);
		}
	}

	/**
	 * 機器提供サービス契約一覧（VONU)の加工編集処理（FUSV013004SC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param serviceInfoBean サービスフォームBean
	 * @param outputMap       サービス検索結果マップ
	 */
	private void editDispMapSC4(X31SDataBeanAccess serviceInfoBean,
			final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013004SC, MAP_KEY_SC4CBSMSGLIST))
		{
			// サービス検索結果マップの値が存在しない場合、処理終了
			return;
		}

		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013004SC);
		ArrayList<HashMap<String, String>> vonuList = parentMap.get(MAP_KEY_SC4CBSMSGLIST);

		// 機器提供サービス契約一覧（VONU）の件数分Loop
		for (int i = 0; i < vonuList.size(); i++)
		{
			HashMap<String, String> vonuMap = vonuList.get(i);
			String vonuStatusFlg = vonuMap.get(MAP_KEY_STATUS_FLG);
			if (JFUStrConst.CD01167_011.equals(vonuStatusFlg) || JFUStrConst.CD01167_012.equals(vonuStatusFlg))
			{
				// 契約状態フラグ(0：追加予約中)の場合、予約あり
				serviceInfoBean.sendMessageString(FUW06802SFConst.YOYAKU_FLG_VONU, SET, "1");
			}
		}
		if (vonuList.isEmpty())
		{
			// VONU情報が存在しない場合、予約あり
			serviceInfoBean.sendMessageString(FUW06802SFConst.YOYAKU_FLG_VONU, SET, "1");
		}
	}

	/**
	 * サービス契約一覧の加工編集処理（FUSV013005SC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param serviceInfoBean サービスフォームBean
	 * @param outputMap       サービス検索結果マップ
	 */
	private void editDispMapSC5(X31SDataBeanAccess serviceInfoBean,
			final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013005SC, MAP_KEY_SC5CBSMSGLIST))
		{
			// サービス契約にレコードが存在しない場合、契約状態エラー
			DEBUG_LOG.info("----- FUW06802_editDispMapSC5() データ未存在エラー -----");
			throw new JCCBusinessException(ERROR_CODE_0102);
		}

		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013005SC);
		HashMap<String, String> keiMap = parentMap.get(MAP_KEY_SC5CBSMSGLIST).get(0);

		String statusFlg = keiMap.get(MAP_KEY_STATUS_FLG);
		String idoRsvFlg = keiMap.get(MAP_KEY_IDO_RSV_FLG);
		String pcrsCd = keiMap.get(MAP_KEY_PCRS_CD);

		if ("0".equals(statusFlg))
		{
			// 契約状態フラグ(0：追加予約中)のためエラー
			DEBUG_LOG.info("----- FUW06802_editDispMapSC5() 追加予約中エラー -----");
			throw new JCCBusinessException(ERROR_CODE_0102);
		}
		if (!"0".equals(idoRsvFlg))
		{
			// 異動レコード有無フラグ(0：無)以外のためエラー
			DEBUG_LOG.info("----- FUW06802_editDispMapSC5() 異動予約レコード存在エラー -----");
			throw new JCCBusinessException(ERROR_CODE_0102);
		}
		if (CD00134_A37.equals(pcrsCd))
		{
			// 契約中コースが地デジの場合、契約状態エラー
			DEBUG_LOG.info("----- FUW06802_editDispMapSC5() 地デジ・BSコースエラー -----");
			throw new JCCBusinessException(ERROR_CODE_0102);
		}

		serviceInfoBean.sendMessageString(FUW06802SFConst.PCRS_CD_KEI, SET, pcrsCd);
		serviceInfoBean.sendMessageString(FUW06802SFConst.PRC_GRP_CD_KEI, SET, keiMap.get(MAP_KEY_PRC_GRP_CD));
		serviceInfoBean.sendMessageString(FUW06802SFConst.GENE_ADD_DTM_KEI, SET, keiMap.get(MAP_KEY_GENE_ADD_DTM));
		serviceInfoBean.sendMessageString(FUW06802SFConst.SVC_STAYMD, SET, keiMap.get(MAP_KEY_SVC_STA_YMD));
		serviceInfoBean.sendMessageString(FUW06802SFConst.OWNR_KEI_NO, SET, keiMap.get(MAP_KEY_OWNR_KEI_NO)); // オーナー契約番号
	}

	/**
	 * サービス契約内訳一覧の加工編集処理（FUSV013006SC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param serviceInfoBean サービスフォームBean
	 * @param outputMap       サービス検索結果マップ
	 * @param pcrs_all_kei_map サービス契約内訳契約中レコード
	 * @param bcasFuyoCnt B-CAS不要STB件数
	 */
	private void editDispMapSC6(X31SDataBeanAccess serviceInfoBean,
			final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap,
			HashMap<String, HashMap<String, String>> pcrs_all_kei_map, int bcasFuyoCnt)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013006SC, MAP_KEY_SC6CBSMSGLIST))
		{
			// サービス契約内訳にレコードが存在しないためエラー
			DEBUG_LOG.info("----- FUW06802_editDispMapSC6() データ未存在エラー -----");
			throw new JCCBusinessException(ERROR_CODE_0102);
		}

		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013006SC);
		ArrayList<HashMap<String, String>> pcrsList = parentMap.get(MAP_KEY_SC6CBSMSGLIST);
		String pcrsType = JFUStrConst.EMPTY;
		boolean keiyakuChuFlg = false;

		String svcKeiUcwkPcrsCd = null;
		String svcKeiUcwkPplanCd = null;
		boolean normalHd = false;
		boolean smartHd = false;
		boolean smartHdElse = false;

		// サービス契約一覧内訳の件数分Loop
		for (int i = 0; i < pcrsList.size(); i++)
		{
			HashMap<String, String> pcrsMap = pcrsList.get(i);
			String ucwkStatusFlg = pcrsMap.get(MAP_KEY_STATUS_FLG);
			String svcKeiUcwkNo = pcrsMap.get(MAP_KEY_SVC_KEI_UCWK_NO);
			String pcrsCd = pcrsMap.get(MAP_KEY_PCRS_CD);

			if ("1".equals(ucwkStatusFlg))
			{
				// 契約状態フラグ(1：契約中)の場合
				keiyakuChuFlg = true;

				svcKeiUcwkPcrsCd = pcrsMap.get(MAP_KEY_PCRS_CD);
				svcKeiUcwkPplanCd = pcrsMap.get(MAP_KEY_PPLAN_CD);
			}

			// サービス契約内訳レコードの設定
			pcrs_all_kei_map.put(svcKeiUcwkNo, pcrsMap);
			// 料金コースコードに紐づくコース種別を取得
			pcrsType = getPcrsType(pcrsCd);

			if (NORMAL_HD_LIST.contains(pcrsCd))
			{
				normalHd = true;
			}
			if (SMART_HD_LIST.contains(pcrsCd))
			{
				smartHd = true;
			} else {
				smartHdElse = true;
			}
		}

		if (!keiyakuChuFlg)
		{
			// サービス契約内訳に契約中レコードが存在しないためエラー
			DEBUG_LOG.info("----- FUW06802_editDispMapSC6() 契約中データ未存在エラー -----");
			throw new JCCBusinessException(ERROR_CODE_0102);
		}
		if (normalHd && smartHd)
		{
			// 現HDコースと新HDコースが混ざっているためエラー
			DEBUG_LOG.info("----- FUW06802_editDispMapSC6() 現HDコース＆新HDコース 同時契約エラー -----");
			throw new JCCBusinessException(ERROR_CODE_0102);
		}

		serviceInfoBean.sendMessageString(FUW06802SFConst.PCRS_TYPE, SET, pcrsType); // コース種別

		// サービス契約内訳変更後料金コースコード
		serviceInfoBean.sendMessageString(FUW06802SFConst.SVC_KEI_UCWK_CHG_SVKEI_PCRS_CD, SET, svcKeiUcwkPcrsCd);
		// サービス契約内訳変更後料金プランコード
		serviceInfoBean.sendMessageString(FUW06802SFConst.SVC_KEI_UCWK_CHG_PPLAN_CD, SET, svcKeiUcwkPplanCd);
	}

	/**
	 * 連絡先一覧の加工編集処理（FUSV013007SC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param commonInfoBean  共有フォームBean
	 * @param serviceInfoBean サービスフォームBean
	 * @param outputMap       サービス検索結果マップ
	 */
	private void editDispMapSC7(X31SDataBeanAccess commonInfoBean, X31SDataBeanAccess serviceInfoBean,
			final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013007SC, MAP_KEY_SC7CBSMSGLIST))
		{
			// サービス検索結果マップの値が存在しない場合、処理終了
			return;
		}

		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013007SC);

		// パラメータ異常ならば終了
		if (parentMap == null || !parentMap.containsKey(MAP_KEY_SC7CBSMSGLIST))
		{
			return;
		}
		ArrayList<HashMap<String, String>> childList = parentMap.get(MAP_KEY_SC7CBSMSGLIST);
		// サービス検索結果：連絡先一覧
		if (childList.size() == 0)
		{
			return;
		}

		// 契約者タイプコード
		X31SDataBeanAccess webCustBean = commonInfoBean.getDataBeanArray(JFUWebCommon.GEN_CUST_KEI_INFO).getDataBean(0);
		String keisyaTypeCd =webCustBean.sendMessageString(
				CommonInfoCFConst.KEISHA_TYPE_CD_22, X31CWebConst.DATABEAN_GET_VALUE);

		// 連絡先一覧のクリア
		serviceInfoBean.sendMessageString(FUW06802SFConst.RRKS_KTAI_TELNO, SET, JFUStrConst.EMPTY);
		serviceInfoBean.sendMessageString(FUW06802SFConst.KEISHA_TELNO, SET, JFUStrConst.EMPTY);

		// 連絡先一覧の件数分Loop
		for (int i = 0; i < childList.size(); i++)
		{
			// 連絡先一覧照会Mapを取得
			HashMap<String, String> childMap = childList.get(i);

			// 連絡先種別コード取得
			String rrksSbtCd = childMap.get(MAP_KEY_RRKS_SBT_CD);

			if (!JFUStrConst.CD00790_003.equals(childMap.get(MAP_KEY_RRK_WAY_CD)))
			{
				// 連絡方法コードが電話以外の場合はスキップ
				continue;
			}
			else if (JFUStrConst.CD00036_2.equals(keisyaTypeCd) && !JFUStrConst.CD00268_01.equals(childMap.get(MAP_KEY_RRKS_CD)))
			{
				// 法人の場合は、連絡先コードが"01"(契約者)以外の場合はスキップ
				continue;
			}

			if (JFUStrConst.CD00254_2.equals(rrksSbtCd))
			{
				// 携帯電話
				String telNo = getValue(childMap.get(MAP_KEY_TELNO));
				// サービスフォームBeanに設定
				// 携帯電話／ＰＨＳ番号（表示用）
				serviceInfoBean.sendMessageString(FUW06802SFConst.RRKS_KTAI_TELNO, SET, telNo);
				break;
			}
		}

		// ○その他の電話番号を取得
		for (int i = 0; i < childList.size(); i++)
		{
			// 連絡先一覧照会Mapを取得
			HashMap<String, String> childMap = childList.get(i);

			// 連絡先種別コード取得
			String rrksSbtCd = childMap.get(MAP_KEY_RRKS_SBT_CD);

			if (!JFUStrConst.CD00790_003.equals(childMap.get(MAP_KEY_RRK_WAY_CD)))
			{
				// 連絡方法コードが電話以外の場合はスキップ
				continue;
			}
			else if (JFUStrConst.CD00036_2.equals(keisyaTypeCd) && !JFUStrConst.CD00268_01.equals(childMap.get(MAP_KEY_RRKS_CD)))
			{
				// 法人の場合は、連絡先コードが"01"(契約者)以外の場合はスキップ
				continue;
			}

			if (JFUStrConst.CD00254_5.equals(rrksSbtCd))
			{
				// その他
				String telNo = getValue(childMap.get(MAP_KEY_TELNO));
				// サービスフォームBeanに設定
				serviceInfoBean.sendMessageString(FUW06802SFConst.KEISHA_TELNO, SET, telNo);
				break;
			}
		}
	}

	/**
	 * 一時支払金一意照会（出張費）の加工編集処理（FUSV013008SC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param serviceInfoBean サービスフォームBean
	 * @param outputMap       サービス検索結果マップ
	 */
	private void editDispMapSC8(X31SDataBeanAccess serviceInfoBean,
			final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013008SC, MAP_KEY_SC8CBSMSGLIST))
		{
			// サービス検索結果マップの値が存在しない場合、処理終了
			return;
		}
		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013008SC);
		HashMap<String, String> childMap = parentMap.get(MAP_KEY_SC8CBSMSGLIST).get(0);
		serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_11_LIST, SET, childMap.get(MAP_KEY_TMP_PAY_PRC_AMNT));
	}

	/**
	 * 一時支払金一意照会（交換手数料）の加工編集処理（FUSV013009SC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param serviceInfoBean サービスフォームBean
	 * @param outputMap       サービス検索結果マップ
	 */
	private void editDispMapSC9(X31SDataBeanAccess serviceInfoBean,
			final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013009SC, MAP_KEY_SC9CBSMSGLIST))
		{
			// サービス検索結果マップの値が存在しない場合、処理終了
			return;
		}
		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013009SC);
		HashMap<String, String> childMap = parentMap.get(MAP_KEY_SC9CBSMSGLIST).get(0);
		serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_12_LIST, SET, childMap.get(MAP_KEY_TMP_PAY_PRC_AMNT));
	}

	/**
	 * 一時支払金一意照会（追加手数料）の加工編集処理（FUSV013010SC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param serviceInfoBean サービスフォームBean
	 * @param outputMap       サービス検索結果マップ
	 */
	private void editDispMapSC10(X31SDataBeanAccess serviceInfoBean,
			final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013010SC, MAP_KEY_SC10CBSMSGLIST))
		{
			// サービス検索結果マップの値が存在しない場合、処理終了
			return;
		}
		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013010SC);
		HashMap<String, String> childMap = parentMap.get(MAP_KEY_SC10CBSMSGLIST).get(0);
		serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_13_LIST, SET, childMap.get(MAP_KEY_TMP_PAY_PRC_AMNT));
	}

	/**
	 * 一時支払金一意照会（BSPT工事費）の加工編集処理（FUSV013011SC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param serviceInfoBean サービスフォームBean
	 * @param outputMap       サービス検索結果マップ
	 */
	private void editDispMapSC11(X31SDataBeanAccess serviceInfoBean,
			final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013011SC, MAP_KEY_SC11CBSMSGLIST))
		{
			// サービス検索結果マップの値が存在しない場合、処理終了
			return;
		}
		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013011SC);
		HashMap<String, String> childMap = parentMap.get(MAP_KEY_SC11CBSMSGLIST).get(0);
		serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_14_LIST, SET, childMap.get(MAP_KEY_TMP_PAY_PRC_AMNT));
	}

	/**
	 * 一時支払金一意照会（ＳＴＢ交換契約事務手数料）の加工編集処理（FUSV013016SC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param serviceInfoBean サービスフォームBean
	 * @param outputMap       サービス検索結果マップ
	 */
	private void editDispMapSC16(X31SDataBeanAccess serviceInfoBean,
			final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013016SC, MAP_KEY_SC16CBSMSGLIST))
		{
			// サービス検索結果マップの値が存在しない場合、処理終了
			return;
		}
		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013016SC);
		HashMap<String, String> childMap = parentMap.get(MAP_KEY_SC16CBSMSGLIST).get(0);
		serviceInfoBean.sendMessageString(FUW06802SFConst.TMP_PAY_15_LIST, SET, childMap.get(MAP_KEY_TMP_PAY_PRC_AMNT));
	}

	/**
	 * マンション物件一意照会の加工編集処理（FUSV013012SC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param serviceInfoBean サービスフォームBean
	 * @param outputMap       サービス検索結果マップ
	 */
	private void editDispMapSC12(X31SDataBeanAccess serviceInfoBean,
			final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013012SC, MAP_KEY_SC12CBSMSGLIST))
		{
			// サービス検索結果マップの値が存在しない場合、処理終了
			return;
		}
		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013012SC);
		HashMap<String, String> childMap = parentMap.get(MAP_KEY_SC12CBSMSGLIST).get(0);
		String mansionCd = childMap.get(MAP_KEY_MANSION_BUKKEN_CD);
		serviceInfoBean.sendMessageString(FUW06802SFConst.MANSION_BUKKEN_CD, SET, mansionCd); // マンション物件コード

		serviceInfoBean.sendMessageString(FUW06802SFConst.AD_FORM_FLG, SET, AD_FORM_FLG_2);
		// マンション物件コードが002の場合下記を設定
		if (JFUStrConst.CD01228_002.equals(mansionCd))
		{
			serviceInfoBean.sendMessageString(FUW06802SFConst.AD_FORM_FLG, SET, AD_FORM_FLG_3);
		}
	}

	/**
	 * 宅内機器一意照会の加工編集処理（FUSV013001CC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param outputMap       サービス検索結果マップ
	 * @param stbid_map       ＳＴＢＩＤマップ
	 * @param bcas_map        Ｂ−ＣＡＳマップ
	 */
	private void editDispMapCC01(final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap,
			HashMap<String, String> stbid_map, HashMap<String, String> bcas_map)
	{
		if (!existsOutPutMap(outputMap, CC_TITLE_FUSV013001CC, MAP_KEY_CC01CBSMSGLIST))
		{
			// サービス検索結果マップの値が存在しない場合、処理終了
			return;
		}

		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(CC_TITLE_FUSV013001CC);
		ArrayList<HashMap<String, String>> childList = parentMap.get(MAP_KEY_CC01CBSMSGLIST);

		// ループ：宅内機器一意照会明細件数分
		for (int i = 0; i < childList.size(); i++)
		{
			HashMap<String, String> childMap = childList.get(i);
			stbid_map.put(childMap.get(MAP_KEY_KIKI_SEIZO_NO), childMap.get(MAP_KEY_STB_ID));
		}
	}

	/**
	 * BSパススルー工事費割引CP 適用状態取得処理
	 *
	 * <br>
	 * @param outputMap サービスの実行結果
	 * @return "1"：BSパススルー工事費割引CPが適用済（適用中、適用済）、その他：BSパススルー工事費割引CPが未適用
	 */
	@SuppressWarnings("unchecked")
	private String editDispMapCC02(final HashMap outputMap)
	{
		Map<String, String> cmpMap = JFUWebCommon.getTvBsptWribSvc(this, outputMap, CC_TITLE_FUSV013002CC);
		if (JFUWebCommon.OUT_PARAM_WRIB_STS_FLG_1.equals(cmpMap.get(JFUWebCommon.OUT_PARAM_WRIB_STS_FLG)))
		{
			return JFUWebCommon.OUT_PARAM_WRIB_STS_FLG_1;
		}
		return JFUStrConst.EMPTY;

	}

	/**
	 * 宅内機器型式一意照会の加工編集処理（FUSV013014C）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param serviceInfoBean サービスフォームBean
	 * @param outputMap       サービス検索結果マップ
	 */
	private void editDispMapSC14(X31SDataBeanAccess serviceInfoBean,
			final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap)
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013014SC, MAP_KEY_SC14CBSMSGLIST))
		{
			// サービス検索結果マップの値が存在しない場合、処理終了
			return;
		}
		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013014SC);
		HashMap<String, String> childMap = parentMap.get(MAP_KEY_SC14CBSMSGLIST).get(0);
		serviceInfoBean.sendMessageString(FUW06802SFConst.VONU_BSPT_KH, SET, childMap.get(MAP_KEY_VONU_BSPT_KH)); // ＶＯＮＵＢＳパススルー可否
	}

	/**
	 * 料金コース一覧照会の加工処理（FUSV013015SC）
	 * <br/>
	 * サービスIFの検索結果リストを画面表示用の階層構造リストに変換します。
	 * 
	 * @param serviceInfoBean サービス契約番号一覧サービスフォームBean
	 * @param outputMap       サービス検索結果マップ
	 * @param bcasMasterList B-CAS不要情報（業務パラメータ、マスタから取得したB-CAS不要機器の情報。データが存在しない場合は空）
	 * @param opeDate 運用日付
	 * @throws Exception 
	 */
	private void editDispMapSC15(X31SDataBeanAccess serviceInfoBean,
			final HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap, List<String> bcasMasterList, String opeDate)
			throws Exception
	{
		if (!existsOutPutMap(outputMap, SC_TITLE_FUSV013015SC, MAP_KEY_SC15CBSMSGLIST))
		{
			// サービス検索結果マップの値が存在しない場合、処理終了
			return;
		}

		HashMap<String, ArrayList<HashMap<String, String>>> parentMap = outputMap.get(SC_TITLE_FUSV013015SC);
		ArrayList<HashMap<String, String>> childList = parentMap.get(MAP_KEY_SC15CBSMSGLIST);

		HashMap<String, HashMap<String, String>> wkCourseMap = new HashMap<String, HashMap<String, String>>();
		ArrayList<HashMap<String, String>> kikiRyokinList = new ArrayList<HashMap<String, String>>();

		// 料金コース一覧照会（料金コース月額料金取得用）の件数分Loop
		for (int i = 0; i < childList.size(); i++)
		{
			HashMap<String, String> childMap = childList.get(i);
			String prcGrpCd = childMap.get(MAP_KEY_PRC_GRP_CD);
			String pcrsCd = childMap.get(MAP_KEY_PCRS_CD);
			String kktkSvcCd = childMap.get(MAP_KEY_KKTK_SVC_CD);

			if (JFUStrConst.CD00133_11.equals(prcGrpCd))
			{
				// 料金グループコードが「eo光テレビ(K-CAT)」 の場合
				for (int j = 0; j < PCRS_CNG_LIST.length; j++)
				{
					if (PCRS_CNG_LIST[j].equals(pcrsCd))
					{
						wkCourseMap.put(pcrsCd, childMap);
						break;
					}
				}
			}
			if (JFUStrConst.KK0771_KKTK_SVC_CD_C009.equals(kktkSvcCd))
			{
				// 機器提供サービスコードが「STB」の場合
				kikiRyokinList.add(childMap);
			}
		}

		String adFormFlg = serviceInfoBean.sendMessageString(FUW06802SFConst.AD_FORM_FLG, GET);

		// ループ：コースリスト対応配列
		for (int i = 0; i < PCRS_CNG_LIST.length; i++)
		{
			HashMap<String, String> courseMap = wkCourseMap.get(PCRS_CNG_LIST[i]);
			if (courseMap != null)
			{
				// 料金コース情報が取得できている場合
				X31SDataBeanAccess courseInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.RYOKIN + N_LAST, i);
				String pcrsCd = courseMap.get(MAP_KEY_PCRS_CD);

				if (AD_FORM_FLG_1.equals(adFormFlg) || JFUStrConst.CD00134_A37.equals(pcrsCd) || JFUStrConst.CD00134_A38.equals(pcrsCd)
						|| JFUStrConst.CD00134_A39.equals(pcrsCd))
				{
					// ホーム
					courseInfo.sendMessageString(FUW06802SFConst.PLAN_CD_03, SET, courseMap.get(MAP_KEY_PPLAN_CD));
					courseInfo.sendMessageString(FUW06802SFConst.PLAN_CD_ADD_03, SET, courseMap.get(MAP_KEY_PPLAN_CD_ADD));
					courseInfo.sendMessageString(FUW06802SFConst.PRC_03, SET, courseMap.get(MAP_KEY_PRICE));
					courseInfo.sendMessageString(FUW06802SFConst.PRC_ADD_03, SET, courseMap.get(MAP_KEY_PRICE_ADD));
				}
				else if (AD_FORM_FLG_2.equals(adFormFlg))
				{
					// マンション
					courseInfo.sendMessageString(FUW06802SFConst.PLAN_CD_03, SET, courseMap.get(MAP_KEY_PPLANM_CD));
					courseInfo.sendMessageString(FUW06802SFConst.PLAN_CD_ADD_03, SET, courseMap.get(MAP_KEY_PPLANM_CD_ADD));
					courseInfo.sendMessageString(FUW06802SFConst.PRC_03, SET, courseMap.get(MAP_KEY_PRICEM));
					courseInfo.sendMessageString(FUW06802SFConst.PRC_ADD_03, SET, courseMap.get(MAP_KEY_PRICEM_ADD));
				}
				else
				{
					// メゾン
					courseInfo.sendMessageString(FUW06802SFConst.PLAN_CD_03, SET, courseMap.get(MAP_KEY_PPLANMZ_CD));
					courseInfo.sendMessageString(FUW06802SFConst.PRC_03, SET, courseMap.get(MAP_KEY_PRICEMZ));
				}

				courseInfo.sendMessageString(FUW06802SFConst.CD_03, SET, pcrsCd);
				courseInfo.sendMessageString(FUW06802SFConst.NM_03, SET, courseMap.get(MAP_KEY_PCRS_NM));
				courseInfo.sendMessageString(FUW06802SFConst.PRC_GRP_CD_03, SET, courseMap.get(MAP_KEY_PRC_GRP_CD));
				courseInfo.sendMessageString(FUW06802SFConst.TV_COURSE_GRP_CD_03, SET, courseMap.get(MAP_KEY_TV_COURSE_GRP_CD));
				courseInfo.sendMessageString(FUW06802SFConst.PCRS_SBT_CD_03, SET, courseMap.get(MAP_KEY_PCRS_SBT_CD));
				courseInfo.sendMessageString(FUW06802SFConst.NM_ADD_03, SET, "追加" + courseMap.get(MAP_KEY_PCRS_NM));
				courseInfo.sendMessageString(FUW06802SFConst.PPLAN_KOTEI_TANI_NM_03, SET, " " + courseMap.get(MAP_KEY_PPLAN_KOTEI_TANI_NM));
			}
		}

		// 表示順序でソート
		for (int i = 0; i <= kikiRyokinList.size(); i++)
		{
			for (int j = i + 1; j < kikiRyokinList.size(); j++)
			{
				HashMap<String, String> childMap = kikiRyokinList.get(i);
				String disp = childMap.get(MAP_KEY_DSP_JUN);
				HashMap<String, String> childMap2 = kikiRyokinList.get(j);
				String disp2 = childMap2.get(MAP_KEY_DSP_JUN);
				if (disp.compareTo(disp2) > 0)
				{
					// dispがdisp2より大きい場合、入れ替え
					kikiRyokinList.remove(j);
					kikiRyokinList.add(j, childMap);
					kikiRyokinList.remove(i);
					kikiRyokinList.add(i, childMap2);
				}
			}
		}

		X31SDataBeanAccess kikiSaveInfo = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceInfoBean, FUW06802SFConst.KIKI_SAVE_LIST);
		kikiSaveInfo.sendMessageString(FUW06802SFConst.CD_LIST_02, ADD, JFUStrConst.EMPTY);
		kikiSaveInfo.sendMessageString(FUW06802SFConst.NM_LIST_02, ADD, KIKI_COMBO_NOCNG);
		kikiSaveInfo.sendMessageString(FUW06802SFConst.HDD_CD_LIST_02, ADD, JFUStrConst.EMPTY);
		kikiSaveInfo.sendMessageString(FUW06802SFConst.HDD_LIST_02, ADD, JFUStrConst.EMPTY);
		kikiSaveInfo.sendMessageString(FUW06802SFConst.PPLAN_LIST_02, ADD, JFUStrConst.EMPTY);
		kikiSaveInfo.sendMessageString(FUW06802SFConst.PRC_LIST_02, ADD, "0");
		kikiSaveInfo.sendMessageString(FUW06802SFConst.GLADE_LIST_02, ADD, MAX_GRADE);
		kikiSaveInfo.sendMessageString(FUW06802SFConst.DISP_LIST_02, ADD, "0");
		kikiSaveInfo.sendMessageString(FUW06802SFConst.TANI_NM_LIST_02, ADD, JFUStrConst.EMPTY);
		kikiSaveInfo.sendMessageString(FUW06802SFConst.BCAS_FUYO_STB_LIST_02, ADD, JFUStrConst.EMPTY);
		kikiSaveInfo.sendMessageString(FUW06802SFConst.TAKNKIKI_MODEL_CD_LIST_02, ADD, JFUStrConst.EMPTY);

		// STB名称の表示切替 +++++*
		boolean stbNameFlg = JFUWebCommon.getStbNameFlg(opeDate);
		// プロパティから取得した機器情報を元にMAPを取得（KEY:機器の料金コースコード、値：宅内機器型式コード）
		Map<String, String> mapTaknaiKikiCd = JFUWebCommon.getKikiPcrsMdlMap(opeDate);

		// ■■■■■料金コース一覧照会（機器の月額料金取得用）の件数分Loop■■■■■
		for (int i = 0; i < kikiRyokinList.size(); i++)
		{
			HashMap<String, String> kikiRyokinMap = kikiRyokinList.get(i);
			String pcrsCd = kikiRyokinMap.get(MAP_KEY_PCRS_CD);
			String price = kikiRyokinMap.get(MAP_KEY_PRICE);
			if (JFUStrConst.CD00134_C15.equals(pcrsCd))
			{
				// 料金コースコード「C15」の場合
				// カンマ編集のみ行うよう修正
				serviceInfoBean.sendMessageString(FUW06802SFConst.STB_PRC, SET, formatNumber(price));
			}
			kikiSaveInfo.sendMessageString(FUW06802SFConst.CD_LIST_02, ADD, pcrsCd);
			// ---------------------------//
			// ■プロパティから"追加、変更時に出荷予定となる宅内機器型式コード"をセット
			// STBの表示名称編集：機器の料金コース名（宅内機器型式コード）
			String kikiPcrsNm = kikiRyokinMap.get(MAP_KEY_PCRS_NM);
			String taknaiKikiCd = JFUWebCommon.nvl(mapTaknaiKikiCd.get(pcrsCd), JFUStrConst.EMPTY);
			kikiPcrsNm = JFUWebCommon.getDisplayStbName(stbNameFlg, kikiPcrsNm, taknaiKikiCd);
			// ---------------------------//
			kikiSaveInfo.sendMessageString(FUW06802SFConst.NM_LIST_02, ADD, kikiPcrsNm);
			kikiSaveInfo.sendMessageString(FUW06802SFConst.HDD_CD_LIST_02, ADD, kikiRyokinMap.get(MAP_KEY_HDD_CAPA_CD));
			kikiSaveInfo.sendMessageString(FUW06802SFConst.HDD_LIST_02, ADD, kikiRyokinMap.get(MAP_KEY_HDD_CAPA_CD_NM));
			kikiSaveInfo.sendMessageString(FUW06802SFConst.PPLAN_LIST_02, ADD, kikiRyokinMap.get(MAP_KEY_PPLAN_CD));
			kikiSaveInfo.sendMessageString(FUW06802SFConst.BCAS_FUYO_STB_LIST_02, ADD, getBcasFuyoCd(bcasMasterList,
					kikiRyokinMap.get(MAP_KEY_HDD_CAPA_CD)));
			kikiSaveInfo.sendMessageString(FUW06802SFConst.TAKNKIKI_MODEL_CD_LIST_02, ADD, taknaiKikiCd);
			// 料金表に表示する金額の文言を作成する
			if (JFUStrConst.S_ZERO.equals(price))
			{
				// 金額に"0"が設定されている場合は、無料の文言を表示する
				price = JFUStrConst.FREE_LABEL;
			}
			else
			{
				// 金額が"0"でない場合は、単位を付けて金額を作成する
				StringBuffer priceStringBuffer = new StringBuffer(price);
				priceStringBuffer.append(JFUStrConst.HALF_SPACE).append(kikiRyokinMap.get(MAP_KEY_PPLAN_KOTEI_TANI_NM));
				price = priceStringBuffer.toString();
			}
			kikiSaveInfo.sendMessageString(FUW06802SFConst.PRC_LIST_02, ADD, price);
			kikiSaveInfo.sendMessageString(FUW06802SFConst.GLADE_LIST_02, ADD, kikiRyokinMap.get(MAP_KEY_PCRS_GRADE_JUN));
			kikiSaveInfo.sendMessageString(FUW06802SFConst.DISP_LIST_02, ADD, kikiRyokinMap.get(MAP_KEY_DSP_JUN));
			kikiSaveInfo.sendMessageString(FUW06802SFConst.TANI_NM_LIST_02, ADD, " " + kikiRyokinMap.get(MAP_KEY_PPLAN_KOTEI_TANI_NM));
		}

		serviceInfoBean.sendMessageString(FUW06802SFConst.KIKI_KENSU_CNT, SET, Integer.toString(kikiRyokinList.size() + 1));
	}

	/**
	 * テレビ関連の申し込み可否チェック処理
	 * テレビ関連の申し込み可否チェック処理を行ないます。
	 * <br>
	 * @param outputMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void checkTvMskmAvailable(HashMap outputMap) throws Exception
	{
		DEBUG_LOG.info("----- FUW06802 Start checkTvMskmAvailable -----");

		// テレビ関連の申し込み可否チェック処理(申し込めない状態の場合、部品内でthrows)
		JFUWebCommon.checkTvMskmAvailable(this, JFUScreenConst.SCREEN_ID_FUW06802, (HashMap)outputMap.get(SC_TITLE_FUSV013001SC), null);

		DEBUG_LOG.info("----- FUW06802 End checkTvMskmAvailable -----");
	}

	/**
	 * テレビ関連の申し込み可否チェック処理
	 * <br/>
	 * テレビ関連の申し込み可否チェック処理を行ないます。
	 * 
	 * @param commonInfoBean	共有フォームBean
	 * @throws Exception		すべての例外
	 */
	private void checkPrcCd(X31SDataBeanAccess commonInfoBean) throws Exception
	{
		DEBUG_LOG.info("----- FUW06802 Start checkPrcCd -----");

		// 共有フォームBean.サービス契約情報の料金コースコードが、"A37"(地デジ・ＢＳコース)の場合
		if (JFUStrConst.CD00134_A37.equals(JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO + JFUWebCommon.SEP_0
				+ CommonInfoCFConst.PCRS_CD_23)))
		{
			// 業務共通例外クラス："0102"（契約状態エラー）
			DEBUG_LOG.info("■■■FUW06802 サービス契約情報料金コースコードエラー(料金コースコード："
					+ JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO + JFUWebCommon.SEP_0
							+ CommonInfoCFConst.PCRS_CD_23) + ")");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
		}

		DEBUG_LOG.info("----- FUW06802 End checkPrcCd -----");
	}

	/**
	 * 機器提供サービス契約ステータスチェック
	 * 
	 * <br>
	 * @param kktkSvcKeiStat
	 * @return
	 */
	private boolean enableKktkSvcKeiStat(String kktkSvcKeiStat)
	{
		DEBUG_LOG.info("----- FUW06802 Start enableKktkSvcKeiStat -----");

		// 画面で参照可能な機器提供サービス契約ステータスで無ければ、falseを返却
		if (JFUStrConst.CD00056_910.equals(kktkSvcKeiStat) || JFUStrConst.CD00056_920.equals(kktkSvcKeiStat))
		{
			return false;
		}

		DEBUG_LOG.info("----- FUW06802 End enableKktkSvcKeiStat -----");

		return true;
	}

	/**
	 * 機器機種変更で予約中の場合のチェック(サービス契約単位)
	 * <br>
	 * @param outputMap	
	 */
	private void chkKikiMdlChgRsvcv(HashMap outputMap)
	{
		HashMap<String, ArrayList<HashMap>> rsvMap = (HashMap<String, ArrayList<HashMap>>)outputMap.get(CC_TITLE_FUSV013004CC);
		ArrayList<HashMap> rsvList = (ArrayList<HashMap>)rsvMap.get(OUT_IDO_RSV_SVC_KEI_LIST);
		for (HashMap rsvDtlMap : rsvList)
		{
			// 予約データが存在する場合は、 契約変更手続きエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0109);
		}
	}

	/**
	 * value値を取得します。
	 * <br/>
	 * @param value value値
	 * @return 指定されたvalue値がnullの場合は空文字を返却
	 */
	private String getValue(final String value)
	{
		if (value == null)
		{
			return JFUStrConst.EMPTY;
		}

		return value;
	}

	/**
	 * STB用のメール文言を取得する
	 * <br>
	 * @param serviceInfoBean データBean
	 * @return メール文言（STB情報）
	 */
// ANK-3057-00-00 MOD START
//	private String getMailTextStb()
	private String getMailTextStb(X31SDataBeanAccess serviceInfoBean)
// ANK-3057-00-00 MOD END
	{
		// 申込完了メールの可変文字
		StringBuffer text = new StringBuffer();
		// サービスフォームBeanよりｅｏ光テレビチューナー変更追加リスト取得
		X31SDataBeanAccessArray keiList = getServiceFormBean().getDataBeanArray(FUW06802SFConst.CFM_LIST);
// ANK-3057-00-00 ADD START
		// ＢＳパススルーフラグ
		boolean bsptFlg = serviceInfoBean.sendMessageBoolean(FUW06802SFConst.CHKBOX_BSPASS, GET);
		// 交換方法
		String chgWay = serviceInfoBean.sendMessageString(FUW06802SFConst.CHG_WAY, GET);
// ANK-3057-00-00 ADD END

		for (int cnt = 0; cnt < keiList.getCount(); cnt++)
		{
			X31SDataBeanAccess keiyakuDataBean = keiList.getDataBean(cnt);
			// 変更追加リストより選択機器コース名取得
			String kikiPrcNm = keiyakuDataBean.sendMessageString(FUW06802SFConst.KIKI_PCRS_01, X31CWebConst.DATABEAN_GET_VALUE);
			// 変更追加リストよりSTB変更取得
			String stbChg = keiyakuDataBean.sendMessageString(FUW06802SFConst.CHG_STB_01, X31CWebConst.DATABEAN_GET_VALUE);
			// STB変更がある場合に可変文字を設定
			if (CHG_STB_1.equals(stbChg))
			{
// ANK-3057-00-00 MOD START
//				text.append(JFUStrConst.SPACE + kikiPrcNm + JFUStrConst.RETURN_CODE);
				text.append(JFUStrConst.SPACE + JFUStrConst.KIGOU_NAKAGURO + kikiPrcNm + JFUStrConst.RETURN_CODE);
// ANK-3057-00-00 MOD END
			}
		}

		// 可変文字にSTBの接頭辞を設定
		if (text.length() > 0)
		{
// ANK-3057-00-00 MOD START
//			return ML_STB_PREFIX + text.toString() + JFUStrConst.RETURN_CODE;
			if (bsptFlg)
			{
				// BSパススルー申込有の場合
				return ML_STB_PREFIX_TK_CHG_OTHER + text.toString();
			}
			else if (CHG_WAY_CD_TAKUHAI.equals(chgWay))
			{
				// 宅配交換の場合（STB変更のみ）
				return ML_STB_PREFIX_TK_CHG + text.toString();
			}
			else
			{
				// 上記以外の場合
				return ML_STB_PREFIX_TK_CHG_OTHER + text.toString();
			}
// ANK-3057-00-00 MOD END
		}

		return JFUStrConst.EMPTY;
	}

	/**
	 * 有効な機器リストを取得します。
	 * 
	 * <br>
	 * @param serviceInfoBean サービスフォームBean
	 * @param kikiList 機器リスト
	 * @param opeDate 運用日付
	 * @return 有効機器リスト
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList getYkKikiList(X31SDataBeanAccess serviceInfoBean, ArrayList kikiList, String opeDate) throws Exception
	{

		ArrayList resultKikiList = new ArrayList();

		// ■定義から機器情報取得
		Map<String, String> stbKikiMap = JFUWebCommon.getDispItemsAsMap(PATH_STB_KIKI, QUERY_ATTR_NAME);
		// キー数
		int itemNum = STB_KIKI_ITEM_LIST.length;

		if (stbKikiMap == null || stbKikiMap.size() == 0 || stbKikiMap.size() % itemNum != 0)
		{
			DEBUG_LOG.info("※申込可能機器一覧取得エラー(FUDispDefinition.xml)※");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// コース種別
		String pcrsType = serviceInfoBean.sendMessageString(FUW06802SFConst.PCRS_TYPE, GET);
		String getPcrsCd = JFUStrConst.EMPTY;

		if (PCRS_TYPE00.equals(pcrsType))
		{
			// SDコース
			getPcrsCd = CD00134_A38;
		}
		else if (PCRS_TYPE01.equals(pcrsType))
		{
			// HDコース
			getPcrsCd = CD00134_A39;
		}
		else if (PCRS_TYPE02.equals(pcrsType))
		{
			// 新HDコース(HDコースの為、スマートベーシックをデフォルトで設定)
			getPcrsCd = CD00134_A86;
		}

		// ループ数
		int loopNum = stbKikiMap.size() / itemNum;

		for (int h = 0; h < kikiList.size(); h++)
		{
			HashMap childMap = (HashMap)kikiList.get(h);
			String tknKikiMdlCd = (String)childMap.get(MAP_KEY_TAKNKIKI_MODEL_CD);
			String capaCd = (String)childMap.get(MAP_KEY_HDD_CAPA_CD);
			String bcas_fuyo_stb_flg = (String)childMap.get(MAP_KEY_BCAS_FUYO_STB_FLG);

			for (int i = 0; i < loopNum; i++)
			{
				HashMap tgKikiMap = new HashMap();

				String keyNum = String.valueOf(i + 1);
				String kikiCd = stbKikiMap.get(STB_KIKI_ITEM_LIST[0] + keyNum);
				String staYmd = stbKikiMap.get(STB_KIKI_ITEM_LIST[1] + keyNum);
				String endYmd = stbKikiMap.get(STB_KIKI_ITEM_LIST[2] + keyNum);
				String tgPcrsCd = stbKikiMap.get(STB_KIKI_ITEM_LIST[3] + keyNum);
				String dspJun = stbKikiMap.get(STB_KIKI_ITEM_LIST[4] + keyNum);
				String kikiPcrsCd = stbKikiMap.get(STB_KIKI_ITEM_LIST[5] + keyNum);

				if (!kikiCd.equals(tknKikiMdlCd))
				{
					continue;
				}

				if (!tgPcrsCd.contains(getPcrsCd))
				{
					// 対象料金コースでない場合、対象外
					continue;
				}
				if (!(Integer.parseInt(staYmd) <= Integer.parseInt(opeDate) && Integer.parseInt(endYmd) >= Integer.parseInt(opeDate)))
				{
					// 有効期間でない場合、対象外
					continue;
				}

				// 有効機器情報を設定
				tgKikiMap.put(MAP_KEY_DSP_JUN, dspJun);
				tgKikiMap.put(MAP_KEY_HDD_CAPA_CD, capaCd);
				tgKikiMap.put(MAP_KEY_TAKNKIKI_MODEL_CD, kikiCd);
				tgKikiMap.put(MAP_KEY_BCAS_FUYO_STB_FLG, bcas_fuyo_stb_flg);
				tgKikiMap.put(MAP_KEY_KIKI_PCRS_CD, kikiPcrsCd);	//機器の料金コースコード

				// リストに追加
				resultKikiList.add(tgKikiMap);
			}
		}

		return resultKikiList;
	}

	/**  2016/09/09 ANK-2985-00-00 add start */

	/**
	 * 機器料金コードが持つ契約内容通知書用フラグを取得します。
	 * 
	 * <br>
	 * @param serviceInfoBean サービスフォームBean
	 * @return 契約内容通知書マッピング可否
	 * @throws Exception 
	 */
	private boolean getKikipcrsKnytcsflg(X31SDataBeanAccess serviceInfoBean) throws Exception
	{
		// ■定義から機器情報取得
		Map<String, String> stbKikiMap = null;

		stbKikiMap = JFUWebCommon.getDispItemsAsMap(PATH_STB_KIKI, QUERY_ATTR_NAME);

		// キー数
		int itemNum = STB_KIKI_ITEM_LIST.length;

		if (stbKikiMap == null || stbKikiMap.size() == 0 || stbKikiMap.size() % itemNum != 0)
		{
			DEBUG_LOG.info("※契約内容通知書用フラグ取得エラー(FUDispDefinition.xml)※");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// ＳＴＢ申込情報登録用リスト
		X31SDataBeanAccessArray stbMskmInfoTrkList = serviceInfoBean.getDataBeanArray(FUW06802SFConst.CCLIST_STB_MSKM_LIST);

		// ループ数
		int loopNum = stbKikiMap.size() / itemNum;

		// ＳＴＢ申込情報登録用リスト分処理
		for (int j = 0; j < stbMskmInfoTrkList.getCount(); j++)
		{

			X31SDataBeanAccess stbMskmInfo = stbMskmInfoTrkList.getDataBean(j);

			String chgStb = (String)stbMskmInfo.sendMessageString(FUW06802SFConst.CHG_STB_05, GET);

			// ＳＴＢ申込情報登録用リスト.ＳＴＢ変更="1"：変更有の場合
			if (STB_CNG_FLG.equals(chgStb))
			{
				// 変更後機器料金コースコード取得
				String trkKikiPcrsCd = (String)stbMskmInfo.sendMessageString(FUW06802SFConst.KIKI_PCRS_CD_05, GET);

				for (int i = 0; i < loopNum; i++)
				{
					String keyNum = String.valueOf(i + 1);
					String kikiPcrsCd = stbKikiMap.get(STB_KIKI_ITEM_LIST[5] + keyNum);
					String knytcsFlg = stbKikiMap.get(STB_KIKI_ITEM_LIST[6] + keyNum);

					if (kikiPcrsCd.equals(trkKikiPcrsCd))
					{
						if (KKPCRS_KNYCTS_LIST_FLG_KA.equals(knytcsFlg))
						{
							return true;
						}
					}
				}
			}
		}

		return false;
	}

	/**  2016/09/09 ANK-2985-00-00 add end */

	/**
	 * 既契約のB-CAS不要STBの件数を取得。
	 * 
	 * <br>
	 * @param stb_no_list 機器提供サービス契約番号格納リスト
	 * @param stb_all_kei_map 機器提供サービス契約中レコード(STB)
	 * @return HashMap B-CAS不要STB件数、旧４ＫＳＴＢ有無フラグ
	 * @throws Exception
	 */
	private HashMap<String, String> get4KBcasFuyoCount(X31SDataBeanAccess serviceInfoBean, TreeSet<String> stb_no_list,
			HashMap<String, HashMap<String, String>> stb_all_kei_map) throws Exception
	{

		HashMap<String, String> resutMap = new HashMap<String, String>();

		int bcasFuyoCnt = 0;
		int iOld4KStbCnt = 0;
		String old4Kstb = FLG_OFF;
		List<String> listOld4K = Arrays.asList(JFUWebCommon.getDispText("FUW06802", "NOTES_4K_STB_HANTEI").split(","));
		for (String stb_no : stb_no_list)
		{
			// 機器提供サービスレコード
			HashMap<String, String> stbAllKeiMap = stb_all_kei_map.get(stb_no);
			String flg = (String)stbAllKeiMap.get(MAP_KEY_BCAS_FUYO_STB_FLG);
			if (BCAS_FUYO_STB.equals(flg))
			{
				bcasFuyoCnt++;
			}
			if (listOld4K.contains(stbAllKeiMap.get("taknkiki_model_cd")))
			{
				// 旧4KのSTB件数
				iOld4KStbCnt = iOld4KStbCnt + 1;
			}

		}
		if (iOld4KStbCnt > 0)
		{
			old4Kstb = FLG_ON;
		}
		resutMap.put("bcasFuyoCnt", String.valueOf(bcasFuyoCnt));
		resutMap.put("old4Kstb", old4Kstb);
		return resutMap;
	}

	/**
	 * ＶＯＮＵ4Ｋ−ＳＴＢ登録可否
	 * 
	 * <br>
	 * @param serviceInfoBean サービスフォームBean
	 * @return "1"：4KSTB登録可能、"0"：4KSTB登録不可
	 */
	private String getVOnu4KStbChk(X31SDataBeanAccess serviceInfoBean)
	{
		String ad_form_flg = serviceInfoBean.sendMessageString(FUW06802SFConst.AD_FORM_FLG, GET);
		String key_tk_hoshiki_kei_no = serviceInfoBean.sendMessageString(FUW06802SFConst.TK_HOSHIKI_KEI_NO, GET);

		String key_taknkiki_model_cd_vonu = serviceInfoBean.sendMessageString(FUW06802SFConst.TAKNKIKI_MODEL_CD_LIST_02, GET);
		if (AD_FORM_FLG_3.equals(ad_form_flg))
		{
			key_tk_hoshiki_kei_no = JFUStrConst.EMPTY;
		}
		else if (AD_FORM_FLG_2.equals(ad_form_flg))
		{
			key_taknkiki_model_cd_vonu = JFUStrConst.EMPTY;
		}
		String vOnucheck = JFUWebCommon.vOnu4KStbChk(this, key_tk_hoshiki_kei_no, key_taknkiki_model_cd_vonu, false);
		return vOnucheck;
	}

	/**
	 * ＢＣＡＳ不要ＳＴＢフラグを取得
	 * 
	 * <br>
	 * @param bcasMasterList B-CAS不要情報（業務パラメータ、マスタから取得したB-CAS不要機器の情報。データが存在しない場合は空）
	 * @param hdd_capa_cd ＨＤＤ容量コード
	 * @return ＢＣＡＳ不要ＳＴＢフラグ
	 */
	private String getBcasFuyoCd(List<String> bcasMasterList, String hdd_capa_cd)
	{
		String bcasfuyo = BCAS_NEED_STB;
		if (bcasMasterList.contains(hdd_capa_cd))
		{
			bcasfuyo = BCAS_FUYO_STB;
		}
		return bcasfuyo;
	}

	/**
	 * BSパススルー 割引サービスコード取得
	 * 
	 * <br>
	 * @param serviceInfoBean サービスフォームBean
	 * @return BSパススルー 割引サービスコード
	 * @throws Exception 
	 */
	private String getBsptWribSvcCd(X31SDataBeanAccess serviceInfoBean) throws Exception
	{
		String bsptWribSvcCd = JFUStrConst.EMPTY;
		if (isBsptMuryo(serviceInfoBean))
		{
			// 新HDの場合は無料
			bsptWribSvcCd = JFUWebCommon.getBsptWribSvcCd();
		}
		// それ以外は有料 又は BSパススルー申込不可
		// （旧HDは有料。SDはBSパススルー不可。）
		return bsptWribSvcCd;

	}

	/**
	 * BSパススルー 無料判定</br>
	 * ※他条件も合わせて判定する場合あり
	 *   前提条件：ホーム、メゾン、BSパススルー申込可能であること
	 * 
	 * <br>
	 * @param serviceInfoBean サービスフォームBean
	 * @return true:無料、false:有料 又は BSパススルー申込不可
	 */
	private boolean isBsptMuryo(X31SDataBeanAccess serviceInfoBean)
	{
		String pcrsType = serviceInfoBean.sendMessageString(FUW06802SFConst.PCRS_TYPE, GET);
		if (PCRS_TYPE02.equals(pcrsType))
		{
			return true;
		}
		return false;
	}

	/**
	 * BSパススルー工事費CP妥当性チェック
	 * @param outputMap アウトマップ
	 * @param serviceInfoBean サービスフォームBean
	 * @param bl ビューロジックのインスタンス
	 * @return 結果マップ
	 */
	@SuppressWarnings("unchecked")
	private void checkBsptWrib(HashMap outputMap, X31SDataBeanAccess serviceInfoBean, X31BWebBusinessLogic bl)
	{
		Map<String, String> cmpMap = JFUWebCommon.getTvBsptWribSvc(bl, outputMap, CC_TITLE_FUSV013101CC);
		if (JFUWebCommon.OUT_PARAM_WRIB_STS_FLG_ERR.equals(cmpMap.get(JFUWebCommon.OUT_PARAM_WRIB_STS_FLG)))
		{
			String sysId = serviceInfoBean.sendMessageString(FUW06802SFConst.SYSID , GET);
			String svcKeiNo = serviceInfoBean.sendMessageString(FUW06802SFConst.SVC_KEI_NO , GET);
			String wribSvcCd = cmpMap.get(JFUWebCommon.OUT_PARAM_WRIB_SVC_CD);
			String message = "■■■ FUW06802_checkBsptWrib 割引サービスマスタの受付開始年月日時分、受付終了年月日時分が範囲外になっています。（処理を続行します）  ■■■" 
				+ "(SYSID=" + sysId + "、"
				+ "サービス契約番号=" + svcKeiNo + "、"
				+ "割引サービスコード=" + wribSvcCd + ")";
			JSYwebLog.println(JSYwebLog.EXECUTION, getClass(), message, "CS0003I", null, null);
		}
	}

	/**
	 * 運用日付(OPEDATE)の設定です。
	 *
	 * 共通フォームBean.フロント共有情報.フロント運用日付に運用日付(OPEDATE)を設定。
	 *
	 * @param commonInfoBean 共通フォームBean
	 * @param opeDate 運用日付(OPEDATE)
	 */
	private void setFuOpedate(X31SDataBeanAccess commonInfoBean, String opeDate)
	{
		//=====================================================================
		// 運用日付の設定
		//=====================================================================
		// 共通フォームBean.フロント共有情報
		X31SDataBeanAccess frontInfo = commonInfoBean.getDataBeanArray(CommonInfoCFConst.FRONT_COMMON_INFO).getDataBean(0);
		// フロント共有情報.フロント運用日付を設定します。
		frontInfo.sendMessageString(CommonInfoCFConst.FU_OPEDATE_05, X31CWebConst.DATABEAN_SET_VALUE, opeDate);

	}
}