/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW13401SFLogic
*   ソースファイル名：KKW13401SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年02月23日
*＜機能概要＞
*   【巻取案件１追加画面】
*   初期設定サポート手配情報一覧登録画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2012/02/23   FJ）鳩本    新規作成
*   v4.00.00    2012/12/19   FJ）野口   【IT1-2012-0002486】対応
*   v4.00.01    2013/02/19   FJ) 強矢   【OT-2013-0000187】対応
*   v4.00.02    2013/02/25   FJ) 強矢   【ST4-2012-0000181】対応
*   v4.00.03    2013/09/25   FJ) 鳩本   【OM-2013-0002434】対応
*
**********************************************************************/
package eo.web.webview.KKW13401SF;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCMessageCache;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0508_KKSV0508OPDBMapper;
import eo.web.webview.mapping.KKSV0509_KKSV0509OPDBMapper;

@SuppressWarnings("serial")
public class KKW13401SFLogic extends JCCWebBusinessLogic
{
	/** 顧客契約引継情報項目キー */
	private static final String[] CUST_KEI_HKTGI_KEYS = {
		JKKCommonConst.HKTGI_SYSID,
		JKKCommonConst.HKTGI_SVC_KEI_NO,
		JKKCommonConst.HKTGI_IDO_DIV,
		JKKCommonConst.HKTGI_IDO_RSN_CD,
/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
		JKKCommonConst.HKTGI_IDO_RSN_MEMO,
/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
		JKKCommonConst.HKTGI_OP_SVC_KEI_NO,
		JKKCommonConst.HKTGI_TRAN_DIV,
		JKKCommonConst.HKTGI_MSKM_NO,
		JKKCommonConst.HKTGI_MSKM_DTL_NO,
		JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_NM,
		JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_VALUE,
		JKKCommonConst.HKTGI_POPUP_MODE
	};

	// 更新対象フラグ_更新対象設定値
	String rslt_upd_trgt_flg_update = "1";
	
	// CSVファイル名_接頭詞
	String fileName_head = "sst_";
	// CSVファイル名_拡張子
	String fileName_prefix =".csv";
	
	/**
	 * 初期表示処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		if (commoninfoBean == null)
		{
			return false;
		}
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();

		//JCCWebCommon.setScreenInfoメソッドで設定されている画面情報を取得する。
		HashMap<String, Object> parameterMap = JCCWebCommon.getScreenInfo(this);
		
		// 画面機能の判定と設定
		setHktgiInfo(serviceBean, parameterMap);
		
		// 画面モードフラグによる処理遷移
		if( serviceBean.sendMessageBoolean(KKW13401SFConst.GAMEN_MODE_FLG, X31CWebConst.DATABEAN_GET_VALUE) )
		{
			// ファミリーパック 有 にチェックをつける
			setFamilyPackAri(serviceBean);
		}
		else
		{
			// 検索処理の実行
			return search();
		}
		
		// 遷移先画面の設定
		setScreenInfo_KKW13401(commoninfoBean);
		
		return true;
	}
	
	/**
	 * 検索処理を行います。
	 * <br>
	 * @return 成否
	 * @throws Exception
	 */
	public boolean search() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 明細一覧クリア
		clearInputList(serviceBean);
		// 退避領域のクリア
		clearBackUpInfo(serviceBean);
		
		
		// 検索領域情報を退避領域へ退避する。
		setBackUpInfo(serviceBean);
		
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 初期設定サポート情報一覧を取得する。
		callService_KKSV0508(paramBean, "search");

		// 遷移先画面の設定
		setScreenInfo_KKW13401(commoninfoBean);
		
