/*******************************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbEDK0011B020TPDA
*	ソースファイル名：JSYejbEDK0011B020TPDA.java
*	作成者			：EK908580
*	日付			：2011年06月10日
*＜機能概要＞
*	SQLFacility
*	配送情報一覧照会テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ1.00.00
*	ｖ7.00.00	2013/11/18	FJ）山口		ANK-1578-00-00(多機能ルータ対応)
*	ｖ13.00.00	2015/04/16	FJ）黒田		ANK-2492-00-00(出荷指図情報作成画面での修理交換機器対応)
*	ｖ14.00.00	2015/05/15	FJ）阪口		ANK-2492-01-00(出荷指図情報作成画面での修理交換機器対応)
*
********************************************************************************/

package eo.ejb.cbs.sqlf;

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.JDKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbm.entity.DK0011ETMsg;
import eo.ejb.cbs.cbsmsg.EDK0011B020CBSMsg;
import eo.ejb.cbs.cbsmsg.EDK0011B020CBSMsg1List;
import eo.ejb.common.JDKModelCommon;
import eo.ejb.common.JDKModelCommon.COMMA;
import static eo.ejb.common.JDKModelCommon.*;
import static eo.common.constant.JZM0171Constant.*;

import static eo.common.util.JDKCommonUtil.*;

