/*******************************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：TUW00401SFLogic
*	ソースファイル名：TUW00401SFLogic.java
*	作成者			：FJ
*	日付			：2011年06月13日
*＜機能概要＞
*	TUW00401のビューロジック
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2011/06/13	FJ)宮本		新規作成
*	v3.00.00	2012/03/27	FJ)宮本		ANK-0079-01-00
*	v4.00.00	2012/06/29	FJ)宮本		IT1-2012-0000871
*	v4.00.01	2012/09/12	FJ)宮本		ST1-2012-0000554
*	v5.00.01	2013/06/12	FJ)高橋		ANK-1530-00-00
*	v6.00.00	2013/12/09	FJ)安田		ANK-1762-00-00
*	v6.00.01	2014/03/10	FJ)高橋		ANK-1741-00-00
*	v72.00.00	2024/03/06	FJ)三角		ANK-4494-00-00_【eo定期】 双方向番ポ対応
********************************************************************************/

package eo.web.webview.TUW00401SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.constant.JTUStrConst;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JTUWebCommon;
import eo.web.webview.common.JTUScreenConst;
import eo.web.webview.mapping.TUSV0062_TUSV0062OPDBMapper;
import eo.web.webview.mapping.TUSV0063_TUSV0063OPDBMapper;
import eo.web.webview.mapping.TUSV0064_TUSV0064OPDBMapper;

/**
 * TUW00401のビューロジック
 * @author FJ
 *
 */
public class TUW00401SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 初期表示ユースケースID
	 */
	private static final String INIT_USECASE_ID = "TUSV0062";
	
	/**
	 * 初期表示SCタイトル01
	 */
	private static final String INIT_SC_TITLE01 = "TUSV006201SC";
	

	/**
	 * 出力確認ユースケースID
	 */
	private static final String CFM_USECASE_ID = "TUSV0063";
	
	/**
	 * 出力確認SCタイトル01
	 */
	private static final String CFM_SC_TITLE01 = "TUSV006301SC";
	
	/**
	 * 出力確認SCタイトル02
	 */
	private static final String CFM_SC_TITLE02 = "TUSV006302SC";
	
	/**
	 * 確定ユースケースID
	 */
	private static final String FIX_USECASE_ID = "TUSV0064";
	
	/**
	 * 確定SCタイトル01
	 */
	private static final String FIX_SC_TITLE01 = "TUSV006401SC";
	/**
	 * 確定SCタイトル02
	 */
	private static final String FIX_SC_TITLE02 = "TUSV006402SC";
// ANK-4494-00-00 DEL START
//	/**
//	 * 確定SCタイトル03
//	 */
//	private static final String FIX_SC_TITLE03 = "TUSV006403SC";
//
//	/**
//	 * 確定SCタイトル04
//	 */
//	private static final String FIX_SC_TITLE04 = "TUSV006404SC";
// ANK-4494-00-00 DEL END
	
	/**
	 * 確定CCタイトル01
	 */
	private static final String FIX_CC_TITLE01 = "TUSV006401CC";
	/**
	 * 確定CCタイトル02
	 */
	private static final String FIX_CC_TITLE02 = "TUSV006402CC";
// ANK-4494-00-00 DEL START
//	/**
//	 * 確定CCタイトル03
//	 */
//	private static final String FIX_CC_TITLE03 = "TUSV006403CC";
//
//	/**
//	 * 確定CCタイトル04
//	 */
//	private static final String FIX_CC_TITLE04 = "TUSV006404CC";
// ANK-4494-00-00 DEL END
	
	/**
	 * 最大検索件数
	 */
	private static final String CFM_MAX_SHOW_CNT = "TUW00402_MAX_SHOW_CNT";
	
	/**
	 * ページ表示件数
	 */
	private static final String CFM_ROW_PER_PAGE = "TUW00402_ROW_PER_PAGE";

	/** メッセージ置換文字列  */
	private static final 	String[] MESSAGE_VALUE = new String[]{"番ポ工事申込依頼"};
	/** メッセージ置換文字列EKB0900  */
	private static final 	String[] MESSAGE_VALUE_EKB0900 = new String[]{"送信対象の件数", "0件"};
		/** メッセージ置換文字列EKB0900  */
	private static final 	String MESSAGE_VALUE_EKB0900_MAX = "送信対象の合計件数";
	/** メッセージ置換文字列EKB0720  */
// ANK-4494-00-00 MOD START
//	private static final 	String[] MESSAGE_VALUE_EKB0720 = new String[]{"申込事業所", "申込事業所情報"};
	private static final 	String[] MESSAGE_VALUE_EKB0720 = new String[]{"番ポ依頼内容", "送信種別"};
