/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbEKK3061B501TPDA
*	ソースファイル名：JSYejbEKK3061B501TPDA.java
*	作成者			：EK917148
*	日付			：2016年06月13日
*＜機能概要＞
*	eoプレミアムクラブ施策申請条件一覧照会テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ1.00.00
*	v66.00.00	2023/02/27	FJ)松永		【ANK-4307-00-00】【eo定期】プレミアムクラブリニューアル対応
*	v66.00.01   2023/02/27	FJ)美濃原	【ANK-4307-00-00】【eo定期】プレミアムクラブリニューアル対応
*
********************************************************************************/

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.ejb.cbs.cbsmsg.EKK3061B501CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3061B501CBSMsg1List;
import eo.ejb.cbm.entity.KK3061ETMsg;
import eo.ejb.common.JFUModelCommon;

/**
*
*  テンプレートDBアクセス部品　EKK3061B501_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbEKK3061B501TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{

	/**
	 * テンプレートID
	 */
	public static final String TEMPLATE_ID = "EKK3061B501";
	
	/** 空文字 */
	public static final String EMPTY = "";

	/** 宅内機器リストのサイズ */
	public static final int KIKI_LIST_SIZE = 5;
	
	/**
	 * コンストラクタ
	 */
	public JSYejbEKK3061B501TPDA()	{
	}
	
	/**
	*   EKK3061B501_SQLF<br>
	*   @param inMsg    入力値の格納されたCBSMsg <br>
	*   @return void
	*/
	public void invoke(CAANMsg inMsg,AgentDispatchContext inContext){
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/

		try{
			
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK3061ETMsg.getTableName());
			//** ANK-2687-00-00_手修正 start **//
			String tkniKikiListStr = EMPTY;
			String[] taknkikiSbtCdList = null;
			String[] stcTekkyoFlgList = null;
			String[] taknkikiIdoCdList = null;

			if(inMsg.getObject(EKK3061B501CBSMsg.KEY_TAKNKIKI_SBT_CD) != null)
			{
				// ＫＥＹ＿宅内機器種別コードを取得
				String taknkikiSbtCd = (String)inMsg.getObject(EKK3061B501CBSMsg.KEY_TAKNKIKI_SBT_CD);
				// 宅内機器種別コードを区切文字で分割する
				taknkikiSbtCdList = taknkikiSbtCd.split(",");
			}
			if(inMsg.getObject(EKK3061B501CBSMsg.KEY_STC_TEKKYO_FLG) != null)
			{
				// ＫＥＹ＿設置撤去フラグを取得
				String stcTekkyoFlg = (String)inMsg.getObject(EKK3061B501CBSMsg.KEY_STC_TEKKYO_FLG);
				// 宅内機器種別コードを区切文字で分割する
				stcTekkyoFlgList = stcTekkyoFlg.split(",");
			}
			if(inMsg.getObject(EKK3061B501CBSMsg.KEY_TAKNKIKI_IDO_CD) != null)
			{
				// ＫＥＹ＿宅内機器異動コードを取得
				String taknkikiIdoCd = (String)inMsg.getObject(EKK3061B501CBSMsg.KEY_TAKNKIKI_IDO_CD);
				// 宅内機器種別コードを区切文字で分割する
				taknkikiIdoCdList = taknkikiIdoCd.split(",");
			}

			// パラメータの取得(宅内機器種別コードが設定されている場合)
			if(taknkikiSbtCdList != null && taknkikiSbtCdList.length > 0)
			{
				StringBuffer sql_Buff_Kiki = new StringBuffer();
				sql_Buff_Kiki.append(" ( SELECT ");
				for(int i = 0; i < taknkikiSbtCdList.length; i++)
				{
					if(i > 0)
					{
						sql_Buff_Kiki.append(" UNION ALL SELECT ");
					}
					if(taknkikiSbtCdList[i] != null && !EMPTY.equals(taknkikiSbtCdList[i]))
					{
						sql_Buff_Kiki.append(" ? ");
					}
					else
					{
						sql_Buff_Kiki.append(" '' ");
					}

					sql_Buff_Kiki.append(" AS TAKNKIKI_SBT_CD, ");
					if(stcTekkyoFlgList != null && stcTekkyoFlgList.length > i)
					{
						if(stcTekkyoFlgList[i] != null && !EMPTY.equals(stcTekkyoFlgList[i]))
						{
							sql_Buff_Kiki.append(" ? ");
						}
						else
						{
							sql_Buff_Kiki.append(" '' ");
						}
					}
					else
					{
						sql_Buff_Kiki.append(" '' ");
					}
					sql_Buff_Kiki.append(" AS STC_TEKKYO_FLG, ");
					if(taknkikiIdoCdList != null && taknkikiIdoCdList.length > i)
					{
						if(taknkikiIdoCdList[i] != null && !EMPTY.equals(taknkikiIdoCdList[i]))
						{
							sql_Buff_Kiki.append(" ? ");
						}
						else
						{
							sql_Buff_Kiki.append(" '' ");
						}
					}
					else
					{
						sql_Buff_Kiki.append(" '' ");
					}
					sql_Buff_Kiki.append(" AS TAKNKIKI_IDO_CD FROM DUAL ");
				}
				sql_Buff_Kiki.append(" ) ");
				tkniKikiListStr = sql_Buff_Kiki.toString();
			}
			
			//** ANK-2687-00-00_手修正 end **//

			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT /*EKK3061B501*/")
					.append("     KK3061.EOPRMCL_SISAK_CD, ")
					.append("     KK3061.EOPRMCL_SSKSSJK_SBT_CD, ")
					.append("     KK3061.EOPRMCL_SSKSSJK_NO, ")
					.append("     KK3061.KOJIAK_SBT_CD, ")
					.append("     KK3061.TAKNKIKI_SBT_CD_1, ")
					.append("     KK3061.STC_TEKKYO_FLG_1, ")
					.append("     KK3061.TAKNKIKI_IDO_CD_1, ")
					.append("     KK3061.TAKNKIKI_SBT_CD_2, ")
					.append("     KK3061.STC_TEKKYO_FLG_2, ")
					.append("     KK3061.TAKNKIKI_IDO_CD_2, ")
					.append("     KK3061.TAKNKIKI_SBT_CD_3, ")
					.append("     KK3061.STC_TEKKYO_FLG_3, ")
					.append("     KK3061.TAKNKIKI_IDO_CD_3, ")
					.append("     KK3061.TAKNKIKI_SBT_CD_4, ")
					.append("     KK3061.STC_TEKKYO_FLG_4, ")
					.append("     KK3061.TAKNKIKI_IDO_CD_4, ")
					.append("     KK3061.TAKNKIKI_SBT_CD_5, ")
					.append("     KK3061.STC_TEKKYO_FLG_5, ")
					.append("     KK3061.TAKNKIKI_IDO_CD_5, ")
					.append("     KK3061.IDO_DIV, ")
					.append("     KK3061.IDO_RSV_DTL_CD, ")
					.append("     KK3061.NEW_PRC_GRP_CD, ")
					.append("     KK3061.NEW_PCRS_CD, ")
					.append("     KK3061.NEW_PPLAN_CD, ")
					.append("     KK3061.OLD_PRC_GRP_CD, ")
					.append("     KK3061.OLD_PCRS_CD, ")
					.append("     KK3061.OLD_PPLAN_CD, ")
					.append("     KK3061.TMP_PAY_PRC_NO, ")
					.append("     KK3061.EOPRMCL_SSKSSJK_TSTAYMD, ")
					.append("     KK3061.EOPRMCL_SSKSSJK_TENDYMD, ")
					.append("     KK3051.GENE_ADD_DTM, ")
					.append("     KK3051.EOPRMCL_SISAK_NM, ")
					.append("     KK3051.CMP_ADD_OPTNTY_CD, ")
					.append("     KK3051.KOJIAK_RRK_JIKO_HUKA_MNGN, ")
					.append("     KK3051.NECESSARY_TICKET_CNT, ")
					.append("     KK3051.RSV_APLY_YMD, ")
					.append("     KK3051.UK_STA_YMDHM, ")
					.append("     KK3051.UK_END_YMDHM, ")
					.append("     KK3051.EOPRMCL_SISAK_TSTAYMD, ")
					.append("     KK3051.EOPRMCL_SISAK_TENDYMD, ")
					//** ANK-4307-00-00(v66.00.01) ADD START **//
					.append("     KK3051.NECESSARY_POINT_CNT, ")
					.append("     KK3051.MIN_MKM_PSB_RANK_CD, ")
					//** ANK-4307-00-00(v66.00.01) ADD END **//
					// ANK-4307-00-00 ADD START
					.append("     KK3051.WRIB_SVC_CD ")
					// ANK-4307-00-00 ADD END
					.append(" FROM ")
					.append("     KK_M_EOPRMCL_SSKSSJK KK3061  INNER JOIN      KK_M_EOPRMCL_SISAK KK3051  ON      KK3061.EOPRMCL_SISAK_CD = KK3051.EOPRMCL_SISAK_CD ");
			//** ANK-4307-00-00(v66.00.01) ADD START **//
			if(inMsg.getObject(EKK3061B501CBSMsg.KEY_SCREEN_ID) != null)
			{
				sql_Buff.append("     INNER JOIN FU_M_EOPRMCL_SSKPTN FU0401 ")
					.append("     ON     KK3051.EOPRMCL_SISAK_CD = FU0401.EOPRMCL_SISAK_CD ")
					.append("     AND    FU0401.SCREEN_ID = ? ")
					.append("     AND    FU0401.SSKPTN_SBT_CD = '0' ")
					.append("     AND    FU0401.SCREEN_DSP_STAYMD <= ? ")
					.append("     AND    FU0401.SCREEN_DSP_ENDYMD >= ? ")
					.append("     AND    FU0401.MK_FLG = '0' ");
			}
			//** ANK-4307-00-00(v66.00.01) ADD END **//
			// SQL文_個別部1
			if ( "1".equals( inMsg.getObject(EKK3061B501CBSMsg.FUNC_CODE).toString() ) ) {
 				sql_Buff.append(" WHERE ")
						.append("     KK3061.EOPRMCL_SSKSSJK_SBT_CD = ?   AND ");
						// ANK-4307-00-00 ADD START
						if (inMsg.getObject(EKK3061B501CBSMsg.KEY_SSKSSJK_KSITEI_CD) != null)
						{
							sql_Buff.append(" KK3061.SSKSSJK_KSITEI_CD = ? AND ");
						}
						// ANK-4307-00-00 ADD END
						//** ANK-2687-00-00_手修正 start **//
						sql_Buff.append("     (KK3061.KOJIAK_SBT_CD IS NULL ");
						if(inMsg.getObject(EKK3061B501CBSMsg.KEY_KOJIAK_SBT_CD) != null)
						{
							sql_Buff.append(" OR KK3061.KOJIAK_SBT_CD = ?");
						}
						sql_Buff.append(") AND ");
						//** ANK-2687-00-00_手修正 end **//
						//** ANK-2687-00-00_手修正_KEY_TAKNKIKI_LIST start **//
						if(!EMPTY.equals(tkniKikiListStr))
						{
							sql_Buff.append("     (KK3061.TAKNKIKI_SBT_CD_1 IS NULL OR KK3061.TAKNKIKI_SBT_CD_1 IN ")
							.append("          (SELECT TKL01.TAKNKIKI_SBT_CD ")
							.append("          FROM ")
							// IN項目_機器リストから作成したリストを設定
							.append(tkniKikiListStr)
							.append(" TKL01 ")
							.append("                   WHERE (KK3061.STC_TEKKYO_FLG_1  IS NULL           OR   KK3061.STC_TEKKYO_FLG_1  = TKL01.STC_TEKKYO_FLG) ")
							.append("                   AND   (KK3061.TAKNKIKI_IDO_CD_1 IS NULL           OR   KK3061.TAKNKIKI_IDO_CD_1 = TKL01.TAKNKIKI_IDO_CD))     )     AND ")
							.append("     (KK3061.TAKNKIKI_SBT_CD_2 IS NULL OR KK3061.TAKNKIKI_SBT_CD_2 IN ")
							.append("          (SELECT TKL02.TAKNKIKI_SBT_CD ")
							.append("          FROM ")
							// IN項目_機器リストから作成したリストを設定
							.append(tkniKikiListStr)
							.append(" TKL02 ")
							.append("                   WHERE (KK3061.STC_TEKKYO_FLG_2  IS NULL           OR   KK3061.STC_TEKKYO_FLG_2  = TKL02.STC_TEKKYO_FLG) ")
							.append("                   AND   (KK3061.TAKNKIKI_IDO_CD_2 IS NULL           OR   KK3061.TAKNKIKI_IDO_CD_2 = TKL02.TAKNKIKI_IDO_CD))     )     AND ")
							.append("     (KK3061.TAKNKIKI_SBT_CD_3 IS NULL OR KK3061.TAKNKIKI_SBT_CD_3 IN ")
							.append("          (SELECT TKL03.TAKNKIKI_SBT_CD ")
							.append("          FROM ")
							// IN項目_機器リストから作成したリストを設定
							.append(tkniKikiListStr)
							.append(" TKL03 ")
							.append("                   WHERE (KK3061.STC_TEKKYO_FLG_3  IS NULL           OR   KK3061.STC_TEKKYO_FLG_3  = TKL03.STC_TEKKYO_FLG) ")
							.append("                   AND   (KK3061.TAKNKIKI_IDO_CD_3 IS NULL           OR   KK3061.TAKNKIKI_IDO_CD_3 = TKL03.TAKNKIKI_IDO_CD))     )     AND ")
							.append("     (KK3061.TAKNKIKI_SBT_CD_4 IS NULL OR KK3061.TAKNKIKI_SBT_CD_4 IN ")
							.append("          (SELECT TKL04.TAKNKIKI_SBT_CD ")
							.append("          FROM ")
							// IN項目_機器リストから作成したリストを設定
							.append(tkniKikiListStr)
							.append(" TKL04 ")
							.append("                   WHERE (KK3061.STC_TEKKYO_FLG_4  IS NULL           OR   KK3061.STC_TEKKYO_FLG_4  = TKL04.STC_TEKKYO_FLG) ")
							.append("                   AND   (KK3061.TAKNKIKI_IDO_CD_4 IS NULL           OR   KK3061.TAKNKIKI_IDO_CD_4 = TKL04.TAKNKIKI_IDO_CD))     )     AND ")
							.append("     (KK3061.TAKNKIKI_SBT_CD_5 IS NULL OR KK3061.TAKNKIKI_SBT_CD_5 IN ")
							.append("          (SELECT TKL05.TAKNKIKI_SBT_CD ")
							.append("          FROM ")
							// IN項目_機器リストから作成したリストを設定
							.append(tkniKikiListStr)
							.append(" TKL05 ")
							.append("                   WHERE (KK3061.STC_TEKKYO_FLG_5  IS NULL           OR   KK3061.STC_TEKKYO_FLG_5  = TKL05.STC_TEKKYO_FLG) ")
							.append("                   AND   (KK3061.TAKNKIKI_IDO_CD_5 IS NULL           OR   KK3061.TAKNKIKI_IDO_CD_5 = TKL05.TAKNKIKI_IDO_CD))     ) AND ");
						}
						else
						{
							sql_Buff.append(" KK3061.TAKNKIKI_SBT_CD_1 IS NULL AND ")
							.append(" KK3061.STC_TEKKYO_FLG_1  IS NULL AND ")
							.append(" KK3061.TAKNKIKI_IDO_CD_1 IS NULL AND ")
							.append(" KK3061.TAKNKIKI_SBT_CD_2 IS NULL AND ")
							.append(" KK3061.STC_TEKKYO_FLG_2  IS NULL AND ")
							.append(" KK3061.TAKNKIKI_IDO_CD_2 IS NULL AND ")
							.append(" KK3061.TAKNKIKI_SBT_CD_3 IS NULL AND ")
							.append(" KK3061.STC_TEKKYO_FLG_3  IS NULL AND ")
							.append(" KK3061.TAKNKIKI_IDO_CD_3 IS NULL AND ")
							.append(" KK3061.TAKNKIKI_SBT_CD_4 IS NULL AND ")
							.append(" KK3061.STC_TEKKYO_FLG_4  IS NULL AND ")
							.append(" KK3061.TAKNKIKI_IDO_CD_4 IS NULL AND ")
							.append(" KK3061.TAKNKIKI_SBT_CD_5 IS NULL AND ")
							.append(" KK3061.STC_TEKKYO_FLG_5  IS NULL AND ")
							.append(" KK3061.TAKNKIKI_IDO_CD_5 IS NULL AND ");

						}
// ANK-4307-00-00 ADD START
						if (!"002".equals(inMsg.getObject(EKK3061B501CBSMsg.KEY_SSKSSJK_KSITEI_CD)))
						{
// ANK-4307-00-00 ADD END
							//** ANK-2687-00-00_手修正_KEY_TAKNKIKI_LIST end **//
							//** ANK-2687-00-00_手修正 start **//
							sql_Buff.append("     (KK3061.IDO_DIV IS NULL ");
							if(inMsg.getObject(EKK3061B501CBSMsg.KEY_IDO_DIV) != null)
							{
								sql_Buff.append(" OR KK3061.IDO_DIV = ?");
							}
							sql_Buff.append(") AND ");
							sql_Buff.append("     (KK3061.IDO_RSV_DTL_CD IS NULL ");
							if(inMsg.getObject(EKK3061B501CBSMsg.KEY_IDO_RSV_DTL_CD) != null)
							{
								sql_Buff.append(" OR KK3061.IDO_RSV_DTL_CD = ?");
							}
							sql_Buff.append(") AND ");
							sql_Buff.append("     (KK3061.NEW_PRC_GRP_CD IS NULL ");
							if(inMsg.getObject(EKK3061B501CBSMsg.KEY_NEW_PRC_GRP_CD) != null)
							{
								sql_Buff.append(" OR KK3061.NEW_PRC_GRP_CD = ?");
							}
							sql_Buff.append(") AND ");
							sql_Buff.append("     (KK3061.NEW_PCRS_CD IS NULL ");
							if(inMsg.getObject(EKK3061B501CBSMsg.KEY_NEW_PCRS_CD) != null)
							{
								sql_Buff.append(" OR KK3061.NEW_PCRS_CD = ?");
							}
							sql_Buff.append(") AND ");
							sql_Buff.append("     (KK3061.NEW_PPLAN_CD IS NULL ");
							if(inMsg.getObject(EKK3061B501CBSMsg.KEY_NEW_PPLAN_CD) != null)
							{
								sql_Buff.append(" OR KK3061.NEW_PPLAN_CD = ?");
							}
							sql_Buff.append(") AND ");
							sql_Buff.append("     (KK3061.OLD_PRC_GRP_CD IS NULL ");
							if(inMsg.getObject(EKK3061B501CBSMsg.KEY_OLD_PRC_GRP_CD) != null)
							{
								sql_Buff.append(" OR KK3061.OLD_PRC_GRP_CD = ?");
							}
							sql_Buff.append(") AND ");
							sql_Buff.append("     (KK3061.OLD_PCRS_CD IS NULL ");
							if(inMsg.getObject(EKK3061B501CBSMsg.KEY_OLD_PCRS_CD) != null)
							{
								sql_Buff.append(" OR KK3061.OLD_PCRS_CD = ?");
							}
							sql_Buff.append(") AND ");
							sql_Buff.append("     (KK3061.OLD_PPLAN_CD IS NULL ");
							if(inMsg.getObject(EKK3061B501CBSMsg.KEY_OLD_PPLAN_CD) != null)
							{
								sql_Buff.append(" OR KK3061.OLD_PPLAN_CD = ?");
							}
							sql_Buff.append(") AND ");
// ANK-4307-00-00 ADD START
						}
// ANK-4307-00-00 ADD END
						sql_Buff.append("     (KK3061.TMP_PAY_PRC_NO IS NULL ");
						if(inMsg.getObject(EKK3061B501CBSMsg.KEY_TMP_PAY_PRC_NO) != null)
						{
							sql_Buff.append(" OR KK3061.TMP_PAY_PRC_NO = ?");
						}
						sql_Buff.append(") AND ");
						//** ANK-2687-00-00_手修正 end **//
						sql_Buff.append("     KK3061.EOPRMCL_SSKSSJK_TSTAYMD <= ? AND ")
						.append("     KK3061.EOPRMCL_SSKSSJK_TENDYMD >= ? AND ")
						.append("     KK3061.MK_FLG = '0' AND ")
						.append("     KK3051.UK_STA_YMDHM <= ? AND ")
						.append("     KK3051.UK_END_YMDHM >= ? AND ")
						.append("     KK3051.EOPRMCL_SISAK_TSTAYMD <= ? AND ")
						.append("     KK3051.EOPRMCL_SISAK_TENDYMD >= ? AND ")
						.append("     (KK3051.EOPRMCL_SISAK_CD, KK3051.GENE_ADD_DTM || KK3051.RSV_APLY_YMD) =         (SELECT ")
						.append("                                                                                         KK3051_GENE.EOPRMCL_SISAK_CD, ")
						.append("                                                                                         MAX(KK3051_GENE.GENE_ADD_DTM || KK3051_GENE.RSV_APLY_YMD) AS KK3051_MAX ")
						.append("                                                                                     FROM ")
						.append("                                                                                         KK_M_EOPRMCL_SISAK KK3051_GENE ")
						.append("                                                                                     WHERE ")
						.append("                                                                                         KK3051_GENE.EOPRMCL_SISAK_CD = KK3051.EOPRMCL_SISAK_CD AND ")
						.append("                                                                                         KK3051_GENE.RSV_APLY_YMD <= ? AND ")
						.append("                                                                                         KK3051_GENE.MK_FLG = '0' ")
						.append("                                                                                     GROUP BY ")
						.append("                                                                                         KK3051_GENE.EOPRMCL_SISAK_CD ")
						.append("                                                                                     ) AND ");
						//** ANK-2687-00-00_手修正 start **//
						if(inMsg.getObject(EKK3061B501CBSMsg.KEY_ZAN_TICKET_CNT) != null)
						{
							sql_Buff.append("     KK3051.NECESSARY_TICKET_CNT <= ? AND ");
						}
						//** ANK-2687-00-00_手修正 end **//
						//** ANK-4307-00-00(v66.00.01) ADD START **//
						if (inMsg.getObject(EKK3061B501CBSMsg.KEY_RNK_CD) != null)
						{
							sql_Buff.append("     KK3051.MIN_MKM_PSB_RANK_CD <= ? AND ");
						}
						if (inMsg.getObject(EKK3061B501CBSMsg.KEY_HOYU_PT_SU) != null)
						{
							sql_Buff.append("     KK3051.NECESSARY_POINT_CNT <= ? AND ");
						}
						//** ANK-4307-00-00(v66.00.01) ADD END **//
						sql_Buff.append("     KK3051.MK_FLG = '0' ");
			}
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			//** ANK-4307-00-00(v66.00.01) ADD START **//
			// 共通部：運用日付
			String opeDate = (String)JFUModelCommon.getOpeDate(inMsg, inContext, null);
			// 共通部：運用日時
			String opeYmdHm = (String)JFUModelCommon.getOpeDateTimeStamp(inMsg, inContext, null);
			if (opeYmdHm != null && opeYmdHm.length() > 12)
			{
				opeYmdHm = opeYmdHm.substring(0, 12);
			}
			//** ANK-4307-00-00(v66.00.01) ADD END **//

			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			if ( "1".equals( inMsg.getString(EKK3061B501CBSMsg.FUNC_CODE) ) ) {
				//** ANK-2687-00-00_手修正 start **//
				int paramCnt = 1;
				//** ANK-4307-00-00(v66.00.01) ADD START **//
				if(inMsg.getObject(EKK3061B501CBSMsg.KEY_SCREEN_ID) != null)
				{
					// パラメータの設定(共通部：運用日付を指定)
					CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_SCREEN_ID));
					paramCnt++;
					// パラメータの設定(共通部：運用日付を指定)
					CAANJDBCUtil.setParam(pstmt, paramCnt, opeDate);
					paramCnt++;
					CAANJDBCUtil.setParam(pstmt, paramCnt, opeDate);
					paramCnt++;
				}
				//** ANK-4307-00-00(v66.00.01) ADD END **//
				// パラメータの設定(ＫＥＹ＿ｅｏプレミアムクラブ施策申請条件種別コードを指定)
				CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_EOPRMCL_SSKSSJK_SBT_CD));
				paramCnt++;
				// ANK-4307-00-00 ADD START
				if(inMsg.getObject(EKK3061B501CBSMsg.KEY_SSKSSJK_KSITEI_CD) != null)
				{
					CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_SSKSSJK_KSITEI_CD));
					paramCnt++;
				}
				// ANK-4307-00-00 ADD END
				// パラメータの設定(ＫＥＹ＿工事案件種別コードを指定)
				if(inMsg.getObject(EKK3061B501CBSMsg.KEY_KOJIAK_SBT_CD) != null)
				{
					CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_KOJIAK_SBT_CD));
					paramCnt++;
				}
				// パラメータの設定（ＫＥＹ_宅内機器リスト）
				if(taknkikiSbtCdList != null && taknkikiSbtCdList.length > 0)
				{
					for(int i = 0; i < KIKI_LIST_SIZE; i++)
					{
						for(int j = 0; j < taknkikiSbtCdList.length; j++)
						{
							if(taknkikiSbtCdList[j] != null && !EMPTY.equals(taknkikiSbtCdList[j]))
							{
								CAANJDBCUtil.setParam(pstmt, paramCnt, taknkikiSbtCdList[j]);
								paramCnt++;
							}
							if(stcTekkyoFlgList != null && stcTekkyoFlgList.length > j)
							{
								if(stcTekkyoFlgList[j] != null && !EMPTY.equals(stcTekkyoFlgList[j]))
								{
									CAANJDBCUtil.setParam(pstmt, paramCnt, stcTekkyoFlgList[j]);
									paramCnt++;
								}
							}
							if(taknkikiIdoCdList != null && taknkikiIdoCdList.length > j)
							{
								if(taknkikiIdoCdList[j] != null && !EMPTY.equals(taknkikiIdoCdList[j]))
								{
									CAANJDBCUtil.setParam(pstmt, paramCnt, taknkikiIdoCdList[j]);
									paramCnt++;
								}
							}
						}
					}
				}

