/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：CKW00301SFLogic
*   ソースファイル名：CKW00301SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年10月07日
*＜機能概要＞
*   不良顧客一覧を表示します。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/10/07   FJ）川田    新規作成
*   v5.00.00    2014/05/06   FJ）宇野    【IT1-2013-0001142】対応
*
**********************************************************************/

package eo.web.webview.CKW00301SF;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CModelCommon;
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.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCKScreenConst;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.mapping.CKSV0016_CKSV0016OPDBMapper;
import eo.web.webview.mapping.CKSV0017_CKSV0017OPDBMapper;


/**
 * 不良顧客一覧を抽出します。<p>
 * <BR>
 * @author 富士通
 */
public class CKW00301SFLogic extends JCCWebBusinessLogic
{
	
	/** 空文字 */
	private static final String ENPTY = "";
	
	/** 再検索フラグ：初期表示 */
	private static final String RESEARCHFLG_INIT = "0";
	
	/** 再検索フラグ：再検索 */
	private static final String RESEARCHFLG_RESEARCH = "1";
	
	/**
	 * 初期表示処理を行います。
	 * <br>
	 * @return boolean 処理結果
	 * @exception Exception 例外が発生した場合
	 */
	public boolean init() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess srvBean = super.getServiceFormBean();
		
		// 画面情報
		HashMap<String, Object> screenInfoMap = JCCWebCommon.getScreenInfo(this);
		
		// 再検索フラグの設定
		String researchFlg = RESEARCHFLG_INIT;
		if(!isNull(screenInfoMap) && "on".equals(getValue(srvBean, CKW00301SFConst.CUSTINFOLISTFLG)))
		{
			researchFlg = RESEARCHFLG_RESEARCH;
		}
		
		// 運用日付の設定
		setValue(srvBean, CKW00301SFConst.STDARDYMD, JCCWebCommon.getOpeDate(this, null));
		
		// コンボ情報取得
		X31SDataBeanAccess[] paramBean = { srvBean };
		
		// ■ サービス呼び出し準備
		HashMap< String, String > paramMap = new HashMap< String, String >();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CKSV0016");
		
		HashMap< String, Object > inputMap = new HashMap< String, Object >();
		HashMap< String, Object > outputMap = new HashMap< String, Object >();
		
		// コンボ情報取得
		CKSV0016_CKSV0016OPDBMapper mapper = new CKSV0016_CKSV0016OPDBMapper();
		mapper.setCKSV001601SC(paramBean, inputMap, "1");
		mapper.setCKSV001602SC(paramBean, inputMap, "1");
		mapper.setCKSV001603SC(paramBean, inputMap, "1");
		
		// 再検索の場合
		if(RESEARCHFLG_RESEARCH.equals(researchFlg))
		{
			// マッピング
			mapper.setCKSV001604CC(paramBean, inputMap, "1");
			
			// ページング情報の設定
			JCCWebCommon.upmapperPageLinkInfo(this, "0", "CKSV001604CC", inputMap);
		}
		mapper.setCKSV0016WORK01(paramBean, inputMap, researchFlg);
		
		// ■ サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(!isNull(msgResult))
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// ■ サービス結果の転記
		mapper.getCKSV001601SC(paramBean, outputMap);
		mapper.getCKSV001602SC(paramBean, outputMap);
		mapper.getCKSV001603SC(paramBean, outputMap);
		
