/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatSCIpsodDataSpotCst
*	ソースファイル名	：JBSbatSCIpsodDataSpotCst.java
*	作成者				：富士通　
*	作成日				：2011年09月09日
*＜機能概要＞
*　ＩＰ−ＳＯＤデータ（ＳＰＯＴ）抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/09   富士通		新規作成
*	v7.00.00	2014/03/06  FJ)阪口		【OM-2014-0000530】 SQLバインド変数の削減
*********************************************************************/
package eo.business.service;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatSCIFE005;
import eo.business.util.table.JBSbatSC_T_SPOT_ODR_SRINF;
import eo.common.constant.JSCStrConstant;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatSCIpsodDataSpotCst extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(ＳＰＯＴオーダ送受信情報)*/
	private static final String D_TBL_NAME_SC_T_SPOT_ODR_SRINF = "SC_T_SPOT_ODR_SRINF";

	/** テーブル(モバイルオーダ)*/
	private static final String D_TBL_NAME_SC_T_MOBILE_ORDER = "SC_T_MOBILE_ORDER";

	/** テーブル(ＳＯＤ業務管理)*/
	private static final String D_TBL_NAME_SC_T_SOD_WORK_KANRI = "SC_T_SOD_WORK_KANRI";

	/** SQL定義キー(SC_SELECT_001)*/
	private static final String SC_T_SOD_WORK_KANRI_SC_SELECT_001 = "SC_SELECT_001";

	/** SQL定義キー(SC_UPDATE_001)*/
	private static final String SC_T_SOD_WORK_KANRI_SC_UPDATE_001 = "SC_UPDATE_001";

	/** SQL定義キー(SC_SELECT_001)*/
	private static final String SC_T_SPOT_ODR_SRINF_SC_SELECT_001 = "SC_SELECT_001";

	/** テーブルアクセスクラス(ＳＰＯＴオーダ送受信情報)*/
	private JBSbatSQLAccess db_SC_T_SPOT_ODR_SRINF = null;

	/** テーブルアクセスクラス(モバイルオーダ)*/
	private JBSbatSQLAccess db_SC_T_MOBILE_ORDER = null;

	/** テーブルアクセスクラス(ＳＯＤ業務管理)*/
	private JBSbatSQLAccess db_SC_T_SOD_WORK_KANRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 分類コード用 半角スペース5個*/
	private static final String FIVE_SPACES = "     ";
	
	/**  内容補足1数値 */
	private int naiyoHsk1Cnt = 0;

	/** 旧SOD連携通番用 半角スペース7個*/
	private static final String SEVEN_SPACES = "       ";
	
	/** SOD処理結果コード用 半角スペース1個*/
	private static final String ONE_SPACES = " ";
	
	/** SOD処理結果詳細コード用 半角スペース4個*/
	private static final String FOUR_SPACES = "    ";
	
	/** SOD結果登録年月日時分秒用 半角ゼロ12個*/
	private static final String TWELVE_ZERO = "000000000000";
	
	/** 実行日付の取得 */
	private String sysDate = JCCBatCommon.getSysDate();
	
	/** バッチ運用日時*/
	private String unyoDate = null;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_SC_T_SPOT_ODR_SRINF = new JBSbatSQLAccess(commonItem, D_TBL_NAME_SC_T_SPOT_ODR_SRINF);
		db_SC_T_MOBILE_ORDER = new JBSbatSQLAccess(commonItem, D_TBL_NAME_SC_T_MOBILE_ORDER);
		db_SC_T_SOD_WORK_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_SC_T_SOD_WORK_KANRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

		// バッチ運用日時を設定
		this.unyoDate = commonItem.getOpeDate();

		/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/

		// SPOTオーダ送受信情報テーブルとオーダテーブルのロック(SC_SELECT_001)
		String[] param0w =		// ＷＨＥＲＥ句
		{
				this.unyoDate,							// 適用開始年月日
				this.unyoDate							// 適用終了年月日
		};

		executeSC_T_SPOT_ODR_SRINF_SC_SELECT_001(param0w); 

		// SOD業務管理テーブルのロック(SC_SELECT_001)
		// 抽出結果取得用オブジェクト
		JBSbatCommonDBInterface sod = new JBSbatCommonDBInterface();
		
		String[] param1 = {
				JSCStrConstant.BUNRUI_1_SOD_SND_SEQ,	// 分類コード1 SC001
				JSCStrConstant.BUNRUI_2_IP_SOD_SPOT,	// 分類コード2 00002
				FIVE_SPACES,							// 分類コード3
				FIVE_SPACES,							// 分類コード4
				FIVE_SPACES,							// 分類コード5
				this.unyoDate,							// 実行年月日
				JSCStrConstant.MK_FLG_YUKO				// 無効フラグ
		};
		executeSC_T_SOD_WORK_KANRI_SC_SELECT_001(param1);
		
		sod = db_SC_T_SOD_WORK_KANRI.selectNext();
		
		if(null == sod)
		{
			// エラー処理(SOD業務管理テーブルからデータが取得できなかった場合)
			super.logPrint.printDebugLog("SOD業務管理テーブルにレコードが存在しません。");
			throw new JBSbatBusinessException("ESCB0180CE",
					new String[] {
					"BUNRUI_1_CD, BUNRUI_2_CD, BUNRUI_3_CD, BUNRUI_4_CD, BUNRUI_5_CD, TSTAYMD, MK_FLG",
					  param1[0] + ","			// 分類1コード
					+ param1[1] + ","			// 分類2コード
					+ param1[2] + ","			// 分類3コード
					+ param1[3] + ","			// 分類4コード
					+ param1[4] + ","			// 分類5コード
					+ param1[5] + ","			// 適用開始年月日
					+ param1[6],				// 無効フラグ
					D_TBL_NAME_SC_T_SOD_WORK_KANRI});
		}
		naiyoHsk1Cnt = Integer.parseInt(sod.getString("NAIYO_HSK_1_CNT"));
		
		if(JSCStrConstant.MAX_FILE_SEQ <= naiyoHsk1Cnt)
		{
			naiyoHsk1Cnt = 0;
		}
		else
		{
			naiyoHsk1Cnt++;
		}

	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 出力共通電文を生成する
		JBSbatOutputItem outputBean = new JBSbatOutputItem();

		// 入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();

		// システム日付の取得
		String sysDateTimeStamp = JCCBatCommon.getSysDateTimeStamp();

		// 更新オペレータアカウント取得
		String upAccount = commonItem.getBatchUserId();

		// モバイルオーダテーブルのロック(PK検索)
		String[] param2w =		// ＷＨＥＲＥ句
		{
				inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.SOD_RENKEI_SEQ) 		// モバイルオーダ番号(＝SOD連携通番)　条件
		};

		// 対象レコードの有無を確認し、無い場合はエラー表示
		if(null == executeSC_T_MOBILE_ORDER_PKSELECT(param2w))
		{
			//エラー処理
			super.logPrint.printDebugLog("モバイルオーダテーブルにレコードが存在しません。");
			throw new JBSbatBusinessException("ESCB0180CE",
					new String[] {
					"モバイルオーダ番号",
					inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.SOD_RENKEI_SEQ),
					D_TBL_NAME_SC_T_MOBILE_ORDER});
		}

		// ＩＰ−ＳＯＤ送信情報（SPOT）ファイルのデータ部の出力開始
		// 旧SOD連携通番の内容確認と値の代入
		String old_Seq = inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.OLD_SOD_RENKEI_SEQ);
		if (null == inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.OLD_SOD_RENKEI_SEQ))
		{
			old_Seq = SEVEN_SPACES;
		}

		//項目を設定
		outmap.setString(JBSbatSCIFE005.REC_SBT_CD,           JSCStrConstant.REC_SBT_CD_DATA); 									// レコード種別コード:データ部(1)
		outmap.setString(JBSbatSCIFE005.YOKYU_SBT_CD,         inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.YOKYU_SBT_CD)); 		// 要求種別コード
		outmap.setString(JBSbatSCIFE005.SVC_ODR_CD,           inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.MOBILE_ORDER_CD)); 		// サービスオーダコード(モバイルオーダコード)
		outmap.setString(JBSbatSCIFE005.SVC_ODR_DTL_CD,       JSCStrConstant.SVC_ODR_DTAIL_CD_HIGH); 							// サービスオーダ詳細コード 優先度高(02)
		outmap.setString(JBSbatSCIFE005.SOD_RNKI_SEQ,         inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.SOD_RENKEI_SEQ)); 		// SOD連携通番
		outmap.setString(JBSbatSCIFE005.OLD_SOD_RNKI_SEQ,     old_Seq); 														// 旧SOD連携通番
		outmap.setString(JBSbatSCIFE005.SCHEDULE_YMD,         inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.SCHEDULE_YMD));  		// スケジュール年月日
		outmap.setString(JBSbatSCIFE005.SOD_RSLT_ADD_DTM,     TWELVE_ZERO); 													// SOD結果登録年月日時分秒
		outmap.setString(JBSbatSCIFE005.SOD_TRAN_RSLT_CD,     ONE_SPACES); 														// SOD処理結果コード
		outmap.setString(JBSbatSCIFE005.SOD_TRAN_RSLT_DTL_CD, FOUR_SPACES); 													// SOD処理結果詳細コード
		outmap.setString(JBSbatSCIFE005.SVC_KEI_NO,           inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.SVC_KEI_NO)); 			// サービス契約番号
		outmap.setString(JBSbatSCIFE005.SOD_RRK_DATA,         inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.SOD_RRK_DATA)); 		// SOD連絡データ
		// 出力フラグを設定
		outmap.setOutFlg(true);
		
		// SPOTオーダ送受信情報テーブルの更新(PK更新)
		String[] param1 =		// ＳＥＴ句
		{
			JSCStrConstant.SOD_STAT_ACK_WAIT, 		// SODステータス:応答待ち(002)
			sysDateTimeStamp,						// SOD投入年月日時分秒ミリ秒
			sysDateTimeStamp, 						// 更新年月日時分秒ミリ秒
			upAccount 								// 更新オペレータアカウント
		};
