/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKShkaFinJiKikiStaChsht
*	ソースファイル名	：JBSbatKKShkaFinJiKikiStaChsht.java
*	作成者				：富士通　
*	作成日				：2012年08月20日
*＜機能概要＞
*　出荷完了時機器開始抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/08/20  FJ)神吉		新規作成(【ANK-0546-00-00】宅内プラットフォーム事業本格対応)
*	v5.00.00	2013/10/11	FJ)岡田		【OM-2013-0002991】障害対応
*	v5.00.01	2013/12/01	FJ)古内		【OM-2013-0004647】障害対応
*	v5.00.02	2013/12/20	FJ)古内		【OM-2013-0003866】障害対応
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM216;
import eo.business.util.table.JBSbatDK_T_HAISO_TG_BPIN;
import eo.business.util.table.JBSbatKK_T_KKTK_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_RNKI_FILE_CTRL;
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.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKShkaFinJiKikiStaChsht extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(機器提供サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";

// ++++++++++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++++++++++
	/** テーブル(連携ファイル制御)*/
	private static final String D_TBL_NAME_KK_T_RNKI_FILE_CTRL = "KK_T_RNKI_FILE_CTRL";
// ++++++++++++++++++++++++++++++++ v5.00.02 追加終了 ++++++++++++++++++++++++++++++++
	
	/** SQL定義キー(KK_SELECT_075)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_075 = "KK_SELECT_075";

	/** SQL定義キー(KK_SELECT_077)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_077 = "KK_SELECT_077";

// ++++++++++++++++++++++++++++++++ v5.00.01 追加開始 ++++++++++++++++++++++++++++++++
	/** SQL定義キー(KK_SELECT_009)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_009 = "KK_SELECT_009";
// ++++++++++++++++++++++++++++++++ v5.00.01 追加終了 ++++++++++++++++++++++++++++++++
	
	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;
	
	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI_075 = null;
	
	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI_077 = null;
	
// ++++++++++++++++++++++++++++++++ v5.00.01 追加開始 ++++++++++++++++++++++++++++++++
	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI_009 = null;
// ++++++++++++++++++++++++++++++++ v5.00.01 追加終了 ++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++++++++++
	/** テーブルアクセスクラス(連携ファイル制御)*/
	private JBSbatSQLAccess db_KK_T_RNKI_FILE_CTRL = null;
// ++++++++++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++++++++++
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

// ++++++++++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++++++++++
	/**
	 * 物理バッチID（KKPRC39801）
	 */
	private static final String BAT_ID = "KKPRC39801";

	/**
	 * ファイルID（KKIFE040）
	 */
	private static final String FILE_ID = "0000000000";
// ++++++++++++++++++++++++++++++++ v5.00.02 追加終了 ++++++++++++++++++++++++++++++++
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		db_KK_T_KKTK_SVC_KEI_075 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		db_KK_T_KKTK_SVC_KEI_077 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
// ++++++++++++++++++++++++++++++++ v5.00.01 追加開始 ++++++++++++++++++++++++++++++++
		db_KK_T_KKTK_SVC_KEI_009 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
// ++++++++++++++++++++++++++++++++ v5.00.01 追加終了 ++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++++++++++
		db_KK_T_RNKI_FILE_CTRL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_RNKI_FILE_CTRL);
