/*******************************************************************************
 *	 All Rights reserved,Copyright (c) K-Opticom 
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JSYejbECR0041B020TPDA
 *	ソースファイル名：JSYejbECR0041B020TPDA.java
 *	作成者			：EK909278
 *	日付			：2012年05月29日
 *＜機能概要＞
 *	資料送付一覧照会テンプレートDBアクセス部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ1.00.00   2011/06/28	富士通		新規作成
 *	ｖ1.00.01   2012/02/10	富士通		あいまい検索対応（eoID、整理番号による検索機能の追加）
 *	ｖ6.00.00   2013/09/10	FJ)伊藤		OM-2013-0000852 性能改善（ページング対応）
 *	ｖ13.00.00 2015/03/23   FJ) 大山    IT1-2015-0000032 性能対応
 *	ｖ29.00.00	2017/01/24	FJ）笠川	ANK-2972-00-00 (客B)資料送付一覧のソート
 *
 ********************************************************************************/

package eo.ejb.cbs.sqlf;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

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.JCRStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JCRUtilCommon;
import eo.ejb.cbm.entity.CR0011ETMsg;
import eo.ejb.cbs.cbsmsg.ECR0041B020CBSMsg;
import eo.ejb.cbs.cbsmsg.ECR0041B020CBSMsg1List;
import eo.ejb.common.JCCModelCommon;
import eo.ejb.common.JZMModelCommon;