// ANK-4494-00-00 MOD END
	
	/**
	 * 送信種別＿行番号
	 */
	/** 移転 */
	private static final int ROW_NUM_ITEN = 0;
	/** 廃止 */
	private static final int ROW_NUM_HAIS = 1;
// ANK-4494-00-00 DEL START
//	/** 変更 */
//	private static final int ROW_NUM_HENK = 2;
//	/** 事業者間調整 */
//	private static final int ROW_NUM_JIGS = 3;
// ANK-4494-00-00 DEL END
	

	/** 送信対象件数 */
// ANK-4494-00-00 MOD START
//	private static final int SEND_TGT_CNT = 4;
	private static final int SEND_TGT_CNT = 2;
// ANK-4494-00-00 MOD END
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_init() throws Exception
	{
		return bmpKojiMskmReq_init(false);
	}
	
	/**
	 * 初期化処理
	 * @param search_flg 検索ボタン押下フラグ
	 * @return boolean
	 */
	private boolean bmpKojiMskmReq_init(boolean search_flg)
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW00401, JTUScreenConst.SCREEN_NAME_TUW00401);
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 戻るボタンの表示要否判定
		bean.sendMessageString(TUW00401SFConst.BACK_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE
				, JTUWebCommon.getBackDispFlg(this, JTUScreenConst.SCREEN_ID_TUW00401));

		if (search_flg == true)
		{
			/**
		 	* DataBean設定処理
		 	*/
			setBeanSearchInfo_Init(bean);
		}

		// セッション情報取得
		HashMap<String, Object> searchInfo = JCCWebCommon.getScreenInfo(this);
		
		if(searchInfo != null)
		{
			bean.sendMessageString(TUW00401SFConst.HOJIN_KOJIN_CD, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(TUW00401SFConst.HOJIN_KOJIN_CD).toString());

			X31SDataBeanAccess listDataBean = bean.getDataBeanArray(TUW00401SFConst.HOJIN_KOJIN_CD_LIST).getDataBean(0);

			listDataBean.sendMessageString(TUW00401SFConst.INDEX_04, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(TUW00401SFConst.HOJIN_KOJIN_CD_LIST + TUW00401SFConst.INDEX_04).toString());
		}
		
		// 一覧情報のクリア
		X31SDataBeanAccessArray beanList = paramBean[0].getDataBeanArray(TUW00401SFConst.BMP_KOJI_MSKM_CNT_INFO);
		if(beanList.getCount() != 0)
		{
			beanList.clearArray();
		}
		/**
		 * サービス呼出処理
		 */
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, INIT_USECASE_ID);
		
		// マッピングクラスのインスタンスを生成
		TUSV0062_TUSV0062OPDBMapper mapper = new TUSV0062_TUSV0062OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// システム日付取得
		String sysDate = JCCWebCommon.getSysDate();
		
		// 上りマッピングの呼び出し
		mapper.setTUSV006201SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, sysDate);
		mapper.setTUSV006202SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		if (inputMap.containsKey("TUSV006202SC"))
		{
			((HashMap<String, Object>)inputMap.get("TUSV006202SC")).put("key_stdardymd", sysDate);
		}

		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		/**
		 * サービス処理結果の取得
		 */
		// 下りマッピングの呼び出し
		mapper.getTUSV006201SC(paramBean, outputMap);
		mapper.getTUSV006202SC(paramBean, outputMap);

		JTUWebCommon.setListNo(bean, TUW00401SFConst.HOJIN_KOJIN_CD_LIST, TUW00401SFConst.CD_NM_04);
		
		// 検索エラー取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg(INIT_SC_TITLE01, outputMap);
		
		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			//0件の場合
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0720_KW, MESSAGE_VALUE_EKB0720);
			return true;
		}
		
		// 番ポ工事申込依頼件数明細編集処理
		setListValue(bean, TUW00401SFConst.BMP_KOJI_MSKM_CNT_INFO, TUW00401SFConst.CHKBOX_DSP_FLG_01, JTUStrConst.DISP_FLG_TRUE, ROW_NUM_ITEN);
		setListValue(bean, TUW00401SFConst.BMP_KOJI_MSKM_CNT_INFO, TUW00401SFConst.CHKBOX_DSP_FLG_01, JTUStrConst.DISP_FLG_TRUE, ROW_NUM_HAIS);
