/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbEKK0011B504TPDA
*	ソースファイル名：JSYejbEKK0011B504TPDA.java
*	作成者			：EK908574
*	日付			：2012年11月08日
*＜機能概要＞
*	申込情報一覧照会テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00
*	v4.00.00	2012/11/08	FJ)松田		【ANK-1350-00-00】権限パターンQR対応
*	v4.01.00	2012/12/19	FJ)川西		【ST4-2012-0000132】申込・仮申込検索画面のレスポンス対応
*	v4.02.00	2012/12/20	FJ)多田		【ANK-1247-00-00】破棄済みが検索出来るように修正
*	v4.03.00	2012/12/21	FJ)多田		【ANK-1392-00-00】新規の保留が検索出来るように修正
*	v7.00.00	2014/01/14	FJ)北浦		【ANK-1873-00-00】KC社追加対応
*	v7.01.00	2014/03/17	FJ)中山		【OM-2014-0001097】性能障害対応
*	v8.00.00	2014/04/05	FJ)中山		【OM-2014-0001392】性能障害対応
*	v10.00.00	2014/07/10	FJ)中山		【ANK-2137-00-00】提携住宅会社用WEB受付画面配置
*   ｖ13.00.00  2015/03/23  FJ) 大山    IT1-2015-0000034 性能対応
*	v37.00.00	2018/02/09	FJ)黒田(耕)	【ANK-3366-00-00】eo光設備卸対応
*   v39.00.00   2018/09/19  FJ) 御崎    【ANK-3478-00-00】eo光設備卸（サービス開始対応）設備卸事業者「F」を追加
*   v71.00.00   2024/01/03  GDC) J.Zabala    【ANK-4468-00-00】eo光ネット「シンプルプラン」追加対応
*   v71.00.00   2024/06/28  FJ) 福島    【ANK-4468-00-01】eo光ネット「シンプルプラン」追加対応
*   v71.00.01   2024/07/29  FJ) 福島    【ANK-4468-00-01】eo光ネット「シンプルプラン」追加対応 IT障害対応
*   v73.00.00	2024/08/20	GDC) JN.Franco		【ANK-4427-00-00：NTT卸対応】
*   v73.00.00	2025/03/25	FJ)菅原		【#86616】申込検索画面でタイムアウト
*   v75.00.00  	2025/06/03   FJ) 星野   【#87256】対応
********************************************************************************/

package eo.ejb.cbs.sqlf;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;

import com.fujitsu.futurity.model.base.CAANJDBCUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.base.CAANSQLFacility;
import com.fujitsu.futurity.model.ejb.common.JSYejbConnection;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;
import com.fujitsu.futurity.model.ejb.common.StatusCodes;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateDBAccessHandler;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbm.entity.KK0011ETMsg;
import eo.ejb.cbs.cbsmsg.EKK0011B504CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011B504CBSMsg4List;
import eo.ejb.common.db.JKKejbExclusiveProcKK0011;

