/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：契約管理システム
*   モジュール名    ：Eメール更新
*   ソースファイル名：KKA17001SFLogic.java
*   作成者          ：FJ
*   日付            ：2015年10月27日
*＜機能概要＞
*   Eメール情報更新更新部品です。
*   母体ソースコード：KKW02501SFLogic.java
*＜修正履歴＞
*	バージョン	修正日			修正者		修正内容
*	v1.00		2011/11/18		FJ）小笹	新規作成
*	v2.00		2012/03/23		FJ)近藤		【ST2-2012-0000410】希望メールアカウント２、３を取得するように修正
*	v2.01		2012/04/10		FJ)藤原		【ST2-2012-0000653】希望メールアカウントを表示している場合、エイジング対象を作成しないよう修正
*	v2.02		2012/04/27		FJ)砂川		【ST2-2012-0000734】サービス開始前から情報変更を可能にするように修正
*	v3.00		2012/04/21		FJ) 日高	指示書CC呼び出し対応
*	v3.01		2012/04/26		FJ) 高田	日付項目の初期表示対応
*	v3.02		2012/04/30		FJ) 森本	異動理由メモ対応
*	v3.03		2012/06/01		FJ) 近藤	【IT1-2012-0000608】AxM連携処理追加対応
*	v3.04		2012/06/25		FJ) 砂川	【IT2-2012-0001034】オプションキャンセルの返却メッセージ対応
*	v3.05		2012/08/07		FJ) 砂川	【IT1-2012-0000930】AxM連携サービスの分割対応
*	v4.00		2012/06/27		FJ) 近藤	【ANK-0364】ウィルスチェック非課金登録対応
*	v4.01		2012/07/12		FJ) 近藤	【ANK-0571-00-00】オプションの表示用サービス開始日変更対応
*	v4.02		2012/10/18		FJ) 砂川	【IT1-2012-0001566】サービス開始後料金計算日のNULLチェック漏れ対応
*	v4.03		2012/10/22		FJ) 砂川	【IT1-2012-0001547】解約モードで利用終了日に運用日を初期値として設定する対応
*	v4.04		2012/11/02		FJ) 近藤	【ANK-1255-00-00】オプション解約に伴う課金制御
*   v4.05		2012/11/05      FJ) 清崎    【ANK-1223-00-00】進捗補足事項編集対応
*   v4.06       2012/11/22      FJ) 清崎    【TAI-2012-0000091】暫定ロジック修正対応
*   v4.07		2013/01/18		FJ) 泉		【TAI-2012-0000101】画面とサーバーのチェック不整合対応
*   v4.08       2013/01/24      FJ) 清崎    【IT1-2013-0000167】キャンセルSOD発行対応
*   v4.09       2013/02/22      FJ) 清崎    【IT1-2013-0000299】申込画面入力支援ワーク情報更新呼出対応
*   v5.00		2013/01/14		FJ) 近藤	【ANK-1173-00-00】課金有無表示判定条件修正
*   v5.01		2013/05/16		FJ) 砂川	【ST3-2013-0000919】メールエイリアスのエイジング対象値にドメインを付与する対応
*   v5.02		2013/08/13		FJ) 砂川	【IT1-2013-0001584】メールアドレス変更時にメールエイリアスを解約・キャンセルする対応
*	v6.00		2013/10/24		FJ)	西面	【IT1-2013-0001655】メールアドレス変更時、引き継ぐを選択した場合、メールエイリアス解約確認メッセージ（EKBD360--Q)を非表示にする対応
*   v6.01		2013/10/25		FJ)	西面	【IT1-2013-0001664】メールアドレス変更時、引き継がないを選択した場合、従来のメールアドレスを引き継がれる処理の対応
*   v6.02		2013/10/30	    FJ) 西面	【IT1-2013-0001648】メールBOX容量計算方法変更対応
*   v6.03		2013/11/22	    FJ) 福岡	【IT2-2013-0000802】回復異動時における画面出力対応
*	v23.00.00	2015/10/27	    FJ) 林		【ANK-2694-00-00】 ワンストップ案件(ＳＴＥＰ２)
*	v23.00.01	2015/12/25	    FJ) 抱		【IT1-2015-0000159】対応
*	v23.00.02	2015/12/28	    FJ) 抱		【ST-2015-0000069】対応
*	v23.00.03	2016/01/19		FJ) 抱		【ST-2016-0000002】対応
*	v23.01.00	2016/05/17		FJ)舘山		【ANK-2761-00-00】メール容量減少登録の制限追加
*	v26.00.00   2016/06/03	    FJ) 笠川	【ANK-2687-00-00】プレミアムサポート施策
*	v26.00.01	2016/07/28		FJ）柳		【IT1-2016-0000100】異動区分選択切替マッピング漏れ対応
*   v32.0.0		2017/06/22		FJ) 三原	【ANK-3149-20-00】新セキュリティパック導入(メールウィルスチェックの自動登録)
*   v52.00.00	2021/02/10		GDC)ジョバニー	【ANK-3946-01-00】_eフロント向け追加申込API対応(メールBOX容量変更対応)
**********************************************************************/
package eo.web.webview.KKA17001SF;

import static eo.web.webview.common.JKKOneStopApiCommonUtil.checkRegulationForUpdateApi;
import static eo.web.webview.common.JKKOneStopApiCommonUtil.getReceiveXml;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.Map.Entry;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.model.common.check.DatetimeCheck;
import com.fujitsu.futurity.model.common.check.HalfCharCheck;
import com.fujitsu.futurity.model.common.check.LengthCheck;
import com.fujitsu.futurity.model.common.check.MixCharCheck;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JKKStringUtil;
import eo.common.util.JPCDateChecker;
import eo.common.util.JPCDateUtil;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JKKOneStopApiCommonUtil;
import eo.web.webview.common.OneStopDataBeanAccess;
import eo.web.webview.commonOneStop.JCCMessageCache;
import eo.web.webview.commonOneStop.JCCWebCommon;
import eo.web.webview.commonOneStop.JKKCommonConst;
import eo.web.webview.commonOneStop.JKKScreenConst;
import eo.web.webview.commonOneStop.JKKWebCommon;
import eo.web.webview.commonOneStop.KKW02301SFConst;
import eo.web.webview.mapping.KKSV0043_KKSV0043OPDBMapper;
import eo.web.webview.mapping.KKSV0061_KKSV0061OPDBMapper;
import eo.web.webview.mapping.KKSV0062_KKSV0062OPDBMapper;
import eo.web.webview.mapping.KKSV0427_KKSV0427OPDBMapper;
import eo.web.webview.mapping.KKSV0428_KKSV0428OPDBMapper;
import eo.web.webview.mapping.KKSV0429_KKSV0429OPDBMapper;
import eo.web.webview.mapping.KKSV0430_KKSV0430OPDBMapper;
import eo.web.webview.mapping.KKSV0431_KKSV0431OPDBMapper;
import eo.web.webview.mapping.KKSV0463_KKSV0463OPDBMapper;
import eo.web.webview.mapping.KKSV0551_KKSV0551OPDBMapper;
import eo.web.webview.mapping.KKSV0820_KKSV0820OPDBMapper;


/**
 * Eメール情報の変更・解約・回復・予約取消を行います。<p>
 * オプションサービス契約一覧照会画面より遷移します。<p>
 * <BR>
 * @author FJ
 *
 */
@SuppressWarnings("serial")
public class KKA17001SFLogic extends JCCWebBusinessLogic
{
	/* プログラムで使用する固定コード値 */
	
	/**
	 * メッセージエリア
	 */
	private static final  String[] INFO_MSGSTRING = {
		"Eメール情報の変更",
		"Eメール情報の解約",
		"Eメール情報の回復",
		"Eメール情報の予約取消"
	};
	
	/**
	 * 有無フラグコード；有
	 */
	private static final  String CD00002_ON =  "1";
	
	/**
	 * 有無フラグコード：無
	 */
	private static final  String CD00002_OFF =  "0";

	/**
	 * オプションサービス契約ステータスリスト
	 */
//	private static final String[] CAPA_LIST = {"20",
//												  "40",
//												  "60",
//												  "80",
//												  "100",
//												  "120",
//												  "140",
//												  "160",
//												  "180",
//												  "200",
//												  "700",
//												  "1200",
//												  "1700",
//												  "2700",
//												  "3200",};
//
//	private static final String[] CAPA_CD_LIST = {"01",
//													"02",
//													"03",
//													"04",
//													"05",
//													"06",
//													"07",
//													"08",
//													"09",
//													"10",
//													"11",
//													"12",
//													"13",
//													"14",
//													"15",};
	
	/** サブオプションサービスコード（メールエイリアス用）*/
	public static final String SBOP_SVC_CD_ALIAS = "D01";
	/** サブオプションサービスコード（メールBOX容量用）*/
	public static final String SBOP_SVC_CD_MAIL_CAPA = "D02";
	/** サブオプションサービスコード（ウイルスチェック用）*/
	public static final String SBOP_SVC_CD_VCHK = "D03";
	/** 変更状態：変更なし */
	private static final String CHG_TYPE_NOCHG = "0";
	/** 変更状態：登録ありまたは変更有変更 */
	private static final String CHG_TYPE1 = "1";
	/** 変更状態：継続変更（すでに存在する）または変更なし変更 */
	private static final String CHG_TYPE2 = "2";
	/** エイジング種別コード：メールアドレス）*/
	public static final String AGING_SBT_CD_MLAD = "009";
	/** エイジング種別コード：メールエイリアス */
	public static final String AGING_SBT_CD_ALIAS = "008";
	/** エイジング種別コード：POPID*/
	public static final String AGING_SBT_CD_POPID = "007";
	/** 希望メールアカウント表示フラグ「未表示」 */
	public static final String KIBO_ML_ACCOUNT_DISP_FLG_MI = "0";
	/** 希望メールアカウント表示フラグ「表示」 */
	public static final String KIBO_ML_ACCOUNT_DISP_FLG_DISP = "1";
	// 2012/06/27 v4.00.00 【ANK-0364】ウィルスチェック非課金登録対応 ADD START
	/** 課金有無「1.課金」 */
	public static final String CHRG_U = "0";
	/** 課金有無「2.非課金」 */
	public static final String CHRG_M = "1";
	// 2012/06/27 v4.00.00 【ANK-0364】ウィルスチェック非課金登録対応 ADD END
	// 2012/11/02 v4.04 【ANK-1255-00-00】オプション解約に伴う課金制御 ADD STA
	/** 解約種別フラグ（3:サブオプションサービス契約） */
	public static final String OP_SBT = "3";
	/** 解約時課金フラグ「0:非課金」 */
	public static final String CHRG_FLG_M = "0";
	// 2012/11/02 v4.04 【ANK-1255-00-00】オプション解約に伴う課金制御 ADD END
	
	// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
	private static final String EMAIL_INFO = "Ｅメール情報";
	private static final String CHGE = "変更";
	private static final String DSL = "解約";
	private static final String KAIHK = "回復";
	private static final String RSV_CLK = "予約取消";
	// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END
	
	// TAI-2012-0000101 2013/01/18 ADD START	
	/** エラーフラグ：エラー処理 */
	private static final String ERR_FLG_CHK_YU = "1";
	// TAI-2012-0000101 2013/01/18 ADD END
	
// ANK-2694-00-00 2015/10/27 ADD START
	//ワンストップ返却用ワーニングメッセージ格納Map
	private Map<String, String[]> warMsgMap = null;

	//ワンストップ返却用単関連エラーメッセージ格納Map
	private Map<String, String[]> tkckErrMsgMap = null;
	
	//ワンストップ返却用エラーメッセージ格納Map
	private Map<String, String[]> errMsgMap = null;
	
	//ワンストップ返却用SIFエラー格納Map
	private Map<String, String[]> sifErrMap = null;
	
	//ワンストップ用受信パラメタ格納Map
	private Map<String, Object> requestMap = null;
	
	//機能コード
	private String funcCode = null;
	
	//インターフェイスID
	private static String IF_ID = "KKIFE295";
	
	//ワンストップ用ワーニング保持リスト
	private List<Map<String, String>> warnList = null;
	
	//コード区分リスト格納用Map
	private Map <String, List<Map<String, String>>> cdDivListMap = null;
	
	/** サービス契約コード */
	private static String svcCd = null;
	
	/** 変更前Email一致フラグ */
	private String hnEmailerrflg = JKKCommonConst.UMU_1;
	
	/** 未来日チェックフラグ */
	private String hnMiraiYMD = JKKCommonConst.UMU_0;
	
	/** サービス契約内訳 */
	private String svcKeiUcwkNo = "";
	
	/** 処理区分 */
	private static final String TRN_KBN = "trn_kbn";
	
	/** サービス終了年月日 */
	private static final String SVC_ENDYMD = "svc_endymd";
	
	/** 受取 処理区分 1:変更 */
	private static final String UKT_HNKM_TRN_KBN_UPD = "1";
	
	/** 受取 処理区分 3:解約 */
	private static final String UKT_HNKM_TRN_KBN_DRT = "3";
	
	/** 受取 ウイルスチェックフラグ 1:有 */
	private static final String UKT_HNKM_VIRUS_FLG_YU = "1";
	
	/** 受取 ウイルスチェックフラグ 0:無 */
	private static final String UKT_HNKM_VIRUS_FLG_MU = "0";
	
	// ANK-3946-01-00 ADD START
	/** capa */
	private static final String CAPA = "capa";
	
	 /** Reference (200:200MB) */
	private static final String REFERENCE_200 = "200";
	
	  /** Reference (5120:5GB) */
	private static final String REFERENCE_5120 = "5120";
	// ANK-3946-01-00 ADD END
	
	/**コードステータスリストの定数*/
	private ArrayList<String> eo_op_list = new ArrayList<String>();

// ANK-2694-00-00 2015/10/27 ADD END
	
	// IT1-2016-0000100 2016/07/28 ADD START
	// サービス提供履歴フラグ
	private String svcTkRrkFlg = "0";
	// IT1-2016-0000100 2016/07/28 ADD END

// ANK-2694-00-00 2015/10/27 ADD START
	/**
	 * ワンストップ用APIコントロールメソッドです。
	 * <BR>
	 * @return boolean
	 * @throws Exeption
	 */
	public boolean apiControl() throws Exception
	{
		try
		{
			try
			{
				//API用初期処理
				if (!this.apiInit())
				{
					//業務規制中の為処理終了
					return true;
				}
				//ワンストップ独自単項目チェック
				if (!this.singleChkForOneStop())
				{
					//エラー発生の為処理終了
					return true;
				}
				//ワンストップ独自共通関連チェック
				if (!this.commonKnrnChkForOneStop())
				{
					//エラー処理の為処理終了
					return true;
				}
				//ワンストップ独自先行関連チェック
				if(!this.senkoKnrnChkForOneStop())
				{
					//エラー処理の為処理終了
					return true;
				}
				
				//初期処理用DataBean上書き処理
				this.overwriteDataBeanForInit();
				
				//ワンストップ独自関連チェック1
				if (!knrnChkForOneStop1())
				{
					//エラー発生の為処理終了
					return true;
				}
				
				// メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					// エラー発生の為処理終了
					return true;
				}
				
				///////////////////////////////////////////
				//Eメール情報更新・照会 初期表示処理
				///////////////////////////////////////////
				this.actionInit();
				
				// メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// DataBean上書き処理
				this.overwriteDataBean();
				
				////////////////////////////////////////////
				//更新確認ボタン押下処理
				////////////////////////////////////////////
				this.actionUpdCfm();
				
				//メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					//エラー発生の為処理終了
					return true;
				}
				
				//機能コードが "1" の場合のみ、確定ボタン押下処理
				if (JKKCommonConst.FUNC_CODE_1.equals(funcCode))
				{
					//////////////////////////////////////////////
					//確定ボタン押下処理
					//////////////////////////////////////////////
					this.actionFix();
					
					//メッセージチェック
					if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
					{
						//エラー発生の為処理終了
						return true;
					}
				}
				
				//API用終了処理(リターンコード00(正常終了))
				this.apiTerminal("00");
			}
			catch (JCCWebServiceException wse)
			{
				//サービスIFエラー処理
				JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID);
				X31CMessageResult msgResult = wse.getMessageList();
				JKKOneStopApiCommonUtil.sifErrChk(this, msgResult, sifErrMap, warnList, IF_ID);
			}
		}
		catch (Exception e)
		{
			//例外発生時はリターンコード99(システムエラー)
 			JKKOneStopApiCommonUtil.printErrorLog(getSessionId(), "KKIFE295_Eメール情報変更・解約確認(ワンストップ)にて例外が発生しました。", e);
			this.apiTerminal("99");
		}
		catch (Throwable e) {
			
		}
		return true;
	}
// ANK-2694-00-00 2015/10/27 ADD END

