/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbEKK0021B610TPDA
*	ソースファイル名：JSYejbEKK0021B610TPDA.java
*	作成者			：EK919876
*	日付			：2017年04月05日
*＜機能概要＞
*	訪販申込一覧照会テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
**   v29.00.00	2017/04/10	FJ)鈴木		【ANK-3158-00-00】訪販申込情報の検索・取得API作成
*	 v29.00.01	2017/04/27	FJ)舘山		【IT1-2017-0000027】mineo/電気の受付番号＋カナ名検索で正しく値が取得できない
*	 v29.00.02	2017/05/11	FJ)舘山		【ST-2017-0000003】キャンセル日を指定した際に長時間走行する
*	 v29.00.03	2017/05/19	FJ)舘山		【IT1-2017-0000060】配送依頼指定年月日を指定したデータが取得できない
*	 v33.00.00	2017/08/24	FJ)柳		【ANK-3278-00-00】訪販申込情報検索APIの条件変更
********************************************************************************/

package eo.ejb.cbs.sqlf;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANSQLFacility;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.base.CAANJDBCUtil;
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.TemplateDBAccessHandler;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0021B610CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021B610CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B004CBSMsg;
import eo.ejb.cbm.entity.KK0021ETMsg;
import eo.ejb.common.JKKModelCommon;
import eo.ejb.common.JZMModelCommon;

/**
*
*  テンプレートDBアクセス部品　EKK0021B610_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbEKK0021B610TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
	
	/** eo光ネットサービスコード ホーム */
	private static final String OHNT_SVC_CD_HT = "1";
	/** eo光ネットサービスコード メゾン */
	private static final String OHNT_SVC_CD_MZ = "2";
	/** eo光ネットサービスコード マンション */
	private static final String OHNT_SVC_CD_MT = "3";
	
	/** 宅内調査実施年月日 */
	private static final String STEP_PRG_SBT_TK_CH_RSV = "2";
	/** 宅内工事完了予定年月日 */
	private static final String STEP_PRG_SBT_TK_KJ_RSV = "3";
	/** 工事案件実施年月日 */
	private static final String STEP_PRG_SBT_TK_KJ_FIX = "4";
	/** 機器出荷予定日 */
	private static final String STEP_PRG_SBT_KK_SP_RSV = "5";
	/** 開通希望日*/
	private static final String STEP_PRG_SBT_KT_KB_YMD = "6";
	/** サービス開始日*/
	private static final String STEP_PRG_SBT_SV_ST_YMD = "7";
	
	/** 工事種別 IP*/
	private static final String KOJI_SBT_IP = "IP";
	/** 工事種別 TV*/
	private static final String KOJI_SBT_TV = "TV";

	/** 最大検索件数を設定する */
	private static long MAX_RECORD_COUNT = 400;

// ▼▼▼ ST-2017-0000003 ADD START
	/** 最大検索件数を設定する */
	private static int MAX_RECORD_COUNT_PLUS_1 = 401;