/**
*
*  テンプレートDBアクセス部品　EDK0011B020_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbEDK0011B020TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
	
	/**
	 * コンストラクタ
	 */
	public JSYejbEDK0011B020TPDA()	{
	}
	
	/**
	*   EDK0011B020_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;
		
		/******************** 
		 * SQL文の作成
		 ********************/

		try{
			
			//コネクション取得
			con1 = JSYejbConnection.getConnection(DK0011ETMsg.getTableName());

			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT")
					.append(" TBL1.HAISO_NO,")
					.append(" TBL1.HAISO_TAIBPIN_NO,")
					.append(" TBL1.HAISO_UK_YMD,")
					.append(" TBL1.KOJI_COMP_CD,")
					.append(" TBL1.HISOS_NM,")
					.append(" TBL1.SOKO_CD,")
					.append(" TBL1.SHELF_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(" 1 AS CNT,")
					.append(" TBL1.SVC_KEI_NO,")
					.append(" KK0081.SYSID,")
					.append(" KK0081.PRC_GRP_CD,")
					.append(" (SELECT")
					.append("    KK0781.PRC_GRP_NM")
					.append(" FROM KK_M_PRC_GRP KK0781")
					.append(" WHERE KK0081.PRC_GRP_CD = KK0781.PRC_GRP_CD")
					.append("    AND KK0781.RSV_APLY_YMD || KK0781.GENE_ADD_DTM = (SELECT MAX(KK0781_GENE.RSV_APLY_YMD || KK0781_GENE.GENE_ADD_DTM) AS KK0781_MAX")
					.append("                                                      FROM   KK_M_PRC_GRP KK0781_GENE")
					.append("                                                      WHERE  KK0781_GENE.PRC_GRP_CD = KK0781.PRC_GRP_CD")
					.append("                                                        AND  KK0781_GENE.RSV_APLY_YMD <= ?")
					.append("                                                        AND  KK0781_GENE.MK_FLG= '0')")
					.append(" ) PRC_GRP_NM,")
					.append(" TBL1.PCRS_CD,")
					.append(" (SELECT")
					.append("    KK0791.PCRS_NM")
					.append(" FROM KK_M_PCRS KK0791")
					.append(" WHERE TBL1.PCRS_CD = KK0791.PCRS_CD")
					.append("    AND KK0791.RSV_APLY_YMD || KK0791.GENE_ADD_DTM = (SELECT MAX(KK0791_GENE.RSV_APLY_YMD || KK0791_GENE.GENE_ADD_DTM) AS KK0791_MAX")
					.append("                                                      FROM   KK_M_PCRS KK0791_GENE")
					.append("                                                      WHERE  KK0791_GENE.PCRS_CD = KK0791.PCRS_CD")
					.append("                                                        AND  KK0791_GENE.RSV_APLY_YMD <= ?")
					.append("                                                        AND  KK0791_GENE.MK_FLG= '0')")
					.append(" ) PCRS_CD_NM,")
// ANK-2492-01-00 MOD START
//					.append(" TBL1.TAKNKIKI_MODEL_NM,")
					.append(" NVL(TBL1.TAKNKIKI_MODEL_NM, TBL1.TAKNKIKI_SBT_NM) AS TAKNKIKI_MODEL_NM,")
// ANK-2492-01-00 MOD END
					.append(" '' AS HUZOKUHIN_MODEL_NM,")
					.append(" TBL1.TAKNKIKI_SETHIN_MODEL_NM,")
					.append(" KK0081.SVC_KEI_STAT,")
					.append(  cd(CD00037, "KK0081.SVC_KEI_STAT", COMMA.RIGHT, "SVC_KEI_STAT_NM"))
					.append(" CH0231.TOKUSOKU_STAT,")
					.append(  cd(CD00184, "CH0231.TOKUSOKU_STAT", COMMA.RIGHT, "TOKUSOKU_STAT_NM"))
					.append(" TBL1.TAKNKIKI_SBT_CD,")
					.append(" TBL1.TAKNKIKI_IDO_CD,")
					.append(" TBL1.IDOMOTO_KRIPLACE_SKCD,")
					.append(" DK0521.HAISO_SJI_TRN_STAT_SKCD,")
					.append(" NVL2(DK0521.HAISO_SJI_TRN_STAT_SKCD,")
					.append(     cd("CD01495", "DK0521.HAISO_SJI_TRN_STAT_SKCD", COMMA.RIGHT, ""))
					.append("    '未処理') AS HAISO_SJI_TRN_STAT_SKCD_NM")
					.append(" FROM (")
					.append("    SELECT")
					.append("        DK0011.HAISO_NO,")
					.append("        DK0021.HAISO_TAIBPIN_NO,")
					.append("        DK0011.HAISO_UK_YMD,")
					.append("        DK0011.HISOS_KOCOMP_CD AS KOJI_COMP_CD,")
					.append("        DK0011.HISOS_NM,")
					.append("        DK0011.HAISO_MOTO_SOKO_CD AS SOKO_CD,")
					.append("        DK0021.HAISO_MOTO_SKDN_CD AS SHELF_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(         svcKeiNoFor("KK0341", "SVC_KEI_NO", "DK0011.HAISO_UK_YMD", COMMA.RIGHT))
					.append("        DK0021.PCRS_CD,")
					.append(         cdNm("ZM_M_TAKNKIKI_MODEL", "TAKNKIKI_MODEL_NM", "DK0021.TAKNKIKI_MODEL_CD", COMMA.RIGHT))
					.append(         cdNm("DK_M_TKKIKI_SETHNMDL", "TAKNKIKI_SETHIN_MODEL_NM", "DK0021.TAKNKIKI_SETHIN_MODEL_CD", COMMA.RIGHT))
					.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("        DK0021.TAKNKIKI_SBT_CD AS TAKNKIKI_SBT_CD,")
					.append("        KK0341.TAKNKIKI_IDO_CD AS TAKNKIKI_IDO_CD,")
// ANK-2492-01-00 MOD START
//					.append("        DK0011.IDOMOTO_KRIPLACE_SKCD AS IDOMOTO_KRIPLACE_SKCD");
					.append("        DK0011.IDOMOTO_KRIPLACE_SKCD AS IDOMOTO_KRIPLACE_SKCD,")
// ANK-2492-01-00 MOD END
// ANK-2492-01-00 ADD START
					.append(         cd(CD01262, "DK0021.TAKNKIKI_SBT_CD", COMMA.NONE, "TAKNKIKI_SBT_NM"));
// ANK-2492-01-00 ADD END

			if (inMsg.isNull(EDK0011B020CBSMsg.KEY_SVC_KEI_NO))
			{
				sql_Buff.append("    FROM DK_T_HAISO DK0011")
						.append("    INNER JOIN DK_T_HAISO_TG_BPIN DK0021")
						.append("        ON DK0021.HAISO_NO = DK0011.HAISO_NO")
						.append("        AND DK0021.MK_FLG = '0'");
			}
			else
			{
				sql_Buff.append("    FROM (SELECT")
						.append("        DK0021_TARGET.HAISO_NO,")
						.append("        DK0021_TARGET.HAISO_TAIBPIN_NO")
						.append("    FROM KK_T_SVC_KEI KK0081_TAGET")
						.append("    LEFT OUTER JOIN KK_T_KAISEN_TG_SVKEI KK0241_TARGET")
						.append("        ON KK0081_TAGET.SVC_KEI_NO = KK0241_TARGET.SVC_KEI_NO")
						.append("        AND KK0241_TARGET.MK_FLG = '0'")
						.append("    INNER JOIN KK_T_KKTK_SVC_KEI KK0341_TARGET")
						.append("        ON KK0341_TARGET.SVC_KEI_KAISEN_UCWK_NO = KK0241_TARGET.SVC_KEI_KAISEN_UCWK_NO")
						.append("        OR KK0341_TARGET.SVC_KEI_NO = ?")
						.append("        AND KK0341_TARGET.MK_FLG = '0'")
						.append("    INNER JOIN DK_T_HAISO_TG_BPIN DK0021_TARGET")
						.append("        ON DK0021_TARGET.KKTK_SVC_KEI_NO = KK0341_TARGET.KKTK_SVC_KEI_NO")
						.append("        AND DK0021_TARGET.KIKI_CHG_NO = KK0341_TARGET.KIKI_CHG_NO")
						.append("        AND DK0021_TARGET.MK_FLG = '0'")
						.append("    WHERE KK0081_TAGET.SVC_KEI_NO = ?")
						.append("        AND KK0081_TAGET.MK_FLG = '0'")
						.append("    GROUP BY DK0021_TARGET.HAISO_NO,")
						.append("        DK0021_TARGET.HAISO_TAIBPIN_NO) DK0011_TARGET")
						.append("    INNER JOIN DK_T_HAISO DK0011")
						.append("        ON DK0011_TARGET.HAISO_NO = DK0011.HAISO_NO")
						.append("        AND DK0011.HAISO_STAT = '001'")
// ANK-2492-00-00 MOD START
//						.append("        AND DK0011.HAISO_DIV = '00'")
						.append("        AND DK0011.HAISO_DIV IN ('00','02')")
//						.append("        AND DK0011.SHUKKA_TAIKI_FLG = '0'")
// ANK-2492-00-00 MOD END
						.append("        AND DK0011.IDOMOTO_KRIPLACE_SKCD = '1'")
						.append("        AND DK0011.MK_FLG = '0'")
						.append("    INNER JOIN DK_T_HAISO_TG_BPIN DK0021")
						.append("        ON DK0021.HAISO_NO = DK0011_TARGET.HAISO_NO")
						.append("        AND DK0021.HAISO_TAIBPIN_NO = DK0011_TARGET.HAISO_TAIBPIN_NO")
						.append("        AND DK0021.MK_FLG = '0'");
			}

			sql_Buff.append(     joinKKTKSvc("KK0341", "DK0021", "KKTK_SVC_KEI_NO", "KIKI_CHG_NO", "INNER"));

			if (inMsg.isNull(EDK0011B020CBSMsg.KEY_SVC_KEI_NO))
			{
				sql_Buff.append("    WHERE DK0011.HAISO_STAT = '001'")
// ANK-2492-00-00 MOD START
//						.append("        AND DK0011.HAISO_DIV = '00'")
						.append("        AND DK0011.HAISO_DIV IN ('00','02')")
//						.append("        AND DK0011.SHUKKA_TAIKI_FLG = '0'")
// ANK-2492-00-00 MOD END
						.append("        AND DK0011.IDOMOTO_KRIPLACE_SKCD = '1'")
						.append("        AND DK0011.MK_FLG = '0'");
			}

			sql_Buff.append("    ) TBL1")
					.append(  innerJoinToGen("KK_T_SVC_KEI", "KK0081", "TBL1", "SVC_KEI_NO"))
					.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(" INNER JOIN KK_T_SEIKY_KEI KK0491")
					.append("    ON KK0491.SEIKY_KEI_NO = KK0321.SEIKY_KEI_NO")
					.append("    AND KK0491.RSV_APLY_YMD || KK0491.GENE_ADD_DTM = (SELECT MAX(KK_T_SEIKY_KEI_960.RSV_APLY_YMD || KK_T_SEIKY_KEI_960.GENE_ADD_DTM)")
					.append("                                                      FROM   KK_T_SEIKY_KEI KK_T_SEIKY_KEI_960")
					.append("                                                      WHERE  KK_T_SEIKY_KEI_960.SEIKY_KEI_NO = KK0491.SEIKY_KEI_NO")
					.append("                                                        AND  KK_T_SEIKY_KEI_960.RSV_APLY_CD = '2'")
					.append("                                                        AND  KK_T_SEIKY_KEI_960.RSV_APLY_YMD <= ?")
					.append("                                                        AND  KK_T_SEIKY_KEI_960.MK_FLG = '0')")
					.append(" LEFT OUTER JOIN CH_T_TOKUSOKU CH0231")
					.append("    ON CH0231.SEIKY_KEI_NO = KK0491.SEIKY_KEI_NO")
					.append("    AND ? BETWEEN CH0231.TOKUSOKU_STAYMD AND CH0231.TOKUSOKU_ENDYMD")
					.append("    AND CH0231.MK_FLG = '0'")
					.append(" LEFT OUTER JOIN DK_T_HIS_SJI_REQ_DTL DK0531")
					.append("    ON TBL1.HAISO_NO = DK0531.HAISO_NO")
					.append("    AND NOT EXISTS (")
					.append("        SELECT")
					.append("            1")
					.append("        FROM DK_T_HIS_SJI_REQ_DTL DK0531_TARGET")
					.append("        WHERE DK0531.HAISO_NO = DK0531_TARGET.HAISO_NO")
					.append("            AND DK0531.HAISO_SJI_REQ_NO < DK0531_TARGET.HAISO_SJI_REQ_NO")
					.append("            AND DK0531_TARGET.MK_FLG = '0')")
					.append("    AND DK0531.MK_FLG = '0'")
					.append(" LEFT OUTER JOIN DK_T_HIS_SJI_REQ DK0521")
					.append("    ON DK0531.HAISO_SJI_REQ_NO = DK0521.HAISO_SJI_REQ_NO")
					.append("    AND DK0521.MK_FLG = '0'");

			// 出荷指図情報作成画面の処理選択
			if ( inMsg.containsKeyOfMsgData(EDK0011B020CBSMsg.KEY_TRN_CHOICE) )
			{
				if ( JDKStrConst.SHUKKA_INFO_SASHIZU_SAKUSEI.equals(inMsg.getString(EDK0011B020CBSMsg.KEY_TRN_CHOICE)) )
				{
					// 出荷指図情報作成の場合
					sql_Buff.append(" WHERE (DK0521.HAISO_SJI_TRN_STAT_SKCD IS NULL ");
					sql_Buff.append("    OR DK0521.HAISO_SJI_TRN_STAT_SKCD = '");
					sql_Buff.append(         JDKStrConst.HAISO_SJI_STAT_SYRERR + "') ");
				}
				else if ( JDKStrConst.STAT_CHECK.equals(inMsg.getString(EDK0011B020CBSMsg.KEY_TRN_CHOICE)) )
				{
					// 状況確認の場合
					sql_Buff.append(" WHERE DK0521.HAISO_SJI_TRN_STAT_SKCD IN ('");
					sql_Buff.append(     JDKStrConst.HAISO_SJI_STAT_IRAICHU + "', '");
					sql_Buff.append(     JDKStrConst.HAISO_SJI_STAT_SYRCHU + "', '");
					sql_Buff.append(     JDKStrConst.HAISO_SJI_STAT_SYRZM + "', '");
					sql_Buff.append(     JDKStrConst.HAISO_SJI_STAT_SYRERR + "') ");
				}
			}

			appendSqlIfAnyInput(EDK0011B020CBSMsg.KEY_SYSID,      "KK0081.SYSID = ?",      inMsg, sql_Buff);
			appendSqlIfAnyInput(EDK0011B020CBSMsg.KEY_PRC_GRP_CD, "KK0081.PRC_GRP_CD = ?", inMsg, sql_Buff);
			appendSqlIfAnyInput(EDK0011B020CBSMsg.KEY_KOJIAK_NO,  "TBL1.KOJIAK_NO = ?",  inMsg, sql_Buff);

			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 ");
			
			//=================================================================
			// 対象件数を取得するprepareStatementにSQL文をセット
			StringBuffer sql_cnt = new StringBuffer();
			sql_cnt.append(" SELECT COUNT(*) AS CNT ") 
				.append(" FROM ( ")
				.append(sql_Buff)
				.append(" ) A ");
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_cnt);

			pstmtForCount = con1.prepareStatement(sql_cnt.toString());

			int index = 1;
			if (JPCModelConstant.FUNC_CD_1.equals(inMsg.getString(EDK0011B020CBSMsg.FUNC_CODE)))
			{
				if (inMsg.isNull(EDK0011B020CBSMsg.KEY_SVC_KEI_NO))
				{
					// パラメータの設定(ＫＥＹ＿運用日付を指定)
// ANK-2492-01-00 MOD START
//					for (int i = 0; i < 14; i++)
					for (int i = 0; i < 15; i++)
// ANK-2492-01-00 MOD END
					{
						CAANJDBCUtil.setParam(pstmtForCount, index++, inMsg.getObject(EDK0011B020CBSMsg.KEY_UNYO_YMD));
					}
					// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
					index = appendParamIfAnyInput(EDK0011B020CBSMsg.KEY_SYSID, index, inMsg, pstmtForCount);
					index = appendParamIfAnyInput(EDK0011B020CBSMsg.KEY_PRC_GRP_CD, index, inMsg, pstmtForCount);
					index = appendParamIfAnyInput(EDK0011B020CBSMsg.KEY_KOJIAK_NO, index, inMsg, pstmtForCount);
				}
				else
				{
					// パラメータの設定(ＫＥＹ＿運用日付を指定)
// ANK-2492-01-00 MOD START
//					for (int i = 0; i < 10; i++)
					for (int i = 0; i < 11; i++)
// ANK-2492-01-00 MOD END
					{
						CAANJDBCUtil.setParam(pstmtForCount, index++, inMsg.getObject(EDK0011B020CBSMsg.KEY_UNYO_YMD));
					}
					// パラメータの設定(ＫＥＹ＿サービス契約番号を指定)
					CAANJDBCUtil.setParam(pstmtForCount, index++, inMsg.getObject(EDK0011B020CBSMsg.KEY_SVC_KEI_NO));
					CAANJDBCUtil.setParam(pstmtForCount, index++, inMsg.getObject(EDK0011B020CBSMsg.KEY_SVC_KEI_NO));
					// パラメータの設定(ＫＥＹ＿運用日付を指定)
					for (int i = 0; i < 4; i++)
					{
						CAANJDBCUtil.setParam(pstmtForCount, index++, inMsg.getObject(EDK0011B020CBSMsg.KEY_UNYO_YMD));
					}
				}
			}

			// ResultSetの取得
			rsltQueryForCount = pstmtForCount.executeQuery();
			rsltQueryForCount.next();
			int totalSearchNum = rsltQueryForCount.getInt(1);

			//検索結果件数が0件
			if (totalSearchNum == 0)
			{
				inMsg.set("search_err_flg", JPCModelConstant.SEARCH_ERR_FLG_ZERO);
				return;
			}

			// 最大検索件数取得
			int maxSearchNum = 0;
			if (inMsg.getObject(EDK0011B020CBSMsg.MAX_SEARCH_NUM) != null)
			{
				maxSearchNum = Integer.parseInt(inMsg.getObject(EDK0011B020CBSMsg.MAX_SEARCH_NUM).toString());
			}

			//検索結果件数が最大検索件数超え
			if (totalSearchNum > maxSearchNum)
			{
				inMsg.set("search_err_flg", JPCModelConstant.SEARCH_ERR_FLG_OVERMAX);
				return;
			}

			//=================================================================
			// ソートを追加
			sql_Buff.append(sql_sort);

			//prepareStatementにSQL文をセット
			pstmtForFetch = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			index = 1;
			if (JPCModelConstant.FUNC_CD_1.equals(inMsg.getString(EDK0011B020CBSMsg.FUNC_CODE)))
			{
				if (inMsg.isNull(EDK0011B020CBSMsg.KEY_SVC_KEI_NO))
				{
					// パラメータの設定(ＫＥＹ＿運用日付を指定)
// ANK-2492-01-00 MOD START
//					for (int i = 0; i < 14; i++)
					for (int i = 0; i < 15; i++)
// ANK-2492-01-00 MOD END
					{
						CAANJDBCUtil.setParam(pstmtForFetch, index++, inMsg.getObject(EDK0011B020CBSMsg.KEY_UNYO_YMD));
					}
					// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
					index = appendParamIfAnyInput(EDK0011B020CBSMsg.KEY_SYSID, index, inMsg, pstmtForFetch);
					index = appendParamIfAnyInput(EDK0011B020CBSMsg.KEY_PRC_GRP_CD, index, inMsg, pstmtForFetch);
					index = appendParamIfAnyInput(EDK0011B020CBSMsg.KEY_KOJIAK_NO, index, inMsg, pstmtForFetch);
				}
				else
				{
					// パラメータの設定(ＫＥＹ＿運用日付を指定)
// ANK-2492-01-00 MOD START
//					for (int i = 0; i < 10; i++)
					for (int i = 0; i < 11; i++)
// ANK-2492-01-00 MOD END
					{
						CAANJDBCUtil.setParam(pstmtForFetch, index++, inMsg.getObject(EDK0011B020CBSMsg.KEY_UNYO_YMD));
					}
					// パラメータの設定(ＫＥＹ＿サービス契約番号を指定)
					CAANJDBCUtil.setParam(pstmtForFetch, index++, inMsg.getObject(EDK0011B020CBSMsg.KEY_SVC_KEI_NO));
					CAANJDBCUtil.setParam(pstmtForFetch, index++, inMsg.getObject(EDK0011B020CBSMsg.KEY_SVC_KEI_NO));
					// パラメータの設定(ＫＥＹ＿運用日付を指定)
					for (int i = 0; i < 4; i++)
					{
						CAANJDBCUtil.setParam(pstmtForFetch, index++, inMsg.getObject(EDK0011B020CBSMsg.KEY_UNYO_YMD));
					}
				}
			}
			/* ++++++++++ v1.00.01 修正終了 ++++++++++ */
			
			// ResultSetの取得
			rsltQueryForFetch = pstmtForFetch.executeQuery();
			
			// EDK0011B020CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  EDK0011B020CBSMsg1List.HAISO_NO
					, EDK0011B020CBSMsg1List.HAISO_TAIBPIN_NO
					, EDK0011B020CBSMsg1List.HAISO_UK_YMD
					, EDK0011B020CBSMsg1List.KOJI_COMP_CD
					, EDK0011B020CBSMsg1List.HISOS_NM
					, EDK0011B020CBSMsg1List.SOKO_CD
					, EDK0011B020CBSMsg1List.SHELF_CD
					, EDK0011B020CBSMsg1List.KOJIAK_NO
					, EDK0011B020CBSMsg1List.KKTK_SVC_KEI_NO
					, EDK0011B020CBSMsg1List.TAKNKIKI_MODEL_CD
					, EDK0011B020CBSMsg1List.HUZOKUHIN_MODEL_CD
					, EDK0011B020CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD
					, EDK0011B020CBSMsg1List.CNT
					, EDK0011B020CBSMsg1List.SVC_KEI_NO
					, EDK0011B020CBSMsg1List.SYSID
					, EDK0011B020CBSMsg1List.PRC_GRP_CD
					, EDK0011B020CBSMsg1List.PRC_GRP_NM
					, EDK0011B020CBSMsg1List.PCRS_CD
					, EDK0011B020CBSMsg1List.PCRS_NM
					, EDK0011B020CBSMsg1List.TAKNKIKI_MODEL_NM
					, EDK0011B020CBSMsg1List.HUZOKUHIN_MODEL_NM
					, EDK0011B020CBSMsg1List.TAKNKIKI_SETHIN_MODEL_NM
					, EDK0011B020CBSMsg1List.SVC_KEI_STAT
					, EDK0011B020CBSMsg1List.SVC_KEI_STAT_NM
					, EDK0011B020CBSMsg1List.TOKUSOKU_STAT
					, EDK0011B020CBSMsg1List.TOKUSOKU_STAT_NM
					, EDK0011B020CBSMsg1List.TAKNKIKI_SBT_CD
					, EDK0011B020CBSMsg1List.TAKNKIKI_IDO_CD
					, EDK0011B020CBSMsg1List.IDOMOTO_KRIPLACE_SKCD
					, EDK0011B020CBSMsg1List.HAISO_SJI_TRN_STAT_SKCD
					, EDK0011B020CBSMsg1List.HAISO_SJI_TRN_STAT_SKNM
			};
			
			// 明細に処理結果(ResultSet)をマッピング
			CAANMsg[] outMsg1 = mapMessageList(rsltQueryForFetch,msgKeyList1,"eo.ejb.cbs.cbsmsg.EDK0011B020CBSMsg1List",0);
			// inMsg(CBSMsg)に明細をセット
			inMsg.set("EDK0011B020CBSMsg1List", outMsg1);
			

		} catch(SQLException e) {
			inMsg.set(EDK0011B020CBSMsg.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(EDK0011B020CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
}