//		sysDateTimeStamp, 									// SOD投入年月日時分秒ミリ秒
		String[] param1w =		// ＷＨＥＲＥ句
		{
			inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.SRINF_KANRI_NO) 		// 送受信情報管理番号　条件
		};
		
		try
		{
			executeSC_T_SPOT_ODR_SRINF_PKUPDATE(param1, param1w);
		}
		catch (Exception e)
		{
				throw new JBSbatBusinessException("ESCB0200CE",
					new String[] {"SRINF_KANRI_NO",
					inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.SRINF_KANRI_NO),
					D_TBL_NAME_SC_T_SPOT_ODR_SRINF});
		}

		// モバイルオーダテーブルの更新(PK更新)
		String[] param3 =		// ＳＥＴ句
		{
			JSCStrConstant.SOD_STAT_ACK_WAIT, 			// モバイルオーダステータス:応答待ち(002)
			sysDateTimeStamp, 							// 更新年月日時分秒ミリ秒
			upAccount 									// 更新オペレータアカウント
		};
		String[] param3w =		// ＷＨＥＲＥ句
		{
			inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.SOD_RENKEI_SEQ) 			// モバイルオーダ番号(＝SOD連携通番)　条件
		};
		try
		{
				executeSC_T_MOBILE_ORDER_PKUPDATE(param3, param3w);
		}
		catch (Exception e)
		{
			throw new JBSbatBusinessException("ESCB0200CE",
				new String[] {"MOBILE_ORDER_SEQ",
				inMap.getString(JBSbatSC_T_SPOT_ODR_SRINF.SOD_RENKEI_SEQ),
				D_TBL_NAME_SC_T_MOBILE_ORDER});
		}

		// 出力共通電文に入出力インターフェースを設定する
		outputBean.addOutMapList(outmap);

		return outputBean; // ファイルを出力
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/

		// ＩＰ−ＳＯＤ送信情報（SPOT）ファイルの入力行数の取得
		int cnt = commonItem.getInputCount();

		// 実行年月日時分秒の取得
		String sysDateTimeStamp = JCCBatCommon.getSysDateTimeStamp();

		// 更新オペレータアカウント取得
		String upAccount = commonItem.getBatchUserId();

		if(0 < cnt)
		{
			// ＳＯＤ業務管理テーブルの更新
			String[] param7 =
			{
				Integer.toString(naiyoHsk1Cnt),		// 内容補足1数値(0〜99999、サイクリック)
				sysDateTimeStamp, 							// 更新年月日時分秒ミリ秒
				upAccount, 										// 更新オペレータアカウント
				JSCStrConstant.BUNRUI_1_SOD_SND_SEQ, 			// 分類1コード SC001(SOD送信ファイル通番)
				JSCStrConstant.BUNRUI_2_IP_SOD_SPOT, 			// 分類2コード 00002(IP-SODデータ(SPOT用))
				FIVE_SPACES, 			// 分類3コード 半角空白5文字
				FIVE_SPACES, 			// 分類4コード 半角空白5文字
				FIVE_SPACES, 			// 分類5コード 半角空白5文字
				this.unyoDate,			// 実行年月日（yyyyMMdd）
				JSCStrConstant.MK_FLG_YUKO 			// 無効フラグ (0)有効
			};
			try
			{
				executeSC_T_SOD_WORK_KANRI_SC_UPDATE_001(param7);
			}
			catch (Exception e)
			{
				throw new JBSbatBusinessException("ESCB0200CE",
						new String[] {
						"BUNRUI_1_CD, BUNRUI_2_CD, BUNRUI_3_CD, BUNRUI_4_CD, BUNRUI_5_CD, TSTAYMD",
						JSCStrConstant.BUNRUI_1_SOD_SND_SEQ + ", "			// 分類1コード SC001(SOD送信ファイル通番)
						+ JSCStrConstant.BUNRUI_2_IP_SOD_SPOT + ", "		// 分類2コード 00002(IP-SODデータ(SPOT用))
						+ FIVE_SPACES + ", "			// 分類3コード 半角空白5文字
						+ FIVE_SPACES + ", "			// 分類3コード 半角空白5文字
						+ FIVE_SPACES + ", "			// 分類3コード 半角空白5文字
						+ this.unyoDate,			// 実行年月日（yyyyMMdd）
						D_TBL_NAME_SC_T_SOD_WORK_KANRI});
			}

			// ヘッダー部の出力(String s,String outFileName, String outFilePath)
			outHeader(naiyoHsk1Cnt, "SCIFE005_header.csv", commonItem.getFreeItem());
			// トレーラ部の出力(String idx, String outFileName, String outFilePath)
			outTrailer(cnt, "SCIFE005_trailer.csv", commonItem.getFreeItem());
		}
		else
		{
			// データが0件の場合のメッセージ
			super.logPrint.printLogMsg("ESCB0080AI", "IP-SOD送信情報（SPOT）ファイル");
		}

		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_SC_T_SPOT_ODR_SRINF.close();
		db_SC_T_MOBILE_ORDER.close();
		db_SC_T_SOD_WORK_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	ＳＯＤステータス				SOD_STAT
	 *		 	ＳＯＤ投入年月日時分秒				SOD_TONYU_DTM
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	SRINF_KANRI_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeSC_T_SPOT_ODR_SRINF_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("SOD_STAT", setParam[0]);
		setMap.setValue("SOD_TONYU_DTM", setParam[1]);
		setMap.setValue("UPD_DTM", setParam[2]);
		setMap.setValue("UPD_OPEACNT", setParam[3]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("SRINF_KANRI_NO", whereParam[0]);

		// DBアクセスを実行します
		db_SC_T_SPOT_ODR_SRINF.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	MOBILE_ORDER_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeSC_T_MOBILE_ORDER_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("MOBILE_ORDER_NO", whereParam[0]);

		// DBアクセスを実行します
		return db_SC_T_MOBILE_ORDER.selectByPrimaryKeys(whereMap);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	モバイルオーダステータス				MOBILE_ORDER_STAT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	MOBILE_ORDER_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeSC_T_MOBILE_ORDER_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("MOBILE_ORDER_STAT", setParam[0]);
		setMap.setValue("UPD_DTM", setParam[1]);
		setMap.setValue("UPD_OPEACNT", setParam[2]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("MOBILE_ORDER_NO", whereParam[0]);

		// DBアクセスを実行します
		db_SC_T_MOBILE_ORDER.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * SQLKEY(SC_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	分類1コード
	 *		 	分類2コード
	 *		 	分類3コード
	 *		 	分類4コード
	 *		 	分類5コード
	 *		 	適用開始年月日
	 *		 	無効フラグ
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeSC_T_SOD_WORK_KANRI_SC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());

		// DBアクセスを実行します
		db_SC_T_SOD_WORK_KANRI.selectBySqlDefine(paramList, SC_T_SOD_WORK_KANRI_SC_SELECT_001);
	}

	/**
	 * SQLKEY(SC_UPDATE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	内容補足1数値
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	分類1コード
	 *		 	分類2コード
	 *		 	分類3コード
	 *		 	分類4コード
	 *		 	分類5コード
	 *		 	適用開始年月日
	 *		 	無効フラグ
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeSC_T_SOD_WORK_KANRI_SC_UPDATE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());
		paramList.setValue(param[9].toString());

		// DBアクセスを実行します
		db_SC_T_SOD_WORK_KANRI.executeBySqlDefine(paramList, SC_T_SOD_WORK_KANRI_SC_UPDATE_001);
	}

	/**
	 * SQLKEY(SC_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SODステータス
	 *		 	SODステータス
	 *		 	無効フラグ
	 *		 	オーダ種別
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeSC_T_SPOT_ODR_SRINF_SC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_SC_T_SPOT_ODR_SRINF.selectBySqlDefine(paramList, SC_T_SPOT_ODR_SRINF_SC_SELECT_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * ＩＰ−ＳＯＤ送信情報（SPOT）ファイルのヘッダー部出力を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.ヘッダー部の出力を行います。<br>
	 * </pre>
	 * <p>
	 * @param iHosoku 内容補足１数値(ファイル通番)
	 * @param outFileName ファイル出力名
	 * @param outFilePath パス名
	 * @return なし
	 * @exception JBSbatBusinessException 業務サービス内で発生した例外全般。
	 */
	private void outHeader(int iHosoku, String outFileName, String outFilePath) throws JBSbatBusinessException
	{
		StringBuffer outString = new StringBuffer(20);

		// レコード種別を追加：ヘッダー部(0)
		outString.append(JSCStrConstant.REC_SBT_CD_HEADER);
		outString.append(",");

		// ファイル作成年月日を追加＆（yyyyMMddhhmmss → yyMMddhhmmssに変換）
		String f14 = JCCBatCommon.getSysDateTime();
		outString.append(f14.substring(2, 14));
		outString.append(",");
		// ファイル通番を追加(0〜99999)＆(0を左[false]埋め込み、5桁。ex. 123→00123)
		//outString.append(JPCEditString.fillZero(s, 5, false));
		outString.append(String.format("%05d", iHosoku));

		String outFile = outFilePath + outFileName;
		try
		{
			// PGReliefの規約に従っていないが、
			// バッチから渡される引数を使用するので
			// 問題ない
			FileWriter file = new FileWriter(outFile);
			BufferedWriter buf = new BufferedWriter(file);
			PrintWriter writer = new PrintWriter(buf);
			writer.println(outString);
			writer.close(); // ファイルクローズ
		}
		catch (IOException e)
		{
			super.logPrint.printDebugLog("出力ファイルヘッダー部書き込み失敗");
			throw new JBSbatBusinessException("ESCB0030CE", new String[] {outFile});
		}
	}

	/**
	 * ＩＰ−ＳＯＤ送信情報（SPOT）ファイルのトレーラ部出力を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.トレーラ部の出力を行います。<br>
	 * </pre>
	 * <p>
	 * @param idx レコード件数
	 * @param outFileName ファイル出力名。
	 * @param outFilePath パス名
	 * @return なし。
	 * @throws JBSbatBusinessException 業務サービス内で発生した例外全般。
	 */
	private void outTrailer(int idx, String outFileName, String outFilePath) throws JBSbatBusinessException
	{

		StringBuffer outString = new StringBuffer(15);

		// レコード種別を追加：トレーラー部(2)
		outString.append(JSCStrConstant.REC_SBT_CD_TRAILER);

		// 区切り文字(カンマ)を追加
		outString.append(",");

		// レコード件数を追加(半角スペースを左[false]埋め込み、4桁。ex. 123→0123)
		//outString.append(JPCEditString.fillHalfSpace(idx, 4, false));
		outString.append(String.format("%04d", idx));

		String outFile = outFilePath + outFileName;
		try
		{
			// PGReliefの規約に従っていないが、
			// バッチから渡される引数を使用するので
			// 問題ない
			FileWriter file = new FileWriter(outFile);
			BufferedWriter buf = new BufferedWriter(file);
			PrintWriter writer = new PrintWriter(buf);
			writer.println(outString);
			writer.close(); // ファイルクローズ
		}
		catch (IOException e)
		{
			super.logPrint.printDebugLog("出力ファイルトレーラ部書き込み失敗");
			throw new JBSbatBusinessException("ESCB0030CE", new String[] {outFile});
		}
	}

}
