/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKNetflixActivationPsbTchMailSks
*	ソースファイル名	：JBSbatKKNetflixActivationPsbTchMailSks.java
*	作成者				：富士通
*	作成日				：2021年7月15日
*＜機能概要＞
*	Netflixアクティベーション可能通知メール作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v54.00.00   2021/07/15  FJ)平野   ANK-4055-00-00_【eo】Netflix Step4
*   v71.00.00   2024/07/01  GDC)a.lobiano   ANK-4468-00-00 _eo光ネット「シンプルプラン」追加対応
*   v71.00.01   2024/07/29  FJ)張     ANK-4468-00-01 _eo光ネット「シンプルプラン」追加対応
*********************************************************************/
package eo.business.service;


import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JKKBatConst;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JCCBatchEsbInterface;
import eo.framework.application.JBSbatBusinessError;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.business.util.file.JBSbatKKIFE398;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JKKStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKNetflixActivationPsbTchMailSks extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** Netflixアクティベーション可能通知メールオブジェクト(出力ファイル) */
	private JBSbatOutputFileUtil kkife398FileObjOut = null;
	/** 改行コード */
	private static final String LF  = "LF";
	/** メールコード */
	private static final String MAIL_CD  = "KKM1000028";
	/** テーブル(メール)*/
	private static final String D_TBL_NAME_CC_M_MAIL = "CC_M_MAIL";
	/** テーブル(オプションサービス契約＜ＩＳＰ＞)*/
	private static final String D_TBL_NAME_KK_T_OPSVKEI_ISP = "KK_T_OPSVKEI_ISP";
	/** テーブル(サービス契約＜eo光ネット＞)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_EOH_NET = "KK_T_SVC_KEI_EOH_NET";
	/** テーブル(他事業者契約利用開始実績)*/
	private static final String D_TBL_NAME_KK_T_TJGSK_UEST_JSK = "KK_T_TJGSK_UEST_JSK";
	// ANK-4468-00-00 ADD START
	/** テーブル(連絡先)**/
	private static final String D_TBL_NAME_CK_T_RRKS  = "CK_T_RRKS";
	// ANK-4468-00-00 ADD END
	/** テーブルアクセスクラス(メール)*/
	private JBSbatSQLAccess db_CC_M_MAIL = null;
	/** テーブルアクセスクラス(オプションサービス契約＜ＩＳＰ＞)*/
	private JBSbatSQLAccess db_KK_T_OPSVKEI_ISP = null;
	/** テーブルアクセスクラス(サービス契約＜eo光ネット＞)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_EOH_NET = null;
	/** テーブルアクセスクラス(他事業者契約利用開始実績)*/
	private JBSbatSQLAccess db_KK_T_TJGSK_UEST_JSK = null;
	// ANK-4468-00-00 ADD START
	/** テーブルアクセスクラス(連絡先)**/
	private JBSbatSQLAccess db_CK_T_RRKS = null;
	// ANK-4468-00-00 ADD END
	/** SQL定義キー(KK_SELECT_004)*/
	private static final String CC_M_MAIL_KK_SELECT_004 = "KK_SELECT_004";
	/** SQL定義キー(KK_SELECT_032)*/
	private static final String KK_T_OPSVKEI_ISP_KK_SELECT_034 = "KK_SELECT_034";
	/** SQL定義キー(KK_SELECT_003)*/
	private static final String KK_T_SVC_KEI_EOH_NET_KK_SELECT_003 = "KK_SELECT_003";
	/** SQL定義キー(KK_SELECT_001)*/
	private static final String KK_T_TJGSK_UEST_JSK_KK_SELECT_001 = "KK_SELECT_001";
	// ANK-4468-00-00 ADD START
	/** SQL定義キー(KK_SELECT_012)*/
	private static final String CK_T_RRKS_KK_SELECT_012 = "KK_SELECT_012";
	// ANK-4468-00-00 ADD END
// --------------------------------------------------------------
	// 入力ファイル
	private JBSbatInputFileUtil inputFile = null;
	// 定義ファイル
	private JBSbatDefFileUtil defFile= null;