// ++++++++++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++++++++++
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
// ++++++++++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++++++++++
		// 検索条件の設定
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		// 物理バッチID
		whereMap.setValue(JBSbatKK_T_RNKI_FILE_CTRL.BUTSURI_BAT_ID, BAT_ID);
		// ファイルID
		whereMap.setValue(JBSbatKK_T_RNKI_FILE_CTRL.FILE_ID, FILE_ID);
		JBSbatCommonDBInterface outDbMap = db_KK_T_RNKI_FILE_CTRL.selectByPrimaryKeys(whereMap);
		String lastProcessYMD = "00000000";
		if (outDbMap != null)
		{
			String znkiTranRunDtm = JBSbatStringUtil.Rtrim(outDbMap.getString(JBSbatKK_T_RNKI_FILE_CTRL.ZNKI_TRAN_RUN_DTM));
			if (!"".equals(znkiTranRunDtm))
			{
				lastProcessYMD = znkiTranRunDtm.substring(0, 8);
			}
			
			String sys_date = JBSbatDateUtil.getSystemDateTimeStamp();
			// 連携ファイル制御更新処理を実施します。
			Object[] setParam = new Object[1];
			
			// 抽出適用開始日時を設定。
			setParam[0] = this.opeDate + sys_date.substring(8);
			
			Object[] whereParam = new Object[2];
			whereParam[0] = BAT_ID;
			whereParam[1] = FILE_ID;
			
			// 更新処理の実行
			executeKK_T_RNKI_FILE_CTRL_PKUPDATE(setParam, whereParam);
		}
		else
		{
			String sys_date = JBSbatDateUtil.getSystemDateTimeStamp();
			// 連携ファイル制御登録処理を実施します。
			Object[] setParam = new Object[17];
			
			// 物理バッチID
			setParam[0]  = BAT_ID;
			// ファイルID
			setParam[1]  = FILE_ID;
			// 処理済ファイル通番
			setParam[2]  = "00000";
			// 前回処理実行年月日時分秒
			setParam[3]  = this.opeDate + sys_date.substring(8);
			setParam[4]  = sys_date;
			setParam[5]  = super.batchUserId;
			setParam[6]  = sys_date;
			setParam[7]  = super.batchUserId;
			setParam[8]  = "";
			setParam[9]  = "";
			setParam[10] = "0";
			setParam[11]  = "";
			setParam[12]  = "";
			setParam[13]  = "";
			setParam[14]  = "";
			setParam[15]  = "";
			setParam[16]  = "";
			executeKK_T_RNKI_FILE_CTRL_PKINSERT(setParam);
		}
// ++++++++++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++++++++++
		// SQL実行結果取得用mapを生成（機器提供サービス契約スキーマ取得）
		JBSbatCommonDBInterface kktkSvcKeiMap_075 = new JBSbatCommonDBInterface();
		
		// SQL実行結果取得用mapを生成（機器提供サービス契約スキーマ取得）
		JBSbatCommonDBInterface kktkSvcKeiMap_077 = new JBSbatCommonDBInterface();
		
// ++++++++++++++++++++++++++++++++ v5.00.02 変更開始 ++++++++++++++++++++++++++++++++
//		String [] kktkSvcKei075_whereParam = {this.opeDate};
		String [] kktkSvcKei075_whereParam = {lastProcessYMD, this.opeDate};
// ++++++++++++++++++++++++++++++++ v5.00.02 変更終了 ++++++++++++++++++++++++++++++++
		
		// 製造番号有無が有りの出荷完了機器情報を取得する。
		// 機器提供サービス契約検索：SQL定義キー（KK_T_KKTK_SVC_KEI_KK_SELECT_075）を実行する。
		executeKK_T_KKTK_SVC_KEI_KK_SELECT_075(kktkSvcKei075_whereParam);
		
		kktkSvcKeiMap_075 = db_KK_T_KKTK_SVC_KEI_075.selectNext();
		
		// 機器提供サービス契約検索結果がない場合
		if (kktkSvcKeiMap_075 == null)
		{
			// 機器提供サービス契約検索結果が無い場合は、下記のログ出力する。
			// ログレベルがデバッグモードの場合
			if(super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog("機器提供サービス契約検索：SQL定義キー（KK_T_KKTK_SVC_KEI_KK_SELECT_075）検索結果なし。");
			}
		}
		// 機器提供サービス契約検索結果がある場合
		else 
		{
			// 機器提供サービス契約検索結果が「NULL」でない間の繰返し
			while (kktkSvcKeiMap_075 != null)
			{
				
				// 入出力インターフェースオブジェクトを生成
				JBSbatServiceInterfaceMap outmap_075 = new JBSbatServiceInterfaceMap();
				
				// 配送番号取得
				String haisoNo = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_075.getString(JBSbatDK_T_HAISO_TG_BPIN.HAISO_NO));
				
				// 機器提供サービス契約番号取得
				String kktkSvcNo = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_075.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO));
				
				// 機器変更番号取得
				String kikiChgNo = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_075.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_CHG_NO));
				
