/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKEoidMmbYkInfTrnRsltRcv
*	ソースファイル名	：JBSbatKKEoidMmbYkInfTrnRsltRcv.java
*	作成者				：富士通　
*	作成日				：2011年06月14日
*＜機能概要＞
*　ｅｏＩＤ会員有効性情報処理結果受信部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/06/14	FJ）庭山	新規作成
*	v3.00.00	2012/05/02	FJ)岡田		【巻@登録テーブル項目同期】対応
*	v3.01.00	2012/08/16	FJ)中作		【IT1-2012-0000944】対応
*	v4.00.00	2012/11/07	FJ)団		【ST1-2012-0000703】対応
*	v4.01.00	2013/03/12	FJ)柳		【IT2-2013-0000292】対応
*	v5.00.00	2013/08/21	FJ)石原		【OM-2013-0000302】対応
*	v5.01.00	2013/08/29	FJ)石原		【OM-2013-0001200】対応
*	v6.00.00	2013/12/19	FJ)桑島		【OM-2013-0005258】障害対応
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFE040;
import eo.business.util.table.JBSbatKK_T_TSYRN_IDO_KRK;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JCCFileUtil;
import eo.framework.application.JBSbatBusinessError;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
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;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKEoidMmbYkInfTrnRsltRcv extends JBSbatBusinessService
{
	/**
	 * 囲み文字（"）
	 */
	private static final String MOJI_D = "\"";

	/**
	 * 物理バッチID（KKPRC06401）
	 */
	private static final String BAT_ID = "KKPRC06401";

	/**
	 * ファイルID（KKIFE040）
	 */
	private static final String FILE_ID = "KKIFE040  ";
	
	/**
	 * eoID会員有効性情報結果ファイル
	 */
	private static final String FILE_NAME = "CTL0050";
	
	/**
	 * 連携ファイル制御用ファイル
	 */
	private static final String FILE_NAME_RENKI = "KKIFM092001";
	
	/**
	 * 有効性結果パターン（ファミリー会員種別変更あり（ISP決済以外））
	 */
	private static final String ISP_KSSAI_GAI = "41";
	
	/**
	 * eoID会員有効性情報処理結果
	 */
	private String tranRslt = "";
	
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(連携ファイル制御)*/
	private static final String D_TBL_NAME_KK_T_RNKI_FILE_CTRL = "KK_T_RNKI_FILE_CTRL";

	/** テーブル(他システム連携異動記録)*/
	private static final String D_TBL_NAME_KK_T_TSYRN_IDO_KRK = "KK_T_TSYRN_IDO_KRK";

	/** テーブルアクセスクラス(連携ファイル制御)*/
	private JBSbatSQLAccess db_KK_T_RNKI_FILE_CTRL = null;

	/** テーブルアクセスクラス(他システム連携異動記録)*/
	private JBSbatSQLAccess db_KK_T_TSYRN_IDO_KRK = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_RNKI_FILE_CTRL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_RNKI_FILE_CTRL);
		db_KK_T_TSYRN_IDO_KRK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_TSYRN_IDO_KRK);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// eoID会員有効性情報処理結果ファイル読込
		String[] free_item = commonItem.getFreeItem().split(";");
		String file_path = free_item[0];
		
		file_path = file_path + File.separator + FILE_NAME + ".csv";
		
//		// 処理結果判定用
//		boolean rslt_flg = true;
//		
//		// 処理結果の判定
//		if(!readFile(file_path))
//		{
//			// eoID会員有効性情報処理結果ファイルバックアップ
//			//fileBackUp();
//			// 処理結果が"0000"以外の場合はエラー
//			//throw new JBSbatBusinessError("処理結果がエラーです。");
//			
//			rslt_flg = false;
//		}
		
		// ファイル読み込み eoID会員有効性情報結果ファイルの処理結果取得
		boolean tranRsltFlg = readFile(file_path);
		
		// ｅｏＩＤ会員有効性情報ファイル情報のヘッダ部よりファイル通番を読み込みます。
		JBSbatInputFileUtil in_obj = commonItem.getInPutFile();
		String line_data = in_obj.readLine();
		if(null == line_data)
		{
			throw new JBSbatBusinessError("ｅｏＩＤ会員有効性情報ファイルよりファイル通番が取得できません。");
		}
		String[] data_list = line_data.split(",");
		String file_seq = data_list[2].replace(MOJI_D, "");
		// 連携ファイル制御更新情報より処理実行年月日時分秒を読み込みます。
		String file_path_renki = free_item[1] + FILE_NAME_RENKI + ".csv";
		ArrayList<ArrayList<String>> updateList = convCsvFiletoList(file_path_renki);
		if(0 == updateList.size())
		{
			throw new JBSbatBusinessError("連携ファイル制御用ファイルより処理実行年月日時分秒が取得できません。");
		}
		ArrayList<String> lineData = null;
		lineData = updateList.get(0);

		String tran_run_dtm = lineData.get(0);

		// 連携ファイル制御への反映を行います
		executeRnkiFileCtrl(file_seq, tran_run_dtm, tranRsltFlg);
		
