/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbEKK0341B035TPDA
*	ソースファイル名：JSYejbEKK0341B035TPDA.java
*	作成者			：EK919738
*	日付			：2018年02月20日
*＜機能概要＞
*	機器提供サービス契約一覧照会明細テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ1.00.00
*	v37.00.00	2018/05/01	FJ)原田		【ANK-3383-00-00】標準工事費分割請求（STEP2）
*
********************************************************************************/

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.EKK0341B028CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B035CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B035CBSMsg1List;
import eo.ejb.cbm.entity.KK0341ETMsg;
import eo.ejb.common.JKKModelCommon;

/**
*
*  テンプレートDBアクセス部品　EKK0341B035_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbEKK0341B035TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
	
	/**
	 * コンストラクタ
	 */
	public JSYejbEKK0341B035TPDA()	{
	}
	
	/**
	*   EKK0341B035_SQLF<br>
	*   @param inMsg    入力値の格納されたCBSMsg <br>
	*   @return void
	*/
	public void invoke(CAANMsg inMsg,AgentDispatchContext inContext){
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		// PreparedStatementのパラメータカウント
		int iPCnt = 0;

		// サービス契約番号設定用配列
		String[] splitSvcKeiNo = null;
		
		// 機器提供サービスコード設定用配列
		String[] splitKktkSvcCd = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/

		try{
			
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK0341ETMsg.getTableName());
			
			
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT  ")
					.append("     KK0341.KKTK_SVC_KEI_NO        ")
					.append("     , KK0341.KKTK_SVC_CD        ")
					.append("     , KK0341.SVC_KEI_NO        ")
					.append("     , KK0341.SVC_KEI_UCWK_NO        ")
					.append("     , KK0341.KKTK_SVC_KEI_STAT ")
					.append("     ,( SELECT KKTK_SVC_ALI   ")
					.append("         FROM KK_M_KKTK_SVC KK0771  ")
					.append("         WHERE     KK0771.KKTK_SVC_CD = KK0341.KKTK_SVC_CD   ")
					.append("         AND    KK0771.MK_FLG = '0' ")
					.append("      ) AS KKTK_SVC_ALI         ")
					.append("     ,( SELECT ZM0411.TAKNKIKI_MODEL_NM              ")
					.append("         FROM   ZM_M_TAKNKIKI_MODEL ZM0411             ")
					.append("         WHERE  ZM0411.TAKNKIKI_MODEL_CD = KK0341.TAKNKIKI_MODEL_CD             ")
					.append("         AND    ZM0411.MK_FLG = '0'            ")
					.append("      ) AS TAKNKIKI_MODEL_CD_NM ")
					.append("     , KK0341.TAKNKIKI_MODEL_CD            ")
					.append("     ,( CASE WHEN KK0341.KKTK_SVC_CD = 'C021' THEN ")
					.append("         CASE WHEN ( ")
					.append("             SELECT COUNT(*) ")
					.append("             FROM   KK_T_WRISVC_TG_KEI KK0481    ")
					.append("             INNER JOIN KK_T_WRIB_SVC_KEI KK0451 ON KK0481.WRIB_SVC_KEI_NO = KK0451.WRIB_SVC_KEI_NO    ")
					.append("             WHERE   KK0481.SVC_KEI_NO = KK0341.SVC_KEI_NO  ")
					.append("             AND  KK0451.WRIB_SVC_CD = 'W00000080'  ")
					.append("             AND KK0451.WRIB_SVC_KEI_STAT  < 910 ")
					.append("             AND (KK0481.WRIB_SVC_KEI_NO, KK0481.WRIB_SVC_TRGT_KEI_NO, KK0481.GENE_ADD_DTM) =        (SELECT KK0481_GENE.WRIB_SVC_KEI_NO, KK0481_GENE.WRIB_SVC_TRGT_KEI_NO, MAX(KK0481_GENE.GENE_ADD_DTM)          ")
					.append("                                                                                                         FROM KK_T_WRISVC_TG_KEI KK0481_GENE          ")
					.append("                                                                                                         WHERE KK0481_GENE.WRIB_SVC_KEI_NO = KK0481.WRIB_SVC_KEI_NO          ")
					.append("                                                                                                         AND KK0481_GENE.WRIB_SVC_TRGT_KEI_NO = KK0481.WRIB_SVC_TRGT_KEI_NO          ")
					.append("                                                                                                         AND KK0481_GENE.MK_FLG = '0'          ")
					.append("                                                                                                         GROUP BY KK0481_GENE.WRIB_SVC_KEI_NO, KK0481_GENE.WRIB_SVC_TRGT_KEI_NO )     ")
					.append("                                                                                                         AND (KK0451.WRIB_SVC_KEI_NO, KK0451.RSV_APLY_YMD || KK0451.GENE_ADD_DTM) =        (SELECT KK0451_GENE.WRIB_SVC_KEI_NO, MAX(KK0451_GENE.RSV_APLY_YMD || KK0451_GENE.GENE_ADD_DTM)          ")
					.append("                                                                                                                                                                                             FROM KK_T_WRIB_SVC_KEI KK0451_GENE          ")
					.append("                                                                                                                                                                                             WHERE KK0451_GENE.WRIB_SVC_KEI_NO = KK0451.WRIB_SVC_KEI_NO          ")
					.append("                                                                                                                                                                                             AND KK0451_GENE.RSV_APLY_YMD <= ?           ")
					.append("                                                                                                                                                                                             AND KK0451_GENE.RSV_APLY_CD = '2'          ")
					.append("                                                                                                                                                                                             AND KK0451_GENE.MK_FLG = '0'          ")
					.append("                                                                                                                                                                                             GROUP BY KK0451_GENE.WRIB_SVC_KEI_NO) ")
					.append("             ) > 0     ")
					.append("         THEN '0'     ")
					.append("         ELSE '1'     ")
					.append("         END     ")
					.append("     ELSE '99'     ")
					.append("     END     ")
					.append("     ) AS PREMIUM_PACK_UM     ")
					.append("     ,( SELECT KK2541.kap_seiky_sta_ym     ")
					.append("         FROM KK_T_KAP_KEI KK2541     ")
					.append("         WHERE KK2541.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO     ")
					.append("         AND KK2541.RSV_APLY_YMD || KK2541.GENE_ADD_DTM =     ")
					.append("         ( SELECT MAX(KK2541_GENE.RSV_APLY_YMD || KK2541_GENE.GENE_ADD_DTM) AS KK2541_MAX     ")
					.append("             FROM KK_T_KAP_KEI KK2541_GENE     ")
					.append("             WHERE KK2541_GENE.KAP_KEI_NO = KK2541.KAP_KEI_NO     ")
					.append("             AND KK2541_GENE.RSV_APLY_YMD <= ?     ")
					.append("             AND KK2541_GENE.RSV_APLY_CD = '2'     ")
					.append("             AND KK2541_GENE.MK_FLG = '0'     ")
					.append("         ) AND KK2541.KAP_KEI_STAT < '910' AND rownum = 1 ")
					.append("      ) AS KAP_SEIKY_STA_YM ")
					// ANK-3383-00-00 ADD START
					.append("     , KK2541.KAP_PLAN_CD ")
					.append("     , KK2521.KAP_PLAN_NM ")
					.append("     , KK2521.KAP_HAMBAI_FORM_CD ")
					// ANK-3383-00-00 ADD END
					.append("     , KK0341.PLAN_STAYMD ")
					// ANK-3383-00-00 MOD START
					//.append(" FROM   KK_T_KKTK_SVC_KEI KK0341   ");
					.append(" FROM   KK_T_KKTK_SVC_KEI KK0341   ")
					.append(" LEFT JOIN ")
					.append("   ( SELECT KK2541.KKTK_SVC_KEI_NO, KK2541.KAP_PLAN_CD FROM KK_T_KAP_KEI KK2541 ")
					.append("     WHERE KK2541.RSV_APLY_YMD || KK2541.GENE_ADD_DTM =  ")
					.append("     ( ")
					.append("         SELECT MAX(KK2541_GENE.RSV_APLY_YMD || KK2541_GENE.GENE_ADD_DTM) ")
					.append("           FROM KK_T_KAP_KEI KK2541_GENE ")
					.append("          WHERE KK2541_GENE.KKTK_SVC_KEI_NO = KK2541.KKTK_SVC_KEI_NO ")
					.append("            AND KK2541_GENE.RSV_APLY_YMD <= ? ")
					.append("            AND KK2541_GENE.RSV_APLY_CD = '2' ")
					.append("            AND KK2541_GENE.MK_FLG = '0' ")
					.append("     ) ")
					.append("   ) KK2541 ")
					.append("    ON KK2541.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO  ")
					.append(" LEFT JOIN ")
					.append("   ( SELECT KK2521.KAP_PLAN_CD, KK2521.KAP_PLAN_NM, KK2521.KAP_HAMBAI_FORM_CD FROM KK_M_KAP_PLAN KK2521 ")
					.append("     WHERE KK2521.RSV_APLY_YMD || KK2521.GENE_ADD_DTM =  ")
					.append("     ( ")
					.append("         SELECT MAX(KK2521_GENE.RSV_APLY_YMD || KK2521_GENE.GENE_ADD_DTM) AS KK2521_MAX ")
					.append("           FROM KK_M_KAP_PLAN KK2521_GENE ")
					.append("          WHERE KK2521_GENE.KAP_PLAN_CD = KK2521.KAP_PLAN_CD ")
					.append("            AND KK2521_GENE.RSV_APLY_YMD <= ? ")
					.append("            AND KK2521_GENE.MK_FLG = '0' ")
					.append("     ) ")
					.append("   ) KK2521 ")
					.append("    ON KK2541.KAP_PLAN_CD = KK2521.KAP_PLAN_CD ");
					// ANK-3383-00-00 MOD END
								// SQL文_個別部1
			// ANK-3383-00-00 MOD START
			//if ( "1".equals( inMsg.getObject(EKK0341B035CBSMsg.FUNC_CODE).toString() ) ) {
			if ( "1".equals( inMsg.getObject(EKK0341B035CBSMsg.FUNC_CODE).toString()) || "2".equals( inMsg.getObject(EKK0341B035CBSMsg.FUNC_CODE).toString() ) ) {
			sql_Buff.append(" WHERE  KK0341.KKTK_SVC_KEI_STAT NOT IN ('910', '920')     ");
						// ＫＥＹ＿サービス契約番号がNULLでない場合
					if (!inMsg.isNull(EKK0341B035CBSMsg.KEY_SVC_KEI_NO))
					{
						// 文字列をカンマで分割する
						splitSvcKeiNo = inMsg.getString(EKK0341B035CBSMsg.KEY_SVC_KEI_NO).split(",");
		
						sql_Buff.append("    AND KK0341.SVC_KEI_NO IN (");
		
						// 分割したサービス契約番号の数だけ条件をセット
						for (int i = 0; i < splitSvcKeiNo.length; i++)
						{
							// 2件目以降はカンマで区切る
							if (i > 0)
							{
								sql_Buff.append(", ");
							}
							sql_Buff.append("?");
						}
						sql_Buff.append(") ");
					}
					// ＫＥＹ＿機器提供サービスコードがNULLでない場合
					if (!inMsg.isNull(EKK0341B035CBSMsg.KEY_KKTK_SVC_CD))
					{
						// 文字列をカンマで分割する
						splitKktkSvcCd = inMsg.getString(EKK0341B035CBSMsg.KEY_KKTK_SVC_CD).split(",");
		
						// ANK-3383-00-00 ADD START
						if ( "1".equals( inMsg.getObject(EKK0341B035CBSMsg.FUNC_CODE).toString()) ) {
						// ANK-3383-00-00 ADD END
							sql_Buff.append("    AND KK0341.KKTK_SVC_CD IN (");
						// ANK-3383-00-00 ADD START
						}
						else if ( "2".equals( inMsg.getObject(EKK0341B035CBSMsg.FUNC_CODE).toString()) ) {
							sql_Buff.append("    AND KK0341.KKTK_SVC_CD NOT IN (");
						}
						// ANK-3383-00-00 ADD END
		
						// 分割した機器提供サービスコードの数だけ条件をセット
						for (int i = 0; i < splitKktkSvcCd.length; i++)
						{
							// 2件目以降はカンマで区切る
							if (i > 0)
							{
								sql_Buff.append(", ");
							}
							sql_Buff.append("?");
						}
						sql_Buff.append(") ");
					}
			sql_Buff.append(" AND    KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM  ")
					.append(" IN ( ( SELECT MAX(KK0341_GENE_01.RSV_APLY_YMD || KK0341_GENE_01.GENE_ADD_DTM) AS KK0341_MAX            ")
					.append("                 FROM   KK_T_KKTK_SVC_KEI KK0341_GENE_01            ")
					.append("                 WHERE  KK0341_GENE_01.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO            ")
					.append("                 AND    KK0341_GENE_01.RSV_APLY_CD = '2'            ")
					.append("                 AND    KK0341_GENE_01.RSV_APLY_YMD <= ?            ")
					.append("                 AND    KK0341_GENE_01.MK_FLG = '0'          ")
					.append("      )  ")
// ANK-3383-00-00 MOD START
					//.append("    )  ")
					//.append(" ORDER BY  KKTK_SVC_ALI DESC, TAKNKIKI_MODEL_CD DESC, PREMIUM_PACK_UM ASC, KAP_SEIKY_STA_YM DESC, PLAN_STAYMD DESC ");
					.append("    )  ");
					if ( "2".equals( inMsg.getObject(EKK0341B035CBSMsg.FUNC_CODE).toString() ) ) {
						sql_Buff.append(" UNION  ")
								.append(" SELECT  ")
								.append("     KK0341.KKTK_SVC_KEI_NO        ")
								.append("     , KK0341.KKTK_SVC_CD        ")
								.append("     , KK0341.SVC_KEI_NO        ")
								.append("     , KK0341.SVC_KEI_UCWK_NO        ")
								.append("     , KK0341.KKTK_SVC_KEI_STAT ")
								.append("     ,( SELECT KKTK_SVC_ALI   ")
								.append("         FROM KK_M_KKTK_SVC KK0771  ")
								.append("         WHERE     KK0771.KKTK_SVC_CD = KK0341.KKTK_SVC_CD   ")
								.append("         AND    KK0771.MK_FLG = '0' ")
								.append("      ) AS KKTK_SVC_ALI         ")
								.append("     ,( SELECT ZM0411.TAKNKIKI_MODEL_NM              ")
								.append("         FROM   ZM_M_TAKNKIKI_MODEL ZM0411             ")
								.append("         WHERE  ZM0411.TAKNKIKI_MODEL_CD = KK0341.TAKNKIKI_MODEL_CD             ")
								.append("         AND    ZM0411.MK_FLG = '0'            ")
								.append("      ) AS TAKNKIKI_MODEL_CD_NM ")
								.append("     , KK0341.TAKNKIKI_MODEL_CD            ")
								.append("     ,( CASE WHEN KK0341.KKTK_SVC_CD = 'C021' THEN ")
								.append("         CASE WHEN ( ")
								.append("             SELECT COUNT(*) ")
								.append("             FROM   KK_T_WRISVC_TG_KEI KK0481    ")
								.append("             INNER JOIN KK_T_WRIB_SVC_KEI KK0451 ON KK0481.WRIB_SVC_KEI_NO = KK0451.WRIB_SVC_KEI_NO    ")
								.append("             WHERE   KK0481.SVC_KEI_NO = KK0341.SVC_KEI_NO  ")
								.append("             AND  KK0451.WRIB_SVC_CD = 'W00000080'  ")
								.append("             AND KK0451.WRIB_SVC_KEI_STAT  < 910 ")
								.append("             AND (KK0481.WRIB_SVC_KEI_NO, KK0481.WRIB_SVC_TRGT_KEI_NO, KK0481.GENE_ADD_DTM) =        (SELECT KK0481_GENE.WRIB_SVC_KEI_NO, KK0481_GENE.WRIB_SVC_TRGT_KEI_NO, MAX(KK0481_GENE.GENE_ADD_DTM)          ")
								.append("                                                                                                         FROM KK_T_WRISVC_TG_KEI KK0481_GENE          ")
								.append("                                                                                                         WHERE KK0481_GENE.WRIB_SVC_KEI_NO = KK0481.WRIB_SVC_KEI_NO          ")
								.append("                                                                                                         AND KK0481_GENE.WRIB_SVC_TRGT_KEI_NO = KK0481.WRIB_SVC_TRGT_KEI_NO          ")
								.append("                                                                                                         AND KK0481_GENE.MK_FLG = '0'          ")
								.append("                                                                                                         GROUP BY KK0481_GENE.WRIB_SVC_KEI_NO, KK0481_GENE.WRIB_SVC_TRGT_KEI_NO )     ")
								.append("                                                                                                         AND (KK0451.WRIB_SVC_KEI_NO, KK0451.RSV_APLY_YMD || KK0451.GENE_ADD_DTM) =        (SELECT KK0451_GENE.WRIB_SVC_KEI_NO, MAX(KK0451_GENE.RSV_APLY_YMD || KK0451_GENE.GENE_ADD_DTM)          ")
								.append("                                                                                                                                                                                             FROM KK_T_WRIB_SVC_KEI KK0451_GENE          ")
								.append("                                                                                                                                                                                             WHERE KK0451_GENE.WRIB_SVC_KEI_NO = KK0451.WRIB_SVC_KEI_NO          ")
								.append("                                                                                                                                                                                             AND KK0451_GENE.RSV_APLY_YMD <= ?           ")
								.append("                                                                                                                                                                                             AND KK0451_GENE.RSV_APLY_CD = '2'          ")
								.append("                                                                                                                                                                                             AND KK0451_GENE.MK_FLG = '0'          ")
								.append("                                                                                                                                                                                             GROUP BY KK0451_GENE.WRIB_SVC_KEI_NO) ")
								.append("             ) > 0     ")
								.append("         THEN '0'     ")
								.append("         ELSE '1'     ")
								.append("         END     ")
								.append("     ELSE '99'     ")
								.append("     END     ")
								.append("     ) AS PREMIUM_PACK_UM     ")
								.append("     ,( SELECT KK2541.kap_seiky_sta_ym     ")
								.append("         FROM KK_T_KAP_KEI KK2541     ")
								.append("         WHERE KK2541.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO     ")
								.append("         AND KK2541.RSV_APLY_YMD || KK2541.GENE_ADD_DTM =     ")
								.append("         ( SELECT MAX(KK2541_GENE.RSV_APLY_YMD || KK2541_GENE.GENE_ADD_DTM) AS KK2541_MAX     ")
								.append("             FROM KK_T_KAP_KEI KK2541_GENE     ")
								.append("             WHERE KK2541_GENE.KAP_KEI_NO = KK2541.KAP_KEI_NO     ")
								.append("             AND KK2541_GENE.RSV_APLY_YMD <= ?     ")
								.append("             AND KK2541_GENE.RSV_APLY_CD = '2'     ")
								.append("             AND KK2541_GENE.MK_FLG = '0'     ")
								.append("         ) AND KK2541.KAP_KEI_STAT < '910' AND rownum = 1 ")
								.append("      ) AS KAP_SEIKY_STA_YM ")
								.append("     , KK2541.KAP_PLAN_CD ")
								.append("     , KK2521.KAP_PLAN_NM ")
								.append("     , KK2521.KAP_HAMBAI_FORM_CD ")
								.append("     , KK0341.PLAN_STAYMD ")
								.append(" FROM   KK_T_KKTK_SVC_KEI KK0341   ")
								.append(" LEFT JOIN ")
								.append("   ( SELECT KK2541.KKTK_SVC_KEI_NO, KK2541.KAP_PLAN_CD FROM KK_T_KAP_KEI KK2541 ")
								.append("     WHERE KK2541.RSV_APLY_YMD || KK2541.GENE_ADD_DTM =  ")
								.append("     ( ")
								.append("         SELECT MAX(KK2541_GENE.RSV_APLY_YMD || KK2541_GENE.GENE_ADD_DTM) ")
								.append("           FROM KK_T_KAP_KEI KK2541_GENE ")
								.append("          WHERE KK2541_GENE.KKTK_SVC_KEI_NO = KK2541.KKTK_SVC_KEI_NO ")
								.append("            AND KK2541_GENE.RSV_APLY_YMD <= ? ")
								.append("            AND KK2541_GENE.RSV_APLY_CD = '2' ")
								.append("            AND KK2541_GENE.MK_FLG = '0' ")
								.append("     ) ")
								.append("   ) KK2541 ")
								.append("    ON KK2541.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO  ")
								.append(" LEFT JOIN ")
								.append("   ( SELECT KK2521.KAP_PLAN_CD, KK2521.KAP_PLAN_NM, KK2521.KAP_HAMBAI_FORM_CD FROM KK_M_KAP_PLAN KK2521 ")
								.append("     WHERE KK2521.RSV_APLY_YMD || KK2521.GENE_ADD_DTM =  ")
								.append("     ( ")
								.append("         SELECT MAX(KK2521_GENE.RSV_APLY_YMD || KK2521_GENE.GENE_ADD_DTM) AS KK2521_MAX ")
								.append("           FROM KK_M_KAP_PLAN KK2521_GENE ")
								.append("          WHERE KK2521_GENE.KAP_PLAN_CD = KK2521.KAP_PLAN_CD ")
								.append("            AND KK2521_GENE.RSV_APLY_YMD <= ? ")
								.append("            AND KK2521_GENE.MK_FLG = '0' ")
								.append("     ) ")
								.append("   ) KK2521 ")
								.append("    ON KK2541.KAP_PLAN_CD = KK2521.KAP_PLAN_CD ")
								.append(" WHERE  KK0341.KKTK_SVC_KEI_STAT NOT IN ('910', '920')     ")
								.append(" AND KK0341.SVC_KEI_KAISEN_UCWK_NO IN ")
								.append("   ( SELECT KK0241.SVC_KEI_KAISEN_UCWK_NO ")
								.append("       FROM KK_T_KAISEN_TG_SVKEI KK0241 ");
										// ＫＥＹ＿サービス契約番号がNULLでない場合
									if (!inMsg.isNull(EKK0341B035CBSMsg.KEY_SVC_KEI_NO))
									{
										// 文字列をカンマで分割する
										splitSvcKeiNo = inMsg.getString(EKK0341B035CBSMsg.KEY_SVC_KEI_NO).split(",");
										
										sql_Buff.append("    WHERE KK0241.SVC_KEI_NO IN (");
										
										// 分割したサービス契約番号の数だけ条件をセット
										for (int i = 0; i < splitSvcKeiNo.length; i++)
										{
											// 2件目以降はカンマで区切る
											if (i > 0)
											{
												sql_Buff.append(", ");
											}
											sql_Buff.append("?");
										}
										sql_Buff.append(") ");
									}
						sql_Buff.append("       AND ? BETWEEN KK0241.KAISEN_UCWK_USE_STAYMD AND KK0241.KAISEN_UCWK_USE_ENDYMD ")
								.append("       GROUP BY KK0241.SVC_KEI_KAISEN_UCWK_NO ")
								.append("   ) ");
									// ＫＥＹ＿機器提供サービスコードがNULLでない場合
									if (!inMsg.isNull(EKK0341B035CBSMsg.KEY_KKTK_SVC_CD))
									{
										// 文字列をカンマで分割する
										splitKktkSvcCd = inMsg.getString(EKK0341B035CBSMsg.KEY_KKTK_SVC_CD).split(",");
										
											sql_Buff.append("    AND KK0341.KKTK_SVC_CD NOT IN (");
										
										// 分割した機器提供サービスコードの数だけ条件をセット
										for (int i = 0; i < splitKktkSvcCd.length; i++)
										{
											// 2件目以降はカンマで区切る
											if (i > 0)
											{
												sql_Buff.append(", ");
											}
											sql_Buff.append("?");
										}
										sql_Buff.append(") ");
									}
							sql_Buff.append(" AND    KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM  ")
									.append(" IN ( ( SELECT MAX(KK0341_GENE_01.RSV_APLY_YMD || KK0341_GENE_01.GENE_ADD_DTM) AS KK0341_MAX            ")
									.append("                 FROM   KK_T_KKTK_SVC_KEI KK0341_GENE_01            ")
									.append("                 WHERE  KK0341_GENE_01.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO            ")
									.append("                 AND    KK0341_GENE_01.RSV_APLY_CD = '2'            ")
									.append("                 AND    KK0341_GENE_01.RSV_APLY_YMD <= ?            ")
									.append("                 AND    KK0341_GENE_01.MK_FLG = '0'          ")
									.append("      )  ")
									.append("    )  ");
					}
					sql_Buff.append(" ORDER BY  KKTK_SVC_ALI DESC, TAKNKIKI_MODEL_CD DESC, PREMIUM_PACK_UM ASC, KAP_SEIKY_STA_YM DESC, PLAN_STAYMD DESC ");
// ANK-3383-00-00 MOD END
			}
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);
			
			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			// ANK-3383-00-00 MOD START
			//if ( "1".equals( inMsg.getString(EKK0341B035CBSMsg.FUNC_CODE) ) ) {
			if ( "1".equals( inMsg.getString(EKK0341B035CBSMsg.FUNC_CODE)) || "2".equals( inMsg.getString(EKK0341B035CBSMsg.FUNC_CODE))) {
			// ANK-3383-00-00 MOD END
				// パラメータの設定(運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
				// パラメータの設定(運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
				
				// ANK-3383-00-00 ADD START
				// パラメータの設定(運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
				// パラメータの設定(運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
				// ANK-3383-00-00 ADD END
				
 				// ＫＥＹ＿サービス契約番号がNULLでない場合
				if (!inMsg.isNull(EKK0341B035CBSMsg.KEY_SVC_KEI_NO))
				{
					for (int i = 0; i < splitSvcKeiNo.length; i++)
					{
						// パラメータの設定(ＫＥＹ＿サービス契約番号)
						CAANJDBCUtil.setParam(pstmt, ++iPCnt, splitSvcKeiNo[i]);
					}
				}
				
 				// ＫＥＹ＿機器提供サービスコードがNULLでない場合
				if (!inMsg.isNull(EKK0341B035CBSMsg.KEY_KKTK_SVC_CD))
				{
					for (int i = 0; i < splitKktkSvcCd.length; i++)
					{
						// パラメータの設定(ＫＥＹ＿機器提供サービスコード)
						CAANJDBCUtil.setParam(pstmt, ++iPCnt, splitKktkSvcCd[i]);
					}
				}
				// パラメータの設定(運用日付を指定)
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
				
				// ANK-3383-00-00 ADD START
				if ( "2".equals( inMsg.getString(EKK0341B035CBSMsg.FUNC_CODE))) {
					// パラメータの設定(運用日付を指定)
					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));
					
	 				// ＫＥＹ＿サービス契約番号がNULLでない場合
					if (!inMsg.isNull(EKK0341B035CBSMsg.KEY_SVC_KEI_NO))
					{
						for (int i = 0; i < splitSvcKeiNo.length; i++)
						{
							// パラメータの設定(ＫＥＹ＿サービス契約番号)
							CAANJDBCUtil.setParam(pstmt, ++iPCnt, splitSvcKeiNo[i]);
						}
					}
					
					// パラメータの設定(運用日付を指定)
					CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
					
	 				// ＫＥＹ＿機器提供サービスコードがNULLでない場合
					if (!inMsg.isNull(EKK0341B035CBSMsg.KEY_KKTK_SVC_CD))
					{
						for (int i = 0; i < splitKktkSvcCd.length; i++)
						{
							// パラメータの設定(ＫＥＹ＿機器提供サービスコード)
							CAANJDBCUtil.setParam(pstmt, ++iPCnt, splitKktkSvcCd[i]);
						}
					}
					// パラメータの設定(運用日付を指定)
					CAANJDBCUtil.setParam(pstmt, ++iPCnt, JKKModelCommon.getOpeDate(inMsg));
				}
				// ANK-3383-00-00 ADD END
			}
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// EKK0341B035CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  EKK0341B035CBSMsg1List.KKTK_SVC_KEI_NO
					, EKK0341B035CBSMsg1List.KKTK_SVC_CD
					, EKK0341B035CBSMsg1List.SVC_KEI_NO
					, EKK0341B035CBSMsg1List.SVC_KEI_UCWK_NO
					, EKK0341B035CBSMsg1List.KKTK_SVC_KEI_STAT
					, EKK0341B035CBSMsg1List.KKTK_SVC_ALI
					, EKK0341B035CBSMsg1List.TAKNKIKI_MODEL_CD_NM
					, EKK0341B035CBSMsg1List.TAKNKIKI_MODEL_CD
					, EKK0341B035CBSMsg1List.PREMIUM_PACK_UM
					, EKK0341B035CBSMsg1List.KAP_SEIKY_STA_YM
					// ANK-3383-00-00 ADD START
					, EKK0341B035CBSMsg1List.KAP_PLAN_CD
					, EKK0341B035CBSMsg1List.KAP_PLAN_NM
					, EKK0341B035CBSMsg1List.KAP_HAMBAI_FORM_CD
					// ANK-3383-00-00 ADD END
					, EKK0341B035CBSMsg1List.PLAN_STAYMD
			};
			
			// 明細に処理結果(ResultSet)をマッピング
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery,msgKeyList1,"eo.ejb.cbs.cbsmsg.EKK0341B035CBSMsg1List",0);
			// inMsg(CBSMsg)に明細をセット
			inMsg.set("EKK0341B035CBSMsg1List", outMsg1);
			

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