/**
*
*  テンプレートDBアクセス部品　EKK0011B504_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbEKK0011B504TPDA extends CAANSQLFacility implements TemplateDBAccessHandler
{
	/** フラグＯＮ */
	private static final String FLAG_ON = "1";
	
	/** 申込パターン [本申込] */
	private static final String MSKM_PATTERN_HON = "1";
	
	/** 申込パターン [仮申込→本申込] */
	private static final String MSKM_PATTERN_KARIHON = "2";
	
	/** コード種別 [申込ステータス]*/
	private static final String CD00060 = "CD00060";
	
	/** コード種別 [申込状態識別コード] */
	private static final String CD00760 = "CD00760";
	
	/**
	 * コンストラクタ
	 */
	public JSYejbEKK0011B504TPDA()
	{
	}
	
	/**
	*   EKK0011B504_SQLF<br>
	*   @param inMsg    入力値の格納されたCBSMsg <br>
	*   @return void
	*/
	public void invoke(CAANMsg inMsg, AgentDispatchContext inContext)
	{
		// コネクション
		Connection con1 = null;

		// プリペアステートメント
		PreparedStatement pstmt1 = null;
		PreparedStatement pstmt2 = null;

		// リザルトセット
		ResultSet rsltQuery1 = null;
		ResultSet rsltQuery2 = null;

		// バインド値格納リスト
		ArrayList<String> bindValOfMskmList = new ArrayList<String>();
		ArrayList<String> bindValOfPnyList = new ArrayList<String>();

		String opeDate = inMsg.getString(EKK0011B504CBSMsg.KEY_UNYO_YMD);

		/*****************************************************
		 * サービスインターフェイス共通部の必須チェック
		 *****************************************************/

		// 最大検索件数、表示件数、表示ページ番号が未設定の場合
		// 例外をスローする
		if (inMsg.isNull(EKK0011B504CBSMsg.MAX_SEARCH_NUM)
				|| inMsg.isNull(EKK0011B504CBSMsg.DISPLAY_NUM)
				|| inMsg.isNull(EKK0011B504CBSMsg.DISPLAY_PAGE_NUM))
		{
			throw new IllegalArgumentException("サービスインターフェイス共通部の最大検索件数、表示件数、表示ページ番号は必須項目です。");
		}

		/******************** 
		 * SQL文の作成
		 ********************/

		try{

			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK0011ETMsg.getTableName());


			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append("SELECT * ")
					.append("FROM ( ");

			// 状態の保留以外が選択されている場合
			if (isSearchNotPendingData(inMsg))
			{
				// SELECT句 （保留以外）
				sql_Buff.append("SELECT ")
						.append("    MSKMSHO.MSKM_NO AS MSKM_NO ")																		// 申込番号
						.append("    ,MSKMSHO.MSKM_STAT AS MSKM_STAT ")																	// 申込ステータス
						.append("    ,( SELECT ")																						// 申込ステータス名称
						.append("           ZM0171.CD_DIV_NM ")
						.append("       FROM ")
						.append("           ZM_M_CD_NM_KANRI ZM0171 ")
						.append("       WHERE ")
						.append("           ZM0171.CD_SBT_CD = ? ")
						.append("       AND ZM0171.CD_DIV = MSKMSHO.MSKM_STAT ")
						.append("       AND ZM0171.CD_TSTAYMD <= ? ")
						.append("       AND ZM0171.CD_TENDYMD >= ? ")
						.append("       AND ZM0171.MK_FLG = ? ")
						.append("     ) AS MSKM_STAT_NM ")
						.append("    ,MSKMSHO.CONSMBSN_MSKM_STAT_SKBT_CD AS CONSMBSN_MSKM_STAT_SKBT_CD ")								// コンシューマ営業用申込状態識別コード
						.append("    ,( SELECT ")																						// コンシューマ営業用申込状態識別コード名称
						.append("           ZM0171.CD_DIV_NM ")
						.append("       FROM ")
						.append("           ZM_M_CD_NM_KANRI ZM0171 ")
						.append("       WHERE ")
						.append("           ZM0171.CD_SBT_CD = ? ")
						.append("       AND ZM0171.CD_DIV = MSKMSHO.CONSMBSN_MSKM_STAT_SKBT_CD ")
						.append("       AND ZM0171.CD_TSTAYMD <= ? ")
						.append("       AND ZM0171.CD_TENDYMD >= ? ")
						.append("       AND ZM0171.MK_FLG = ? ")
						.append("     ) AS CONSMBSN_MSKM_STAT_SKBT_CD_NM ")
						.append("    ,MSKMSHO.MSKM_YMD AS MSKM_YMD ")																	// 申込年月日
						.append("    ,MSKMSHO.MSKM_NO AS MSKM_NO_PDING_NO ")															// 申込番号＿保留番号
						.append("    ,MSKMSHO.MSKM_SBT_CD AS IDO_DIV ")																	// 異動区分
						.append("    ,MSKMSHO.MSKMSHO_NO AS MSKMSHO_NO ")																// 申込書番号
						.append("    ,MSKMSHO.ORDERING_SVC_CHOICE_CD AS ORDERING_SVC_CHOICE_CD ")										// オーダリングサービス選択コード
						.append("    ,MSKMSHO.AGNT_CD_1_2 AS AGNT_CD ")																	// 代理店コード
						.append("    ,CK0011.CUST_NM AS CUST_NM ")																		// お客様名
						.append("    ,MSKMSHO.CUST_KANA AS CUST_KANA ")																	// お客様カナ名
// ANK-4468-00-00 MOD START
//						// ANK-4468-00-00 ADD START
//						.append("    ,KK0081.PCRS_CD ")
//						// ANK-4468-00-00 ADD END
						.append("    ,MSKMSHO.PCRS_CD ")																				// 料金コースコード
// ANK-4468-00-00 MOD END
						// ANK-4427-00-00 ADD START
						.append(", (SELECT KK0791.NTTORS_DIV FROM KK_M_PCRS KK0791")
						.append("  WHERE KK0791.PCRS_CD = MSKMSHO.PCRS_CD AND KK0791.PCRS_TSTAYMD <= ? AND KK0791.PCRS_TENDYMD >= ?")
						.append("  AND (KK0791.PCRS_CD, KK0791.RSV_APLY_YMD || KK0791.GENE_ADD_DTM) =")
						.append("  (SELECT KK0791_GENE.PCRS_CD, MAX(KK0791_GENE.RSV_APLY_YMD || KK0791_GENE.GENE_ADD_DTM) AS KK0791_MAX")
						.append("  FROM KK_M_PCRS KK0791_GENE")
						.append("  WHERE KK0791_GENE.PCRS_CD = KK0791.PCRS_CD")
						.append("  AND KK0791_GENE.RSV_APLY_YMD <= ?")
						.append("  AND KK0791_GENE.MK_FLG = '0'")
						.append("  GROUP BY KK0791_GENE.PCRS_CD))")
						// ANK-4427-00-00 ADD END
						.append("    ,MSKMSHO.KEISHA_TELNO AS KEISHA_TELNO ")															// 契約者電話番号
						.append("    ,MSKMSHO.MSKM_UK_TNT_USER_ID AS MSKM_UK_TNT_USER_ID ")												// 申込受付担当ユーザーID
						.append("    ,MSKMSHO.UPD_DTM AS UPD_DTM ")																		// 申込更新年月日時分秒
						.append("    ,MSKMSHO.MSKM_CANCEL_RSN_CD AS MSKM_CANCEL_RSN_CD ")												// 申込キャンセル理由コード
						.append("    ,MSKMSHO.MSKMSHO_SBT_CD AS MSKMSHO_SBT_CD ")														// 申込書種別コード
						.append("     ,'' AS USE_KISN_CD ")
						.append("     ,'' AS ADD_MOTO_SVC_KEI_NO ")
						.append("     ,MSKMSHO.SYSID AS SYSID ")
						.append("    ,( CASE WHEN MSKMSHO.MSKM_STAT = '130' THEN '04' ")												// 申込状態
						.append("            WHEN MSKMSHO.MSKM_STAT = '920' AND MSKMSHO.MSKM_CANCEL_RSN_CD = '10' THEN '05' ")
						.append("            WHEN MSKMSHO.MSKM_STAT = '100' AND MSKMSHO.CONSMBSN_MSKM_STAT_SKBT_CD = '02' THEN '02' ")
						.append("            WHEN MSKMSHO.MSKM_STAT = '100' AND MSKMSHO.CONSMBSN_MSKM_STAT_SKBT_CD = '03' THEN '03' ")
						.append("            ELSE '00' ")
						.append("            END ) AS MSKM_JOTAI ")
						.append("     ,NULL AS LAST_UPD_DTM ");

				// SELECT句（保留以外）のバインド値をセット
				bindValOfMskmList.addAll(Arrays.asList(new String[] {
						// ANK-4427-00-00 MOD START
//						CD00060, opeDate, opeDate, JKKStrConst.CD00016_0, CD00760, opeDate, opeDate, JKKStrConst.CD00016_0}));
						CD00060, opeDate, opeDate, JKKStrConst.CD00016_0, CD00760, opeDate, opeDate, JKKStrConst.CD00016_0, opeDate, opeDate, opeDate}));
						// ANK-4427-00-00 MOD END
				
				// FROM句 （保留以外）
				sql_Buff.append("FROM ")
						.append("    ( SELECT ")
						.append("          MSKM_DMEN.MSKMSHO_NO ")
// ANK4468-00-01 ADD START
						.append("          ,MSKM_DMEN.PCRS_CD ")
// ANK4468-00-01 ADD END
						.append("          ,MSKM_DMEN.AGNT_CD_1_1 ")
						.append("          ,MSKM_DMEN.AGNT_CD_1_2 ")
						.append("          ,MSKM_DMEN.AGNT_CD_2_1 ")
						.append("          ,MSKM_DMEN.AGNT_CD_2_2 ")
						.append("          ,MSKM_DMEN.MSKMSHO_SBT_CD ")
						.append("          ,MSKM_DMEN.ORDERING_SVC_CHOICE_CD ")
						.append("          ,MSKM_DMEN.CUST_KANA ")
						.append("          ,MSKM_DMEN.KEISHA_TELNO ")
						.append("          ,MSKM_DMEN.MSKM_NO ")
						.append("          ,KK0011.SYSID ")
						.append("          ,KK0011.MSKM_STAT ")
						.append("          ,KK0011.MSKM_SBT_CD ")
						.append("          ,KK0011.CONSMBSN_MSKM_STAT_SKBT_CD ")
						.append("          ,KK0011.MSKM_UK_TNT_USER_ID ")
						.append("          ,KK0011.MSKM_YMD ")
						.append("          ,KK0011.MSKM_CANCEL_RSN_CD ")
						.append("          ,KK0011.UPD_DTM ")
						.append("      FROM ")
						.append("          ( SELECT ")
						.append("                DISTINCT ")
						.append("                KK2501.MSKMSHO_NO ")
// ANK4468-00-01 ADD START
						.append("                ,KK0081.PCRS_CD ")
// ANK4468-00-01 ADD END
						.append("                ,KK2501.AGNT_CD_1_1 ")
						.append("                ,KK2501.AGNT_CD_1_2 ")
						.append("                ,KK2501.AGNT_CD_2_1 ")
						.append("                ,KK2501.AGNT_CD_2_2 ")
						.append("                ,KK2501.MSKMSHO_SBT_CD ")
						.append("                ,KK2501.ORDERING_SVC_CHOICE_CD ")
						.append("                ,KK2501.CUST_KANA ")
						.append("                ,KK2501.KEISHA_TELNO ")
						.append("                ,KK0021.MSKM_NO ")
						.append("            FROM ")
						.append("                ( SELECT ")
						.append("                      KK2501_IN.MSKMSHO_NO ")
						.append("                      ,KK2501_IN.AGNT_CD_1_1 ")
						.append("                      ,KK2501_IN.AGNT_CD_1_2 ")
						.append("                      ,KK2501_IN.AGNT_CD_2_1 ")
						.append("                      ,KK2501_IN.AGNT_CD_2_2 ")
						.append("                      ,KK2501_IN.MSKMSHO_SBT_CD ")
						.append("                      ,KK2501_IN.ORDERING_SVC_CHOICE_CD ")
						.append("                      ,KK2501_IN.CUST_KANA ")
						.append("                      ,KK2501_IN.KEISHA_TELNO ")
						.append("                  FROM ")
						.append("                      KK_T_MSKM_DMEN KK2501_IN ")
						.append("                  WHERE ");

				// 申込断面スキーマの検索条件を追加
				setWhereJknOfMskmDmen(inMsg, sql_Buff, bindValOfMskmList);

				sql_Buff.append("                ) KK2501 ")									// 申込断面スキーマ
						.append("                INNER JOIN ( ")
						.append("                    SELECT ")
						.append("                        KK0021_IN.MSKM_NO ")
						.append("                        ,KK0021_IN.MSKMSHO_NO ")
// ANK4468-00-01 ADD START
						.append("                        ,KK0021_IN.MSKM_DTL_NO ")
// ANK4468-00-01 ADD END
						.append("                    FROM ")
						.append("                        KK_T_MSKM_DTL KK0021_IN ")
						.append("                    WHERE ")
						.append("                        ( KK0021_IN.MSKM_DTL_NO, KK0021_IN.GENE_ADD_DTM ) =  ( SELECT ") 
						.append("                                                                                   KK0021_GENE.MSKM_DTL_NO ")
						.append("                                                                                   ,MAX(KK0021_GENE.GENE_ADD_DTM) ")
						.append("                                                                               FROM ")
						.append("                                                                                   KK_T_MSKM_DTL KK0021_GENE ")
						.append("                                                                               WHERE ")
						.append("                                                                                   KK0021_GENE.MSKM_DTL_NO = KK0021_IN.MSKM_DTL_NO ")
						.append("                                                                               AND KK0021_GENE.MK_FLG = '0' ")
						.append("                                                                               GROUP BY ")
						.append("                                                                                   KK0021_GENE.MSKM_DTL_NO ) ")
						.append("                    AND ")
						.append("                    ( ");

				// 申込明細ステータスが受付済の場合
				if (isSearchMskmDtlStatUkeZumi(inMsg))
				{
					sql_Buff.append("                    KK0021_IN.MSKM_DTL_STAT = '010' ");
				}

				// 破棄済みとステータスが受付済みの状態が選択されている場合
				if (isSearchAbomntMskmDtlStatUkeZumi(inMsg))
				{
					sql_Buff.append("                    OR ");
				}

				// 検索条件に破棄済みが含まれる場合
				if (isSearchAbomnt(inMsg))
				{
					sql_Buff.append("                    (KK0021_IN.MSKM_DTL_STAT = '920' AND  KK0021_IN.MSKM_DTL_CANCEL_RSN_CD = '10') ");
				}

				sql_Buff.append("                    )");
				
				// 申込年月日（前）が入力されている場合
				if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKM_YMD_STA, inMsg)) 
				{
					// バインド変数にすると申込年月日のINDEXが使用されない事象があるためバインド変数を使用しない
					sql_Buff.append(" AND KK0021_IN.MSKM_YMD >= '");
					sql_Buff.append(inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_YMD_STA));
					sql_Buff.append("' ");
				}

				// 申込年月日（後）が入力されている場合
				if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKM_YMD_END, inMsg)) 
				{
					// バインド変数にすると申込年月日のINDEXが使用されない事象があるためバインド変数を使用しない
					sql_Buff.append(" AND KK0021_IN.MSKM_YMD <= '");
					sql_Buff.append(inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_YMD_END));
					sql_Buff.append("' ");
				}
				
				sql_Buff.append("                ) KK0021 ")									// 申込明細スキーマ
						.append("                ON KK0021.MSKMSHO_NO = KK2501.MSKMSHO_NO ");

// ANK4468-00-01 ADD START
				// サービス契約スキーマからシンプルプランの料金コースコード取得
				sql_Buff.append("                LEFT OUTER JOIN ( ")
						.append("                    SELECT K0081_1.SVC_KEI_NO, K0081_1.MSKM_DTL_NO, K0081_1.PCRS_CD ")
						.append("                    FROM KK_T_SVC_KEI K0081_1 ")
						// ANK-4427-00-00 MOD START
//						.append("                    WHERE K0081_1.PCRS_CD IN ('A97','A99') ")
//						.append("                        AND K0081_1.RSV_APLY_YMD || K0081_1.GENE_ADD_DTM = ( ")
// #86616 MOD START
// 						.append("                    WHERE K0081_1.RSV_APLY_YMD || K0081_1.GENE_ADD_DTM = ( ")
						.append("                    WHERE K0081_1.PCRS_CD IN ('A97','A99','AA0','AA1','AA2','AA3','AA4','AB0','AB1','AB2','AB3','AB4') ")
						.append("                        AND K0081_1.RSV_APLY_YMD || K0081_1.GENE_ADD_DTM = ( ")
// #86616 MOD END
						// ANK-4427-00-00 MOD END
						.append("                            SELECT MAX( KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM ) AS KEY ")
						.append("                            FROM KK_T_SVC_KEI KK0081_GENE ")
						.append("                            WHERE KK0081_GENE.SVC_KEI_NO = K0081_1.SVC_KEI_NO ")
						.append("                              AND KK0081_GENE.MK_FLG = ? ")
						.append("                              AND KK0081_GENE.RSV_APLY_YMD <= ? ")
						.append("                              AND KK0081_GENE.RSV_APLY_CD = ? ")
						.append("                            ) ")
						.append("                ) KK0081 ")
						.append("                ON KK0081.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ");

				bindValOfMskmList.addAll(Arrays.asList(new String[] {JKKStrConst.CD00016_0, opeDate, JKKStrConst.CD00343_2}));
