/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbEDK0011B080TPDA
*	ソースファイル名：JSYejbEDK0011B080TPDA.java
*	作成者			：EK909882
*	日付			：2011年11月08日
*＜機能概要＞
*	SQLFacility
*	テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ1.00.00
*
********************************************************************************/

package eo.ejb.cbs.sqlf;

// ST1-2012-0000712 DEL STAR
// 物流ModelCommonを参照してしまっていた部分を契約のModelCommonを参照するように変更
//import static eo.ejb.common.JDKModelCommon.innerJoinToGen;
//import static eo.ejb.common.JDKModelCommon.joinKKTKSvc;
//import static eo.ejb.common.JDKModelCommon.svcKeiNoFor;
//import eo.ejb.common.JDKModelCommon.COMMA;
// ST1-2012-0000712 DEL END

// ST1-2012-0000712 ADD START
//物流ModelCommonを参照してしまっていた部分を契約のModelCommonを参照するように変更
import static eo.ejb.common.JKKModelCommon.innerJoinToGen;
import static eo.ejb.common.JKKModelCommon.joinKKTKSvc;
import static eo.ejb.common.JKKModelCommon.svcKeiNoFor;
import eo.ejb.common.JKKModelCommon;
import eo.ejb.common.JKKModelCommon.COMMA;
//ST1-2012-0000712 ADD END

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.fujitsu.futurity.model.base.CAANJDBCUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.base.CAANSQLFacility;
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.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateDBAccessHandler;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbm.entity.DK0011ETMsg;
import eo.ejb.cbs.cbsmsg.EDK0011B080CBSMsg;
import eo.ejb.cbs.cbsmsg.EDK0011B080CBSMsg1List;