		// 再検索の場合
		if(RESEARCHFLG_RESEARCH.equals(researchFlg))
		{
			// 検索エラーフラグの取得
			String searchErrFlg = JCCWebCommon.getSearchErrFlg("CKSV001604CC", outputMap);
			
			// 表示ページに該当するデータがない場合の処理
			if(hasError(searchErrFlg, RESEARCHFLG_RESEARCH))
			{
				JCCWebCommon.setMessageInfo(this, "EKB0350--I");

				// 検索条件を復元する。
				reloadSearchCondition();
				
				// マッピング
				mapper.getCKSV001604CC(paramBean, outputMap);
				
				// 不良顧客一覧の表示
				setValue(paramBean[0], CKW00301SFConst.CUSTINFOLISTFLG, "off");
				
			}else{
			
			// 検索条件を復元する。
			reloadSearchCondition();
			
			// マッピング
			mapper.getCKSV001604CC(paramBean, outputMap);
			
			// 不良顧客一覧の表示
			setValue(paramBean[0], CKW00301SFConst.CUSTINFOLISTFLG, "on");
			
			// ページング情報の設定
			JCCWebCommon.downmapperPageLinkInfo(this, "0", "CKSV001604CC", outputMap);
			
			// 検索のコマンドIDを設定する。
			JCCWebCommon.setSearchCommand(this, "L_CHANGE_PAGE");
			}
		}
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW00301);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_NAME_CKW00301);
		
		return true;
	}
	
	/**
	 * 不良顧客一覧検索を行います。
	 * <br>
	 * @return boolean お客様情報一覧検索結果
	 * @throws Exception エラーが発生した場合
	 */
	public boolean search() throws Exception
	{
		// 入力値を退避する
		setBackupParam();
		
		// ページリンク情報のクリア
		JCCWebCommon.clearPageLinkInfo(this, JCKScreenConst.SCREEN_ID_CKW00301);
		
		// 検索実行
		exeSearch(RESEARCHFLG_INIT);
		
		return true;
	}
	
	/**
	 * 画面をクリアします。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean clear() throws Exception
	{
		//サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// テキスト項目のクリア
		bean.sendMessage(CKW00301SFConst.HURYO_CUST_KANA, X31CWebConst.DATABEAN_CLEAR);			// 氏名（カナ）
		bean.sendMessage(CKW00301SFConst.HURYO_CUST_NM, X31CWebConst.DATABEAN_CLEAR);			// 氏名（漢字）
		bean.sendMessage(CKW00301SFConst.HURYO_CUST_BIRTHD_YEAR, X31CWebConst.DATABEAN_CLEAR);	// 生年月日（年）
		bean.sendMessage(CKW00301SFConst.HURYO_CUST_BIRTHD_MONTH, X31CWebConst.DATABEAN_CLEAR);	// 生年月日（月）
		bean.sendMessage(CKW00301SFConst.HURYO_CUST_BIRTHD_DAY, X31CWebConst.DATABEAN_CLEAR);	// 生年月日（日）
		bean.sendMessage(CKW00301SFConst.HURYO_CUST_PCD_KAMI3, X31CWebConst.DATABEAN_CLEAR);	// 郵便番号１（上３桁）
		bean.sendMessage(CKW00301SFConst.HURYO_CUST_PCD_SIMO4, X31CWebConst.DATABEAN_CLEAR);	// 郵便番号２（下４桁）
		bean.sendMessage(CKW00301SFConst.HURYO_CUST_TELNO, X31CWebConst.DATABEAN_CLEAR);		// 電話番号
		bean.sendMessage(CKW00301SFConst.HURYO_CUST_MOVE_TELNO, X31CWebConst.DATABEAN_CLEAR);	// 移動電話番号
		
		// チェックボックスのクリア
		bean.sendMessage(CKW00301SFConst.BBNICHI1, X31CWebConst.DATABEAN_CLEAR);	// 部分一致1
		bean.sendMessage(CKW00301SFConst.BBNICHI2, X31CWebConst.DATABEAN_CLEAR);	// 部分一致2
		
		// コンボボックスのクリア
		// 不良顧客登録コード
		X31SDataBeanAccessArray list = bean.getDataBeanArray(CKW00301SFConst.HURYO_CUST_ADD_CD);
		X31SDataBeanAccess subBean = list.getDataBean(0);
		setValue(subBean, CKW00301SFConst.SELECT_INDEX_01, "");
		
		// 多重申込グループコード
		list = bean.getDataBeanArray(CKW00301SFConst.TAJU_MSKM_GRP_CD);
		subBean = list.getDataBean(0);
		setValue(subBean, CKW00301SFConst.SELECT_INDEX_01, "");
		
		// 生年月日（年号）
		list = bean.getDataBeanArray(CKW00301SFConst.HURYO_CUST_BIRTHD_NENGO);
		subBean = list.getDataBean(0);
		setValue(subBean, CKW00301SFConst.SELECT_INDEX_01, "");
		
		// 一覧情報のクリア
		bean.getDataBeanArray(CKW00301SFConst.HURYO_CUST_LIST).clearArray();
		setValue(bean, CKW00301SFConst.CUSTINFOLISTFLG, "off");
		bean.sendMessage(CKW00301SFConst.SELECT_ROW, X31CWebConst.DATABEAN_CLEAR);
		
		// 退避項目の初期化
		clearBackupParam();
		
		return true;
	}
	
	/**
	 * 不良顧客一意照会画面に遷移します。
	 * <br>
	 * @return boolean 処理結果
	 * @exception Exception 例外が発生した場合。
	 */
	public boolean forwardDetail() throws Exception
	{
		// 顧客引継情報の設定
		HashMap<String, Object> paramMap = getHktgiDataMap();
		
		// 不良顧客番号の設定
		paramMap.put(CKW00301SFConst.HURYO_CUST_NO_02, geHuryoCustNo());
		
		// 画面遷移処理
		nextPage(JCKScreenConst.SCREEN_ID_CKW00302, paramMap);
		
		return true;
	}
	
	/**
	 * 不良顧客情報登録画面に遷移します。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean forwardAdd() throws Exception
	{
		// 顧客引継情報の設定
		HashMap<String, Object> paramMap = getHktgiDataMap();
		
		// 登録完了画面からの戻り先画面設定
		JCCWebCommon.setScreenId(this, JCKScreenConst.SCREEN_ID_CKW00903, JCKScreenConst.SCREEN_ID_CKW00301);
		
		// 画面遷移処理
		nextPage(JCKScreenConst.SCREEN_ID_CKW00901, paramMap);
		
		return true;
	}
	
	/**
	 * 不良顧客情報更新画面に遷移します。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean forwardUpdate() throws Exception
	{
		// パラメータの設定
		HashMap<String, Object> paramMap = getHktgiDataMap();
		paramMap.put(CKW00301SFConst.HURYO_CUST_NO_02, geHuryoCustNo());
		
		// 更新完了画面からの戻り先画面設定
		JCCWebCommon.setScreenId(this, JCKScreenConst.SCREEN_ID_CKW00906, JCKScreenConst.SCREEN_ID_CKW00301);
		
		// 画面遷移処理
		nextPage(JCKScreenConst.SCREEN_ID_CKW00904, paramMap);
		
		return true;
	}
	
	/**
	 * 不良顧客情報更新確認画面に遷移します。
	 * <br>
	 * @return boolean 処理結果
	 * @exception Exception 例外が発生した場合。
	 */
	public boolean forwardDelete() throws Exception
	{
		// パラメータの設定
		HashMap<String, Object> paramMap = getHktgiDataMap();
		paramMap.put(CKW00301SFConst.HURYO_CUST_NO_02, geHuryoCustNo());
		
		// 更新完了画面からの戻り先画面設定
		JCCWebCommon.setScreenId(this, JCKScreenConst.SCREEN_ID_CKW00906, JCKScreenConst.SCREEN_ID_CKW00301);
		
		// 画面遷移処理
		nextPage(JCKScreenConst.SCREEN_ID_CKW00905, paramMap);
		
		return true;
	}
	
	/**
	 * ページ制御を行います。
	 * <br>
	 * @return boolean 処理結果
	 * @exception Exception 例外が発生した場合。
	 */
	public boolean changePage() throws Exception
	{
		// 検索実行
		exeSearch(RESEARCHFLG_RESEARCH);
		
		return true;
	}
	
	/**
	 * 検索処理を行います。
	 * <br>
	 * @param researchFlg 再検索フラグ
	 * <br>
	 * @return boolean 処理結果
	 */
	public void exeSearch(String researchFlg)
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 検索条件を作成する。
		X31SDataBeanAccess[] paramBean = { bean };
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CKSV0017");
		CKSV0017_CKSV0017OPDBMapper mapper = new CKSV0017_CKSV0017OPDBMapper();
		mapper.setCKSV001701CC(paramBean, inputMap, "1");
		
		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "CKSV001701CC", inputMap);
		
		// 不良顧客一覧検索処理
		if(!searchHuryoCustList(paramBean, paramMap, inputMap, outputMap, researchFlg))
		{
			// 処理を中断
			// 画面遷移
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
					X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW00301);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
					X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_NAME_CKW00301);
			return;
		}
		
		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, "0", "CKSV001701CC", outputMap);
		
		// サービス結果の転記
		mapper.getCKSV001701CC(paramBean, outputMap);
		
		// 選択行を設定
		setValue(bean, CKW00301SFConst.SELECT_ROW, "0");
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW00301);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_NAME_CKW00301);
		
	}
	
	/**
	 * 画面遷移情報を設定します。
	 * <br>
	 * @param nextScreenId 遷移先画面ID
	 * @param paramMap     引継情報
	 */
	private void nextPage(String nextScreenId, HashMap<String, Object> paramMap)
	{
		// 共有フォームBean
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		JCCWebCommon.setScreenInfo(this, nextScreenId, paramMap);
		
		// 戻る際に必要な情報を設定する。
		HashMap<String, Object> returnMap = getHktgiDataMap();
		setReturnMap(returnMap);
		JCCWebCommon.setScreenInfo(this, JCKScreenConst.SCREEN_ID_CKW00301, returnMap);
		
		// 次画面からの戻り遷移用
		JCCWebCommon.setScreenId(this, nextScreenId, JCKScreenConst.SCREEN_ID_CKW00301);
		
		// 遷移先の画面ＩＤを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
	}
	
	/**
	 * 不良顧客一覧検索を行います。
	 * <br>
	 * @param paramBean[0] 画面情報
	 * @param paramMap パラメータマップ
	 * @param inputMap 入力マップ
	 * @param outputMap 出力マップ
	 * @param researchFlg 再検索フラグ
	 * <br>
	 * @return boolean 不良顧客一覧検索結果
	 */
	private boolean searchHuryoCustList(X31SDataBeanAccess[] paramBean,
											HashMap<String, Object> paramMap,
											HashMap<String, Object> inputMap,
											HashMap<String, Object> outputMap,
											String researchFlg)
	{
		// 一覧の初期化
		X31SDataBeanAccessArray custList = paramBean[0].getDataBeanArray(CKW00301SFConst.HURYO_CUST_LIST);
		custList.clearArray();
		setValue(paramBean[0], CKW00301SFConst.CUSTINFOLISTFLG, "off");
		setValue(paramBean[0], CKW00301SFConst.SELECT_ROW, "");
		
		// サービスの呼び出し
		X31CMessageResult result = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(!isNull(result))
		{
			JCCWebCommon.setMessageInfo(this, result);
			return false;
		}
		
		// 検索エラーフラグの取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("CKSV001701CC", outputMap);
		
//		// エラーの場合は処理を中断
//		if(hasError(searchErrFlg, researchFlg))
//		{
//			return false;
//		}

		// "1" 取得総件数が0件の場合
		if("1".equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, "EKB0330--I");
			return false;
		}
		// "2" 取得総件数が最大検索件数以上の場合
		else if("2".equals(searchErrFlg))
		{
			// +++++++++++ v5.00.00 +++++++++++
			String[] msg = {JCCWebCommon.getSearchConst("CKW00301_MAX_SHOW_CNT")};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0340__I, msg);
			return false;
			// +++++++++++ v5.00.00 +++++++++++
		}
		// "3" ページング時の取得結果0件の場合
		else if("3".equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, "EKB0350--I");
