/*********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名			：eo顧客基幹システム
 *	モジュール名		：JBSbatFUMoveNaviDataDel
 *	ソースファイル名	：JBSbatFUMoveNaviDataDel.java
 *	作成者				：富士通
 *	作成日				：2012年07月10日
 *＜機能概要＞
 *　引越ナビ不要データ削除処理部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2012/07/10   富士通		新規作成
 *	v1.01.00	2013/05/15   FJ)岡井	【TAI-2013-0000026】日中バッチ運用日付対応
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.table.JBSbatFU_T_ADCHWMN;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;

/**
 * (クラスの機能概要)
 * <p>
 *<BR>
 *
 * @author 富士通
 */
public class JBSbatFUMoveNaviDataDel extends JBSbatBusinessService
{
	/** ▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼ */
	/** テーブル(住所変更Ｗｅｂ申込内容) */
	private static final String D_TBL_NAME_FU_T_ADCHWMN = "FU_T_ADCHWMN";

	/** テーブル(住所変更Ｗｅｂ申込内容電話番号明細) */
	private static final String D_TBL_NAME_TLN_DTL = "FU_T_ADCHWMN_TLN_DTL";

	/** テーブル(住所変更Ｗｅｂ申込内容ＳＴＢ明細) */
	private static final String D_TBL_NAME_STB_DTL = "FU_T_ADCHWMN_STB_DTL";

	/** SQL定義キー(FU_SELECT_002) */
	private static final String FU_SELECT_002 = "FU_SELECT_002";

	/** SQL定義キー(FU_UPDATE_002) */
	private static final String FU_UPDATE_002 = "FU_UPDATE_002";

	/** SQL定義キー(FU_UPDATE_001) */
	private static final String TLN_DTL_FU_UPDATE_001 = "FU_UPDATE_001";

	/** SQL定義キー(FU_UPDATE_001) */
	private static final String STB_DTL_FU_UPDATE_001 = "FU_UPDATE_001";

	/** テーブルアクセスクラス(住所変更Ｗｅｂ申込内容) */
	private JBSbatSQLAccess db_FU_T_ADCHWMN = null;

	/** テーブルアクセスクラス(住所変更Ｗｅｂ申込内容電話番号明細) */
	private JBSbatSQLAccess db_TLN_DTL = null;

	/** テーブルアクセスクラス(住所変更Ｗｅｂ申込内容ＳＴＢ明細) */
	private JBSbatSQLAccess db_STB_DTL = null;

	/** ▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲ */

