/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：プロジェクト共通
*	モジュール名	：JKKBatPrgUtil
*	ソースファイル名：JKKBatPrgUtil.java
*	作成者			：富士通
*	日付			：2012年10月04日
*＜機能概要＞
*	進捗の取得を行います。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/10/04	FJ)中作		新規作成
*   v4.00.01    2012/12/29  FJ)中作    【ST4-2012-0000301】障害対応
*
**********************************************************************/

package eo.business.common;

import java.sql.SQLException;

import eo.business.util.table.JBSbatKK_T_PRG;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;


/**
 * 進捗の取得を行います。
 * <br>
 * @author 富士通
 */
public class JKKBatPrgUtil {

	/**
	 * 進捗.異動年月日時分秒取得処理です。
	 * ｢サービス契約番号,異動区分｣と一致する異動年月日時分秒を取得します。
	 * 「登録年月日時分秒」が最大のもの
	 * 検索結果無の場合は、システム日付時分秒を返却します。
	 * @param cmnItem 業務共通電文
	 * @param svcKeiNo サービス契約番号
	 * @param idoDiv   異動区分
	 * @param stmt     テーブルアクセスクラス
	 * @return 異動年月日時分秒
	 * @throws Exception 異動年月日時分秒取得処理に失敗した場合
	 */
	public static String getIdoDtmMax(JBSbatCommonItem cmnItem, String svcKeiNo, String idoDiv, JBSbatSQLAccess stmt) throws Exception
	{
		// 業務共通電文チェック
		if (null == cmnItem)
		{
			throw new Exception("バッチ共通電文がnullです。");
		}
		
		// サービス契約番号
		if ("".equals(svcKeiNo))
		{
			cmnItem.getLogPrint().printBusinessErrorLog("SY00001W",new String[]{"サービス契約番号"});
			throw new Exception("サービス契約番号が空白です。");
		}
		
		// 異動区分
		if ("".equals(idoDiv))
		{
			cmnItem.getLogPrint().printBusinessErrorLog("SY00001W",new String[]{"異動区分"});
			throw new Exception("異動区分が空白です。");
		}
		
		String result = "";
//		JBSbatSQLAccess stmt = null;
		
		// 業務パラメータ管理アクセスを生成する
//		stmt = new JBSbatSQLAccess(cmnItem,"KK_T_PRG");
		
		// 検索キーを設定する
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		dbList.setValue(svcKeiNo);		// サービス契約番号
		dbList.setValue(idoDiv);        // 異動区分
		
		try
		{
			// サービス契約番号,異動区分を基にレコードを取得する
			stmt.selectBySqlDefine(dbList,"KK_SELECT_027");
			
			// 検索結果取得
			JBSbatCommonDBInterface inMap = stmt.selectNext(); 
			
			// 検索結果あり
			if(null != inMap)
			{
				// 異動年月日時分秒
				result = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_PRG.IDO_DTM));
			
			}
			else
			{
				// システム日付
				result = JBSbatDateUtil.getSystemDateTimeStamp();
			}
		}
		catch (SQLException e)
		{
			throw new Exception( "異動年月日時分秒取得処理で例外が発生しました。");
		}
		
		return result;
	}
}