/**
*
*  テンプレートDBアクセス部品　ECR0041B020_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbECR0041B020TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
		
	/**
	 * コンストラクタ
	 */
	public JSYejbECR0041B020TPDA()	{
	}
	
	/**
	*   ECR0041B020_SQLF<br>
	*   @param inMsg    入力値の格納されたCBSMsg <br>
	*   @return void
	*/
	public void invoke(CAANMsg inMsg,AgentDispatchContext inContext){
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント（件数取得用）
		PreparedStatement pstmtCount = null;
		
		// リザルトセット（件数取得用）
		ResultSet rsltQueryCount = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/***************************************************** 
		 * サービスインターフェイス共通部の必須チェック
		 *****************************************************/
		
		// 表示件数、表示ページ番号が未設定の場合
		// 例外をスローする
		if (inMsg.isNull(ECR0041B020CBSMsg.DISPLAY_NUM)
			  || inMsg.isNull(ECR0041B020CBSMsg.DISPLAY_PAGE_NUM))
		{
			throw new IllegalArgumentException("サービスインターフェイス共通部の表示件数、表示ページ番号は必須項目です。");
		}
		
		/******************** 
		 * SQL文の作成
		 ********************/

		try{
			
			
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CR0011ETMsg.getTableName());

			// SQL編集処理呼び出し
			HashMap<String, Object> editMap = editSQL(inMsg);

			//パラメータ設定リスト
			List<Object> replaceList = (List<Object>)editMap.get("REPLACELIST");

			// 編集後SQL
			StringBuffer edit_sql_Buff = (StringBuffer)editMap.get("SQL_BUFF");

			// 総検索件数の取得
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("      COUNT(*) AS CNT ")
					.append(" FROM ")
					.append("     (")
					.append(edit_sql_Buff)
					.append("     ) TBL ");

			//prepareStatementにSQL文をセット
			pstmtCount = con1.prepareStatement(sql_Buff.toString());
			
			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			for (int idx = 0; idx < replaceList.size(); idx++ )
			{
				CAANJDBCUtil.setParam(pstmtCount, idx + 1, replaceList.get(idx));
			}

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// ResultSetの取得
			rsltQueryCount = pstmtCount.executeQuery();

			// ECR0041B020CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					ECR0041B020CBSMsg.TOTAL_SEARCH_NUM
			};

			rsltQueryCount.next();
			mapMessage(rsltQueryCount, msgKeyList1, inMsg);

			// 総ページ数設定
			int iTotal = Integer.parseInt(inMsg.getString(ECR0041B020CBSMsg.TOTAL_SEARCH_NUM));
			int iDispNum = Integer.parseInt(inMsg.getString(ECR0041B020CBSMsg.DISPLAY_NUM));
			int iSearchDivDisp =  iTotal / iDispNum;
			int iRest =  iTotal % iDispNum;

			// 割り切れない場合は総ページ数を増やす
			if (0 != iRest)
			{
				iSearchDivDisp++;
			}
			inMsg.set(ECR0041B020CBSMsg.TOTAL_PAGE_NUM, Integer.toString(iSearchDivDisp));

			// 検索件数が0件の場合、エラーフラグに"1"を設定して処理終了
			if (0 == (Integer.parseInt(inMsg.getString(ECR0041B020CBSMsg.TOTAL_SEARCH_NUM))))
			{
				inMsg.set(ECR0041B020CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_ZERO);
				return;
			}

			// 表示ページに該当するデータがない場合、エラーフラグに"3"を設定して処理終了
			int iDispPageNum = Integer.parseInt(inMsg.getString(ECR0041B020CBSMsg.DISPLAY_PAGE_NUM));
			if (iSearchDivDisp < iDispPageNum)
			{
				inMsg.set(ECR0041B020CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_NODATA);
				return;
			}

			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(edit_sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), edit_sql_Buff);

			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			for (int idx = 0; idx < replaceList.size(); idx++ )
			{
				CAANJDBCUtil.setParam(pstmt, idx + 1, replaceList.get(idx));
			}

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// ECR0041B020CBSMsgの明細にセットする項目
			String[] msgKeyList2 = {
					  ECR0041B020CBSMsg1List.ATICLE_BUNRUI_CD_NM
					, ECR0041B020CBSMsg1List.ATICLE_NM
					, ECR0041B020CBSMsg1List.TAIO_KIROK_NO
					, ECR0041B020CBSMsg1List.SOHUS_NM
					, ECR0041B020CBSMsg1List.SIRYOSOFU_KIROK_SAKSEI_YMD
					, ECR0041B020CBSMsg1List.ATICLE_SOHU_KIROK_STAT
					, ECR0041B020CBSMsg1List.ATICLE_SOHU_KIROK_STAT_NM
					, ECR0041B020CBSMsg1List.ATICLE_SOHU_NO
					, ECR0041B020CBSMsg1List.ATICLE_SOHU_KIROK_NO
					, ECR0041B020CBSMsg1List.UPD_DTM
					, ECR0041B020CBSMsg1List.EOID
					, ECR0041B020CBSMsg1List.EOID_STATS
			};

			// 明細に処理結果(ResultSet)をマッピング
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery,msgKeyList2,"eo.ejb.cbs.cbsmsg.ECR0041B020CBSMsg1List",0);
			// inMsg(CBSMsg)に明細をセット
			inMsg.set("ECR0041B020CBSMsg1List", outMsg1);

		} catch(SQLException e) {
			inMsg.set(ECR0041B020CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} finally {
			// 資源の解放
			try{
				if(rsltQueryCount != null){
					rsltQueryCount.close();
				}
				if(pstmtCount != null){
					pstmtCount.close();
				}
				if(rsltQuery != null){
					rsltQuery.close();
				}
				if(pstmt != null){
					pstmt.close();
				}
				if(con1 != null){
					closeConnection(con1);
				}
			}catch(SQLException e){
				inMsg.set(ECR0041B020CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	*   渡されたKEY情報を元にSQLを編集する。<br>
	*   @param inMsg    入力値の格納されたCBSMsg <br>
	*   @return 編集後のSQL
	*/
	public HashMap<String, Object> editSQL(CAANMsg inMsg)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		//パラメータ設定リスト
		List<Object> replaceList = new ArrayList<Object>();

		//運用日付
		String opeDate = JCCModelCommon.getOpeDate(inMsg, null);

		StringBuffer sql_Buff = new StringBuffer();
		sql_Buff.append(" SELECT ")
				.append("     (SELECT CD01.CD_DIV_NM ")
				.append("      FROM   ZM_M_CD_NM_KANRI CD01 ")
				.append("      WHERE  ATCL.ATICLE_BUNRUI_CD = CD01.CD_DIV ")
				.append("      AND 'CD00360' = CD01.CD_SBT_CD ")
				.append("      AND SUBSTR(ATCL.UPD_DTM,1,8) >= CD01.CD_TSTAYMD ")
				.append("      AND SUBSTR(ATCL.UPD_DTM,1,8) <= CD01.CD_TENDYMD ")
				.append("      AND  CD01.MK_FLG = '0' ")
				.append("     ) AS BUNRUI_NM, ")
				.append("     ATCL.ATICLE_NM, ")
				.append("     SOHU.TAIO_KIROK_NO, ")
				.append("     SOHU.SOHUS_NM, ")
				.append("     AKRK.ATICLE_SOHU_KRK_SAKSEI_YMD, ")
				.append("     AKRK.ATICLE_SOHU_KIROK_STAT, ")
				.append("     (SELECT CD02.CD_DIV_NM      FROM ZM_M_CD_NM_KANRI CD02 ")
				.append("      WHERE  AKRK.ATICLE_SOHU_KIROK_STAT = CD02.CD_DIV ")
				.append("      AND 'CD00219' = CD02.CD_SBT_CD ")
				.append("      AND SUBSTR(AKRK.UPD_DTM,1,8) >= CD02.CD_TSTAYMD ")
				.append("      AND SUBSTR(AKRK.UPD_DTM,1,8) <= CD02.CD_TENDYMD ")
				.append("      AND  CD02.MK_FLG = '0' ")
				.append("     ) AS KIROK_STAT_NM, ")
				.append("     SOHU.ATICLE_SOHU_NO, ")
				.append("     AKRK.ATICLE_SOHU_KIROK_NO, ")
				.append("     AKRK.UPD_DTM, ")
				.append("     SUB_CUST.EOID, ")
				.append("         (SELECT CD03.CD_DIV_NM      FROM ZM_M_CD_NM_KANRI CD03 ")
				.append("      WHERE  AGNG.AGING_STAT = CD03.CD_DIV ")
				.append("      AND 'CD00063' = CD03.CD_SBT_CD ")
				.append("      AND SUBSTR(AGNG.UPD_DTM,1,8) >= CD03.CD_TSTAYMD ")
				.append("      AND SUBSTR(AGNG.UPD_DTM,1,8) <= CD03.CD_TENDYMD ")
				.append("      AND  CD03.MK_FLG = '0' ")
				.append("     ) AS AGING_STAT_NM, ")
					// 2017/01/24 ANK-2972-00-00 MOD START
//				.append("     ROWNUM AS ROW_NUM ")
				.append("     ROWNUM AS ROW_NUM, ")
				.append("      CASE  WHEN  ATICLE_SOHU_SBT_CD ='1'  THEN  '2' ")
				.append("      WHEN  ATICLE_SOHU_SBT_CD ='2'  THEN  '1' ")
				.append("      ELSE  ATICLE_SOHU_SBT_CD  END  AS  SOFU_SBT_CD , ")
				.append("      SOHUS_STATE_NM || SOHUS_CITY_NM || SOHUS_OAZTSU_NM || SOHUS_AZCHO_NM || ")
				.append("      SOHUS_BNCHIGO || SOHUS_ADRTTM || SOHUS_ADRRM AS SOHUS_ADDRESS  ")
					// 2017/01/24 ANK-2972-00-00 MOD END
				.append(" FROM ")
				.append("   CR_T_ATICLE_SOHU SOHU   ")
				.append(" LEFT JOIN CR_T_ATICLE_SOHU_KRK AKRK ")
				.append("   ON SOHU.ATICLE_SOHU_NO = AKRK.ATICLE_SOHU_NO ")
				.append(" LEFT JOIN CR_M_ATICLE ATCL ")
				.append("   ON AKRK.ATICLE_NO = ATCL.ATICLE_NO ")
				.append(" LEFT JOIN CR_T_TAIO_KIROK TKRK ")
				.append("   ON AKRK.TAIO_KIROK_NO = TKRK.TAIO_KIROK_NO ")
				.append(" LEFT OUTER JOIN ( ")
				.append("      SELECT ")
				.append("           SVC_KEI_NO ")
				.append("         , SYSID ")
				.append("         , SEIRI_NO ")
				.append("         , PRC_GRP_CD ")
				.append("      FROM ")
				.append("           KK_T_SVC_KEI SVC1 ")
				.append("      WHERE ")
				.append("           (SVC1.SVC_KEI_NO,SVC1.RSV_APLY_YMD || SVC1.GENE_ADD_DTM) =  ")
				.append("           ( ")
				.append("                SELECT ")
				.append("                     SVC2.SVC_KEI_NO, ")
				.append("                     MAX(SVC2.RSV_APLY_YMD || SVC2.GENE_ADD_DTM) ")
				.append("                FROM ")
				.append("                     KK_T_SVC_KEI SVC2 ")
				.append("                WHERE ")
				.append("                     SVC2.SVC_KEI_NO = SVC1.SVC_KEI_NO ")
				.append("                 AND SVC2.RSV_APLY_YMD <= ? ")
				.append("                 AND SVC2.RSV_APLY_CD = '2' ")
				.append("                 AND SVC2.MK_FLG = '0' ")
				.append("                GROUP BY ")
				.append("                     SVC2.SVC_KEI_NO ")
				.append("           ) ")
				.append("       AND SVC1.MK_FLG = '0' ")
				.append("      ) SUB_SVC ")
				.append("   ON SUB_SVC.SVC_KEI_NO = TKRK.SVC_KEI_NO ")
				.append(" LEFT OUTER JOIN ( ")
				.append("      SELECT ")
				.append("           SYSID ")
				.append("         , EOID ")
				.append("         , KEISHA_TYPE_CD ")
				.append("      FROM ")
				.append("           CK_T_CUST CUST1 ")
				.append("      WHERE ")
				.append("           (CUST1.SYSID,CUST1.RSV_APLY_YMD || CUST1.GENE_ADD_DTM) =  ")
				.append("           ( ")
				.append("                SELECT ")
				.append("                     CUST2.SYSID, ")
				.append("                     MAX(CUST2.RSV_APLY_YMD || CUST2.GENE_ADD_DTM) ")
				.append("                FROM ")
				.append("                     CK_T_CUST CUST2 ")
				.append("                WHERE ")
				.append("                     CUST2.SYSID = CUST1.SYSID ")
				.append("                 AND CUST2.RSV_APLY_YMD <= ? ")
				.append("                 AND CUST2.RSV_APLY_CD = '2' ")
				.append("                 AND CUST2.MK_FLG = '0' ")
				.append("                GROUP BY ")
				.append("                     CUST2.SYSID ")
				.append("           ) ")
				.append("       AND CUST1.MK_FLG = '0' ")
				.append("      ) SUB_CUST ")
				.append("   ON SUB_CUST.SYSID = SUB_SVC.SYSID ")
				.append(" LEFT OUTER JOIN ZM_T_AGING AGNG ")
				.append("   ON AGNG.AGING_TG_VALUE = SUB_CUST.EOID ")
				.append("  AND AGNG.AGING_SBT_CD = '004' ")
				.append("  AND AGNG.MK_FLG = '0' ");

		replaceList.add(opeDate);
		replaceList.add(opeDate);

		// SQL文_個別部1
		if ( JPCModelConstant.FUNC_CD_1.equals( inMsg.getObject(ECR0041B020CBSMsg.FUNC_CODE).toString() ) ) {
				sql_Buff.append(" WHERE ")
						.append("     SOHU.TAIO_KIROK_NO      = AKRK.TAIO_KIROK_NO ")
					.append(" AND SOHU.ATICLE_SOHU_NO     = AKRK.ATICLE_SOHU_NO ")
					.append(" AND AKRK.ATICLE_NO          = ATCL.ATICLE_NO ")
					.append(" AND SOHU.TAIO_KIROK_NO      = TKRK.TAIO_KIROK_NO ")
					.append(" AND ( ")
					.append("      SUB_CUST.KEISHA_TYPE_CD IS NULL ")
					.append("      OR ")
					.append("      SUB_CUST.KEISHA_TYPE_CD <> '5' ")
					.append("     ) ")
					.append(" AND (")
					.append("      SUB_SVC.PRC_GRP_CD      IS NULL ")
					.append("      OR ")
					.append("      SUB_SVC.PRC_GRP_CD      <> '99' ")
					.append("     ) ");
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_TAIO_KIROK_NO)))
			{
				sql_Buff.append(" AND AKRK.TAIO_KIROK_NO = ? ");
				replaceList.add(inMsg.getObject(ECR0041B020CBSMsg.KEY_TAIO_KIROK_NO));
			}
				if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SVC_KEI_NO)))
				{
				sql_Buff.append(" AND TKRK.SVC_KEI_NO = ? ");
				replaceList.add(inMsg.getObject(ECR0041B020CBSMsg.KEY_SVC_KEI_NO));
				}
				if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_TOIAWASE_WAY_SBT_CD)))
				{
					sql_Buff.append(" AND TKRK.TOIAWASE_UK_SBT_CD = ? ");
					replaceList.add(inMsg.getObject(ECR0041B020CBSMsg.KEY_TOIAWASE_WAY_SBT_CD));
				}
				if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_ATICLE_BUNRUI_CD)))
				{
				sql_Buff.append(" AND ATCL.ATICLE_BUNRUI_CD   = ? ");
				replaceList.add(inMsg.getObject(ECR0041B020CBSMsg.KEY_ATICLE_BUNRUI_CD));
				}
				if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_ATICLE_NM)))
				{
					sql_Buff.append(" AND ATCL.ATICLE_NM          LIKE ? || '%' ")
							.append(JZMModelCommon.ESCAPE_SQL_STRING);
					replaceList.add(JZMModelCommon.replaceLikeValue(inMsg.getObject(ECR0041B020CBSMsg.KEY_ATICLE_NM)));
				}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SOHUS_NM_KANA)))
			{
				sql_Buff.append(" AND SOHU.SOHUS_KANA_NM      LIKE ? || '%' ")
						.append(JZMModelCommon.ESCAPE_SQL_STRING);
				replaceList.add(JZMModelCommon.replaceLikeValue(inMsg.getObject(ECR0041B020CBSMsg.KEY_SOHUS_NM_KANA)));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SOHUS_NM)))
			{
				sql_Buff.append(" AND SOHU.SOHUS_NM           LIKE ? || '%' ")
						.append(JZMModelCommon.ESCAPE_SQL_STRING);
				replaceList.add(JZMModelCommon.replaceLikeValue(inMsg.getObject(ECR0041B020CBSMsg.KEY_SOHUS_NM)));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SOHUS_PCD)))
			{
				sql_Buff.append(" AND SOHU.SOHUS_PCD          = ? ");
				replaceList.add(inMsg.getObject(ECR0041B020CBSMsg.KEY_SOHUS_PCD));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SOHUS_STATE)))
			{
				sql_Buff.append(" AND SOHU.SOHUS_STATE_NM     = ? ");
				replaceList.add(inMsg.getObject(ECR0041B020CBSMsg.KEY_SOHUS_STATE));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SOHUS_CITY)))
			{
				sql_Buff.append(" AND SOHU.SOHUS_CITY_NM      LIKE ? || '%' ")
						.append(JZMModelCommon.ESCAPE_SQL_STRING);
				replaceList.add(JZMModelCommon.replaceLikeValue(inMsg.getObject(ECR0041B020CBSMsg.KEY_SOHUS_CITY)));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SOHUS_OAZTSU_MEI)))
			{
				sql_Buff.append(" AND SOHU.SOHUS_OAZTSU_NM    LIKE ? || '%'  ")
						.append(JZMModelCommon.ESCAPE_SQL_STRING);
				replaceList.add(JZMModelCommon.replaceLikeValue(inMsg.getObject(ECR0041B020CBSMsg.KEY_SOHUS_OAZTSU_MEI)));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SOHUS_AZCHO_MEI)))
			{
				sql_Buff.append(" AND SOHU.SOHUS_AZCHO_NM     LIKE ? || '%' ")
						.append(JZMModelCommon.ESCAPE_SQL_STRING);
				replaceList.add(JZMModelCommon.replaceLikeValue(inMsg.getObject(ECR0041B020CBSMsg.KEY_SOHUS_AZCHO_MEI)));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SOHUS_BNCHIGO)))
			{
				sql_Buff.append(" AND SOHU.SOHUS_BNCHIGO      LIKE ? || '%' ")
						.append(JZMModelCommon.ESCAPE_SQL_STRING);
				replaceList.add(JZMModelCommon.replaceLikeValue(inMsg.getObject(ECR0041B020CBSMsg.KEY_SOHUS_BNCHIGO)));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SOHUS_ADRTTM)))
			{
				sql_Buff.append(" AND SOHU.SOHUS_ADRTTM       LIKE ? || '%' ")
						.append(JZMModelCommon.ESCAPE_SQL_STRING);
				replaceList.add(JZMModelCommon.replaceLikeValue(inMsg.getObject(ECR0041B020CBSMsg.KEY_SOHUS_ADRTTM)));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SOHUS_ADRRM)))
			{
				sql_Buff.append(" AND SOHU.SOHUS_ADRRM        LIKE ? || '%' ")
						.append(JZMModelCommon.ESCAPE_SQL_STRING);
				replaceList.add(JZMModelCommon.replaceLikeValue(inMsg.getObject(ECR0041B020CBSMsg.KEY_SOHUS_ADRRM)));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SOHU_KRK_SAKSEI_FROM)))
			{
				sql_Buff.append(" AND AKRK.ATICLE_SOHU_KRK_SAKSEI_YMD >= ? ");
				replaceList.add(inMsg.getObject(ECR0041B020CBSMsg.KEY_SOHU_KRK_SAKSEI_FROM));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SOHU_KRK_SAKSEI_TO)))
			{
				sql_Buff.append(" AND AKRK.ATICLE_SOHU_KRK_SAKSEI_YMD <= ? ");
				replaceList.add(inMsg.getObject(ECR0041B020CBSMsg.KEY_SOHU_KRK_SAKSEI_TO));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_ATICLE_SOHU_KIROK_STAT)))
			{
				sql_Buff.append(" AND AKRK.ATICLE_SOHU_KIROK_STAT = ? ");
				replaceList.add(inMsg.getObject(ECR0041B020CBSMsg.KEY_ATICLE_SOHU_KIROK_STAT));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_LABEL_OUTPUT_FROM)))
			{
				sql_Buff.append(" AND AKRK.LABEL_OUTPUT_YMDHM >= ? ");
				replaceList.add(inMsg.getObject(ECR0041B020CBSMsg.KEY_LABEL_OUTPUT_FROM));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_LABEL_OUTPUT_TO)))
			{
				sql_Buff.append(" AND AKRK.LABEL_OUTPUT_YMDHM <= ? ");
				replaceList.add(inMsg.getObject(ECR0041B020CBSMsg.KEY_LABEL_OUTPUT_TO));
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SIRYOSOFU_GRP_NO)))
			{
				sql_Buff.append(" AND ATCL.SIRYOSOFU_GRP_NO = ? ");
				replaceList.add(inMsg.getObject(ECR0041B020CBSMsg.KEY_SIRYOSOFU_GRP_NO));
			}
			if (!JCRUtilCommon.isNull(inMsg.getObject(ECR0041B020CBSMsg.KEY_EOID)))
			{
				sql_Buff.append(" AND ( ");
				// ＫＥＹ＿ｅｏＩＤ取得
				String keyEoId = String.valueOf(inMsg.getObject(ECR0041B020CBSMsg.KEY_EOID));

				String[] keyEoIdList = keyEoId.split(JCRStrConst.FUZZY_SEARCH_KUGIRI);

				// ＫＥＹ＿ｅｏＩＤよりｅｏＩＤの条件生成
				for(int i = 0; i < keyEoIdList.length ; i++)
				{
					if (i != 0)
					{
						sql_Buff.append(" OR ");
					}
					sql_Buff.append(" SUB_CUST.EOID = ? ");
					replaceList.add(keyEoIdList[i]);
				}

				sql_Buff.append(" ) ");
			}
			if (!(inMsg.isNull(ECR0041B020CBSMsg.KEY_SEIRI_NO)))
			{
				sql_Buff.append(" AND SUB_SVC.SEIRI_NO = ? ");
				replaceList.add(inMsg.getObject(ECR0041B020CBSMsg.KEY_SEIRI_NO));
			}
			sql_Buff.append(" AND AKRK.MK_FLG             = '0' ")
					.append(" AND ATCL.ATICLE_OPUT_SBT_CD = '1' ")
					// 2017/01/24 ANK-2972-00-00 MOD START
//					.append(" ORDER BY SOHU.TAIO_KIROK_NO ASC, ")
//					.append("          SOHU.ATICLE_SOHU_NO ASC, ")
//					.append("          AKRK.ATICLE_SOHU_KIROK_NO ASC ");
					.append(" ORDER BY SOFU_SBT_CD ASC, ")
					.append("          SUB_CUST.EOID ASC, ")
					.append("          SOHUS_ADDRESS ASC, ")
					.append("          ATCL.ATICLE_NM ASC ");
					// 2017/01/24 ANK-2972-00-00 MOD END
		}

		parentMap.put("SQL_BUFF", sql_Buff);
		parentMap.put("REPLACELIST", replaceList);

		return parentMap;
	}
}