// △△△ ST-2017-0000003 ADD END
	/**
	 * コンストラクタ
	 */
	public JSYejbEKK0021B610TPDA()	{
	}
	
	/**
	*   EKK0021B610_SQLF<br>
	*   @param inMsg    入力値の格納されたCBSMsg <br>
	*   @return void
	*/
	public void invoke(CAANMsg inMsg,AgentDispatchContext inContext){
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		// 検索パラメータ
		ArrayList<Object> paramList = new ArrayList<Object>();
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try{
			
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK0021ETMsg.getTableName());
			
			// SQL文の作成(件数取得用)
			StringBuffer sql_Buff4 = new StringBuffer();
			sql_Buff4.append(" SELECT  ")
					.append("     COUNT(*) AS CNT  ");
			
			// SQL文_基本部0
			StringBuffer sql_Buff0 = new StringBuffer();
// ▼▼▼ ST-2017-0000003 2017-05-11 Modify START
//			sql_Buff0.append(" SELECT ")
			sql_Buff0.append(" SELECT /*EKK0021B610*/")
// △△△ ST-2017-0000003 2017-05-11 Modify END
// ANK-3278-00-00 2017/08/24 MOD START
//					.append("      KK0021.KEY_MSKMSHO_NO ")
//					.append("     ,KK0021.FIRST_MSKM_YMD ")
					.append("      KK3101.MSKMSHO_NO ")
					.append("     ,KK3101.MSKM_YMD ")
// ANK-3278-00-00 2017/08/24 MOD END
					.append("     ,( ")
					.append("        SELECT KK0061.AGNT_CD || ' ' || KK0061.AGNT_NM  ")
					.append("          FROM KK_M_AGNT KK0061  ")
// IT1-2017-0000027 2017-04-27 MOD START
//					.append("           WHERE KK0061.AGNT_CD = KK2501.AGNT_CD_1_2")
					.append("           WHERE KK0061.AGNT_CD = KK0071_1.AGNT_CD")
// IT1-2017-0000027 2017-04-27 MOD END
					.append("             AND KK0061.GENE_ADD_DTM = ( ")
					.append("                 SELECT MAX(KK0061_GENE.GENE_ADD_DTM) MAX_GENE ")
					.append("                    FROM KK_M_AGNT KK0061_GENE")
// IT1-2017-0000027 2017-04-27 MOD START
//					.append("                    WHERE KK0061_GENE.AGNT_CD = KK2501.AGNT_CD_1_2 ")
					.append("                    WHERE KK0061_GENE.AGNT_CD = KK0071_1.AGNT_CD ")
// IT1-2017-0000027 2017-04-27 MOD END
					.append("                     AND ? BETWEEN KK0061_GENE.AGNT_TSTAYMD AND KK0061_GENE.AGNT_TENDYMD ")
					.append("                     AND KK0061_GENE.MK_FLG = '0'")
					.append("             ) ")
					.append("             AND KK0061.MK_FLG = '0'")
					.append("       ) AGNT_CD_1_2_CN                    ")
					.append("     ,( ")
					.append("        SELECT KK0061.AGNT_CD || ' ' || KK0061.AGNT_NM  ")
					.append("           FROM KK_M_AGNT KK0061  ")
// IT1-2017-0000027 2017-04-27 MOD START
//					.append("           WHERE KK0061.AGNT_CD = KK2501.AGNT_CD_2_2")
					.append("           WHERE KK0061.AGNT_CD = KK0071_2.AGNT_CD")
// IT1-2017-0000027 2017-04-27 MOD END
					.append("             AND KK0061.GENE_ADD_DTM = (")
					.append("                 SELECT MAX(KK0061_GENE.GENE_ADD_DTM) MAX_GENE ")
					.append("                   FROM KK_M_AGNT KK0061_GENE")
// IT1-2017-0000027 2017-04-27 MOD START
//					.append("                    WHERE KK0061_GENE.AGNT_CD = KK2501.AGNT_CD_2_2")
					.append("                    WHERE KK0061_GENE.AGNT_CD = KK0071_2.AGNT_CD")
// IT1-2017-0000027 2017-04-27 MOD END
					.append("                     AND ? BETWEEN KK0061_GENE.AGNT_TSTAYMD AND KK0061_GENE.AGNT_TENDYMD ")
					.append("                     AND KK0061_GENE.MK_FLG = '0'")
					.append("             ) ")
					.append("             AND KK0061.MK_FLG = '0'")
					.append("      ) AGNT_CD_2_2_CN                    ")
					.append("     ,CK0011.CUST_NM                     ")
					.append("     ,KK0011.THNX_CALL_JSSI_YMD           ")
					.append("     ,KK0011.MSKM_CNCL_JGI_SNN_SHIN_YMD    ")
					.append("     ,KK0011.MSKM_CNCL_JGI_SNN_YMD        ")
					.append("     ,KK0011.MSKM_CNCL_JGI_HNN_YMD       ");

			// SQL文_基本部1
			StringBuffer sql_Buff1 = new StringBuffer();
			
			sql_Buff1.append(" FROM ( ")
// ANK-3278-00-00 2017/08/24 MOD START
//					.append(" SELECT KK0021_ENB.KEY_MSKMSHO_NO")
//					.append("       ,KK0021_ENB.KEY_MSKM_NO ")
//					.append("       ,MIN(KK0021_ENB.ALL_MSKM_YMD) FIRST_MSKM_YMD ")
//					.append(" FROM ( ")
//					.append("     SELECT KK0021_BASE.MSKM_DTL_NO ")
//					.append("           ,KK0021_BASE.GENE_ADD_DTM")
//					.append("           ,NVL(KK0021_BASE.DOJI_MSKM_EOH_MSKMSHO_NO, KK0021_BASE.MSKMSHO_NO) KEY_MSKMSHO_NO ")
//					.append("           ,NVL(KK0021_DMSKM.MSKM_NO, KK0021_BASE.MSKM_NO) KEY_MSKM_NO ")
//					.append("           ,NVL(KK0021_DMSKM.MSKM_YMD, KK0021_BASE.MSKM_YMD) ALL_MSKM_YMD")
//					.append(" FROM (")
//					.append("     SELECT KK0021_01.MSKM_DTL_NO ")
//					.append("           ,KK0021_01.MSKMSHO_NO  ")
//					.append("           ,KK0021_01.DOJI_MSKM_EOH_MSKMSHO_NO ")
//					.append("           ,KK0021_01.MSKM_NO ")
//					.append("           ,KK0021_01.MSKM_YMD")
//					.append("           ,KK0021_01.GENE_ADD_DTM ")
//// IT1-2017-0000027 2017-04-27 ADD START
//					.append("           ,KK0021_01.SYSID ")
//// IT1-2017-0000027 2017-04-27 ADD END
//					.append(" FROM KK_T_MSKM_DTL KK0021_01 ")
//					.append("     WHERE KK0021_01.MSKM_FORM_CD = '03' ")
//					.append("    AND KK0021_01.MK_FLG = '0'   ");
					.append(" SELECT ")
					.append("        KK3101_A.MSKMSHO_NO ")
					.append("       ,MIN(KK3101_A.MSKM_YMD) MSKM_YMD ")
					.append("       ,KK3101_A.MSKM_NO ")
					.append("       ,KK3101_A.SYSID ")
					.append(" FROM ")
					.append("        KK_T_TSYRN_YO_MSJK KK3101_A ")
					.append(" WHERE ")
					.append("        KK3101_A.MK_FLG = '0' ");
// ANK-3278-00-00 2017/08/24 MOD END
					
			// SQL文_個別条件A
			StringBuffer sql_Buff2 = createCondition2(inMsg, paramList);
// ANK-3278-00-00 2017/08/24 DEL START
//			
//			sql_Buff2.append("   AND (KK0021_01.MSKM_DTL_NO, KK0021_01.GENE_ADD_DTM) = ( ")
//					.append("       SELECT KK0021_MIN.MSKM_DTL_NO, MIN(KK0021_MIN.GENE_ADD_DTM) FROM KK_T_MSKM_DTL KK0021_MIN ")
//					.append("         WHERE KK0021_MIN.MSKM_DTL_NO = KK0021_01.MSKM_DTL_NO ")
//					.append("           AND KK0021_MIN.MK_FLG = '0' ")
//					.append("         GROUP BY KK0021_MIN.MSKM_DTL_NO ")
//					.append("       )")
//					.append("  ) KK0021_BASE")
//					.append("  LEFT OUTER JOIN (")
//					.append("       SELECT KK0021_02.MSKMSHO_NO, KK0021_02.MSKM_NO, KK0021_02.MSKM_YMD  ")
//					.append("         FROM KK_T_MSKM_DTL KK0021_02 ")
//					.append("    	  WHERE (KK0021_02.MSKM_DTL_NO, KK0021_02.GENE_ADD_DTM) = ( ")
//					.append("            SELECT KK0021_GENE.MSKM_DTL_NO, MIN(KK0021_GENE.GENE_ADD_DTM) MIN_GENE ")
//					.append("                FROM KK_T_MSKM_DTL KK0021_GENE ")
//					.append("                WHERE KK0021_GENE.MSKM_DTL_NO = KK0021_02.MSKM_DTL_NO ")
//					.append("                  AND KK0021_GENE.MK_FLG = '0'  ")
//					.append("               GROUP BY KK0021_GENE.MSKM_DTL_NO  ")
//					.append("           )   ")
//					.append("            AND KK0021_02.MK_FLG = '0'  ")
//					.append("  ) KK0021_DMSKM      ")
//					.append("  ON KK0021_DMSKM.MSKMSHO_NO = KK0021_BASE.DOJI_MSKM_EOH_MSKMSHO_NO ");
// ANK-3278-00-00 2017/08/24 DEL END
							
			// SQL文_個別条件B
			StringBuffer sql_Buff3 = createCondition3(inMsg, paramList);
					 
// ANK-3278-00-00 2017/08/24 MOD START
//			sql_Buff3.append(" ) KK0021_ENB ")
//					.append(" GROUP BY KK0021_ENB.KEY_MSKMSHO_NO ")
//					.append("         ,KK0021_ENB.KEY_MSKM_NO")
//					.append("   ) KK0021 ")
			sql_Buff3.append(" GROUP BY ")
					.append("      KK3101_A.MSKMSHO_NO ")
					.append("    , KK3101_A.MSKM_YMD ")
					.append("    , KK3101_A.MSKM_NO ")
					.append("    , KK3101_A.SYSID ")
					.append(" ) KK3101 ")
// ANK-3278-00-00 2017/08/24 MOD END
					.append(" INNER JOIN KK_T_MSKM KK0011 ")
// ANK-3278-00-00 2017/08/24 MOD START
//					.append("   ON  KK0011.MSKM_NO = KK0021.KEY_MSKM_NO ")
					.append("   ON  KK0011.MSKM_NO = KK3101.MSKM_NO ")
// ANK-3278-00-00 2017/08/24 MOD END
					.append("  AND  (KK0011.MSKM_NO, KK0011.GENE_ADD_DTM) = (")
					.append("           SELECT KK0011_GENE.MSKM_NO, MAX(KK0011_GENE.GENE_ADD_DTM) MAX_GENE ")
					.append("             FROM KK_T_MSKM KK0011_GENE ")
// ANK-3278-00-00 2017/08/24 MOD START
//					.append("              WHERE KK0011_GENE.MSKM_NO = KK0021.KEY_MSKM_NO ")
					.append("              WHERE KK0011_GENE.MSKM_NO = KK3101.MSKM_NO ")
// ANK-3278-00-00 2017/08/24 MOD END
					.append("               AND KK0011_GENE.MK_FLG = '0'  ")
					.append("             GROUP BY KK0011_GENE.MSKM_NO ")
					.append("       ) ")
					.append("   AND KK0011.MK_FLG = '0' ")
// IT1-2017-0000027 2017-04-27 ADD START
					.append(" LEFT OUTER JOIN KK_T_MSKM_AGNT KK0071_1 ")
// ANK-3278-00-00 2017/08/24 MOD START
//					.append("   ON KK0071_1.MSKM_NO = KK0021.KEY_MSKM_NO ") 
					.append("   ON KK0071_1.MSKM_NO = KK3101.MSKM_NO ") 
// ANK-3278-00-00 2017/08/24 MOD END
					.append("  AND KK0071_1.MSKM_AGNT_NO = '002' ")
					.append("  AND KK0071_1.MK_FLG = '0' ")
					.append(" LEFT OUTER JOIN KK_T_MSKM_AGNT KK0071_2 ")
// ANK-3278-00-00 2017/08/24 MOD START
//					.append("   ON KK0071_2.MSKM_NO = KK0021.KEY_MSKM_NO ")
					.append("   ON KK0071_2.MSKM_NO = KK3101.MSKM_NO ")
// ANK-3278-00-00 2017/08/24 MOD END
					.append("  AND KK0071_2.MSKM_AGNT_NO = '004' ")
					.append("  AND KK0071_2.MK_FLG = '0' ")
// IT1-2017-0000027 2017-04-27 ADD END
// IT1-2017-0000027 2017-04-27 DEL START
//					.append(" INNER JOIN KK_T_MSKM_DMEN KK2501            ")
//					.append("     ON KK2501.MSKMSHO_NO = KK0021.KEY_MSKMSHO_NO ")
//					.append("   AND KK2501.MK_FLG = '0' ")
// IT1-2017-0000027 2017-04-27 DEL END
					.append(" INNER JOIN CK_T_CUST CK0011                 ")
// ANK-3278-00-00 2017/08/24 MOD START
//					.append("   ON CK0011.SYSID = KK0011.SYSID ")
					.append("   ON CK0011.SYSID = KK3101.SYSID ")
// ANK-3278-00-00 2017/08/24 MOD END
					.append("  AND CK0011.RSV_APLY_YMD || CK0011.GENE_ADD_DTM = ( ")
					.append("            SELECT MIN(CK0011_1.RSV_APLY_YMD || CK0011_1.GENE_ADD_DTM) AS KTSK_MIN ")
					.append("             FROM CK_T_CUST CK0011_1 ")
					.append("             WHERE CK0011_1.SYSID = KK0011.SYSID ")
					.append("               AND CK0011_1.CUST_NM IS NOT NULL")
					.append("               AND CK0011_1.RSV_APLY_YMD <= ?      ")
					.append("               AND CK0011_1.RSV_APLY_CD = '2' ")
					.append("               AND CK0011_1.MK_FLG = '0' ")
					.append("  ) ")
					.append("  AND CK0011.MK_FLG = '0' ");
						 
			
			// 運用日#3 (運用日１＆２は件数取得後に設定)
			paramList.add(JKKModelCommon.getOpeDate(inMsg));

// ▼▼▼ ST-2017-0000003 ADD START
			// SQL文_個別条件C
			StringBuffer sql_Buff3_1 = createCondition4(inMsg, paramList);
			sql_Buff3.append(sql_Buff3_1);
// △△△ ST-2017-0000003 ADD END
			
			// EKK0021B610CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  EKK0021B610CBSMsg1List.UK_NO
					, EKK0021B610CBSMsg1List.MSKM_YMD
					, EKK0021B610CBSMsg1List.TRAT_CD_2
					, EKK0021B610CBSMsg1List.TRAT_CD_4
					, EKK0021B610CBSMsg1List.CUST_NM
					, EKK0021B610CBSMsg1List.THNX_CALL_JSSI_YMD
					, EKK0021B610CBSMsg1List.CNCL_JGI_ADD_YMD
					, EKK0021B610CBSMsg1List.CNCL_JGI_SNN_YMD
					, EKK0021B610CBSMsg1List.CNCL_JGI_HNN_YMD
			};
		
