/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW21501SFLogic
*   ソースファイル名：KKW21501SFLogic.java
*   作成者          ：富士通
*   日付            ：2016年08月31日
*＜機能概要＞
*   契約内容通知書一覧照会画面のビューロジックです。
*＜修正履歴＞
*   バージョン   修正日       修正者      修正内容
*   v27.00.00    2016/08/31   FJ）木庭    新規作成
*	v27.00.01	 2016/10/07	  FJ) 中原	【IT1-2016-0000144】排他制御未実装サービスインターフェイス改修
*	v27.00.02	 2016/10/14	  FJ) 中原	【IT1-2016-0000148】契約内容通知書一覧照会画面の複数選択チェックエラー誤り
*   
**********************************************************************/
package eo.web.webview.KKW21501SF;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;

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.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KKW21502SF.KKW21502SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0842_KKSV0842OPDBMapper;
import eo.web.webview.mapping.KKSV0843_KKSV0843OPDBMapper;
import eo.web.webview.mapping.KKSV0844_KKSV0844OPDBMapper;
import eo.web.webview.mapping.KKSV0848_KKSV0848OPDBMapper;




/**
 * KKW21501のビューロジックです。<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW21501SFLogic extends JCCWebBusinessLogic
{
	/** 処理区分:参照 **/
	public static final String TRAN_DIV_DTL = "1";
	/** 処理区分:更新 **/
	public static final String TRAN_DIV_UPD = "2";
	
	/**
	 * ディレイド依頼処理ID（データ抽出）
	 */
	public static final String REQ_JOB_ID_KKSV0143 = "EO2050110J0";
	/**
	 * ディレイド依頼処理ID（契約内容通知書再発行）
	 */
	public static final String REQ_JOB_ID_KKSV0844 = "EO2FA1110D0";
	/**
	 * ディレイド依頼処理ID（契約内容通知書ヤマト送信）
	 */
	public static final String REQ_JOB_ID_KKSV0843 = "EO2FA0110J0";
	
	/**
	 * レター発送仕分区分（通常住所に送付）
	 */
	private static final String LETTER_SHIWAKE_TUJYO = JKKCommonConst.LETTER_SHIWAKE_TUJYO;
	/**
	 * レター発送仕分区分（KOPTに送付）
	 */
	private static final String LETTER_SHIWAKE_KOPT = JKKCommonConst.LETTER_SHIWAKE_KOPT;
	/**
	 * ページングのコマンドID
	 */
	private static final String PAGING_CMD = "paging";
	/**
	 * ソート順（昇順）
	 */
	private static final String ORDERTYPE_ASC = "1";
	/**
	 * ソート順（降順）
	 */
	private static final String ORDERTYPE_DESC = "2";
	/**
	 * 検索フラグ（要）
	 */
	private static final String SEARCH_FLG_Y = "1";
	/**
	 * 検索フラグ（不要）
	 */
	private static final String SEARCH_FLG_N = "0";
	/**
	 * 未送信フラグ（未送信）
	 */
	private static final String MI_SEND_FLG_Y = "1";

	/**
	 * 未送信フラグ（送信済み）
	 */
	private static final String MI_SEND_FLG_N = "0";

	/**
	 * ページャ表示の画面ID（セッションキー）
	 */
	private static final String SCREENID = JKKScreenConst.SCREEN_ID_KKW21501;
	
	/**
	 * APサーバに依頼する業務データを格納したマップオブジェクト
	 */
	private HashMap<String, Object> inputMap = null;
	/**
	 * APサーバの処理結果業務データを受け取るマップオブジェクト
	 */
	private HashMap<String, Object> outputMap = null;
	/**
	 * 完了画面からの遷移の場合True
	 */
	private boolean seniFromFin = false;
	
	/** 改行コードCRLF */
	private static final String LINE_SEPARAOR_CRLF = "\r\n";
	
	/**
	 * 初期表示処理<br>
	 * <br>
	 * １．画面情報を取得し、サービスフォームBeanに設定します。<br>
	 * ２．プルダウン表示のためのサービスの呼び出しを行います。<br>
	 * ３．検索要の場合（後続画面からの戻り遷移時）は、検索実行処理を行います。<br>
	 * ４．画面表示用にDataBeanに格納します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionInit() throws Exception 
	{
		boolean result = true;

		// 画面情報を取得し、サービスフォームBeanに設定。
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 検索フラグ取得
		String search_flg = bean.sendMessageString(KKW21501SFConst.SEARCH_FLG, X31CWebConst.DATABEAN_GET_VALUE);

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);

		// 完了画面からの遷移の場合は、画面跨りなので再検索のみ
		if (seniFromFin)
		{
			// 検索処理実行
			execSearch(bean);

			// 検索後処理
			afterSearch(bean);
		}
		else
		{
			// 上りマッピング処理(サービス項目-DataBean項目マッピング)
			KKSV0842_KKSV0842OPDBMapper mapper = new KKSV0842_KKSV0842OPDBMapper();
			inputMap = new HashMap<String, Object>();

			mapper.setKNYTCSRESEARCHCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			
			// 検索「要」の場合
			if (SEARCH_FLG_Y.equals(search_flg))
			{
				// ページング情報上りマッピング
				JCCWebCommon.upmapperPageLinkInfo(this, "KNYTCSRESEARCHCC", inputMap, SCREENID);
			}

			//サービス呼出処理
			X31CMessageResult msgResult = invokeService("KKSV0842", "KKSV0842OP");
			
			// 検索「要」の場合
			if (SEARCH_FLG_Y.equals(search_flg))
			{
				mapper.getKNYTCSRESEARCHCC(paramBean, outputMap);

				// 検索後処理
				afterSearch(bean);
			}
		}
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// 画面名を共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW21501);

		// チェックボックスの選択値の初期化
		setCheckBoxSelected(bean, search_flg);
		
		// 遷移元のクリア
		seniFromFin = false;
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * 検索処理<br>
	 * <br>
	 * １．検索条件を退避します。
	 * ２．検索実行処理を行います。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionSearch() throws Exception 
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// 自画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21501);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21501);

		// 検索条件の取り出し

		bean.sendMessageString(KKW21501SFConst.SEARCH_SYSID, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW21501SFConst.SYSID,
						X31CWebConst.DATABEAN_GET_VALUE));			// 検索用SYSID
		// データ連携日（自）
		String rnkiymd_y_f = bean.sendMessageString(KKW21501SFConst.DATA_RNKI_YEAR_FROM, X31CWebConst.DATABEAN_GET_VALUE);
		String rnkiymd_m_f = bean.sendMessageString(KKW21501SFConst.DATA_RNKI_MON_FROM, X31CWebConst.DATABEAN_GET_VALUE);
		String rnkiymd_d_f = bean.sendMessageString(KKW21501SFConst.DATA_RNKI_DAY_FROM, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW21501SFConst.SEARCH_RNKIYMD_FROM, X31CWebConst.DATABEAN_SET_VALUE,
				rnkiymd_y_f + rnkiymd_m_f + rnkiymd_d_f);		// 検索用データ連携日（自）
		// データ連携日（至）
		String RNKIymd_y_t = bean.sendMessageString(KKW21501SFConst.DATA_RNKI_YEAR_TO, X31CWebConst.DATABEAN_GET_VALUE);
		String RNKIymd_m_t = bean.sendMessageString(KKW21501SFConst.DATA_RNKI_MON_TO, X31CWebConst.DATABEAN_GET_VALUE);
		String RNKIymd_d_t = bean.sendMessageString(KKW21501SFConst.DATA_RNKI_DAY_TO, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW21501SFConst.SEARCH_RNKIYMD_TO, X31CWebConst.DATABEAN_SET_VALUE,
				RNKIymd_y_t + RNKIymd_m_t + RNKIymd_d_t);		// 検索用データ連携日（至）

		bean.sendMessageString(KKW21501SFConst.SEARCH_CUST_NM, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW21501SFConst.CUST_NM,
						X31CWebConst.DATABEAN_GET_VALUE));			// 検索用お客様名

		// 未送信取得
		Boolean mi_send = bean.sendMessageBoolean(KKW21501SFConst.MI_SEND, X31CWebConst.DATABEAN_GET_VALUE);
		if (mi_send.booleanValue())
		{
			// 再検索用未送信
			bean.sendMessageString(KKW21501SFConst.SEARCH_MI_SEND, 
					X31CWebConst.DATABEAN_SET_VALUE, MI_SEND_FLG_Y);
		}
		else
		{
			// 再検索用未送信
			bean.sendMessageString(KKW21501SFConst.SEARCH_MI_SEND, 
					X31CWebConst.DATABEAN_SET_VALUE, MI_SEND_FLG_N);
		}

		// ソート番号クリア
		bean.sendMessageString(KKW21501SFConst.SORT_NUM, X31CWebConst.DATABEAN_SET_VALUE, "");
		// ソート項目Noクリア
		bean.sendMessageString(KKW21501SFConst.ORDER_NUM, X31CWebConst.DATABEAN_SET_VALUE, "");
		// ソート順クリア
		bean.sendMessageString(KKW21501SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_SET_VALUE, "");
		// 契約内容通知書選択行クリア
		bean.sendMessageString(KKW21501SFConst.KNYTCS_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");
		// 契約内容通知書番号クリア
		bean.sendMessageString(KKW21501SFConst.KNYTCS_NO, X31CWebConst.DATABEAN_SET_VALUE, "");

		// ページング情報削除
		JCCWebCommon.clearPageLinkInfo(this, SCREENID);

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);

		// 検索処理実行
		execSearch(bean);

		// 検索後処理
		afterSearch(bean);

		// 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();

		// 契約内容通知書選択行クリア
		bean.sendMessageString(KKW21501SFConst.KNYTCS_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");
		// 契約内容通知書番号クリア
		bean.sendMessageString(KKW21501SFConst.KNYTCS_NO, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);

		//検索処理実行
		execSearch(bean);

		// 検索後処理
		afterSearch(bean);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * ソータ処理（昇順）<BR>
	 * <br>
	 * １．押下された▼▲より、ソート項目を調べます。<BR>
	 * ２．検索実行処理を実行します。<BR>
	 * <p>
	 * @return 正常／異常
	 * @throws Exception
	 */
	public boolean actionSortAsc() throws Exception
	{
		boolean result = true;
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// ソート番号取得
		String sort_num = bean.sendMessageString(KKW21501SFConst.SORT_NUM, X31CWebConst.DATABEAN_GET_VALUE);
		
		// ソート項目No
		bean.sendMessageString(KKW21501SFConst.ORDER_NUM, X31CWebConst.DATABEAN_SET_VALUE, sort_num);
		// ソート順
		bean.sendMessageString(KKW21501SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_SET_VALUE, ORDERTYPE_ASC);
		// 契約内容通知書選択行クリア
		bean.sendMessageString(KKW21501SFConst.KNYTCS_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");
		// 契約内容通知書番号クリア
		bean.sendMessageString(KKW21501SFConst.KNYTCS_NO, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);

		//検索処理実行
		execSearch(bean);

		// 検索後処理
		afterSearch(bean);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * ソータ処理（降順）<BR>
	 * <br>
	 * １．押下された▼▲より、ソート項目を調べます。<BR>
	 * ２．検索実行処理を実行します。<BR>
	 * <p>
	 * @return 正常／異常
	 * @throws Exception
	 */
	public boolean actionSortDesc() throws Exception
	{
		boolean result = true;
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// ソート番号取得
		String sort_num = bean.sendMessageString(KKW21501SFConst.SORT_NUM, X31CWebConst.DATABEAN_GET_VALUE);
		
		// ソート項目No
		bean.sendMessageString(KKW21501SFConst.ORDER_NUM, X31CWebConst.DATABEAN_SET_VALUE, sort_num);
		// ソート順
		bean.sendMessageString(KKW21501SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_SET_VALUE, ORDERTYPE_DESC);
		// 契約内容通知書選択行クリア
		bean.sendMessageString(KKW21501SFConst.KNYTCS_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");
		// 契約内容通知書番号クリア
		bean.sendMessageString(KKW21501SFConst.KNYTCS_NO, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);

		//検索処理実行
		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();

		// チェックボックスの選択値の初期化
		setCheckBoxSelected(bean, SEARCH_FLG_N);

		// 画面入力項目
		bean.sendMessageString(KKW21501SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.DATA_RNKI_YEAR_FROM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.DATA_RNKI_MON_FROM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.DATA_RNKI_DAY_FROM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.DATA_RNKI_YEAR_TO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.DATA_RNKI_MON_TO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.DATA_RNKI_DAY_TO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.CUST_NM, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 検索用
		bean.sendMessageString(KKW21501SFConst.SEARCH_SYSID, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.SEARCH_RNKIYMD_FROM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.SEARCH_RNKIYMD_TO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.SEARCH_CUST_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.SEARCH_MI_SEND, X31CWebConst.DATABEAN_SET_VALUE, "");

		// ソート用
		bean.sendMessageString(KKW21501SFConst.SORT_NUM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.ORDER_NUM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 一覧表示部分を非表示にする
		bean.sendMessageBoolean(KKW21501SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);

		// 選択行
		bean.sendMessageString(KKW21501SFConst.KNYTCS_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW21501SFConst.KNYTCS_NO, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 契約内容通知書一覧（検索結果）
		X31SDataBeanAccessArray knytcslist = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST);
		knytcslist.clearArray();
		// 契約内容通知書更新前情報（検索結果退避）
		X31SDataBeanAccessArray knytcslistBf = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_BF);
		knytcslistBf.clearArray();

		// 入力有無フラグクリア
		bean.sendMessageString(KKW21501SFConst.INFLG, X31CWebConst.DATABEAN_SET_VALUE, "");

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * 一覧更新確認処理<br>
	 * <br>
	 * １．変更有無を調べ、変更行を変更情報に退避します。
	 * ２．サービスの呼び出しを行います（チェックのみ）。<br>
	 * 　　・契約内容通知書発行一括変更サービスIF<br>
	 * 　　・契約内容通知書発行登録サービスIF<br>
	 * ３．一覧更新確認画面へ遷移します。
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionUpdIcrn() throws Exception 
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 更新情報退避用を一旦クリア
		X31SDataBeanAccessArray datalistUpd = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_UPD);
		datalistUpd.clearArray();
		// 登録情報退避用を一旦クリア
		X31SDataBeanAccessArray datalistIns = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_INS);
		datalistIns.clearArray();
		// 変更情報退避用を一旦クリア
		X31SDataBeanAccessArray datalistMod = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_MOD);
		datalistMod.clearArray();
		// 削除情報退避用を一旦クリア
		X31SDataBeanAccessArray datalistDel = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_DEL);
		datalistDel.clearArray();
		
		// 更新前比較用
		X31SDataBeanAccessArray datalistBf = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_BF);

		// 契約内容通知書一覧の数だけ繰り返して設定
		X31SDataBeanAccessArray datalist = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST);
		
		boolean updflg = false;	// 更新有無用
		boolean insflg = false;	// 再発行の場合はTrue
		boolean delflg = false;	// 削除の場合はTrue
		boolean msgOputFlg = false; // メッセージ出力フラグ 
		String svcKeiNo = "";
		
		for (int i = 0; i < datalist.getCount(); i++)
		{
			// 契約内容通知書（変更後）
			X31SDataBeanAccess dataBean = datalist.getDataBean(i);
			
			// 契約内容通知書番号
			String knytcs_no = dataBean.sendMessageString(KKW21501SFConst.KNYTCS_NO_01,
					X31CWebConst.DATABEAN_GET_VALUE);
			// 引抜
			Boolean hikinuki = dataBean.sendMessageBoolean(KKW21501SFConst.HIKINUKI_01,
					X31CWebConst.DATABEAN_GET_VALUE);
			// 再発行
			Boolean re_hako = dataBean.sendMessageBoolean(KKW21501SFConst.RE_HAKO_01,
					X31CWebConst.DATABEAN_GET_VALUE);
			// 削除
			Boolean del_flg = dataBean.sendMessageBoolean(KKW21501SFConst.DEL_FLG_01,
					X31CWebConst.DATABEAN_GET_VALUE);
			// 送信年月日
			String send_ymd = dataBean.sendMessageString(KKW21501SFConst.SEND_YMD_01,
					X31CWebConst.DATABEAN_GET_VALUE);
// 20161007 IT1-2016-0000144 ADD START
			// 更新年月日時分秒
			String upd_dtm = dataBean.sendMessageString(KKW21501SFConst.UPD_DTM_01,
					X31CWebConst.DATABEAN_GET_VALUE);
// 20161007 IT1-2016-0000144 ADD END
			
// 20161007 IT1-2016-0000148 ADD START
			// 更新前退避用と比較
			X31SDataBeanAccess dataBeanBf = datalistBf.getDataBean(i);
			// 引抜（更新前）
			Boolean hikinukiBf = dataBeanBf.sendMessageBoolean(KKW21501SFConst.HIKINUKI_FLG_02,
					X31CWebConst.DATABEAN_GET_VALUE);
// 20161007 IT1-2016-0000148 ADD END
			// 再発行にチェックがある場合
			if (re_hako != null && re_hako.booleanValue() == true)
			{
				// 引抜か削除にチェックが入っていたらエラー
// 20161014 IT1-2016-0000148 MOD START
//				if((hikinuki != null && hikinuki.booleanValue() == true)
				if((hikinuki != null && hikinuki.booleanValue() != hikinukiBf.booleanValue() )
// 20161014 IT1-2016-0000148 MOD END
						|| (del_flg != null && del_flg.booleanValue() == true))
				{
					// メッセージ表示用
					String[] msgInfo = {"引抜、再発行（コピー）、削除のうち２つ以上チェックしている" , "更新"};
					// メッセージ出力
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
					return result;
					
				}
				
				// 送信済み（送信年月日が設定済み）の場合は更新情報に退避
				if (send_ymd != null && !"".equals(send_ymd))
				{
					updflg = true;
					insflg = true;
				}
				else
				{
					// メッセージ表示用
					String[] msgInfo = {"未送信のデータに再発行チェックされている" , "登録"};
					// メッセージ出力
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
					return result;
				}
			}

// 20161007 IT1-2016-0000148 DEL START
//			// 更新前退避用と比較
//			X31SDataBeanAccess dataBeanBf = datalistBf.getDataBean(i);
//			// 引抜（更新前）
//			Boolean hikinukiBf = dataBeanBf.sendMessageBoolean(KKW21501SFConst.HIKINUKI_FLG_02,
//					X31CWebConst.DATABEAN_GET_VALUE);
// 20161007 IT1-2016-0000148 DEL END
			
			// 引抜のチェックに変更がある場合
			if (hikinuki != null && hikinukiBf != null &&
				hikinuki.booleanValue() != hikinukiBf.booleanValue())
			{
				// 削除にチェックが入っていたらエラー
				if(del_flg != null && del_flg.booleanValue() == true)
				{
					// メッセージ表示用
					String[] msgInfo = {"引抜、再発行（コピー）、削除のうち２つ以上チェックしている" , "更新"};
					// メッセージ出力
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
					return result;
					
				}
				
				// 送信済み（送信年月日が設定済み）の場合はエラー
				if (send_ymd != null && !"".equals(send_ymd))
				{
					// メッセージ表示用
					String[] msgInfo = {"送信済のデータに引抜チェックされている" , "更新"};
					// メッセージ出力
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
					return result;
				}
				else
				{
					updflg = true;
				}
			}
			
			// 削除にチェックがある場合
			if (del_flg != null && del_flg.booleanValue() == true)
			{
				updflg = true;
				delflg = true;
			}


			// 変更ありの場合は更新情報に退避（次画面表示用）
			if (updflg)
			{
				X31SDataBeanAccess dataBeanUpd = datalistUpd.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);
					}
				}

				updflg = false;

				// 再発行の場合は登録情報に退避
				if (insflg)
				{
					X31SDataBeanAccess dataBeanIns = datalistIns.addDataBean();
					// 契約内容通知書番号
					dataBeanIns.sendMessageString(KKW21501SFConst.KNYTCS_NO_01,
							X31CWebConst.DATABEAN_SET_VALUE, knytcs_no);
					
					insflg = false;
				}
				// 削除の場合は削除情報に退避
				else if(delflg)
				{
					X31SDataBeanAccess dataBeanDel = datalistDel.addDataBean();
					// 契約内容通知書番号
					dataBeanDel.sendMessageString(KKW21501SFConst.KNYTCS_NO_01,
							X31CWebConst.DATABEAN_SET_VALUE, knytcs_no);
// 20161007 IT1-2016-0000144 ADD START
					// 更新年月日時分秒
					dataBeanDel.sendMessageString(KKW21501SFConst.UPD_DTM_01,
							X31CWebConst.DATABEAN_SET_VALUE, upd_dtm);
// 20161007 IT1-2016-0000144 ADD END
					
					delflg = false;
				}
				// 再発行の場合は更新情報に退避
				else
				{
					X31SDataBeanAccess dataBeanMod = datalistMod.addDataBean();
					// 契約内容通知書番号
					dataBeanMod.sendMessageString(KKW21501SFConst.KNYTCS_NO_01,
							X31CWebConst.DATABEAN_SET_VALUE, knytcs_no);

					// チェックボックス内容から変換
					// 引抜にチェックがある場合
					if (hikinuki != null && hikinuki.booleanValue() == true)
					{
						// レター発送仕分区分（KOPTに送付）
						dataBeanMod.sendMessageString(KKW21501SFConst.LETTER_HASSO_SHIWAKE_DIV_01,
								X31CWebConst.DATABEAN_SET_VALUE, LETTER_SHIWAKE_KOPT);
						dataBeanUpd.sendMessageString(KKW21501SFConst.LETTER_HASSO_SHIWAKE_DIV_01,
								X31CWebConst.DATABEAN_SET_VALUE, LETTER_SHIWAKE_KOPT);
					}
					else
					{
						// レター発送仕分区分（通常住所に送付）
						dataBeanMod.sendMessageString(KKW21501SFConst.LETTER_HASSO_SHIWAKE_DIV_01,
								X31CWebConst.DATABEAN_SET_VALUE, LETTER_SHIWAKE_TUJYO);
						dataBeanUpd.sendMessageString(KKW21501SFConst.LETTER_HASSO_SHIWAKE_DIV_01,
								X31CWebConst.DATABEAN_SET_VALUE, LETTER_SHIWAKE_TUJYO);
					}
// 20161007 IT1-2016-0000144 ADD START
					// 更新年月日時分秒
					dataBeanMod.sendMessageString(KKW21501SFConst.UPD_DTM_01,
							X31CWebConst.DATABEAN_SET_VALUE, upd_dtm);
// 20161007 IT1-2016-0000144 ADD END
				}
			}
		}
		
		Integer updCnt = datalistUpd.getCount();
		
		// 変更がある場合
		if (updCnt != null && updCnt.intValue() > 0)
		{
			// 選択されている行を取得
			String knytcs_choice = bean.sendMessageString(KKW21501SFConst.KNYTCS_CHOICE, 
					X31CWebConst.DATABEAN_GET_VALUE);
			int sel = 0;

			if (knytcs_choice != null && !"".equals(knytcs_choice))
			{
				sel = Integer.parseInt(knytcs_choice);
			}
			// 選択行を取得
			X31SDataBeanAccess dataBeanSel = datalist.getDataBean(sel);
			
			// 選択行の契約内容通知書番号を退避
			String knytcsNo = dataBeanSel.sendMessageString(KKW21501SFConst.KNYTCS_NO_02,
					X31CWebConst.DATABEAN_GET_VALUE);
			bean.sendMessageString(KKW21501SFConst.KNYTCS_NO, X31CWebConst.DATABEAN_SET_VALUE, knytcsNo);

			// 検索フラグ「要」設定
			bean.sendMessageString(KKW21501SFConst.SEARCH_FLG, X31CWebConst.DATABEAN_SET_VALUE, SEARCH_FLG_Y);

			// 上りマッピング処理(サービス項目-DataBean項目マッピング)
			KKSV0844_KKSV0844OPDBMapper mapper = new KKSV0844_KKSV0844OPDBMapper();
			inputMap = new HashMap<String, Object>();

			mapper.setKNYTCSIKTCHKCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			mapper.setKKSV084401SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
			mapper.setKKSV084402SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
			mapper.setKNYTCSIKTUPDCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
			mapper.setKNYTCSIKTDELCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
			
			// 契約内容通知書再発行ファイルの作成
			// ディレイド処理の依頼(登録)を行う電子ファイルを作成
			byte[] eFile = createEfile(paramBean[0]);

			// 電子ファイルを添付(アップロード)するための設定
			HashMap<String, Object> fileMap = new HashMap<String, Object>();
			fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_IDENTIFUCD, "SIF_ECC0111D010");
			fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_LIST_NAMAE, "up_load_list");
			fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_ITEM_NAMAE, "efile");
			fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_INDEX     , "0");
			fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE      , eFile);

			ArrayList<HashMap<String, Object>> fileList = new ArrayList<HashMap<String, Object>>();
			fileList.add(fileMap);

			HashMap<String, Object> uploadMap = new HashMap<String, Object>();
			uploadMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE_LIST, fileList);
			
			//サービス呼出処理
			X31CMessageResult msgResult = invokeService("KKSV0844", "KKSV0844OP", uploadMap);
			
			// サービス呼出結果の判定
			String rslt = getErrFlg(outputMap, "KKSV084401SC");
			
			if (rslt != null && !"".equals(rslt) && rslt.equals("1"))
			{
				// メッセージ表示用
				String[] msgInfo = {"送信バッチが実行中の", "更新"};
				// メッセージ出力
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
			}
			else
			{
				// 共有フォームBeanのデータBeanアクセスクラスを取得。
				X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
	
				// 遷移先の画面IDを共有フォームBeanの項目に設定する
				commoninfoBean.sendMessageString(
						CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
						JKKScreenConst.SCREEN_ID_KKW21505);
				commoninfoBean.sendMessageString(
						CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
						JKKScreenConst.SCREEN_NAME_KKW21505);
	
				// 戻り先画面IDを設定
				JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW21506, JKKScreenConst.SCREEN_ID_KKW21501);
	
				// メッセージ表示用
				String[] msgInfo = {"契約内容通知書一覧更新"};
				// メッセージ出力
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
				
				if (msgOputFlg)
				{
					// メッセージ表示用
					String[] msg = {"(" + svcKeiNo + ")"};
					// メッセージ出力
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBB410__Q, msg);
				}
			}
		}
		else
		{
			// メッセージ表示用
			String[] msgInfo = {"内容が変更されていない" , "登録"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * 詳細照会処理<br>
	 * <br>
	 * １．詳細照会画面へ遷移します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionShokaiDtl() throws Exception
	{
		boolean result = setParamAndSeni(TRAN_DIV_DTL);

		return result;
	}

	/**
	 * 詳細更新処理<br>
	 * <br>
	 * １．詳細更新画面へ遷移します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionUpdDtl() throws Exception
	{
		boolean result = true;
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 選択されている行を取得
		String knytcs_choice = bean.sendMessageString(KKW21501SFConst.KNYTCS_CHOICE, 
				X31CWebConst.DATABEAN_GET_VALUE);
		int sel = 0;
		if (knytcs_choice != null && !"".equals(knytcs_choice))
		{
			sel = Integer.parseInt(knytcs_choice);
		}
		
		X31SDataBeanAccessArray datalist = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST);
		X31SDataBeanAccess dataBean = datalist.getDataBean(sel);

		// 選択行の送信日を取得
		String send_ymd = dataBean.sendMessageString(KKW21501SFConst.SEND_YMD_01,
				X31CWebConst.DATABEAN_GET_VALUE);

		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		// 機能コード＝入力ファイルなし（チェック＆登録）
		KKSV0848_KKSV0848OPDBMapper mapper = new KKSV0848_KKSV0848OPDBMapper();
		inputMap = new HashMap<String, Object>();
		mapper.setKKSV084801SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

		//サービス呼出処理
		X31CMessageResult msgResult = invokeService("KKSV0848", "KKSV0848OP");
		
		// サービス呼出結果の判定
		String rslt = getErrFlg(outputMap, "KKSV084801SC");
		
		if(send_ymd != null && !"".equals(send_ymd))
		{
			// メッセージ表示用
			String[] msgInfo = {"送信済の", "更新"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
			
		}
		else if (rslt.equals("1"))
		{
			// メッセージ表示用
			String[] msgInfo = {"送信バッチが実行中の", "実行"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}
		else
		{
			result = setParamAndSeni(TRAN_DIV_UPD);
		}

		return result;
	}
	

	/**
	 * ヤマト送信処理<br>
	 * <br>
	 * １．ヤマト送信処理を実行します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionSend() throws Exception
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		// 機能コード＝入力ファイルなし（チェック＆登録）
		KKSV0843_KKSV0843OPDBMapper mapper = new KKSV0843_KKSV0843OPDBMapper();
		inputMap = new HashMap<String, Object>();
		mapper.setKKSV084301SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setKKSV084302SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV084303SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3);

		//サービス呼出処理
		X31CMessageResult msgResult = invokeService("KKSV0843", "KKSV0843OP");

		String err_flg = getErrFlg(outputMap, "KKSV084301SC");
		if (err_flg.equals("1"))
		{
			// メッセージ表示用
			String[] msgInfo = {"契約内容通知書送信バッチが実行中の", "実行"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}
		else if (err_flg.equals("2"))
		{
			// メッセージ表示用
			String[] msgInfo = {"加入御礼書抽出バッチが実行中の", "実行"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}
		else
		{
			// 下りマッピング
			mapper.getKKSV084302SC(paramBean, outputMap);
	
			String send_trgt_flg = paramBean[0].sendMessageString(KKW21501SFConst.SEND_TRGT_FLG, 
					X31CWebConst.DATABEAN_GET_VALUE);
			String search_err_flg_zero = paramBean[0].sendMessageString(KKW21501SFConst.SEARCH_ERR_FLG_ZERO, 
					X31CWebConst.DATABEAN_GET_VALUE);
	
			if(send_trgt_flg.equals(search_err_flg_zero))
			{
				// メッセージ表示用
				String[] msgInfo = {"未送信データが存在しない", "送信の実行"};
				// メッセージ出力
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
			}
			else
			{
				// メッセージ表示用
				String[] msgInfo = {"契約内容通知書ヤマト送信"};
				// メッセージ出力
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB7950__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_KKW21501);
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW21501);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
		
	}

	/**
	 * 確定処理<br>
	 * <br>
	 * １．サービスの呼び出しを行います（チェック＆登録（更新））。<br>
	 * 　　・契約内容通知書発行一括変更サービスIF<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項目マッピング)
		KKSV0844_KKSV0844OPDBMapper mapper = new KKSV0844_KKSV0844OPDBMapper();
		inputMap = new HashMap<String, Object>();

		mapper.setKNYTCSIKTCHKCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV084401SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setKKSV084402SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKNYTCSIKTUPDCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKNYTCSIKTDELCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// 契約内容通知書再発行ファイルの作成
		// ディレイド処理の依頼(登録)を行う電子ファイルを作成
		byte[] eFile = createEfile(paramBean[0]);

		// 電子ファイルを添付(アップロード)するための設定
		HashMap<String, Object> fileMap = new HashMap<String, Object>();
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_IDENTIFUCD, "SIF_ECC0111D010");
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_LIST_NAMAE, "up_load_list");
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_ITEM_NAMAE, "efile");
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_INDEX     , "0");
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE      , eFile);

		ArrayList<HashMap<String, Object>> fileList = new ArrayList<HashMap<String, Object>>();
		fileList.add(fileMap);

		HashMap<String, Object> uploadMap = new HashMap<String, Object>();
		uploadMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE_LIST, fileList);
		
		//サービス呼出処理
		X31CMessageResult msgResult = invokeService("KKSV0844", "KKSV0844OP", uploadMap);

		// サービス呼出結果の判定
		String rsltChk = getErrFlg(outputMap, "KNYTCSIKTCHKCC");
		String KKSV084401 = getErrFlg(outputMap, "KKSV084401SC");
		
		if (rsltChk.equals("1"))
		{
			// メッセージ表示用
			String[] msgInfo = {"送信済のデータに引抜チェックされている", "更新"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}
		else if (rsltChk.equals("2"))
		{
			// メッセージ表示用
			String[] msgInfo = {"引抜チェックをされている明細が更新済の", "更新"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}
		else if (rsltChk.equals("3"))
		{
			// メッセージ表示用
			String[] msgInfo = {"削除チェックをされている明細が削除済の", "更新"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}
		else if (KKSV084401.equals("1"))
		{
			// メッセージ表示用
			String[] msgInfo = {"送信バッチが実行中の", "更新"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}
		else
		{
			// 共有フォームBeanのデータBeanアクセスクラスを取得。
			X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
			
			// 遷移先の画面IDを共有フォームBeanの項目に設定する
			commoninfoBean.sendMessageString(
					CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_ID_KKW21506);
			commoninfoBean.sendMessageString(
					CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_NAME_KKW21506);
	
			// メッセージ表示用
			String[] msgInfo = {"契約内容通知書一覧更新"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, msgInfo);
	
			// 次画面用にboolean値をセットしなおす
			X31SDataBeanAccessArray datalistUpd = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_UPD);
			for (int i = 0; i < datalistUpd.getCount() ; i++)
			{
				X31SDataBeanAccess dataBeanUpd = datalistUpd.getDataBean(i);
				// レター発送仕分区分　→　引抜
				String letter = dataBeanUpd.sendMessageString(KKW21501SFConst.LETTER_HASSO_SHIWAKE_DIV_01, 
						X31CWebConst.DATABEAN_GET_VALUE);
				//「KOPTに送付」チェックあり
				if (LETTER_SHIWAKE_KOPT.equals(letter))
				{
					dataBeanUpd.sendMessageBoolean(KKW21501SFConst.HIKINUKI_FLG_02, 
							X31CWebConst.DATABEAN_SET_VALUE, true);
				}
				
				// 再発行フラグは送信年月日が設定されていれば true とする
				String send_ymd = dataBeanUpd.sendMessageString(KKW21501SFConst.SEND_YMD_01, 
						X31CWebConst.DATABEAN_GET_VALUE);
				if (send_ymd != null && !"".equals(send_ymd))
				{
					dataBeanUpd.sendMessageBoolean(KKW21501SFConst.RE_HAKO_01, 
							X31CWebConst.DATABEAN_SET_VALUE, true);
				}
			}
		}
		
		// 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);

		// 完了画面からの遷移
		seniFromFin = true;
		
		// 再検索
		actionInit();
		
		return result;
		
	}

	/**
	 * サービス呼出処理<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>
	 * <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, HashMap<String, Object> uploadMap) 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, uploadMap);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return msgResult;
	}

	/**
	 * 検索前処理<br>
	 * <br>
	 * 検索系フラグ、および検索結果の初期化を行います。<BR>
	 * <br>
	 * @param bean データBeanアクセスクラス
	 */
	private void beforeSearch(X31SDataBeanAccess bean) 
	{
		// 一覧表示部分を非表示にする
		bean.sendMessageBoolean(KKW21501SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);

		// 契約内容通知書一覧クリア
		X31SDataBeanAccessArray knytcslist = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST);
		knytcslist.clearArray();
		// 契約内容通知書更新情報（次画面用）クリア
		X31SDataBeanAccessArray knytcslistUpd = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_UPD);
		knytcslistUpd.clearArray();
		// 契約内容通知書登録情報クリア
		X31SDataBeanAccessArray knytcslistIns = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_INS);
		knytcslistIns.clearArray();
		// 契約内容通知書変更情報クリア
		X31SDataBeanAccessArray knytcslistMod = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_MOD);
		knytcslistMod.clearArray();
		// 契約内容通知書削除情報クリア
		X31SDataBeanAccessArray knytcslistDel = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_DEL);
		knytcslistDel.clearArray();
		// 契約内容通知書更新前情報クリア
		X31SDataBeanAccessArray knytcslistBf = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_BF);
		knytcslistBf.clearArray();
	}

	/**
	 * 検索実行処理<BR>
	 * <BR>
	 * 検索処理を実行します。
	 * １．契約内容通知書一覧再検索CCを呼び出します。
	 * ２．エラーがあれば、ステータスに従いメッセージをセットします。
	 * ３．エラーがなければ、一覧表示部分を表示します。
	 * <p>
	 * @param bean サービスフォームBean
	 * @throws Exception
	 */
	private void execSearch(X31SDataBeanAccess bean) throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess[] paramBean = {bean};

		// 検索フラグ設定
		bean.sendMessageString(KKW21501SFConst.SEARCH_FLG, X31CWebConst.DATABEAN_SET_VALUE, SEARCH_FLG_Y);

		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		KKSV0842_KKSV0842OPDBMapper mapper = new KKSV0842_KKSV0842OPDBMapper();
		inputMap = new HashMap<String, Object>();
		mapper.setKNYTCSRESEARCHCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// ページング情報上りマッピング
		JCCWebCommon.upmapperPageLinkInfo(this, "KNYTCSRESEARCHCC", inputMap, SCREENID);

		// サービス呼出処理
		X31CMessageResult msgResult = invokeService("KKSV0842", "KKSV0842OP");
		
		// 下りマッピング処理(サービス項目-DataBean項目マッピング)
		mapper.getKNYTCSRESEARCHCC(paramBean, outputMap);

		// 入力有無フラグクリア
		bean.sendMessageString(KKW21501SFConst.INFLG, X31CWebConst.DATABEAN_SET_VALUE, "");
	}

	/**
	 * 検索後処理<br>
	 * <br>
	 * 検索サービスインターフェイス呼出後、検索結果よりデータセットを行います。<br>
	 * 取得データの検索エラーフラグが以下の場合は結果欄を表示しません。<BR>
	 * ・検索結果が0件の場合<BR>
	 * ・検索結果が最大検索件数超えの場合<BR>
	 * <br>
	 * @param bean サービスフォームBean
	 */
	private void afterSearch(X31SDataBeanAccess bean) 
	{
		// 検索結果のHashMapから、指定したSCタイトルの検索エラーフラグを取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("KNYTCSRESEARCHCC", 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("KKW21501_MAX_SHOW_CNT")};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0340__I, str);
		}
		else
		{
			if(JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
			{
				// 表示ページに該当するデータがない場合の処理
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0350__I);
			}
			
			// ページング情報下りマッピング
			JCCWebCommon.downmapperPageLinkInfo(this, "KNYTCSRESEARCHCC", outputMap, SCREENID);

			// ページングのコマンドマップIDをセッションに設定
			JCCWebCommon.setSearchCommand(this, PAGING_CMD);

			// 一覧表示「要」をセットする。
			bean.sendMessageBoolean(KKW21501SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);

			// 選択する行を取得
			String knytcs_no_bf = bean.sendMessageString(KKW21501SFConst.KNYTCS_NO, X31CWebConst.DATABEAN_GET_VALUE);

			// 更新前退避用
			X31SDataBeanAccessArray datalistBf = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_BF);

			// 契約内容通知書一覧の数だけ繰り返して設定
			X31SDataBeanAccessArray datalist = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST);
			for (int i = 0; i < datalist.getCount(); i++)
			{
				// 更新前情報を用意
				X31SDataBeanAccess dataBeanBf = datalistBf.addDataBean();

				X31SDataBeanAccess dataBean = datalist.getDataBean(i);
				// フラグの内容からチェックボックスを選択
				// レター発送仕分区分　→　引抜
				String letter = dataBean.sendMessageString(KKW21501SFConst.LETTER_HASSO_SHIWAKE_DIV_01, 
						X31CWebConst.DATABEAN_GET_VALUE);
				//「KOPTに送付」チェックあり
				if (LETTER_SHIWAKE_KOPT.equals(letter))
				{
					dataBean.sendMessageBoolean(KKW21501SFConst.HIKINUKI_01, 
							X31CWebConst.DATABEAN_SET_VALUE, true);
					dataBeanBf.sendMessageBoolean(KKW21501SFConst.HIKINUKI_FLG_02, 
							X31CWebConst.DATABEAN_SET_VALUE, true);
				}

				// 契約内容通知書番号
				String knytcs_no = 
					dataBean.sendMessageString(KKW21501SFConst.KNYTCS_NO_01, X31CWebConst.DATABEAN_GET_VALUE);

				dataBeanBf.sendMessageString(KKW21501SFConst.KNYTCS_NO_02, 
						X31CWebConst.DATABEAN_SET_VALUE, knytcs_no);
				
				// 行選択設定処理
				// ひとまず先頭行を選択しておく
				if (i == 0)
				{
					bean.sendMessageString(KKW21501SFConst.KNYTCS_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "0");
				}
				// 前回選択行と等しければ選択
				if (knytcs_no_bf != null && knytcs_no_bf.equals(knytcs_no))
				{
					bean.sendMessageString(KKW21501SFConst.KNYTCS_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, i + "");
				}
			}
		}
	}
	
	/**
	 * チェックボックスの選択値を設定します。
	 * <BR>
	 * 
	 * @param bean データBeanアクセスクラス
	 * @param search_flg 検索フラグ
	 */
	private void setCheckBoxSelected(X31SDataBeanAccess bean, String search_flg)
	{
		// 検索フラグ「要」であれば、検索条件より選択値を設定
		if (SEARCH_FLG_Y.equals(search_flg))
		{
			// 検索用未送信
			String search_mi_send = bean.sendMessageString(KKW21501SFConst.SEARCH_MI_SEND,
					X31CWebConst.DATABEAN_GET_VALUE);
			if (MI_SEND_FLG_Y.equals(search_mi_send))
			{
				// 未送信チェックボックスをcheckedにする
				bean.sendMessageBoolean(KKW21501SFConst.MI_SEND, X31CWebConst.DATABEAN_SET_VALUE, true);
			}
			else
			{
				// 未送信チェックボックスをcheckedにしない
				bean.sendMessageBoolean(KKW21501SFConst.MI_SEND, X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		// チェックボックスの選択値の初期化
		else
		{
			// 未送信チェックボックスをcheckedにする
			bean.sendMessageBoolean(KKW21501SFConst.MI_SEND, X31CWebConst.DATABEAN_SET_VALUE, true);
		}
	}

	/**
	 * 次画面遷移処理（画面跨りなし）
	 * <BR>
	 * 次画面へ遷移します。
	 * <p>
	 * @param tran_div 処理区分（詳細照会、詳細更新）
	 * @return 正常／異常
	 */
	@SuppressWarnings("unchecked")
	private boolean setParamAndSeni(String tran_div)
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 選択されている行を取得
		String knytcs_choice = bean.sendMessageString(KKW21501SFConst.KNYTCS_CHOICE, 
				X31CWebConst.DATABEAN_GET_VALUE);
		int sel = 0;
		if (knytcs_choice != null && !"".equals(knytcs_choice))
		{
			sel = Integer.parseInt(knytcs_choice);
		}
		X31SDataBeanAccessArray datalist = bean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST);
		X31SDataBeanAccess dataBean = datalist.getDataBean(sel);

		// 引き継ぎの情報（自画面用）を格納するMAPを生成する
		HashMap dataMapMe = new HashMap();

		// 検索条件の退避
		dataMapMe.put(KKW21501SFConst.SYSID, bean.sendMessageString(KKW21501SFConst.SYSID,
				X31CWebConst.DATABEAN_GET_VALUE));		// SYSID
		dataMapMe.put(KKW21501SFConst.DATA_RNKI_YEAR_FROM, bean.sendMessageString(KKW21501SFConst.DATA_RNKI_YEAR_FROM,
				X31CWebConst.DATABEAN_GET_VALUE));		// データ連携日（自）（年）
		dataMapMe.put(KKW21501SFConst.DATA_RNKI_MON_FROM, bean.sendMessageString(KKW21501SFConst.DATA_RNKI_MON_FROM,
				X31CWebConst.DATABEAN_GET_VALUE));		// データ連携日（自）（月）
		dataMapMe.put(KKW21501SFConst.DATA_RNKI_DAY_FROM, bean.sendMessageString(KKW21501SFConst.DATA_RNKI_DAY_FROM,
				X31CWebConst.DATABEAN_GET_VALUE));		// データ連携日（自）（日）
		dataMapMe.put(KKW21501SFConst.DATA_RNKI_YEAR_TO, bean.sendMessageString(KKW21501SFConst.DATA_RNKI_YEAR_TO,
				X31CWebConst.DATABEAN_GET_VALUE));		// データ連携日（至）（年）
		dataMapMe.put(KKW21501SFConst.DATA_RNKI_MON_TO, bean.sendMessageString(KKW21501SFConst.DATA_RNKI_MON_TO,
				X31CWebConst.DATABEAN_GET_VALUE));		// データ連携日（至）（月）
		dataMapMe.put(KKW21501SFConst.DATA_RNKI_DAY_TO, bean.sendMessageString(KKW21501SFConst.DATA_RNKI_DAY_TO,
				X31CWebConst.DATABEAN_GET_VALUE));		// データ連携日（至）（日）
		dataMapMe.put(KKW21501SFConst.CUST_NM, bean.sendMessageString(KKW21501SFConst.CUST_NM,
				X31CWebConst.DATABEAN_GET_VALUE));		// お客様名
		dataMapMe.put(KKW21501SFConst.SEARCH_SYSID, bean.sendMessageString(KKW21501SFConst.SEARCH_SYSID,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用ＳＹＳＩＤ
		dataMapMe.put(KKW21501SFConst.SEARCH_RNKIYMD_FROM, bean.sendMessageString(KKW21501SFConst.SEARCH_RNKIYMD_FROM,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用データ連携日（自）
		dataMapMe.put(KKW21501SFConst.SEARCH_RNKIYMD_TO, bean.sendMessageString(KKW21501SFConst.SEARCH_RNKIYMD_TO,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用データ連携日（至）
		dataMapMe.put(KKW21501SFConst.SEARCH_CUST_NM, bean.sendMessageString(KKW21501SFConst.SEARCH_CUST_NM,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用お客様名（漢字）
		dataMapMe.put(KKW21501SFConst.SEARCH_MI_SEND, bean.sendMessageString(KKW21501SFConst.SEARCH_MI_SEND,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用未送信
		dataMapMe.put(KKW21501SFConst.ORDER_NUM, bean.sendMessageString(KKW21501SFConst.ORDER_NUM,
				X31CWebConst.DATABEAN_GET_VALUE));		// ソート項目Ｎｏ
		dataMapMe.put(KKW21501SFConst.ORDER_TYPE, bean.sendMessageString(KKW21501SFConst.ORDER_TYPE,
				X31CWebConst.DATABEAN_GET_VALUE));		// ソート順

		// 選択行の契約内容通知書番号を取得
		String knytcs_no = dataBean.sendMessageString(KKW21501SFConst.KNYTCS_NO_02,
				X31CWebConst.DATABEAN_GET_VALUE);
		
		dataMapMe.put(KKW21501SFConst.KNYTCS_NO, knytcs_no);		// 契約内容通知書番号
		dataMapMe.put(KKW21501SFConst.SEARCH_FLG, SEARCH_FLG_Y);	// 検索フラグ「要」

		// 引き継ぎの情報（次画面用）を格納するMAPを生成する
		HashMap dataMapNext = new HashMap();
		dataMapNext.put(KKW21502SFConst.TRAN_DIV, tran_div);		// 処理区分
		dataMapNext.put(KKW21502SFConst.KNYTCS_NO, knytcs_no);		// 契約内容通知書番号

		// 次画面への引継情報を設定
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW21502, dataMapNext);

		// 戻り先画面IDを設定
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW21502, JKKScreenConst.SCREEN_ID_KKW21501);
		if (TRAN_DIV_UPD.equals(tran_div))
		{
			JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW21504, JKKScreenConst.SCREEN_ID_KKW21501);
		}

		// 自画面への引継情報を設定
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW21501, dataMapMe);

		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW21502);
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW21502);

		// 入力有無フラグクリア
		bean.sendMessageString(KKW21501SFConst.INFLG, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 引継内容をログ出力
		printLog(JSYwebLog.DEBUG, dataMapMe, "自画面への引継情報");
		printLog(JSYwebLog.DEBUG, dataMapNext, "次画面への引継情報");
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}
	
	/**
	 * サービス呼出結果の判定<br>
	 * <br>
	 *
	 * @param outputMap APサーバの処理結果業務データ
	 * @return 正常：0 送信バッチ実行エラー：1 データ抽出バッチ実行エラー：2
	 */
	@SuppressWarnings("unchecked")
	private String getErrFlg(HashMap<String, Object> outputMap, String fieldText)
	{
		
		HashMap dataMap = (HashMap) outputMap.get(fieldText);
		
		String rslt = (String)dataMap.get("err_flg");
		
		return rslt;
	}

	/**
	 * ログ出力
	 * <BR>
	 * HashMapの中身をすべてログ出力します。
	 * <P>
	 * @param type ログ種別
	 * @param target 出力対象
	 * @param msg ログ出力の前後に出力する文字
	 */
	@SuppressWarnings("unchecked")
	private void printLog(int type, HashMap target, String msg)
	{
		// 引継内容をログ出力
		JSYwebLog.println(type, getClass(), "********** " + msg + "（開始） **********", null, null, null);
		Iterator it = target.keySet().iterator();
		while(it.hasNext())
		{
			Object objKey = it.next();
			JSYwebLog.println(type, getClass(), objKey + " = " + target.get(objKey), null, null, null);
			
		}
		JSYwebLog.println(type, getClass(), "********** " + msg + "（終了） **********", null, null, null);
	}
	

	/**
	 * ディレイド処理によって実施される契約内容通知書再発行ディレイド処理依頼ファイルを作成する。
	 * <br>
	 * @param		svcFormBean	対象のフォーム
	 * @return		csvByte		作成されたファイル(byte[])
	 * @exception	Exception	例外が発生した場合
	 */
	private byte[] createEfile(X31SDataBeanAccess svcFormBean) throws Exception {
		StringBuffer strBuf = new StringBuffer();

		X31SDataBeanAccessArray tmpBeanArray = svcFormBean.getDataBeanArray(KKW21501SFConst.KNYTCS_LIST_INS);
		
		if ( (tmpBeanArray == null) || (tmpBeanArray.getCount() <= 0) ) {
			return new byte[0];
		}
		
		for(int i = 0 ; i < tmpBeanArray.getCount(); ++i)
		{
			X31SDataBeanAccess tmpBean = tmpBeanArray.getDataBean(i);
			strBuf.append( tmpBean.sendMessageString( KKW21501SFConst.KNYTCS_NO_01, X31CWebConst.DATABEAN_GET_VALUE ) );
			// 改行(CRLF)を設定
			strBuf.append(LINE_SEPARAOR_CRLF);
			
		}

		return strBuf.toString().getBytes();
	}
	
}
