/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKIkoTaisyoDataThusyutu
*	ソースファイル名	：JBSbatKKIkoTaisyoDataThusyutu.java
*	作成者				：富士通　
*	作成日				：2017年05月10日
*＜機能概要＞
*	移行対象抽出処理　です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v32.00.00	2017/05/10  FJ)三宅隆	新規作成(【ANK-3149-00-00】新セキュリティパック導入)
*   
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM735;
import eo.business.util.table.JBSbatKK_T_OP_SVC_KEI;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKIkoTaisyoDataThusyutu extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	
	/** テーブルアクセスクラス(オプションサービス契約 KK_SELECT_0111専用)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI_011 = null;
	
	/** SQL定義キー(KK_SELECT_011) */
	private static final String KK_T_OP_SVC_KEI_KK_SELECT_011 = "KK_SELECT_011";
	
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		// DBアクセスクラスを生成します
		db_KK_T_OP_SVC_KEI_011 = new JBSbatSQLAccess(commonItem, JBSbatKK_T_OP_SVC_KEI.TABLE_NAME);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap 入力電文
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		JBSbatOutputItem file_output_bean = new JBSbatOutputItem();
		JBSbatServiceInterfaceMap file_outmap = new JBSbatServiceInterfaceMap();
		
		// 移行対象データ抽出ファイル作成
		file_outmap.setString(JBSbatKKIFM735.SVC_KEI_NO, inMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_KEI_NO)); // サービス契約番号
		file_outmap.setString(JBSbatKKIFM735.OP_SVC_KEI_NO, inMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_NO)); // オプションサービス契約番号
		file_outmap.setString(JBSbatKKIFM735.OP_SVC_KEI_STAT, inMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT)); // オプションサービス契約ステータス
		file_outmap.setString(JBSbatKKIFM735.SVC_DLRE_CD, inMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_DLRE_CD)); // サービス解約理由コード
		file_outmap.setString(JBSbatKKIFM735.SVC_STP_RSN_CD, inMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_STP_RSN_CD)); // サービス停止理由コード
		file_outmap.setString(JBSbatKKIFM735.PAUSE_STP_CD, inMap.getString(JBSbatKK_T_OP_SVC_KEI.PAUSE_STP_CD)); // 休止中断コード
		file_outmap.setString(JBSbatKKIFM735.SHOSA_DSL_FIN_CD, inMap.getString(JBSbatKK_T_OP_SVC_KEI.SHOSA_DSL_FIN_CD)); // 料金グループコード
		file_outmap.setString(JBSbatKKIFM735.SVC_ENDYMD, inMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD)); // 請求契約番号
		// オプションサービス契約ステータスが"910"の場合
		if ("910".equals(inMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT))) {
			
			// オプションサービス契約ステータス履歴に、履歴レコードからステータスが"910"以外の最新レコードのステータスを設定する
			file_outmap.setString(JBSbatKKIFM735.OLD_OP_SVC_KEI_STAT, oldStatSyutoku(inMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_NO)));
		}

		file_outmap.setOutFlg(true);
		file_output_bean.addOutMapList(file_outmap);
		
		return file_output_bean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_OP_SVC_KEI_011.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 履歴レコードからステータス"910"以外の最新レコードの値を返却します
	 * <br>
	 * @param opSvcKeiNo オプションサービス契約番号
	 * @param arg1 シード値
	 * @return String 変換後の文字列
	 */
	private String oldStatSyutoku(String opSvcKeiNo) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(opSvcKeiNo);
		paramList.setValue(super.opeDate);

		// DBアクセスを実行します(オプションサービス契約番号の降順で結果を取得する)
		db_KK_T_OP_SVC_KEI_011.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KK_SELECT_011);
		
		JBSbatCommonDBInterface resultMap = new JBSbatCommonDBInterface();
		
		// 取得できた件数分以下の処理を行う
		while(null != (resultMap = db_KK_T_OP_SVC_KEI_011.selectNext())) {
			
			if (!"910".equals(resultMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT))) {
				return resultMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT);
			}
			
		}
		
		super.logPrint.printDebugLog("【エラー@】オプションサービス契約番号：" + opSvcKeiNo);
		return "";
		
	}
	
}