//--------------------------------------------------------------
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		String[] freeItems = commonItem.getFreeItem().split(JKKBatConst.S_PARAM_DELIM);

		// DBアクセスクラスを生成します
		db_CC_M_MAIL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_M_MAIL);
		db_KK_T_OPSVKEI_ISP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OPSVKEI_ISP);
		db_KK_T_SVC_KEI_EOH_NET = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_EOH_NET);
		db_KK_T_TJGSK_UEST_JSK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_TJGSK_UEST_JSK);
		// ANK-4468-00-00 ADD START
		db_CK_T_RRKS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_RRKS);
		// ANK-4468-00-00 ADD END
		// KKIFE398ファイル作成
		this.kkife398FileObjOut = new JBSbatOutputFileUtil(freeItems[0]);
		this.kkife398FileObjOut.setEncode(JKKBatConst.SJIS);
		this.kkife398FileObjOut.setLine(LF);
		this.kkife398FileObjOut.createWriter();
		
		// 入力ファイル
		inputFile = new JBSbatInputFileUtil(freeItems[1]);
		// 定義ファイル
		defFile= new JBSbatDefFileUtil(JBSbatAplConst.getAplConstValue("IND") + freeItems[2], inputFile);

		/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public JBSbatOutputItem execute() throws Exception
	{

		JBSbatOutputItem outputBean = new JBSbatOutputItem();

		try
		{
			// バッチ運用日付の取得
			String batOpeDate = super.opeDate;
			
			// メール情報を取得
			JBSbatCommonDBInterface mailInfo = executeCC_M_MAIL_KK_SELECT_004(new String[]{ batOpeDate });
			if ( mailInfo == null )
			{
				super.commonItem.setErrFlg(true);
				// %1%テーブルに%2%が存在しません。
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE, new String[] { "メール", "メールコード：" + MAIL_CD });
				throw new JBSbatBusinessError();
			}
			
			int row = 0;
			inputFile.createReader();
			while ( inputFile.ready() )
			{
				row++;
				String line = inputFile.readLine();
				JBSbatServiceInterfaceMap activationInfo = defFile.lineToObject(line, inputFile, row);
				String svcKeiNo = activationInfo.getString(JBSbatKKIFE398.SVC_KEI_NO);
				// サービス契約＜eo光ネット＞よりパートナーアカウントIDを取得
				JBSbatCommonDBInterface paiInfo = executeKK_T_SVC_KEI_EOH_NET_KK_SELECT_003( new String[]{ svcKeiNo,batOpeDate});
				if (paiInfo != null)
				{
					String pai = paiInfo.getString("PTNRACNT_ID");
				
					if ("".equals (pai) || pai == null)
					{
						StringBuffer sb = new StringBuffer();
						// 取得できない場合は、下記のログ出力しスキップ。
						super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, 
								new String[]{"パートナーアカウントIDが取得できませんでした(サービス契約番号):" + svcKeiNo + sb.toString()});
						continue;
					}
					else
					{
					
						//取得できた場合は他事業者契約利用開始実績スキーマを確認
						JBSbatCommonDBInterface tajiInfo = executeKK_T_TJGSK_UEST_JSK_KK_SELECT_001( new String[]{ pai});
						// 取得できた場合はスキップ
						if(tajiInfo != null)
						{
							continue;
						}
						// 取得できなかった場合
						else
						{
							// 送信先メールアドレスを取得
							JBSbatCommonDBInterface mailAddInfo = executeKK_T_OPSVKEI_ISP_KK_SELECT_034( new String[]{ svcKeiNo,batOpeDate});
							// ANK-4468-00-00 ADD START
							// ANK-4468-00-01 MOD START
							//JBSbatCommonDBInterface mailAddInfoCK_T_RRKS = executeCK_T_RRKS_KK_SELECT_012( new String[]{ batOpeDate, svcKeiNo});
							JBSbatCommonDBInterface mailAddInfoCK_T_RRKS = executeCK_T_RRKS_KK_SELECT_012( new String[]{ batOpeDate, svcKeiNo, batOpeDate});
							// ANK-4468-00-01 MOD END
							// ANK-4468-00-00 ADD END
							// メールアドレス情報が取得できない場合、スキップ
							// ANK-4468-00-00 MOD START
							//if ( mailAddInfo == null )
							if (  mailAddInfo == null  && mailAddInfoCK_T_RRKS == null)
							{
							// ANK-4468-00-00 MOD END
								continue;
							}
							// APIを呼び出し返り値を保持
							// ユースケースIDを格納するMAP
							HashMap<Object, Object>  paramMap = new HashMap<Object, Object>();
							paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, "KKSV0986");
							paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, "KKSV0986OP");
							// サービスに渡す業務データを格納するMAP
							HashMap<String, Object>inputMap = new HashMap<String, Object>();
							// inputMapに設定するデータをHashMapで構築する。
							HashMap<String, Object>NetflixActMap = new HashMap<String, Object>();
							// サービスIFへの入力マップ
							NetflixActMap.put("PTNRACNT_ID", pai);			 // パートナーアカウントID
							inputMap.put("KKSV098601CC", NetflixActMap);
							// サービスの処理結果が格納されるMAP
							HashMap<Object, Object> outputMap = new HashMap<Object, Object>();
						
							super.logPrint.printDebugLog("************ Token出力対象データ ************");
							StringBuilder logMsg = new StringBuilder();
						
							logMsg.append("サービス契約番号[").append(svcKeiNo).append("]");
							commonItem.getLogPrint().printBusinessErrorLog("EKKB1200AI",  new String[] {logMsg.toString()});
						
							// サービスの実行
							JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);
						
							// リターンコード取得
							String returnCode = (String) outputMap.get(JCCBatchEsbInterface.RETURN_CODE);
							// リターンコードが「0000：正常終了」の場合
							if(JCCBatchEsbInterface.RETURN_CODE_SUCCESS.equals(returnCode))
							{
								// サービスの戻り値取得
								HashMap<Object, Object> map =  (HashMap<Object, Object>) outputMap.get("KKSV098601CC");  
								String Token = (String)map.get("TOKEN");
								if (Token != null || !"" .equals(Token))
								{
									// アクティベーション通知可能メールを作成
									// ANK-4468-00-00 MOD START
									//writeActibvationMail(activationInfo, mailInfo, mailAddInfo,Token);
									String mlad = null;
									if (mailAddInfo != null) {

										mlad = mailAddInfo.getString("MLAD");
										if (mlad != null) {

											writeActibvationMail(activationInfo, mailInfo, mailAddInfo, Token);
										}
									}
									// ANK-4468-00-00 MOD END
									// ANK-4468-00-00 ADD START
									if (mailAddInfoCK_T_RRKS != null) {
										
										String contactMlad = mailAddInfoCK_T_RRKS.getString("MLAD");
										if (contactMlad != null && !contactMlad.equals(mlad)) {
										
											writeActibvationMail(activationInfo, mailInfo, mailAddInfoCK_T_RRKS, Token);
										}
									}
									// ANK-4468-00-00 ADD END
								}
								else{
									StringBuffer sb = new StringBuffer();
									sb.append(" サービス契約番号：" +svcKeiNo);
									// サービスインターフェイスエラーの場合は、下記のログ出力する。
									super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, 
										new String[]{"Netflix用Token連携CCでエラーが発生しました(リターンコード):" + returnCode + sb.toString()});
									// エラーフラグ設定
									super.commonItem.setErrFlg(true);
								}
							}
							// サービスインターフェースよりエラーが返却された場合
							else if(!JCCBatchEsbInterface.RETURN_CODE_SUCCESS.equals(returnCode))
							{
								StringBuffer sb = new StringBuffer();
								sb.append(" サービス契約番号：" +svcKeiNo);
								// サービスインターフェイスエラーの場合は、下記のログ出力する。
								super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, 
									new String[]{"Netflix用Token連携CCでエラーが発生しました(リターンコード):" + returnCode + sb.toString()});
								// エラーフラグ設定
								super.commonItem.setErrFlg(true);
							}
						}
					}
				}else{
					StringBuffer sb = new StringBuffer();
					// 取得できない場合は、下記のログ出力しスキップ。
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, 
							new String[]{"パートナーアカウントIDが取得できませんでした(サービス契約番号):" + svcKeiNo + sb.toString()});
					continue;

				}
			}
		}
		catch(Exception e)
		{
			super.commonItem.setErrFlg(true);
			throw new JBSbatBusinessError();
		}

		return outputBean;
	}
	
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
		// DBクローズ処理
		db_CC_M_MAIL.close();
		db_KK_T_OPSVKEI_ISP.close();
		db_KK_T_SVC_KEI_EOH_NET.close();
		db_KK_T_TJGSK_UEST_JSK.close();
		// ANK-4468-00-00 ADD START
		db_CK_T_RRKS.close();
		// ANK-4468-00-00 ADD END
	}

	/**
	 * KKIFE398のアクティベーション可能通知メールの作成
	 * @param  activationInfo
	 * @param  mailInfo
	 * @param  mailAddInfo
	 * @param  Token
	 * @throws Exception
	 */
	private void writeActibvationMail(JBSbatServiceInterfaceMap activationInfo, JBSbatCommonDBInterface mailInfo,JBSbatCommonDBInterface mailAddInfo,String Token) throws Exception
	{
		StringBuilder str = new StringBuilder();
		// サービス契約番号
		appendStr(str, activationInfo.getString(JBSbatKKIFE398.SVC_KEI_NO), 10, true, true);
		// メールアドレスを取得
		String mailAdd = mailAddInfo.getString("MLAD");
		// メール宛先
		appendStr(str,mailAdd, 64, true, true);
		// メール送信者名
		appendStr(str, mailInfo.getString(JBSbatKKIFE398.SENDM_MLAD_DSP_NM), 100, true, true);
		// メール送信者
		appendStr(str, mailInfo.getString(JBSbatKKIFE398.SENDM_MLAD), 64, true, true);
		// メール返信先
		appendStr(str, mailInfo.getString(JBSbatKKIFE398.HNSIN_MLAD), 64, true, true);
		// エラーメール返信先
		appendStr(str, mailInfo.getString("ERR_MLAD"), 64, true, true);
		// ＢＣＣ
		appendStr(str, mailInfo.getString(JBSbatKKIFE398.BCC_MLAD), 64, true, true);
		// メール題名
		appendStr(str, mailInfo.getString(JBSbatKKIFE398.MAIL_TITLE), 50, true, true);
		// メール本文
		appendStr(str, mailInfo.getString(JBSbatKKIFE398.MAIL_TEXT).replaceFirst("%", Token), 4200, true, true);
		// 対応記録タイトル
		appendStr(str, mailInfo.getString(JBSbatKKIFE398.TAIO_KIROK_TITLE), 80, false, true);

		this.kkife398FileObjOut.write(str.toString());
	}


	/**
	 * 文字列を連結します。
	 * 
	 * @param str
	 *            文字列
	 * @param value
	 *            連結対象の文字列
	 * @param len
	 *            桁数
	 * @param continueFlg
	 *            継続フラグ
	 * @throws Exception 
	 */
	private void appendStr(StringBuilder str, String value, int len, boolean continueFlg, boolean doubleQuoteFlg) throws Exception
	{
		String preValue = value;

		if (null == value)
		{
			preValue = "";
		}
		
		if (doubleQuoteFlg)
		{
			str.append("\"");
		}
		
		str.append(adjustCharSize(preValue, len));
		
		if (doubleQuoteFlg)
		{
			str.append("\"");
		}

		if (continueFlg)
		{
			str.append(JBSbatKKConst.STR_COMMA);
		}
	}

	/**
	 * 文字列を指定された桁数に調整する。<BR>
	 * 指定サイズが文字列の桁数より小さい場合は、文字列の語尾を切り捨てる。
	 * <BR>
	 * @param para 調整前の文字列
	 * @param len 指定桁数（桁数）
	 * @param encode 文字コード（ＯＳ準拠の場合は""（空）を指定）
	 * @return String 調整後の文字列
	 * @throws Exception
	 */
	public String adjustCharSize(String para, int len)
			throws Exception
	{
		String retStr = "";
		if (null == para)
		{
			return retStr;
		}
		if (0 >= len)
		{
			return retStr;
		}

		// 入力文字列の桁数を取得する
		int paralen = para.length();

		// 入力文字列を返却文字列に設定
		retStr = para;
		
		// 入力文字列の桁数 ＞ 指定桁数の場合
		if ( paralen > len )
		{ 
			// 指定桁数分の文字列を生成する
			retStr = para.substring(0, len);
		}

		return retStr;
	}
	/**
	 * SQLKEY(CC_M_MAIL_KK_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeCC_M_MAIL_KK_SELECT_004(Object[] param) throws Exception
	{
		
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		JBSbatCommonDBInterface dbInterface = null;
		paramList.setValue(param[0].toString());
		paramList.setValue(param[0].toString());
		paramList.setValue(MAIL_CD);
		paramList.setValue(param[0].toString());
		paramList.setValue(param[0].toString());
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CC_M_MAIL.selectBySqlDefine(paramList, CC_M_MAIL_KK_SELECT_004);
		
		dbInterface = db_CC_M_MAIL.selectNext();
		
		if(dbInterface == null)
		{
			return null;
		}
		
		return dbInterface;
		
	}
	/**
	 * SQLKEY(KK_SELECT_032)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_OPSVKEI_ISP_KK_SELECT_034(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		JBSbatCommonDBInterface dbInterface = null;
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_OPSVKEI_ISP.selectBySqlDefine(paramList, KK_T_OPSVKEI_ISP_KK_SELECT_034);
		
		dbInterface = db_KK_T_OPSVKEI_ISP.selectNext();
		
		if(dbInterface == null || dbInterface.getMapSize() == 0 )
		{
			return null;
		}
		
		return dbInterface;
	}
	
	// ANK-4468-00-00 ADD START
	/**
	 * SQLKEY(KK_SELECT_012)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeCK_T_RRKS_KK_SELECT_012(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		JBSbatCommonDBInterface dbInterface = null;
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		// ANK-4468-00-01 ADD START
		paramList.setValue(param[2].toString());
		// ANK-4468-00-01 ADD END


		// DBアクセスを実行します
		db_CK_T_RRKS.selectBySqlDefine(paramList, CK_T_RRKS_KK_SELECT_012);
		
		dbInterface = db_CK_T_RRKS.selectNext();
		
		if(dbInterface == null || dbInterface.getMapSize() == 0 )
		{
			return null;
		}
		
		return dbInterface;
	}
	// ANK-4468-00-00 ADD END
	
	/**
	 * SQLKEY(KK_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_SVC_KEI_EOH_NET_KK_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		JBSbatCommonDBInterface dbInterface = null;
		paramList.setValue(param[1].toString());
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_EOH_NET.selectBySqlDefine(paramList, KK_T_SVC_KEI_EOH_NET_KK_SELECT_003);
		
		dbInterface = db_KK_T_SVC_KEI_EOH_NET.selectNext();
		
		if(dbInterface == null || dbInterface.getMapSize() == 0 )
		{
			return null;
		}
		
		return dbInterface;
	}
	
	/**
	 * SQLKEY(KK_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_TJGSK_UEST_JSK_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		JBSbatCommonDBInterface dbInterface = null;
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_TJGSK_UEST_JSK.selectBySqlDefine(paramList, KK_T_TJGSK_UEST_JSK_KK_SELECT_001);
		
		dbInterface = db_KK_T_TJGSK_UEST_JSK.selectNext();
		
		if(dbInterface == null || dbInterface.getMapSize() == 0 )
		{
			return null;
		}
		
		return dbInterface;
	}
	

}