/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKAdHenkoHoyuDataChstuOtr
*	ソースファイル名	：JBSbatKKAdHenkoHoyuDataChstuOtr.java
*	作成者				：富士通　
*	作成日				：2012年09月01日
*＜機能概要＞
*　住所マスタ最新レコードデータ抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00    2012/09/01  富士通	    新規作成
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatConst;
import eo.business.common.JZMBatCommon;
import eo.business.util.table.JBSbatKK_T_CHGTGAD_CD_WK;
import eo.business.util.table.JBSbatKK_T_CHG_AD_JGRTWK;
import eo.common.util.JCCOracleSeqUtil;
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 JBSbatKKAdHenkoHoyuDataChstuOtr extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** シーケンス名*/
	private static final String SEQ_NAME = "SEQ_CHG_AD_JGRTWK_NO";

	/** テーブルアクセスクラス*/
	private JBSbatSQLAccess db_CHGTGAD_CD_WK = null;
	private JBSbatSQLAccess db_CHG_AD_JGRTWK = null;
	private JBSbatSQLAccess db_CK_T_PROSCST = null;
	private JBSbatSQLAccess db_DK_T_YBKIKI_HAISO = null;
	private JBSbatSQLAccess db_KU_T_SENKO_DSGN = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスを生成します
		db_CHGTGAD_CD_WK = new JBSbatSQLAccess(commonItem, "KK_T_CHGTGAD_CD_WK");
		db_CHG_AD_JGRTWK = new JBSbatSQLAccess(commonItem, "KK_T_CHG_AD_JGRTWK");
		db_CK_T_PROSCST = new JBSbatSQLAccess(commonItem, "CK_T_PROSCST");
		db_DK_T_YBKIKI_HAISO = new JBSbatSQLAccess(commonItem, "DK_T_YBKIKI_HAISO");
		db_KU_T_SENKO_DSGN = new JBSbatSQLAccess(commonItem, "KU_T_SENKO_DSGN");

		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{

	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		String strAdCd = JZMBatCommon.getInMapData(inMap, "AD_CD");

		// 問合せ客
		// パラメタを設定する
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		dbList. setValue(strAdCd);
		//SELECT文を実行
		db_CK_T_PROSCST.selectBySqlDefine(dbList,"KK_SELECT_003");

		//結果を取得
		JBSbatCommonDBInterface map = new JBSbatCommonDBInterface (); 
		while((map=db_CK_T_PROSCST.selectNext())!=null){
			//パラメタ設定
			JBSbatCommonDBInterface inDbMap = new JBSbatCommonDBInterface ();
			//シーケンス番号取得
			String seqNo = JCCOracleSeqUtil.getFormatedNextSeq(commonItem.getConnection(), SEQ_NAME, "", JKKBatConst.SEQ_KETA);
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.CHG_AD_JGRTWK_NO, seqNo);
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.CHG_TG_SCHEMA_ID, "CK0051");
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.CHG_TG_KMK_NM_EINM, "PROSCST_AD_CD");
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.PROSCST_NO, map.getString("PROSCST_NO"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AD_CD, map.getString("AD_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.PCD, map.getString("PCD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.STATE_NM, map.getString("STATE_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.CITY_NM, map.getString("CITY_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OAZTSU_NM, map.getString("OAZTSU_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AZCHO_NM, map.getString("AZCHO_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AD_SHUSEI_CD, map.getString("AD_SHUSEI_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_AD_CD, map.getString("NEW_AD_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_PCD, map.getString("NEW_PCD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_STATE_NM, map.getString("NEW_STATE_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_CITY_NM, map.getString("NEW_CITY_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_OAZTSU_NM, map.getString("NEW_OAZTSU_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_AZCHO_NM, map.getString("NEW_AZCHO_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AD_CHG_SBT_CD, map.getString("AD_CHG_SBT_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_AD_CD, map.getString("PROSCST_AD_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_PCD, map.getString("PROSCST_PCD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_STATE_NM, map.getString("PROSCST_STATE_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_CITY_NM, map.getString("PROSCST_CITY_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_OAZTSU_NM, map.getString("PROSCST_OAZTSU_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_AZCHO_NM, map.getString("PROSCST_AZCHO_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_BNCHIGO, map.getString("PROSCST_BNCHIGO"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AD_TOHAIGO_TRN_STAT_CD, JKKBatConst.HENKO_ADD_CD_MI);
			//INSERT文発行
			int count = db_CHG_AD_JGRTWK.insertByPrimaryKeys(inDbMap);
		}

		// 予備機器配送
		// パラメタを設定する
		dbList = new JBSbatCommonDBInterface();
		dbList. setValue(strAdCd);
		//SELECT文を実行
		db_DK_T_YBKIKI_HAISO.selectBySqlDefine(dbList,"KK_SELECT_001");

		//結果を取得
		map = new JBSbatCommonDBInterface (); 
		while((map=db_DK_T_YBKIKI_HAISO.selectNext())!=null){
			//パラメタ設定
			JBSbatCommonDBInterface inDbMap = new JBSbatCommonDBInterface ();
			//シーケンス番号取得
			String seqNo = JCCOracleSeqUtil.getFormatedNextSeq(commonItem.getConnection(), SEQ_NAME, "", JKKBatConst.SEQ_KETA);
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.CHG_AD_JGRTWK_NO, seqNo);
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.CHG_TG_SCHEMA_ID, "DK0061");
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.CHG_TG_KMK_NM_EINM, "YBKIKI_HISOS_AD_CD");
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.YBKIKI_HAISO_NO, map.getString("YBKIKI_HAISO_NO"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AD_CD, map.getString("AD_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.PCD, map.getString("PCD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.STATE_NM, map.getString("STATE_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.CITY_NM, map.getString("CITY_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OAZTSU_NM, map.getString("OAZTSU_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AZCHO_NM, map.getString("AZCHO_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AD_SHUSEI_CD, map.getString("AD_SHUSEI_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_AD_CD, map.getString("NEW_AD_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_PCD, map.getString("NEW_PCD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_STATE_NM, map.getString("NEW_STATE_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_CITY_NM, map.getString("NEW_CITY_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_OAZTSU_NM, map.getString("NEW_OAZTSU_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_AZCHO_NM, map.getString("NEW_AZCHO_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AD_CHG_SBT_CD, map.getString("AD_CHG_SBT_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_AD_CD, map.getString("YBKIKI_HISOS_AD_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_PCD, map.getString("YBKIKI_HISOS_PCD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_STATE_NM, map.getString("YBKIKI_HISOS_STATE_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_CITY_NM, map.getString("YBKIKI_HISOS_CITY_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_OAZTSU_NM, map.getString("YBKIKI_HISOS_OAZTSU_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_AZCHO_NM, map.getString("YBKIKI_HISOS_AZCHO_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_BNCHIGO, map.getString("YBKIKI_HISOS_BNCHIGO"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AD_TOHAIGO_TRN_STAT_CD, JKKBatConst.HENKO_ADD_CD_MI);
			//INSERT文発行
			int count = db_CHG_AD_JGRTWK.insertByPrimaryKeys(inDbMap);
		}

		// 先行設計
		// パラメタを設定する
		dbList = new JBSbatCommonDBInterface();
		dbList. setValue(strAdCd);
		//SELECT文を実行
		db_KU_T_SENKO_DSGN.selectBySqlDefine(dbList,"KK_SELECT_001");

		//結果を取得
		map = new JBSbatCommonDBInterface (); 
		while((map=db_KU_T_SENKO_DSGN.selectNext())!=null){
			//パラメタ設定
			JBSbatCommonDBInterface inDbMap = new JBSbatCommonDBInterface ();
			//シーケンス番号取得
			String seqNo = JCCOracleSeqUtil.getFormatedNextSeq(commonItem.getConnection(), SEQ_NAME, "", JKKBatConst.SEQ_KETA);
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.CHG_AD_JGRTWK_NO, seqNo);
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.CHG_TG_SCHEMA_ID, "KU0101");
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.CHG_TG_KMK_NM_EINM, "SETPLACE_AD_CD");
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.SNKSKI_NO, map.getString("SNKSKI_NO"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AD_CD, map.getString("AD_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.PCD, map.getString("PCD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.STATE_NM, map.getString("STATE_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.CITY_NM, map.getString("CITY_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OAZTSU_NM, map.getString("OAZTSU_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AZCHO_NM, map.getString("AZCHO_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AD_SHUSEI_CD, map.getString("AD_SHUSEI_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_AD_CD, map.getString("NEW_AD_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_PCD, map.getString("NEW_PCD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_STATE_NM, map.getString("NEW_STATE_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_CITY_NM, map.getString("NEW_CITY_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_OAZTSU_NM, map.getString("NEW_OAZTSU_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.NEW_AZCHO_NM, map.getString("NEW_AZCHO_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AD_CHG_SBT_CD, map.getString("AD_CHG_SBT_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_AD_CD, map.getString("SETPLACE_AD_CD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_PCD, map.getString("SETPLACE_PCD"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_STATE_NM, map.getString("SETPLACE_STATE_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_CITY_NM, map.getString("SETPLACE_CITY_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_OAZTSU_NM, map.getString("SETPLACE_OAZTSU_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_AZCHO_NM, map.getString("SETPLACE_AZCHO_NM"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.OLD_BNCHIGO, map.getString("SETPLACE_AD_BNCHIGO"));
			inDbMap. setValue(JBSbatKK_T_CHG_AD_JGRTWK.AD_TOHAIGO_TRN_STAT_CD, JKKBatConst.HENKO_ADD_CD_MI);
			//INSERT文発行
			int count = db_CHG_AD_JGRTWK.insertByPrimaryKeys(inDbMap);
		}
		
		
		//変更対象住所コードワークの処理ステータスの更新
		//パラメタを設定（SET句）
		JBSbatCommonDBInterface valueMap = new JBSbatCommonDBInterface ();
		valueMap. setValue(JBSbatKK_T_CHGTGAD_CD_WK.CKADGAI_CHG_AD_TRN_STAT_CD, JKKBatConst.HENKO_ADD_CD_ZM);

		//パラメタを設定（WHERE句）
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface ();
		whereMap. setValue(JBSbatKK_T_CHGTGAD_CD_WK.AD_CD, strAdCd);

		//UPDATE文を実行する。
		db_CHGTGAD_CD_WK.updateByPrimaryKeys(whereMap, valueMap);

		//住所コード単位でコミットする。
		super.commit();

		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
		
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CHGTGAD_CD_WK.close();
		db_CHG_AD_JGRTWK.close();
		db_CK_T_PROSCST.close();
		db_DK_T_YBKIKI_HAISO.close();
		db_KU_T_SENKO_DSGN.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