//			return false;
		}
		
		
		
		// 不良顧客一覧の表示
		paramBean[0].sendMessageString(CKW00301SFConst.CUSTINFOLISTFLG, X31CWebConst.DATABEAN_SET_VALUE,  "on");
		
		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, "L_CHANGE_PAGE");
		
		return true;
	}
	
	/**
	 * 検索結果のエラー判定を行います。
	 * <br>
	 * @param searchErrFlg 検索エラーフラグ
	 * @param researchFlg 再検索フラグ
	 * <br>
	 * @return 判定結果
	 */
	private boolean hasError(String searchErrFlg, String researchFlg)
	{
		// 検索結果が0件の場合の処理
		if("1".equals(searchErrFlg) || "3".equals(searchErrFlg))
		{
			// 再検索フラグが初期表示
			if(RESEARCHFLG_INIT.equals(researchFlg))
			{
				JCCWebCommon.setMessageInfo(this, "EKB0330--I");
				return true;
			}
			
			// 再検索フラグが再検索
			else if(RESEARCHFLG_RESEARCH.equals(researchFlg))
			{
				JCCWebCommon.setMessageInfo(this, "EKB0350--I");
				return true;
			}
		}
		
		return false;
	}

	/**
	 * 入力項目を退避領域に格納します。
	 * <br>
	 */
	private void setBackupParam()
	{
		X31SDataBeanAccessArray list = null;
		X31SDataBeanAccess subBean = null;
		String temp = null;
		int selectIndex = 0;
		StringBuilder sb = null;
		
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 退避情報の初期化
		clearBackupParam();
		
		// 不良顧客登録コード
		list = bean.getDataBeanArray(CKW00301SFConst.HURYO_CUST_ADD_CD);
		subBean = list.getDataBean(0);
		selectIndex = Integer.parseInt(getValue(subBean, CKW00301SFConst.SELECT_INDEX_01));
		temp = subBean.sendMessageString(CKW00301SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, selectIndex);
		setValue(bean, CKW00301SFConst.BK_HURYO_CUST_ADD_CD, temp);
		
		// 退避用＿多重申込グループコード
		list = bean.getDataBeanArray(CKW00301SFConst.TAJU_MSKM_GRP_CD);
		subBean = list.getDataBean(0);
		selectIndex = Integer.parseInt(getValue(subBean, CKW00301SFConst.SELECT_INDEX_01));
		temp = subBean.sendMessageString(CKW00301SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, selectIndex);
		setValue(bean, CKW00301SFConst.BK_TAJU_MSKM_GRP_CD, temp);
		
		// 生年月日（年号）
		list = bean.getDataBeanArray(CKW00301SFConst.HURYO_CUST_BIRTHD_NENGO);
		subBean = list.getDataBean(0);
		selectIndex = Integer.parseInt(getValue(subBean, CKW00301SFConst.SELECT_INDEX_01));
		temp = subBean.sendMessageString(CKW00301SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, selectIndex);
		setValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD_NENGO, temp);
		
		// 氏名（カナ）
		temp =  getValue(bean, CKW00301SFConst.HURYO_CUST_KANA);
		setValue(bean, CKW00301SFConst.BK_HURYO_CUST_KANA, temp);
		
		// 部分一致1
		if(bean.sendMessageBoolean(CKW00301SFConst.BBNICHI1, X31CWebConst.DATABEAN_GET_VALUE))
		{
			temp = "1";
		}
		else
		{
			temp = "0";
		}
		setValue(bean, CKW00301SFConst.BK_BBNICHI1, temp);
		
		// 氏名（漢字）
		temp = getValue(bean, CKW00301SFConst.HURYO_CUST_NM);
		setValue(bean, CKW00301SFConst.BK_HURYO_CUST_NM, temp);
		
		// 部分一致2
		if(bean.sendMessageBoolean(CKW00301SFConst.BBNICHI2, X31CWebConst.DATABEAN_GET_VALUE))
		{
			temp = "1";
		}
		else
		{
			temp = "0";
		}
		setValue(bean, CKW00301SFConst.BK_BBNICHI2, temp);
		
		//	生年月日
		temp = getValue(bean, CKW00301SFConst.HURYO_CUST_BIRTHD_YEAR);
		if(!ENPTY.equals(temp))
		{
			// 生年月日（年）
			sb = new StringBuilder();
			sb.append(getSeirekiYear(getValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD_NENGO), temp));
			setValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD_YEAR, temp);
			
			// 生年月日（月）
			temp = getValue(bean, CKW00301SFConst.HURYO_CUST_BIRTHD_MONTH);
			sb.append(temp);
			setValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD_MONTH, temp);
			
			// 生年月日（日）
			temp = getValue(bean, CKW00301SFConst.HURYO_CUST_BIRTHD_DAY);
			sb.append(temp);	
			setValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD_DAY, temp);
			
			// 生年月日
			setValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD, sb.toString());
		}
		
		// 郵便番号							
		temp = getValue(bean, CKW00301SFConst.HURYO_CUST_PCD_KAMI3);
		if(!ENPTY.equals(temp))
		{
			// 郵便番号１（上３桁）
			sb = new StringBuilder();
			sb.append(temp);
			setValue(bean, CKW00301SFConst.BK_HURYO_CUST_PCD_KAMI3, temp);
			
			// 郵便番号２（下４桁）
			temp = getValue(bean, CKW00301SFConst.HURYO_CUST_PCD_SIMO4);
			sb.append(temp);
			setValue(bean, CKW00301SFConst.BK_HURYO_CUST_PCD_SIMO4, temp);
			
			// 郵便番号
			setValue(bean, CKW00301SFConst.BK_HURYO_CUST_PCD, sb.toString());
		}
		
		// 電話番号
		temp =  getValue(bean, CKW00301SFConst.HURYO_CUST_TELNO);
		setValue(bean, CKW00301SFConst.BK_HURYO_CUST_TELNO, temp);
		
		// 移動電話番号
		temp =  getValue(bean, CKW00301SFConst.HURYO_CUST_MOVE_TELNO);
		setValue(bean, CKW00301SFConst.BK_HURYO_CUST_MOVE_TELNO, temp);
		
		
		
	}
	
	/**
	 * 退避領域を初期化します。
	 * <br>
	 */
	private void clearBackupParam()
	{
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 退避項目の初期化
		bean.sendMessage(CKW00301SFConst.BK_HURYO_CUST_ADD_CD, X31CWebConst.DATABEAN_CLEAR);		// 退避用＿不良顧客登録コード
		bean.sendMessage(CKW00301SFConst.BK_TAJU_MSKM_GRP_CD, X31CWebConst.DATABEAN_CLEAR);			// 退避用＿多重申込グループコード
		bean.sendMessage(CKW00301SFConst.BK_HURYO_CUST_KANA, X31CWebConst.DATABEAN_CLEAR);			// 退避用＿氏名（カナ）
		bean.sendMessage(CKW00301SFConst.BK_BBNICHI1, X31CWebConst.DATABEAN_CLEAR);					// 退避用＿部分一致1
		bean.sendMessage(CKW00301SFConst.BK_HURYO_CUST_NM, X31CWebConst.DATABEAN_CLEAR);			// 退避用＿氏名（漢字）
		bean.sendMessage(CKW00301SFConst.BK_BBNICHI2, X31CWebConst.DATABEAN_CLEAR);					// 退避用＿部分一致2
		bean.sendMessage(CKW00301SFConst.BK_HURYO_CUST_BIRTHD_NENGO, X31CWebConst.DATABEAN_CLEAR);	// 退避用＿生年月日（年号）
		bean.sendMessage(CKW00301SFConst.BK_HURYO_CUST_BIRTHD, X31CWebConst.DATABEAN_CLEAR);		// 退避用＿生年月日
		bean.sendMessage(CKW00301SFConst.BK_HURYO_CUST_BIRTHD_YEAR, X31CWebConst.DATABEAN_CLEAR);	// 退避用＿生年月日（年）
		bean.sendMessage(CKW00301SFConst.BK_HURYO_CUST_BIRTHD_MONTH, X31CWebConst.DATABEAN_CLEAR);	// 退避用＿生年月日（月）
		bean.sendMessage(CKW00301SFConst.BK_HURYO_CUST_BIRTHD_DAY, X31CWebConst.DATABEAN_CLEAR);	// 退避用＿生年月日（日）
		bean.sendMessage(CKW00301SFConst.BK_HURYO_CUST_PCD, X31CWebConst.DATABEAN_CLEAR);			// 退避用＿郵便番号
		bean.sendMessage(CKW00301SFConst.BK_HURYO_CUST_PCD_KAMI3, X31CWebConst.DATABEAN_CLEAR);		// 退避用＿郵便番号（上３桁）
		bean.sendMessage(CKW00301SFConst.BK_HURYO_CUST_PCD_SIMO4, X31CWebConst.DATABEAN_CLEAR);		// 退避用＿郵便番号（下４桁）
		bean.sendMessage(CKW00301SFConst.BK_HURYO_CUST_TELNO, X31CWebConst.DATABEAN_CLEAR);			// 退避用＿電話番号
		bean.sendMessage(CKW00301SFConst.BK_HURYO_CUST_MOVE_TELNO, X31CWebConst.DATABEAN_CLEAR);	// 退避用＿移動電話番号
	}
	
	/**
	 * 画面戻り遷移時に必要な情報をHashMapに設定します。
	 * <br>
	 * @param returnMap 画面戻り遷移時に必要な情報
	 */
	private void setReturnMap(HashMap<String, Object> returnMap)
	{
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 画面項目の設定
		returnMap.put(CKW00301SFConst.BK_HURYO_CUST_ADD_CD, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_ADD_CD));				// 不良顧客登録コード
		returnMap.put(CKW00301SFConst.BK_TAJU_MSKM_GRP_CD, getValue(bean, CKW00301SFConst.BK_TAJU_MSKM_GRP_CD));				// 多重申込グループコード
		returnMap.put(CKW00301SFConst.BK_HURYO_CUST_KANA, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_KANA));					// 氏名（カナ）
		returnMap.put(CKW00301SFConst.BK_BBNICHI1, getValue(bean, CKW00301SFConst.BK_BBNICHI1));								// 部分一致1
		returnMap.put(CKW00301SFConst.BK_HURYO_CUST_NM, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_NM));						// 氏名（漢字）
		returnMap.put(CKW00301SFConst.BK_BBNICHI2, getValue(bean, CKW00301SFConst.BK_BBNICHI2));								// 部分一致2
		returnMap.put(CKW00301SFConst.BK_HURYO_CUST_BIRTHD, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD));				// 生年月日
		returnMap.put(CKW00301SFConst.BK_HURYO_CUST_BIRTHD_NENGO, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD_NENGO));	// 生年月日（年号）
		returnMap.put(CKW00301SFConst.BK_HURYO_CUST_BIRTHD_YEAR, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD_YEAR));	// 生年月日（年）
		returnMap.put(CKW00301SFConst.BK_HURYO_CUST_BIRTHD_MONTH, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD_MONTH));	// 生年月日（月）
		returnMap.put(CKW00301SFConst.BK_HURYO_CUST_BIRTHD_DAY, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD_DAY));		// 生年月日（日）
		returnMap.put(CKW00301SFConst.BK_HURYO_CUST_PCD, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_PCD));					// 郵便番号
		returnMap.put(CKW00301SFConst.BK_HURYO_CUST_PCD_KAMI3, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_PCD_KAMI3));		// 郵便番号（上３桁）
		returnMap.put(CKW00301SFConst.BK_HURYO_CUST_PCD_SIMO4, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_PCD_SIMO4));		// 郵便番号（下４桁）
		returnMap.put(CKW00301SFConst.BK_HURYO_CUST_TELNO, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_TELNO));				// 電話番号
		returnMap.put(CKW00301SFConst.BK_HURYO_CUST_MOVE_TELNO, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_MOVE_TELNO));		// 移動電話番号
		returnMap.put(CKW00301SFConst.SELECT_ROW, getValue(bean, CKW00301SFConst.SELECT_ROW));									// 選択行
		returnMap.put(CKW00301SFConst.CUSTINFOLISTFLG, getValue(bean, CKW00301SFConst.CUSTINFOLISTFLG));						// 顧客情報リストフラグ

	}
	
	/**
	 * 検索条件を再設定します。
	 * <br>
	 */
	private void reloadSearchCondition()
	{
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 検索条件の設定
		setSelectIndexToComboBox(CKW00301SFConst.HURYO_CUST_ADD_CD, CKW00301SFConst.BK_HURYO_CUST_ADD_CD);					// 不良顧客登録コード
		setSelectIndexToComboBox(CKW00301SFConst.TAJU_MSKM_GRP_CD, CKW00301SFConst.BK_TAJU_MSKM_GRP_CD);					// 多重申込グループコード
		setSelectIndexToComboBox(CKW00301SFConst.HURYO_CUST_BIRTHD_NENGO, CKW00301SFConst.BK_HURYO_CUST_BIRTHD_NENGO);		// 生年月日（年号）
		
		setValue(bean, CKW00301SFConst.HURYO_CUST_KANA, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_KANA));				// 氏名（カナ）
		setValue(bean, CKW00301SFConst.HURYO_CUST_NM, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_NM));					// 氏名（漢字）
		setValue(bean, CKW00301SFConst.HURYO_CUST_TELNO, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_TELNO));				// 電話番号
		setValue(bean, CKW00301SFConst.HURYO_CUST_MOVE_TELNO, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_MOVE_TELNO));	// 移動電話番号
		setValue(bean, CKW00301SFConst.HURYO_CUST_BIRTHD_YEAR, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD_YEAR));	// 生年月日（年）
		setValue(bean, CKW00301SFConst.HURYO_CUST_BIRTHD_MONTH, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD_MONTH));// 生年月日（月）
		setValue(bean, CKW00301SFConst.HURYO_CUST_BIRTHD_DAY, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_BIRTHD_DAY));	// 生年月日（日）
		setValue(bean, CKW00301SFConst.HURYO_CUST_PCD_KAMI3, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_PCD_KAMI3));		// 郵便番号１（上３桁）
		setValue(bean, CKW00301SFConst.HURYO_CUST_PCD_SIMO4, getValue(bean, CKW00301SFConst.BK_HURYO_CUST_PCD_SIMO4));		// 郵便番号２（下４桁）
		
		// 部分一致1
		if("1".equals(getValue(bean, CKW00301SFConst.BK_BBNICHI1)))
		{
			bean.sendMessageBoolean(CKW00301SFConst.BBNICHI1, X31CWebConst.DATABEAN_SET_VALUE, true);
		}
		
		// 部分一致2
		if("1".equals(getValue(bean, CKW00301SFConst.BK_BBNICHI2)))
		{
			bean.sendMessageBoolean(CKW00301SFConst.BBNICHI2, X31CWebConst.DATABEAN_SET_VALUE, true);
		}
	}
	
	/**
	 * 顧客契約引継ぎリストを設定します。
	 * 	 * <br>
	 * @return paramMap 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	private HashMap<String, Object> getHktgiDataMap() {
		
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> paramList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> childMap = new HashMap<String, Object>();
		X31SDataBeanAccessArray list = null;
		X31SDataBeanAccess subBean = null;
		
		// 顧客契約内引継ぎリスト
		list = bean.getDataBeanArray(CKW00301SFConst.CUST_KEI_HKTGI_LIST);
		subBean = list.getDataBean(0);
		paramMap.put(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, paramList);
		paramList.add(childMap);
		
		childMap.put(JKKCommonConst.HKTGI_SYSID, getValue(subBean, CKW00301SFConst.SYSID_03));
		childMap.put(JKKCommonConst.HKTGI_SVC_KEI_NO, getValue(subBean, CKW00301SFConst.SVC_KEI_NO_03));
		childMap.put(JKKCommonConst.HKTGI_IDO_DIV, getValue(subBean, CKW00301SFConst.IDO_DIV_03));
		
		int length = 0;
		length = (Integer)subBean.sendMessage(CKW00301SFConst.IDO_RSN_CD_03, X31CWebConst.DATABEAN_GET_COUNT);
		String [] values = new String[length];
		for(int i=0; i<length; i++)
		{
			values[i] = subBean.sendMessageString(CKW00301SFConst.IDO_RSN_CD_03, X31CWebConst.DATABEAN_GET_VALUE, i);
		}
 		childMap.put(JKKCommonConst.HKTGI_IDO_RSN_CD, values);
 		
		length = (Integer)subBean.sendMessage(CKW00301SFConst.OP_SVC_KEI_NO_03, X31CWebConst.DATABEAN_GET_COUNT);
		values = new String[length];
		for(int i=0; i<length; i++)
		{
			values[i] = subBean.sendMessageString(CKW00301SFConst.OP_SVC_KEI_NO_03, X31CWebConst.DATABEAN_GET_VALUE, i);
		}
		childMap.put(JKKCommonConst.HKTGI_OP_SVC_KEI_NO, values);
		
		childMap.put(JKKCommonConst.HKTGI_TRAN_DIV, getValue(subBean, CKW00301SFConst.TRAN_DIV_03));
		childMap.put(JKKCommonConst.HKTGI_MSKM_NO, getValue(subBean, CKW00301SFConst.MSKM_NO_03));
		childMap.put(JKKCommonConst.HKTGI_MSKM_DTL_NO, getValue(subBean, CKW00301SFConst.MSKM_DTL_NO_03));
		childMap.put(JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_NM, getValue(subBean, CKW00301SFConst.TOKUTEI_ID_KMK_NM_03));
		childMap.put(JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_VALUE, getValue(subBean, CKW00301SFConst.TOKUTEI_ID_KMK_VALUE_03));
		
		return paramMap;
	}
	
	/**
	 * 一覧で選択されている顧客不良番号を取得します。
	 * <br>
	 * @return huryoCustNo 不良顧客番号
	 */
	private String geHuryoCustNo()
	{
		//サービスフォームBean
		X31SDataBeanAccess srvBean = getServiceFormBean();
		
		
		
		// 選択された不良顧客番号の取得
		String index = getValue(srvBean, CKW00301SFConst.SELECT_ROW);
		
		if(isNull(index) || ENPTY.equals(JCCWebCommon.trim(index)))
		{
			return ENPTY;
		}
		
		
		X31SDataBeanAccessArray custList = srvBean.getDataBeanArray(CKW00301SFConst.HURYO_CUST_LIST);
		X31SDataBeanAccess selectBean = custList.getDataBean(Integer.parseInt(index));
	
		return getValue(selectBean, CKW00301SFConst.HURYO_CUST_NO_02);
	}
	
	/**
	 * コンボボックスの選択肢を設定します。
	 * <br>
	 * @param itemName 項目名
	 * @param bk_itemName 退避用項目名
	 */
	private void setSelectIndexToComboBox(String itemName, String bk_itemName)
	{
		X31SDataBeanAccessArray list = null;
		X31SDataBeanAccess subBean = null;
		String temp = null;
		String codeValue = null;
		int count = 0;
		
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		list = bean.getDataBeanArray(itemName);
		subBean = list.getDataBean(0);
		count = (Integer)subBean.sendMessage(CKW00301SFConst.CD_DIV_CD_LIST_01, X31CModelCommon.GET_COUNT);
		codeValue = getValue(bean, bk_itemName);
		
		for (int i = 0; i < count; i++)
		{
			temp = subBean.sendMessageString(CKW00301SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, i);

			if(temp.equals(codeValue))
			{
				setValue(subBean, CKW00301SFConst.SELECT_INDEX_01, String.valueOf(i));
				break;
			}
		}
	}
	
	/**
	 * 和暦西暦変換します。
	 * <br>
	 * @param nengo:年号
	 * @param year:和暦年
	 * <br>
	 * @return 西暦に変換した年 
	 */
	private String getSeirekiYear(String nengo, String year)
	{
		// 西暦
		if("1".equals(nengo)){
			return year;
		}
		
		int yy = Integer.parseInt(year);  
		
		// 明治
		if("5".equals(nengo) && 46 > yy)
		{
			return String.valueOf(1867 + yy);
		}
		
		// 大正
		if("4".equals(nengo) && 16 > yy)
		{
			return String.valueOf(1911 + yy);
		}
		
		// 昭和
		if("2".equals(nengo) && 65 > yy)
		{
			return String.valueOf(1925 + yy);
		}
		
		// 平成
		if("3".equals(nengo))
		{
			return String.valueOf(1988 + yy);
		}
		
		return "";
	}
	
	/**
	 * NULL判定処理です。
	 * <br>
	 * @param obj 判定するオブジェクト
	 * <br>
	 * @return 判定結果
	 */
	private boolean isNull(Object obj)
	{
		if(null == obj)
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * データBeanから指定された項目の値を取得します。
	 * <br>
	 * @param bean 画面情報
	 * @param itemName 項目名
	 * <br>
	 * @return String 選択されているコード値
	 */
	private String getValue(X31SDataBeanAccess bean, String itemName)
	{
		return bean.sendMessageString(itemName, X31CWebConst.DATABEAN_GET_VALUE);
	}
	
	/**
	 * データBeanに指定された項目の値を設定します。
	 * <br>
	 * @param bean 画面情報
	 * @param itemName 項目名
	 * @param value 設定値
	 */
	private void setValue(X31SDataBeanAccess bean, String itemName, String value)
	{
		bean.sendMessageString(itemName, X31CWebConst.DATABEAN_SET_VALUE, value);
	}
}
