/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatFUTIntrTblExe
*	ソースファイル名	：JBSbatFUTIntrTblExe.java
*	作成者				：富士通
*	作成日				：2012年02月13日
*＜機能概要＞
*　紹介テーブル登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/02/13   富士通		新規作成
*	v1.01.00	2013/04/16   FJ)八坂	【IT1-2013-0000960】
*	v1.02.00	2013/05/15   FJ)岡井	【TAI-2013-0000026】日中バッチ運用日付対応
*	v15.00.00	2015/07/31   FJ)西川	【OM-2015-0001796】紹介者フィードバックメール送信の長時間走行対応
*	v62.00.00	2022/11/14   FJ)美濃原	【ANK-4294-00-00】紹介CP仕組み変更対応
*
*********************************************************************/
package eo.business.service;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JFUBatCommon;
import eo.business.common.JKKBatCommon;
import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessBase;
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;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatFUTIntrTblExe extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(紹介)*/
	private static final String D_TBL_NAME_KK_T_INTR = "KK_T_INTR";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** SQL定義キー(FU_SELECT_001)*/
	private static final String KK_T_INTR_FU_SELECT_001 = "FU_SELECT_001";

	/** SQL定義キー(FU_SELECT_001)*/
	private static final String KK_T_SVC_KEI_FU_SELECT_001 = "FU_SELECT_001";

	/** SQL定義キー(FU_SELECT_004)*/
	private static final String KK_T_SVC_KEI_FU_SELECT_004 = "FU_SELECT_004";

	/** SQL定義キー(FU_SELECT_005)*/
	private static final String KK_T_SVC_KEI_FU_SELECT_005 = "FU_SELECT_005";

	/** SQL定義キー(FU_INSERT_001)*/
	private static final String KK_T_INTR_FU_INSERT_001 = "FU_INSERT_001";

	/** テーブルアクセスクラス(紹介)*/
	private JBSbatSQLAccess db_KK_T_INTR = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** メッセージキー*/
	private static final String EFUB0030KE = JPCBatchMessageConstant.EFUB0030KE;

	/** メッセージキー*/
	private static final String EFUB0060AI = JPCBatchMessageConstant.EFUB0060AI;

	/** メッセージキー*/
	private static final String EFUB0070AI = JPCBatchMessageConstant.EFUB0070AI;

	/** メッセージキー*/
	private static final String EFUB0230AW = "EFUB0230AW";

	/** メッセージキー*/
	private static final String EFUB0090KE = JPCBatchMessageConstant.EFUB0090KE;

	/** メッセージキー*/
	private static final String S_DATE_1 = "/";
	private static final String S_DATE_2 = ":";

	private static final String S_DUMMY = ",\"DUMMY\"";

	/** サービス契約番号：999999999 */
	private static final String SVCKEINO_ALL9_9KETA = "999999999";
	/** サービス契約番号：9999999999 */
	private static final String SVCKEINO_ALL9_10KETA = "9999999999";

	/** メッセージ：紹介コード */
	private static final String MSG_INTR_CD = "紹介コード=";
	/** メッセージ：サービス契約番号 */
	private static final String MSG_SVC_KEI_NO = "サービス契約番号=";
	/** メッセージ：eoID */
	private static final String MSG_EOID = "eoID=";

	/** 業務パラメータ管理キー：紹介コード独自チェック対象 */
	private static final String KK_INTRCD_CHK_TG = "KK_INTRCD_CHK_TG";
	/** 業務パラメータ管理キー：紹介コード有効期間 */
	private static final String KK_INTRCD_YK_PRD = "KK_INTRCD_YK_PRD";

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	@Override
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// FREEパラメータ取得
		String strFreeParam = commonItem.getFreeItem();
		String[] lines = strFreeParam.split(JFUStrConst.S_PARAM_DELIM);
		if(lines.length != 3)
		{
			throw new JBSbatBusinessException(EFUB0030KE);
		}

		// DBアクセスクラスを生成します
		db_KK_T_INTR = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_INTR);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/** ▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼ */

		// パラメータ読み出し
		String strFreeParam = commonItem.getFreeItem();
		// パラメータを区切り文字で分割する
		String[] lines = strFreeParam.split(JFUStrConst.S_PARAM_DELIM);
		// パラメータ取得
		String strFreeParam1 = lines[0]; // 紹介者情報照会依頼ファイル
		String strFreeParam2 = lines[1]; // 紹介者情報照会依頼件数ファイル

		// 紹介者情報照会依頼ファイル読込
		ArrayList<String> intrList = readFile(strFreeParam1);

		// 件数ファイルチェック
		ArrayList<String> intrCnt = readFile(strFreeParam2);
		// ファイルレコードを区切り文字で分割する
		String[] strRecCnt = intrCnt.get(0).replace(JFUStrConst.S_DUBLLEQ, JFUStrConst.EMPTY).split(JFUStrConst.S_SEP_CAM);

		if (Integer.parseInt(strRecCnt[0]) != intrList.size())
		{
			//ファイルレコード件数と件数ファイルが一致しない場合
			throw new JBSbatBusinessException(EFUB0090KE, new String[] { strFreeParam1 });
		}

		// 登録件数カウント用
		int insCnt = 0;
		// 読込件数カウント用
		int readCnt = intrList.size();

		// 対象外データカウント用
		int warningListCnt = 0;
		// 対象外データ格納用リスト
		ArrayList<String> warningList = new ArrayList<String>();

		// ■業務パラメータ管理
		List<String> intrCdChekList= new ArrayList<String>();
		// 紹介コード独自チェック対象
		String kk_intrcd_chk_tg = JKKBatCommon.getWorkParamSetteValue(commonItem, KK_INTRCD_CHK_TG);
		if (JFUBatCommon.isNotNull(kk_intrcd_chk_tg)) {
			intrCdChekList = Arrays.asList(kk_intrcd_chk_tg.split(JFUStrConst.COMMA));
		}
		// 紹介コード有効期間
		String kk_intrcd_yk_prd = JKKBatCommon.getWorkParamSetteValue(commonItem, KK_INTRCD_YK_PRD);
		int int_intrcd_yk_prd = 0;
		String yukoKigen = JFUStrConst.EMPTY;
		if (JFUBatCommon.isNotNull(kk_intrcd_yk_prd)) 
		{
			int_intrcd_yk_prd = Integer.parseInt(kk_intrcd_yk_prd);
		}
		yukoKigen = JKKBatCommon.addDay(super.opeDate, int_intrcd_yk_prd);

		try
		{
			for (int i = 0; i < intrList.size(); i++)
			{
				// ファイルレコードを区切り文字で分割する
				String strEditRec = intrList.get(i) + S_DUMMY;
				String[] strRec = strEditRec.replace(JFUStrConst.S_DUBLLEQ, JFUStrConst.EMPTY).split(JFUStrConst.S_SEP_CAM);

				if (!JFUBatCommon.isNotNullCheck(strRec[2]))
				{
					warningList.add(createWarningMsg(strRec, "必須チェックエラー（紹介コード）"));
					// カウントアップ
					warningListCnt++;
					// 処理をパスする
					continue;
				}

				boolean isIntrcdChkTg = getIntrcdChkTg(intrCdChekList, strRec[2]);
				// 紹介テーブル取得用
				JBSbatCommonDBInterface dbList1 = new JBSbatCommonDBInterface();
				dbList1.setValue(strRec[2]);
				executeKK_T_INTR_FU_SELECT_001(dbList1.getList().toArray());
				String strCnt = db_KK_T_INTR.selectNext().getString("CNT");

				if (!JFUStrConst.S_ZERO.equals(strCnt))
				{
					// 紹介テーブルに登録済みデータ行の場合

					// 処理をパスする
					continue;
				}

				if (strRec[2].length() > 10)
				{
					warningList.add(createWarningMsg(strRec, "桁数チェックエラー（紹介コード）"));
					// カウントアップ
					warningListCnt++;
					// 処理をパスする
					continue;
				}

				String svcKeiNo = strRec[4];
				if (!JFUBatCommon.isNotNullCheck(strRec[4]))
				{
					// サービス契約番号必須チェックエラー

					warningList.add(createWarningMsg(strRec, "必須チェックエラー（サービス契約番号）"));
					// カウントアップ
					warningListCnt++;
					// 処理をパスする
					continue;
				}

				if ((SVCKEINO_ALL9_9KETA.equals(svcKeiNo) || SVCKEINO_ALL9_10KETA.equals(svcKeiNo)))
				{
					// サービス契約番号異常値エラー

					// サービス契約番号がオール「9」(9桁、10桁)の場合
					warningList.add(createWarningMsg(strRec, "異常値エラー（サービス契約番号）"));
					// カウントアップ
					warningListCnt++;
					// 処理をパスする
					continue;
				}

				// 必須チェック
				if (!JFUBatCommon.isNotNullCheck(strRec[0]))
				{
					// 紹介年月日時分秒必須チェックエラー

					warningList.add(createWarningMsg(strRec, "必須チェックエラー（紹介年月日時分秒）"));
					// カウントアップ
					warningListCnt++;
					// 処理をパスする
					continue;
				}

				if (!JFUBatCommon.isNotNullCheck(strRec[3]))
				{
					// 顧客氏名必須チェックエラー

					warningList.add(createWarningMsg(strRec, "必須チェックエラー（顧客氏名）"));
					// カウントアップ
					warningListCnt++;
					// 処理をパスする
					continue;
				}

				if (!JFUBatCommon.isNotNullCheck(strRec[6]))
				{
					// 紹介者メールアドレス必須チェックエラー

					warningList.add(createWarningMsg(strRec, "必須チェックエラー（紹介者メールアドレス）"));
					// カウントアップ
					warningListCnt++;
					// 処理をパスする
					continue;
				}

				if (!JFUBatCommon.isNotNullCheck(strRec[5]))
				{
					// eoIDがセットされていない場合

					// SYSIDの取得
					JBSbatCommonDBInterface dbList6 = new JBSbatCommonDBInterface();
					dbList6.setValue(strRec[4]); // サービス契約番号
					dbList6.setValue(super.opeDate); // バッチ運用日付
					executeKK_T_SVC_KEI_FU_SELECT_004(dbList6.getList().toArray());

					String strSysId = JFUStrConst.EMPTY;

					for (dbList6 = db_KK_T_SVC_KEI.selectNext(); null != dbList6; dbList6 = db_KK_T_SVC_KEI.selectNext())
					{
						strSysId = dbList6.getString("SYSID");
					}

					// サービス契約番号の取得
					JBSbatCommonDBInterface dbList7 = new JBSbatCommonDBInterface();
					dbList7.setValue(strSysId); // SYSID
					dbList7.setValue(super.opeDate); // バッチ運用日付
					executeKK_T_SVC_KEI_FU_SELECT_005(dbList7.getList().toArray());

					String strEoId = JFUStrConst.EMPTY;

					for (dbList7 = db_KK_T_SVC_KEI.selectNext(); null != dbList7; dbList7 = db_KK_T_SVC_KEI.selectNext())
					{
						strEoId = dbList7.getString("EOID");
					}

					// eoIDをセット
					if (JFUBatCommon.isNotNullCheck(strEoId))
					{
						strRec[5] = strEoId;
					}
				}

				// サービス契約テーブル取得用
				JBSbatCommonDBInterface dbList2 = new JBSbatCommonDBInterface();
				dbList2.setValue(strRec[4]); // サービス契約番号
				dbList2.setValue(super.opeDate); // バッチ運用日付
				executeKK_T_SVC_KEI_FU_SELECT_001(dbList2.getList().toArray());

				// SYSID格納用
				String strSysid = JFUStrConst.EMPTY;
				for (dbList2 = db_KK_T_SVC_KEI.selectNext(); null != dbList2; dbList2 = db_KK_T_SVC_KEI.selectNext())
				{
					strSysid = dbList2.getString("SYSID");
				}

				// SYSIDが取得できなかった場合エラーとする。
				if (!JFUBatCommon.isNotNullCheck(strSysid))
				{
					warningList.add(createWarningMsg(strRec, "該当0件エラー（SYSID）"));
					// カウントアップ
					warningListCnt++;
					// 処理をパスする
					continue;
				}

				// 紹介テーブル登録処理
				// 紹介テーブル登録インターフェース生成
				JBSbatCommonDBInterface dbList3 = new JBSbatCommonDBInterface();
				// 紹介テーブルINSERT
				dbList3.setValue(strRec[2]);														// 紹介コード
				dbList3.setValue(strSysid);															// SYSID
				dbList3.setValue(JFUStrConst.EMPTY);												// 紹介サービス区分
				dbList3.setValue(strRec[0].replace(" ", JFUStrConst.EMPTY).replace(S_DATE_1, JFUStrConst.EMPTY).replace(S_DATE_2, JFUStrConst.EMPTY)); // 紹介年月日時分秒
				dbList3.setValue(strRec[12]);														// 被紹介者名
				dbList3.setValue(strRec[13]);														// 被紹介者連絡先メールアドレス
				dbList3.setValue(JFUStrConst.EMPTY);												// 申込通知メール送信年月日時分秒
				dbList3.setValue(JFUStrConst.S_INTR_SBT_CD_1);										// 紹介種別コード
				dbList3.setValue(JFUStrConst.EMPTY);												// キャンセル通知メール送信年月日時分秒
				dbList3.setValue(strRec[3]);														// 紹介者名
				dbList3.setValue(strRec[4]);														// サービス契約番号
				dbList3.setValue(strRec[5]);														// eoID
				dbList3.setValue(strRec[6]);														// 紹介者連絡先メールアドレス
				// 連携された住所項目は紹介者住所番地号へ連結して格納する。
				dbList3.setValue(strRec[7].replace(JFUStrConst.S_ADDNUM_EDIT, JFUStrConst.EMPTY));	// 紹介者郵便番号
				dbList3.setValue(JFUStrConst.EMPTY);												// 紹介者住所都道府県名
				dbList3.setValue(JFUStrConst.EMPTY);												// 紹介者住所市区町村名
				dbList3.setValue(JFUStrConst.EMPTY);												// 紹介者住所大字通称名
				dbList3.setValue(JFUStrConst.EMPTY);												// 紹介者住所字丁目名
				dbList3.setValue(strRec[8] + strRec[9] + strRec[10] + strRec[11]);					// 紹介者住所番地号
				dbList3.setValue(JFUStrConst.EMPTY);												// 紹介者住所補記・建物名
				dbList3.setValue(JFUStrConst.EMPTY);												// 紹介者住所補記・部屋番号
				dbList3.setValue(JFUStrConst.S_ML_SEND_CD_0);										// 申込メール送信コード
				dbList3.setValue(JFUStrConst.S_ML_SEND_CD_0);										// キャンセルメール送信コード

				dbList3.setValue(JFUStrConst.EMPTY);												// 削除年月日時分秒
				dbList3.setValue(JFUStrConst.EMPTY);												// 削除オペレータアカウント

				if (isIntrcdChkTg)
				{
					dbList3.setValue(yukoKigen);													// 有効期限年月日
				} else {
					dbList3.setValue(JFUStrConst.EMPTY);											// 有効期限年月日
				}

				executeKK_T_INTR_FU_INSERT_001(dbList3.getList().toArray());

				// DBコミット処理
				JBSbatBusinessBase.dbcon.commit();
				// 登録件数をカウント
				insCnt++;
			}

		}
		finally
		{
			// 処理結果ログ出力
			super.logPrint.printBusinessErrorLog(EFUB0070AI, new String[] { strFreeParam1, String.valueOf(readCnt) });
			super.logPrint.printBusinessErrorLog(EFUB0060AI, new String[] { D_TBL_NAME_KK_T_INTR, String.valueOf(insCnt) });
		}

		// マイナーエラー判定
		if (warningListCnt > 0)
		{
			StringBuffer errMsgsBf = new StringBuffer();
			// 対象外データが存在する場合、ログに出力し、マイナーエラーとする
			for (int i = 0; i < warningList.size(); i++)
			{
				super.logPrint.printBusinessErrorLog(EFUB0230AW, new String[] { JFUStrConst.KIGOU_KAKKO_STA + warningList.get(i)
						+ JFUStrConst.KIGOU_KAKKO_END });

				errMsgsBf.append(warningList.get(i));
			}
			throw new JBSbatBusinessException(EFUB0230AW, new String[] { errMsgsBf.toString() });
		}

		return null;

	/** ▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲ */
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	@Override
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/

		// DBアクセスクラスをクローズします
		db_KK_T_INTR.close();
		db_KK_T_SVC_KEI.close();

		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * SQLKEY(FU_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 *
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	紹介コード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_INTR_FU_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_INTR.selectBySqlDefine(paramList, KK_T_INTR_FU_SELECT_001);
	}

	/**
	 * SQLKEY(FU_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 *
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_FU_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_FU_SELECT_001);
	}

	/**
	 * SQLKEY(FU_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 *
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_FU_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_FU_SELECT_004);
	}

	/**
	 * SQLKEY(FU_SELECT_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 *
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SYSID
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_FU_SELECT_005(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_FU_SELECT_005);
	}

	/**
	 * SQLKEY(FU_INSERT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 *
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	紹介コード
	 *		 	SYSID
	 *		 	紹介サービス区分
	 *		 	紹介年月日時分秒
	 *		 	被紹介者名
	 *		 	被紹介者連絡先メールアドレス
	 *		 	申込通知メール送信年月日時分秒
	 *		 	紹介種別コード
	 *		 	キャンセル通知メール送信年月日時分秒
	 *		 	紹介者名
	 *		 	サービス契約番号
	 *		 	eoID
	 *		 	紹介者連絡先メールアドレス
	 *		 	紹介者郵便番号
	 *		 	紹介者住所都道府県名
	 *		 	紹介者住所市区町村名
	 *		 	紹介者住所大字通称名
	 *		 	紹介者住所字丁目名
	 *		 	紹介者住所番地号
	 *		 	紹介者住所補記・建物名
	 *		 	紹介者住所補記・部屋番号
	 *		 	申込メール送信コード
	 *		 	キャンセルメール送信コード
	 *		 	削除年月日時分秒
	 *		 	削除オペレータアカウント
	 *		 	有効期限年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_INTR_FU_INSERT_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());
		paramList.setValue(param[10].toString());
		paramList.setValue(param[11].toString());
		paramList.setValue(param[12].toString());
		paramList.setValue(param[13].toString());
		paramList.setValue(param[14].toString());
		paramList.setValue(param[15].toString());
		paramList.setValue(param[16].toString());
		paramList.setValue(param[17].toString());
		paramList.setValue(param[18].toString());
		paramList.setValue(param[19].toString());
		paramList.setValue(param[20].toString());
		paramList.setValue(param[21].toString());
		paramList.setValue(param[22].toString());
		paramList.setValue(param[23].toString());
		paramList.setValue(param[24].toString());
		paramList.setValue(param[25].toString());

		// DBアクセスを実行します
		db_KK_T_INTR.executeBySqlDefine(paramList, KK_T_INTR_FU_INSERT_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * ファイル読み込み処理を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で読込ファイルディレクトリ(フルパス)を設定します。<br>
	 *
	 * 2.引数を元にファイル読込を行い、行をListへ格納します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param strFileDir    出力ディレクトリ(フルパス)。
	 * @return resultList   返却用List
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	private static ArrayList<String> readFile(String strFileDir) throws Exception
	{

		// 外部出力ファイルパス
		JBSbatInputFileUtil inFile = null;
		try
		{
			// 外部出力ファイルパス
			inFile = new JBSbatInputFileUtil(strFileDir);
			inFile.setEncode(JFUStrConst.SJIS);				// 文字コード
			inFile.setLine(JFUStrConst.S_LINE_SEPARAOR_LF);	// 改行コード
			inFile.createReader();

			ArrayList<String> resultList = new ArrayList<String>();

			while (true)
			{
				String line = inFile.readLine();
				if (line == null)
				{
					break;
				}
				// 改行コードのみの場合は、0件とみなす。
				if (!JFUStrConst.EMPTY.equals(line))
				{
					resultList.add(line);
				}
			}

			return resultList;
		}
		catch (IOException e)
		{
			throw e;
		}
		finally
		{
			if (null != inFile)
			{
				inFile.close();
			}
		}
	}

	/**
	 * ワーニング情報を設定する
	 * 
	 * <br>
	 * @param warningList ワーニングリスト
	 * @param warninRec 対象レコード
	 * @return ワーニング情報
	 */
	private String createWarningMsg(String[] warninRec, String addMsg)
	{
		// 情報格納
		StringBuffer warningInfo = new StringBuffer();
		// [2]紹介コード
		warningInfo.append(MSG_INTR_CD).append(warninRec[2] == null ? JFUStrConst.EMPTY : warninRec[2]).append(JFUStrConst.COMMA);
		// [4]サービス契約番号
		warningInfo.append(MSG_SVC_KEI_NO).append(warninRec[4] == null ? JFUStrConst.EMPTY : warninRec[4]).append(JFUStrConst.COMMA);
		// [5]eoID
		warningInfo.append(MSG_EOID).append(warninRec[5] == null ? JFUStrConst.EMPTY : warninRec[5]).append(JFUStrConst.COMMA);

		if (JFUBatCommon.isNotNullCheck(addMsg))
		{
			// ワーニングメッセージ
			warningInfo.append(JFUStrConst.KIGOU_B_KAKKO_STA_HALF).append(addMsg).append(JFUStrConst.KIGOU_B_KAKKO_END_HALF);
		}
		return warningInfo.toString();
	}

	/**
	 * 紹介コード独自チェック対象
	 * 
	 * @param intrCdChekList
	 *            業務パラメータ設定値
	 * @param intrCd
	 *            紹介コード
	 */
	private boolean getIntrcdChkTg(List<String> intrCdChekList, String intrCd) {
		if (intrCdChekList == null || intrCdChekList.size() == 0) {
			return false;
		}
		for (String wCd : intrCdChekList) 
		{
			if (intrCd.startsWith(wCd)) {
				return true;
			}
		}
		return false;
	}
}
