/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatSCIpsodDataNetCst
*	ソースファイル名	：JBSbatSCIpsodDataNetCst.java
*	作成者				：富士通　
*	作成日				：2011年09月05日
*＜機能概要＞
*　IP-SODデータ(ネット)抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/05   富士通		新規作成
*	v3.00.00	2012/08/08  FJ)前岡		【ST1-2012-0000221】オーダ種別コード(2:電話)でサービスオーダコード（23:RADIUS）を抽出対象とする
*	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.JBSbatSCIFE001;
import eo.business.util.table.JBSbatSC_M_ORDER;
import eo.business.util.table.JBSbatSC_T_SVC_ODR_SRINF;
import eo.business.util.table.JBSbatSC_T_SVC_ORDER;
import eo.business.util.table.JBSbatSC_T_TEL_SVC_ORDER;
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;
import eo.common.constant.JSCStrConstant;
//import eo.common.util.JPCEditString;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatSCIpsodDataNetCst 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_SOD_WORK_KANRI = "SC_T_SOD_WORK_KANRI";

	/** テーブル(サービスオーダ)*/
	private static final String D_TBL_NAME_SC_T_SVC_ORDER = "SC_T_SVC_ORDER";

	/** テーブル(電話サービスオーダ)*/
	private static final String D_TBL_NAME_SC_T_TEL_SVC_ORDER = "SC_T_TEL_SVC_ORDER";

	/** 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_007)*/
	private static final String SC_T_SVC_ODR_SRINF_SC_SELECT_007 = "SC_SELECT_007";

	/** テーブルアクセスクラス(サービスオーダ送受信情報)*/
	private JBSbatSQLAccess db_SC_T_SVC_ODR_SRINF = null;

	/** テーブルアクセスクラス(ＳＯＤ業務管理)*/
	private JBSbatSQLAccess db_SC_T_SOD_WORK_KANRI = null;

	/** テーブルアクセスクラス(サービスオーダ)*/
	private JBSbatSQLAccess db_SC_T_SVC_ORDER = null;

	/** テーブルアクセスクラス(電話サービスオーダ)*/
	private JBSbatSQLAccess db_SC_T_TEL_SVC_ORDER = 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();
	
	/** オーダ種類（1:ネット）*/
	private static final String ORDER_NET = "1";
	
	/** オーダ種類（2:電話）*/
	private static final String ORDER_TEL = "2";
	
	/** オーダ種類（1:ネット、2:電話）*/
	private String order = ORDER_NET;
	
	/** バッチ運用日時*/
	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_SOD_WORK_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_SC_T_SOD_WORK_KANRI);
		db_SC_T_SVC_ORDER = new JBSbatSQLAccess(commonItem, D_TBL_NAME_SC_T_SVC_ORDER);
		db_SC_T_TEL_SVC_ORDER = new JBSbatSQLAccess(commonItem, D_TBL_NAME_SC_T_TEL_SVC_ORDER);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// バッチ運用日時を設定
		this.unyoDate = commonItem.getOpeDate();

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
		
		// SOD業務管理テーブルのロック
		// 抽出結果取得用オブジェクト
		JBSbatCommonDBInterface sod = new JBSbatCommonDBInterface();
		
		String[] param1 = {
				JSCStrConstant.BUNRUI_1_SOD_SND_SEQ,	// 分類1コード
				JSCStrConstant.BUNRUI_2_IP_SOD_NET,		// 分類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[] {
					"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++;
		}
		
		// サービスオーダ送受信情報のロック
		String[] param = {
				this.unyoDate,						// 適用年月日
				this.unyoDate						// 適用年月日
		};
		executeSC_T_SVC_ODR_SRINF_SC_SELECT_007(param);
		
	}

	/**
	 * 主処理
	 * @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();
		
		// オーダ種別コード、サービスオーダコード取得
		String orderSbtCd = inMap.getString(JBSbatSC_M_ORDER.ORDER_SBT_CD);
		String svcOrderCd = inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SVC_ORDER_CD);
		if(JSCStrConstant.ORDER_SBT_CD_TEL.equals(orderSbtCd) && JSCStrConstant.TEL_SERVICE_ORD_RADIUS.equals(svcOrderCd))
		{
			order = ORDER_TEL;	//電話
		}
		else
		{
			order = ORDER_NET;	//ネット
		}
		
		
		/***************************************************************/
		/** サービスオーダ、電話サービスオーダテーブルのレコードロック */
		/***************************************************************/
		JBSbatCommonDBInterface whereMap = null;
		JBSbatCommonDBInterface resultMap = null;
		whereMap = new JBSbatCommonDBInterface();

		if(ORDER_NET.equals(order))
		{
			// サービスオーダテーブルのレコードロックの取得
			whereMap.setValue("SVC_ORDER_NO", inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ));
			resultMap = db_SC_T_SVC_ORDER.selectByPrimaryKeysForUpdateWait(whereMap);
			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_SVC_ORDER});
			}
		}
		else
		{
			// 電話サービスオーダテーブルのレコードロックの取得
			whereMap.setValue("TEL_SVC_ORDER_NO", inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ));
			resultMap = db_SC_T_TEL_SVC_ORDER.selectByPrimaryKeysForUpdateWait(whereMap);
			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});
			}
		}
		
		// 旧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(JBSbatSCIFE001.REC_SBT_CD,           JSCStrConstant.REC_SBT_CD_DATA); 							// レコード種別:データ部
		outmap.setString(JBSbatSCIFE001.YOKYU_SBT_CD,         inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.YOKYU_SBT_CD));	// 要求種別コード
		outmap.setString(JBSbatSCIFE001.SVC_ODR_CD,           inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SVC_ORDER_CD));	// サービスオーダコード
		if(ORDER_NET.equals(order))
		{
			outmap.setString(JBSbatSCIFE001.SVC_ODR_DTL_CD, resultMap.getString(JBSbatSC_T_SVC_ORDER.SVC_ORDER_DTAIL_CD));		// サービスオーダ詳細コード
		}
		else
		{
			outmap.setString(JBSbatSCIFE001.SVC_ODR_DTL_CD, resultMap.getString(JBSbatSC_T_TEL_SVC_ORDER.SVC_ORDER_DTAIL_CD));	// サービスオーダ詳細コード
		}
		outmap.setString(JBSbatSCIFE001.SOD_RNKI_SEQ,         inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ));	// SOD連携通番
		outmap.setString(JBSbatSCIFE001.OLD_SOD_RNKI_SEQ,     old_Seq);														// 旧SOD連携通番
		outmap.setString(JBSbatSCIFE001.SCHEDULE_YMD,         inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SCHEDULE_YMD));		// スケジュール年月日
		outmap.setString(JBSbatSCIFE001.SOD_RSLT_ADD_DTM,     TWELVE_ZERO);													// SOD結果登録年月日
		outmap.setString(JBSbatSCIFE001.SOD_TRAN_RSLT_CD,     ONE_SPACES);													// SOD処理結果コード
		outmap.setString(JBSbatSCIFE001.SOD_TRAN_RSLT_DTL_CD, FOUR_SPACES);													// SOD処理結果詳細コード
		outmap.setString(JBSbatSCIFE001.SVC_KEI_NO,           inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SVC_KEI_NO));		// サービス契約番号
		outmap.setString(JBSbatSCIFE001.SOD_RRK_DATA,         inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RRK_DATA));		// SOD連携データ
		
		// 出力フラグを設定
		outmap.setOutFlg(true);
		
		
		/***************************************/
		/** サービスオーダ送受信テーブルの更新 */
		/***************************************/
		String[] param2 = {
				JSCStrConstant.SOD_STAT_ACK_WAIT,	// SODステータス(応答待ち)
				sysDateTimeStamp,					// SOD投入年月日時分秒
				sysDateTimeStamp, 					// 更新年月日時分秒ミリ秒
				upAccount 							// 更新オペレータアカウント
		};
