/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCRAbuseCst
*	ソースファイル名	：JBSbatCRAbuseCst.java
*	作成者				：富士通　
*	作成日				：2011年11月16日
*＜機能概要＞
*　Abuse抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/11/16   富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCRBatCommon;
import eo.business.util.table.JBSbatCC_T_DLYD_TRN_REQ;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatCR_T_TORK_EFILE_KNRI;
import eo.business.util.table.JBSbatKK_M_PRC_GRP;
import eo.business.util.table.JBSbatKK_T_OPSVKEI_ISP;
import eo.business.util.table.JBSbatKK_T_OP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SBOPSVKEI_ISP;
import eo.business.util.table.JBSbatKK_T_SBOP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_EOH_TEL;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_UCWK;
import eo.business.util.table.JBSbatKK_T_SVKEIUW_EOADSL;
import eo.business.util.table.JBSbatKK_T_SVKEIUW_EOH_NET;
import eo.business.util.table.JBSbatKK_T_SVKEIUW_EOMOBA;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JCRUtilCommon;
import eo.common.util.JPCUtilCommon;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.log.JBSbatLogPrintControl;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.util.JBSbatBusinessFileUtil;

/**
* Abuse抽出処理 <p>
*<BR>
* @author 富士通
*/
public class JBSbatCRAbuseCst extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(サービス契約内訳＜ｅｏＡＤＳＬ＞)*/
	private static final String D_TBL_NAME_KK_T_SVKEIUW_EOADSL = "KK_T_SVKEIUW_EOADSL";

	/** テーブル(サービス契約内訳＜ｅｏ光ネット＞)*/
	private static final String D_TBL_NAME_KK_T_SVKEIUW_EOH_NET = "KK_T_SVKEIUW_EOH_NET";

	/** テーブル(サービス契約内訳＜ｅｏモバイル＞)*/
	private static final String D_TBL_NAME_KK_T_SVKEIUW_EOMOBA = "KK_T_SVKEIUW_EOMOBA";

	/** テーブル(サービス契約＜ｅｏ光電話＞)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_EOH_TEL = "KK_T_SVC_KEI_EOH_TEL";

	/** テーブル(オプションサービス契約＜ＩＳＰ＞)*/
	private static final String D_TBL_NAME_KK_T_OPSVKEI_ISP = "KK_T_OPSVKEI_ISP";

	/** テーブル(オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_OP_SVC_KEI = "KK_T_OP_SVC_KEI";

	/** テーブル(サービス契約内訳)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_UCWK = "KK_T_SVC_KEI_UCWK";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(料金グループ)*/
	private static final String D_TBL_NAME_KK_M_PRC_GRP = "KK_M_PRC_GRP";

	/** テーブル(お客様)*/
	private static final String D_TBL_NAME_CK_T_CUST = "CK_T_CUST";

	/** テーブル(サブオプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_SBOP_SVC_KEI = "KK_T_SBOP_SVC_KEI";

	/** テーブル(サブオプションサービス契約＜ＩＳＰ＞)*/
	private static final String D_TBL_NAME_KK_T_SBOPSVKEI_ISP = "KK_T_SBOPSVKEI_ISP";

	/** テーブル(対応履歴電子ファイル管理)*/
	private static final String D_TBL_NAME_CR_T_TORK_EFILE_KNRI = "CR_T_TORK_EFILE_KNRI";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String KK_T_SVKEIUW_EOADSL_CR_SELECT_001 = "CR_SELECT_001";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String KK_T_SVKEIUW_EOH_NET_CR_SELECT_001 = "CR_SELECT_001";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String KK_T_SVKEIUW_EOMOBA_CR_SELECT_001 = "CR_SELECT_001";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String KK_T_SVC_KEI_EOH_TEL_CR_SELECT_001 = "CR_SELECT_001";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String KK_T_OPSVKEI_ISP_CR_SELECT_001 = "CR_SELECT_001";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String KK_T_OP_SVC_KEI_CR_SELECT_001 = "CR_SELECT_001";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String KK_T_SVC_KEI_UCWK_CR_SELECT_001 = "CR_SELECT_001";

	/** SQL定義キー(CR_SELECT_016)*/
	private static final String KK_T_SVC_KEI_CR_SELECT_016 = "CR_SELECT_016";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String KK_M_PRC_GRP_CR_SELECT_001 = "CR_SELECT_001";

	/** SQL定義キー(CR_SELECT_004)*/
	private static final String CK_T_CUST_CR_SELECT_004 = "CR_SELECT_004";

	/** SQL定義キー(CR_SELECT_002)*/
	private static final String KK_T_OP_SVC_KEI_CR_SELECT_002 = "CR_SELECT_002";

	/** SQL定義キー(CR_SELECT_002)*/
	private static final String KK_T_OPSVKEI_ISP_CR_SELECT_002 = "CR_SELECT_002";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String KK_T_SBOP_SVC_KEI_CR_SELECT_001 = "CR_SELECT_001";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String KK_T_SBOPSVKEI_ISP_CR_SELECT_001 = "CR_SELECT_001";

	/** テーブルアクセスクラス(サービス契約内訳＜ｅｏＡＤＳＬ＞)*/
	private JBSbatSQLAccess db_KK_T_SVKEIUW_EOADSL = null;

	/** テーブルアクセスクラス(サービス契約内訳＜ｅｏ光ネット＞)*/
	private JBSbatSQLAccess db_KK_T_SVKEIUW_EOH_NET = null;

	/** テーブルアクセスクラス(サービス契約内訳＜ｅｏモバイル＞)*/
	private JBSbatSQLAccess db_KK_T_SVKEIUW_EOMOBA = null;

	/** テーブルアクセスクラス(サービス契約＜ｅｏ光電話＞)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_EOH_TEL = null;

	/** テーブルアクセスクラス(オプションサービス契約＜ＩＳＰ＞)*/
	private JBSbatSQLAccess db_KK_T_OPSVKEI_ISP = null;

	/** テーブルアクセスクラス(オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI = null;

	/** テーブルアクセスクラス(サービス契約内訳)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_UCWK = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(料金グループ)*/
	private JBSbatSQLAccess db_KK_M_PRC_GRP = null;

	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;

	/** テーブルアクセスクラス(サブオプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_SBOP_SVC_KEI = null;

	/** テーブルアクセスクラス(サブオプションサービス契約＜ＩＳＰ＞)*/
	private JBSbatSQLAccess db_KK_T_SBOPSVKEI_ISP = null;

	/** テーブルアクセスクラス(対応履歴電子ファイル管理)*/
	private JBSbatSQLAccess db_CR_T_TORK_EFILE_KNRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	// 定数

	/** エラーファイル名 */
	private static final String ERROR_FILENAME = "EO90L010_";

	/** 抽出区分フラグ取得キー */
	private static final String KUBUNFLG_KEY = "KUBUNFLG_KEY";
	/** 抽出区分フラグ_無効認証ID */
	private static final String KUBUNFLG_MUKOUID = "1";
	/** 抽出区分フラグ_有効認証ID */
	private static final String KUBUNFLG_YUKOUID = "2";
	/** 抽出区分フラグ_無効サービス契約番号 */
	private static final String KUBUNFLG_MUKOSVCKEINO = "3";
	/** 抽出区分フラグ_無効サービス契約番号 */
	private static final String KUBUNFLG_YUKOSVCKEINO = "4";
	/** 抽出区分フラグ_出力対象外メールアドレス */
	private static final String KUBUNFLG_TAISHOGAI = "5";
	/** 抽出区分フラグ_出力対象メールアドレス */
	private static final String KUBUNFLG_TAISHO = "6";
	/** 抽出区分フラグ_無効メールアドレス */
	private static final String KUBUNFLG_MUKOMAIL = "7";
	/** 抽出区分フラグ_有効メールアドレス */
	private static final String KUBUNFLG_YUKOMAIL = "8";

	/** AbuseファイルMap_認証IDリスト取得キー */
	private static final String ERRLIST_KEY = "ERRLIST_KEY";
	/** AbuseファイルMap_Abuseファイル名取得キー */
	private static final String ABUSEFILENAME_KEY = "ABUSEFILENAME_KEY";
	/** AbuseファイルMap_認証IDリスト取得キー */
	private static final String NINSHOID_KEY = "NINSHOID_KEY";
	/** AbuseファイルMap_認証IDリスト取得キー */
	private static final String NINSHOIDLIST_KEY = "NINSHOIDLIST_KEY";
	/** AbuseファイルMap_料金グループコードリスト取得キー */
	private static final String GROUPCDLIST_KEY = "GROUPCDLIST_KEY";
	/** AbuseファイルMap_サービス契約ステータスコードリスト取得キー */
	private static final String SVCKEISTETLIST_KEY = "SVCKEISTETLIST_KEY";
	/** Abuseメールデータリスト_取得キー */
	private static final String ABUSE_MAILDATALIST_KEY = "ABUSE_MAILDATALIST_KEY";
	/** AbuseファイルMap_オプションサービス契約無効フラグ取得キー */
	private static final String OPMKFLG_KEY = "OPMKFLG_KEY";
	/** AbuseファイルMap_サブオプションサービス契約<ISP>無効フラグ取得キー */
	private static final String SBOPISP_MKFLG_KEY = "SBOPISP_MKFLG_KEY";
	/** AbuseファイルMap_サブオプションサービス契約無効フラグ取得キー */
	private static final String SBOP_MKFLG_KEY = "SBOP_MKFLG_KEY";
	/** AbuseファイルMap_サブオプションサービス契約サービス開始年月日取得キー */
	private static final String SBOP_SVC_KEI_STAYMD_KEY = "SBOP_SVC_KEI_STAYMD_KEY";
	/** AbuseファイルMap_サブオプションサービス契約サービス終了年月日取得キー */
	private static final String SBOP_SVC_KEI_ENDYMD_KEY = "SBOP_SVC_KEI_ENDYMD_KEY";

	/** メール抽出フラグ取得キー<ISP> */
	private static final String MAILFLG = "MAILFLG";
	/** メール抽出フラグ_オプションサービス契約<ISP> */
	private static final String MAILFLG_SVCISP = "1";
	/** メール抽出フラグ_サブオプションサービス契約 */
	private static final String MAILFLG_SUBSVC = "2";

	/** 終端カンマ付与フラグ_カンマ付与あり */
	private static final String KANMAFLG_HUYO_NASI = "0";

	/** 終端カンマ付与フラグ_カンマ付与なし */
	private static final String KANMAFLG_HUYO_ARI = "1";

	// 変数定義

	/** 処理日付格納用（YYYYMMDDhhmmss） */
	private String sysDateTime = null;

	/** 処理日付格納用（YYYYMMDD） */
	private String sysDate = null;

	/** 対応履歴一時ファイル保存先パス */
	private String tempFilePath = null;

	/** 初期処理エラーメッセージ */
	private String initErrMessage = null;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_SVKEIUW_EOADSL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEIUW_EOADSL);
		db_KK_T_SVKEIUW_EOH_NET = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEIUW_EOH_NET);
		db_KK_T_SVKEIUW_EOMOBA = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEIUW_EOMOBA);
		db_KK_T_SVC_KEI_EOH_TEL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_EOH_TEL);
		db_KK_T_OPSVKEI_ISP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OPSVKEI_ISP);
		db_KK_T_OP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);
		db_KK_T_SVC_KEI_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_UCWK);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_M_PRC_GRP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PRC_GRP);
		db_CK_T_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_KK_T_SBOP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SBOP_SVC_KEI);
		db_KK_T_SBOPSVKEI_ISP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SBOPSVKEI_ISP);
		db_CR_T_TORK_EFILE_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TORK_EFILE_KNRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

		// 初期処理開始

		// システム日付取得
		sysDateTime = JCRBatCommon.getSysDateTime();
		sysDate = sysDateTime.substring(0, 8);

		try
		{
			// プロパティーファイルチェックと情報取得
			checkApplicationProperty();
		}
		catch (Exception e)
		{
			// ECRB0260KW:%1%処理中に予期せぬエラーが発生しました。　%2%
			initErrMessage = JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0260KW, new String[] {"Abuse抽出", e.toString()});
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECRB0260KW, new String[] {"Abuse抽出", e.toString()});
			super.logPrint.printDebugLog("例外発生:" + e.toString());
			super.logPrint.printDebugLog("　　　　:" + e.getMessage());
		}
		/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * プロパティ情報設定とチェック<br>
	 * 初期処理でプロパティ情報を取得し設定します<br>
	 * @throws Exception 例外
	 */
	private void checkApplicationProperty() throws Exception
	{
		// 対応履歴一時ファイル保存パス取得＆チェック
		tempFilePath = checkTempFilePath();
	}

	/**
	 * 対応履歴一時ファイル保存先パス取得とチェック<br>
	 * @return 対応履歴一時ファイル保存先パス
	 * @throws Exception 例外
	 */
	private String checkTempFilePath() throws Exception
	{
		boolean existError = false;

		// 対応履歴一時ファイル保存先パスを取得
		String hozonPath = JCRBatCommon.getApplicationConst("CR_TEMP_FILE_DIR");
		if (hozonPath == null || "".equals(hozonPath.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			initErrMessage = JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0010KW, new String[] {"対応履歴一時ファイル保存先パス"});
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECRB0010KW, new String[] {"対応履歴一時ファイル保存先パス"});
			existError = true;
		}
		else
		{
			File csvPath = JCRUtilCommon.checkDirExist(hozonPath);
			if (csvPath == null)
			{
				// 存在しない場合
				// ECRB0160KW:指定されたパスが存在しません。(%1%)
				initErrMessage = JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0160KW, new String[] {hozonPath});
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECRB0160KW, new String[] {hozonPath});
				existError = true;
			}
			super.logPrint.printDebugLog("対応履歴一時ファイル保存先パス取得:" + csvPath);
		}
		if (existError == true)
		{
			hozonPath = null;
		}

		return hozonPath;
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		// (1) ディレイド処理依頼情報取得
		ArrayList<HashMap<String, Object>> shoriIraiInfoList = JCRBatCommon.getShoriIraiInfo(commonItem, super.jobid);

		// ディレイド存在チェック
		if (shoriIraiInfoList == null || 0 == shoriIraiInfoList.size())
		{
			// 処理依頼が0件の場合、処理依頼が存在しないため処理を終了する。
			super.logPrint.printDebugLog("ディレイド処理依頼は存在しません。");

			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "ディレイド処理依頼件数", 0);
			return null;
		}

		// 処理件数ログ出力
		JCRBatCommon.printShoriCountLog(commonItem, "ディレイド処理依頼件数", shoriIraiInfoList.size());

		// (2) ディレイド処理依頼の件数実行
		for (int i = 0; i < shoriIraiInfoList.size(); i++)
		{
			List<String> errList = new ArrayList<String>();

			// 処理結果の初期化
			// ディレイド処理結果コード
			String shoriKekkaCd = JCRStrConst.DLYD_SYSTEM_ERR;

			// 認証IDファイルパス
			String ninshoIDFilePath = null;

			// (3) ディレイド処理依頼情報1件読込
			// ディレイド処理依頼情報
			HashMap<String, Object> shoriIraiInfo = shoriIraiInfoList.get(i);

			// 処理依頼番号取得と電子ファイル管理番号取得
			String shoriiraiNo = (String)shoriIraiInfo.get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO);
			String eFileKanriNo = (String)shoriIraiInfo.get(JBSbatCC_T_DLYD_TRN_REQ.INPUT_EFILE_KANRI_NO);

			super.logPrint.printDebugLog("処理依頼番号：" + shoriiraiNo + " Abuse抽出主処理開始");
			super.logPrint.printDebugLog("電子ファイル管理番号：" + eFileKanriNo);

			try
			{
				if (initErrMessage == null)
				{
					// (4) 認証ID抽出ファイルの取得
					ninshoIDFilePath = getFilePath(eFileKanriNo);

					// 認証ID ファイルの内容を取得
					List<List<String>> ninshoFileData = getNinshoFile(ninshoIDFilePath, errList);
					if(errList == null || errList.size() == 0)
					{
						// (5) 認証IDファイルチェック
						Map<String, Object> ninsyoFileDataMap = checkNinshoFile(ninshoFileData);
						errList = (List<String>)ninsyoFileDataMap.get(ERRLIST_KEY);

						// 業務エラーが無い場合
						if(errList == null || errList.size() == 0)
						{
							// Abuse抽出処理  (7)〜(10)
							List<Map<String, Object>> abuseDataList = checkAbuseMain(ninsyoFileDataMap);

							// (11)-1 Abuse抽出結果設定
							// Abuse抽出データ取得
							List<String> abuseList = (ArrayList<String>)abuseDataSet(abuseDataList);

							// (11)-2 Abuse抽出結果ファイル作成
							String abuseFileName = tempFilePath + JCRStrConst.FILE_KUGIRI + (String)ninsyoFileDataMap.get(ABUSEFILENAME_KEY);
							createAbuseFile(abuseFileName, abuseList);
							// 電子ファイル管理テーブル登録 Abuse抽出結果ファイル
							entryAbuseFile(commonItem, abuseFileName);

							// ディレイド処理バッチが正常の場合
							shoriKekkaCd = JCRStrConst.DLYD_OK;

						}
						else
						{
							// 業務エラーが有る場合
							// ディレイド処理バッチが業務エラーの場合
							shoriKekkaCd = JCRStrConst.DLYD_GYOMU_ERR;
						}
					}
					else
					{
						// 業務エラーが有る場合
						// ディレイド処理バッチが業務エラーの場合
						shoriKekkaCd = JCRStrConst.DLYD_GYOMU_ERR;
					}
				}
			}
			catch (JBSbatBusinessException ex)
			{	
				// システムエラーフラグを設定する
				shoriKekkaCd = JCRStrConst.DLYD_SYSTEM_ERR;
				super.logPrint.printDebugLog("処理依頼番号：" + shoriiraiNo);
				super.logPrint.printDebugLog("例外発生:" + ex.toString());
				super.logPrint.printDebugLog("　　　　:" + ex.getMessage());
			}
			finally
			{

				// 正常終了の場合
				if (JCRStrConst.DLYD_OK.equals(shoriKekkaCd))
				{
					super.commit();
					super.logPrint.printDebugLog("処理依頼番号：" + shoriiraiNo + " コミット実行");

					// (12)(b) ディレイド処理依頼結果更新処理(処理結果：正常)
					JCRBatCommon.updateShoriIraiResult(commonItem, shoriiraiNo, shoriKekkaCd, null);
					super.logPrint.printDebugLog("ディレイド処理依頼結果： 正常");
				}
				// エラーが存在する場合
				else
				{
					// ロールバック
					commonItem.getConnection().rollback();
					super.logPrint.printDebugLog("処理依頼番号：" + shoriiraiNo + "  ロールバック実行");

					// 業務エラーの場合
					if(JCRStrConst.DLYD_GYOMU_ERR.equals(shoriKekkaCd))
					{
						// (12)(a) エラーファイル作成
						String errFile = entryErrFile(tempFilePath, errList);

						// (12)(b) ディレイド処理依頼結果更新処理(処理結果：業務エラー)
						HashMap<String, String> shoriKekkaMap =
							JCRBatCommon.updateShoriIraiResult(commonItem, shoriiraiNo, shoriKekkaCd, errFile);
						super.logPrint.printDebugLog("ディレイド処理依頼結果： 業務エラー");
						super.logPrint.printDebugLog("エラー電子ファイル管理番号： " + shoriKekkaMap.get("EFILE_KAMRI_NO"));

						// エラーファイルの一時ファイル物理削除
						JCRUtilCommon.deleteTempFile(errFile);
						super.logPrint.printDebugLog("エラーファイル物理削除： " + errFile);
					}

					// システムエラーが発生した場合
					else
					{
						// (12)(b) ディレイド処理依頼結果更新処理(処理結果：システムエラー)
						JCRBatCommon.updateShoriIraiResult(commonItem, shoriiraiNo, shoriKekkaCd, null);
						super.logPrint.printDebugLog("ディレイド処理依頼結果： システムエラー");
					}
				}
				
				// ディレイド処理結果コミット
				super.commit();
				super.logPrint.printDebugLog("処理依頼番号：" + shoriiraiNo + " コミット実行");

				// (12)(c)認証IDファイルの一時ファイル物理削除
				if (ninshoIDFilePath != null && !"".equals(ninshoIDFilePath))
				{
					int index = ninshoIDFilePath.lastIndexOf(JCRStrConst.FILE_KUGIRI);
					ninshoIDFilePath = ninshoIDFilePath.substring(0, index);
					JCRUtilCommon.deleteDir(ninshoIDFilePath);
					super.logPrint.printDebugLog("一時ファイル物理削除： " + ninshoIDFilePath);
				}
				// ログ出力処理
				super.logPrint.printDebugLog("処理依頼番号：" + shoriiraiNo + " Abuse抽出主処理終了");
			}
		}

		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 認証IDファイルパス取得処理<br>
	 * @param eKanriFileNo 電子ファイル番号
	 * @return 認証IDファイルパス
	 * @throws Exception 例外
	 */
	private String getFilePath(String eKanriFileNo) throws Exception
	{
		// (4)(a) ファイルパス取得
		String filePath = JCRBatCommon.searchDenshiFile(commonItem, eKanriFileNo);
		// 電子ファイル管理レコードの存在チェック
		if(filePath == null || "".equals(filePath))
		{
			// 電子ファイル管理テーブルの電子ファイルレコードが取得できない場合

			String[] chikanMoji = {"電子ファイル管理テーブル 電子ファイル管理番号:" + eKanriFileNo};
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECRB0250KW, chikanMoji);
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0250KW, chikanMoji);
		}

		return filePath;
	}
	
	/**
	 * 認証IDファイル取得処理<br>
	 * @param ninshoFile 認証IDファイルパス
	 * @param errList エラーリスト
	 * @return 認証IDリスト
	 * @throws Exception 例外
	 */
	private List<List<String>> getNinshoFile(String ninshoFile, List<String> errList)  throws Exception
	{
		// 認証IDファイルのデータを1行ずつリストに格納
		List<List<String>> ninshoDataList = JCRBatCommon.convNonQuateCsvFiletoList(commonItem, ninshoFile);
		if(null == ninshoDataList || ninshoDataList.size() < 4)
		{
			// ECRB0190KW			%1%の内容が正しくありません。（%2%）
			String[] chikanMoji = {"認証IDファイル", "ファイルフォーマットエラー"};
			errList.add(setErrMsg(JPCBatchMessageConstant.ECRB0190KW, chikanMoji));
		}
		return ninshoDataList;
	}
	
	
	/**
	 * チェック認証IDファイル処理<br>
	 * @param  ninshoFileData 認証ファイルデータリスト
	 * @return 認証IDファイルMap
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkNinshoFile(List<List<String>> ninshoFileData)  throws Exception
	{
		// チェック結果を格納
		Map<String, Object> resultMap = new HashMap<String, Object>();

		// 認証IDファイルのデータを1行ずつリストに格納
		List<String> ninshoIdList = new ArrayList<String>();
		// 料金グループコードリスト
		Set<String> groupCdSet = new HashSet<String>();
		// サービス契約ステータスコードリスト
		Set<String> svcKeistetSet = new HashSet<String>();

		String abuseFileName = null;

		int line = 1;

		// 業務エラーリスト
		List<String> errList = new ArrayList<String>();

		try
		{
			// (5)-1 (a) ファイル名必須チェック
			// 1行目のAbuse抽出結果ファイル名を取得し、チェックを行う
			List<String> checkList = ninshoFileData.get(0);
			if(checkList == null || "".equals(checkList.get(0)))
			{
				// %1%の必須チェックエラー
				String[] chikanMoji = {"Abuse抽出結果ファイル名"};
				errList.add(setErrMsg(JPCBatchMessageConstant.ECRB0370TW, chikanMoji));
			}
			else if(checkList.size() != 1)
			{
				// 項目数エラー
				// ECRB0180KW			項目数が正しくありません。（%2%）
				String[] chikanMoji = {"Abuse抽出結果ファイル名の項目数:" + checkList.size()};
				errList.add(setErrMsg(JPCBatchMessageConstant.ECRB0180KW, chikanMoji));
			}
			else
			{
				abuseFileName = checkList.get(0);
			}
			
			// (5)-2 (a) 料金グループ必須チェック
			// 2行目の料金グループコードを取得し、チェックを行う
			checkList = ninshoFileData.get(1);
			if(checkList == null || "".equals(checkList.get(0)))
			{
				// %1%の必須チェックエラー
				String[] chikanMoji = {"契約サービス"};
				errList.add(setErrMsg(JPCBatchMessageConstant.ECRB0370TW, chikanMoji));
			}
			else
			{
				// 項目の数だけ処理を行う
				for(int i = 0; i < checkList.size(); i++)
				{
					// 料金グループコードの桁数チェック
					String groupCd = checkList.get(i);
					// (5)-2 (b) 料金グループ妥当性チェック
					if(groupCd.length() != 2)
					{
						// 妥当性チェックエラー
						// ECRB0190KW			%1%の内容が正しくありません。（%2%）
						String[] chikanMoji = {"契約サービス", "桁数が2桁でない"};
						errList.add(setErrMsg(JPCBatchMessageConstant.ECRB0190KW, chikanMoji));
					}
					else
					{
						// 料金グループコードをSetに格納
						groupCdSet.add(groupCd);
					}
				}
			}

			// (5)-3 (a) サービス契約ステータス必須チェック
			// 3行目のサービス契約ステータスコードを取得し、チェックを行う
			checkList = ninshoFileData.get(2);
			if(checkList == null || "".equals(checkList.get(0)))
			{
				// %1%の必須チェックエラー
				String[] chikanMoji = {"契約状態"};
				errList.add(setErrMsg(JPCBatchMessageConstant.ECRB0370TW, chikanMoji));
			}
			else
			{
				// 項目の数だけ処理を行う
				for(int i = 0; i < checkList.size(); i++)
				{
					// サービス契約ステータスコードの桁数チェック
					String svcKeistet = checkList.get(i);
					// (5)-3 (b) サービス契約ステータス妥当性チェック
					if(svcKeistet.length() != 3)
					{
						// 妥当性チェックエラー
						// ECRB0190KW			%1%の内容が正しくありません。（%2%）
						String[] chikanMoji = {"契約状態", "桁数が3桁でない"};
						errList.add(setErrMsg(JPCBatchMessageConstant.ECRB0190KW, chikanMoji));
					}
					else
					{
						// サービス契約ステータスコードをSetに格納
						svcKeistetSet.add(svcKeistet);
					}
				}
			}

			// (5)-4 (a) 認証ID必須チェック
			// 4行目以降は認証IDが格納されているので、項目数チェックを行う
			for(int i = 3; i < ninshoFileData.size(); i++)
			{
				checkList = ninshoFileData.get(i);
				if(checkList == null || "".equals(checkList.get(0)))
				{
					// %1%の必須チェックエラー
					String[] chikanMoji = {"認証ID"};
					errList.add(setErrMsg(line, JPCBatchMessageConstant.ECRB0370TW, chikanMoji));
				}
				// (5)-4 (b) 項目数チェック

				else if(checkList.size() != 2)
				{
					// 項目数エラー
					// ECRB0180KW			項目数が正しくありません。（%1%）
					String[] chikanMoji = {"認証IDの項目数:" + checkList.size() + "　[正しい項目数−ファイル抽出の場合:2、手動入力抽出の場合:1]"};
					errList.add(setErrMsg(line, JPCBatchMessageConstant.ECRB0180KW, chikanMoji));
				}
				else
				{
					// 認証IDリストに格納
					ninshoIdList.add(checkList.get(1));
				}
				line++;
			}
		}
		finally
		{
			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "Abuse抽出処理行数", line);

			resultMap.put(ABUSEFILENAME_KEY, abuseFileName);
			resultMap.put(NINSHOIDLIST_KEY, ninshoIdList);
			resultMap.put(GROUPCDLIST_KEY, groupCdSet);
			resultMap.put(SVCKEISTETLIST_KEY, svcKeistetSet);
			resultMap.put(ERRLIST_KEY, errList);
		}

		return resultMap;
	}

	/**
	 * チェックAbuse抽出処理<br>
	 * @param ninsyoFileDataMap 認証IDファイルデータマップ
	 * @return Abuse抽出データList
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	private List<Map<String, Object>> checkAbuseMain(Map<String, Object> ninsyoFileDataMap) throws Exception
	{
		// Abuse抽出結果格納用List
		List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();

		// 認証IDファイルのデータを1行ずつリストに格納
		List<String> ninshoIdList = (List<String>)ninsyoFileDataMap.get(NINSHOIDLIST_KEY);
		// 料金グループコードリスト
		Set<String> groupCdSet =  (Set<String>)ninsyoFileDataMap.get(GROUPCDLIST_KEY);
		// サービス契約ステータスコードリスト
		Set<String> svcKeistetSet = (Set<String>)ninsyoFileDataMap.get(SVCKEISTETLIST_KEY);

		//  認証IDデータの行数分繰返す
		for(int i = 0; i < ninshoIdList.size(); i++)
		{
			// (6)認証IDデータ抽出処理 1行分の認証ID取得
			String ninshoId = ninshoIdList.get(i);

			// (7) 有効認証ID検索
			Map<String, Object> abuseChushutuMap = checkYukoNinshoId(ninshoId);

			// (7)-6 有効認証IDチェック
			if(abuseChushutuMap == null)
			{
				abuseChushutuMap = new HashMap<String, Object>();

				// ■無効認証ID
				abuseChushutuMap.put(KUBUNFLG_KEY, KUBUNFLG_MUKOUID);

				// 認証ID格納
				abuseChushutuMap.put(NINSHOID_KEY, ninshoId);

			}
			else
			{
				// ■有効認証ID
				abuseChushutuMap.put(KUBUNFLG_KEY, KUBUNFLG_YUKOUID);

				// 認証ID格納
				abuseChushutuMap.put(NINSHOID_KEY, ninshoId);

				// 判定条件を取得
				String svcStartYmd = (String)abuseChushutuMap.get(JBSbatKK_T_SVC_KEI.SVC_STA_YMD);
				String svcEndYmd = (String)abuseChushutuMap.get(JBSbatKK_T_SVC_KEI.SVC_ENDYMD);
				String mkFlg = (String)abuseChushutuMap.get(JBSbatKK_T_SVC_KEI.MK_FLG);

				// (8) 有効サービス契約番号チェック
				if((svcStartYmd != null && JPCUtilCommon.isFutureDate(sysDate, svcStartYmd, JCRStrConst.SAME_DAY_FLG_TRUE))
					&& (svcEndYmd == null || JPCUtilCommon.isPastDate(sysDate, svcEndYmd, JCRStrConst.SAME_DAY_FLG_TRUE))
					&& JCRStrConst.CD_DIV_MK_FLG_YUKO.equals(mkFlg))
				{
					// ■有効サービス契約番号
					abuseChushutuMap.put(KUBUNFLG_KEY, KUBUNFLG_YUKOSVCKEINO);

					String groupCd = (String)abuseChushutuMap.get(JBSbatKK_T_SVC_KEI.PRC_GRP_CD);
					String svcKeiStetus = (String)abuseChushutuMap.get(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);

					// (9) メールアドレス検索
					// (9)(a) 出力対象メールチェック
					if(groupCdSet.contains(groupCd) && svcKeistetSet.contains(svcKeiStetus))
					{
						String svcKeiNo = (String)abuseChushutuMap.get(JBSbatKK_T_SVC_KEI.SVC_KEI_NO);
						List<Map<String, String>> mailDataList = searchMailAddress(svcKeiNo);

						if(mailDataList != null && mailDataList.size() != 0)
						{
							List<Map<String, String>> mailEntryDataList = new ArrayList<Map<String, String>>();

							// ■出力対象メールアドレス
							abuseChushutuMap.put(KUBUNFLG_KEY, KUBUNFLG_TAISHO);

							// (10) メールアドレス有効チェック
							for(int j = 0; j < mailDataList.size(); j++)
							{
								Map<String, String> mailMap = mailDataList.get(j);

								if(checkYukoMailAddress(mailMap))
								{
									// ■有効メールアドレスフラグ格納
									mailMap.put(KUBUNFLG_KEY, KUBUNFLG_YUKOMAIL);
								}
								else
								{
									// ■無効メールアドレスフラグ格納
									mailMap.put(KUBUNFLG_KEY, KUBUNFLG_MUKOMAIL);
								}
								mailEntryDataList.add(mailMap);
							}

							// サービス契約番号に紐づくメールデータを格納
							abuseChushutuMap.put(ABUSE_MAILDATALIST_KEY, mailEntryDataList);
						}
						else
						{
							// ■出力対象外メールアドレス
							abuseChushutuMap.put(KUBUNFLG_KEY, KUBUNFLG_TAISHOGAI);
						}
					}
					else
					{
						// ■出力対象外メールアドレス
						abuseChushutuMap.put(KUBUNFLG_KEY, KUBUNFLG_TAISHOGAI);
					}
				}
				else
				{
					// ■無効サービス契約番号
					abuseChushutuMap.put(KUBUNFLG_KEY, KUBUNFLG_MUKOSVCKEINO);
				}
			}
			// 認証ID結果格納
			resultList.add(abuseChushutuMap);
		}
		return resultList;
	}

	/**
	 * 有効認証ID検索処理<br>
	 * @param ninshoId 認証IDリスト
	 * @return Abuse抽出結果マップ
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkYukoNinshoId(String ninshoId) throws Exception
	{

		// (7)-1 有効ADSL認証ID検索
		Map<String, Object> resultMap = checkAdslNinshoId(ninshoId);
		if(resultMap != null)
		{
			// レコード取得済み
			return resultMap;
		}

		// (7)-2 有効ISP認証ID検索
		resultMap = checkIspNinshoId(ninshoId);
		if(resultMap != null)
		{
			// レコード取得済み
			return resultMap;
		}

		// (7)-3 有効UQ認証ID検索
		resultMap = checkUqNinshoId(ninshoId);
		if(resultMap != null)
		{
			// レコード取得済み
			return resultMap;
		}

		// (7)-4 有効PPP認証ID検索
		resultMap = checkPppNinshoId(ninshoId);
		if(resultMap != null)
		{
			// レコード取得済み
			return resultMap;
		}

		// (7)-5 有効ダイアルアップ接続認証ID検索
		resultMap = checkDialupNinshoId(ninshoId);
		if(resultMap != null)
		{
			// レコード取得済み
			return resultMap;
		}

		// どの検索でもレコードが取得できなかった場合
		return null;
	}

	/**
	 * 有効ADSL認証ID検索処理<br>
	 * @param ninshoId 認証ID
	 * @return 有効ADSL認証ID検索結果マップ
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkAdslNinshoId(String ninshoId) throws Exception
	{
		Map<String, Object> resultMap = new HashMap<String, Object>();
		String[] param = new String[]{sysDate, ninshoId};	// 認証ID

		// (a) サービス契約内訳<eoADSL>検索
		executeKK_T_SVKEIUW_EOADSL_CR_SELECT_001(param);
		JBSbatCommonDBInterface selectedData = db_KK_T_SVKEIUW_EOADSL.selectNext();
		if(selectedData == null)
		{
			return null;
		}

		String svcKeiUcwkNo = selectedData.getString(JBSbatKK_T_SVKEIUW_EOADSL.SVC_KEI_UCWK_NO);
		resultMap.put(JBSbatKK_T_SVKEIUW_EOADSL.SVC_KEI_UCWK_NO, svcKeiUcwkNo);

		// (b) サービス契約内訳情報検索
		param = new String[]{sysDate, sysDate, svcKeiUcwkNo, sysDate, sysDate, sysDate};
		executeKK_T_SVC_KEI_UCWK_CR_SELECT_001(param);

		selectedData = db_KK_T_SVC_KEI_UCWK.selectNext();
		if(selectedData == null)
		{
			return null;
		}

		String svcKeiNo = selectedData.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_NO);
		String svcKeiUcwkStetusMei = selectedData.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM);

		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_KEI_NO, svcKeiNo);
		resultMap.put(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM, svcKeiUcwkStetusMei);

		// (c) サービス契約情報検索
		param = new String[]{sysDate, sysDate, svcKeiNo, sysDate};
		executeKK_T_SVC_KEI_CR_SELECT_016(param);
		selectedData = db_KK_T_SVC_KEI.selectNext();
		if(selectedData == null)
		{
			return null;
		}

		// サービス契約情報
		String svcKeiStetus = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);
		String svcStaYmd = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_STA_YMD);
		String svcEndYmd = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_ENDYMD);
		String groupCd = selectedData.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD);
		String sysId = selectedData.getString(JBSbatKK_T_SVC_KEI.SYSID);
		String mkFlg = selectedData.getString(JBSbatKK_T_SVC_KEI.MK_FLG);

		// マップに格納
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT, svcKeiStetus);
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_STA_YMD, svcStaYmd);
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_ENDYMD, svcEndYmd);
		resultMap.put(JBSbatKK_T_SVC_KEI.PRC_GRP_CD, groupCd);
		resultMap.put(JBSbatKK_T_SVC_KEI.SYSID, sysId);
		resultMap.put(JBSbatKK_T_SVC_KEI.MK_FLG, mkFlg);

		// (d) 料金グループ名検索
		param = new String[]{groupCd, sysDate};
		executeKK_M_PRC_GRP_CR_SELECT_001(param);
		selectedData = db_KK_M_PRC_GRP.selectNext();
		if(selectedData != null)
		{
			String groupNm = selectedData.getString(JBSbatKK_M_PRC_GRP.PRC_GRP_NM);
			resultMap.put(JBSbatKK_M_PRC_GRP.PRC_GRP_NM, groupNm);
		}

		// (e) お客様名検索
		param = new String[]{sysId, sysDate};
		executeCK_T_CUST_CR_SELECT_004(param);
		selectedData = db_CK_T_CUST.selectNext();
		if(selectedData != null)
		{
			String custNm = selectedData.getString(JBSbatCK_T_CUST.CUST_NM);
			resultMap.put(JBSbatCK_T_CUST.CUST_NM, custNm);
		}

		return resultMap;
	}

	/**
	 * 有効ISP認証ID検索処理<br>
	 * @param ninshoId 認証ID
	 * @return 有効ISP認証ID検索結果マップ
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkIspNinshoId(String ninshoId) throws Exception
	{
		Map<String, Object> resultMap = new HashMap<String, Object>();
		String[] param = new String[]{sysDate, ninshoId};		// 認証ID

		// (a) サービス契約内訳<eo光ネット>検索
		executeKK_T_SVKEIUW_EOH_NET_CR_SELECT_001(param);
		JBSbatCommonDBInterface selectedData = db_KK_T_SVKEIUW_EOH_NET.selectNext();
		if(selectedData ==  null)
		{
			return null;
		}

		String svcKeiUcwkNo = selectedData.getString(JBSbatKK_T_SVKEIUW_EOH_NET.SVC_KEI_UCWK_NO);
		resultMap.put(JBSbatKK_T_SVKEIUW_EOH_NET.SVC_KEI_UCWK_NO, svcKeiUcwkNo);

		// (b) サービス契約内訳情報検索
		param = new String[]{sysDate, sysDate, svcKeiUcwkNo, sysDate, sysDate, sysDate};
		executeKK_T_SVC_KEI_UCWK_CR_SELECT_001(param);

		selectedData = db_KK_T_SVC_KEI_UCWK.selectNext();
		if(selectedData ==  null)
		{
			return null;
		}
		String svcKeiNo = selectedData.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_NO);
		String svcKeiUcwkStetusMei = selectedData.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM);

		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_KEI_NO, svcKeiNo);
		resultMap.put(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM, svcKeiUcwkStetusMei);

		// (c) サービス契約情報検索
		param = new String[]{sysDate, sysDate, svcKeiNo, sysDate};
		executeKK_T_SVC_KEI_CR_SELECT_016(param);
		selectedData = db_KK_T_SVC_KEI.selectNext();
		if(selectedData == null)
		{
			return null;
		}

		// サービス契約情報
		String svcKeiStetus = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);
		String svcStaYmd = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_STA_YMD);
		String svcEndYmd = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_ENDYMD);
		String groupCd = selectedData.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD);
		String sysId = selectedData.getString(JBSbatKK_T_SVC_KEI.SYSID);
		String mkFlg = selectedData.getString(JBSbatKK_T_SVC_KEI.MK_FLG);

		// マップに格納
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT, svcKeiStetus);
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_STA_YMD, svcStaYmd);
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_ENDYMD, svcEndYmd);
		resultMap.put(JBSbatKK_T_SVC_KEI.PRC_GRP_CD, groupCd);
		resultMap.put(JBSbatKK_T_SVC_KEI.SYSID, sysId);
		resultMap.put(JBSbatKK_T_SVC_KEI.MK_FLG, mkFlg);

		// (d) 料金グループ名検索
		param = new String[]{groupCd, sysDate};
		executeKK_M_PRC_GRP_CR_SELECT_001(param);
		selectedData = db_KK_M_PRC_GRP.selectNext();
		if(selectedData != null)
		{
			String groupNm = selectedData.getString(JBSbatKK_M_PRC_GRP.PRC_GRP_NM);
			resultMap.put(JBSbatKK_M_PRC_GRP.PRC_GRP_NM, groupNm);
		}

		// (e) お客様名検索
		param = new String[]{sysId, sysDate};
		executeCK_T_CUST_CR_SELECT_004(param);
		selectedData = db_CK_T_CUST.selectNext();
		if(selectedData != null)
		{
			String custNm = selectedData.getString(JBSbatCK_T_CUST.CUST_NM);
			resultMap.put(JBSbatCK_T_CUST.CUST_NM, custNm);
		}

		return resultMap;
	}

	/**
	 * 有効UQ認証ID検索処理<br>
	 * @param ninshoId 認証ID
	 * @return 有効UQ認証ID検索結果マップ
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkUqNinshoId(String ninshoId) throws Exception
	{
		Map<String, Object> resultMap = new HashMap<String, Object>();
		String[] param = new String[]{sysDate,
				JCRBatCommon.fillHalfSpace(ninshoId, 30, true)};	// 認証ID

		// (a) サービス契約内訳<eoモバイル>検索
		executeKK_T_SVKEIUW_EOMOBA_CR_SELECT_001(param);
		JBSbatCommonDBInterface selectedData = db_KK_T_SVKEIUW_EOMOBA.selectNext();
		if(selectedData == null)
		{
			return null;
		}

		String svcKeiUcwkNo = selectedData.getString(JBSbatKK_T_SVKEIUW_EOMOBA.SVC_KEI_UCWK_NO);
		resultMap.put(JBSbatKK_T_SVKEIUW_EOMOBA.SVC_KEI_UCWK_NO, svcKeiUcwkNo);

		// (b) サービス契約内訳情報検索
		param = new String[]{sysDate, sysDate, svcKeiUcwkNo, sysDate, sysDate, sysDate};
		executeKK_T_SVC_KEI_UCWK_CR_SELECT_001(param);

		selectedData = db_KK_T_SVC_KEI_UCWK.selectNext();
		if(selectedData == null)
		{	
			return null;
		}
		String svcKeiNo = selectedData.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_NO);
		String svcKeiUcwkStetusMei = selectedData.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM);

		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_KEI_NO, svcKeiNo);
		resultMap.put(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM, svcKeiUcwkStetusMei);

		// (c) サービス契約情報検索
		param = new String[]{sysDate, sysDate, svcKeiNo, sysDate};
		executeKK_T_SVC_KEI_CR_SELECT_016(param);
		selectedData = db_KK_T_SVC_KEI.selectNext();
		if(selectedData == null)
		{
			return null;
		}

		// サービス契約情報
		String svcKeiStetus = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);
		String svcStaYmd = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_STA_YMD);
		String svcEndYmd = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_ENDYMD);
		String groupCd = selectedData.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD);
		String sysId = selectedData.getString(JBSbatKK_T_SVC_KEI.SYSID);
		String mkFlg = selectedData.getString(JBSbatKK_T_SVC_KEI.MK_FLG);

		// マップに格納
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT, svcKeiStetus);
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_STA_YMD, svcStaYmd);
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_ENDYMD, svcEndYmd);
		resultMap.put(JBSbatKK_T_SVC_KEI.PRC_GRP_CD, groupCd);
		resultMap.put(JBSbatKK_T_SVC_KEI.SYSID, sysId);
		resultMap.put(JBSbatKK_T_SVC_KEI.MK_FLG, mkFlg);

		// (d) 料金グループ名検索
		param = new String[]{groupCd, sysDate};
		executeKK_M_PRC_GRP_CR_SELECT_001(param);
		selectedData = db_KK_M_PRC_GRP.selectNext();
		if(selectedData != null)
		{
			String groupNm = selectedData.getString(JBSbatKK_M_PRC_GRP.PRC_GRP_NM);
			resultMap.put(JBSbatKK_M_PRC_GRP.PRC_GRP_NM, groupNm);
		}

		// (e) お客様名検索
		param = new String[]{sysId, sysDate};
		executeCK_T_CUST_CR_SELECT_004(param);
		selectedData = db_CK_T_CUST.selectNext();
		if(selectedData != null)
		{
			String custNm = selectedData.getString(JBSbatCK_T_CUST.CUST_NM);
			resultMap.put(JBSbatCK_T_CUST.CUST_NM, custNm);
		}

		return resultMap;
	}

	/**
	 * 有効PPP認証ID検索処理<br>
	 * @param ninshoId 認証ID
	 * @return 有効PPP認証ID検索結果マップ
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkPppNinshoId(String ninshoId) throws Exception
	{
		Map<String, Object> resultMap = new HashMap<String, Object>();
		String[] param = new String[]{sysDate, ninshoId};	// 認証ID

		// (a) サービス契約<eo光電話>検索
		executeKK_T_SVC_KEI_EOH_TEL_CR_SELECT_001(param);
		JBSbatCommonDBInterface selectedData = db_KK_T_SVC_KEI_EOH_TEL.selectNext();
		if(selectedData == null)
		{
			return null;
		}

		String svcKeiNo = selectedData.getString(JBSbatKK_T_SVC_KEI_EOH_TEL.SVC_KEI_NO);
		// サービス契約番号
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_KEI_NO, svcKeiNo);

		// (b) サービス契約情報検索
		param = new String[]{sysDate, sysDate, svcKeiNo, sysDate};
		executeKK_T_SVC_KEI_CR_SELECT_016(param);
		selectedData = db_KK_T_SVC_KEI.selectNext();
		if(selectedData == null)
		{
			return null;
		}

		// サービス契約情報
		String svcKeiStetus = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);
		String svcKeiStetusMei = selectedData.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM);
		String svcStaYmd = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_STA_YMD);
		String svcEndYmd = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_ENDYMD);
		String groupCd = selectedData.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD);
		String sysId = selectedData.getString(JBSbatKK_T_SVC_KEI.SYSID);
		String mkFlg = selectedData.getString(JBSbatKK_T_SVC_KEI.MK_FLG);

		// マップに格納
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT, svcKeiStetus);
		resultMap.put(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM, svcKeiStetusMei);
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_STA_YMD, svcStaYmd);
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_ENDYMD, svcEndYmd);
		resultMap.put(JBSbatKK_T_SVC_KEI.PRC_GRP_CD, groupCd);
		resultMap.put(JBSbatKK_T_SVC_KEI.SYSID, sysId);
		resultMap.put(JBSbatKK_T_SVC_KEI.MK_FLG, mkFlg);

		// (c) 料金グループ名検索
		param = new String[]{groupCd, sysDate};
		executeKK_M_PRC_GRP_CR_SELECT_001(param);
		selectedData = db_KK_M_PRC_GRP.selectNext();
		if(selectedData != null)
		{
			String groupNm = selectedData.getString(JBSbatKK_M_PRC_GRP.PRC_GRP_NM);
			resultMap.put(JBSbatKK_M_PRC_GRP.PRC_GRP_NM, groupNm);
		}

		// (d) お客様名検索
		param = new String[]{sysId, sysDate};
		executeCK_T_CUST_CR_SELECT_004(param);
		selectedData = db_CK_T_CUST.selectNext();
		if(selectedData != null)
		{
			String custNm = selectedData.getString(JBSbatCK_T_CUST.CUST_NM);
			resultMap.put(JBSbatCK_T_CUST.CUST_NM, custNm);
		}

		return resultMap;
	}

	/**
	 * 有効ダイアルアップ接続認証ID検索処理<br>
	 * @param ninshoId 認証ID
	 * @return 有効ダイアルアップ接続認証ID検索結果マップ
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkDialupNinshoId(String ninshoId) throws Exception
	{
		Map<String, Object> resultMap = new HashMap<String, Object>();
		String[] param = new String[]{sysDate, ninshoId};	// 認証ID

		// (a) オプションサービス契約<ISP>検索
		executeKK_T_OPSVKEI_ISP_CR_SELECT_001(param);
		JBSbatCommonDBInterface selectedData = db_KK_T_OPSVKEI_ISP.selectNext();
		if(selectedData == null)
		{
			return null;
		}

		String opSvcKeiNo = selectedData.getString(JBSbatKK_T_OPSVKEI_ISP.OP_SVC_KEI_NO);
		// オプションサービス契約番号
		resultMap.put(JBSbatKK_T_OPSVKEI_ISP.OP_SVC_KEI_NO, opSvcKeiNo);

		// (b) オプションサービス契約情報検索
		param = new String[]{sysDate, sysDate, opSvcKeiNo, sysDate, sysDate, sysDate};
		executeKK_T_OP_SVC_KEI_CR_SELECT_001(param);
		selectedData = db_KK_T_OP_SVC_KEI.selectNext();
		if(selectedData == null)
		{
			return null;
		}

		String svcKeiNo = selectedData.getString(JBSbatKK_T_OP_SVC_KEI.SVC_KEI_NO);
		String opSvcKeiStetusMei = selectedData.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM);

		if(svcKeiNo == null || "".equals(svcKeiNo))
		{
			return null;
		}

		// サービス契約番号
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_KEI_NO, svcKeiNo);
		// サービス状態
		resultMap.put(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM, opSvcKeiStetusMei);

		// (c) サービス契約情報検索
		param = new String[]{sysDate, sysDate, svcKeiNo, sysDate};
		executeKK_T_SVC_KEI_CR_SELECT_016(param);
		selectedData = db_KK_T_SVC_KEI.selectNext();
		if(selectedData == null)
		{
			return null;
		}

		// サービス契約情報
		String svcKeiStetus = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);
		String svcStaYmd = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_STA_YMD);
		String svcEndYmd = selectedData.getString(JBSbatKK_T_SVC_KEI.SVC_ENDYMD);
		String groupCd = selectedData.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD);
		String sysId = selectedData.getString(JBSbatKK_T_SVC_KEI.SYSID);
		String mkFlg = selectedData.getString(JBSbatKK_T_SVC_KEI.MK_FLG);

		// マップに格納
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT, svcKeiStetus);
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_STA_YMD, svcStaYmd);
		resultMap.put(JBSbatKK_T_SVC_KEI.SVC_ENDYMD, svcEndYmd);
		resultMap.put(JBSbatKK_T_SVC_KEI.PRC_GRP_CD, groupCd);
		resultMap.put(JBSbatKK_T_SVC_KEI.SYSID, sysId);
		resultMap.put(JBSbatKK_T_SVC_KEI.MK_FLG, mkFlg);

		// (c) 料金グループ名検索
		param = new String[]{groupCd, sysDate};
		executeKK_M_PRC_GRP_CR_SELECT_001(param);
		selectedData = db_KK_M_PRC_GRP.selectNext();
		if(selectedData != null)
		{
			String groupNm = selectedData.getString(JBSbatKK_M_PRC_GRP.PRC_GRP_NM);
			resultMap.put(JBSbatKK_M_PRC_GRP.PRC_GRP_NM, groupNm);
		}

		// (d) お客様名検索
		param = new String[]{sysId, sysDate};
		executeCK_T_CUST_CR_SELECT_004(param);
		selectedData = db_CK_T_CUST.selectNext();
		if(selectedData != null)
		{
			String custNm = selectedData.getString(JBSbatCK_T_CUST.CUST_NM);
			resultMap.put(JBSbatCK_T_CUST.CUST_NM, custNm);
		}

		return resultMap;
	}

	/**
	 * メールアドレス検索処理<br>
	 * @param svcKeiNo サービス契約番号
	 * @return メール情報リスト
	 * @throws Exception 例外
	 */
	private List<Map<String, String>> searchMailAddress(String svcKeiNo) throws Exception
	{
		String[] param = {svcKeiNo, sysDate};
		// (9)(b)@ オプションサービス契約番号検索
		executeKK_T_OP_SVC_KEI_CR_SELECT_002(param);

		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_KK_T_OP_SVC_KEI);
		if(selectedDataList == null)
		{
			return null;
		}
		List <Map<String, String>> mailMapList = new ArrayList<Map<String, String>>();

		// オプションサービス契約の分、メールアドレス検索を行う
		for(int i = 0; i < selectedDataList.size(); i++)
		{
			JBSbatCommonDBInterface mailData = selectedDataList.get(i);
			String opSvcKeiNo = mailData.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_NO);
			String svcStet  = mailData.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT);
			String svcStaDtm  = mailData.getString(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD);
			String svcEndDtm  = mailData.getString(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD);
			String opMkFlg  = mailData.getString(JBSbatKK_T_OP_SVC_KEI.MK_FLG);
			String domain  = "";

			// メールアドレス検索
			String[] sqlParam = {opSvcKeiNo, sysDate};

			// (9)(b)A オプションサービス契約番号検索
			executeKK_T_OPSVKEI_ISP_CR_SELECT_002(sqlParam);
			JBSbatCommonDBInterface selectedMailData = db_KK_T_OPSVKEI_ISP.selectNext();

			if(selectedMailData != null)
			{
				Map<String, String> mailMap = new HashMap<String, String>();

				String mailAddress = selectedMailData.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD);
				String mkFlg = selectedMailData.getString(JBSbatKK_T_OPSVKEI_ISP.MK_FLG);

				mailMap.put(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_NO, opSvcKeiNo);
				mailMap.put(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT, svcStet);
				mailMap.put(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD, svcStaDtm);
				mailMap.put(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD, svcEndDtm);
				mailMap.put(OPMKFLG_KEY, opMkFlg);

				if (mailAddress != null)
				{
					// メールアドレスの@以下を保存
					int index = mailAddress.indexOf("@");
					if (index > -1)
					{
						domain = mailAddress.substring(index);
					}
				}
				else
				{
					mailAddress = "";
				}

				mailMap.put(JBSbatKK_T_OPSVKEI_ISP.MLAD, mailAddress);
				mailMap.put(JBSbatKK_T_OPSVKEI_ISP.MK_FLG, mkFlg);

				// オプションサービス契約<ISP>から取得したことを示すフラグを設定
				mailMap.put(MAILFLG, MAILFLG_SVCISP);
				mailMapList.add(mailMap);
			}

			// (9)(c)@ サブオプションサービス契約<ISP>メールアドレス検索
			executeKK_T_SBOPSVKEI_ISP_CR_SELECT_001(sqlParam);
			selectedMailData = db_KK_T_SBOPSVKEI_ISP.selectNext();

			if(selectedMailData != null)
			{
				Map<String, String> mailMap = new HashMap<String, String>();

				String subOpSvcKeiNo = selectedMailData.getString(JBSbatKK_T_SBOPSVKEI_ISP.SBOP_SVC_KEI_NO);
				String alias = selectedMailData.getString(JBSbatKK_T_SBOPSVKEI_ISP.ALIAS);
				if (alias != null)
				{
					String subOpSvcIspMkFlg = selectedMailData.getString(JBSbatKK_T_SBOPSVKEI_ISP.MK_FLG);

					// エイリアスに@以下のドメイン部分を追記してメールアドレスにする。
					alias = alias + domain;

					String[] mailSqlParam = {opSvcKeiNo, subOpSvcKeiNo, sysDate};
					// (9)(c)A サブオプションサービス契約情報検索
					executeKK_T_SBOP_SVC_KEI_CR_SELECT_001(mailSqlParam);
					selectedMailData = db_KK_T_SBOP_SVC_KEI.selectNext();

					if(selectedMailData != null)
					{
						String subOpSvcKeiStet = selectedMailData.getString(JBSbatKK_T_SBOP_SVC_KEI.SBOP_SVC_KEI_STAT);
						String subOpSvcStart = selectedMailData.getString(JBSbatKK_T_SBOP_SVC_KEI.SVC_STAYMD);
						String subOpSvcEnd = selectedMailData.getString(JBSbatKK_T_SBOP_SVC_KEI.SVC_ENDYMD);
						String subOpSvcMkFlg = selectedMailData.getString(JBSbatKK_T_SBOP_SVC_KEI.MK_FLG);

						mailMap.put(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_NO, opSvcKeiNo);
						mailMap.put(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD, svcStaDtm);
						mailMap.put(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD, svcEndDtm);
						mailMap.put(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT, svcStet);
						mailMap.put(OPMKFLG_KEY, opMkFlg);
						mailMap.put(JBSbatKK_T_SBOPSVKEI_ISP.SBOP_SVC_KEI_NO, subOpSvcKeiNo);
						mailMap.put(JBSbatKK_T_SBOPSVKEI_ISP.ALIAS, alias);
						mailMap.put(SBOPISP_MKFLG_KEY, subOpSvcIspMkFlg);

						mailMap.put(JBSbatKK_T_SBOP_SVC_KEI.SBOP_SVC_KEI_STAT, subOpSvcKeiStet);
						mailMap.put(SBOP_SVC_KEI_STAYMD_KEY, subOpSvcStart);
						mailMap.put(SBOP_SVC_KEI_ENDYMD_KEY, subOpSvcEnd);
						mailMap.put(SBOP_MKFLG_KEY, subOpSvcMkFlg);

						// サブオプションサービス契約<ISP>から取得したことを示すフラグを設定
						mailMap.put(MAILFLG, MAILFLG_SUBSVC);

						mailMapList.add(mailMap);
					}
				}
			}
		}

		return mailMapList;
	}

	/**
	 * メールアドレス有効チェック<br>
	 * @param mailDataMap 
	 * @return 有効/無効の判定
	 * @throws Exception 例外
	 */
	private boolean checkYukoMailAddress(Map<String, String> mailDataMap) throws Exception
	{
		String svcStaDtm  = (String)mailDataMap.get(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD);
		String svcEndDtm  = (String)mailDataMap.get(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD);
		String svcStet    = (String)mailDataMap.get(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT);
		String opMkFlg 	  = (String)mailDataMap.get(OPMKFLG_KEY);

		// メールアドレスがオプションサービス契約<ISP>から取得した場合
		if(MAILFLG_SVCISP.equals(mailDataMap.get(MAILFLG)))
		{
			String mkFlg 	  = (String)mailDataMap.get(JBSbatKK_T_OPSVKEI_ISP.MK_FLG);

			if((svcStaDtm != null && JPCUtilCommon.isFutureDate(sysDate, svcStaDtm, JCRStrConst.SAME_DAY_FLG_TRUE))		// サービス開始年月日
				&& (svcEndDtm == null || JPCUtilCommon.isPastDate(sysDate, svcEndDtm, JCRStrConst.SAME_DAY_FLG_TRUE))	// サービス終了年月日
				&& JCRStrConst.CD_DIV_MK_FLG_YUKO.equals(mkFlg)										// オプションサービス契約.無効フラグ
				&& JCRStrConst.CD_DIV_MK_FLG_YUKO.equals(opMkFlg)									// オプションサービス契約<ISP>.無効フラグ
				&& (JCRStrConst.CD_DIV_SVC_STAT_UKTKZUMI.equals(svcStet)
					|| JCRStrConst.CD_DIV_SVC_STAT_SHOSZUMI.equals(svcStet)
					|| JCRStrConst.CD_DIV_SVC_STAT_TOKETUZUMI.equals(svcStet)
					|| JCRStrConst.CD_DIV_SVC_STAT_SVCTEIKYO.equals(svcStet)))
			{
				// ■有効メールアドレス
				return true;
			}
			else
			{
				// ■無効メールアドレス
				return false;
			}
		}
		// メールアドレスがオプションサービス契約<ISP>から取得した場合
		else
		{
			String subOpSvcMkFlg = (String)mailDataMap.get(SBOP_MKFLG_KEY);
			String subOpIspmkFlg = (String)mailDataMap.get(SBOPISP_MKFLG_KEY);
			String subSvcStaDtm  = (String)mailDataMap.get(SBOP_SVC_KEI_STAYMD_KEY);
			String subSvcEndDtm  = (String)mailDataMap.get(SBOP_SVC_KEI_ENDYMD_KEY);
			String subSvcStet    = (String)mailDataMap.get(JBSbatKK_T_SBOP_SVC_KEI.SBOP_SVC_KEI_STAT);

			if((svcStaDtm != null && JPCUtilCommon.isFutureDate(sysDate, svcStaDtm, JCRStrConst.SAME_DAY_FLG_TRUE))
				&& (svcEndDtm == null || JPCUtilCommon.isPastDate(sysDate, svcEndDtm, JCRStrConst.SAME_DAY_FLG_TRUE))
				&& JCRStrConst.CD_DIV_MK_FLG_YUKO.equals(opMkFlg)
				&& (subSvcStaDtm != null && JPCUtilCommon.isFutureDate(sysDate, subSvcStaDtm, JCRStrConst.SAME_DAY_FLG_TRUE))
				&& (subSvcEndDtm == null || JPCUtilCommon.isPastDate(sysDate, subSvcEndDtm, JCRStrConst.SAME_DAY_FLG_TRUE))
				&& JCRStrConst.CD_DIV_MK_FLG_YUKO.equals(subOpSvcMkFlg)
				&& JCRStrConst.CD_DIV_MK_FLG_YUKO.equals(subOpIspmkFlg)
				&& (JCRStrConst.CD_DIV_SVC_STAT_UKTKZUMI.equals(subSvcStet)
					|| JCRStrConst.CD_DIV_SVC_STAT_SHOSZUMI.equals(subSvcStet)
					|| JCRStrConst.CD_DIV_SVC_STAT_TOKETUZUMI.equals(subSvcStet)
					|| JCRStrConst.CD_DIV_SVC_STAT_SVCTEIKYO.equals(subSvcStet)))
			{
				// ■有効メールアドレス
				return true;
			}
			else
			{
				// ■無効メールアドレス
				return false;
			}
		}
	}

	/**
	 * Abuse抽出結果ファイル出力
	 * @param abuseFilePath		Abuse抽出結果ファイルディレクトリ
	 * @param dataList			Abuse抽出結果データ
	 * @return Abuse出力用リスト
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	private List<String> abuseDataSet(List<Map<String, Object>> dataList) throws Exception
	{
		List<String> resultList = new ArrayList<String>();
		int count = 1;

		for(int i = 0; i < dataList.size(); i++)
		{
			Map<String, Object> abuseMap = dataList.get(i);

			String kubunFlg = (String)abuseMap.get(KUBUNFLG_KEY);
			String ninshoId = (String)abuseMap.get(NINSHOID_KEY);

			StringBuilder strBuilder = new StringBuilder();
			super.logPrint.printDebugLog(" 認証ID：" + ninshoId + ">");

			// 出力対象外メールの場合
			if(KUBUNFLG_TAISHOGAI.equals(kubunFlg))
			{
				// Abuse抽出データをファイルに出力しないため、次の行の処理を行う。
				super.logPrint.printDebugLog(" 出力対象外 ");
			}
			else
			{
				// ■無効認証ID
				if(KUBUNFLG_MUKOUID.equals(kubunFlg))
				{
					// 1項目:通し番号
					strBuilder.append(quateStr(String.valueOf(count), KANMAFLG_HUYO_ARI));
					// 2項目:氏名 - 空文字
					strBuilder.append(quateStr("", KANMAFLG_HUYO_ARI));
					// 3項目:サービス契約 - 空文字
					strBuilder.append(quateStr("", KANMAFLG_HUYO_ARI));
					// 4項目:お客様ID - 空文字
					strBuilder.append(quateStr("", KANMAFLG_HUYO_ARI));
					// 5項目:認証ID
					strBuilder.append(quateStr(ninshoId, KANMAFLG_HUYO_ARI));
					// 6項目:メールアドレス - 空文字
					strBuilder.append(quateStr("", KANMAFLG_HUYO_ARI));
					// 7項目:メールアドレス利用開始日 - 空文字
					strBuilder.append(quateStr("", KANMAFLG_HUYO_ARI));
					// 8項目:契約状態 - 空文字
					strBuilder.append(quateStr("", KANMAFLG_HUYO_NASI));

					// リストに格納
					resultList.add(strBuilder.toString());
					// カウントアップ
					count++;

					super.logPrint.printDebugLog(" 無効認証ID ");
				}
				// ■無効サービス契約番号
				else if(KUBUNFLG_MUKOSVCKEINO.equals(kubunFlg))
				{
					// 1項目:通し番号
					strBuilder.append(quateStr(String.valueOf(count), KANMAFLG_HUYO_ARI));
					// 2項目:氏名 - 空文字
					strBuilder.append(quateStr("", KANMAFLG_HUYO_ARI));
					// 3項目:サービス契約 - 空文字
					strBuilder.append(quateStr("", KANMAFLG_HUYO_ARI));
					// 4項目:お客様ID - サービス契約番号
					strBuilder.append(quateStr((String)abuseMap.get(JBSbatKK_T_SVC_KEI.SVC_KEI_NO), KANMAFLG_HUYO_ARI));
					// 5項目:認証ID
					strBuilder.append(quateStr(ninshoId, KANMAFLG_HUYO_ARI));
					// 6項目:メールアドレス - 空文字
					strBuilder.append(quateStr("", KANMAFLG_HUYO_ARI));
					// 7項目:メールアドレス利用開始日 - 空文字
					strBuilder.append(quateStr("", KANMAFLG_HUYO_ARI));
					// 8項目:契約状態 - 空文字
					strBuilder.append(quateStr("", KANMAFLG_HUYO_NASI));

					// リストに格納
					resultList.add(strBuilder.toString());
					// カウントアップ
					count++;
					
					super.logPrint.printDebugLog(" 無効サービス契約番号 ");
				}
				// ■出力対象メールアドレス
				else if(KUBUNFLG_TAISHO.equals(kubunFlg))
				{
					super.logPrint.printDebugLog(" (出力対象メールアドレス) ");
					// メール情報リストを取得
					List<Map<String, String>> mailDataList = (List<Map<String, String>>)abuseMap.get(ABUSE_MAILDATALIST_KEY);

					// メール情報リストの件数分出力用データを格納する。
					for(int j = 0; j < mailDataList.size(); j++)
					{
						Map<String, String> mailMap = (Map<String, String>)mailDataList.get(j);
						strBuilder = new StringBuilder();
						String mailFlg = (String)mailMap.get(MAILFLG);

						// 有効/無効メールアドレスフラグ取得
						String yukoFlg = (String)mailMap.get(KUBUNFLG_KEY);

						// ■無効メールアドレス
						if(KUBUNFLG_MUKOMAIL.equals(yukoFlg))
						{
							super.logPrint.printDebugLog(" 無効メールアドレス ");

							// 1項目:通し番号
							strBuilder.append(quateStr(String.valueOf(count), KANMAFLG_HUYO_ARI));
							// 2項目:氏名 - お客様名
							strBuilder.append(quateStr((String)abuseMap.get(JBSbatCK_T_CUST.CUST_NM), KANMAFLG_HUYO_ARI));
							// 3項目:サービス契約 - 料金グループ名
							strBuilder.append(quateStr((String)abuseMap.get(JBSbatKK_M_PRC_GRP.PRC_GRP_NM), KANMAFLG_HUYO_ARI));
							// 4項目:お客様ID - サービス契約番号
							strBuilder.append(quateStr((String)abuseMap.get(JBSbatKK_T_SVC_KEI.SVC_KEI_NO), KANMAFLG_HUYO_ARI));
							// 5項目:認証ID
							strBuilder.append(quateStr(ninshoId, KANMAFLG_HUYO_ARI));

							// オプションサービス契約<ISP>からメールを取得した場合
							// 6項目:メールアドレス
							if(MAILFLG_SVCISP.equals(mailFlg))
							{
								strBuilder.append(quateStr((String)mailMap.get(JBSbatKK_T_OPSVKEI_ISP.MLAD), KANMAFLG_HUYO_ARI));
								super.logPrint.printDebugLog(" メールアドレス: " + (String)mailMap.get(JBSbatKK_T_OPSVKEI_ISP.MLAD) + " > ");
							}
							// サブオプションサービス契約<ISP>からメールを取得した場合
							else
							{
								strBuilder.append(quateStr((String)mailMap.get(JBSbatKK_T_SBOPSVKEI_ISP.ALIAS), KANMAFLG_HUYO_ARI));
								super.logPrint.printDebugLog(" メールアドレス(エイリアス): " + (String)mailMap.get(JBSbatKK_T_SBOPSVKEI_ISP.ALIAS) + " > ");								
							}
							// 7項目:メールアドレス利用開始日
							// 無効メールアドレスなので、メールアドレス利用開始日は空文字。
							strBuilder.append(quateStr("", KANMAFLG_HUYO_ARI));

							// 8項目:契約状態
							strBuilder.append(quateStr((String)abuseMap.get(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM), KANMAFLG_HUYO_NASI));

							// リストに格納
							resultList.add(strBuilder.toString());
							// カウントアップ
							count++;
						}
						// ■有効メールアドレス
						else
						{
							super.logPrint.printDebugLog(" 有効メールアドレス ");

							// 1項目:通し番号
							strBuilder.append(quateStr(String.valueOf(count), KANMAFLG_HUYO_ARI));
							// 2項目:氏名 - お客様名
							strBuilder.append(quateStr((String)abuseMap.get(JBSbatCK_T_CUST.CUST_NM), KANMAFLG_HUYO_ARI));
							// 3項目:サービス契約 - 料金グループ名
							strBuilder.append(quateStr((String)abuseMap.get(JBSbatKK_M_PRC_GRP.PRC_GRP_NM), KANMAFLG_HUYO_ARI));
							// 4項目:お客様ID - サービス契約番号
							strBuilder.append(quateStr((String)abuseMap.get(JBSbatKK_T_SVC_KEI.SVC_KEI_NO), KANMAFLG_HUYO_ARI));

							// 5項目:認証ID
							strBuilder.append(quateStr(ninshoId, KANMAFLG_HUYO_ARI));

							// オプションサービス契約<ISP>からメールを取得した場合
							// 6項目:メールアドレス
							if(MAILFLG_SVCISP.equals(mailFlg))
							{
								strBuilder.append(quateStr((String)mailMap.get(JBSbatKK_T_OPSVKEI_ISP.MLAD), KANMAFLG_HUYO_ARI));
								super.logPrint.printDebugLog(" メールアドレス: " + (String)mailMap.get(JBSbatKK_T_OPSVKEI_ISP.MLAD) + " > ");
							}
							// サブオプションサービス契約<ISP>からメールを取得した場合
							else
							{
								strBuilder.append(quateStr((String)mailMap.get(JBSbatKK_T_SBOPSVKEI_ISP.ALIAS), KANMAFLG_HUYO_ARI));
								super.logPrint.printDebugLog(" メールアドレス(エイリアス): " + (String)mailMap.get(JBSbatKK_T_SBOPSVKEI_ISP.ALIAS) + " > ");								
							}
							// 7項目:メールアドレス利用開始日
							// 有効メールアドレスの場合、メールアドレス利用開始日を出力する。
							strBuilder.append(quateStr(JPCUtilCommon.formatDate((String)mailMap.get(JBSbatKK_T_SBOP_SVC_KEI.SVC_STAYMD)), KANMAFLG_HUYO_ARI));
							// 8項目:契約状態
							strBuilder.append(quateStr((String)abuseMap.get(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM), KANMAFLG_HUYO_NASI));

							// リストに格納
							resultList.add(strBuilder.toString());
							// カウントアップ
							count++;
						}
					}
				}
			}
		}

		return resultList;
	}

	/**
	 * Abuse抽出結果ファイル出力
	 * @param fileName			Abuse抽出結果ファイル名
	 * @param dataList			Abuse抽出結果データ
	 * @return Abuse出力行数
	 * @throws Exception 例外
	 */
	private int createAbuseFile(String fileName, List<String> dataList) throws Exception
	{

		// 問合せ履歴ファイル作成
		JBSbatBusinessFileUtil abuseFileObj =
			JCRBatCommon.createBusinessFileUtil(fileName, JCRStrConst.MOJI_CD_MS932, JCRStrConst.KAIGYO_CD, "");

		try
		{
			super.logPrint.printDebugLog("Abuse抽出結果ファイル作成:" + fileName);
			// 出力データ作成
			for(int i = 0; i < dataList.size(); i++)
			{
				// 一行分のAbuse抽出データ
				String toiawaseData =  dataList.get(i);

				// 問合せ履歴ファイルに問合せ履歴データ書き込む
				JCRBatCommon.printBusinessFileUtil(abuseFileObj, toiawaseData);
			}
		}
		finally
		{
			// ファイルオブジェクトのクローズ
			JCRBatCommon.closeBusinessFileUtil(abuseFileObj);
			super.logPrint.printDebugLog("Abuse抽出結果ファイルオブジェクトクローズ処理実行");
		}
		return dataList.size();
	}

	/**
	 * 電子ファイル管理テーブル登録<br>
	 * Abuse抽出結果ファイルを電子ファイル管理テーブルに登録
	 * @param commonItem バッチ共通パラメータ電文
	 * @param abuseFileName Abuse抽出結果ファイル名
	 * @throws Exception 例外
	 */
	private void entryAbuseFile(JBSbatCommonItem commonItem, String abuseFileName) throws Exception
	{
		String[] fileData = JCRBatCommon.createDenshiFile(commonItem, null, abuseFileName, null);
		// 電子ファイル管理番号取得
		String denshiKanriNo = fileData[0];
		// 対応履歴電子ファイル管理テーブル登録
		entryTaioBunsho(denshiKanriNo, abuseFileName);
		// Abuse抽出結果ファイル削除
		File abuseFile = new File(JCRUtilCommon.inspection(abuseFileName));
		abuseFile.delete();
		super.logPrint.printDebugLog("取込元CSVファイル配置パス:" + abuseFileName + "ファイルを削除");
	}

	/**
	 * 対応履歴電子ファイル管理テーブル登録<br>
	 * Abuse抽出結果ファイルの情報を対応履歴電子ファイル管理テーブルに登録<br>
	 * @param denshiKanriNo 電子対応記録番号
	 * @param failePath 登録対象ファイルパス
	 * @throws Exception 例外
	 */
	private void entryTaioBunsho(String denshiKanriNo, String failePath) throws Exception
	{
		Map<String, String> dataMap = new HashMap<String, String>();

		// 文書種別コード
		dataMap.put(JBSbatCR_T_TORK_EFILE_KNRI.BUNSHO_SBT_CD, JCRStrConst.CD_DIV_BUNSHO_SBT_CD_ABUSE);

		// 電子ファイル管理番号
		dataMap.put(JBSbatCR_T_TORK_EFILE_KNRI.EFILE_KANRI_NO, denshiKanriNo);

		// 対応履歴文書ファイル名
		dataMap.put(JBSbatCR_T_TORK_EFILE_KNRI.TAIORRKI_BUNSHO_FILE_NM, new File(JCRUtilCommon.inspection(failePath)).getName());

		JCRBatCommon.entryTaioBunsho(commonItem, dataMap);
		super.logPrint.printDebugLog("対応履歴電子ファイル管理、電子ファイル管理テーブル登録");
		super.logPrint.printDebugLog("電子ファイル管理番号:" + denshiKanriNo);
		super.logPrint.printDebugLog("ファイル名:" + failePath);
	}

	/**
	 * エラーファイル作成
	 * @param toiawaseFilePath	問合せ履歴ファイルディレクトリ
	 * @param errList	エラーリスト
	 * @return エラーファイル名
	 * @throws Exception 例外
	 */
	private String entryErrFile(String toiawaseFilePath, List<String> errList) throws Exception
	{
		String errFileName = toiawaseFilePath;
		errFileName = errFileName + JCRStrConst.FILE_KUGIRI + ERROR_FILENAME + sysDateTime + ".TXT";
		JCRBatCommon.entryErrFileData(commonItem, errFileName, errList);

		return errFileName;
	}

	/**
	 * エラーメッセージ作成処理(行数有り)
	 * @param line	エラー行数
	 * @param msgId		メッセージID
	 * @param chikanMoji	置換文字列
	 * @return エラーメッセージ
	 * @throws Exception 例外
	 */
	private String setErrMsg(int line, String msgId, String[] chikanMoji) throws Exception
	{

		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		// エラーメッセージ作成
		String lineMsg = line + "行目:";
		String errMsg = JBSbatLogPrintControl.getMessage(msgId, chikanMoji);

		super.logPrint.printBusinessErrorLog(msgId, chikanMoji);
		logData.append(lineMsg);
		logData.append(errMsg);

		return logData.toString();
	}

	/**
	 * エラーメッセージ作成処理(行数なし)
	 * @param msgId		メッセージID
	 * @param chikanMoji	置換文字列
	 * @return エラーメッセージ
	 * @throws Exception 例外
	 */
	private String setErrMsg(String msgId, String[] chikanMoji) throws Exception
	{
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		// エラーメッセージ作成
		String errMsg = JBSbatLogPrintControl.getMessage(msgId, chikanMoji);

		super.logPrint.printBusinessErrorLog(msgId, chikanMoji);
		logData.append(errMsg);
		logData.append(JCRStrConst.KAIGYO_CD);

		return logData.toString();
	}

	/**
	 * ダブルクォーテーション付与処理
	 * @param targetStr		対象文字列
	 * @param kanmaFlg		カンマ付与フラグ
	 * @return 付与後文字列
	 * @throws Exception 例外
	 */
	private String quateStr(String targetStr, String kanmaFlg) throws Exception
	{
		String rtnMoji = "\"" + targetStr + "\"";

		if(KANMAFLG_HUYO_ARI.equals(kanmaFlg))
		{
			rtnMoji = rtnMoji + ",";
		}

		return rtnMoji;
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_SVKEIUW_EOADSL.close();
		db_KK_T_SVKEIUW_EOH_NET.close();
		db_KK_T_SVKEIUW_EOMOBA.close();
		db_KK_T_SVC_KEI_EOH_TEL.close();
		db_KK_T_OPSVKEI_ISP.close();
		db_KK_T_OP_SVC_KEI.close();
		db_KK_T_SVC_KEI_UCWK.close();
		db_KK_T_SVC_KEI.close();
		db_KK_M_PRC_GRP.close();
		db_CK_T_CUST.close();
		db_KK_T_SBOP_SVC_KEI.close();
		db_KK_T_SBOPSVKEI_ISP.close();
		db_CR_T_TORK_EFILE_KNRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/

		// データアクセスオブジェクトクローズ
		JCRBatCommon.closeDataAccessObj(commonItem);

	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(CR_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	ADSL認証ID
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVKEIUW_EOADSL_CR_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVKEIUW_EOADSL.selectBySqlDefine(paramList, KK_T_SVKEIUW_EOADSL_CR_SELECT_001);
	}

	/**
	 * SQLKEY(CR_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	ISP認証ID
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVKEIUW_EOH_NET_CR_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVKEIUW_EOH_NET.selectBySqlDefine(paramList, KK_T_SVKEIUW_EOH_NET_CR_SELECT_001);
	}

	/**
	 * SQLKEY(CR_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	UQ認証ID
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVKEIUW_EOMOBA_CR_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVKEIUW_EOMOBA.selectBySqlDefine(paramList, KK_T_SVKEIUW_EOMOBA_CR_SELECT_001);
	}

	/**
	 * SQLKEY(CR_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	PPP認証ID
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_EOH_TEL_CR_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_EOH_TEL.selectBySqlDefine(paramList, KK_T_SVC_KEI_EOH_TEL_CR_SELECT_001);
	}

	/**
	 * SQLKEY(CR_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	認証ID
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_OPSVKEI_ISP_CR_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_OPSVKEI_ISP.selectBySqlDefine(paramList, KK_T_OPSVKEI_ISP_CR_SELECT_001);
	}

	/**
	 * SQLKEY(CR_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_OP_SVC_KEI_CR_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());

		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_CR_SELECT_001);
	}

	/**
	 * SQLKEY(CR_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_UCWK_CR_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_CR_SELECT_001);
	}

	/**
	 * SQLKEY(CR_SELECT_016)で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_CR_SELECT_016(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());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_CR_SELECT_016);
	}

	/**
	 * SQLKEY(CR_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_M_PRC_GRP_CR_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_M_PRC_GRP.selectBySqlDefine(paramList, KK_M_PRC_GRP_CR_SELECT_001);
	}

	/**
	 * SQLKEY(CR_SELECT_004)で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 executeCK_T_CUST_CR_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_CR_SELECT_004);
	}

	/**
	 * SQLKEY(CR_SELECT_002)で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_OP_SVC_KEI_CR_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_CR_SELECT_002);
	}

	/**
	 * SQLKEY(CR_SELECT_002)で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_OPSVKEI_ISP_CR_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_OPSVKEI_ISP.selectBySqlDefine(paramList, KK_T_OPSVKEI_ISP_CR_SELECT_002);
	}

	/**
	 * SQLKEY(CR_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_SBOP_SVC_KEI_CR_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_SBOP_SVC_KEI.selectBySqlDefine(paramList, KK_T_SBOP_SVC_KEI_CR_SELECT_001);
	}

	/**
	 * SQLKEY(CR_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_SBOPSVKEI_ISP_CR_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SBOPSVKEI_ISP.selectBySqlDefine(paramList, KK_T_SBOPSVKEI_ISP_CR_SELECT_001);
	}

	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