// ANK-4494-00-00 DEL START
//		setListValue(bean, TUW00401SFConst.BMP_KOJI_MSKM_CNT_INFO, TUW00401SFConst.CHKBOX_DSP_FLG_01, JTUStrConst.DISP_FLG_TRUE, ROW_NUM_HENK);
//		setListValue(bean, TUW00401SFConst.BMP_KOJI_MSKM_CNT_INFO, TUW00401SFConst.CHKBOX_DSP_FLG_01, JTUStrConst.DISP_FLG_TRUE, ROW_NUM_JIGS);
// ANK-4494-00-00 DEL END
		
		//検索条件をセッションに保存
		saveSessionSearchInfo();
		
		setBeanFromSessionSearchInfo();
		
		return true;
	}
	
	/**
	 * 出力確認ボタン押下イベント
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_cfm() throws Exception
	{
		
		//セッション情報を削除 
		JCCWebCommon.clearPageLinkInfo(this, JTUScreenConst.SCREEN_ID_TUW00402);
		
		//前処理チェック
		if(!getConfirmPreCheck())
		{
			return true;
		}
		
		return search(false);
	
	}

	/**
	 * 出力確認 前処理チェック
	 * @return boolean
	 */
	private boolean getConfirmPreCheck()
	{
		long oput_cnt = 0;
		long send_uplo = 0;
		long sum_oput_cnt = 0;
		String max_show_cnt = JCCWebCommon.getSearchConst(CFM_MAX_SHOW_CNT);
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		X31SDataBeanAccessArray listDataBean = bean.getDataBeanArray(TUW00401SFConst.BMP_KOJI_MSKM_CNT_INFO);
		int len = listDataBean.getCount();
		X31SDataBeanAccess childBean = null;
		
		
		for(int i = 0; i < len; i++)
		{
			childBean = listDataBean.getDataBean(i);
			if(childBean.sendMessageBoolean(TUW00401SFConst.CHOICE_01, X31CWebConst.DATABEAN_GET_VALUE))
			{
				oput_cnt = Long.parseLong(childBean.sendMessageString(TUW00401SFConst.MI_OUTPUT_CNT_01, X31CWebConst.DATABEAN_GET_VALUE));
// ANK-4494-00-00 DEL START
//				send_uplo = Long.parseLong(childBean.sendMessageString(TUW00401SFConst.SEND_UPPLNO_01, X31CWebConst.DATABEAN_GET_VALUE));
//				
//				// 未出力件数が送信上限数より大きい場合、出力件数に送信上限数を設定
//				if(send_uplo < oput_cnt)
//				{
//					oput_cnt = send_uplo;
//				}
// ANK-4494-00-00 DEL END
				
				sum_oput_cnt += oput_cnt;
				if(0 == oput_cnt)
				{
					// 出力対象の件数が0件の場合
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9070_KW, MESSAGE_VALUE_EKB0900);
					return false;
				}
				else if(Integer.parseInt(max_show_cnt) < sum_oput_cnt)
				{
					// 出力対象の合計が最大件数を超えた場合
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9070_KW,  new String[]{MESSAGE_VALUE_EKB0900_MAX
							, JCCWebCommon.getSearchConst(CFM_MAX_SHOW_CNT) + "件以上"});
					return false;
				}
			}
		}

		
		return true;
	}

	/**
	 * ページング押下イベント
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_paging() throws Exception
	{
		return search(true);
	}

	/**
	 * 検索処理
	 * @param boolean ページリンクフラグ
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean search(boolean pageLink) throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};

		// セッション情報取得
		HashMap<String, Object> searchInfo = JCCWebCommon.getScreenInfo(this);
		
		if(searchInfo != null)
		{
			bean.sendMessageString(TUW00401SFConst.HOJIN_KOJIN_CD, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(TUW00401SFConst.HOJIN_KOJIN_CD).toString());
		}
		
		/**
		 * DataBean設定処理
		 */
		setBeanSearchInfo(bean);

		// 一覧表示フラグの初期化
		bean.sendMessageString(TUW00401SFConst.FIX_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.DISP_FLG_FALSE);

		// 一覧情報のクリア
		X31SDataBeanAccessArray beanList = paramBean[0].getDataBeanArray(TUW00401SFConst.BMP_KOJI_MSKM_ICRN_INFO);
		X31SDataBeanAccessArray beanListErr = paramBean[0].getDataBeanArray(TUW00401SFConst.BMP_KOJI_MSKM_ICRN_INFO_ERR_CHK);
		if(beanList.getCount() != 0)
		{
			beanList.clearArray();
		}
		if(beanListErr.getCount() != 0)
		{
			beanListErr.clearArray();
		}
		
		/**
		 * サービス呼出処理
		 */
		//  ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, CFM_USECASE_ID);

		// マッピングクラスのインスタンスを生成
		TUSV0063_TUSV0063OPDBMapper mapper = new TUSV0063_TUSV0063OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// 上りマッピングの呼び出し
		mapper.setTUSV006301SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setTUSV006302SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

		
		// 一覧照会共通部設定
		((HashMap<String, Object>)inputMap.get(CFM_SC_TITLE01)).put("search_type", JPCModelConstant.SAERCH_TYPE_BBN);
		((HashMap<String, Object>)inputMap.get(CFM_SC_TITLE01)).put("max_search_num", JCCWebCommon.getSearchConst(CFM_MAX_SHOW_CNT));
		((HashMap<String, Object>)inputMap.get(CFM_SC_TITLE01)).put("display_num", JCCWebCommon.getSearchConst(CFM_ROW_PER_PAGE));
		
		((HashMap<String, Object>)inputMap.get(CFM_SC_TITLE02)).put("search_type", JPCModelConstant.SAERCH_TYPE_IKT);
		((HashMap<String, Object>)inputMap.get(CFM_SC_TITLE02)).put("max_search_num", JCCWebCommon.getSearchConst(CFM_MAX_SHOW_CNT));
		
		// ページリンク押下での検索の場合はエラーチェック用のサービスインターフェイスは実行しない
		if(pageLink)
		{
			((HashMap<String, Object>)inputMap.get(CFM_SC_TITLE02)).put(JTUStrConst.RESEARCH_FLG_NM, JTUStrConst.RESEARCH_FLG_FALSE);
		}
		else
		{
			((HashMap<String, Object>)inputMap.get(CFM_SC_TITLE02)).put(JTUStrConst.RESEARCH_FLG_NM, JTUStrConst.RESEARCH_FLG_TRUE);
		}


		// ページリンク情報のマッピング
		JCCWebCommon.upmapperPageLinkInfo(this, CFM_SC_TITLE01, inputMap, JTUScreenConst.SCREEN_ID_TUW00402);
		
		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);	
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		
		/**
		 * サービス処理結果の取得
		 */
		
		// 下りマッピングの呼び出し
		mapper.getTUSV006301SC(paramBean, outputMap);
		mapper.getTUSV006302SC(paramBean, outputMap);
		
		/**
		 * 取得データ件数チェック
		 */
		// 検索エラー取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg(CFM_SC_TITLE01, outputMap);
		
		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			//0件の場合
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9070_KW, MESSAGE_VALUE_EKB0900);
			return true;
		}
		else if(JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			//最大件数を超えた場合
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9070_KW, new String[]{MESSAGE_VALUE_EKB0900_MAX
					, JCCWebCommon.getSearchConst(CFM_MAX_SHOW_CNT) + "件以上"});
			return true;
		}
		else if(JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
		{
			//表示ページに該当するデータがない場合
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0350__I);
			return true;
		}
		
		// ページリンク情報のマッピング
		JCCWebCommon.downmapperPageLinkInfo(this, CFM_SC_TITLE01, outputMap, JTUScreenConst.SCREEN_ID_TUW00402);

		// 検索コマンドIDの設定
		JCCWebCommon.setSearchCommand(this, "pageLink",  JTUScreenConst.SCREEN_ID_TUW00402);

		
		/**
		 * DataBean設定処理
		 */
		//ボタン表示フラグ設定
		bean.sendMessageString(TUW00401SFConst.FIX_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.DISP_FLG_TRUE);
		
		// 行スタイル設定
		JTUWebCommon.setRowStyle(bean, TUW00401SFConst.BMP_KOJI_MSKM_ICRN_INFO, TUW00401SFConst.ROW_STYLE_02);

		// メッセージ設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, MESSAGE_VALUE);
		JCCWebCommon.setMessageAreaBackColor(this, "1");
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW00402, JTUScreenConst.SCREEN_NAME_TUW00402);
		
		return true;
	}
	
	
	/**
	 * 確定ボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_fix() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};

		// ボタン表示フラグの初期化
		bean.sendMessageString(TUW00401SFConst.FIX_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.DISP_FLG_FALSE);

		// 次画面の一覧情報のクリア
		X31SDataBeanAccessArray beanListNext = paramBean[0].getDataBeanArray(TUW00401SFConst.OPUT_CNT_INFO);
		if(beanListNext.getCount() != 0)
		{
			beanListNext.clearArray();
		}
		
		/**
		 * サービス呼出処理
		 */
		//  ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, FIX_USECASE_ID);

		// マッピングクラスのインスタンスを生成
		TUSV0064_TUSV0064OPDBMapper mapper = new TUSV0064_TUSV0064OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		
		// 上りマッピングの呼び出し
		mapper.setTUSV006401SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setTUSV006402SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