// ANK-2694-00-00 2015/10/27 ADD START
	/**
	 * ワンストップ用API初期処理メソッドです。
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean apiInit() throws Exception
	{
		// 受信データXML⇒Map変換
		requestMap = (Map<String, Object>)getReceiveXml(getSessionId()).get(IF_ID + "_RECEIVE");
		
		// 機能コード取得(業務規制チェック用に単項目チェック前に取得)
		funcCode = (String) requestMap.get("func_code");
		
		// 機能コードが"2"以外の場合、業務規制チェック
		if (!JKKCommonConst.FUNC_CODE_2.equals(funcCode)
				&& !checkRegulationForUpdateApi(this))
		{
			// エラーメッセージを設定
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5001", warnList, funcCode, IF_ID);
			return false;
		}
		
		// エラー・ワーニングメッセージマップ作成
		this.createMsgMap();
		
		// ワーニングリスト生成
		warnList = new ArrayList<Map<String, String>>();
		
		return true;
	}
// ANK-2694-00-00 2015/10/27 ADD END

// ANK-2694-00-00 2015/10/27 ADD START
	/**
	 * メッセージマップ作成処理です。
	 * 画面独自処理にて発生しうるエラーメッセージをMapに格納する。
	 * <BR>
	 * @throws Exception
	 */
	private void createMsgMap() throws Exception
	{
		// メッセージ読み込み
		JCCMessageCache.setMessageCache();
		
		// ワーニングメッセージ格納Map組み立て（※なし）
		warMsgMap = new HashMap<String, String[]>();
		
		// 単関連エラーメッセージ格納Map組み立て（※なし）
		tkckErrMsgMap = new HashMap<String, String[]>();
// ST-2016-0000002 2016/01/19 DEL START
// IT1-2015-0000159 2015/12/25 MOD START
//		tkckErrMsgMap.put(JCCMessageCache.getMessage("EKB1650-JW", new String[]{""}), new String[]{"E4001", "trn_kbn"});
//		tkckErrMsgMap.put(JCCMessageCache.getMessage("EKB1650-JW", new String[]{""}), new String[]{"E5022", ""});
// IT1-2015-0000159 2015/12/25 MOD END
// ST-2016-0000002 2016/01/19 DEL END
		
		// エラーメッセージ格納Map組み立て
		errMsgMap = new HashMap<String, String[]>();
// ST-2015-0000069 2015/12/28 MOD START
//		errMsgMap.put(JCCMessageCache.getMessage("EKB1510-KW", new String[]{"解約","オプションサービス"}), new String[]{"E5011", ""});
		errMsgMap.put(JCCMessageCache.getMessage("EKB1510-KW", new String[]{"解約","オプションサービス"}), new String[]{"E5023", ""});
		errMsgMap.put(JCCMessageCache.getMessage("EKB1510-KW", new String[]{"変更","オプションサービス"}), new String[]{"E5023", ""});
// ST-2015-0000069 2015/12/28 MOD END
		errMsgMap.put(JCCMessageCache.getMessage("EKB0690-NW", new String[]{"利用終了日", "過去"}), new String[]{"E5020", ""});
// ST-2016-0000002 2016/01/19 ADD START
		errMsgMap.put(JCCMessageCache.getMessage("EKB1650-JW", new String[]{""}), new String[]{"E5022", ""});
// ST-2016-0000002 2016/01/19 ADD END
		// ANK-3946-01-00 ADD START
		errMsgMap.put(JCCMessageCache.getMessage(JPCOnlineMessageConstant.EKK0290_JW, new String[]{"更新内容", "メールBox容量", "減少させる登録は"}), new String[]{"E5024", ""});
		// ANK-3946-01-00 ADD END
		
		// サービスIFエラー格納Map組み立て
		// KEY=『サービスインターフェイスID,ステータス,エラー返却項目,エラーフラグ』
		sifErrMap = new HashMap<String, String[]>();
		sifErrMap.put("EKK0351C240,1100,svc_endymd,EB", new String[]{"E5019", ""});	// 未来日チェックエラー
	}
// ANK-2694-00-00 2015/10/27 ADD END

// ANK-2694-00-00 2015/10/27 ADD START
	/**
	 * ワンストップ用単項目チェックメソッドです。
	 * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	private boolean singleChkForOneStop() throws Exception
	{
		List<Map<String, String>> errList = new ArrayList<Map<String, String>>();
		String itemName = null;
		String itemValue = null;
		
		// 機能コード
		itemName = "func_code";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
			if (!JKKCommonConst.FUNC_CODE_1.equals(itemValue)
					&& !JKKCommonConst.FUNC_CODE_2.equals(itemValue))
			{
				// リファレンスチェックエラー
				errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
			}
		}
		
		// SYSID
		itemName = "sysid";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// サービス契約番号
		itemName = "svc_kei_no";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由大分類コード
		itemName = "ido_rsn_dbri_cd";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 2))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由中分類コード
		itemName = "ido_rsn_cbri_cd";
		if (requestMap.containsKey(itemName))
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 2))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		// 異動理由メモ
		itemName = "ido_rsn_memo";
		if (requestMap.containsKey(itemName))
		{
			itemValue = (String)requestMap.get(itemName);
			if (!MixCharCheck.isMix1Check(itemValue))
			{
			// 形式チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength2Check(itemValue, 1, 100))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// ユーザーID
		itemName = "user_id";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength2Check(itemValue, 6, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 処理区分
		itemName = TRN_KBN;
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
			if (itemValue != null && !UKT_HNKM_TRN_KBN_UPD.equals(itemValue)
					&& !UKT_HNKM_TRN_KBN_DRT.equals(itemValue))
			{
				// リファレンスチェックエラー
				errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
			}
		}
		
		// ウイルスチェック変更フラグ
		itemName = "virus_chk_chg_flg";
		if (requestMap.containsKey(itemName))
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
			if (itemValue != null && !UKT_HNKM_VIRUS_FLG_YU.equals(itemValue)
					&& !UKT_HNKM_VIRUS_FLG_MU.equals(itemValue))
			{
				// リファレンスチェックエラー
				errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
			}
		}
		
		// 変更前メールアドレス
		itemName = "bf_mlad";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEmail4Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength2Check(itemValue, 1, 256))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// サービス終了年月日
		itemName = SVC_ENDYMD;
		if (requestMap.containsKey(itemName))
		{
			itemValue = (String)requestMap.get(itemName);
			if (!DatetimeCheck.isDateCheck(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 8))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// ANK-3946-01-00 ADD START
		// メールBOX容量 チェック
		itemName = CAPA;
		if (requestMap.containsKey(itemName))
		{
			itemValue = (String)requestMap.get(itemName);
			// 任意（チェックしない）
			if (JKKStringUtil.isNullBlank(itemValue) == false) {
				
				if (!LengthCheck.isLength2Check(itemValue, 3, 4))
				{
					// 桁数チェック(min-max) エラー
					errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
				}
				
				if (!HalfCharCheck.isNumber1Check(itemValue))
				{
					// 属性チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
				}
				
				if (!REFERENCE_200.equals(itemValue) && !REFERENCE_5120.equals(itemValue)) {
					// リファレンスチェックエラー
					errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
				}
				
			}
		}
		// ANK-3946-01-00 ADD END
		
		//エラーが存在する場合
		if (errList.size() > 0)
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "10", errList, warnList, funcCode, IF_ID);
			return false;
		}
		return true;
	}
// ANK-2694-00-00 2015/10/27 ADD END

// ANK-2694-00-00 2015/10/27 ADD START
	/**
	 * ワンストップ用共通関連チェックメソッドです。
	 * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	private boolean commonKnrnChkForOneStop() throws Exception
	{
		// dataBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// チェック対象パラメタの退避
		String sysid = (String)requestMap.get("sysid");
		String svcKeiNo = (String)requestMap.get("svc_kei_no");
		String userId = (String)requestMap.get("user_id");
		String idoDiv = JKKCommonConst.IDO_DIV_VALUE_00031;
		String idoRsnDbriCd = (String)requestMap.get("ido_rsn_dbri_cd");
		String idoRsnCbriCd = (String)requestMap.get("ido_rsn_cbri_cd");
		
		// 取得対象コード種別（※なし）
		List<String> cdSbtList = new ArrayList<String>();
		
		// 運用日付
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// SYSID・サービス契約番号・ユーザIDの存在チェック＋コード種別の取得
		// ■KKSV0820
		HashMap<String, Object> kksv0820ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0820InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0820OutputMap = new HashMap<String, Object>();
		
		// パラメタ設定
		kksv0820ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0820");
		kksv0820ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "KKSV0820OP");
		
		// 上りマッピング
		KKSV0820_KKSV0820OPDBMapper kksv0820Mapper = new KKSV0820_KKSV0820OPDBMapper();
		kksv0820Mapper.setKKSV082001CC(paramBean, kksv0820InputMap, opeDate, sysid, svcKeiNo, userId, cdSbtList);
		
		invokeService(kksv0820ParamMap, kksv0820InputMap, kksv0820OutputMap);
		
		// SYSID存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistSysid(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5007", warnList, funcCode, IF_ID);
			return false;
		}
		
		// サービス契約番号存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistSvcKeiNo(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5008", warnList, funcCode, IF_ID);
			return false;
		}
		
		// ユーザID存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistUserId(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5009", warnList, funcCode, IF_ID);
			return false;
		}
		
		// コード区分リストの退避
		Map<String, Object> kksv082001ccMap = (Map<String, Object>) kksv0820OutputMap.get("KKSV082001CC");
		Map<String, Object> codeMeishoKanriMap = (Map)kksv082001ccMap.get("codeMeishoKanriMap");
		cdDivListMap = (Map)codeMeishoKanriMap.get("rslt_cd_sbt_map");
		
		// 異動理由の大分類・中分類の組み合わせチェック／サービス契約の異動可能チェック用のサービス呼び出し
		OneStopDataBeanAccess osBean = new OneStopDataBeanAccess();
		osBean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, sysid);
		osBean.sendMessageString("選択サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		osBean.sendMessageString("運用日付", X31CWebConst.DATABEAN_SET_VALUE,  opeDate);
		// IT1-2016-0000100 2016/07/28 ADD START
		osBean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		// IT1-2016-0000100 2016/07/28 ADD END
		
		OneStopDataBeanAccess[] paramOsBean = {osBean};
		
		// ■KKSV0061
		HashMap<String, Object> kksv0061ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0061InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0061OutputMap = new HashMap<String, Object>();
		
		// パラメタ設定
		kksv0061ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0061);
		kksv0061ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0061OP);
		
		// 上りマッピング
		KKSV0061_KKSV0061OPDBMapper kksv0061Mapper = new KKSV0061_KKSV0061OPDBMapper();
		kksv0061Mapper.setKKSV006101SC(paramOsBean, kksv0061InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0061Mapper.setKKSV006102SC(paramOsBean, kksv0061InputMap, JPCModelConstant.FUNC_CD_3);
		kksv0061Mapper.setKKSV006103SC(paramOsBean, kksv0061InputMap, JPCModelConstant.FUNC_CD_3);
		
		invokeService(kksv0061ParamMap, kksv0061InputMap, kksv0061OutputMap);
		
		// 取得情報の下りマッピング
		kksv0061Mapper.getKKSV006101SC(paramOsBean, kksv0061OutputMap);
		kksv0061Mapper.getKKSV006102SC(paramOsBean, kksv0061OutputMap);
		kksv0061Mapper.getKKSV006103SC(paramOsBean, kksv0061OutputMap);
		kksv0061Mapper.getKKSV006104SC(paramOsBean, kksv0061OutputMap);
		
		// ■KKSV0062
		HashMap<String, Object> kksv0062ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0062InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0062OutputMap = new HashMap<String, Object>();
		
		kksv0062ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0062);
		kksv0062ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0062OP);
		
		// 上りマッピング
		KKSV0062_KKSV0062OPDBMapper kksv0062Mapper = new KKSV0062_KKSV0062OPDBMapper();
		kksv0062Mapper.setKKSV006201SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		kksv0062Mapper.setKKSV006202SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006203SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006205SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006206SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006207SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_6);
		kksv0062Mapper.setKKSV006208SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		kksv0062Mapper.setKKSV006209SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006210SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		kksv0062Mapper.setKKSV006212SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006221SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		// 2016/06/10 ANK-2687-00-00 ADD START
		kksv0062Mapper.setKKSV006222CC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		// 2016/06/10 ANK-2687-00-00 ADD END
		// IT1-2016-0000100 2016/07/28 ADD START
		kksv0062Mapper.setKKSV006223SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		// IT1-2016-0000100 2016/07/28 ADD END
		invokeService(kksv0062ParamMap, kksv0062InputMap, kksv0062OutputMap);
		
		// 取得情報の下りマッピング
		kksv0062Mapper.getKKSV006201SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006205SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006207SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006209SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006210SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006211SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006208SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006221SC(paramOsBean, kksv0062OutputMap);
		Map<?, ?> kksv006201scMap = (Map<?, ?>) kksv0062OutputMap.get("KKSV006201SC");
		List<?> ekk0081a010List = (List<?>) kksv006201scMap.get("EKK0081A010CBSMsg1List");
		Map<?, ?> ekk0081a010Map = (Map<?, ?>) (null != ekk0081a010List && 0 < ekk0081a010List.size() ? ekk0081a010List.get(0) : null);
		String prcGrpCd = (String) (null != ekk0081a010Map ? ekk0081a010Map.get("prc_grp_cd") : "");
		// サービス契約コードの取得
		svcCd = (String) (null != ekk0081a010Map ? ekk0081a010Map.get("svc_cd") : "");
		
		// Eメール情報変更・解約確認独自のチェック START
		// サービス契約ステータス
		String svcKeiStaChk = (String) (null != ekk0081a010Map ? ekk0081a010Map.get("svc_kei_stat") : "");
		// 処理区分
		String trans_divCHk = null;
		if(UKT_HNKM_TRN_KBN_UPD.equals((String)requestMap.get(TRN_KBN))){
			// 処理区分変更時
			trans_divCHk = JKKCommonConst.OP_TRAN_DIV_CHGE;
		}else if(UKT_HNKM_TRN_KBN_DRT.equals((String)requestMap.get(TRN_KBN))){
			// 処理区分解約時
			trans_divCHk = JKKCommonConst.OP_TRAN_DIV_DSL;
		}
		
		if (JKKCommonConst.OP_TRAN_DIV_DSL.equals(trans_divCHk))
		{
			// 処理区分が[解約]の時利用終了日取得
			String useEndYMD = (String)requestMap.get(SVC_ENDYMD);
			
			// 必須チェック
			if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, SVC_ENDYMD))
			{
				JKKOneStopApiCommonUtil.setReturnXml(this, "E5005", warnList, funcCode, IF_ID);
				return false;
			}
			
			// サービス終了年月日日付妥当性チェック
			if (!JPCUtilCommon.checkDate(useEndYMD, 8))
			{
				JKKOneStopApiCommonUtil.setReturnXml(this, "E5021", warnList, funcCode, IF_ID);
				return false;
			}
			
			// 未来日チェック(サービス契約のサービス契約ステータスが「休止中」の場合、未来日での登録はエラー)
			if (JKKCommonConst.SVC_KEI_STAT_210.equals(svcKeiStaChk) && JPCDateChecker.isFutureDate(useEndYMD, opeDate, "0"))
			{
				JKKOneStopApiCommonUtil.setReturnXml(this, "E5018", warnList, funcCode, IF_ID);
				return false;
			}
			
			// 未来日チェック(サービス契約のサービス契約ステータスが「締結済」「照査済」の場合、未来日での登録はワーニング)
			if ((JKKCommonConst.SVC_KEI_STAT_020.equals(svcKeiStaChk) && JPCDateChecker.isFutureDate(useEndYMD, opeDate, "0")) 
					|| (JKKCommonConst.SVC_KEI_STAT_030.equals(svcKeiStaChk) && JPCDateChecker.isFutureDate(useEndYMD, opeDate, "0")))
			{
				warnList.add(JKKOneStopApiCommonUtil.getkrckErrInfMap("W0002"));
			}
		}else if (UKT_HNKM_TRN_KBN_UPD.equals(requestMap.get(TRN_KBN)))
		{
			// 処理区分:1[変更]時、入力不可チェック
			if (JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, SVC_ENDYMD))
			{
				JKKOneStopApiCommonUtil.setReturnXml(this, "E5006", warnList, funcCode, IF_ID);
				return false;
			}
		}
		// Eメール情報変更・解約確認独自のチェック END
		
		// IT1-2016-0000100 2016/07/28 ADD START
		kksv0062Mapper.getKKSV006223SC(paramOsBean, kksv0062OutputMap);
		
		Map<?, ?> kksv006223scMap = (Map<?, ?>)kksv0062OutputMap.get("KKSV006223SC");
		List<?> eKK0081B024List = (List<?>)kksv006223scMap.get("EKK0081B024CBSMsg1List");
		Map<?, ?> eKK0081B024Map = null;
		String svcKeiStat = "";
		
		// サービス契約履歴一覧照会マップ.サービス契約履歴一覧照会明細がNULLでない
		// かつ サービス契約履歴一覧照会マップ.サービス契約履歴一覧照会明細のサイズが0より大きい場合
		if (eKK0081B024List != null && 0 < eKK0081B024List.size()) {
			for (int i = 0; i < eKK0081B024List.size(); i++) {
				eKK0081B024Map = (Map<?, ?>)eKK0081B024List.get(i);
				
				svcKeiStat = (String)eKK0081B024Map.get("svc_kei_stat");
				
				// サービス契約ステータス = "100"(サービス提供中)の場合、
				// サービス提供履歴フラグに"1"(サービス提供履歴あり)を設定する
				if (JKKCommonConst.SVC_KEI_STAT_100.equals(svcKeiStat)) {
					svcTkRrkFlg = "1";
					break;
				}
			}
		}
		// IT1-2016-0000100 2016/07/28 ADD END
		
		// ■KKSV0463
		HashMap<String, Object> kksv0463ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0463InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0463OutputMap = new HashMap<String, Object>();
		
		kksv0463ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0463);
		kksv0463ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0463OP);
		
		// 上りマッピング
		KKSV0463_KKSV0463OPDBMapper kksv0463Mapper = new KKSV0463_KKSV0463OPDBMapper();
		kksv0463Mapper.setKKSV046301SC(paramOsBean, kksv0463InputMap, JPCModelConstant.FUNC_CD_1, idoDiv);
		
		// 異動区分選択異動理由切替サービスを実施
		invokeService(kksv0463ParamMap, kksv0463InputMap, kksv0463OutputMap);
		
		// ■KKSV0551
		HashMap<String, Object> kksv0551ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0551InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0551OutputMap = new HashMap<String, Object>();
		
		kksv0551ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0551);
		kksv0551ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0551OP);
		
		// 上りマッピング
		KKSV0551_KKSV0551OPDBMapper kksv0551Mapper = new KKSV0551_KKSV0551OPDBMapper();
		kksv0551Mapper.setKKSV055101SC(paramOsBean, kksv0551InputMap, JPCModelConstant.FUNC_CD_1, idoRsnDbriCd);
		
		// 異動区分選択異動理由大分類切替サービスを実施
		invokeService(kksv0551ParamMap, kksv0551InputMap, kksv0551OutputMap);
		
		// 異動理由大分類・中分類組合せチェック
		if (!JKKOneStopApiCommonUtil.checkIdoRsnCdPair(kksv0463OutputMap, kksv0551OutputMap, osBean, idoRsnDbriCd, idoRsnCbriCd))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5010", warnList, funcCode, IF_ID);
			return false;
		}
		
		// サービス契約異動可能チェック
		if (!JKKOneStopApiCommonUtil.checkSvcKeiIdoPsb(kksv0062OutputMap, osBean, idoDiv))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5011", warnList, funcCode, IF_ID);
			return false;
		}
		
		return true;
	}
// ANK-2694-00-00 2015/10/27 ADD END

// ANK-2694-00-00 2015/10/27 ADD START
	/**
	 *  ワンストップ独自先行関連チェック処理です。
	 *  <BR>
	 *  @return boolean
	 *  @throws Exception
	 */
	private boolean senkoKnrnChkForOneStop() throws Exception
	{
		// エラーリスト生成
		List<Map<String, String>> errList = new ArrayList<Map<String, String>>();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// サービスの種類チェック
		if (!svcCd.equals(JKKCommonConst.SVC_CD_NET))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5012", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 運用日,サービス開始日取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		String strEndYMD = (String)(requestMap.get(SVC_ENDYMD));
		
		// 過去日チェック
		if (JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, SVC_ENDYMD)){
			if(JPCDateChecker.isPastDate(strEndYMD, opeDate, "0"))
			{
				JKKOneStopApiCommonUtil.setReturnXml(this, "E5020", warnList, funcCode, IF_ID);
				return false;
			}
		}
		return true;
	}