//ANK4468-00-01 ADD END

				sql_Buff.append("          ) MSKM_DMEN ")										// エイリアス「申込断面」（申込断面スキーマ、申込明細スキーマで構成）
						.append("          INNER JOIN ( SELECT ")
						.append("                           KK0011_IN.MSKM_NO ")
						.append("                           ,KK0011_IN.SYSID ")
						.append("                           ,KK0011_IN.MSKM_STAT ")
						.append("                           ,KK0011_IN.MSKM_SBT_CD ")
						.append("                           ,KK0011_IN.CONSMBSN_MSKM_STAT_SKBT_CD ")
						.append("                           ,KK0011_IN.MSKM_UK_TNT_USER_ID ")
						.append("                           ,KK0011_IN.MSKM_YMD ")
						.append("                           ,KK0011_IN.MSKM_CANCEL_RSN_CD ")
						.append("                           ,KK0011_IN.UPD_DTM ")
						.append("                       FROM ")
						.append("                           KK_T_MSKM KK0011_IN ")
						.append("                       WHERE ");

				// 申込スキーマの検索条件を追加
				setWhereJknOfMskm(inMsg, sql_Buff, bindValOfMskmList);

				sql_Buff.append("          ) KK0011 ")											// 申込スキーマ
						.append("          ON KK0011.MSKM_NO = MSKM_DMEN.MSKM_NO ")
						.append("    ) MSKMSHO ")												// エイリアス「申込書」（エイリアス「申込断面」、申込スキーマで構成）
						.append("    INNER JOIN ")
						.append("        CK_T_CUST CK0011 ")									// お客様スキーマ
						.append("    ON CK0011.SYSID = MSKMSHO.SYSID ")
						.append("        AND ( CK0011.SYSID, ( CK0011.RSV_APLY_YMD || CK0011.GENE_ADD_DTM ) ) = ( SELECT ")
						.append("                                                                                     CK0011_GENE.SYSID ")
						.append("                                                                                     ,MAX( CK0011_GENE.RSV_APLY_YMD || CK0011_GENE.GENE_ADD_DTM ) ")
						.append("                                                                                 FROM ")
						.append("                                                                                     CK_T_CUST CK0011_GENE ")
						.append("                                                                                 WHERE ")
						.append("                                                                                     CK0011_GENE.SYSID = CK0011.SYSID ")
						.append("                                                                                 AND CK0011_GENE.RSV_APLY_YMD <= ? ")
						.append("                                                                                 AND CK0011_GENE.RSV_APLY_CD = ? ")
						.append("                                                                                 AND CK0011_GENE.MK_FLG = ? ")
						.append("                                                                                 GROUP BY ")
						.append("                                                                                     CK0011_GENE.SYSID ) ");

				// お客様スキーマのバインド値をセット
				bindValOfMskmList.addAll(Arrays.asList(new String[] {opeDate, JKKStrConst.CD00343_2, JKKStrConst.CD00016_0}));
				
