/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：○○○○○○○
 *   モジュール名    ：割引サービス選択
 *   ソースファイル名：KKW01004SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年05月11日
 *＜機能概要＞
 *   
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/05/11   富士通      新規作成
 *   v5.00.00    2013/06/13   富士通      IT1-2013-0001258（表示内容が同一のものは1行に集約して表示する対応）
 *   v9.00.00    2014/04/18   富士通      ANK-2056-00-00  （光電話セレクトオプションパック）
 *   
 **********************************************************************/

package eo.web.webview.KKW01004SF;

import static com.fujitsu.futurity.web.x31.X31CWebConst.DATABEAN_GET_VALUE;
import static com.fujitsu.futurity.web.x31.X31CWebConst.DATABEAN_SET_VALUE;
import static com.fujitsu.futurity.web.x31.X31CWebConst.DATABEAN_CLEAR;

import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
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.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0038_KKSV0038OPDBMapper;
import eo.web.webview.mapping.KKSV0041_KKSV0041OPDBMapper;

/**
 * <dd>クラス名：KKW01004SFLogic
 * <dd>クラス説明：割引サービスの選択を行う。
 * <dd>備考：なし。
 * @version 1.00.00 2011/03/31
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW01004SFLogic extends JCCWebBusinessLogic 
{
    
	
	/**
	 * <dd>メソッド名：初期表示判定処理
	 * <dd>メソッド説明：初期表示の判定を行う。
	 * <dd>備考：なし。
	 * @param
	 * @return true
	 */
	
	public boolean actionInit() throws Exception 
	{
		
		JCCWebCommon.getScreenInfo( this );
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面IDを取得 
		String screenId = commoninfoBean.sendMessageString( CommonInfoCFConst.NEXT_SCREEN_ID, DATABEAN_GET_VALUE );

		// 遷移先画面IDから、行う表示処理を決定。
		if (JKKScreenConst.SCREEN_ID_KKW01004.equals( screenId ) ) {
			
		// 初期画面表示処理
			initDisp();
		
		// 画面名の表示
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW01004);
			
		}
		
		return true;
	}

	/**
	 * <dd>メソッド名：初期表示処理
	 * <dd>メソッド説明：初期表示を行う。
	 * <dd>備考：なし。
	 * @param
	 * @return true
	 */
	
	private boolean initDisp() throws Exception 
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		HashMap<String, Object> paramMap = beanClear(bean);					//パラメタ設定用マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();	// データマップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();	//結果格納用マップ
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0041_KKSV0041OPDBMapper mapper = new KKSV0041_KKSV0041OPDBMapper();
		
		// コード名称管理一覧照会SC
		mapper.setKKSV004101SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		// 割引サービス選択初期表示サービス
		invokeService(paramMap, inputMap, outputMap);
		
		// 取得情報の下りマッピング
		mapper.getKKSV004101SC(paramBean, outputMap);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}

	/**
	 * <dd>メソッド名：検索ボタン押下時処理
	 * <dd>メソッド説明：割引サービス、またはデータ抽出項目の検索を行う。
	 * <dd>備考：なし。
	 * @param
	 * @return true
	 */
	
	public boolean actionSearch() throws Exception
	{	
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		/*
		 * ページ情報のクリア
		 */
		JCCWebCommon.clearPageLinkInfo(this, KKW01004SFConst.SCREEN_ID_KKW01004);
		
		/*
		 * 適用契機コードの設定
		 * ・適用契機コードプルダウンの選択内容からコードを特定する。
		 */
		setAplyOptntyCd(paramBean);
		
		/*
		 * 申込年月日、受付開始年月日（自〜至）、受付終了年月日（自〜至）の設定
		 */
		setUkYmd(paramBean);
		
		/*
		 * ソート項目の設定
		 */
		paramBean[0].sendMessageString(KKW01004SFConst.SORT_NUM, DATABEAN_SET_VALUE, "0");

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		/*
		 * 画面設定内容のチェック
		 */
		if (!chkParam(paramBean))
		{
			return true;
		}

		// 「一覧検索サービス呼出処理」を実施する。
		if (searchList(paramBean))
		{
			// 「一覧検索サービス呼出処理」にてエラーがない場合、制御項目を編集する。
			// キャンペーン情報選択値
			paramBean[0].sendMessageString(KKW01004SFConst.CAMPAIGN_SEL, DATABEAN_SET_VALUE, "0");
		}

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 一覧検索サービス呼出処理を行います。 <br>
	 * 
	 * @param paramBean DataBean項目の配列
	 * @param func_code　機能コード
	 * @return 正常終了:true 異常修了:false
	 * @exception Exceptionがスローされます。
	 */
	private boolean searchList(X31SDataBeanAccess[] paramBean) throws Exception
	{
		// 変数の定義
		boolean searchListFlg = true;
		String scId = null;
		String func_code = "1"; 
		
		HashMap<String, Object> paramMap = setSearchParam(paramBean);		// パラメタ設定用マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();	// データマップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();	// 結果格納用マップ
		
		KKSV0038_KKSV0038OPDBMapper mapper = new KKSV0038_KKSV0038OPDBMapper();

		// 割引タイプ選択値の設定
		String wribSel = paramBean[0].sendMessageString(KKW01004SFConst.WRIB_TYPE_CD, DATABEAN_GET_VALUE);
		if (KKW01004SFConst.WRIB_TYPE_WRIB.equals(wribSel)
			|| KKW01004SFConst.WRIB_TYPE_CAMPAIGN.equals(wribSel)
			|| KKW01004SFConst.WRIB_TYPE_CAMPAIGN_MNKHT.equals(wribSel)) {

			scId = "KKSV003801SC";

			// 上りマッピング(割引サービス一覧照会SC(EKK0841B001))
// v9.00.00 MOD START
//			mapper.setKKSV003801SC(paramBean, inputMap, func_code);
			mapper.setKKSV003801SC(paramBean, inputMap, "2");
// v9.00.00 MOD END
			// ページング情報の設定
			JCCWebCommon.upmapperPageLinkInfo(this, "0", scId, inputMap);
			
			// 割引サービス選択初期表示サービス
			invokeService(paramMap, inputMap, outputMap);
			
			// 下りマッピング
			mapper.getKKSV003801SC(paramBean, outputMap); // 割引サービス選択情報取得SC
		
		} else if (KKW01004SFConst.WRIB_TYPE_HANYO_CHSHT.equals(wribSel)) {

			scId = "KKSV003802SC";

			// 上りマッピング(データ抽出項目一覧照会SC(EKK1351B001))
// v5.00.00 2013.06.13 MOD Start
//			mapper.setKKSV003802SC(paramBean, inputMap, func_code);
			mapper.setKKSV003802SC(paramBean, inputMap, "2");
// v5.00.00 2013.06.13 MOD End
			// ページング情報の設定
			JCCWebCommon.upmapperPageLinkInfo(this, "0", scId, inputMap);
			
			// 割引サービス選択初期表示サービス
			invokeService(paramMap, inputMap, outputMap);
			
			// 下りマッピング
			mapper.getKKSV003802SC(paramBean, outputMap); // 割引サービス選択情報取得SC
		}
		
		/*
		 * 検索結果情報の設定
		 */
		searchListFlg = searchResultSet(paramBean, scId, outputMap);
		
		return searchListFlg;	
	}

	/**
	 * ページングリンク処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionPaging() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = { bean };
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		// 「一覧検索サービス呼出処理」を実施する。
		if (searchList(paramBean))
		{
			// 「一覧検索サービス呼出処理」にてエラーがない場合、制御項目を編集する。
			// キャンペーン情報選択値
			paramBean[0].sendMessageString(KKW01004SFConst.CAMPAIGN_SEL, DATABEAN_SET_VALUE, "0");
		}
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * ソートリンク処理を行います。 <br>
	 * 
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionSort() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = { bean };
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		// 「一覧検索サービス呼出処理」を実施する。
		if (searchList(paramBean))
		{
			// 「一覧検索サービス呼出処理」にてエラーがない場合、制御項目を編集する。
			// キャンペーン情報選択値
			paramBean[0].sendMessageString(KKW01004SFConst.CAMPAIGN_SEL, DATABEAN_SET_VALUE, "0");
		}
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * <dd>メソッド名：クリア処理 <dd>メソッド説明：割引サービス選択画面の初期化を行う。 <dd>備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	
	public boolean actionClear() throws Exception
	{
		initDisp();
		
		return true;
	}

	/**
	 * 選択ボタン押下時のアクション
	 * 
	 * @return
	 * @throws Exception
	 */
	public boolean actionSelect() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = { bean };
		
		// キャンペーン情報選択値と同値を持つキャンペーン情報一覧の格納位置からキャンペーン情報を取得し、親画面へ受け渡す制御項目の設定を行う。
		String sel = paramBean[0].sendMessageString(KKW01004SFConst.CAMPAIGN_SEL, DATABEAN_GET_VALUE);
		
		// 選択値より、表示用キャンペーン番号、サービス名を取得
		X31SDataBeanAccessArray campaign_list = paramBean[0].getDataBeanArray(KKW01004SFConst.CAMPAIGN_INFO_LIST);
		X31SDataBeanAccess campaign_subbean = campaign_list.getDataBean(Integer.parseInt(sel));
		String dsp_campaign_cd = campaign_subbean.sendMessageString(KKW01004SFConst.DSP_CAMPAIGN_CD, DATABEAN_GET_VALUE);
		String svc_nm = campaign_subbean.sendMessageString(KKW01004SFConst.SVC_NM, DATABEAN_GET_VALUE);
		
		// 親画面に渡す情報をHashMapに設定
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(KKW01004SFConst.DSP_CAMPAIGN_CD, dsp_campaign_cd);
		paramMap.put(KKW01004SFConst.SVC_NM, svc_nm);
		
		// 親画面に渡す情報を設定
		JCCWebCommon.setScreenInfo(this, JCCWebCommon.getScreenId(this), paramMap);
		
		// 共有フォームBeanアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		/*
		 * モーダル用反映画面へ画面遷移
		 */
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, DATABEAN_SET_VALUE, "CCW00105");
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, DATABEAN_SET_VALUE, "モーダル用反映画面");

		return true;
	}
	
	/**
	 * 検索結果を設定します。
	 * 
	 * @param paramBean
	 * @param scId
	 * @param outputMap
	 * @return
	 */
	private boolean searchResultSet(X31SDataBeanAccess[] paramBean, String scId, HashMap<String, Object> outputMap){

		boolean searchListFlg = true;

		// 検索エラーフラグの取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg(scId, outputMap);
		
		// 検索結果が0件
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			// 割引タイプ選択値の設定
			String wribSel = paramBean[0].sendMessageString(KKW01004SFConst.WRIB_TYPE_CD, DATABEAN_GET_VALUE);
			if (KKW01004SFConst.WRIB_TYPE_WRIB.equals(wribSel)
					|| KKW01004SFConst.WRIB_TYPE_CAMPAIGN.equals(wribSel)
					|| KKW01004SFConst.WRIB_TYPE_CAMPAIGN_MNKHT.equals(wribSel)) {

				String[] msgStr = {"検索条件に一致するデータ", "割引サービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4680_NW, msgStr);

			} else if (KKW01004SFConst.WRIB_TYPE_HANYO_CHSHT.equals(wribSel)) {

				String[] msgStr = {"検索条件に一致するデータ", "データ抽出項目"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4680_NW, msgStr);
			}
			
			searchListFlg = false;
		}

		// 検索結果が最大検索件数を超えた
		else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			String[] msgStr = {"検索条件に一致するデータ", "割引サービス"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4800_KW, msgStr);
			searchListFlg = false;
		}

		// 表示ページに該当するデータ
		else if (JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
		{
			// 表示ページに該当するデータがない場合の処理
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0350__I);
			searchListFlg = false;
		}

		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, scId, outputMap);
		
		// ページングのコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, "paging");

		return searchListFlg;
	}
	
	/**
	 * ソート指定時のソート項目を設定します。
	 * 
	 * @param paramBean
	 */
	private void setOrderByItem(X31SDataBeanAccess[] paramBean)
	{	
		// ソート番号の取得
		String sort_num = paramBean[0].sendMessageString(KKW01004SFConst.SORT_NUM, DATABEAN_GET_VALUE);
		
		if (KKW01004SFConst.SORT_NUM_0.equals(sort_num))
		{
			paramBean[0].sendMessage(KKW01004SFConst.SORT_ITEM_NO, DATABEAN_CLEAR);
			paramBean[0].sendMessage(KKW01004SFConst.SORT_KBN, DATABEAN_CLEAR);
		}
		else if (KKW01004SFConst.SORT_NUM_1.equals(sort_num))
		{
			paramBean[0].sendMessageString(KKW01004SFConst.SORT_ITEM_NO, DATABEAN_SET_VALUE, "1");
			paramBean[0].sendMessageString(KKW01004SFConst.SORT_KBN, DATABEAN_SET_VALUE, KKW01004SFConst.SORT_DESC_2);
		}
		else if (KKW01004SFConst.SORT_NUM_2.equals(sort_num))
		{
			paramBean[0].sendMessageString(KKW01004SFConst.SORT_ITEM_NO, DATABEAN_SET_VALUE, "1");
			paramBean[0].sendMessageString(KKW01004SFConst.SORT_KBN, DATABEAN_SET_VALUE, KKW01004SFConst.SORT_ASCE_1);
		}
		else if (KKW01004SFConst.SORT_NUM_3.equals(sort_num))
		{
			paramBean[0].sendMessageString(KKW01004SFConst.SORT_ITEM_NO, DATABEAN_SET_VALUE, "2");
			paramBean[0].sendMessageString(KKW01004SFConst.SORT_KBN, DATABEAN_SET_VALUE, KKW01004SFConst.SORT_DESC_2);
		}
		else if (KKW01004SFConst.SORT_NUM_4.equals(sort_num))
		{
			paramBean[0].sendMessageString(KKW01004SFConst.SORT_ITEM_NO, DATABEAN_SET_VALUE, "2");
			paramBean[0].sendMessageString(KKW01004SFConst.SORT_KBN, DATABEAN_SET_VALUE, KKW01004SFConst.SORT_ASCE_1);
		}
		else if (KKW01004SFConst.SORT_NUM_5.equals(sort_num))
		{
			paramBean[0].sendMessageString(KKW01004SFConst.SORT_ITEM_NO, DATABEAN_SET_VALUE, "3");
			paramBean[0].sendMessageString(KKW01004SFConst.SORT_KBN, DATABEAN_SET_VALUE, KKW01004SFConst.SORT_DESC_2);
		}
		else if (KKW01004SFConst.SORT_NUM_6.equals(sort_num))
		{
			paramBean[0].sendMessageString(KKW01004SFConst.SORT_ITEM_NO, DATABEAN_SET_VALUE, "3");
			paramBean[0].sendMessageString(KKW01004SFConst.SORT_KBN, DATABEAN_SET_VALUE, KKW01004SFConst.SORT_ASCE_1);
		}
	}

	/**
	 * 画面での入力内容をチェックする
	 * 
	 * @param paramBean
	 * @return true:エラー無し、false:エラー有り
	 */
	private boolean chkParam(X31SDataBeanAccess[] paramBean)
	{

		String ukStaYmdFrom = paramBean[0].sendMessageString(KKW01004SFConst.UK_STA_YMD_FROM, DATABEAN_GET_VALUE);
		String ukStaYmdTo = paramBean[0].sendMessageString(KKW01004SFConst.UK_STA_YMD_TO, DATABEAN_GET_VALUE);
		
		if (!isNullBlunk(ukStaYmdFrom) && !isNullBlunk(ukStaYmdTo))
		{
			// 受付開始年月日-至が受付開始年月日-自より過去の場合エラー
			if (ukStaYmdTo.compareTo(ukStaYmdFrom) < 0)
			{
				String[] msgStr = {"受付開始年月日-自", "受付開始年月日-至"};
				String[] itemId = {"uk_sta_year_from", "uk_sta_mon_from", "uk_sta_day_from", "uk_sta_year_to", "uk_sta_mon_to", "uk_sta_day_to"};
				loopSetMessageInfo(itemId, JPCOnlineMessageConstant.EKB4650_NW, msgStr);
				return false;
			}
		}
		
		String ukEndYmdFrom = paramBean[0].sendMessageString(KKW01004SFConst.UK_END_YMD_FROM, DATABEAN_GET_VALUE);
		String ukEndYmdTo = paramBean[0].sendMessageString(KKW01004SFConst.UK_END_YMD_TO, DATABEAN_GET_VALUE);

		if (!isNullBlunk(ukEndYmdFrom) && !isNullBlunk(ukEndYmdTo))
		{
			// 受付終了年月日-至が受付終了年月日-自より過去の場合エラー
			if (ukEndYmdTo.compareTo(ukEndYmdFrom) < 0)
			{
				String[] msgStr = {"受付終了年月日-自", "受付終了年月日-至"};
				String[] itemId = {"uk_end_year_from", "uk_end_mon_from", "uk_end_day_from", "uk_end_year_to", "uk_end_mon_to", "uk_end_day_to"};
				loopSetMessageInfo(itemId, JPCOnlineMessageConstant.EKB4650_NW, msgStr);
				return false;
			}
		}
		
		return true;
	}
	
	/**
	 * 初期表示用パラメータ設定
	 * 
	 * @param bean
	 * @return
	 */
	private HashMap<String, Object> beanClear(X31SDataBeanAccess bean)
	{
		// パラメタ設定
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, KKW01004SFConst.SERVICE_ID_KKSV0041);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, KKW01004SFConst.OPERATION_ID_KKSV0041OP);

		// 適用契機コードプルダウン
		X31SDataBeanAccessArray aply_optnty_list = bean.getDataBeanArray(KKW01004SFConst.APLY_OPTUNITY);
		X31SDataBeanAccess aply_subbean = aply_optnty_list.getDataBean(0);
		aply_subbean.sendMessageString(KKW01004SFConst.CAMPAIGN_INDEX_01, DATABEAN_SET_VALUE, "0");
		// 割引タイプ
		bean.sendMessage(KKW01004SFConst.WRIB_TYPE_CD, X31CWebConst.DATABEAN_CLEAR);
		// 申込年
		bean.sendMessage(KKW01004SFConst.MSKM_YEAR, X31CWebConst.DATABEAN_CLEAR);
		// 申込月
		bean.sendMessage(KKW01004SFConst.MSKM_MON, X31CWebConst.DATABEAN_CLEAR);
		// 申込日
		bean.sendMessage(KKW01004SFConst.MSKM_DAY, X31CWebConst.DATABEAN_CLEAR);
		// 申込年月日
		bean.sendMessage(KKW01004SFConst.MSKM_YMD, X31CWebConst.DATABEAN_CLEAR);
		// 受付開始年ＦＲＯＭ
		bean.sendMessage(KKW01004SFConst.UK_STA_YEAR_FROM, X31CWebConst.DATABEAN_CLEAR);
		// 受付開始月ＦＲＯＭ
		bean.sendMessage(KKW01004SFConst.UK_STA_MON_FROM, X31CWebConst.DATABEAN_CLEAR);
		// 受付開始日ＦＲＯＭ
		bean.sendMessage(KKW01004SFConst.UK_STA_DAY_FROM, X31CWebConst.DATABEAN_CLEAR);
		// 受付開始年月日ＦＲＯＭ
		bean.sendMessage(KKW01004SFConst.UK_STA_YMD_FROM, X31CWebConst.DATABEAN_CLEAR);
		// 受付開始年ＴＯ
		bean.sendMessage(KKW01004SFConst.UK_STA_YEAR_TO, X31CWebConst.DATABEAN_CLEAR);
		// 受付開始月ＴＯ
		bean.sendMessage(KKW01004SFConst.UK_STA_MON_TO, X31CWebConst.DATABEAN_CLEAR);
		// 受付開始日ＴＯ
		bean.sendMessage(KKW01004SFConst.UK_STA_DAY_TO, X31CWebConst.DATABEAN_CLEAR);
		// 受付開始年月日ＴＯ
		bean.sendMessage(KKW01004SFConst.UK_STA_YMD_TO, X31CWebConst.DATABEAN_CLEAR);
		// 受付終了年ＦＲＯＭ
		bean.sendMessage(KKW01004SFConst.UK_END_YEAR_FROM, X31CWebConst.DATABEAN_CLEAR);
		// 受付終了月ＦＲＯＭ
		bean.sendMessage(KKW01004SFConst.UK_END_MON_FROM, X31CWebConst.DATABEAN_CLEAR);
		// 受付終了日ＦＲＯＭ
		bean.sendMessage(KKW01004SFConst.UK_END_DAY_FROM, X31CWebConst.DATABEAN_CLEAR);
		// 受付終了年月日ＦＲＯＭ
		bean.sendMessage(KKW01004SFConst.UK_END_YMD_FROM, X31CWebConst.DATABEAN_CLEAR);
		// 受付終了年ＴＯ
		bean.sendMessage(KKW01004SFConst.UK_END_YEAR_TO, X31CWebConst.DATABEAN_CLEAR);
		// 受付終了月ＴＯ
		bean.sendMessage(KKW01004SFConst.UK_END_MON_TO, X31CWebConst.DATABEAN_CLEAR);
		// 受付終了日ＴＯ
		bean.sendMessage(KKW01004SFConst.UK_END_DAY_TO, X31CWebConst.DATABEAN_CLEAR);
		// 受付終了年月日ＴＯ
		bean.sendMessage(KKW01004SFConst.UK_END_YMD_TO, X31CWebConst.DATABEAN_CLEAR);
		// ソート項目Ｎｏ
		bean.sendMessage(KKW01004SFConst.SORT_ITEM_NO, X31CWebConst.DATABEAN_CLEAR);
		// ソート区分
		bean.sendMessage(KKW01004SFConst.SORT_KBN, X31CWebConst.DATABEAN_CLEAR);
		// ソート番号
		bean.sendMessage(KKW01004SFConst.SORT_NUM, X31CWebConst.DATABEAN_CLEAR);
		// キャンペーン情報リスト
		X31SDataBeanAccessArray campaign_list = bean.getDataBeanArray(KKW01004SFConst.CAMPAIGN_INFO_LIST);
		campaign_list.clearArray();
		
		return paramMap;
	}
	
	/**
	 * 検索用パラメータ設定
	 * 
	 * @param paramBean
	 */
	private HashMap<String, Object> setSearchParam(X31SDataBeanAccess[] paramBean)
	{
		// パラメタ設定用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>(); 
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, KKW01004SFConst.SERVICE_ID_KKSV0038);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, KKW01004SFConst.OPERATION_ID_KKSV0038OP);

		// 最大検索件数
		paramBean[0].sendMessageString(KKW01004SFConst.MAX_SEARCH_NUM,
				DATABEAN_SET_VALUE, JCCWebCommon.getSearchConst("KKW01004_MAX_SHOW_CNT"));
		// 表示件数
		paramBean[0].sendMessageString(KKW01004SFConst.DISPLAY_NUM,
				DATABEAN_SET_VALUE, JCCWebCommon.getSearchConst("KKW01004_ROW_PER_PAGE"));
		// キャンペーン情報リストのクリア
		paramBean[0].getDataBeanArray(KKW01004SFConst.CAMPAIGN_INFO_LIST).clearArray();

		// 割引タイプコードの設定
		String dataTypeCd = null;
		String wribSel = paramBean[0].sendMessageString(KKW01004SFConst.WRIB_TYPE_CD, DATABEAN_GET_VALUE);
		if (KKW01004SFConst.WRIB_TYPE_WRIB.equals(wribSel)) {
			dataTypeCd = "10,20,30,31,40";

		} else if (KKW01004SFConst.WRIB_TYPE_CAMPAIGN.equals(wribSel)) {
			dataTypeCd = "50";

		} else if (KKW01004SFConst.WRIB_TYPE_CAMPAIGN_MNKHT.equals(wribSel)) {
			dataTypeCd = "51";

		} else if (KKW01004SFConst.WRIB_TYPE_HANYO_CHSHT.equals(wribSel)) {
			dataTypeCd = "60,61";
		}
		paramBean[0].sendMessageString(KKW01004SFConst.WRIB_TYPE_SEL, DATABEAN_SET_VALUE, dataTypeCd);
		
		// ソート指定の設定
		setOrderByItem(paramBean);

		return paramMap;
	}

	/**
	 * サービスフォームBeanへの画面設定値設定<br>
	 * ・申込年月日<br>
	 * ・受付開始年月日（自〜至）<br>
	 * ・受付終了年月日（自〜至）の設定
	 * 
	 * @param bean
	 */
	private void setUkYmd(X31SDataBeanAccess[] paramBean)
	{
		// 割引サービス選択サービスフォームBean設定
		String uk_sta_ymd_from = "";
		String uk_sta_ymd_to = "";
		String uk_end_ymd_from = "";
		String uk_end_ymd_to = "";
		
		/*
		 * 申込年月日 = 申込年 + 申込月 + 申込日
		 */
		String mskm_year = paramBean[0].sendMessageString(KKW01004SFConst.MSKM_YEAR, DATABEAN_GET_VALUE);
		String mskm_mon  = paramBean[0].sendMessageString(KKW01004SFConst.MSKM_MON, DATABEAN_GET_VALUE);
		String mskm_day  = paramBean[0].sendMessageString(KKW01004SFConst.MSKM_DAY, DATABEAN_GET_VALUE);
		String mskm_ymd = mskm_year + mskm_mon + mskm_day;
		
		paramBean[0].sendMessageString(KKW01004SFConst.MSKM_YMD, DATABEAN_SET_VALUE, mskm_ymd);
		
		/*
		 * 受付開始年月日FROM = 受付開始年FROM + 受付開始月FROM + 受付開始日FROM
		 */
		String uk_sta_year_from = paramBean[0].sendMessageString(KKW01004SFConst.UK_STA_YEAR_FROM, DATABEAN_GET_VALUE);
		String uk_sta_mon_from  = paramBean[0].sendMessageString(KKW01004SFConst.UK_STA_MON_FROM, DATABEAN_GET_VALUE);
		String uk_sta_day_from  = paramBean[0].sendMessageString(KKW01004SFConst.UK_STA_DAY_FROM, DATABEAN_GET_VALUE);
		
		if (!isNullBlunk(uk_sta_year_from) && !isNullBlunk(uk_sta_mon_from) && !isNullBlunk(uk_sta_day_from)) {
			uk_sta_ymd_from = uk_sta_year_from + uk_sta_mon_from + uk_sta_day_from;
		}
		paramBean[0].sendMessageString(KKW01004SFConst.UK_STA_YMD_FROM, DATABEAN_SET_VALUE, uk_sta_ymd_from);

		/*
		 * 受付開始年月日TO = 受付開始年TO + 受付開始月TO + 受付開始日TO
		 */
		String uk_sta_year_to = paramBean[0].sendMessageString(KKW01004SFConst.UK_STA_YEAR_TO, DATABEAN_GET_VALUE);
		String uk_sta_mon_to  = paramBean[0].sendMessageString(KKW01004SFConst.UK_STA_MON_TO, DATABEAN_GET_VALUE);
		String uk_sta_day_to  = paramBean[0].sendMessageString(KKW01004SFConst.UK_STA_DAY_TO, DATABEAN_GET_VALUE);
		
		if (!isNullBlunk(uk_sta_year_to) && !isNullBlunk(uk_sta_mon_to) && !isNullBlunk(uk_sta_day_to)) {
			uk_sta_ymd_to = uk_sta_year_to + uk_sta_mon_to + uk_sta_day_to;
		}
		paramBean[0].sendMessageString(KKW01004SFConst.UK_STA_YMD_TO, DATABEAN_SET_VALUE, uk_sta_ymd_to);

		/*
		 * 受付終了年月日FROM = 受付終了年FROM + 受付終了月FROM + 受付終了日FROM
		 */
		String uk_end_year_from = paramBean[0].sendMessageString(KKW01004SFConst.UK_END_YEAR_FROM, DATABEAN_GET_VALUE);
		String uk_end_mon_from  = paramBean[0].sendMessageString(KKW01004SFConst.UK_END_MON_FROM, DATABEAN_GET_VALUE);
		String uk_end_day_from  = paramBean[0].sendMessageString(KKW01004SFConst.UK_END_DAY_FROM, DATABEAN_GET_VALUE);
		
		if (!isNullBlunk(uk_end_year_from) && !isNullBlunk(uk_end_mon_from) && !isNullBlunk(uk_end_day_from)) {
			uk_end_ymd_from = uk_end_year_from + uk_end_mon_from + uk_end_day_from;
		}
		paramBean[0].sendMessageString(KKW01004SFConst.UK_END_YMD_FROM, DATABEAN_SET_VALUE, uk_end_ymd_from);

		/*
		 *  受付終了年月日TO = 受付終了年TO + 受付終了月TO + 受付終了日TO
		 */
		String uk_end_year_to = paramBean[0].sendMessageString(KKW01004SFConst.UK_END_YEAR_TO, DATABEAN_GET_VALUE);
		String uk_end_mon_to  = paramBean[0].sendMessageString(KKW01004SFConst.UK_END_MON_TO, DATABEAN_GET_VALUE);
		String uk_end_day_to  = paramBean[0].sendMessageString(KKW01004SFConst.UK_END_DAY_TO, DATABEAN_GET_VALUE);
		
		if (!isNullBlunk(uk_end_year_to) && !isNullBlunk(uk_end_mon_to) && !isNullBlunk(uk_end_day_to)) {
			uk_end_ymd_to = uk_end_year_to + uk_end_mon_to + uk_end_day_to;
		}
		paramBean[0].sendMessageString(KKW01004SFConst.UK_END_YMD_TO, DATABEAN_SET_VALUE, uk_end_ymd_to);

	}

	/**
	 * サービスフォームBeanへの画面設定値設定<br>
	 * ・適用契機コード
	 * @param paramBean
	 */
	private void setAplyOptntyCd(X31SDataBeanAccess[] paramBean)
	{
		X31SDataBeanAccessArray campaign_list = paramBean[0].getDataBeanArray(KKW01004SFConst.APLY_OPTUNITY);
		X31SDataBeanAccess campaign_subbean = campaign_list.getDataBean(0);
		// 添え字の取得
		String stat_index = campaign_subbean.sendMessageString(KKW01004SFConst.CAMPAIGN_INDEX_01, DATABEAN_GET_VALUE);
		// 添え字からコードを取得
		String stat_value = campaign_subbean.sendMessageString(KKW01004SFConst.CAMPAIGN_VALUE_LIST_01, DATABEAN_GET_VALUE, 
				Integer.parseInt(stat_index));
		// 適用契機コードの設定
		paramBean[0].sendMessageString(KKW01004SFConst.APLY_OPTNTY_CD, DATABEAN_SET_VALUE, stat_value);		
	}

	/**
	 * Null、又は空文字を判定
	 * 
	 * @param str
	 * @return true:nullか空文字の場合、false:文字列の設定がある
	 */
	private boolean isNullBlunk(String str)
	{
		if (str == null || "".equals(str))
		{
			return true;
		}
		return false;
	}

	/**
	 * メッセージ設定メソッドをitemId配列数分呼び出す
	 * 
	 * @param msgId
	 * @param msgStr
	 * @param itemId
	 */
	private void loopSetMessageInfo(String[] itemId, String msgId, String[] msgStr)
	{
		for (int i = 0; i < itemId.length; i++)
		{
			JCCWebCommon.setMessageInfo(this, msgId, msgStr, itemId[i]);
		}
	}
}
