/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbEDK0011B060TPDA
*	ソースファイル名：JSYejbEDK0011B060TPDA.java
*	作成者			：EK909134
*	日付			：2011年10月31日
*＜機能概要＞
*	SQLFacility
*	在庫出荷機器引当一覧照会テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00
*   v3.00.00    2012/04/09　 下原       ANK-0316-00-00
*	v7.00.00	2013/11/07   山口	    ANK-1578-00-00(多機能ルータ対応)
*	v7.00.01	2014/02/06   塚田	    SQL変更(最終更新年月日取得条件変更) OM-2014-0000560対応
*   v8.00.00    2014/05/02  FJ)窪田     OM-2014-0001719
*	v29.00.00	2017/02/10   FJ）鈴木	【OM-2017-0000213】在庫出荷完了一覧照会画面_選択ボタンの性能改善
*   v57.00.00   2022/03/14   FK)三原    【OM-2022-0000252】在庫出荷完了一覧照会の画面遷移が遅い
********************************************************************************/

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.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EDK0011B060CBSMsg;
import eo.ejb.cbs.cbsmsg.EDK0011B060CBSMsg1List;
import eo.ejb.cbm.entity.DK0021ETMsg;
import eo.ejb.common.JDKModelCommon;
import eo.ejb.common.JDKModelCommon.COMMA;
import static eo.ejb.common.JDKModelCommon.*;
import static eo.common.util.JDKCommonUtil.*;
import static eo.common.constant.JZM0171Constant.*;


