/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbEKK0021B611TPDA
*	ソースファイル名：JSYejbEKK0021B611TPDA.java
*	作成者			：EK918550
*	日付			：2017年06月07日
*＜機能概要＞
*	訪販申込一覧照会（お客様）テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ33.00.00	2017/06/07	FJ)舘山		【ANK-3214-01-00】訪販申込情報詳細取得ＡＰＩの改修　〜そのA〜
*	ｖ33.00.01	2017/06/16	FJ)舘山		【ANK-3214-01-00】性能改善（インデックス追加不要対応）
*	ｖ33.00.02	2017/06/19	FJ)舘山		【IT1-2017-0000088】電話番号で検索できない
*	ｖ33.01.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.EKK0021B611CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021B611CBSMsg1List;
import eo.ejb.cbm.entity.KK0021ETMsg;
import eo.ejb.common.JKKModelCommon;

/**
*
*  テンプレートDBアクセス部品　EKK0021B611_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbEKK0021B611TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
	
	/** 最大検索件数を設定する */
	private static int MAX_RECORD_COUNT_PLUS_1 = 401;

	/**
	 * コンストラクタ
	 */
	public JSYejbEKK0021B611TPDA()	{
	}
	
	/**
	*   EKK0021B611_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文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT /*EKK0021B611*/")
// 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 ")
					.append("           WHERE KK0061.AGNT_CD = KK0071_1.AGNT_CD ")
					.append("             AND KK0061.GENE_ADD_DTM = ( ")
					.append("                 SELECT MAX(KK0061_GENE.GENE_ADD_DTM) MAX_GENE ")
					.append("                    FROM KK_M_AGNT KK0061_GENE ")
					.append("                    WHERE KK0061_GENE.AGNT_CD = KK0071_1.AGNT_CD ")
					.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 ")
					.append("           WHERE KK0061.AGNT_CD = KK0071_2.AGNT_CD ")
					.append("             AND KK0061.GENE_ADD_DTM = ( ")
					.append("                 SELECT MAX(KK0061_GENE.GENE_ADD_DTM) MAX_GENE ")
					.append("                    FROM KK_M_AGNT KK0061_GENE ")
					.append("                    WHERE KK0061_GENE.AGNT_CD = KK0071_2.AGNT_CD ")
					.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 ")
// ANK-3278-00-00 2017/08/24 MOD START
//					.append("     ,KK0021.CUST_NM ")
					.append("     ,CK0011.CUST_NM ")
