/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKkPlcNoChgTgCst
*	ソースファイル名	：JBSbatKKKkPlcNoChgTgCst.java
*	作成者				：富士通　
*	作成日				：2012年04月19日
*＜機能概要＞
*　機器場所番号変更対象抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2012/04/19	FJ)岡田		新規作成
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM188;
import eo.business.util.file.JBSbatKKIFM189;
import eo.business.util.table.JBSbatKK_T_KKTK_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_PLNO_RNKTGKK_WK;
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;
import eo.framework.log.JBSbatLogUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKKkPlcNoChgTgCst extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(場所番号連携対象機器ワーク)*/
	private static final String D_TBL_NAME_KK_T_PLNO_RNKTGKK_WK = "KK_T_PLNO_RNKTGKK_WK";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String KK_T_PLNO_RNKTGKK_WK_KK_SELECT_001 = "KK_SELECT_001";

	/** SQL定義キー(KK_SELECT_002)*/
	private static final String KK_T_PLNO_RNKTGKK_WK_KK_SELECT_002 = "KK_SELECT_002";

	/** SQL定義キー(KK_SELECT_003)*/
	private static final String KK_T_PLNO_RNKTGKK_WK_KK_SELECT_003 = "KK_SELECT_003";

	/** SQL定義キー(KK_SELECT_004)*/
	private static final String KK_T_PLNO_RNKTGKK_WK_KK_SELECT_004 = "KK_SELECT_004";

	/** SQL定義キー(KK_SELECT_005)*/
	private static final String KK_T_PLNO_RNKTGKK_WK_KK_SELECT_005 = "KK_SELECT_005";

	/** テーブルアクセスクラス(場所番号連携対象機器ワーク)*/
	private JBSbatSQLAccess db_KK_T_PLNO_RNKTGKK_WK = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/**
	 * 過去履歴モード：過去履歴判定なし
	 */
	private static final String KAKO_RIREKI_MODE_OFF = "0";
	
	/**
	 * 過去履歴モード：過去履歴判定あり
	 */
	private static final String KAKO_RIREKI_MODE_ON = "1";
	
	/**
	 * 場所番号連携状態コード：連携済
	 */
	private static final String PLACE_NO_RNK_STAT_CD_RNK_ZM = "2";
	
	/**
	 * 場所番号連携状態コード：連携中止
	 */
	private static final String PLACE_NO_RNK_STAT_CDN_RNK_STP = "3";
	
	/**
	 * 場所番号連携対象機器ワーク.機器変更番号
	 */
	private static final String KK_2401_KKCN = "KK2401KKCN";
	
	/**
	 * 機器提供サービス契約.機器変更番号
	 */
	private static final String KK_0341_KKCN = "KK0341KKCN";
	
	/**
	 * 連携中止対象List（「場所番号連携状態更新ファイル」用ワーク領域）
	 */
	private ArrayList<ArrayList<String>> rnkStpTgList = null;
	
	/**
	 * 連携可能対象List（「機器場所番号変更対象ファイル」、「場所番号連携状態更新ファイル」用ワーク領域）
	 */
	private ArrayList<ArrayList<String>> rnkPsbTgList = null;
	
	/**
	 * レコード突き合わせチェック用List
	 */
	private ArrayList<String> chkList = null;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_PLNO_RNKTGKK_WK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_PLNO_RNKTGKK_WK);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		super.logPrint.printDebugLog("execute_START");
		
		// 連携中止対象List
		rnkStpTgList = new ArrayList<ArrayList<String>>();
		
		// 連携可能対象List
		rnkPsbTgList = new ArrayList<ArrayList<String>>();
		
		// 突き合わせチェック用List
		chkList = new ArrayList<String>();
		
		// 出力共通電文を生成します。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		// 1.機器場所番号変更対象の抽出を行います。
		// (1)場所番号連携対象機器ワークより、連携中止とする機器情報を取得します。
		// (1).(a)工事案件ステータスが「中止」の機器情報を取得します。
		// SQL実行結果取得用mapを生成します。（場所番号連携対象機器ワークスキーマ取得）
		JBSbatCommonDBInterface plnoRnktgkkWkMap_001 = new JBSbatCommonDBInterface();
		
		// 場所番号連携対象機器ワーク「中止」検索
		//   ：SQL定義キー（KK_T_PLNO_RNKTGKK_WK_KK_SELECT_001）を実行します。
		executeKK_T_PLNO_RNKTGKK_WK_KK_SELECT_001();
		
		// レコードを取得します。
		plnoRnktgkkWkMap_001 = db_KK_T_PLNO_RNKTGKK_WK.selectNext();
		
		// 場所番号連携対象機器ワーク「中止」検索結果がある場合、連携中止対象とします。
		if (null != plnoRnktgkkWkMap_001)
		{
			// 連携対象データ抽出メソッドをモード"0"（過去履歴判定なし）で呼び出します。
			this.setRnkTgDataCst(plnoRnktgkkWkMap_001, rnkStpTgList, KAKO_RIREKI_MODE_OFF);
			
			if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog("場所番号連携対象機器ワーク「中止」検索終了↑");
			}
		}
		// 場所番号連携対象機器ワーク「中止」検索結果がない場合でも処理続行します。
		else
		{
			if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog(
						"場所番号連携対象機器ワーク「中止」検索" +
						"：SQL定義キー（KK_T_PLNO_RNKTGKK_WK_KK_SELECT_001）検索結果なし。");
			}
		}
		
		// (1).(b)機器提供サービス契約ステータスが「解約済」または「キャンセル済」及び、
		//   予約適用コードが「予約取消」の機器情報を取得します。
		// SQL実行結果取得用mapを生成します。（場所番号連携対象機器ワークスキーマ取得）
		JBSbatCommonDBInterface plnoRnktgkkWkMap_002 = new JBSbatCommonDBInterface();
		
		// 場所番号連携対象機器ワーク「解約済」「キャンセル済」「予約取消」検索
		//   ：SQL定義キー（KK_T_PLNO_RNKTGKK_WK_KK_SELECT_002）を実行します。
		executeKK_T_PLNO_RNKTGKK_WK_KK_SELECT_002();
		
		// レコードを取得します。
		plnoRnktgkkWkMap_002 = db_KK_T_PLNO_RNKTGKK_WK.selectNext();
		
		// 場所番号連携対象機器ワーク「解約済」「キャンセル済」「予約取消」検索結果がある場合、連携中止対象とします。
		if (null != plnoRnktgkkWkMap_002)
		{
			// 連携中止対象Listと場所番号連携対象機器ワーク「解約済」「キャンセル済」「予約取消」検索結果との
			//   場所番号連携対象機器ワーク番号による突き合わせを実施します。
			// 連携対象データ抽出メソッドをモード"0"（過去履歴判定なし）で呼び出します。
			this.setRnkTgDataCst(plnoRnktgkkWkMap_002, rnkStpTgList, KAKO_RIREKI_MODE_OFF);
			
			if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog("場所番号連携対象機器ワーク「解約済」「キャンセル済」「予約取消」検索終了↑");
			}
		}
		// 場所番号連携対象機器ワーク「解約済」「キャンセル済」「予約取消」検索結果がない場合でも処理続行します。
		else
		{
			if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog(
						"場所番号連携対象機器ワーク「解約済」「キャンセル済」「予約取消」検索" +
						"：SQL定義キー（KK_T_PLNO_RNKTGKK_WK_KK_SELECT_002）検索結果なし。");
			}
		}
		
		// (1).(c)機器提供サービス契約の対象レコードが過去履歴となった機器情報を取得します。
		// SQL実行結果取得用mapを生成します。（場所番号連携対象機器ワークスキーマ取得）
		JBSbatCommonDBInterface plnoRnktgkkWkMap_003 = new JBSbatCommonDBInterface();
		
		// 運用日を取得します。
		String opeDateStr = super.opeDate;
		
		// 検索用パラメタをセットします。
		String [] plnoRnktgkkWk_003_whereParam = {opeDateStr};
		
		// 場所番号連携対象機器ワーク「過去履歴」検索
		//   ：SQL定義キー（KK_T_PLNO_RNKTGKK_WK_KK_SELECT_003）を実行します。
		executeKK_T_PLNO_RNKTGKK_WK_KK_SELECT_003(plnoRnktgkkWk_003_whereParam);
		
		// レコードを取得します。
		plnoRnktgkkWkMap_003 = db_KK_T_PLNO_RNKTGKK_WK.selectNext();
		
		// 場所番号連携対象機器ワーク「過去履歴」検索結果がある場合、連携中止対象とします。
		if (null != plnoRnktgkkWkMap_003)
		{
			// 連携中止対象Listと場所番号連携対象機器ワーク「過去履歴」検索結果との
			//   場所番号連携対象機器ワーク番号による突き合わせを実施します。
			// 連携対象データ抽出メソッドをモード"1"（過去履歴判定あり）で呼び出します。
			this.setRnkTgDataCst(plnoRnktgkkWkMap_003, rnkStpTgList, KAKO_RIREKI_MODE_ON);
			
			if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog("場所番号連携対象機器ワーク「過去履歴」検索終了↑");
			}
		}
		// 場所番号連携対象機器ワーク「過去履歴」検索結果がない場合でも処理続行します。
		else
		{
			if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog(
						"場所番号連携対象機器ワーク「過去履歴」検索" +
						"：SQL定義キー（KK_T_PLNO_RNKTGKK_WK_KK_SELECT_003）検索結果なし。");
			}
		}
		
		// (2)場所番号連携対象機器ワークより、製造番号未決定の機器（配送未完了の機器）について
		//   連携可能か判定し、連携可能な機器情報を取得します。
		// (2).(a)製造番号未決定機器情報取得
		// SQL実行結果取得用mapを生成します。（場所番号連携対象機器ワークスキーマ取得）
		JBSbatCommonDBInterface plnoRnktgkkWkMap_004 = new JBSbatCommonDBInterface();
		
		// 場所番号連携対象機器ワーク「製造番号未決定」検索
		//   ：SQL定義キー（KK_T_PLNO_RNKTGKK_WK_KK_SELECT_004）を実行します。
		executeKK_T_PLNO_RNKTGKK_WK_KK_SELECT_004();
		
		// レコードを取得します。
		plnoRnktgkkWkMap_004 = db_KK_T_PLNO_RNKTGKK_WK.selectNext();
		
		// 場所番号連携対象機器ワーク「製造番号未決定」検索結果がある場合、連携可能対象とします。
		if (null != plnoRnktgkkWkMap_004)
		{
			// 連携中止対象Listと場所番号連携対象機器ワーク「製造番号未決定」検索結果との
			//   場所番号連携対象機器ワーク番号による突き合わせを実施します。
			// 連携対象データ抽出メソッドをモード"0"（過去履歴判定なし）で呼び出します。
			this.setRnkTgDataCst(plnoRnktgkkWkMap_004, rnkPsbTgList, KAKO_RIREKI_MODE_OFF);
			
			if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog("場所番号連携対象機器ワーク「製造番号未決定」検索終了↑");
			}
		}
		// 場所番号連携対象機器ワーク「製造番号未決定」検索結果がない場合でも処理続行します。
		else
		{
			if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog(
						"場所番号連携対象機器ワーク「製造番号未決定」検索" +
						"：SQL定義キー（KK_T_PLNO_RNKTGKK_WK_KK_SELECT_004）検索結果なし。");
			}
		}
		
		// (3)場所番号連携対象機器ワークより、工事中機器について連携可能か判定し、連携可能な機器情報を取得します。
		// (3).(a)工事中機器情報取得
		// SQL実行結果取得用mapを生成します。（場所番号連携対象機器ワークスキーマ取得）
		JBSbatCommonDBInterface plnoRnktgkkWkMap_005 = new JBSbatCommonDBInterface();
		
		// 場所番号連携対象機器ワーク「工事中」検索
		//   ：SQL定義キー（KK_T_PLNO_RNKTGKK_WK_KK_SELECT_005）を実行します。
		executeKK_T_PLNO_RNKTGKK_WK_KK_SELECT_005();
		
		// レコードを取得します。
		plnoRnktgkkWkMap_005 = db_KK_T_PLNO_RNKTGKK_WK.selectNext();
		
		// 場所番号連携対象機器ワーク「工事中」検索結果がある場合、連携可能対象とします。
		if (null != plnoRnktgkkWkMap_005)
		{
			// 連携中止対象Listと場所番号連携対象機器ワーク「工事中」検索結果との
			//   場所番号連携対象機器ワーク番号による突き合わせを実施します。
			// 連携対象データ抽出メソッドをモード"0"（過去履歴判定なし）で呼び出します。
			this.setRnkTgDataCst(plnoRnktgkkWkMap_005, rnkPsbTgList, KAKO_RIREKI_MODE_OFF);
			
			if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog("場所番号連携対象機器ワーク「工事中」検索終了↑");
			}
		}
		// 場所番号連携対象機器ワーク「工事中」検索結果がない場合でも処理続行します。
		else
		{
			if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog(
						"場所番号連携対象機器ワーク「工事中」検索" +
						"：SQL定義キー（KK_T_PLNO_RNKTGKK_WK_KK_SELECT_005）検索結果なし。");
			}
		}
		
		// 2.機器場所番号変更対象ファイルの作成を行います。
		// (1) 1.(2)(3)で取得した連携可能対象データを「機器場所番号変更対象ファイル(CSV)」に出力します。
		// 機器場所番号変更対象ファイル出力メソッドを呼び出します。
		this.setKkPlcNoChgTgFileOput(outputBean, rnkPsbTgList);
		
		if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
		{
			super.logPrint.printDebugLog("機器場所番号変更対象ファイル出力終了↑");
		}
		
		// 3.場所番号連携状態更新ファイルの作成を行います。
		// (1) 1.(1)(2)(3)で取得した連携中止対象データ及び、連携可能対象データを「場所番号連携状態更新ファイル(CSV)」に出力します。
		// 場所番号連携状態更新ファイル出力メソッドを呼び出し、連携中止対象データを出力します。
		this.setPlcNoRnkStatUpdFileOput(outputBean, rnkStpTgList, PLACE_NO_RNK_STAT_CDN_RNK_STP);
		
		if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
		{
			super.logPrint.printDebugLog("場所番号連携状態更新ファイル連携中止対象データ出力終了↑");
		}
		
		// 場所番号連携状態更新ファイル出力メソッドを呼び出し、連携可能対象データを出力します。
		this.setPlcNoRnkStatUpdFileOput(outputBean, rnkPsbTgList, PLACE_NO_RNK_STAT_CD_RNK_ZM);
		
		if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
		{
			super.logPrint.printDebugLog("場所番号連携状態更新ファイル連携可能対象データ出力終了↑");
		}
		
		super.logPrint.printDebugLog("execute_END");
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_PLNO_RNKTGKK_WK.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * SQLKEY(KK_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * </pre>
	 * <p>
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_PLNO_RNKTGKK_WK_KK_SELECT_001() throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		// DBアクセスを実行します
		db_KK_T_PLNO_RNKTGKK_WK.selectBySqlDefine(paramList, KK_T_PLNO_RNKTGKK_WK_KK_SELECT_001);
	}

	/**
	 * SQLKEY(KK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * </pre>
	 * <p>
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_PLNO_RNKTGKK_WK_KK_SELECT_002() throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		// DBアクセスを実行します
		db_KK_T_PLNO_RNKTGKK_WK.selectBySqlDefine(paramList, KK_T_PLNO_RNKTGKK_WK_KK_SELECT_002);
	}

	/**
	 * SQLKEY(KK_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	RSV_APLY_YMD
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_PLNO_RNKTGKK_WK_KK_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_PLNO_RNKTGKK_WK.selectBySqlDefine(paramList, KK_T_PLNO_RNKTGKK_WK_KK_SELECT_003);
	}

	/**
	 * SQLKEY(KK_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * </pre>
	 * <p>
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_PLNO_RNKTGKK_WK_KK_SELECT_004() throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		// DBアクセスを実行します
		db_KK_T_PLNO_RNKTGKK_WK.selectBySqlDefine(paramList, KK_T_PLNO_RNKTGKK_WK_KK_SELECT_004);
	}

	/**
	 * SQLKEY(KK_SELECT_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * </pre>
	 * <p>
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_PLNO_RNKTGKK_WK_KK_SELECT_005() throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		// DBアクセスを実行します
		db_KK_T_PLNO_RNKTGKK_WK.selectBySqlDefine(paramList, KK_T_PLNO_RNKTGKK_WK_KK_SELECT_005);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 連携対象データ抽出。<br>
	 * <p>
	 * @param plnoRnktgkkWkMap DB検索結果。
	 * @param rnkTgList 連携対象List。連携中止対象Listまたは、連携可能対象List
	 * @param mode 過去履歴モード。"0":過去履歴判定なし "1":過去履歴判定あり
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */	
	private void setRnkTgDataCst(JBSbatCommonDBInterface plnoRnktgkkWkMap, 
									ArrayList<ArrayList<String>> rnkTgList, String mode) throws Exception
	{
		String plnoRnkTgKkWkNo = "";	// 場所番号連携対象機器ワーク番号
		String kikiChgNoKk2401 = "";	// 場所番号連携対象機器ワーク.機器変更番号
		String kikiChgNoKk0341 = "";	// 機器提供サービス契約.機器変更番号
		
		JBSbatCommonDBInterface rsMap = plnoRnktgkkWkMap;
		
		// 連携対象Listと場所番号連携対象機器ワーク検索結果との
		//   場所番号連携対象機器ワーク番号による突き合わせを実施します。
		// 場所番号連携対象機器ワーク検索結果件数分繰り返します。
		while (null != rsMap)
		{
			if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog("★場所番号連携対象機器ワーク番号："
						+ JBSbatStringUtil.Rtrim(rsMap.getString(JBSbatKK_T_PLNO_RNKTGKK_WK.PLNO_RNKTGKK_WK_NO)));
			}
			
			// 過去履歴モードが"1"の場合、過去履歴判定を実施します。
			if (KAKO_RIREKI_MODE_ON.equals(mode))
			{
				// 場所番号連携対象機器ワーク.機器変更番号
				kikiChgNoKk2401 = JBSbatStringUtil.Rtrim(rsMap.getString(KK_2401_KKCN));
				
				// 機器提供サービス契約.機器変更番号
				kikiChgNoKk0341 = JBSbatStringUtil.Rtrim(rsMap.getString(KK_0341_KKCN));
				
				if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
				{
					super.logPrint.printDebugLog("★★場所番号連携対象機器ワーク.機器変更番号：" + kikiChgNoKk2401);
					super.logPrint.printDebugLog("★★機器提供サービス契約.機器変更番号      ：" + kikiChgNoKk0341);
				}
				
				// 過去履歴判定を実施します。
				// 場所番号連携対象機器ワーク.機器変更番号 < 機器提供サービス契約.機器変更番号のレコードは
				//   過去履歴として連携中止対象となります。
				if (!"".equals(kikiChgNoKk0341))
				{
					if (0 <= kikiChgNoKk2401.compareTo(kikiChgNoKk0341))
					{
						if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
						{
							super.logPrint.printDebugLog("→過去履歴ではないので対象外。次レコードへ。");
						}
						
						// 過去履歴ではないので対象外として次のレコードに進みます。
						// 次のレコードを取得します。
						rsMap = db_KK_T_PLNO_RNKTGKK_WK.selectNext();
						continue;
					}
				}
				// 機器提供サービス契約.機器変更番号に値が無い場合、過去履歴対象外として次のレコードに進みます。
				else
				{
					if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
					{
						super.logPrint.printDebugLog(
								"→機器提供サービス契約.機器変更番号に値無し、過去履歴対象外。次のレコードへ。");
					}
					
					// 次のレコードを取得します。
					rsMap = db_KK_T_PLNO_RNKTGKK_WK.selectNext();
					continue;
				}
			}
			
			// 場所番号連携対象機器ワーク番号
			plnoRnkTgKkWkNo = JBSbatStringUtil.Rtrim(rsMap.getString(JBSbatKK_T_PLNO_RNKTGKK_WK.PLNO_RNKTGKK_WK_NO));
			
			// レコードの突き合わせを行います。
			// 同一の場所番号連携対象機器ワーク番号が無い場合、連携対象として抽出します。
			if (!chkList.contains(plnoRnkTgKkWkNo))
			{
				// 場所番号連携対象機器ワーク検索結果１レコード取得メソッドを呼び出します。
				ArrayList<String> lineList = this.getPrtkwLineList(rsMap, plnoRnkTgKkWkNo);
				
				// 連携対象Listに１レコード格納します。
				rnkTgList.add(lineList);
				
				// レコード突き合わせチェック用Listに場所番号連携対象機器ワーク番号を格納します。
				chkList.add(plnoRnkTgKkWkNo);
			}
			
			// 次のレコードを取得します。
			rsMap = db_KK_T_PLNO_RNKTGKK_WK.selectNext();
		}
	}
	
	/**
	 * 機器場所番号変更対象ファイル出力。<br>
	 * <p>
	 * @param outputBean 出力共通電文。
	 * @param rnkTgList 連携可能対象List。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */	
	private void setKkPlcNoChgTgFileOput(
			JBSbatOutputItem outputBean, ArrayList<ArrayList<String>> rnkTgList) throws Exception
	{
		// 連携可能対象List件数分繰り返します。
		for (int i = 0; i < rnkTgList.size(); i++)
		{
			// 連携可能対象Listから１レコード取り出します。
			ArrayList<String> lineList = rnkTgList.get(i);
			
			// 機器場所番号変更対象ファイル用１レコード設定メソッドを呼び出し、
			//   機器場所番号変更対象ファイル用項目を設定します。
			JBSbatServiceInterfaceMap outmap = this.getKkPlcNoChgTgFileLine(lineList);
			
			// 出力フラグを設定します。
			outmap.setOutFlg(true);
			
			// 出力共通電文に入出力インターフェースを設定します。
			outputBean.addOutMapList(outmap);
		}
	}
	
	/**
	 * 場所番号連携状態更新ファイル出力。<br>
	 * <p>
	 * @param outputBean 出力共通電文。
	 * @param rnkTgList 連携対象List。連携中止対象Listまたは、連携可能対象List
	 * @param rnkMode 連携モード。"3":連携中止 "2":連携可能
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */	
	private void setPlcNoRnkStatUpdFileOput(
			JBSbatOutputItem outputBean, ArrayList<ArrayList<String>> rnkTgList, String rnkMode) throws Exception
	{
		// 連携対象List件数分繰り返します。
		for (int i = 0; i < rnkTgList.size(); i++)
		{
			// 連携対象Listから１レコードを取り出します。
			ArrayList<String> lineList = rnkTgList.get(i);
			
			// 場所番号連携状態更新ファイル用１レコード設定メソッドを呼び出し、
			//   場所番号連携状態更新ファイル用項目を設定します。
			JBSbatServiceInterfaceMap outmap = this.getPlcNoRnkStatUpdFileLine(lineList, rnkMode);
			
			// 出力フラグを設定します。
			outmap.setOutFlg(true);
			
			// 出力共通電文に入出力インターフェースを設定します。
			outputBean.addOutMapList_2(outmap);
		}
	}
	
	/**
	 * 場所番号連携対象機器ワーク検索結果１レコード取得。<br>
	 * <p>
	 * @param plnoRnktgkkWkMap DB検索結果。
	 * @param plnoRnkTgKkWkNo 場所番号連携対象機器ワーク番号。
	 * @return ArrayList<String> １レコード格納List。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */	
	private ArrayList<String> getPrtkwLineList(JBSbatCommonDBInterface plnoRnktgkkWkMap, String plnoRnkTgKkWkNo) throws Exception
	{
		String svcKeiNo = "";			// サービス契約番号
		String kktkSvcKeiNo = "";		// 機器提供サービス契約番号
		String placeNo = "";			// 場所番号
		String updDtm = "";				// 更新年月日時分秒
		String taknkikiModelCd = "";	// 宅内機器形式コード
		String kikiSeizoNo = "";		// 機器製造番号
		
		ArrayList<String> lineList = new ArrayList<String>();
		
		// サービス契約番号
		svcKeiNo = JBSbatStringUtil.Rtrim(plnoRnktgkkWkMap.getString(JBSbatKK_T_PLNO_RNKTGKK_WK.SVC_KEI_NO));
		
		// 機器提供サービス契約番号
		kktkSvcKeiNo = JBSbatStringUtil.Rtrim(plnoRnktgkkWkMap.getString(JBSbatKK_T_PLNO_RNKTGKK_WK.KKTK_SVC_KEI_NO));
		
		// 場所番号
		placeNo = plnoRnktgkkWkMap.getBigDecimal(JBSbatKK_T_PLNO_RNKTGKK_WK.PLACE_NO).toString();
		
		// 更新年月日時分秒
		updDtm = JBSbatStringUtil.Rtrim(plnoRnktgkkWkMap.getString(JBSbatKK_T_PLNO_RNKTGKK_WK.UPD_DTM));
		
		// 宅内機器形式コード
		taknkikiModelCd = JBSbatStringUtil.Rtrim(plnoRnktgkkWkMap.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_MODEL_CD));
		
		// 機器製造番号
		kikiSeizoNo = JBSbatStringUtil.Rtrim(plnoRnktgkkWkMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SEIZO_NO));
		
		if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
		{
			super.logPrint.printDebugLog("場所番号連携対象機器ワーク番号：" + plnoRnkTgKkWkNo);
			super.logPrint.printDebugLog("サービス契約番号              ：" + svcKeiNo);
			super.logPrint.printDebugLog("機器提供サービス契約番号      ：" + kktkSvcKeiNo);
			super.logPrint.printDebugLog("場所番号                      ：" + placeNo);
			super.logPrint.printDebugLog("更新年月日時分秒              ：" + updDtm);
			super.logPrint.printDebugLog("宅内機器形式コード            ：" + taknkikiModelCd);
			super.logPrint.printDebugLog("機器製造番号                  ：" + kikiSeizoNo);
		}
		
		// 1レコード分格納します。
		lineList.add(plnoRnkTgKkWkNo);
		lineList.add(svcKeiNo);
		lineList.add(kktkSvcKeiNo);
		lineList.add(placeNo);
		lineList.add(updDtm);
		lineList.add(taknkikiModelCd);
		lineList.add(kikiSeizoNo);
		
		return lineList;
	}
	
	/**
	 * 機器場所番号変更対象ファイル用１レコード設定。<br>
	 * <p>
	 * @param lineList 連携対象List１レコード。
	 * @return JBSbatServiceInterfaceMap １レコード格納入出力インターフェースオブジェクト。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */	
	private JBSbatServiceInterfaceMap getKkPlcNoChgTgFileLine(ArrayList<String> lineList) throws Exception
	{
		String svcKeiNo = "";				// サービス契約番号
		String kktkSvcKeiNo = "";			// 機器提供サービス契約番号
		String taknkikiModelCd = "";		// 宅内機器形式コード
		String kikiSeizoNo = "";			// 機器製造番号
		
		// 入出力インターフェースオブジェクトを生成します。
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		
		// 機器場所番号変更対象ファイル用項目を設定します。
		svcKeiNo = lineList.get(1);							// サービス契約番号
		kktkSvcKeiNo = lineList.get(2);						// 機器提供サービス契約番号
		taknkikiModelCd = lineList.get(5);					// 宅内機器形式コード
		kikiSeizoNo = lineList.get(6);						// 機器製造番号
		long setplaceNo = Long.parseLong(lineList.get(3));	// 設置場所番号
		
		if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
		{
			super.logPrint.printDebugLog("サービス契約番号        ：" + svcKeiNo);
			super.logPrint.printDebugLog("機器提供サービス契約番号：" + kktkSvcKeiNo);
			super.logPrint.printDebugLog("宅内機器形式コード      ：" + taknkikiModelCd);
			super.logPrint.printDebugLog("機器製造番号            ：" + kikiSeizoNo);
			super.logPrint.printDebugLog("設置場所番号            ：" + setplaceNo);
		}
		
		// 機器場所番号変更対象ファイル用項目へ設定します。
		outmap.setString(JBSbatKKIFM188.SVC_KEI_NO, svcKeiNo);					// サービス契約番号
		outmap.setString(JBSbatKKIFM188.KKTK_SVC_KEI_NO, kktkSvcKeiNo);			// 機器提供サービス契約番号
		outmap.setString(JBSbatKKIFM188.TAKNKIKI_MODEL_CD, taknkikiModelCd);	// 宅内機器形式コード
		outmap.setString(JBSbatKKIFM188.KIKI_SEIZO_NO, kikiSeizoNo);			// 機器製造番号
		outmap.setLong(JBSbatKKIFM188.SETPLACE_NO, setplaceNo);					// 設置場所番号
		
		return outmap;
	}

	/**
	 * 場所番号連携状態更新ファイル用１レコード設定。<br>
	 * <p>
	 * @param lineList 連携対象List１レコード。
	 * @param rnkMode 連携モード。"3":連携中止 "2":連携可能
	 * @return JBSbatServiceInterfaceMap １レコード格納入出力インターフェースオブジェクト。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */	
	private JBSbatServiceInterfaceMap getPlcNoRnkStatUpdFileLine(
			ArrayList<String> lineList,  String rnkMode) throws Exception
	{
		String plnoRnkTgKkWkNo = "";	// 場所番号連携対象機器ワーク番号
		String plnlRnkStatCd = "";		// 場所番号連携状態コード
		String updDtm = "";				// 更新年月日時分秒
		
		// 入出力インターフェースオブジェクトを生成します。
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		
		// 場所番号連携状態更新ファイル用項目設定をします。
		plnoRnkTgKkWkNo = lineList.get(0);	// 場所番号連携対象機器ワーク番号
		
		// 場所番号連携状態コードの切り分けを実施します。
		// 連携モードが"3"（連携中止）の場合、場所番号連携状態コードに"3"（連携中止）を設定します。
		if (PLACE_NO_RNK_STAT_CDN_RNK_STP.equals(rnkMode))
		{
			plnlRnkStatCd = PLACE_NO_RNK_STAT_CDN_RNK_STP;
		}
		// 連携モードが"2"（連携済）の場合、場所番号連携状態コードに"2"（連携済）を設定します。
		else
		{
			plnlRnkStatCd = PLACE_NO_RNK_STAT_CD_RNK_ZM;
		}
		
		updDtm = lineList.get(4);	// 更新年月日時分秒
		
		if (super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
		{
			super.logPrint.printDebugLog("場所番号連携対象機器ワーク番号：" + plnoRnkTgKkWkNo);
			super.logPrint.printDebugLog("場所番号連携状態コード        ：" + plnlRnkStatCd);
			super.logPrint.printDebugLog("更新年月日時分秒              ：" + updDtm);
		}
		
		// 場所番号連携状態更新ファイル用項目へ設定します。
		outmap.setString(JBSbatKKIFM189.PLNO_RNKTGKK_WK_NO, plnoRnkTgKkWkNo);	// 場所番号連携対象機器ワーク番号
		outmap.setString(JBSbatKKIFM189.PLACE_NO_RNK_STAT_CD, plnlRnkStatCd);	// 場所番号連携状態コード
		outmap.setString(JBSbatKKIFM189.UPD_DTM, updDtm);						// 更新年月日時分秒
		
		return outmap;
	}
}