// ANK-2694-00-00 2015/10/27 ADD END

// ANK-2694-00-00 2015/10/27 ADD START
	/**
	 * 初期処理用DataBean上書き処理です。
	 * <BR>
	 */
	private void overwriteDataBeanForInit()
	{
		// データビーンの取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 運用日付
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		// サービス契約番号
		String svcKeiNo = (String)requestMap.get("svc_kei_no");
		
		OneStopDataBeanAccess osBean = new OneStopDataBeanAccess();
		osBean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		osBean.sendMessageString("運用年月日", X31CWebConst.DATABEAN_SET_VALUE,  opeDate);
		osBean.sendMessageString("異動区分", X31CWebConst.DATABEAN_SET_VALUE,  JKKCommonConst.IDO_DIV_VALUE_00031);
		osBean.sendMessageString(KKW02301SFConst.SORT_ITEM, X31CWebConst.DATABEAN_SET_VALUE,  KKW02301SFConst.SORT_ITEM_OPT_SVC_CD_NM);
		osBean.sendMessageString(KKW02301SFConst.SORT_KBN, X31CWebConst.DATABEAN_SET_VALUE,  KKW02301SFConst.SORT_KBN_ASC);
		
		OneStopDataBeanAccess[] paramOsBean = {osBean};
		
		String opSvcKeiNo = null;
		String opSvcKeiSty = null;
		String mskmNo = null;
		String mskmDtlNo = null;
		svcKeiUcwkNo = null;
		paramOsBean[0].sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiUcwkNo);
		
		// ■KKSV0043
		HashMap<String, Object> kksv0043ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0043InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0043OutputMap = new HashMap<String, Object>();	
		
		kksv0043ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0043);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0043_KKSV0043OPDBMapper mapper_0043 = new KKSV0043_KKSV0043OPDBMapper();
		mapper_0043.setKKSV004301SC(paramOsBean, kksv0043InputMap, JPCModelConstant.FUNC_CD_1);
		mapper_0043.setKKSV004303CC(paramOsBean, kksv0043InputMap, JPCModelConstant.FUNC_CD_1);
		
		// オプションサービス契約一覧照会サービス実行
		invokeService(kksv0043ParamMap, kksv0043InputMap, kksv0043OutputMap);
		
		mapper_0043.getKKSV004301SC(paramOsBean, kksv0043OutputMap,false);
		mapper_0043.getKKSV004303CC(paramOsBean, kksv0043OutputMap);
		
		HashMap parentMap = null;
		if(kksv0043OutputMap.containsKey("KKSV004301SC"))
		{
			parentMap = (HashMap)kksv0043OutputMap.get("KKSV004301SC");
		}
		
		if(parentMap.containsKey("EKK0351B002CBSMsg1List"))
		{
			ArrayList childList = null;
			childList = (ArrayList)parentMap.get("EKK0351B002CBSMsg1List");
			
			for(int i=0;i<childList.size();i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				String opSvcNiy = (String)childMap.get("op_svc_niy");
				
				// Eメールアドレス一致時
				if (((String)requestMap.get("bf_mlad")).equals(childMap.get("op_svc_niy"))){
					
					// エラーフラグを[無]に
					hnEmailerrflg = JKKCommonConst.UMU_0;
					
					// オプションサービス契約番号,オプションサービス契約ステータス,申込番号,申込明細の取得
					opSvcKeiNo = (String)childMap.get("op_svc_kei_no");
					opSvcKeiSty = (String)childMap.get("op_svc_kei_stat");
					mskmNo = (String)childMap.get("mskm_no");
					mskmDtlNo = (String)childMap.get("mskm_dtl_no");
					break;
				}
			}
			if (!(hnEmailerrflg.equals(JKKCommonConst.UMU_0))){
				return;
			}
		}
		
		// 顧客契約引継リスト取得
		X31SDataBeanAccessArray custKeiHktgiList =  paramBean[0].getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
		
		// パラメタの退避
		String sysid = (String)requestMap.get("sysid");
		String svckeiNo = (String)requestMap.get("svc_kei_no");
		String userId = (String)requestMap.get("user_id");
		String idoDiv = JKKCommonConst.IDO_DIV_VALUE_00031;
		String idoRsnDbriCd = (String)requestMap.get("ido_rsn_dbri_cd");
		String idoRsnCbriCd = (String)requestMap.get("ido_rsn_cbri_cd");
		String chTrnKbn = null;
		
		// SYSID
		custKeiHktgiInf.sendMessageString(KKW02501SFConst.SYSID_01, X31CWebConst.DATABEAN_SET_VALUE, sysid);
		
		// サービス契約番号取得
		custKeiHktgiInf.sendMessageString(KKW02501SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, svckeiNo) ;
		
		// 処理区分
		if(UKT_HNKM_TRN_KBN_UPD.equals((String)requestMap.get(TRN_KBN))){
			// 処理区分変更時
			chTrnKbn = JKKCommonConst.OP_TRAN_DIV_CHGE;
		}else if(UKT_HNKM_TRN_KBN_DRT.equals((String)requestMap.get(TRN_KBN))){
			// 処理区分解約時
			chTrnKbn = JKKCommonConst.OP_TRAN_DIV_DSL;
		}
		custKeiHktgiInf.sendMessageString(KKW02501SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_SET_VALUE, chTrnKbn);
		
		// 異動区分
		custKeiHktgiInf.sendMessageString(KKW02501SFConst.IDO_DIV_01, X31CWebConst.DATABEAN_SET_VALUE, idoDiv);
		
		// オプションサービス契約番号
		custKeiHktgiInf.sendMessageString(KKW02501SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_ADD_VALUE, opSvcKeiNo);
		
		// オプションサービス契約ステータス
		custKeiHktgiInf.sendMessageString(KKW02501SFConst.OP_SVC_KEI_STAT, X31CWebConst.DATABEAN_ADD_VALUE, opSvcKeiSty);
		
		// 申込番号
		custKeiHktgiInf.sendMessageString(KKW02501SFConst.MSKM_NO_01, X31CWebConst.DATABEAN_SET_VALUE, mskmNo);
		
		// 申込明細番号
		custKeiHktgiInf.sendMessageString(KKW02501SFConst.MSKM_DTL_NO_01, X31CWebConst.DATABEAN_GET_VALUE, mskmDtlNo);
		
		// 異動理由コード
		custKeiHktgiInf.sendMessageString(KKW02501SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_ADD_VALUE, (String)requestMap.get("ido_rsn_dbri_cd"));
		
		// 異動理由メモ
		custKeiHktgiInf.sendMessageString(KKW02501SFConst.IDO_RSN_MEMO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)requestMap.get("ido_rsn_memo"));
		
		// 異動理由コードの設定
		X31SDataBeanAccessArray ido_rsn_list = paramBean[0].getDataBeanArray(KKW02501SFConst.IDO_RSN_LIST);
		ido_rsn_list.addDataBean().sendMessageString(KKW02501SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)requestMap.get("ido_rsn_dbri_cd"));
		
		// 共有フォームビーンにユーザIDを設定する
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_SET_VALUE, (String)requestMap.get("user_id"));
	}
// ANK-2694-00-00 2015/10/27 ADD END

// ANK-2694-00-00 2015/10/27 ADD START
	/**
	 * ワンストップ独自関連チェック1
	 * @return boolean
	 * @throws Exception
	 */
	public boolean knrnChkForOneStop1() throws Exception
	{
		// エラーリスト生成
		List<Map<String, String>> errList = new ArrayList<Map<String, String>>();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// メールアドレス存在チェック
		if (!hnEmailerrflg.equals(JKKCommonConst.UMU_0))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5013", warnList, funcCode, IF_ID);
			return false;
		}
		return true;
	}
// ANK-2694-00-00 2015/10/27 ADD END

// ANK-2694-00-00 2015/10/27 ADD START
		/**
		 * DataBean上書き処理です。
		 * <BR>
		 * @return boolean
		 * @throws Exception
		 */
		private void overwriteDataBean()
		{
			// サービスフォームBeanのデータBeanアクセスクラスを取得。
			X31SDataBeanAccess bean = super.getServiceFormBean();
			X31SDataBeanAccess[] paramBean = {bean};
			X31SDataBeanAccessArray pulldown_list = paramBean[0].getDataBeanArray(KKW02501SFConst.VIRUS_CHK_INFO);
			X31SDataBeanAccess subDatabean = pulldown_list.getDataBean(0);
			
			// 処理区分取得
			String trans_div = bean.sendMessageString(KKW02501SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
			
			// ■ 関連チェック
			// サービス契約ステータス
			String svcKeiStat = bean.sendMessageString(KKW02501SFConst.SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
			
			if (JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trans_div))
			{
				
				// 処理区分が[変更]
				// ウイルスチェック変更状態 → Eメール情報変更CCマップ.ウイルスチェック変更フラグ
				String virusChkChgFlg = (String)requestMap.get("virus_chk_chg_flg");
				
				// ウイルスチェック変更状態
				subDatabean.sendMessageString(KKW02501SFConst.INDEX_04, X31CWebConst.DATABEAN_SET_VALUE, virusChkChgFlg);
				
				// ANK-3946-01-00 ADD START
				String capa = (String)requestMap.get(CAPA);
				
				if (JKKStringUtil.isNullSpace(capa) == false) {
					
					X31SDataBeanAccessArray pulldown_list_mail = paramBean[0].getDataBeanArray(KKW02501SFConst.MAIL_CAPA_INFO);
					
					this.setPullDownIdx(pulldown_list_mail, capa);
				}
				// ANK-3946-01-00 ADD END
			}else if (JKKCommonConst.OP_TRAN_DIV_DSL.equals(trans_div))
			{
				// 処理区分が[解約]の時利用終了日取得
				String useEndYMD = (String)requestMap.get(SVC_ENDYMD);
				// 運用日取得
				String opeDate = JCCWebCommon.getOpeDate(this, null);
				
				int day = JPCDateUtil.subtractDay(useEndYMD, opeDate);
				
				bean.sendMessageString(KKW02501SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, (useEndYMD.substring(0, 4)));	// 利用終了日（年
				bean.sendMessageString(KKW02501SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_SET_VALUE, (useEndYMD).substring(4, 6));	// 利用終了日（月
				bean.sendMessageString(KKW02501SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, (useEndYMD).substring(6, 8));	// 利用終了日（日
				bean.sendMessageString(KKW02501SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, useEndYMD);	// 利用終了日
			}
		}
// ANK-2694-00-00 2015/10/27 ADD END

// ANK-2694-00-00 2015/10/27 ADD START
		/**
		 * ワンストップ用API終了メソッドです。
		 * <BR>
		 * @param returnCd リターンコード
		 * @return boolean
		 * @throws Exception
		 */
		public void apiTerminal(String returnCd) throws Exception
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, returnCd, null, warnList, funcCode, IF_ID);
		}
