/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKGetKsCtrlDataKj
*	ソースファイル名	：JBSbatKKGetKsCtrlDataKj.java
*	作成者				：富士通　
*	作成日				：2011年08月22日
*＜機能概要＞
*　監視制御データ抽出（工事情報）部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00		2011/08/22   富士通		新規作成
*	v1.01		2012/02/19	FJ）藤原	ST1-2012-0000006~9
*	v2.00		2012/03/29	FJ）伊藤	IT1-2012-0000346
*	v3.00		2012/11/01	FJ）井熊	ST3-2012-0000335 処理速度カスタマイズ
*	v4.00		2012/11/19	FJ）井熊	ST3-2012-0000335 LOT2へ持ち上げ対応
*	v4.01		2013/03/25	FJ）鷲塚	ST4-2013-0000338 アンローダ化
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFE160;
import eo.business.util.file.JBSbatKKIFM422;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
* 監視制御データ抽出（工事情報）<BR>
* <BR>
* 監視制御システムに連携する工事情報を抽出し、外部用工事情報送信ファイルを生成する。<BR>
* 対象は「工事案件」のデータ全件とするが、<BR>
* 光ネット+光電話の同時申込による工事番号が同じ場合は、光ネットの工事情報のみを抽出する。<BR>
*<BR>
* @author 富士通
*/
public class JBSbatKKGetKsCtrlDataKj extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 工事案件番号保持 .*/
	String mKJAK_NO = "";

	/**
	 * 初期処理
	 * @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();
		
		// ST4-2013-0000338 20130325 MOD START
		// ■■■ 処理速度カスタマイズ M.IKUMA START ■■■
		// 工事案件番号を取得
		String kjak_no = inMap.getString(JBSbatKKIFM422.KOJIAK_NO);
		// 工事番号の重複をチェック
		if (this.mKJAK_NO.equals((kjak_no)))
		{
			// 同じ工事案件番号なのでレコードスキップ
			super.logPrint.printDebugLog("ネット・電話同時工事：工事案件番号" + kjak_no);
			return null;
		}
		
		// 工事案件番号を一時保持
		this.mKJAK_NO = kjak_no;
		// ■■■ 処理速度カスタマイズ M.IKUMA END ■■■

		// 入出力インターフェイスオブジェクトを生成
		JBSbatServiceInterfaceMap mapKKIFE035 = new JBSbatServiceInterfaceMap();
		
		/* ++++++++++ v1.01.00 追加開始 ++++++++++ */
		// 初期値設定
		// 更新対象案件番号
		mapKKIFE035.setString(JBSbatKKIFE160.UPD_TRGT_KOJIAK_NO, "          ");
		// 工事案件種別コード
		mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_SBT_CD, "999");
		// 工事案件依頼年月日
		mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_REQYMD, "99999999");
		// 工事案件実施年月日
		mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_JSSI_YMD, "99999999");
		// 工事案件中止年月日
		mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_STP_YMD, "99999999");
		// 市区町村コード
		mapKKIFE035.setString(JBSbatKKIFE160.AD_CD, "00000000000");
		// FTTH設備管理連携フラグ
		mapKKIFE035.setString(JBSbatKKIFE160.RNKI_FLG1, "0");
		// eARMS連携フラグ
		mapKKIFE035.setString(JBSbatKKIFE160.RNKI_FLG2, "0");
		// 芯線管理連携フラグ
		mapKKIFE035.setString(JBSbatKKIFE160.RNKI_FLG3, "0");
		/* ++++++++++ v1.01.00 追加終了 ++++++++++ */
		
		// 項目を設定
		mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_NO,
				inMap.getString(JBSbatKKIFM422.KOJIAK_NO));					// 案件番号 
		if (!"".equals(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM422.UPD_TRGT_KOJIAK_NO))))
		{
			mapKKIFE035.setString(JBSbatKKIFE160.UPD_TRGT_KOJIAK_NO,
					inMap.getString(JBSbatKKIFM422.UPD_TRGT_KOJIAK_NO));	// 更新対象案件番号 
		}
		mapKKIFE035.setString(JBSbatKKIFE160.SVC_KEI_NO, 
				inMap.getString(JBSbatKKIFM422.SVC_KEI_NO));				// サービス契約番号
		if (!"".equals(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM422.KOJIAK_SBT_CD))))
		{
			mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_SBT_CD, 
					inMap.getString(JBSbatKKIFM422.KOJIAK_SBT_CD));			// 工事案件種別コード
		}
		/* ++++++++++ v1.01.00 修正開始 ++++++++++ */
		//mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_REQYMD, 
		//		inMap.getString(JBSbatKKIFE160.KOJIAK_REQYMD));				// 工事案件依頼年月日
		mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_REQYMD, 
				getCkan2099(inMap.getString(JBSbatKKIFM422.KOJIAK_REQYMD))); // 工事案件依頼年月日
		//mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_JSSI_YMD, 
		//		inMap.getString(JBSbatKKIFE160.KOJIAK_JSSI_YMD));			// 工事案件実施年月日
		mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_JSSI_YMD, 
				getCkan2099(inMap.getString(JBSbatKKIFM422.KOJIAK_JSSI_YMD))); // 工事案件実施年月日
		//mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_STP_YMD, 
		//		inMap.getString(JBSbatKKIFE160.KOJIAK_STP_YMD));			// 工事案件中止年月日
		mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_STP_YMD, 
				getCkan2099(inMap.getString(JBSbatKKIFM422.KOJIAK_STP_YMD))); // 工事案件中止年月日
		/* ++++++++++ v1.01.00 修正開始 ++++++++++ */
		if (!"".equals(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM422.AD_CD))))
		{
			mapKKIFE035.setString(JBSbatKKIFE160.AD_CD, 
					inMap.getString(JBSbatKKIFM422.AD_CD));					// 市区町村コード
		}
		if (!"".equals(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM422.RNKI_FLG1))))
		{
			mapKKIFE035.setString(JBSbatKKIFE160.RNKI_FLG1, 
					inMap.getString(JBSbatKKIFM422.RNKI_FLG1));				// FTTH設備管理連携フラグ
		}
		if (!"".equals(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM422.RNKI_FLG2))))
		{
			mapKKIFE035.setString(JBSbatKKIFE160.RNKI_FLG2, 
					inMap.getString(JBSbatKKIFM422.RNKI_FLG2));				// eARMS連携フラグ
		}
		if (!"".equals(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM422.RNKI_FLG3))))
		{
			mapKKIFE035.setString(JBSbatKKIFE160.RNKI_FLG3, 
					inMap.getString(JBSbatKKIFM422.RNKI_FLG3));				// 芯線管理連携フラグ
		}
		mapKKIFE035.setString(JBSbatKKIFE160.PID, 
				inMap.getString(JBSbatKKIFM422.PID));						// P-ID

		// 工事案件ステータスを変換してセット
		String kojiak_stat = inMap.getString(JBSbatKKIFM422.KOJIAK_STAT);
		// 登録済または工事完了済
		if ((JKKBatConst.KOJIAK_STAT_ADDZM.equals(kojiak_stat))
			|| (JKKBatConst.KOJIAK_STAT_KJFIN.equals(kojiak_stat)))
		{
			mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_STAT, "1");			// 工事完了
		}
		// 中止
		else if (JKKBatConst.KOJIAK_STAT_STP.equals(kojiak_stat))
		{
			mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_STAT, "9");			// 工事NG
		}
		else
		{
			mapKKIFE035.setString(JBSbatKKIFE160.KOJIAK_STAT, "0");			// 工事未完了
		}
		// ST4-2013-0000338 20130325 MOD END

		// 出力フラグを設定
		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("".equals(ymd) || target_value.equals(ymd))
		{
			return ret_value;
		}
		return ymd;
	}
	/* ++++++++++ v1.01.00 追加終了 ++++++++++ */
}
