/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbECK0281A010TPDA
*	ソースファイル名：JSYejbECK0281A010TPDA.java
*	作成者			：EK953219
*	日付			：2020年01月14日
*＜機能概要＞
*	見込顧客一意照会テンプレート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.ejb.cbs.cbsmsg.ECK0281A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0281A010CBSMsg1List;
import eo.ejb.cbm.entity.CK0281ETMsg;

/**
*
*  テンプレートDBアクセス部品　ECK0281A010_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbECK0281A010TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
	
	/**
	 * コンストラクタ
	 */
	public JSYejbECK0281A010TPDA()	{
	}
	
	/**
	*   ECK0281A010_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(CK0281ETMsg.getTableName());
			
			
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append(" 		CK0281.MIKMCST_NO ")
					.append(" 		,CK0281.MIKMCST_ADD_DTM ")
					.append(" 		,CK0281.NM_KANA ")
					.append(" 		,CK0281.NM_KANJI ")
					.append(" 		,CK0281.BIRTHD ")
					.append(" 		,CK0281.MLAD ")
					.append(" 		,CK0281.TELNO ")
					.append(" 		,CK0281.PCD ")
					.append(" 		,CK0281.AD ")
					.append(" 		,CK0281.MIKOMI_INF_HOYU_KIGEN ")
					.append(" 		,CK0281.CHANNEL_1 ")
					.append(" 		,CK0281.CHANNEL_2 ")
					.append(" 		,CK0281.CHANNEL_3 ")
					.append(" 		,CK0281.TRACD_LMT_CD ")
					.append(" 		,CK0281.HANRO_LMT_RLS_YM ")
					.append(" 		,CK0281.SHODAN_STAT_CD ")
					.append(" 		,CK0281.SEIYK_MIKOMI_CD ")
					.append(" 		,CK0281.USE_PLACE_FORM_CD ")
					.append(" 		,CK0281.KMK_1 ")
					.append(" 		,CK0281.KMK_2 ")
					.append(" 		,CK0281.KMK_3 ")
					.append(" 		,CK0281.KMK_4 ")
					.append(" 		,CK0281.KMK_5 ")
					.append(" 		,CK0281.KMK_6 ")
					.append(" 		,CK0281.KMK_7 ")
					.append(" 		,CK0281.KMK_8 ")
					.append(" 		,CK0281.KMK_9 ")
					.append(" 		,CK0281.KMK_10 ")
					.append(" 		,CK0281.KMK_11 ")
					.append(" 		,CK0281.KMK_12 ")
					.append(" 		,CK0281.KMK_13 ")
					.append(" 		,CK0281.KMK_14 ")
					.append(" 		,CK0281.KMK_15 ")
					.append(" 		,CK0281.KMK_16 ")
					.append(" 		,CK0281.KMK_17 ")
					.append(" 		,CK0281.KMK_18 ")
					.append(" 		,CK0281.KMK_19 ")
					.append(" 		,CK0281.KMK_20 ")
					.append(" 		,CK0281.KMK_21 ")
					.append(" 		,CK0281.KMK_22 ")
					.append(" 		,CK0281.KMK_23 ")
					.append(" 		,CK0281.KMK_24 ")
					.append(" 		,CK0281.KMK_25 ")
					.append(" 		,CK0281.KMK_26 ")
					.append(" 		,CK0281.KMK_27 ")
					.append(" 		,CK0281.KMK_28 ")
					.append(" 		,CK0281.KMK_29 ")
					.append(" 		,CK0281.KMK_30 ")
					.append(" 		,CK0281.KMK_31 ")
					.append(" 		,CK0281.KMK_32 ")
					.append(" 		,CK0281.KMK_33 ")
					.append(" 		,CK0281.KMK_34 ")
					.append(" 		,CK0281.KMK_35 ")
					.append(" 		,CK0281.KMK_36 ")
					.append(" 		,CK0281.KMK_37 ")
					.append(" 		,CK0281.KMK_38 ")
					.append(" 		,CK0281.KMK_39 ")
					.append(" 		,CK0281.KMK_40 ")
					.append(" 		,CK0281.KMK_41 ")
					.append(" 		,CK0281.KMK_42 ")
					.append(" 		,CK0281.KMK_43 ")
					.append(" 		,CK0281.KMK_44 ")
					.append(" 		,CK0281.KMK_45 ")
					.append(" 		,CK0281.KMK_46 ")
					.append(" 		,CK0281.KMK_47 ")
					.append(" 		,CK0281.KMK_48 ")
					.append(" 		,CK0281.KMK_49 ")
					.append(" 		,CK0281.KMK_50 ")
					.append(" 		,CK0281.KMK_51 ")
					.append(" 		,CK0281.KMK_52 ")
					.append(" 		,CK0281.KMK_53 ")
					.append(" 		,CK0281.KMK_54 ")
					.append(" 		,CK0281.KMK_55 ")
					.append(" 		,CK0281.KMK_56 ")
					.append(" 		,CK0281.KMK_57 ")
					.append(" 		,CK0281.KMK_58 ")
					.append(" 		,CK0281.KMK_59 ")
					.append(" 		,CK0281.KMK_60 ")
					.append(" 		,CK0281.KMK_61 ")
					.append(" 		,CK0281.KMK_62 ")
					.append(" 		,CK0281.KMK_63 ")
					.append(" 		,CK0281.KMK_64 ")
					.append(" 		,CK0281.KMK_65 ")
					.append(" 		,CK0281.KMK_66 ")
					.append(" 		,CK0281.KMK_67 ")
					.append(" 		,CK0281.KMK_68 ")
					.append(" 		,CK0281.KMK_69 ")
					.append(" 		,CK0281.KMK_70 ")
					.append(" 		,CK0281.KMK_71 ")
					.append(" 		,CK0281.KMK_72 ")
					.append(" 		,CK0281.KMK_73 ")
					.append(" 		,CK0281.KMK_74 ")
					.append(" 		,CK0281.KMK_75 ")
					.append(" 		,CK0281.KMK_76 ")
					.append(" 		,CK0281.KMK_77 ")
					.append(" 		,CK0281.KMK_78 ")
					.append(" 		,CK0281.KMK_79 ")
					.append(" 		,CK0281.KMK_80 ")
					.append(" 		,CK0281.KMK_81 ")
					.append(" 		,CK0281.KMK_82 ")
					.append(" 		,CK0281.KMK_83 ")
					.append(" 		,CK0281.KMK_84 ")
					.append(" 		,CK0281.KMK_85 ")
					.append(" 		,CK0281.KMK_86 ")
					.append(" 		,CK0281.KMK_87 ")
					.append(" 		,CK0281.KMK_88 ")
					.append(" 		,CK0281.KMK_89 ")
					.append(" 		,CK0281.KMK_90 ")
					.append(" 		,CK0281.KMK_91 ")
					.append(" 		,CK0281.KMK_92 ")
					.append(" 		,CK0281.KMK_93 ")
					.append(" 		,CK0281.KMK_94 ")
					.append(" 		,CK0281.KMK_95 ")
					.append(" 		,CK0281.KMK_96 ")
					.append(" 		,CK0281.KMK_97 ")
					.append(" 		,CK0281.KMK_98 ")
					.append(" 		,CK0281.KMK_99 ")
					.append(" 		,CK0281.KMK_100 ")
					.append(" 		,CK0281.ADD_DTM ")
					.append(" 		,CK0281.ADD_OPEACNT ")
					.append(" 		,CK0281.UPD_DTM ")
					.append(" 		,CK0281.UPD_OPEACNT ")
					.append(" 		,CK0281.DEL_DTM ")
					.append(" 		,CK0281.DEL_OPEACNT ")
					.append(" 		,CK0281.MK_FLG ")
					.append(" 		,(SELECT ZM0171_01.CD_DIV_NM ")
					.append(" 		  FROM   ZM_M_CD_NM_KANRI ZM0171_01 ")
					.append(" 		  WHERE  ZM0171_01.CD_SBT_CD = 'CD00016' ")
					.append(" 		  AND    ZM0171_01.CD_DIV = CK0281.MK_FLG ")
					.append(" 		  AND    ZM0171_01.MK_FLG = '0' ")
					.append(" 		 ) AS MK_FLG_NM ")
					.append(" 		,CK0281.ADD_UNYO_YMD ")
					.append(" 		,CK0281.ADD_TRN_ID ")
					.append(" 		,CK0281.UPD_UNYO_YMD ")
					.append(" 		,CK0281.UPD_TRN_ID ")
					.append(" 		,CK0281.DEL_UNYO_YMD ")
					.append(" 		,CK0281.DEL_TRN_ID ")
					.append(" FROM ")
					.append(" 		CK_T_MIKMCST CK0281 ");
			// SQL文_個別部1
			if ( "1".equals( inMsg.getObject(ECK0281A010CBSMsg.FUNC_CODE).toString() ) ) {
 				sql_Buff.append(" WHERE ")
						.append(" 		CK0281.MIKMCST_NO = ? ")
						.append(" AND		CK0281.MK_FLG = '0' ");
			}
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);
			
			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			if ( "1".equals( inMsg.getString(ECK0281A010CBSMsg.FUNC_CODE) ) ) {
				// パラメータの設定(ＫＥＹ＿見込顧客番号を指定)
				CAANJDBCUtil.setParam(pstmt, 1, inMsg.getObject(ECK0281A010CBSMsg.KEY_MIKMCST_NO));
			}
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// ECK0281A010CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  ECK0281A010CBSMsg1List.MIKMCST_NO
					, ECK0281A010CBSMsg1List.MIKMCST_ADD_DTM
					, ECK0281A010CBSMsg1List.NM_KANA
					, ECK0281A010CBSMsg1List.NM_KANJI
					, ECK0281A010CBSMsg1List.BIRTHD
					, ECK0281A010CBSMsg1List.MLAD
					, ECK0281A010CBSMsg1List.TELNO
					, ECK0281A010CBSMsg1List.PCD
					, ECK0281A010CBSMsg1List.AD
					, ECK0281A010CBSMsg1List.MIKOMI_INF_HOYU_KIGEN
					, ECK0281A010CBSMsg1List.CHANNEL_1
					, ECK0281A010CBSMsg1List.CHANNEL_2
					, ECK0281A010CBSMsg1List.CHANNEL_3
					, ECK0281A010CBSMsg1List.TRACD_LMT_CD
					, ECK0281A010CBSMsg1List.HANRO_LMT_RLS_YM
					, ECK0281A010CBSMsg1List.SHODAN_STAT_CD
					, ECK0281A010CBSMsg1List.SEIYK_MIKOMI_CD
					, ECK0281A010CBSMsg1List.USE_PLACE_FORM_CD
					, ECK0281A010CBSMsg1List.KMK_1
					, ECK0281A010CBSMsg1List.KMK_2
					, ECK0281A010CBSMsg1List.KMK_3
					, ECK0281A010CBSMsg1List.KMK_4
					, ECK0281A010CBSMsg1List.KMK_5
					, ECK0281A010CBSMsg1List.KMK_6
					, ECK0281A010CBSMsg1List.KMK_7
					, ECK0281A010CBSMsg1List.KMK_8
					, ECK0281A010CBSMsg1List.KMK_9
					, ECK0281A010CBSMsg1List.KMK_10
					, ECK0281A010CBSMsg1List.KMK_11
					, ECK0281A010CBSMsg1List.KMK_12
					, ECK0281A010CBSMsg1List.KMK_13
					, ECK0281A010CBSMsg1List.KMK_14
					, ECK0281A010CBSMsg1List.KMK_15
					, ECK0281A010CBSMsg1List.KMK_16
					, ECK0281A010CBSMsg1List.KMK_17
					, ECK0281A010CBSMsg1List.KMK_18
					, ECK0281A010CBSMsg1List.KMK_19
					, ECK0281A010CBSMsg1List.KMK_20
					, ECK0281A010CBSMsg1List.KMK_21
					, ECK0281A010CBSMsg1List.KMK_22
					, ECK0281A010CBSMsg1List.KMK_23
					, ECK0281A010CBSMsg1List.KMK_24
					, ECK0281A010CBSMsg1List.KMK_25
					, ECK0281A010CBSMsg1List.KMK_26
					, ECK0281A010CBSMsg1List.KMK_27
					, ECK0281A010CBSMsg1List.KMK_28
					, ECK0281A010CBSMsg1List.KMK_29
					, ECK0281A010CBSMsg1List.KMK_30
					, ECK0281A010CBSMsg1List.KMK_31
					, ECK0281A010CBSMsg1List.KMK_32
					, ECK0281A010CBSMsg1List.KMK_33
					, ECK0281A010CBSMsg1List.KMK_34
					, ECK0281A010CBSMsg1List.KMK_35
					, ECK0281A010CBSMsg1List.KMK_36
					, ECK0281A010CBSMsg1List.KMK_37
					, ECK0281A010CBSMsg1List.KMK_38
					, ECK0281A010CBSMsg1List.KMK_39
					, ECK0281A010CBSMsg1List.KMK_40
					, ECK0281A010CBSMsg1List.KMK_41
					, ECK0281A010CBSMsg1List.KMK_42
					, ECK0281A010CBSMsg1List.KMK_43
					, ECK0281A010CBSMsg1List.KMK_44
					, ECK0281A010CBSMsg1List.KMK_45
					, ECK0281A010CBSMsg1List.KMK_46
					, ECK0281A010CBSMsg1List.KMK_47
					, ECK0281A010CBSMsg1List.KMK_48
					, ECK0281A010CBSMsg1List.KMK_49
					, ECK0281A010CBSMsg1List.KMK_50
					, ECK0281A010CBSMsg1List.KMK_51
					, ECK0281A010CBSMsg1List.KMK_52
					, ECK0281A010CBSMsg1List.KMK_53
					, ECK0281A010CBSMsg1List.KMK_54
					, ECK0281A010CBSMsg1List.KMK_55
					, ECK0281A010CBSMsg1List.KMK_56
					, ECK0281A010CBSMsg1List.KMK_57
					, ECK0281A010CBSMsg1List.KMK_58
					, ECK0281A010CBSMsg1List.KMK_59
					, ECK0281A010CBSMsg1List.KMK_60
					, ECK0281A010CBSMsg1List.KMK_61
					, ECK0281A010CBSMsg1List.KMK_62
					, ECK0281A010CBSMsg1List.KMK_63
					, ECK0281A010CBSMsg1List.KMK_64
					, ECK0281A010CBSMsg1List.KMK_65
					, ECK0281A010CBSMsg1List.KMK_66
					, ECK0281A010CBSMsg1List.KMK_67
					, ECK0281A010CBSMsg1List.KMK_68
					, ECK0281A010CBSMsg1List.KMK_69
					, ECK0281A010CBSMsg1List.KMK_70
					, ECK0281A010CBSMsg1List.KMK_71
					, ECK0281A010CBSMsg1List.KMK_72
					, ECK0281A010CBSMsg1List.KMK_73
					, ECK0281A010CBSMsg1List.KMK_74
					, ECK0281A010CBSMsg1List.KMK_75
					, ECK0281A010CBSMsg1List.KMK_76
					, ECK0281A010CBSMsg1List.KMK_77
					, ECK0281A010CBSMsg1List.KMK_78
					, ECK0281A010CBSMsg1List.KMK_79
					, ECK0281A010CBSMsg1List.KMK_80
					, ECK0281A010CBSMsg1List.KMK_81
					, ECK0281A010CBSMsg1List.KMK_82
					, ECK0281A010CBSMsg1List.KMK_83
					, ECK0281A010CBSMsg1List.KMK_84
					, ECK0281A010CBSMsg1List.KMK_85
					, ECK0281A010CBSMsg1List.KMK_86
					, ECK0281A010CBSMsg1List.KMK_87
					, ECK0281A010CBSMsg1List.KMK_88
					, ECK0281A010CBSMsg1List.KMK_89
					, ECK0281A010CBSMsg1List.KMK_90
					, ECK0281A010CBSMsg1List.KMK_91
					, ECK0281A010CBSMsg1List.KMK_92
					, ECK0281A010CBSMsg1List.KMK_93
					, ECK0281A010CBSMsg1List.KMK_94
					, ECK0281A010CBSMsg1List.KMK_95
					, ECK0281A010CBSMsg1List.KMK_96
					, ECK0281A010CBSMsg1List.KMK_97
					, ECK0281A010CBSMsg1List.KMK_98
					, ECK0281A010CBSMsg1List.KMK_99
					, ECK0281A010CBSMsg1List.KMK_100
					, ECK0281A010CBSMsg1List.ADD_DTM
					, ECK0281A010CBSMsg1List.ADD_OPEACNT
					, ECK0281A010CBSMsg1List.UPD_DTM
					, ECK0281A010CBSMsg1List.UPD_OPEACNT
					, ECK0281A010CBSMsg1List.DEL_DTM
					, ECK0281A010CBSMsg1List.DEL_OPEACNT
					, ECK0281A010CBSMsg1List.MK_FLG
					, ECK0281A010CBSMsg1List.MK_FLG_NM
					, ECK0281A010CBSMsg1List.ADD_UNYO_YMD
					, ECK0281A010CBSMsg1List.ADD_TRN_ID
					, ECK0281A010CBSMsg1List.UPD_UNYO_YMD
					, ECK0281A010CBSMsg1List.UPD_TRN_ID
					, ECK0281A010CBSMsg1List.DEL_UNYO_YMD
					, ECK0281A010CBSMsg1List.DEL_TRN_ID
			};
			
			// 明細に処理結果(ResultSet)をマッピング
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery,msgKeyList1,"eo.ejb.cbs.cbsmsg.ECK0281A010CBSMsg1List",0);
			// inMsg(CBSMsg)に明細をセット
			inMsg.set("ECK0281A010CBSMsg1List", outMsg1);
			

		} catch(SQLException e) {
			inMsg.set(ECK0281A010CBSMsg.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(ECK0281A010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
}