//		JCCBatCommon.getSysDateTimeStamp(),	// 実行年月日

		String[] param3 = {
				inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SRINF_KANRI_NO)	// 送受信情報管理番号
		};
		
		try
		{
			executeSC_T_SVC_ODR_SRINF_PKUPDATE(param2, param3);
		}
		catch (Exception e)
		{
			// 自動生成されたメソッドがExceptionを投げるので、PGReliefの警告に対応できない
			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});
		}
		
		
		/*****************************************************/
		/** サービスオーダ、電話サービスオーダテーブルの更新 */
		/*****************************************************/
		String[] param4 = {
				inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ)
		};

		if(ORDER_NET.equals(order))
		{
			//サービスオーダテーブルの更新
			try
			{
				executeSC_T_SVC_ORDER_PKUPDATE(param2, param4);
			}
			catch (Exception e)
			{
				// 自動生成されたメソッドがExceptionを投げるので、PGReliefの警告に対応できない
				throw new JBSbatBusinessException("ESCB0200CE",
						new String[] {"SOD_RENKEI_SEQ",
						inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ),
						D_TBL_NAME_SC_T_SVC_ORDER});
			}
		}
		else
		{
			//電話サービスオーダテーブルの更新
			try
			{
				executeSC_T_TEL_SVC_ORDER_PKUPDATE(param2, param4);
			}
			catch (Exception e)
			{
				// 自動生成されたメソッドがExceptionを投げるので、PGReliefの警告に対応できない
				throw new JBSbatBusinessException("ESCB0200CE",
						new String[] {"SOD_RENKEI_SEQ",
						inMap.getString(JBSbatSC_T_SVC_ODR_SRINF.SOD_RENKEI_SEQ),
						D_TBL_NAME_SC_T_TEL_SVC_ORDER});
			}
		}
		
		
		// 出力共通電文に入出力インターフェースを設定する
		outputBean.addOutMapList(outmap);
		
		return outputBean; // ファイルを出力
		