	/**
	 * 初期処理
	 *
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
		/** ▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼ */
		/** ▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼ */
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_FU_T_ADCHWMN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_FU_T_ADCHWMN);
		db_TLN_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_TLN_DTL);
		db_STB_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_STB_DTL);
		/** ▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲ */
		/** ▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲ */
	}

	/**
	 * 主処理
	 *
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
		/** ▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼ */

		String strJobid = commonItem.getJobid();
		String strBatchUserId = commonItem.getBatchUserId();
		String strSqlDefFilePath = commonItem.getSqlDefFilePath();
		super.logPrint.printDebugLog(strJobid + ":" + strBatchUserId);
		super.logPrint.printDebugLog(strJobid + ":" + strSqlDefFilePath);

		// オンライン運用日付を取得する。
		String strOnlineOpeDate = commonItem.getOnlineOpeDate();

		super.logPrint.printDebugLog(strJobid + ":オンライン運用日付:" + strOnlineOpeDate);

		// -------- （１）住所変更Ｗｅｂ申込情報連携済みデータ抽出処理 --------//

		// 住所変更Ｗｅｂ申込データ抽出結果格納領域を生成する。
		JBSbatCommonDBInterface selAdchwmnInfo = new JBSbatCommonDBInterface();

		// 住所変更Ｗｅｂ申込データ抽出する。
		selAdchwmnInfo.setValue(strOnlineOpeDate); // オンライン運用日付
		executeFU_SELECT_002(selAdchwmnInfo.getList().toArray());

		// 更新対象の住所変更Ｗｅｂ申込内容リスト格納領域を生成する。
		ArrayList<String> adchwmnInfoList = new ArrayList<String>();

		for (selAdchwmnInfo = db_FU_T_ADCHWMN.selectNext(); null != selAdchwmnInfo; selAdchwmnInfo = db_FU_T_ADCHWMN.selectNext())
		{
			// 住所変更Ｗｅｂ申込内容番号
			String adchwmnNo = selAdchwmnInfo.getString(JBSbatFU_T_ADCHWMN.ADCHWMN_NO);
			adchwmnInfoList.add(adchwmnNo);
		}

		if (adchwmnInfoList.size() == 0)
		{
			super.logPrint.printDebugLog(strJobid + ":対象データが0件の為、後続処理を行わずに終了。");
			return null;
		}

		// -------- （２）住所変更Ｗｅｂ申込情報連携済みデータ更新処理 --------//

		for (int i = 0; i < adchwmnInfoList.size(); i++)
		{
			String adchwmnNo = adchwmnInfoList.get(i);

			super.logPrint.printDebugLog(strJobid + ":住所変更Web申込内容の無効フラグを更新する。");
			super.logPrint.printDebugLog(strJobid + ":住所変更Ｗｅｂ申込内容番号:" + adchwmnNo);

			// 住所変更Ｗｅｂ申込内容
			JBSbatCommonDBInterface updAdchwmnInfo = new JBSbatCommonDBInterface();
			updAdchwmnInfo.setValue(adchwmnNo); // 住所変更Ｗｅｂ申込内容番号
			executeFU_UPDATE_002(updAdchwmnInfo.getList().toArray());

			// 住所変更Ｗｅｂ申込内容TEL
			JBSbatCommonDBInterface updAdchwmnTelInfo = new JBSbatCommonDBInterface();
			updAdchwmnTelInfo.setValue(adchwmnNo); // 住所変更Ｗｅｂ申込内容番号
			executeTLN_DTL_FU_UPDATE_001(updAdchwmnTelInfo.getList().toArray());

			// 住所変更Ｗｅｂ申込内容STB
			JBSbatCommonDBInterface updAdchwmnStbInfo = new JBSbatCommonDBInterface();
			updAdchwmnStbInfo.setValue(adchwmnNo); // 住所変更Ｗｅｂ申込内容番号
			executeSTB_DTL_FU_UPDATE_001(updAdchwmnStbInfo.getList().toArray());
		}

		return null;
		/** ▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲ */
	}

	/**
	 * 業務サービス終了処理
	 *
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
		/** ▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼ */
		/** ▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼ */
		// DBアクセスクラスをクローズします
		db_FU_T_ADCHWMN.close();
		db_TLN_DTL.close();
		db_STB_DTL.close();
		/** ▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲ */
		/** ▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲ */
	}

	/** ▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼ */

	/**
	 * SQLKEY(FU_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 *
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 *
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	オンライン運用日付
	 * </pre>
	 * <p>
	 *
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeFU_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[0].toString());
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_FU_T_ADCHWMN.selectBySqlDefine(paramList, FU_SELECT_002);
	}

	/**
	 * SQLKEY(FU_UPDATE_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 *
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 *
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	住所変更Web申込内容番号
	 * </pre>
	 * <p>
	 *
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeFU_UPDATE_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_FU_T_ADCHWMN.executeBySqlDefine(paramList, FU_UPDATE_002);
	}

	/**
	 * SQLKEY(FU_UPDATE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 *
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 *
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	住所変更Web申込内容番号
	 * </pre>
	 * <p>
	 *
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeTLN_DTL_FU_UPDATE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_TLN_DTL.executeBySqlDefine(paramList, TLN_DTL_FU_UPDATE_001);
	}

	/**
	 * SQLKEY(FU_UPDATE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 *
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 *
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	住所変更Web申込内容番号
	 * </pre>
	 * <p>
	 *
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeSTB_DTL_FU_UPDATE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_STB_DTL.executeBySqlDefine(paramList, STB_DTL_FU_UPDATE_001);
	}
	/** ▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲ */
}
