/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatDKNyukaFinAddReqChsht
*	ソースファイル名	：JBSbatDKNyukaFinAddReqChsht.java
*	作成者				：富士通　
*	作成日				：2011年09月15日
*＜機能概要＞
*　入荷完了情報登録依頼抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/15   富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCCbatDenshiFileUtil;
import eo.business.util.file.JBSbatDKIFM015;
import eo.common.constant.JDKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JPCDateUtil;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
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 JBSbatDKNyukaFinAddReqChsht extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(電子ファイル管理)*/
	private static final String D_TBL_NAME_CC_T_EFILE_KANRI = "CC_T_EFILE_KANRI";

	/** テーブル(ディレイド処理依頼)*/
	private static final String D_TBL_NAME_CC_T_DLYD_TRN_REQ = "CC_T_DLYD_TRN_REQ";

	/** テーブル(物流電子ファイル管理)*/
	private static final String D_TBL_NAME_DK_T_BTRY_EFILE_KNRI = "DK_T_BTRY_EFILE_KNRI";

	/** テーブルアクセスクラス(電子ファイル管理)*/
	private JBSbatSQLAccess db_CC_T_EFILE_KANRI = null;

	/** テーブルアクセスクラス(ディレイド処理依頼)*/
	private JBSbatSQLAccess db_CC_T_DLYD_TRN_REQ = null;

	/** テーブルアクセスクラス(物流電子ファイル管理)*/
	private JBSbatSQLAccess db_DK_T_BTRY_EFILE_KNRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/* ++++++++++ v1.00.00 追加開始 ++++++++++ */

	/** 入荷完了情報受信ファイル検索用　文字列 */
	private static final String EO_NINPUT = "eo_ninput";
	/** 入荷完了情報受信ファイル名の長さ */
	private static final int FILE_NAME_LENGTH = (EO_NINPUT + "yyyymmddhhmmss_nnn.csv").length();
	/** 入荷完了情報受信ファイル　インターフェイスID */
	private static final String DKIFE015 = "DKIFE015";

	/* ++++++++++ v1.00.00 追加終了 ++++++++++ */

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CC_T_EFILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_EFILE_KANRI);
		db_CC_T_DLYD_TRN_REQ = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_DLYD_TRN_REQ);
		db_DK_T_BTRY_EFILE_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_BTRY_EFILE_KNRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		/* ++++++++++ v1.00.00 追加開始 ++++++++++ */

		executeMain();

		/* ++++++++++ v1.00.00 追加終了 ++++++++++ */
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CC_T_EFILE_KANRI.close();
		db_CC_T_DLYD_TRN_REQ.close();
		db_DK_T_BTRY_EFILE_KNRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/* ++++++++++ v1.00.00 削除開始 ++++++++++ */