// ++++++++++++++++++++++++++++++++ v5.00.01 追加開始 ++++++++++++++++++++++++++++++++
				if (!JBSbatStringUtil.Rtrim(kktkSvcKeiMap_075.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_STAT)).equals("110"))
				{
					executeKK_T_KKTK_SVC_KEI_KK_SELECT_009(new Object[]{kktkSvcNo, super.opeDate});
					JBSbatCommonDBInterface kktkSvcKeiMap009 = db_KK_T_KKTK_SVC_KEI_009.selectNext();
					if (kktkSvcKeiMap009 != null)
					{
						String geneAddDtm = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_075.getString(JBSbatKK_T_KKTK_SVC_KEI.GENE_ADD_DTM));
						if (!geneAddDtm.equals(JBSbatStringUtil.Rtrim(kktkSvcKeiMap009.getString(JBSbatKK_T_KKTK_SVC_KEI.GENE_ADD_DTM))))
						{
							if(super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
							{
								super.logPrint.printDebugLog(String.format("対象がカレントでないため、処理対象外とする（機器提供サービス契約番号：%s、機器変更番号：%s）", kktkSvcNo, kikiChgNo));
							}
							executeKK_T_KKTK_SVC_KEI_PKUPDATE(new Object[]{kktkSvcNo, geneAddDtm});
							kktkSvcKeiMap_075 = db_KK_T_KKTK_SVC_KEI_075.selectNext();
							continue;
						}
					}
				}
// ++++++++++++++++++++++++++++++++ v5.00.01 追加終了 ++++++++++++++++++++++++++++++++
				
				// 宅内機器型式コード取得
				String taknKikiModelCd = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_075.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_MODEL_CD));
				
				// 機器製造番号取得
				String kikiSeizoNo = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_075.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SEIZO_NO));
				
				// 異動区分取得
				String idoDiv = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_075.getString(JBSbatKK_T_KKTK_SVC_KEI.IDO_DIV));
				
				// 配送番号を入出力インターフェースオブジェクトへ設定
				outmap_075.set(JBSbatKKIFM216.HAISO_NO, haisoNo);
				
				// 機器提供サービス契約番号を入出力インターフェースオブジェクトへ設定
				outmap_075.set(JBSbatKKIFM216.KKTK_SVC_KEI_NO, kktkSvcNo);
				
				// 機器変更番号を入出力インターフェースオブジェクトへ設定
				outmap_075.set(JBSbatKKIFM216.KIKI_CHG_NO, kikiChgNo);
				
				// 宅内機器型式コードを入出力インターフェースオブジェクトへ設定
				outmap_075.set(JBSbatKKIFM216.TAKNKIKI_MODEL_CD, taknKikiModelCd);
				
				// 機器製造番号を入出力インターフェースオブジェクトへ設定
				outmap_075.set(JBSbatKKIFM216.KIKI_SEIZO_NO, kikiSeizoNo);
				
				// 異動区分を入出力インターフェースオブジェクトへ設定
				outmap_075.set(JBSbatKKIFM216.IDO_DIV, idoDiv);
				
				super.logPrint.printDebugLog("（KK_T_KKTK_SVC_KEI_KK_SELECT_075）配送番号:" + haisoNo);
				super.logPrint.printDebugLog("（KK_T_KKTK_SVC_KEI_KK_SELECT_075）機器提供サービス契約番号:" + kktkSvcNo);
				super.logPrint.printDebugLog("（KK_T_KKTK_SVC_KEI_KK_SELECT_075）機器変更番号:" + kikiChgNo);
				super.logPrint.printDebugLog("（KK_T_KKTK_SVC_KEI_KK_SELECT_075）宅内機器型式コード:" + taknKikiModelCd);
				super.logPrint.printDebugLog("（KK_T_KKTK_SVC_KEI_KK_SELECT_075）機器製造番号:" + kikiSeizoNo);
				super.logPrint.printDebugLog("（KK_T_KKTK_SVC_KEI_KK_SELECT_075）異動区分:" + idoDiv);
				
				outmap_075.setOutFlg(true);
				outputItem.addOutMapList(outmap_075);
				
				kktkSvcKeiMap_075 = db_KK_T_KKTK_SVC_KEI_075.selectNext();
			}
		}
		
