/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKdtKjRsvHsInfoUpd
*	ソースファイル名	：JBSbatKKKdtKjRsvHsInfoUpd.java
*	作成者				：富士通　
*	作成日				：2024年07月03日
*＜機能概要＞
*　戸建て工事予定配送情報更新部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v72.00.00	2024/07/03   FJ)丸田		【ANK-4577-00-00】 新規作成
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM963;
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.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKKdtKjRsvHsInfoUpd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	/** テーブル(配送)*/
	private static final String D_TBL_NAME_DK_T_HAISO = "DK_T_HAISO";
	
	/** SQL定義キー(KK_SELECT_024)*/
	private static final String DK_T_HAISO_KK_SELECT_024 = "KK_SELECT_024";
	
	/** SQL定義キー(KK_UPDATE_004)*/
	private static final String DK_T_HAISO_KK_UPDATE_004 = "KK_UPDATE_004";
	
	/** 配送．配送ステータス 列名*/
	private static final String HAISO_STAT = "HAISO_STAT";
	
	/** 配送．配送予定年月日 列名*/
	private static final String HAISO_RSV_YMD = "HAISO_RSV_YMD";
	
	/** 配送．配送ステータス:受付中*/
	private static final String HAISO_STAT_001 = "001";
	
	/** テーブルアクセスクラス(配送)*/
	private JBSbatSQLAccess db_DK_T_HAISO = null;
	
	/** 配送番号 */
	protected String strHaisoNo = "";
	
	/** 配送予定年月日 */
	protected String strHaisoRsvYmd = "";
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		// DBアクセスクラスを生成します
		db_DK_T_HAISO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_HAISO);
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		super.logPrint.printDebugLog("execute_START");
		
		// 変数設定：中間ファイルの配送番号・配送予定年月日
		getKkifm963(inMap);
		
		// 中間ファイルの配送番号を持つ配送情報を取得する。
		executeDK_T_HAISO_KK_SELECT_024(strHaisoNo);
		
		// 配送存在確認SQLの実行結果を取得
		JBSbatCommonDBInterface haisoMap = db_DK_T_HAISO.selectNext();
		
		if (haisoMap == null)
		{
			// 配送テーブルに配送番号に該当するレコードがない場合、
			// エラーメッセージEKKB0290AW出力：「配送番号:Axxxxxxxxxxが存在しませんでした。」
			super.logPrint.printBusinessErrorLog("EKKB0290AW", new String[]{"配送番号" + strHaisoNo});
			// 処理をスキップする。
			return null;
		}
		
		// SQL実行結果の配送予約年月日を取得する。
		String dbHaisoRsvYmd = JBSbatStringUtil.Rtrim(haisoMap.getString(HAISO_RSV_YMD));
		
		if (dbHaisoRsvYmd.equals(strHaisoRsvYmd))
		{
			// SQL実行結果の配送予約年月日と中間ファイルの配送予約年月日が一致する場合
			// ログ出力：「既に連携された配送です　配送番号：Axxxxxxxxxx」
			super.logPrint.printDebugLog("既に連携された配送です　配送番号：" + strHaisoNo);
			// 処理をスキップする。
			return null;
		}
		
		String dbHaisoStat = JBSbatStringUtil.Rtrim(haisoMap.getString(HAISO_STAT));
		
		if (dbHaisoStat.equals(HAISO_STAT_001) == false)
		{
			// SQL実行結果の配送ステータスが受付中(001)ではない場合
			// エラーメッセージEKKB1210CW出力：「配送番号：Axxxxxxxxxxの配送ステータスは"受付済み"ではありません。このデータの処理をスキップします。」
			super.logPrint.printBusinessErrorLog("EKKB1210CW", new String[]{"配送番号:" + strHaisoNo});
			// 処理をスキップする。
			return null;
		}
		
		// 更新パラメータ、検索パラメータをセット
		String[] setParamHaiso = 
		{
			strHaisoRsvYmd,
			strHaisoNo
		};
		// 配送テーブルの更新を実行する。
		executeDK_T_HAISO_PKUPDATE(setParamHaiso);
		
		super.logPrint.printDebugLog("execute_END");
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		// DBアクセスクラスをクローズします
		db_DK_T_HAISO.close();
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 配送スキーマSQLKEY(KK_SELECT_024)でDBアクセスを行います。<br>
	 * @param strHaisoNo 配送番号
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeDK_T_HAISO_KK_SELECT_024(String strHaisoNo) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		// 配送番号をセット
		paramList.setValue(strHaisoNo);
		
		// DBアクセスを実行します
		db_DK_T_HAISO.selectBySqlDefine(paramList, DK_T_HAISO_KK_SELECT_024);
	}
	
	
	/**
	 * 配送テーブルにPK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * 
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeDK_T_HAISO_PKUPDATE(String[] setParamHaiso) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		paramList.setValue(setParamHaiso[0].toString());
		paramList.setValue(setParamHaiso[1].toString());

		// DBアクセスを実行します
		db_DK_T_HAISO.executeBySqlDefine(paramList, DK_T_HAISO_KK_UPDATE_004);
	}
	
	/**
	 * 
	 * 中間ファイルの読み込みを行います。
	 * 
	 * @param inMap 中間ファイルの値。
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void getKkifm963(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 配送番号
		strHaisoNo = "";
		// 配送予定年月日
		strHaisoRsvYmd = "";
		
		// 配送番号
		strHaisoNo = inMap.getString(JBSbatKKIFM963.HAISO_NO);
		// 配送予定年月日
		strHaisoRsvYmd = inMap.getString(JBSbatKKIFM963.HAISO_RSV_YMD);
	}

	
}