// ANK-3278-00-00 2017/08/24 MOD END
					.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 ");
			
			// パラメータの追加
			paramList.add(JKKModelCommon.getOpeDate(inMsg));
			paramList.add(JKKModelCommon.getOpeDate(inMsg));
			
			// SQL文_個別部1
			if ( "1".equals( inMsg.getObject(EKK0021B611CBSMsg.FUNC_CODE).toString() ) ) {
 				sql_Buff.append(" FROM ( ")
// ANK-3278-00-00 2017/08/24 MOD START
//						.append("         SELECT KK0021_ENB.KEY_MSKMSHO_NO ")
//						.append("               ,KK0021_ENB.CUST_NM ")
//						.append("               ,MIN(KK0021_ENB.ALL_MSKM_NO) KEY_MSKM_NO ")
//						.append("               ,MIN(KK0021_ENB.ALL_MSKM_YMD) FIRST_MSKM_YMD ")
//						.append("         FROM ( ")
//						.append("             SELECT CK0011_BASE.SYSID ")
//						.append("                   ,CK0011_BASE.CUST_NM ")
//						.append("                   ,NVL(KK0021_BASE.DOJI_MSKM_EOH_MSKMSHO_NO, KK0021_BASE.MSKMSHO_NO) KEY_MSKMSHO_NO ")
//						.append("                   ,DECODE(KK0021_BASE.DOJI_MSKM_EOH_MSKMSHO_NO, NULL, KK0021_BASE.MSKM_NO, NULL) ALL_MSKM_NO ")
//						.append("                   ,DECODE(KK0021_BASE.DOJI_MSKM_EOH_MSKMSHO_NO, NULL, KK0021_BASE.MSKM_YMD, NULL) ALL_MSKM_YMD ")
//						.append("             FROM ( ");
 						.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
 				
				// お客様名カナのみが設定されている場合
				if (!inMsg.isNull(EKK0021B611CBSMsg.KEY_CUST_KANA) && inMsg.isNull(EKK0021B611CBSMsg.KEY_TELNO))
				{
// ANK-3278-00-00 2017/08/24 MOD START
//					sql_Buff.append("                     SELECT CK0011_A.SYSID ")
//							.append("                           ,CK0011_A.CUST_NM ")
//							.append("                     FROM CK_T_CUST CK0011_A ")
//							.append("                     WHERE CK0011_A.RSV_APLY_YMD || CK0011_A.GENE_ADD_DTM = ( ")
//							.append("                                 SELECT MIN(CK0011_1.RSV_APLY_YMD || CK0011_1.GENE_ADD_DTM) AS  CK001_MIN ")
//							.append("                                 FROM CK_T_CUST CK0011_1 ")
//							.append("                                 WHERE CK0011_1.SYSID = CK0011_A.SYSID ")
//							.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_A.MK_FLG = '0' ")
//							.append("                      AND CK0011_A.CUST_KANA LIKE ? ")
//							.append("                   UNION ALL ")
//							.append("                     SELECT CK0011_B.SYSID ")
//							.append("                           ,CK0011_B.CONT_CUST_NM ")
//							.append("                     FROM CK_T_CUST CK0011_B ")
//							.append("                     WHERE CK0011_B.RSV_APLY_YMD || CK0011_B.GENE_ADD_DTM = ( ")
//							.append("                                 SELECT MIN(CK0011_1.RSV_APLY_YMD || CK0011_1.GENE_ADD_DTM) AS  CK001_MIN ")
//							.append("                                 FROM CK_T_CUST CK0011_1 ")
//							.append("                                 WHERE CK0011_1.SYSID = CK0011_B.SYSID ")
//							.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_B.MK_FLG = '0' ")
//							.append("                      AND CK0011_B.CONT_CUST_KANA LIKE ? ");
//
//					// パラメータを追加
//					paramList.add(JKKModelCommon.getOpeDate(inMsg));
//	 				paramList.add(inMsg.getString(EKK0021B611CBSMsg.KEY_CUST_KANA) + "%");
//	 				paramList.add(JKKModelCommon.getOpeDate(inMsg));
//	 				paramList.add(inMsg.getString(EKK0021B611CBSMsg.KEY_CUST_KANA) + "%");
					sql_Buff.append("                     AND ")
							.append("                            KK3101_A.CUST_KANA LIKE '")
							.append(inMsg.getString(EKK0021B611CBSMsg.KEY_CUST_KANA) + "%'");
// ANK-3278-00-00 2017/08/24 MOD END
				}
				
				// 電話番号が設定されている場合
				if (!inMsg.isNull(EKK0021B611CBSMsg.KEY_TELNO))
				{
// ANK-3278-00-00 2017/08/24 MOD START
//					sql_Buff.append("                     SELECT CK0201.SYSID ")
//							.append("                           ,CK0011.CUST_NM ")
//							.append("                     FROM CK_T_RRKS CK0201")
//							.append("                     INNER JOIN CK_T_CUST CK0011 ")
//							.append("                      ON CK0011.SYSID = CK0201.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  CK001_MIN ")
//							.append("                                 FROM CK_T_CUST CK0011_1 ")
//							.append("                                 WHERE CK0011_1.SYSID = CK0011.SYSID ")
//							.append("                                   AND CK0011_1.CUST_KANA 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("                     WHERE CK0201.TELNO = ?")
//							.append("                     AND CK0201.RRK_WAY_CD = '003'")
//							.append("                     AND CK0201.RSV_APLY_YMD || CK0201.GENE_ADD_DTM = ( ")
//							.append("                                  SELECT MIN(CK0201_1.RSV_APLY_YMD || CK0201_1.GENE_ADD_DTM) AS  CK0201_MIN ")
//							.append("                                  FROM CK_T_RRKS CK0201_1 ")
//							.append("                                  WHERE CK0201_1.RRKS_NO = CK0201.RRKS_NO ")
//							.append("                                    AND CK0201_1.RSV_APLY_YMD <= ? ")
//							.append("                                    AND CK0201_1.RSV_APLY_CD = '2' ")
//							.append("                                    AND CK0201_1.MK_FLG = '0' ")
//							.append("                       ) ");
//					
//	 				paramList.add(JKKModelCommon.getOpeDate(inMsg));
//					paramList.add(inMsg.getString(EKK0021B611CBSMsg.KEY_TELNO));
//	 				paramList.add(JKKModelCommon.getOpeDate(inMsg));
//	 				
//	 				// お客様名カナがある場合
//	 				if (!inMsg.isNull(EKK0021B611CBSMsg.KEY_CUST_KANA))
//					{
//	 					sql_Buff.append("                      AND CK0011.CUST_KANA LIKE ? ");
//		 				paramList.add(inMsg.getString(EKK0021B611CBSMsg.KEY_CUST_KANA) + "%");
//					}
//// IT1-2017-0000088 ADD START
//					sql_Buff.append("             UNION") 
//							.append("                     SELECT CK0011.SYSID ")
//							.append("                           ,CK0011.CUST_NM ")
//							.append("                     FROM CK_T_CUST CK0011 ")
//							.append("                     WHERE ")
//							.append("                       CK0011.RSV_APLY_YMD || CK0011.GENE_ADD_DTM = ( ")
//							.append("                                 SELECT MIN(CK0011_1.RSV_APLY_YMD || CK0011_1.GENE_ADD_DTM) AS  CK001_MIN ")
//							.append("                                 FROM CK_T_CUST CK0011_1 ")
//							.append("                                 WHERE CK0011_1.SYSID = CK0011.SYSID ")
//							.append("                                   AND CK0011_1.CUST_KANA 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.KEISHA_TELNO = ?");
					sql_Buff.append("                     AND ")
							.append("                            KK3101_A.KEISHA_TELNO = ? ");

//					paramList.add(JKKModelCommon.getOpeDate(inMsg));
// ANK-3278-00-00 2017/08/24 MOD END
					paramList.add(inMsg.getString(EKK0021B611CBSMsg.KEY_TELNO));
					
// ANK-3278-00-00 2017/08/24 DEL START
//	 				// お客様名カナがある場合
//	 				if (!inMsg.isNull(EKK0021B611CBSMsg.KEY_CUST_KANA))
//					{
//	 					sql_Buff.append("                  AND CK0011.CUST_KANA LIKE ? ");
//		 				paramList.add(inMsg.getString(EKK0021B611CBSMsg.KEY_CUST_KANA) + "%");
//					}
//// IT1-2017-0000088 ADD END
// ANK-3278-00-00 2017/08/24 DEL END
				}
				
// ANK-3278-00-00 2017/08/24 MOD START
//				sql_Buff.append("             )  CK0011_BASE ")
//						.append("             INNER JOIN KK_T_MSKM_DTL KK0021_BASE ON ")
//						.append("                 KK0021_BASE.SYSID = CK0011_BASE.SYSID ")
//// ▼▼▼ ANK-3214-01-00 性能改善 2017-06-15 DEL START
////						.append("             AND KK0021_BASE.MSKM_FORM_CD = '03' ")
////						.append("             AND KK0021_BASE.MK_FLG = '0' ")
//// △△△ ANK-3214-01-00 性能改善 2017-06-15 DEL START
//						.append("             AND (KK0021_BASE.MSKM_DTL_NO, KK0021_BASE.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_BASE.MSKM_DTL_NO ")
//// ▼▼▼ ANK-3214-01-00 性能改善 2017-06-15 ADD START
//						.append("                        AND KK0021_MIN.MSKM_FORM_CD = '03' ")
//// △△△ ANK-3214-01-00 性能改善 2017-06-15 ADD START
//						.append("                        AND KK0021_MIN.MK_FLG = '0' ")
//						.append("                      GROUP BY KK0021_MIN.MSKM_DTL_NO ")
//						.append("             ) ")
//						.append("         ) KK0021_ENB ")
//						.append("         GROUP BY KK0021_ENB.KEY_MSKMSHO_NO, KK0021_ENB.CUST_NM ")
//						.append(" ) KK0021 ")
				sql_Buff.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' ")
						.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' ")
// ANK-3278-00-00 2017/08/24 ADD START
						.append("  INNER JOIN ")
						.append("      CK_T_CUST CK0011 ")
						.append("  ON ")
						.append("      CK0011.SYSID = KK3101.SYSID ")
						.append("  AND ")
						.append("      CK0011.RSV_APLY_YMD || CK0011.GENE_ADD_DTM = ( ")
						.append("          SELECT ")
						.append("              MIN(CK0011_1.RSV_APLY_YMD || CK0011_1.GENE_ADD_DTM) AS CK0011_MIN ")
						.append("          FROM ")
						.append("              CK_T_CUST CK0011_1 ")
						.append("          WHERE ")
						.append("              CK0011_1.SYSID = CK0011.SYSID ")
						.append("          AND ")
						.append("              CK0011_1.RSV_APLY_YMD <= ? ")
						.append("          AND ")
						.append("              CK0011_1.RSV_APLY_CD = '2' ")
						.append("          AND ")
						.append("              CK0011_1.MK_FLG = '0' ")
						.append("      ) ")
						.append("  AND ")
						.append("      CK0011.MK_FLG = '0' ")
// ANK-3278-00-00 2017/08/24 ADD END
						.append(" WHERE ")
						.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(EKK0021B611CBSMsg.KEY_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_Buff.append(sb).append(")")
							.append("        AND KK0071_0.MSKM_AGNT_NO IN ('002', '004')")
							.append("        AND KK0071_0.MK_FLG = '0'")
							.append(" )");
// ANK-3278-00-00 2017/08/24 ADD START
					paramList.add(JKKModelCommon.getOpeDate(inMsg));
// ANK-3278-00-00 2017/08/24 ADD END
			}
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);
			
			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			if ( "1".equals( inMsg.getString(EKK0021B611CBSMsg.FUNC_CODE) ) ) {
				setParameter(pstmt, paramList);
			}
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// EKK0021B611CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  EKK0021B611CBSMsg1List.UK_NO
					, EKK0021B611CBSMsg1List.MSKM_YMD
					, EKK0021B611CBSMsg1List.TRAT_CD_1
					, EKK0021B611CBSMsg1List.TRAT_CD_2
					, EKK0021B611CBSMsg1List.CUST_NM
					, EKK0021B611CBSMsg1List.THNX_CALL_JSSI_YMD
					, EKK0021B611CBSMsg1List.CNCL_JGI_ADD_YMD
					, EKK0021B611CBSMsg1List.CNCL_JGI_SNN_YMD
					, EKK0021B611CBSMsg1List.CNCL_JGI_HNN_YMD
			};
			
			// 最大取得件数
			int maxNumP1 = MAX_RECORD_COUNT_PLUS_1;
			if (!inMsg.isNull(EKK0021B611CBSMsg.MAX_SEARCH_NUM))
			{
				maxNumP1 = inMsg.getStringAsInt(EKK0021B611CBSMsg.MAX_SEARCH_NUM) + 1;
			}

			// 明細に処理結果(ResultSet)をマッピング
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery,msgKeyList1,"eo.ejb.cbs.cbsmsg.EKK0021B611CBSMsg1List", maxNumP1);

			// 検索件数が上限を超えたらエラーとする
			if (outMsg1 != null && outMsg1.length == maxNumP1)
			{
				inMsg.set(EKK0021B611CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_OVERMAX);
				return ;
			}

			// inMsg(CBSMsg)に明細をセット
			inMsg.set("EKK0021B611CBSMsg1List", outMsg1);
			

		} catch(SQLException e) {
			inMsg.set(EKK0021B611CBSMsg.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(EKK0021B611CBSMsg.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));
			
		}
	}
}