/**
*
*  テンプレートDBアクセス部品　EDK0011B060_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbEDK0011B060TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
	/**
	 * コンストラクタ
	 */
	public JSYejbEDK0011B060TPDA()	{
	}
	
	/**
	*   EDK0011B060_SQLF<br>
	*   @param inMsg    入力値の格納されたCBSMsg <br>
	*   @return void
	*/
	public void invoke(CAANMsg inMsg,AgentDispatchContext inContext){
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmtForCount = null;
		PreparedStatement pstmtForFetch = null;
		
		// リザルトセット
		ResultSet rsltQueryForCount = null;
		ResultSet rsltQueryForFetch = null;
		
		/* ++++++++++ ｖ1.00.00 追加開始 ++++++++++ */
		/***************************************************** 
		 * サービスインターフェイス共通部の必須チェック
		 *****************************************************/
		
		// 最大検索件数、表示件数が未設定の場合
		// 例外をスローする
		if (inMsg.isNull(EDK0011B060CBSMsg.MAX_SEARCH_NUM)
				|| inMsg.isNull(EDK0011B060CBSMsg.DISPLAY_NUM))
		{
			throw new IllegalArgumentException("サービスインターフェイス共通部の最大検索件数、表示件数は必須項目です。");
		}
		/* ++++++++++ ｖ1.00.00 追加終了 ++++++++++ */
		
		/******************** 
		 * SQL文の作成
		 ********************/

		try{
			
			//コネクション取得
			con1 = JSYejbConnection.getConnection(DK0021ETMsg.getTableName());

			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT  ")
					.append("     DK.SHELF_CD AS COL_SHELF_CD , ")
					.append("     DK.SHELF_NM AS COL_SHELF_NM , ")
					.append("     DK.TAKNKIKI_MODEL_CD AS COL_TAKNKIKI_MODEL_CD , ")
					.append("     DK.HUZOKUHIN_MODEL_CD AS COL_HUZOKUHIN_MODEL_CD , ")
					.append("     DK.TAKNKIKI_MODEL_NM AS COL_TAKNKIKI_MODEL_NM , ")
					.append("     DK.KIKI_SEIZO_NO AS COL_KIKI_SEIZO_NO , ")
					.append("     DK.TAKNKIKI_SETHIN_MODEL_CD AS COL_TAKNKIKI_SETHIN_MODEL_CD , ")
					.append("     DK.TAKNKIKI_SETHIN_NO AS COL_TAKNKIKI_SETHIN_NO , ")
					.append("     DK.TCASE_NO AS COL_TCASE_NO , ")
					.append("     DK.CNT AS COL_CNT , ")
					.append("     DK.OUTPUT_KYOKA AS COL_OUTPUT_KYOKA , ")
					.append("     DK.HAISO_NO AS COL_HAISO_NO , ")
					.append("     DK.HAISO_TAIBPIN_NO AS COL_HAISO_TAIBPIN_NO , ")
					.append("     DK.SVC_KEI_NO AS COL_SVC_KEI_NO , ")
					.append("     DK.KKTK_SVC_KEI_NO AS COL_KKTK_SVC_KEI_NO , ")
					.append("     DK.TAKNKIKI_SBT_CD AS COL_TAKNKIKI_SBT_CD , ")
					.append("     DK.KKTK_SBT_CD AS COL_KKTK_SBT_CD , ")
					.append("     DK.ADD_OPTNTY_KEI_IDO_DIV AS COL_ADD_OPTNTY_KEI_IDO_DIV , ")
					.append("     DK.ADD_OPTNTY_KEI_IDO_DTM AS COL_ADD_OPTNTY_KEI_IDO_DTM , ")
					.append("     DK.HOJIN_SVC_KEI_UK_NOPARTS AS COL_HOJIN_SVC_KEI_UK_NOPARTS , ")
					.append("     DK.HJIN_EO_YKAE_SVKEI_NO AS COL_HJIN_EO_YKAE_SVKEI_NO , ")
					.append("     DK.UPD_DTM_DK0011 AS COL_UPD_DTM_DK0011 , ")
					.append("     DK.UPD_DTM_DK0021 AS COL_UPD_DTM_DK0021 , ")
					.append("     CASE DK.OYA_KEI_SKBT_CD ")
					.append("     WHEN '02' THEN ")
					.append("         ( SELECT MAX(KK2111.LAST_UPD_DTM) ")
					.append("           FROM KK_T_SVKEI_EXC_CTRL KK2111 ")
					.append("           INNER JOIN KK_T_KAISEN_TG_SVKEI KK0241 ")
					.append("             ON KK2111.SVC_KEI_NO = KK0241.SVC_KEI_NO ")
					.append("             AND KK0241.MK_FLG = '0'  ")
					.append("           WHERE KK0241.SVC_KEI_KAISEN_UCWK_NO = DK.SVC_KEI_KAISEN_UCWK_NO) ")
					.append("     ELSE ")
					.append("         ( SELECT KK2111.LAST_UPD_DTM ")
					.append("           FROM KK_T_SVKEI_EXC_CTRL KK2111  ")
					.append("           WHERE KK2111.SVC_KEI_NO = DK.SVC_KEI_NO  ")
					.append("           AND   KK2111.MK_FLG = '0')  ")
					.append("     END AS COL_LAST_UPD_DTM_KK2111, ")
					.append("     DK.TSUSHIN_KIKI_SET_CD AS COL_TSUSHIN_KIKI_SET_CD , ")
					.append("     DK.HOSHO_STAYMD AS COL_HOSHO_STAYMD , ")
					.append("     DK.IDO_DIV AS COL_IDO_DIV , ")
					.append("     DK.SVC_STA_YMD AS COL_SVC_STA_YMD , ")
					.append("     DK.SVC_CHRG_STAYMD AS COL_SVC_CHRG_STAYMD , ")
					.append("     DK.SVC_ENDYMD AS COL_SVC_ENDYMD , ")
					.append("     DK.SVC_CHRG_ENDYMD AS COL_SVC_CHRG_ENDYMD , ")
					.append("     DK.KOJI_COMP_CD AS COL_KOJI_COMP_CD , ")
					.append("     DK.GENE_ADD_DTM AS COL_GENE_ADD_DTM , ")
					.append("     DK.KIKI_CHG_NO AS COL_KIKI_CHG_NO , ")
					.append("     DK.SEIZO_NO_UM AS COL_SEIZO_NO_UM , ")
					.append("     DK.MAC_INF_UM AS COL_MAC_INF_UM , ")
					.append("     DK.KIKI_STC_SAKI_PLACE_NO AS COL_PLACE_NO , ")
					.append("     DK.MSKM_DTL_NO AS COL_MSKM_DTL_NO , ")
					.append("     DK.IDOMOTO_KRIPLACE_SKCD AS COL_IDOMOTO_KRIPLACE_SKCD , ")
					.append("     DK.KKTK_SVC_KEI_STAT AS COL_KKTK_SVC_KEI_STAT , ");
					
					// サービス契約回線内訳番号が設定されていない場合
					if (inMsg.isNull(EDK0011B060CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO))
					{
						sql_Buff.append("     '' AS COL_PRC_GRP_CD , ")
								.append("     '' AS COL_SVC_CD , ");
					}
					else
					{
						sql_Buff.append("     KK0081.PRC_GRP_CD AS COL_PRC_GRP_CD , ")
								.append("     KK0081.SVC_CD AS COL_SVC_CD , ");
					}
			sql_Buff.append("     DK.OYA_KEI_SKBT_CD AS COL_OYA_KEI_SKBT_CD ")
					.append(" FROM ( ")
					.append("            SELECT ")
					.append("               CASE DK0011.IDOMOTO_KRIPLACE_SKCD  ")
					.append("                WHEN '1' THEN DK0021.HAISO_MOTO_SKDN_CD ")
					.append("                WHEN '2' THEN DK0021.IDOMOTO_KOCOMP_SLF_CD ")
					.append("                WHEN '3' THEN DK0021.IDOMOTO_YTKSKOF_SLF_CD ")
					.append("                END  AS SHELF_CD , ")
					.append(                cd(CD00544, 
														"DECODE(DK0011.IDOMOTO_KRIPLACE_SKCD , '1' , DK0021.HAISO_MOTO_SKDN_CD , "
																+ " '2', DK0021.IDOMOTO_KOCOMP_SLF_CD , "
																+ " '3', DK0021.IDOMOTO_YTKSKOF_SLF_CD , "
																+ " DK0021.HAISO_MOTO_SKDN_CD)",
														COMMA.RIGHT, true, "SHELF_NM"))
					.append("               NVL(DK0021.TAKNKIKI_MODEL_CD,DK0021.HUZOKUHIN_MODEL_CD) AS TAKNKIKI_MODEL_CD, ")
					.append("               DK0021.HUZOKUHIN_MODEL_CD , ")
					.append("               ZM0411.TAKNKIKI_MODEL_NM , ")
					.append("               DK0021.KIKI_SEIZO_NO AS KIKI_SEIZO_NO , ")
					.append("               DK0021.TAKNKIKI_SETHIN_MODEL_CD AS TAKNKIKI_SETHIN_MODEL_CD , ")
					.append("               DK0021.TAKNKIKI_SETHIN_NO AS TAKNKIKI_SETHIN_NO , ")
					.append("               DK0021.TCASE_NO AS TCASE_NO , ")
					.append("               1 AS CNT , ")
					.append("               '' AS OUTPUT_KYOKA , ")
					.append("               DK0021.HAISO_NO AS HAISO_NO , ")
					.append("               DK0021.HAISO_TAIBPIN_NO AS HAISO_TAIBPIN_NO , ")
					.append(                svcKeiNoFor("KK0341", "SVC_KEI_NO", "DK0011.HAISO_UK_YMD", COMMA.RIGHT))
					.append("               KK0341.KKTK_SVC_KEI_NO AS KKTK_SVC_KEI_NO , ")
					.append("               DK0021.TAKNKIKI_SBT_CD AS TAKNKIKI_SBT_CD , ")
					.append("               DK0021.KIKI_STC_SAKI_PLACE_NO AS KIKI_STC_SAKI_PLACE_NO , ")
					.append("               KK0341.KKTK_SBT_CD AS KKTK_SBT_CD , ")
					.append("               DK0021.ADD_OPTNTY_KEI_IDO_DIV AS ADD_OPTNTY_KEI_IDO_DIV , ")
					.append("               DK0021.ADD_OPTNTY_KEI_IDO_DTM AS ADD_OPTNTY_KEI_IDO_DTM , ")
					.append("               DK0021.HOJIN_SVC_KEI_UK_NOPARTS AS HOJIN_SVC_KEI_UK_NOPARTS , ")
					.append("               DK0021.HJIN_EO_YKAE_SVKEI_NO AS HJIN_EO_YKAE_SVKEI_NO , ")
					.append("               DK0011.UPD_DTM AS UPD_DTM_DK0011 , ")
					.append("               DK0021.UPD_DTM AS UPD_DTM_DK0021 , ")
					.append("               KK0341.TSUSHIN_KIKI_SET_CD , ")
					.append("               KK0341.HOSHO_STAYMD , ")
					.append("               KK0341.IDO_DIV , ")
					.append("               KK0341.SVC_STA_YMD , ")
					.append("               KK0341.SVC_CHRG_STAYMD , ")
					.append("               KK0341.SVC_ENDYMD , ")
					.append("               KK0341.SVC_CHRG_ENDYMD , ")
					.append("               DK0011.HISOS_KOCOMP_CD AS KOJI_COMP_CD , ")
					.append("               KK0341.GENE_ADD_DTM , ")
					.append("               KK0341.KIKI_CHG_NO , ")
					.append("               ZM0411.SEIZO_NO_UM , ")
					.append("               ZM0411.MAC_INF_UM , ")
					.append("               DK0021.MSKM_DTL_NO , ")
					.append("               DK0011.IDOMOTO_KRIPLACE_SKCD ,  ")
					.append("               KK0341.KKTK_SVC_KEI_STAT ,  ")
					.append("               KK0341.OYA_KEI_SKBT_CD , ")
					.append("               KK0341.SVC_KEI_KAISEN_UCWK_NO ")
					.append("           FROM ");

			// サービス契約回線内訳番号が設定されていない場合
			if (inMsg.isNull(EDK0011B060CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO))
			{
				sql_Buff.append("                 DK_T_HAISO_TG_BPIN DK0021 ")
						.append(           joinKKTKSvc("KK0341", "DK0021", "KKTK_SVC_KEI_NO", "KIKI_CHG_NO", "INNER"))
						.append("           INNER JOIN DK_T_HAISO DK0011 ")
						.append("              ON DK0021.HAISO_NO = DK0011.HAISO_NO ")
						.append("             AND DK0011.HAISO_STAT = '001' ")
						.append("             AND DK0011.HAISO_DIV = '01' ")
						.append("             AND DECODE(DK0011.IDOMOTO_KRIPLACE_SKCD , '1' , DK0011.HAISO_MOTO_SOKO_CD , ")
						.append("               '2', DK0011.IDOMOTO_KOCOMP_CD , ")
						.append("               '3', DK0011.IDOMOTO_YTKSKOF_CD , ")
						.append("               DK0011.HAISO_MOTO_SOKO_CD) = ? ")
						.append("             AND DK0011.MK_FLG = '0' ")
						.append("           INNER JOIN ZM_M_TAKNKIKI_MODEL ZM0411 ")
						.append("              ON ZM0411.TAKNKIKI_MODEL_CD = DK0021.TAKNKIKI_MODEL_CD ")
						.append("             AND ZM0411.MK_FLG = '0' ")
						.append("           WHERE  DK0021.MK_FLG = '0' ")
						.append("           AND    DK0021.HAISO_NO = ? ");
			}
			// サービス契約回線内訳番号が設定されている場合
			else
			{
// 2016/03/16 OM-2017-0000213 MOD START
//				sql_Buff.append("        (SELECT")
				sql_Buff.append("        (SELECT /*+ INDEX(DK0011_SUB DK_T_HAISO_PK_01) */")
// 2016/03/16 OM-2017-0000213 MOD END
						.append("            DK0011_SUB.HAISO_NO")
						.append("        FROM KK_T_KAISEN_TG_SVKEI KK0241_SUB")
						.append(         innerJoinToGen("KK_T_SVC_KEI", "KK0081_TAGET", "KK0241_SUB", "SVC_KEI_NO"))
						.append("            AND KK0081_TAGET.PRC_GRP_CD IN ('02', '03', '04', '05', '06', '10')")
						.append("            AND KK0081_TAGET.SVC_CD IN ('01', '02')")
						.append("        INNER JOIN KK_T_KKTK_SVC_KEI KK0341_SUB")
						.append("            ON KK0341_SUB.SVC_KEI_KAISEN_UCWK_NO = KK0241_SUB.SVC_KEI_KAISEN_UCWK_NO")
						.append("            OR KK0341_SUB.SVC_KEI_NO = KK0081_TAGET.SVC_KEI_NO")
						.append("            AND KK0341_SUB.TAKNKIKI_SBT_CD <> 'E0'")
						.append("            AND KK0341_SUB.MK_FLG = '0'")
						.append("        INNER JOIN DK_T_HAISO_TG_BPIN DK0021_SUB")
						.append("            ON DK0021_SUB.KKTK_SVC_KEI_NO = KK0341_SUB.KKTK_SVC_KEI_NO")
						.append("            AND DK0021_SUB.KIKI_CHG_NO = KK0341_SUB.KIKI_CHG_NO")
						.append("            AND DK0021_SUB.MK_FLG = '0'")
						.append("        INNER JOIN DK_T_HAISO DK0011_SUB")
						.append("            ON DK0011_SUB.HAISO_NO = DK0021_SUB.HAISO_NO")
						.append("            AND DK0011_SUB.HAISO_STAT = '001'")
						.append("            AND DK0011_SUB.HAISO_DIV = '01'")
						.append("            AND DECODE(DK0011_SUB.IDOMOTO_KRIPLACE_SKCD,")
						.append("                '1', DK0011_SUB.HAISO_MOTO_SOKO_CD,")
						.append("                '2', DK0011_SUB.IDOMOTO_KOCOMP_CD,")
						.append("                '3', DK0011_SUB.IDOMOTO_YTKSKOF_CD,")
						.append("                DK0011_SUB.HAISO_MOTO_SOKO_CD) = ?")
						.append("            AND DK0011_SUB.MK_FLG = '0'")
						.append("        WHERE KK0241_SUB.SVC_KEI_KAISEN_UCWK_NO = ?")
						.append("            AND ((KK0241_SUB.KAISEN_UCWK_USE_STAYMD <> KK0241_SUB.KAISEN_UCWK_USE_ENDYMD")
						.append("                    AND DK0011_SUB.HAISO_UK_YMD BETWEEN KK0241_SUB.KAISEN_UCWK_USE_STAYMD AND KK0241_SUB.KAISEN_UCWK_USE_ENDYMD)")
						.append("                OR (KK0241_SUB.KAISEN_UCWK_USE_STAYMD = '20991231' AND KK0241_SUB.KAISEN_UCWK_USE_ENDYMD = '20991231'))")
						.append("            AND KK0241_SUB.MK_FLG = '0'")
						.append("        GROUP BY DK0011_SUB.HAISO_NO) DK0011_TARGET")
						.append("    INNER JOIN DK_T_HAISO_TG_BPIN DK0021")
						.append("        ON DK0021.HAISO_NO = DK0011_TARGET.HAISO_NO");
			// 工事案件番号が設定されていない場合
			if (inMsg.isNull(EDK0011B060CBSMsg.KEY_KOJIAK_NO))
			{
				sql_Buff.append("        AND DK0021.KOJIAK_NO IS NULL");
			}
			// 工事案件番号が設定されている場合
			else
			{
				sql_Buff.append("        AND DK0021.KOJIAK_NO = ?");
			}
				sql_Buff.append("        AND DK0021.MK_FLG = '0'")
						.append(     joinKKTKSvc("KK0341", "DK0021", "KKTK_SVC_KEI_NO", "KIKI_CHG_NO", "INNER"))
						.append("    INNER JOIN DK_T_HAISO DK0011")
						.append("        ON DK0011.HAISO_NO = DK0021.HAISO_NO")
						.append("        AND DK0011.MK_FLG = '0'")
						.append("    INNER JOIN ZM_M_TAKNKIKI_MODEL ZM0411")
						.append("        ON ZM0411.TAKNKIKI_MODEL_CD = DK0021.TAKNKIKI_MODEL_CD")
						.append("        AND ZM0411.MK_FLG = '0'");
			}

			sql_Buff.append("    ) DK");
			
			// サービス契約回線内訳番号が設定されている場合
			if (!inMsg.isNull(EDK0011B060CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO))
			{
				sql_Buff.append( innerJoinToGen("KK_T_SVC_KEI", "KK0081", "DK", "SVC_KEI_NO"))
				.append( "    AND KK0081.SVC_CD IN ('01', '02')");
			}
			sql_Buff.append(" ORDER BY COL_OYA_KEI_SKBT_CD DESC,")
					.append("    COL_SHELF_CD ASC,")
					.append("    COL_TAKNKIKI_MODEL_CD ASC");

			// prepareStatementにSQL文をセット
			// OM-2022-0000252 MOD START
			//pstmtForCount = con1.prepareStatement(makeSqlForCount(sql_Buff.toString()));
			pstmtForCount = con1.prepareStatement(makeSqlForCountNoParallel(sql_Buff.toString()));
			// OM-2022-0000252 MOD END

			// ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			int index = 1;

			// サービス契約回線内訳番号が設定されていない場合
			if (inMsg.isNull(EDK0011B060CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO))
			{
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_SOKO_CD,  index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_HAISO_NO, index, inMsg, pstmtForCount);
			}
			// サービス契約回線内訳が設定されている場合
			else
			{
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_SOKO_CD,  index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO,  index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_KOJIAK_NO,  index, inMsg, pstmtForCount);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForCount);
			}

			// ResultSetの取得
			rsltQueryForCount = pstmtForCount.executeQuery();

			// EDK0111B022CBSMsgの明細にセットする項目
			String[] msgKeyList0 = {
				EDK0011B060CBSMsg.TOTAL_SEARCH_NUM
			};

			rsltQueryForCount.next();
			mapMessage(rsltQueryForCount, msgKeyList0, inMsg);

			// 機能コードが１の場合
			int iStartNum = 0;
			int iEndNum = 0;
			// 総ページ数設定
			int iTotal = Integer.parseInt(inMsg.getString(EDK0011B060CBSMsg.TOTAL_SEARCH_NUM));
			int iDispNum = Integer.parseInt(inMsg.getString(EDK0011B060CBSMsg.DISPLAY_NUM));
			int iSearchDivDisp =  iTotal / iDispNum;
			int iRest =  iTotal % iDispNum;
			// 割り切れない場合は総ページ数を増やす
			if (0 != iRest)
			{
				iSearchDivDisp = iSearchDivDisp + 1;
			}
			inMsg.set(EDK0011B060CBSMsg.TOTAL_PAGE_NUM, Integer.toString(iSearchDivDisp));

			// 検索件数が0件の場合、エラーフラグに"1"を設定して処理終了
			if (0 == (Integer.parseInt(inMsg.getString(EDK0011B060CBSMsg.TOTAL_SEARCH_NUM))))
			{
				inMsg.set(EDK0011B060CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_ZERO);
				return;
			}
			// 検索件数が最大検索件数を超えた場合、エラーフラグに"2"を設定して処理終了
			if (Integer.parseInt(inMsg.getString(EDK0011B060CBSMsg.MAX_SEARCH_NUM)) < iTotal)
			{
				inMsg.set(EDK0011B060CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_OVERMAX);
			}
			
			// 表示ページに該当するデータがない場合、エラーフラグに"3"を設定して処理終了
			int iDispPageNum = Integer.parseInt(inMsg.getString(EDK0011B060CBSMsg.DISPLAY_PAGE_NUM));
			iStartNum = iDispNum * (iDispPageNum - 1) + 1;
			iEndNum = iDispNum * iDispPageNum;
			if (iSearchDivDisp < iDispPageNum)
			{
				inMsg.set(EDK0011B060CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_NODATA);
				return;
			}
			
			
			pstmtForFetch = con1.prepareStatement(makeSqlForRealm(sql_Buff.toString(), "COL", "CNT"));
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			index = 1;

			// サービス契約回線内訳番号が設定されていない場合
			if (inMsg.isNull(EDK0011B060CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO))
			{
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_SOKO_CD,  index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_HAISO_NO, index, inMsg, pstmtForFetch);
			}
			// サービス契約回線内訳が設定されている場合
			else
			{
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_SOKO_CD,  index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO,  index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_KOJIAK_NO,  index, inMsg, pstmtForFetch);
				index = appendParamIfAnyInput(EDK0011B060CBSMsg.KEY_UNYO_YMD, index, inMsg, pstmtForFetch);
			}

			CAANJDBCUtil.setParam(pstmtForFetch, index++, iStartNum);
			CAANJDBCUtil.setParam(pstmtForFetch, index++, iEndNum);
			
			rsltQueryForFetch = pstmtForFetch.executeQuery();
			String[] msgKeyList1 = {
					  EDK0011B060CBSMsg1List.SHELF_CD
					, EDK0011B060CBSMsg1List.SHELF_NM
					, EDK0011B060CBSMsg1List.TAKNKIKI_MODEL_CD
					, EDK0011B060CBSMsg1List.HUZOKUHIN_MODEL_CD
					, EDK0011B060CBSMsg1List.TAKNKIKI_MODEL_NM
					, EDK0011B060CBSMsg1List.KIKI_SEIZO_NO
					, EDK0011B060CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD
					, EDK0011B060CBSMsg1List.TAKNKIKI_SETHIN_NO
					, EDK0011B060CBSMsg1List.TCASE_NO
					, EDK0011B060CBSMsg1List.CNT
					, EDK0011B060CBSMsg1List.OUTPUT_KYOKA
					, EDK0011B060CBSMsg1List.HAISO_NM
					, EDK0011B060CBSMsg1List.HAISO_TAIBPIN_NO
					, EDK0011B060CBSMsg1List.SVC_KEI_NO
					, EDK0011B060CBSMsg1List.KKTK_SVC_KEI_NO
					, EDK0011B060CBSMsg1List.TAKNKIKI_SBT_CD
					, EDK0011B060CBSMsg1List.KKTK_SBT_CD
					, EDK0011B060CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV
					, EDK0011B060CBSMsg1List.ADD_OPTNTY_KEI_IDO_DTM
					, EDK0011B060CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS
					, EDK0011B060CBSMsg1List.HJIN_EO_YKAE_SVKEI_NO
					, EDK0011B060CBSMsg1List.HAISO_UPD_DTM
					, EDK0011B060CBSMsg1List.HAISO_TAIBPIN_UPD_DTM
					, EDK0011B060CBSMsg1List.KKTK_SVC_KEI_UPD_DTM
					, EDK0011B060CBSMsg1List.TSUSHIN_KIKI_SET_CD
					, EDK0011B060CBSMsg1List.HOSHO_STAYMD
					, EDK0011B060CBSMsg1List.IDO_DIV
					, EDK0011B060CBSMsg1List.SVC_STA_YMD
					, EDK0011B060CBSMsg1List.SVC_CHRG_STAYMD
					, EDK0011B060CBSMsg1List.SVC_ENDYMD
					, EDK0011B060CBSMsg1List.SVC_CHRG_ENDYMD
					, EDK0011B060CBSMsg1List.KOJI_COMP_CD
					, EDK0011B060CBSMsg1List.GENE_ADD_DTM
					, EDK0011B060CBSMsg1List.KIKI_CHG_NO
					, EDK0011B060CBSMsg1List.SEIZO_NO_UM
					, EDK0011B060CBSMsg1List.MAC_INF_UM
					, EDK0011B060CBSMsg1List.PLACE_NO
					, EDK0011B060CBSMsg1List.MSKM_DTL_NO
					, EDK0011B060CBSMsg1List.IDOMOTO_KRIPLACE_SKCD
					, EDK0011B060CBSMsg1List.KKTK_SVC_KEI_STAT
					, EDK0011B060CBSMsg1List.PRC_GRP_CD
					, EDK0011B060CBSMsg1List.SVC_CD
					, EDK0011B060CBSMsg1List.OYA_KEI_SKBT_CD
			};
			
			CAANMsg[] outMsg1 = mapMessageList(rsltQueryForFetch,msgKeyList1,"eo.ejb.cbs.cbsmsg.EDK0011B060CBSMsg1List",0);
			inMsg.set("EDK0011B060CBSMsg1List", outMsg1);
		} catch(SQLException e) {
			inMsg.set(EDK0011B060CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} finally {
			// 資源の解放
			try{
				SQLException e = JDKModelCommon.close(pstmtForCount, pstmtForFetch, rsltQueryForCount, rsltQueryForFetch);
				if(con1 != null){
					closeConnection(con1);
				}
				if (e != null)
				{
					throw e;
				}
			}catch(SQLException e){
				inMsg.set(EDK0011B060CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
}

