/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbEKK0351B002TPDA
*	ソースファイル名：JSYejbEKK0351B002TPDA.java
*	作成者			：EK907441
*	日付			：2012年06月07日
*＜機能概要＞
*	オプションサービス契約一覧照会（サービス契約番号）テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ1.00.00
*	ｖ4.00.00	2013/02/15	FJ)坂本		OT-2013-0000102
*	ｖ4.00.01	2013/05/22	FJ)阿部		ANK-1521-00-00
*	ｖ5.00.00	2013/07/29	FJ)沖田		LT-2013-0000668
*	ｖ8.00.00	2014/01/17	FJ)寺園		ANK-1586-00-00
*	 v8.01.00	2014/06/05	FJ)田中		OM-2014-0001976
*	ｖ9.00.00	2017/09/04	FJ)岡		ANK-3262-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.ejb.cbs.cbsmsg.EKK0351B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351B002CBSMsg1List;
import eo.ejb.cbm.entity.KK0351ETMsg;
import eo.ejb.common.JKKModelCommon;

/**
*
*  テンプレートDBアクセス部品　EKK0351B002_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbEKK0351B002TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
	
	/**
	 * コンストラクタ
	 */
	public JSYejbEKK0351B002TPDA()	{
	}
	
	// ソート項目：オプションサービスコード名
	private static final String SORT_ITEM_OPT_SVC_CD_NM = "1";

	// ソート項目：オプションサービス契約ステータス
	private static final String SORT_ITEM_OPT_SVC_KEI_STAT = "2";

	// ソート項目：オプション内容
	private static final String SORT_ITEM_OPT_NAIYO = "3";

	// ソート項目：表示用サービス提供開始年月日
	private static final String SORT_ITEM_DSP_SVCTK_STAYMD = "4";

	// ソート項目：利用終了予定日
	private static final String SORT_ITEM_RIYO_ENDYMD = "5";

	// ソート項目：サービス終了年月日
	private static final String SORT_ITEM_SVC_ENDYMD = "6";

	// ソート項目：オプションサービス契約番号
	private static final String SORT_ITEM_OPT_SVC_KEI_NO = "7";

	// ソート項目：オプションサービスコード
	private static final String SORT_ITEM_OPT_SVC_CD = "8";

	// ソート項目：サービス課金開始年月日
	private static final String SORT_ITEM_SVC_CHRG_STAYMD = "9";

	// ソート項目：サービス課金終了年月日
	private static final String SORT_ITEM_SVC_CHRG_ENDYMD = "10";

	// ソート区分：昇順
	private static final String SORT_KBN_ASC = "1";

	// ソート区分：降順
	private static final String SORT_KBN_DESC = "2";
	
	/**
	*   EKK0351B002_SQLF<br>
	*   @param inMsg    入力値の格納されたCBSMsg <br>
	*   @return void
	*/
	public void invoke(CAANMsg inMsg,AgentDispatchContext inContext){
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		// パラメータのカウント
		int iPCnt = 0;
		
		/******************** 
		 * SQL文の作成
		 ********************/

		try{
			
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK0351ETMsg.getTableName());
			
			
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT  ")
					.append("    KK0821.OP_SVC_NM AS OP_SVC_CD_NM,  ")
					.append("    KK0351.OP_SVC_KEI_STAT,  ")
					.append("    NULL AS OP_SVC_NIY,  ")
					.append("    KK0351.SVC_USE_STA_KIBO_YMD,  ")
					.append("    KK0351.RSV_TSTA_KIBO_YMD,  ")
					.append("    KK0351.OP_SVC_KEI_NO,  ")
					.append("    KK0351.OP_SVC_CD,  ")
					.append("    KK0351.SVC_STAYMD,  ")
					.append("    KK0351.SVC_ENDYMD, ")
					.append("    KK0351.SVC_KEI_NO, ")
					.append("    KK0351.PLAN_STAYMD, ")
					.append("    KK0351.PCRS_CD, ")
					.append("    KK0351.PPLAN_CD, ")
					.append("    (SELECT ZM0171_01.CD_DIV_NM  ")
					.append("     FROM   ZM_M_CD_NM_KANRI ZM0171_01  ")
					.append("     WHERE  ZM0171_01.CD_SBT_CD = 'CD00037'  ")
					.append("       AND    ZM0171_01.CD_DIV = KK0351.OP_SVC_KEI_STAT  ")
					.append("       AND    ZM0171_01.MK_FLG = '0'  ")
					.append("     ) AS OP_SVC_KEI_STAT_NM, ")
					.append("    KK0351.SVC_DLRE_CD, ")
					.append("    KK0351.GENE_ADD_DTM, ")
					.append("    KK0351.UPD_DTM, ")
					.append("    KK0351.MSKM_DTL_NO, ")
					.append("    ( SELECT KK0021.MSKM_NO ")
					.append("      FROM   KK_T_MSKM_DTL KK0021 ")
					.append("      WHERE  KK0351.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ")
					.append("      AND    (KK0021.MSKM_DTL_NO, KK0021.GENE_ADD_DTM) = ")
					.append("      ( SELECT KK0021_GENE.MSKM_DTL_NO, MAX(KK0021_GENE.GENE_ADD_DTM) ")
					.append("        FROM   KK_T_MSKM_DTL KK0021_GENE ")
					.append("        WHERE  KK0021_GENE.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ")
					.append("        AND    KK0021_GENE.MK_FLG = '0' ")
					.append("        GROUP BY KK0021_GENE.MSKM_DTL_NO ")
					.append("      ) ")
					.append("     ) AS MSKM_NO,  ")
					.append("    NULL AS SBOP_SVC_KEI_NO,  ")
					.append("    NULL AS SBOP_SVC_CD,  ")
					.append("    KK0351.SVC_CHRG_STAYMD, ")
					.append("    KK0351.SVC_CHRG_ENDYMD, ")
					.append("    KK0351.DSP_SVCTK_STAYMD, ")
					.append("    (SELECT KK0811_01.MAX_OP_SVC_CNT ")
					.append("     FROM   KK_M_PCRS_OP_SVC KK0811_01 ")
					.append("     WHERE  KK0811_01.PCRS_CD = KK0081_PCRS_CD ")
					.append("       AND  KK0811_01.OP_SVC_CD = KK0351.OP_SVC_CD ")
					.append("       AND  (KK0811_01.PCRS_CD, KK0811_01.OP_SVC_CD, KK0811_01.RSV_APLY_YMD || KK0811_01.GENE_ADD_DTM) =  ")
					.append("            (SELECT KK0811_01_GENE.PCRS_CD, KK0811_01_GENE.OP_SVC_CD, MAX(KK0811_01_GENE.RSV_APLY_YMD || KK0811_01_GENE.GENE_ADD_DTM) AS KK0811_01_MAX  ")
					.append("             FROM   KK_M_PCRS_OP_SVC KK0811_01_GENE  ")
					.append("             WHERE  KK0811_01_GENE.PCRS_CD = KK0811_01.PCRS_CD  ")
					.append("             AND    KK0811_01_GENE.OP_SVC_CD = KK0811_01.OP_SVC_CD ")
					.append("             AND    KK0811_01_GENE.RSV_APLY_YMD <= ? ")
					.append("             AND    KK0811_01_GENE.MK_FLG = '0' ")
					.append("             GROUP BY KK0811_01_GENE.PCRS_CD, KK0811_01_GENE.OP_SVC_CD) ")
					.append("     ) AS MAX_OP_SVC_CNT , ")
					.append("     (SELECT MAX(KK1681.RSV_APLY_YMD) ")
					.append("      FROM   KK_T_IDO_RSV KK1681 ")
					.append("      WHERE  KK1681.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO ")
					.append("        AND  KK1681.IDO_RSV_DTL_CD IN ('016', '018') ")
					.append("        AND  KK1681.IDO_RSV_STAT_CD IN ('00', '03') ")
					.append("        AND  KK1681.MK_FLG = '0' ")
					.append("     ) AS USE_END_RSYMD,  ")
					.append("     KK0821.KAIHK_PSB_PRD, ")
					.append("     KK0361.FMTCEL_JGS_CD ")
					.append("  FROM   ")
					.append("      (SELECT  KK0351_01.* ")
					.append("              ,KK0081_01.SVC_KEI_NO AS KK0081_SVC_KEI_NO ")
					.append("              ,NULL                 AS KK0161_SVC_KEI_UCWK_NO ")
					.append("              ,KK0081_01.PCRS_CD AS KK0081_PCRS_CD ")
					.append("              ,NULL              AS KK0161_PCRS_CD ")
					.append("       FROM   KK_T_OP_SVC_KEI KK0351_01 ")
					.append("       INNER JOIN  KK_T_SVC_KEI KK0081_01 ")
					.append("       ON   KK0081_01.SVC_KEI_NO = KK0351_01.SVC_KEI_NO ")
					.append("       AND  KK0351_01.OYA_KEI_SKBT_CD = '01' ")
					.append("       WHERE (KK0081_01.SVC_KEI_NO, KK0081_01.RSV_APLY_YMD || KK0081_01.GENE_ADD_DTM) =  ")
					.append("             (SELECT KK0081_01_GENE.SVC_KEI_NO, MAX(KK0081_01_GENE.RSV_APLY_YMD || KK0081_01_GENE.GENE_ADD_DTM) ")
					.append("              FROM   KK_T_SVC_KEI KK0081_01_GENE  ")
					.append("              WHERE  KK0081_01_GENE.SVC_KEI_NO = KK0081_01.SVC_KEI_NO  ")
					.append("              AND    KK0081_01_GENE.RSV_APLY_YMD " + getRsvAplyYmdSearchJkn(inMsg) + " ? ")
					.append("              AND    KK0081_01_GENE.RSV_APLY_CD = '2'  ")
					.append("              AND    KK0081_01_GENE.MK_FLG = '0' ")
					.append("              GROUP BY KK0081_01_GENE.SVC_KEI_NO)  ")
					.append("       AND   (KK0351_01.OP_SVC_KEI_NO, KK0351_01.RSV_APLY_YMD || KK0351_01.GENE_ADD_DTM) =  ")
					.append("             (SELECT KK0351_01_GENE.OP_SVC_KEI_NO, MAX(KK0351_01_GENE.RSV_APLY_YMD || KK0351_01_GENE.GENE_ADD_DTM) ")
					.append("              FROM   KK_T_OP_SVC_KEI KK0351_01_GENE  ")
					.append("              WHERE  KK0351_01_GENE.OP_SVC_KEI_NO = KK0351_01.OP_SVC_KEI_NO  ")
					.append("              AND    KK0351_01_GENE.RSV_APLY_YMD " + getRsvAplyYmdSearchJkn(inMsg) + " ? ")
					.append("              AND    KK0351_01_GENE.RSV_APLY_CD = '2'  ")
					.append("              AND    KK0351_01_GENE.MK_FLG = '0' ")
					.append("              GROUP BY KK0351_01_GENE.OP_SVC_KEI_NO)  ")
					.append("       UNION ")
					.append("       SELECT  KK0351_02.* ")
					.append("              ,KK0081_02.SVC_KEI_NO   AS KK0081_SVC_KEI_NO ")
					.append("              ,KK0161.SVC_KEI_UCWK_NO AS KK0161_SVC_KEI_UCWK_NO ")
					.append("              ,KK0081_02.PCRS_CD AS KK0081_PCRS_CD ")
					.append("              ,KK0161.PCRS_CD    AS KK0161_PCRS_CD ")
					.append("       FROM   KK_T_OP_SVC_KEI KK0351_02 ")
					.append("       INNER JOIN  KK_T_SVC_KEI_UCWK KK0161 ")
					.append("       ON   KK0161.SVC_KEI_UCWK_NO = KK0351_02.SVC_KEI_UCWK_NO ")
					.append("       AND  KK0351_02.OYA_KEI_SKBT_CD = '03' ")
					.append("       INNER JOIN  KK_T_SVC_KEI KK0081_02 ")
					.append("       ON   KK0081_02.SVC_KEI_NO = KK0161.SVC_KEI_NO ")
					.append("       WHERE (KK0081_02.SVC_KEI_NO, KK0081_02.RSV_APLY_YMD || KK0081_02.GENE_ADD_DTM) =  ")
					.append("             (SELECT KK0081_02_GENE.SVC_KEI_NO, MAX(KK0081_02_GENE.RSV_APLY_YMD || KK0081_02_GENE.GENE_ADD_DTM)  ")
					.append("              FROM   KK_T_SVC_KEI KK0081_02_GENE  ")
					.append("              WHERE  KK0081_02_GENE.SVC_KEI_NO = KK0081_02.SVC_KEI_NO  ")
					.append("              AND    KK0081_02_GENE.RSV_APLY_YMD " + getRsvAplyYmdSearchJkn(inMsg) + " ? ")
					.append("              AND    KK0081_02_GENE.RSV_APLY_CD = '2'  ")
					.append("              AND    KK0081_02_GENE.MK_FLG = '0' ")
					.append("              GROUP BY KK0081_02_GENE.SVC_KEI_NO)  ")
					.append("       AND   (KK0161.SVC_KEI_UCWK_NO, KK0161.RSV_APLY_YMD || KK0161.GENE_ADD_DTM) =  ")
					.append("             (SELECT KK0161_GENE.SVC_KEI_UCWK_NO, MAX(KK0161_GENE.RSV_APLY_YMD || KK0161_GENE.GENE_ADD_DTM)  ")
					.append("              FROM   KK_T_SVC_KEI_UCWK KK0161_GENE  ")
					.append("              WHERE  KK0161_GENE.SVC_KEI_UCWK_NO = KK0161.SVC_KEI_UCWK_NO  ")
					.append("              AND    KK0161_GENE.RSV_APLY_YMD " + getRsvAplyYmdSearchJkn(inMsg) + " ? ")
					.append("              AND    KK0161_GENE.RSV_APLY_CD = '2'  ")
					.append("              AND    KK0161_GENE.MK_FLG = '0' ")
					.append("              GROUP BY KK0161_GENE.SVC_KEI_UCWK_NO)  ")
					.append("       AND   (KK0351_02.OP_SVC_KEI_NO, KK0351_02.RSV_APLY_YMD || KK0351_02.GENE_ADD_DTM) =  ")
					.append("             (SELECT KK0351_02_GENE.OP_SVC_KEI_NO, MAX(KK0351_02_GENE.RSV_APLY_YMD || KK0351_02_GENE.GENE_ADD_DTM) ")
					.append("              FROM   KK_T_OP_SVC_KEI KK0351_02_GENE  ")
					.append("              WHERE  KK0351_02_GENE.OP_SVC_KEI_NO = KK0351_02.OP_SVC_KEI_NO  ")
					.append("              AND    KK0351_02_GENE.RSV_APLY_YMD " + getRsvAplyYmdSearchJkn(inMsg) + " ? ")
					.append("              AND    KK0351_02_GENE.RSV_APLY_CD = '2'  ")
					.append("              AND    KK0351_02_GENE.MK_FLG = '0' ")
					.append("              GROUP BY KK0351_02_GENE.OP_SVC_KEI_NO)  ")
					.append("      ) KK0351 ")
					.append("       LEFT OUTER JOIN  KK_T_OPSVKEI_ISP KK0361 ") 
					.append("       ON   KK0361.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO ") 
					.append("       AND  KK0361.GENE_ADD_DTM = KK0351.GENE_ADD_DTM  ")
					.append("       INNER JOIN KK_M_OP_SVC KK0821 ")
					.append("       ON KK0821.OP_SVC_CD = KK0351.OP_SVC_CD ")
					.append("       AND (KK0821.OP_SVC_CD, KK0821.RSV_APLY_YMD || KK0821.GENE_ADD_DTM) =   ")
					.append("           (SELECT KK0821_GENE.OP_SVC_CD, MAX(KK0821_GENE.RSV_APLY_YMD || KK0821_GENE.GENE_ADD_DTM) AS KK0821_MAX   ")
					.append("            FROM   KK_M_OP_SVC KK0821_GENE   ")
					.append("            WHERE  KK0821_GENE.OP_SVC_CD = KK0821.OP_SVC_CD   ")
					.append("            AND    KK0821_GENE.RSV_APLY_YMD <= ? ")
					.append("            AND    KK0821_GENE.MK_FLG= '0'   ")
					.append("            GROUP BY KK0821_GENE.OP_SVC_CD) ");
			// SQL文_個別部1
			if ("1".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
				"2".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
				"3".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
				"4".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
				"5".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()))
			{
				sql_Buff.append(" WHERE  (KK0351.SVC_DLRE_CD <> '04' OR KK0351.SVC_DLRE_CD IS NULL) ");
				//検索条件を追加（KEY_SVC_KEI_NO）
				if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_NO)) 
				{
					sql_Buff.append("        AND  KK0351.KK0081_SVC_KEI_NO = ? ");
				}
				//検索条件を追加（KEY_SVC_KEI_UCWK_NO）
				if ("1".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
					"2".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
					"3".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()))
				{
					if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO)) 
					{
						sql_Buff.append("        AND  KK0351.KK0161_SVC_KEI_UCWK_NO = ? ");
					}
				}
				
				if ("4".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
					"5".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()))
				{
					// ＫＥＹ＿機器提供サービス契約番号が設定されている場合
					if(!inMsg.isNull(EKK0351B002CBSMsg.KEY_KKTK_SVC_KEI_NO)) {
						sql_Buff.append(" AND KK0351.OYA_KEI_SKBT_CD = '03' ")
								.append(" AND EXISTS ( SELECT 1 ")
								.append("              FROM KK_T_SVC_KEI_UCWK KK0161 ")
								.append("                   INNER JOIN KK_T_KKTK_SVC_KEI KK0341  ")
								.append("                   ON (KK0341.SVC_KEI_NO = KK0161.SVC_KEI_NO  ")
								.append("                       OR KK0341.SVC_KEI_UCWK_NO = KK0161.SVC_KEI_UCWK_NO) ")
								.append("              WHERE (KK0161.SVC_KEI_NO = KK0351.SVC_KEI_NO ")
								.append("                     OR KK0161.SVC_KEI_UCWK_NO = KK0351.SVC_KEI_UCWK_NO) ")
								.append("                     AND KK0341.KKTK_SVC_KEI_NO = ? ")
								.append("                     AND (KK0161.SVC_KEI_UCWK_NO, KK0161.RSV_APLY_YMD || KK0161.GENE_ADD_DTM) = ")
								.append("                         (SELECT KK0161_GENE.SVC_KEI_UCWK_NO, MAX(KK0161_GENE.RSV_APLY_YMD || KK0161_GENE.GENE_ADD_DTM) AS KK0161_MAX ")
								.append("                            FROM KK_T_SVC_KEI_UCWK KK0161_GENE ")
								.append("                           WHERE KK0161_GENE.SVC_KEI_UCWK_NO = KK0161.SVC_KEI_UCWK_NO ")
								.append("                             AND KK0161_GENE.RSV_APLY_YMD <= ? ")
								.append("                             AND KK0161_GENE.RSV_APLY_CD = '2' ")
								.append("                             AND KK0161_GENE.MK_FLG = '0' ")
								.append("                             GROUP BY KK0161_GENE.SVC_KEI_UCWK_NO) ")
								.append("                    AND (KK0341.KKTK_SVC_KEI_NO, KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM) = ")
								.append("                        (SELECT KK0341_GENE.KKTK_SVC_KEI_NO, 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("                            GROUP BY KK0341_GENE.KKTK_SVC_KEI_NO) ")
								.append("        ) ");
					// ＫＥＹ＿機器提供サービス契約番号が設定されていない場合
					}
					else
					{
						sql_Buff.append("     AND KK0351.OYA_KEI_SKBT_CD = '01' ")
						  		.append("     AND KK0351.SVC_KEI_UCWK_NO IS NULL ");
					}
				}
				
				//検索条件を追加（KEY_OP_SVC_CD）
				if (!("5".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString())))
				{
					// 機能コード"5"の場合は、ＫＥＹ＿オプションサービスコードの指定は無視する。
					if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_OP_SVC_CD)) 
					{
						sql_Buff.append("        AND  KK0351.OP_SVC_CD = ? ");
					}
				}
				else
				{
					// 機能コード"5"の場合は、オプションチャンネルのみ抽出対象とする。
					sql_Buff.append(" AND KK0351.OP_SVC_CD IN (SELECT KK0821.OP_SVC_CD ")
							.append("                            FROM KK_M_OP_SVC KK0821 ")
							.append("                           WHERE KK0821.OP_CHANNEL_SBT_CD IS NOT NULL) ");
				}
				
				//検索条件を追加（KEY_BASE_YMD）
				if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_BASE_YMD)) 
				{
					sql_Buff.append("        AND  KK0351.SVC_STAYMD <= ? ")
							.append("        AND  KK0351.SVC_ENDYMD >= ? ");
				}
				
				// 機能コード"2"の場合、サブオプションサービス契約の情報も表示する。
				if ("2".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()))
				{
					sql_Buff.append(" UNION  ")
							.append(" SELECT  ")
							.append("   (SELECT KK0831.SBOP_SVC_NM  ")
							.append("    FROM   KK_M_SBOP_SVC KK0831  ")
							.append("    WHERE  KK0831.SBOP_SVC_CD = KK0401.SBOP_SVC_CD  ")
							.append("    AND    (KK0831.SBOP_SVC_CD, KK0831.GENE_ADD_DTM) =  ")
							.append("           (SELECT KK0831_GENE.SBOP_SVC_CD, MAX(KK0831_GENE.GENE_ADD_DTM) AS KK0831_MAX  ")
							.append("           FROM   KK_M_SBOP_SVC KK0831_GENE  ")
							.append("           WHERE  KK0831_GENE.SBOP_SVC_CD = KK0831.SBOP_SVC_CD  ")
							.append("           AND    KK0831_GENE.MK_FLG= '0'  ")
							.append("           GROUP BY KK0831_GENE.SBOP_SVC_CD)) AS OP_SVC_CD_NM,  ")
							.append("    KK0401.SBOP_SVC_KEI_STAT AS OP_SVC_KEI_STAT,  ")
							.append("    NULL AS OP_SVC_NIY,  ")
							.append("    KK0351.SVC_USE_STA_KIBO_YMD,  ")
							.append("    KK0401.RSV_TSTA_KIBO_YMD,  ")
							.append("    KK0401.OP_SVC_KEI_NO,  ")
							.append("    KK0351.OP_SVC_CD,  ")
							.append("    KK0401.SVC_STAYMD,  ")
							.append("    KK0401.SVC_ENDYMD,  ")
							.append("    KK0351.SVC_KEI_NO,  ")
							.append("    KK0401.PLAN_STAYMD,  ")
							.append("    KK0401.PCRS_CD,  ")
							.append("    KK0401.PPLAN_CD,  ")
							.append("    (SELECT ZM0171_02.CD_DIV_NM  ")
							.append("     FROM   ZM_M_CD_NM_KANRI ZM0171_02  ")
							.append("     WHERE  ZM0171_02.CD_SBT_CD = 'CD00037'  ")
							.append("       AND    ZM0171_02.CD_DIV = KK0401.SBOP_SVC_KEI_STAT  ")
							.append("       AND    ZM0171_02.MK_FLG = '0'  ")
							.append("     ) AS OP_SVC_KEI_STAT_NM,  ")
							.append("    KK0401.SVC_DLRE_CD,  ")
							.append("    KK0401.GENE_ADD_DTM,  ")
							.append("    KK0401.UPD_DTM,  ")
							.append("    KK0401.MSKM_DTL_NO,  ")
							.append("    ( SELECT KK0021.MSKM_NO  ")
							.append("      FROM   KK_T_MSKM_DTL KK0021  ")
							.append("      WHERE  KK0401.MSKM_DTL_NO = KK0021.MSKM_DTL_NO  ")
							.append("      AND    (KK0021.MSKM_DTL_NO, KK0021.GENE_ADD_DTM) =  ")
							.append("      ( SELECT KK0021_GENE.MSKM_DTL_NO, MAX(KK0021_GENE.GENE_ADD_DTM)  ")
							.append("        FROM   KK_T_MSKM_DTL KK0021_GENE  ")
							.append("        WHERE  KK0021_GENE.MSKM_DTL_NO = KK0021.MSKM_DTL_NO  ")
							.append("        AND    KK0021_GENE.MK_FLG = '0'  ")
							.append("        GROUP BY KK0021_GENE.MSKM_DTL_NO  ")
							.append("      )  ")
							.append("     ) AS MSKM_NO,  ")
							.append("    KK0401.SBOP_SVC_KEI_NO,  ")
							.append("    KK0401.SBOP_SVC_CD,  ")
							.append("    KK0401.SVC_CHRG_STAYMD,  ")
							.append("    KK0401.SVC_CHRG_ENDYMD, ")
							.append("    KK0401.DSP_SVCTK_STAYMD,  ")
							.append("    NULL AS MAX_OP_SVC_CNT , ")
							.append("    (SELECT MAX(KK1681.RSV_APLY_YMD) ")
							.append("     FROM   KK_T_IDO_RSV KK1681 ")
							// ANK-3262-00-00 2017/09/05 MOD START
							//.append("     WHERE  KK1681.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO ")
							.append("     WHERE  KK1681.SBOP_SVC_KEI_NO = KK0401.SBOP_SVC_KEI_NO ")
							// ANK-3262-00-00 2017/09/05 MOD END
							.append("       AND  KK1681.IDO_RSV_DTL_CD IN ('016', '018') ")
							.append("       AND  KK1681.IDO_RSV_STAT_CD IN ('00', '03') ")
							.append("       AND  KK1681.MK_FLG = '0' ")
							.append("     ) AS USE_END_RSYMD,  ")
							.append("     KK0821.KAIHK_PSB_PRD, ")
							.append("     KK0361.FMTCEL_JGS_CD ")
							.append(" FROM   ")
							.append("     (SELECT  KK0351_01.* ")
							.append("             ,KK0081_01.SVC_KEI_NO AS KK0081_SVC_KEI_NO ")
							.append("             ,NULL                 AS KK0161_SVC_KEI_UCWK_NO ")
							.append("             ,KK0081_01.PCRS_CD AS KK0081_PCRS_CD ")
							.append("             ,NULL              AS KK0161_PCRS_CD ")
							.append("      FROM   KK_T_OP_SVC_KEI KK0351_01 ")
							.append("      INNER JOIN  KK_T_SVC_KEI KK0081_01 ")
							.append("      ON   KK0081_01.SVC_KEI_NO = KK0351_01.SVC_KEI_NO ")
							.append("      AND  KK0351_01.OYA_KEI_SKBT_CD = '01' ")
							.append("      WHERE (KK0081_01.SVC_KEI_NO, KK0081_01.RSV_APLY_YMD || KK0081_01.GENE_ADD_DTM) =  ")
							.append("            (SELECT KK0081_01_GENE.SVC_KEI_NO, MAX(KK0081_01_GENE.RSV_APLY_YMD || KK0081_01_GENE.GENE_ADD_DTM) ")
							.append("               FROM KK_T_SVC_KEI KK0081_01_GENE  ")
							.append("              WHERE KK0081_01_GENE.SVC_KEI_NO = KK0081_01.SVC_KEI_NO  ")
							.append("                AND KK0081_01_GENE.RSV_APLY_YMD <= ? ")
							.append("                AND KK0081_01_GENE.RSV_APLY_CD = '2'  ")
							.append("                AND KK0081_01_GENE.MK_FLG = '0' ")
							.append("                GROUP BY KK0081_01_GENE.SVC_KEI_NO)  ")
							.append("      AND   (KK0351_01.OP_SVC_KEI_NO, KK0351_01.RSV_APLY_YMD || KK0351_01.GENE_ADD_DTM) =  ")
							.append("            (SELECT KK0351_01_GENE.OP_SVC_KEI_NO, MAX(KK0351_01_GENE.RSV_APLY_YMD || KK0351_01_GENE.GENE_ADD_DTM) ")
							.append("             FROM   KK_T_OP_SVC_KEI KK0351_01_GENE  ")
							.append("             WHERE  KK0351_01_GENE.OP_SVC_KEI_NO = KK0351_01.OP_SVC_KEI_NO  ")
							.append("             AND    KK0351_01_GENE.RSV_APLY_YMD <= ? ")
							.append("             AND    KK0351_01_GENE.RSV_APLY_CD = '2'  ")
							.append("             AND    KK0351_01_GENE.MK_FLG = '0' ")
							.append("             GROUP BY KK0351_01_GENE.OP_SVC_KEI_NO)  ")
							.append("      UNION ")
							.append("      SELECT  KK0351_02.* ")
							.append("             ,KK0081_02.SVC_KEI_NO   AS KK0081_SVC_KEI_NO ")
							.append("             ,KK0161.SVC_KEI_UCWK_NO AS KK0161_SVC_KEI_UCWK_NO ")
							.append("             ,KK0081_02.PCRS_CD AS KK0081_PCRS_CD ")
							.append("             ,KK0161.PCRS_CD    AS KK0161_PCRS_CD ")
							.append("      FROM   KK_T_OP_SVC_KEI KK0351_02 ")
							.append("      INNER JOIN  KK_T_SVC_KEI_UCWK KK0161 ")
							.append("      ON   KK0161.SVC_KEI_UCWK_NO = KK0351_02.SVC_KEI_UCWK_NO ")
							.append("      AND  KK0351_02.OYA_KEI_SKBT_CD = '03' ")
							.append("      INNER JOIN  KK_T_SVC_KEI KK0081_02 ")
							.append("      ON   KK0081_02.SVC_KEI_NO = KK0161.SVC_KEI_NO ")
							.append("      WHERE (KK0081_02.SVC_KEI_NO, KK0081_02.RSV_APLY_YMD || KK0081_02.GENE_ADD_DTM) =  ")
							.append("            (SELECT KK0081_02_GENE.SVC_KEI_NO, MAX(KK0081_02_GENE.RSV_APLY_YMD || KK0081_02_GENE.GENE_ADD_DTM)  ")
							.append("             FROM   KK_T_SVC_KEI KK0081_02_GENE  ")
							.append("             WHERE  KK0081_02_GENE.SVC_KEI_NO = KK0081_02.SVC_KEI_NO  ")
							.append("             AND    KK0081_02_GENE.RSV_APLY_YMD <= ? ")
							.append("             AND    KK0081_02_GENE.RSV_APLY_CD = '2'  ")
							.append("             AND    KK0081_02_GENE.MK_FLG = '0' ")
							.append("             GROUP BY KK0081_02_GENE.SVC_KEI_NO)  ")
							.append("      AND   (KK0161.SVC_KEI_UCWK_NO, KK0161.RSV_APLY_YMD || KK0161.GENE_ADD_DTM) =  ")
							.append("            (SELECT KK0161_GENE.SVC_KEI_UCWK_NO, MAX(KK0161_GENE.RSV_APLY_YMD || KK0161_GENE.GENE_ADD_DTM)  ")
							.append("             FROM   KK_T_SVC_KEI_UCWK KK0161_GENE  ")
							.append("             WHERE  KK0161_GENE.SVC_KEI_UCWK_NO = KK0161.SVC_KEI_UCWK_NO  ")
							.append("             AND    KK0161_GENE.RSV_APLY_YMD <= ? ")
							.append("             AND    KK0161_GENE.RSV_APLY_CD = '2'  ")
							.append("             AND    KK0161_GENE.MK_FLG = '0' ")
							.append("             GROUP BY KK0161_GENE.SVC_KEI_UCWK_NO)  ")
							.append("      AND   (KK0351_02.OP_SVC_KEI_NO, KK0351_02.RSV_APLY_YMD || KK0351_02.GENE_ADD_DTM) =  ")
							.append("            (SELECT KK0351_02_GENE.OP_SVC_KEI_NO, MAX(KK0351_02_GENE.RSV_APLY_YMD || KK0351_02_GENE.GENE_ADD_DTM) ")
							.append("             FROM   KK_T_OP_SVC_KEI KK0351_02_GENE  ")
							.append("             WHERE  KK0351_02_GENE.OP_SVC_KEI_NO = KK0351_02.OP_SVC_KEI_NO  ")
							.append("             AND    KK0351_02_GENE.RSV_APLY_YMD <= ? ")
							.append("             AND    KK0351_02_GENE.RSV_APLY_CD = '2'  ")
							.append("             AND    KK0351_02_GENE.MK_FLG = '0' ")
							.append("             GROUP BY KK0351_02_GENE.OP_SVC_KEI_NO)  ")
							.append("     ) KK0351 ")
							.append(" LEFT OUTER JOIN  KK_T_OPSVKEI_ISP KK0361 ") 
							.append(" ON   KK0361.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO ") 
							.append(" AND  KK0361.GENE_ADD_DTM = KK0351.GENE_ADD_DTM ") 
							.append(" INNER JOIN KK_T_SBOP_SVC_KEI KK0401  ")
							.append(" ON KK0401.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO  ")
							.append(" INNER JOIN KK_M_OP_SVC KK0821 ")
							.append(" ON KK0821.OP_SVC_CD = KK0351.OP_SVC_CD ")
							.append(" AND (KK0821.OP_SVC_CD, KK0821.RSV_APLY_YMD || KK0821.GENE_ADD_DTM) =   ")
							.append("     (SELECT KK0821_GENE.OP_SVC_CD, MAX(KK0821_GENE.RSV_APLY_YMD || KK0821_GENE.GENE_ADD_DTM) AS KK0821_MAX   ")
							.append("      FROM   KK_M_OP_SVC KK0821_GENE   ")
							.append("      WHERE  KK0821_GENE.OP_SVC_CD = KK0821.OP_SVC_CD   ")
							.append("      AND    KK0821_GENE.RSV_APLY_YMD <= ? ")
							.append("      AND    KK0821_GENE.MK_FLG= '0'   ")
							.append("      GROUP BY KK0821_GENE.OP_SVC_CD) ")
							.append(" WHERE (KK0351.SVC_DLRE_CD <> '04' OR KK0351.SVC_DLRE_CD IS NULL) ")
							.append(" AND   (KK0401.SVC_DLRE_CD <> '04' OR KK0401.SVC_DLRE_CD IS NULL) ")
							.append(" AND   (KK0401.OP_SVC_KEI_NO, KK0401.SBOP_SVC_KEI_NO, KK0401.RSV_APLY_YMD || KK0401.GENE_ADD_DTM) =  ")
							.append("       (SELECT KK0401_GENE.OP_SVC_KEI_NO, KK0401_GENE.SBOP_SVC_KEI_NO, ")
							.append("               MAX(KK0401_GENE.RSV_APLY_YMD || KK0401_GENE.GENE_ADD_DTM) AS KK0401_MAX  ")
							.append("        FROM   KK_T_SBOP_SVC_KEI KK0401_GENE  ")
							.append("        WHERE  KK0401_GENE.OP_SVC_KEI_NO = KK0401.OP_SVC_KEI_NO  ")
							.append("        AND    KK0401_GENE.SBOP_SVC_KEI_NO = KK0401.SBOP_SVC_KEI_NO  ")
							.append("        AND    KK0401_GENE.RSV_APLY_YMD <= ?  ")
							.append("        AND    KK0401_GENE.RSV_APLY_CD = '2'  ")
							.append("        AND    KK0401_GENE.MK_FLG = '0'  ")
							.append("        GROUP BY KK0401_GENE.OP_SVC_KEI_NO, KK0401_GENE.SBOP_SVC_KEI_NO)  ");
							//検索条件を追加（KEY_SVC_KEI_NO）
					if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_NO)) 
					{
						sql_Buff.append("        AND  KK0351.KK0081_SVC_KEI_NO = ? ");
					}
					//検索条件を追加（KEY_SVC_KEI_UCWK_NO）
					if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO)) 
					{
						sql_Buff.append("        AND  KK0351.KK0161_SVC_KEI_UCWK_NO = ? ");
					}
					//検索条件を追加（KEY_OP_SVC_CD）
					if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_OP_SVC_CD)) 
					{
						sql_Buff.append("        AND  KK0351.OP_SVC_CD = ? ");
					}
					//検索条件を追加（KEY_BASE_YMD）
					if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_BASE_YMD)) 
					{
						sql_Buff.append("        AND  KK0351.SVC_STAYMD <= ? ")
								.append("        AND  KK0351.SVC_ENDYMD >= ? ");
					}
				}
				
				// 機能コードが"1"または"2"ではない場合
				if (!("1".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString())) && 
						!("2".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString())))
				{
					// 機能コードが"1"または"2"ではない場合、オプションサービス契約の世代年月日時分秒の降順で表示する。
					sql_Buff.append(" ORDER BY KK0351.GENE_ADD_DTM DESC ");
				}
				// 機能コードが"1"または"2"の場合
				else
				{
					sql_Buff.append(" ORDER BY ");

					String irregularCase = " GENE_ADD_DTM DESC ";
					StringBuffer regularCase = new StringBuffer();
					boolean irregularFlg = false;
					
					if(SORT_ITEM_OPT_SVC_CD_NM.equals(inMsg.getString(EKK0351B002CBSMsg.KEY_SORT_ITEM_NO)))
					{
						// ＫＥＹ＿ソート項目Noが"1"(オプションサービスコード名)の場合
						regularCase.append(" OP_SVC_CD_NM ");
					}
					else if(SORT_ITEM_OPT_SVC_KEI_STAT.equals(inMsg.getString(EKK0351B002CBSMsg.KEY_SORT_ITEM_NO)))
					{
						// ＫＥＹ＿ソート項目Noが"2"(オプションサービス契約ステータス)の場合
						regularCase.append(" OP_SVC_KEI_STAT ");
					}
					else if(SORT_ITEM_OPT_NAIYO.equals(inMsg.getString(EKK0351B002CBSMsg.KEY_SORT_ITEM_NO)))
					{
						// ＫＥＹ＿ソート項目Noが"3"(オプション内容)の場合
						irregularFlg = true;
					}
					else if(SORT_ITEM_DSP_SVCTK_STAYMD.equals(inMsg.getString(EKK0351B002CBSMsg.KEY_SORT_ITEM_NO)))
					{
						// ＫＥＹ＿ソート項目Noが"4"(表示用サービス提供開始年月日)の場合
						regularCase.append(" DSP_SVCTK_STAYMD ");
					}
					else if(SORT_ITEM_RIYO_ENDYMD.equals(inMsg.getString(EKK0351B002CBSMsg.KEY_SORT_ITEM_NO)))
					{
						// ＫＥＹ＿ソート項目Noが"5"(利用終了予定日)の場合
						regularCase.append(" USE_END_RSYMD ");
					}
					else if(SORT_ITEM_SVC_ENDYMD.equals(inMsg.getString(EKK0351B002CBSMsg.KEY_SORT_ITEM_NO)))
					{
						// ＫＥＹ＿ソート項目Noが"6"(サービス終了年月日)の場合
						regularCase.append(" SVC_ENDYMD ");
					}
					else if(SORT_ITEM_OPT_SVC_KEI_NO.equals(inMsg.getString(EKK0351B002CBSMsg.KEY_SORT_ITEM_NO)))
					{
						// ＫＥＹ＿ソート項目Noが"7"(オプションサービス契約番号)の場合
						regularCase.append(" OP_SVC_KEI_NO ");
					}
					else if(SORT_ITEM_OPT_SVC_CD.equals(inMsg.getString(EKK0351B002CBSMsg.KEY_SORT_ITEM_NO)))
					{
						// ＫＥＹ＿ソート項目Noが"8"(オプションサービスコード)の場合
						regularCase.append(" OP_SVC_CD ");
					}
					else if (SORT_ITEM_SVC_CHRG_STAYMD.equals(inMsg.getString(EKK0351B002CBSMsg.KEY_SORT_ITEM_NO)))
					{
						// ＫＥＹ＿ソート項目Noが"9"(サービス課金開始年月日)の場合
						regularCase.append(" SVC_CHRG_STAYMD ");
					}
					else if (SORT_ITEM_SVC_CHRG_ENDYMD.equals(inMsg.getString(EKK0351B002CBSMsg.KEY_SORT_ITEM_NO)))
					{
						// ＫＥＹ＿ソート項目Noが"10"(サービス課金終了年月日)の場合
						regularCase.append(" SVC_CHRG_ENDYMD ");
					} else {
						// ＫＥＹ＿ソート項目Noが想定外の値の場合
						irregularFlg = true;
					}
					
					if(SORT_KBN_ASC.equals(inMsg.getString(EKK0351B002CBSMsg.KEY_SORT_KBN)))
					{
						// ＫＥＹ＿ソート区分が"1"(昇順)の場合
						regularCase.append(" ASC ");
					}
					else if(SORT_KBN_DESC.equals(inMsg.getString(EKK0351B002CBSMsg.KEY_SORT_KBN)))
					{
						// ＫＥＹ＿ソート区分が"2"(降順)の場合
						regularCase.append(" DESC ");
					} else {
						// ＫＥＹ＿ソート区分が想定外の値の場合
						irregularFlg = true;
					}
					
					// イレギュラーフラグがtrueの場合は既存のソート条件で
					if(irregularFlg) {
						sql_Buff.append(irregularCase);
					} else {
						sql_Buff.append(regularCase);
					}
				}
			}
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);
			
			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			if ("1".equals(inMsg.getString(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
				"2".equals(inMsg.getString(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
				"3".equals(inMsg.getString(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
				"4".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
				"5".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()))
			{
				// パラメータの設定(運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
				// パラメータの設定(運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
				// パラメータの設定(運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
				// パラメータの設定(運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
				// パラメータの設定(運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
				// パラメータの設定(運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
				// パラメータの設定(運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
				// パラメータの設定(ＫＥＹ＿サービス契約番号を指定)
				if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_NO)) 
				{
					CAANJDBCUtil.setParam(pstmt, ++iPCnt, inMsg.getObject(EKK0351B002CBSMsg.KEY_SVC_KEI_NO));
				}
				// パラメータの設定(ＫＥＹ＿サービス契約内訳番号を指定)
				if ("1".equals(inMsg.getString(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
					"2".equals(inMsg.getString(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
					"3".equals(inMsg.getString(EKK0351B002CBSMsg.FUNC_CODE).toString()))
				{
					if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO)) 
					{
						CAANJDBCUtil.setParam(pstmt, ++iPCnt, inMsg.getObject(EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO));
					}
				}
				if ("4".equals(inMsg.getString(EKK0351B002CBSMsg.FUNC_CODE).toString()) ||
					"5".equals(inMsg.getString(EKK0351B002CBSMsg.FUNC_CODE).toString()))
				{
					// ＫＥＹ＿機器提供サービス契約番号が設定されている場合
					if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_KKTK_SVC_KEI_NO))
					{
						// パラメータの設定(ＫＥＹ＿機器提供サービス契約番号を指定)
						CAANJDBCUtil.setParam(pstmt, ++iPCnt, inMsg.getString(EKK0351B002CBSMsg.KEY_KKTK_SVC_KEI_NO));
						// パラメータの設定(運用日付を指定)
						CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
						// パラメータの設定(運用日付を指定)
						CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
					}
				}
				// パラメータの設定(ＫＥＹ＿オプションサービスコードを指定)
				if (!("5".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString())))
				{
					if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_OP_SVC_CD)) 
					{
						CAANJDBCUtil.setParam(pstmt, ++iPCnt, inMsg.getObject(EKK0351B002CBSMsg.KEY_OP_SVC_CD));
					}
				}
				// パラメータの設定(ＫＥＹ＿基準年月日を指定)
				if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_BASE_YMD)) 
				{
					CAANJDBCUtil.setParam(pstmt, ++iPCnt, inMsg.getObject(EKK0351B002CBSMsg.KEY_BASE_YMD));
					CAANJDBCUtil.setParam(pstmt, ++iPCnt, inMsg.getObject(EKK0351B002CBSMsg.KEY_BASE_YMD));
				}
				
				if ("2".equals( inMsg.getString(EKK0351B002CBSMsg.FUNC_CODE).toString()))
				{
					// パラメータの設定(運用日付を指定)
					CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
					// パラメータの設定(運用日付を指定)
					CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
					// パラメータの設定(運用日付を指定)
					CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
					// パラメータの設定(運用日付を指定)
					CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
					// パラメータの設定(運用日付を指定)
					CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
					// パラメータの設定(運用日付を指定)
					CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
					// パラメータの設定(運用日付を指定)
					CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
					// パラメータの設定(ＫＥＹ＿サービス契約番号を指定)
					if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_NO)) 
					{
						CAANJDBCUtil.setParam(pstmt, ++iPCnt, inMsg.getObject(EKK0351B002CBSMsg.KEY_SVC_KEI_NO));
					}
					// パラメータの設定(ＫＥＹ＿サービス契約内訳番号を指定)
					if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO)) 
					{
						CAANJDBCUtil.setParam(pstmt, ++iPCnt, inMsg.getObject(EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO));
					}
					// パラメータの設定(ＫＥＹ＿オプションサービスコードを指定)
					if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_OP_SVC_CD)) 
					{
						CAANJDBCUtil.setParam(pstmt, ++iPCnt, inMsg.getObject(EKK0351B002CBSMsg.KEY_OP_SVC_CD));
					}
					// パラメータの設定(ＫＥＹ＿基準年月日を指定)
					if (!inMsg.isNull(EKK0351B002CBSMsg.KEY_BASE_YMD)) 
					{
						CAANJDBCUtil.setParam(pstmt, ++iPCnt, inMsg.getObject(EKK0351B002CBSMsg.KEY_BASE_YMD));
						CAANJDBCUtil.setParam(pstmt, ++iPCnt, inMsg.getObject(EKK0351B002CBSMsg.KEY_BASE_YMD));
					}
				}
			}
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// EKK0351B002CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  EKK0351B002CBSMsg1List.OP_SVC_CD_NM
					, EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT
					, EKK0351B002CBSMsg1List.OP_SVC_NIY
					, EKK0351B002CBSMsg1List.SVC_USE_STA_KIBO_YMD
					, EKK0351B002CBSMsg1List.RSV_TSTA_KIBO_YMD
					, EKK0351B002CBSMsg1List.OP_SVC_KEI_NO
					, EKK0351B002CBSMsg1List.OP_SVC_CD
					, EKK0351B002CBSMsg1List.SVC_STAYMD
					, EKK0351B002CBSMsg1List.SVC_ENDYMD
					, EKK0351B002CBSMsg1List.SVC_KEI_NO
					, EKK0351B002CBSMsg1List.PLAN_STAYMD
					, EKK0351B002CBSMsg1List.PCRS_CD
					, EKK0351B002CBSMsg1List.PPLAN_CD
					, EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT_NM
					, EKK0351B002CBSMsg1List.SVC_DLRE_CD
					, EKK0351B002CBSMsg1List.GENE_ADD_DTM
					, EKK0351B002CBSMsg1List.UPD_DTM
					, EKK0351B002CBSMsg1List.MSKM_DTL_NO
					, EKK0351B002CBSMsg1List.MSKM_NO
					, EKK0351B002CBSMsg1List.SBOP_SVC_KEI_NO
					, EKK0351B002CBSMsg1List.SBOP_SVC_CD
					, EKK0351B002CBSMsg1List.SVC_CHRG_STAYMD
					, EKK0351B002CBSMsg1List.SVC_CHRG_ENDYMD
					, EKK0351B002CBSMsg1List.DSP_SVCTK_STAYMD
					, EKK0351B002CBSMsg1List.MAX_OP_SVC_CNT
					, EKK0351B002CBSMsg1List.USE_END_RSYMD
					, EKK0351B002CBSMsg1List.KAIHK_PSB_PRD
					, EKK0351B002CBSMsg1List.FMTCEL_JGS_CD
			};
			
			// 明細に処理結果(ResultSet)をマッピング
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery,msgKeyList1,"eo.ejb.cbs.cbsmsg.EKK0351B002CBSMsg1List",0);
			// inMsg(CBSMsg)に明細をセット
			inMsg.set("EKK0351B002CBSMsg1List", outMsg1);
			

		} catch(SQLException e) {
			inMsg.set(EKK0351B002CBSMsg.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(EKK0351B002CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * <p>
	 * 予約適用年月日に関する検索条件(カレントレコードまたは予約レコード)を取得します。
	 * </p>
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @return 予約適用年月日に関する検索条件(カレントレコードの場合"<="、予約レコードの場合">"。機能コードにより判定する。)
	 */
	private String getRsvAplyYmdSearchJkn(CAANMsg inMsg)
	{
		// 機能コード"3"の場合のみ、予約適用年月日が未到来のレコードを抽出対象とする
		if ("3".equals(inMsg.getObject(EKK0351B002CBSMsg.FUNC_CODE).toString()))
		{
			return ">";
		}
		else
		{
			return "<=";
		}
	}
}