// ++++++++++++++++++++++++++++++++ v5.00.02 変更開始 ++++++++++++++++++++++++++++++++
//		String [] kktkSvcKei077_whereParam = {this.opeDate};
		String [] kktkSvcKei077_whereParam = {lastProcessYMD, this.opeDate};
// ++++++++++++++++++++++++++++++++ v5.00.02 変更終了 ++++++++++++++++++++++++++++++++
		
		// 製造番号有無が無しの出荷完了機器情報を取得する。
		// 機器提供サービス契約検索：SQL定義キー（KK_T_KKTK_SVC_KEI_KK_SELECT_077）を実行する。
		executeKK_T_KKTK_SVC_KEI_KK_SELECT_077(kktkSvcKei077_whereParam);
		
		kktkSvcKeiMap_077 = db_KK_T_KKTK_SVC_KEI_077.selectNext();
		
		// 機器提供サービス契約検索結果がない場合
		if (kktkSvcKeiMap_077 == null)
		{
			// 機器提供サービス契約検索結果が無い場合は、下記のログ出力する。
			// ログレベルがデバッグモードの場合
			if(super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog("機器提供サービス契約検索：SQL定義キー（KK_T_KKTK_SVC_KEI_KK_SELECT_077）検索結果なし。");
			}
		}
		
		// 機器提供サービス契約検索結果が「NULL」でない間の繰返し
		while (kktkSvcKeiMap_077 != null)
		{
			// 入出力インターフェースオブジェクトを生成
			JBSbatServiceInterfaceMap outmap_077 = new JBSbatServiceInterfaceMap();
			
			// 配送番号取得
			String haisoNo = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_077.getString(JBSbatDK_T_HAISO_TG_BPIN.HAISO_NO));
			
			// 機器提供サービス契約番号取得
			String kktkSvcNo = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_077.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO));
			
			// 機器変更番号取得
			String kikiChgNo = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_077.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_CHG_NO));
			
// ++++++++++++++++++++++++++++++++ v5.00.01 追加開始 ++++++++++++++++++++++++++++++++
			if (!JBSbatStringUtil.Rtrim(kktkSvcKeiMap_077.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_STAT)).equals("110"))
			{
				executeKK_T_KKTK_SVC_KEI_KK_SELECT_009(new Object[]{kktkSvcNo, super.opeDate});
				JBSbatCommonDBInterface kktkSvcKeiMap009 = db_KK_T_KKTK_SVC_KEI_009.selectNext();
				if (kktkSvcKeiMap009 != null)
				{
					String geneAddDtm = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_077.getString(JBSbatKK_T_KKTK_SVC_KEI.GENE_ADD_DTM));
					if (!geneAddDtm.equals(JBSbatStringUtil.Rtrim(kktkSvcKeiMap009.getString(JBSbatKK_T_KKTK_SVC_KEI.GENE_ADD_DTM))))
					{
						if(super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
						{
							super.logPrint.printDebugLog(String.format("対象がカレントでないため、処理対象外とする（機器提供サービス契約番号：%s、機器変更番号：%s）", kktkSvcNo, kikiChgNo));
						}
						executeKK_T_KKTK_SVC_KEI_PKUPDATE(new Object[]{kktkSvcNo, geneAddDtm});
						kktkSvcKeiMap_077 = db_KK_T_KKTK_SVC_KEI_009.selectNext();
						continue;
					}
				}
			}