// ▼▼▼ ST-2017-0000003 Modify START
//			// 最大取得件数
//			long lMaxNum = MAX_RECORD_COUNT;
//			if (!inMsg.isNull(EKK0021B610CBSMsg.MAX_SEARCH_NUM))
//			{
//				inMsg.getStringAsLong(EKK0021B610CBSMsg.MAX_SEARCH_NUM);
//			}
			// 最大取得件数
			int maxNumP1 = MAX_RECORD_COUNT_PLUS_1;
			if (!inMsg.isNull(EKK0021B610CBSMsg.MAX_SEARCH_NUM))
			{
				maxNumP1 = inMsg.getStringAsInt(EKK0021B610CBSMsg.MAX_SEARCH_NUM) + 1;
			}

//			//SQL文の組立て（件数取得）
//			StringBuffer sql_Count1 = new StringBuffer();
//			sql_Count1.append(sql_Buff4)
//					  .append(sql_Buff1)
//					  .append(sql_Buff2)
//					  .append(sql_Buff3);
//		 
//			// 件数判定処理
//			if(!judgeCnt(inContext, con1, inMsg, paramList, sql_Count1, lMaxNum)){
//				return;
//			}
// △△△ ST-2017-0000003 Modify END
			 
			// SQL文の組立て(項目取得)
			StringBuffer sql_Data = new StringBuffer();
			sql_Data.append(sql_Buff0)
					.append(sql_Buff1)
					.append(sql_Buff2)
					.append(sql_Buff3);
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Data.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Data);
			
			// パラメターの追加：運用日#1
			paramList.add(0, JKKModelCommon.getOpeDate(inMsg));
			// パラメターの追加：運用日#2
			paramList.add(0, JKKModelCommon.getOpeDate(inMsg));
			// パラメータを設定
			setParameter(pstmt, paramList);
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

// ▼▼▼ ST-2017-0000003 Modify START
			// 明細に処理結果(ResultSet)をマッピング
//			CAANMsg[] outMsg1 = mapMessageList(rsltQuery, msgKeyList1, "eo.ejb.cbs.cbsmsg.EKK0021B610CBSMsg1List", 0);
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery, msgKeyList1, "eo.ejb.cbs.cbsmsg.EKK0021B610CBSMsg1List", maxNumP1);
			// 検索件数が上限を超えたらエラーとする
			if (outMsg1 != null && outMsg1.length == maxNumP1)
			{
				inMsg.set(EKK0021B610CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_OVERMAX);
				return ;
			}