// ANK-2694-00-00 2015/10/27 ADD END
	
	/**
	 * 初期表示処理<br>
	 * <br>
	 * １．マッピングのために、DataBeanに遷移元情報を設定します。<br>
	 * ２．マルチセッション情報初期表示サービスの呼び出しを行います。<br>
	 * ３．画面表示用にDataBeanに格納します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionInit() throws Exception 
	{
		HashMap<String, Object> inputMap = null;		// サービスへの入力情報作成のためのMap
		HashMap<String, Object> outputMap = null;		// サービスへからの出力情報取得のためのMap
		
		// メッセージ表示用
		String[] msgInfo = new String[1];
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 前画面からの引継情報を取得します
		// 画面情報を取得し、サービスフォームBeanに設定。
		JCCWebCommon.getScreenInfo(this);
		
		// DataBean設定処理（引継情報）
		setHktgiBean(paramBean);
		
		// サービス呼出し前処理を実施します。
		inputMap = new HashMap<String, Object>();
		
		setInitsrv(paramBean, inputMap);
		
		// サービスを実施します。
		outputMap = new HashMap<String, Object>();
		doService("KKSV0427", "KKSV0427OP", inputMap, outputMap);
		
		// 下りマッピングを実施します
		// マッピングデータから、画面で必要な項目を設定します。
		storeDataBeanInitsrv(paramBean, outputMap);
		
		msgInfo = new String[1];
		
		// 処理区分取得
		String trans_div = bean.sendMessageString(KKW02501SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		
		// オプションサービス契約ステータスの取得
		String op_svc_kei_stat = bean.sendMessageString(KKW02501SFConst.OP_SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 処理区分が変更の場合のメッセージ出力
		if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trans_div))
		{
			// ST2-2012-0000734 ADD START
			if(JKKCommonConst.SVC_KEI_STAT_010.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_020.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_030.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_100.equals(op_svc_kei_stat))
				// ST2-2012-0000734 ADD END
			{
				;
			}
			else
			{
				// オプションサービス契約ステータスが"受付済","照査済","締結済","サービス提供中"でない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"変更","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
				paramBean[0].sendMessageBoolean(KKW02501SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		// 処理区分が解約の場合のメッセージ出力
		else if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trans_div))
		{
			if(JKKCommonConst.SVC_KEI_STAT_030.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_100.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_210.equals(op_svc_kei_stat))
			{
				;
			}
			else
			{
				// オプションサービス契約ステータスが"締結済","サービス提供中","休止・中断中"のいずれでもない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"解約","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
				paramBean[0].sendMessageBoolean(KKW02501SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		// 処理区分が回復の場合のメッセージ出力
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trans_div))
		{
			if(JKKCommonConst.SVC_KEI_STAT_910.equals(op_svc_kei_stat))
			{
				// 更新確認画面の場合のメッセージ出力
				msgInfo[0] = INFO_MSGSTRING[2];
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
			}
			else
			{
				// オプションサービス契約ステータスが"解約済"でない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"回復","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
				paramBean[0].sendMessageBoolean(KKW02501SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		// 処理区分が予約取消の場合のメッセージ出力
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trans_div))
		{
			if(JKKCommonConst.SVC_KEI_STAT_010.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_020.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_030.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_100.equals(op_svc_kei_stat))
			{
				// 更新確認画面の場合のメッセージ出力
				msgInfo[0] = INFO_MSGSTRING[3];
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
			}
			else
			{
				// オプションサービス契約ステータスが"受付済","照査済","締結済","サービス提供中"のいずれでもない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"予約取消","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
				paramBean[0].sendMessageBoolean(KKW02501SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * 変更画面「更新確認」ボタン押下
	 * １．DataBean設定処理
	 * ２．サービス呼出処理
	 * ３．遷移先画面設定
	 * @return 正常終了:true 異常終了:false
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	public boolean actionUpdCfm() throws Throwable
	{
		HashMap<String, Object> inputMap = null;		// サービスへの入力情報作成のためのMap
		HashMap<String, Object> outputMap = null;		// サービスへからの出力情報取得のためのMap
		
		// メッセージ表示用
		String[] msgInfo = new String[1];
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 返却メッセージＩＤを初期化
		paramBean[0].sendMessageString(KKW02501SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// サービス呼出し前処理を実施します。
		inputMap = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();
		
		// 処理区分取得
		String trans_div = bean.sendMessageString(KKW02501SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trans_div))
		{
			// 処理区分"解約"
			// 解約用データ入力
			setDslsrv(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
			
			// 解約サービスを実施します。
			doService("KKSV0429", "KKSV0429OP", inputMap, outputMap);
			
			// 下りマッピングを実施します
			// マッピングデータから、画面で必要な項目を設定します。
			storeDataBeanDslsrv(paramBean, outputMap);
			
			msgInfo = new String[1];
			msgInfo[0] = INFO_MSGSTRING[1];
		}
		else if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trans_div))
		{
			// 処理区分"更新"
			// 更新用データ入力
			setChgesrv(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
			
// ANK-2761-00-00 2016/05/13 ADD START
			String orgCapaVal = paramBean[0].sendMessageString(KKW02501SFConst.CAPA, X31CWebConst.DATABEAN_GET_VALUE);
			String chgCapaVal = paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_CAPA, X31CWebConst.DATABEAN_GET_VALUE);

			if (JKKStringUtil.isNullBlank(chgCapaVal) == false && 
					JKKStringUtil.isNullBlank(orgCapaVal) == false &&
					(Integer.parseInt(chgCapaVal) < Integer.parseInt(orgCapaVal)))
			{
				// メッセージ設定
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKK0290_JW, new String[] {"更新内容", "メールBox容量", "減少させる登録は"});
				return false;
			}
// ANK-2761-00-00 2016/05/13 ADD END
			
			// 更新サービスを実施します
			doService("KKSV0428", "KKSV0428OP", inputMap, outputMap);
			
			// TAI-2012-0000101 2013/01/18 ADD START
			HashMap<String, Object> errFlgMap = (HashMap<String, Object>) outputMap.get("EmailInfoChgCfmCC");
			String errFlgChk = (String) errFlgMap.get("err_flg");
			
			//ANK-3149-20-00 ADD START
			Boolean pack_flg = paramBean[0].sendMessageBoolean(KKW02501SFConst.FAMIPA_WRIB_UM_FLG, X31CWebConst.DATABEAN_GET_VALUE);
			String virus_chk_idx_bf = paramBean[0].sendMessageString(KKW02501SFConst.CHGBF_VIRUS_CHK_FLG, X31CWebConst.DATABEAN_GET_VALUE);
			//ANK-3149-20-00 ADD END
			//ANK-3149-20-00 MOD START
			//if (ERR_FLG_CHK_YU.equals(errFlgChk))
			if (ERR_FLG_CHK_YU.equals(errFlgChk) && ((pack_flg != true) && ("0".equals(virus_chk_idx_bf))))
			//ANK-3149-20-00 MOD END
			{
				// メッセージ設定
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1650_JW);
				
				// DataBeanをログ出力
				JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
				
				return false;
			}
			// TAI-2012-0000101 2013/01/18 ADD END

			// 下りマッピングを実施します
			// マッピングデータから、画面で必要な項目を設定します。
			storeDataBeanChgesrv(paramBean, outputMap);
			
			msgInfo = new String[1];
			msgInfo[0] = INFO_MSGSTRING[0];
			
			// 2013/7/29 IT1-2013-0001584 Add Start
			String mlad_chg_flg = paramBean[0].sendMessageString(KKW02501SFConst.MLAD_CHG_FLG, X31CWebConst.DATABEAN_GET_VALUE);
			String alias_bf = paramBean[0].sendMessageString(KKW02501SFConst.ALIAS, X31CWebConst.DATABEAN_GET_VALUE);
			String op_svc_kei_stat = bean.sendMessageString(KKW02501SFConst.OP_SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
			//IT1-2013-0001655 20131024 MOD START
			String ml_vrsette_hktgi_flg = bean.sendMessageString(KKW02501SFConst.ML_VRSETTE_HKTGI_FLG, X31CWebConst.DATABEAN_GET_VALUE);
			
			//if(CHG_TYPE1.equals(mlad_chg_flg) && (null != alias_bf && !("".equals(alias_bf))))
			//{
			if(CHG_TYPE1.equals(mlad_chg_flg) && (null != alias_bf && !("".equals(alias_bf))) && "0".equals(ml_vrsette_hktgi_flg))
			{
				if(JKKCommonConst.SVC_KEI_STAT_010.equals(op_svc_kei_stat) || JKKCommonConst.SVC_KEI_STAT_020.equals(op_svc_kei_stat))
				{
			//IT1-2013-0001655 20131024 MOD END
					String[] str = {"メールアドレスが変更された","メールエイリアスがキャンセルされ"};
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD360__Q, str);
				}
				else
				{
					String[] str = {"メールアドレスが変更された","メールエイリアスが解約され"};
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD360__Q, str);
				}
			}
			// 2013/7/29 IT1-2013-0001584 Add End
		}
		
		// 「返却メッセージID」が空であれば、更新を確認するメッセージセットして次画面へ
		// 「返却メッセージID」が存在する場合はエラーなので画面遷移せず「返却メッセージID」をメッセージ表示
		String rtn_msgId = bean.sendMessageString(KKW02501SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(rtn_msgId == null || "".equals(rtn_msgId))
		{
			// 遷移先の画面IDを共有フォームBeanの項目に設定する
			commoninfoBean.sendMessageString(
					CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_ID_KKW02502);
			commoninfoBean.sendMessageString(
					CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_NAME_KKW02502);
			
			// 変更確認画面メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
			
		}
		else
		{
			// メッセージの設定
			String[] str = getMsgRep(trans_div, rtn_msgId);
			if("EKB1680--Q".equals(rtn_msgId)
					|| "EKB1660--Q".equals(rtn_msgId))
			{
				if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trans_div))
				{
					// 警告としてメッセージ表示するのみで次画面には遷移する
					commoninfoBean.sendMessageString(
							CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
							JKKScreenConst.SCREEN_ID_KKW02502);
					commoninfoBean.sendMessageString(
							CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
							JKKScreenConst.SCREEN_NAME_KKW02502);
					// メッセージ出力(IDのみ)
					JCCWebCommon.setMessageInfo(this, rtn_msgId);
				}
			}
			else if (str == null) 
			{
				// メッセージ出力(IDのみ)
				JCCWebCommon.setMessageInfo(this, rtn_msgId);
			}
			else
			{
				// メッセージ出力(置換文字あり)
				JCCWebCommon.setMessageInfo(this, rtn_msgId, str);
			}
			

		}
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * 変更確認画面「確定」ボタン押下
	 * １．DataBean設定処理
	 * ２．サービス呼出処理
	 * ３．遷移先画面設定
	 * @return 正常終了:true 異常終了:false
	 * @throws Throwable 
	 */
	public boolean actionFix() throws Throwable
	{
		HashMap<String, Object> inputMap = null;		// サービスへの入力情報作成のためのMap
		HashMap<String, Object> outputMap = null;		// サービスへからの出力情報取得のためのMap
		
		// メッセージ表示用
		String[] msgInfo = null;
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
	

		// サービスフォームBean
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 返却メッセージＩＤを初期化
		paramBean[0].sendMessageString(KKW02501SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// サービス呼出し前処理を実施します。
		inputMap = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();
		
		// 処理区分取得
		String trans_div = bean.sendMessageString(KKW02501SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trans_div))
		{
			// 処理区分"解約"
			// 解約用データ入力
			setDslsrv(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			
			// 解約サービスを実施します。
			doService("KKSV0429", "KKSV0429OP", inputMap, outputMap);
			
			// 下りマッピングを実施します
			// マッピングデータから、画面で必要な項目を設定します。
			storeDataBeanDslsrv(paramBean, outputMap);
			
			// IT1-2012-0000930 ADD START
			exeAxmRenkei(paramBean, inputMap);
			// IT1-2012-0000930 ADD END
			
			msgInfo = new String[1];
			msgInfo[0] = INFO_MSGSTRING[1];
		}
		else if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trans_div))
		{
			// 処理区分"更新"
			// 更新用データ入力
			setChgesrv(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			
			// 更新サービスを実施します
			doService("KKSV0428", "KKSV0428OP", inputMap, outputMap);
			
			// 下りマッピングを実施します
			// マッピングデータから、画面で必要な項目を設定します。
			storeDataBeanChgesrv(paramBean, outputMap);
			
			msgInfo = new String[1];
			msgInfo[0] = INFO_MSGSTRING[0];
		}
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trans_div))
		{
			// 処理区分"回復"
			// 回復用データ入力
			setKaihksrv(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			
			// 回復サービスを実施します
			doService("KKSV0430", "KKSV0430OP", inputMap, outputMap);
			
			// 下りマッピングを実施します
			// マッピングデータから、画面で必要な項目を設定します。
			storeDataBeanKaihksrv(paramBean, outputMap);
			
			// IT1-2012-0000930 ADD START
			exeAxmRenkei(paramBean, inputMap);
			// IT1-2012-0000930 ADD END
			
			msgInfo = new String[1];
			msgInfo[0] = INFO_MSGSTRING[2];
		}
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trans_div))
		{
			// 処理区分"予約取消"
			// 取消用データ入力
			setRsvclsrv(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			
			// 予約取消サービスを実施します
			doService("KKSV0431", "KKSV0431OP", inputMap, outputMap);
			
			// 下りマッピングを実施します
			// マッピングデータから、画面で必要な項目を設定します。
			storeDataBeanRsvclsrv(paramBean, outputMap);
			
			msgInfo = new String[1];
			msgInfo[0] = INFO_MSGSTRING[3];
		}
		
		// 「返却メッセージID」が空であれば、更新を確認するメッセージセットして次画面へ
		// 「返却メッセージID」が存在する場合はエラーなので画面遷移せず「返却メッセージID」をメッセージ表示
		String rtn_msgId = bean.sendMessageString(KKW02501SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(rtn_msgId == null || "".equals(rtn_msgId))
		{
			// 遷移先の画面IDを共有フォームBeanの項目に設定する
			commoninfoBean.sendMessageString(
					CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_ID_KKW02503);
			commoninfoBean.sendMessageString(
					CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_NAME_KKW02503);
			
			// 変更確認画面メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, msgInfo);
		}
		else
		{
			// メッセージの設定
			String[] str = getMsgRep(trans_div, rtn_msgId);
			if (str == null) 
			{
				// メッセージ出力(IDのみ)
				JCCWebCommon.setMessageInfo(this, rtn_msgId);
			}
			else
			{
				// メッセージ出力(置換文字あり)
				JCCWebCommon.setMessageInfo(this, rtn_msgId, str);
			}
		}
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * 修正処理<br>
	 * <br>
	 * １．Eメール情報更新画面に戻ります。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionShusei() throws Exception
	{
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW02501);
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW02501);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 戻る処理<br>
	 * <br>
	 * １．呼び出し元画面に戻ります。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionBack() throws Exception
	{
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
	
		// 遷移先の画面IDを取得し共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCCWebCommon.getScreenId(this));

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 完了処理<br>
	 * <br>
	 * １．呼び出し元画面に戻ります。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionFin() throws Exception
	{
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// 遷移先の画面IDを取得し共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCCWebCommon.getScreenId(this));

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * クリア処理<br>
	 * <br>
	 * １．初期表示処理を呼び出します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionClear() throws Exception
	{
		HashMap<String, Object> inputMap = null;		// サービスへの入力情報作成のためのMap
		HashMap<String, Object> outputMap = null;		// サービスへからの出力情報取得のためのMap
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// DataBeanをクリア
		String[] itemNames = bean.getItemNameList();
		for (int i = 0; i < itemNames.length; i++)
		{
			// プルダウン情報
			if (KKW02501SFConst.MAIL_CAPA_INFO.equals(itemNames[i]) ||
				KKW02501SFConst.VIRUS_CHK_INFO.equals(itemNames[i]))
			{
//				// 対象の発行ステータスDataBeanを取得し、データBeanアクセスクラスリストに設定します
//				X31SDataBeanAccessArray pulldown_list = bean.getDataBeanArray(itemNames[i]);
//
//				//データBeanアクセスクラスに対象のプルダウン情報Beanを設定します
//				X31SDataBeanAccess pulldown_subbean = pulldown_list.getDataBean(0);
//
//				//プルダウン情報Beanのコードリスト領域のクリアを行います
//				pulldown_subbean.sendMessage(KKW02501SFConst.CD_DIV_LIST_04, X31CWebConst.DATABEAN_CLEAR);
//				//プルダウン情報Beanのコードリスト名領域のクリアを行います
//				pulldown_subbean.sendMessage(KKW02501SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_CLEAR);
//				//プルダウン情報Beanの名称リスト領域のクリアを行います
//				pulldown_subbean.sendMessage(KKW02501SFConst.NM_LIST_04, X31CWebConst.DATABEAN_CLEAR);
			}
			//メールアドレス、エイリアス入力エリアクリア
			else if (KKW02501SFConst.CHGAF_MLAD.equals(itemNames[i])||KKW02501SFConst.CHGAF_MLAD_ACCOUNT.equals(itemNames[i])
					||KKW02501SFConst.CHGAF_ALIAS_O.equals(itemNames[i]))
			{
				bean.sendMessage(itemNames[i], X31CWebConst.DATABEAN_CLEAR);
			}
		
		}

		// サービス呼出し前処理を実施します。
		inputMap = new HashMap<String, Object>();
		X31SDataBeanAccess[] paramBean = {bean};
		
		setInitsrv(paramBean, inputMap);
		
		// サービスを実施します。
		outputMap = new HashMap<String, Object>();
		doService("KKSV0427", "KKSV0427OP", inputMap, outputMap);
		
		// 下りマッピングを実施します
		// マッピングデータから、画面で必要な項目を設定します。
		storeDataBeanInitsrv(paramBean, outputMap);
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

	
		return true;
	}
	
	/**
	 * サービス呼出処理<br>
	 * <br>
	 * マルチセッション更新関連のサービスの呼び出しを行います。<br>
	 * <br>
	 * @param usecase_id ユースケースID
	 * @param operation_id オペレーションID
	 * @param inputMap サービスへの入力情報Map（Not null）
	 * @param resultOutputMap サービスからの出力情報Map
	 * @return APサーバでエラーが発生した場合は、エラーメッセージ情報オブジェクトが返却されます。<br>
	 * 正常終了時には、null値が返却されます。
	 * @throws Exception 
	 */
	private X31CMessageResult doService(String usecase_id, String operation_id,
			HashMap<String, Object> inputMap, HashMap<String, Object> resultOutputMap)
	throws Exception
	{
		X31CMessageResult msgResult = null;		// 戻り値用
		HashMap<String, Object> paramMap = null;				// APサーバに依頼する情報を格納したマップオブジェクト

		try
		{
			// パラメタ設定
			paramMap = new HashMap<String, Object>();
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, usecase_id);
			paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, operation_id);

			// サービスの呼び出し
			msgResult = invokeService(paramMap, inputMap, resultOutputMap);
		}
		finally
		{
			paramMap = null;
		}

		return msgResult;
	}


	/**
	 * DataBean設定処理（初期表示）<br>
	 * <br>
	 * 画面DataBeanに必要な項目をセットします。<br>
	 * <br>
	 * @param paramBean DataBean項目の配列
	 */
	private void setHktgiBean(X31SDataBeanAccess[] paramBean)
	{
		// 運用日付取得してDataBeanにセットする
		String unyo_ymd = JCCWebCommon.getOpeDate(this, null);
		paramBean[0].sendMessageString(KKW02501SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
		
		// 顧客契約引継リスト取得
		X31SDataBeanAccessArray custKeiHktgiList =  paramBean[0].getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);

		// SYSID
		String sysid = custKeiHktgiInf.sendMessageString(KKW02501SFConst.SYSID_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02501SFConst.SYSID,  X31CWebConst.DATABEAN_SET_VALUE, sysid);
		
		// サービス契約番号取得
		String svc_kei_no = custKeiHktgiInf.sendMessageString(KKW02501SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02501SFConst.SVC_KEI_NO,  X31CWebConst.DATABEAN_SET_VALUE, svc_kei_no);
		
		// 処理区分取得
		String trans_div = custKeiHktgiInf.sendMessageString(KKW02501SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02501SFConst.TRAN_DIV,  X31CWebConst.DATABEAN_SET_VALUE, trans_div);
		
		// 異動区分
		String ido_div = custKeiHktgiInf.sendMessageString(KKW02501SFConst.IDO_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02501SFConst.IDO_DIV,  X31CWebConst.DATABEAN_SET_VALUE, ido_div);

		// 異動理由コードの設定
		X31SDataBeanAccessArray ido_rsn_list = paramBean[0].getDataBeanArray(KKW02501SFConst.IDO_RSN_LIST);

		// ▼異動理由メモ対応 Start
		String ido_rsn_memo = custKeiHktgiInf.sendMessageString(KKW02501SFConst.IDO_RSN_MEMO_01, X31CWebConst.DATABEAN_GET_VALUE);
		// ▲異動理由メモ対応 End

		// 異動理由コードの要素数を取得
		int cnt = (Integer)custKeiHktgiInf.sendMessage(KKW02501SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_COUNT);
		// 異動理由コードの要素数分繰り返す
		for(int i = 0; i < cnt; i++)
		{
			X31SDataBeanAccess ido_rsn_bean = null;
			if(ido_rsn_list.getCount() - 1 >= i)
			{
				ido_rsn_bean = ido_rsn_list.getDataBean(i);
			}
			else
			{
				ido_rsn_bean = ido_rsn_list.addDataBean();
			}
			if (ido_rsn_bean == null) 
			{
				continue;
			}

			// 異動理由コードの取得
			String ido_rsn_cd = custKeiHktgiInf.sendMessageString(KKW02501SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_VALUE, i);
			
			// 異動理由.異動理由コードの設定
			ido_rsn_bean.sendMessageString(KKW02501SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_SET_VALUE, ido_rsn_cd);
			// ▼異動理由メモ対応 Start
			// 異動理由.異動理由メモの設定
//			ido_rsn_bean.sendMessageString(KKW02501SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_SET_VALUE, "");
			ido_rsn_bean.sendMessageString(KKW02501SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_SET_VALUE, ido_rsn_memo);
			// ▲異動理由メモ対応 End
			
		}
		
		// オプションサービス契約番号
		String op_svc_kei_no = custKeiHktgiInf.sendMessageString(KKW02501SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE, 0);
		paramBean[0].sendMessageString(KKW02501SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, op_svc_kei_no);

		// 申込番号
		String mskm_no = custKeiHktgiInf.sendMessageString(KKW02501SFConst.MSKM_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02501SFConst.MSKM_NO, X31CWebConst.DATABEAN_SET_VALUE, mskm_no);
		
		// 申込明細番号
		String mskm_dtl_no = custKeiHktgiInf.sendMessageString(KKW02501SFConst.MSKM_DTL_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02501SFConst.MSKM_DTL_NO, X31CWebConst.DATABEAN_SET_VALUE, mskm_dtl_no);

	}

	/**
	 * 初期表示サービス呼出し前Data設定処理<br>
	 * <br>
	 * <br>
	 *
	 * @param paramBean DataBeanアクセスクラス配列
	 * @param inputMap サービスへの入力情報Map（Not null）
	 * @return なし
	 */
	private void setInitsrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> inputMap)
	{
		String opeDate = JCCWebCommon.getOpeDate(this , null);		// 運用年月日
		
		// 運用年月日をサービスフォームBeanへ設定
		paramBean[0].sendMessageString(KKW02501SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate);
		// 運用年月日時分秒
		paramBean[0].sendMessageString(KKW02501SFConst.UNYO_DTM, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDateTimeStamp(this, null));
		
		// 更新状態可否フラグを更新可にする
		paramBean[0].sendMessageBoolean(KKW02501SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, true);
		// 返却メッセージIDをクリア
		paramBean[0].sendMessageString(KKW02501SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// 処理区分取得
		String trans_div = paramBean[0].sendMessageString(KKW02501SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trans_div))
		{
			// 処理区分"更新"
			paramBean[0].sendMessageBoolean(KKW02501SFConst.UPD_MODE_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
		}
		else if(JKKCommonConst.OP_TRAN_DIV_SHOKAI.equals(trans_div))
		{
			// 処理区分"照会"
			paramBean[0].sendMessageBoolean(KKW02501SFConst.NON_UPD_DSL_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
		}
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trans_div) || JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trans_div))
		{
			// 処理区分"回復" or "予約取消"
			paramBean[0].sendMessageBoolean(KKW02501SFConst.KAIHK_CNSL_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
		}
		
		// 上りマッピング
		KKSV0427_KKSV0427OPDBMapper mapper = new KKSV0427_KKSV0427OPDBMapper();

		mapper.setKKSV042701SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setKKSV042702SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV042703SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV042704SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setKKSV042705SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV042706SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setKKSV042707SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV042708SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setKKSV042709SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV042710SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV042711SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setKKSV0427WORK01(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV042712SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// ST2-2012-0000734 ADD START
		mapper.setKKSV042713SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// ST2-2012-0000734 ADD END
		// 2012/06/27 v4.00.00 【ANK-0364】ウィルスチェック非課金登録対応 ADD START
		mapper.setKKSV042714SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		// 2012/06/27 v4.00.00 【ANK-0364】ウィルスチェック非課金登録対応 ADD START
	}

	/**
	 * 初期表示Data保存処理<br>
	 * <br>
	 * <br>
	 *
	 * @param paramBean DataBeanアクセス配列
	 * @param outputMap サービスからの出力情報Map
	 * @return なし
	 * @throws Exception 
	 */
	private void storeDataBeanInitsrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> outputMap) throws Exception
	{
		// 下りマッピング
		KKSV0427_KKSV0427OPDBMapper mapper = new KKSV0427_KKSV0427OPDBMapper();
		
		if(outputMap != null)
		{
			mapper.getKKSV042701SC(paramBean, outputMap);
			mapper.getKKSV042702SC(paramBean, outputMap);
			mapper.getKKSV042703SC(paramBean, outputMap);
			mapper.getKKSV042704SC(paramBean, outputMap);
			mapper.getKKSV042705SC(paramBean, outputMap);
			mapper.getKKSV042706SC(paramBean, outputMap);
			mapper.getKKSV042708SC(paramBean, outputMap);
			//mapper.getKKSV042709SC(paramBean, outputMap);		// メール容量は、「コード名称管理」ではなく「料金コース_サブオプションサービス」から取得
			mapper.getKKSV042710SC(paramBean, outputMap);
			mapper.getKKSV042711SC(paramBean, outputMap);
			mapper.getKKSV042712SC(paramBean, outputMap);
			// ST2-2012-0000734 ADD START
			mapper.getKKSV042713SC(paramBean, outputMap);
			// ST2-2012-0000734 ADD END
			// 2012/06/27 v4.00.00 【ANK-0364】ウィルスチェック非課金登録対応 MOD START
			mapper.getKKSV042714SC(paramBean, outputMap);
			// 2012/06/27 v4.00.00 【ANK-0364】ウィルスチェック非課金登録対応 MOD END
			
// v6.03 ADD START
			
			// 出力判定
			setSbopInf(paramBean);
// v6.03 ADD END
			
			
			// メール容量のリスト設定のための内部データ設定
			//メールボックス容量選択値のオプション値を計算
			TreeMap<Integer, String> mlbox_op_list = calclulateMailBoxCapacities(paramBean[0]);
			Set<Entry<Integer, String>> mlboxMap = mlbox_op_list.entrySet();
			
			// メールアドレス
			String mailAddress = paramBean[0].sendMessageString(KKW02501SFConst.MLAD, X31CWebConst.DATABEAN_GET_VALUE);
			// ST2-2012-0000410 2012/03/23 MOD START
			// String kibo_ml_account = paramBean[0].sendMessageString(KKW02501SFConst.KIBO_ML_ACCOUNT, X31CWebConst.DATABEAN_GET_VALUE);
			String kibo_ml_account = paramBean[0].sendMessageString(KKW02501SFConst.KIBO_ML_ACCOUNT_1, X31CWebConst.DATABEAN_GET_VALUE);
			String account = "";
			String domain = "";
			
			// メールアドレスがある場合、メールアドレスからアカウントとドメインをそれぞれ取得する
			if(mailAddress != null && !("".equals(mailAddress)))
			{
				// メールアドレスからアカウントとドメインをそれぞれ取得する
				account = getEmailAccountStr(mailAddress);
				domain = mailAddress.substring(account.length());
				// 希望メールアカウント表示フラグに未表示(0)を設定
				paramBean[0].sendMessageString(KKW02501SFConst.KIBO_ML_ACCOUNT_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, KIBO_ML_ACCOUNT_DISP_FLG_MI);
			}
			else
			{
				// 希望メールアカウントをアカウントに設定する
				account = kibo_ml_account;
				// 希望メールアカウント表示フラグに表示(1)を設定
				paramBean[0].sendMessageString(KKW02501SFConst.KIBO_ML_ACCOUNT_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, KIBO_ML_ACCOUNT_DISP_FLG_DISP);
			}
			// ST2-2012-0000410 2012/03/23 MOD END
			
			// メールアカウント、ドメイン
			paramBean[0].sendMessageString(KKW02501SFConst.MLAD_ACCOUNT, X31CWebConst.DATABEAN_SET_VALUE, account);
			paramBean[0].sendMessageString(KKW02501SFConst.MLAD_DOMAIN, X31CWebConst.DATABEAN_SET_VALUE, domain);
			
			
			
			// ウイルスチェック有無
			String	sbop_svckei_no_vchk = paramBean[0].sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_D03, X31CWebConst.DATABEAN_GET_VALUE);
			
			if(sbop_svckei_no_vchk == null || "".equals(sbop_svckei_no_vchk))
			{
				paramBean[0].sendMessageString(KKW02501SFConst.CHGBF_VIRUS_CHK_FLG, X31CWebConst.DATABEAN_SET_VALUE, CD00002_OFF);
			}
			else
			{
				paramBean[0].sendMessageString(KKW02501SFConst.CHGBF_VIRUS_CHK_FLG, X31CWebConst.DATABEAN_SET_VALUE, CD00002_ON);
			}
			
			// TODO:ウイルスチェック区分名を設定、コード区分名が取得出来ていれば区分名から設定が望ましい
			if(sbop_svckei_no_vchk == null || "".equals(sbop_svckei_no_vchk))
			{
				paramBean[0].sendMessageString(KKW02501SFConst.VIRUS_CHK, X31CWebConst.DATABEAN_SET_VALUE, "無");
			}
			else
			{
				paramBean[0].sendMessageString(KKW02501SFConst.VIRUS_CHK, X31CWebConst.DATABEAN_SET_VALUE, "有");
			}
			
			// 2012/07/12 v4.01.00 【ANK-0571-00-00】オプションの表示用サービス開始日変更対応 DEL START
//			// 利用開始日
//			paramBean[0].sendMessageString(KKW02501SFConst.USE_STAYMD, X31CWebConst.DATABEAN_SET_VALUE,
//					paramBean[0].sendMessageString(KKW02501SFConst.SVC_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE));
			// 2012/07/12 v4.01.00 【ANK-0571-00-00】オプションの表示用サービス開始日変更対応 DEL END
			
			// 処理区分取得
			String trans_div = paramBean[0].sendMessageString(KKW02501SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
			
			if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trans_div))
			{
				// ▼▼▼ IT1-2012-0001547 Delete Start ▼▼▼
//				/* 【START】日付項目の初期表示対応
//				// 処理区分"解約"
//				String unyo_ymd = paramBean[0].sendMessageString(KKW02501SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
//				
//				if(unyo_ymd != null && !("".equals(unyo_ymd)))
//				{*/
//					 // 利用終了日（年）
//					paramBean[0].sendMessageString(KKW02501SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, "");
//					 // 利用終了日（月）
//					paramBean[0].sendMessageString(KKW02501SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_SET_VALUE, "");
//					 // 利用終了日（日）
//					paramBean[0].sendMessageString(KKW02501SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, "");
////				}
				// ▲▲▲ IT1-2012-0001547 Delete End ▲▲▲
				// ▼▼▼ IT1-2012-0001547 Add Start ▼▼▼
				// 処理区分"解約"
				String unyo_ymd = paramBean[0].sendMessageString(KKW02501SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
				
				if(unyo_ymd != null && !("".equals(unyo_ymd)) && 8 == unyo_ymd.length())
				{
					 // 利用終了日（年）
					paramBean[0].sendMessageString(KKW02501SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(0, 4));
					 // 利用終了日（月）
					paramBean[0].sendMessageString(KKW02501SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(4, 6));
					 // 利用終了日（日）
					paramBean[0].sendMessageString(KKW02501SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(6, 8));
				}
				// ▲▲▲ IT1-2012-0001547 Add End ▲▲▲
			}
			else if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trans_div))
			{
				// 処理区分"更新"
				paramBean[0].sendMessageString(KKW02501SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE,
						paramBean[0].sendMessageString(KKW02501SFConst.SVC_END_YMD, X31CWebConst.DATABEAN_GET_VALUE));
				
				X31SDataBeanAccess subDatabean = null;
				X31SDataBeanAccessArray pulldown_list = null;
				
				// 容量(プルダウン初期表示位置設定)
//				X31SDataBeanAccessArray pulldown_list = paramBean[0].getDataBeanArray(KKW02501SFConst.MAIL_CAPA_INFO);
//				X31SDataBeanAccess subDatabean = null;
//				String capa = paramBean[0].sendMessageString(KKW02501SFConst.CAPA, X31CWebConst.DATABEAN_GET_VALUE);
//				String capa_cd = getCapacdByMailCapa(capa);
//				setPullDownIdx(pulldown_list, capa_cd);		
//				paramBean[0].sendMessageString(KKW02501SFConst.CHGBF_CAPA_IDX, X31CWebConst.DATABEAN_SET_VALUE,
//						subDatabean.sendMessageString(KKW02501SFConst.INDEX_04, X31CWebConst.DATABEAN_GET_VALUE));
				
				//編集エリアにメールの現在設定値を設定
				paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_MLAD_ACCOUNT_O, X31CWebConst.DATABEAN_SET_VALUE, account);
				
				
				//編集エリアにメールエイリアスの現在設定値を設定
				String alias_bf = paramBean[0].sendMessageString(KKW02501SFConst.ALIAS, X31CWebConst.DATABEAN_GET_VALUE);
