/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：契約管理システム
*   モジュール名    ：エリアリクエスト一覧照会
*   ソースファイル名：KKW15701SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年09月08日
*＜機能概要＞
*   エリアリクエストの一覧照会部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00       2012/09/08   FJ）日高    新規作成
*   v4.01       2012/10/05   FJ）日高    画面組換対応
*   v4.02       2012/10/19   FJ) 藤原   【IT1-2012-0001534】チェックが外されても更新対象から外されないのを修正
**********************************************************************/
package eo.web.webview.KKW15701SF;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.constant.JZMStrConst;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KKW15701SF.KKW15701SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.common.JKKWebCommon;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.mapping.KKSV0686_KKSV0686OPDBMapper;
import eo.web.webview.mapping.KKSV0687_KKSV0687OPDBMapper;
import eo.web.webview.mapping.KKSV0688_KKSV0688OPDBMapper;
import eo.web.webview.mapping.KKSV0689_KKSV0689OPDBMapper;

/**
 * エリアリクエストデータを検索、表示する画面です。<br>
 * エリアリクエスト一覧更新画面に遷移可能です。<br>
 * <p>
 * また、エリアリクエストのファイル出力が可能です。<br>
 * ファイル出力で検索した結果の一覧ファイルを出力します。<br>
 * 全件リスト出力でエリアリクエストテーブルの全ての<br>
 * エリアリクエストデータの一覧ファイルを出力します。<br>
 * <p>
 * <BR>
 * @author FJ
 */
@SuppressWarnings("serial")
public class KKW15701SFLogic extends JCCWebBusinessLogic 
{

	/** 郵便記号 **/
	public static final String PCD_KIGO = "〒";

	/**
	 * ページングのコマンドID
	 */
	private static final String PAGING_CMD = "paging";

	/**
	 * ページャ表示の画面ID（セッションキー）
	 */
	private static final String SCREENID = JKKScreenConst.SCREEN_ID_KKW15701;

	/**
	 * APサーバに依頼する業務データを格納したマップオブジェクト
	 */
	private HashMap<String, Object> inputMap = null;

	/**
	 * APサーバの処理結果業務データを受け取るマップオブジェクト
	 */
	private HashMap<String, Object> outputMap = null;

	/** ソート項目:エリアリクエスト番号 */
	private static final String SORT_NO_AREA_REQ_NO = "1";

	/** ソート項目:現在工程 */
	private static final String SORT_NO_STEP_CD = "2";

	/** ソート項目:郵便番号 */
	private static final String SORT_NO_PCD = "3";

	/** ソート項目:住所 */
	private static final String SORT_NO_ADDR = "4";

	/** ソート項目:電話番号 */
	private static final String SORT_NO_TELNO = "5";

	/** ソート項目:メールアドレス */
	private static final String SORT_NO_MLAD = "6";

	/** ソート項目:氏名 */
	private static final String SORT_NO_NM = "7";
	
	/** ソート項目:氏名カナ */
	private static final String SORT_NO_KANA = "8";
	
	/** ソート項目:初期表示用 */
	private static final String SORT_NO_INIT_DISP = "0";
	
	/** ソート区分:初期表示用 */
	private static final String SORT_KBN_INIT_DISP = "";

	/** ソート区分:昇順 */
	private static final String SORT_KBN_SYOU = "1";

	/** ソート区分:降順 */
	private static final String SORT_KBN_KOU = "2";