// △△△ ST-2017-0000003 Modify END
			// inMsg(CBSMsg)に明細をセット
			inMsg.set("EKK0021B610CBSMsg1List", outMsg1);
					
		} catch(SQLException e) {
			inMsg.set(EKK0021B610CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} finally {
			// 資源の解放
			try{
				if(rsltQuery != null){
					rsltQuery.close();
				}
				if(pstmt != null){
					pstmt.close();
				}
				if(con1 != null){
					closeConnection(con1);
				}
			}catch(SQLException e){
				inMsg.set(EKK0021B610CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * パラメータを設定する。
	 * @param pstmt
	 * @param params
	 * @throws SQLException
	 */
	private void setParameter(PreparedStatement pstmt, ArrayList<Object> params) throws SQLException {
		
		for (int i=0; i < params.size(); i++)
		{
			CAANJDBCUtil.setParam(pstmt, i+1, params.get(i));
			
		}
	}
	
	/**
	 * <p>
	 * 件数判定処理を行います。
	 * </p>
	 * @param inContext ディスパッチコンテキスト
	 * @param con1 コネクション
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @param sql_Buff SQL文
	 * @param iDispNum　表示件数
	 * @param lMaxNum　最大取得件数
	 * @return エラー判定値（正常:true　エラー:false）
	 * @exception SQLException
	 */
	private boolean judgeCnt(AgentDispatchContext inContext, Connection con1, CAANMsg inMsg, ArrayList<Object> params, StringBuffer sql_Buff, long lMaxNum) throws SQLException
	{
		
		PreparedStatement pstmt = null;
		ResultSet rsltQuery = null;
		try{
	
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
	
			//ログ出力(SQL文の出力_件数取得用)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// パラメータの設定
			setParameter(pstmt, params);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
	
			// 総検索件数を取得する
			long iDataCnt = 0L;
			if (rsltQuery.next())
			{
				iDataCnt = rsltQuery.getLong("CNT");
			}
	
			// 共通部に値を設定する
			// 総検索件数
			inMsg.set(EKK0021B610CBSMsg.TOTAL_SEARCH_NUM, String.valueOf(iDataCnt));
	
			// 最大取得件数を超えた場合エラー
			if (iDataCnt > lMaxNum)
			{
				inMsg.set(EKK0021B610CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_OVERMAX);
				return false;
			}
	
			return true;
		} catch(SQLException e) {
			inMsg.set(EKK0021B610CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} finally {
			// 資源の解放
			try{
				if(rsltQuery != null){
					rsltQuery.close();
				}
				if(pstmt != null){
					pstmt.close();
				}
			}catch(SQLException e){
				inMsg.set(EKK0021B610CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * 入力パラメータにより可変となるＳＱＬを返す。
	 * この条件文は申込明細に対して直接条件を記載できる。
	 * <br>
	 * @param inMsg
	 * @param paramList
	 * @return SQL条件文字列を返す
	 */
	private StringBuffer createCondition2(CAANMsg inMsg, ArrayList<Object> paramList)
	{
		// SQL文_個別条件A
		StringBuffer sql_Buff2 = new StringBuffer();
							
		//個別条件（１）
		//ＫＥＹ＿申込年月日_FROM、ＫＥＹ＿申込年月日_TOの設定判定
		if (!inMsg.isNull(EKK0021B610CBSMsg.MSKM_YMD_FROM) && !inMsg.isNull(EKK0021B610CBSMsg.MSKM_YMD_TO)){
	
// ANK-3278-00-00 2017/08/24 MOD START
//			sql_Buff2.append("   AND KK0021_01.MSKM_YMD BETWEEN ? AND ?");
			sql_Buff2.append("   AND KK3101_A.MSKM_YMD BETWEEN ? AND ?");
// ANK-3278-00-00 2017/08/24 MOD END
			
			// 申込年月日From/Toをリストに追加
			paramList.add(inMsg.getObject(EKK0021B610CBSMsg.MSKM_YMD_FROM));	// 申込年月日From
			paramList.add(inMsg.getObject(EKK0021B610CBSMsg.MSKM_YMD_TO));		// 申込年月日To
		}
		
		//個別条件（３）
		// ＫＥＹ＿受付番号の設定判定
		if (!inMsg.isNull(EKK0021B610CBSMsg.KEY_UK_NO)){
			
// ANK-3278-00-00 2017/08/24 MOD START
//			sql_Buff2.append("  AND KK0021_01.MSKMSHO_NO = ? ");
			sql_Buff2.append("  AND KK3101_A.MSKMSHO_NO = ? ");
// ANK-3278-00-00 2017/08/24 MOD END
			
			// 受付番号をリストに追加
			paramList.add(inMsg.getObject(EKK0021B610CBSMsg.KEY_UK_NO));	// 受付番号
		}
		
		 //個別条件（４）
			// ＫＥＹ＿MIDの設定判定
		 if (!inMsg.isNull(EKK0021B610CBSMsg.MID)){
			
// ANK-3278-00-00 2017/08/24 MOD START
//			 sql_Buff2.append(" AND KK0021_01.MANSION_ID = ? ");
			 sql_Buff2.append(" AND KK3101_A.MANSION_ID = ? ");
// ANK-3278-00-00 2017/08/24 MOD END
	
		 	// MIDをリストに追加
			paramList.add(inMsg.getObject(EKK0021B610CBSMsg.MID));	// MID
		 }
		
		//個別条件（９）
		//  ＫＥＹ＿eo光ネットサービスコードの設定判定
		if (!inMsg.isNull(EKK0021B610CBSMsg.EOHNT_SVC_CD)){
			
// ANK-3278-00-00 2017/08/24 MOD START
//			sql_Buff2.append("   AND KK0021_01.MSKMSHO_SBT_CD = ");
			sql_Buff2.append("   AND KK3101_A.MSKMSHO_SBT_CD = ");
// ANK-3278-00-00 2017/08/24 MOD END
			 
		 	if( OHNT_SVC_CD_HT.equals(inMsg.getObject(EKK0021B610CBSMsg.EOHNT_SVC_CD)))
			{
		 		sql_Buff2.append("'1' ");
		 	} 
		 	else if( OHNT_SVC_CD_MZ.equals(inMsg.getObject(EKK0021B610CBSMsg.EOHNT_SVC_CD)))
			{
		 		sql_Buff2.append("'3' ");
		 	}
		 	else if( OHNT_SVC_CD_MT.equals(inMsg.getObject(EKK0021B610CBSMsg.EOHNT_SVC_CD)))
			{
		 		sql_Buff2.append("'2' ");
		 	}
		}
		
// ANK-3278-00-00 2017/08/24 ADD START
		// 個別条件（１１）
		// ＫＥＹ＿お客さま氏名（カナ）
		if(!inMsg.isNull(EKK0021B610CBSMsg.CUST_KANA)){
			
			sql_Buff2.append(" AND KK3101_A.CUST_KANA LIKE '")
					.append(inMsg.getString(EKK0021B610CBSMsg.CUST_KANA) + "%'");
		}
		
		// 個別条件（１２）
		// ＫＥＹ＿電話番号
		if(!inMsg.isNull(EKK0021B610CBSMsg.TELNO)){
			
			sql_Buff2.append(" AND KK3101_A.KEISHA_TELNO = ? ");
			
			paramList.add(inMsg.getObject(EKK0021B610CBSMsg.TELNO));
		}
// ANK-3278-00-00 2017/08/24 ADD END
	
		return sql_Buff2;
	}
	

	/**
	 * 入力パラメータにより可変となるＳＱＬを返す。
	 * この条件文は申込明細以外の条件を返す。
	 * <br>
	 * @param inMsg
	 * @param paramList
	 * @return SQL条件文字列を返す
	 */
	private StringBuffer createCondition3(CAANMsg inMsg, ArrayList<Object> paramList)
	{
		
		// SQL文_個別条件B
		StringBuffer sql_Buff3 = new StringBuffer();

// ▼▼▼ ST-2017-0000003 DEL START
//		//個別条件（２）
//		//  ＫＥＹ＿お客さま氏名（カナ）、ＫＥＹ＿電話番号の設定判定
//// IT1-2017-0000027 2017-04-27 ADD START
//		if (!inMsg.isNull(EKK0021B610CBSMsg.CUST_KANA) || 
//				!inMsg.isNull(EKK0021B610CBSMsg.TELNO)) {
//			// EXISTS句
//			sql_Buff3.append(" WHERE ")
//					 .append(" EXISTS (")
//					 .append("  SELECT 1 FROM CK_T_CUST CK0011 ")
//					 .append("  WHERE CK0011.SYSID = KK0021_BASE.SYSID ")
//					 .append("  AND CK0011.RSV_APLY_YMD || CK0011.GENE_ADD_DTM = ( ")
//					 .append("            SELECT MIN(CK0011_1.RSV_APLY_YMD || CK0011_1.GENE_ADD_DTM) AS KTSK_MIN ")
//					 .append("             FROM CK_T_CUST CK0011_1 ")
//					 .append("             WHERE CK0011_1.SYSID = KK0021_BASE.SYSID ")
//					 .append("               AND CK0011_1.CUST_NM IS NOT NULL")
//					 .append("               AND CK0011_1.RSV_APLY_YMD <= ?      ")
//					 .append("               AND CK0011_1.RSV_APLY_CD = '2' ")
//					 .append("               AND CK0011_1.MK_FLG = '0' ")
//					 .append("  ) ");
//			
//			// 運用日
//			paramList.add(JKKModelCommon.getOpeDate(inMsg));
//			
//			// お客様名の条件指定
//			if( !inMsg.isNull(EKK0021B610CBSMsg.CUST_KANA)){
//				
//				sql_Buff3.append(" AND CK0011.CUST_KANA LIKE ?  ");
//				
//				paramList.add(inMsg.getString(EKK0021B610CBSMsg.CUST_KANA) + "%");
//			}
//			
//			// 電話番号の条件指定
//			if( !inMsg.isNull(EKK0021B610CBSMsg.TELNO)){
//				
//				sql_Buff3.append(" AND CK0011.KEISHA_TELNO = ? ");
//				
//				paramList.add(inMsg.getObject(EKK0021B610CBSMsg.TELNO));
//			}
//			sql_Buff3.append("  AND CK0011.MK_FLG = '0' ")
//					 .append(" )");
//		}
//		
//		// ＫＥＹ＿取扱コード
//		if (!inMsg.isNull(EKK0021B610CBSMsg.TRAT_CD)) {
//			
//			// EXISTS句
//			if(sql_Buff3.length() > 0) 
//			{
//				sql_Buff3.append(" AND ");
//			} 
//			else 
//			{
//				sql_Buff3.append(" WHERE ");
//			}
//
//			sql_Buff3.append(" EXISTS (")
//					 .append("    SELECT 1 ")
//					 .append("      FROM KK_T_MSKM_AGNT KK0071_0")
//					 .append("      WHERE KK0071_0.MSKM_NO = KK0021_BASE.MSKM_NO ")
//					 .append("        AND KK0071_0.AGNT_CD IN (");
//
//			// カンマ区切りの文字列を分解する。
//			String[] codeList = inMsg.getString(EKK0021B610CBSMsg.TRAT_CD).split(",");
//			
//			StringBuffer sb = new StringBuffer();
//			for (String val : codeList)
//			{
//				// 空文は削除
//				if (val != null && val.length() > 0) 
//				{
//					if (sb.length() > 0)
//					{
//						sb.append(",");
//					}
//					sb.append("'").append(val).append("'");
//				}
//			}
//			sql_Buff3.append(sb).append(")")
//					 .append("        AND KK0071_0.MSKM_AGNT_NO IN ('002', '004')")
//					 .append("        AND KK0071_0.MK_FLG = '0'")
//					 .append(" )");
//		}
//// IT1-2017-0000027 2017-04-27 ADD END
// △△△ ST-2017-0000003 DEL END
// IT1-2017-0000027 2017-04-27 DEL START
//		if (!inMsg.isNull(EKK0021B610CBSMsg.TRAT_CD) || 
//			!inMsg.isNull(EKK0021B610CBSMsg.CUST_KANA) || 
//			!inMsg.isNull(EKK0021B610CBSMsg.TELNO)) {
//			
//			// EXISTS句
//			sql_Buff3.append(" WHERE ")
//					 .append(" EXISTS (")
//					 .append("     SELECT 1 FROM KK_T_MSKM_DMEN KK2501_1")
//					 .append("        WHERE KK2501_1.MSKMSHO_NO = KK0021_BASE.MSKMSHO_NO ");
//			
//			// 取扱コードの条件指定
//			if( !inMsg.isNull(EKK0021B610CBSMsg.TRAT_CD)){
//				// カンマ区切りの文字列を分解する。
//				String[] codeList = inMsg.getString(EKK0021B610CBSMsg.TRAT_CD).split(",");
//				
//				StringBuffer sb = new StringBuffer();
//				for (String val : codeList)
//				{
//					// 空文は削除
//					if (val != null && val.length() > 0) 
//					{
//						if (sb.length() > 0)
//						{
//							sb.append(",");
//						}
//						sb.append("'").append(val).append("'");
//					}
//				}
//				sql_Buff3.append(" AND (KK2501_1.AGNT_CD_1_2 IN (").append(sb).append(")")
//						 .append("   OR KK2501_1.AGNT_CD_2_2 IN (").append(sb).append(")) ");
//			}
//			
//			// お客様名の条件指定
//			if( !inMsg.isNull(EKK0021B610CBSMsg.CUST_KANA)){
//				
//				sql_Buff3.append(" AND KK2501_1.CUST_KANA LIKE ?  ");
//				
//				paramList.add(inMsg.getString(EKK0021B610CBSMsg.CUST_KANA) + "%");
//			}
//			
//			// 電話番号の条件指定
//			if( !inMsg.isNull(EKK0021B610CBSMsg.TELNO)){
//				
//				sql_Buff3.append(" AND KK2501_1.KEISHA_TELNO = ? ");
//				
//				paramList.add(inMsg.getObject(EKK0021B610CBSMsg.TELNO));
//			}
//
//			sql_Buff3.append("          AND KK2501_1.MK_FLG = '0' ")
//			         .append("    )");
//		}
// IT1-2017-0000027 2017-04-27 DEL END

		//個別条件（５）
		// ＫＥＹ＿工程進捗種別 = 2, 3, 4 が指定されている場合
		if( STEP_PRG_SBT_TK_CH_RSV.equals(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_SBT)) || 
			STEP_PRG_SBT_TK_KJ_RSV.equals(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_SBT)) ||
			STEP_PRG_SBT_TK_KJ_FIX.equals(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_SBT))){
			
			 
			// EXISTS句
// ANK-3278-00-00 2017/08/24 DEL START
//			if(sql_Buff3.length() > 0){
// ANK-3278-00-00 2017/08/24 DEL END
				sql_Buff3.append(" AND ");
// ANK-3278-00-00 2017/08/24 DEL START
//			}else{
//				sql_Buff3.append(" WHERE ");
//			}
// ANK-3278-00-00 2017/08/24 DEL END
			sql_Buff3.append(" EXISTS (")
					.append("    SELECT 1 ")
					.append("      FROM KU_T_KOJIAK KU0011 ")
					.append("      INNER JOIN KU_T_MSKM_DTL_KOJIAK KU0091 ")
					.append("         ON KU0091.KOJIAK_NO = KU0011.KOJIAK_NO")
					.append("        AND KU0091.MSKM_DTL_KOJIAK_TSTAYMD <= ?")
					.append("        AND KU0091.MSKM_DTL_KOJIAK_TENDYMD >= ?")
					.append("        AND KU0091.MK_FLG = '0'")
					.append("      WHERE KU0011.MK_FLG = 0")
// ANK-3278-00-00 2017/08/24 MOD START
//					.append("        AND KU0091.MSKM_DTL_NO = KK0021_BASE.MSKM_DTL_NO")
					.append("        AND KU0091.MSKM_DTL_NO = KK3101_A.MSKM_DTL_NO")
// ANK-3278-00-00 2017/08/24 MOD END
					.append("        AND KU0011.PRC_GRP_CD IN ( ");
				
		 	// 工事種別毎の検索する範囲を限定する
			if (KOJI_SBT_IP.equals(inMsg.getObject(EKK0021B610CBSMsg.KOJI_SBT)))
	 			sql_Buff3.append("'02','03','04','10'" );
			else
	 			sql_Buff3.append("'11','12','13'" );
	 		
	 		sql_Buff3.append(" )");
			 		
	 		// 宅内調査実施年月日
	 		if(STEP_PRG_SBT_TK_CH_RSV.equals(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_SBT))){
	 			sql_Buff3.append("        AND KU0011.TAKCHO_JSSI_YMD BETWEEN ? AND ?" );
	 		}
	 		// 宅内工事完了予定年月日
	 		if(STEP_PRG_SBT_TK_KJ_RSV.equals(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_SBT))){
	 			sql_Buff3.append("        AND KU0011.TAKNI_KOJI_FIN_RSV_YMD BETWEEN ? AND ?" );
	 		}
	 		// 工事案件実施年月日
	 		if(STEP_PRG_SBT_TK_KJ_FIX.equals(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_SBT))){
	 			sql_Buff3.append("        AND KU0011.KOJIAK_JSSI_YMD BETWEEN ? AND ?" );
	 		}
	 		sql_Buff3.append(" ) ");

			// 運用日
			paramList.add(JKKModelCommon.getOpeDate(inMsg));
			paramList.add(JKKModelCommon.getOpeDate(inMsg));
	 		// 工程進捗日付From/To
	 		paramList.add(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_HIZUKE_FROM));
	 		paramList.add(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_HIZUKE_TO));
		}
						
		//個別条件（６）
		// ＫＥＹ＿工程進捗種別 = 5 が指定されている場合
		if( STEP_PRG_SBT_KK_SP_RSV.equals(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_SBT))){
			 
			// EXISTS句
// ANK-3278-00-00 2017/08/24 DEL START
//			if(sql_Buff3.length() > 0){
// ANK-3278-00-00 2017/08/24 DEL END
				sql_Buff3.append(" AND ");
// ANK-3278-00-00 2017/08/24 DEL START
//			}else{
//				sql_Buff3.append(" WHERE ");
//			}
// ANK-3278-00-00 2017/08/24 DEL END
			sql_Buff3.append(" EXISTS (")
					.append("    SELECT 1")
					.append("        FROM KK_T_KKTK_SVC_KEI KK0341")
// ▼▼▼ IT1-2017-0000060 ADD START
					.append("        LEFT OUTER JOIN KK_T_KAISEN_TG_SVKEI KK0241 ")
					.append("           ON KK0241.SVC_KEI_KAISEN_UCWK_NO = KK0341.SVC_KEI_KAISEN_UCWK_NO")
					.append("          AND ? BETWEEN KK0241.KAISEN_UCWK_USE_STAYMD AND KK0241.KAISEN_UCWK_USE_ENDYMD")
					.append("          AND KK0241.MK_FLG = '0'")
					.append("        INNER JOIN KK_T_SVC_KEI KK0081_05 ")
					.append("           ON (KK0081_05.SVC_KEI_NO = KK0341.SVC_KEI_NO ")
					.append("           OR  KK0081_05.SVC_KEI_NO = KK0241.SVC_KEI_NO )")
					.append("          AND KK0081_05.RSV_APLY_YMD || KK0081_05.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_05.SVC_KEI_NO")
					.append("                   AND KK0081_GENE.RSV_APLY_YMD <= ?")
					.append("                   AND KK0081_GENE.RSV_APLY_CD = '2' ")
					.append("                   AND KK0081_GENE.MK_FLG = '0')")
	 				.append("          AND KK0081_05.PRC_GRP_CD in ('04', '10') ")
					.append("          AND KK0081_05.MK_FLG = '0'")
// △△△ IT1-2017-0000060 ADD END
					.append("        INNER JOIN KK_T_TK_HOSHIKI_KEI KK0891")
// ▼▼▼ IT1-2017-0000060 Modify START
//					.append("           ON KK0891.TK_HOSHIKI_KEI_NO = KK0341.TK_HOSHIKI_KEI_NO ")
					.append("           ON KK0891.TK_HOSHIKI_KEI_NO = KK0081_05.TK_HOSHIKI_KEI_NO ")
// △△△ IT1-2017-0000060 Modify END
					.append("          AND KK0891.MK_FLG = '0'")
					.append("        WHERE KK0341.MK_FLG = '0'")
					.append("          AND KK0341.KKTK_SVC_KEI_NO IN (")
					.append("               SELECT KK0341_SUM.KKTK_SVC_KEI_NO")
					.append("                FROM KK_T_KKTK_SVC_KEI KK0341_SUM")
// ANK-3278-00-00 2017/08/24 MOD START
//					.append("                WHERE KK0341_SUM.MSKM_DTL_NO = KK0021_BASE.MSKM_DTL_NO")
					.append("                WHERE KK0341_SUM.MSKM_DTL_NO = KK3101_A.MSKM_DTL_NO")
// ANK-3278-00-00 2017/08/24 MOD END
					.append("                  AND KK0341_SUM.MK_FLG = '0'")
					.append("          )")
					.append("          AND KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM = (")
					.append("               SELECT MAX(KK0341_GENE.RSV_APLY_YMD || KK0341_GENE.GENE_ADD_DTM) AS KK0341_MAX")
					.append("                 FROM KK_T_KKTK_SVC_KEI KK0341_GENE")
					.append("                 WHERE KK0341_GENE.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO")
					.append("                   AND KK0341_GENE.RSV_APLY_YMD <= ?")
					.append("                   AND KK0341_GENE.RSV_APLY_CD = '2' ")
					.append("                   AND KK0341_GENE.MK_FLG = '0'")
					.append("          )")
					// IT1-2017-0000027 2017/04/26 MOD START
//					.append("          AND KK0891.TK_HOSHIKI_CD IN ('001','003','004','005','006','007')")
					.append("          AND KK0891.TK_HOSHIKI_CD IN ('001','003','004','005','006','007','010')")
					// IT1-2017-0000027 2017/04/26 MOD END
					.append("          AND KK0341.HAISO_REQ_SHITEI_YMD BETWEEN ? AND ?")
					.append("   )");

			// 運用日
// ▼▼▼ IT1-2017-0000060 ADD START
			paramList.add(JKKModelCommon.getOpeDate(inMsg));
			paramList.add(JKKModelCommon.getOpeDate(inMsg));
// △△△ IT1-2017-0000060 ADD END
			paramList.add(JKKModelCommon.getOpeDate(inMsg));
			// 工程進捗日付From/To
	 		paramList.add(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_HIZUKE_FROM));
	 		paramList.add(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_HIZUKE_TO));
		}
		
		//個別条件（７）
		// ＫＥＹ＿工程進捗種別 = 6,7 が指定されている場合
		if( STEP_PRG_SBT_KT_KB_YMD.equals(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_SBT)) ||
			STEP_PRG_SBT_SV_ST_YMD.equals(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_SBT))){
			 
			// EXISTS句
// ANK-3278-00-00 2017/08/24 DEL START
//			if(sql_Buff3.length() > 0){
// ANK-3278-00-00 2017/08/24 DEL END
				sql_Buff3.append(" AND ");
// ANK-3278-00-00 2017/08/24 DEL START
//			}else{
//				sql_Buff3.append(" WHERE ");
//			}
// ANK-3278-00-00 2017/08/24 DEL END
		
			sql_Buff3.append(" EXISTS (")
					.append("    SELECT 1")
					.append("        FROM KK_T_SVC_KEI KK0081")
					.append("        LEFT OUTER JOIN KK_T_TK_HOSHIKI_KEI KK0891")
					.append("           ON KK0891.TK_HOSHIKI_KEI_NO = KK0081.TK_HOSHIKI_KEI_NO")
					.append("          AND KK0891.MK_FLG = '0'")
					.append("        WHERE KK0081.MK_FLG = '0'")
					.append("          AND KK0081.SVC_KEI_NO IN (")
					.append("               SELECT KK0081_SUM.SVC_KEI_NO")
					.append("                FROM KK_T_SVC_KEI KK0081_SUM")
// ANK-3278-00-00 2017/08/24 MOD START
//					.append("                WHERE KK0081_SUM.MSKM_DTL_NO = KK0021_BASE.MSKM_DTL_NO")
					.append("                WHERE KK0081_SUM.MSKM_DTL_NO = KK3101_A.MSKM_DTL_NO")
// ANK-3278-00-00 2017/08/24 MOD END
					.append("                  AND KK0081_SUM.MK_FLG = '0'")
					.append("          )")
					.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 = '2' ")
					.append("                   AND KK0081_GENE.MK_FLG = '0')");
					
		 
			// サービス開始希望日
	 		if(STEP_PRG_SBT_KT_KB_YMD.equals(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_SBT))){
	 		// IT1-2017-0000027 2017/04/26 MOD START
//	 			sql_Buff3.append("    AND (KK0891.TK_HOSHIKI_CD IN ('001','003','004','005','006','007')" )
	 			sql_Buff3.append("    AND (KK0891.TK_HOSHIKI_CD IN ('001','003','004','005','006','007','010')" )
	 		// IT1-2017-0000027 2017/04/26 MOD END
// ▼▼▼ IT1-2017-0000060 Modify START
//	 					.append("           AND KK0081.PRC_GRP_CD = '04' ")
	 					.append("           AND KK0081.PRC_GRP_CD IN ('04', '10') ")
// △△△ IT1-2017-0000060 Modify END
	 					.append("           AND KK0081.SVC_USE_STA_KIBO_YMD BETWEEN ? AND ?  )");
	 		}
	 		// サービス開始日
	 		if(STEP_PRG_SBT_SV_ST_YMD.equals(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_SBT))){
			 	// 工事種別毎の検索する範囲を限定する
				if (KOJI_SBT_IP.equals(inMsg.getObject(EKK0021B610CBSMsg.KOJI_SBT)))
		 			sql_Buff3.append("    AND KK0081.PRC_GRP_CD IN ('02','03','04','10')" );
				else
		 			sql_Buff3.append("    AND KK0081.PRC_GRP_CD IN ('11','12','13')" );
	 			sql_Buff3.append("    AND KK0081.SVC_STA_YMD BETWEEN ? AND ?" );
	 		}
	 		sql_Buff3.append("          )");

			// 運用日
			paramList.add(JKKModelCommon.getOpeDate(inMsg));
	 		// 工程進捗日付From/To
	 		paramList.add(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_HIZUKE_FROM));
	 		paramList.add(inMsg.getObject(EKK0021B610CBSMsg.STEP_PRG_HIZUKE_TO));
		}
		