//				String alias_o = (String)alias_bf.split("@")[0];
//				paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_ALIAS_O, X31CWebConst.DATABEAN_SET_VALUE, alias_o);
				paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_ALIAS_O, X31CWebConst.DATABEAN_SET_VALUE, alias_bf);
				
				// メールボックス容量のオプション値を設定
				String selectedInd = null;
				
				pulldown_list = paramBean[0].getDataBeanArray(KKW02501SFConst.MAIL_CAPA_INFO);
				subDatabean = pulldown_list.getDataBean(0);
				paramBean[0].sendMessageString(KKW02501SFConst.CHGBF_CAPA_IDX, X31CWebConst.DATABEAN_SET_VALUE,
						subDatabean.sendMessageString(KKW02501SFConst.INDEX_04, X31CWebConst.DATABEAN_GET_VALUE));
				
				
				String capa = paramBean[0].sendMessageString(KKW02501SFConst.CAPA, X31CWebConst.DATABEAN_GET_VALUE);	// 現在（変更前）の容量
				
				// 現在の容量が未設定の場合、暫定対応で"0[MB]"を設定
				if(capa == null || "".equals(capa))
				{
					capa = "0";
				}
				
				//プルダウン情報Beanのコードリスト領域のクリアを行います
				subDatabean.sendMessage(KKW02501SFConst.CD_DIV_LIST_04, X31CWebConst.DATABEAN_CLEAR);
				//プルダウン情報Beanのコードリスト名領域のクリアを行います
				subDatabean.sendMessage(KKW02501SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_CLEAR);
				
				subDatabean.sendMessageString(KKW02501SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, "");
				subDatabean.sendMessageString(KKW02501SFConst.CD_DIV_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, "");

				int cnt1 = 1;
				for (Entry<Integer, String> entr: mlboxMap)
				{
					String buf = Integer.toString(cnt1);
					
					String mbVal = String.valueOf(entr.getKey());
	
					//メールボックス容量オプション名
					StringBuilder strBuf = new StringBuilder(buf).append(". ").append(entr.getValue());
					subDatabean.sendMessageString(KKW02501SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, strBuf.toString());
					subDatabean.sendMessageString(KKW02501SFConst.CD_DIV_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, mbVal);
	
					if (entr.getKey().intValue() <= Integer.parseInt(capa))
					{
						selectedInd = String.valueOf(cnt1);
					}
	
					cnt1 ++;
				}
				// プルダウンリストの現在のインデックスを変更前メールBOX容量インデックスに設定
				subDatabean = pulldown_list.getDataBean(0);
				subDatabean.sendMessageString(KKW02501SFConst.INDEX_04, X31CWebConst.DATABEAN_SET_VALUE, selectedInd);
				//jsから見た場合、subDataBeanからじゃ取れないので、サービスフォームビンにも設定しとくこと(ディグレなしと思われる)
				paramBean[0].sendMessageString(KKW02501SFConst.CHGBF_CAPA_IDX, X31CWebConst.DATABEAN_SET_VALUE, selectedInd);
				
				// ウイルスチェック(プルダウン初期表示位置設定)
				pulldown_list = paramBean[0].getDataBeanArray(KKW02501SFConst.VIRUS_CHK_INFO);
				String vchek = paramBean[0].sendMessageString(KKW02501SFConst.CHGBF_VIRUS_CHK_FLG, X31CWebConst.DATABEAN_GET_VALUE);
				setPullDownIdx(pulldown_list, vchek);
				// プルダウンリストの現在のインデックスを変更前ウイルスチェックインデックスに設定
				subDatabean = pulldown_list.getDataBean(0);
				paramBean[0].sendMessageString(KKW02501SFConst.CHGBF_VCHK_IDX, X31CWebConst.DATABEAN_SET_VALUE,
						subDatabean.sendMessageString(KKW02501SFConst.INDEX_04, X31CWebConst.DATABEAN_GET_VALUE));
			}
			else if(JKKCommonConst.OP_TRAN_DIV_SHOKAI.equals(trans_div) ||
					JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trans_div) ||
					JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trans_div))
			{
				// 処理区分"照会" or "回復" or "予約取消"
				paramBean[0].sendMessageString(KKW02501SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE,
						paramBean[0].sendMessageString(KKW02501SFConst.SVC_END_YMD, X31CWebConst.DATABEAN_GET_VALUE));
			}
			// 2012/06/27 v4.00.00 【ANK-0364】ウィルスチェック非課金登録対応 MOD START
			// 課金有無表示フラグ
			Boolean chrg_um_dsp_flg = false;
			// 変更前ウイルスチェック
			String chgbf_virus_chk_flg = paramBean[0].sendMessageString(KKW02501SFConst.CHGBF_VIRUS_CHK_FLG, X31CWebConst.DATABEAN_GET_VALUE);
			// オプションサービス契約ステータス
			String op_svc_kei_stat = paramBean[0].sendMessageString(KKW02501SFConst.OP_SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
			// サービス開始後料金計算日
			String svc_sta_af_prc_calc_ymd = paramBean[0].sendMessageString(KKW02501SFConst.SVC_STA_AF_PRC_CALC_YMD, X31CWebConst.DATABEAN_GET_VALUE);
			// 運用日
			String unyo_ymd = paramBean[0].sendMessageString(KKW02501SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
			
			if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trans_div))
			{
				if(!JKKCommonConst.SVC_KEI_STAT_010.equals(op_svc_kei_stat) &&
					!JKKCommonConst.SVC_KEI_STAT_020.equals(op_svc_kei_stat) &&
					!JKKCommonConst.SVC_KEI_STAT_030.equals(op_svc_kei_stat))
				{
					// ▼▼▼ IT1-2012-0001566 Delete Start ▼▼▼
//					if(CD00002_ON.equals(chgbf_virus_chk_flg) &&
//						0 < JPCDateUtil.subtractDay(svc_sta_af_prc_calc_ymd, unyo_ymd))
//					{
//						chrg_um_dsp_flg = true;
//						paramBean[0].sendMessageString(KKW02501SFConst.CHRG_UM, X31CWebConst.DATABEAN_SET_VALUE, "0");
//					}
					// ▲▲▲ IT1-2012-0001566 Delete End ▲▲▲
					// ▼▼▼ IT1-2012-0001566 Add Start ▼▼▼
					if(CD00002_ON.equals(chgbf_virus_chk_flg) && null != svc_sta_af_prc_calc_ymd && !("".equals(svc_sta_af_prc_calc_ymd)))
					{
						// v5.00 2013/01/14 ANK-1173-00-00 MOD START
//						if(0 < JPCDateUtil.subtractDay(svc_sta_af_prc_calc_ymd, unyo_ymd))
						if(0 <= JPCDateUtil.subtractDay(svc_sta_af_prc_calc_ymd, unyo_ymd))
						// v5.00 2013/01/14 ANK-1173-00-00 MOD END
						{
							chrg_um_dsp_flg = true;
							paramBean[0].sendMessageString(KKW02501SFConst.CHRG_UM, X31CWebConst.DATABEAN_SET_VALUE, "0");
						}
					}
					// ▲▲▲ IT1-2012-0001566 Add End ▲▲▲
				}
			}
			paramBean[0].sendMessageBoolean(KKW02501SFConst.CHRG_UM_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, chrg_um_dsp_flg);
			// 2012/06/27 v4.00.00 【ANK-0364】ウィルスチェック非課金登録対応 MOD END
			//IT1-2013-0001648 2013/10/30 ADD START
			String capaStr = fineCapa(Integer.valueOf(paramBean[0].sendMessageString(KKW02501SFConst.CAPA_BF, X31CWebConst.DATABEAN_GET_VALUE)));
			paramBean[0].sendMessageString(KKW02501SFConst.CAPA_BF, X31CWebConst.DATABEAN_SET_VALUE,capaStr);
			//IT1-2013-0001648 2013/10/30 ADD END
		}
	}