//ANK-4494-00-00 DEL START
//		mapper.setTUSV006403SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
//		mapper.setTUSV006404SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
//ANK-4494-00-00 DEL END
		mapper.setTUSV006401CC(paramBean, inputMap, "");
		mapper.setTUSV006402CC(paramBean, inputMap, "");
//ANK-4494-00-00 DEL START
//		mapper.setTUSV006403CC(paramBean, inputMap, "");
//		mapper.setTUSV006404CC(paramBean, inputMap, "");
//ANK-4494-00-00 DEL END
		
		
		setFixParam(commoninfoBean, bean, inputMap, ROW_NUM_ITEN);
		setFixParam(commoninfoBean, bean, inputMap, ROW_NUM_HAIS);
//ANK-4494-00-00 DEL START
//		setFixParam(commoninfoBean, bean, inputMap, ROW_NUM_HENK);
//		setFixParam(commoninfoBean, bean, inputMap, ROW_NUM_JIGS);
//ANK-4494-00-00 DEL END

		/**
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);	
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		
		/**
		 * サービス処理結果の取得
		 */
		// 検索エラー取得
		String searchErrFlg1 = JCCWebCommon.getSearchErrFlg(FIX_SC_TITLE01, outputMap);
		String searchErrFlg2 = JCCWebCommon.getSearchErrFlg(FIX_SC_TITLE02, outputMap);