//++++++++++++++++++++++++++++++++ v5.00.01 追加終了 ++++++++++++++++++++++++++++++++
			
			// 宅内機器型式コード取得
			String taknKikiModelCd = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_077.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_MODEL_CD));
			
			// 機器製造番号取得
			String kikiSeizoNo = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_077.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SEIZO_NO));
			
			// 異動区分取得
			String idoDiv = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_077.getString(JBSbatKK_T_KKTK_SVC_KEI.IDO_DIV));
			
			// 配送番号を入出力インターフェースオブジェクトへ設定
			outmap_077.set(JBSbatKKIFM216.HAISO_NO, haisoNo);
			
			// 機器提供サービス契約番号を入出力インターフェースオブジェクトへ設定
			outmap_077.set(JBSbatKKIFM216.KKTK_SVC_KEI_NO, kktkSvcNo);
			
			// 機器変更番号を入出力インターフェースオブジェクトへ設定
			outmap_077.set(JBSbatKKIFM216.KIKI_CHG_NO, kikiChgNo);
			
			// 宅内機器型式コードを入出力インターフェースオブジェクトへ設定
			outmap_077.set(JBSbatKKIFM216.TAKNKIKI_MODEL_CD, taknKikiModelCd);
			
			// 機器製造番号を入出力インターフェースオブジェクトへ設定
			outmap_077.set(JBSbatKKIFM216.KIKI_SEIZO_NO, kikiSeizoNo);
			
			// 異動区分を入出力インターフェースオブジェクトへ設定
			outmap_077.set(JBSbatKKIFM216.IDO_DIV, idoDiv);
			
			super.logPrint.printDebugLog("（KK_T_KKTK_SVC_KEI_KK_SELECT_077）配送番号:" + haisoNo);
			super.logPrint.printDebugLog("（KK_T_KKTK_SVC_KEI_KK_SELECT_077）機器提供サービス契約番号:" + kktkSvcNo);
			super.logPrint.printDebugLog("（KK_T_KKTK_SVC_KEI_KK_SELECT_077）機器変更番号:" + kikiChgNo);
			super.logPrint.printDebugLog("（KK_T_KKTK_SVC_KEI_KK_SELECT_077）宅内機器型式コード:" + taknKikiModelCd);
			super.logPrint.printDebugLog("（KK_T_KKTK_SVC_KEI_KK_SELECT_077）機器製造番号:" + kikiSeizoNo);
			super.logPrint.printDebugLog("（KK_T_KKTK_SVC_KEI_KK_SELECT_077）異動区分:" + idoDiv);
			
			outmap_077.setOutFlg(true);
			outputItem.addOutMapList(outmap_077);
			
			kktkSvcKeiMap_077 = db_KK_T_KKTK_SVC_KEI_077.selectNext();
		}
		
		super.logPrint.printDebugLog("execute_END");
		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_KKTK_SVC_KEI.close();
		db_KK_T_KKTK_SVC_KEI_075.close();
		db_KK_T_KKTK_SVC_KEI_077.close();
// ++++++++++++++++++++++++++++++++ v5.00.01 追加開始 ++++++++++++++++++++++++++++++++
		db_KK_T_KKTK_SVC_KEI_009.close();
// ++++++++++++++++++++++++++++++++ v5.00.01 追加終了 ++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++++++++++
		db_KK_T_RNKI_FILE_CTRL.close();
