/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatSCIpsodUkRsltTelUpd
*	ソースファイル名	：JBSbatSCIpsodUkRsltTelUpd.java
*	作成者				：富士通　
*	作成日				：2011年09月15日
*＜機能概要＞
*　ＩＰ−ＳＯＤ受付結果（電話用）更新部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/15   富士通		新規作成
*	v57.00.00	2022/03/10   FJ)吉村	【IT1-2022-0000021】ENUMのSOD送信結果がクラリスに返却された
*	v72.00.00	2024/07/18   FJ)藤井 	【ANK-4494-00-00】【eo定期】 双方向番ポ対応
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatSCIFE008;
import eo.common.constant.JSCStrConstant;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatCheckUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatSCIpsodUkRsltTelUpd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(ＳＯＤ業務管理)*/
	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_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";

	/** SQL定義キー(SC_SELECT_002)*/
	private static final String SC_T_SOD_WORK_KANRI_SC_SELECT_002 = "SC_SELECT_002";

	/** SQL定義キー(SC_SELECT_009)*/
	private static final String SC_T_SVC_ODR_SRINF_SC_SELECT_009 = "SC_SELECT_009";

	/** SQL定義キー(SC_UPDATE_001)*/
	private static final String SC_T_SOD_WORK_KANRI_SC_UPDATE_001 = "SC_UPDATE_001";

	/** テーブルアクセスクラス(ＳＯＤ業務管理)*/
	private JBSbatSQLAccess db_SC_T_SOD_WORK_KANRI = null;

	/** テーブルアクセスクラス(サービスオーダ送受信情報)*/
	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;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 分類コード用 半角スペース5個 */
	private static final String FIVE_SPACES = "     ";
	
	/** 内容補足1数値 */
	private int naiyoHsk1Cnt = 0;

	/** 西暦の4桁化 */
	private static final String YY_4 = "20";

	/** ミリ秒化 */
	private static final String M_SEC = "000";

	/** データ部読み込み回数 */
	private int data_cnt = 0;
	
	/** バッチ運用日時*/
	private String unyoDate = null;
	
	/** ログ出力用項目名設定Map*/
	private HashMap<String, String> messageMap = null;
	
	/** ファイル項目名マップ */
	private HashMap<Integer, String> colsMap = null;
	
	/** 工事関連情報受信（OPMS）情報ファイルオブジェクト */
	private JBSbatInputFileUtil fileObj = null;

	/** 工事関連情報受信（OPMS）定義情報ファイルオブジェクト */
	private JBSbatDefFileUtil constFileObj = null;
	
	/** ファイル定義項目数*/
	private int fileColCnt = 0;
	
	/** 入力ファイルパス */
	private String filePath = null;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_SC_T_SOD_WORK_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_SC_T_SOD_WORK_KANRI);
		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);

		// バッチ運用日時を設定
		this.unyoDate = commonItem.getOpeDate();
		
		// ヘッダー部の読み込み
		// FreeItem取得（FREE項目には「定義ファイル名@入力ファイル（フルパス）」が設定されている）
		String[] freeItem = commonItem.getFreeItem().split(JSCStrConstant.FREE_DIV);
		
		filePath = freeItem[1];
		BufferedReader in = null;
		String file_seq = "";
		try
		{
			in = new BufferedReader(new FileReader(filePath));
			String line = in.readLine();
			String[] str1 = line.split(",");
			file_seq = str1[2];
		}
		catch (IOException ignore)
		{
			throw new JBSbatBusinessException("ESCB0260CE", new String[] {filePath});
		}
		finally
		{
			if(null != in)
			{
				in.close();
			}
		}
		
		// ファイル通番の属性チェック（半角数字1以外NG）
		if (!JBSbatCheckUtil.invoke(file_seq, new String[]{"hannkakusuuji1"})) {
			
			throw new JBSbatBusinessException("ESCB0660CE", new String[]{"ヘッダ部のファイル通番", "半角数字"});
		}
		
		// SOD業務管理テーブルのロック
		// 抽出結果取得用オブジェクト
		JBSbatCommonDBInterface sod = new JBSbatCommonDBInterface();
		
		String[] param1 = {
				JSCStrConstant.BUNRUI_1_SOD_RCV_SEQ,	// 分類コード1
				JSCStrConstant.BUNRUI_2_IP_SOD_TEL,		// 分類コード2
				FIVE_SPACES,							// 分類コード3
				FIVE_SPACES,							// 分類コード4
				FIVE_SPACES,							// 分類コード5
				this.unyoDate,							// 実行年月日
				JSCStrConstant.MK_FLG_YUKO,				// 無効フラグ
				file_seq				// IP-SOD受付結果(電話)のファイル通番
		};
		executeSC_T_SOD_WORK_KANRI_SC_SELECT_002(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, NAIYO_HSK_1_CNT"
					, param1[0] + ", " 			// 分類1コード
					+ param1[1] + ", " 			// 分類2コード
					+  param1[2] + ", " 		// 分類3コード
					+  param1[3] + ", " 		// 分類4コード
					+  param1[4] + ", " 		// 分類5コード
					+  param1[5] + ", " 		// 適用開始年月日
					+  param1[6] + ", "			// 無効フラグ
					+  param1[7] 					// 内容補足1数値(＝IP-SOD受付結果(電話)のファイル通番)
					, 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++;
		}

		// ファイルオブジェクトを生成する
		fileObj = new JBSbatInputFileUtil(filePath);
		// 定義ファイル名を取得する
		String fileDefName = JBSbatAplConst.getAplConstValue("IND") + freeItem[0];
		// 定義ファイルオブジェクトを生成する
		constFileObj  = new JBSbatDefFileUtil(fileDefName, fileObj);
		// Readerオブジェクトを生成する。
		fileObj.createReader();
		
		// ファイル項目名マップを作成する
		colsMap = createColsMap();
		
		// ファイル定義より項目数を取得
		fileColCnt =  constFileObj.getOutDef().size();
		
		// メッセージマップを作製する
		messageMap = createMessageMap();
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		List<JBSbatServiceInterfaceMap> lineList = new ArrayList<JBSbatServiceInterfaceMap>();
		String line = null;
		int recordCnt = 0;
		while (fileObj.ready()) 
		{
			// ファイルレコード取得
			line = fileObj.readLine();
			
			// 定義ファイルに設定された区切り文字で分割
			String[] cols = line.split(constFileObj.getDelimiter(), -1);
			
			if (null == cols || 0 == cols.length)
			{
				continue;
			}
			
			JBSbatServiceInterfaceMap lineObj = new JBSbatServiceInterfaceMap();
			
			for (int i = 0; i < cols.length; ++i)
			{
				if (null != colsMap.get(i))
				{
					lineObj.set(colsMap.get(i), cols[i]);
				}
			}
			lineList.add(lineObj);
		}
		
		for (int i = 0; i < lineList.size(); ++i)
		{
			JBSbatServiceInterfaceMap lineObj = lineList.get(i);

			// ---レコード種別コードによって、処理を変更する

			String recSbtCd = lineObj.getString(JBSbatSCIFE008.REC_SBT_CD);
			// レコード種別 = ヘッダ の場合
			if (JSCStrConstant.REC_SBT_CD_HEADER.equals(recSbtCd))
			{
				// 処理を行わない
				continue;
			}
			// レコード種別 = データ の場合
			else if (JSCStrConstant.REC_SBT_CD_DATA.equals(recSbtCd))
			{
				// 処理を続行する
				lineExecute(lineObj);
			}
			// レコード種別 = トレーラー の場合
			else if (JSCStrConstant.REC_SBT_CD_TRAILER.equals(recSbtCd))
			{
				// 処理を行わない
				continue;
			}
			// 想定されていないレコード種別の場合
			else
			{
				// エラー処理を行い、終了する

				//ロールバック処理
				commonItem.getConnection().rollback();
				//エラー処理　入力レコードに異常がありました。
				throw new JBSbatBusinessException("ESCB0720CE", new String[]{String.valueOf(i + 1), filePath});
			}
		}
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/

		// 実行年月日時分秒の取得
		String sysDateTimeStamp = JCCBatCommon.getSysDateTimeStamp();

		// 更新オペレータアカウント取得
		String upAccount = commonItem.getBatchUserId();

		// IP-SOD受付結果(電話用)更新ファイルのデータ部読み込み件数が1件以上あれば処理する。
		if (0 < data_cnt)
		{
			// ＳＯＤ業務管理テーブルの更新
			String[] param7 = { Integer.toString(naiyoHsk1Cnt), // 内容補足1数値(0〜99999、サイクリック)
					sysDateTimeStamp, // 更新年月日時分秒ミリ秒
					upAccount, // 更新オペレータアカウント
					JSCStrConstant.BUNRUI_1_SOD_RCV_SEQ, // 分類1コード SC002(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[] {
								"BUNRUI_1_CD, BUNRUI_2_CD, BUNRUI_3_CD, BUNRUI_4_CD, BUNRUI_5_CD, TSTAYMD",
								param7[3] + ", " // 分類1コード
										+ param7[4] + ", " // 分類2コード
										+ param7[5] + ", " // 分類3コード
										+ param7[6] + ", " // 分類4コード
										+ param7[7] + ", " // 分類5コード
										+ param7[8] + ", " // 適用開始年月日
										+ param7[9] // 無効フラグ
								, D_TBL_NAME_SC_T_SOD_WORK_KANRI });
			}
		}
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_SC_T_SOD_WORK_KANRI.close();
		db_SC_T_SVC_ODR_SRINF.close();
		db_SC_T_TEL_SVC_ORDER.close();
		db_SC_T_EMG_ORDER.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * SQLKEY(SC_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	分類1コード
	 *		 	分類2コード
	 *		 	分類3コード
	 *		 	分類4コード
	 *		 	分類5コード
	 *		 	適用開始年月日
	 *		 	無効フラグ
	 *		 	内容補足1数値
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeSC_T_SOD_WORK_KANRI_SC_SELECT_002(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());

		// DBアクセスを実行します
		db_SC_T_SOD_WORK_KANRI.selectBySqlDefine(paramList, SC_T_SOD_WORK_KANRI_SC_SELECT_002);
	}

	/**
	 * SQLKEY(SC_SELECT_009)で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_009(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_SVC_ODR_SRINF.selectBySqlDefine(paramList, SC_T_SVC_ODR_SRINF_SC_SELECT_009);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	ＳＯＤステータス				SOD_STAT
	 *		 	ＳＯＤ結果登録年月日時分秒				SOD_RSLT_ADD_DTM
	 *		 	ＳＯＤ処理結果コード				SOD_TRAN_RSLT_CD
	 *		 	ＳＯＤ処理結果詳細コード				SOD_TRAN_RSLT_DTAIL_CD
	 *		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_RSLT_ADD_DTM", setParam[1]);
		setMap.setValue("SOD_TRAN_RSLT_CD", setParam[2]);
		setMap.setValue("SOD_TRAN_RSLT_DTAIL_CD", setParam[3]);
		setMap.setValue("UPD_DTM", setParam[4]);
		setMap.setValue("UPD_OPEACNT", setParam[5]);
		setMap.setValue("SOD_WORK_RNKI_STAT", setParam[6]);
	
		// 条件のマップを作成します
		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.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マップに入れます。項目キーは以下に説明します。
	 *		 	電話サービスオーダステータス				TEL_SVC_ORDER_STAT
	 *		 	電話サービスオーダ結果取込年月日時分秒				SVC_ODR_RSLT_TORIKOMI_DTM
	 *		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("SVC_ODR_RSLT_TORIKOMI_DTM", setParam[1]);
		setMap.setValue("UPD_DTM", setParam[2]);
		setMap.setValue("UPD_OPEACNT", setParam[3]);
	
		// 条件のマップを作成します
		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.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	緊急通報オーダステータス				EMG_ORDER_STAT
	 *		 	緊急通報オーダ結果取込年月日時分秒				EMG_ODR_RSLT_TORIKOMI_DTM
	 *		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("EMG_ODR_RSLT_TORIKOMI_DTM", setParam[1]);
		setMap.setValue("UPD_DTM", setParam[2]);
		setMap.setValue("UPD_OPEACNT", setParam[3]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("EMG_ORDER_NO", whereParam[0]);

		// DBアクセスを実行します
		db_SC_T_EMG_ORDER.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * 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);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * ファイル各行で実行する主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem lineExecute(JBSbatServiceInterfaceMap inMap) throws Exception
	{

		// ---レコード種別コードによって、処理を変更する
		
		String recSbtCd = inMap.getString(JBSbatSCIFE008.REC_SBT_CD);
		// レコード種別 = ヘッダ の場合
		if (JSCStrConstant.REC_SBT_CD_HEADER.equals(recSbtCd))
		{
			// 処理を行わず終了する
			return null;
		}
		// レコード種別 = データ の場合
		else if (JSCStrConstant.REC_SBT_CD_DATA.equals(recSbtCd))
		{
			// 処理を続行する
		}
		// レコード種別 = トレーラー の場合
		else if (JSCStrConstant.REC_SBT_CD_TRAILER.equals(recSbtCd))
		{
			// 処理を行わず終了する
			return null;
		}
		// 想定されていないレコード種別の場合
		else
		{
			// エラー処理を行い、終了する
			
			//ロールバック処理
			commonItem.getConnection().rollback();
			//エラー処理　入力レコードに異常がありました。
			throw new JBSbatBusinessException("ESCB0720CE", new String[]{String.valueOf(data_cnt + 2), filePath});
		}
		
		//単項目チェックの実行
		isSingleCheckSCIFE008_INF1(inMap.getMap(), messageMap);

		// システム日付の取得
		String sysDateTimeStamp = JCCBatCommon.getSysDateTimeStamp();
		
		// 更新オペレータアカウント取得
		String upAccount = commonItem.getBatchUserId();

		data_cnt++;

		// サービスオーダ送受信情報テーブルとオーダテーブルのロック(SC_SELECT_009)
		JBSbatCommonDBInterface svo = new JBSbatCommonDBInterface();	// 抽出結果取得用オブジェクト
		String[] param0w =		// ＷＨＥＲＥ句
		{
				inMap.getString(JBSbatSCIFE008.SOD_RENKEI_SEQ), 		// SOD連携通番(IP-SOD受信結果(電話)のファイル通番)　条件
				JSCStrConstant.SOD_STAT_ACK_WAIT, 		// SODステータス (002)（応答待ち）　条件
				JSCStrConstant.MK_FLG_YUKO,		 		// 無効フラグ (0)有効　条件
				this.unyoDate,							// 適用開始年月日
				this.unyoDate,							// 適用終了年月日
				JSCStrConstant.ORDER_SBT_CD_TEL, 		// オーダ種別コード (2)（電話）　条件
				JSCStrConstant.ORDER_SBT_CD_EMERG		// オーダ種別コード (4)（緊急通報）　条件
		};

		executeSC_T_SVC_ODR_SRINF_SC_SELECT_009(param0w); 

		svo = db_SC_T_SVC_ODR_SRINF.selectNext();

		if(null == svo)
		{
			// エラー処理(サービスオーダ送受信テーブルからデータが取得できなかった場合)
			super.logPrint.printDebugLog("サービスオーダ送受信テーブルにレコードが存在しません。");
			throw new JBSbatBusinessException("ESCB0180CE",
					new String[] {
					"SOD_RENKEI_SEQ, SOD_STAT, MK_FLG, ORDER_TSTAYMD, ORDER_TENDYMD, ORDER_SBT_CD, ORDER_SBT_CD"
					, param0w[0] + ", " 			// SOD連携通番
					+ param0w[1] + ", " 			// SODステータス
					+  param0w[2] + ", "  			// 無効フラグ
					+  param0w[3] + ", "  			// 適用開始年月日
					+  param0w[4] + ", "			// 適用終了年月日
					+  param0w[5] + ", "			// オーダ種別コード
					+  param0w[6] + ", "			// オーダ種別コード
					, D_TBL_NAME_SC_T_SVC_ODR_SRINF});
		}

		String sodWorkRnkiStat = "";
		String yokyuMtAplSbtCd = svo.getString("YOKYU_MT_APL_SBT_CD");
		// IT1-2022-0000021 ADD START
		String svcOdCd = svo.getString("SVC_ORDER_CD");
		// IT1-2022-0000021 ADD END
		// IT1-2022-0000021 MOD START
		//要求元アプリ種別が"C"かつサービスオーダコードが"28(ENUM設定)"以外
	//	if(JSCStrConstant.YOKYU_SBT_CD_CLARIS.equalsIgnoreCase(yokyuMtAplSbtCd))
		// ANK-4494-00-00 MOD START
//		if(JSCStrConstant.YOKYU_SBT_CD_CLARIS.equalsIgnoreCase(yokyuMtAplSbtCd) && !JSCStrConstant.TEL_SERVICE_ORD_ENUM.equals(svcOdCd))
		if(JSCStrConstant.YOKYU_SBT_CD_CLARIS.equalsIgnoreCase(yokyuMtAplSbtCd))
		// ANK-4494-00-00 MOD END
		// IT1-2022-0000021 MOD END
		{
			sodWorkRnkiStat = JSCStrConstant.SOD_RNKI_STAT_WAIT_FIN;	// SOD業務連携ステータス(003)
		}
		// ANK-4494-00-00 DEL START
//		// IT1-2022-0000021 ADD START
//		//要求元アプリ種別が"C"かつサービスオーダコードが"28(ENUM設定)"
//		else if(JSCStrConstant.YOKYU_SBT_CD_CLARIS.equalsIgnoreCase(yokyuMtAplSbtCd) && JSCStrConstant.TEL_SERVICE_ORD_ENUM.equals(svcOdCd))
//		{
//			sodWorkRnkiStat = JSCStrConstant.SOD_RNKI_STAT_FIN;	// SOD業務連携ステータス(004)
//		}
//		// IT1-2022-0000021 ADD END
		// ANK-4494-00-00 DEL END
		else
		{
			sodWorkRnkiStat = JSCStrConstant.SOD_RNKI_STAT_FIN;			// SOD業務連携ステータス(004)
		}

		// 必須、桁数と属性チェックを行う。 
		String sodStatus = JSCStrConstant.SOD_STAT_ACK_NORMAL;			// SODステータス 004(正常応答)
		
		// SOD処理結果コードのチェック　0(正常終了)以外はSODステータス 005(応答異常)とする
		if(!JSCStrConstant.SOD_STAT_RSLT_NORMAL.equals(inMap.getString(JBSbatSCIFE008.SOD_TRAN_RSLT_CD)))
		{
			sodStatus = JSCStrConstant.SOD_STAT_ACK_ABNORMAL;		// SODステータス 005(応答異常)
		}

		// サービスオーダ送受信情報テーブルの更新(PK更新)
		String[] param1 =		// ＳＥＴ句
		{
			sodStatus, 								// SODステータス:004(正常応答) or 005(応答異常)
			sysDateTimeStamp,						// SOD結果登録年月日時分秒
			inMap.getString(JBSbatSCIFE008.SOD_TRAN_RSLT_CD),	// SOD処理結果コード
			inMap.getString(JBSbatSCIFE008.SOD_TRAN_RSLT_DTL_CD),	// SOD処理結果詳細コード
			sysDateTimeStamp, 					// 更新年月日時分秒ミリ秒
			upAccount, 							// 更新オペレータアカウント
			sodWorkRnkiStat						// SOD業務連携ステータス
		};
		String[] param1w =		// ＷＨＥＲＥ句
		{
			svo.getString("SRINF_KANRI_NO") 		// 送受信情報管理番号　条件
		};
		
		try
		{
			executeSC_T_SVC_ODR_SRINF_PKUPDATE(param1, param1w);
		}
		catch (Exception e)
		{
			throw new JBSbatBusinessException("ESCB0200CE",
				new String[] {"SRINF_KANRI_NO",
				svo.getString("SRINF_KANRI_NO"),
				D_TBL_NAME_SC_T_SVC_ODR_SRINF});
		}

			// オーダ．オーダ種別コードにより、更新するテーブルを切り分ける。
			if(JSCStrConstant.ORDER_SBT_CD_TEL.equals(svo.getString("ORDER_SBT_CD")))
			// オーダ種別コード = 2(電話) ならば 電話サービスオーダテーブルを処理する。
			{
				// 電話サービスオーダテーブルのロック(PK検索)
				String[] param2w =		// ＷＨＥＲＥ句
				{
						inMap.getString(JBSbatSCIFE008.SOD_RENKEI_SEQ) 		// 電話用サービスオーダ番号(＝SOD連携通番)　条件
				};

				// 対象レコードの有無を確認し、無い場合はエラー表示
				if(null == executeSC_T_TEL_SVC_ORDER_PKSELECT(param2w))
				{
					//エラー処理（処理は継続し次のレコードまでスキップ）
					super.logPrint.printBusinessErrorLog("ESCB0180CE",
							new String[] {"電話用サービスオーダ番号",
							inMap.getString(JBSbatSCIFE008.SOD_RENKEI_SEQ),
							D_TBL_NAME_SC_T_TEL_SVC_ORDER});
					throw new JBSbatBusinessException("ESCB0180CE",
							new String[] {"電話用サービスオーダ番号",
							inMap.getString(JBSbatSCIFE008.SOD_RENKEI_SEQ),
							D_TBL_NAME_SC_T_TEL_SVC_ORDER});
				}

				// 電話サービスオーダテーブルの更新(PK更新)
				String[] param3 =		// ＳＥＴ句
				{
					sodStatus, 			// 電話用サービスオーダステータス 004(応答正常) or 005(応答異常)
					sysDateTimeStamp, 	// SOD結果登録年月日時分秒
					sysDateTimeStamp, 					// 更新年月日時分秒ミリ秒
					upAccount 							// 更新オペレータアカウント
				};
//				sysDateTimeStamp 										// SOD結果登録年月日時分秒
				String[] param3w =		// ＷＨＥＲＥ句
				{
					inMap.getString(JBSbatSCIFE008.SOD_RENKEI_SEQ) 			// 電話用サービスオーダ番号(＝SOD連携通番)　条件
				};
				try
				{
					executeSC_T_TEL_SVC_ORDER_PKUPDATE(param3, param3w);
				}
				catch (Exception e)
				{
					throw new JBSbatBusinessException("ESCB0200CE",
						new String[] {"TEL_SVC_ORDER_NO",
						inMap.getString(JBSbatSCIFE008.SOD_RENKEI_SEQ),
						D_TBL_NAME_SC_T_TEL_SVC_ORDER});
				}
			}
			else if(JSCStrConstant.ORDER_SBT_CD_EMERG.equals(svo.getString("ORDER_SBT_CD")))
			// オーダ種別コード = 4(緊急通報) ならば 緊急通報オーダテーブルを処理する。
			{
				// 緊急通報オーダテーブルのロック(PK検索)
				String[] param4w =		// ＷＨＥＲＥ句
				{
					inMap.getString(JBSbatSCIFE008.SOD_RENKEI_SEQ) 		// 緊急通報オーダ番号(＝SOD連携通番)　条件
				};

				// 対象レコードの有無を確認し、無い場合はエラー表示
				if(null == executeSC_T_EMG_ORDER_PKSELECT(param4w))
				{
					//エラー処理（処理は継続し次のレコードまでスキップ）
					super.logPrint.printBusinessErrorLog("ESCB0180CE",
							new String[] {"緊急通報オーダ番号",
							inMap.getString(JBSbatSCIFE008.SOD_RENKEI_SEQ),
							D_TBL_NAME_SC_T_EMG_ORDER});
					throw new JBSbatBusinessException("ESCB0180CE",
							new String[] {"緊急通報オーダ番号",
							inMap.getString(JBSbatSCIFE008.SOD_RENKEI_SEQ),
							D_TBL_NAME_SC_T_EMG_ORDER});
				}

				// 緊急通報オーダテーブルの更新(PK更新)
				String[] param5 =		// ＳＥＴ句
				{
					sodStatus, 			// 緊急通報オーダステータス　004(応答正常) or 005(応答異常)
					sysDateTimeStamp, 	// SOD結果登録年月日時分秒
					sysDateTimeStamp, 					// 更新年月日時分秒ミリ秒
					upAccount 							// 更新オペレータアカウント
				};
				String[] param5w =		// ＷＨＥＲＥ句
				{
					inMap.getString(JBSbatSCIFE008.SOD_RENKEI_SEQ) 			// 緊急通報オーダ番号(＝SOD連携通番)　条件
				};
				try
				{
					executeSC_T_EMG_ORDER_PKUPDATE(param5, param5w);
				}
				catch (Exception e)
				{
					throw new JBSbatBusinessException("ESCB0200CE",
						new String[] {"EMG_ODER_NO",
						inMap.getString(JBSbatSCIFE008.SOD_RENKEI_SEQ),
						D_TBL_NAME_SC_T_EMG_ORDER});
				}
			}

		return null;
	}
	
	/**
	 *入力情報（ＩＰ−ＳＯＤ受付結果受信（電話））の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 TXT-SCIFE008-INF1.REC_SBT_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.レコード種別コード
	 *			 TXT-SCIFE008-INF1.REC_SBT_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.レコード種別コード
	 *			 TXT-SCIFE008-INF1.REC_SBT_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.レコード種別コード
	 *			 TXT-SCIFE008-INF1.YOKYU_SBT_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.要求種別コード
	 *			 TXT-SCIFE008-INF1.YOKYU_SBT_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.要求種別コード
	 *			 TXT-SCIFE008-INF1.YOKYU_SBT_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.要求種別コード
	 *			 TXT-SCIFE008-INF1.SVC_ODR_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.サービスオーダコード
	 *			 TXT-SCIFE008-INF1.SVC_ODR_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.サービスオーダコード
	 *			 TXT-SCIFE008-INF1.SVC_ODR_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.サービスオーダコード
	 *			 TXT-SCIFE008-INF1.SVC_ODR_DTL_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.サービスオーダ詳細コード
	 *			 TXT-SCIFE008-INF1.SVC_ODR_DTL_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.サービスオーダ詳細コード
	 *			 TXT-SCIFE008-INF1.SVC_ODR_DTL_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.サービスオーダ詳細コード
	 *			 TXT-SCIFE008-INF1.SOD_RENKEI_SEQ			ＩＰ−ＳＯＤ受付結果受信（電話）.ＳＯＤ連携通番
	 *			 TXT-SCIFE008-INF1.SOD_RENKEI_SEQ			ＩＰ−ＳＯＤ受付結果受信（電話）.ＳＯＤ連携通番
	 *			 TXT-SCIFE008-INF1.SOD_RENKEI_SEQ			ＩＰ−ＳＯＤ受付結果受信（電話）.ＳＯＤ連携通番
	 *			 TXT-SCIFE008-INF1.OLD_SOD_RNKI_SEQ			ＩＰ−ＳＯＤ受付結果受信（電話）.旧ＳＯＤ連携通番
	 *			 TXT-SCIFE008-INF1.OLD_SOD_RNKI_SEQ			ＩＰ−ＳＯＤ受付結果受信（電話）.旧ＳＯＤ連携通番
	 *			 TXT-SCIFE008-INF1.OLD_SOD_RNKI_SEQ			ＩＰ−ＳＯＤ受付結果受信（電話）.旧ＳＯＤ連携通番
	 *			 TXT-SCIFE008-INF1.SCHDL_YMD			ＩＰ−ＳＯＤ受付結果受信（電話）.スケジュール年月日
	 *			 TXT-SCIFE008-INF1.SOD_RSLT_ADD_DTM			ＩＰ−ＳＯＤ受付結果受信（電話）.ＳＯＤ結果登録年月日時分秒
	 *			 TXT-SCIFE008-INF1.SOD_TRAN_RSLT_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.ＳＯＤ処理結果コード
	 *			 TXT-SCIFE008-INF1.SOD_TRAN_RSLT_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.ＳＯＤ処理結果コード
	 *			 TXT-SCIFE008-INF1.SOD_TRAN_RSLT_DTL_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.ＳＯＤ処理結果詳細コード
	 *			 TXT-SCIFE008-INF1.SOD_TRAN_RSLT_DTL_CD			ＩＰ−ＳＯＤ受付結果受信（電話）.ＳＯＤ処理結果詳細コード
	 *			 TXT-SCIFE008-INF1.SVC_KEI_NO			ＩＰ−ＳＯＤ受付結果受信（電話）.サービス契約番号
	 *			 TXT-SCIFE008-INF1.SVC_KEI_NO			ＩＰ−ＳＯＤ受付結果受信（電話）.サービス契約番号
	 *			 TXT-SCIFE008-INF1.SVC_KEI_NO			ＩＰ−ＳＯＤ受付結果受信（電話）.サービス契約番号
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 * @throws SQLException
	 * @throws JBSbatBusinessException
	 */
	private boolean isSingleCheckSCIFE008_INF1(HashMap rsMap, HashMap itemvalueMap) throws SQLException, JBSbatBusinessException
	{
		// 単項目チェックを行います
		String strValue = null;

		// レコード種別コード項目チェック
		strValue = (String)rsMap.get("REC_SBT_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0690CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.REC_SBT_CD"),
															String.valueOf(data_cnt + 2),
															filePath});
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "1", "1"}))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0700CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.REC_SBT_CD"),
															strValue,
															String.valueOf(data_cnt + 2),
															filePath});
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0710CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.REC_SBT_CD"),
															strValue,
															String.valueOf(data_cnt + 2),
															filePath});
		}

		// 要求種別コード項目チェック
		strValue = (String)rsMap.get("YOKYU_SBT_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0690CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.YOKYU_SBT_CD"),
															String.valueOf(data_cnt + 2),
															filePath});
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "2", "2"}))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0700CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.YOKYU_SBT_CD"),
															strValue,
															String.valueOf(data_cnt + 2),
															filePath});
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0710CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.YOKYU_SBT_CD"),
															strValue,
															String.valueOf(data_cnt + 2),
															filePath});
		}

		// サービスオーダコード項目チェック
		strValue = (String)rsMap.get("SVC_ODR_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0690CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.SVC_ODR_CD"),
															String.valueOf(data_cnt + 2),
															filePath});
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "2", "2"}))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0700CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.SVC_ODR_CD"),
															strValue,
															String.valueOf(data_cnt + 2),
															filePath});
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0710CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.SVC_ODR_CD"),
															strValue,
															String.valueOf(data_cnt + 2),
															filePath});
		}

		// サービスオーダ詳細コード項目チェック
		strValue = (String)rsMap.get("SVC_ODR_DTL_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0690CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.SVC_ODR_DTL_CD"),
															String.valueOf(data_cnt + 2),
															filePath});
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "2", "2"}))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0700CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.SVC_ODR_DTL_CD"),
															strValue,
															String.valueOf(data_cnt + 2),
															filePath});
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0710CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.SVC_ODR_DTL_CD"),
															strValue,
															String.valueOf(data_cnt + 2),
															filePath});
		}

		// ＳＯＤ連携通番項目チェック
		strValue = (String)rsMap.get("SOD_RENKEI_SEQ");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0690CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.SOD_RENKEI_SEQ"),
															String.valueOf(data_cnt + 2),
															filePath});
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "7", "7"}))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0700CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.SOD_RENKEI_SEQ"),
															strValue,
															String.valueOf(data_cnt + 2),
															filePath});
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0710CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.SOD_RENKEI_SEQ"),
															strValue,
															String.valueOf(data_cnt + 2),
															filePath});
		}

		// 旧ＳＯＤ連携通番項目チェック
		strValue = (String)rsMap.get("OLD_SOD_RNKI_SEQ");
		
		// スペース7桁の場合はチェックを行わない
		if (false == JSCStrConstant.IP_SOD_UPD_OLD_SOD_RENKEI_SEQ_SPACE7.equals(strValue))
		{
			// 必須チェック無し
			if(strValue != null && false == "".equals(strValue))
			{
				// 桁数チェック
				if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "7", "7"}))
				{
					commonItem.getConnection().rollback();
					throw new JBSbatBusinessException("ESCB0700CE", new String[]{
																	(String)itemvalueMap.get("TXT-SCIFE008-INF1.OLD_SOD_RNKI_SEQ"),
																	strValue,
																	String.valueOf(data_cnt + 2),
																	filePath});

				}
				// 属性チェック
				if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
				{
					commonItem.getConnection().rollback();
					throw new JBSbatBusinessException("ESCB0710CE", new String[]{
																	(String)itemvalueMap.get("TXT-SCIFE008-INF1.OLD_SOD_RNKI_SEQ"),
																	strValue,
																	String.valueOf(data_cnt + 2),
																	filePath});
				}
			}
		}

		// スケジュール年月日項目チェック
		strValue = (String)rsMap.get("SCHDL_YMD");
		
		// ゼロ8桁の場合はチェックを行わない
		if (false == JSCStrConstant.IP_SOD_UPD_SCHEDULE_YMD_ZERO8.equals(strValue))
		{
			// 必須チェック無し
			if(strValue != null && false == "".equals(strValue))
			{
				// 属性チェック
				if(!JBSbatCheckUtil.invoke(strValue, new String[]{"year_month_day1"}))
				{
					commonItem.getConnection().rollback();
					throw new JBSbatBusinessException("ESCB0710CE", new String[]{
																	(String)itemvalueMap.get("TXT-SCIFE008-INF1.SCHDL_YMD"),
																	strValue,
																	String.valueOf(data_cnt + 2),
																	filePath});
				}
			}

		}

		// ＳＯＤ結果登録年月日時分秒項目チェック
		strValue = (String)rsMap.get("SOD_RSLT_ADD_DTM");
		
		// 必須チェック無し(ALLゼロ許容)
		if(strValue != null && false == "".equals(strValue) &&
				!JSCStrConstant.IP_SOD_UPD_SOD_RSLT_ADD_DTM_ZERO12.equals(strValue))
		{
			// 属性チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"day_hour5"}))
			{
				commonItem.getConnection().rollback();
				throw new JBSbatBusinessException("ESCB0710CE", new String[]{
																(String)itemvalueMap.get("TXT-SCIFE008-INF1.SOD_RSLT_ADD_DTM"),
																strValue,
																String.valueOf(data_cnt + 2),
																filePath});

			}
		}


		// ＳＯＤ処理結果コード項目チェック
		strValue = (String)rsMap.get("SOD_TRAN_RSLT_CD");
		
		// 必須チェック無し
		if(strValue != null && false == "".equals(strValue))
		{
			// 桁数チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "1", "1"}))
			{
				commonItem.getConnection().rollback();
				throw new JBSbatBusinessException("ESCB0700CE", new String[]{
																(String)itemvalueMap.get("TXT-SCIFE008-INF1.SOD_TRAN_RSLT_CD"),
																strValue,
																String.valueOf(data_cnt + 2),
																filePath});
			}
			// 属性チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
			{
				commonItem.getConnection().rollback();
				throw new JBSbatBusinessException("ESCB0710CE", new String[]{
																(String)itemvalueMap.get("TXT-SCIFE008-INF1.SOD_TRAN_RSLT_CD"),
																strValue,
																String.valueOf(data_cnt + 2),
																filePath});
			}
		}


		// ＳＯＤ処理結果詳細コード項目チェック
		strValue = (String)rsMap.get("SOD_TRAN_RSLT_DTL_CD");
		
		// 必須チェック無し
		if(strValue != null && false == "".equals(strValue))
		{
			// 桁数チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "4", "4"}))
			{
				commonItem.getConnection().rollback();
				throw new JBSbatBusinessException("ESCB0700CE", new String[]{
																(String)itemvalueMap.get("TXT-SCIFE008-INF1.SOD_TRAN_RSLT_DTL_CD"),
																strValue,
																String.valueOf(data_cnt + 2),
																filePath});
			}
			// 属性チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
			{
				commonItem.getConnection().rollback();
				throw new JBSbatBusinessException("ESCB0710CE", new String[]{
																(String)itemvalueMap.get("TXT-SCIFE008-INF1.SOD_TRAN_RSLT_DTL_CD"),
																strValue,
																String.valueOf(data_cnt + 2),
																filePath});
			}
		}


		// サービス契約番号項目チェック
		strValue = (String)rsMap.get("SVC_KEI_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0690CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.SVC_KEI_NO"),
															String.valueOf(data_cnt + 2),
															filePath});
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "10", "10"}))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0700CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.SVC_KEI_NO"),
															strValue,
															String.valueOf(data_cnt + 2),
															filePath});
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getConnection().rollback();
			throw new JBSbatBusinessException("ESCB0710CE", new String[]{
															(String)itemvalueMap.get("TXT-SCIFE008-INF1.SVC_KEI_NO"),
															strValue,
															String.valueOf(data_cnt + 2),
															filePath});
		}

		return true;
	}
	
	/**
	 * 項目チェックで使用するitemvalueMapを生成します。
	 * HashMap<String,String> 項目名が格納されたHashMap。
	 * @return messageMap 埋め込み文字の値。
	 */
	private HashMap<String, String> createMessageMap()
	{
		HashMap<String, String> retMap = new HashMap<String, String>();
		
		retMap.put("TXT-SCIFE008-INF1.REC_SBT_CD", "レコード種別コード");
		retMap.put("TXT-SCIFE008-INF1.YOKYU_SBT_CD", "要求種別コード");
		retMap.put("TXT-SCIFE008-INF1.SVC_ODR_CD", "サービスオーダコード");
		retMap.put("TXT-SCIFE008-INF1.SVC_ODR_DTL_CD", "サービスオーダ詳細コード");
		retMap.put("TXT-SCIFE008-INF1.SOD_RENKEI_SEQ", "ＳＯＤ連携通番");
		retMap.put("TXT-SCIFE008-INF1.OLD_SOD_RNKI_SEQ", "旧ＳＯＤ連携通番");
		retMap.put("TXT-SCIFE008-INF1.SCHDL_YMD", "スケジュール年月日");
		retMap.put("TXT-SCIFE008-INF1.SOD_RSLT_ADD_DTM", "ＳＯＤ結果登録年月日時分秒");
		retMap.put("TXT-SCIFE008-INF1.SOD_TRAN_RSLT_CD", "ＳＯＤ処理結果コード");
		retMap.put("TXT-SCIFE008-INF1.SOD_TRAN_RSLT_DTL_CD", "ＳＯＤ処理結果詳細コード");
		retMap.put("TXT-SCIFE008-INF1.SVC_KEI_NO", "サービス契約番号");

		
		return retMap;
		
	}
	
	/**
	 * レコードを分割した際の、配列番号を元に、ファイル項目名を取得するためのcolsMapを生成します。
	 * @return	colsMap 項目名
	 */
	private HashMap<Integer, String> createColsMap()
	{
		HashMap<Integer, String> retMap = new HashMap<Integer, String>();
		
		retMap.put(0, JBSbatSCIFE008.REC_SBT_CD);
		retMap.put(1, JBSbatSCIFE008.YOKYU_SBT_CD);
		retMap.put(2, JBSbatSCIFE008.SVC_ODR_CD);
		retMap.put(3, JBSbatSCIFE008.SVC_ODR_DTL_CD);
		retMap.put(4, JBSbatSCIFE008.SOD_RENKEI_SEQ);
		retMap.put(5, JBSbatSCIFE008.OLD_SOD_RNKI_SEQ);
		retMap.put(6, JBSbatSCIFE008.SCHDL_YMD);
		retMap.put(7, JBSbatSCIFE008.SOD_RSLT_ADD_DTM);
		retMap.put(8, JBSbatSCIFE008.SOD_TRAN_RSLT_CD);
		retMap.put(9, JBSbatSCIFE008.SOD_TRAN_RSLT_DTL_CD);
		retMap.put(10, JBSbatSCIFE008.SVC_KEI_NO);
		
		return retMap;
	}
}
