/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKTgOSKCkanStku
*	ソースファイル名	：JBSbatKKTgOSKCkanStku.java
*	作成者				：富士通　
*	作成日				：2012年09月27日
*＜機能概要＞
*　対象オプションサービス契約（置換型）取得部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/09/27   FJ)団		新規作成
*	v4.01.00	2013/02/27  FJ)中作		【ST2-2013-0001012】更新対象条件追加
*	v7.00.00	2013/11/27  FJ)桑島		【ANK-1578-00-00】多機能ルーター（機器追加）対応
*	v9.00.01	2014/05/16   FJ)柿坂	【IT1-2014-0000149】光電話セレクトオプションパック対応
*	v10.00.00	2014/07/07   FJ)小林	【ANK-2135-00-00】地デジ・ＢＳコース　スターチャンネルセット割引
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM264;
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;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKTgOSKCkanStku extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_OP_SVC_KEI = "KK_T_OP_SVC_KEI";

	/** SQL定義キー(KK_SELECT_013)*/
	private static final String KK_T_OP_SVC_KEI_KK_SELECT_013 = "KK_SELECT_013";

	/** テーブルアクセスクラス(オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 
	 * 割引サービス契約番号 
	 */
	protected String wribSvcKeiNo = "";

	/** 
	 * 申込明細番号
	 */
	protected String mskmDtlNo = "";

	/** 
	 * 割引タイプコード 
	 */
	protected String wribTypeCd = "";

	/** 
	 * 申込起算年月日
	 */
	protected String mskmKisanYmd = "";

	/** 
	 * サービス契約番号 
	 */
	protected String svcKeiNo = "";

	/** 
	 * サービス契約ステータス 
	 */
	protected String svcKeiStat = "";

	/** 
	 * サービス開始年月日（ＳＶＣ） 
	 */
	protected String svcStaYmdSvc = "";

	/** 
	 * サービス契約内訳番号 
	 * */
	protected String svcKeiUcwkNo = "";

	/** 
	 * サービス契約内訳ステータス 
	 */
	protected String svcKeiUcwkStat = "";

	/** 
	 * サービス開始年月日（ＳＶＣＵＣ） 
	 */
	protected String svcStaYmdSvcuc = "";

	/** 
	 * オプションサービス契約番号 
	 */
	protected String opSvcKeiNo = "";

	/** 
	 * オプションサービス契約ステータス 
	 */
	protected String opSvcKeiStat = "";

	/** 
	 * サービス開始年月日（ＯＰ） 
	 */
	protected String svcStaYmdOp = "";

	/** 
	 * サブオプションサービス契約番号 
	 */
	protected String sbopSvcKeiNo = "";

	/** 
	 * サブオプションサービス契約ステータス 
	 */
	protected String sbopSvcKeiStat = "";

	/** 
	 * サービス開始年月日（ＳＢＯＰ） 
	 */
	protected String svcStaYmdSbop = "";

	/** 
	 * 機器提供サービス契約番号 
	 */
	protected String kktkSvcKeiNo = "";

	/** 
	 * 機器提供サービス契約ステータス 
	 */
	protected String kktkSvcKeiStat = "";

	/** 
	 * サービス開始年月日（ＫＫＴＫ） 
	 */
	protected String svcStaYmdKktk = "";

	/** 
	 * 請求オプションサービス契約番号 
	 */
	protected String seiOpSvcKeiNo = "";

	/** 
	 * 請求オプションサービス契約ステータス 
	 */
	protected String seiOpSvcKeiStat = "";

	/** 
	 * サービス開始年月日（ＳＥＩＯＰ） 
	 */
	protected String svcStaYmdSeiop = "";
	
	/** 
	 * 機器オプションサービス契約番号 
	 */
	protected String kkOpSvcKeiNo = "";
	
	/** 
	 * 機器オプションサービス契約ステータス 
	 */
	protected String kkOpSvcKeiStat = "";

	/** 
	 * サービス開始年月日（ＫＫＯＰ） 
	 */
	protected String svcStaYmdKkop = "";
	
	/** 
	 * 更新対象フラグ 
	 */
	protected String updTgFlg = "";
	
	// ++++++++++ v9.00.01 修正開始 ++++++++++ //
	/**
	 * 割引サービスコード
	 */
	protected String wribSvcCd = "";

	/**
	 * サービス利用開始希望年月日
	 */
	protected String svcUseStaKiboYmd = "";
	// ++++++++++ v9.00.01 修正終了 ++++++++++ //

	// ++++++++++ v10.00.00 追加開始 ++++++++++ //
	/** 
	 * プラン課金開始年月日（ＳＶＣ） 
	 */
	protected String planChrgStaYmdSvc = "";
	// ++++++++++ v10.00.00 追加終了 ++++++++++ //

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_OP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		
		// 中間ファイルの読み込みを行います。
		getKkifm264(inMap);
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		// オプションサービス契約番号が設定されている場合。
		if(!"".equals(opSvcKeiNo))
		{
			// サービス契約内訳の情報を取得する。
			String[] param = {opSvcKeiNo, super.opeDate};
			this.executeKK_T_OP_SVC_KEI_KK_SELECT_013(param);
			JBSbatCommonDBInterface opSvcKeiMap = db_KK_T_OP_SVC_KEI.selectNext();
			
			// 検索結果がある場合
			if(null != opSvcKeiMap)
			{
				opSvcKeiStat     = JBSbatStringUtil.Rtrim(opSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT));		// オプションサービス契約ステータス
				svcStaYmdOp      = JBSbatStringUtil.Rtrim(opSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD));				// サービス開始年月日（ＯＰ） 
			}
			else
			{
				// 検索結果がない場合はファイル出力しません。
				super.logPrint.printDebugLog("execute_END");
				return outputBean;
			}
		}
		// ファイル出力を行う。
		this.createKkifm264(outputBean);
		
		super.logPrint.printDebugLog("execute_END");
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_OP_SVC_KEI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_013)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	対象割引サービス.オプションサービス契約
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_OP_SVC_KEI_KK_SELECT_013(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KK_SELECT_013);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 
	 * 中間ファイルの読み込みを行います。
	 * 
	 * @param inMap 中間ファイルの値。
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void getKkifm264(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		
		wribSvcKeiNo        = "";// 割引サービス契約番号
		mskmDtlNo           = "";// 申込明細番号
		wribTypeCd          = "";// 割引タイプコード
		mskmKisanYmd        = "";// 申込起算年月日
		svcKeiNo            = "";// サービス契約番号
		svcKeiStat          = "";// サービス契約ステータス
		svcStaYmdSvc        = "";// サービス開始年月日（ＳＶＣ）
		svcKeiUcwkNo        = "";// サービス契約内訳番号
		svcKeiUcwkStat      = "";// サービス契約内訳ステータス 
		svcStaYmdSvcuc      = "";// サービス開始年月日（ＳＶＣＵＣ） 
		opSvcKeiNo          = "";// オプションサービス契約番号
		opSvcKeiStat        = "";// オプションサービス契約ステータス
		svcStaYmdOp         = "";// サービス開始年月日（ＯＰ） 
		sbopSvcKeiNo        = "";// サブオプションサービス契約番号
		sbopSvcKeiStat      = "";// サブオプションサービス契約ステータス
		svcStaYmdSbop       = "";// サービス開始年月日（ＳＢＯＰ）
		kktkSvcKeiNo        = "";// 機器提供サービス契約番号
		kktkSvcKeiStat      = "";// 機器提供サービス契約ステータス 
		svcStaYmdKktk       = "";// サービス開始年月日（ＫＫＴＫ） 
		seiOpSvcKeiNo       = "";// 請求オプションサービス契約番号
		seiOpSvcKeiStat     = "";// 請求オプションサービス契約ステータス 
		svcStaYmdSeiop      = "";// サービス開始年月日（ＳＥＩＯＰ） 
		
		kkOpSvcKeiNo        = "";// 機器オプションサービス契約番号
		kkOpSvcKeiStat      = "";// 機器オプションサービス契約ステータス 
		svcStaYmdKkop       = "";// サービス開始年月日（ＫＫＯＰ） 
		
		updTgFlg            = "";// 更新対象フラグ 
		
		// ++++++++++ v9.00.01 修正開始 ++++++++++ //
		wribSvcCd			= "";// 割引サービスコード
		svcUseStaKiboYmd	= "";// サービス利用開始希望年月日
		// ++++++++++ v9.00.01 修正終了 ++++++++++ //
		
		// ++++++++++ v10.00.00 追加開始 ++++++++++ //
		planChrgStaYmdSvc	= "";//プラン課金開始年月日（ＳＶＣ）
		// ++++++++++ v10.00.00 追加終了 ++++++++++ //
		
		wribSvcKeiNo        = inMap.getString(JBSbatKKIFM264.WRIB_SVC_KEI_NO);
		mskmDtlNo           = inMap.getString(JBSbatKKIFM264.MSKM_DTL_NO);
		wribTypeCd          = inMap.getString(JBSbatKKIFM264.WRIB_TYPE_CD);
		mskmKisanYmd        = inMap.getString(JBSbatKKIFM264.MSKM_KISAN_YMD);
		svcKeiNo            = inMap.getString(JBSbatKKIFM264.SVC_KEI_NO);
		svcKeiStat          = inMap.getString(JBSbatKKIFM264.SVC_KEI_STAT);
		svcStaYmdSvc        = inMap.getString(JBSbatKKIFM264.SVC_STA_YMD_SVC);
		svcKeiUcwkNo        = inMap.getString(JBSbatKKIFM264.SVC_KEI_UCWK_NO);
		svcKeiUcwkStat      = inMap.getString(JBSbatKKIFM264.SVC_KEI_UCWK_STAT);
		svcStaYmdSvcuc      = inMap.getString(JBSbatKKIFM264.SVC_STA_YMD_SVCUC);
		opSvcKeiNo          = inMap.getString(JBSbatKKIFM264.OP_SVC_KEI_NO);
		opSvcKeiStat        = inMap.getString(JBSbatKKIFM264.OP_SVC_KEI_STAT);
		svcStaYmdOp         = inMap.getString(JBSbatKKIFM264.SVC_STA_YMD_OP);
		sbopSvcKeiNo        = inMap.getString(JBSbatKKIFM264.SBOP_SVC_KEI_NO);
		sbopSvcKeiStat      = inMap.getString(JBSbatKKIFM264.SBOP_SVC_KEI_STAT);
		svcStaYmdSbop       = inMap.getString(JBSbatKKIFM264.SVC_STA_YMD_SBOP);
		kktkSvcKeiNo        = inMap.getString(JBSbatKKIFM264.KKTK_SVC_KEI_NO);
		kktkSvcKeiStat      = inMap.getString(JBSbatKKIFM264.KKTK_SVC_KEI_STAT);
		svcStaYmdKktk       = inMap.getString(JBSbatKKIFM264.SVC_STA_YMD_KKTK);
		seiOpSvcKeiNo       = inMap.getString(JBSbatKKIFM264.SEIOPSVC_KEI_NO);
		seiOpSvcKeiStat     = inMap.getString(JBSbatKKIFM264.SEIOPSVC_KEI_STAT);
		svcStaYmdSeiop      = inMap.getString(JBSbatKKIFM264.SVC_STA_YMD_SEIOP);
		
		kkOpSvcKeiNo        = inMap.getString(JBSbatKKIFM264.KKOP_SVC_KEI_NO);
		kkOpSvcKeiStat      = inMap.getString(JBSbatKKIFM264.KKOP_SVC_KEI_STAT);
		svcStaYmdKkop       = inMap.getString(JBSbatKKIFM264.SVC_STA_YMD_KKOP);
		super.logPrint.printDebugLog("機器オプションサービス契約番号-->" + kkOpSvcKeiNo + "<--");
		super.logPrint.printDebugLog("機器オプションサービス契約ステータス-->" + kkOpSvcKeiStat + "<--");
		super.logPrint.printDebugLog("サービス開始年月日（ＫＫＯＰ）-->" + svcStaYmdKkop + "<--");
		
		updTgFlg            = inMap.getString(JBSbatKKIFM264.UPD_TG_FLG);
		
		// ++++++++++ v9.00.01 修正開始 ++++++++++ //
		wribSvcCd			= inMap.getString(JBSbatKKIFM264.WRIB_SVC_CD);
		svcUseStaKiboYmd	= inMap.getString(JBSbatKKIFM264.SVC_USE_STA_KIBO_YMD);
		// ++++++++++ v9.00.01 修正終了 ++++++++++ //
		
		// ++++++++++ v10.00.00 追加開始 ++++++++++ //
		planChrgStaYmdSvc	= inMap.getString(JBSbatKKIFM264.PLAN_CHRG_STAYMD_SVC);
		// ++++++++++ v10.00.00 追加終了 ++++++++++ //
	}
	
	/**
	 * 
	 *  割引サービス対象契約抽出ファイルの作成を行います。
	 *  
	 * @param  outputBean JBSbatOutputItem
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void createKkifm264(JBSbatOutputItem outputBean) throws Exception
	{
		
		//入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		
		//項目を設定
		outmap.setString(JBSbatKKIFM264.WRIB_SVC_KEI_NO, wribSvcKeiNo);						// 割引サービス契約番号
		outmap.setString(JBSbatKKIFM264.MSKM_DTL_NO, mskmDtlNo);							// 申込明細番号
		outmap.setString(JBSbatKKIFM264.WRIB_TYPE_CD, wribTypeCd);							// 割引タイプコード
		outmap.setString(JBSbatKKIFM264.MSKM_KISAN_YMD, mskmKisanYmd);						// 申込起算年月日
		outmap.setString(JBSbatKKIFM264.SVC_KEI_NO, svcKeiNo);								// サービス契約番号
		outmap.setString(JBSbatKKIFM264.SVC_KEI_STAT, svcKeiStat);							// サービス契約ステータス
		outmap.setString(JBSbatKKIFM264.SVC_STA_YMD_SVC, svcStaYmdSvc);						// サービス開始年月日（ＳＶＣ）
		outmap.setString(JBSbatKKIFM264.SVC_KEI_UCWK_NO, svcKeiUcwkNo);						// サービス契約内訳番号
		outmap.setString(JBSbatKKIFM264.SVC_KEI_UCWK_STAT, svcKeiUcwkStat);					// サービス契約内訳ステータス 
		outmap.setString(JBSbatKKIFM264.SVC_STA_YMD_SVCUC, svcStaYmdSvcuc);					// サービス開始年月日（ＳＶＣＵＣ） 
		outmap.setString(JBSbatKKIFM264.OP_SVC_KEI_NO, opSvcKeiNo);							// オプションサービス契約番号
		outmap.setString(JBSbatKKIFM264.OP_SVC_KEI_STAT, opSvcKeiStat);						// オプションサービス契約ステータス
		outmap.setString(JBSbatKKIFM264.SVC_STA_YMD_OP, svcStaYmdOp);						// サービス開始年月日（ＯＰ） 
		outmap.setString(JBSbatKKIFM264.SBOP_SVC_KEI_NO, sbopSvcKeiNo);						// サブオプションサービス契約番号
		outmap.setString(JBSbatKKIFM264.SBOP_SVC_KEI_STAT, sbopSvcKeiStat);					// サブオプションサービス契約ステータス
		outmap.setString(JBSbatKKIFM264.SVC_STA_YMD_SBOP, svcStaYmdSbop);					// サービス開始年月日（ＳＢＯＰ）
		outmap.setString(JBSbatKKIFM264.KKTK_SVC_KEI_NO, kktkSvcKeiNo);						// 機器提供サービス契約番号
		outmap.setString(JBSbatKKIFM264.KKTK_SVC_KEI_STAT, kktkSvcKeiStat);					// 機器提供サービス契約ステータス 
		outmap.setString(JBSbatKKIFM264.SVC_STA_YMD_KKTK, svcStaYmdKktk);					// サービス開始年月日（ＫＫＴＫ） 
		outmap.setString(JBSbatKKIFM264.SEIOPSVC_KEI_NO, seiOpSvcKeiNo);					// 請求オプションサービス契約番号
		outmap.setString(JBSbatKKIFM264.SEIOPSVC_KEI_STAT, seiOpSvcKeiStat);				// 請求オプションサービス契約ステータス 
		outmap.setString(JBSbatKKIFM264.SVC_STA_YMD_SEIOP, svcStaYmdSeiop);					// サービス開始年月日（ＳＥＩＯＰ） 
		
		outmap.setString(JBSbatKKIFM264.KKOP_SVC_KEI_NO, kkOpSvcKeiNo);						// 機器オプションサービス契約番号
		outmap.setString(JBSbatKKIFM264.KKOP_SVC_KEI_STAT, kkOpSvcKeiStat);					// 機器オプションサービス契約ステータス 
		outmap.setString(JBSbatKKIFM264.SVC_STA_YMD_KKOP, svcStaYmdKkop);					// サービス開始年月日（ＫＫＯＰ） 
		
		outmap.setString(JBSbatKKIFM264.UPD_TG_FLG, updTgFlg);								// 更新対象フラグ
		
		// ++++++++++ v9.00.01 修正開始 ++++++++++ //
		outmap.setString(JBSbatKKIFM264.WRIB_SVC_CD, wribSvcCd);							// 割引サービスコード
		outmap.setString(JBSbatKKIFM264.SVC_USE_STA_KIBO_YMD, svcUseStaKiboYmd);			// サービス利用開始希望年月日
		// ++++++++++ v9.00.01 修正終了 ++++++++++ //
		
		// ++++++++++ v10.00.00 追加開始 ++++++++++ //
		outmap.setString(JBSbatKKIFM264.PLAN_CHRG_STAYMD_SVC, planChrgStaYmdSvc);			// プラン課金開始年月日（ＳＶＣ）
		// ++++++++++ v10.00.00 追加終了 ++++++++++ //
		
		//出力フラグを設定
		outmap.setOutFlg(true);
		//出力共通電文に入出力インターフェースを設定する。
		outputBean.addOutMapList(outmap);
	}
}
