/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKGetKsCtrlDataAd
*	ソースファイル名	：JBSbatKKGetKsCtrlDataAd.java
*	作成者				：富士通　
*	作成日				：2011年07月28日
*＜機能概要＞
*　監視制御データ抽出（住所情報）部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/28   富士通		新規作成
*	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.JBSbatKKIFE163;
import eo.business.util.table.JBSbatZM_M_AD;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
* 監視制御データ抽出（住所情報）<BR>
* <BR>
* 監視制御システムに連携する住所情報を抽出し、外部用住所情報送信ファイルを生成する。<BR>
* 対象は「住所」のデータ全件とする。
*<BR>
* @author 富士通
*/
public class JBSbatKKGetKsCtrlDataAd 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(JBSbatKKIFE163.HAISHI_YM, "999999");
		// 通称フラグ変更年月
		mapKKIFE035.setString(JBSbatKKIFE163.TUSHO_CD_CHG_YM, "999999");
		/* ++++++++++ v1.01.00 追加終了 ++++++++++ */
		
		// 項目を設定
		mapKKIFE035.setString(JBSbatKKIFE163.AD_CD, 
				inMap.getString(JBSbatZM_M_AD.AD_CD));					// 住所コード
		mapKKIFE035.setString(JBSbatKKIFE163.PCD, 
				inMap.getString(JBSbatZM_M_AD.PCD));					// 郵便番号
		mapKKIFE035.setString(JBSbatKKIFE163.STATE_NM, 
				inMap.getString(JBSbatZM_M_AD.STATE_NM));				// 都道府県名
		mapKKIFE035.setString(JBSbatKKIFE163.CITY_NM, 
				inMap.getString(JBSbatZM_M_AD.CITY_NM));				// 市区町村名
		mapKKIFE035.setString(JBSbatKKIFE163.OAZTSU_NM, 
				inMap.getString(JBSbatZM_M_AD.OAZTSU_NM));				// 大字通称名
		mapKKIFE035.setString(JBSbatKKIFE163.AZCHO_NM, 
				inMap.getString(JBSbatZM_M_AD.AZCHO_NM));				// 字丁目名
		mapKKIFE035.setString(JBSbatKKIFE163.STATE_KANJI_CNT, 
				inMap.getBigDecimal(JBSbatZM_M_AD.STATE_KANJI_CNT));	// 都道府県漢字数
		mapKKIFE035.setString(JBSbatKKIFE163.CITY_KANJI_CNT, 
				inMap.getBigDecimal(JBSbatZM_M_AD.CITY_KANJI_CNT));		// 市区町村漢字数
		mapKKIFE035.setString(JBSbatKKIFE163.OAZTSU_KANJI_CNT, 
				inMap.getBigDecimal(JBSbatZM_M_AD.OAZTSU_KANJI_CNT));	// 大字通称漢字数
		mapKKIFE035.setString(JBSbatKKIFE163.AZCHO_KANJI_CNT, 
				inMap.getBigDecimal(JBSbatZM_M_AD.AZCHO_KANJI_CNT));	// 字丁目漢字数
		mapKKIFE035.setString(JBSbatKKIFE163.AD_KANJI_CNT, 
				inMap.getBigDecimal(JBSbatZM_M_AD.AD_KANJI_CNT));		// 住所漢字数
		mapKKIFE035.setString(JBSbatKKIFE163.STATE_KANA, 
				inMap.getString(JBSbatZM_M_AD.STATE_KANA));				// 都道府県カナ名
		mapKKIFE035.setString(JBSbatKKIFE163.CITY_KANA, 
				inMap.getString(JBSbatZM_M_AD.CITY_KANA));				// 市区町村カナ名
		mapKKIFE035.setString(JBSbatKKIFE163.OAZTSU_KANA, 
				inMap.getString(JBSbatZM_M_AD.OAZTSU_KANA));			// 大字通称カナ名
		mapKKIFE035.setString(JBSbatKKIFE163.AZCHO_KANA, 
				inMap.getString(JBSbatZM_M_AD.AZCHO_KANA));				// 字丁目カナ名
		mapKKIFE035.setString(JBSbatKKIFE163.STATE_KANA_CNT, 
				inMap.getBigDecimal(JBSbatZM_M_AD.STATE_KANA_CNT));		// 都道府県カナ数
		mapKKIFE035.setString(JBSbatKKIFE163.CITY_KANA_CNT, 
				inMap.getBigDecimal(JBSbatZM_M_AD.CITY_KANA_CNT));		// 市区町村カナ数
		mapKKIFE035.setString(JBSbatKKIFE163.OAZTSU_KANA_CNT, 
				inMap.getBigDecimal(JBSbatZM_M_AD.OAZTSU_KANA_CNT));	// 大字通称カナ数
		mapKKIFE035.setString(JBSbatKKIFE163.AZCHO_KANA_CNT, 
				inMap.getBigDecimal(JBSbatZM_M_AD.AZCHO_KANA_CNT));		// 字丁目カナ数
		mapKKIFE035.setString(JBSbatKKIFE163.AD_KANA_CNT, 
				inMap.getBigDecimal(JBSbatZM_M_AD.AD_KANA_CNT));		// 住所カナ数
		mapKKIFE035.setString(JBSbatKKIFE163.AD_TSTAYMD, 
				inMap.getString(JBSbatZM_M_AD.AD_TSTAYMD));				// 住所適用開始年月日
		/* ++++++++++ v1.01.00 修正開始 ++++++++++ */
		//mapKKIFE035.setString(JBSbatKKIFE163.AD_TENDYMD, 
		//		inMap.getString(JBSbatZM_M_AD.AD_TENDYMD));				// 住所適用終了年月日
		mapKKIFE035.setString(JBSbatKKIFE163.AD_TENDYMD, 
				getCkan2099(inMap.getString(JBSbatZM_M_AD.AD_TENDYMD))); // 住所適用終了年月日
		/* ++++++++++ v1.01.00 修正終了 ++++++++++ */
		mapKKIFE035.setString(JBSbatKKIFE163.TORINA_SKBT_FLG, 
				inMap.getString(JBSbatZM_M_AD.TORINA_SKBT_FLG));		// 通り名識別
		mapKKIFE035.setString(JBSbatKKIFE163.TUSHO_CD, 
				inMap.getString(JBSbatZM_M_AD.TUSHO_CD));				// 通称フラグ
		mapKKIFE035.setString(JBSbatKKIFE163.EXEC_YM, 
				inMap.getString(JBSbatZM_M_AD.EXEC_YM));				// 施行年月
		/* ++++++++++ v1.01.00 修正開始 ++++++++++ */
		//mapKKIFE035.setString(JBSbatKKIFE163.HAISHI_YM, 
		//		inMap.getString(JBSbatZM_M_AD.HAISHI_YM));				// 廃止年月
		mapKKIFE035.setString(JBSbatKKIFE163.HAISHI_YM, 
				getCkan209912(inMap.getString(JBSbatZM_M_AD.HAISHI_YM))); // 廃止年月
		/* ++++++++++ v1.01.00 修正終了 ++++++++++ */
		mapKKIFE035.setString(JBSbatKKIFE163.KOSHO_CHG_YM, 
				inMap.getString(JBSbatZM_M_AD.KOSHO_CHG_YM));			// 呼称変更年月
		mapKKIFE035.setString(JBSbatKKIFE163.PCD_CHG_YM, 
				inMap.getString(JBSbatZM_M_AD.PCD_CHG_YM));				// 郵便番号変更年月
		/* ++++++++++ v1.01.00 修正開始 ++++++++++ */
		//mapKKIFE035.setString(JBSbatKKIFE163.TUSHO_CD_CHG_YM, 
		//		inMap.getString(JBSbatZM_M_AD.TUSHO_CD_CHG_YM));		// 通称フラグ変更年月
		mapKKIFE035.setString(JBSbatKKIFE163.TUSHO_CD_CHG_YM, 
				getCkan209912(inMap.getString(JBSbatZM_M_AD.TUSHO_CD_CHG_YM))); // 通称フラグ変更年月
		/* ++++++++++ v1.01.00 修正終了 ++++++++++ */
		mapKKIFE035.setString(JBSbatKKIFE163.CHIBAN_CHG_YM, 
				inMap.getString(JBSbatZM_M_AD.CHIBAN_CHG_YM));			// 地番変更年月
		mapKKIFE035.setString(JBSbatKKIFE163.AD_SHUSEI_CD, 
				inMap.getString(JBSbatZM_M_AD.AD_SHUSEI_CD));			// 修正コード
		mapKKIFE035.setString(JBSbatKKIFE163.NEW_AD_CD, 
				inMap.getString(JBSbatZM_M_AD.NEW_AD_CD));				// 新住所コード
		mapKKIFE035.setString(JBSbatKKIFE163.AD_CHG_SBT_CD, 
				inMap.getString(JBSbatZM_M_AD.AD_CHG_SBT_CD));			// 住所変更コード
		mapKKIFE035.setString(JBSbatKKIFE163.HOSEI_TG_YMD, 
				inMap.getString(JBSbatZM_M_AD.HOSEI_TG_YMD));			// 補正対象日
		mapKKIFE035.setString(JBSbatKKIFE163.AZCHO_TAIHI, 
				inMap.getString(JBSbatZM_M_AD.AZCHO_TAIHI));			// 字丁目退避
		mapKKIFE035.setString(JBSbatKKIFE163.AZCHO_KANJI_CNT_TAIHI, 
				inMap.getBigDecimal(JBSbatZM_M_AD.AZCHO_KANJI_CNT_TAIHI));	// 字丁目漢字数退避
		
		// 出力フラグを設定
		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;
	}
	
	/**
	 * 2099年を9999年に置換<BR>
	 * <BR>
	 * 入力文字列が209912である場合に999999で返却します。<BR>
	 * <BR>
	 * @param ymd 置換前年月日
	 * @return 209912の場合999999、それ以外の場合は入力値
	 * @throws Exception 
	 */
	private String getCkan209912(String ymd) throws Exception
	{
		String target_value = "209912";
		String ret_value = "999999";
		if(target_value.equals(ymd))
		{
			return ret_value;
		}
		return ymd;
	}
	/* ++++++++++ v1.01.00 追加終了 ++++++++++ */
}