// ▼▼▼ ST-2017-0000003 DEL START
//		//個別条件（８）
//	 	//  各サービスのキャンセル期間の設定判定
//		if (!inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_NET) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_NET) || 
//			 !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_TEL) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_TEL) || 
//			 !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_TV) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_TV) || 
//			 !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_EOELEC) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_EOELEC) || 
//			 !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_MINEO) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_MINEO)) {
//
//			if(sql_Buff3.length() > 0){
//				sql_Buff3.append(" AND ");
//			}else{
//				sql_Buff3.append(" WHERE ");
//			}
//			sql_Buff3.append("  EXISTS（")
//					.append("    SELECT MAX(NET_C_DATE) M_NET_C_DT, MAX(TEL_C_DATE) M_TEL_C_DT, MAX(TV_C_DATE) M_TV_C_DT, MAX(EL_C_DATE) M_EL_C_DT, MAX(MN_C_DATE) M_MN_C_DT")
//					.append("        FROM (")
//					.append("         SELECT KK0081.SVC_KEI_NO")
//					.append("               ,DECODE(KK0081.SVC_CD, '01', DECODE(KK0081.SVC_KEI_STAT, '910', KK0081.SVC_ENDYMD, '920', KK0081.SVC_CANCEL_YMD, NULL), NULL) NET_C_DATE")
//					.append("               ,DECODE(KK0081.SVC_CD, '02', DECODE(KK0081.SVC_KEI_STAT, '910', KK0081.SVC_ENDYMD, '920', KK0081.SVC_CANCEL_YMD, NULL), NULL) TEL_C_DATE")
//					.append("               ,DECODE(KK0081.SVC_CD, '03', DECODE(KK0081.SVC_KEI_STAT, '910', KK0081.SVC_ENDYMD, '920', KK0081.SVC_CANCEL_YMD, NULL), NULL) TV_C_DATE")
//					.append("               ,DECODE(KK0081.SVC_CD, '05', DECODE(KK0081.SVC_KEI_STAT, '910', KK0081.SVC_ENDYMD, '920', KK0081.SVC_CANCEL_YMD, NULL), NULL) EL_C_DATE")
//					.append("               ,DECODE(KK0081.SVC_CD, '51', DECODE(KK0081.SVC_KEI_STAT, '910', KK0081.SVC_ENDYMD, '920', KK0081.SVC_CANCEL_YMD, NULL), NULL) MN_C_DATE")
//					.append("           FROM KK_T_SVC_KEI KK0081")
//					.append("           WHERE ")
//					.append("                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 = '2'")
//					.append("                     AND KK0081_GENE.MK_FLG = '0'")
//					.append("                )")
//					.append("            AND KK0081.MK_FLG = '0'")
//					.append("            AND KK0081.SVC_KEI_STAT IN ('910','920')")
//					.append("            AND KK0081.SVC_STA_YMD IS NULL")
//					.append("         ) KK0081_S")
//					.append("           WHERE KK0081_S.SVC_KEI_NO IN (")
//					.append("                   SELECT KK0081_SUM.SVC_KEI_NO")
//					.append("                    FROM KK_T_SVC_KEI KK0081_SUM")
//					.append("                    WHERE KK0081_SUM.MSKM_DTL_NO IN ")
//					.append("                                                    (SELECT KK0021.MSKM_DTL_NO")
//					.append("                                                     FROM KK_T_MSKM_DTL KK0021 ")
//					.append("                                                     WHERE KK0021.MSKMSHO_NO = KK0021_BASE.MSKMSHO_NO OR ")
//					.append("                                                     KK0021.DOJI_MSKM_EOH_MSKMSHO_NO = KK0021_BASE.MSKMSHO_NO)")
//
//					.append("                      AND KK0081_SUM.MK_FLG = '0'")
//					.append("                )");
//
//			
//			// 運用日
//			paramList.add(JKKModelCommon.getOpeDate(inMsg));
//
//			ArrayList<String> conditions = new ArrayList<String>();
//		 	
//			// キャンセル日（NET）
//			if(!inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_NET)  || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_NET))
//			{
//				conditions.add("MAX(NET_C_DATE) >= ? AND MAX(NET_C_DATE) <= ?");
//				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_FROM_NET, EKK0021B610CBSMsg.CNCL_DAY_TO_NET));
//				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_TO_NET, EKK0021B610CBSMsg.CNCL_DAY_FROM_NET));
//			}
//			// キャンセル日（TEL）
//			if(!inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_TEL) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_TEL))
//			{
//				conditions.add(" MAX(TEL_C_DATE) >= ? AND MAX(TEL_C_DATE) <= ?");
//				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_FROM_TEL, EKK0021B610CBSMsg.CNCL_DAY_TO_TEL));
//				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_TO_TEL, EKK0021B610CBSMsg.CNCL_DAY_FROM_TEL));
//			}
//			// キャンセル日（TV）
//			if(!inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_TV) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_TV))
//			{
//				conditions.add(" MAX(TV_C_DATE) >= ? AND MAX(TV_C_DATE) <= ?");
//				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_FROM_TV, EKK0021B610CBSMsg.CNCL_DAY_TO_TV));
//				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_TO_TV, EKK0021B610CBSMsg.CNCL_DAY_FROM_TV));
//			}
//			// キャンセル日(eo電気)
//			if(!inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_EOELEC) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_EOELEC))
//			{
//				conditions.add("MAX(EL_C_DATE) >= ? AND MAX(EL_C_DATE) <= ?");
//				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_FROM_EOELEC, EKK0021B610CBSMsg.CNCL_DAY_TO_EOELEC));
//				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_TO_EOELEC, EKK0021B610CBSMsg.CNCL_DAY_FROM_EOELEC));
//			}
//			// キャンセル日(mineo）
//			if(!inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_MINEO) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_MINEO))
//			{
//				conditions.add(" MAX(MN_C_DATE) >= ? AND MAX(MN_C_DATE) <= ?");
//				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_FROM_MINEO, EKK0021B610CBSMsg.CNCL_DAY_TO_MINEO));
//				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_TO_MINEO, EKK0021B610CBSMsg.CNCL_DAY_FROM_MINEO));
//			}
//
//			// 条件を組み立てる
//			for (int i=0; i < conditions.size(); i++)
//			{
//				if (i == 0) 
//				{
//					 sql_Buff3.append(" HAVING ");
//				}
//				else
//				{
//					 sql_Buff3.append(" AND ");
//				}
//				sql_Buff3.append(conditions.get(i));
//			}
//			sql_Buff3.append("  )");
//		}
// △△△ ST-2017-0000003 DEL END
		
		return sql_Buff3;
	}