// v6.03 ADD START
	
	/**
	 * 
	 * サブオプション情報を画面出力するかどうかの判定を行う.
	 * 不要である場合,空白を設定.
	 * 
	 * @param para
	 */
	private void setSbopInf(X31SDataBeanAccess[] para) {
		
		// 処理実施有無判定
		if(!para[0].sendMessageBoolean(KKW02501SFConst.KAIHK_CNSL_FLG, X31CWebConst.DATABEAN_GET_VALUE))
			return;
		
		// 処理区分
		String div = para[0].sendMessageString(KKW02501SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		
		if (div.equals(JKKCommonConst.OP_TRAN_DIV_KAIHK)) {
			
			/* 回復異動時 */
			
			// メールエイリアス
			if (!isRetSbopInfForKaihk(para, KKW02501SFConst.MSKM_DTL_NO, KKW02501SFConst.SBOP_MSKM_DTL_KKSV042704SC))
				para[0].sendMessageString(KKW02501SFConst.ALIAS, X31CWebConst.DATABEAN_SET_VALUE, "");
			
			// ＶＣ
			if (!isRetSbopInfForKaihk(para, KKW02501SFConst.MSKM_DTL_NO, KKW02501SFConst.SBOP_MSKM_DTL_KKSV042708SC))
				para[0].sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_D03, X31CWebConst.DATABEAN_SET_VALUE, "");
			
		} else if (div.equals(JKKCommonConst.OP_TRAN_DIV_RSV_CL)) {
			
			/* 予約取消異動時 */
			
			// メールエイリアス
			if (!isRetSbopInfForRsvCl(para, para[0].sendMessageString(KKW02501SFConst.SBOP_STAT_KKSV042704SC, X31CWebConst.DATABEAN_GET_VALUE)))
				para[0].sendMessageString(KKW02501SFConst.ALIAS, X31CWebConst.DATABEAN_SET_VALUE, "");
				
			// ＶＣ
			if (!isRetSbopInfForRsvCl(para, para[0].sendMessageString(KKW02501SFConst.SBOP_STAT_KKSV042708SC, X31CWebConst.DATABEAN_GET_VALUE)))
				para[0].sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_D03, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
	}
	
	/**
	 * 
	 * 申込明細番号により,画面出力判定を実施
	 * 申込明細番号が不一致はNG判定.
	 * 
	 * ※ オプションの回復異動時のみ使用する事.
	 * 
	 * @param  para
	 * @param  opMskmDtlNoKey
	 * @param  sbopKey
	 * @return true：OK、false：NG
	 */
	private boolean isRetSbopInfForKaihk(X31SDataBeanAccess[] para, String opMskmDtlNoKey, String sbopKey) {
		
		String opMksmDtlNo = para[0].sendMessageString(opMskmDtlNoKey, X31CWebConst.DATABEAN_GET_VALUE);
		String tgMskmDtlNo = para[0].sendMessageString(sbopKey,        X31CWebConst.DATABEAN_GET_VALUE);
		
		if (JKKStringUtil.isNullBlank(opMksmDtlNo) || JKKStringUtil.isNullBlank(tgMskmDtlNo))
			return true;
		
		if (opMksmDtlNo.equals(tgMskmDtlNo))
			return true;
		
		return false;
	}
	
	/**
	 * 
	 * サブオプションサービス契約ステータスにより,画面出力判定を実施.
	 * [キャンセル済][解約済]はNG判定.
	 * 
	 * ※ オプションの予約取消異動時のみ使用する事.
	 * 
	 * @param  para
	 * @param  stat
	 * @return true：OK、false：NG
	 */
	private boolean isRetSbopInfForRsvCl(X31SDataBeanAccess[] para, String stat) {
		
		// とりあえず,サービスのステータスを定義
		final List<String> conStatList = Arrays.asList(new String[] {JKKCommonConst.SVC_KEI_STAT_910, JKKCommonConst.SVC_KEI_STAT_920});
		
		if (!conStatList.contains(stat))
			return true;
		
		return false;
	}
	
// v6.03 ADD END
	/**
	 * 変更状態の設定処理<BR>
	 * 更新サービス用に設定処理を行う<BR>
	 * サブオプションサービス契約リスト作成処理の前に行うこと
	 * @param paramBean DataBeanアクセス配列
	 * @return なし
	 */
	private void setChgFlags(X31SDataBeanAccess[] paramBean)
	{
		// 変更後データの設定
		String chgAccount = paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_MLAD_ACCOUNT_O, X31CWebConst.DATABEAN_GET_VALUE);
		String domain = paramBean[0].sendMessageString(KKW02501SFConst.MLAD_DOMAIN, X31CWebConst.DATABEAN_GET_VALUE);
	// ST2-2012-0000410 2012/03/23 MOD START
	//	String kibo_ml_account = paramBean[0].sendMessageString(KKW02501SFConst.KIBO_ML_ACCOUNT, X31CWebConst.DATABEAN_GET_VALUE);
	//	String kibo_ml_account = paramBean[0].sendMessageString(KKW02501SFConst.KIBO_ML_ACCOUNT_1, X31CWebConst.DATABEAN_GET_VALUE);
		String chgMailAddress = chgAccount + domain;
		String mlad_bf = paramBean[0].sendMessageString(KKW02501SFConst.MLAD, X31CWebConst.DATABEAN_GET_VALUE);

	//	// 希望メールアカウントがない場合
	//	if("".equals(kibo_ml_account))
	//	{
	//		// メールアドレスの変更がない場合は、「変更後メールアドレス」は変更前の値を設定する
	//		if("".equals(chgAccount))
	//		{
	//			chgMailAddress = mlad_bf;
	//		}
	//	}
	//	// 希望メールアカウントがある場合、変更後メールアドレスに空文字を設定
	//	else
	//	{
	//		chgMailAddress = "";
	//	}
	// ST2-2012-0000410 2012/03/23 MOD END
		paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_MLAD, X31CWebConst.DATABEAN_SET_VALUE, chgMailAddress);
		//画面表示用にも同じく設定
		paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_MLAD_ACCOUNT_O, X31CWebConst.DATABEAN_SET_VALUE, chgAccount);
		
		setListSelectData(paramBean, KKW02501SFConst.MAIL_CAPA_INFO, KKW02501SFConst.CHGAF_CAPA_CD, KKW02501SFConst.CHGAF_CAPA_O);
		
		// 容量コード → 容量（MB）への変換
		//IT1-2013-0001655 2013/10/24 MOD START
		//String mail_capa = paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_CAPA_CD, X31CWebConst.DATABEAN_GET_VALUE);
		//IT1-2013-0001655 2013/10/24 MOD END
		//IT1-2013-0001655 2013/10/24 ADD START
		String mail_capa = null;
		// IT1-2013-0001664 MOD START
		//if("1".equals(paramBean[0].sendMessageString(KKW02501SFConst.ML_VRSETTE_HKTGI_FLG, X31CWebConst.DATABEAN_GET_VALUE))&& paramBean[0].sendMessageBoolean(KKW02501SFConst.MLAD_CHG_UM_FLG, X31CWebConst.DATABEAN_GET_VALUE)){
		if(paramBean[0].sendMessageBoolean(KKW02501SFConst.MLAD_CHG_UM_FLG, X31CWebConst.DATABEAN_GET_VALUE)){
		//IT1-2013-0001664 MOD END
			mail_capa =paramBean[0].sendMessageString(KKW02501SFConst.CAPA, X31CWebConst.DATABEAN_GET_VALUE);
		}else{
			mail_capa = paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_CAPA_CD, X31CWebConst.DATABEAN_GET_VALUE);
			//IT1-2013-0001664 DEL START
			//mail_capa =paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_CAPA, X31CWebConst.DATABEAN_SET_VALUE, mail_capa);
			//IT1-2013-0001664 DEL END
		}
		//IT1-2013-0001655 2013/10/24 ADD END
		paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_CAPA, X31CWebConst.DATABEAN_SET_VALUE, mail_capa);

		// 追加容量設定
		String mail_capa_bf = paramBean[0].sendMessageString(KKW02501SFConst.CAPA, X31CWebConst.DATABEAN_GET_VALUE);
		String mail_capa_default = paramBean[0].sendMessageString(KKW02501SFConst.CAPA_DEFAULT, X31CWebConst.DATABEAN_GET_VALUE);
		int mail_capa_new_val = Integer.parseInt(mail_capa);
		int mail_capa_default_val = Integer.parseInt(mail_capa_default);
		String mail_add_capa = null;
		if(mail_capa_new_val >= mail_capa_default_val )
		{
			mail_add_capa = String.valueOf(mail_capa_new_val - mail_capa_default_val);
		}
		else
		{
			mail_add_capa = String.valueOf("0");
		}
		
		paramBean[0].sendMessageString(KKW02501SFConst.ADD_CAPA, X31CWebConst.DATABEAN_SET_VALUE, mail_add_capa);
		
		// ウイルスチェックコード値の設定
		setListSelectData(paramBean, KKW02501SFConst.VIRUS_CHK_INFO, KKW02501SFConst.CHGAF_VIRUS_CHK_CD ,  KKW02501SFConst.CHGAF_VIRUS_CHK);
		
		// メールアドレス変更状態設定
		if(mlad_bf.equals(chgMailAddress) || "".equals(chgAccount))
		{
			paramBean[0].sendMessageString(KKW02501SFConst.MLAD_CHG_FLG, X31CWebConst.DATABEAN_SET_VALUE, CHG_TYPE_NOCHG);
		}
		else
		{
			paramBean[0].sendMessageString(KKW02501SFConst.MLAD_CHG_FLG, X31CWebConst.DATABEAN_SET_VALUE, CHG_TYPE1);			
		}
		
		// 2013/8/13 IT1-2013-0001584 Mod Start
		// メールエイリアス変更状態設定
		if(mlad_bf.equals(chgMailAddress) || "".equals(chgAccount))
		{
			// メールアドレスの変更がない場合
			String alias_bf = paramBean[0].sendMessageString(KKW02501SFConst.ALIAS, X31CWebConst.DATABEAN_GET_VALUE);
			String chgafAlias = paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_ALIAS_O, X31CWebConst.DATABEAN_GET_VALUE);
			if(alias_bf.equals(chgafAlias) || "".equals(chgafAlias))
			{
				paramBean[0].sendMessageString(KKW02501SFConst.ALIAS_CHG_FLG, X31CWebConst.DATABEAN_SET_VALUE, CHG_TYPE_NOCHG);
			}
			else
			{
				// サブオプションサービス契約番号（エイリアス用）が存在すれば変更、しない場合は新規登録
				String sbop_svc_no_alias = paramBean[0].sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_D01, X31CWebConst.DATABEAN_GET_VALUE);
				
				if("".equals(sbop_svc_no_alias))
				{
					paramBean[0].sendMessageString(KKW02501SFConst.ALIAS_CHG_FLG, X31CWebConst.DATABEAN_SET_VALUE, CHG_TYPE1);
				}
				else
				{
					paramBean[0].sendMessageString(KKW02501SFConst.ALIAS_CHG_FLG, X31CWebConst.DATABEAN_SET_VALUE, CHG_TYPE2);
				}
			}
		}
		else
		{
			// メールアドレスの変更がある場合はエイリアスは解約・キャンセルする
			paramBean[0].sendMessageString(KKW02501SFConst.ALIAS_CHG_FLG, X31CWebConst.DATABEAN_SET_VALUE, CHG_TYPE_NOCHG);
		}
		// 2013/8/13 IT1-2013-0001584 Mod End
		
		// メール容量変更状態設定
		if(mail_capa_bf.equals(mail_capa) || "".equals(mail_capa))
		{
			paramBean[0].sendMessageString(KKW02501SFConst.CAPA_CHG_FLG, X31CWebConst.DATABEAN_SET_VALUE, CHG_TYPE_NOCHG);
		}
		else
		{
			// サブオプションサービス契約番号（容量用）が存在すれば変更、しない場合は新規登録
			String sbop_svc_no_capa = paramBean[0].sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_D02, X31CWebConst.DATABEAN_GET_VALUE);
			
			if("".equals(sbop_svc_no_capa))
			{
				paramBean[0].sendMessageString(KKW02501SFConst.CAPA_CHG_FLG, X31CWebConst.DATABEAN_SET_VALUE, CHG_TYPE1);
			}
			else
			{
				paramBean[0].sendMessageString(KKW02501SFConst.CAPA_CHG_FLG, X31CWebConst.DATABEAN_SET_VALUE, CHG_TYPE2);
			}
		}
		
		// ウイルスチェック変更状態設定
		String vchk_cd = paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_VIRUS_CHK_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String vchk_cd_bf = paramBean[0].sendMessageString(KKW02501SFConst.CHGBF_VIRUS_CHK_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(vchk_cd_bf.equals(vchk_cd) || "".equals(vchk_cd))
		{
			paramBean[0].sendMessageString(KKW02501SFConst.VIRUS_CHK_CHG_FLG, X31CWebConst.DATABEAN_SET_VALUE, CHG_TYPE_NOCHG);
		}
		else
		{
			// 変更後ウイルスチェック内容で「"有"に変更」か「"無"に変更」かを設定
			
			if(CD00002_ON.equals(vchk_cd))
			{
				paramBean[0].sendMessageString(KKW02501SFConst.VIRUS_CHK_CHG_FLG, X31CWebConst.DATABEAN_SET_VALUE, CHG_TYPE1);
				paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_VIRUS_CHK, X31CWebConst.DATABEAN_SET_VALUE, "2. 有");
				
			}
			else
			{
				paramBean[0].sendMessageString(KKW02501SFConst.VIRUS_CHK_CHG_FLG, X31CWebConst.DATABEAN_SET_VALUE, CHG_TYPE2);
				paramBean[0].sendMessageString(KKW02501SFConst.CHGAF_VIRUS_CHK, X31CWebConst.DATABEAN_SET_VALUE, "1. 無");
			}
		}
	}
	
	/**
	 * サブオプションサービス契約リスト作成処理<BR>
	 * 更新サービス用に設定処理を行う<BR>
	 * 更新サービスへのマッピング前に行うこと
	 * @param paramBean DataBeanアクセス配列
	 * @param inputMap 入力データ
	 * @return なし
	 */
	private void setSbopsvckeiList(X31SDataBeanAccess[] paramBean)
	{
		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		
		beanTemp = paramBean[0];
		arraybean = beanTemp.getDataBeanArray(KKW02501SFConst.SBOP_SVC_KEI_INFO);
		X31SDataBeanAccess subbean = arraybean.getDataBean(0);
		
		if(subbean != null)
		{
			// いったんリストをクリア（更新確認の度に最新の画面内容を設定するため）
			arraybean.clearArray();
		}
		
		// メールエイリアス変更が存在する場合
		String alias_chg_flg = beanTemp.sendMessageString(KKW02501SFConst.ALIAS_CHG_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 2013/7/27 IT1-2013-0001584 Add Start
		String mlad_chg_flg = paramBean[0].sendMessageString(KKW02501SFConst.MLAD_CHG_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		String chgbfAlias = paramBean[0].sendMessageString(KKW02501SFConst.ALIAS, X31CWebConst.DATABEAN_GET_VALUE);
		// 2013/7/27 IT1-2013-0001584 Add End
		
		if(!(CHG_TYPE_NOCHG.equals(alias_chg_flg)) || (null != chgbfAlias && !("".equals(chgbfAlias)) && CHG_TYPE1.equals(mlad_chg_flg)))
		{
			subbean = arraybean.addDataBean();
			
			// サブオプションサービス契約番号(初期表示で「エイリアス」が存在しない場合は空白のままでよい)
			subbean.sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_03, X31CWebConst.DATABEAN_SET_VALUE, 
					beanTemp.sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_D01, X31CWebConst.DATABEAN_GET_VALUE));
			// 世代登録年月日時分秒(初期表示で「エイリアス」が存在しない場合は空白のままでよい)
			subbean.sendMessageString(KKW02501SFConst.GENE_ADD_DTM_03, X31CWebConst.DATABEAN_SET_VALUE, 
					beanTemp.sendMessageString(KKW02501SFConst.KK0401_GENE_ADD_DTM_D01, X31CWebConst.DATABEAN_GET_VALUE));
			// サブオプションサービスコード(何らかの変更があれば必ず設定する)
			subbean.sendMessageString(KKW02501SFConst.SBOP_SVC_CD_03, X31CWebConst.DATABEAN_SET_VALUE, SBOP_SVC_CD_ALIAS);
			// 更新年月日時分秒(初期表示で「エイリアス」が存在しない場合は空白のままでよい)
			subbean.sendMessageString(KKW02501SFConst.UPD_DTM_03, X31CWebConst.DATABEAN_SET_VALUE, 
					beanTemp.sendMessageString(KKW02501SFConst.UPD_DTM_BF_D01, X31CWebConst.DATABEAN_GET_VALUE));
			
		}
		
		// メール容量変更が存在する場合
		String capa_chg_flg = beanTemp.sendMessageString(KKW02501SFConst.CAPA_CHG_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(!(CHG_TYPE_NOCHG.equals(capa_chg_flg)))
		{
			subbean = arraybean.addDataBean();
			// サブオプションサービス契約番号(初期表示で「追加容量」が存在しない場合は空白のままでよい)
			subbean.sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_03, X31CWebConst.DATABEAN_SET_VALUE, 
					beanTemp.sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_D02, X31CWebConst.DATABEAN_GET_VALUE));
			// 世代登録年月日時分秒(初期表示で「追加容量」が存在しない場合は空白のままでよい)
			subbean.sendMessageString(KKW02501SFConst.GENE_ADD_DTM_03, X31CWebConst.DATABEAN_SET_VALUE, 
					beanTemp.sendMessageString(KKW02501SFConst.KK0401_GENE_ADD_DTM_D02, X31CWebConst.DATABEAN_GET_VALUE));
			// サブオプションサービスコード(何らかの変更があれば必ず設定する)
			subbean.sendMessageString(KKW02501SFConst.SBOP_SVC_CD_03, X31CWebConst.DATABEAN_SET_VALUE, SBOP_SVC_CD_MAIL_CAPA);
			// 更新年月日時分秒(初期表示で「追加容量」が存在しない場合は空白のままでよい)
			subbean.sendMessageString(KKW02501SFConst.UPD_DTM_03, X31CWebConst.DATABEAN_SET_VALUE, 
					beanTemp.sendMessageString(KKW02501SFConst.UPD_DTM_BF_D02, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// ウイルスチェック変更が存在する場合
		String virus_chk_chg_flg = beanTemp.sendMessageString(KKW02501SFConst.VIRUS_CHK_CHG_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(!(CHG_TYPE_NOCHG.equals(virus_chk_chg_flg)))
		{
			subbean = arraybean.addDataBean();

			// サブオプションサービス契約番号(初期表示で「ウイルスチェック無」の場合は空白のままでよい)
			subbean.sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_03, X31CWebConst.DATABEAN_SET_VALUE, 
					beanTemp.sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_D03, X31CWebConst.DATABEAN_GET_VALUE));
			// 世代登録年月日時分秒(初期表示で「ウイルスチェック無」の場合は空白のままでよい)
			subbean.sendMessageString(KKW02501SFConst.GENE_ADD_DTM_03, X31CWebConst.DATABEAN_SET_VALUE, 
					beanTemp.sendMessageString(KKW02501SFConst.KK0401_GENE_ADD_DTM_D03, X31CWebConst.DATABEAN_GET_VALUE));
			// サブオプションサービスコード(何らかの変更があれば必ず設定する)
			subbean.sendMessageString(KKW02501SFConst.SBOP_SVC_CD_03, X31CWebConst.DATABEAN_SET_VALUE, SBOP_SVC_CD_VCHK);
			// 更新年月日時分秒(初期表示で「ウイルスチェック無」の場合は空白のままでよい)
			subbean.sendMessageString(KKW02501SFConst.UPD_DTM_03, X31CWebConst.DATABEAN_SET_VALUE, 
					beanTemp.sendMessageString(KKW02501SFConst.UPD_DTM_BF_D03, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
	}
	
	/**
	 * サービス課金終了年月日（サブオプションサービス契約：ウイルスチェック用）編集処理<BR>
	 * 更新サービス用に設定処理を行う<BR>
	 * 更新サービスへのマッピング前に行うこと
	 * @param paramBean DataBeanアクセス配列
	 * @return なし
	 * @throws Throwable 
	 */
	private void setVirusSvcChrgStaymd(X31SDataBeanAccess[] paramBean) throws Throwable
	{
		// 2012/11/02 v4.04 【ANK-1255-00-00】オプション解約に伴う課金制御 MOD STA
		// ウイルスチェック変更状態
		String virus_chk_chg_flg = paramBean[0].sendMessageString(KKW02501SFConst.VIRUS_CHK_CHG_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		// 課金有無表示フラグ
		Boolean chrg_um_dsp_flg = paramBean[0].sendMessageBoolean(KKW02501SFConst.CHRG_UM_DSP_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		// 課金有無
		String chrg_um = paramBean[0].sendMessageString(KKW02501SFConst.CHRG_UM, X31CWebConst.DATABEAN_GET_VALUE);
		// サービス課金開始年月日（サービス契約）
		String svcChrgStaYmd = paramBean[0].sendMessageString(KKW02501SFConst.SVC_CHRG_STAYMD, X31CWebConst.DATABEAN_GET_VALUE);
		// サービス利用開始日（サブオプションサービス契約）
		String virusSvcStaYmd = paramBean[0].sendMessageString(KKW02501SFConst.VIRUS_SVC_STAYMD, X31CWebConst.DATABEAN_GET_VALUE);
		// サービス利用終了日（サブオプションサービス契約）
		String virusSvcEndYmd = JCCWebCommon.getOpeDate(this, null);
		// サービス課金開始年月日
		String virus_svc_chrg_staymd = paramBean[0].sendMessageString(KKW02501SFConst.VIRUS_SVC_CHRG_STAYMD, X31CWebConst.DATABEAN_GET_VALUE);
//		// サービス開始後料金計算日
//		String svc_sta_af_prc_calc_ymd = paramBean[0].sendMessageString(KKW02501SFConst.SVC_STA_AF_PRC_CALC_YMD, X31CWebConst.DATABEAN_GET_VALUE);
//		// 運用日
		String unyo_ymd = paramBean[0].sendMessageString(KKW02501SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		// 編集後日付
		String edit_date = null;
		// 課金フラグ
		String chrg_flg = null;
		// 非課金判定結果
		HashMap<String, Object> trgtData = new HashMap<String, Object>();
		
		if(CHG_TYPE2.equals(virus_chk_chg_flg))
		{
			if(chrg_um_dsp_flg)
			{
				if(CHRG_M.equals(chrg_um))
				{
					// サービス課金終了年月日
					edit_date = JPCDateUtil.addDay(unyo_ymd, -1);
					// 解約時課金フラグ：0（非課金）
					chrg_flg = CHRG_FLG_M;
				}
				else
				{
					// 非課金判定部品呼出
					trgtData = getHiChrgJdg(svcChrgStaYmd, virusSvcStaYmd, virusSvcEndYmd);
					// サービス課金終了年月日
					edit_date = (String)trgtData.get("svcChrgEndYmd");
					// 課金フラグ
					chrg_flg = (String)trgtData.get("chrgFlg");
//					edit_date = JPCDateUtil.getEndOfMonth(svc_sta_af_prc_calc_ymd.substring(0, 6));
//					edit_date = svc_sta_af_prc_calc_ymd.substring(0, 6) + edit_date;
				}
			}
			else
			{
				if(null == virus_svc_chrg_staymd  || "".equals(virus_svc_chrg_staymd))
				{
					// サービス課金終了年月日（空）
					edit_date = "";
					// 解約時課金フラグ：0（非課金）
					chrg_flg = CHRG_FLG_M;
				}
				else
				{
					// 非課金判定部品呼出
					trgtData = getHiChrgJdg(svcChrgStaYmd, virusSvcStaYmd, virusSvcEndYmd);
					// サービス課金終了年月日
					edit_date = (String)trgtData.get("svcChrgEndYmd");
					// 課金フラグ
					chrg_flg = (String)trgtData.get("chrgFlg");
//					edit_date = JPCDateUtil.getEndOfMonth(unyo_ymd.substring(0, 6));
//					edit_date = unyo_ymd.substring(0, 6) + edit_date;
				}
			}
		}
		paramBean[0].sendMessageString(KKW02501SFConst.VIRUS_SVC_CHRG_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, edit_date);
		paramBean[0].sendMessageString(KKW02501SFConst.DSLJI_CHRG_FLG, X31CWebConst.DATABEAN_SET_VALUE, chrg_flg);
		// 2012/11/02 v4.04 【ANK-1255-00-00】オプション解約に伴う課金制御 MOD END
	}
	
	// 2012/11/02 v4.04 【ANK-1255-00-00】オプション解約に伴う課金制御 ADD STA
	/**
	 * 非課金判定処理<BR>
	 * 非課金判定部品を呼び出す<BR>
	 * @param svcChrgStaYmd サービス課金開始日（サービス契約）
	 * @param subOpSvcUseStaYmd サービス利用開始日（サブオプションサービス契約）
	 * @param subOpSvcUseEndYmd サービス利用終了日（サブオプションサービス契約）
	 * @return HashMap
	 */
	private HashMap<String, Object> getHiChrgJdg(String svcChrgStaYmd, String subOpSvcUseStaYmd, String subOpSvcUseEndYmd) throws Throwable
	{
		HashMap<String, Object> trgtData = new HashMap<String, Object>();
		
		// 非課金判定部品実行パラメータ作成
		trgtData.put("dslSbtFlg", OP_SBT);						// 解約種別フラグ
		trgtData.put("svcKeiChrgStaYmd", svcChrgStaYmd);		// サービス課金開始日（サービス契約）
		trgtData.put("subOpSvcUseStaYmd", subOpSvcUseStaYmd);	// サービス利用開始日（サブオプションサービス契約）
		trgtData.put("subOpSvcUseEndYmd", subOpSvcUseEndYmd);	// サービス利用終了日（サブオプションサービス契約）
		
		JKKWebCommon.jdgHiChrg(trgtData);
		
		return trgtData;
	}
	// 2012/11/02 v4.04 【ANK-1255-00-00】オプション解約に伴う課金制御 ADD END
	
	/**
	 * 更新サービス入力設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param inputMap 入力データ
	 * @param func_cd 機能コード
	 * @return なし
	 * @throws Throwable 
	 */
	private void setChgesrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> inputMap, String func_cd) throws Throwable
	{
		// 「更新確認」の場合だけDataBean編集する
		if(JPCModelConstant.FUNC_CD_2.equals(func_cd))
		{
			// エイジング対象リストの作成
			setAgingTgList(paramBean);

			setChgFlags(paramBean);
			setSbopsvckeiList(paramBean);
			
			// 2012/06/27 v4.00.00 【ANK-0364】ウィルスチェック非課金登録対応 ADD START
			setVirusSvcChrgStaymd(paramBean);
			// 2012/06/27 v4.00.00 【ANK-0364】ウィルスチェック非課金登録対応 ADD END
			
			// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
			// 進捗特記事項１
			paramBean[0].sendMessageString(KKW02501SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, EMAIL_INFO + CHGE);
			// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END
		}
		
		// 上りデータマッピング
		KKSV0428_KKSV0428OPDBMapper mapper = new KKSV0428_KKSV0428OPDBMapper();
		
		mapper.setEmailInfoChgCfmCC(paramBean, inputMap, func_cd);
		mapper.setJKKHakkoSODCC(paramBean, inputMap, func_cd);
		mapper.setKKSV0428WORK(paramBean, inputMap, func_cd);
		// 2013/02/22 [IT1-2013-0000299]申込画面入力支援ワーク情報更新呼出対応 ADD START
		mapper.setUpdMkmScinsprtWkCC(paramBean, inputMap, func_cd);
		// 2013/02/22 [IT1-2013-0000299]申込画面入力支援ワーク情報更新呼出対応 ADD END
	}

	/**
	 * 更新サービス結果設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param outputMap 出力データ
	 * @return なし
	 */
	private void storeDataBeanChgesrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> outputMap)
	{
		// 返却値は使用しないので何もしない
	}

	/**
	 * エイジング情報リスト作成処理<BR>
	 * 解約または回復または予約取消サービス用に設定処理を行う<BR>
	 * それぞれのサービスへのマッピング前に行うこと
	 * @param paramBean DataBeanアクセス配列
	 * @param inputMap 入力データ
	 * @return なし
	 */
	private void setAgingTgList(X31SDataBeanAccess[] paramBean)
	{
		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		
		beanTemp = paramBean[0];
		arraybean = beanTemp.getDataBeanArray(KKW02501SFConst.AGING_INFO);
		X31SDataBeanAccess subbean = arraybean.getDataBean(0);
		
		if(subbean != null)
		{
			// いったんリストをクリア（更新確認の度に最新の画面内容を設定するため）
			arraybean.clearArray();
		}
		
		// 変更前メールアドレスが存在する場合
		String mlad = paramBean[0].sendMessageString(KKW02501SFConst.MLAD, X31CWebConst.DATABEAN_GET_VALUE);
		// ST2-2012-0000410 2012/03/23 MOD START
		// String kibo_ml_account = paramBean[0].sendMessageString(KKW02501SFConst.KIBO_ML_ACCOUNT, X31CWebConst.DATABEAN_GET_VALUE);
		// String kibo_ml_account = paramBean[0].sendMessageString(KKW02501SFConst.KIBO_ML_ACCOUNT_1, X31CWebConst.DATABEAN_GET_VALUE);
		// ST2-2012-0000410 2012/03/23 MOD END
		
		String disp_flg = paramBean[0].sendMessageString(KKW02501SFConst.KIBO_ML_ACCOUNT_DISP_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		// 希望メールアカウントを表示していない場合
		//if(!("".equals(mlad)) && "".equals(kibo_ml_account))
		if(KIBO_ML_ACCOUNT_DISP_FLG_MI.equals(disp_flg))
		{
			subbean = arraybean.addDataBean();
			
			//エイジング情報Bean.エイジング種別コード
			subbean.sendMessageString(KKW02501SFConst.AGING_SBT_CD_05, X31CWebConst.DATABEAN_SET_VALUE, AGING_SBT_CD_MLAD);
			//エイジング情報Bean.エイジング対象値
			subbean.sendMessageString(KKW02501SFConst.AGING_TG_VALUE_05, X31CWebConst.DATABEAN_SET_VALUE, mlad);
		}
		
		// 変更前メールエイリアスが存在する場合
		String alias = paramBean[0].sendMessageString(KKW02501SFConst.ALIAS, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(!("".equals(alias)))
		{
			// ST3-2013-0000919 Add Start
			if(null != mlad && !("".equals(mlad)))
			{
				String	mldomain = "";
				int		idx = 0;
				
				idx = mlad.indexOf("@");
				
				if(idx > 0)
				{
					mldomain = mlad.substring(idx);
					
					alias = alias + mldomain;
				}
			}
			// ST3-2013-0000919 Add End
			subbean = arraybean.addDataBean();
			
			//エイジング情報Bean.エイジング種別コード
			subbean.sendMessageString(KKW02501SFConst.AGING_SBT_CD_05, X31CWebConst.DATABEAN_SET_VALUE, AGING_SBT_CD_ALIAS);
			//エイジング情報Bean.エイジング対象値
			subbean.sendMessageString(KKW02501SFConst.AGING_TG_VALUE_05, X31CWebConst.DATABEAN_SET_VALUE, alias);
		}
		
		// 変更前POPIDが存在する場合
		String popid = paramBean[0].sendMessageString(KKW02501SFConst.POPID, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(!("".equals(popid)))
		{
			subbean = arraybean.addDataBean();
			
			//エイジング情報Bean.エイジング種別コード
			subbean.sendMessageString(KKW02501SFConst.AGING_SBT_CD_05, X31CWebConst.DATABEAN_SET_VALUE, AGING_SBT_CD_POPID);
			//エイジング情報Bean.エイジング対象値
			subbean.sendMessageString(KKW02501SFConst.AGING_TG_VALUE_05, X31CWebConst.DATABEAN_SET_VALUE, popid);
		}
		
	}
	
	/**
	 * 解約サービス入力設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param inputMap 入力データ
	 * @param func_cd 機能コード
	 * @return なし
	 */
	private void setDslsrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> inputMap, String func_cd)
	{
		// 「更新確認」の場合だけDataBean編集する
		if(JPCModelConstant.FUNC_CD_2.equals(func_cd))
		{
			// 利用終了日
			String use_endymd = paramBean[0].sendMessageString(KKW02501SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE) +
								paramBean[0].sendMessageString(KKW02501SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_GET_VALUE) +
								paramBean[0].sendMessageString(KKW02501SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_GET_VALUE);
			paramBean[0].sendMessageString(KKW02501SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, use_endymd);

			// サービス課金終了年月日設定
			// 2012/11/22 [TAI-2012-0000091]暫定ロジック修正対応 DEL START
//			paramBean[0].sendMessageString(KKW02501SFConst.SVC_CHRG_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE,
//					paramBean[0].sendMessageString(KKW02501SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_GET_VALUE));
			// 2012/11/22 [TAI-2012-0000091]暫定ロジック修正対応 DEL END
			
			// エイジング対象リストの作成
			setAgingTgList(paramBean);

			// 返却メッセージIDをクリア
			paramBean[0].sendMessageString(KKW02501SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");

			// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
			// 進捗特記事項１
			paramBean[0].sendMessageString(KKW02501SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, EMAIL_INFO + DSL);
			// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END

		}
		
		// 上りデータマッピング
		KKSV0429_KKSV0429OPDBMapper mapper = new KKSV0429_KKSV0429OPDBMapper();
		mapper.setOpsvckeiDslCC(paramBean, inputMap, func_cd);
		mapper.setJKKHakkoSODCC(paramBean, inputMap, func_cd);
		mapper.setKKSV0429WORK01(paramBean, inputMap, func_cd);
		/* ++++++++++ v3.00.00 指示書CC呼び出し対応 修正開始 ++++++++++ */
		// 指示書CCのマッピング
		mapper.setAddSjishoCC(paramBean, inputMap, func_cd);
		/* ++++++++++ v3.00.00 指示書CC呼び出し対応 修正完了 ++++++++++ */
		// IT1-2012-0000930 DELETE START
//		/* ++++++++++ 2012/06/01 v3.03.00 AxM連携処理追加対応 MOD START ++++++++++ */
//		mapper.setJCKSV900101CC(paramBean, inputMap, func_cd);
//		/* ++++++++++ 2012/06/01 v3.03.00 AxM連携処理追加対応 MOD END   ++++++++++ */
		// IT1-2012-0000930 DELETE END
	}

	/**
	 * 解約サービス結果設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param outputMap 出力データ
	 * @return なし
	 */
	private void storeDataBeanDslsrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> outputMap)
	{
		// 下りデータマッピング
		KKSV0429_KKSV0429OPDBMapper mapper = new KKSV0429_KKSV0429OPDBMapper();
		mapper.getOpsvckeiDslCC(paramBean, outputMap);
	}

	/**
	 * 回復サービス入力設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param inputMap 入力データ
	 * @param func_cd 機能コード
	 * @return なし
	 */
	private void setKaihksrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> inputMap, String func_cd)
	{
		// 回復年月日設定
		String kaihk_ymd = paramBean[0].sendMessageString(KKW02501SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02501SFConst.KAIHK_YMD, X31CWebConst.DATABEAN_SET_VALUE, kaihk_ymd);
		
		// エイジング対象リストの作成
		setAgingTgList(paramBean);
		
		// 返却メッセージIDをクリア
		paramBean[0].sendMessageString(KKW02501SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
		// 進捗特記事項１
		paramBean[0].sendMessageString(KKW02501SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, EMAIL_INFO + KAIHK);
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END
		
		// 上りデータマッピング
		KKSV0430_KKSV0430OPDBMapper mapper = new KKSV0430_KKSV0430OPDBMapper();
		mapper.setOpsvckeiKaihkCC(paramBean, inputMap, func_cd);
		mapper.setJKKHakkoSODCC(paramBean, inputMap, func_cd);
		mapper.setKKSV0430WORK(paramBean, inputMap, func_cd);
		/* ++++++++++ v3.00.00 指示書CC呼び出し対応 修正開始 ++++++++++ */
		// 指示書CCのマッピング
		mapper.setAddSjishoCC(paramBean, inputMap, func_cd);
		/* ++++++++++ v3.00.00 指示書CC呼び出し対応 修正完了 ++++++++++ */
		// IT1-2012-0000930 DELETE START
//		/* ++++++++++ 2012/06/01 v3.03.00 AxM連携処理追加対応 MOD START ++++++++++ */
//		mapper.setJCKSV900101CC(paramBean, inputMap, func_cd);
//		/* ++++++++++ 2012/06/01 v3.03.00 AxM連携処理追加対応 MOD END   ++++++++++ */
		// IT1-2012-0000930 DELETE END
	}

	/**
	 * 回復サービス結果設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param outputMap 出力データ
	 * @return なし
	 */
	private void storeDataBeanKaihksrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> outputMap)
	{
		// 下りデータマッピング
		KKSV0430_KKSV0430OPDBMapper mapper = new KKSV0430_KKSV0430OPDBMapper();
		
		mapper.getOpsvckeiKaihkCC(paramBean, outputMap);
		
	}

	/**
	 * 予約取消サービス入力設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param inputMap 入力データ
	 * @param func_cd 機能コード
	 * @return なし
	 */
	private void setRsvclsrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> inputMap, String func_cd)
	{
		// エイジング対象リストの作成
		setAgingTgList(paramBean);
		
		// 返却メッセージIDをクリア
		paramBean[0].sendMessageString(KKW02501SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
		// 進捗特記事項１
		paramBean[0].sendMessageString(KKW02501SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, EMAIL_INFO + RSV_CLK);
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END
		
		// 上りデータマッピング
		KKSV0431_KKSV0431OPDBMapper mapper = new KKSV0431_KKSV0431OPDBMapper();
		
		mapper.setOpsvckeiCnslCC(paramBean, inputMap, func_cd);
		// 2013/01/24 [IT1-2013-0000167]キャンセルSOD発行対応 ADD START
		mapper.setJKKHakkoSODCC(paramBean, inputMap, func_cd);
		// 2013/01/24 [IT1-2013-0000167]キャンセルSOD発行対応 ADD END
		// 2013/02/22 [IT1-2013-0000299]申込画面入力支援ワーク情報更新呼出対応 ADD START
		mapper.setUpdMkmScinsprtWkCC(paramBean, inputMap, func_cd);
		// 2013/02/22 [IT1-2013-0000299]申込画面入力支援ワーク情報更新呼出対応 ADD END
	}
	
	/**
	 * 予約取消サービス結果設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param outputMap 出力データ
	 * @return なし
	 */
	private void storeDataBeanRsvclsrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> outputMap)
	{
		// 下りデータマッピング
		KKSV0431_KKSV0431OPDBMapper mapper = new KKSV0431_KKSV0431OPDBMapper();
		
		mapper.getOpsvckeiCnslCC(paramBean, outputMap);
	}

	/**
	 * 置換メッセージ取得処理<br>
	 * <br>
	 * 返却メッセージＩＤに対応する置換文字列を取得する。<br>
	 * <br>
	 * @param trandiv 処理区分
	 * @param rtn_msg_id 返却メッセージＩＤ
	 * @return 置換用メッセージ
	 */
	private String[] getMsgRep(String trandiv, String rtn_msg_id)
	{
		
		// 処理区分が解約の場合
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trandiv))
		{
			// TAI-2012-0000101 2013/01/21 DEL START
//			// 休止中未来日付（EKB5440-JW）
//			if (JPCOnlineMessageConstant.EKB5440_JW.equals(rtn_msg_id)) 
//			{
//				String[] str = {"休止中", "未来日指定の解約は"};
//				return str;
//			}
//			
//			// 未来日（EKB0270-NW）
//			if (JPCOnlineMessageConstant.EKB0270_NW.equals(rtn_msg_id)) 
//			{
//				String[] str = {"利用終了日", "運用日+60日", "日付"};
//				return str;
//			}
			// TAI-2012-0000101 2013/01/21 DEL END
			
			// 過去日(EKB0690-NW)
			if (JPCOnlineMessageConstant.EKB0690_NW.equals(rtn_msg_id)) 
			{
				String[] str = {"利用終了日", "過去"};
				return str;
			}
		}
		// 処理区分が回復の場合
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trandiv))
		{
			
			// 回復可能期間（EKB5440-JW）
			if (JPCOnlineMessageConstant.EKB5440_JW.equals(rtn_msg_id)) 
			{
				String[] str = {"回復可能期間外", "回復は"};
				return str;
			}
			
		}
		// IT2-2012-0001034 ADD START
		// 処理区分が予約取消の場合
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trandiv))
		{
			
			// 予約取消不可（EKB5420-JW）
			if (JPCOnlineMessageConstant.EKB5420_JW.equals(rtn_msg_id)) 
			{
				String[] str = {"オプション", "予約取消"};
				return str;
			}
		}
		// IT2-2012-0001034 ADD END

		return null;
		
	}

	/**
	 * Eメール文字列切り出し処理<BR>
	 * 指定されたメールアドレス文字列の"@"以前を切り出します
	 * @param srcMlad メールアドレス文字列
	 * @param trans_div 処理区分
	 * @return なし
	 */
	private String getEmailAccountStr(String srcMlad)
	{
		String	retStr = "";
		int		idx = 0;
		
		idx = srcMlad.indexOf("@");
		
		retStr = srcMlad.substring(0, idx);
		
		return retStr;
	}

