/*********************************************************************
 *   All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *  システム名      ：eo顧客基幹システム
 *  モジュール名    ：JKKejbKK0681KRCK
 *  ソースファイル名：JKKejbKK0681KRCK.java
 *  作成者          ：富士通
 *  日付            ：2014年10月03日
 *＜機能概要＞
 *  はぴeポイント契約対象サービス契約の関連制約部品クラス
 *＜修正履歴＞
 *  バージョン  修正日      修正者      修正内容
 *  v11.00.00    2014/10/03  FJ)寺園    ANK-2306-01-00
 *  v11.00.01    2014/10/27  FJ)寺園    IT1-2014-0000352
 **********************************************************************/

package eo.ejb.common.entity;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.fujitsu.futurity.model.base.CAANConnectionMgr;
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.ejb.common.JSYejbConnection;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.ejb.cbm.entity.KK0681ETMsg;
import eo.ejb.common.db.JKKejbKK0681DBABase;

/**
 * <p>
 * はぴeポイント契約対象サービス契約の関連制約部品クラスです。
 * </p>
 * @author 富士通
 */
public class JKKejbKK0681KRCK extends JKKejbKK0681DBABase
{
	/**
	 * <p>
	 * 新しいJSYejbKK0681KRCKを作成します。
	 * </p>
	 */
	public JKKejbKK0681KRCK()
	{
		super();
	}

	/**
	 * <p>
	 * 審査OK重複チェック
	 * 別はぴｅ番号で同一サービス契約番号がはぴｅポイント契約対象サービス契約に「審査OK」で存在するレコードを取得する。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext ディスパッチコンテキスト
	 * @param hapiePointKeiNo はぴeポイント契約番号
	 * @param sksnTrgtSvcKeiNo 積算対象サービス契約番号
	 * @return 存在しない場合：true、存在する場合：false
	 */
	public boolean chkDbleHapieNo(CAANMsg inMsg, AgentDispatchContext inContext, Object hapiePointKeiNo, Object sksnTrgtSvcKeiNo) {

		// コネクション
		Connection con = null;
		// プリペアステートメント
		PreparedStatement pstmt = null;
		// リザルトセット
		ResultSet rsltQuery = null;
		// SQL文
		StringBuffer sbSql = new StringBuffer();

		try
		{
			// 対象テーブルのコネクション取得
			con = JSYejbConnection.getConnection(KK0681ETMsg.getTableName());
			
			sbSql.append(" SELECT COUNT(*) AS CNT  ");
			sbSql.append(" FROM   KK_T_HAPIEK_TG_SVKEI KK0681  ");
			sbSql.append(" INNER  JOIN KK_T_HAPIE_POINT_KEI KK0671  ");
			sbSql.append("    ON  KK0681.HAPIE_POINT_KEI_NO = KK0671.HAPIE_POINT_KEI_NO  ");
			sbSql.append(" WHERE  KK0681.SKSN_TRGT_SVC_KEI_NO = ? ");
/* ++++++++++ v11.00.01 【IT1-2014-0000352 】add start ++++++++++ */
			sbSql.append(" AND    KK0681.SKSN_TRGT_SVKEI_SKEKKA_CD = '00'  ");
			sbSql.append(" AND    (KK0681.SKSN_TRGT_SVKEI_HOSEI_CD IS NULL OR KK0681.SKSN_TRGT_SVKEI_HOSEI_CD = '1') ");
/* ++++++++++ v11.00.01 【IT1-2014-0000352 】add end ++++++++++ */
			sbSql.append(" AND    KK0681.MK_FLG= '0'  ");
			sbSql.append(" AND    KK0671.MK_FLG= '0'  ");
			sbSql.append(" AND    KK0671.HAPIE_NO NOT IN (  ");
			sbSql.append("        SELECT KK0671.HAPIE_NO  ");
			sbSql.append("        FROM   KK_T_HAPIEK_TG_SVKEI KK0681  ");
			sbSql.append("        INNER  JOIN KK_T_HAPIE_POINT_KEI KK0671  ");
			sbSql.append("           ON  KK0681.HAPIE_POINT_KEI_NO = KK0671.HAPIE_POINT_KEI_NO  ");
			sbSql.append("        WHERE  KK0681.HAPIE_POINT_KEI_NO = ? ");
			sbSql.append("        AND    KK0681.MK_FLG= '0'  ");
			sbSql.append("        AND    KK0671.MK_FLG= '0'  ");
			sbSql.append(" ) ");
			

			// repareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sbSql);
			
			// パラメータの設定(積算対象サービス契約番号)
			CAANJDBCUtil.setParam(pstmt, 1, sksnTrgtSvcKeiNo);
			
			// パラメータの設定(はぴeポイント契約番号)
			CAANJDBCUtil.setParam(pstmt, 2, hapiePointKeiNo);
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			if (rsltQuery.next())
			{
				if(rsltQuery.getInt("CNT") > 0)
				{
					return false;
				}
				// 取得結果が0件の場合、チェックOK
				return true;
			}
			return false;
			
			
		} catch(SQLException se)
		{
			throw new CAANRuntimeException(se);
		}
		finally
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch(SQLException se)
			{
				throw new CAANRuntimeException(se);
			}
		}
	}
}