//	/**
//	 * PK(全項目登録)でDBアクセスを行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.引数で設定項目マップを作ります。<br>
//	 *
//	 * 2.DBアクセスを実行します。<br>
//	 * 
//	 * 3.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
//	 *		 	電子ファイル管理番号				EFILE_KANRI_NO
//	 *		 	世代登録年月日時分秒				GENE_ADD_DTM
//	 *		 	システムコード				SYS_CD
//	 *		 	ファイルコード				FILE_CD
//	 *		 	電子ファイル				EFILE
//	 *		 	物理ファイル名				BUTSURI_FILE_NM
//	 *		 	ファイルサイズ				FILE_SIZE
//	 *		 	圧縮ファイルサイズ				ASSHUKU_FILE_SIZE
//	 *		 	ファイル削除年月日				FILE_DEL_YMD
//	 *		 	登録年月日時分秒				ADD_DTM
//	 *		 	登録オペレータアカウント				ADD_OPEACNT
//	 *		 	更新年月日時分秒				UPD_DTM
//	 *		 	更新オペレータアカウント				UPD_OPEACNT
//	 *		 	削除年月日時分秒				DEL_DTM
//	 *		 	削除オペレータアカウント				DEL_OPEACNT
//	 *		 	無効フラグ				MK_FLG
//	 * </pre>
//	 * <p>
//	 * @param setParam 設定項目の値。
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private void executeCC_T_EFILE_KANRI_PKINSERT(Object[] setParam) throws Exception
//	{
//		// 設定値のマップを作成します
//		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
//		setMap.setValue("EFILE_KANRI_NO", setParam[0]);
//		setMap.setValue("GENE_ADD_DTM", setParam[1]);
//		setMap.setValue("SYS_CD", setParam[2]);
//		setMap.setValue("FILE_CD", setParam[3]);
//		setMap.setValue("EFILE", setParam[4]);
//		setMap.setValue("BUTSURI_FILE_NM", setParam[5]);
//		setMap.setValue("FILE_SIZE", setParam[6]);
//		setMap.setValue("ASSHUKU_FILE_SIZE", setParam[7]);
//		setMap.setValue("FILE_DEL_YMD", setParam[8]);
//		setMap.setValue("ADD_DTM", setParam[9]);
//		setMap.setValue("ADD_OPEACNT", setParam[10]);
//		setMap.setValue("UPD_DTM", setParam[11]);
//		setMap.setValue("UPD_OPEACNT", setParam[12]);
//		setMap.setValue("DEL_DTM", setParam[13]);
//		setMap.setValue("DEL_OPEACNT", setParam[14]);
//		setMap.setValue("MK_FLG", setParam[15]);
//	
//		// DBアクセスを実行します
//		db_CC_T_EFILE_KANRI.insertByPrimaryKeys(setMap);
//	}
	/* ++++++++++ v1.00.00 削除終了 ++++++++++ */

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	ディレイド処理依頼番号				DLYD_TRN_REQ_NO
	 *		 	ディレイド処理依頼ステータス				DLYD_TRN_REQ_STAT
	 *		 	ディレイド処理実施運用年月日時分秒				DLYD_TRN_JSSI_UNYO_DTM
	 *		 	入力電子ファイル管理番号				INPUT_EFILE_KANRI_NO
	 *		 	入力電子ファイル世代登録年月日時分秒				INPUT_EFILE_GENE_ADD_DTM
	 *		 	依頼ジョブＩＤ				REQ_JOB_ID
	 *		 	システムコード				SYS_CD
	 *		 	ディレイド処理依頼種別コード				DLYD_TRN_REQ_SBT_CD
	 *		 	ディレイド処理結果コード				DLYD_TRN_RSLT_CD
	 *		 	エラー電子ファイル管理番号				ERR_EFILE_KANRI_NO
	 *		 	エラー電子ファイル世代登録年月日時分秒				ERR_EFILE_GENE_ADD_DTM
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCC_T_DLYD_TRN_REQ_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("DLYD_TRN_REQ_NO", setParam[0]);
		setMap.setValue("DLYD_TRN_REQ_STAT", setParam[1]);
		setMap.setValue("DLYD_TRN_JSSI_UNYO_DTM", setParam[2]);
		setMap.setValue("INPUT_EFILE_KANRI_NO", setParam[3]);
		setMap.setValue("INPUT_EFILE_GENE_ADD_DTM", setParam[4]);
		setMap.setValue("REQ_JOB_ID", setParam[5]);
		setMap.setValue("SYS_CD", setParam[6]);
		setMap.setValue("DLYD_TRN_REQ_SBT_CD", setParam[7]);
		setMap.setValue("DLYD_TRN_RSLT_CD", setParam[8]);
		setMap.setValue("ERR_EFILE_KANRI_NO", setParam[9]);
		setMap.setValue("ERR_EFILE_GENE_ADD_DTM", setParam[10]);
		setMap.setValue("ADD_DTM", setParam[11]);
		setMap.setValue("ADD_OPEACNT", setParam[12]);
		setMap.setValue("UPD_DTM", setParam[13]);
		setMap.setValue("UPD_OPEACNT", setParam[14]);
		setMap.setValue("DEL_DTM", setParam[15]);
		setMap.setValue("DEL_OPEACNT", setParam[16]);
		setMap.setValue("MK_FLG", setParam[17]);
	
		// DBアクセスを実行します
		db_CC_T_DLYD_TRN_REQ.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	物流電子ファイル管理番号				BTRY_EFILE_KNRI_NO
	 *		 	物流文書種別コード				BTRY_BUNSHO_SBT_CD
	 *		 	電子ファイル管理番号				EFILE_KANRI_NO
	 *		 	物流電子ファイル名				BTRY_EFILE_NM
	 *		 	物流電子ファイル作成年月日				BTRY_EFILE_SAKSEI_YMD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeDK_T_BTRY_EFILE_KNRI_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("BTRY_EFILE_KNRI_NO", setParam[0]);
		setMap.setValue("BTRY_BUNSHO_SBT_CD", setParam[1]);
		setMap.setValue("EFILE_KANRI_NO", setParam[2]);
		setMap.setValue("BTRY_EFILE_NM", setParam[3]);
		setMap.setValue("BTRY_EFILE_SAKSEI_YMD", setParam[4]);
		setMap.setValue("ADD_DTM", setParam[5]);
		setMap.setValue("ADD_OPEACNT", setParam[6]);
		setMap.setValue("UPD_DTM", setParam[7]);
		setMap.setValue("UPD_OPEACNT", setParam[8]);
		setMap.setValue("DEL_DTM", setParam[9]);
		setMap.setValue("DEL_OPEACNT", setParam[10]);
		setMap.setValue("MK_FLG", setParam[11]);
	
		// DBアクセスを実行します
		db_DK_T_BTRY_EFILE_KNRI.insertByPrimaryKeys(setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/* ++++++++++ v1.00.00 追加開始 ++++++++++ */

	/**
	 * 入荷完了情報登録依頼抽出メイン処理
	 *
	 * @throws Exception
	 */
	private void executeMain() throws Exception
	{

		// 環境変数から実際ファイル格納フォルダの値を取得します
		String recvDir = JCCBatCommon.getApplicationConst(JDKStrConst.ENV_GAIBU_RECEIVE_DIR);
		if (recvDir == null)
		{

			// 環境変数未設定エラー
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EDKB0020KE
					, new String[] {"環境変数", "環境変数名＝" + JDKStrConst.ENV_GAIBU_RECEIVE_DIR});
		}

		recvDir = this.rnktPath(recvDir, DKIFE015 + "/");
		// 指定フォルダよりファイルの有無確認を行う
		File file = new File(inspection(recvDir));

		// ファイルの一覧を取得する(ファイル名で絞り込み)
		String[] fileList = getTargetFile(file.list());
		if (fileList == null || fileList.length < 1)
		{
			return;
		}

		// ファイル名ソート
		Arrays.sort(fileList);

		// ディレクトリ区切り文字の付加
		recvDir = this.rnktPath(recvDir, "");

		// ファイル数分処理を行う
		for (int i = 0; i < fileList.length; i++)
		{

			// ファイル取得用の文字列を生成
			String fileDir = recvDir + fileList[i];
			super.logPrint.printDebugLog(String.format("ファイル[%s]を処理します。", fileDir));

			File objFile = new File(inspection(fileDir));
			if (objFile.length() == 0)
			{
				super.logPrint.printDebugLog("ファイルサイズが0なのでディレイド処理依頼への登録は行いません。");
				continue;
			}

			// ファイル削除年月日の算出
			String delDate = JPCDateUtil.addDay(commonItem.getOpeDate(), 90);

			String[] retDenshiFile = null;
			try
			{

				// 電子ファイル管理情報の登録
				retDenshiFile = JCCbatDenshiFileUtil.createDenshiFile(commonItem, null, fileDir, delDate);
			}
			catch (Exception ex)
			{
				commonItem.getConnection().rollback();

				// 電子ファイル管理情報登録エラー
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0070CE,
						new String[] {"電子ファイル管理", "入荷完了情報受信ファイル名＝" + fileDir});
				throw ex;
			}

			// ディレイド処理依頼番号を採番する。
			String seqDlydTrnReqNo = JCCBatCommon.getFormatedNextSeq(commonItem, "SEQ_DLYD_TRN_REQ_NO", "D", 14);

			try
			{

				// ディレイド処理依頼情報の登録を行う。
				String[] paramValue = this.createCcTDlydTrnReq(seqDlydTrnReqNo, retDenshiFile);
				this.executeCC_T_DLYD_TRN_REQ_PKINSERT(paramValue);
			}
			catch (Exception ex)
			{
				commonItem.getConnection().rollback();
				// 処理終了のメッセージを出力
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0070CE,
						new String[] {"ディレイド処理依頼",
						"ディレイド処理依頼番号＝" + seqDlydTrnReqNo
						+ "；入力電子ファイル管理番号＝" + retDenshiFile[0]});
				throw ex;
			}

			// 物流電子ファイル管理番号を採番する。
			String seqBtryEfileKnriNo = JCCBatCommon.getFormatedNextSeq(commonItem, "SEQ_BTRY_EFILE_KNRI_NO", "", 10);

			try
			{

				// 物流電子ファイル管理情報の登録を行う。
				String[] paramValue = this.createBtryEfileKnri(seqBtryEfileKnriNo, fileList[i], retDenshiFile);
				this.executeDK_T_BTRY_EFILE_KNRI_PKINSERT(paramValue);
			}
			catch (Exception ex)
			{
				commonItem.getConnection().rollback();
				// 処理終了のメッセージを出力
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0070CE,
						new String[] {"物流電子ファイル管理", "物流電子ファイル管理番号＝" + seqBtryEfileKnriNo});
				throw ex;
			}

		}

		// ファイル出力制御クラスを生成する。

		// プロパティーファイル定義値の取得
		String movedFilePath = this.rnktPath(JCCBatCommon.getApplicationConst(JDKStrConst.ENV_MID_DIR), "")
								+ JDKStrConst.OUT_MID_NYUKAFIN_MOVE_LIST_NM;

		// 文字コードの設定
		JBSbatOutputFileUtil moveFile = new JBSbatOutputFileUtil(movedFilePath);
		moveFile.setEncode(JDKStrConst.ENCODE_SJIS);		// 文字コード
		moveFile.setLine(JDKStrConst.LINE_LF);				// 改行コード

		try
		{

			// 入荷完了情報受信ファイル移動リストを作成する。
			moveFile.createWriter();
			String moveDefFile = this.rnktPath(JCCBatCommon.getApplicationConst(JDKStrConst.DK_DIR_IND), "")
								+ JDKStrConst.DEF_NYUKAFIN_MOVE_LIST;
			JBSbatDefFileUtil defDataUtil = new JBSbatDefFileUtil(moveDefFile, moveFile);

			// データ部生成
			JBSbatServiceInterfaceMap outDataMap = null;
			for (int k = 0; k < fileList.length; k++)
			{

				// データ部生成
				outDataMap = new JBSbatServiceInterfaceMap();

				// ファイル名
				outDataMap.set(JBSbatDKIFM015.FILE_PATH, recvDir + fileList[k]);

				// 文字列区切り共通クラスのコンストラクタの呼び出し
				moveFile.print(outDataMap, defDataUtil);
			}
		}
		catch (IOException ex)
		{
			// 入荷完了情報受信ファイル移動リストファイル作成失敗
			commonItem.getConnection().rollback();
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0030CE,
					new String[] {movedFilePath});
			throw ex;
		}
		catch (Exception ex)
		{
			// 入荷完了情報受信ファイル移動リストファイル書き込み失敗
			commonItem.getConnection().rollback();
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0050CE,
					new String[] {movedFilePath});
			throw ex;
		}
		finally
		{

			// ファイルのcloseを行う。
			try
			{
				if (moveFile != null)
				{
					moveFile.close();
				}
			}
			catch (NullPointerException ex)
			{
				super.logPrint.printDebugLog("ファイルクローズはインスタンスがNull:" + movedFilePath);
			}
		}

		return;
	}

	/**
	 * ディレイド処理依頼情報登録文字配列を作成します。<br>
	 * <br>
	 * @param seqDlydTrnReqNo ディレイド処理依頼番号
	 * @param retDenshiFile 電子ファイル管理情報
	 * @return 登録用文字配列
	 */
	private String[] createCcTDlydTrnReq(String seqDlydTrnReqNo, String[] retDenshiFile)
	{

		String[] strParam = new String[18];

		// ディレイド処理依頼番号
		strParam[0] = seqDlydTrnReqNo;

		// ディレイド処理依頼ステータス
		strParam[1] = "001";

		// ディレイド処理実施運用年月日時分秒
		strParam[2] = "00000000000000000";

		// 入力電子ファイル管理番号
		strParam[3] = retDenshiFile[0];

		// 入力電子ファイル世代登録年月日時分秒
		strParam[4] = retDenshiFile[1];

		// 依頼ジョブID
		strParam[5] = "EO50C0000J0";

		// システムコード
		strParam[6] = "DK";

		// ディレイド処理依頼種別コード
		strParam[7] = "00000";

		// ディレイド処理結果コード
		strParam[8] = null;

		// エラー電子ファイル管理番号
		strParam[9] = null;

		// エラー電子ファイル世代登録年月日時分秒
		strParam[10] = null;

		return strParam;
	}
	/**
	 * 物流電子ファイル管理情報登録文字配列を作成します。<br>
	 * <br>
	 * @param seqBtryEfileKnriNo 物流電子ファイル管理番号
	 * @param fileNm ファイル名称
	 * @param retDenshiFile 電子ファイル管理情報
	 * @return 登録用文字配列
	 */
	private String[] createBtryEfileKnri(String seqBtryEfileKnriNo, String fileNm, String[] retDenshiFile)
	{
		// 物流電子ファイル管理情報の登録を行う。

		String[] strParam = new String[18];

		// 物流電子ファイル管理番号
		strParam[0] = seqBtryEfileKnriNo;

		// 物流文書種別コード
		strParam[1] = "02";

		// 電子ファイル管理番号
		strParam[2] = retDenshiFile[0];

		// 物流電子ファイル名
		strParam[3] = fileNm;

		// 物流電子ファイル作成年月日
		strParam[4] = commonItem.getOpeDate();
		
		// 登録年月日時分秒
		strParam[5] = null;

		// 登録オペレータアカウント
		strParam[6] = null;

		// 更新年月日時分秒
		strParam[7] = null;

		// 更新オペレータアカウント
		strParam[8] = null;

		// 削除年月日時分秒
		strParam[9] = null;

		// 削除オペレータアカウント
		strParam[10] = null;

		// 無効フラグ
		strParam[11] = null;
		
		return strParam;
	}

	/**
	 * ファイル一覧より入荷完了情報受信ファイルだけを返却します。<br>
	 * <br>
	 * @param argFileList ディレクトリより取得したファイル一覧
	 * @return  String[] 入荷完了情報受信ファイルのみ返却。
	 */
	private String[] getTargetFile(String[] argFileList)
	{
		String[] result = null;
		String flgFile = "";
		String recvDir = JCCBatCommon.getApplicationConst(JDKStrConst.ENV_GAIBU_RECEIVE_DIR);
		recvDir = this.rnktPath(recvDir, DKIFE015 + "/");
		
		if (argFileList != null && argFileList.length > 0)
		{
			ArrayList<String> tmpList = new ArrayList<String>();
			for (int i = 0; i < argFileList.length; i++)
			{
				
				
				// 入荷完了情報受信ファイルかどうかチェックする
				if (!(argFileList[i].startsWith(EO_NINPUT) && argFileList[i].endsWith("csv")))
				{
					continue;
				}

				// ファイル名の長さを調べる
				if (argFileList[i].length() != FILE_NAME_LENGTH)
				{
					continue;
				}

				// 受信フラグの存在チェック
				flgFile = recvDir + argFileList[i].replaceAll("csv", "flg");
				File objFile = new File(inspection(flgFile));
				if (!objFile.exists())
				{
					continue;
				}
				
				tmpList.add(argFileList[i]);
				
			}
			if (tmpList.size() > 0)
			{
				result = new String[tmpList.size()];
				
				for (int i = 0; i < tmpList.size(); i++)
				{
					result[i] = (String)tmpList.get(i);
				}
			}
		}
		
		return result;
	}

	/**
	 * パス文字列の連結
	 * 連結するパス文字列にパス区切り文字の設定を制御する。
	 * @param path1 パス文字列
	 * @param path2 パス文字列
	 * @return 連結したパス文字列
	 */
	private String rnktPath(String path1, String path2)
	{
		String pathDlmt = "/";
		if (path1.indexOf("\\") > -1 || path2.indexOf("\\") > -1)
		{
			pathDlmt = "\\";
		}
		if (!path1.endsWith(pathDlmt))
		{
			return path1 + pathDlmt + path2;
		}
		return path1 + path2;
	}	

	/**
	 * 環境変数ディレクトリ検査用メソッド（ファイルインジェクション対策）<br>
	 * 半角アルファベットと数字のみで構成されていることを検査します。
	 * <br>
	 * @param argDirNm:検査する文字列
	 * @return String 検査した文字列
	 * @throws IllegalArgumentException 業務サービス内で発生した例外全般。
	 */
	private String inspection(String argDirNm) throws IllegalArgumentException
	{
		
		if (argDirNm.matches("\\p{InBasicLatin}+"))
		{
			return argDirNm;
		}
		throw new IllegalArgumentException(argDirNm); // 誤ったファイル名を指定
	}

	/* ++++++++++ v1.00.00 追加終了 ++++++++++ */
}