//	/**
//	 * 無料設定値取得<BR>
//	 * メールBOX設定が「無料」となる場合のメール容量を取得する<BR>
//	 * 「無料」となる容量の場合は、サブオプションサービス契約<ISP>は存在しないか、
//	 * またはサブオプションサービス契約<ISP>.追加容量に"0"が設定されている。
//	 * @param svcFormBean
//	 * @return
//	 */
//	private Integer getFreeMailBoxCapacity(X31SDataBeanAccess svcFormBean)
//	{
//		//料金コース＿サブオプションサービス一覧照会結果
//		X31SDataBeanAccessArray arr = svcFormBean.getDataBeanArray(KKW02501SFConst.MLBOX_CAPA_SET_INFO);
//		X31SDataBeanAccess bean = arr.getDataBean(0);		//「メールボックス」だけなので１件のはず
//
//		//無料値
//		String freeVal = bean.sendMessageString(KKW02501SFConst.MRYO_VAL_06, X31CWebConst.DATABEAN_GET_VALUE);
//
//		return Integer.valueOf(freeVal);
//	}
//
	/**
	 * メールBOX容量選択プルダウン設定用リスト作成<BR>
	 * <容量,容量文字列>の1セットの配列を作成する
	 * @param svcFormBean
	 * @return
	 */
	private TreeMap<Integer, String> calclulateMailBoxCapacities(X31SDataBeanAccess svcFormBean)
	{
		TreeMap<Integer, String> ret = new TreeMap<Integer, String>();
		
		//料金コース＿サブオプションサービス一覧照会結果
		X31SDataBeanAccessArray arr = svcFormBean.getDataBeanArray(KKW02501SFConst.MLBOX_CAPA_SET_INFO);
		
		if(arr != null)
		{
			X31SDataBeanAccess bean = arr.getDataBean(0);		//「メールボックス」だけなので１件のはず
			
			//初期値
			String iniVal = bean.sendMessageString(KKW02501SFConst.SHK_VAL_06, X31CWebConst.DATABEAN_GET_VALUE);
			int iniInt = Integer.parseInt(iniVal);
			//最大値
			String maxVal = bean.sendMessageString(KKW02501SFConst.MAX_VAL_06, X31CWebConst.DATABEAN_GET_VALUE);
			int maxInt = Integer.parseInt(maxVal);
			//増減値
			String incVal = bean.sendMessageString(KKW02501SFConst.ZOUGEN_VAL_06, X31CWebConst.DATABEAN_GET_VALUE);
			int incInt = Integer.parseInt(incVal);
	
			for (int i = iniInt; i < maxInt; i += incInt)
			{
				ret.put(Integer.valueOf(i), fineCapa(i));
			}
			ret.put(Integer.valueOf(maxInt), fineCapa(maxInt));
	
			// 初期容量を設定（オプションサービス契約．容量への設定用）
			svcFormBean.sendMessageString(KKW02501SFConst.CAPA_DEFAULT, X31CWebConst.DATABEAN_SET_VALUE, iniVal);
		}

		return ret;
	}



	/**
	 * 容量文字列取得<BR>
	 * 1000MB以上は、*.*GBと表示する
	 * @param i 容量（MB単位）
	 * @return
	 */
	private String fineCapa(int i)
	{
		String ret;

		if (i >= 1000)
		{
			//IT1-2013-0001648 2013/10/30 MOD START
			//float p = ((float)i) / 1000.0F;
			float p = ((float)i) / 1024.0F;
			//IT1-2013-0001648 2013/10/30 MOD END
			int finep = (int)(p * 10.0F);		//小数点２位以下を切り捨て
			p = (float)finep / 10.0F;
			ret = String.valueOf(p) + "GB";
		}
		else
		{
			ret = String.valueOf(i) + "MB";
		}

		return ret;
	}
	
	/**
	 * プルダウンリスト選択位置設定処理<br>
	 * 引数に一致するコード値で、プルダウンリストの選択位置を設定します<br>
	 * <br>
	 * @param  pulldown_info  DataBean配列型項目
	 * @param  paramString    選択位置設定したいコード値
	 * @return boolean true: 選択位置を設定済み、false：引数に一致するコード値なし、先頭位置に初期化した
	 */
	private boolean setPullDownIdx(X31SDataBeanAccessArray pulldown_info, String paramString)
	{
		boolean result = false;
		X31SDataBeanAccess subbean = pulldown_info.getDataBean(0);
		int slistCnt = (Integer)subbean.sendMessage(KKW02501SFConst.CD_DIV_LIST_04, X31CWebConst.DATABEAN_GET_COUNT);
		
		if(paramString != null && !("".equals(paramString)))
		{
			for(int i = 0; i < slistCnt; i++)
			{
				// コード値を取得
				String cd_value = subbean.sendMessageString(KKW02501SFConst.CD_DIV_LIST_04, X31CWebConst.DATABEAN_GET_VALUE, i);
				
				//取得したコード値が、引数内容と合致すれば、そのインデックスを設定
				if(paramString.equals(cd_value))
				{
					subbean.sendMessageString(KKW02501SFConst.INDEX_04, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i));
					result = true;
					break;
				}
			}
		}
		
		if(!result)
		{
			// 指定された文字列に一致する内容が見つからなかった場合は先頭位置に初期化する
			subbean.sendMessageString(KKW02501SFConst.INDEX_04, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
		
		return result;
	}

	/**
	 * リスト選択内容のDataBeanへの設定処理<BR>
	 * プルダウンリストで選択された位置のコード値を、引数で指定されたDataBean項目に設定します
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @param srcListKey データ設定元のプルダウンリストの項目キー
	 * @param setBeanKey データ設定対象項目キー
	 */
	private void setListSelectData(X31SDataBeanAccess[] paramBean, String srcListKey, String setBeanKey, String setBeanKey2)
	{
		// プルダウンリストの選択内容の編集を行う。
		X31SDataBeanAccessArray pulldown_list = paramBean[0].getDataBeanArray(srcListKey);
		
		if(pulldown_list != null)
		{
			X31SDataBeanAccess subDatabean = pulldown_list.getDataBean(0);
			
			//ANK-3149-20-00 ADD START
			Boolean pack_flg = paramBean[0].sendMessageBoolean(KKW02501SFConst.FAMIPA_WRIB_UM_FLG, X31CWebConst.DATABEAN_GET_VALUE);
			String virus_chk_idx_bf = paramBean[0].sendMessageString(KKW02501SFConst.CHGBF_VIRUS_CHK_FLG, X31CWebConst.DATABEAN_GET_VALUE);
			//ANK-3149-20-00 ADD END
			
			// 添え字の取得
			//ANK-3149-20-00 MOD START
			//String stat_index = subDatabean.sendMessageString(KKW02501SFConst.INDEX_04, X31CWebConst.DATABEAN_GET_VALUE);
			String stat_index = "";
			if (pack_flg == true && "0".equals(virus_chk_idx_bf) && KKW02501SFConst.CHGAF_VIRUS_CHK_CD.equals(setBeanKey))
			{
				stat_index = "1";
			}
			else
			{
				stat_index = subDatabean.sendMessageString(KKW02501SFConst.INDEX_04, X31CWebConst.DATABEAN_GET_VALUE);
			}
			//ANK-3149-20-00 MOD END
			
			// 添え字からコードを取得
			String cd_value = subDatabean.sendMessageString(KKW02501SFConst.CD_DIV_LIST_04, X31CWebConst.DATABEAN_GET_VALUE, 
					Integer.parseInt(stat_index));

			// 添え字からコード名を取得
			String cd_nm_value = subDatabean.sendMessageString(KKW02501SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_GET_VALUE, 
					Integer.parseInt(stat_index));
			
			// コード値を引数で指定した項目に設定
			paramBean[0].sendMessageString(setBeanKey, X31CWebConst.DATABEAN_SET_VALUE, cd_value);
		
			// コード名を引数で指定した項目に設定
			paramBean[0].sendMessageString(setBeanKey2, X31CWebConst.DATABEAN_SET_VALUE, cd_nm_value);
		
		}
	}
	
//	/**
//	 * メールBOX容量コード取得処理<br>
//	 * <br>
//	 * @param  capa_cd  容量
//	 * @return String 容量に一致する容量コード値
//	 */
//	private String getCapacdByMailCapa(String capa)
//	{
//		String capa_cd = "";
//		
//		for(int i = 0;i < CAPA_LIST.length; i++)
//		{
//			if(CAPA_LIST[i].equals(capa))
//			{
//				capa_cd = CAPA_CD_LIST[i];
//				break;
//			}
//		}
//		
//		return capa_cd;
//	}
//	
//	/**
//	 * メールBOX容量設定取得処理<br>
//	 * <br>
//	 * @param  capa_cd  容量コード
//	 * @return String 容量コードに一致する容量値文字列
//	 */
//	private String getMailCapaByCapacd(String capa_cd)
//	{
//		String capa = "";
//		
//		for(int i = 0;i < CAPA_CD_LIST.length; i++)
//		{
//			if(CAPA_CD_LIST[i].equals(capa_cd))
//			{
//				capa = CAPA_LIST[i];
//				break;
//			}
//		}
//		
//		return capa;
//	}
	// IT1-2012-0000930 ADD START
	/**
	 * AxM連携サービスの呼出処理
	 * @param paramBean DataBeanアクセス配列
	 * @return なし
	 */
	@SuppressWarnings("unchecked")
	private void exeAxmRenkei(X31SDataBeanAccess[] paramBean, HashMap inputMap)
	{
		// 処理区分取得
		String trans_div = paramBean[0].sendMessageString(KKW02501SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 処理区分が解約の場合、即日解約の場合にのみ実施する
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trans_div))
		{
			HashMap<String, Object> KKSV0429WORK01 = null;	// 実行条件判定マップ
			String unyo_ymd = null;							// 運用年月日
			String svc_endymd = null;						// サービス終了年月日
			
			// 実行条件判定マップの取得
			KKSV0429WORK01 = (HashMap<String, Object>)inputMap.get("KKSV0429WORK01");
			
			if(KKSV0429WORK01 != null)
			{
				unyo_ymd = (String)KKSV0429WORK01.get("unyo_ymd");
				svc_endymd = (String)KKSV0429WORK01.get("svc_endymd");
			}
			// 判定処理：未来日解約なら実行しない
			if (unyo_ymd == null || svc_endymd == null || "".equals(unyo_ymd))
			{
				return;
			}
			else
			{
				if(!(unyo_ymd.equals(svc_endymd)))
				{
					return;
				}
			}
		}
		// サービス呼び出しの際の引数を生成
		HashMap paramMap2 = new HashMap();
		HashMap inputMap2 = new HashMap();
		HashMap outputMap2 = new HashMap();

		// サービスIDのセット
		paramMap2.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CKSV9001");
		paramMap2.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "CKSV9001OP");

		// サービスへのデータセット
		HashMap mapRenkeiCC = new HashMap();
		inputMap2.put("CKSV900101CC", mapRenkeiCC);
		mapRenkeiCC.put("upd_trgt_sysid", paramBean[0].sendMessageString(KKW02501SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));

		// AxM連携サービスの呼出
		invokeService(paramMap2, inputMap2, outputMap2);
	}
	// IT1-2012-0000930 ADD END
}