/**
*
*  テンプレートDBアクセス部品　EDK0011B080_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbEDK0011B080TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
	
	/**
	 * コンストラクタ
	 */
	public JSYejbEDK0011B080TPDA()	{
	}

	/**
	*   EDK0011B080_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(DK0011ETMsg.getTableName());
			
			
			// SQL文_基本部1
//↓↓↓2013-02-28変更　ロット２ST3-2013-0000477（性能改善リトライ）↓↓↓
			//SELECT 文と選択項目一覧部分
			StringBuilder sbColumns = new StringBuilder();
			sbColumns
			.append("SELECT ")
			.append("  DK0011.HAISO_NO ")
			.append(", DK0021.HAISO_TAIBPIN_NO ")
			.append(", DK0011.HAISO_STAT ")
			.append(", DK0011.HAISO_UK_YMD ")
			.append(", DK0011.HISOS_KOCOMP_CD ")
			.append(", DK0011.IDOMOTO_KRIPLACE_SKCD ")
			.append(", DK0011.HAISO_MOTO_SOKO_CD ")
			.append(", DK0011.IDOMOTO_KOCOMP_CD ")
			.append(", DK0011.IDOMOTO_YTKSKOF_CD ")
			.append(", DK0021.KOJIAK_NO ")
			.append(", DK0021.KKTK_SVC_KEI_NO ")
			.append(", DK0021.TAKNKIKI_MODEL_CD ")
			.append(", DK0021.HUZOKUHIN_MODEL_CD ")
			.append(", DK0021.TAKNKIKI_SETHIN_MODEL_CD ")
			.append(", 1 AS CNT ")
			.append(", KK0081.SVC_KEI_NO ")
			.append(", KK0081.SYSID ")
			.append(", KK0081.PRC_GRP_CD ")
			.append(", DK0021.PCRS_CD ")
			.append(", KK0081.SVC_KEI_STAT ")
			.append(", DK0021.KIKI_CHG_NO ");
//************************************************************************
//			// ST1-2012-0000683 2012/10/05 start
//			StringBuffer sql_Buff = new StringBuffer();
//			sql_Buff.append(" SELECT ")
//			.append("   TBL1.HAISO_NO ")
//			.append("   , TBL1.HAISO_TAIBPIN_NO ")
//			.append("   , TBL1.HAISO_STAT ")
//			.append("   , TBL1.HAISO_UK_YMD ")
//			.append("   , TBL1.HISOS_KOCOMP_CD ")
//			.append("   , TBL1.IDOMOTO_KRIPLACE_SKCD ")
//			.append("   , TBL1.HAISO_MOTO_SOKO_CD ")
//			.append("   , TBL1.IDOMOTO_KOCOMP_CD ")
//			.append("   , TBL1.IDOMOTO_YTKSKOF_CD ")
//			.append("   , TBL1.KOJIAK_NO ")
//			.append("   , TBL1.KKTK_SVC_KEI_NO ")
//			.append("   , TBL1.TAKNKIKI_MODEL_CD ")
//			.append("   , TBL1.HUZOKUHIN_MODEL_CD ")
//			.append("   , TBL1.TAKNKIKI_SETHIN_MODEL_CD ")
//			.append("   , TBL1.CNT ")
//			.append("   , TBL1.SVC_KEI_NO ")
//			.append("   , KK0081.SYSID ")
//			.append("   , KK0081.PRC_GRP_CD ")
//			//.append("   , PRC_GRP.PRC_GRP_NM ")
//			.append("   , TBL1.PCRS_CD ")
//			//.append("   , PCRS.PCRS_NM ")
//			//.append("   , TBL1.TAKNKIKI_MODEL_NM ")
//			//.append("   , '' AS HUZOKUHIN_MODEL_NM ")
//			//.append("   , TBL1.TAKNKIKI_SETHIN_MODEL_NM ")
//			.append("   , KK0081.SVC_KEI_STAT ")
//			//.append(      cd(CD00037, "KK0081.SVC_KEI_STAT", "SVC_KEI_STAT_NM"))
//			//.append("   , CH0231.TOKUSOKU_STAT ")
//			//.append(      cd(CD00184, "CH0231.TOKUSOKU_STAT", "TOKUSOKU_STAT_NM"))
//			//.append("   , TBL1.TAKNKIKI_SBT_CD ")
//			//.append("   , TBL1.TAKNKIKI_IDO_CD ")
//			.append("   , TBL1.KIKI_CHG_NO ")
//			.append(" FROM ( ")
//			.append("   SELECT ")
//			.append("       DK0011.HAISO_NO ")
//			.append("     , DK0021.HAISO_TAIBPIN_NO ")
//			.append("     , DK0011.HAISO_UK_YMD ")
//			.append("     , DK0011.HISOS_KOCOMP_CD ")
//			//.append("     , DK0011.HISOS_NM ")
//			.append("     , DK0011.IDOMOTO_KRIPLACE_SKCD ")
//			.append("     , DK0011.HAISO_MOTO_SOKO_CD ")
//			.append("     , DK0011.IDOMOTO_KOCOMP_CD ")
//			.append("     , DK0011.IDOMOTO_YTKSKOF_CD ")
//			.append("     , DK0021.KOJIAK_NO ")
//			.append("     , DK0021.KKTK_SVC_KEI_NO ")
//			.append("     , DK0021.TAKNKIKI_MODEL_CD ")
//			.append("     , DK0021.HUZOKUHIN_MODEL_CD ")
//			.append("     , DK0021.TAKNKIKI_SETHIN_MODEL_CD ")
//			.append("     , 1 AS CNT ")
//			.append(        svcKeiNoFor("KK0341", "SVC_KEI_NO", COMMA.LEFT))
//			.append("     , DK0021.PCRS_CD ")
//			//.append(        cdNm("ZM_M_TAKNKIKI_MODEL",  "TAKNKIKI_MODEL_NM",        "DK0021.TAKNKIKI_MODEL_CD", COMMA.LEFT))
//			//.append(        cdNm("DK_M_TKKIKI_SETHNMDL", "TAKNKIKI_SETHIN_MODEL_NM", "DK0021.TAKNKIKI_SETHIN_MODEL_CD", COMMA.LEFT))
//			.append("     , DECODE(  DK0021.TAKNKIKI_MODEL_CD ")
//			.append("              , NULL ")
//			.append("              , DECODE(  DK0021.HUZOKUHIN_MODEL_CD ")
//			.append("                       , NULL" )
//			.append("                       , DECODE(  DK0021.TAKNKIKI_SETHIN_MODEL_CD ")
//			.append("                                , NULL ")
//			.append("                                , '' ")
//			.append("                                , DK0021.TAKNKIKI_SETHIN_MODEL_CD) ")
//			.append("                       , DK0021.HUZOKUHIN_MODEL_CD) ")
//			.append("              , DK0021.TAKNKIKI_MODEL_CD) AS MODEL_NO ")
//			.append("     , DK0011.HAISO_STAT ")
//			.append("     , DK0011.HAISO_DIV ")
//			.append("     , DK0011.SHUKKA_TAIKI_FLG ")
//			.append("     , DK0011.MK_FLG AS HAISO_MK_FLG ")
//			.append("     , DK0021.MK_FLG AS DK0021_MK_FLG ")
//			//.append("     , DK0021.TAKNKIKI_SBT_CD AS TAKNKIKI_SBT_CD ")
//			//.append("     , KK0341.TAKNKIKI_IDO_CD AS TAKNKIKI_IDO_CD ")
//			.append("     , DK0021.KIKI_CHG_NO AS KIKI_CHG_NO ")
//			.append("   FROM ")
//			.append("     DK_T_HAISO DK0011 ")
//			.append("     INNER JOIN DK_T_HAISO_TG_BPIN DK0021 ")
//			.append("       ON DK0011.HAISO_NO = DK0021.HAISO_NO ")
//			.append(      joinKKTKSvc("KK0341", "DK0021", "KKTK_SVC_KEI_NO", "KIKI_CHG_NO", "INNER"))
//			.append(" ) TBL1 ")
//			.append(      innerJoinToGen("KK_T_SVC_KEI", "KK0081", "TBL1", "SVC_KEI_NO"))
//			//.append("     LEFT OUTER JOIN (SELECT T09.* FROM KK_M_PRC_GRP T09 ")
//			//.append("                WHERE T09.GENE_ADD_DTM = ( ")
//			//.append("                      SELECT MAX(T10.GENE_ADD_DTM) FROM KK_M_PRC_GRP T10 ")
//			//.append("                      WHERE T09.PRC_GRP_CD = T10.PRC_GRP_CD) ")
//			//.append("               ) PRC_GRP ")
//			//.append("       ON (PRC_GRP.PRC_GRP_CD = KK0081.PRC_GRP_CD ")
//			//.append("           AND ? >= SUBSTR(PRC_GRP.GENE_ADD_DTM, 1, 8) ")
//			//.append("           AND PRC_GRP.MK_FLG = '0') ")
////↓↓↓2012-11-08無効　ロット２IT1-2012-0001924（不要な結合）↓↓↓
////			.append("     INNER JOIN KK_T_KAKINS KK0321 ")
////			.append("     ON  KK0321.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
////			.append("     AND ? BETWEEN KK0321.KAKINS_TSTAYMD AND KK0321.KAKINS_TENDYMD ")
////			.append("     AND KK0321.MK_FLG = '0' ")
////			.append(      innerJoinToGen("KK_T_SEIKY_KEI", "KK_SEIKY_KEI", "KK0321", "SEIKY_KEI_NO"))
////↑↑↑2012-11-08無効　ロット２IT1-2012-0001924（不要な結合）↑↑↑
//			//.append("     LEFT OUTER JOIN CH_T_TOKUSOKU CH0231 ")
//			//.append("     ON  KK_SEIKY_KEI.SEIKY_KEI_NO = CH0231.SEIKY_KEI_NO ")
//			//.append("     AND ? BETWEEN CH0231.TOKUSOKU_STAYMD AND CH0231.TOKUSOKU_ENDYMD ")
//			//.append("     AND CH0231.MK_FLG = '0' ")
//			//.append("     LEFT OUTER JOIN (SELECT T11.* FROM KK_M_PCRS T11 ")
//			//.append("                WHERE T11.GENE_ADD_DTM = ( ")
//			//.append("                      SELECT MAX(T12.GENE_ADD_DTM) FROM KK_M_PCRS T12 ")
//			//.append("                      WHERE T11.PCRS_CD = T12.PCRS_CD) ")
//			//.append("               ) PCRS ")
//			//.append("       ON (TBL1.PCRS_CD = PCRS.PCRS_CD ")
//			//.append("           AND ? >= SUBSTR(PCRS.GENE_ADD_DTM, 1, 8) ")
//			//.append("           AND PCRS.MK_FLG = '0') ")
//			// ST1-2012-0000683 2012/10/05 end
//			;	//2012-11-08追記（最後にセミコロン）
//↑↑↑2013-02-28変更　ロット２ST3-2013-0000477（性能改善リトライ）↑↑↑
			
			// ＫＥＹ＿配送ステータスリスト
			String[] sHaisoStat = null;
			
//↓↓↓2013-02-28変更　ロット２ST3-2013-0000477（性能改善リトライ）↓↓↓
			StringBuilder sbHaisoStat = new StringBuilder();
			if (inMsg.getObject(EDK0011B080CBSMsg.KEY_HAISO_STAT) != null)
			{
				sbHaisoStat.append("   AND DK0011.HAISO_STAT IN ( ");
 				
 				// ＫＥＹ＿配送ステータスをカンマで分割
 				sHaisoStat = inMsg.getString(EDK0011B080CBSMsg.KEY_HAISO_STAT).split(",");
 				StringBuffer sbBindHaisoStat = new StringBuffer();

				for (int i = 0; i < sHaisoStat.length; i++)
				{
					// 入力値をカンマで分割した数分IN句に設定した内容を
					// AND条件にてWHERE句に設定する
					sbBindHaisoStat.append(" , ?");
				}
				// 最初のカンマを取り除いてSQLに設定
				sbHaisoStat.append(sbBindHaisoStat.toString().substring(2))
				.append(" ) ");
			}
//************************************************************************
//			// SQL文_個別部1
//			if ( JPCModelConstant.FUNC_CD_1.equals( inMsg.getObject(EDK0011B080CBSMsg.FUNC_CODE).toString() ) ) {
// 				sql_Buff.append(" WHERE ")
//						.append("   TBL1.SVC_KEI_NO = ? ");
// 				
//				if (inMsg.getObject(EDK0011B080CBSMsg.KEY_HAISO_STAT) != null)
//				{
//	 				sql_Buff.append("   AND TBL1.HAISO_STAT IN ( ");
//	 				
//	 				// ＫＥＹ＿配送ステータスをカンマで分割
//	 				sHaisoStat = inMsg.getString(EDK0011B080CBSMsg.KEY_HAISO_STAT).split(",");
//	 				StringBuffer sbBindHaisoStat = new StringBuffer();
//
//
//					for (int i = 0; i < sHaisoStat.length; i++)
//					{
//						// 入力値をカンマで分割した数分IN句に設定した内容を
//						// AND条件にてWHERE句に設定する
//						sbBindHaisoStat.append(" , 	? ");
//					}
//					// 最初のカンマを取り除いてSQLに設定
//					sql_Buff.append(sbBindHaisoStat.toString().substring(2));
//					
//					sql_Buff.append(" ) ");
//				}
//				// OT-2013-0000032 配送区分"00"以外の場合も取得 EDIT_START
////				sql_Buff.append("   AND TBL1.HAISO_DIV = '00' ")
//				sql_Buff.append("   AND TBL1.SHUKKA_TAIKI_FLG = '0' ")
//				// OT-2013-0000032 配送区分"00"以外の場合も取得 EDIT_END
//						.append("   AND TBL1.HAISO_MK_FLG = '0' ");
//			}
//			// ORDER句
//			StringBuffer sql_sort = new StringBuffer();
//			sql_sort.append(" ORDER BY ")
//					.append("   TBL1.HAISO_UK_YMD ASC, ")
//					.append("   TBL1.SVC_KEI_NO ASC, ")
//					.append("   TBL1.MODEL_NO ASC ");
//↑↑↑2013-02-28変更　ロット２ST3-2013-0000477（性能改善リトライ）↑↑↑
//↓↓↓2013-02-28追加　ロット２ST3-2013-0000477（性能改善リトライ）↓↓↓
			//サービス契約番号からの結合による検索ブロック
			StringBuilder sbFromWhere01 = new StringBuilder();
			sbFromWhere01
			.append("    FROM    KK_T_SVC_KEI        KK0081 ")
			.append("    JOIN    KK_T_KKTK_SVC_KEI   KK0341 ")
			.append("    ON          KK0341.SVC_KEI_NO       = KK0081.SVC_KEI_NO ")
			.append("    AND         KK0341.OYA_KEI_SKBT_CD  = '01' ")
			.append("    JOIN    DK_T_HAISO_TG_BPIN  DK0021 ")
			.append("    ON          DK0021.KKTK_SVC_KEI_NO  = KK0341.KKTK_SVC_KEI_NO ")
			.append("    AND     DK0021.KIKI_CHG_NO          = KK0341.KIKI_CHG_NO ")
			.append("    JOIN    DK_T_HAISO          DK0011 ")
			.append("    ON          DK0011.HAISO_NO         = DK0021.HAISO_NO ")
			.append("    WHERE ")
			.append("        KK0081.SVC_KEI_NO   = ? ")									//ＫＥＹ＿サービス契約番号
			.append("    AND KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ( ")
			.append("        SELECT  MAX(KK0081G.RSV_APLY_YMD || KK0081G.GENE_ADD_DTM) ")
			.append("        FROM    KK_T_SVC_KEI    KK0081G ")
			.append("        WHERE   KK0081G.SVC_KEI_NO      = KK0081.SVC_KEI_NO ")
			.append("        AND     KK0081G.RSV_APLY_YMD   <= ? ")						//運用日
			.append("        AND     KK0081.RSV_APLY_CD      = '2' ")
			.append("        AND     KK0081.MK_FLG           = '0') ")
			.append("    AND (KK0341.KKTK_SVC_KEI_NO, KK0341.KIKI_CHG_NO, KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM) IN  ( ")
			.append("        SELECT KK0341G.KKTK_SVC_KEI_NO, KK0341G.KIKI_CHG_NO, MAX(KK0341G.RSV_APLY_YMD || KK0341G.GENE_ADD_DTM) ")
			.append("        FROM KK_T_KKTK_SVC_KEI  KK0341G ")
			.append("        WHERE ")
			.append("            KK0341G.SVC_KEI_NO      = KK0341.SVC_KEI_NO ")
			.append("        AND KK0341.OYA_KEI_SKBT_CD  = '01' ")
			.append("        AND KK0341G.RSV_APLY_CD     IN ('1', '2') ")
			.append("        AND KK0341G.MK_FLG          = '0' ")
			.append("        GROUP BY ")
			.append("        KK0341G.KKTK_SVC_KEI_NO, ")
			.append("        KK0341G.KIKI_CHG_NO) ")
			.append(sbHaisoStat)														//ＫＥＹ＿配送ステータス
			// 20131024 OM-2013-0002486 DEL START
			// .append("    AND DK0011.SHUKKA_TAIKI_FLG = '0' ")
			// 20131024 OM-2013-0002486 DEL END
			.append("    AND DK0011.MK_FLG           = '0' ");

			//サービス契約番号→サービス契約回線内訳番号からの結合による検索ブロック
			StringBuilder sbFromWhere02 = new StringBuilder();
			sbFromWhere02
			.append("    FROM    KK_T_SVC_KEI        KK0081 ")
			.append("    JOIN    KK_T_KAISEN_TG_SVKEI    KK0241 ")
			.append("    ON          KK0241.SVC_KEI_NO       = KK0081.SVC_KEI_NO ")
			.append("    JOIN    KK_T_KKTK_SVC_KEI   KK0341 ")
			.append("    ON          KK0341.SVC_KEI_KAISEN_UCWK_NO = KK0241.SVC_KEI_KAISEN_UCWK_NO ")
			.append("    AND         KK0341.OYA_KEI_SKBT_CD  = '02' ")
			.append("    JOIN    DK_T_HAISO_TG_BPIN  DK0021 ")
			.append("    ON          DK0021.KKTK_SVC_KEI_NO  = KK0341.KKTK_SVC_KEI_NO ")
			.append("    AND     DK0021.KIKI_CHG_NO          = KK0341.KIKI_CHG_NO ")
			.append("    JOIN    DK_T_HAISO          DK0011 ")
			.append("    ON          DK0011.HAISO_NO         = DK0021.HAISO_NO ")
			.append("    WHERE ")
			.append("        KK0081.SVC_KEI_NO   = ? ")									//ＫＥＹ＿サービス契約番号
			.append("    AND KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ( ")
			.append("        SELECT  MAX(KK0081G.RSV_APLY_YMD || KK0081G.GENE_ADD_DTM) ")
			.append("        FROM    KK_T_SVC_KEI    KK0081G ")
			.append("        WHERE   KK0081G.SVC_KEI_NO      = KK0081.SVC_KEI_NO ")
			.append("        AND     KK0081G.RSV_APLY_YMD   <= ? ")						//運用日
			.append("        AND     KK0081.RSV_APLY_CD      = '2' ")
			.append("        AND     KK0081.MK_FLG           = '0') ")
			.append("    AND KK0241.KAISEN_UCWK_USE_STAYMD  <= ? ")						//運用日
			.append("    AND KK0241.KAISEN_UCWK_USE_ENDYMD  >= ? ")						//運用日
			.append("    AND KK0241.MK_FLG = '0' ")
			.append("    AND (KK0341.KKTK_SVC_KEI_NO, KK0341.KIKI_CHG_NO, KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM) IN  ( ")
			.append("        SELECT KK0341G.KKTK_SVC_KEI_NO, KK0341G.KIKI_CHG_NO, MAX(KK0341G.RSV_APLY_YMD || KK0341G.GENE_ADD_DTM) ")
			.append("        FROM KK_T_KKTK_SVC_KEI  KK0341G ")
			.append("        WHERE ")
			.append("            KK0341G.SVC_KEI_KAISEN_UCWK_NO  = KK0341.SVC_KEI_KAISEN_UCWK_NO ")
			.append("        AND KK0341.OYA_KEI_SKBT_CD          = '02' ")
			.append("        AND KK0341G.RSV_APLY_CD             IN ('1', '2') ")
			.append("        AND KK0341G.MK_FLG                  = '0' ")
			.append("        GROUP BY ")
			.append("        KK0341G.KKTK_SVC_KEI_NO, ")
			.append("        KK0341G.KIKI_CHG_NO) ")
			.append("    AND ((KK0081.SVC_CD IN ('01', '02') and KK0341.KKTK_SVC_CD <> 'C013') OR (KK0081.SVC_CD = '03' and KK0341.KKTK_SVC_CD = 'C013')) ")
			.append(sbHaisoStat)														//ＫＥＹ＿配送ステータス
			// 20131024 OM-2013-0002486 DEL START
			// .append("    AND DK0011.SHUKKA_TAIKI_FLG = '0' ")
			// 20131024 OM-2013-0002486 DEL END
			.append("    AND DK0011.MK_FLG           = '0' ");
			
			//サービス契約番号→サービス契約内訳番号からの結合による検索ブロック
			StringBuilder sbFromWhere03 = new StringBuilder();
			sbFromWhere03
			.append("    FROM    KK_T_SVC_KEI        KK0081 ")
			.append("    JOIN    KK_T_SVC_KEI_UCWK   KK0161 ")
			.append("    ON          KK0161.SVC_KEI_NO       = KK0081.SVC_KEI_NO ")
			.append("    JOIN    KK_T_KKTK_SVC_KEI   KK0341 ")
			.append("    ON          KK0341.SVC_KEI_UCWK_NO  = KK0161.SVC_KEI_UCWK_NO ")
			.append("    AND         KK0341.OYA_KEI_SKBT_CD  = '03' ")
			.append("    JOIN    DK_T_HAISO_TG_BPIN  DK0021 ")
			.append("    ON          DK0021.KKTK_SVC_KEI_NO  = KK0341.KKTK_SVC_KEI_NO ")
			.append("    AND     DK0021.KIKI_CHG_NO          = KK0341.KIKI_CHG_NO ")
			.append("    JOIN    DK_T_HAISO          DK0011 ")
			.append("    ON          DK0011.HAISO_NO         = DK0021.HAISO_NO ")
			.append("    WHERE ")
			.append("        KK0081.SVC_KEI_NO   = ? ")									//ＫＥＹ＿サービス契約番号
			.append("    AND KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ( ")
			.append("        SELECT  MAX(KK0081G.RSV_APLY_YMD || KK0081G.GENE_ADD_DTM) ")
			.append("        FROM    KK_T_SVC_KEI    KK0081G ")
			.append("        WHERE   KK0081G.SVC_KEI_NO      = KK0081.SVC_KEI_NO ")
			.append("        AND     KK0081G.RSV_APLY_YMD   <= ? ")						//運用日
			.append("        AND     KK0081.RSV_APLY_CD      = '2' ")
			.append("        AND     KK0081.MK_FLG           = '0') ")
			.append("    AND (KK0161.SVC_KEI_UCWK_NO, KK0161.RSV_APLY_YMD || KK0161.GENE_ADD_DTM) IN ( ")
			.append("        SELECT  KK0161G.SVC_KEI_UCWK_NO, MAX(KK0161G.RSV_APLY_YMD || KK0161G.GENE_ADD_DTM) ")
			.append("        FROM    KK_T_SVC_KEI_UCWK   KK0161G ")
			.append("        WHERE   KK0161G.SVC_KEI_NO      = KK0161.SVC_KEI_NO ")
			.append("        AND     KK0161G.RSV_APLY_YMD   <= ? ")						//運用日
			.append("        AND     KK0161G.RSV_APLY_CD     = '2' ")
			.append("        AND     KK0161G.MK_FLG          = '0' ")
			.append("        GROUP BY ")
			.append("        KK0161G.SVC_KEI_UCWK_NO) ")
			.append("    AND (KK0341.KKTK_SVC_KEI_NO, KK0341.KIKI_CHG_NO, KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM) IN  ( ")
			.append("        SELECT KK0341G.KKTK_SVC_KEI_NO, KK0341G.KIKI_CHG_NO, MAX(KK0341G.RSV_APLY_YMD || KK0341G.GENE_ADD_DTM) ")
			.append("        FROM KK_T_KKTK_SVC_KEI  KK0341G ")
			.append("        WHERE ")
			.append("            KK0341G.SVC_KEI_UCWK_NO  = KK0341.SVC_KEI_UCWK_NO ")
			.append("        AND KK0341.OYA_KEI_SKBT_CD   = '03' ")
			.append("        AND KK0341G.RSV_APLY_CD      IN ('1', '2') ")
			.append("        AND KK0341G.MK_FLG           = '0' ")
			.append("        GROUP BY ")
			.append("        KK0341G.KKTK_SVC_KEI_NO, ")
			.append("        KK0341G.KIKI_CHG_NO) ")
			.append(sbHaisoStat)														//ＫＥＹ＿配送ステータス
			// 20131024 OM-2013-0002486 DEL START
			// .append("    AND DK0011.SHUKKA_TAIKI_FLG = '0' ")
			// 20131024 OM-2013-0002486 DEL END
			.append("    AND DK0011.MK_FLG           = '0' ");

			//全体の組み立て
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff
			.append(sbColumns).append(sbFromWhere01)
			.append("UNION ALL ")
			.append(sbColumns).append(sbFromWhere02)
			.append("UNION ALL ")
			.append(sbColumns).append(sbFromWhere03);
//↑↑↑2013-02-28追加　ロット２ST3-2013-0000477（性能改善リトライ）↑↑↑

			// 運用日付
			String sOpeDate = JKKModelCommon.getOpeDate(inMsg);

			// ----- 対象データ取得 -----
//↓↓↓2013-02-28削除　ロット２ST3-2013-0000477（性能改善リトライ）↓↓↓
//			// ソートを追加
//			sql_Buff.append(sql_sort);
//↑↑↑2013-02-28削除　ロット２ST3-2013-0000477（性能改善リトライ）↑↑↑

			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);
			
			int index = 0;
			
//↓↓↓2013-02-28変更　ロット２ST3-2013-0000477（性能改善リトライ）↓↓↓
			String svcKeiNo = inMsg.getString(EDK0011B080CBSMsg.KEY_SVC_KEI_NO);
			
			//検索パラメータ
			String[][] inParams = {
					{svcKeiNo,	sOpeDate,	null,		null},
					{svcKeiNo,	sOpeDate,	sOpeDate,	sOpeDate},
					{svcKeiNo,	sOpeDate,	sOpeDate,	null}
			};
			
			for (int i = 0; i < 3; i++)
			{
				//サービス契約番号と運用日
				for (int j = 0; j < 4; j++)
				{
					if (null != inParams[i][j])
					{
						index ++;
						CAANJDBCUtil.setParam(pstmt, index, inParams[i][j]);
					}
				}
				
				// パラメータの設定(ＫＥＹ＿配送ステータスを指定)
				if (inMsg.getObject(EDK0011B080CBSMsg.KEY_HAISO_STAT) != null)
				{
					for (int j = 0; j < sHaisoStat.length; j++)
					{
						index ++;
						CAANJDBCUtil.setParam(pstmt, index, sHaisoStat[j]);
					}
				}
			}
//*************************************************************************
//	//１	// パラメータの設定(運用日付を指定)
//			for (int i = 1; i <= 3; i++)
//			{
//				index++;
//				CAANJDBCUtil.setParam(pstmt, index, sOpeDate);
//			}
//			
//			// パラメータの設定(ＫＥＹ＿サービス契約番号を指定)
////			if (!inMsg.isNull(EDK0011B080CBSMsg.KEY_SVC_KEI_NO))
//			{
//				index++;
//				CAANJDBCUtil.setParam(pstmt, index, inMsg.getObject(EDK0011B080CBSMsg.KEY_SVC_KEI_NO));
//			}
//
//	//２	// パラメータの設定(運用日付を指定)
//			for (int i = 1; i <= 3; i++)
//			{
//				index++;
//				CAANJDBCUtil.setParam(pstmt, index, sOpeDate);
//			}
//
//			// パラメータの設定(ＫＥＹ＿サービス契約番号を指定)
////			if (inMsg.getObject(EDK0011B080CBSMsg.KEY_SVC_KEI_NO) != null)
//			{
//				index++;
//				CAANJDBCUtil.setParam(pstmt, index, inMsg.getObject(EDK0011B080CBSMsg.KEY_SVC_KEI_NO));
//			}
//			
//			//３	// パラメータの設定(運用日付を指定)
//			for (int i = 1; i <= 3; i++)
//			{
//				index++;
//				CAANJDBCUtil.setParam(pstmt, index, sOpeDate);
//			}
//
//			// パラメータの設定(ＫＥＹ＿サービス契約番号を指定)
////			if (inMsg.getObject(EDK0011B080CBSMsg.KEY_SVC_KEI_NO) != null)
//			{
//				index++;
//				CAANJDBCUtil.setParam(pstmt, index, inMsg.getObject(EDK0011B080CBSMsg.KEY_SVC_KEI_NO));
//			}
//			
////↓↓↓2012-11-08無効　ロット２IT1-2012-0001924（不要な結合）↓↓↓
////	//４	// パラメータの設定(運用日付を指定)
////			for (int i = 1; i <= 3; i++)
////			{
////				index++;
////				CAANJDBCUtil.setParam(pstmt, index, sOpeDate);
////			}
////↑↑↑2012-11-08無効　ロット２IT1-2012-0001924（不要な結合）↑↑↑
//			
//			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
//			if ( JPCModelConstant.FUNC_CD_1.equals( inMsg.getString(EDK0011B080CBSMsg.FUNC_CODE) ) ) {
//				// パラメータの設定(ＫＥＹ＿サービス契約番号を指定)
////				if (inMsg.getObject(EDK0011B080CBSMsg.KEY_SVC_KEI_NO) != null)
//				{
//					index++;
//					CAANJDBCUtil.setParam(pstmt, index, inMsg.getObject(EDK0011B080CBSMsg.KEY_SVC_KEI_NO));
//				}
//				
//				CAANJDBCUtil.setParam(pstmt, (++ index), inMsg.getObject(EDK0011B080CBSMsg.KEY_SVC_KEI_NO));
//				
//				// パラメータの設定(ＫＥＹ＿配送ステータスを指定)
//				if (inMsg.getObject(EDK0011B080CBSMsg.KEY_HAISO_STAT) != null)
//				{
//					for (int i = 0; i < sHaisoStat.length; i++)
//					{
//						CAANJDBCUtil.setParam(pstmt, (++ index), sHaisoStat[i]);
//					}
//				}
//			}
//↑↑↑2013-02-28変更　ロット２ST3-2013-0000477（性能改善リトライ）↑↑↑
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// EDK0011B080CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  EDK0011B080CBSMsg1List.HAISO_NO
					, EDK0011B080CBSMsg1List.HAISO_TAIBPIN_NO
					, EDK0011B080CBSMsg1List.HAISO_STAT
					, EDK0011B080CBSMsg1List.HAISO_UK_YMD
					, EDK0011B080CBSMsg1List.KOJI_COMP_CD
					, EDK0011B080CBSMsg1List.IDOMOTO_KRIPLACE_SKCD
					, EDK0011B080CBSMsg1List.HAISO_MOTO_SOKO_CD
					, EDK0011B080CBSMsg1List.IDOMOTO_KOCOMP_CD
					, EDK0011B080CBSMsg1List.IDOMOTO_YTKSKOF_CD
					, EDK0011B080CBSMsg1List.KOJIAK_NO
					, EDK0011B080CBSMsg1List.KKTK_SVC_KEI_NO
					, EDK0011B080CBSMsg1List.TAKNKIKI_MODEL_CD
					, EDK0011B080CBSMsg1List.HUZOKUHIN_MODEL_CD
					, EDK0011B080CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD
					, EDK0011B080CBSMsg1List.CNT
					, EDK0011B080CBSMsg1List.SVC_KEI_NO
					, EDK0011B080CBSMsg1List.SYSID
					, EDK0011B080CBSMsg1List.PRC_GRP_CD
					, EDK0011B080CBSMsg1List.PCRS_CD
					, EDK0011B080CBSMsg1List.SVC_KEI_STAT
					, EDK0011B080CBSMsg1List.KIKI_CHG_NO
			};
			
			// 明細に処理結果(ResultSet)をマッピング
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery,msgKeyList1,"eo.ejb.cbs.cbsmsg.EDK0011B080CBSMsg1List",0);
			// inMsg(CBSMsg)に明細をセット
			inMsg.set(EDK0011B080CBSMsg.EDK0011B080CBSMSG1LIST, outMsg1);
			

		} catch(SQLException e) {
			inMsg.set(EDK0011B080CBSMsg.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(EDK0011B080CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
}