// ANK-4307-00-00 ADD START
				if (!"002".equals(inMsg.getObject(EKK3061B501CBSMsg.KEY_SSKSSJK_KSITEI_CD)))
				{
// ANK-4307-00-00 ADD END	
					// パラメータの設定(ＫＥＹ＿異動区分を指定)
					if(inMsg.getObject(EKK3061B501CBSMsg.KEY_IDO_DIV) != null)
					{
						CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_IDO_DIV));
						paramCnt++;
					}
					// パラメータの設定(ＫＥＹ＿異動予約詳細コードを指定)
					if(inMsg.getObject(EKK3061B501CBSMsg.KEY_IDO_RSV_DTL_CD) != null)
					{
						CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_IDO_RSV_DTL_CD));
						paramCnt++;
					}
					// パラメータの設定(ＫＥＹ＿新料金グループコードを指定)
					if(inMsg.getObject(EKK3061B501CBSMsg.KEY_NEW_PRC_GRP_CD) != null)
					{
						CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_NEW_PRC_GRP_CD));
						paramCnt++;
					}
					// パラメータの設定(ＫＥＹ＿新料金コースコードを指定)
					if(inMsg.getObject(EKK3061B501CBSMsg.KEY_NEW_PCRS_CD) != null)
					{
						CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_NEW_PCRS_CD));
						paramCnt++;
					}
					// パラメータの設定(ＫＥＹ＿新料金プランコードを指定)
					if(inMsg.getObject(EKK3061B501CBSMsg.KEY_NEW_PPLAN_CD) != null)
					{
						CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_NEW_PPLAN_CD));
						paramCnt++;
					}
					// パラメータの設定(ＫＥＹ＿旧料金グループコードを指定)
					if(inMsg.getObject(EKK3061B501CBSMsg.KEY_OLD_PRC_GRP_CD) != null)
					{
						CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_OLD_PRC_GRP_CD));
						paramCnt++;
					}
					// パラメータの設定(ＫＥＹ＿旧料金コースコードを指定)
					if(inMsg.getObject(EKK3061B501CBSMsg.KEY_OLD_PCRS_CD) != null)
					{
						CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_OLD_PCRS_CD));
						paramCnt++;
					}
					// パラメータの設定(ＫＥＹ＿旧料金プランコードを指定)
					if(inMsg.getObject(EKK3061B501CBSMsg.KEY_OLD_PPLAN_CD) != null)
					{
						CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_OLD_PPLAN_CD));
						paramCnt++;
					}
