/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbECK0011B011TPDA
*	ソースファイル名：JSYejbECK0011B011TPDA.java
*	作成者			：EKek0027
*	日付			：2013年02月03日
*＜機能概要＞
*	お客様情報一覧照会（グループメンバ選択用）テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ4.00.00	2013/02/03	FJ）沖田 	ST4-2012-0000309
*	ｖ5.00.00	2013/03/10	FJ）寺園 	IT1-2013-0000398
*	ｖ5.00.01	2013/03/11	FJ）寺園 	IT1-2013-0000400
*	ｖ5.00.02	2013/03/22	FJ		 	OT-2013-0000311
*
********************************************************************************/

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 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.JPCModelConstant;
import eo.ejb.cbm.entity.CK0011ETMsg;
import eo.ejb.cbs.cbsmsg.ECK0011B011CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011B011CBSMsg1List;
import eo.ejb.common.JCKModelCommon;
import eo.ejb.common.JKKejbPagingUtil;
import eo.ejb.common.JZMModelCommon;

/**
*
*  テンプレートDBアクセス部品　ECK0011B011_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbECK0011B011TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
	
	
	/**
	 * ＫＥＹ＿ソート項目No：1:SYSID
	 */
	private static final String SORTITEM_SYSID = "1";
	
	/**
	 * ＫＥＹ＿ソート項目No：2:お客様ステータス
	 */
	private static final String SORTITEM_CUST_STAT = "2";
	
	/**
	 * ＫＥＹ＿ソート項目No：3:eoID
	 */
	private static final String SORTITEM_EOID = "3";
	
	/**
	 * ＫＥＹ＿ソート項目No：4:お客様名
	 */
	private static final String SORTITEM_CUST_NM = "4";
	
	/**
	 * ＫＥＹ＿ソート項目No：5:お客様カナ
	 */
	private static final String SORTITEM_CUST_KANA = "5";
	
	/**
	 * ＫＥＹ＿ソート項目No：6:契約者都道府県名 + 契約者市区町村名 + 契約者大字通称名 + 契約者字丁目名
	 * + 契約者番地号 + 契約者住所補記・建物名 + 契約者住所補記・部屋番号
	 */
	private static final String SORTITEM_AD = "6";
	
	/**
	 * ＫＥＹ＿ソート項目No：7:契約者電話番号
	 */
	private static final String SORTITEM_KEISHA_TELNO = "7";
	
	/**
	 * ＫＥＹ＿ソート項目No：8:お客様生年月日
	 */
	private static final String SORTITEM_CUST_BIRTHD = "8";

	/**
	 * ＫＥＹ＿ソート区分：1:昇順
	 */
	private static final String SORTKBN_ASC = "1";
	
	/**
	 * ＫＥＹ＿ソート区分：2:降順
	 */
	private static final String SORTKBN_DESC = "2";
	
	/**
	 * 検索区分：2:部分一致検索
	 */
	private static final String SRCHKBN_PART = "2";
	/**
	 * コンストラクタ
	 */
	public JSYejbECK0011B011TPDA()	{
	}
	
	/**
	*   ECK0011B011_SQLF<br>
	*   @param inMsg    入力値の格納されたCBSMsg <br>
	*   @return void
	*/
	public void invoke(CAANMsg inMsg,AgentDispatchContext inContext){
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmtCount = null;
		PreparedStatement pstmtSelect = null;
		
		// リザルトセット
		ResultSet rsltQueryCount = null;
		ResultSet rsltQuerySelect = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/

		try{
			
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CK0011ETMsg.getTableName());
			
			// SQL文_基本部1
			StringBuffer sql_Buff_1 = new StringBuffer();
			StringBuffer sql_Buff_2 = new StringBuffer();
			
			StringBuffer sbCount = new StringBuffer();
			StringBuffer sbPageHead = new StringBuffer();
			StringBuffer sbSelect = new StringBuffer();
			StringBuffer sbForm = new StringBuffer();
			StringBuffer sbOrderBy = new StringBuffer();
			StringBuffer sbPageFoot = new StringBuffer();
			
			// 日付
			String date = JCKModelCommon.getOpeDate(inMsg);

			// バインド変数格納用配列
			ArrayList<Object> alBind = new ArrayList<Object>();
			// バインド変数格納用配列(SELECT句用)
			ArrayList<Object> alBindSelect = new ArrayList<Object>();
			
			// カウント文用SELECT句
			sbCount.append("  SELECT COUNT(*) AS CNT ")
					.append("    FROM CK_T_CUST CK0011 ")
					.append("    WHERE (CK0011.SYSID, CK0011.RSV_APLY_YMD || CK0011.GENE_ADD_DTM) = ")
					.append("          (SELECT CK0011_GENE.SYSID, MAX(CK0011_GENE.RSV_APLY_YMD || CK0011_GENE.GENE_ADD_DTM) ")
					.append("           FROM  CK_T_CUST CK0011_GENE ")
					.append("           WHERE CK0011_GENE.SYSID = CK0011.SYSID ")
					.append("           AND   CK0011_GENE.RSV_APLY_YMD <= ? ")
					.append("           AND   CK0011_GENE.RSV_APLY_CD = '2' ")
					.append("           AND   CK0011_GENE.MK_FLG = '0' ")
					.append("           GROUP BY CK0011_GENE.SYSID) ");

			
			// ページング用
			sbPageHead.append(" SELECT * ");
			sbPageHead.append(" FROM ( ");
			sbPageHead.append("     SELECT ALL_SELECT.*, ROWNUM AS LINE ");
			sbPageHead.append("     FROM ( ");

			// 参照用SELECT句
			sbSelect.append("   SELECT ")
					.append("       CK0011.SYSID, ")
					.append("       CK0011.CUST_STAT, ")
					.append("       (SELECT ZM0171.CD_DIV_NM ")
					.append("          FROM  ZM_M_CD_NM_KANRI ZM0171 ")
					.append("          WHERE ZM0171.CD_SBT_CD = 'CD00038' ")
					.append("          AND   ZM0171.CD_DIV = CK0011.CUST_STAT ")
					.append("          AND   ZM0171.MK_FLG = '0') AS CUST_STAT_NM, ")
					.append("       CK0011.EOID, ")
					.append("       CK0011.CUST_NM, ")
					.append("       CK0011.CUST_KANA, ")
					.append("       CK0011.KEISHA_STATE_NM, ")
					.append("       CK0011.KEISHA_CITY_NM, ")
					.append("       CK0011.KEISHA_OAZTSU_NM, ")
					.append("       CK0011.KEISHA_AZCHO_NM, ")
					.append("       CK0011.KEISHA_BNCHIGO, ")
					.append("       CK0011.KEISHA_ADRTTM, ")
					.append("       CK0011.KEISHA_ADRRM, ")
					.append("       CK0011.KEISHA_TELNO, ")
					.append("       CK0011.CUST_BIRTHD, ")
					.append("       CK0011.CUST_NTAIKAI_CD ")
					.append("       FROM CK_T_CUST CK0011 ")
					.append("       WHERE (CK0011.SYSID, CK0011.RSV_APLY_YMD || CK0011.GENE_ADD_DTM) =")
					.append("             (SELECT  CK0011_GENE.SYSID, MAX(RSV_APLY_YMD || GENE_ADD_DTM) ")
					.append("              FROM    CK_T_CUST CK0011_GENE ")
					.append("              WHERE   CK0011_GENE.SYSID = CK0011.SYSID ")
					.append("              AND     CK0011_GENE.RSV_APLY_YMD <= ? ")
					.append("              AND     CK0011_GENE.RSV_APLY_CD = '2' ")
					.append("              AND     CK0011_GENE.MK_FLG = '0' ")
					.append("              GROUP BY CK0011_GENE.SYSID) ");

			// バインド変数設定(運用日付)
			alBindSelect.add(date);
			
			// SQL文_個別部1
			if ( "1".equals( inMsg.getObject(ECK0011B011CBSMsg.FUNC_CODE).toString() ) ) {
				
 				// ＫＥＹ＿サービス契約番号が設定されている場合
 				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_SVC_KEI_NO)) {
 					sbForm.append("  AND CK0011.SYSID IN (")
 							.append("      SELECT KK0081_07.SYSID ")
		 	 				.append("      FROM   KK_T_SVC_KEI KK0081_07 ")
							.append("      WHERE  (KK0081_07.SVC_KEI_NO, KK0081_07.RSV_APLY_YMD || KK0081_07.GENE_ADD_DTM) = ")
							.append("         (SELECT KK0081_07_GENE.SVC_KEI_NO, MAX(KK0081_07_GENE.RSV_APLY_YMD || KK0081_07_GENE.GENE_ADD_DTM) ")
							.append("          FROM   KK_T_SVC_KEI KK0081_07_GENE ")
							.append("          WHERE  KK0081_07_GENE.SVC_KEI_NO = KK0081_07.SVC_KEI_NO ")
							.append("          AND    KK0081_07_GENE.RSV_APLY_YMD <= ? ")
							.append("          AND    KK0081_07_GENE.RSV_APLY_CD = '2' ")
							.append("          AND    KK0081_07_GENE.MK_FLG = '0' ")
							.append("          GROUP BY KK0081_07_GENE.SVC_KEI_NO) ")
							.append("      AND KK0081_07.SVC_KEI_NO = ?) ");

 					// バインド変数設定(運用日付)
 					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿サービス契約番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_SVC_KEI_NO));
 				}
 				
 				// ＫＥＹ＿ＳＹＳＩＤが設定されている場合
 				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_SYSID)) {
 					sbForm.append("    AND CK0011.SYSID = ? ");

					// バインド変数設定(ＫＥＹ＿ＳＹＳＩＤ)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_SYSID));
 				}
 				
 				// ＫＥＹ＿ｅｏＩＤが設定されている場合
				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_EOID)) {
					sbForm.append("    AND CK0011.EOID = ? ");
					
					// バインド変数設定(ＫＥＹ＿ｅｏＩＤ)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_EOID));
				}
				
 				// ＫＥＹ＿お客様カナ名が設定されている場合
				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_CUST_KANA)) {
					sbForm.append("    AND (CK0011.CUST_KANA LIKE ? OR CK0011.CONT_CUST_KANA LIKE ?) ");
					
					// バインド変数設定(ＫＥＹ＿お客様カナ名)
					alBindSelect.add(getSearchValue(inMsg.getString(ECK0011B011CBSMsg.KEY_CUST_KANA)
							, inMsg.getString(ECK0011B011CBSMsg.KEY_KANA_SEARCH_KBN)));
					// バインド変数設定(ＫＥＹ＿お客様カナ名)
					alBindSelect.add(getSearchValue(inMsg.getString(ECK0011B011CBSMsg.KEY_CUST_KANA)
							, inMsg.getString(ECK0011B011CBSMsg.KEY_KANA_SEARCH_KBN)));
				}
				
				if(!inMsg.isNull(ECK0011B011CBSMsg.KEY_KEISHA_PCD))
				{
					// ＫＥＹ＿契約者郵便番号が設定されている場合
					sbForm.append("     AND    (CK0011.KEISHA_PCD = ? OR CK0011.CONT_PCD = ?) ");
	
					// バインド変数設定
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_KEISHA_PCD));
					// バインド変数設定
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_KEISHA_PCD));
				}
				
				if(!inMsg.isNull(ECK0011B011CBSMsg.KEY_KEISHA_AD_CD))
				{
					// ＫＥＹ＿契約者住所コードが設定されている場合
					sbForm.append("     AND    CK0011.KEISHA_AD_CD = ? ");
	
					// バインド変数設定
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_KEISHA_AD_CD));
				}
				
				// ＫＥＹ＿法人連絡先郵便番号、ＫＥＹ＿法人連絡先住所コードが共に設定されている場合
				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_HJRRKS_PCD) && !inMsg.isNull(ECK0011B011CBSMsg.KEY_HJRRKS_AD_CD)) {
					sbForm.append("    AND EXISTS ")
							.append("       (SELECT 1 ")
							.append("        FROM CK_T_HOJIN_RRKS CK0041 ")
							.append("        WHERE CK0041.SYSID = CK0011.SYSID ")
							.append("        AND (CK0041.SYSID, CK0041.RRKS_CD, CK0041.GENE_ADD_DTM) = ")
							.append("            (SELECT CK0041_GENE.SYSID, CK0041_GENE.RRKS_CD, MAX(CK0041_GENE.GENE_ADD_DTM) ")
							.append("             FROM  CK_T_HOJIN_RRKS CK0041_GENE ")
							.append("             WHERE CK0041_GENE.SYSID = CK0041.SYSID ")
							.append("             AND   CK0041_GENE.RRKS_CD = CK0041.RRKS_CD ")
							.append("             AND   CK0041_GENE.MK_FLG = '0' ")
							.append("             GROUP BY CK0041_GENE.SYSID, CK0041_GENE.RRKS_CD) ")
							.append("        AND CK0041.HJRRKS_PCD = ? ")
							.append("        AND CK0041.HJRRKS_AD_CD = ?) ");
					
					// バインド変数設定(ＫＥＹ＿法人連絡先郵便番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_HJRRKS_PCD));
					// バインド変数設定(ＫＥＹ＿法人連絡先住所コード)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_HJRRKS_AD_CD));
					
				// ＫＥＹ＿法人連絡先郵便番号が設定されている場合
				} else if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_HJRRKS_PCD)) {
					sbForm.append("    AND EXISTS ")
							.append("       (SELECT 1 ")
							.append("        FROM CK_T_HOJIN_RRKS CK0041 ")
							.append("        WHERE CK0041.SYSID = CK0011.SYSID ")
							.append("        AND (CK0041.SYSID, CK0041.RRKS_CD, CK0041.GENE_ADD_DTM) = ")
							.append("            (SELECT CK0041_GENE.SYSID, CK0041_GENE.RRKS_CD, MAX(CK0041_GENE.GENE_ADD_DTM) ")
							.append("             FROM  CK_T_HOJIN_RRKS CK0041_GENE ")
							.append("             WHERE CK0041_GENE.SYSID = CK0041.SYSID ")
							.append("             AND   CK0041_GENE.RRKS_CD = CK0041.RRKS_CD ")
							.append("             AND   CK0041_GENE.MK_FLG = '0' ")
							.append("             GROUP BY CK0041_GENE.SYSID, CK0041_GENE.RRKS_CD) ")
							.append("        AND CK0041.HJRRKS_PCD = ? ) ");
						
						// バインド変数設定(ＫＥＹ＿法人連絡先郵便番号)
						alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_HJRRKS_PCD));

				// ＫＥＹ＿法人連絡先住所コードが設定されている場合
				} else if  (!inMsg.isNull(ECK0011B011CBSMsg.KEY_HJRRKS_AD_CD)) {
					sbForm.append("    AND EXISTS ")
							.append("       (SELECT 1 ")
							.append("        FROM CK_T_HOJIN_RRKS CK0041 ")
							.append("        WHERE CK0041.SYSID = CK0011.SYSID ")
							.append("        AND (CK0041.SYSID, CK0041.RRKS_CD, CK0041.GENE_ADD_DTM) = ")
							.append("            (SELECT CK0041_GENE.SYSID, CK0041_GENE.RRKS_CD, MAX(CK0041_GENE.GENE_ADD_DTM) ")
							.append("             FROM  CK_T_HOJIN_RRKS CK0041_GENE ")
							.append("             WHERE CK0041_GENE.SYSID = CK0041.SYSID ")
							.append("             AND   CK0041_GENE.RRKS_CD = CK0041.RRKS_CD ")
							.append("             AND   CK0041_GENE.MK_FLG = '0' ")
							.append("             GROUP BY CK0041_GENE.SYSID, CK0041_GENE.RRKS_CD) ")
							.append("        AND CK0041.HJRRKS_AD_CD = ? ) ");

					// バインド変数設定(ＫＥＹ＿法人連絡先住所コード)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_HJRRKS_AD_CD));
				}
				
				// ＫＥＹ＿契約者電話番号が設定されている場合
				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_KEISHA_TELNO)) {
					sbForm.append("   AND CK0011.KEISHA_TELNO = ? ");
					
					// バインド変数設定(ＫＥＹ＿契約者電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_KEISHA_TELNO));
				}
				
				// ＫＥＹ＿移動体電話番号が設定されている場合
				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_MOBILE_TELNO)) {
					sbForm.append("    AND EXISTS ")
							.append("       (SELECT 1 ")
							.append("        FROM CK_T_RRKS CK0201 ")
							.append("        WHERE CK0201.SYSID = CK0011.SYSID ")
							.append("        AND (CK0201.RRKS_NO, CK0201.RSV_APLY_YMD || CK0201.GENE_ADD_DTM) = ")
							.append("            (SELECT CK0201_GENE.RRKS_NO, MAX(CK0201_GENE.RSV_APLY_YMD || CK0201_GENE.GENE_ADD_DTM) ")
							.append("             FROM   CK_T_RRKS CK0201_GENE ")
							.append("             WHERE  CK0201_GENE.RRKS_NO = CK0201.RRKS_NO ")
							.append("             AND    CK0201_GENE.RSV_APLY_YMD <= ? ")
							.append("             AND    CK0201_GENE.RSV_APLY_CD = '2' ")
							.append("             AND    CK0201_GENE.MK_FLG = '0' ")
							.append("             GROUP BY CK0201_GENE.RRKS_NO) ")
							.append("        AND CK0201.TELNO = ? ")
							.append("        AND CK0201.RRKS_SBT_CD = '2' ")
							.append("        AND CK0201.RRK_WAY_CD = '003') ");

					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿移動体電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_MOBILE_TELNO));
				}
				
				// ＫＥＹ＿親権者電話番号が設定されている場合
				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_SKSHA_TELNO)) {
					sbForm.append("    AND EXISTS ")
							.append("       (SELECT 1 ")
							.append("        FROM  CK_T_CUST_KOJIN CK0021 ")
							.append("        WHERE CK0021.SYSID = CK0011.SYSID ")
							.append("        AND   CK0021.GENE_ADD_DTM = CK0011.GENE_ADD_DTM ")
							.append("        AND   CK0021.MK_FLG = '0' ")
							.append("        AND   CK0021.SKSHA_TELNO = ?) ");
					
					// バインド変数設定(ＫＥＹ＿親権者電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_SKSHA_TELNO));
				}

				// ＫＥＹ＿ｅｏ光電話番号が設定されている場合
				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_EO_TELNO)) {
					sbForm.append("    AND CK0011.SYSID IN (")
							.append("    SELECT KK0081_07.SYSID ")
							.append("      FROM KK_T_SVC_KEI KK0081_07 ")
							.append("      WHERE (KK0081_07.SVC_KEI_NO, KK0081_07.RSV_APLY_YMD || KK0081_07.GENE_ADD_DTM) = ")
							.append("            (SELECT KK0081_07_GENE.SVC_KEI_NO, MAX(KK0081_07_GENE.RSV_APLY_YMD || KK0081_07_GENE.GENE_ADD_DTM) ")
							.append("             FROM  KK_T_SVC_KEI KK0081_07_GENE ")
							.append("             WHERE KK0081_07_GENE.SVC_KEI_NO = KK0081_07.SVC_KEI_NO ")
							.append("             AND   KK0081_07_GENE.RSV_APLY_YMD <= ? ")
							.append("             AND   KK0081_07_GENE.RSV_APLY_CD = '2' ")
							.append("             AND   KK0081_07_GENE.MK_FLG = '0' ")
							.append("             GROUP BY KK0081_07_GENE.SVC_KEI_NO) ")
							.append("      AND EXISTS ")
							.append("         (SELECT 1 ")
							.append("          FROM  KK_T_SVC_KEI_UCWK KK0161_04 ")
							.append("          WHERE KK0161_04.SVC_KEI_NO = KK0081_07.SVC_KEI_NO ")
							.append("          AND   KK0161_04.KEIZK_AF_KEI_CHGECHU_FLG = '0' ")
							.append("          AND  (KK0161_04.SVC_KEI_UCWK_NO, KK0161_04.RSV_APLY_YMD || KK0161_04.GENE_ADD_DTM) = ")
							.append("               (SELECT KK0161_04_GENE.SVC_KEI_UCWK_NO, MAX(KK0161_04_GENE.RSV_APLY_YMD || KK0161_04_GENE.GENE_ADD_DTM) ")
							.append("             FROM  KK_T_SVC_KEI_UCWK KK0161_04_GENE ")
							.append("             WHERE KK0161_04_GENE.SVC_KEI_UCWK_NO = KK0161_04.SVC_KEI_UCWK_NO ")
							.append("             AND   KK0161_04_GENE.RSV_APLY_YMD <= ? ")
							.append("             AND   KK0161_04_GENE.RSV_APLY_CD = '2' ")
							.append("             AND   KK0161_04_GENE.MK_FLG = '0' ")
							.append("             GROUP BY KK0161_04_GENE.SVC_KEI_UCWK_NO) ")
							.append("       AND EXISTS ")
							.append("         (SELECT 1 ")
							.append("              FROM   KK_T_SVKEIUW_EOH_TEL KK0191 ")
							.append("               WHERE KK0191.SVC_KEI_UCWK_NO = KK0161_04.SVC_KEI_UCWK_NO ")
							.append("               AND   KK0191.GENE_ADD_DTM = KK0161_04.GENE_ADD_DTM ")
							.append("               AND   KK0191.MK_FLG = '0' ")
							.append("               AND   KK0191.TELNO = ?))) ");
					
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿ｅｏ光電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_EO_TELNO));
				}
				
				// ＫＥＹ＿コンテンツ電話番号が設定されている場合
				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_CONT_TELNO)) {
					sbForm.append("    AND EXISTS ")
							.append("       (SELECT 1 ")
							.append("        FROM CK_T_RRKS CK0201_7 ")
							.append("        WHERE CK0201_7.SYSID = CK0011.SYSID ")
							.append("        AND (CK0201_7.RRKS_NO, CK0201_7.RSV_APLY_YMD || CK0201_7.GENE_ADD_DTM) = ")
							.append("            (SELECT CK0201_8_GENE.RRKS_NO, MAX(CK0201_8_GENE.RSV_APLY_YMD || CK0201_8_GENE.GENE_ADD_DTM) ")
							.append("             FROM  CK_T_RRKS CK0201_8_GENE ")
							.append("             WHERE CK0201_8_GENE.RRKS_NO = CK0201_7.RRKS_NO ")
							.append("             AND   CK0201_8_GENE.RSV_APLY_YMD <= ? ")
							.append("             AND   CK0201_8_GENE.RSV_APLY_CD = '2' ")
							.append("             AND   CK0201_8_GENE.MK_FLG = '0' ")
							.append("             GROUP BY CK0201_8_GENE.RRKS_NO) ")
							.append("        AND CK0201_7.TELNO = ? ")
							.append("        AND CK0201_7.RRKS_SBT_CD = '1' ")
							.append("        AND CK0201_7.RRK_WAY_CD = '003') ");
					
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿コンテンツ電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_CONT_TELNO));
				}

				// ＫＥＹ＿送付先電話番号が設定されている場合
				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_SOHUS_TELNO)) {
					sbForm.append("    AND CK0011.SYSID IN (")
						  .append("            SELECT KK0081_08.SYSID ")
						  .append("            FROM KK_T_SVC_KEI KK0081_08 ") 
						  .append("            WHERE (KK0081_08.SVC_KEI_NO, KK0081_08.RSV_APLY_YMD || KK0081_08.GENE_ADD_DTM) = ")
						  .append("                  (SELECT KK0081_08_GENE.SVC_KEI_NO, MAX(KK0081_08_GENE.RSV_APLY_YMD || KK0081_08_GENE.GENE_ADD_DTM) ")
						  .append("                   FROM  KK_T_SVC_KEI KK0081_08_GENE ")
						  .append("                   WHERE KK0081_08_GENE.SVC_KEI_NO = KK0081_08.SVC_KEI_NO ")
						  .append("                   AND   KK0081_08_GENE.RSV_APLY_YMD <= ? ")
						  .append("                   AND   KK0081_08_GENE.RSV_APLY_CD = '2' ")
						  .append("                   AND   KK0081_08_GENE.MK_FLG = '0' ")
						  .append("                   GROUP BY KK0081_08_GENE.SVC_KEI_NO) ")
						  .append("            AND EXISTS (")
						  .append("                SELECT 1 ")
						  .append("                FROM  KK_T_KAKINS KK0321 ")
						  .append("                WHERE KK0321.SVC_KEI_NO = KK0081_08.SVC_KEI_NO ")
						  .append("                AND    KK0321.KAKINS_TSTAYMD <= ? ")
						  .append("                AND    KK0321.KAKINS_TENDYMD >= ? ")
						  .append("                AND    KK0321.MK_FLG = '0' ")
						  .append("                AND EXISTS (")
						  .append("                    SELECT 1 ")
						  .append("                    FROM KK_T_SEIKY_KEI KK0491 ") 
						  .append("                    WHERE  KK0491.SEIKY_KEI_NO = KK0321.SEIKY_KEI_NO ")
						  .append("                    AND   (KK0491.SEIKY_KEI_NO, KK0491.RSV_APLY_YMD || KK0491.GENE_ADD_DTM) = ")
						  .append("                          (SELECT KK0491_GENE.SEIKY_KEI_NO, MAX(KK0491_GENE.RSV_APLY_YMD || KK0491_GENE.GENE_ADD_DTM) ")
						  .append("                           FROM  KK_T_SEIKY_KEI KK0491_GENE ")
						  .append("                           WHERE KK0491_GENE.SEIKY_KEI_NO = KK0491.SEIKY_KEI_NO ")
						  .append("                           AND   KK0491_GENE.RSV_APLY_YMD <= ? ")
						  .append("                           AND   KK0491_GENE.RSV_APLY_CD = '2' ")
						  .append("                           AND   KK0491_GENE.MK_FLG = '0' ")
						  .append("                           GROUP BY KK0491_GENE.SEIKY_KEI_NO) ")
						  .append("                    AND   KK0491.SOHUS_TELNO = ? ") 
						  .append("            	))) ");
					
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿送付先電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_SOHUS_TELNO));
				}

				// ＫＥＹ＿０５０オプション電話番号が設定されている場合
				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_N_050_OP_TELNO)) {
					sbForm.append("    AND CK0011.SYSID IN (")
						  .append("            SELECT  KK0081_09.SYSID ")
						  .append("            FROM KK_T_SVC_KEI KK0081_09 ")
						  .append("            WHERE (KK0081_09.SVC_KEI_NO, KK0081_09.RSV_APLY_YMD || KK0081_09.GENE_ADD_DTM) = ")
						  .append("                  (SELECT KK0081_09_GENE.SVC_KEI_NO, MAX(KK0081_09_GENE.RSV_APLY_YMD || KK0081_09_GENE.GENE_ADD_DTM) ")
						  .append("                   FROM  KK_T_SVC_KEI KK0081_09_GENE ")
						  .append("                   WHERE KK0081_09_GENE.SVC_KEI_NO = KK0081_09.SVC_KEI_NO ")
						  .append("                   AND   KK0081_09_GENE.RSV_APLY_YMD <= ? ")
						  .append("                   AND   KK0081_09_GENE.RSV_APLY_CD = '2' ")
						  .append("                   AND   KK0081_09_GENE.MK_FLG = '0' ")
						  .append("                   GROUP BY KK0081_09_GENE.SVC_KEI_NO) ")
						  .append("            AND EXISTS (")
						  .append("                SELECT 1 ")
						  .append("                FROM  KK_T_OP_SVC_KEI KK0351_01 ")
						  .append("                WHERE KK0351_01.SVC_KEI_NO = KK0081_09.SVC_KEI_NO ")
						  .append("                AND (KK0351_01.OP_SVC_KEI_NO, KK0351_01.RSV_APLY_YMD || KK0351_01.GENE_ADD_DTM) = ")
						  .append("                    (SELECT KK0351_01_GENE.OP_SVC_KEI_NO, MAX(KK0351_01_GENE.RSV_APLY_YMD || KK0351_01_GENE.GENE_ADD_DTM) ")
						  .append("                     FROM KK_T_OP_SVC_KEI KK0351_01_GENE ")
						  .append("                     WHERE KK0351_01_GENE.OP_SVC_KEI_NO = KK0351_01.OP_SVC_KEI_NO ")
						  .append("                     AND KK0351_01_GENE.RSV_APLY_YMD <= ? ")
						  .append("                     AND KK0351_01_GENE.RSV_APLY_CD = '2' ")
						  .append("                     AND KK0351_01_GENE.MK_FLG = '0' ")
						  .append("                     GROUP BY KK0351_01_GENE.OP_SVC_KEI_NO) ")
						  .append("                AND EXISTS (")
						  .append("                    SELECT 1 ")
						  .append("                    FROM KK_T_OPSVKEI_TEL KK0371 ")
						  .append("                    WHERE KK0371.OP_SVC_KEI_NO = KK0351_01.OP_SVC_KEI_NO ")
						  .append("                    AND KK0371.GENE_ADD_DTM = KK0351_01.GENE_ADD_DTM ")
						  .append("                    AND KK0371.MK_FLG = '0' ")
						  .append("                    AND KK0371.N_050_OP_TELNO = ?))) ");
					
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿０５０オプション電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_N_050_OP_TELNO));
				}

				// ＫＥＹ＿公衆網電話番号が設定されている場合
				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_KOSHUMO_TELNO)) {
					sbForm.append("    AND CK0011.SYSID IN (")
						  .append("              SELECT  KK0081_10.SYSID ")
							.append("            FROM KK_T_SVC_KEI KK0081_10 ")
							.append("            WHERE (KK0081_10.SVC_KEI_NO, KK0081_10.RSV_APLY_YMD || KK0081_10.GENE_ADD_DTM) = ")
							.append("                  (SELECT KK0081_10_GENE.SVC_KEI_NO, MAX(KK0081_10_GENE.RSV_APLY_YMD || KK0081_10_GENE.GENE_ADD_DTM) ")
							.append("                   FROM  KK_T_SVC_KEI KK0081_10_GENE ")
							.append("                   WHERE KK0081_10_GENE.SVC_KEI_NO = KK0081_10.SVC_KEI_NO ")
							.append("                   AND   KK0081_10_GENE.RSV_APLY_YMD <= ? ")
							.append("                   AND   KK0081_10_GENE.RSV_APLY_CD = '2' ")
							.append("                   AND   KK0081_10_GENE.MK_FLG = '0' ")
							.append("                   GROUP BY KK0081_10_GENE.SVC_KEI_NO) ")
							.append("            AND EXISTS (")
							.append("                SELECT 1 ")
							.append("                FROM  KK_T_OP_SVC_KEI KK0351_02 ")
							.append("                WHERE KK0351_02.SVC_KEI_NO = KK0081_10.SVC_KEI_NO ")
							.append("                AND (KK0351_02.OP_SVC_KEI_NO, KK0351_02.RSV_APLY_YMD || KK0351_02.GENE_ADD_DTM) = ")
							.append("                    (SELECT KK0351_02_GENE.OP_SVC_KEI_NO, MAX(KK0351_02_GENE.RSV_APLY_YMD || KK0351_02_GENE.GENE_ADD_DTM) ")
							.append("                     FROM KK_T_OP_SVC_KEI KK0351_02_GENE ")
							.append("                     WHERE KK0351_02_GENE.OP_SVC_KEI_NO = KK0351_02.OP_SVC_KEI_NO ")
							.append("                     AND KK0351_02_GENE.RSV_APLY_YMD <= ? ")
							.append("                     AND KK0351_02_GENE.RSV_APLY_CD = '2' ")
							.append("                     AND KK0351_02_GENE.MK_FLG = '0' ")
							.append("                     GROUP BY KK0351_02_GENE.OP_SVC_KEI_NO) ")
							.append("                AND EXISTS (")
							.append("                    SELECT 1 ")
							.append("                    FROM KK_T_OPSVKEI_ISP KK0361 ")
							.append("                    WHERE KK0361.OP_SVC_KEI_NO = KK0351_02.OP_SVC_KEI_NO ")
							.append("                    AND KK0361.GENE_ADD_DTM = KK0351_02.GENE_ADD_DTM ")
							.append("                    AND KK0361.MK_FLG = '0' ")
							.append("                    AND KK0361.KOSHUMO_TELNO = ?))) ");
					
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿公衆網電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_KOSHUMO_TELNO));
				}

				// ＫＥＹ＿全電話番号が設定されている場合
				if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_ALL_TELNO)) {
					sbForm.append("    AND EXISTS ")
							.append("       (SELECT 1 ")
							.append("        FROM ")
							.append("           (SELECT DISTINCT CK0011_TEL.SYSID ")
							.append("            FROM ")
							.append("           (SELECT CK0011_01.SYSID ")
							.append("            FROM   CK_T_CUST CK0011_01 ")
							.append("            WHERE (CK0011_01.SYSID, CK0011_01.RSV_APLY_YMD || CK0011_01.GENE_ADD_DTM) = ")
							.append("                  (SELECT CK0011_01_GENE.SYSID, MAX(CK0011_01_GENE.RSV_APLY_YMD || CK0011_01_GENE.GENE_ADD_DTM) ")
							.append("                   FROM  CK_T_CUST CK0011_01_GENE ")
							.append("                   WHERE CK0011_01_GENE.SYSID = CK0011_01.SYSID ")
							.append("                   AND   CK0011_01_GENE.RSV_APLY_YMD <= ? ")
							.append("                   AND   CK0011_01_GENE.RSV_APLY_CD = '2' ")
							.append("                   AND   CK0011_01_GENE.MK_FLG = '0' ")
							.append("                   GROUP BY CK0011_01_GENE.SYSID) ")
							.append("            AND CK0011_01.KEISHA_TELNO = ? ")
							.append("            AND CK0011_01.MEMBER_SBT_CD IN ('10', '20')  ")
							.append("            AND CK0011_01.KEISHA_TYPE_CD IN ('1', '2', '3', '4')  ")
							.append("            AND NVL(CK0011_01.EONETID_MI_IKO_FLG, '0') = '0' ")
							.append("            AND NVL(CK0011_01.MMB_SBT_TOKUT_FLG, '1') = '1' ")
							.append("        UNION ALL ")
							.append("            SELECT CK0201.SYSID ")
							.append("            FROM  CK_T_RRKS CK0201 ")
							.append("            WHERE (CK0201.RRKS_NO, CK0201.RSV_APLY_YMD || CK0201.GENE_ADD_DTM) = ")
							.append("                  (SELECT CK0201_GENE.RRKS_NO, MAX(CK0201_GENE.RSV_APLY_YMD || CK0201_GENE.GENE_ADD_DTM) ")
							.append("                   FROM  CK_T_RRKS CK0201_GENE ")
							.append("                   WHERE CK0201_GENE.RRKS_NO = CK0201.RRKS_NO ")
							.append("                   AND   CK0201_GENE.RSV_APLY_YMD <= ? ")
							.append("                   AND   CK0201_GENE.RSV_APLY_CD = '2' ")
							.append("                   AND   CK0201_GENE.MK_FLG = '0' ")
							.append("                   GROUP BY CK0201_GENE.RRKS_NO) ")
							.append("            AND  CK0201.TELNO = ? ")
							.append("            AND  ((CK0201.RRKS_SBT_CD = '1' AND CK0201.RRKS_BUNRUI_CD = '1') ")
							.append("            OR   (CK0201.RRKS_SBT_CD = '2' AND CK0201.RRKS_BUNRUI_CD = '0')) ")
							.append("            AND  CK0201.RRK_WAY_CD = '003' ")
							.append("        UNION ALL ")
							.append("            SELECT CK0011_03.SYSID ")
							.append("            FROM   CK_T_CUST CK0011_03 ")
							.append("            WHERE (CK0011_03.SYSID, CK0011_03.RSV_APLY_YMD || CK0011_03.GENE_ADD_DTM) = ")
							.append("                  (SELECT CK0011_03_GENE.SYSID, MAX(CK0011_03_GENE.RSV_APLY_YMD || CK0011_03_GENE.GENE_ADD_DTM) ")
							.append("                   FROM  CK_T_CUST CK0011_03_GENE ")
							.append("                   WHERE CK0011_03_GENE.SYSID = CK0011_03.SYSID ")
							.append("                   AND   CK0011_03_GENE.RSV_APLY_YMD <= ? ")
							.append("                   AND   CK0011_03_GENE.RSV_APLY_CD = '2' ")
							.append("                   AND   CK0011_03_GENE.MK_FLG = '0' ")
							.append("                   GROUP BY CK0011_03_GENE.SYSID) ")
							.append("                   AND EXISTS (")
							.append("                       SELECT 1 ")
							.append("                       FROM  CK_T_CUST_KOJIN CK0021 ")
							.append("                       WHERE CK0021.SYSID = CK0011_03.SYSID ")
							.append("                       AND   CK0021.GENE_ADD_DTM = CK0011_03.GENE_ADD_DTM ")
							.append("                       AND   CK0021.MK_FLG = '0' ")
							.append("                       AND   CK0021.SKSHA_TELNO = ?) ")
							.append("                   AND CK0011_03.MEMBER_SBT_CD = '10' ")
							.append("                   AND CK0011_03.KEISHA_TYPE_CD IN ('1', '3') ")
							.append("                   AND NVL(CK0011_03.EONETID_MI_IKO_FLG, '0') = '0' ")
							.append("                   AND NVL(CK0011_03.MMB_SBT_TOKUT_FLG, '1') = '1' ")
							.append("        UNION ALL SELECT ")
							.append("            KK0081_07.SYSID ")
							.append("            FROM KK_T_SVC_KEI KK0081_07 ")
							.append("            WHERE (KK0081_07.SVC_KEI_NO, KK0081_07.RSV_APLY_YMD || KK0081_07.GENE_ADD_DTM) = ")
							.append("                  (SELECT KK0081_07_GENE.SVC_KEI_NO, MAX(KK0081_07_GENE.RSV_APLY_YMD || KK0081_07_GENE.GENE_ADD_DTM) ")
							.append("                   FROM  KK_T_SVC_KEI KK0081_07_GENE ")
							.append("                   WHERE KK0081_07_GENE.SVC_KEI_NO = KK0081_07.SVC_KEI_NO ")
							.append("                   AND   KK0081_07_GENE.RSV_APLY_YMD <= ? ")
							.append("                   AND   KK0081_07_GENE.RSV_APLY_CD = '2' ")
							.append("                   AND   KK0081_07_GENE.MK_FLG = '0' ")
							.append("                   GROUP BY KK0081_07_GENE.SVC_KEI_NO) ")
							.append("            AND EXISTS (")
							.append("                SELECT 1 ")
							.append("                FROM  KK_T_SVC_KEI_UCWK KK0161_04 ")
							.append("                WHERE KK0161_04.SVC_KEI_NO = KK0081_07.SVC_KEI_NO ")
							.append("                AND   KK0161_04.KEIZK_AF_KEI_CHGECHU_FLG = '0' ")
							.append("                AND (KK0161_04.SVC_KEI_UCWK_NO, KK0161_04.RSV_APLY_YMD || KK0161_04.GENE_ADD_DTM) = ")
							.append("                    (SELECT KK0161_04_GENE.SVC_KEI_UCWK_NO, MAX(KK0161_04_GENE.RSV_APLY_YMD || KK0161_04_GENE.GENE_ADD_DTM) ")
							.append("                     FROM KK_T_SVC_KEI_UCWK KK0161_04_GENE ")
							.append("                     WHERE KK0161_04_GENE.SVC_KEI_UCWK_NO = KK0161_04.SVC_KEI_UCWK_NO ")
							.append("                     AND KK0161_04_GENE.RSV_APLY_YMD <= ? ")
							.append("                     AND KK0161_04_GENE.RSV_APLY_CD = '2' ")
							.append("                     AND KK0161_04_GENE.MK_FLG = '0' ")
							.append("                     GROUP BY KK0161_04_GENE.SVC_KEI_UCWK_NO) ")
							.append("                AND EXISTS (")
							.append("                    SELECT 1 ")
							.append("                    FROM KK_T_SVKEIUW_EOH_TEL KK0191 ")
							.append("                    WHERE KK0191.SVC_KEI_UCWK_NO = KK0161_04.SVC_KEI_UCWK_NO ")
							.append("                    AND KK0191.GENE_ADD_DTM = KK0161_04.GENE_ADD_DTM ")
							.append("                    AND KK0191.MK_FLG = '0' ")
							.append("                    AND KK0191.TELNO = ?)) ")
							.append("        UNION ALL SELECT ")
							.append("            KK0081_08.SYSID ") 
							.append("            FROM KK_T_SVC_KEI KK0081_08 ") 
							.append("            WHERE (KK0081_08.SVC_KEI_NO, KK0081_08.RSV_APLY_YMD || KK0081_08.GENE_ADD_DTM) = ")
							.append("                  (SELECT KK0081_08_GENE.SVC_KEI_NO, MAX(KK0081_08_GENE.RSV_APLY_YMD || KK0081_08_GENE.GENE_ADD_DTM) ")
							.append("                   FROM  KK_T_SVC_KEI KK0081_08_GENE ")
							.append("                   WHERE KK0081_08_GENE.SVC_KEI_NO = KK0081_08.SVC_KEI_NO ")
							.append("                   AND   KK0081_08_GENE.RSV_APLY_YMD <= ? ")
							.append("                   AND   KK0081_08_GENE.RSV_APLY_CD = '2' ")
							.append("                   AND   KK0081_08_GENE.MK_FLG = '0' ")
							.append("                   GROUP BY KK0081_08_GENE.SVC_KEI_NO) ")
							.append("            AND EXISTS (")
							.append("                SELECT 1 ")
							.append("                FROM  KK_T_KAKINS KK0321 ")
							.append("                WHERE KK0321.SVC_KEI_NO = KK0081_08.SVC_KEI_NO ")
							.append("                AND    KK0321.KAKINS_TSTAYMD <= ? ")
							.append("                AND    KK0321.KAKINS_TENDYMD >= ? ")
							.append("                AND    KK0321.MK_FLG = '0' ")
							.append("                AND EXISTS (")
							.append("                    SELECT 1 ")
							.append("                    FROM KK_T_SEIKY_KEI KK0491 ") 
							.append("                    WHERE  KK0491.SEIKY_KEI_NO = KK0321.SEIKY_KEI_NO ")
							.append("                    AND   (KK0491.SEIKY_KEI_NO, KK0491.RSV_APLY_YMD || KK0491.GENE_ADD_DTM) = ")
							.append("                          (SELECT KK0491_GENE.SEIKY_KEI_NO, MAX(KK0491_GENE.RSV_APLY_YMD || KK0491_GENE.GENE_ADD_DTM) ")
							.append("                           FROM  KK_T_SEIKY_KEI KK0491_GENE ")
							.append("                           WHERE KK0491_GENE.SEIKY_KEI_NO = KK0491.SEIKY_KEI_NO ")
							.append("                           AND   KK0491_GENE.RSV_APLY_YMD <= ? ")
							.append("                           AND   KK0491_GENE.RSV_APLY_CD = '2' ")
							.append("                           AND   KK0491_GENE.MK_FLG = '0' ")
							.append("                           GROUP BY KK0491_GENE.SEIKY_KEI_NO) ")
							.append("                    AND   KK0491.SOHUS_TELNO = ? ") 
							.append("            	)) ")
							.append("        UNION ALL SELECT ")
							.append("            KK0081_09.SYSID ")
							.append("            FROM KK_T_SVC_KEI KK0081_09 ")
							.append("            WHERE (KK0081_09.SVC_KEI_NO, KK0081_09.RSV_APLY_YMD || KK0081_09.GENE_ADD_DTM) = ")
							.append("                  (SELECT KK0081_09_GENE.SVC_KEI_NO, MAX(KK0081_09_GENE.RSV_APLY_YMD || KK0081_09_GENE.GENE_ADD_DTM) ")
							.append("                   FROM  KK_T_SVC_KEI KK0081_09_GENE ")
							.append("                   WHERE KK0081_09_GENE.SVC_KEI_NO = KK0081_09.SVC_KEI_NO ")
							.append("                   AND   KK0081_09_GENE.RSV_APLY_YMD <= ? ")
							.append("                   AND   KK0081_09_GENE.RSV_APLY_CD = '2' ")
							.append("                   AND   KK0081_09_GENE.MK_FLG = '0' ")
							.append("                   GROUP BY KK0081_09_GENE.SVC_KEI_NO) ")
							.append("            AND EXISTS (")
							.append("                SELECT 1 ")
							.append("                FROM  KK_T_OP_SVC_KEI KK0351_01 ")
							.append("                WHERE KK0351_01.SVC_KEI_NO = KK0081_09.SVC_KEI_NO ")
							.append("                AND (KK0351_01.OP_SVC_KEI_NO, KK0351_01.RSV_APLY_YMD || KK0351_01.GENE_ADD_DTM) = ")
							.append("                    (SELECT KK0351_01_GENE.OP_SVC_KEI_NO, MAX(KK0351_01_GENE.RSV_APLY_YMD || KK0351_01_GENE.GENE_ADD_DTM) ")
							.append("                     FROM KK_T_OP_SVC_KEI KK0351_01_GENE ")
							.append("                     WHERE KK0351_01_GENE.OP_SVC_KEI_NO = KK0351_01.OP_SVC_KEI_NO ")
							.append("                     AND KK0351_01_GENE.RSV_APLY_YMD <= ? ")
							.append("                     AND KK0351_01_GENE.RSV_APLY_CD = '2' ")
							.append("                     AND KK0351_01_GENE.MK_FLG = '0' ")
							.append("                     GROUP BY KK0351_01_GENE.OP_SVC_KEI_NO) ")
							.append("                AND EXISTS (")
							.append("                    SELECT 1 ")
							.append("                    FROM KK_T_OPSVKEI_TEL KK0371 ")
							.append("                    WHERE KK0371.OP_SVC_KEI_NO = KK0351_01.OP_SVC_KEI_NO ")
							.append("                    AND KK0371.GENE_ADD_DTM = KK0351_01.GENE_ADD_DTM ")
							.append("                    AND KK0371.MK_FLG = '0' ")
							.append("                    AND KK0371.N_050_OP_TELNO = ?)) ")
							.append("        UNION ALL SELECT ")
							.append("            KK0081_10.SYSID ")
							.append("            FROM KK_T_SVC_KEI KK0081_10 ")
							.append("            WHERE (KK0081_10.SVC_KEI_NO, KK0081_10.RSV_APLY_YMD || KK0081_10.GENE_ADD_DTM) = ")
							.append("                  (SELECT KK0081_10_GENE.SVC_KEI_NO, MAX(KK0081_10_GENE.RSV_APLY_YMD || KK0081_10_GENE.GENE_ADD_DTM) ")
							.append("                   FROM  KK_T_SVC_KEI KK0081_10_GENE ")
							.append("                   WHERE KK0081_10_GENE.SVC_KEI_NO = KK0081_10.SVC_KEI_NO ")
							.append("                   AND   KK0081_10_GENE.RSV_APLY_YMD <= ? ")
							.append("                   AND   KK0081_10_GENE.RSV_APLY_CD = '2' ")
							.append("                   AND   KK0081_10_GENE.MK_FLG = '0' ")
							.append("                   GROUP BY KK0081_10_GENE.SVC_KEI_NO) ")
							.append("            AND EXISTS (")
							.append("                SELECT 1 ")
							.append("                FROM  KK_T_OP_SVC_KEI KK0351_02 ")
							.append("                WHERE KK0351_02.SVC_KEI_NO = KK0081_10.SVC_KEI_NO ")
							.append("                AND (KK0351_02.OP_SVC_KEI_NO, KK0351_02.RSV_APLY_YMD || KK0351_02.GENE_ADD_DTM) = ")
							.append("                    (SELECT KK0351_02_GENE.OP_SVC_KEI_NO, MAX(KK0351_02_GENE.RSV_APLY_YMD || KK0351_02_GENE.GENE_ADD_DTM) ")
							.append("                     FROM KK_T_OP_SVC_KEI KK0351_02_GENE ")
							.append("                     WHERE KK0351_02_GENE.OP_SVC_KEI_NO = KK0351_02.OP_SVC_KEI_NO ")
							.append("                     AND KK0351_02_GENE.RSV_APLY_YMD <= ? ")
							.append("                     AND KK0351_02_GENE.RSV_APLY_CD = '2' ")
							.append("                     AND KK0351_02_GENE.MK_FLG = '0' ")
							.append("                     GROUP BY KK0351_02_GENE.OP_SVC_KEI_NO) ")
							.append("                AND EXISTS (")
							.append("                    SELECT 1 ")
							.append("                    FROM KK_T_OPSVKEI_ISP KK0361 ")
							.append("                    WHERE KK0361.OP_SVC_KEI_NO = KK0351_02.OP_SVC_KEI_NO ")
							.append("                    AND KK0361.GENE_ADD_DTM = KK0351_02.GENE_ADD_DTM ")
							.append("                    AND KK0361.MK_FLG = '0' ")
							.append("                    AND KK0361.KOSHUMO_TELNO = ?)) ")
							.append("            ) CK0011_TEL ")
							.append("        ) TEL_ALL ")
							.append("    WHERE TEL_ALL.SYSID = CK0011.SYSID) ");


					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿全電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_ALL_TELNO));
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿全電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_ALL_TELNO));
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿全電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_ALL_TELNO));
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿全電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_ALL_TELNO));
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿全電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_ALL_TELNO));
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿全電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_ALL_TELNO));
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(運用日付)
					alBindSelect.add(date);
					// バインド変数設定(ＫＥＹ＿全電話番号)
					alBindSelect.add(inMsg.getString(ECK0011B011CBSMsg.KEY_ALL_TELNO));
				}
			}
			
			  sbForm.append("    AND CK0011.MEMBER_SBT_CD IN ('10', '20') ")
					.append("    AND CK0011.KEISHA_TYPE_CD IN ('1', '2', '3', '4') ")
					.append("    AND NVL(CK0011.EONETID_MI_IKO_FLG, '0') = '0' ")
					.append("    AND NVL(CK0011.MMB_SBT_TOKUT_FLG, '1') = '1' ");
			
			if (!inMsg.isNull(ECK0011B011CBSMsg.KEY_SORT_ITEM_NO)) {
				// ORDER BY句
				sbOrderBy.append(" ORDER BY ");
				
				if(SORTITEM_SYSID.equals(inMsg.getString(ECK0011B011CBSMsg.KEY_SORT_ITEM_NO))) {
					// ＫＥＹ＿ソート項目Noが"1"(SYSID)の場合
					sbOrderBy.append(" CK0011.SYSID ");
					
				} else if(SORTITEM_CUST_STAT.equals(inMsg.getString(ECK0011B011CBSMsg.KEY_SORT_ITEM_NO))) {
					// ＫＥＹ＿ソート項目Noが"2"(お客様ステータス + お客様入退会コード)の場合
					sbOrderBy.append(" CK0011.CUST_STAT ");
					sbOrderBy.append(" || CK0011.CUST_NTAIKAI_CD ");
					
				} else if(SORTITEM_EOID.equals(inMsg.getString(ECK0011B011CBSMsg.KEY_SORT_ITEM_NO))) {
					// ＫＥＹ＿ソート項目Noが"3"(eoID)の場合
					sbOrderBy.append(" CK0011.EOID ");
					
				} else if(SORTITEM_CUST_NM.equals(inMsg.getString(ECK0011B011CBSMsg.KEY_SORT_ITEM_NO))) {
					// ＫＥＹ＿ソート項目Noが"4"(お客様名)の場合
					sbOrderBy.append(" CK0011.CUST_NM ");
					
				} else if(SORTITEM_CUST_KANA.equals(inMsg.getString(ECK0011B011CBSMsg.KEY_SORT_ITEM_NO))) {
					// ＫＥＹ＿ソート項目Noが"5"(お客様名カナ)の場合
					sbOrderBy.append(" CK0011.CUST_KANA ");
					
				} else if(SORTITEM_AD.equals(inMsg.getString(ECK0011B011CBSMsg.KEY_SORT_ITEM_NO))) {
					// ＫＥＹ＿ソート項目Noが"6"(契約者都道府県名 + 契約者市区町村名 + 契約者大字通称名 
					// + 契約者字丁目名 + 契約者番地号 + 契約者住所補記・建物名 + 契約者住所補記・部屋番号)の場合
					sbOrderBy.append(" CK0011.KEISHA_STATE_NM ");
					sbOrderBy.append(" || CK0011.KEISHA_CITY_NM ");
					sbOrderBy.append(" || CK0011.KEISHA_OAZTSU_NM ");
					sbOrderBy.append(" || CK0011.KEISHA_AZCHO_NM ");
					sbOrderBy.append(" || CK0011.KEISHA_BNCHIGO ");
					sbOrderBy.append(" || CK0011.KEISHA_ADRTTM ");
					sbOrderBy.append(" || CK0011.KEISHA_ADRRM ");
					
				} else if(SORTITEM_KEISHA_TELNO.equals(inMsg.getString(ECK0011B011CBSMsg.KEY_SORT_ITEM_NO))) {
					// ＫＥＹ＿ソート項目Noが"7"(契約者電話番号)の場合
					sbOrderBy.append(" CK0011.KEISHA_TELNO ");
					
				} else if(SORTITEM_CUST_BIRTHD.equals(inMsg.getString(ECK0011B011CBSMsg.KEY_SORT_ITEM_NO))) {
					// ＫＥＹ＿ソート項目Noが"8"(お客様生年月日)の場合
					sbOrderBy.append(" CK0011.CUST_BIRTHD ");
				}
				
				if(SORTKBN_ASC.equals(inMsg.getString(ECK0011B011CBSMsg.KEY_SORT_KBN))) {
					// ＫＥＹ＿ソート区分が"1"(昇順)の場合
					sbOrderBy.append(" ASC ");
				}
				else if(SORTKBN_DESC.equals(inMsg.getString(ECK0011B011CBSMsg.KEY_SORT_KBN))) {
					// ＫＥＹ＿ソート区分が"2"(降順)の場合
					sbOrderBy.append(" DESC ");
				}
				
				if(!SORTITEM_SYSID.equals(inMsg.getString(ECK0011B011CBSMsg.KEY_SORT_ITEM_NO))) {
					// ソート項目がSYSID以外の場合、第2ソート項目にSYSID(昇順)を追加
					sbOrderBy.append(" , CK0011.SYSID ");
					sbOrderBy.append(" ASC ");
				}
			}

			// ページング用フッタの設定
			sbPageFoot.append(" ) ALL_SELECT ")
						.append(" ) PAGE_SELECT ")
						.append(" WHERE PAGE_SELECT.LINE BETWEEN ? AND ? ")
						.append(" ORDER BY PAGE_SELECT.LINE ASC ");
		
			// カウント文SQL生成
			sql_Buff_1.append(sbCount)
					.append(sbForm);
			
			//prepareStatementにSQL文をセット
			pstmtCount = con1.prepareStatement(sql_Buff_1.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff_1);
			
			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			if ( "1".equals( inMsg.getString(ECK0011B011CBSMsg.FUNC_CODE) ) ) {
				for(int i = 0; i < alBindSelect.size(); i++) {
					CAANJDBCUtil.setParam(pstmtCount, i + 1, alBindSelect.get(i));
				}
			}
			
			// ResultSetの取得
			rsltQueryCount = pstmtCount.executeQuery();
			
			// 総検索件数を取得する
			long lDataCnt = 0L;
			if (rsltQueryCount.next()) {
				lDataCnt = rsltQueryCount.getLong("CNT");
			}
	
			// 表示件数
			long lDispNum = inMsg.getStringAsLong(ECK0011B011CBSMsg.DISPLAY_NUM);
			// 表示ページ数
			long lDispPage = inMsg.getStringAsLong(ECK0011B011CBSMsg.DISPLAY_PAGE_NUM);
			// 最大取得件数
			long lMaxNum = inMsg.getStringAsLong(ECK0011B011CBSMsg.MAX_SEARCH_NUM);
			// 総ページ数
			String strMaxPage = JKKejbPagingUtil.calcTotalPage(lDataCnt, lDispNum);
	
			// 共通部に値を設定する
			inMsg.set(ECK0011B011CBSMsg.TOTAL_SEARCH_NUM, String.valueOf(lDataCnt));   // 総検索件数
			inMsg.set(ECK0011B011CBSMsg.TOTAL_PAGE_NUM, strMaxPage);   // 総ページ数
	
			// データ取得件数が0件の場合エラー
			if (0L == lDataCnt) {
				inMsg.set(ECK0011B011CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_ZERO);
				return;
			}
	
			// 最大取得件数を超えた場合エラー
			if (lDataCnt > lMaxNum) {
				inMsg.set(ECK0011B011CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_OVERMAX);
				return;
			}
			
			sql_Buff_2.append(sbPageHead)
						.append(sbSelect)
						.append(sbForm)
						.append(sbOrderBy)
						.append(sbPageFoot);
	
			//prepareStatementにSQL文をセット
			pstmtSelect = con1.prepareStatement(sql_Buff_2.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff_2);
			
			// 検索対象行を算出する
			long[] lPages = JKKejbPagingUtil.calcSearchRows(lDispPage, lDispNum);
			alBind.add(lPages[0]);
			alBind.add(lPages[1]);
	
			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			if ("1".equals( inMsg.getString(ECK0011B011CBSMsg.FUNC_CODE))) {
				int iBindCounter = 1;
				for(int i = 0; i < alBindSelect.size(); i++) {
					// SELECT句に設定するバインド変数値
					CAANJDBCUtil.setParam(pstmtSelect, iBindCounter++, alBindSelect.get(i));
				}
	
				// FROM句以降に設定するバインド変数値
				for(int i = 0; i < alBind.size(); i++) {
					// FROM句以降に設定するバインド変数値
					CAANJDBCUtil.setParam(pstmtSelect, iBindCounter++, alBind.get(i));
				}
			}
		

			rsltQuerySelect = pstmtSelect.executeQuery();
			
			// ECK0011B011CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  ECK0011B011CBSMsg1List.SYSID
					, ECK0011B011CBSMsg1List.CUST_STAT
					, ECK0011B011CBSMsg1List.CUST_STAT_NM
					, ECK0011B011CBSMsg1List.EOID
					, ECK0011B011CBSMsg1List.CUST_NM
					, ECK0011B011CBSMsg1List.CUST_KANA
					, ECK0011B011CBSMsg1List.KEISHA_STATE_NM
					, ECK0011B011CBSMsg1List.KEISHA_CITY_NM
					, ECK0011B011CBSMsg1List.KEISHA_OAZTSU_NM
					, ECK0011B011CBSMsg1List.KEISHA_AZCHO_NM
					, ECK0011B011CBSMsg1List.KEISHA_BNCHIGO
					, ECK0011B011CBSMsg1List.KEISHA_ADRTTM
					, ECK0011B011CBSMsg1List.KEISHA_ADRRM
					, ECK0011B011CBSMsg1List.KEISHA_TELNO
					, ECK0011B011CBSMsg1List.CUST_BIRTHD
					, ECK0011B011CBSMsg1List.CUST_NTAIKAI_CD
			};
			
			// 取得データをマッピングする
			ArrayList<CAANMsg> alMsg = new ArrayList<CAANMsg>();
			while (rsltQuerySelect.next()) {
				CAANMsg inMsgList = new CAANMsg(ECK0011B011CBSMsg1List.class.getName());
			
				for (int i = 0; i < msgKeyList1.length; i++) {
					inMsgList.set(msgKeyList1[i], rsltQuerySelect.getString(i + 1));
				}
				alMsg.add(inMsgList);
			}
			
			// 取得結果が0件の場合は表示ページ該当なしエラー
			if (0 == alMsg.size()) {
				inMsg.set(ECK0011B011CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_NODATA);
				return;
			}
			// inMsg(CBSMsg)に明細をセット
			inMsg.set("ECK0011B011CBSMsg1List", alMsg.toArray(new CAANMsg[0]));
			
		} catch(SQLException e) {
			inMsg.set(ECK0011B011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
			
		} finally {
			// 資源の解放
			try{
				if(rsltQueryCount != null) {
					rsltQueryCount.close();
				}
				if(rsltQuerySelect != null) {
					rsltQuerySelect.close();
				}
				if(pstmtCount != null) {
					pstmtCount.close();
				}
				if(pstmtSelect != null) {
					pstmtSelect.close();
				}
				if(con1 != null) {
					closeConnection(con1);
				}
			} catch (SQLException e) {
				inMsg.set(ECK0011B011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * <p>
	 * 前方一致または部分一致する値を設定します。
	 * </p>
	 * @param value 検索値
	 * @param kbn 検索区分 "1":前方一致、"2":部分一致
	 * @return 検索値にLIKE検索文字列置き換え処理を行い、前方一致検索または部分一致検索用に%を付与した値
	*/
	private String getSearchValue(String value, String kbn) {
		// LIKE検索文字列置き換え処理を行い、前方一致検索用に文字列の後方にパーセントを付与
		String ret = JZMModelCommon.replaceLikeValue(value) + "%";
		
		if(SRCHKBN_PART.equals(kbn)) {
			// 区分が「部分一致」の場合、部分一致検索用に文字列の前方にもパーセントを付与
			ret = "%" + ret;
		}
		
		return ret;
	}
}