// ANK-4468-00-01 DEL START
//				// ANK-4468-00-00 ADD START
//				sql_Buff.append("    INNER JOIN KK_T_MSKM_DTL KK0021 ") // 申込明細スキーマ
//				.append("    ON KK0021.MSKM_NO = MSKMSHO.MSKM_NO ")
//				.append("    AND KK0021.GENE_ADD_DTM = ")
//				.append("        (SELECT MAX(KK0021_GENE.GENE_ADD_DTM) AS KK0021_MAX ")
//				.append("        FROM KK_T_MSKM_DTL KK0021_GENE ")
//				.append("        WHERE KK0021_GENE.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ")
//				.append("        AND KK0021_GENE.MK_FLG = ? ")
//				.append("        GROUP BY KK0021_GENE.MSKM_NO) ")
//				.append("    INNER JOIN KK_T_SVC_KEI KK0081 ") // サービス契約スキーマ
//				.append("    ON KK0081.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ")
//				.append("    AND KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ")
//				.append("        (SELECT  MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ")
//				.append("        FROM KK_T_SVC_KEI KK0081_GENE ")
//				.append("        WHERE KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
//				.append("        AND KK0081_GENE.RSV_APLY_YMD <= ? ")
//				.append("        AND KK0081_GENE.RSV_APLY_CD = ? ")
//				.append("        AND KK0081_GENE.MK_FLG = ?) ");
//				
//				// 申込明細スキーマのバインド値をセット,サービス契約スキーマ
//				bindValOfMskmList.addAll(Arrays.asList(new String[] {JKKStrConst.CD00016_0, opeDate, JKKStrConst.CD00343_2, JKKStrConst.CD00016_0}));
//				// ANK-4468-00-00 ADD END
// ANK-4468-00-01 DEL END
			}

			// 状態が保留と保留以外のものが選択されている場合
			if (isSearchNotPendingData(inMsg) && isSearchPendingData(inMsg))
			{
				sql_Buff.append(" UNION ALL ");
			}

			// 状態の保留が選択されている場合
			if (isSearchPendingData(inMsg))
			{
				// SELECT句 （保留）
				sql_Buff.append("SELECT ")
						.append("       MPNY_TPPV.MSKM_NO ")
						.append("     , MPNY_TPPV.MSKM_STAT ")
						.append("     , MPNY_TPPV.MSKM_STAT_NM")
						.append("     , MPNY_TPPV.CONSMBSN_MSKM_STAT_SKBT_CD ")
						.append("     , MPNY_TPPV.CONSMBSN_MSKM_STAT_SKBT_CD_NM ")
						.append("     , MPNY_TPPV.MSKM_YMD ")
						.append("     , MPNY_TPPV.MSKM_NO_PDING_NO ")
						.append("     , MPNY_TPPV.IDO_DIV ")
						.append("     , MPNY_TPPV.MSKMSHO_NO ")
						.append("     , KK2231.SET_CD AS ORDERING_SVC_CHOICE_CD")
						.append("     , KK2231.SET_TG_KEI_NO AS AGNT_CD ")
						.append("     , MPNY_TPPV.CUST_NM ")
						.append("     , MPNY_TPPV.CUST_KANA ")
// ANK-4468-00-01 MOD START
//						// ANK-4468-00-00 ADD START
//						.append("     ,KK0081.PCRS_CD ")
//						// ANK-4468-00-00 ADD END

						.append("     ,KK2211.PCRS_CD ")
// ANK-4468-00-01 MOD END
						// ANK-4427-00-00 ADD START
						.append(", (SELECT KK0791.NTTORS_DIV FROM KK_M_PCRS KK0791 WHERE KK0791.PCRS_CD = KK2211.PCRS_CD AND KK0791.PCRS_TSTAYMD <= ? AND KK0791.PCRS_TENDYMD >= ?")
						.append("  AND (KK0791.PCRS_CD, KK0791.RSV_APLY_YMD || KK0791.GENE_ADD_DTM) =")
						.append("  (SELECT KK0791_GENE.PCRS_CD, MAX(KK0791_GENE.RSV_APLY_YMD || KK0791_GENE.GENE_ADD_DTM) AS KK0791_MAX")
						.append("  FROM KK_M_PCRS KK0791_GENE")
						.append("  WHERE KK0791_GENE.PCRS_CD = KK0791.PCRS_CD")
						.append("  AND KK0791_GENE.RSV_APLY_YMD <= ?")
						.append("  AND KK0791_GENE.MK_FLG = '0'")
						.append("  GROUP BY KK0791_GENE.PCRS_CD))")
						// ANK-4427-00-00 ADD END
						.append("     , MPNY_TPPV.KEISHA_TELNO ")
						.append("     , MPNY_TPPV.MSKM_UK_TNT_USER_ID ")
						.append("     , MPNY_TPPV.UPD_DTM ")
						.append("     , MPNY_TPPV.MSKM_CANCEL_RSN_CD ")
						.append("     , MPNY_TPPV.MSKMSHO_SBT_CD ")
						.append("     , MPNY_TPPV.USE_KISN_CD AS USE_KISN_CD  ")
						.append("     , MPNY_TPPV.ADD_MOTO_SVC_KEI_NO AS ADD_MOTO_SVC_KEI_NO  ")
						.append("     , MPNY_TPPV.SYSID AS SYSID  ")
						.append("     , MPNY_TPPV.MSKM_JOTAI ")
						.append("     , NULL AS LAST_UPD_DTM ")
						.append("  FROM ")
						.append("(");
				sql_Buff.append("SELECT ")
						.append("    KK2081.MSKM_PNY_TPPV_NO AS MSKM_NO ")					// 申込番号
						.append("    ,'999' AS MSKM_STAT ")									// 申込ステータス
						.append("    ,( SELECT ")											// 申込ステータス名称
						.append("           ZM0171.CD_DIV_NM ")
						.append("       FROM ")
						.append("           ZM_M_CD_NM_KANRI ZM0171 ")
						.append("       WHERE ")
						.append("           ZM0171.CD_SBT_CD = ? ")
						.append("       AND ZM0171.CD_DIV = ? ")
						.append("       AND ZM0171.CD_TSTAYMD <= ? ")
						.append("       AND ZM0171.CD_TENDYMD >= ? ")
						.append("       AND ZM0171.MK_FLG =? ")
						.append("     ) AS MSKM_STAT_NM ")
						.append("    ,'01' AS CONSMBSN_MSKM_STAT_SKBT_CD ")					// コンシューマ営業用申込状態識別コード
						.append("    ,( SELECT ")											// コンシューマ営業用申込状態識別コード名称
						.append("           ZM0171.CD_DIV_NM ")
						.append("       FROM ")
						.append("           ZM_M_CD_NM_KANRI ZM0171 ")
						.append("       WHERE ")
						.append("           ZM0171.CD_SBT_CD = ? ")
						.append("       AND ZM0171.CD_DIV = ? ")
						.append("       AND ZM0171.CD_TSTAYMD <= ? ")
						.append("       AND ZM0171.CD_TENDYMD >= ? ")
						.append("       AND ZM0171.MK_FLG =? ")
						.append("     ) AS CONSMBSN_MSKM_STAT_SKBT_CD_NM ")
						.append("    ,KK2081.MSKM_PDING_UK_YMD AS MSKM_YMD ")				// 申込年月日
						.append("    ,KK2081.MSKM_PNY_TPPV_NO AS MSKM_NO_PDING_NO ")		// 申込番号＿保留番号
						.append("    ,( CASE WHEN KK2081.ADD_MOTO_SVC_KEI_NO IS NULL ")		// 異動区分
						.append("            THEN '00001' ")
						.append("            ELSE '00002' ")
						.append("            END ")
						.append("     ) AS IDO_DIV ")
						.append("    ,'' AS MSKMSHO_NO ")									// 申込書番号
						.append("    ,KK2081.CUST_NM AS CUST_NM ")							// お客様名
						.append("    ,KK2081.CUST_KANA AS CUST_KANA ")						// お客様カナ名
						.append("    ,KK2081.KEISHA_TELNO AS KEISHA_TELNO ")				// 契約者電話番号
						.append("    ,KK2081.MSKM_UK_USER_ID AS MSKM_UK_TNT_USER_ID ")		// 申込受付担当ユーザーID
						.append("    ,KK2081.UPD_DTM AS UPD_DTM ")							// 申込更新年月日時分秒
						.append("    ,'' AS MSKM_CANCEL_RSN_CD ")							// 申込キャンセル理由コード
						.append("    ,KK2081.JKYO_TYPE_SKBT_CD AS MSKMSHO_SBT_CD ")			// 申込書種別コード
						.append("    , KK2081.USE_KISN_CD AS USE_KISN_CD  ")				//利用回線コード
						.append("    , KK2081.ADD_MOTO_SVC_KEI_NO AS ADD_MOTO_SVC_KEI_NO  ")//追加元サービス契約番号
						.append("    , KK2081.ADD_MT_SYSID AS SYSID  ")						//追加元SYSID
						.append("    , '00' AS MSKM_JOTAI ");					

				// SELECT句（保留）のバインド値をセット
				bindValOfPnyList.addAll(Arrays.asList(new String[] {
						// ANK-4427-00-00 ADD START
						opeDate, opeDate, opeDate,
						// ANK-4427-00-00 ADD END
						CD00760, JKKStrConst.CD00760_01, opeDate, opeDate, JKKStrConst.CD00016_0, 
						CD00760, JKKStrConst.CD00760_01, opeDate, opeDate, JKKStrConst.CD00016_0}));

				// FROM句 （保留）
				sql_Buff.append("FROM ")
						.append("    KK_T_MSKM_PNY_TPPV KK2081 ");							// 申込保留内容一時保存スキーマ

				// SQL文_基本部1
				StringBuffer sqlWhere = new StringBuffer();
				// 申込保留内容一時保存スキーマの検索条件を追加
				setWhereJknOfPny(inMsg, sqlWhere, bindValOfPnyList);

				if (sqlWhere.length() > 0)
				{
					// WHERE句 （保留）
					sql_Buff.append("WHERE ");
					sql_Buff.append(sqlWhere.toString());
				//申込保留内容設定コードの結合
					sql_Buff.append(")  MPNY_TPPV ")
					.append("LEFT OUTER JOIN KK_T_MPNY_SETCD_TPPV KK2231 ")
					.append("             ON KK2231.MSKM_PNY_TPPV_NO = MPNY_TPPV.MSKM_NO ")
					.append("            AND KK2231.SET_SBT_CD = '050' ")
					.append("            AND KK2231.MK_FLG = '0' ");
					
// ANK-4468-00-01 MOD START
//					// ANK-4468-00-00 ADD START
//					sql_Buff.append("    INNER JOIN KK_T_MSKM_DTL KK0021 ") // 申込明細スキーマ
//					.append("    ON KK0021.MSKM_NO = MPNY_TPPV.MSKM_NO ")
//					.append("    AND KK0021.GENE_ADD_DTM = ")
//					.append("        (SELECT MAX(KK0021_GENE.GENE_ADD_DTM) AS KK0021_MAX ")
//					.append("        FROM KK_T_MSKM_DTL KK0021_GENE ")
//					.append("        WHERE KK0021_GENE.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ")
//					.append("        AND KK0021_GENE.MK_FLG = ? ")
//					.append("        GROUP BY KK0021_GENE.MSKM_NO) ")
//					.append("    INNER JOIN KK_T_SVC_KEI KK0081 ") // サービス契約スキーマ
//					.append("    ON KK0081.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ")
//					.append("    AND KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ")
//					.append("        (SELECT  MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ")
//					.append("        FROM KK_T_SVC_KEI KK0081_GENE ")
//					.append("        WHERE KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
//					.append("        AND KK0081_GENE.RSV_APLY_YMD <= ? ")
//					.append("        AND KK0081_GENE.RSV_APLY_CD = ? ")
//					.append("        AND KK0081_GENE.MK_FLG = ?) ");
//					// 申込明細スキーマのバインド値をセット,サービス契約スキーマ
//					bindValOfPnyList.addAll(Arrays.asList(new String[] {JKKStrConst.CD00016_0, opeDate, JKKStrConst.CD00343_2, JKKStrConst.CD00016_0}));
					
					sql_Buff.append("LEFT OUTER JOIN KK_T_MPNY_SVKEI_TPPV KK2211 ") // 申込保留内容サービス契約一時保存スキーマ
					.append("    ON KK2211.MSKM_PNY_TPPV_NO = MPNY_TPPV.MSKM_NO ")
// #87256 水平展開対応 20250603 星野 MOD START
//// ANK-4468-00-01 ADD START
//					.append("    AND KK2211.PCRS_CD IN ('A97', 'A99') ")
//// ANK-4468-00-01 ADD END
					.append("    AND KK2211.PCRS_CD IN ('A97','A99','AA0','AA1','AA2','AA3','AA4','AB0','AB1','AB2','AB3','AB4') ")
// #87256 水平展開対応 20250603 星野 MOD END
					.append("    AND KK2211.MK_FLG = '0'");

					// ANK-4468-00-00 ADD END
// ANK-4468-00-01 MOD END
				}
			}
				
			sql_Buff.append(") TBL1 ");
			
			//=================================================================
			// 対象件数を取得するprepareStatementにSQL文をセット
			//=================================================================
			StringBuffer sqlCnt = new StringBuffer();
			sqlCnt.append("SELECT COUNT(*) CNT FROM (")
				.append(sql_Buff.toString())
				.append(") TBL2 ");
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sqlCnt.toString());
			
			//prepareStatementにSQL文をセット
			pstmt1 = con1.prepareStatement(sqlCnt.toString());

			setParam(pstmt1, inMsg, bindValOfMskmList, bindValOfPnyList);
			
			// ResultSetの取得
			rsltQuery1 = pstmt1.executeQuery();
			rsltQuery1.next();

			// EKK0011B504CBSMsgの明細にセットする項目
			String[] msgKeyListForPaging = {
					EKK0011B504CBSMsg.TOTAL_SEARCH_NUM
			};
			mapMessage(rsltQuery1, msgKeyListForPaging, inMsg);

			// 総ページ数設定
			int totalSearchNum = Integer.parseInt(inMsg.getString(EKK0011B504CBSMsg.TOTAL_SEARCH_NUM));
			int iDispNum = Integer.parseInt(inMsg.getString(EKK0011B504CBSMsg.DISPLAY_NUM));
			int iSearchDivDisp =  totalSearchNum / iDispNum;
			int iRest =  totalSearchNum % iDispNum;

			// 割り切れない場合は総ページ数を増やす
			if (0 != iRest)
			{
				iSearchDivDisp = iSearchDivDisp + 1;
			}
			inMsg.set(EKK0011B504CBSMsg.TOTAL_PAGE_NUM, Integer.toString(iSearchDivDisp));

			//検索結果件数が0件
			if (totalSearchNum == 0)
			{
				inMsg.set(EKK0011B504CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_ZERO);
				return;
			}

			//検索結果件数が最大検索件数を超えた場合
			if (totalSearchNum > Integer.parseInt(inMsg.getString(EKK0011B504CBSMsg.MAX_SEARCH_NUM)))
			{
				inMsg.set(EKK0011B504CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_OVERMAX);
				return;
			}
			
			// 表示ページに該当するデータがない場合
			int iDispPageNum = Integer.parseInt(inMsg.getString(EKK0011B504CBSMsg.DISPLAY_PAGE_NUM));
			int iStartNum = iDispNum * (iDispPageNum - 1) + 1;
			int iEndNum = iDispNum * iDispPageNum;
			if (iSearchDivDisp < iDispPageNum)
			{
				inMsg.set(EKK0011B504CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_NODATA);
				return;
			}
			
			addOrderby(inMsg, sql_Buff);
			
			StringBuffer sqlExe = new StringBuffer();
			sqlExe.append(" SELECT * FROM ( SELECT TBL2.*,ROWNUM AS ROWNO FROM ( ")
					.append(sql_Buff.toString())
					.append(" ) TBL2 ) TBL3 WHERE TBL3.ROWNO BETWEEN ? AND ? ");

			pstmt2 = con1.prepareStatement(sqlExe.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sqlExe);
			
			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			int index = setParam(pstmt2, inMsg, bindValOfMskmList, bindValOfPnyList);
			
			// パラメータの設定(画面表示データ開始レコード行を指定)
			CAANJDBCUtil.setParam(pstmt2, index++, iStartNum);

			// パラメータの設定(画面表示データ終了レコード行を指定)
			CAANJDBCUtil.setParam(pstmt2, index++, iEndNum);
			
			// ResultSetの取得
			rsltQuery2 = pstmt2.executeQuery();
			
			// EKK0011B504CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  EKK0011B504CBSMsg4List.MSKM_NO
					, EKK0011B504CBSMsg4List.MSKM_STAT
					, EKK0011B504CBSMsg4List.MSKM_STAT_NM
					, EKK0011B504CBSMsg4List.CONSMBSN_MSKM_STAT_SKBT_CD
					, EKK0011B504CBSMsg4List.CONSMBSN_MSKM_STAT_SKBT_CD_NM
					, EKK0011B504CBSMsg4List.MSKM_YMD
					, EKK0011B504CBSMsg4List.MSKM_NO_PDING_NO
					, EKK0011B504CBSMsg4List.IDO_DIV
					, EKK0011B504CBSMsg4List.MSKMSHO_NO
					, EKK0011B504CBSMsg4List.ORDERING_SVC_CHOICE_CD
					, EKK0011B504CBSMsg4List.AGNT_CD
					, EKK0011B504CBSMsg4List.CUST_NM
					, EKK0011B504CBSMsg4List.CUST_KANA
					// ANK-4468-00-00 ADD START
					, EKK0011B504CBSMsg4List.PCRS_CD
					// ANK-4468-00-00 ADD END
					// ANK-4427-00-00 ADD START
					, EKK0011B504CBSMsg4List.NTTORS_DIV
					// ANK-4427-00-00 ADD END
					, EKK0011B504CBSMsg4List.KEISHA_TELNO
					, EKK0011B504CBSMsg4List.MSKM_UK_TNT_USER_ID
					, EKK0011B504CBSMsg4List.MSKM_UPD_DTM
					, EKK0011B504CBSMsg4List.MSKM_CANCEL_RSN_CD
					, EKK0011B504CBSMsg4List.MSKMSHO_SBT_CD
					, EKK0011B504CBSMsg4List.USE_KISN_CD
					, EKK0011B504CBSMsg4List.ADD_MOTO_SVC_KEI_NO
					, EKK0011B504CBSMsg4List.SYSID
					, EKK0011B504CBSMsg4List.LAST_UPD_DTM
			};
			
			// 明細に処理結果(ResultSet)をマッピング
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery2, msgKeyList1, "eo.ejb.cbs.cbsmsg.EKK0011B504CBSMsg4List", 0);
			
			for (CAANMsg msg : outMsg1)
			{
				String lastUpdDtm = null;
				// 検索結果に"申込番号"が設定されている、かつ、申込ステータスが保留データ以外のだった場合
				if (!msg.isNull(EKK0011B504CBSMsg4List.MSKM_NO) && !"999".equals(msg.getString(EKK0011B504CBSMsg4List.MSKM_STAT)))
				{
					lastUpdDtm = new JKKejbExclusiveProcKK0011().getLastUpdDtmMskmNo(inMsg,
							msg.getString(EKK0011B504CBSMsg4List.MSKM_NO));
				}
				
				// 取得した最大最終更新年月日時分秒を設定
				msg.set(EKK0011B504CBSMsg4List.LAST_UPD_DTM, lastUpdDtm);
			}
			
			// inMsg(CBSMsg)に明細をセット
			inMsg.set("EKK0011B504CBSMsg4List", outMsg1);
			

		} catch(SQLException e) {
			inMsg.set(EKK0011B504CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} finally {
			// 資源の解放
			try{
				if (rsltQuery1 != null)
				{
					rsltQuery1.close();
				}
				if (rsltQuery2 != null)
				{
					rsltQuery2.close();
				}
				if (pstmt1 != null)
				{
					pstmt1.close();
				}
				if (pstmt2 != null)
				{
					pstmt2.close();
				}
				if (con1 != null)
				{
					closeConnection(con1);
				}
			}catch(SQLException e){
				inMsg.set(EKK0011B504CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * パラメータの設定を行います。
	 * <br/>
	 * @param pstmt 			プリペアステートメント
	 * @param inMsg 			入力値の格納されたCBSMsg
	 * @param bindValMskmList	ＳＱＬ（保留以外）のバインド格納値リスト
	 * @param bindValPnyList	ＳＱＬ（保留）のバインド格納値リスト
	 * @return 最後に設定したパラメータの番号
	 * @throws SQLException 例外
	 */
	private int setParam(PreparedStatement pstmt, CAANMsg inMsg, 
			ArrayList<String> bindValMskmList, ArrayList<String> bindValPnyList) throws SQLException
	{
		int index = 1;

		// ＳＱＬ（保留以外）のバインド値を設定
		if (isSearchNotPendingData(inMsg))
		{
			for (String bindValue : bindValMskmList)
			{
				CAANJDBCUtil.setParam(pstmt, index++, bindValue);
			}
		}

		// ＳＱＬ（保留）のバインド値を設定
		if (isSearchPendingData(inMsg))
		{
			for (String bindValue : bindValPnyList)
			{
				CAANJDBCUtil.setParam(pstmt, index++, bindValue);
			}
		}

		return index;
	}

	/**
	 * 申込断面スキーマの検索条件を設定します。<br>
	 * @param inMsg					入力値の格納されたCBSMsg
	 * @param sqlBuff				クエリー
	 * @param bindValOfMskmList		バインド値格納リスト
	 */
	private void setWhereJknOfMskmDmen(CAANMsg inMsg, StringBuffer sqlBuff, ArrayList<String> bindValOfMskmList)
	{
		StringBuffer sqlWhere = new StringBuffer();

		String opeDate = inMsg.getString(EKK0011B504CBSMsg.KEY_UNYO_YMD);

		// 1.受付番号が入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKMSHO_NO, inMsg)) 
		{
			sqlWhere.append(" KK2501_IN.MSKMSHO_NO = ? ");
			bindValOfMskmList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_MSKMSHO_NO));
		}

		// 2.取扱コードが入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_AGNT_CD, inMsg))
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" ( KK2501_IN.AGNT_CD_1_1 = ? OR KK2501_IN.AGNT_CD_1_2 = ? OR KK2501_IN.AGNT_CD_2_1 = ? OR KK2501_IN.AGNT_CD_2_2 = ? ) ");

			for (int i = 0; i < 4; i++)
			{
				bindValOfMskmList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_AGNT_CD));
			}
		}

		// 3.受付担当グループ Ｍ社、Ｉ社、ＫＣ社、Ｔ社、Ｂ社、Ｋ社のいずれかが選択されている場合
		if (isSearchTrgt(inMsg, 0))
		{
			StringBuffer grpJoken = new StringBuffer();
			
			grpJoken.append("   EXISTS ( SELECT ")
					.append("                '1' ")
					.append("            FROM ")
					.append("                ZM_M_WORK_PARAM_KNRI ZM0321_IN ")
					.append("            WHERE ")
					.append("                ZM0321_IN.WORK_PARAM_ID IN (");

			// 業務パラメータ管理. 業務パラメータID への IN 句の設定 ---------------------------------------
			setInParamOfWhereCondition(
					grpJoken, getTrgtKmkInputUmList(inMsg, 0), getTrgtKmkValueList(inMsg, 0), bindValOfMskmList);

			grpJoken.append(") ")
					.append("              AND ZM0321_IN.WORK_PARAM_TSTAYMD <= ?")
					.append("              AND ZM0321_IN.WORK_PARAM_TENDYMD >= ?")
					.append("              AND ZM0321_IN.WORK_PARAM_SETTE_VALUE IN (KK2501_IN.AGNT_CD_1_1, KK2501_IN.AGNT_CD_1_2, KK2501_IN.AGNT_CD_2_1, KK2501_IN.AGNT_CD_2_2) ")
					.append("              AND ZM0321_IN.MK_FLG = ? ) ");

			bindValOfMskmList.addAll(Arrays.asList(new String[] {opeDate, opeDate, JKKStrConst.CD00016_0}));

			boolean chkRyohan = isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_RYO_FLG, inMsg);
			boolean chkHouhan = isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_HOU_FLG, inMsg);
			String mskmPattern = inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_PATTERN);

			// 申込パターンの【本申込】が選択されていて、申込形態の量販、訪販のいずれかが選択されている場合 ----------------
			if (MSKM_PATTERN_HON.equals(mskmPattern) && (chkRyohan || chkHouhan))
			{
				// 申込受付種別コード の 条件を追加
				grpJoken.append(" OR KK2501_IN.MKM_UK_SBT_CD ");

				if (chkRyohan && chkHouhan)
				{
					grpJoken.append("IN (?,?) ");
					
					bindValOfMskmList.add(JKKStrConst.CD01270_2);
					bindValOfMskmList.add(JKKStrConst.CD01270_5);
				} 
				else if (chkRyohan)
				{
					grpJoken.append("= ? ");

					bindValOfMskmList.add(JKKStrConst.CD01270_2);
				}
				else if (chkHouhan)
				{
					grpJoken.append("= ? ");

					bindValOfMskmList.add(JKKStrConst.CD01270_5);
				}
			}

			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append("( " + grpJoken.toString() + " ) ");
		}

		// 4. 申込形態のいずれかが入力されている場合
		if (isSearchTrgt(inMsg, 1))
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append("KK2501_IN.MKM_UK_SBT_CD IN (");

			setInParamOfWhereCondition(
					sqlWhere, getTrgtKmkInputUmList(inMsg, 1), getTrgtKmkValueList(inMsg, 1), bindValOfMskmList);

			sqlWhere.append(") ");
		}

		// 5. タイプのいずれかが入力されている場合
		if (isSearchTrgt(inMsg, 2))
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append("KK2501_IN.MSKMSHO_SBT_CD IN (");

			setInParamOfWhereCondition(sqlWhere, getTrgtKmkInputUmList(inMsg, 2), getTrgtKmkValueList(inMsg, 2), bindValOfMskmList);

			sqlWhere.append(") ");
		}

		// 6. サービスのいずれかが入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_ORDERING_SVC_CHOICE_CD, inMsg))
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append("KK2501_IN.ORDERING_SVC_CHOICE_CD IN (");

			String orderingSvcChoiceCd = inMsg.getString(EKK0011B504CBSMsg.KEY_ORDERING_SVC_CHOICE_CD);

			String[] orderingSvcChoiceCds = orderingSvcChoiceCd.split(",");

			setInParamOfWhereCondition(sqlWhere, orderingSvcChoiceCds, bindValOfMskmList);

			sqlWhere.append(") ");
		}

		// 7. 契約者氏名/法人名が入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_CUST_KANA, inMsg))
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK2501_IN.CUST_KANA LIKE ? || '%' ");

			bindValOfMskmList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_CUST_KANA));
		}

		// 8. 電話番号が入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKM_RRKS_TELNO, inMsg))
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK2501_IN.KEISHA_TELNO = ? ");

			bindValOfMskmList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_RRKS_TELNO));
		}
		
		// 9. 申込区分が入力されている場合
		boolean mskmKbnNew = isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_IDO_DIV_NEW_FLG, inMsg);
		boolean mskmKbnAdd = isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_IDO_DIV_ADD_FLG, inMsg);

		if (mskmKbnNew || mskmKbnAdd)
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append("KK2501_IN.NEW_ADD_SKBT_FLG ");

			if (mskmKbnNew && mskmKbnAdd)
			{
				sqlWhere.append("IN (?,?) ");
				
				bindValOfMskmList.add(JKKStrConst.CD00587_1);
				bindValOfMskmList.add(JKKStrConst.CD00587_2);
			} 
			else if (mskmKbnNew)
			{
				sqlWhere.append("= ? ");

				bindValOfMskmList.add(JKKStrConst.CD00587_1);
			}
			else if (mskmKbnAdd)
			{
				sqlWhere.append("= ? ");

				bindValOfMskmList.add(JKKStrConst.CD00587_2);
			}
		}

		sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
				.append("KK2501_IN.MK_FLG = ? ");
		
		bindValOfMskmList.add(JKKStrConst.CD00016_0);
		
		if (sqlWhere.length() > 0)
		{
			sqlBuff.append(sqlWhere.toString());
		}
	}

	/**
	 * 申込スキーマの検索条件を設定します。<br>
	 * @param inMsg					入力値の格納されたCBSMsg
	 * @param sqlBuff				クエリー
	 * @param bindValOfMskmList		バインド値格納リスト
	 */
	private void setWhereJknOfMskm(CAANMsg inMsg, StringBuffer sqlBuff, ArrayList<String> bindValOfMskmList)
	{
		StringBuffer sqlWhere = new StringBuffer();

		// 1. 状態のいずれかが入力されている場合
		if (isSearchTrgt(inMsg, 4))
		{
			boolean inputFlg = false;
			
			sqlWhere.append(" ( ");

			// 1-1.状態の申請中が選択されている場合
			if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHINSEI_FLG, inMsg))
			{
				sqlWhere.append(" ( KK0011_IN.MSKM_STAT = ? AND KK0011_IN.CONSMBSN_MSKM_STAT_SKBT_CD = ? ) ");

				bindValOfMskmList.add(JKKStrConst.CD00060_100);
				bindValOfMskmList.add(JKKStrConst.CD00760_03);
				
				inputFlg = true;
			}

			// 1-2.状態の承認済が選択されている場合
			if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHONIN_FLG, inMsg))
			{
				sqlWhere.append(!inputFlg ? "" : " OR ")
						.append(" ( KK0011_IN.MSKM_STAT = ? ) ");

				bindValOfMskmList.add(JKKStrConst.CD00060_130);
				inputFlg = true;
			}

			// 1-3.状態の差戻中が選択されている場合
			if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_RTRN_FLG, inMsg))
			{
				sqlWhere.append(!inputFlg ? "" : " OR ")
						.append(" ( KK0011_IN.MSKM_STAT = ? AND KK0011_IN.CONSMBSN_MSKM_STAT_SKBT_CD = ? ) ");

				bindValOfMskmList.add(JKKStrConst.CD00060_100);
				bindValOfMskmList.add(JKKStrConst.CD00760_02);
				inputFlg = true;
			}

			// 1-4.状態の破棄済が選択されている場合
			if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_ABDMNT_FLG, inMsg))
			{
				sqlWhere.append(!inputFlg ? "" : " OR ")
						.append(" ( KK0011_IN.MSKM_STAT = ? AND KK0011_IN.MSKM_CANCEL_RSN_CD = ? ) ");

				bindValOfMskmList.add(JKKStrConst.CD00060_920);
				bindValOfMskmList.add(JKKStrConst.CD01254_10);
			}

			sqlWhere.append(" ) ");
		}

		// 2. 受付担当者IDが入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKM_UK_TNT_USER_ID, inMsg)) 
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK0011_IN.MSKM_UK_TNT_USER_ID = ? ");

			bindValOfMskmList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_UK_TNT_USER_ID));
		}

		// 3. 申込年月日（前）が入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKM_YMD_STA, inMsg)) 
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK0011_IN.MSKM_YMD >= ? ");

			bindValOfMskmList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_YMD_STA));
		}

		// 4. 申込年月日（後）が入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKM_YMD_END, inMsg)) 
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK0011_IN.MSKM_YMD <= ? ");

			bindValOfMskmList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_YMD_END));
		}

		// 5. 申込パターンが入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKM_PATTERN, inMsg)) 
		{
			String mskmPattern = inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_PATTERN);

			// 申込パターンの【本申込】が選択されている場合
			if (MSKM_PATTERN_HON.equals(mskmPattern))
			{
				sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
						.append(" KK0011_IN.KARI_MSKM_FLG IS NULL ");
			}
			// 申込パターンの【仮申込→本申込】が選択されている場合
			else if (MSKM_PATTERN_KARIHON.equals(mskmPattern))
			{
				sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
						.append(" KK0011_IN.KARI_MSKM_FLG = ? ");

				bindValOfMskmList.add(JKKStrConst.KARI_MSKM_FLG_HON_MSKM);
			}
		}

		sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
				.append(" ( KK0011_IN.MSKM_NO ,KK0011_IN.GENE_ADD_DTM ) = ( SELECT ")
				.append("                                                       KK0011_GENE.MSKM_NO ")
				.append("                                                       ,MAX(KK0011_GENE.GENE_ADD_DTM) ")
				.append("                                                   FROM ")
				.append("                                                       KK_T_MSKM KK0011_GENE ")
				.append("                                                   WHERE ")
				.append("                                                       KK0011_GENE.MSKM_NO = KK0011_IN.MSKM_NO ")
				.append("                                                   AND KK0011_GENE.MK_FLG = ? ")
				.append("                                                   GROUP BY ")
				.append("                                                       KK0011_GENE.MSKM_NO ) ");

		bindValOfMskmList.add(JKKStrConst.CD00016_0);

		if (sqlWhere.length() > 0)
		{
			sqlBuff.append(sqlWhere.toString());
		}
	}

	/**
	 * 申込保留内容一時保存スキーマの検索条件を設定します。<br>
	 * @param inMsg					入力値の格納されたCBSMsg
	 * @param sqlBuff				クエリー
	 * @param bindValOfPnyList		バインド値格納リスト
	 */
	private void setWhereJknOfPny(CAANMsg inMsg, StringBuffer sqlBuff, ArrayList<String> bindValOfPnyList)
	{
		StringBuffer sqlWhere = new StringBuffer();

		// 1. 申込保留キー（前）が入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKM_NO_BF, inMsg)) 
		{
			sqlWhere.append(" KK2081.MSKM_PNY_TPPV_NO >= ? ");

			bindValOfPnyList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_NO_BF));
		}

		// 2. 申込保留キー（後）が入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKM_NO_AF, inMsg)) 
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK2081.MSKM_PNY_TPPV_NO <= ? ");

			bindValOfPnyList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_NO_AF));
		}

		// 3. 受付担当者IDが入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKM_UK_TNT_USER_ID, inMsg)) 
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK2081.MSKM_UK_USER_ID = ? ");

			bindValOfPnyList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_UK_TNT_USER_ID));
		}

		// 4. 申込年月日（前）が入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKM_YMD_STA, inMsg)) 
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK2081.MSKM_PDING_UK_YMD >= ? ");

			bindValOfPnyList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_YMD_STA));
		}

		// 5. 申込年月日（後）が入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKM_YMD_END, inMsg)) 
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK2081.MSKM_PDING_UK_YMD <= ? ");

			bindValOfPnyList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_YMD_END));
		}

		boolean mskmKbnNew = isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_IDO_DIV_NEW_FLG, inMsg);
		boolean mskmKbnAdd = isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_IDO_DIV_ADD_FLG, inMsg);
		
		// 6. 申込区分の【新規】が選択されていて、申込区分の【追加】が選択されていない場合
		if (mskmKbnNew && !mskmKbnAdd) 
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK2081.ADD_MOTO_SVC_KEI_NO IS NULL ");
		}
		// 7. 申込区分の【追加】が選択されていて、申込区分の【新規】が選択されていない場合
		else if (!mskmKbnNew && mskmKbnAdd) 
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK2081.ADD_MOTO_SVC_KEI_NO IS NOT NULL ");
		}

		// 8. タイプのいずれかが入力されている場合
		if (isSearchTrgt(inMsg, 2))
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK2081.JKYO_TYPE_SKBT_CD IN (");

			setInParamOfWhereCondition(
					sqlWhere, getTrgtKmkInputUmList(inMsg, 2), getTrgtKmkValueList(inMsg, 2), bindValOfPnyList);

			sqlWhere.append(") ");
		}

		// 9. 契約者氏名/法人名が入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_CUST_KANA, inMsg))
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK2081.CUST_KANA LIKE ? || '%' ");

			bindValOfPnyList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_CUST_KANA));
		}

		// 10. 電話番号が入力されている場合
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKM_RRKS_TELNO, inMsg))
		{
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(" KK2081.KEISHA_TELNO = ? ");

			bindValOfPnyList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_MSKM_RRKS_TELNO));
		}

		boolean grpCheckUm = isSearchTrgt(inMsg, 0);
		boolean agntCdInputUm = isInputKeyTextOn(EKK0011B504CBSMsg.KEY_AGNT_CD, inMsg);
		
		// 11. 受付担当グループ、取扱コードののいずれかが入力されている場合
		if (grpCheckUm || agntCdInputUm)
		{
			StringBuffer grpJoken = new StringBuffer();

			grpJoken.append(" EXISTS ( SELECT ")
					.append("              '1' ")
					.append("          FROM ")
					.append("              KK_T_MPNY_SETCD_TPPV KK2231 ")	// 申込保留内容設定コード一時保存スキーマ
					.append("          WHERE ")
					.append("              KK2231.SET_SBT_CD = ? ")
					.append("          AND KK2231.MSKM_PNY_TPPV_NO = KK2081.MSKM_PNY_TPPV_NO ");

			bindValOfPnyList.add(JKKStrConst.CD01356_010);

			grpJoken.append(getSetCdJkn(inMsg, grpCheckUm, agntCdInputUm, bindValOfPnyList))
					.append("          AND KK2231.MK_FLG = ? ) ");

			bindValOfPnyList.add(JKKStrConst.CD00016_0);
			
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(grpJoken.toString());
		}
		
		// 12. サービスのいずれかが入力されている場合
		if (isSearchTrgt(inMsg, 3))
		{
			StringBuffer svcJoken = new StringBuffer();

			svcJoken.append(" EXISTS ( SELECT ")
					.append("              '1' ")
					.append("          FROM ")
					.append("              KK_T_MPNY_SVKEI_TPPV KK2211 ")	// 申込保留内容サービス契約一時保存スキーマ
					.append("          WHERE ")
					.append("              KK2211.MSKM_PNY_TPPV_NO = KK2081.MSKM_PNY_TPPV_NO ")
					.append("          AND KK2211.MSKM_TG_SVC_SBT_CD IN (");
			
			setInParamOfWhereCondition(
					svcJoken, getTrgtKmkInputUmList(inMsg, 3), getTrgtKmkValueList(inMsg, 3), bindValOfPnyList);

			svcJoken.append("              )")
					.append("          AND KK2211.PRC_GRP_CD IS NOT NULL ")
					.append("          AND KK2211.MK_FLG = ? ) ");
			
			bindValOfPnyList.add(JKKStrConst.CD00016_0);
			
			sqlWhere.append(sqlWhere.length() == 0 ? "" : " AND ")
					.append(svcJoken.toString());
		}

		if (sqlWhere.length() > 0)
		{
			sqlBuff.append(sqlWhere.toString());
		}
	}
	
	/**
	 * 申込保留内容設定コード一時保存スキーマの設定コードに対する検索条件を取得します。<br>
	 * @param inMsg					入力値の格納されたCBSMsg
	 * @param grpCheckUm			受付担当グループ入力有無
	 * @param agntCdInputUm			取扱コード入力有無
	 * @param bindValOfPnyList		バインド値格納リスト
	 * @return	設定コードに対する検索条件
	 */
	private String getSetCdJkn(CAANMsg inMsg, 
			boolean grpCheckUm, boolean agntCdInputUm, ArrayList<String> bindValOfPnyList)
	{
		String opeDate = inMsg.getString(EKK0011B504CBSMsg.KEY_UNYO_YMD);

		StringBuffer sqlWhere = new StringBuffer();
		StringBuffer sqlWhereGrp = new StringBuffer();
		StringBuffer sqlWhereAgnt = new StringBuffer();

		sqlWhere.append(" AND ");

		//  受付担当グループが入力されている場合
		if (grpCheckUm)
		{
			sqlWhereGrp
					.append(" KK2231.SET_CD IN ( SELECT ")
					.append("                        ZM0321.WORK_PARAM_SETTE_VALUE ")
					.append("                    FROM ")
					.append("                        ZM_M_WORK_PARAM_KNRI ZM0321 ")
					.append("                    WHERE ")
					.append("                        ZM0321.WORK_PARAM_ID IN (");

			// 業務パラメータ管理. 業務パラメータID への IN 句の設定 ---------------------------------------
			setInParamOfWhereCondition(sqlWhereGrp, getTrgtKmkInputUmList(inMsg, 0), getTrgtKmkValueList(inMsg, 0), bindValOfPnyList);

			sqlWhereGrp
					.append(") ")
					.append("                    AND ZM0321.WORK_PARAM_TSTAYMD <= ?")
					.append("                    AND ZM0321.WORK_PARAM_TENDYMD >= ?")
					.append("                    AND ZM0321.MK_FLG = ? ) ");

			bindValOfPnyList.addAll(Arrays.asList(new String[] {opeDate, opeDate, JKKStrConst.CD00016_0}));
		}

		//  取扱コードが入力されている場合
		if (agntCdInputUm)
		{
			sqlWhereAgnt.append(" KK2231.SET_CD = ? ");

			bindValOfPnyList.add(inMsg.getString(EKK0011B504CBSMsg.KEY_AGNT_CD));
		}

		//  受付担当グループと取扱コードが入力されている場合
		if (grpCheckUm && agntCdInputUm)
		{
			sqlWhere.append(sqlWhereGrp.toString())
					.append(" OR ")
					.append(sqlWhereAgnt.toString());
		}
		//  受付担当グループに入力があり、取扱コードは未入力の場合
		else if (grpCheckUm && !agntCdInputUm)
		{
			sqlWhere.append(sqlWhereGrp.toString());
		}
		//  受付担当グループが未入力で、取扱コードが入力ありの場合
		else if (!grpCheckUm && agntCdInputUm)
		{
			sqlWhere.append(sqlWhereAgnt.toString());
		}

		return sqlWhere.toString();
	}

	/**
	 * 条件のIN句に絞込み条件を設定します。
	 * @param inWhere			編集するクエリー
	 * @param targetItems		修正有無
	 * @param setIemValue		INに格納する、修正有の項目の絞込み条件値
	 * @param bindValOfMskmList	バインド値格納リスト
	 */
	private void setInParamOfWhereCondition(
			StringBuffer inWhere, boolean[] targetItems, String[] setIemValue, ArrayList<String> bindValOfMskmList)
	{
		boolean chkFlg = false;
		
		for (int i = 0; i < targetItems.length; i++)
		{
			boolean grpItem = targetItems[i];

			if (grpItem) 
			{
				if (chkFlg)
				{
					inWhere.append(",");
				}

				inWhere.append("?");

				bindValOfMskmList.add(setIemValue[i]);
				
				chkFlg = true;
			}
		}
	}
	
	/**
	 * 条件のIN句に絞込み条件を設定します。
	 * @param inWhere			編集するクエリー
	 * @param setIemValue		INに格納する、絞込み条件値
	 * @param bindValOfMskmList	バインド値格納リスト
	 */
	private void setInParamOfWhereCondition(
			StringBuffer inWhere, String[] setIemValue, ArrayList<String> bindValOfMskmList)
	{
		boolean chkFlg = false;
		
		for (int i = 0; i < setIemValue.length; i++)
		{
			if (chkFlg)
			{
				inWhere.append(",");
			}

			inWhere.append("?");

			bindValOfMskmList.add(setIemValue[i]);
			
			chkFlg = true;
		}
	}

	/**
	 * ORDER BY句の追加設定
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @param sql SQL文
	 */
	private void addOrderby(CAANMsg inMsg, StringBuffer sql)
	{
		String sortItemNo = inMsg.getString(EKK0011B504CBSMsg.KEY_SORT_ITEM_NO);
		String sortDiv = inMsg.getString(EKK0011B504CBSMsg.KEY_SORT_DIV);
		String sort = " ASC ";
		if ("2".equals(sortDiv))
		{
			sort = " DESC ";
		}

		sql.append(" ORDER BY ");

		if ("1".equals(sortItemNo))
		{
			sql.append(" TBL1.MSKM_YMD ").append(sort);
		}
		else if ("2".equals(sortItemNo))
		{
			sql.append(" TBL1.MSKMSHO_NO ").append(sort);
		}
		else
		{
			sql.append(" TBL1.MSKM_JOTAI ASC ")
				.append(" , TBL1.MSKM_YMD ASC ")
				.append(" , TBL1.MSKM_NO_PDING_NO ASC ");
		}
		
	}
	
	/**
	 * 保留以外のデータを検索対象とするかを判断します。
	 * <br/>
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @return 保留以外のデータを検索対象とする場合true
	 */
	private boolean isSearchNotPendingData(CAANMsg inMsg)
	{
		// 破棄済を検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_ABDMNT_FLG, inMsg))
		{
			return true;
		}
		
		// 差戻中を検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_RTRN_FLG, inMsg))
		{
			return true;
		}
		
		// 申請中を検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHINSEI_FLG, inMsg))
		{
			return true;
		}
		
		// 承認済を検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHONIN_FLG, inMsg))
		{
			return true;
		}

		// 保留中のみを検索する場合は保留以外のデータは検索対象外
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_PDING_FLG, inMsg))
		{
			return false;
		}
		
		// 状態がすべて未選択の場合は検索
		return true;
	}
	
	/**
	 * 検索条件申込明細ステータスの受付済判定。
	 * <br/>
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @return 判定結果
	 */
	private boolean isSearchMskmDtlStatUkeZumi(CAANMsg inMsg)
	{
		// 差戻中を検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_RTRN_FLG, inMsg))
		{
			return true;
		}
		
		// 申請中を検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHINSEI_FLG, inMsg))
		{
			return true;
		}
		
		// 承認済を検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHONIN_FLG, inMsg))
		{
			return true;
		}

		// 破棄済を検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_ABDMNT_FLG, inMsg))
		{
			return false;
		}
		

		// 保留中のみを検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_PDING_FLG, inMsg))
		{
			return false;
		}
		
		// 状態がすべて未選択の場合は検索
		return true;
	}

	/**
	 * 破棄済みとステータスが受付済みの状態が選択されているかを判定。
	 * <br/>
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @return 判定結果
	 */
	private boolean isSearchAbomntMskmDtlStatUkeZumi(CAANMsg inMsg)
	{
		boolean abdmntFlg = false;
		boolean selectFlg = false;
		boolean pdingFlg = false;

		// 破棄済を未選択
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_ABDMNT_FLG, inMsg))
		{
			abdmntFlg = true;
		}

		// 差戻中を検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_RTRN_FLG, inMsg))
		{
			selectFlg = true;
		}
		// 申請中を検索
		else if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHINSEI_FLG, inMsg))
		{
			selectFlg = true;
		}
		// 承認済を検索
		else if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHONIN_FLG, inMsg))
		{
			selectFlg = true;
		}

		// 保留中のみを検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_PDING_FLG, inMsg))
		{
			pdingFlg = true;
		}

		// 破棄済みとステータスが受付済みが選ばれている場合
		if (abdmntFlg && selectFlg)
		{
			return true;
		}

		// 選択フラグが全て未選択の場合
		if (!abdmntFlg && !selectFlg && !pdingFlg)
		{
			return true;
		}

		return false;
	}

	/**
	 * 検索条件で破棄済み専用ロジック判定。
	 * <br/>
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @return 判定結果
	 */
	private boolean isSearchAbomnt(CAANMsg inMsg)
	{
		boolean abdmntFlg = false;
		boolean selectFlg = false;
		boolean pdingFlg = false;

		// 破棄済を未選択
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_ABDMNT_FLG, inMsg))
		{
			abdmntFlg = true;
		}

		// 差戻中を検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_RTRN_FLG, inMsg))
		{
			selectFlg = true;
		}
		// 申請中を検索
		else if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHINSEI_FLG, inMsg))
		{
			selectFlg = true;
		}
		// 承認済を検索
		else if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHONIN_FLG, inMsg))
		{
			selectFlg = true;
		}

		// 保留中のみを検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_PDING_FLG, inMsg))
		{
			pdingFlg = true;
		}

		// 破棄済みが選ばれている場合
		if (abdmntFlg)
		{
			return true;
		}

		// 選択フラグが全て未選択の場合
		if (!abdmntFlg && !selectFlg && !pdingFlg)
		{
			return true;
		}

		return false;
	}

	/**
	 * 保留データを検索対象とするかを判断します。
	 * <br/>
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @return 保留データを検索対象とする場合true
	 */
	private boolean isSearchPendingData(CAANMsg inMsg)
	{
		// 「状態」の選択状態を確認
		if (!isSearchPendingDataSub1(inMsg))
		{
			return false;
		}
		
		// 「申込形態」の選択状態を確認
		if (!isSearchPendingDataSub2(inMsg))
		{
			return false;
		}
		
		// 申込書番号が設定されている場合、保留データを検索対象としない
		if (isInputKeyTextOn(EKK0011B504CBSMsg.KEY_MSKMSHO_NO, inMsg))
		{
			return false;
		}

		return true;
	}
	
	/**
	 * 保留データを検索対象とするかを判断します。（状態選択）
	 * <br/>
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @return 保留データを検索対象とする場合true
	 */
	private boolean isSearchPendingDataSub1(CAANMsg inMsg)
	{
		// 保留中を検索
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_PDING_FLG, inMsg))
		{
			return true;
		}
		
		// 保留が選択されず他の状態が選択されていた場合、保留データは検索対象外
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_ABDMNT_FLG, inMsg))
		{
			return false;
		}
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_RTRN_FLG, inMsg))
		{
			return false;
		}
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHINSEI_FLG, inMsg))
		{
			return false;
		}
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHONIN_FLG, inMsg))
		{
			return false;
		}
		return true;
	}
	
	/**
	 * 保留データを検索対象とするかを判断します。（申込形態選択）
	 * <br/>
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @return 保留データを検索対象とする場合true
	 */
	private boolean isSearchPendingDataSub2(CAANMsg inMsg)
	{
		// 申込形態：電話
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_TEL_FLG, inMsg))
		{
			return true;
		}
		
		// 申込形態：電話が選択されずに他の申込形態が選択されていた場合、
		// 保留データは検索対象外（保留データは電話申込でのみ作成されるため）
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_WEB_FLG, inMsg))
		{
			return false;
		}
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_RYO_FLG, inMsg))
		{
			return false;
		}
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_HOU_FLG, inMsg))
		{
			return false;
		}
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_JSYWEB_FLG, inMsg))
		{
			return false;
		}
