/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatSCIpsodDataTelCst
*	ソースファイル名	：JBSbatSCIpsodDataTelCst.java
*	作成者				：富士通　
*	作成日				：2011年08月19日
*＜機能概要＞
*　ＩＰ−ＳＯＤデータ（電話用）抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/19   富士通		新規作成
*	v7.00.00	2014/03/06  FJ)阪口		【OM-2014-0000530】 SQLバインド変数の削減
*	v8.00.00	2014/05/19  FJ)阪口		【ANK-2113-00-00】  SOD課題対応(サービスオーダ詳細コードをスキーマより取得する)
*********************************************************************/
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.JBSbatSCIFE007;
import eo.business.util.table.JBSbatSC_M_ORDER;
import eo.business.util.table.JBSbatSC_T_SOD_WORK_KANRI;
import eo.business.util.table.JBSbatSC_T_SVC_ODR_SRINF;
import eo.business.util.table.JBSbatSC_T_TEL_SVC_ORDER;
import eo.business.util.table.JBSbatSC_T_EMG_ORDER;
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 JBSbatSCIpsodDataTelCst extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(サービスオーダ送受信情報)*/
	private static final String D_TBL_NAME_SC_T_SVC_ODR_SRINF = "SC_T_SVC_ODR_SRINF";

	/** テーブル(電話サービスオーダ)*/
	private static final String D_TBL_NAME_SC_T_TEL_SVC_ORDER = "SC_T_TEL_SVC_ORDER";

	/** テーブル(緊急通報オーダ)*/
	private static final String D_TBL_NAME_SC_T_EMG_ORDER = "SC_T_EMG_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_004)*/
	private static final String SC_T_SVC_ODR_SRINF_SC_SELECT_004 = "SC_SELECT_004";

	/** テーブルアクセスクラス(サービスオーダ送受信情報)*/
	private JBSbatSQLAccess db_SC_T_SVC_ODR_SRINF = null;

	/** テーブルアクセスクラス(電話サービスオーダ)*/
	private JBSbatSQLAccess db_SC_T_TEL_SVC_ORDER = null;

	/** テーブルアクセスクラス(緊急通報オーダ)*/
	private JBSbatSQLAccess db_SC_T_EMG_ORDER = null;

	/** テーブルアクセスクラス(ＳＯＤ業務管理)*/
	private JBSbatSQLAccess db_SC_T_SOD_WORK_KANRI = null;

	/** 分類コード用 半角スペース5個*/
	private static final String FIVE_SPACES = "     ";
	
	/**  内容補足1数値 */
	private int naiyo_hsk_1_cnt = 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_SVC_ODR_SRINF = new JBSbatSQLAccess(commonItem, D_TBL_NAME_SC_T_SVC_ODR_SRINF);
		db_SC_T_TEL_SVC_ORDER = new JBSbatSQLAccess(commonItem, D_TBL_NAME_SC_T_TEL_SVC_ORDER);
		db_SC_T_EMG_ORDER = new JBSbatSQLAccess(commonItem, D_TBL_NAME_SC_T_EMG_ORDER);
		db_SC_T_SOD_WORK_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_SC_T_SOD_WORK_KANRI);


		// バッチ運用日時を設定
		this.unyoDate = commonItem.getOpeDate();

		// サービスオーダ送受信情報テーブルとオーダテーブルのロック(SC_SELECT_004)
		String[] param0w =		// ＷＨＥＲＥ句
		{
				this.unyoDate,							// 適用開始年月日
				this.unyoDate							// 適用終了年月日
		};

		executeSC_T_SVC_ODR_SRINF_SC_SELECT_004(param0w); 

		// SOD業務管理テーブルのロック
		// 抽出結果取得用オブジェクト
		JBSbatCommonDBInterface sod = new JBSbatCommonDBInterface();
		
		String[] param1 = {
				JSCStrConstant.BUNRUI_1_SOD_SND_SEQ,	// 分類コード1
				JSCStrConstant.BUNRUI_2_IP_SOD_TEL,		// 分類コード2
				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[] {
					"分類1コード, 分類2コード, 分類3コード, 分類4コード, 分類5コード, 適用開始年月日, 無効フラグ"
					, param1[0] + ", " 
					+ param1[1] + ", " 
					+ param1[2] + ", " 
					+ param1[3] + ", " 
					+ param1[4] + ", " 
					+ param1[5] + ", " 
					+ param1[6]
					, D_TBL_NAME_SC_T_SOD_WORK_KANRI});
		}
		naiyo_hsk_1_cnt = Integer.parseInt(sod.getString(JBSbatSC_T_SOD_WORK_KANRI.NAIYO_HSK_1_CNT));
		
		if(JSCStrConstant.MAX_FILE_SEQ <= naiyo_hsk_1_cnt)
		{
			naiyo_hsk_1_cnt = 0;
		}
		else
		{
			naiyo_hsk_1_cnt++;
		}

		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @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();
		
		JBSbatCommonDBInterface resultMap = null;
		
		// オーダ．オーダ種別コードにより、検索するテーブルを切り分ける。
		if(JSCStrConstant.ORDER_SBT_CD_TEL.equals(inMap.getString(JBSbatSC_M_ORDER.ORDER_SBT_CD)))
		// オーダ種別コード = 2(電話) ならば 電話サービスオーダテーブルを処理する。
		{
			// 電話サービスオーダテーブルのロック(PK検索)
			String[] param2w =		// ＷＨＥＲＥ句
			{
					inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ) 		// 電話用サービスオーダ番号(＝SOD連携通番)　条件
			};
			resultMap = executeSC_T_TEL_SVC_ORDER_PKSELECT(param2w);

			// 対象レコードの有無を確認し、無い場合はエラー表示
			if(null == resultMap)
			{
				//エラー処理（処理は継続し次のレコードまでスキップ）
				super.logPrint.printDebugLog("電話サービスオーダテーブルにレコードが存在しません。");
				throw new JBSbatBusinessException("ESCB0180CE",
						new String[] {"電話用サービスオーダ番号",
						inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ),
						D_TBL_NAME_SC_T_TEL_SVC_ORDER});
			}
		}
		else if(JSCStrConstant.ORDER_SBT_CD_EMERG.equals(inMap.getString(JBSbatSC_M_ORDER.ORDER_SBT_CD)))
		// オーダ種別コード = 4(緊急通報) ならば 緊急通報オーダテーブルを処理する。
		{
			// 緊急通報オーダテーブルのロック(PK検索)
			String[] param4w =		// ＷＨＥＲＥ句
			{
					inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ) 		// 緊急通報オーダ番号(＝SOD連携通番)　条件
			};
			resultMap = executeSC_T_EMG_ORDER_PKSELECT(param4w);

			// 対象レコードの有無を確認し、無い場合はエラー表示
			if(null == resultMap)
			{
				//エラー処理（処理は継続し次のレコードまでスキップ）
				super.logPrint.printDebugLog("緊急通報オーダテーブルにレコードが存在しません。");
				throw new JBSbatBusinessException("ESCB0180CE",
						new String[] {"緊急通報オーダ番号",
						inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ),
						D_TBL_NAME_SC_T_EMG_ORDER});
			}
		}

		// ＩＰ−ＳＯＤ送信情報（電話）ファイルのデータ部の出力開始
		// 旧SOD連携通番の内容確認と値の代入
		String old_Seq = inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.OLD_SOD_RENKEI_SEQ);
		if (null == inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.OLD_SOD_RENKEI_SEQ))
		{
			old_Seq = SEVEN_SPACES;
		}

		//項目を設定
		outmap.setString(JBSbatSCIFE007.REC_SBT_CD,       JSCStrConstant.REC_SBT_CD_DATA); 								// レコード種別コード:データ部(1)
		outmap.setString(JBSbatSCIFE007.YOKYU_SBT_CD,     inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.YOKYU_SBT_CD)); 		// 要求種別コード
		outmap.setString(JBSbatSCIFE007.SVC_ODR_CD,       inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SVC_ORDER_CD)); 		// サービスオーダコード
		// オーダ種別コード = 2(電話)
		if(JSCStrConstant.ORDER_SBT_CD_TEL.equals(inMap.getString(JBSbatSC_M_ORDER.ORDER_SBT_CD)))
		{
			outmap.setString(JBSbatSCIFE007.SVC_ODR_DTL_CD, resultMap.getString(JBSbatSC_T_TEL_SVC_ORDER.SVC_ORDER_DTAIL_CD));	// サービスオーダ詳細コード
		}
		// オーダ種別コード = 4(緊急通報)
		else if(JSCStrConstant.ORDER_SBT_CD_EMERG.equals(inMap.getString(JBSbatSC_M_ORDER.ORDER_SBT_CD)))
		{
			outmap.setString(JBSbatSCIFE007.SVC_ODR_DTL_CD, resultMap.getString(JBSbatSC_T_EMG_ORDER.SVC_ORDER_DTAIL_CD)); 		// サービスオーダ詳細コード
		}
		outmap.setString(JBSbatSCIFE007.SOD_RNKI_SEQ,     inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ)); 	// SOD連携通番
		outmap.setString(JBSbatSCIFE007.OLD_SOD_RNKI_SEQ, old_Seq); 													// 旧SOD連携通番
		outmap.setString(JBSbatSCIFE007.SCHDL_YMD,        inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SCHEDULE_YMD)); 		// スケジュール年月日
		outmap.setString(JBSbatSCIFE007.SOD_RSLT_ADD_DTM, TWELVE_ZERO); 												// SOD結果登録年月日時分秒
		outmap.setString(JBSbatSCIFE007.SOD_TRAN_RSLT_CD, ONE_SPACES); 													// SOD処理結果コード
		outmap.setString(JBSbatSCIFE007.SOD_TRAN_RSLT_DTL_CD, FOUR_SPACES); 											// SOD処理結果詳細コード
		outmap.setString(JBSbatSCIFE007.SVC_KEI_NO,       inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SVC_KEI_NO)); 		// サービス契約番号
		outmap.setString(JBSbatSCIFE007.SOD_RRK_DATA,     inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RRK_DATA)); 		// SOD連絡データ
		// 出力フラグを設定
		outmap.setOutFlg(true);
		
		// サービスオーダ送受信情報テーブルの更新(PK更新)
		String[] param1 =		// ＳＥＴ句
		{
			JSCStrConstant.SOD_STAT_ACK_WAIT, 	// SODステータス:応答待ち(002)
			sysDateTimeStamp,					// SOD投入年月日時分秒ミリ秒
			sysDateTimeStamp, 					// 更新年月日時分秒ミリ秒
			upAccount 							// 更新オペレータアカウント
		};

		String[] param1w =		// ＷＨＥＲＥ句
		{
			inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SRINF_KANRI_NO) 		// 送受信情報管理番号　条件
		};
		
		try
		{
			executeSC_T_SVC_ODR_SRINF_PKUPDATE(param1, param1w);
		}
		catch (Exception e)
		{
			throw new JBSbatBusinessException("ESCB0200CE",
				new String[] {"SRINF_KANRI_NO",
				inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SRINF_KANRI_NO),
				D_TBL_NAME_SC_T_SVC_ODR_SRINF});
		}

		// オーダ．オーダ種別コードにより、更新するテーブルを切り分ける。
		if(JSCStrConstant.ORDER_SBT_CD_TEL.equals(inMap.getString(JBSbatSC_M_ORDER.ORDER_SBT_CD)))
		// オーダ種別コード = 2(電話) ならば 電話サービスオーダテーブルを処理する。
		{
			// 電話サービスオーダテーブルの更新(PK更新)
			String[] param3 =		// ＳＥＴ句
			{
				JSCStrConstant.SOD_STAT_ACK_WAIT, 			// 電話用サービスオーダステータス:応答待ち(002)
				sysDateTimeStamp, 										// 更新年月日時分秒ミリ秒
				upAccount 													// 更新オペレータアカウント
			};
			String[] param3w =		// ＷＨＥＲＥ句
			{
				inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ) 			// 電話用サービスオーダ番号(＝SOD連携通番)　条件
			};
			try
			{
				executeSC_T_TEL_SVC_ORDER_PKUPDATE(param3, param3w);
			}
			catch (Exception e)
			{
				throw new JBSbatBusinessException("ESCB0200CE",
					new String[] {JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ,
					inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ),
					D_TBL_NAME_SC_T_TEL_SVC_ORDER});
			}
		}
		else if(JSCStrConstant.ORDER_SBT_CD_EMERG.equals(inMap.getString(JBSbatSC_M_ORDER.ORDER_SBT_CD)))
		// オーダ種別コード = 4(緊急通報) ならば 緊急通報オーダテーブルを処理する。
		{
			// 緊急通報オーダテーブルの更新(PK更新)
			String[] param5 =		// ＳＥＴ句
			{
				JSCStrConstant.SOD_STAT_ACK_WAIT, 			// 緊急通報オーダステータス:応答待ち(002)
				sysDateTimeStamp, 										// 更新年月日時分秒ミリ秒
				upAccount 													// 更新オペレータアカウント
			};
			String[] param5w =		// ＷＨＥＲＥ句
			{
				inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ) 			// 緊急通報オーダ番号(＝SOD連携通番)　条件
			};
			try
			{
				executeSC_T_EMG_ORDER_PKUPDATE(param5, param5w);
			}
			catch (Exception e)
			{
				throw new JBSbatBusinessException("ESCB0200CE",
					new String[] {JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ,
					inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ),
					D_TBL_NAME_SC_T_EMG_ORDER});
			}
		}

		// 出力共通電文に入出力インターフェースを設定する
		outputBean.addOutMapList(outmap);

		return outputBean; // ファイルを出力
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/

		// ＩＰ−ＳＯＤ送信情報（電話）ファイルの入力行数の取得
		int cnt = commonItem.getInputCount();

		// 実行年月日時分秒の取得
		String sysDateTimeStamp = JCCBatCommon.getSysDateTimeStamp();

		// 更新オペレータアカウント取得
		String upAccount = commonItem.getBatchUserId();

		if(0 < cnt)
		{
			// ＳＯＤ業務管理テーブルの更新
			String[] param7 =
			{
				Integer.toString(naiyo_hsk_1_cnt),		// 内容補足1数値(0〜99999、サイクリック)
				sysDateTimeStamp, 							// 更新年月日時分秒ミリ秒
				upAccount, 										// 更新オペレータアカウント
				JSCStrConstant.BUNRUI_1_SOD_SND_SEQ, 			// 分類1コード SC001(SOD送信ファイル通番)
				JSCStrConstant.BUNRUI_2_IP_SOD_TEL, 			// 分類2コード 00003(IP-SODデータ(電話用))
				FIVE_SPACES, 			// 分類3コード 半角空白5文字
				FIVE_SPACES, 			// 分類4コード 半角空白5文字
				FIVE_SPACES, 			// 分類5コード 半角空白5文字
				this.unyoDate,						// 適用開始年月日
				JSCStrConstant.MK_FLG_YUKO 			// 無効フラグ (0)有効
			};
			try
			{
				executeSC_T_SOD_WORK_KANRI_SC_UPDATE_001(param7);
			}
			catch (Exception e)
			{
				throw new JBSbatBusinessException("ESCB0200CE",
						new String[] {
						"分類1コード, 分類2コード, 分類3コード, 分類4コード, 分類5コード, 適用開始年月日",
						JSCStrConstant.BUNRUI_1_SOD_SND_SEQ + ", "
						+ JSCStrConstant.BUNRUI_2_IP_SOD_TEL + ", " 
						+ FIVE_SPACES + ", " 
						+ FIVE_SPACES + ", " 
						+ FIVE_SPACES + ", " 
						+ this.unyoDate,
						D_TBL_NAME_SC_T_SOD_WORK_KANRI});
			}

			// ヘッダー部の出力(String s,String outFileName, String outFilePath)
			outHeader(naiyo_hsk_1_cnt, "SCIFE007_header.csv", commonItem.getFreeItem());
			// トレーラ部の出力(String idx, String outFileName, String outFilePath)
			outTrailer(cnt, "SCIFE007_trailer.csv", commonItem.getFreeItem());
		}
		else
		{
			// データが0件の場合のメッセージ
			super.logPrint.printLogMsg("ESCB0080AI", "IP-SOD送信情報（電話）ファイル");
		}
		super.commit();

		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_SC_T_SVC_ODR_SRINF.close();
		db_SC_T_TEL_SVC_ORDER.close();
		db_SC_T_EMG_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_SVC_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_SVC_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項目は以下に説明します。
	 *		 	TEL_SVC_ORDER_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeSC_T_TEL_SVC_ORDER_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("TEL_SVC_ORDER_NO", whereParam[0]);

		// DBアクセスを実行します
		return db_SC_T_TEL_SVC_ORDER.selectByPrimaryKeys(whereMap);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセス（電話サービスオーダ）を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	電話サービスオーダステータス				TEL_SVC_ORDER_STAT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	TEL_SVC_ORDER_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeSC_T_TEL_SVC_ORDER_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TEL_SVC_ORDER_STAT", setParam[0]);
		setMap.setValue("UPD_DTM", setParam[1]);
		setMap.setValue("UPD_OPEACNT", setParam[2]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("TEL_SVC_ORDER_NO", whereParam[0]);

		// DBアクセスを実行します
		db_SC_T_TEL_SVC_ORDER.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセス（緊急通報オーダ）を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	EMG_ORDER_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeSC_T_EMG_ORDER_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("EMG_ORDER_NO", whereParam[0]);

		// DBアクセスを実行します
		return db_SC_T_EMG_ORDER.selectByPrimaryKeys(whereMap);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセス（緊急通報オーダ）を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	緊急通報オーダステータス				EMG_ORDER_STAT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	EMG_ORDER_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeSC_T_EMG_ORDER_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("EMG_ORDER_STAT", setParam[0]);
		setMap.setValue("UPD_DTM", setParam[1]);
		setMap.setValue("UPD_OPEACNT", setParam[2]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("EMG_ORDER_NO", whereParam[0]);

		// DBアクセスを実行します
		db_SC_T_EMG_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_004)でDBアクセス(サービスオーダ送受信情報、オーダ)を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	ＳＯＤステータス
	 *		 	ＳＯＤステータス
	 *		 	無効フラグ
	 *		 	オーダ種別コード
	 *		 	オーダ種別コード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeSC_T_SVC_ODR_SRINF_SC_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_SC_T_SVC_ODR_SRINF.selectBySqlDefine(paramList, SC_T_SVC_ODR_SRINF_SC_SELECT_004);
	}

	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * ＩＰ−ＳＯＤ送信情報（電話）ファイルのヘッダー部出力を行います。<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});
		}
	}

	/**
	 * ＩＰ−ＳＯＤ送信情報（電話）ファイルのトレーラ部出力を行います。<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});
		}
	}
}