	/**
	 * 初期表示処理<br>
	 * <br>
	 * １．画面情報を取得し、サービスフォームBeanに設定します。<br>
	 * ２．プルダウン表示のためのサービスの呼び出しを行います。<br>
	 * ３．画面表示用にDataBeanに格納します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionInit() throws Exception 
	{
		boolean retResult = true;
		
		//共通処理呼出
		retResult = setInit(false);
		
		return retResult;
	}
	
	
	/**
	 * 検索処理<br>
	 * <br>
	 * １．検索条件を退避します。
	 * ２．検索実行処理を行います。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionSearch() throws Exception 
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 遷移先の設定
		setScreen();

		// 検索条件の取り出し
		
		// 検索用エリアリクエスト番号
		// それぞれのエリアリクエスト番号を結合する
		String area_req_no = "";
		String area_req_no_1 = bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_1, X31CWebConst.DATABEAN_GET_VALUE);
		String area_req_no_2 = bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_2, X31CWebConst.DATABEAN_GET_VALUE);
		String area_req_no_3 = bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_3, X31CWebConst.DATABEAN_GET_VALUE);
		String area_req_no_4 = bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_4, X31CWebConst.DATABEAN_GET_VALUE);
		String area_req_no_5 = bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_5, X31CWebConst.DATABEAN_GET_VALUE);
		String area_req_no_6 = bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_6, X31CWebConst.DATABEAN_GET_VALUE);
		String area_req_no_7 = bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_7, X31CWebConst.DATABEAN_GET_VALUE);
		String area_req_no_8 = bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_8, X31CWebConst.DATABEAN_GET_VALUE);
		String area_req_no_9 = bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_9, X31CWebConst.DATABEAN_GET_VALUE);
		String area_req_no_10 = bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_10, X31CWebConst.DATABEAN_GET_VALUE);

		if(area_req_no_1 != null && !"".equals(area_req_no_1))
		{
			area_req_no = area_req_no_1;
		}
		
		if(area_req_no_2 != null && !"".equals(area_req_no_2))
		{
			if(!"".equals(area_req_no))
			{
				area_req_no = area_req_no + ",";
			}
			area_req_no = area_req_no + area_req_no_2;
		}
		
		if(area_req_no_3 != null && !"".equals(area_req_no_3))
		{
			if(!"".equals(area_req_no))
			{
				area_req_no = area_req_no + ",";
			}
			area_req_no = area_req_no + area_req_no_3;
		}
		
		if(area_req_no_4 != null && !"".equals(area_req_no_4))
		{
			if(!"".equals(area_req_no))
			{
				area_req_no = area_req_no + ",";
			}
			area_req_no = area_req_no + area_req_no_4;
		}
		
		if(area_req_no_5 != null && !"".equals(area_req_no_5))
		{
			if(!"".equals(area_req_no))
			{
				area_req_no = area_req_no + ",";
			}
			area_req_no = area_req_no + area_req_no_5;
		}
		
		if(area_req_no_6 != null && !"".equals(area_req_no_6))
		{
			if(!"".equals(area_req_no))
			{
				area_req_no = area_req_no + ",";
			}
			area_req_no = area_req_no + area_req_no_6;
		}
		
		if(area_req_no_7 != null && !"".equals(area_req_no_7))
		{
			if(!"".equals(area_req_no))
			{
				area_req_no = area_req_no + ",";
			}
			area_req_no = area_req_no + area_req_no_7;
		}
		
		if(area_req_no_8 != null && !"".equals(area_req_no_8))
		{
			if(!"".equals(area_req_no))
			{
				area_req_no = area_req_no + ",";
			}
			area_req_no = area_req_no + area_req_no_8;
		}
		
		if(area_req_no_9 != null && !"".equals(area_req_no_9))
		{
			if(!"".equals(area_req_no))
			{
				area_req_no = area_req_no + ",";
			}
			area_req_no = area_req_no + area_req_no_9;
		}
		
		if(area_req_no_10 != null && !"".equals(area_req_no_10))
		{
			if(!"".equals(area_req_no))
			{
				area_req_no = area_req_no + ",";
			}
			area_req_no = area_req_no + area_req_no_10;
		}
		
		bean.sendMessageString(KKW15701SFConst.SEARCH_AREA_REQ_NO, X31CWebConst.DATABEAN_SET_VALUE, area_req_no);
		
		
		// 検索用郵便番号
		String area_req_pcd_1 = bean.sendMessageString(KKW15701SFConst.PCD_1, X31CWebConst.DATABEAN_GET_VALUE);
		String area_req_pcd_2 = bean.sendMessageString(KKW15701SFConst.PCD_2, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW15701SFConst.SEARCH_PCD, X31CWebConst.DATABEAN_SET_VALUE, area_req_pcd_1 + area_req_pcd_2);

		// 検索用都道府県
		// 選択されたデータ種別コードを添え字から都道府県名に変換
		X31SDataBeanAccessArray statelist = bean.getDataBeanArray(KKW15701SFConst.STATE_INFO);
		X31SDataBeanAccess stateBean = statelist.getDataBean(0);
		int stateSelIndex = Integer.parseInt(stateBean.sendMessageString(KKW15701SFConst.INDEX_01,
				X31CWebConst.DATABEAN_GET_VALUE));
		String state_sel = stateBean.sendMessageString(KKW15701SFConst.CD_DIV_NM_LIST_01,
				X31CWebConst.DATABEAN_GET_VALUE, stateSelIndex);
		String nm = null;
		int ii = state_sel.indexOf(".");
		if(ii > 0)
		{
			nm = state_sel.substring(ii + 1, state_sel.length());
		}
		bean.sendMessageString(KKW15701SFConst.SEARCH_STATE_NM, X31CWebConst.DATABEAN_SET_VALUE, nm);
		
		// 検索用市区町村
		bean.sendMessageString(KKW15701SFConst.SEARCH_CITY_NM, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW15701SFConst.CITY_NM,
						X31CWebConst.DATABEAN_GET_VALUE));
		// 検索用大字通称名
		bean.sendMessageString(KKW15701SFConst.SEARCH_OAZTSU, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW15701SFConst.OAZTSU_NM,
						X31CWebConst.DATABEAN_GET_VALUE));
		// 検索用字丁目
		bean.sendMessageString(KKW15701SFConst.SEARCH_AZCHO_NM, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW15701SFConst.AZCHO_NM,
						X31CWebConst.DATABEAN_GET_VALUE));
		// 検索用番地号
		bean.sendMessageString(KKW15701SFConst.SEARCH_BNCHIGO, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW15701SFConst.BNCHIGO,
						X31CWebConst.DATABEAN_GET_VALUE));
		// 検索用建物名
		bean.sendMessageString(KKW15701SFConst.SEARCH_ADRTTM, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW15701SFConst.ADRTTM,
						X31CWebConst.DATABEAN_GET_VALUE));
		// 検索用部屋番号
		bean.sendMessageString(KKW15701SFConst.SEARCH_ADRRM, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW15701SFConst.ADRRM,
						X31CWebConst.DATABEAN_GET_VALUE));
		// 検索用電話番号
		bean.sendMessageString(KKW15701SFConst.SEARCH_TELNO, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW15701SFConst.TELNO,
						X31CWebConst.DATABEAN_GET_VALUE));
		// 検索用メールアドレス
		bean.sendMessageString(KKW15701SFConst.SEARCH_MLAD, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW15701SFConst.MLAD,
						X31CWebConst.DATABEAN_GET_VALUE));
		// 検索用氏名
		bean.sendMessageString(KKW15701SFConst.SEARCH_PROSCST_NM, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW15701SFConst.PROSCST_NM,
						X31CWebConst.DATABEAN_GET_VALUE));
		// 検索用氏名（カナ）
		bean.sendMessageString(KKW15701SFConst.SEARCH_PROSCST_NM_KANA, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW15701SFConst.PROSCST_NM_KANA,
						X31CWebConst.DATABEAN_GET_VALUE));
		// 検索用現在工程
		String step_cd = "";
		
		// 検索用現在工程の数だけ繰り返して設定
		X31SDataBeanAccessArray datalist = bean.getDataBeanArray(KKW15701SFConst.NOW_STEP_CD_1);
		for (int i = 0; i < datalist.getCount(); i++)
		{
			// 検索用現在工程
			X31SDataBeanAccess dataBean = datalist.getDataBean(i);
			
			// 選択状態
			Boolean selectNo = dataBean.sendMessageBoolean(KKW15701SFConst.SELECTED_BOOLEAN_03, X31CWebConst.DATABEAN_GET_VALUE);
			// コード名称リスト コード
			String cd_div = dataBean.sendMessageString(KKW15701SFConst.CD_DIV_03, X31CWebConst.DATABEAN_GET_VALUE);
			if(selectNo != null && selectNo.booleanValue() == true)
			{
				if(!"".equals(step_cd))
				{
					step_cd = step_cd + ",";
				}
				step_cd = step_cd + cd_div;
				
			}
		}
		bean.sendMessageString(KKW15701SFConst.SEARCH_NOW_STEP_CD, X31CWebConst.DATABEAN_SET_VALUE, step_cd);

		// ソート番号クリア
		bean.sendMessageString(KKW15701SFConst.SORT_NUM, X31CWebConst.DATABEAN_SET_VALUE, "");
		// ソート項目Noクリア
		bean.sendMessageString(KKW15701SFConst.ORDER_NUM, X31CWebConst.DATABEAN_SET_VALUE, "");
		// ソート順クリア
		bean.sendMessageString(KKW15701SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_SET_VALUE, "");
		// エリアリクエスト選択行クリア
		bean.sendMessageString(KKW15701SFConst.AREA_REQ_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");

		// ページング情報削除
		JCCWebCommon.clearPageLinkInfo(this, SCREENID);

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);
		// 新工程のプルダウン
		X31SDataBeanAccessArray stepcdlist = bean.getDataBeanArray(KKW15701SFConst.NEW_STEP_CD_INFO);
		X31SDataBeanAccess stepcdBean = stepcdlist.getDataBean(0);

		// 新工程のプルダウンは先頭（空白）を選択
		stepcdBean.sendMessageString(KKW15701SFConst.INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "0");


		// エリアリクエスト一覧クリア
		X31SDataBeanAccessArray areareqListUpd = bean.getDataBeanArray(KKW15701SFConst.AREA_REQ_LIST_UPD);
		areareqListUpd.clearArray();

		// 検索処理実行
		execSearch(bean);

		// 検索後処理
		afterSearch(bean);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * 初期化処理<br>
	 * <br>
	 * １．検索項目欄をクリアします。
	 * ２．プルダウンの選択値とチェックボックスは初期表示値に戻します。
	 * ３．一覧表示部分は非表示にします。
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionClear() throws Exception 
	{
		boolean result = true;
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 遷移先の設定
		setScreen();

		// プルダウンの選択値の初期化
		setPulldownSelected(bean, false);

		// 画面入力項目
		bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_1, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_2, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_3, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_4, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_5, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_6, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_7, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_8, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_9, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_10, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.PCD_1, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.PCD_2, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.CITY_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.OAZTSU_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.AZCHO_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.ADRTTM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.ADRRM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.TELNO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.MLAD, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.PROSCST_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.PROSCST_NM_KANA, X31CWebConst.DATABEAN_SET_VALUE, "");
		// 検索用現在工程の数だけ繰り返して設定
		X31SDataBeanAccessArray datalist = bean.getDataBeanArray(KKW15701SFConst.NOW_STEP_CD_1);
		for (int i = 0; i < datalist.getCount(); i++)
		{
			// 検索用現在工程
			X31SDataBeanAccess dataBean = datalist.getDataBean(i);
			
			// 選択状態をFalseに
			dataBean.sendMessageBoolean(KKW15701SFConst.SELECTED_BOOLEAN_03, X31CWebConst.DATABEAN_SET_VALUE, false);
		}


		// 検索用
		bean.sendMessageString(KKW15701SFConst.SEARCH_AREA_REQ_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_PCD, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_STATE_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_CITY_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_OAZTSU, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_AZCHO_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_ADRTTM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_ADRRM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_TELNO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_MLAD, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_PROSCST_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_PROSCST_NM_KANA, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_NOW_STEP_CD, X31CWebConst.DATABEAN_SET_VALUE, "");

		// ソート用
		bean.sendMessageString(KKW15701SFConst.SORT_NUM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.ORDER_NUM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 一覧表示部分を非表示にする
		bean.sendMessageBoolean(KKW15701SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);

		// 選択行
		bean.sendMessageString(KKW15701SFConst.AREA_REQ_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");

		// エリアリクエスト一覧（検索結果）
		X31SDataBeanAccessArray areareqList = bean.getDataBeanArray(KKW15701SFConst.AREA_REQ_LIST);
		areareqList.clearArray();
		// エリアリクエスト更新一覧
		X31SDataBeanAccessArray areareqListUpd = bean.getDataBeanArray(KKW15701SFConst.AREA_REQ_LIST_UPD);
		areareqListUpd.clearArray();

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * 一覧更新確認処理<br>
	 * <br>
	 * １．変更有無を調べ、変更行を変更情報に退避します。
	 * ２．サービスの呼び出しを行います（チェックのみ）。<br>
	 * 　　・エリアリクエスト一覧更新CC<br>
	 * ３．一覧更新確認画面へ遷移します。
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionUpdIcrn() throws Exception 
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		updateSelectionList(paramBean);


		// 新工程のプルダウン
		X31SDataBeanAccessArray stepcdlist = paramBean[0].getDataBeanArray(KKW15701SFConst.NEW_STEP_CD_INFO);
		X31SDataBeanAccess stepcdBean = stepcdlist.getDataBean(0);

		// 新工程
		int new_step_cd = Integer.parseInt(stepcdBean.sendMessageString(KKW15701SFConst.INDEX_01,
				X31CWebConst.DATABEAN_GET_VALUE));
		String new_step_cd_value = stepcdBean.sendMessageString(KKW15701SFConst.CD_DIV_LIST_01,
				X31CWebConst.DATABEAN_GET_VALUE, new_step_cd);
		String new_step_cd_nm = stepcdBean.sendMessageString(KKW15701SFConst.CD_DIV_NM_LIST_01,
				X31CWebConst.DATABEAN_GET_VALUE, new_step_cd);

		paramBean[0].sendMessageString(KKW15701SFConst.NEW_STEP_CD_VALUE, X31CWebConst.DATABEAN_SET_VALUE, new_step_cd_value);
		paramBean[0].sendMessageString(KKW15701SFConst.NEW_STEP_CD_NM, X31CWebConst.DATABEAN_SET_VALUE, new_step_cd_nm);
		
		// 更新情報退避用を取得
		X31SDataBeanAccessArray areareqListUpd = paramBean[0].getDataBeanArray(KKW15701SFConst.AREA_REQ_LIST_UPD);

		for (int i = 0; i < areareqListUpd.getCount(); i++)
		{
			X31SDataBeanAccess dataBeanUpd = areareqListUpd.getDataBean(i);
			// 表示セルの形式の入れなおし
			if (i % 2 == 1)
			{
				dataBeanUpd.sendMessageString(KKW15701SFConst.ROW_STYLE_02, X31CWebConst.DATABEAN_SET_VALUE, "odd");
			}
			else
			{
				dataBeanUpd.sendMessageString(KKW15701SFConst.ROW_STYLE_02, X31CWebConst.DATABEAN_SET_VALUE, "even");
			}

		}

		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		KKSV0688_KKSV0688OPDBMapper mapper = new KKSV0688_KKSV0688OPDBMapper();
		inputMap = new HashMap<String, Object>();

		mapper.setAreaReqIktUpdCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

		//サービス呼出処理
		X31CMessageResult msgResult = invokeService("KKSV0688", "KKSV0688OP");
			
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW15702);
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW15702);

		// 戻り先画面IDを設定
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW15703, JKKScreenConst.SCREEN_ID_KKW15701);

		// メッセージ表示用
		String[] msgInfo = {"エリアリクエスト一覧更新"};
		// メッセージ出力
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * 修正処理<br>
	 * <br>
	 * １．一覧照会画面に戻ります。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionShusei() throws Exception
	{
		boolean result = true;

		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW15701);
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW15701);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
		
	}

	/**
	 * 確定処理<br>
	 * <br>
	 * １．サービスの呼び出しを行います（チェック＆登録（更新））。<br>
	 * 　　・エリアリクエスト更新サービスIF<br>
	 * ２．一覧変更完了画面へ遷移します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception
	 */
	public boolean actionFix() throws Exception
	{
		boolean result = true;
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		KKSV0688_KKSV0688OPDBMapper mapper = new KKSV0688_KKSV0688OPDBMapper();
		inputMap = new HashMap<String, Object>();

		mapper.setAreaReqIktUpdCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		//サービス呼出処理
		X31CMessageResult msgResult = invokeService("KKSV0688", "KKSV0688");

		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW15703);
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW15703);

		// メッセージ表示用
		String[] msgInfo = {"エリアリクエスト一覧更新"};
		// メッセージ出力
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, msgInfo);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}
	
	/**
	 * 完了処理<br>
	 * <br>
	 * １．一覧照会画面に戻ります。<br>
	 * ２．同じ条件のまま再検索を行います。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionFin() throws Exception
	{
		boolean result = true;

		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		String nextScreen = JCCWebCommon.getScreenId(this);
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreen);

		// デバッグ
		JSYwebLog.println(JSYwebLog.DEBUG, getClass(), "遷移先の画面ID:" + nextScreen, null, null, null);

		// 再検索
		setInit(true);
		
		return result;
		
	}

	/**
	 * リスト出力処理<BR>
	 * <br>
	 * １．リスト出力処理を行います。<br>
	 * <p>
	 * @return 正常／異常
	 * @throws Exception
	 */
	public boolean actionCreateFileCSV() throws Exception
	{
		
		boolean result = createFileCSV(false);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}


	/**
	 * リスト出力処理<BR>
	 * <br>
	 * １．リスト出力処理を行います。<br>
	 * <p>
	 * @return 正常／異常
	 * @throws Exception
	 */
	public boolean actionCreateFileAllCSV() throws Exception
	{
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 検索条件を退避する。
		String search_area_req_no = bean.sendMessageString(KKW15701SFConst.SEARCH_AREA_REQ_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String search_pcd = bean.sendMessageString(KKW15701SFConst.SEARCH_PCD, X31CWebConst.DATABEAN_GET_VALUE);
		String search_state_nm = bean.sendMessageString(KKW15701SFConst.SEARCH_STATE_NM, X31CWebConst.DATABEAN_GET_VALUE);
		String search_city_nm = bean.sendMessageString(KKW15701SFConst.SEARCH_CITY_NM, X31CWebConst.DATABEAN_GET_VALUE);
		String search_oazcho = bean.sendMessageString(KKW15701SFConst.SEARCH_OAZTSU, X31CWebConst.DATABEAN_GET_VALUE);
		String search_azcho_nm = bean.sendMessageString(KKW15701SFConst.SEARCH_AZCHO_NM, X31CWebConst.DATABEAN_GET_VALUE);
		String search_bnchigo = bean.sendMessageString(KKW15701SFConst.SEARCH_BNCHIGO, X31CWebConst.DATABEAN_GET_VALUE);
		String search_adrttm = bean.sendMessageString(KKW15701SFConst.SEARCH_ADRTTM, X31CWebConst.DATABEAN_GET_VALUE);
		String search_adrrm = bean.sendMessageString(KKW15701SFConst.SEARCH_ADRRM, X31CWebConst.DATABEAN_GET_VALUE);
		String search_telno = bean.sendMessageString(KKW15701SFConst.SEARCH_TELNO, X31CWebConst.DATABEAN_GET_VALUE);
		String search_mlad = bean.sendMessageString(KKW15701SFConst.SEARCH_MLAD, X31CWebConst.DATABEAN_GET_VALUE);
		String search_proscst_nm = bean.sendMessageString(KKW15701SFConst.SEARCH_PROSCST_NM, X31CWebConst.DATABEAN_GET_VALUE);
		String search_proscst_nm_kana = bean.sendMessageString(KKW15701SFConst.SEARCH_PROSCST_NM_KANA, X31CWebConst.DATABEAN_GET_VALUE);
		String search_now_step_cd = bean.sendMessageString(KKW15701SFConst.SEARCH_NOW_STEP_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String order_num = bean.sendMessageString(KKW15701SFConst.ORDER_NUM, X31CWebConst.DATABEAN_GET_VALUE);
		String order_type = bean.sendMessageString(KKW15701SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_GET_VALUE);

		// 検索条件を空にする。
		bean.sendMessageString(KKW15701SFConst.SEARCH_AREA_REQ_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_PCD, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_STATE_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_CITY_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_OAZTSU, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_AZCHO_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_ADRTTM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_ADRRM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_TELNO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_MLAD, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_PROSCST_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_PROSCST_NM_KANA, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.SEARCH_NOW_STEP_CD, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.ORDER_NUM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW15701SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		boolean result = createFileCSV(true);
		
		// 退避していた検索条件をつめなおす。
		bean.sendMessageString(KKW15701SFConst.SEARCH_AREA_REQ_NO, X31CWebConst.DATABEAN_SET_VALUE, search_area_req_no);
		bean.sendMessageString(KKW15701SFConst.SEARCH_PCD, X31CWebConst.DATABEAN_SET_VALUE, search_pcd);
		bean.sendMessageString(KKW15701SFConst.SEARCH_STATE_NM, X31CWebConst.DATABEAN_SET_VALUE, search_state_nm);
		bean.sendMessageString(KKW15701SFConst.SEARCH_CITY_NM, X31CWebConst.DATABEAN_SET_VALUE, search_city_nm);
		bean.sendMessageString(KKW15701SFConst.SEARCH_OAZTSU, X31CWebConst.DATABEAN_SET_VALUE, search_oazcho);
		bean.sendMessageString(KKW15701SFConst.SEARCH_AZCHO_NM, X31CWebConst.DATABEAN_SET_VALUE, search_azcho_nm);
		bean.sendMessageString(KKW15701SFConst.SEARCH_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, search_bnchigo);
		bean.sendMessageString(KKW15701SFConst.SEARCH_ADRTTM, X31CWebConst.DATABEAN_SET_VALUE, search_adrttm);
		bean.sendMessageString(KKW15701SFConst.SEARCH_ADRRM, X31CWebConst.DATABEAN_SET_VALUE, search_adrrm);
		bean.sendMessageString(KKW15701SFConst.SEARCH_TELNO, X31CWebConst.DATABEAN_SET_VALUE, search_telno);
		bean.sendMessageString(KKW15701SFConst.SEARCH_MLAD, X31CWebConst.DATABEAN_SET_VALUE, search_mlad);
		bean.sendMessageString(KKW15701SFConst.SEARCH_PROSCST_NM, X31CWebConst.DATABEAN_SET_VALUE, search_proscst_nm);
		bean.sendMessageString(KKW15701SFConst.SEARCH_PROSCST_NM_KANA, X31CWebConst.DATABEAN_SET_VALUE, search_proscst_nm_kana);
		bean.sendMessageString(KKW15701SFConst.SEARCH_NOW_STEP_CD, X31CWebConst.DATABEAN_SET_VALUE, search_now_step_cd);
		bean.sendMessageString(KKW15701SFConst.ORDER_NUM, X31CWebConst.DATABEAN_SET_VALUE, order_num);
		bean.sendMessageString(KKW15701SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_SET_VALUE, order_type);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * ページャ処理<BR>
	 * <br>
	 * １．検索実行処理を行います。<br>
	 * 　　（ソート情報は保持）
	 * <p>
	 * @return 正常／異常
	 * @throws Exception
	 */
	public boolean actionPaging() throws Exception
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 遷移先の設定
		setScreen();

		// 選択済データを退避
		updateSelectionList(paramBean);

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);

		//検索処理実行
		execSearch(bean);

		// 検索後処理
		afterSearch(bean);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * ソートリンク処理を行います。 <br>
	 * 
	 * @return true:正常
	 * @exception Exceptionがスローされます
	 *                。
	 */
	public boolean actionSort() throws Exception
	{

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = { bean };
		
		// 遷移先の設定
		setScreen();

		// ソート項目ｂﾌ設定を行う。
		setSortItem(paramBean);

		// ソート区分の設定を行う。
		setSortKbn(paramBean);

		// 選択済データを退避
		updateSelectionList(paramBean);

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);

		//検索処理実行
		execSearch(bean);

		// 検索後処理
		afterSearch(bean);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;

	}


	/**
	 * お客様住所検索ボタン処理を行います。
	 * <br>
	 * @return true:正常
	 * @throws Exceptionがスローされます。
	 */
	public boolean actionKeishaAdSearch() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// サービスフォームBeanの値を取得
		String setplace_ad_pcd_1 = bean.sendMessageString(KKW15701SFConst.PCD_1, X31CWebConst.DATABEAN_GET_VALUE);
		String setplace_ad_pcd_2 = bean.sendMessageString(KKW15701SFConst.PCD_2, X31CWebConst.DATABEAN_GET_VALUE);
		String setplace_city_nm = bean.sendMessageString(KKW15701SFConst.CITY_NM,  X31CWebConst.DATABEAN_GET_VALUE);
		String setplace_oaztsu_nm = bean.sendMessageString(KKW15701SFConst.OAZTSU_NM,  X31CWebConst.DATABEAN_GET_VALUE);
		String setplace_azcho_nm = bean.sendMessageString(KKW15701SFConst.AZCHO_NM,  X31CWebConst.DATABEAN_GET_VALUE);
		// 選択されたデータ種別コードを添え字からコードに変換
		X31SDataBeanAccessArray statelist = bean.getDataBeanArray(KKW15701SFConst.STATE_INFO);
		X31SDataBeanAccess stateBean = statelist.getDataBean(0);
		int stateSelIndex = Integer.parseInt(stateBean.sendMessageString(KKW15701SFConst.INDEX_01,
				X31CWebConst.DATABEAN_GET_VALUE));
		String setplace_state_nm = stateBean.sendMessageString(KKW15701SFConst.CD_DIV_NM_LIST_01,
				X31CWebConst.DATABEAN_GET_VALUE, stateSelIndex);
		String nm = null;
		int ii = setplace_state_nm.indexOf(".");
		if(ii > 0)
		{
			setplace_state_nm = setplace_state_nm.substring(ii + 1, setplace_state_nm.length());
		}
		
		// 渡す情報をHashMapに設定する
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(JZMStrConst.key_pcd_1, setplace_ad_pcd_1);
		paramMap.put(JZMStrConst.key_pcd_2, setplace_ad_pcd_2);
		paramMap.put(JZMStrConst.key_ad_cd_1, "");
		paramMap.put(JZMStrConst.key_ad_cd_2, "");
		paramMap.put(JZMStrConst.key_ad_cd_3, "");
		paramMap.put(JZMStrConst.key_ad_cd_4, "");
		paramMap.put(JZMStrConst.key_state_nm, setplace_state_nm);
		paramMap.put(JZMStrConst.key_city_nm, setplace_city_nm);
		paramMap.put(JZMStrConst.key_oaztsu_nm, setplace_oaztsu_nm);
		paramMap.put(JZMStrConst.key_azcho_nm, setplace_azcho_nm);
		
		// 住所検索画面ID設定
		setNextScreenAd(paramMap);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}
	
	/**
	 * お客様住所検索画面からの戻り処理を行います。
	 * <br>
	 * @return true:正常
	 * @throws Exceptionがスローされます。
	 */
	public boolean actionKeishaAdSearchRtn() throws Exception
	{
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 住所検索画面からの情報を取得
		HashMap<String, Object> map = JCCWebCommon.getScreenInfo(this);
		
		// サービスフォームBeanへセットする
		bean.sendMessageString(KKW15701SFConst.PCD_1,  X31CWebConst.DATABEAN_SET_VALUE, (String)map.get(JZMStrConst.ret_pcd_1));
		bean.sendMessageString(KKW15701SFConst.PCD_2,  X31CWebConst.DATABEAN_SET_VALUE, (String)map.get(JZMStrConst.ret_pcd_2));
		//名称をまわして一致する都道府県を探す。
		String state_nm = (String)map.get(JZMStrConst.ret_state_nm);
		X31SDataBeanAccessArray statelist = bean.getDataBeanArray(KKW15701SFConst.STATE_INFO);
		X31SDataBeanAccess stateBean = statelist.getDataBean(0);
		ArrayList<String> selParamState = new ArrayList<String>();
		getPulldownSelectedFromName(stateBean, state_nm, selParamState);
		stateBean.sendMessageString(KKW15701SFConst.INDEX_01,
				X31CWebConst.DATABEAN_SET_VALUE, (String)selParamState.get(0));
		bean.sendMessageString(KKW15701SFConst.CITY_NM,  X31CWebConst.DATABEAN_SET_VALUE, (String)map.get(JZMStrConst.ret_city_nm));
		bean.sendMessageString(KKW15701SFConst.OAZTSU_NM,  X31CWebConst.DATABEAN_SET_VALUE, (String)map.get(JZMStrConst.ret_oaztsu_nm));
		bean.sendMessageString(KKW15701SFConst.AZCHO_NM,  X31CWebConst.DATABEAN_SET_VALUE, (String)map.get(JZMStrConst.ret_azcho_nm));
		
		// 遷移先画面ID
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW15701);
		
		// 遷移先画面名
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW15701);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * 戻るボタン押下処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionBack() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// (1) 遷移先画面の設定
		// 遷移先画面ID
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	
	/**
	 * プルダウンとチェックボックスの選択値を設定します。
	 * <BR>
	 * 
	 * @param bean データBeanアクセスクラス
	 * @param searchFlg 検索フラグ
	 */
	private void setPulldownSelected(X31SDataBeanAccess bean, boolean searchFlg)
	{
		// 都道府県のプルダウン
		X31SDataBeanAccessArray statelist = bean.getDataBeanArray(KKW15701SFConst.STATE_INFO);
		X31SDataBeanAccess stateBean = statelist.getDataBean(0);

		// 新工程のプルダウン
		X31SDataBeanAccessArray stepcdlist = bean.getDataBeanArray(KKW15701SFConst.NEW_STEP_CD_INFO);
		X31SDataBeanAccess stepcdBean = stepcdlist.getDataBean(0);

		// 検索フラグ「要」であれば、検索条件より選択値を設定
		if (searchFlg == true)
		{
			// 都道府県
			//名称をまわして一致する都道府県を探す。
			String state_nm = bean.sendMessageString(KKW15701SFConst.SEARCH_STATE_NM,
					X31CWebConst.DATABEAN_GET_VALUE);
			ArrayList<String> selParamState = new ArrayList<String>();
			getPulldownSelectedFromName(stateBean, state_nm, selParamState);
			stateBean.sendMessageString(KKW15701SFConst.INDEX_01,
					X31CWebConst.DATABEAN_SET_VALUE, (String)selParamState.get(0));

			// 新工程
			String search_stepcd = bean.sendMessageString(KKW15701SFConst.NEW_STEP_CD_VALUE,
					X31CWebConst.DATABEAN_GET_VALUE);
			// indexを調べてselectedにする
			ArrayList<String> selParamStepcd = new ArrayList<String>();
			getPulldownSelected(stepcdBean, search_stepcd, selParamStepcd);
			stepcdBean.sendMessageString(KKW15701SFConst.INDEX_01,
					X31CWebConst.DATABEAN_SET_VALUE, (String)selParamStepcd.get(0));

		}
		// プルダウンとチェックボックスの選択値の初期化
		else
		{
			// 都道府県のプルダウンは先頭（空白）を選択
			stateBean.sendMessageString(KKW15701SFConst.INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "0");
			
			// 新工程のプルダウンは先頭（空白）を選択
			stepcdBean.sendMessageString(KKW15701SFConst.INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "0");
			
		}
	}

	/**
	 * 検索前処理<br>
	 * <br>
	 * 検索系フラグ、および検索結果の初期化を行います。<BR>
	 * <br>
	 * @param bean データBeanアクセスクラス
	 */
	private void beforeSearch(X31SDataBeanAccess bean) 
	{
		// 一覧表示部分を非表示にする
		bean.sendMessageBoolean(KKW15701SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);

		// エリアリクエスト一覧クリア
		X31SDataBeanAccessArray areareqList = bean.getDataBeanArray(KKW15701SFConst.AREA_REQ_LIST);
		areareqList.clearArray();
	}

	/**
	 * 検索実行処理<BR>
	 * <BR>
	 * 検索処理を実行します。
	 * １．エリアリクエスト一覧再検索CCを呼び出します。
	 * ２．エラーがあれば、ステータスに従いメッセージをセットします。
	 * ３．エラーがなければ、一覧表示部分を表示します。
	 * <p>
	 * @param bean サービスフォームBean
	 * @throws Exception
	 */
	private void execSearch(X31SDataBeanAccess bean) throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess[] paramBean = {bean};

		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		KKSV0687_KKSV0687OPDBMapper mapper = new KKSV0687_KKSV0687OPDBMapper();
		inputMap = new HashMap<String, Object>();
		mapper.setAreaReqReSearchCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// ページング情報上りマッピング
		JCCWebCommon.upmapperPageLinkInfo(this, "AreaReqReSearchCC", inputMap, SCREENID);

		// サービス呼出処理
		X31CMessageResult msgResult = invokeService("KKSV0687", "KKSV0687OP");
		
		// 下りマッピング処理(サービス項目-DataBean項目マッピング)
		mapper.getAreaReqReSearchCC(paramBean, outputMap);

	}

	/**
	 * 検索後処理<br>
	 * <br>
	 * 検索サービスインターフェイス呼出後、検索結果よりデータセットを行います。<br>
	 * 取得データの検索エラーフラグが以下の場合は結果欄を表示しません。<BR>
	 * ・検索結果が0件の場合<BR>
	 * ・検索結果が最大検索件数超えの場合<BR>
	 * <br>
	 * @param bean サービスフォームBean
	 */
	@SuppressWarnings("unchecked")
	private void afterSearch(X31SDataBeanAccess bean) 
	{
		// 検索結果のHashMapから、指定したSCタイトルの検索エラーフラグを取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("AreaReqReSearchCC", outputMap);

		// 取得データ件数チェック
		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			// 検索結果が0件の場合の処理
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I);
		}
		else if(JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			// 検索結果が最大検索件数超えの場合の処理
			String[] str = {JCCWebCommon.getSearchConst("KKW15701_MAX_SHOW_CNT")};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0340__I, str);
		}
		else
		{
			// 現状、表示ページに該当するデータなし(3)の場合にエラー処理はなし。
			// ページング情報下りマッピング
			JCCWebCommon.downmapperPageLinkInfo(this, "AreaReqReSearchCC", outputMap, SCREENID);

			// ページングのコマンドマップIDをセッションに設定
			JCCWebCommon.setSearchCommand(this, PAGING_CMD);

			// 一覧表示「要」をセットする。
			bean.sendMessageBoolean(KKW15701SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);

			// 選択する行を取得（最大10個）
			String[] area_req_no_bf = bean.sendMessageString(KKW15701SFConst.AREA_REQ_CHOICE, X31CWebConst.DATABEAN_GET_VALUE).split(",");
			ArrayList area_req_no_bf_list = new ArrayList();
			for(int i = 0; i < area_req_no_bf.length; i++)
			{
				area_req_no_bf_list.add(area_req_no_bf[i]);
			}

			// エリアリクエスト一覧の数だけ繰り返して設定
			X31SDataBeanAccessArray datalist = bean.getDataBeanArray(KKW15701SFConst.AREA_REQ_LIST);
			for (int i = 0; i < datalist.getCount(); i++)
			{
				X31SDataBeanAccess dataBean = datalist.getDataBean(i);
				// 郵便番号の編集
				setEditPcd(dataBean, KKW15701SFConst.AREA_REQ_PCD_02, KKW15701SFConst.AREA_REQ_PCD_02);
				// 住所の編集
				String[] keisha_add = {KKW15701SFConst.AREA_REQ_STATE_NM_02, KKW15701SFConst.AREA_REQ_CITY_NM_02, KKW15701SFConst.AREA_REQ_OAZTSU_NM_02,
						KKW15701SFConst.AREA_REQ_AZCHO_NM_02, KKW15701SFConst.AREA_REQ_AD_BNCHIGO_02, KKW15701SFConst.AREA_REQ_ADRTTM_02,
						KKW15701SFConst.AREA_REQ_ADRRM_02};
				setEditAddNm(dataBean, keisha_add, KKW15701SFConst.AREA_REQ_ADDRESS_02);

				// エリアリクエスト番号
				String area_req_no = 
					dataBean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_02, X31CWebConst.DATABEAN_GET_VALUE);

				// 行選択設定処理
				// ひとまずfalseを設定しておく
				dataBean.sendMessageBoolean(KKW15701SFConst.SELECTED_BOOLEAN_02, X31CWebConst.DATABEAN_SET_VALUE, false);
				// 前回選択行と等しければ選択
				if (area_req_no_bf_list != null && area_req_no_bf_list.contains(area_req_no))
				{
					dataBean.sendMessageBoolean(KKW15701SFConst.SELECTED_BOOLEAN_02, X31CWebConst.DATABEAN_SET_VALUE, true);
				}
				
				if (i % 2 == 1)
				{
					dataBean.sendMessageString(KKW15701SFConst.ROW_STYLE_02, X31CWebConst.DATABEAN_SET_VALUE, "odd");
				}
				else
				{
					dataBean.sendMessageString(KKW15701SFConst.ROW_STYLE_02, X31CWebConst.DATABEAN_SET_VALUE, "even");
				}

			}
		}
	}
	
	/**
	 * サービス呼出処理<br>
	 * <br>
	 * サービスの呼び出しを行います。<br>
	 * <br>
	 * @param usecase_id ユースケースID
	 * @param operation_id オペレーションID
	 * @return APサーバでエラーが発生した場合は、エラーメッセージ情報オブジェクトが返却されます。<br>
	 * 正常終了時には、null値が返却されます。
	 * @throws Exception 
	 */
	private X31CMessageResult invokeService(String usecase_id, String operation_id) throws Exception
	{
		X31CMessageResult msgResult = null;		// 戻り値用

		// パラメタ設定
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, usecase_id);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, operation_id);

		// メッセージリストの初期化
		clearMessageResultList();

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		// サービスの呼び出し
		outputMap = new HashMap<String, Object>();
		msgResult = invokeService(paramMap, inputMap, outputMap);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return msgResult;
	}

	/**
	 * 郵便番号の編集処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @param key_pcd 取得する郵便番号のKey
	 * @param key_hy 編集する郵便番号のKey
	 */
	private void setEditPcd(X31SDataBeanAccess paramBean, String key_pcd, String key_hy)
	{
		
		// 郵便番号を取得
		String pcd = paramBean.sendMessageString(key_pcd, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 郵便番号の編集
		String pcd_hy = JPCUtilCommon.hyhunPcd(pcd);
		if ("".equals(pcd_hy)) 
		{
			paramBean.sendMessageString(key_hy, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		else
		{
			paramBean.sendMessageString(key_hy, X31CWebConst.DATABEAN_SET_VALUE, PCD_KIGO + pcd_hy);
		}
		
	}
	
	/**
	 * 住所の編集処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @param key_add_nm 取得する住所のKey配列
	 * @param key_hy 編集する住所のKey
	 */
	private void setEditAddNm(X31SDataBeanAccess paramBean, String[] key_add_nm, String key_hy)
	{

		// 住所を取得
		String add_nm_hy = "";
		for(int i = 0; i < key_add_nm.length; i++)
		{
			String key = key_add_nm[i];
			String add_nm_buff = paramBean.sendMessageString(key, X31CWebConst.DATABEAN_GET_VALUE);
			if(add_nm_buff != null && !"".equals(add_nm_buff))
			{
				add_nm_hy = add_nm_hy + add_nm_buff;
			}
		}
		
		// 住所の編集
		if ("".equals(add_nm_hy)) 
		{
			paramBean.sendMessageString(key_hy, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		else
		{
			paramBean.sendMessageString(key_hy, X31CWebConst.DATABEAN_SET_VALUE, add_nm_hy);
		}
	}

	/**
	 * コードより該当するプルダウンのindexとコード区分名を取得します。
	 * <BR>
	 * @param bean データBeanアクセスクラス
	 * @param code 探すコード
	 * @param param [0] 該当のindex、[1] 該当のコード区分名
	 */
	private void getPulldownSelected(X31SDataBeanAccess bean, String code, ArrayList<String> param)
	{
		Integer count = (Integer)bean.sendMessage(KKW15701SFConst.CD_DIV_LIST_01,
				X31CWebConst.DATABEAN_GET_COUNT);
		
		for (int i = 0; i < count; i++)
		{
			String cd = bean.sendMessageString(KKW15701SFConst.CD_DIV_LIST_01,
					X31CWebConst.DATABEAN_GET_VALUE, i);

			String nm = bean.sendMessageString(KKW15701SFConst.CD_DIV_NM_LIST_01,
					X31CWebConst.DATABEAN_GET_VALUE, i);

			if (cd != null)
			{
				if (cd.equals(code))
				{
					param.add(i + "");
					param.add(nm);
					return;
				}
			}
		}
		param.add("0");
		param.add("");
	}

	/**
	 * 名称より該当するプルダウンのindexとコード区分コードを取得します。
	 * <BR>
	 * @param bean データBeanアクセスクラス
	 * @param name 探す名称
	 * @param param [0] 該当のindex、[1] 該当のコード区分名
	 */
	private void getPulldownSelectedFromName(X31SDataBeanAccess bean, String name, ArrayList<String> param)
	{
		Integer count = (Integer)bean.sendMessage(KKW15701SFConst.CD_DIV_LIST_01,
				X31CWebConst.DATABEAN_GET_COUNT);
		
		for (int i = 0; i < count; i++)
		{
			String cd = bean.sendMessageString(KKW15701SFConst.CD_DIV_LIST_01,
					X31CWebConst.DATABEAN_GET_VALUE, i);

			String nm = bean.sendMessageString(KKW15701SFConst.CD_DIV_NM_LIST_01,
					X31CWebConst.DATABEAN_GET_VALUE, i);
			
			if (nm != null)
			{
				if (nm.indexOf(name) > 0)
				{
					param.add(i + "");
					param.add(cd);
					return;
				}
			}
		}
		param.add("0");
		param.add("");
	}

	/**
	 * ソート項目を設定します。 <br>
	 * 
	 * @param paramBean
	 *            DataBean項目の配列
	 */
	private void setSortItem(X31SDataBeanAccess[] paramBean)
	{
		// ソート番号の取得
		String sort_num = paramBean[0].sendMessageString(KKW15701SFConst.SORT_NUM, X31CWebConst.DATABEAN_GET_VALUE);
		// ソート番号に対応するソート項目を取得
		String orderby_no = getOrderbyNo(sort_num);
		// ソート項目
		paramBean[0].sendMessageString(KKW15701SFConst.ORDER_NUM, X31CWebConst.DATABEAN_SET_VALUE, orderby_no);
	}

	/**
	 * ソート区分を設定します。 <br>
	 * 
	 * @param paramBean
	 *            DataBean項目の配列
	 */
	private void setSortKbn(X31SDataBeanAccess[] paramBean)
	{
		// ソート番号の取得
		String sort_num = paramBean[0].sendMessageString(KKW15701SFConst.SORT_NUM, X31CWebConst.DATABEAN_GET_VALUE);
		// ソート番号に対応するソート項目を取得
		String orderby_kbn = getSortCode(sort_num);
		// ソート項目
		paramBean[0].sendMessageString(KKW15701SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_SET_VALUE, orderby_kbn);
	}

	/**
	 * ソート番号に対応するソート項目を取得します。 <br>
	 * 
	 * @param sort_num
	 *            ソート番号
	 * @return ソート項目
	 */
	private String getOrderbyNo(String sort_num)
	{
		// ソート番号の判定
		if ("1".equals(sort_num) || "2".equals(sort_num))
		{
			return SORT_NO_AREA_REQ_NO; // エリアリクエスト番号
		} 
		else if ("3".equals(sort_num) || "4".equals(sort_num))
		{
			return SORT_NO_STEP_CD; // 現在工程
		} 
		else if ("5".equals(sort_num) || "6".equals(sort_num))
		{
			return SORT_NO_PCD; // 郵便番号
		} 
		else if ("7".equals(sort_num) || "8".equals(sort_num))
		{
			return SORT_NO_ADDR; // 住所
		} 
		else if ("9".equals(sort_num) || "10".equals(sort_num))
		{
			return SORT_NO_TELNO; // 電話番号
		} 
		else if ("11".equals(sort_num) || "12".equals(sort_num))
		{
			return SORT_NO_MLAD; // メールアドレス
		}

		else if ("13".equals(sort_num) || "14".equals(sort_num))
		{
			return SORT_NO_NM; // 氏名
		}
		
		else if ("15".equals(sort_num) || "16".equals(sort_num))
		{
			return SORT_NO_KANA; // 氏名カナ
		}
		
		return null;
	}

	/**
	 * ソート番号に対応するソート区分を取得します。 <br>
	 * 
	 * @param sort_num
	 *            ソート番号
	 * @return ソート区分
	 */
	private String getSortCode(String sort_num)
	{
		if ("2".equals(sort_num) || "4".equals(sort_num) || "6".equals(sort_num))
		{
			// 昇順
			return SORT_KBN_SYOU;
		}
		
		if ("8".equals(sort_num) || "10".equals(sort_num) || "12".equals(sort_num))
		{
			// 昇順
			return SORT_KBN_SYOU;
		}
		
		if ("14".equals(sort_num) || "16".equals(sort_num))
		{
			// 昇順
			return SORT_KBN_SYOU;
		}

		if ("1".equals(sort_num) || "3".equals(sort_num) || "5".equals(sort_num))
		{
			// 降順
			return SORT_KBN_KOU;

		}
		if ("7".equals(sort_num) || "9".equals(sort_num) || "11".equals(sort_num))
		{
				// 降順
				return SORT_KBN_KOU;

		}
		if ("13".equals(sort_num) || "15".equals(sort_num))
		{
			// 降順
			return SORT_KBN_KOU;

		}
		return null;
	}

	/**
	 * リスト出力処理<BR>
	 * <br>
	 * １．リスト出力処理のサービス呼出を行います。<br>
	 * <p>
	 * @param allDataFlg 全件出力かどうかの判断フラグ
	 * @return 正常／異常
	 * @throws Exception
	 */
	private boolean createFileCSV(boolean allDataFlg) throws Exception
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 遷移先の設定
		setScreen();
		
		// システム日付の設定
		paramBean[0].sendMessageString(KKW15701SFConst.SYS_DATE, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getSysDate());

		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		KKSV0689_KKSV0689OPDBMapper mapper = new KKSV0689_KKSV0689OPDBMapper();
		inputMap = new HashMap<String, Object>();

		mapper.setCreateAreaReqCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		//サービス呼出処理
		X31CMessageResult msgResult = invokeService("KKSV0689", "KKSV0689OP");
			
		// 検索結果のHashMapから、指定したSCタイトルの検索エラーフラグを取得
		String searchErrFlg = "";
		HashMap parentMap = null;
		if(outputMap.containsKey("CreateAreaReqCC"))
		{
			parentMap = (HashMap)outputMap.get("CreateAreaReqCC");
			searchErrFlg = (String)parentMap.get("err_cd");
		}


		// 取得データ件数チェック（全件取得時のみチェック）
		if(allDataFlg && JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			// 検索結果が0件の場合の処理
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8180_KW);
		}

		return result;
	}

	/**
	 * 住所検索画面情報設定処理
	 * <br>
	 * @param paramMap DataBean項目の配列
	 */
	private void setNextScreenAd(HashMap<String, Object> paramMap)
	{
		
		// 渡す情報を設定する
		JCCWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW10601, paramMap);
		// 画面IDを渡す
		JCCWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW10601, JKKScreenConst.SCREEN_ID_KKW15701);
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW10601);
		
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW10601);

	}
	
	/**
	 * 一覧表示画面用共通処理
	 * <br>
	 * @param seniFromFin 初期処理かどうかの判断フラグ
	 * @return 処理結果
	 * @throws Exception 
	 */
	private boolean setInit(boolean seniFromFin) throws Exception
	{
		// 画面情報を取得し、サービスフォームBeanに設定。
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);
		// エリアリクエスト一覧クリア
		X31SDataBeanAccessArray areareqListUpd = bean.getDataBeanArray(KKW15701SFConst.AREA_REQ_LIST_UPD);
		areareqListUpd.clearArray();

		// 完了画面からの遷移の場合は、画面跨りなので再検索のみ
		if (seniFromFin)
		{
			// 検索処理実行
			execSearch(bean);

			// 検索後処理
			afterSearch(bean);

			// 選択行をクリア。これをしないと、同じ更新対象を再検索せずに使うと更新確認画面に反映されない。
			// 検索処理の後なのは選択状態を表示させるため
			bean.sendMessageString(KKW15701SFConst.AREA_REQ_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");

		}
		else
		{
			// 上りマッピング処理(サービス項目-DataBean項目マッピング)
			KKSV0686_KKSV0686OPDBMapper mapper = new KKSV0686_KKSV0686OPDBMapper();
			inputMap = new HashMap<String, Object>();

			// ※プルダウンは機能コード：コード名称管理一覧照会
			mapper.setKKSV068601SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			mapper.setKKSV068602SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

			//サービス呼出処理
			X31CMessageResult msgResult = invokeService("KKSV0686", "KKSV0686OP");
			
			mapper.getKKSV068601SC(paramBean, outputMap);
			mapper.getKKSV068602SC(paramBean, outputMap);
			//検索条件用現在工程の設定
			setNowStepCd();
			
			// 下りマッピング処理(サービス項目-DataBean項目マッピング)
			JKKWebCommon.setPulldownList(bean, outputMap,
					KKW15701SFConst.STATE_INFO, "KKSV068601SC", true);
			JKKWebCommon.setPulldownList(bean, outputMap,
					KKW15701SFConst.NEW_STEP_CD_INFO, "KKSV068602SC", true);
			
			// v4.01 画面組換対応 start
			// メニュー画面以外から遷移していれば戻るボタン表示フラグをONにする。
			String nextScreen = JCCWebCommon.getScreenId(this);
			if(nextScreen == null || "".equals(nextScreen) || nextScreen.equals(JZMScreenConst.SCREEN_ID_ZMW06901))
			{
				bean.sendMessageBoolean(KKW15701SFConst.RTN_BTN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
			}
			else
			{
				bean.sendMessageBoolean(KKW15701SFConst.RTN_BTN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
			}
			// v4.01 画面組換対応 end

		}
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// 画面名を共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW15701);

		// プルダウンの選択値の初期化
		setPulldownSelected(bean, seniFromFin);
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		

		return true;

	}
	
	/**
	 * 検索用現在工程コード設定処理
	 * <br>
	 */
	@SuppressWarnings("unchecked")
	private void setNowStepCd()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		// 検索用現在工程コードをいったんクリア
		X31SDataBeanAccessArray stepCdList = bean.getDataBeanArray(KKW15701SFConst.NOW_STEP_CD_1);
		stepCdList.clearArray();


		//下り情報マップから対象の情報を取得します
		HashMap<String, Object> parentMap = (HashMap)outputMap.get("KKSV068602SC");

		if(parentMap == null) 
		{
			//NULLの場合処理を終了します
			return ;
		}
		//Mapにコード名称管理一覧照会明細が含まれているか判定します
		//コード明細情報リストにコード名称管理一意照会明細を設定します
		ArrayList childList = (ArrayList)parentMap.get("EZM0171B010CBSMsg1List");
		//コード明細情報リストがNULLか、空か判定します
		if (childList == null || 0 == childList.size())
		{
			//NULL、空の場合処理を終了します
			return ;
		}
		
		//コード明細情報リスト分コードリスト、コード名リストを取得します
		for (int i = 0; i < childList.size(); i++)
		{
			//コード明細情報リストをコード明細情報Mapに設定します
			HashMap childMap = (HashMap)childList.get(i);
			//対象のBeanにコード区分名を設定す	る
			String cd_div = (String)childMap.get("cd_div");
			String cd_div_nm = (String)childMap.get("cd_div_nm");

			X31SDataBeanAccess dataBeanStep = stepCdList.addDataBean();

			// コード名称リスト 選択状態
			// ひとまずfalseを設定しておく
			bean.sendMessageBoolean(KKW15701SFConst.SELECTED_BOOLEAN_03, X31CWebConst.DATABEAN_SET_VALUE, false);
			// コード名称リスト コード
			dataBeanStep.sendMessageString(KKW15701SFConst.CD_DIV_03, X31CWebConst.DATABEAN_SET_VALUE, cd_div);
			// コード名称リスト コード名
			dataBeanStep.sendMessageString(KKW15701SFConst.CD_DIV_NM_03, X31CWebConst.DATABEAN_SET_VALUE, cd_div_nm);

		}


	}
	
	/**
	 * 選択リストを更新する。
	 * 
	 * @param paramBean
	 *            DataBean項目の配列
	 */
	@SuppressWarnings("unchecked")
	private void updateSelectionList(X31SDataBeanAccess[] paramBean)
	{

		// 更新情報退避用を取得
		X31SDataBeanAccessArray areareqListUpd = paramBean[0].getDataBeanArray(KKW15701SFConst.AREA_REQ_LIST_UPD);

		// エリアリクエスト一覧の数だけ繰り返して設定
		X31SDataBeanAccessArray datalist = paramBean[0].getDataBeanArray(KKW15701SFConst.AREA_REQ_LIST);
		
// 2012/10/19 del start
//		boolean updflg = false;	// 更新有無用
// 2012/10/19 del end
		String area_req_choice = "";	// エリアリクエスト選択行
		
		// 選択する行を取得（最大10個）
		String[] area_req_no_bf = paramBean[0].sendMessageString(KKW15701SFConst.AREA_REQ_CHOICE, X31CWebConst.DATABEAN_GET_VALUE).split(",");
		ArrayList area_req_no_bf_list = new ArrayList();
		for(int i = 0; i < area_req_no_bf.length; i++)
		{
			area_req_no_bf_list.add(area_req_no_bf[i]);
		}
		
		for (int i = 0; i < datalist.getCount(); i++)
		{
// 2012/10/19 del start
//			updflg = false;
// 2012/10/19 del end
			// エリアリクエスト
			X31SDataBeanAccess dataBean = datalist.getDataBean(i);
			
			// 選択状態
			Boolean selectNo = dataBean.sendMessageBoolean(KKW15701SFConst.SELECTED_BOOLEAN_02, X31CWebConst.DATABEAN_GET_VALUE);
			// エリアリクエスト番号
			String area_req_no = dataBean.sendMessageString(KKW15701SFConst.AREA_REQ_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
			// エリアリクエスト郵便番号
			String pcd = dataBean.sendMessageString(KKW15701SFConst.AREA_REQ_PCD_02, X31CWebConst.DATABEAN_GET_VALUE);
			// エリアリクエスト都道府県名
			String state_nm = dataBean.sendMessageString(KKW15701SFConst.AREA_REQ_STATE_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
			// エリアリクエスト市区町村名
			String city_nm = dataBean.sendMessageString(KKW15701SFConst.AREA_REQ_CITY_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
			// エリアリクエスト大字通称名
			String oaztsu_nm = dataBean.sendMessageString(KKW15701SFConst.AREA_REQ_OAZTSU_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
			// エリアリクエスト字丁目名
			String azcho_nm = dataBean.sendMessageString(KKW15701SFConst.AREA_REQ_AZCHO_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
			// エリアリクエスト住所番地号
			String bnchigo = dataBean.sendMessageString(KKW15701SFConst.AREA_REQ_AD_BNCHIGO_02, X31CWebConst.DATABEAN_GET_VALUE);
			// エリアリクエスト住所補記・建物名
			String adrttm = dataBean.sendMessageString(KKW15701SFConst.AREA_REQ_ADRTTM_02, X31CWebConst.DATABEAN_GET_VALUE);
			// エリアリクエスト住所補記・部屋番号
			String adrrm = dataBean.sendMessageString(KKW15701SFConst.AREA_REQ_ADRRM_02, X31CWebConst.DATABEAN_GET_VALUE);
			// エリアリクエスト住所
			String address = dataBean.sendMessageString(KKW15701SFConst.AREA_REQ_ADDRESS_02, X31CWebConst.DATABEAN_GET_VALUE);
			// エリアリクエスト現在工程コード
			String step_cd = dataBean.sendMessageString(KKW15701SFConst.AREA_REQ_NOW_STEP_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
			// エリアリクエスト現在工程コード名称
			String step_cd_nm = dataBean.sendMessageString(KKW15701SFConst.AREA_REQ_NOW_STEP_CD_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
			// 問合せ客名
			String proscst_nm = dataBean.sendMessageString(KKW15701SFConst.PROSCST_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
			// 問合せ客カナ名
			String proscst_kana = dataBean.sendMessageString(KKW15701SFConst.PROSCST_KANA_02, X31CWebConst.DATABEAN_GET_VALUE);
			// 問合せ客電話番号
			String telno = dataBean.sendMessageString(KKW15701SFConst.PROSCST_TELNO_02, X31CWebConst.DATABEAN_GET_VALUE);
			// 問合せ客メールアドレス
			String mlad = dataBean.sendMessageString(KKW15701SFConst.PROSCST_MLAD_02, X31CWebConst.DATABEAN_GET_VALUE);
			// 更新年月日時分秒
			String upd_dtm = dataBean.sendMessageString(KKW15701SFConst.UPD_DTM_02, X31CWebConst.DATABEAN_GET_VALUE);
			
// 2012/10/19 del start
//			// 選択状態のチェックに変更がある場合
//			if (selectNo != null && selectNo.booleanValue() == true)
//			{
//				updflg = true;
//			}
//			
//			if(updflg && area_req_no_bf_list.contains(area_req_no))
//			{
//				//更新フラグがONで選択済データに含まれている場合には追加しない。
//				continue;
//			}
//
//			// 変更ありの場合は更新情報に退避（次画面表示用）
//			if (updflg)
// 2012/10/19 del end
// 2012/10/19 add start
			// 選択状態となっている、かつ選択済データに含まれていない
			if(selectNo != null && selectNo.booleanValue() == true && !(area_req_no_bf_list.contains(area_req_no)))
// 2012/10/19 add end
			{
				X31SDataBeanAccess dataBeanUpd = areareqListUpd.addDataBean();
				String[] itemNames = dataBeanUpd.getItemNameList();

				for (int j = 0; j < itemNames.length; j++)
				{
					Object val = dataBean.sendMessageObject(itemNames[j],  X31CWebConst.DATABEAN_GET_VALUE);
					if (val instanceof Boolean)
					{
						dataBeanUpd.sendMessageBoolean(itemNames[j], X31CWebConst.DATABEAN_SET_VALUE, (Boolean)val);
					}
					else if (val instanceof String)
					{
						dataBeanUpd.sendMessageString(itemNames[j], X31CWebConst.DATABEAN_SET_VALUE, (String)val);
					}
				}

// 2012/10/19 del start
//				updflg = false;
// 2012/10/19 del end

				// エリアリクエスト番号
				dataBeanUpd.sendMessageString(KKW15701SFConst.AREA_REQ_NO_02, X31CWebConst.DATABEAN_SET_VALUE, area_req_no);
				// エリアリクエスト郵便番号
				dataBeanUpd.sendMessageString(KKW15701SFConst.AREA_REQ_PCD_02, X31CWebConst.DATABEAN_SET_VALUE, pcd);
				// エリアリクエスト都道府県名
				dataBeanUpd.sendMessageString(KKW15701SFConst.AREA_REQ_STATE_NM_02, X31CWebConst.DATABEAN_SET_VALUE, state_nm);
				// エリアリクエスト市区町村名
				dataBeanUpd.sendMessageString(KKW15701SFConst.AREA_REQ_CITY_NM_02, X31CWebConst.DATABEAN_SET_VALUE, city_nm);
				// エリアリクエスト大字通称名
				dataBeanUpd.sendMessageString(KKW15701SFConst.AREA_REQ_OAZTSU_NM_02, X31CWebConst.DATABEAN_SET_VALUE, oaztsu_nm);
				// エリアリクエスト字丁目名
				dataBeanUpd.sendMessageString(KKW15701SFConst.AREA_REQ_AZCHO_NM_02, X31CWebConst.DATABEAN_SET_VALUE, azcho_nm);
				// エリアリクエスト住所番地号
				dataBeanUpd.sendMessageString(KKW15701SFConst.AREA_REQ_AD_BNCHIGO_02, X31CWebConst.DATABEAN_SET_VALUE, bnchigo);
				// エリアリクエスト住所補記・建物名
				dataBeanUpd.sendMessageString(KKW15701SFConst.AREA_REQ_ADRTTM_02, X31CWebConst.DATABEAN_SET_VALUE, adrttm);
				// エリアリクエスト住所補記・部屋番号
				dataBeanUpd.sendMessageString(KKW15701SFConst.AREA_REQ_ADRRM_02, X31CWebConst.DATABEAN_SET_VALUE, adrrm);
				// エリアリクエスト住所
				dataBeanUpd.sendMessageString(KKW15701SFConst.AREA_REQ_ADDRESS_02, X31CWebConst.DATABEAN_SET_VALUE, address);
				// エリアリクエスト現在工程コード
				dataBeanUpd.sendMessageString(KKW15701SFConst.AREA_REQ_NOW_STEP_CD_02, X31CWebConst.DATABEAN_SET_VALUE, step_cd);
				// エリアリクエスト現在工程コード名称
				dataBeanUpd.sendMessageString(KKW15701SFConst.AREA_REQ_NOW_STEP_CD_NM_02, X31CWebConst.DATABEAN_SET_VALUE, step_cd_nm);
				// 問合せ客名
				dataBeanUpd.sendMessageString(KKW15701SFConst.PROSCST_NM_02, X31CWebConst.DATABEAN_SET_VALUE, proscst_nm);
				// 問合せ客カナ名
				dataBeanUpd.sendMessageString(KKW15701SFConst.PROSCST_KANA_02, X31CWebConst.DATABEAN_SET_VALUE, proscst_kana);
				// 問合せ客電話番号
				dataBeanUpd.sendMessageString(KKW15701SFConst.PROSCST_TELNO_02, X31CWebConst.DATABEAN_SET_VALUE, telno);
				// 問合せ客メールアドレス
				dataBeanUpd.sendMessageString(KKW15701SFConst.PROSCST_MLAD_02, X31CWebConst.DATABEAN_SET_VALUE, mlad);
				// 更新年月日時分秒
				dataBeanUpd.sendMessageString(KKW15701SFConst.UPD_DTM_02, X31CWebConst.DATABEAN_SET_VALUE, upd_dtm);
				
				area_req_no_bf_list.add(area_req_no);
				
			}
// 2012/10/19 add start
			// 選択状態となっていない、かつ選択済データに含まれている
			else if(selectNo != null && selectNo.booleanValue() == false && area_req_no_bf_list.contains(area_req_no))
			{
				// エリアリクエスト更新情報から削除
				int list_num = areareqListUpd.getCount(); // エリアリエクスト更新情報件数
				for(int x = 0; x < list_num; x++)
				{
					X31SDataBeanAccess dataBeanUpd = areareqListUpd.getDataBean(x);
					String list_area_req_no = dataBeanUpd.sendMessageString(KKW15701SFConst.AREA_REQ_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
					// エリアリクエスト検索結果の番号と、エリアリクエスト更新情報の番号が一致
					if(list_area_req_no.equals(area_req_no))
					{
						areareqListUpd.removeDataBean(x);
						break;
					}
				}
				// 退避用エリアリクエスト番号から削除
				int bf_list_num = area_req_no_bf_list.size();
				for(int y = 0; y < bf_list_num; y++)
				{
					String bf_list_area_req_no = (String)area_req_no_bf_list.get(y);
					if(bf_list_area_req_no.equals(area_req_no))
					{
						// 空文字で置き換え
						area_req_no_bf_list.set(y, "");
					}
				}
			}
// 2012/10/19 add end
		}
		
		// 退避用エリアリクエスト番号にセットする文字列を作成
		for(int i = 0; i < area_req_no_bf_list.size(); i++)
		{
			if(area_req_choice == null || "".equals(area_req_choice))
			{
				area_req_choice = area_req_no_bf_list.get(i).toString();
			}
			else
			{
// 2012/10/19 chg start
//				area_req_choice = area_req_choice + "," + area_req_no_bf_list.get(i).toString();
				if((null != area_req_no_bf_list.get(i)) && !("".equals(area_req_no_bf_list.get(i).toString())))
				{
					area_req_choice = area_req_choice + "," + area_req_no_bf_list.get(i).toString();
				}
// 2012/10/19 chg end
			}
		}
		
		
		
		// 選択行のエリアリクエスト番号を退避
		paramBean[0].sendMessageString(KKW15701SFConst.AREA_REQ_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, area_req_choice);

	}
	
	/**
	 * 遷移先画面を設定する
	 * 
	 */
	private void setScreen()
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW15701);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW15701);

	}


}