//		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		// 入力行数の取得
		int cnt = commonItem.getInputCount();

		// 更新オペレータアカウント取得
		String upAccount = commonItem.getBatchUserId();
		
		// 実行年月日時分秒の取得
		String sysDateTimeStamp = JCCBatCommon.getSysDateTimeStamp();
		
		if(0 < cnt)
		{
			// SOD業務管理テーブルの更新
			String[] param1 = {
					JSCStrConstant.BUNRUI_1_SOD_SND_SEQ,	// 分類1コード
					JSCStrConstant.BUNRUI_2_IP_SOD_NET,		// 分類2コード
					FIVE_SPACES,							// 分類3コード
					FIVE_SPACES,							// 分類4コード
					FIVE_SPACES,							// 分類5コード
					this.unyoDate,							// 実行年月日
					JSCStrConstant.MK_FLG_YUKO				// 無効フラグ
			};
			String[] param5 = {
					Integer.toString(naiyoHsk1Cnt),		// 内容補足1数値
					sysDateTimeStamp,						// 更新年月日時分秒
					upAccount,								// 更新オペレータアカウント
					param1[0],								// 分類1コード
					param1[1],								// 分類2コード
					param1[2],								// 分類3コード
					param1[3],								// 分類4コード
					param1[4],								// 分類5コード
					param1[5],								// 実行年月日
					param1[6]								// 無効フラグ
			};
			try
			{
				executeSC_T_SOD_WORK_KANRI_SC_UPDATE_001(param5);
			}
			catch (Exception e)
			{
				// 自動生成されたメソッドがExceptionを投げるので、PGReliefの警告に対応できない
				throw new JBSbatBusinessException("ESCB0200CE",
						new String[] {
						  "BUNRUI_1_CD" + ", "			// 分類1コード
						+ "BUNRUI_2_CD" + ", "			// 分類2コード
						+ "BUNRUI_3_CD" + ", "			// 分類3コード
						+ "BUNRUI_4_CD" + ", "			// 分類4コード
						+ "BUNRUI_5_CD" + ", "			// 分類5コード
						+ "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});
			}
			
			// ヘッダー部の出力
			outHeader(naiyoHsk1Cnt, "SCIFE001_header.csv", commonItem.getFreeItem());
			// トレーラ部の出力
			outTrailer(cnt, "SCIFE001_trailer.csv", commonItem.getFreeItem());
		}
		else
		{
			super.logPrint.printLogMsg("ESCB0080AI");
		}
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_SC_T_SVC_ODR_SRINF.close();
		db_SC_T_SOD_WORK_KANRI.close();
		db_SC_T_SVC_ORDER.close();
		db_SC_T_TEL_SVC_ORDER.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
	 *		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);
	}

	/**
	 * 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);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	サービスオーダステータス				SVC_ORDER_STAT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	SVC_ORDER_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeSC_T_SVC_ORDER_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("SVC_ORDER_STAT", setParam[0]);
		setMap.setValue("UPD_DTM", setParam[1]);
		setMap.setValue("UPD_OPEACNT", setParam[2]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("SVC_ORDER_NO", whereParam[0]);

		// DBアクセスを実行します
		db_SC_T_SVC_ORDER.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * SQLKEY(SC_SELECT_007)で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_SVC_ODR_SRINF_SC_SELECT_007(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_007);
	}

	/**
	 * 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
	 *		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]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("TEL_SVC_ORDER_NO", whereParam[0]);

		// DBアクセスを実行します
		db_SC_T_TEL_SVC_ORDER.updateByPrimaryKeys(whereMap, setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * IP-SODデータ(ネット用)ファイルのヘッダー部出力を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.ヘッダー部の出力を行います。<br>
	 * </pre>
	 * <p>
	 * @param iHosoku 内容補足1数値
	 * @param outFileName ファイル出力名
	 * @param outFilePath パス名
	 * @return なし
	 * @exception JBSbatBusinessException 業務サービス内で発生した例外全般。
	 */
	private void outHeader(int iHosoku, String outFileName, String outFilePath) throws JBSbatBusinessException
	{
		StringBuffer outString = new StringBuffer(29);

		// レコード種別を追加
		outString.append(JSCStrConstant.REC_SBT_CD_HEADER);
		outString.append(',');

		// ファイル作成年月日をyyMMddhhmmss形式に変換して追加
		outString.append(JCCBatCommon.getSysDateTimeStamp().substring(2, 14));
		outString.append(',');

		// 内容補足1数値を0埋めをして追加
		//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});
		}
	}

	/**
	 * IP-SODデータ(ネット用)ファイルのトレーラ部出力を行います。<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);

		// レコード種別を追加
		outString.append(JSCStrConstant.REC_SBT_CD_TRAILER);
		outString.append(',');

		// レコード件数を追加
		//String s = Integer.toString(idx); // 件数を文字列化
		//outString.append(JPCEditString.fillHalfSpace(s, 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});
		}
	}
	
}