		return true;
	}
	
	/**
	 * 入力内容のクリア処理を行います。
	 * <br>
	 * @return 成否
	 * @throws Exception
	 */
	public boolean clear() throws Exception
	{	
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 明細一覧クリア
		clearInputList(serviceBean);
		// 検索条件のクリア
		clearSearchInfo(serviceBean);
		// 退避領域のクリア
		clearBackUpInfo(serviceBean);
		
		//ファミリーパック 有 にチェックをつける
		serviceBean.sendMessageBoolean(KKW13401SFConst.FAMIPA_ARI, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
		
		// 遷移先画面の設定
		setScreenInfo_KKW13401(commoninfoBean);
		
		return true;
	}
	
	/**
	 * 前画面に戻ります。
	 * <br>
	 * @throws Exception
	 * @return 処理成否
	 */
	public boolean back() throws Exception
	{
		//共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// 遷移先画面ID取得し設定する。
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));

		return true;
	}
	
	/**
	 * 登録確認ボタン押下で次画面へ遷移します。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardUpdCfm() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// マッピングクラスに渡すために配列にする
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 画面一覧の入力内容を編集する。
		if(!(checkInputlist(serviceBean)))
		{
			// 処理の途中終了
			return true;
		}
		
		// 初期設定サポート手配情報登録_確定サービスの呼び出し⇒チェック処理のみ（機能コード="2"）
		if(!callService_KKSV0509(paramBean,"1"))
		{
			//何らかの異常が発生した場合、処理終了する。
			return true;
			
		}
		
		// 自画面に表示するメッセージを設定する。
		JCCWebCommon.setMessageInfo(this, "EKB0370--I", new String[]{"初期設定サポート手配情報"});

		// 遷移先画面IDを取得して設定する。
		setScreenInfo_KKW13402(commoninfoBean);
		
		return true;
	}
	
	/**
	 * ファイルダウンロードを行います。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean download() throws Exception
	{
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// マッピングクラスに渡すために配列にする
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		if(!callService_KKSV0508(paramBean, "csv"))
		{
			return true;
		}
		
		//■出力するCSVファイル名の設定
		String fileName = 
				fileName_head +
				JCCWebCommon.getOpeDateTime(this, null) +
				fileName_prefix;
			
		// 生成データをバイトでセット
		JCCWebCommon.setTempDownloadFile(this, sstSetFile(serviceBean).getBytes("Windows-31J"), fileName);

		// 遷移先画面の設定
		setScreenInfo_KKW13401(commoninfoBean);
		
		return true;
	}

	
	/**
	 * 確認ボタン押下で入力内容を更新します。
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardFix() throws Exception
	{
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// マッピングクラスに渡すために配列にする
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 更新処理の実行
		if(!callService_KKSV0509(paramBean,"2"))
		{
			//TODO:何らかの異常が発生した場合、異常終了する。
			//メッセージ表示してリターン
		}
		else
		{
			// 自画面に表示するメッセージを設定する。
			JCCWebCommon.setMessageInfo(this, "EKB9360--I", new String[]{"初期設定サポート手配情報の登録"});

			// 遷移先画面IDを取得して設定する。
			setScreenInfo_KKW13403(commoninfoBean);
		}

		return true;
	}

	/**
	 * 修正ボタン押下で遷移前ページへ戻ります。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardShusei() throws Exception
	{
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 一覧取得
		X31SDataBeanAccessArray support_tehai_list = bean.getDataBeanArray(KKW13401SFConst.SUPPORT_TEHAI_LIST);
		
		for(int i=0; i < support_tehai_list.getCount(); i++)
		{
			// １件取得
			X31SDataBeanAccess tehai_Bean = support_tehai_list.getDataBean(i);
			
			// 背景色を再設定する。
			setBkColor(tehai_Bean, i);
			
		}

		// 遷移先画面IDを取得して設定する。
		setScreenInfo_KKW13401(commoninfoBean);
		
		return true;
	}
	
	/**
	 * 完了ボタン押下で指定した画面へ遷移します。
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardFin() throws Exception
	{
		
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 明細一覧クリア
		clearInputList(serviceBean);
		// 検索条件のクリア
		clearSearchInfo(serviceBean);
		// 退避領域のクリア
		clearBackUpInfo(serviceBean);
		// 
		setFamilyPackAri(serviceBean);
		

		// 遷移先画面IDを取得して設定する。
		setScreenInfo_KKW13401(commoninfoBean);

		return true;
	}
	
	/**
	 * 前画面引継情報から画面セット内容を確定する。
	 * <br>
	 * @param parameterMap
	 */
	@SuppressWarnings("unchecked")
	private void setHktgiInfo(X31SDataBeanAccess serviceBean, HashMap<String, Object> parameterMap)
	{
		// 顧客契約リストの存在確認
		ArrayList<HashMap<String, Object>> hktgiList = null;
		
		// 画面モードフラグに"true"を設定
		serviceBean.sendMessageBoolean(KKW13401SFConst.GAMEN_MODE_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
		serviceBean.sendMessageBoolean(KKW13401SFConst.FAMIPA_ARI, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
		
		if(parameterMap != null)
		{
// IT2-2012-0000865 他画面から渡るマップ内容を変更
//			if( !( parameterMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST)==null))
//			{
//				hktgiList = (ArrayList<HashMap<String, Object>>)parameterMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
//
//				HashMap<String, Object> hktgiInfo = hktgiList.get(0);
//				
//				// サービス契約番号の取得確認
//				String svcKeiNo = (String)hktgiInfo.get(JKKCommonConst.HKTGI_SVC_KEI_NO);
//				if(svcKeiNo != null)
//				{
//					// 画面モードフラグに"false"を設定
//					serviceBean.sendMessageBoolean(KKW13401SFConst.GAMEN_MODE_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
//					// サービス契約番号を取得
//					serviceBean.sendMessageString(KKW13401SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
//					// 新規申込書番号を取得
//					serviceBean.sendMessageString(KKW13401SFConst.NEW_MSKMSHO_NO, X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get("mskmsho_no"));
//				}
//			}
			if(!((String)parameterMap.get("svc_kei_no") == null))
			{
				// 画面モードフラグに"false"を設定
				serviceBean.sendMessageBoolean(KKW13401SFConst.GAMEN_MODE_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
				// サービス契約番号を取得
				serviceBean.sendMessageString(KKW13401SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get("svc_kei_no"));
				// 新規申込書番号を取得
				serviceBean.sendMessageString(KKW13401SFConst.NEW_MSKMSHO_NO, X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get("mskmsho_no"));
			}
		}
	}

	/**
	 * ファミリーパック有無 有 にチェックをつけます。
	 * @param serviceBean
	 */
	private void setFamilyPackAri(X31SDataBeanAccess serviceBean)
	{
		//ファミリーパック 有 にチェックをつける
		serviceBean.sendMessageBoolean(KKW13401SFConst.FAMIPA_ARI, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
	}
	
	/**
	 * 検索条件をクリアします。
	 * <br>
	 * @param serviceBean サービス取得内容
	 */
	private void clearSearchInfo(X31SDataBeanAccess serviceBean)
	{
		// サービス契約番号
		serviceBean.sendMessage(KKW13401SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_CLEAR);
		// 新規申込書番号
		serviceBean.sendMessage(KKW13401SFConst.NEW_MSKMSHO_NO, X31CWebConst.DATABEAN_CLEAR);
		// サービス開始年月日 完了済
		serviceBean.sendMessage(KKW13401SFConst.SVC_STAYMD_ZUMI, X31CWebConst.DATABEAN_CLEAR);
		// サービス開始年月日 完了フラグ
		serviceBean.sendMessage(KKW13401SFConst.SVC_STAYMD_FLG, X31CWebConst.DATABEAN_CLEAR);
		// サービス開始年月日（自）（年）
		serviceBean.sendMessage(KKW13401SFConst.SVC_STA_YEAR_1, X31CWebConst.DATABEAN_CLEAR);
		// サービス開始年月日（自）（月）
		serviceBean.sendMessage(KKW13401SFConst.SVC_STA_MON_1, X31CWebConst.DATABEAN_CLEAR);
		// サービス開始年月日（自）（日）
		serviceBean.sendMessage(KKW13401SFConst.SVC_STA_DAY_1, X31CWebConst.DATABEAN_CLEAR);
		// サービス開始年月日（至）(年）
		serviceBean.sendMessage(KKW13401SFConst.SVC_STA_YEAR_2, X31CWebConst.DATABEAN_CLEAR);
		// サービス開始年月日（至）(月）
		serviceBean.sendMessage(KKW13401SFConst.SVC_STA_MON_2, X31CWebConst.DATABEAN_CLEAR);
		// サービス開始年月日（至）(日）
		serviceBean.sendMessage(KKW13401SFConst.SVC_STA_DAY_2, X31CWebConst.DATABEAN_CLEAR);
		// ファミリーパック 無
		serviceBean.sendMessage(KKW13401SFConst.FAMIPA_NASHI, X31CWebConst.DATABEAN_CLEAR);
		// ファミリーパック 有
		serviceBean.sendMessage(KKW13401SFConst.FAMIPA_ARI, X31CWebConst.DATABEAN_CLEAR);
		// ファミリーパック有無フラグ
		serviceBean.sendMessage(KKW13401SFConst.FAMIPA_UMU_FLG, X31CWebConst.DATABEAN_CLEAR);
		// 出張サポート完了日 未完了
		serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_MI, X31CWebConst.DATABEAN_CLEAR);
		// 出張サポート完了日 完了済
		serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_ZUMI, X31CWebConst.DATABEAN_CLEAR);
		// 出張サポート完了日 完了フラグ
		serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_FLG, X31CWebConst.DATABEAN_CLEAR);
		// 出張サポート完了日（自）（年）
		serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_YEAR_1, X31CWebConst.DATABEAN_CLEAR);
		// 出張サポート完了日（自）（月）
		serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_MON_1, X31CWebConst.DATABEAN_CLEAR);
		// 出張サポート完了日（自）（日）
		serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_DAY_1, X31CWebConst.DATABEAN_CLEAR);
		// 出張サポート完了日（至）（年）
		serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_YEAR_2, X31CWebConst.DATABEAN_CLEAR);
		// 出張サポート完了日（至）（月）
		serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_MON_2, X31CWebConst.DATABEAN_CLEAR);
		// 出張サポート完了日（至）（日）
		serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_DAY_2, X31CWebConst.DATABEAN_CLEAR);
		// 手配登録日 未完了
		serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_MI, X31CWebConst.DATABEAN_CLEAR);
		// 手配登録日 完了済
		serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_ZUMI, X31CWebConst.DATABEAN_CLEAR);
		// 手配登録日 完了フラグ
		serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_FLG, X31CWebConst.DATABEAN_CLEAR);
		// 手配登録日（自）（年）
		serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_YEAR_1, X31CWebConst.DATABEAN_CLEAR);
		// 手配登録日（自）（月）
		serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_MON_1, X31CWebConst.DATABEAN_CLEAR);
		// 手配登録日（自）（日）
		serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_DAY_1, X31CWebConst.DATABEAN_CLEAR);
		// 手配登録日（至）（年）
		serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_YEAR_2, X31CWebConst.DATABEAN_CLEAR);
		// 手配登録日（至）（月）
		serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_MON_2, X31CWebConst.DATABEAN_CLEAR);
		// 手配登録日（至）（日）
		serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_DAY_2, X31CWebConst.DATABEAN_CLEAR);
	}
	
	/**
	 * 検索情報を退避情報にセットします。
	 * @param serviceBean
	 */
	private void setBackUpInfo(X31SDataBeanAccess serviceBean)
	{
		// サービス契約番号退避
		serviceBean.sendMessageString(KKW13401SFConst.SVC_KEI_NO_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageString(KKW13401SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 新規申込書番号退避
		serviceBean.sendMessageString(KKW13401SFConst.NEW_MSKMSHO_NO_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageString(KKW13401SFConst.NEW_MSKMSHO_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス開始年月日 完了済退避
		serviceBean.sendMessageBoolean(KKW13401SFConst.SVC_STAYMD_ZUMI_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageBoolean(KKW13401SFConst.SVC_STAYMD_ZUMI, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 2012.06.11 サービス開始日 完了済が false の場合リセット
		if(serviceBean.sendMessageBoolean(KKW13401SFConst.SVC_STAYMD_ZUMI, X31CWebConst.DATABEAN_GET_VALUE) == false)
		{
			// サービス開始年月日（自）（年）
			serviceBean.sendMessage(KKW13401SFConst.SVC_STA_YEAR_1, X31CWebConst.DATABEAN_CLEAR);
			// サービス開始年月日（自）（月）
			serviceBean.sendMessage(KKW13401SFConst.SVC_STA_MON_1, X31CWebConst.DATABEAN_CLEAR);
			// サービス開始年月日（自）（日）
			serviceBean.sendMessage(KKW13401SFConst.SVC_STA_DAY_1, X31CWebConst.DATABEAN_CLEAR);
			// サービス開始年月日（至）(年）
			serviceBean.sendMessage(KKW13401SFConst.SVC_STA_YEAR_2, X31CWebConst.DATABEAN_CLEAR);
			// サービス開始年月日（至）(月）
			serviceBean.sendMessage(KKW13401SFConst.SVC_STA_MON_2, X31CWebConst.DATABEAN_CLEAR);
			// サービス開始年月日（至）(日）
			serviceBean.sendMessage(KKW13401SFConst.SVC_STA_DAY_2, X31CWebConst.DATABEAN_CLEAR);
		}
		// 2012.06.11 サービス開始日チェックが false の場合リセット
		
		// サービス開始年月日（自）退避
		setDate2(serviceBean, KKW13401SFConst.SVC_STA_YEAR_1, KKW13401SFConst.SVC_STA_MON_1, KKW13401SFConst.SVC_STA_DAY_1, KKW13401SFConst.SVC_STA_FR_BK);
		// サービス開始年月日（至）退避
		setDate2(serviceBean, KKW13401SFConst.SVC_STA_YEAR_2, KKW13401SFConst.SVC_STA_MON_2, KKW13401SFConst.SVC_STA_DAY_2, KKW13401SFConst.SVC_STA_TO_BK);
		
		
		// ファミリーパック無 退避
		serviceBean.sendMessageBoolean(KKW13401SFConst.FAMIPA_NASHI_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageBoolean(KKW13401SFConst.FAMIPA_NASHI, X31CWebConst.DATABEAN_GET_VALUE));
		// ファミリーパック有 退避
		serviceBean.sendMessageBoolean(KKW13401SFConst.FAMIPA_ARI_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageBoolean(KKW13401SFConst.FAMIPA_ARI, X31CWebConst.DATABEAN_GET_VALUE));
		// ファミリーパック有無フラグ
		if(serviceBean.sendMessageBoolean(KKW13401SFConst.FAMIPA_ARI_BK, X31CWebConst.DATABEAN_GET_VALUE))
		{
			if(serviceBean.sendMessageBoolean(KKW13401SFConst.FAMIPA_NASHI_BK, X31CWebConst.DATABEAN_GET_VALUE))
			{
				serviceBean.sendMessageString(KKW13401SFConst.FAMIPA_UMU_FLG, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			else
			{
				serviceBean.sendMessageString(KKW13401SFConst.FAMIPA_UMU_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
			}
		}
		else if(serviceBean.sendMessageBoolean(KKW13401SFConst.FAMIPA_NASHI_BK, X31CWebConst.DATABEAN_GET_VALUE) && 
				!serviceBean.sendMessageBoolean(KKW13401SFConst.FAMIPA_ARI_BK, X31CWebConst.DATABEAN_GET_VALUE))
		{
			serviceBean.sendMessageString(KKW13401SFConst.FAMIPA_UMU_FLG, X31CWebConst.DATABEAN_SET_VALUE, "2");
		}
		else
		{
			serviceBean.sendMessageString(KKW13401SFConst.FAMIPA_UMU_FLG, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		///////////////////////////////////////////////
		
		// 出張サポート完了日 未完了退避
		serviceBean.sendMessageBoolean(KKW13401SFConst.SPRT_YMD_MI_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageBoolean(KKW13401SFConst.SPRT_YMD_MI, X31CWebConst.DATABEAN_GET_VALUE));
		// 出張サポート完了日 完了済退避
		serviceBean.sendMessageBoolean(KKW13401SFConst.SPRT_YMD_ZUMI_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageBoolean(KKW13401SFConst.SPRT_YMD_ZUMI, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 2012.06.11 出張サポート完了日 完了済が false の場合リセット
		if(serviceBean.sendMessageBoolean(KKW13401SFConst.SPRT_YMD_ZUMI, X31CWebConst.DATABEAN_GET_VALUE) == false)
		{
			// 出張サポート完了日（自）（年）
			serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_YEAR_1, X31CWebConst.DATABEAN_CLEAR);
			// 出張サポート完了日（自）（月）
			serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_MON_1, X31CWebConst.DATABEAN_CLEAR);
			// 出張サポート完了日（自）（日）
			serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_DAY_1, X31CWebConst.DATABEAN_CLEAR);
			// 出張サポート完了日（至）（年）
			serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_YEAR_2, X31CWebConst.DATABEAN_CLEAR);
			// 出張サポート完了日（至）（月）
			serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_MON_2, X31CWebConst.DATABEAN_CLEAR);
			// 出張サポート完了日（至）（日）
			serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_DAY_2, X31CWebConst.DATABEAN_CLEAR);
		}
		
		// 出張サポート完了日（自）退避
		setDate2(serviceBean, KKW13401SFConst.SPRT_YMD_YEAR_1, KKW13401SFConst.SPRT_YMD_MON_1, KKW13401SFConst.SPRT_YMD_DAY_1, KKW13401SFConst.SPRT_YMD_FR_BK);
		// 出張サポート完了日（至）退避
		setDate2(serviceBean, KKW13401SFConst.SPRT_YMD_YEAR_2, KKW13401SFConst.SPRT_YMD_MON_2, KKW13401SFConst.SPRT_YMD_DAY_2, KKW13401SFConst.SPRT_YMD_TO_BK);
		
		// 手配登録日 未完了退避
		serviceBean.sendMessageBoolean(KKW13401SFConst.TEHAI_ADD_YMD_MI_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageBoolean(KKW13401SFConst.TEHAI_ADD_YMD_MI, X31CWebConst.DATABEAN_GET_VALUE));
		// 手配登録日 完了済退避
		serviceBean.sendMessageBoolean(KKW13401SFConst.TEHAI_ADD_YMD_ZUMI_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageBoolean(KKW13401SFConst.TEHAI_ADD_YMD_ZUMI, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 2012.06.11 手配登録日 完了済が false の場合リセット
		if(serviceBean.sendMessageBoolean(KKW13401SFConst.TEHAI_ADD_YMD_ZUMI, X31CWebConst.DATABEAN_GET_VALUE) == false)
		{
			// 手配登録日（自）（年）
			serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_YEAR_1, X31CWebConst.DATABEAN_CLEAR);
			// 手配登録日（自）（月）
			serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_MON_1, X31CWebConst.DATABEAN_CLEAR);
			// 手配登録日（自）（日）
			serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_DAY_1, X31CWebConst.DATABEAN_CLEAR);
			// 手配登録日（至）（年）
			serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_YEAR_2, X31CWebConst.DATABEAN_CLEAR);
			// 手配登録日（至）（月）
			serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_MON_2, X31CWebConst.DATABEAN_CLEAR);
			// 手配登録日（至）（日）
			serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_DAY_2, X31CWebConst.DATABEAN_CLEAR);
		}
		
		// 手配登録日（自）退避
		setDate2(serviceBean, KKW13401SFConst.TEHAI_ADD_YMD_YEAR_1, KKW13401SFConst.TEHAI_ADD_YMD_MON_1, KKW13401SFConst.TEHAI_ADD_YMD_DAY_1, KKW13401SFConst.TEHAI_ADD_YMD_FR_BK);
		// 手配登録日（至）退避
		setDate2(serviceBean, KKW13401SFConst.TEHAI_ADD_YMD_YEAR_2, KKW13401SFConst.TEHAI_ADD_YMD_MON_2, KKW13401SFConst.TEHAI_ADD_YMD_DAY_2, KKW13401SFConst.TEHAI_ADD_YMD_TO_BK);
		
		// フラグ情報の設定
		// サービス開始年月日　完了フラグ
		setFinishFlag1(serviceBean, KKW13401SFConst.SVC_STAYMD_ZUMI, KKW13401SFConst.SVC_STAYMD_FLG);
		
		// ファミリーパック有無フラグ
//		setEndFlag2(serviceBean, KKW13401SFConst.FAMIPA_ARI_BK, KKW13401SFConst.FAMIPA_NASHI_BK, KKW13401SFConst.FAMIPA_UMU_FLG);
		// 出張サポート完了日 完了フラグ
		setEndFlag2(serviceBean, KKW13401SFConst.SPRT_YMD_MI_BK, KKW13401SFConst.SPRT_YMD_ZUMI_BK, KKW13401SFConst.SPRT_YMD_FLG);
		// 手配登録日 完了フラグ
		setEndFlag2(serviceBean, KKW13401SFConst.TEHAI_ADD_YMD_MI_BK, KKW13401SFConst.TEHAI_ADD_YMD_ZUMI_BK, KKW13401SFConst.TEHAI_ADD_YMD_FLG);
		
	}

	/**
	 * 完了済項目からから完了フラグ設定内容を返します。
	 * @param serviceBean
	 * @param zumi_name 完了済チェックボックスの項目名
	 * @param target_name 判定結果を格納するフラグ項目名
	 */
	private void setFinishFlag1(X31SDataBeanAccess serviceBean, String zumi_name, String target_name)
	{
		// サービス開始年月日　完了済設定内容
		boolean zumi =  serviceBean.sendMessageBoolean(zumi_name, X31CWebConst.DATABEAN_GET_VALUE);
		// 判定結果を格納する項目
		String target = null;
		
		/* ++++++++++ v4.00.02 修正開始 ++++++++++ */
//		if (zumi)
//		{
//			target = "2";
//		}
//		else
//		{
//			target = "1";
//		}
		
		if (zumi)
		{
			target = "1";
		}
		else
		{
			target = "";
		}
		/* ++++++++++ v4.00.02 修正開始 ++++++++++ */
		
		// フラグ項目に判定結果を設定する
		serviceBean.sendMessageString(target_name, X31CWebConst.DATABEAN_SET_VALUE, target);
	}
	
	/**
	 * 未完了、完了済項目から完了フラグを設定内容を返します。
	 * @param serviceBean 
	 * @param mi_name 未完了チェックボックスの項目名
	 * @param zumi_name 完了済チェックボックスの項目名
	 * @param target_name 判定結果を格納するフラグ項目名
	 */
	private void setEndFlag2(X31SDataBeanAccess serviceBean, String mi_name, String zumi_name, String target_name)
	{
		// 未(無)項目の取得
		boolean mi = serviceBean.sendMessageBoolean(mi_name, X31CWebConst.DATABEAN_GET_VALUE);
		// 完了済(有)項目の取得
		boolean zumi = serviceBean.sendMessageBoolean(zumi_name, X31CWebConst.DATABEAN_GET_VALUE);
		// 判定結果を格納する項目
		String target ="";

		if(zumi)
		{
			if(! KKW13401SFConst.FAMIPA_UMU_FLG.equals(target_name))
			{
				if(mi)
				{
					target = "3";
				}
				else
				{
					target = "2";
				}
			}
			else
			{
				target = "2";
			}
		}
		else
		{
			if(mi)
			{
				target = "1";
			}
		}
		

		// フラグ項目に判定結果を設定する
		serviceBean.sendMessageString(target_name, X31CWebConst.DATABEAN_SET_VALUE, target);
	}

	/**
	 * 退避領域の情報をクリアします。
	 * @param serviceBean
	 */
	private void clearBackUpInfo(X31SDataBeanAccess serviceBean)
	{
		// サービス契約番号退避
		serviceBean.sendMessage(KKW13401SFConst.SVC_KEI_NO_BK, X31CWebConst.DATABEAN_CLEAR);
		// 新規申込書番号退避
		serviceBean.sendMessage(KKW13401SFConst.NEW_MSKMSHO_NO_BK, X31CWebConst.DATABEAN_CLEAR);
		// サービス開始年月日 完了済退避
		serviceBean.sendMessage(KKW13401SFConst.SVC_STAYMD_ZUMI_BK, X31CWebConst.DATABEAN_CLEAR);
		// サービス開始年月日（自）退避
		serviceBean.sendMessage(KKW13401SFConst.SVC_STA_FR_BK, X31CWebConst.DATABEAN_CLEAR);
		// サービス開始年月日（至）退避
		serviceBean.sendMessage(KKW13401SFConst.SVC_STA_TO_BK, X31CWebConst.DATABEAN_CLEAR);
		// ファミリーパック無 退避
		serviceBean.sendMessage(KKW13401SFConst.FAMIPA_NASHI_BK, X31CWebConst.DATABEAN_CLEAR);
		// ファミリーパック有 退避
		serviceBean.sendMessage(KKW13401SFConst.FAMIPA_ARI_BK, X31CWebConst.DATABEAN_CLEAR);
		// 出張サポート完了日 未完了退避
		serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_MI_BK, X31CWebConst.DATABEAN_CLEAR);
		// 出張サポート完了日 完了済退避
		serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_ZUMI_BK, X31CWebConst.DATABEAN_CLEAR);
		// 出張サポート完了日（自）退避
		serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_FR_BK, X31CWebConst.DATABEAN_CLEAR);
		// 出張サポート完了日（至）退避
		serviceBean.sendMessage(KKW13401SFConst.SPRT_YMD_TO_BK, X31CWebConst.DATABEAN_CLEAR);
		// 手配登録日 未完了退避
		serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_MI_BK, X31CWebConst.DATABEAN_CLEAR);
		// 手配登録日 完了済退避
		serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_ZUMI_BK, X31CWebConst.DATABEAN_CLEAR);
		// 手配登録日（自）退避
		serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_FR_BK, X31CWebConst.DATABEAN_CLEAR);
		// 手配登録日（至）退避
		serviceBean.sendMessage(KKW13401SFConst.TEHAI_ADD_YMD_TO_BK, X31CWebConst.DATABEAN_CLEAR);
	}
	
	/**
	 * サービス(KKSV0508)を呼出します。
	 * @param paramBean
	 * @param event
	 * @return boolean
	 * @throws Exception
	 */
	private boolean callService_KKSV0508(X31SDataBeanAccess[] paramBean, String event) throws Exception
	{
		/**
		 * event 設定値で処理を可変にする
		 * "search"	検索処理(初期表示、検索ボタン押下時)
		 * "csv"  	画面一覧表示内容との比較用一覧の取得
		 * */

		// 共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		// サービスフォームビーン
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0508");
		
		// データBeanとBPをマッピングするインスタンスを生成
		KKSV0508_KKSV0508OPDBMapper mapper = new KKSV0508_KKSV0508OPDBMapper();
		
		// 検索条件格納用マップを生成
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		// 処理結果格納用マップを生成
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		
		
		//■ダウンロードボタン押下時、チェックエラー発生した場合、エラーを表示するため、フラグ(dFlg)設定
		String dFlg = "0";
		if("csv".equals(event))
		{
			// 画面入力値の未変更チェック
			X31SDataBeanAccessArray gamen_lists = paramBean[0].getDataBeanArray(KKW13401SFConst.SUPPORT_TEHAI_LIST);
			for (int i=0; i < gamen_lists.getCount(); i++)
			{
				// 画面一覧から１件取得
				X31SDataBeanAccess gamenBean = gamen_lists.getDataBean(i);
				
				// 出張サポート年月日に画面入力値をセット
				setDate2(gamenBean, KKW13401SFConst.RSLT_SPRT_YMD_YEAR_01, KKW13401SFConst.RSLT_SPRT_YMD_MON_01, 
						KKW13401SFConst.RSLT_SPRT_YMD_DAY_01, KKW13401SFConst.RSLT_SPRT_YMD_01);
				
				// 出張サポート年月日（画面入力値）
				String rslt_sprt_ymd = gamenBean.sendMessageString(KKW13401SFConst.RSLT_SPRT_YMD_01, X31CWebConst.DATABEAN_GET_VALUE);
				// 出張サポート年月日退避（初期値）
				String rslt_sprt_ymd_bk = gamenBean.sendMessageString(KKW13401SFConst.RSLT_SPRT_YMD_BK_01, X31CWebConst.DATABEAN_GET_VALUE);
				
				// 出張サポート年月日の更新チェック
				if(!(rslt_sprt_ymd.equals(rslt_sprt_ymd_bk)))
				{
					dFlg = "1";
					break;
				}
			}
		}
		//================================================================================
		
		//検索条件設定
		mapper.setKKSV050801CC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1,dFlg);
		
		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		

		// エラー処理
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}
		
		// メッセージ定義ファイルを読み込む
		JCCMessageCache.setMessageCache();
		
		if("search".equals(event))
		{
			// サービス結果の転記
			mapper.getKKSV050801CC(paramBean, outputMap);

		//(3) 取得データ件数チェック
			
			// 予め検索処理結果フラグ="false"を設定する
			paramBean[0].sendMessageBoolean(KKW13401SFConst.GAMEN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
			
			// 取得件数の取得
			int count = 0;
			
			HashMap parentMap = null;
			if(outputMap.containsKey("KKSV050801CC")){
				parentMap = (HashMap)outputMap.get("KKSV050801CC");
			}
			
			if (parentMap != null && parentMap.get("total_search_num") != null )
			{
					count = Integer.parseInt(parentMap.get("total_search_num").toString());
			}

			// 最大検索件数の取得
			int maxCount = Integer.parseInt(JCCWebCommon.getSearchConst("KKW13401_MAX_SHOW_CNT"));
			
			// 出力件数からエラーメッセージの設定を行う。
			if(count == 0)
			{
				// 出力結果0件の場合
				JCCWebCommon.setMessageInfo(this, "EKB0330--I");
			}
			else if (count > maxCount)
			{
				// 検索結果が最大検索件数超えの場合
				String[] msg = {JCCWebCommon.getSearchConst("KKW13401_MAX_SHOW_CNT")};
				JCCWebCommon.setMessageInfo(this, "EKB0340--I", msg);
			}
			else
			{
				// 出力結果正常
				paramBean[0].sendMessageBoolean(KKW13401SFConst.GAMEN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
				// 初期設定サポート手配情報一覧の行編集
				setList(paramBean[0], bean);
			}
			
		}
		else if("csv".equals(event))
		{
			// メッセージ定義ファイルを読み込む
			JCCMessageCache.setMessageCache();
			
		}

		return true;
	}
	
	/**
	 * サービス(KKSV0509)を呼出します。
	 * @param paramBean
	 * @param event
	 * @return boolean
	 * @throws Exception
	 */
	private boolean callService_KKSV0509(X31SDataBeanAccess[] paramBean,String chk) throws Exception
	{
		
		//(2) 3.1.1 サービス呼出処理(callService)実行

		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0509");
		
		// データBeanとBPをマッピングするインスタンスを生成
		KKSV0509_KKSV0509OPDBMapper mapper = new KKSV0509_KKSV0509OPDBMapper();
		
		// 検索条件格納用マップを生成
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		// 処理結果格納用マップを生成
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		
		// 検索処理パターン
		//@chk="1"の場合⇒「登録確認」ボタン押下
		//Achk="2の場合⇒「確定」ボタン押下
		if("1".equals(chk))
		{
			mapper.setKKSV050901CC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		}
		else
		{
			mapper.setKKSV050901CC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		}
		
		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}
		
		// メッセージ定義ファイルを読み込む
		JCCMessageCache.setMessageCache();
		

		return true;
	}

	/**
	 * 初期設定サポート手配情報画面一覧の表示設定を行います。
	 * <br>
	 * @param paramBean 設定する一覧のBean情報
	 * @param serviceFormBean 設定する画面のServiceFormBean
	 * @throws Exception
	 */
	private void setList(X31SDataBeanAccess paramBean, X31SDataBeanAccess serviceFormBean)	throws Exception
	{
		X31SDataBeanAccessArray tehaiList = paramBean.getDataBeanArray(KKW13401SFConst.SUPPORT_TEHAI_LIST);
		
		int count = tehaiList.getCount();
		
		for (int i = 0; i < count; i++)	
		{
			X31SDataBeanAccess bean = tehaiList.getDataBean(i);
			
			if(serviceFormBean.sendMessageBoolean(KKW13401SFConst.GAMEN_MODE_FLG, X31CWebConst.DATABEAN_GET_VALUE))
			{
				// 更新可否フラグの設定→「更新仕様」変更による、明細のすべてのデータが更新できるように設定
				bean.sendMessageString(KKW13401SFConst.RSLT_UPD_KAHI_FLG_01,  X31CWebConst.DATABEAN_SET_VALUE, "1");
			}
			else 
			{
				// 更新可否フラグの設定→画面モードが照会のみの場合は、更新不可に設定
				bean.sendMessageString(KKW13401SFConst.RSLT_UPD_KAHI_FLG_01,  X31CWebConst.DATABEAN_SET_VALUE, "0");
			}
			
//			String tehai_add_ymd = bean.sendMessageString(KKW13401SFConst.RSLT_TEHAI_ADD_YMD_01, X31CWebConst.DATABEAN_GET_VALUE);
//			
//			if(isNullCheck(tehai_add_ymd))
//			{
//				// 更新可否フラグのリセット
//				bean.sendMessage(KKW13401SFConst.RSLT_UPD_KAHI_FLG_01, X31CWebConst.DATABEAN_CLEAR);
//			}
//			else
//			{
//				// 更新可否フラグに"1"のリセット
//				bean.sendMessageString(KKW13401SFConst.RSLT_UPD_KAHI_FLG_01,  X31CWebConst.DATABEAN_SET_VALUE, "1");
//			}
			
			/* ++++++++++ v4.00.03 削除開始 ++++++++++ */
			// ファミリパック有無の設定は下りマッピングで行うため削除
//			/* ++++++++++ v4.00.02 修正開始 ++++++++++ */
//			/* ++++++++++ v4.00.01 修正開始 ++++++++++ */
//			// ファミリーパック有無の設定
//			String wrib_svc_kei_no = bean.sendMessageString(KKW13401SFConst.RSLT_WRIB_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
//			
//			if(isNullCheck(wrib_svc_kei_no))
//			{
//				 bean.sendMessageString(KKW13401SFConst.RSLT_FAMIPA_UM_01, X31CWebConst.DATABEAN_SET_VALUE, "無");
//			}
//			else
//			{
//				 bean.sendMessageString(KKW13401SFConst.RSLT_FAMIPA_UM_01, X31CWebConst.DATABEAN_SET_VALUE, "有");
//			}
//			/* ++++++++++ v4.00.01 修正終了 ++++++++++ */
//			/* ++++++++++ v4.00.02 修正終了 ++++++++++ */
			/* ++++++++++ v4.00.03 削除完了 ++++++++++ */
			
			// 出張サポート完了日の入力項目への分割
			String rslt_sprt_ymd = bean.sendMessageString(KKW13401SFConst.RSLT_SPRT_YMD_BK_01, X31CWebConst.DATABEAN_GET_VALUE);
			
			if(!(isNullCheck(rslt_sprt_ymd)) &&  rslt_sprt_ymd.length() == 8)
			{
				// 空白およびnullでなく、8文字なら日付分割
				 bean.sendMessageString(KKW13401SFConst.RSLT_SPRT_YMD_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, rslt_sprt_ymd.substring(0,4));
				 bean.sendMessageString(KKW13401SFConst.RSLT_SPRT_YMD_MON_01, X31CWebConst.DATABEAN_SET_VALUE, rslt_sprt_ymd.substring(4,6));
				 bean.sendMessageString(KKW13401SFConst.RSLT_SPRT_YMD_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, rslt_sprt_ymd.substring(6,8));
			}
//			
			// 背景色の設定
			setBkColor(bean, i);
		}
	}
	
	/**
	 * 画面入力された年月日の各項目を結合して対象項目にセットします。
	 * @param serviceBean サービスフォームビーン
	 * @param year 画面入力された年項目
	 * @param mon 画面入力された月項目
	 * @param day 画面入力された日項目
	 * @param target 結合された項目の出力対象項目
	 */
	private void setDate2(X31SDataBeanAccess serviceBean, String year, String mon, String day, String target)
	{
		// 対象年月日項目をそれぞれ取得
		String yearValue = serviceBean.sendMessageString(year, X31CWebConst.DATABEAN_GET_VALUE);
		String monValue = serviceBean.sendMessageString(mon, X31CWebConst.DATABEAN_GET_VALUE);
		String dayValue = serviceBean.sendMessageString(day, X31CWebConst.DATABEAN_GET_VALUE);

		serviceBean.sendMessageString(target, X31CWebConst.DATABEAN_SET_VALUE, yearValue + monValue + dayValue);
	}


	/**
	 * 初期設定サポート手配情報一覧登録(KKW13401)に遷移するときの遷移先画面情報を設定します。
	 * <br>
	 * @param commonBean 共有フォームBeanのアクセスクラス
	 */
	private void setScreenInfo_KKW13401(X31SDataBeanAccess commonBean)
	{
		// 遷移先画面IDを設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13401);
		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13401);
	}
	
	/**
	 * 初期設定サポート手配情報登録確認(KKW13402)に遷移するときの遷移先画面情報を設定します。
	 * <br>
	 * @param commonBean 共有フォームBeanのアクセスクラス
	 */
	private void setScreenInfo_KKW13402(X31SDataBeanAccess commonBean)
	{
		// 遷移先画面IDを設定（自分自身へ）
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13402);
		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13402);
	}
	
	/**
	 * 初期設定サポート手配情報確認完了(KKW13403)に遷移するときの遷移先画面情報を設定します。
	 * <br>
	 * @param commonBean 共有フォームBeanのアクセスクラス
	 */
	private void setScreenInfo_KKW13403(X31SDataBeanAccess commonBean)
	{
		// 遷移先画面IDを設定（自分自身へ）
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13403);
		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13403);
	}

	/**
	 * 初期設定サポート手配情報一覧に変更がないかチェックします。
	 * @param serviceBean
	 * @return boolean 変更要否(true:変更あり、false:変更なし)
	 */
	private boolean checkInputlist(X31SDataBeanAccess serviceBean)
	{
		// 初期設定サポート手配情報一覧の取得
		X31SDataBeanAccessArray support_tehai_list = serviceBean.getDataBeanArray(KKW13401SFConst.SUPPORT_TEHAI_LIST);

		// 変更件数を格納する変数
		int countUpdate = 0;
		
		// 運用日付の取得
		String opeDt = JCCWebCommon.getOpeDate(this, null);
		
		// 件数分ループする
		for(int i=0; i < support_tehai_list.getCount(); i++ )
		{
			// 初期設定サポート手配情報一覧から１件取得
			X31SDataBeanAccess bean = support_tehai_list.getDataBean(i);

			// 出張サポート年月日(年)(月)(日)を結合→出張サポート年月日に設定
			String year = bean.sendMessageString(KKW13401SFConst.RSLT_SPRT_YMD_YEAR_01, X31CWebConst.DATABEAN_GET_VALUE);
			String mon = bean.sendMessageString(KKW13401SFConst.RSLT_SPRT_YMD_MON_01, X31CWebConst.DATABEAN_GET_VALUE);
			String day = bean.sendMessageString(KKW13401SFConst.RSLT_SPRT_YMD_DAY_01, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 出張サポート年月日
			String sprt_ymd = year + mon + day;
			bean.sendMessageString(KKW13401SFConst.RSLT_SPRT_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, sprt_ymd);
			
			//運用日を含む、過去年月日が入力されてない場合→エラー
			if(!isNullCheck(sprt_ymd))
			{
				if(Integer.parseInt(opeDt) < Integer.parseInt(sprt_ymd))
				{
					// 初期設定サポート情報に変更がない場合
					JCCWebCommon.setMessageInfo(this, "EKB9560-KW","");
					return false;
				}
			}

			// 出張サポート年月日初期値
			String sprt_ymd_bk = bean.sendMessageString(KKW13401SFConst.RSLT_SPRT_YMD_BK_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 出張サポート年月日 と 出張サポート年月日初期値の比較
			if(!(sprt_ymd.equals(sprt_ymd_bk))){
			// 変更がある場合
				// 背景色の再設定
				setBkColor(bean, i);
				// 更新可否フラグに"更新対象"セット
				bean.sendMessageString(KKW13401SFConst.RSLT_UPD_TRGT_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, rslt_upd_trgt_flg_update);
				// 変更件数をカウント
				countUpdate++;
			}
			else
			{
			// 変更が無い場合
				// 更新可否フラグをクリアする
				bean.sendMessage(KKW13401SFConst.RSLT_UPD_TRGT_FLG_01, X31CWebConst.DATABEAN_CLEAR);
			}
		}

		// 変更件数が０件の場合、 false を返す
		if(countUpdate==0)
		{
			// 初期設定サポート情報に変更がない場合
			JCCWebCommon.setMessageInfo(this, "EKB5370-NW","");
			return false;
		}
		
		return true;
	}
	
	/**
	 * 一覧情報をクリアします。
	 * @param serviceBean
	 */
	private void clearInputList(X31SDataBeanAccess serviceBean)
	{
		// 明細一覧クリア
		serviceBean.getDataBeanArray(KKW13401SFConst.SUPPORT_TEHAI_LIST).clearArray();
		serviceBean.getDataBeanArray(KKW13401SFConst.SUPPORT_HIKAKU_LIST).clearArray();
		// 画面制御フラグに false を設定
		serviceBean.sendMessageBoolean(KKW13401SFConst.GAMEN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
	}
	
	
	
	/**
	 * 背景色を設定します。
	 * <br>
	 * @param serviceBean 処理対象行
	 * @param count 行番号
	 */
	private void setBkColor(X31SDataBeanAccess serviceBean, int count)
	{
		// 背景色の設定
		if (count % 2 == 1)
		{
			serviceBean.sendMessageString(KKW13401SFConst.RSLT_BK_COLOR_01, X31CWebConst.DATABEAN_SET_VALUE, "even");
		}
		else
		{
			serviceBean.sendMessageString(KKW13401SFConst.RSLT_BK_COLOR_01, X31CWebConst.DATABEAN_SET_VALUE, "odd");
		}
	}

	/**
	 * 初期設定サポート手配情報一覧のデータファイルを生成します。
	 * @return 初期設定サポート手配情報一覧データファイル
	 */
	private String sstSetFile(X31SDataBeanAccess serviceBean)
	{
		// 画面一覧の取得
		X31SDataBeanAccessArray csvList = serviceBean.getDataBeanArray(KKW13401SFConst.SUPPORT_TEHAI_LIST);
		
		StringBuilder csvRecord = new StringBuilder();
		int size = csvList.getCount();
		for (int i=0; i<size; i++ )
		{
			if (csvRecord.length() > 0)
			{
				csvRecord.append("\r\n");
			}
			csvRecord.append(dubleQuotEdit(csvList.getDataBean(i)));
		}
		
		String csvBody = separatEdit("\r\n", csvRecord.toString());
		
		return csvBody;
	}
	
	/**
	 * 指定された文字列の配列をseparatorで結合します。
	 * @param separator 結合文字列
	 * @param strs 結合する文字列
	 * @return 結合された文字列
	 */
	private String dubleQuotEdit(X31SDataBeanAccess dataBean)
	{

		//サービス契約番号
		String str1 = dataBean.sendMessageString(KKW13401SFConst.RSLT_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE); 
		//新規申込書番号
		String str2 = dataBean.sendMessageString(KKW13401SFConst.RSLT_NEW_MSKMSHO_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		//契約者名
		String str3 = dataBean.sendMessageString(KKW13401SFConst.RSLT_KEISHA_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
		//出張サポート完了日
		String str4 = dataBean.sendMessageString(KKW13401SFConst.RSLT_SPRT_YMD_01, X31CWebConst.DATABEAN_GET_VALUE);
		//申込日
		String str5 = dataBean.sendMessageString(KKW13401SFConst.RSLT_MSKM_YMD_01, X31CWebConst.DATABEAN_GET_VALUE);
		//ファミリーパック有無
		String str6 = dataBean.sendMessageString(KKW13401SFConst.RSLT_FAMIPA_UM_01, X31CWebConst.DATABEAN_GET_VALUE);
		//手配登録日
		String str7 = dataBean.sendMessageString(KKW13401SFConst.RSLT_TEHAI_ADD_YMD_01, X31CWebConst.DATABEAN_GET_VALUE);
		//ファミリーパック解約日
		String str8 = dataBean.sendMessageString(KKW13401SFConst.RSLT_MSKM_CL_YMD_01, X31CWebConst.DATABEAN_GET_VALUE);
		//ループテスト完了日
		String str9 = dataBean.sendMessageString(KKW13401SFConst.RSLT_LOOP_TEST_FIN_YMD_01, X31CWebConst.DATABEAN_GET_VALUE);
		//サービス開始日
		String str10 = dataBean.sendMessageString(KKW13401SFConst.RSLT_SVC_STAYMD_01, X31CWebConst.DATABEAN_GET_VALUE);

		return separatEdit(",",
				addDubleQ(str1),
				addDubleQ(str2),
				addDubleQ(str3.trim()),
				addDubleQ(editDate(str4)),
				addDubleQ(editDate(str5)),
				addDubleQ(str6.trim()),
				addDubleQ(editDate(str7)),
				addDubleQ(editDate(str8)),
				addDubleQ(editDate(str9)),
				addDubleQ(editDate(str10))
				);
	}	
	
	/**
	 * 文字列をダブルクォーで囲む
	 * @param src 囲まれる文字列
	 * @return \"囲まれる文字列\"
	 */
	private String addDubleQ(String src)
	{
		return String.format("\"%s\"", src);
	}
	
	/**
	 * 指定された文字列の配列をseparatorで結合します。
	 * @param separator 結合文字列
	 * @param strs 結合する文字列
	 * @return 結合された文字列
	 */
	private String separatEdit(String separator, String...strs)
	{
		StringBuffer sb = new StringBuffer();
		
		boolean isFirst = true;
		for (String str : strs)
		{
			if (!isFirst)
			{
				sb.append(separator);
			}
			
			sb.append(str);
			isFirst = false;
		}
		
		return sb.toString();
	}
	
	/**
	 * 入力された年月日をスラッシュ付日付(yyyy/mm/dd)に編集します。
	 * 桁数が8桁で無い場合は処理しません。
	 * @param year
	 * @param month
	 * @param day
	 * @return スラッシュ編集済み日付
	 */
	private String editDate(String date)
	{
		if (date.length() == 8)
		{
			String year = date.substring(0,4);
			String month = date.substring(4,6);
			String day = date.substring(6,8);
			return year + "/" + month + "/" + day;
		}
		
		return "";
	}
	
	/**
	 * 対象項目が空白またはnullかをチェックします。
	 * @param target
	 * @return boolean (true:空白またはnull , false:項目設定あり)
	 */
	private boolean isNullCheck(String target)
	{
		if(target == null || "".equals(target))
		{
			return true;
		}
		else
		{
			return false;
		}
		
	}
}