// ANK-4307-00-00 ADD START
				}
// ANK-4307-00-00 ADD END
				// パラメータの設定(ＫＥＹ＿一時支払料金番号を指定)
				if(inMsg.getObject(EKK3061B501CBSMsg.KEY_TMP_PAY_PRC_NO) != null)
				{
					CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_TMP_PAY_PRC_NO));
					paramCnt++;
				}
				// パラメータの設定(共通部：運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, paramCnt, opeDate);
				paramCnt++;
				// パラメータの設定(共通部：運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, paramCnt, opeDate);
				paramCnt++;
				// パラメータの設定(共通部：運用日時を指定)
				CAANJDBCUtil.setParam(pstmt, paramCnt, opeYmdHm);
				paramCnt++;
				// パラメータの設定(共通部：運用日時を指定)
				CAANJDBCUtil.setParam(pstmt, paramCnt, opeYmdHm);
				paramCnt++;
				// パラメータの設定(共通部：運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, paramCnt, opeDate);
				paramCnt++;
				// パラメータの設定(共通部：運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, paramCnt, opeDate);
				paramCnt++;
				// パラメータの設定(共通部：運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, paramCnt, opeDate);
				paramCnt++;
				// パラメータの設定(ＫＥＹ＿残チケット枚数を指定)
				if(inMsg.getObject(EKK3061B501CBSMsg.KEY_ZAN_TICKET_CNT) != null)
				{
					CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_ZAN_TICKET_CNT));
					paramCnt++;
				}
				//** ANK-2687-00-00_手修正 end **//
				//** ANK-4307-00-00(v66.00.01) ADD START **//
				// パラメータの設定(ＫＥＹ＿ランクコードを指定)
				if (inMsg.getObject(EKK3061B501CBSMsg.KEY_RNK_CD) != null)
				{
					CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_RNK_CD));
					paramCnt++;
				}
				// パラメータの設定(ＫＥＹ＿保有eoポイント数を指定)
				if (inMsg.getObject(EKK3061B501CBSMsg.KEY_HOYU_PT_SU) != null)
				{
					CAANJDBCUtil.setParam(pstmt, paramCnt, inMsg.getObject(EKK3061B501CBSMsg.KEY_HOYU_PT_SU));
					paramCnt++;
				}
				//** ANK-4307-00-00(v66.00.01) ADD END **//
			}

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// EKK3061B501CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  EKK3061B501CBSMsg1List.EOPRMCL_SISAK_CD
					, EKK3061B501CBSMsg1List.EOPRMCL_SSKSSJK_SBT_CD
					, EKK3061B501CBSMsg1List.EOPRMCL_SSKSSJK_NO
					, EKK3061B501CBSMsg1List.KOJIAK_SBT_CD
					, EKK3061B501CBSMsg1List.TAKNKIKI_SBT_CD_1
					, EKK3061B501CBSMsg1List.STC_TEKKYO_FLG_1
					, EKK3061B501CBSMsg1List.TAKNKIKI_IDO_CD_1
					, EKK3061B501CBSMsg1List.TAKNKIKI_SBT_CD_2
					, EKK3061B501CBSMsg1List.STC_TEKKYO_FLG_2
					, EKK3061B501CBSMsg1List.TAKNKIKI_IDO_CD_2
					, EKK3061B501CBSMsg1List.TAKNKIKI_SBT_CD_3
					, EKK3061B501CBSMsg1List.STC_TEKKYO_FLG_3
					, EKK3061B501CBSMsg1List.TAKNKIKI_IDO_CD_3
					, EKK3061B501CBSMsg1List.TAKNKIKI_SBT_CD_4
					, EKK3061B501CBSMsg1List.STC_TEKKYO_FLG_4
					, EKK3061B501CBSMsg1List.TAKNKIKI_IDO_CD_4
					, EKK3061B501CBSMsg1List.TAKNKIKI_SBT_CD_5
					, EKK3061B501CBSMsg1List.STC_TEKKYO_FLG_5
					, EKK3061B501CBSMsg1List.TAKNKIKI_IDO_CD_5
					, EKK3061B501CBSMsg1List.IDO_DIV
					, EKK3061B501CBSMsg1List.IDO_RSV_DTL_CD
					, EKK3061B501CBSMsg1List.NEW_PRC_GRP_CD
					, EKK3061B501CBSMsg1List.NEW_PCRS_CD
					, EKK3061B501CBSMsg1List.NEW_PPLAN_CD
					, EKK3061B501CBSMsg1List.OLD_PRC_GRP_CD
					, EKK3061B501CBSMsg1List.OLD_PCRS_CD
					, EKK3061B501CBSMsg1List.OLD_PPLAN_CD
					, EKK3061B501CBSMsg1List.TMP_PAY_PRC_NO
					, EKK3061B501CBSMsg1List.EOPRMCL_SSKSSJK_TSTAYMD
					, EKK3061B501CBSMsg1List.EOPRMCL_SSKSSJK_TENDYMD
					, EKK3061B501CBSMsg1List.GENE_ADD_DTM
					, EKK3061B501CBSMsg1List.EOPRMCL_SISAK_NM
					, EKK3061B501CBSMsg1List.CMP_ADD_OPTNTY_CD
					, EKK3061B501CBSMsg1List.KOJIAK_RRK_JIKO_HUKA_MNGN
					, EKK3061B501CBSMsg1List.NECESSARY_TICKET_CNT
					, EKK3061B501CBSMsg1List.RSV_APLY_YMD
					, EKK3061B501CBSMsg1List.UK_STA_YMDHM
					, EKK3061B501CBSMsg1List.UK_END_YMDHM
					, EKK3061B501CBSMsg1List.EOPRMCL_SISAK_TSTAYMD
					, EKK3061B501CBSMsg1List.EOPRMCL_SISAK_TENDYMD
					//** ANK-4307-00-00(v66.00.01) ADD START **//
					, EKK3061B501CBSMsg1List.NECESSARY_POINT_CNT
					, EKK3061B501CBSMsg1List.MIN_MKM_PSB_RANK_CD
					//** ANK-4307-00-00(v66.00.01) ADD END **//
					// ANK-4307-00-00 ADD START
					, EKK3061B501CBSMsg1List.WRIB_SVC_CD
					// ANK-4307-00-00 ADD END
			};
			
			// 明細に処理結果(ResultSet)をマッピング
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery,msgKeyList1,"eo.ejb.cbs.cbsmsg.EKK3061B501CBSMsg1List",0);
			// inMsg(CBSMsg)に明細をセット
			inMsg.set("EKK3061B501CBSMsg1List", outMsg1);
			

		} catch(SQLException e) {
			inMsg.set(EKK3061B501CBSMsg.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(EKK3061B501CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
}