// ▼▼▼ ST-2017-0000003 2017/05/11 ADD START
	/**
	 * 入力パラメータにより可変となるＳＱＬを返す。
	 * この条件文は申込書番号、申込番号、お客様の条件を返す。
	 * <br>
	 * @param inMsg
	 * @param paramList
	 * @return SQL条件文字列を返す
	 */
	private StringBuffer createCondition4(CAANMsg inMsg, ArrayList<Object> paramList)
	{
		// SQL文_個別条件B
		StringBuffer sql_Buff4 = new StringBuffer();
		
// ANK-3278-00-00 2017/08/24 DEL START
//		//個別条件（２）
//		//  ＫＥＹ＿お客さま氏名（カナ）
//		if( !inMsg.isNull(EKK0021B610CBSMsg.CUST_KANA)){
//			
//			if(sql_Buff4.length() > 0) 
//			{
//				sql_Buff4.append(" AND ");
//			} 
//			else 
//			{
//				sql_Buff4.append(" WHERE ");
//			}
//			sql_Buff4.append(" CK0011.CUST_KANA LIKE ?  ");
//			
//			paramList.add(inMsg.getString(EKK0021B610CBSMsg.CUST_KANA) + "%");
//		}
//		
//		//個別条件（２）
//		//  ＫＥＹ＿電話番号
//		if( !inMsg.isNull(EKK0021B610CBSMsg.TELNO)){
//			
//			if(sql_Buff4.length() > 0) 
//			{
//				sql_Buff4.append(" AND ");
//			} 
//			else 
//			{
//				sql_Buff4.append(" WHERE ");
//			}
//			sql_Buff4.append(" CK0011.KEISHA_TELNO = ? ");
//			
//			paramList.add(inMsg.getObject(EKK0021B610CBSMsg.TELNO));
//		}
// ANK-3278-00-00 2017/08/24 DEL END
		
		//個別条件（２）
		// ＫＥＹ＿取扱コード
		if (!inMsg.isNull(EKK0021B610CBSMsg.TRAT_CD)) {
			
			// EXISTS句
			if(sql_Buff4.length() > 0) 
			{
				sql_Buff4.append(" AND ");
			} 
			else 
			{
				sql_Buff4.append(" WHERE ");
			}

			sql_Buff4.append(" EXISTS (")
					 .append("    SELECT 1 ")
					 .append("      FROM KK_T_MSKM_AGNT KK0071_0")
// ANK-3278-00-00 2017/08/24 MOD START
//					 .append("      WHERE KK0071_0.MSKM_NO = KK0021.KEY_MSKM_NO ")
					 .append("      WHERE KK0071_0.MSKM_NO = KK3101.MSKM_NO ")
// ANK-3278-00-00 2017/08/24 MOD END
					 .append("        AND KK0071_0.AGNT_CD IN (");

			// カンマ区切りの文字列を分解する。
			String[] codeList = inMsg.getString(EKK0021B610CBSMsg.TRAT_CD).split(",");
			
			StringBuffer sb = new StringBuffer();
			for (String val : codeList)
			{
				// 空文は削除
				if (val != null && val.length() > 0) 
				{
					if (sb.length() > 0)
					{
						sb.append(",");
					}
					sb.append("'").append(val).append("'");
				}
			}
			sql_Buff4.append(sb).append(")")
					 .append("        AND KK0071_0.MSKM_AGNT_NO IN ('002', '004')")
					 .append("        AND KK0071_0.MK_FLG = '0'")
					 .append(" )");
		}

		//個別条件（８）
	 	//  各サービスのキャンセル期間の設定判定
		if (!inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_NET) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_NET) || 
			 !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_TEL) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_TEL) || 
			 !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_TV) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_TV) || 
			 !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_EOELEC) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_EOELEC) || 
			 !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_MINEO) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_MINEO)) {

			if(sql_Buff4.length() > 0){
				sql_Buff4.append(" AND ");
			}else{
				sql_Buff4.append(" WHERE ");
			}
			sql_Buff4.append("  EXISTS (")
					.append("    SELECT MAX(NET_C_DATE) M_NET_C_DT, MAX(TEL_C_DATE) M_TEL_C_DT, MAX(TV_C_DATE) M_TV_C_DT, MAX(EL_C_DATE) M_EL_C_DT, MAX(MN_C_DATE) M_MN_C_DT")
					.append("        FROM (")
					.append("         SELECT KK0081.SVC_KEI_NO")
					.append("               ,DECODE(KK0081.SVC_CD, '01', DECODE(KK0081.SVC_KEI_STAT, '910', KK0081.SVC_ENDYMD, '920', KK0081.SVC_CANCEL_YMD, NULL), NULL) NET_C_DATE")
					.append("               ,DECODE(KK0081.SVC_CD, '02', DECODE(KK0081.SVC_KEI_STAT, '910', KK0081.SVC_ENDYMD, '920', KK0081.SVC_CANCEL_YMD, NULL), NULL) TEL_C_DATE")
					.append("               ,DECODE(KK0081.SVC_CD, '03', DECODE(KK0081.SVC_KEI_STAT, '910', KK0081.SVC_ENDYMD, '920', KK0081.SVC_CANCEL_YMD, NULL), NULL) TV_C_DATE")
					.append("               ,DECODE(KK0081.SVC_CD, '05', DECODE(KK0081.SVC_KEI_STAT, '910', KK0081.SVC_ENDYMD, '920', KK0081.SVC_CANCEL_YMD, NULL), NULL) EL_C_DATE")
					.append("               ,DECODE(KK0081.SVC_CD, '51', DECODE(KK0081.SVC_KEI_STAT, '910', KK0081.SVC_ENDYMD, '920', KK0081.SVC_CANCEL_YMD, NULL), NULL) MN_C_DATE")
					.append("           FROM KK_T_SVC_KEI KK0081")
					.append("           WHERE ")
					.append("                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 = '2'")
					.append("                     AND KK0081_GENE.MK_FLG = '0'")
					.append("                )")
					.append("            AND KK0081.MK_FLG = '0'")
					.append("            AND KK0081.SVC_KEI_STAT IN ('910','920')")
					.append("            AND KK0081.SVC_STA_YMD IS NULL")
					.append("         ) KK0081_S")
					.append("         WHERE KK0081_S.SVC_KEI_NO IN (")
					.append("                   SELECT KK0081_SUM.SVC_KEI_NO")
					.append("                    FROM KK_T_SVC_KEI KK0081_SUM")
					.append("                    WHERE KK0081_SUM.MSKM_DTL_NO IN ")
					.append("                           (SELECT KK0021_03.MSKM_DTL_NO")
					.append("                            FROM KK_T_MSKM_DTL KK0021_03 ")
// ANK-3278-00-00 2017/08/24 MOD START
//					.append("                            WHERE (KK0021_03.MSKMSHO_NO IS NOT NULL AND KK0021_03.MSKMSHO_NO = KK0021.KEY_MSKMSHO_NO)")
//					.append("                               OR (KK0021_03.DOJI_MSKM_EOH_MSKMSHO_NO IS NOT NULL AND KK0021_03.DOJI_MSKM_EOH_MSKMSHO_NO = KK0021.KEY_MSKMSHO_NO))")
					.append("                            WHERE (KK0021_03.MSKMSHO_NO IS NOT NULL AND KK0021_03.MSKMSHO_NO = KK3101.MSKMSHO_NO)")
					.append("                               OR (KK0021_03.DOJI_MSKM_EOH_MSKMSHO_NO IS NOT NULL AND KK0021_03.DOJI_MSKM_EOH_MSKMSHO_NO = KK3101.MSKMSHO_NO))")
// ANK-3278-00-00 2017/08/24 MOD END
					.append("                      AND KK0081_SUM.MK_FLG = '0'")
					.append("        )");

			
			// 運用日
			paramList.add(JKKModelCommon.getOpeDate(inMsg));

			ArrayList<String> conditions = new ArrayList<String>();
		 	
			// キャンセル日（NET）
			if(!inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_NET)  || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_NET))
			{
				conditions.add("MAX(NET_C_DATE) >= ? AND MAX(NET_C_DATE) <= ?");
				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_FROM_NET, EKK0021B610CBSMsg.CNCL_DAY_TO_NET));
				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_TO_NET, EKK0021B610CBSMsg.CNCL_DAY_FROM_NET));
			}
			// キャンセル日（TEL）
			if(!inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_TEL) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_TEL))
			{
				conditions.add(" MAX(TEL_C_DATE) >= ? AND MAX(TEL_C_DATE) <= ?");
				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_FROM_TEL, EKK0021B610CBSMsg.CNCL_DAY_TO_TEL));
				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_TO_TEL, EKK0021B610CBSMsg.CNCL_DAY_FROM_TEL));
			}
			// キャンセル日（TV）
			if(!inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_TV) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_TV))
			{
				conditions.add(" MAX(TV_C_DATE) >= ? AND MAX(TV_C_DATE) <= ?");
				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_FROM_TV, EKK0021B610CBSMsg.CNCL_DAY_TO_TV));
				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_TO_TV, EKK0021B610CBSMsg.CNCL_DAY_FROM_TV));
			}
			// キャンセル日(eo電気)
			if(!inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_EOELEC) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_EOELEC))
			{
				conditions.add("MAX(EL_C_DATE) >= ? AND MAX(EL_C_DATE) <= ?");
				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_FROM_EOELEC, EKK0021B610CBSMsg.CNCL_DAY_TO_EOELEC));
				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_TO_EOELEC, EKK0021B610CBSMsg.CNCL_DAY_FROM_EOELEC));
			}
			// キャンセル日(mineo）
			if(!inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_FROM_MINEO) || !inMsg.isNull(EKK0021B610CBSMsg.CNCL_DAY_TO_MINEO))
			{
				conditions.add(" MAX(MN_C_DATE) >= ? AND MAX(MN_C_DATE) <= ?");
				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_FROM_MINEO, EKK0021B610CBSMsg.CNCL_DAY_TO_MINEO));
				paramList.add(getObject(inMsg, EKK0021B610CBSMsg.CNCL_DAY_TO_MINEO, EKK0021B610CBSMsg.CNCL_DAY_FROM_MINEO));
			}

			// 条件を組み立てる
			for (int i=0; i < conditions.size(); i++)
			{
				if (i == 0) 
				{
					sql_Buff4.append(" HAVING ");
				}
				else
				{
					sql_Buff4.append(" AND ");
				}
				sql_Buff4.append(conditions.get(i));
			}
			sql_Buff4.append("  )");
		}

		return sql_Buff4;
	}
// △△△ ST-2017-0000003 2017/05/11 ADD START
	/**
	 * 値を取得する。
	 * <br>
	 * @param inMsg メッセージ
	 * @param key1 優先的に取得するキー
	 * @param key2 key1に値が存在しない場合に取得するキー
	 * @return 取得データ
	 */
	private Object getObject(CAANMsg inMsg, String key1, String key2)
	{
		if (inMsg.isNull(key1))
			return inMsg.getObject(key2);
		else
			return inMsg.getObject(key1);
			
	}
}	
	