/*******************************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbEKK0581B001TPDA
*	ソースファイル名：JSYejbEKK0581B001TPDA.java
*	作成者			：EKek0046
*	日付			：2011年06月23日
*＜機能概要＞
*	SQLFacility
*	テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ1.00.00
*
********************************************************************************/

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.EKK0581B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0581B001CBSMsg1List;
import eo.ejb.cbm.entity.KK0581ETMsg;
import eo.ejb.common.JKKModelCommon;
import eo.ejb.common.JKKejbPagingUtil;
import eo.ejb.common.JZMModelCommon;

/**
*
*  テンプレートDBアクセス部品　EKK0581B001_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbEKK0581B001TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
	
	/** 
	 * ＬＩＫＥ検索用（%）
	 */
	private static final String Percent = "%";
	
	/**
	 * コンストラクタ
	 */
	public JSYejbEKK0581B001TPDA()	{
	}
	
	/**
	*   EKK0581B001_SQLF<br>
	*   @param inMsg    入力値の格納されたCBSMsg <br>
	*   @return void
	*/
	public void invoke(CAANMsg inMsg,AgentDispatchContext inContext){
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt_Count = null;
		PreparedStatement pstmt_Page = null;
		
		// リザルトセット
		ResultSet rsltQuery_Count = null;
		ResultSet rsltQuery_Page = null;
		
		// パラメータのカウント
		int iPCnt = 1;
		int iPPage = 1;
		
		/******************** 
		 * SQL文の作成
		 ********************/

		try{
			
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK0581ETMsg.getTableName());
			
			// SQL文の作成(ページングヘッダ)
			// (1)
			StringBuffer sql_Buff1 = new StringBuffer();
			sql_Buff1.append("SELECT *  ")
					.append("FROM (  ")
					.append("    SELECT ALL_SELECT.*, ROWNUM AS LINE  ")
					.append("    FROM (  ");

			// SQL文の作成(COUNT用)
			// (2)
			StringBuffer sql_Buff2 = new StringBuffer();
			sql_Buff2.append(" SELECT  ")
					.append("     COUNT(*) AS CNT  ");
			
			// SQL文の作成(項目取得)
			// (3)
			StringBuffer sql_Buff3 = new StringBuffer();
					sql_Buff3.append(" SELECT ")
							.append("     KK0581.DMPS_ANKEN_NO ")
							.append("     , KK0581.DMPS_BUKKEN_NM ")
							.append("     , KK0581.DMPS_BUKKEN_KANA ")
							.append("     , KK0581.DMPS_KIINSHA_STATE_NM ")
							.append("     , KK0581.DMPS_KIINSHA_CITY_NM ")
							.append("     , KK0581.DMPS_KIINSHA_OAZTSU_NM ")
							.append("     , KK0581.DMPS_KIINSHA_AZCHO_NM ")
							.append("     , KK0581.DMPS_KIINSHA_AD_BNCHIGO ")
							.append("     , KK0581.DMPS_KIINSHA_ADRTTM ")
							.append("     , KK0581.DMPS_KIINSHA_ADRRM ")
							.append("     , KK0581.DMPS_CTRPLN_CD ")
							.append("     , (SELECT ZM0171_01.CD_DIV_NM ")
							.append("        FROM   ZM_M_CD_NM_KANRI ZM0171_01 ")
							.append("        WHERE  ZM0171_01.CD_SBT_CD = 'CD00606' ")
							.append("        AND    ZM0171_01.CD_DIV = KK0581.DMPS_CTRPLN_CD ")
							.append("        AND    ZM0171_01.MK_FLG = '0') AS DMPS_CTRPLN_CD_NM ")
							.append("     , KK0581.CALLBK_UM ")
							.append("     , (SELECT ZM0171_02.CD_DIV_NM ")
							.append("        FROM   ZM_M_CD_NM_KANRI ZM0171_02 ")
							.append("        WHERE  ZM0171_02.CD_SBT_CD = 'CD00002' ")
							.append("        AND    ZM0171_02.CD_DIV = KK0581.CALLBK_UM ")
							.append("        AND    ZM0171_02.MK_FLG = '0') AS CALLBK_UM_NM ")
							.append("     , KK0581.CTRPLN_WAY_MEMO ")
							.append("     , KK0581.DMPS_ANKEN_AITAI_PPLAN_CD ")
							.append("     , (SELECT KK0591.PPLAN_NM ")
							.append("        FROM KK_M_PPLAN KK0591 ")
							.append("        WHERE KK0591.PCRS_CD = 'A23' ")
							.append("        AND   KK0591.PPLAN_CD = KK0581.DMPS_ANKEN_AITAI_PPLAN_CD ")
							.append("        AND   KK0591.PPLAN_TSTAYMD <= ? ")
							.append("        AND   KK0591.PPLAN_TENDYMD >= ? ")
							.append("        AND   KK0591.MK_FLG = '0') AS DMPS_ANKEN_AITAI_PPLAN_CD_NM ")
							.append("     , KK0581.DMPSANK_SBT_CD ")
							.append("     , (SELECT ZM0171_03.CD_DIV_NM ")
							.append("        FROM   ZM_M_CD_NM_KANRI ZM0171_03 ")
							.append("        WHERE  ZM0171_03.CD_SBT_CD = 'CD00607' ")
							.append("        AND    ZM0171_03.CD_DIV = KK0581.DMPSANK_SBT_CD ")
							.append("        AND    ZM0171_03.MK_FLG = '0') AS DMPSANK_SBT_CD_NM  ")
							.append("     , KK0581.SHK_JUNIN_PAY_PRC_AMNT ");

			// SQL文の作成(WHERE句)
			// (4)
			StringBuffer sql_Buff4 = new StringBuffer();
			if ( "1".equals( inMsg.getObject(EKK0581B001CBSMsg.FUNC_CODE).toString() ) ) {
				
				sql_Buff4.append(" FROM ")
						.append("     KK_T_DMPS_ANKEN KK0581 ")
		 				.append(" WHERE ")
 				
 				// 無効フラグの設定
				.append(" KK0581.MK_FLG = '0' ");
 				
 				// 電波障害案件番号（Ｆｒｏｍ）の設定判定
 				if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_ANKEN_NO_FRM)) {
 					sql_Buff4.append(" AND   KK0581.DMPS_ANKEN_NO >= ?  ");
 				}
 				// 電波障害案件番号（Ｔｏ）の設定判定
 				if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_ANKEN_NO_TO)) {
					sql_Buff4.append("     AND KK0581.DMPS_ANKEN_NO <= ?  ");
 				}
 				// 電波障害物件名の設定判定
 				if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_BUKKEN_NM)) {
					sql_Buff4.append("     AND KK0581.DMPS_BUKKEN_NM LIKE  ? ");
					
					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
				}
 				// 電波障害物件カナ名の設定判定
 				if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_BUKKEN_KANA)) {
					sql_Buff4.append("     AND KK0581.DMPS_BUKKEN_KANA LIKE ? ");

					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// 電波障害起因者郵便番号の設定判定
 				if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_PCD)) {
					sql_Buff4.append("     AND KK0581.DMPS_KIINSHA_PCD = ? ");
 				}
 				// 電波障害起因者住所コードの設定判定
 				if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_AD_CD)) {
					sql_Buff4.append("     AND KK0581.DMPS_KIINSHA_AD_CD = ? ");
 				}
 				// 電波障害起因者都道府県名の設定判定
 				if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_STATE_NM)) {
					sql_Buff4.append("     AND KK0581.DMPS_KIINSHA_STATE_NM = ?  ");
 				}
 				// 電波障害起因者市区町村名の設定判定
 				if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_CITY_NM)) {
					sql_Buff4.append("     AND KK0581.DMPS_KIINSHA_CITY_NM LIKE ? ");

					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// 電波障害起因者大字通称名の設定判定
 				if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_OAZTSU_NM)) {
					sql_Buff4.append("     AND KK0581.DMPS_KIINSHA_OAZTSU_NM LIKE ? ");
 				}
 				// 電波障害起因者字丁目名の設定判定
 				if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_AZCHO_NM)) {
					sql_Buff4.append("     AND KK0581.DMPS_KIINSHA_AZCHO_NM LIKE ? ");

					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// 電波障害起因者住所番地号の設定方法
 				if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_AD_BNCHIGO)) {
					sql_Buff4.append("     AND KK0581.DMPS_KIINSHA_AD_BNCHIGO LIKE ? ");

					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				// 電波障害起因者住所補記・建物名の設定方法
 				if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_ADRTTM)) {
					sql_Buff4.append("     AND KK0581.DMPS_KIINSHA_ADRTTM LIKE ? ");

					//エスケープ付与
					sql_Buff4.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}

			}
			
			// SQL文の作成(ORDER BY句)
			// (5)
			StringBuffer sql_Buff5 = new StringBuffer();
			sql_Buff5.append(" ORDER BY  ")
			        .append("     KK0581.DMPS_ANKEN_NO ASC  ");

			// SQL文の作成(ページングフッタ)
			// (6)
			StringBuffer sql_Buff6 = new StringBuffer();
			sql_Buff6.append("    ) ALL_SELECT  ")
					.append(") PAGE_SELECT  ")
					.append("WHERE PAGE_SELECT.LINE BETWEEN ? AND ?  ")
					.append("ORDER BY PAGE_SELECT.LINE ASC  ");
			
			// SQL文の組立て(件数取得用) (2) + (4)
			StringBuffer sql_Count = new StringBuffer();
			sql_Count.append(sql_Buff2)
					.append(sql_Buff4);
			
			//prepareStatementにSQL文をセット
			pstmt_Count = con1.prepareStatement(sql_Count.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Count);
			
			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			if ( "1".equals( inMsg.getString(EKK0581B001CBSMsg.FUNC_CODE) ) ) {
				// パラメータの設定
				iPCnt = setPram(inMsg, pstmt_Count, iPCnt);
			}
			
			// ResultSetの取得
			rsltQuery_Count = pstmt_Count.executeQuery();
			
			// 総検索件数を取得する
			Long lDataCnt = 0L;
			if (rsltQuery_Count.next())
			{
				lDataCnt = rsltQuery_Count.getLong("CNT");
			}

			// 表示件数
			Long lDispNum = inMsg.getStringAsLong(EKK0581B001CBSMsg.DISPLAY_NUM);

			// 表示ページ数
			Long lDispPage = inMsg.getStringAsLong(EKK0581B001CBSMsg.DISPLAY_PAGE_NUM);

			// 最大取得件数
			Long lMaxNum = inMsg.getStringAsLong(EKK0581B001CBSMsg.MAX_SEARCH_NUM);

			// 総ページ数
			String strMaxPage = JKKejbPagingUtil.calcTotalPage(lDataCnt, lDispNum);

			// 共通部に値を設定する
			inMsg.set(EKK0581B001CBSMsg.TOTAL_SEARCH_NUM, String.valueOf(lDataCnt));   // 総検索件数
			inMsg.set(EKK0581B001CBSMsg.TOTAL_PAGE_NUM, strMaxPage);   // 総ページ数

			// データ取得件数が0件の場合エラー
			if (0 == lDataCnt)
			{
				inMsg.set(EKK0581B001CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_ZERO);
				return;
			}

			// 最大取得件数を超えた場合エラー
			if (lDataCnt > lMaxNum)
			{
				inMsg.set(EKK0581B001CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_OVERMAX);
				return;
			}

			// SQL文の組立て(項目取得・ページング用) (1) + (3) + (4) + (5) + (6)
			StringBuffer sql_Page = new StringBuffer();
			sql_Page.append(sql_Buff1)
					.append(sql_Buff3)
					.append(sql_Buff4)
					.append(sql_Buff5)
					.append(sql_Buff6);
			
			//prepareStatementにSQL文をセット
			pstmt_Page = con1.prepareStatement(sql_Page.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Page);

			// 検索対象行を算出する
			long[] lPages = JKKejbPagingUtil.calcSearchRows(lDispPage, lDispNum);
			long lRowSta = lPages[0];
			long lRowEnd = lPages[1];

			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			if ( "1".equals( inMsg.getString(EKK0581B001CBSMsg.FUNC_CODE) ) ) {
				// パラメータの設定(運用日付を設定)
				CAANJDBCUtil.setParam(pstmt_Page, iPPage++, JKKModelCommon.getOpeDate(inMsg));
				// パラメータの設定(運用日付を設定)
				CAANJDBCUtil.setParam(pstmt_Page, iPPage++, JKKModelCommon.getOpeDate(inMsg));
				// パラメータの設定
				iPPage = setPram(inMsg, pstmt_Page, iPPage);
				// パラメータの設定(検索開始行を指定)
				CAANJDBCUtil.setParam(pstmt_Page, iPPage++, lRowSta);
				// パラメータの設定(検索終了行を指定)
				CAANJDBCUtil.setParam(pstmt_Page, iPPage++, lRowEnd);
			}
			// ResultSetの取得
			rsltQuery_Page = pstmt_Page.executeQuery();
			
			// EKK0581B001CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  EKK0581B001CBSMsg1List.DMPS_ANKEN_NO
					, EKK0581B001CBSMsg1List.DMPS_BUKKEN_NM
					, EKK0581B001CBSMsg1List.DMPS_BUKKEN_KANA
					, EKK0581B001CBSMsg1List.DMPS_KIINSHA_STATE_NM
					, EKK0581B001CBSMsg1List.DMPS_KIINSHA_CITY_NM
					, EKK0581B001CBSMsg1List.DMPS_KIINSHA_OAZTSU_NM
					, EKK0581B001CBSMsg1List.DMPS_KIINSHA_AZCHO_NM
					, EKK0581B001CBSMsg1List.DMPS_KIINSHA_AD_BNCHIGO
					, EKK0581B001CBSMsg1List.DMPS_KIINSHA_ADRTTM
					, EKK0581B001CBSMsg1List.DMPS_KIINSHA_ADRRM
					, EKK0581B001CBSMsg1List.DMPS_CTRPLN_CD
					, EKK0581B001CBSMsg1List.DMPS_CTRPLN_CD_NM
					, EKK0581B001CBSMsg1List.CALLBK_UM
					, EKK0581B001CBSMsg1List.CALLBK_UM_NM
					, EKK0581B001CBSMsg1List.CTRPLN_WAY_MEMO
					, EKK0581B001CBSMsg1List.DMPS_ANKEN_AITAI_PPLAN_CD
					, EKK0581B001CBSMsg1List.DMPS_ANKEN_AITAI_PPLAN_CD_NM
					, EKK0581B001CBSMsg1List.DMPSANK_SBT_CD
					, EKK0581B001CBSMsg1List.DMPSANK_SBT_CD_NM
					, EKK0581B001CBSMsg1List.SHK_JUNIN_PAY_PRC_AMNT
			};
			
			// 明細に処理結果(ResultSet)をマッピング
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery_Page,msgKeyList1,"eo.ejb.cbs.cbsmsg.EKK0581B001CBSMsg1List",0);
			
			// 取得結果が0件の場合は表示ページ該当なしエラー
			if (0 >= outMsg1.length)
			{
				inMsg.set(EKK0581B001CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_NODATA);
				return;
			}
			
			// inMsg(CBSMsg)に明細をセット
			inMsg.set("EKK0581B001CBSMsg1List", outMsg1);
			

		} catch(SQLException e) {
			inMsg.set(EKK0581B001CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} finally {
			// 資源の解放
			try{
				if(rsltQuery_Count != null){
					rsltQuery_Count.close();
				}
				if(rsltQuery_Page != null){
					rsltQuery_Page.close();
				}
				if(pstmt_Count != null){
					pstmt_Count.close();
				}
				if(pstmt_Page != null){
					pstmt_Page.close();
				}
				if(con1 != null){
					closeConnection(con1);
				}
			}catch(SQLException e){
				inMsg.set(EKK0581B001CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * <p>
	 * パラメータの設定を行います。
	 * </p>
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @param pstmt プリペアステートメント
	 * @param iPCnt パラメータのカウント
	 * @return iPCnt パラメータのカウント
	 * @exception SQLException
	*/
	private int setPram(CAANMsg inMsg, PreparedStatement pstmt, int iPCnt) throws SQLException
	{
		
		// パラメータの設定(ＫＥＹ＿電波障害案件番号（Ｆｒｏｍ）を指定)
		if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_ANKEN_NO_FRM)) {
			CAANJDBCUtil.setParam(pstmt, iPCnt++, inMsg.getObject(EKK0581B001CBSMsg.KEY_DMPS_ANKEN_NO_FRM));
		}
		// パラメータの設定(ＫＥＹ＿電波障害案件番号（Ｔｏ）を指定)
		if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_ANKEN_NO_TO)) {
			CAANJDBCUtil.setParam(pstmt, iPCnt++, inMsg.getObject(EKK0581B001CBSMsg.KEY_DMPS_ANKEN_NO_TO));
		}
		// パラメータの設定(ＫＥＹ＿電波障害物件名を指定)
		if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_BUKKEN_NM)) {
			// LIKE検索文字列置き換え処理
			String keydmpsbukkennm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0581B001CBSMsg.KEY_DMPS_BUKKEN_NM));
			
			if (inMsg.isNull(EKK0581B001CBSMsg.KEY_BBN_IC_FLG_BUKKEN_NM)) {
				// 前方一致検索
				keydmpsbukkennm = keydmpsbukkennm + Percent;
			}
			else{
				// 部分一致検索
				keydmpsbukkennm = Percent + keydmpsbukkennm + Percent;
			}
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keydmpsbukkennm);
		}
		// パラメータの設定(ＫＥＹ＿電波障害物件カナ名を指定)
		if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_BUKKEN_KANA)) {
			// LIKE検索文字列置き換え処理
			String keydmpsbukkenkana = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0581B001CBSMsg.KEY_DMPS_BUKKEN_KANA));
			
			if (inMsg.isNull(EKK0581B001CBSMsg.KEY_BBN_IC_FLG_BUKKEN_KANA)) {
				// 前方一致検索
				keydmpsbukkenkana = keydmpsbukkenkana + Percent;
			}
			else{
				// 部分一致検索
				keydmpsbukkenkana = Percent + keydmpsbukkenkana + Percent;
			}
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keydmpsbukkenkana);
		}
		// パラメータの設定(ＫＥＹ＿電波障害起因者郵便番号を指定)
		if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_PCD)) {
			CAANJDBCUtil.setParam(pstmt, iPCnt++, inMsg.getObject(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_PCD));
		}
		// パラメータの設定(ＫＥＹ＿電波障害起因者住所コードを指定)
		if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_AD_CD)) {
			CAANJDBCUtil.setParam(pstmt, iPCnt++, inMsg.getObject(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_AD_CD));
		}
		// パラメータの設定(ＫＥＹ＿電波障害起因者都道府県名を指定)
		if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_STATE_NM)) {
			CAANJDBCUtil.setParam(pstmt, iPCnt++, inMsg.getObject(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_STATE_NM));
		}
		// パラメータの設定(ＫＥＹ＿電波障害起因者市区町村名を指定)
		if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_CITY_NM)) {
			// LIKE検索文字列置き換え処理
			String keydmpskiinshacitynm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_CITY_NM));
			
			if (inMsg.isNull(EKK0581B001CBSMsg.KEY_BBN_IC_FLG_CITY_NM)) {
				// 前方一致検索
				keydmpskiinshacitynm = keydmpskiinshacitynm + Percent;
			}
			else{
				// 部分一致検索
				keydmpskiinshacitynm = Percent + keydmpskiinshacitynm + Percent;
			}
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keydmpskiinshacitynm);
		}
		// パラメータの設定(ＫＥＹ＿電波障害起因者大字通称名を指定)
		if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_OAZTSU_NM)) {
			// LIKE検索文字列置き換え処理
			String keydmpskiinshaoaztsunm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_OAZTSU_NM));

			if (inMsg.isNull(EKK0581B001CBSMsg.KEY_BBN_IC_FLG_OAZTSU_NM)) {
				// 前方一致検索
				keydmpskiinshaoaztsunm = keydmpskiinshaoaztsunm + Percent;
			}
			else{
				// 部分一致検索
				keydmpskiinshaoaztsunm = Percent + keydmpskiinshaoaztsunm + Percent;
			}
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keydmpskiinshaoaztsunm);
		}
		// パラメータの設定(ＫＥＹ＿電波障害起因者字丁目名を指定)
		if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_AZCHO_NM)) {
			// LIKE検索文字列置き換え処理
			String keydmpskiinshaazchonm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_AZCHO_NM));

			if (inMsg.isNull(EKK0581B001CBSMsg.KEY_BBN_IC_FLG_AZCHO_NM)) {
				// 前方一致検索
				keydmpskiinshaazchonm = keydmpskiinshaazchonm + Percent;
			}
			else{
				// 部分一致検索
				keydmpskiinshaazchonm = Percent + keydmpskiinshaazchonm + Percent;
			}
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keydmpskiinshaazchonm);
		}
		// パラメータの設定(ＫＥＹ＿電波障害起因者住所番地号を指定)
		if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_AD_BNCHIGO)) {
			// LIKE検索文字列置き換え処理
			String keydmpskiinshaadbnchigo = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_AD_BNCHIGO));

			if (inMsg.isNull(EKK0581B001CBSMsg.KEY_BBN_IC_FLG_BNCHIGO)) {
				// 前方一致検索
				keydmpskiinshaadbnchigo = keydmpskiinshaadbnchigo + Percent;
			}
			else{
				// 部分一致検索
				keydmpskiinshaadbnchigo = Percent + keydmpskiinshaadbnchigo + Percent;
			}
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keydmpskiinshaadbnchigo);
		}
		// パラメータの設定(ＫＥＹ＿電波障害起因者住所補記・建物名を指定)
		if (!inMsg.isNull(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_ADRTTM)) {
			// LIKE検索文字列置き換え処理
			String keydmpskiinshaadrttm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0581B001CBSMsg.KEY_DMPS_KIINSHA_ADRTTM));

			if (inMsg.isNull(EKK0581B001CBSMsg.KEY_BBN_IC_FLG_ADRTTM)) {
				// 前方一致検索
				keydmpskiinshaadrttm = keydmpskiinshaadrttm + Percent;
			}
			else{
				// 部分一致検索
				keydmpskiinshaadrttm = Percent + keydmpskiinshaadrttm + Percent;
			}
			CAANJDBCUtil.setParam(pstmt, iPCnt++, keydmpskiinshaadrttm);
		}
		return iPCnt;
	}
}