//ANK-4494-00-00 DEL START
//		String searchErrFlg3 = JCCWebCommon.getSearchErrFlg(FIX_SC_TITLE03, outputMap);
//		String searchErrFlg4 = JCCWebCommon.getSearchErrFlg(FIX_SC_TITLE04, outputMap);
//ANK-4494-00-00 DEL END
		
//ANK-4494-00-00 MOD START
//		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg1) 
//				|| JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg2) 
//				|| JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg3) 
//				|| JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg4))
		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg1) 
				|| JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg2))
//ANK-4494-00-00 MOD END
		{
			//0件の場合
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9070_KW, MESSAGE_VALUE_EKB0900);
			return true;
		}

		/**
		 * メッセージ設定
		 */
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, MESSAGE_VALUE);
		
		/**
		 * DataBean設定処理
		 */
		setOutputBean(bean, outputMap);

		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW00403, JTUScreenConst.SCREEN_NAME_TUW00403);
		
		return true;
	}
	
	/**
	 * 検索ボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_search() throws Exception
	{
		
		//セッション情報を削除 
		JCCWebCommon.removeScreenInfo(this, JTUScreenConst.SCREEN_ID_TUW00401);
		JCCWebCommon.clearPageLinkInfo(this, JTUScreenConst.SCREEN_ID_TUW00401 + "0PJP");
		
		return bmpKojiMskmReq_init(true);
	
	}
	
	/**
	 * 再表示ボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_redisp() throws Exception
	{
		return bmpKojiMskmReq_init(false);
	}
	
	/**
	 * 戻るボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_back() throws Exception
	{	
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW00401, JTUScreenConst.SCREEN_NAME_TUW00401);

		return true;
	}
	
	/**
	 * 完了ボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_fin() throws Exception
	{	
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 戻り先IDの取得
		String backScreenId = JTUWebCommon.getScreenId(this);
		
		// 戻り先IDの有無で遷移先の判定を行う。
		if(JTUWebCommon.isNull(backScreenId)
				|| JTUScreenConst.SCREEN_ID_TUW00401.equals(backScreenId))
		{
			// 初期処理実行
			return bmpKojiMskmReq_init(false);
		}
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, backScreenId, "");
		return true;
	}
	
	/**
	 * 先頭画面 戻る遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_top_back() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		/**
		 * DataBean設定処理
		 */
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUWebCommon.getScreenId(this), "");
		
		return true;
	}

	/**
	 * Beanのリスト項目の編集を行う
	 * @param bean
	 * @param listName
	 * @param setName
	 * @param setVal
	 * @param idx
	 */
	private static void setListValue(X31SDataBeanAccess bean, String listName, String setName, String setVal, int idx)
	{

		X31SDataBeanAccessArray listDataBean = bean.getDataBeanArray(listName);
		int len = listDataBean.getCount();
		
		if(len == 0 || len <= idx)
		{
			return;
		}
		
		if(JTUWebCommon.isNull(setVal))
		{
			listDataBean.getDataBean(idx).sendMessage(setName, X31CWebConst.DATABEAN_CLEAR);
		}
		else
		{
			listDataBean.getDataBean(idx).sendMessageString(setName, X31CWebConst.DATABEAN_SET_VALUE, setVal);
		}
		
	}

	/**
	 * 確定処理のハッシュマップ設定を行う
	 * @param commoninfoBean
	 * @param bean
	 * @param inputMap
	 * @param idx
	 */
	@SuppressWarnings("unchecked")
	private void setFixParam(X31SDataBeanAccess commoninfoBean, X31SDataBeanAccess bean, HashMap<String, Object> inputMap, int idx)
	{
		String sc_title = "";
		String cc_title = "";
		String bmp_mskmsho_type_cd = "";
		String syori_kanri_no = "";
		switch(idx)
		{
			case ROW_NUM_ITEN:
				sc_title = FIX_SC_TITLE01;
				cc_title = FIX_CC_TITLE01;
				bmp_mskmsho_type_cd = JTUStrConst.BMP_REQ_NAIYO_ITEN;
				syori_kanri_no = JTUStrConst.SYORI_KANRI_NUM_BMPMSKM_ITN;
				break;
				
			case ROW_NUM_HAIS:
				sc_title = FIX_SC_TITLE02;
				cc_title = FIX_CC_TITLE02;
				bmp_mskmsho_type_cd = JTUStrConst.BMP_REQ_NAIYO_HAISHI;
				syori_kanri_no = JTUStrConst.SYORI_KANRI_NUM_BMPMSKM_HIS;
				break;
				
//ANK-4494-00-00 DEL START
//			case ROW_NUM_HENK:
//				sc_title = FIX_SC_TITLE03;
//				cc_title = FIX_CC_TITLE03;
//				bmp_mskmsho_type_cd = JTUStrConst.BMP_REQ_NAIYO_CHG;
//				syori_kanri_no = JTUStrConst.SYORI_KANRI_NUM_BMPMSKM_CHG;
//				break;
//				
//			case ROW_NUM_JIGS:
//				sc_title = FIX_SC_TITLE04;
//				cc_title = FIX_CC_TITLE04;
//				syori_kanri_no = JTUStrConst.SYORI_KANRI_NUM_JGSADJ;
//				break;
//ANK-4494-00-00 DEL END
			
			default:
				return;
		
		}
		
		
		X31SDataBeanAccessArray listDataBean = bean.getDataBeanArray(TUW00401SFConst.BMP_KOJI_MSKM_CNT_INFO);
		X31SDataBeanAccess childBean = listDataBean.getDataBean(idx);
		
		HashMap<String, Object> scMap = (HashMap<String, Object>)inputMap.get(sc_title);
		HashMap<String, Object> ccMap = (HashMap<String, Object>)inputMap.get(cc_title);

		/**
		 * SCインプット項目設定
		 */
// ANK-4494-00-00 MOD START
		//ＫＥＹ＿申込事業所番号
//		scMap.put("key_mskm_jigsho_no", childBean.sendMessageString(TUW00401SFConst.MSKM_JIGSHO_NO_01,  X31CWebConst.DATABEAN_GET_VALUE));
		scMap.put("key_mskm_jigsho_no", "999999999999");
// ANK-4494-00-00 MOD END

		//ＫＥＹ＿番ポ申込書タイプコード
//ANK-4494-00-00 DEL START
//		if(idx != ROW_NUM_JIGS)
//		{
//ANK-4494-00-00 DEL END
			scMap.put("key_bmp_mskmsho_type_cd", bmp_mskmsho_type_cd);
//ANK-4494-00-00 DEL START
//		}
//ANK-4494-00-00 DEL END

		//出力フラグ設定
		scMap.put("oput_flg", 
				getBoolToString(bean, TUW00401SFConst.BMP_KOJI_MSKM_CNT_INFO, TUW00401SFConst.CHOICE_01, idx));
		
		// ＫＥＹ＿法人個人コード
		scMap.put("key_hojin_kojin_cd", bean.sendMessageString(TUW00401SFConst.HOJIN_KOJIN_CD, X31CWebConst.DATABEAN_GET_VALUE));
		

		/**
		 * CCインプット項目設定
		 */
		// 処理管理番号
		ccMap.put("syori_kanri_num", syori_kanri_no);
		
		//担当者電話番号
		ccMap.put("tntsha_telno", childBean.sendMessageString(TUW00401SFConst.KOPT_RRK_MDGC_TELNO_01,  X31CWebConst.DATABEAN_GET_VALUE));

// ANK-4494-00-00 DEL START
//		//担当者FAX番号
//		ccMap.put("tntsha_fax_no", childBean.sendMessageString(TUW00401SFConst.KOPT_RRK_MDGC_FAX_NO_01,  X31CWebConst.DATABEAN_GET_VALUE));
// ANK-4494-00-00 DEL END

		// ユーザーID
		ccMap.put("user_id", commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE));
		
		// ユーザー名
		ccMap.put("user_nm", commoninfoBean.sendMessageString(CommonInfoCFConst.USER_NM, X31CWebConst.DATABEAN_GET_VALUE));
	}
	
	/**
	 * 検索条件を設定
	 * @param bean
	 */
	private void setBeanSearchInfo(X31SDataBeanAccess bean)
	{
		/**
		 * DataBean設定処理
		 */
		// ＫＥＹ＿番ポ申請出力フラグ
		setFlg(bean, TUW00401SFConst.ITEN_OUTPUT_FLG, TUW00401SFConst.BMP_KOJI_MSKM_CNT_INFO
				, TUW00401SFConst.CHOICE_01, ROW_NUM_ITEN);
		
		// ＫＥＹ＿廃止申請出力フラグ
		setFlg(bean, TUW00401SFConst.HAISHI_OUTPUT_FLG, TUW00401SFConst.BMP_KOJI_MSKM_CNT_INFO
				, TUW00401SFConst.CHOICE_01, ROW_NUM_HAIS);
		
//ANK-4494-00-00 DEL START
//		// ＫＥＹ＿変更出力フラグ
//		setFlg(bean, TUW00401SFConst.CHG_OUTPUT_FLG, TUW00401SFConst.BMP_KOJI_MSKM_CNT_INFO
//				, TUW00401SFConst.CHOICE_01, ROW_NUM_HENK);
//		
//		// ＫＥＹ＿事業者間調整出力フラグ
//		setFlg(bean, TUW00401SFConst.TA_JIGYOSHA_OUTPUT_FLG, TUW00401SFConst.BMP_KOJI_MSKM_CNT_INFO
//					, TUW00401SFConst.CHOICE_01, ROW_NUM_JIGS);
//ANK-4494-00-00 DEL END
	}
	
	/**
	 * 検索条件を設定
	 * @param bean
	 */
	private void setBeanSearchInfo_Init(X31SDataBeanAccess bean)
	{
		/**
		 * DataBean設定処理
		 */
		// 法人個人コード
		JTUWebCommon.setListSelectedValue(bean, TUW00401SFConst.HOJIN_KOJIN_CD
				, TUW00401SFConst.HOJIN_KOJIN_CD_LIST, TUW00401SFConst.INDEX_04, TUW00401SFConst.CD_04);
		
		// 法人個人コード名称
		JTUWebCommon.setListSelectedValue(bean, TUW00401SFConst.HOJIN_KOJIN_CD_NM
				, TUW00401SFConst.HOJIN_KOJIN_CD_LIST, TUW00401SFConst.INDEX_04, TUW00401SFConst.CD_NM_04);
	}

	/**
	 * 検索条件をセッションに保持
	 */
	private void saveSessionSearchInfo()
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		X31SDataBeanAccess listDataBean = null;
		
		String idx = null;
		
		/**
		 * セッション設定処理
		 */
		// 引き継ぎ情報を格納するMAP
		HashMap<String, Object> hktgiMap = new HashMap<String, Object>();
		
		// 法人個人コード取得
		String hojin_kojin = bean.sendMessageString(TUW00401SFConst.HOJIN_KOJIN_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// 検索条件の保持
		// 初回処理判断
		if ("".equals(hojin_kojin) || hojin_kojin == null)
		{
			hojin_kojin = JTUStrConst.KOJIN;
		}

		hktgiMap.put(TUW00401SFConst.HOJIN_KOJIN_CD, hojin_kojin);

		listDataBean = bean.getDataBeanArray(TUW00401SFConst.HOJIN_KOJIN_CD_LIST).getDataBean(0);

		// インデックス取得
		idx = listDataBean.sendMessageString(TUW00401SFConst.INDEX_04, X31CWebConst.DATABEAN_GET_VALUE);
		// 初回処理判断
		if ("".equals(idx) || idx == null)
		{
			idx = "0";
		}
		
		hktgiMap.put(TUW00401SFConst.HOJIN_KOJIN_CD_LIST + TUW00401SFConst.INDEX_04, idx);
		
		/**
		 * 引継情報の設定
		 */
		JCCWebCommon.setScreenInfo(this, JTUScreenConst.SCREEN_ID_TUW00401, hktgiMap);
		JCCWebCommon.setScreenInfo(this, JTUScreenConst.SCREEN_ID_TUW00402, hktgiMap);
	}
	
	/**
	 * セッションに保持している検索条件をBeanに再設定
	 */
	private void setBeanFromSessionSearchInfo()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// セッション情報取得
		HashMap<String, Object> searchInfo = JCCWebCommon.getScreenInfo(this);
		
		if(searchInfo != null)
		{
			bean.sendMessageString(TUW00401SFConst.HOJIN_KOJIN_CD, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(TUW00401SFConst.HOJIN_KOJIN_CD).toString());

			X31SDataBeanAccess listDataBean = bean.getDataBeanArray(TUW00401SFConst.HOJIN_KOJIN_CD_LIST).getDataBean(0);

			listDataBean.sendMessageString(TUW00401SFConst.INDEX_04, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(TUW00401SFConst.HOJIN_KOJIN_CD_LIST + TUW00401SFConst.INDEX_04).toString());
		}
	}
	
	/**
	 * 出力フラグにStringのフラグをセット
	 * @param bean
	 * @param setKomoku
	 * @param listName
	 * @param codeName
	 * @param idx
	 */
	private void setFlg(X31SDataBeanAccess bean, String setKomoku, String listName, String codeName, int idx)
	{
		bean.sendMessageString(setKomoku, X31CWebConst.DATABEAN_SET_VALUE
				, getBoolToString(bean, listName, codeName, idx));
	}
	
	/**
	 * BeanのBoolean値を"0"(true)か"1"(false)の文字列で返す
	 * @param bean
	 * @param listName
	 * @param codeName
	 * @param idx
	 * @return String
	 */
	private String getBoolToString(X31SDataBeanAccess bean, String listName, String codeName, int idx)
	{

		X31SDataBeanAccess rowData = bean.getDataBeanArray(listName).getDataBean(idx);
		
		boolean flg = rowData.sendMessageBoolean(codeName, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(flg)
		{
			return JTUStrConst.OPUT_FLG_ON;
		}
		return JTUStrConst.OPUT_FLG_OFF;
	}
	
	/**
	 * 完了画面のBean情報を設定
	 * @param bean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	private void setOutputBean(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{
		HashMap parentMapSC = null;
		HashMap parentMapCC = null;
		String sc_title = "";
		String cc_title = "";
		X31SDataBeanAccessArray oput_cnt_info = bean.getDataBeanArray(TUW00401SFConst.OPUT_CNT_INFO);
		X31SDataBeanAccess subbean = null;
		for(int i = 0; i < SEND_TGT_CNT; i++)
		{
			if(ROW_NUM_ITEN == i)
			{
				sc_title = FIX_SC_TITLE01;
				cc_title = FIX_CC_TITLE01;
			}
			else if(ROW_NUM_HAIS == i)
			{
				sc_title = FIX_SC_TITLE02;
				cc_title = FIX_CC_TITLE02;
			}
//ANK-4494-00-00 DEL START
//			else if(ROW_NUM_HENK == i)
//			{
//				sc_title = FIX_SC_TITLE03;
//				cc_title = FIX_CC_TITLE03;
//			}
//			else if(ROW_NUM_JIGS == i)
//			{
//				sc_title = FIX_SC_TITLE04;
//				cc_title = FIX_CC_TITLE04;
//			}
//ANK-4494-00-00 DEL END
			else
			{
				return;
			}
			
			parentMapSC = (HashMap)outputMap.get(sc_title);
			String oput_flg = parentMapSC.get("oput_flg").toString();
			
			if(JTUStrConst.OPUT_FLG_ON.equals(oput_flg))
			{
				
				if(oput_cnt_info.getCount() - 1 >= i)
				{
					subbean = oput_cnt_info.getDataBean(i);
				}
				else
				{
					subbean = oput_cnt_info.addDataBean();
				}

				parentMapCC = (HashMap)outputMap.get(cc_title);
				
				X31SDataBeanAccessArray listDataBean = bean.getDataBeanArray(TUW00401SFConst.BMP_KOJI_MSKM_CNT_INFO);
				
				
				subbean.sendMessageString(TUW00401SFConst.DATA_CNT_03, X31CWebConst.DATABEAN_SET_VALUE, parentMapSC.get("total_search_num").toString());
				subbean.sendMessageString(TUW00401SFConst.FILE_NM_03, X31CWebConst.DATABEAN_SET_VALUE, parentMapCC.get("chohyo_nm").toString());
// ANK-4494-00-00 MOD START
//				subbean.sendMessageString(TUW00401SFConst.MSKM_JIGSHONM_03, X31CWebConst.DATABEAN_SET_VALUE
//						, listDataBean.getDataBean(i).sendMessageString(TUW00401SFConst.MSKM_JIGSHONM_01, X31CWebConst.DATABEAN_GET_VALUE));
				subbean.sendMessageString(TUW00401SFConst.DSP_BMP_MSKMSHO_TYPE_CD_03, X31CWebConst.DATABEAN_SET_VALUE
						, listDataBean.getDataBean(i).sendMessageString(TUW00401SFConst.DSP_BMP_MSKMSHO_TYPE_CD_01, X31CWebConst.DATABEAN_GET_VALUE));
// ANK-4494-00-00 MOD END
			}

		}

	}
	
}
	