//		// 処理結果が正常の場合
//		if(rslt_flg)
//		{
//			// 送信NGフラグファイルの削除
//			File ngFile = new File(free_item[2]);
//			
//			if(ngFile.isFile())
//			{
//				// ファイルが存在する場合、削除を行う。
//				ngFile.delete();
//			}
//		}
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");

		// データ部の場合、以下の処理を行います
		if (null != inMap && !inMap.isInputErrorFlg())
		{
			// 有効性結果パターン（ファミリー会員種別変更あり（ISP決済以外））の場合は他システム連携異動記録には反映しない
			String yk_rslt = inMap.getString(JBSbatKKIFE040.YK_RSLT_PATTERN).replace(MOJI_D, "");
			if(ISP_KSSAI_GAI.equals(yk_rslt)) {
				return null;
			}
			// eoID会員有効性情報ファイルを元に他システム連携異動記録への反映を行います
			executeTsyrnIdoKrk(inMap);
		}
		
		super.logPrint.printDebugLog("execute_END");

		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_RNKI_FILE_CTRL.close();
		db_KK_T_TSYRN_IDO_KRK.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		// eoID会員有効性情報処理結果ファイルバックアップ
		fileBackUp();
		
		// コミット
		super.commit();
		
		// eoID会員有効性情報処理結果の判定
		if(!"0000".equals(tranRslt))
		{
			// マイナーアラートログの出力
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0010CW, new String[]{"eoID会員有効性情報処理結果ファイルの処理結果コード：" + tranRslt});
			
			//super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, new String[]{"eoID会員有効性情報処理結果ファイルの処理結果コード：" + tranRslt});
			//throw new JBSbatBusinessError();
			
			//throw new JBSbatBusinessError("eoID会員有効性情報処理結果ファイルの処理結果コード：" + tranRslt);
		}
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	物理バッチＩＤ				BUTSURI_BAT_ID
	 *		 	ファイルＩＤ				FILE_ID
	 *		 	処理済ファイル通番				TRAN_ZUMI_FILE_SEQ
	 *		 	前回処理実行年月日時分秒				ZNKI_TRAN_RUN_DTM
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_RNKI_FILE_CTRL_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("BUTSURI_BAT_ID", setParam[0]);
		setMap.setValue("FILE_ID", setParam[1]);
		setMap.setValue("TRAN_ZUMI_FILE_SEQ", setParam[2]);
		setMap.setValue("ZNKI_TRAN_RUN_DTM", setParam[3]);
		setMap.setValue("ADD_DTM", setParam[4]);
		setMap.setValue("ADD_OPEACNT", setParam[5]);
		setMap.setValue("UPD_DTM", setParam[6]);
		setMap.setValue("UPD_OPEACNT", setParam[7]);
		setMap.setValue("DEL_DTM", setParam[8]);
		setMap.setValue("DEL_OPEACNT", setParam[9]);
		setMap.setValue("MK_FLG", setParam[10]);
		setMap.setValue("ADD_UNYO_YMD", setParam[11]);
		setMap.setValue("ADD_TRN_ID", setParam[12]);
		setMap.setValue("UPD_UNYO_YMD", setParam[13]);
		setMap.setValue("UPD_TRN_ID", setParam[14]);
		setMap.setValue("DEL_UNYO_YMD", setParam[15]);
		setMap.setValue("DEL_TRN_ID", setParam[16]);
	
		// DBアクセスを実行します
		db_KK_T_RNKI_FILE_CTRL.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	処理済ファイル通番				TRAN_ZUMI_FILE_SEQ
	 *		 	前回処理実行年月日時分秒				ZNKI_TRAN_RUN_DTM
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	BUTSURI_BAT_ID
	 *		 	FILE_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @param tranRsltFlg eoID会員有効性情報結果ファイルの処理結果で更新対象にするか判断用。
	 * @return int 件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeKK_T_RNKI_FILE_CTRL_PKUPDATE(Object[] setParam, Object[] whereParam, boolean tranRsltFlg) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		//eoID会員有効性情報結果ファイルの処理結果で更新対象にするか判断
		if(tranRsltFlg)
		{
			super.logPrint.printDebugLog("処理済ファイル通番の更新");
			setMap.setValue("TRAN_ZUMI_FILE_SEQ", setParam[0]);
		}
		setMap.setValue("ZNKI_TRAN_RUN_DTM", setParam[1]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("BUTSURI_BAT_ID", whereParam[0]);
		whereMap.setValue("FILE_ID", whereParam[1]);

		// DBアクセスを実行します
		return db_KK_T_RNKI_FILE_CTRL.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	ＳＹＳＩＤ				SYSID
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	有効性結果パターンコード				YK_RSLT_PTN_CD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_TSYRN_IDO_KRK_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("SYSID", setParam[0]);
		setMap.setValue("SVC_KEI_NO", setParam[1]);
		setMap.setValue("YK_RSLT_PTN_CD", setParam[2]);
		setMap.setValue("ADD_DTM", setParam[3]);
		setMap.setValue("ADD_OPEACNT", setParam[4]);
		setMap.setValue("UPD_DTM", setParam[5]);
		setMap.setValue("UPD_OPEACNT", setParam[6]);
		setMap.setValue("DEL_DTM", setParam[7]);
		setMap.setValue("DEL_OPEACNT", setParam[8]);
		setMap.setValue("MK_FLG", setParam[9]);
		setMap.setValue("ADD_UNYO_YMD", setParam[10]);
		setMap.setValue("ADD_TRN_ID", setParam[11]);
		setMap.setValue("UPD_UNYO_YMD", setParam[12]);
		setMap.setValue("UPD_TRN_ID", setParam[13]);
		setMap.setValue("DEL_UNYO_YMD", setParam[14]);
		setMap.setValue("DEL_TRN_ID", setParam[15]);
	
		// DBアクセスを実行します
		db_KK_T_TSYRN_IDO_KRK.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	有効性結果パターンコード				YK_RSLT_PTN_CD
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	SYSID
	 *		 	SVC_KEI_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_TSYRN_IDO_KRK_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("YK_RSLT_PTN_CD", setParam[0]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("SYSID", whereParam[0]);
		whereMap.setValue("SVC_KEI_NO", whereParam[1]);

		// DBアクセスを実行します
		db_KK_T_TSYRN_IDO_KRK.updateByPrimaryKeys(whereMap, setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 連携ファイル制御の処理済みファイル通番を更新します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.DBアクセスを実行します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param file_seq  処理済みファイル通番。
	 * @param tran_run_dtm  前回処理実行年月日時分秒。
	 * @param tranRsltFlg eoID会員有効性情報結果ファイルの処理結果で更新対象にするか判断用。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeRnkiFileCtrl(String file_seq, String tran_run_dtm, boolean tranRsltFlg) throws Exception
	{
		String[] value = new String[2];
		String[] param = new String[2];
		int rslt = 0;

		value[0] = file_seq;
		value[1] = tran_run_dtm;
		param[0] = BAT_ID;
		param[1] = FILE_ID;

		rslt = executeKK_T_RNKI_FILE_CTRL_PKUPDATE(value, param, tranRsltFlg);

		if (0 == rslt)
		{
			insertRnkiFileCtrl(value);
		}
	}

	/**
	 * 他システム連携異動記録へ登録、更新します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.存在チェックのDBアクセスを実行します。<br>
	 * 
	 * 2.存在している場合、更新を実行します。<br>
	 * 
	 * 3.存在していない場合、登録を実行します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param map　入力電文。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeTsyrnIdoKrk(JBSbatServiceInterfaceMap map) throws Exception
	{
		JBSbatCommonDBInterface db_map = null;
		JBSbatCommonDBInterface where_map = new JBSbatCommonDBInterface();
		String[] value = null;
		String[] param = null;

		String sysid = map.getString(JBSbatKKIFE040.SYSID).replace(MOJI_D, "");
		String svc_kei_no = map.getString(JBSbatKKIFE040.SVC_KEI_NO).replace(MOJI_D, "");
		String yk_rslt = map.getString(JBSbatKKIFE040.YK_RSLT_PATTERN).replace(MOJI_D, "");

		where_map.setValue(JBSbatKK_T_TSYRN_IDO_KRK.SYSID, sysid);
		where_map.setValue(JBSbatKK_T_TSYRN_IDO_KRK.SVC_KEI_NO, svc_kei_no);

		db_map = db_KK_T_TSYRN_IDO_KRK.selectByPrimaryKeysForUpdateWait(where_map);

		// DBに存在している場合
		if (null != db_map)
		{
			value = new String[1];
			param = new String[2];

			value[0] = yk_rslt;
			param[0] = sysid;
			param[1] = svc_kei_no;

			executeKK_T_TSYRN_IDO_KRK_PKUPDATE(value, param);
		}
		// DBに存在していない場合
		else
		{
			
			// システム日付を取得
			String sysdate = JCCBatCommon.getSysDateTimeStamp();
			
			value = new String[16];

			value[0] = sysid;
			value[1] = svc_kei_no;
			value[2] = yk_rslt;
			value[3] = sysdate;				// 登録年月日時分秒
			value[4] = super.batchUserId;	// 登録オペレータアカウント
			value[5] = sysdate;				// 更新年月日時分秒
			value[6] = super.batchUserId;	// 更新オペレータアカウント
			value[7] = "";					// 削除年月日時分秒
			value[8] = "";					// 削除オペレータアカウント
			value[9] = "0";					// 無効フラグ
			value[10] = "";					// 登録運用年月日
			value[11] = "";					// 登録処理ID
			value[12] = "";					// 更新運用年月日
			value[13] = "";					// 更新処理ID
			value[14] = "";					// 削除運用年月日
			value[15] = "";					// 削除処理ID

			executeKK_T_TSYRN_IDO_KRK_PKINSERT(value);
		}
	}
	
	/**
	 * eoID会員有効性情報結果ファイルを読み込み、
	 * 処理結果を判定します。
	 * @param file_path eoID会員有効性情報結果ファイルパス
	 * @return boolean true:正常
	 *                  false:エラー
	 * @throws Exception
	 */
	private boolean readFile(String file_path) throws Exception
	{
		JBSbatInputFileUtil inFile = new JBSbatInputFileUtil(file_path);
		File in_file = new File(file_path);
		if(!in_file.exists())
		{
			fileBackUp();
			throw new JBSbatBusinessException("EKKB0290AW", new String[]{"受信ファイル「" + file_path + "」"});
		}
		else
		{
			// 文字コード
			inFile.setEncode(JKKBatConst.SJIS);
			try
			{
				inFile.createReader();
				
				String line = inFile.readLine();
				if(null == line)
				{
					return false;
				}
				
				String[] data_list = line.split(",");
				
				// 処理結果
				tranRslt = data_list[3].replace(MOJI_D, "");
				
				super.logPrint.printDebugLog("処理結果；" + tranRslt);
				
				// エラーの場合
				if(!"0000".equals(tranRslt))
				{
					fileBackUp();
					//throw new JBSbatBusinessError("処理結果がエラーです。 処理結果コード：" + tranRslt);
					
					super.logPrint.printDebugLog("【NGファイル作成】");
					
					// NGファイルパス取得
					String[] free_item = commonItem.getFreeItem().split(";");
					String ng_file_path = free_item[2];
					
					// NGファイル作成
					File ngFile = new File(ng_file_path);
					ngFile.createNewFile();
					
					return false;
				}
				
			} catch (IOException e) {
				throw new JBSbatBusinessException("EKKB0020CE", new String[]{file_path});
			}
			finally
			{
					inFile.close();
			}
		}
		
		return true;
	}
	
	/**
	 * eoID会員有効性情報結果ファイルバックアップ
	 * @throws Exception 
	 */
	private void fileBackUp() throws Exception
	{
		// システム日付を取得
		String sysDate = JCCBatCommon.getSysDateTimeStamp();
		
		File dir = null;
		
		File newFile = null;
		
		String dirName = "";
		
		String[] free_item = commonItem.getFreeItem().split(";");
		String file_path = free_item[0];
		
		String file = file_path + File.separator + FILE_NAME + ".csv";
		
		dir = new File(file);
		
		dirName = file_path + File.separator + "bk";
		
		// バックアップファイル名
		String bkFileName = dirName + File.separator + FILE_NAME + "_" + sysDate + ".csv";
		
		File workDir = new File(dirName);
		
		if(!workDir.exists())
		{
			JCCFileUtil.createDir(bkFileName);
		}
		
		newFile = new File(bkFileName);
		
		dir.renameTo(newFile);
	}

	/**
	 * 連携ファイル制御の登録処理を行います。
	 * <p>
	 * @param in_pram 処理済ファイル通番/前回処理実行年月日時分秒の値。
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void insertRnkiFileCtrl(String[] in_pram) throws Exception
	{
		// 登録処理を実施します。
		Object[] set_param = new Object[17];
		
		// 物理バッチID 
		set_param[0] = BAT_ID;
		// ファイルＩＤ
		set_param[1] = FILE_ID;
		// 処理済ファイル通番
		set_param[2] = in_pram[0];
		// 前回処理実行年月日時分秒
		set_param[3] = in_pram[1];
		// 登録年月日時分秒
		set_param[4] = "";
		// 登録オペレータアカウント
		set_param[5] = "";
		// 更新年月日時分秒
		set_param[6] = "";
		// 更新オペレータアカウント
		set_param[7] = "";
		// 削除年月日時分秒
		set_param[8] = "";
		// 削除オペレータアカウント
		set_param[9] = "";
		// 無効フラグ
		set_param[10] = "0";
		// 登録運用年月日
		set_param[11] = "";
		// 登録処理ＩＤ
		set_param[12] = "";
		// 更新運用年月日
		set_param[13] = "";
		// 更新処理ＩＤ
		set_param[14] = "";
		// 削除運用年月日
		set_param[15] = "";
		// 削除処理ＩＤ
		set_param[16] = "";
		
		executeKK_T_RNKI_FILE_CTRL_PKINSERT(set_param);
	}

	/**
	 * 引数で指定されたCSVファイル名からファイルの内容を一行ずつ読取り、カンマ区切りの文字を
	 * List格納する。格納した行データのArrayListをArrayList配列に順番に格納し返却する。
	 * 引数で指定されたファイルパスを取得し、返却する。
	 * @param commonItem バッチ共通パラメータ電文
	 * @param fileName ファイル名(パスを含む)
	 * @return ArrayList ファイル内データを格納したリスト
	 * @throws Exception 例外
	 */
	private ArrayList<ArrayList<String>> convCsvFiletoList(String fileName) throws Exception
	{

		ArrayList<ArrayList<String>> csvFileList = new ArrayList<ArrayList<String>>();

		// CSV指定ファイルパスチェック
		if(null == fileName || ("").equals(fileName))
		{
			// エラーの場合空文字を返す。
			throw new JBSbatBusinessException("EKKB0130CE", new String[]{"読込ファイルパス未設定"});
		}

		try
		{

			// CSV指定ファイル読込み
			File file = new File(fileName);
			FileReader fr = new FileReader(file);
			BufferedReader br = new BufferedReader(fr);
			ArrayList<String> workList = null;
			String lineData = "";

			while (null != lineData)
			{
				// ワークリストを初期化
				workList = new ArrayList<String>();

				// CSVファイル一行読込み
				lineData = br.readLine();
				if(null != lineData && !("").equals(lineData))
				{

					// リストに格納された一行分のファイルデータを格納
					workList = convStringToList(lineData);
					csvFileList.add(workList);
				}
			}
			if (fr != null)
			{
				fr.close();
			}
			if (br != null)
			{
				br.close();
			}

		}
		catch (IOException e)
		{
			// 例外処理
			throw new JBSbatBusinessException("EKKB0020CE", new String[]{fileName});
		}

		return csvFileList;
	}

	/**
	 * 引数で指定されたCSVファイルの一行データを項目ごとにArrayList格納する。
	 * @param commonItem バッチ共通パラメータ電文
	 * @param lineData 一行分のCSVデータ
	 * @return ArrayList 項目ごとにCSVデータを格納したList
	 * @throws Exception 例外
	 **/
	private ArrayList<String> convStringToList(String lineData) throws Exception
	{

		// 戻り値格納用List
		ArrayList<String> resultList = new ArrayList<String>();

		// CSV指定ファイル読込み
		// 文字列リスト変換エスケープ処理に囲み文字の"を指定して呼出す。
		resultList = convEscapeStringToList(lineData, '"');

		return resultList;

	}

	/**
	 * 引数で指定されたCSVファイルの一行データを項目ごとに分割し、
	 * 引数の囲い文字を除外した状態でList格納する。
	 * @param  line 一行分のCSVデータ
	 * @param  kakoiMoji 囲み文字
	 * @return ArrayList 項目ごとにCSVデータを格納したList
	 * @throws Exception 例外
	 */
	private ArrayList<String> convEscapeStringToList(String line, char kakoiMoji) throws Exception
	{

		// 戻り値格納用List
		ArrayList<String> resultList = new ArrayList<String>();

		String[] data = line.split(",", -1);
		
		for (int i = 0; i < data.length; i++)
		{
			resultList.add(data[i].replaceAll("\"", ""));
		}

		// 1行分のデータを格納したListを返却
		return resultList;
	}
}
