/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbEKK0271B001TPDA
*	ソースファイル名：JSYejbEKK0271B001TPDA.java
*	作成者			：EK103162
*	日付			：2012年01月24日
*＜機能概要＞
*	面開発案件情報一覧照会（複合検索）テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ1.00.00
*
********************************************************************************/

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 eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0271B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0271B001CBSMsg1List;
import eo.ejb.cbm.entity.KK0271ETMsg;
import eo.ejb.common.JKKModelCommon;
import eo.ejb.common.JKKejbPagingUtil;
import eo.ejb.common.JZMModelCommon;

/**
*
*  テンプレートDBアクセス部品　EKK0271B001_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbEKK0271B001TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
	
	/** 
	 * ＬＩＫＥ検索用（%）
	 */
	private static final String PERCENT = "%";
	
	/**
	 * コンストラクタ
	 */
	public JSYejbEKK0271B001TPDA()	{
	}
	
	/**
	*   EKK0271B001_SQLF<br>
	*   @param inMsg    入力値の格納されたCBSMsg <br>
	*   @return void
	*/
	public void invoke(CAANMsg inMsg,AgentDispatchContext inContext){
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt_Count = null;
		PreparedStatement pstmt_Page = null;
		
		// リザルトセット
		ResultSet rsltQuery_Count = null;
		ResultSet rsltQuery_Page = null;
		
		// パラメータのカウント
		int iPCnt = 1;
		int iPPage = 1;
		
		/******************** 
		 * SQL文の作成
		 ********************/

		try{
			
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK0271ETMsg.getTableName());
			
			// SQL文の作成(ページングヘッダ)
			// (1)
			StringBuffer sql_Buff1 = new StringBuffer();
			sql_Buff1.append("SELECT *  ")
					.append("FROM (  ")
					.append("    SELECT ALL_SELECT.*, ROWNUM AS LINE  ")
					.append("    FROM (  ");

			// SQL文の作成(COUNT用)
			// (2)
			StringBuffer sql_Buff2 = new StringBuffer();
			sql_Buff2.append(" SELECT  ")
					.append("     COUNT(*) AS CNT  ");
			
			// SQL文の作成(項目取得)
			// (3)
			StringBuffer sql_Buff3 = new StringBuffer();
			sql_Buff3.append(" SELECT  ")
					.append("       (SELECT COUNT(*)  ")
					.append("            FROM   KK_T_SVC_KEI KK0081  ")
					.append("            WHERE  KK0081.MENKAIHAT_ANKEN_NO = KK0271.MENKAIHAT_ANKEN_NO ")
					.append("              AND  (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) =  ")
					.append("                  (SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM)  ")
					.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("                      GROUP BY KK0081_GENE.SVC_KEI_NO )  ")
					.append("              AND KK0081.MENKAIHAT_ANKEN_KR_ADD_FLG = '1' ")
					.append("       ) AS KARI_ADD_ZUMI_CNT ")
					.append("     , (SELECT COUNT(*)  ")
					.append("            FROM   KK_T_SVC_KEI KK0081  ")
					.append("            WHERE  KK0081.MENKAIHAT_ANKEN_NO = KK0271.MENKAIHAT_ANKEN_NO ")
					.append("              AND  (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) =  ")
					.append("                  (SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM)  ")
					.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("                      GROUP BY KK0081_GENE.SVC_KEI_NO )  ")
					.append("       ) AS MENKAIHAT_ANKEN_NO_ADD_CNT ")
					.append("     , KK0271.MENKAIHAT_ANKEN_NO  ")
					.append("     , KK0271.ANKEN_NM  ")
					.append("     , KK0271.ANKEN_KANA  ")
					.append("     , KK0271.DEVELOPER_NM  ")
					.append("     , KK0271.BUKKEN_NM  ")
					.append("     , KK0271.OBOEGAKI_YK_KIGEN_YMD  ")
					.append("     , KK0271.BUNJO_KOSU  ")
					.append("     , KK0271.WRIB_SVC_CD  ")
					.append("     , KK0271.KAKUTOKU_CHANNEL_CD  ")
					.append("     , KK0271.STDARD_SVC_DIV  ")
					.append("     , KK0271.MENKAIHAT_ANKEN_AD_CD  ")
					.append("     , KK0271.MENKAIHAT_ANKEN_PCD  ")
					.append("     , KK0271.MENKAIHAT_ANKEN_STATE_NM  ")
					.append("     , KK0271.MENKAIHAT_ANKEN_CITY_NM  ")
					.append("     , KK0271.MENKAIHAT_ANKEN_OAZTSU_NM  ")
					.append("     , KK0271.MENKAIHAT_ANKEN_AZCHO_NM  ")
					.append("     , KK0271.MENKAIHAT_ANKEN_BNCHIGO  ")
					.append("     , KK0271.MENKAIHAT_ANKEN_TELNO  ")
					.append("     , KK0271.DONYU_TNTSHA_USER_NM  ")
					.append("     , KK0271.DONYU_TNTSHA_ORG_NM  ")
					.append("     , KK0271.DONYU_TNTSHA_POSITION_NM  ")
					.append("     , KK0271.FOLLOW_TNTSHA_USER_NM  ")
					.append("     , KK0271.FOLLOW_TNTSHA_ORG_NM  ")
					.append("     , KK0271.FOLLOW_TNTSHA_POSITION_NM  ")
					.append("     , KK0271.BUKKEN_PATTERN_CD  ")
					.append("     , KK0271.INCE_TRGT_CD  ")
					.append("     , KK0271.KEPCO_SHITEN_CD  ")
					.append("     , KK0271.OBOEGAKI_CNC_YMD  ")
					.append("     , KK0271.JUCHU_YM  ")
					.append("     , KK0271.NAIJI_YM  ")
					.append("     , KK0271.EHOUSE_RPT_INCNTV_PAY_YM  ")
					.append("     , KK0271.MENKAIHAT_ANKEN_HSK_BIKO  ");
			// SQL文の作成(WHERE句)
			// (4)
			StringBuffer sql_Buff4 = new StringBuffer();
			if ( "1".equals( inMsg.getObject(EKK0271B001CBSMsg.FUNC_CODE).toString() ) ) {
				sql_Buff4.append(" FROM  KK_T_MENKAIHAT_ANKEN KK0271  ")
				.append(" WHERE  ")
				.append("     KK0271.MK_FLG = '0'  ");
 				
 				// ＫＥＹ＿面開発案件番号の設定判定
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_NO)) {
 					sql_Buff4.append("     AND KK0271.MENKAIHAT_ANKEN_NO LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// ＫＥＹ＿案件名
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_ANKEN_NM)) {
 					sql_Buff4.append("     AND KK0271.ANKEN_NM LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// ＫＥＹ＿案件カナ名
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_ANKEN_KANA)) {
 					sql_Buff4.append("     AND KK0271.ANKEN_KANA LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// ＫＥＹ＿ディベロッパー名
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_DEVELOPER_NM)) {
 					sql_Buff4.append("     AND KK0271.DEVELOPER_NM LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// ＫＥＹ＿物件名
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_BUKKEN_NM)) {
 					sql_Buff4.append("     AND KK0271.BUKKEN_NM LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// ＫＥＹ＿割引サービスコード
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_WRIB_SVC_CD)) {
 					sql_Buff4.append("     AND KK0271.WRIB_SVC_CD = ? ");
 				}
 				// ＫＥＹ＿面開発案件都道府県名
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_STATE_NM)) {
 					sql_Buff4.append("     AND KK0271.MENKAIHAT_ANKEN_STATE_NM LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// ＫＥＹ＿面開発案件市区町村名
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_CITY_NM)) {
 					sql_Buff4.append("     AND KK0271.MENKAIHAT_ANKEN_CITY_NM LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// ＫＥＹ＿面開発案件大字通称名
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_OAZTSU_NM)) {
 					sql_Buff4.append("     AND KK0271.MENKAIHAT_ANKEN_OAZTSU_NM LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// ＫＥＹ＿面開発案件字丁目名
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_AZCHO_NM)) {
 					sql_Buff4.append("     AND KK0271.MENKAIHAT_ANKEN_AZCHO_NM LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// ＫＥＹ＿面開発案件番地号
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_BNCHIGO)) {
 					sql_Buff4.append("     AND KK0271.MENKAIHAT_ANKEN_BNCHIGO LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// ＫＥＹ＿導入担当者ユーザー名
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_DONYU_TNTSHA_USER_NM)) {
 					sql_Buff4.append("     AND KK0271.DONYU_TNTSHA_USER_NM LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// ＫＥＹ＿導入担当者組織名
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_DONYU_TNTSHA_ORG_NM)) {
 					sql_Buff4.append("     AND KK0271.DONYU_TNTSHA_ORG_NM LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// ＫＥＹ＿導入担当者立場名
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_DONYU_TNTSHA_POSITION_NM)) {
 					sql_Buff4.append("     AND KK0271.DONYU_TNTSHA_POSITION_NM LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// ＫＥＹ＿フォロー担当者ユーザー名
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_FOLLOW_TNTSHA_USER_NM)) {
 					sql_Buff4.append("     AND KK0271.FOLLOW_TNTSHA_USER_NM LIKE ? ");
 					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
				// ＫＥＹ＿フォロー担当者組織名
				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_FOLLOW_TNTSHA_ORG_NM)) {
					sql_Buff4.append("     AND KK0271.FOLLOW_TNTSHA_ORG_NM LIKE ? ");
					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
				}
				// ＫＥＹ＿フォロー担当者立場名
				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_FOLLOW_TNTSHA_POSITION_NM)) {
					sql_Buff4.append("     AND KK0271.FOLLOW_TNTSHA_POSITION_NM LIKE ? ");
					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
				}
				// ＫＥＹ＿担当者名またはＫＥＹ＿担当者カナ名
				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_TNTSHA_NM) || !inMsg.isNull(EKK0271B001CBSMsg.KEY_TNTSHA_KANA)) {
					sql_Buff4.append("     AND EXISTS ( ")
					.append("         SELECT 1 ")
					.append("         FROM  KK_T_MNKHT_TNTSHA KK0281 ")
					.append("         WHERE KK0281.MENKAIHAT_ANKEN_NO = KK0271.MENKAIHAT_ANKEN_NO ")
					.append("           AND KK0281.MK_FLG = '0' ");
					// ＫＥＹ＿担当者名
					if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_TNTSHA_NM)) {
						sql_Buff4.append("           AND KK0281.TNTSHA_NM LIKE ? ");
						
						//エスケープ付与
						sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
					}
					// ＫＥＹ＿担当者カナ名
					if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_TNTSHA_KANA)) {
						sql_Buff4.append("           AND KK0281.TNTSHA_KANA LIKE ? ");
						
						//エスケープ付与
						sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
					}
					sql_Buff4.append("         )     ");
				}
 				// ＫＥＹ＿表示用キャンペーンコード
 				if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_DSP_CAMPAIGN_CD)) {
 					sql_Buff4.append("     AND EXISTS ( ");
 					sql_Buff4.append("         SELECT 1 ");
 		 			sql_Buff4.append("         FROM KK_M_WRIB_SVC KK0841_TMP ");
 		 		 	sql_Buff4.append("         WHERE KK0841_TMP.WRIB_SVC_CD  = KK0271.WRIB_SVC_CD ");
 		 		 	sql_Buff4.append("         AND (KK0841_TMP.WRIB_SVC_CD, KK0841_TMP.RSV_APLY_YMD || KK0841_TMP.GENE_ADD_DTM) = ");
 		 		 	sql_Buff4.append("         ( ");
 		 		 	sql_Buff4.append("             SELECT KK0841_GEN.WRIB_SVC_CD, MAX(KK0841_GEN.RSV_APLY_YMD || KK0841_GEN.GENE_ADD_DTM) AS KK0161_MAX ");
 		 		 	sql_Buff4.append("             FROM   KK_M_WRIB_SVC KK0841_GEN ");
 		 		 	sql_Buff4.append("             WHERE  KK0841_GEN.WRIB_SVC_CD = KK0841_TMP.WRIB_SVC_CD ");
 		 		 	sql_Buff4.append("             AND    KK0841_GEN.RSV_APLY_YMD <= ? ");
 		 		 	sql_Buff4.append("             AND    KK0841_GEN.MK_FLG = '0' ");
 		 		 	sql_Buff4.append("             GROUP BY KK0841_GEN.WRIB_SVC_CD ");
 		 		 	sql_Buff4.append("         ) ");
 		 		 	sql_Buff4.append("         AND KK0841_TMP.DSP_CAMPAIGN_CD = ? ");
 		 		 	sql_Buff4.append("     ) ");
 				}
			}
			
			// SQL文の作成(ORDER BY句)
			// (5)
			StringBuffer sql_Buff5 = new StringBuffer();
			sql_Buff5.append(" ORDER BY KK0271.MENKAIHAT_ANKEN_NO ASC ");

			// SQL文の作成(ページングフッタ)
			// (6)
			StringBuffer sql_Buff6 = new StringBuffer();
			sql_Buff6.append("    ) ALL_SELECT  ")
					.append(") PAGE_SELECT  ")
					.append("WHERE PAGE_SELECT.LINE BETWEEN ? AND ?  ")
					.append("ORDER BY PAGE_SELECT.LINE ASC  ");
			
			// SQL文の組立て(件数取得用) (2) + (4)
			StringBuffer sql_Count = new StringBuffer();
			sql_Count.append(sql_Buff2)
					.append(sql_Buff4);
			
			//prepareStatementにSQL文をセット
			pstmt_Count = con1.prepareStatement(sql_Count.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Count);
			
			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			if ( "1".equals( inMsg.getString(EKK0271B001CBSMsg.FUNC_CODE) ) ) {
				// パラメータの設定
				iPCnt = setPram(inMsg, pstmt_Count, iPCnt);
			}
			
			// ResultSetの取得
			rsltQuery_Count = pstmt_Count.executeQuery();
			
			// 総検索件数を取得する
			Long lDataCnt = 0L;
			if (rsltQuery_Count.next())
			{
				lDataCnt = rsltQuery_Count.getLong("CNT");
			}

			// 表示件数
			Long lDispNum = inMsg.getStringAsLong(EKK0271B001CBSMsg.DISPLAY_NUM);

			// 表示ページ数
			Long lDispPage = inMsg.getStringAsLong(EKK0271B001CBSMsg.DISPLAY_PAGE_NUM);

			// 最大取得件数
			Long lMaxNum = inMsg.getStringAsLong(EKK0271B001CBSMsg.MAX_SEARCH_NUM);

			// 総ページ数
			String strMaxPage = JKKejbPagingUtil.calcTotalPage(lDataCnt, lDispNum);

			// 共通部に値を設定する
			inMsg.set(EKK0271B001CBSMsg.TOTAL_SEARCH_NUM, String.valueOf(lDataCnt));   // 総検索件数
			inMsg.set(EKK0271B001CBSMsg.TOTAL_PAGE_NUM, strMaxPage);   // 総ページ数

			// データ取得件数が0件の場合エラー
			if (0 == lDataCnt)
			{
				inMsg.set(EKK0271B001CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_ZERO);
				return;
			}

			// 最大取得件数を超えた場合エラー
			if (lDataCnt > lMaxNum)
			{
				inMsg.set(EKK0271B001CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_OVERMAX);
				return;
			}

			// SQL文の組立て(項目取得・ページング用) (1) + (3) + (4) + (5) + (6)
			StringBuffer sql_Page = new StringBuffer();
			sql_Page.append(sql_Buff1)
					.append(sql_Buff3)
					.append(sql_Buff4)
					.append(sql_Buff5)
					.append(sql_Buff6);
			
			//prepareStatementにSQL文をセット
			pstmt_Page = con1.prepareStatement(sql_Page.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Page);

			// 検索対象行を算出する
			long[] lPages = JKKejbPagingUtil.calcSearchRows(lDispPage, lDispNum);
			long lRowSta = lPages[0];
			long lRowEnd = lPages[1];

			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			if ( "1".equals( inMsg.getString(EKK0271B001CBSMsg.FUNC_CODE) ) ) {
				// パラメータの設定(運用日付を設定)
				CAANJDBCUtil.setParam(pstmt_Page, iPPage++, JKKModelCommon.getOpeDate(inMsg));
				// パラメータの設定(運用日付を設定)
				CAANJDBCUtil.setParam(pstmt_Page, iPPage++, JKKModelCommon.getOpeDate(inMsg));
				// パラメータの設定
				iPPage = setPram(inMsg, pstmt_Page, iPPage);
				// パラメータの設定(検索開始行を指定)
				CAANJDBCUtil.setParam(pstmt_Page, iPPage++, lRowSta);
				// パラメータの設定(検索終了行を指定)
				CAANJDBCUtil.setParam(pstmt_Page, iPPage++, lRowEnd);
			}
			// ResultSetの取得
			rsltQuery_Page = pstmt_Page.executeQuery();
			
			// EKK0271B001CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  EKK0271B001CBSMsg1List.KARI_ADD_ZUMI_CNT
					, EKK0271B001CBSMsg1List.MENKAIHAT_ANKEN_NO_ADD_CNT
					, EKK0271B001CBSMsg1List.MENKAIHAT_ANKEN_NO
					, EKK0271B001CBSMsg1List.ANKEN_NM
					, EKK0271B001CBSMsg1List.ANKEN_KANA
					, EKK0271B001CBSMsg1List.DEVELOPER_NM
					, EKK0271B001CBSMsg1List.BUKKEN_NM
					, EKK0271B001CBSMsg1List.OBOEGAKI_YK_KIGEN_YMD
					, EKK0271B001CBSMsg1List.BUNJO_KOSU
					, EKK0271B001CBSMsg1List.WRIB_SVC_CD
					, EKK0271B001CBSMsg1List.KAKUTOKU_CHANNEL_CD
					, EKK0271B001CBSMsg1List.STDARD_SVC_DIV
					, EKK0271B001CBSMsg1List.MENKAIHAT_ANKEN_AD_CD
					, EKK0271B001CBSMsg1List.MENKAIHAT_ANKEN_PCD
					, EKK0271B001CBSMsg1List.MENKAIHAT_ANKEN_STATE_NM
					, EKK0271B001CBSMsg1List.MENKAIHAT_ANKEN_CITY_NM
					, EKK0271B001CBSMsg1List.MENKAIHAT_ANKEN_OAZTSU_NM
					, EKK0271B001CBSMsg1List.MENKAIHAT_ANKEN_AZCHO_NM
					, EKK0271B001CBSMsg1List.MENKAIHAT_ANKEN_BNCHIGO
					, EKK0271B001CBSMsg1List.MENKAIHAT_ANKEN_TELNO
					, EKK0271B001CBSMsg1List.DONYU_TNTSHA_USER_NM
					, EKK0271B001CBSMsg1List.DONYU_TNTSHA_ORG_NM
					, EKK0271B001CBSMsg1List.DONYU_TNTSHA_POSITION_NM
					, EKK0271B001CBSMsg1List.FOLLOW_TNTSHA_USER_NM
					, EKK0271B001CBSMsg1List.FOLLOW_TNTSHA_ORG_NM
					, EKK0271B001CBSMsg1List.FOLLOW_TNTSHA_POSITION_NM
					, EKK0271B001CBSMsg1List.BUKKEN_PATTERN_CD
					, EKK0271B001CBSMsg1List.INCE_TRGT_CD
					, EKK0271B001CBSMsg1List.KEPCO_SHITEN_CD
					, EKK0271B001CBSMsg1List.OBOEGAKI_CNC_YMD
					, EKK0271B001CBSMsg1List.JUCHU_YM
					, EKK0271B001CBSMsg1List.NAIJI_YM
					, EKK0271B001CBSMsg1List.EHOUSE_RPT_INCNTV_PAY_YM
					, EKK0271B001CBSMsg1List.MENKAIHAT_ANKEN_HSK_BIKO
			};
			
			// 明細に処理結果(ResultSet)をマッピング
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery_Page,msgKeyList1,"eo.ejb.cbs.cbsmsg.EKK0271B001CBSMsg1List",0);
			
			// 取得結果が0件の場合は表示ページ該当なしエラー
			if (0 >= outMsg1.length)
			{
				inMsg.set(EKK0271B001CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_NODATA);
				return;
			}
			
			// inMsg(CBSMsg)に明細をセット
			inMsg.set("EKK0271B001CBSMsg1List", outMsg1);
			

		} catch(SQLException e) {
			inMsg.set(EKK0271B001CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} finally {
			// 資源の解放
			try{
				if(rsltQuery_Count != null){
					rsltQuery_Count.close();
				}
				if(rsltQuery_Page != null){
					rsltQuery_Page.close();
				}
				if(pstmt_Count != null){
					pstmt_Count.close();
				}
				if(pstmt_Page != null){
					pstmt_Page.close();
				}
				if(con1 != null){
					closeConnection(con1);
				}
			}catch(SQLException e){
				inMsg.set(EKK0271B001CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * <p>
	 * パラメータの設定を行います。
	 * </p>
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @param pstmt プリペアステートメント
	 * @param iPCnt パラメータのカウント
	 * @return iPCnt パラメータのカウント
	 * @exception SQLException
	*/
	private int setPram(CAANMsg inMsg, PreparedStatement pstmt, int iPCnt) throws SQLException
	{
		
		// パラメータの設定(ＫＥＹ＿面開発案件番号を指定)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_NO)) {
			// LIKE検索文字列置き換え処理
			String key_menkaihatankenno = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_NO));
			key_menkaihatankenno = key_menkaihatankenno + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, key_menkaihatankenno);
		}
		// パラメータの設定(ＫＥＹ＿案件名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_ANKEN_NM)) {
			// LIKE検索文字列置き換え処理
			String keyankennm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_ANKEN_NM));
			keyankennm = PERCENT + keyankennm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keyankennm);
		}
		// パラメータの設定(ＫＥＹ＿案件カナ名を指定)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_ANKEN_KANA)) {
			// LIKE検索文字列置き換え処理
			String keyankenkana = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_ANKEN_KANA));
			keyankenkana = PERCENT + keyankenkana + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keyankenkana);
		}
		// パラメータの設定(ＫＥＹ＿ディベロッパー名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_DEVELOPER_NM)) {
			// LIKE検索文字列置き換え処理
			String keydevelopernm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_DEVELOPER_NM));
			keydevelopernm = PERCENT + keydevelopernm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keydevelopernm);
		}
		// パラメータの設定(ＫＥＹ＿物件名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_BUKKEN_NM)) {
			// LIKE検索文字列置き換え処理
			String keybukkennm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_BUKKEN_NM));
			keybukkennm = PERCENT + keybukkennm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keybukkennm);
		}
		// パラメータの設定(ＫＥＹ＿割引サービスコードを指定)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_WRIB_SVC_CD)) {
			CAANJDBCUtil.setParam(pstmt, iPCnt++, inMsg.getObject(EKK0271B001CBSMsg.KEY_WRIB_SVC_CD));
		}
		// パラメータの設定(ＫＥＹ＿面開発案件都道府県名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_STATE_NM)) {
			// LIKE検索文字列置き換え処理
			String keymenkaihatankenstatenm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_STATE_NM));
			keymenkaihatankenstatenm = PERCENT + keymenkaihatankenstatenm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keymenkaihatankenstatenm);
		}
		// パラメータの設定(ＫＥＹ＿面開発案件市区町村名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_CITY_NM)) {
			// LIKE検索文字列置き換え処理
			String keymenkaihatankencitynm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_CITY_NM));
			keymenkaihatankencitynm = PERCENT + keymenkaihatankencitynm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keymenkaihatankencitynm);
		}
		// パラメータの設定(ＫＥＹ＿面開発案件大字通称名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_OAZTSU_NM)) {
			// LIKE検索文字列置き換え処理
			String keymenkaihatankenoaztsunm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_OAZTSU_NM));
			keymenkaihatankenoaztsunm = PERCENT + keymenkaihatankenoaztsunm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keymenkaihatankenoaztsunm);
		}
		// パラメータの設定(ＫＥＹ＿面開発案件字丁目名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_AZCHO_NM)) {
			// LIKE検索文字列置き換え処理
			String keymenkaihatankenazchonm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_AZCHO_NM));
			keymenkaihatankenazchonm = PERCENT + keymenkaihatankenazchonm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keymenkaihatankenazchonm);
		}
		// パラメータの設定(ＫＥＹ＿面開発案件番地号)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_BNCHIGO)) {
			// LIKE検索文字列置き換え処理
			String keymenkaihatankenbnchigo = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_MENKAIHAT_ANKEN_BNCHIGO));
			keymenkaihatankenbnchigo = PERCENT + keymenkaihatankenbnchigo + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keymenkaihatankenbnchigo);
		}
		// パラメータの設定(ＫＥＹ＿導入担当者ユーザー名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_DONYU_TNTSHA_USER_NM)) {
			// LIKE検索文字列置き換え処理
			String keydonyutntshausernm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_DONYU_TNTSHA_USER_NM));
			keydonyutntshausernm = PERCENT + keydonyutntshausernm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keydonyutntshausernm);
		}
		// パラメータの設定(ＫＥＹ＿導入担当者組織名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_DONYU_TNTSHA_ORG_NM)) {
			// LIKE検索文字列置き換え処理
			String keydonyutntshaorgnm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_DONYU_TNTSHA_ORG_NM));
			keydonyutntshaorgnm = PERCENT + keydonyutntshaorgnm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keydonyutntshaorgnm);
		}
		// パラメータの設定(ＫＥＹ＿導入担当者立場名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_DONYU_TNTSHA_POSITION_NM)) {
			// LIKE検索文字列置き換え処理
			String keydonyutntshapositionnm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_DONYU_TNTSHA_POSITION_NM));
			keydonyutntshapositionnm = PERCENT + keydonyutntshapositionnm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keydonyutntshapositionnm);
		}
		// パラメータの設定(ＫＥＹ＿フォロー担当者ユーザー名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_FOLLOW_TNTSHA_USER_NM)) {
			// LIKE検索文字列置き換え処理
			String keyfollowtntshausernm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_FOLLOW_TNTSHA_USER_NM));
			keyfollowtntshausernm = PERCENT + keyfollowtntshausernm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keyfollowtntshausernm);
		}
		// パラメータの設定(ＫＥＹ＿フォロー担当者組織名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_FOLLOW_TNTSHA_ORG_NM)) {
			// LIKE検索文字列置き換え処理
			String keyfollowtntshaorgnm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_FOLLOW_TNTSHA_ORG_NM));
			keyfollowtntshaorgnm = PERCENT + keyfollowtntshaorgnm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keyfollowtntshaorgnm);
		}
		// パラメータの設定(ＫＥＹ＿フォロー担当者立場名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_FOLLOW_TNTSHA_POSITION_NM)) {
			// LIKE検索文字列置き換え処理
			String keyfollowtntshapositionnm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_FOLLOW_TNTSHA_POSITION_NM));
			keyfollowtntshapositionnm = PERCENT + keyfollowtntshapositionnm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keyfollowtntshapositionnm);
		}
		// パラメータの設定(ＫＥＹ＿担当者名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_TNTSHA_NM)) {
			// LIKE検索文字列置き換え処理
			String keytntshanm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_TNTSHA_NM));
			keytntshanm = PERCENT + keytntshanm + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keytntshanm);
		}
		// パラメータの設定(ＫＥＹ＿担当者カナ名)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_TNTSHA_KANA)) {
			// LIKE検索文字列置き換え処理
			String keytntshakana = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0271B001CBSMsg.KEY_TNTSHA_KANA));
			keytntshakana = PERCENT + keytntshakana + PERCENT;
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keytntshakana);
		}
		// パラメータの設定(ＫＥＹ＿表示用キャンペーンコードを指定)
		if (!inMsg.isNull(EKK0271B001CBSMsg.KEY_DSP_CAMPAIGN_CD)) {
			// パラメータの設定(運用日付を設定)
			CAANJDBCUtil.setParam(pstmt, iPCnt++, JKKModelCommon.getOpeDate(inMsg));
			CAANJDBCUtil.setParam(pstmt, iPCnt++, inMsg.getObject(EKK0271B001CBSMsg.KEY_DSP_CAMPAIGN_CD));
		}
		return iPCnt;
	}
}