// ++++++++++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++++++++++
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_075)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	配送完了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KKTK_SVC_KEI_KK_SELECT_075(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
// ++++++++++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++++++++++
		paramList.setValue(param[1].toString());
// ++++++++++++++++++++++++++++++++ v5.00.02 追加終了 ++++++++++++++++++++++++++++++++

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI_075.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_075);
	}

	/**
	 * SQLKEY(KK_SELECT_077)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *          前回処理運用日
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KKTK_SVC_KEI_KK_SELECT_077(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
// ++++++++++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++++++++++
		paramList.setValue(param[1].toString());
// ++++++++++++++++++++++++++++++++ v5.00.02 追加終了 ++++++++++++++++++++++++++++++++

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI_077.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_077);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

// ++++++++++++++++++++++++++++++++ v5.00.01 追加開始 ++++++++++++++++++++++++++++++++
	/**
	 * SQLKEY(KK_SELECT_009)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	対象割引サービス.機器提供サービス契約
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KKTK_SVC_KEI_KK_SELECT_009(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI_009.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_009);
	}
	
	/**
	 * PKUPDATEでDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	機器提供サービス契約.機器提供サービス契約
	 *		 	機器提供サービス契約.世代登録年月日時分秒
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KKTK_SVC_KEI_PKUPDATE(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO, param[0]);
		whereMap.setValue(JBSbatKK_T_KKTK_SVC_KEI.GENE_ADD_DTM, param[1]);
		
		JBSbatCommonDBInterface valueMap = new JBSbatCommonDBInterface();
		valueMap.setValue(JBSbatKK_T_KKTK_SVC_KEI.SHKA_FIN_JI_SYRZM_FLG, "1");
		
		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI_009.updateByPrimaryKeys(whereMap, valueMap);
	}
// ++++++++++++++++++++++++++++++++ v5.00.01 追加終了 ++++++++++++++++++++++++++++++++

// ++++++++++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++++++++++
	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	前回処理実行年月日時分秒				ZNKI_TRAN_RUN_DTM
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	BUTSURI_BAT_ID
	 *		 	FILE_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @return int 更新件数。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeKK_T_RNKI_FILE_CTRL_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("ZNKI_TRAN_RUN_DTM", setParam[0]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("BUTSURI_BAT_ID", whereParam[0]);
		whereMap.setValue("FILE_ID", whereParam[1]);

		// DBアクセスを実行します
		return db_KK_T_RNKI_FILE_CTRL.updateByPrimaryKeys(whereMap, setMap);
	}
	
	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	物理バッチＩＤ				BUTSURI_BAT_ID
	 *		 	ファイルＩＤ				FILE_ID
	 *		 	処理済ファイル通番				TRAN_ZUMI_FILE_SEQ
	 *		 	前回処理実行年月日時分秒				ZNKI_TRAN_RUN_DTM
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_RNKI_FILE_CTRL_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("BUTSURI_BAT_ID", setParam[0]);
		setMap.setValue("FILE_ID", setParam[1]);
		setMap.setValue("TRAN_ZUMI_FILE_SEQ", setParam[2]);
		setMap.setValue("ZNKI_TRAN_RUN_DTM", setParam[3]);
		setMap.setValue("ADD_DTM", setParam[4]);
		setMap.setValue("ADD_OPEACNT", setParam[5]);
		setMap.setValue("UPD_DTM", setParam[6]);
		setMap.setValue("UPD_OPEACNT", setParam[7]);
		setMap.setValue("DEL_DTM", setParam[8]);
		setMap.setValue("DEL_OPEACNT", setParam[9]);
		setMap.setValue("MK_FLG", setParam[10]);
		setMap.setValue("ADD_UNYO_YMD", setParam[11]);
		setMap.setValue("ADD_TRN_ID", setParam[12]);
		setMap.setValue("UPD_UNYO_YMD", setParam[13]);
		setMap.setValue("UPD_TRN_ID", setParam[14]);
		setMap.setValue("DEL_UNYO_YMD", setParam[15]);
		setMap.setValue("DEL_TRN_ID", setParam[16]);
	
		// DBアクセスを実行します
		db_KK_T_RNKI_FILE_CTRL.insertByPrimaryKeys(setMap);
	}
// ++++++++++++++++++++++++++++++++ v5.00.02 追加終了 ++++++++++++++++++++++++++++++++
}
