/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKGetKsCtrlDataTel
*	ソースファイル名	：JBSbatKKGetKsCtrlDataTel.java
*	作成者				：富士通　
*	作成日				：2011年08月22日
*＜機能概要＞
*　監視制御データ抽出（電話情報）部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/22   富士通		新規作成
*	v1.01.00	2012/02/19	FJ）藤原	ST1-2012-0000006~9
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFE162;
import eo.business.util.table.JBSbatKK_M_OLD_ICS_CD_CHG;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
* 監視制御データ抽出（電話情報）<BR>
* <BR>
* 監視制御システムに連携する電話情報を抽出し、外部用電話情報送信ファイルを生成する。<BR>
* 「サービス契約」の「サービス」が"電話サービス"の情報を抽出する。<BR>
*<BR>
* @author 富士通
*/
public class JBSbatKKGetKsCtrlDataTel extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();

		//
		// ファイル出力

		// 入出力インターフェイスオブジェクトを生成
		JBSbatServiceInterfaceMap mapKKIFE035 = new JBSbatServiceInterfaceMap();
		
		/* ++++++++++ v1.01.00 追加開始 ++++++++++ */
		// サービス終了年月日
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_ENDYMD, "99999999");
		// 無効フラグ
		mapKKIFE035.setString(JBSbatKKIFE162.MK_FLG, "0");
		// サービス課金開始年月日
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_CHRG_STAYMD, "99999999");
		// サービスキャンセル年月日
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_CANCEL_YMD, "99999999");
		// サービス解約年月日
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_DSL_YMD, "99999999");
		// サービス課金終了年月日
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_CHRG_ENDYMD, "99999999");
		// 回復年月日
		mapKKIFE035.setString(JBSbatKKIFE162.KAIHK_YMD, "99999999");
		// 利用停止フラグ
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_STP_FLG, "0");
		/* ++++++++++ v1.01.00 追加終了 ++++++++++ */
		
		// 項目を設定
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_KEI_NO, 
				inMap.getString(JBSbatKKIFE162.SVC_KEI_NO));				// サービス契約番号
		/* ++++++++++ v1.01.00 削除開始 ++++++++++ */
		//mapKKIFE035.setString(JBSbatKKIFE162.TEL_ORDER, 
		//		inMap.getString(JBSbatKKIFE162.TEL_ORDER));					// 電話番号順番
		/* ++++++++++ v1.01.00 削除終了 ++++++++++ */
		/* ++++++++++ v1.01.00 修正開始 ++++++++++ */
		//mapKKIFE035.setString(JBSbatKKIFE162.SVC_STA_YMD, 
		//		inMap.getString(JBSbatKKIFE162.SVC_STA_YMD));				// サービス開始年月日
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_STA_YMD, 
				getCkan2099(inMap.getString(JBSbatKKIFE162.SVC_STA_YMD)));	// サービス開始年月日
		//mapKKIFE035.setString(JBSbatKKIFE162.SVC_ENDYMD, 
		//		inMap.getString(JBSbatKKIFE162.SVC_ENDYMD));				// サービス終了年月日
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_ENDYMD, 
				getCkan2099(inMap.getString(JBSbatKKIFE162.SVC_ENDYMD)));	// サービス終了年月日
		mapKKIFE035.setString(JBSbatKKIFE162.MK_FLG, 
				inMap.getString(JBSbatKKIFE162.MK_FLG));					// 無効フラグ
		//mapKKIFE035.setString(JBSbatKKIFE162.SVC_KEI_STAT, 
		//		inMap.getString(JBSbatKKIFE162.SVC_KEI_STAT));				// サービス契約ステータス
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_KEI_STAT, 
				inMap.getString(JBSbatKK_M_OLD_ICS_CD_CHG.OLD_ICS_KEI_STAT_CD)); // サービス契約ステータス
		//mapKKIFE035.setString(JBSbatKKIFE162.SVC_CHRG_STAYMD, 
		//		inMap.getString(JBSbatKKIFE162.SVC_CHRG_STAYMD));			// サービス課金開始年月日
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_CHRG_STAYMD, 
				getCkan2099(inMap.getString(JBSbatKKIFE162.SVC_CHRG_STAYMD))); // サービス課金開始年月日
		//mapKKIFE035.setString(JBSbatKKIFE162.SVC_CANCEL_YMD, 
		//		inMap.getString(JBSbatKKIFE162.SVC_CANCEL_YMD));			// サービスキャンセル年月日
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_CANCEL_YMD, 
				getCkan2099((inMap.getString(JBSbatKKIFE162.SVC_CANCEL_YMD)))); // サービスキャンセル年月日
		//mapKKIFE035.setString(JBSbatKKIFE162.SVC_DSL_YMD, 
		//		inMap.getString(JBSbatKKIFE162.SVC_DSL_YMD));				// サービス解約年月日
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_DSL_YMD, 
				getCkan2099((inMap.getString(JBSbatKKIFE162.SVC_DSL_YMD)))); // サービス解約年月日
		//mapKKIFE035.setString(JBSbatKKIFE162.SVC_CHRG_ENDYMD, 
		//		inMap.getString(JBSbatKKIFE162.SVC_CHRG_ENDYMD));			// サービス課金終了年月日
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_CHRG_ENDYMD, 
				getCkan2099((inMap.getString(JBSbatKKIFE162.SVC_CHRG_ENDYMD)))); // サービス課金終了年月日
		//mapKKIFE035.setString(JBSbatKKIFE162.KAIHK_YMD, 
		//		inMap.getString(JBSbatKKIFE162.KAIHK_YMD));					// 回復年月日
		mapKKIFE035.setString(JBSbatKKIFE162.KAIHK_YMD, 
				getCkan2099(inMap.getString(JBSbatKKIFE162.KAIHK_YMD)));	// 回復年月日
		//mapKKIFE035.setString(JBSbatKKIFE162.AD_CD, 
		//		inMap.getString(JBSbatKKIFE162.AD_CD));						// 住所コード
		mapKKIFE035.setString(JBSbatKKIFE162.AD_CD, 
				inMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AD_CD)); // 住所コード
		/* ++++++++++ v1.01.00 修正終了 ++++++++++ */
		
		//運用日付（年月日）
		String opedate = this.opeDate;

		// 利用停止フラグ（利用停止の場合"1"を設定する）
		String svc_stp_ymd = inMap.getString(JBSbatKK_T_SVC_KEI.SVC_STP_YMD);			// サービス停止年月日
		String svc_stp_rls_ymd = inMap.getString(JBSbatKK_T_SVC_KEI.SVC_STP_RLS_YMD);	// サービス停止解除年月日
		
		String stp_flg = "0";
		if (opedate != null && !("".equals(opedate)))
		{
			if (svc_stp_ymd != null && !("".equals(svc_stp_ymd)))
			{
				if (opedate.compareTo(svc_stp_ymd) >= 0) 
				{
					// サービス停止解除年月日が設定されてなければ「利用停止中」
					if (svc_stp_rls_ymd == null)
					{
						stp_flg = "1";
					}
					// 業務日が「サービス停止年月日」から「サービス停止解除年月日」の期間内は「利用停止中」
					else if (opedate.compareTo(svc_stp_rls_ymd) <= 0)
					{
						stp_flg = "1";
					}
				}
			}
		}
		mapKKIFE035.setString(JBSbatKKIFE162.SVC_STP_FLG, stp_flg);

		// 出力フラグを設定
		mapKKIFE035.setOutFlg(true);
		
		// 出力共通電文入出力インターフェイスを設定する
		outputBean.addOutMapList(mapKKIFE035);

		// 出力共通電文を返却
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/* ++++++++++ v1.01.00 追加開始 ++++++++++ */
	/**
	 * 2099年を9999年に置換<BR>
	 * <BR>
	 * 入力文字列が20991231である場合に99999999で返却します。<BR>
	 * <BR>
	 * @param ymd 置換前年月日
	 * @return 20991231の場合99999999、それ以外の場合は入力値
	 * @throws Exception 
	 */
	private String getCkan2099(String ymd) throws Exception
	{
		String target_value = "20991231";
		String ret_value = "99999999";
		if(target_value.equals(ymd))
		{
			return ret_value;
		}
		return ymd;
	}
	/* ++++++++++ v1.01.00 追加終了 ++++++++++ */
}