// ANK-3366-00-00 ADD START
		if (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_EOHORS_FLG, inMsg))
		{
			return false;
		}
// ANK-3366-00-00 ADD END
		
		// 申込形態がすべて未選択の場合は保留データを検索対象とする
		return true;
	}

	/**
	 * 対象項目の入力状態リストを取得します。
	 * <br/>
	 * @param inMsg		入力値の格納されたCBSMsg
	 * @param tgtId		対象ID（ 0:代理店コード, 1: 申込形態, 2: タイプ, 3: サービス）
	 * @return 対象項目の入力状態リスト
	 */
	private boolean[] getTrgtKmkInputUmList(CAANMsg inMsg, int tgtId)
	{
		boolean[][] kmkInputUmList = {
				// 代理店コード(受付担当グループ)
				{ isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_AGNT_SBT_M_SHA_FLG, inMsg),
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_AGNT_SBT_I_SHA_FLG, inMsg),
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_AGNT_SBT_KC_SHA_FLG, inMsg),
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_AGNT_SBT_T_SHA_FLG, inMsg),
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_AGNT_SBT_B_SHA_FLG, inMsg),
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_AGNT_SBT_K_SHA_FLG, inMsg) },
				// 申込形態
				{ isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_WEB_FLG, inMsg), 
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_RYO_FLG, inMsg),
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_HOU_FLG, inMsg),
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_TEL_FLG, inMsg),
// ANK-3366-00-00 MOD START
//					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_JSYWEB_FLG, inMsg) },
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_JSYWEB_FLG, inMsg),
// ANK-3478-00-00 ADD START
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_EOHORS_FLG, inMsg),
// ANK-3478-00-00 ADD END
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_EOHORS_FLG, inMsg) },
// ANK-3366-00-00 MOD END
				// タイプ
				{ isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_TYPE_HOME_FLG, inMsg),
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_TYPE_MANSION_FLG, inMsg),
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_TYPE_MEZON_FLG, inMsg),
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_TYPE_MOBILE_FLG, inMsg) },
				// サービス
				{ isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_SVC_NET_FLG, inMsg),
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_SVC_TEL_FLG, inMsg),
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_SVC_TV_FLG, inMsg),
					isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_SVC_MOBILE_FLG, inMsg) }
		};
		
		return kmkInputUmList[tgtId];
	}

	/**
	 * 対象項目の該当値リストを取得します。
	 * <br/>
	 * @param inMsg		入力値の格納されたCBSMsg
	 * @param tgtId		対象ID（ 0:代理店コード, 1: 申込形態, 2: タイプ, 3: サービス）
	 * @return 対象項目の該当値リスト
	 */
	private String[] getTrgtKmkValueList(CAANMsg inMsg, int tgtId)
	{
		String[][] kmkValueList = {
				// 代理店コード(受付担当グループ)
				{ JKKStrConst.CD00087_M_SHA, JKKStrConst.CD00087_I_SHA, JKKStrConst.CD00087_KC_SHA, 
					JKKStrConst.CD00087_T_SHA, JKKStrConst.CD00087_B_SHA, JKKStrConst.CD00087_K_SHA },
				// 申込形態
				{ JKKStrConst.CD01270_4, JKKStrConst.CD01270_2,
// ANK-3366-00-00 MOD START
//						JKKStrConst.CD01270_5, JKKStrConst.CD01270_3, JKKStrConst.CD01270_0 },
						JKKStrConst.CD01270_5, JKKStrConst.CD01270_3, JKKStrConst.CD01270_0,
// ANK-3478-00-00 MOD START
//						JKKStrConst.CD01270_Y },
						JKKStrConst.CD01270_Y, JKKStrConst.CD01270_F },
// ANK-3478-00-00 MOD END
// ANK-3366-00-00 MOD END
				// タイプ
				{ JKKStrConst.MSKM_KIND_HOME, JKKStrConst.MSKM_KIND_MANSION,
						JKKStrConst.MSKM_KIND_MEZON, JKKStrConst.MSKM_KIND_MOBILE },
				// サービス
				{ JKKStrConst.CD00684_NET, JKKStrConst.CD00684_TEL,
						JKKStrConst.CD00684_TV, JKKStrConst.CD00684_MOBA }
		};
		
		return kmkValueList[tgtId];
	}

	/**
	 * 対象を検索対象とするかを判断します。
	 * <br/>
	 * @param inMsg		入力値の格納されたCBSMsg
	 * @param tgtId		対象ID（ 0:代理店コード, 1: 申込形態, 2: タイプ, 3: サービス, 4: 状態）
	 * @return 対象を検索対象とする場合true
	 */
	private boolean isSearchTrgt(CAANMsg inMsg, int tgtId)
	{
		boolean[] tgtJudge = {
			// 代理店コード(受付担当グループ)
			(isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_AGNT_SBT_M_SHA_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_AGNT_SBT_I_SHA_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_AGNT_SBT_KC_SHA_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_AGNT_SBT_T_SHA_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_AGNT_SBT_B_SHA_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_AGNT_SBT_K_SHA_FLG, inMsg))
			// 申込形態
			, (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_WEB_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_RYO_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_HOU_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_TEL_FLG, inMsg)
// ANK-3366-00-00 MOD START
//					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_JSYWEB_FLG, inMsg))
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_JSYWEB_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_MSKM_KEIT_EOHORS_FLG, inMsg))
// ANK-3366-00-00 MOD END
			// タイプ
			, (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_TYPE_HOME_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_TYPE_MANSION_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_TYPE_MEZON_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_TYPE_MOBILE_FLG, inMsg))
			// サービス
			, (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_SVC_NET_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_SVC_TEL_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_SVC_TV_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_SVC_MOBILE_FLG, inMsg))
			// 状態
			, (isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHINSEI_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_SHONIN_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_RTRN_FLG, inMsg)
					|| isInputKeyFlagOn(EKK0011B504CBSMsg.KEY_STAT_ABDMNT_FLG, inMsg))
		};
		
		return tgtJudge[tgtId];
	}

	/**
	 * CBSMsgのフラグがONの場合、trueを返却します。
	 * <br/>
	 * @param key キー
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @return フラグがONの場合true
	 */
	private boolean isInputKeyFlagOn(String key, CAANMsg inMsg)
	{
		if (inMsg.isNull(key) || !FLAG_ON.equals(inMsg.getString(key)))
		{
			return false;
		}
		return true;
	}
	
	/**
	 * CBSMsgのテキストが設定されている場合、trueを返却します。
	 * <br/>
	 * @param key キー
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @return フラグがONの場合true
	 */
	private boolean isInputKeyTextOn(String key, CAANMsg inMsg)
	{
		if (inMsg.isNull(key) || "".equals(inMsg.getString(key)))
		{
			return false;
		}
		return true;
	}
}
