/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCRTawsMailTrkm
*	ソースファイル名	：JBSbatCRTawsMailTrkm.java
*	作成者				：富士通　
*	作成日				：2011年07月01日
*＜機能概要＞
*　問合せメール取込処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/01   富士通		新規作成
*				2013/01/17	富士通		ANK-1245-00-00 機種依存文字対応
*	v6.00.00	2013/08/25	FJ）斉藤(諭)	OM-2013-0000519対応
*	v6.00.01	2013/08/31	FJ）斉藤(諭)	OM-2013-0001243対応
*	v6.00.02	2013/09/03	FJ）斉藤(諭)	OM-2013-0001566対応
*	v6.00.03	2013/09/18	FJ）斉藤(諭)	OM-2013-0002264対応
*	v6.00.04	2013/11/11	FJ）斉藤(諭)	OM-2013-0004199対応
*	v6.00.05	2013/11/26	FJ）斉藤(諭)	ANK-1637-00-00対応
*	v15.00.00	2015/08/18	FJ）坂本		OM-2015-0002040対応 メッセージID変更
*	v26.00.00	2016/08/17	FJ）舘山		ANK-2924-00-00_(客A)メール受信時の対応履歴追加処理廃止
*	v29.00.00	2017/02/10	FJ) 笠川		ANK-2928-00-00 お客さま申告アドレスの複数登録
*	v41.00.00	2019/05/22	FJ) 美濃原		ANK-3633-00-00 問合わせメールのヘッダ文字コード読み込み対応
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCRBatCommon;
import eo.business.util.table.JBSbatCC_T_MAIL_RCV;
import eo.business.util.table.JBSbatCC_T_MLAD;
import eo.business.util.table.JBSbatCC_T_TEMP_FILE;
import eo.business.util.table.JBSbatCK_T_PROSCST;
import eo.business.util.table.JBSbatCR_T_QUE_BOX;
import eo.business.util.table.JBSbatCR_T_TAIOKRK_DTL;
import eo.business.util.table.JBSbatCR_T_TAIO_KIROK;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatZM_M_WKKBT_ORG;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JCRUtilCommon;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;

/**
* 問合せメール取込処理 <p>
*<BR>
* @author 富士通
*/
public class JBSbatCRTawsMailTrkm extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** テーブル(メール受信)*/
	private static final String D_TBL_NAME_CC_T_MAIL_RCV = "CC_T_MAIL_RCV";

	/** テーブル(対応記録)*/
	private static final String D_TBL_NAME_CR_T_TAIO_KIROK = "CR_T_TAIO_KIROK";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(問合せ客)*/
	private static final String D_TBL_NAME_CK_T_PROSCST = "CK_T_PROSCST";

	/** テーブル(キューＢＯＸ)*/
	private static final String D_TBL_NAME_CR_T_QUE_BOX = "CR_T_QUE_BOX";

	/** テーブル(メールアドレス)*/
	private static final String D_TBL_NAME_CC_T_MLAD = "CC_T_MLAD";

	/** テーブル(対応記録明細)*/
	private static final String D_TBL_NAME_CR_T_TAIOKRK_DTL = "CR_T_TAIOKRK_DTL";

	/** テーブル(対応記録内訳)*/
	private static final String D_TBL_NAME_CR_T_TAIOKRK_UCWK = "CR_T_TAIOKRK_UCWK";

	/** テーブル(対応記録内訳カテゴリー)*/
	private static final String D_TBL_NAME_CR_T_TAIOKRK_UW_CTGR = "CR_T_TAIOKRK_UW_CTGR";

	/** テーブル(添付ファイル)*/
	private static final String D_TBL_NAME_CC_T_TEMP_FILE = "CC_T_TEMP_FILE";

	/** テーブル(対応履歴電子ファイル管理)*/
	private static final String D_TBL_NAME_CR_T_TORK_EFILE_KNRI = "CR_T_TORK_EFILE_KNRI";

	/** SQL定義キー(CR_SELECT_002)*/
	private static final String ZM_M_WORK_PARAM_KNRI_CR_SELECT_002 = "CR_SELECT_002";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String CC_T_MAIL_RCV_CR_SELECT_001 = "CR_SELECT_001";

	/** SQL定義キー(CR_SELECT_014)*/
	private static final String CR_T_TAIO_KIROK_CR_SELECT_014 = "CR_SELECT_014";

	/** SQL定義キー(CR_SELECT_004)*/
	private static final String KK_T_SVC_KEI_CR_SELECT_004 = "CR_SELECT_004";

	/** SQL定義キー(CR_SELECT_005)*/
	private static final String KK_T_SVC_KEI_CR_SELECT_005 = "CR_SELECT_005";

	/** SQL定義キー(CR_SELECT_006)*/
	private static final String KK_T_SVC_KEI_CR_SELECT_006 = "CR_SELECT_006";

	/** SQL定義キー(CR_SELECT_007)*/
	private static final String KK_T_SVC_KEI_CR_SELECT_007 = "CR_SELECT_007";

	/** SQL定義キー(CR_SELECT_008)*/
	private static final String KK_T_SVC_KEI_CR_SELECT_008 = "CR_SELECT_008";

	/** SQL定義キー(CR_SELECT_009)*/
	private static final String KK_T_SVC_KEI_CR_SELECT_009 = "CR_SELECT_009";

	/** SQL定義キー(CR_SELECT_010)*/
	private static final String KK_T_SVC_KEI_CR_SELECT_010 = "CR_SELECT_010";

	/** SQL定義キー(CR_SELECT_011)*/
	private static final String KK_T_SVC_KEI_CR_SELECT_011 = "CR_SELECT_011";

	/** SQL定義キー(CR_SELECT_012)*/
	private static final String KK_T_SVC_KEI_CR_SELECT_012 = "CR_SELECT_012";

	/** SQL定義キー(CR_SELECT_013)*/
	private static final String KK_T_SVC_KEI_CR_SELECT_013 = "CR_SELECT_013";

	/** SQL定義キー(CR_SELECT_014)*/
	private static final String KK_T_SVC_KEI_CR_SELECT_014 = "CR_SELECT_014";

	/** SQL定義キー(CR_SELECT_002)*/
	private static final String CK_T_PROSCST_CR_SELECT_002 = "CR_SELECT_002";

	/** SQL定義キー(CR_SELECT_003)*/
	private static final String CK_T_PROSCST_CR_SELECT_003 = "CR_SELECT_003";

	/** SQL定義キー(CR_SELECT_004)*/
	private static final String CK_T_PROSCST_CR_SELECT_004 = "CR_SELECT_004";

	/** SQL定義キー(CR_SELECT_006)*/
	private static final String CR_T_QUE_BOX_CR_SELECT_006 = "CR_SELECT_006";

	/** SQL定義キー(CR_SELECT_019)*/
	private static final String CR_T_TAIO_KIROK_CR_SELECT_019 = "CR_SELECT_019";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String CC_T_MLAD_CR_SELECT_001 = "CR_SELECT_001";

	/** SQL定義キー(CR_UPDATE_003)*/
	private static final String CR_T_TAIO_KIROK_CR_UPDATE_003 = "CR_UPDATE_003";

	/** SQL定義キー(CR_SELECT_003)*/
	private static final String CC_T_TEMP_FILE_CR_SELECT_003 = "CR_SELECT_003";

	/** SQL定義キー(CR_UPDATE_001)*/
	private static final String CR_T_QUE_BOX_CR_UPDATE_001 = "CR_UPDATE_001";

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;

	/** テーブルアクセスクラス(メール受信)*/
	private JBSbatSQLAccess db_CC_T_MAIL_RCV = null;

	/** テーブルアクセスクラス(対応記録)*/
	private JBSbatSQLAccess db_CR_T_TAIO_KIROK = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(問合せ客)*/
	private JBSbatSQLAccess db_CK_T_PROSCST = null;

	/** テーブルアクセスクラス(キューＢＯＸ)*/
	private JBSbatSQLAccess db_CR_T_QUE_BOX = null;

	/** テーブルアクセスクラス(メールアドレス)*/
	private JBSbatSQLAccess db_CC_T_MLAD = null;

	/** テーブルアクセスクラス(対応記録明細)*/
	private JBSbatSQLAccess db_CR_T_TAIOKRK_DTL = null;

	/** テーブルアクセスクラス(対応記録内訳)*/
	private JBSbatSQLAccess db_CR_T_TAIOKRK_UCWK = null;

	/** テーブルアクセスクラス(対応記録内訳カテゴリー)*/
	private JBSbatSQLAccess db_CR_T_TAIOKRK_UW_CTGR = null;

	/** テーブルアクセスクラス(添付ファイル)*/
	private JBSbatSQLAccess db_CC_T_TEMP_FILE = null;

	/** テーブルアクセスクラス(対応履歴電子ファイル管理)*/
	private JBSbatSQLAccess db_CR_T_TORK_EFILE_KNRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 通常問合せメール受信アドレス(配列)
	 */
	private String[] tujyoMladArray = null;

	/**
	 * 他社メール受信アドレス(配列)
	 */
	private String[] tashaMladArray = null;

	/**
	 * Abuseメール受信アドレス(配列)
	 */
	private String[] abuseMladArray = null;

	/**
	 * 定型メール判定用ヘッダー項目名
	 */
	private String tikiMlHanteiHdrNm = null;

	/**
	 * 定型メール判定用ヘッダー項目値の先頭文字
	 */
	private String tikiMlHntiHdrValPfx = null;

	/**
	 * カテゴリー別キューBOX設定ファイルパス
	 */
	private String ctgrQueboxPath = null;

	/**
	 * カテゴリー別キューBOX設定Map
	 */
	Map<String, String> ctgrQueMap = null;

	/**
	 * 受信メールアドレス別キューBOX設定(配列)
	 */
	private String[] rcvMladQueArray = null;

	/**
	 * 受信メールアドレス別キューBOX設定Map
	 */
	private Map<String, String> rcvMladQueMap = null;

	/**
	 * 送信メールアドレス別キューBOX設定(配列)
	 */
	private String[] sndMladQueArray = null;

	/**
	 * 送信メールアドレス別キューBOX設定Map
	 */
	private Map<String, String> sndMladQueMap = null;

	/**
	 * 受信メールアドレス別「不明」キューBOX設定(配列)
	 */
	private String[] rcvMladHumeiQueArray = null;

	/**
	 * 受信メールアドレス別「不明」キューBOX設定Map
	 */
	private Map<String, String> rcvMladHumeiQueMap = null;

	/**
	 * 空問合せ客番号
	 */
	private String karaTiawsKyakuNo = null;

	/**
	 * 不明問合せ客番号
	 */
	private String humeiTiawsKyakuNo = null;

	/**
	 * メール作成者
	 */
	private String mailUser = null;

	/**
	 * NGワードのリスト
	 */
	private List<String> ngWordList = null;

	/**
	 * 文字変換設定のMap
	 * キー：ユニコード、値：変換後の文字
	 */
	private Map<String, String> mojiChgMap = new HashMap<String, String>();

	/**
	 * 処理済みMessage-IdのMap
	 * キー：Message-Id、値：メール受信番号
	 */
	private Map<String, String> messageIdMap = new HashMap<String, String>();

	/**
	 * 対応記録番号囲み文字(始め)
	 */
	private static final String TK_NO_KAKOMI_START = "【ID：";

	/**
	 * 対応記録番号囲み文字(終り)
	 */
	private static final String TK_NO_KAKOMI_END = "】";

	/**
	 * 件名初期値
	 */
	private static final String DEFAULT_TITLE = "<No Subject>";

	/**
	 * 加入状況フラグ　1:加入者
	 * (Webメール本文1行目)
	 */
	private static final String KANYU_FLG_KANYU = "1";

	/**
	 * サービス契約番号の先頭文字
	 */
	private static final String SVC_KEI_NO_PREFIX = "C";

	/**
	 * 契約順取得項目名
	 */
	private static final String KEIYAKU_JUN = "KEIYAKU_JUN";

	/**
	 * 件数取得項目名
	 */
	private static final String CNT = "CNT";

	/**
	 * Webメール本文の最低使用行数
	 */
	private static final int WEB_MAIL_MIN_ROWCOUNT = 7;

	/**
	 * 問合せ客番号の桁数
	 */
	private static final int KETA_TIAWS_KYAKU_NO = 10;

	/**
	 * 対応記録番号の桁数
	 */
	private static final int KETA_TAIO_KIROK_NO = 10;

	/**
	 * 対応履歴電子ファイル管理番号の桁数
	 */
	private static final int KETA_TORK_EFILE_KNRI_NO = 10;

	/**
	 * カテゴリーのバイト数
	 */
	private static final int CTGR_BYTE_SU = 160;

	/** 問合せ客名のバイト数 */
	private static final int TAWS_KYAKU_NM_BYTE_SU = 242;

	/** 問合せ客カナのバイト数 */
	private static final int TAWS_KYAKU_KANA_BYTE_SU = 242;

	/** UQ認証IDのバイト数 */
	private static final int UQ_NINSHOID_BYTE_SU = 30;

	/** メールヘッダー内年月日時分秒のバイト数 */
	private static final int MAIL_DTM_BYTE_SU = 14;

	/** 日付項目の最小値 */
	private static final String MIN_DATE = "00000000";

	/**
	 * 最大カテゴリー数
	 * Webメールタイトル用(ワークグループを除いた数)
	 */
	private static final int MAX_CTGR_COUNT = 10;

	/** メールヘッダー情報からMessage-Idを取得するためのキー */
	private static final String KEY_MESSAGE_ID = "MESSAGE-ID";

	/**
	 * メール受信ステータス　002：既読
	 */
	private static final String MAIL_RCV_STAT_KIDOKU = "002";

	/**
	 * メール受信ステータス　005：既読：不正文字有−問合せ未作成
	 */
	private static final String MAIL_RCV_STAT_KIDOKU_HUSEI = "005";

	/**
	 * メール受信ステータス　006：既読：不正文字有−問合せ作成（文字変換）
	 */
	private static final String MAIL_RCV_STAT_KIDOKU_HUSEI_HENKAN = "006";

	/**
	 * メール受信ステータス　007：既読：重複メール−問合せ未作成
	 */
	private static final String MAIL_RCV_STAT_KIDOKU_JYUHUKU = "007";

	/**
	 * チェック結果　0:OK
	 */
	private static final int CHK_RES_OK = 0;

	/**
	 * チェック結果　1:OK（変換あり）
	 */
	private static final int CHK_RES_OK_CHG = 1;

	/**
	 * チェック結果　2:NG
	 */
	private static final int CHK_RES_NG = 2;

	// ▼▼▼ ANK-3633-00-00 2019/05/22 ADD START ▼▼▼
	/** 項目 最大サイズ メールタイトル */
	private static final String MAX_MAIL_TITLE = "255";
	/** 項目 最大サイズ 対応記録内訳カテゴリー名 */
	private static final String MAX_SIZE_UWCTGRNM = "80";
	//▲▲▲ ANK-3633-00-00 2019/05/22 ADD END   ▲▲▲

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		db_CC_T_MAIL_RCV = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_MAIL_RCV);
		db_CR_T_TAIO_KIROK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TAIO_KIROK);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_CK_T_PROSCST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_PROSCST);
		db_CR_T_QUE_BOX = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_QUE_BOX);
		db_CC_T_MLAD = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_MLAD);
		db_CR_T_TAIOKRK_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TAIOKRK_DTL);
		db_CR_T_TAIOKRK_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TAIOKRK_UCWK);
		db_CR_T_TAIOKRK_UW_CTGR = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TAIOKRK_UW_CTGR);
		db_CC_T_TEMP_FILE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_TEMP_FILE);
		db_CR_T_TORK_EFILE_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TORK_EFILE_KNRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

		// プロパティーチェック
		checkProperty();

		// 文字変換設定取得
		setMojiChgMap();

		// 通常問合せメール受信アドレス退避
		tujyoMladArray = JCRBatCommon.getApplicationConst("CR_TUJYO_MLAD").split(",");

		// 他社メール受信アドレス退避
		tashaMladArray = JCRBatCommon.getApplicationConst("CR_TASHA_MLAD").split(",");

		// Abuseメール受信アドレス退避
		abuseMladArray = JCRBatCommon.getApplicationConst("CR_ABUSE_MLAD").split(",");

		// カテゴリー別キューBOX設定Map生成
		createCtgrQueMap();

		// 「受信」メールアドレス別キューBOX設定Map生成
		createRcvMladQueMap();

		// 「送信」メールアドレス別キューBOX設定Map生成
		createSndMladQueMap();

		// 受信メールアドレス別「不明」キューBOX設定Map
		createRcvMladHumeiQueMap();

		// NGワードリスト生成
		ngWordList = JCRBatCommon.getNGWord(commonItem);

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * プロパティーチェック
	 * @throws Exception 例外
	 */
	private void checkProperty() throws Exception
	{
		// プロパティーチェック

		// 通常問合せメール受信アドレス
		String tujyoMlad = JCRBatCommon.getApplicationConst("CR_TUJYO_MLAD");
		if (tujyoMlad == null || "".equals(tujyoMlad.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_TUJYO_MLAD"});
		}
		super.logPrint.printDebugLog("通常問合せメール受信アドレス:" + tujyoMlad);

		// 他社メール受信アドレス
		String tashaMlad = JCRBatCommon.getApplicationConst("CR_TASHA_MLAD");
		if (tashaMlad == null || "".equals(tashaMlad.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_TASHA_MLAD"});
		}
		super.logPrint.printDebugLog("他社メール受信アドレス:" + tashaMlad);

		// Abuseメール受信アドレス
		String abuseMlad = JCRBatCommon.getApplicationConst("CR_ABUSE_MLAD");
		if (abuseMlad == null || "".equals(abuseMlad.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_ABUSE_MLAD"});
		}
		super.logPrint.printDebugLog("Abuseメール受信アドレス:" + abuseMlad);

		// 定型メール判定用ヘッダー項目名
		tikiMlHanteiHdrNm = JCRBatCommon.getApplicationConst("CR_TIKIML_HANTEI_HDR_NM");
		if (tikiMlHanteiHdrNm == null || "".equals(tikiMlHanteiHdrNm.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_TIKIML_HANTEI_HDR_NM"});
		}
		super.logPrint.printDebugLog("定型メール判定用ヘッダー項目名:" + tikiMlHanteiHdrNm);

		// 定型メール判定用ヘッダー項目値の先頭文字
		tikiMlHntiHdrValPfx = JCRBatCommon.getApplicationConst("CR_TIKIML_HANTEI_HDR_VAL_PRFX");
		if (tikiMlHntiHdrValPfx == null || "".equals(tikiMlHntiHdrValPfx.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_TIKIML_HANTEI_HDR_VAL_PRFX"});
		}
		super.logPrint.printDebugLog("定型メール判定用ヘッダー項目値の先頭文字:" + tikiMlHntiHdrValPfx);

		// カテゴリー別キューBOX設定ファイルパス
		ctgrQueboxPath = JCRBatCommon.getApplicationConst("CR_CTGR_QUEBOX_FILEPATH");
		if (ctgrQueboxPath == null || "".equals(ctgrQueboxPath.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_CTGR_QUEBOX_FILEPATH"});
		}
		File ctgrQueboxFile = new File(JCRUtilCommon.inspection(ctgrQueboxPath));
		if (ctgrQueboxFile.isFile() == false)
		{
			// 存在しない場合
			// ECRB0160KW:指定されたパスが存在しません。(%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0160KW, new String[]{ctgrQueboxPath});
		}
		super.logPrint.printDebugLog("カテゴリー別キューBOX設定ファイルパス:" + ctgrQueboxPath);

		// 受信メールアドレス別キューBOX設定
		String rcvMladQue = JCRBatCommon.getApplicationConst("CR_RCVMLAD_QUEBOX_MAP");
		if (rcvMladQue == null || "".equals(rcvMladQue.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_RCVMLAD_QUEBOX_MAP"});
		}
		rcvMladQueArray = rcvMladQue.split(",");

		for (int i = 0; i < rcvMladQueArray.length; i++)
		{
			String[] data = rcvMladQueArray[i].split(":");
			if (data == null || data.length != 2)
			{
				// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_RCVMLAD_QUEBOX_MAP"});
			}
		}
		super.logPrint.printDebugLog("受信メールアドレス別キューBOX設定:" + rcvMladQue);

		// 送信メールアドレス別キューBOX設定
		String sndMladQue = JCRBatCommon.getApplicationConst("CR_SNDMLAD_QUEBOX_MAP");
		if (sndMladQue == null || "".equals(sndMladQue.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_SNDMLAD_QUEBOX_MAP"});
		}
		sndMladQueArray = sndMladQue.split(",");

		for (int i = 0; i < sndMladQueArray.length; i++)
		{
			String[] data = sndMladQueArray[i].split(":");
			if (data == null || data.length != 2)
			{
				// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_SNDMLAD_QUEBOX_MAP"});
			}
		}
		super.logPrint.printDebugLog("送信メールアドレス別キューBOX設定:" + sndMladQue);

		// 受信メールアドレス別不明キューBOX設定
		String rcvMladHumeiQue = JCRBatCommon.getApplicationConst("CR_RCVMLAD_HUMEI_QUEBOX_MAP");
		if (rcvMladHumeiQue == null || "".equals(rcvMladHumeiQue.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_RCVMLAD_HUMEI_QUEBOX_MAP"});
		}
		rcvMladHumeiQueArray = rcvMladHumeiQue.split(",");

		for (int i = 0; i < rcvMladHumeiQueArray.length; i++)
		{
			String[] data = rcvMladHumeiQueArray[i].split(":");
			if (data == null || data.length != 2)
			{
				// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_SNDMLAD_QUEBOX_MAP"});
			}
		}
		super.logPrint.printDebugLog("受信メールアドレス別不明キューBOX設定:" + rcvMladHumeiQue);

		// 空問合せ客番号
		karaTiawsKyakuNo = JCRBatCommon.getApplicationConst("CR_KARA_TIAWSKYAKU_NO");
		if (karaTiawsKyakuNo == null || "".equals(karaTiawsKyakuNo.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_KARA_TIAWSKYAKU_NO"});
		}
		super.logPrint.printDebugLog("空問合せ客番号:" + karaTiawsKyakuNo);

		// 不明問合せ客番号
		humeiTiawsKyakuNo = JCRBatCommon.getApplicationConst("CR_HUMEI_TIAWSKYAKU_NO");
		if (humeiTiawsKyakuNo == null || "".equals(humeiTiawsKyakuNo.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_HUMEI_TIAWSKYAKU_NO"});
		}
		super.logPrint.printDebugLog("不明問合せ客番号:" + humeiTiawsKyakuNo);

		// メール作成者
		mailUser = JCRBatCommon.getApplicationConst("CR_MAIL_USER");
		if (mailUser == null || "".equals(mailUser.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_MAIL_USER"});
		}
		super.logPrint.printDebugLog("メール作成者:" + mailUser);
	}

	/**
	 * 文字変換設定情報を取得する
	 * @throws Exception 例外
	 */
	private void setMojiChgMap() throws Exception
	{
		// 業務パラメータから「メール文字変換」の設定を取得
		// ユニコード,変換後の文字　の形式で設定される
		String sysDate = JCRBatCommon.getSysDate();
		executeZM_M_WORK_PARAM_KNRI_CR_SELECT_002(new String[] {sysDate, sysDate});
		List<JBSbatCommonDBInterface> mojiChgList = JCRBatCommon.getSelectedDataList(db_ZM_M_WORK_PARAM_KNRI);
		if (mojiChgList != null)
		{
			for (int i = 0; i < mojiChgList.size(); i++)
			{
				JBSbatCommonDBInterface mojiChgData = mojiChgList.get(i);
				String mojiChgDef = mojiChgData.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE);
				if (mojiChgDef != null && !("".equals(mojiChgDef)))
				{
					String[] mojiChgDefArray = mojiChgDef.split(",");
					if (mojiChgDefArray != null)
					{
						if (2 == mojiChgDefArray.length || (1 == mojiChgDefArray.length && mojiChgDef.endsWith(",")))
						{
							String key = mojiChgDefArray[0].trim().toUpperCase();
							String value = null;
							if (2 == mojiChgDefArray.length)
							{
								value = mojiChgDefArray[1].trim();
							}
							if (key != null && !("".equals(key)))
							{
								if (value == null)
								{
									value = "";
								}
								mojiChgMap.put(key, value);
							}
						}
					}
				}
			}
		}
		StringBuilder mojiChgString = new StringBuilder();
		Set<String> keys = mojiChgMap.keySet();
		Iterator<String> it = keys.iterator();
		while (it.hasNext())
		{
			mojiChgString.append("[");
			String unicode = it.next();
			String chgString = mojiChgMap.get(unicode);
			mojiChgString.append(unicode);
			mojiChgString.append(",").append(chgString);
			mojiChgString.append("]");
		}
		// ECRB0440AI	%1%処理が正常終了しました。　%2%	1	1	0
		String[] param = new String[]{"文字変換設定情報取得", "文字変換設定：" + mojiChgString.toString()};
		super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECRB0440AI, param);
	}

	/**
	 * カテゴリー別キューBOX設定Map生成
	 * @throws Exception 例外
	 */
	private void createCtgrQueMap() throws Exception
	{
		ctgrQueMap = new HashMap<String, String>();

		try
		{
			List<List<String>> ctgrQueboxList = JCRUtilCommon.convCsvFiletoList(ctgrQueboxPath);

			if (ctgrQueboxList != null)
			{
				for (int i = 1; i < ctgrQueboxList.size(); i++)
				{
					// 1行目はヘッダであるため2行目から処理を行う
					List<String> ctgrQueDataList = ctgrQueboxList.get(i);
					StringBuilder ctgrKey = new StringBuilder(MAX_CTGR_COUNT * CTGR_BYTE_SU);
					String data = null;
					for (int j = 1; j < ctgrQueDataList.size(); j++)
					{
						// 1項目目はNoであるため2項目目から処理を行う
						String ctgrQueData = ctgrQueDataList.get(j);
						if (j <= MAX_CTGR_COUNT)
						{
							ctgrKey.append(JCRBatCommon.fillHalfSpace(ctgrQueData, CTGR_BYTE_SU, false));
						}
						if (j == (MAX_CTGR_COUNT + 1))
						{
							data = ctgrQueData;
						}
					}
					ctgrQueMap.put(ctgrKey.toString(), data);
				}
			}
			else
			{
				// ECRB0190KW	%1%の内容が正しくありません。（%2%）
				String[] param = new String[]{"カテゴリー別キューBOX設定ファイル", "不明キューが設定されます"};
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECRB0190KW, param);
			}
		}
		catch (IOException ioe)
		{
			// ECRB0190KW	%1%の内容が正しくありません。（%2%）
			String[] param = new String[]{"カテゴリー別キューBOX設定ファイル", "不明キューが設定されます"};
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECRB0190KW, param);
		}
		catch (IndexOutOfBoundsException ibe)
		{
			// ECRB0190KW	%1%の内容が正しくありません。（%2%）
			String[] param = new String[]{"カテゴリー別キューBOX設定ファイル", "不明キューが設定されます"};
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECRB0190KW, param);
		}
	}

	/**
	 * 「受信」メールアドレス別キューBOX設定Map生成
	 * @throws Exception 例外
	 */
	private void createRcvMladQueMap() throws Exception
	{
		rcvMladQueMap = new HashMap<String, String>();

		for (int i = 0; i < rcvMladQueArray.length; i++)
		{
			String[] data = rcvMladQueArray[i].trim().split(":");
			if (data != null && data.length >= 2)
			{
				rcvMladQueMap.put(data[0].trim(), data[1].trim());
			}
		}
	}

	/**
	 * 「送信」メールアドレス別キューBOX設定Map生成
	 * @throws Exception 例外
	 */
	private void createSndMladQueMap() throws Exception
	{
		sndMladQueMap = new HashMap<String, String>();

		for (int i = 0; i < sndMladQueArray.length; i++)
		{
			String[] data = sndMladQueArray[i].trim().split(":");
			if (data != null && data.length >= 2)
			{
				sndMladQueMap.put(data[0].trim(), data[1].trim());
			}
		}
	}

	/**
	 * 受信メールアドレス別「不明」キューBOX設定Map生成
	 * @throws Exception 例外
	 */
	private void createRcvMladHumeiQueMap() throws Exception
	{
		rcvMladHumeiQueMap = new HashMap<String, String>();

		for (int i = 0; i < rcvMladHumeiQueArray.length; i++)
		{
			String[] data = rcvMladHumeiQueArray[i].trim().split(":");
			if (data != null && data.length >= 2)
			{
				rcvMladHumeiQueMap.put(data[0].trim(), data[1].trim());
			}
		}

		// 通常問合せメール受信アドレス設定存在チェック
		for (int i = 0; i < tujyoMladArray.length; i++)
		{
			String mlad = tujyoMladArray[i];
			if (rcvMladHumeiQueMap.containsKey(mlad) == false)
			{
				// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_RCVMLAD_HUMEI_QUEBOX_MAP"});
			}
		}

		// 他社メール受信アドレス設定存在チェック
		for (int i = 0; i < tashaMladArray.length; i++)
		{
			String mlad = tashaMladArray[i];
			if (rcvMladHumeiQueMap.containsKey(mlad) == false)
			{
				// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_RCVMLAD_HUMEI_QUEBOX_MAP"});
			}
		}

		// Abuseメール受信アドレス設定存在チェック
		for (int i = 0; i < abuseMladArray.length; i++)
		{
			String mlad = abuseMladArray[i];
			if (rcvMladHumeiQueMap.containsKey(mlad) == false)
			{
				// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_RCVMLAD_HUMEI_QUEBOX_MAP"});
			}
		}
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		boolean existError = false;

		// 2-1.通常問合せメールの処理

		// (1) 通常問合せメールアドレス取得
		for (int i = 0; i < tujyoMladArray.length; i++)
		{
			// (2) 通常問合せメールアドレス1件読込
			String tujyoMlad = tujyoMladArray[i].trim();
			// 通常問合せメールアドレス1件の処理
			if (executeTujyoMail(tujyoMlad) == true)
			{
				// エラーがある場合
				existError = true;
			}
		}

		// 2-2.他社メールの処理

		// 他社メールアドレス取得
		for (int i = 0; i < tashaMladArray.length; i++)
		{
			// 他社メールアドレス1件読込
			String tashaMlad = tashaMladArray[i].trim();
			// 他社メールアドレス1件の処理
			if (executeTashaMail(tashaMlad) == true)
			{
				// エラーがある場合
				existError = true;
			}
		}

		// 2-3.Abuseメールの処理

		// Abuseメールアドレス取得
		for (int i = 0; i < abuseMladArray.length; i++)
		{
			// Abuseメールアドレス1件読込
			String abuseMlad = abuseMladArray[i].trim();
			// Abuseメールアドレス1件の処理
			if (executeAbuseMail(abuseMlad) == true)
			{
				// エラーがある場合
				existError = true;
			}
		}

		if (existError)
		{
// v15.00.00 OM-2015-0002040 MOD START
			// ECRB0190KW	%1%の内容が正しくありません。（%2%）
			// ECRB0450KI	%1%の内容が正しくありません。（%2%）
//			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0190KW,
//					new String[] {"メール", "使用できない文字が含まれています"});
			super.logPrint.printBusinessErrorLog("ECRB0450KI",
					new String[]{"メール", "使用できない文字が含まれています"});
// v15.00.00 OM-2015-0002040 MOD END
		}

		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 通常問合せメールの処理
	 * @param mlad 受信メールアドレス
	 * @return エラー有無 エラーがある場合true
	 * @throws Exception 例外
	 */
	private boolean executeTujyoMail(String mlad) throws Exception
	{
		boolean existError = false;

		super.logPrint.printDebugLog("■■■　通常問合せメールの処理　受信メールアドレス:" + mlad);

		// (3) 問合せメール受信データ取得
		// (通常問合せメール用受信メールアドレス(1件)に届いたメール取得)
		List<JBSbatCommonDBInterface> mailDataList = getMailData(mlad);

		boolean isWebMail = false;		// Webメール判定フラグ

		if (mailDataList != null)
		{
			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "通常メール受信件数(" + mlad + ")", mailDataList.size());

			// キューBOX番号と追加件数を格納するMap
			Map<String, Integer> queBoxCountMap = new HashMap<String, Integer>();

			// NGワード情報を格納するMap(NGワード検知メール送信用)
			//		キー:NGワード	値:詳細情報MapのList
			//							|
			//						キー:対応記録番号	値:タイトル
			//						キー:対応記録番号	値:タイトル
			//									・
			//									・
			Map<String, List<Map<String, String>>> ngWordData = new HashMap<String, List<Map<String, String>>>();

			for (int i = 0; i < mailDataList.size(); i++)
			{
				// (4) メール受信レコード1件読込
				JBSbatCommonDBInterface mailData = mailDataList.get(i);
				String mailRcvNo = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_RCV_NO);
				super.logPrint.printDebugLog("■■■　メール受信レコード1件読込　メール受信番号:" + mailRcvNo);

				// (5) メールヘッダー情報取得
				super.logPrint.printDebugLog("■■■　メールヘッダー情報取得");
				String mailHeaderIf = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_HEADER_IF);
				if (mailHeaderIf == null)
				{
					mailHeaderIf = "";
				}
				// メールヘッダー取得部品での処理のため改行コード調整
				mailHeaderIf = mailHeaderIf.replaceAll(JCRStrConst.KAIGYO_CD, "\n");
				mailHeaderIf = mailHeaderIf.replaceAll("\r", "\n");
				mailHeaderIf = mailHeaderIf.replaceAll("\n", System.getProperty("line.separator"));
				Map<String, String> mailHeaderMap = JCRBatCommon.getMailHeader(mailHeaderIf);

				// ------------------------------------------------------------
				// キーを全て大文字にしたメールヘッダー情報を作る
				// ※ メッセージIDのキーが「Message-Id」だったり「Message-ID」だったりするため
				Map<String, String> mailHeaderMapWork = getMailHeaderMapWork(mailHeaderMap);

				// 重複メールのチェック
				String messageId = mailHeaderMapWork.get(KEY_MESSAGE_ID);

				if (messageId != null && !("".equals(messageId)))
				{
					if (messageIdMap.containsKey(messageId))
					{
						// 同じMessage-Idのメールが既に処理されている場合

						String shorizumiMailRcvNo = messageIdMap.get(messageId);

						// ECRB0190KW	%1%の内容が正しくありません。（%2%）
						commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0190KW,
							new String[] {"メール", 
								"重複Message-Id　[メール受信番号:" + mailRcvNo + "]は" + "取得済みの[" + shorizumiMailRcvNo + "]とMessage-Idが一致するのでスキップしました。"});

						// メール受信更新 既読にする
						updateMailRcv(mailRcvNo, MAIL_RCV_STAT_KIDOKU_JYUHUKU);	// 007：既読：重複メール−問合せ未作成
						continue;
					}
				}

				// ------------------------------------------------------------

				// 文字形式チェック
				int chkRes = checkData(mailData);

				if (chkRes == CHK_RES_NG)
				{
					existError = true;

					// メール受信更新 既読にする
					updateMailRcv(mailRcvNo, MAIL_RCV_STAT_KIDOKU_HUSEI);	// 005：既読：不正文字有−問合せ未作成

					// エラーがある場合は次のメールを処理する
					continue;
				}

				// (6) Webメール判定
				isWebMail = isWebMail(mailHeaderMap);
				super.logPrint.printDebugLog("■■■　Webメール判定　isWebMail:" + isWebMail);

				JBSbatCommonDBInterface taioKirokData = null;		// 対応記録データ
				JBSbatCommonDBInterface custData = null;			// お客様データ
				JBSbatCommonDBInterface tiawsKyakuData = null;		// 問合せ客データ
				String svcKeiNo = null;								// サービス契約番号
				String tiawsKyakuNo = null;							// 問合せ客番号

				String title = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_TITLE);
				super.logPrint.printDebugLog("メール受信タイトル:" + title);
				if (isWebMail == false)
				{
					super.logPrint.printDebugLog("■Webメールでない場合");
					super.logPrint.printDebugLog("■■■　対応記録検索");
					// (7) 対応記録検索
					// (7)-(a) 対応記録番号取得
					String taioKirokNo = getTaioKirokNoFromMail(mailHeaderMap, title);

					if (taioKirokNo != null)
					{
						super.logPrint.printDebugLog("■メールタイトル・ヘッダーから対応記録番号が取得できた場合");
						// (7)-(b) 対応記録テーブル検索
						taioKirokData = getTaioKirokData(taioKirokNo);

						if (taioKirokData != null)
						{
							svcKeiNo = taioKirokData.getString(JBSbatCR_T_TAIO_KIROK.SVC_KEI_NO);		// (登録済)対応記録データのサービス契約番号
							tiawsKyakuNo = taioKirokData.getString(JBSbatCR_T_TAIO_KIROK.PROSCST_NO);	// (登録済)対応記録データの問合せ客番号
							super.logPrint.printDebugLog("■(登録済)対応記録のサービス契約番号:" + svcKeiNo);
							super.logPrint.printDebugLog("■(登録済)対応記録の問合せ客番号:" + tiawsKyakuNo);
						}
					}
				}

				List<String> webMailHonbunList = null;		// Webメール本文格納用List
				if (isWebMail)
				{
					String honbun = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_TEXT);
					// Webメールの本文List生成
					webMailHonbunList = getWebMailHonbunList(honbun);
					super.logPrint.printDebugLog("■Webメール本文1行目の加入状況フラグ:" + webMailHonbunList.get(0));
				}

				if (isWebMail && KANYU_FLG_KANYU.equals(webMailHonbunList.get(0)))
				{
					// Webメール本文1行目の加入状況フラグが「加入者」である場合
					// (8) Webメールのお客様検索
					super.logPrint.printDebugLog("■■■　Webメールのお客様検索");
					custData = searchCustForWebMail(webMailHonbunList);
				}

				if (taioKirokData == null && custData == null)
				{
					// 対応記録データもお客様データも取得できていない場合
					super.logPrint.printDebugLog("■対応記録データもお客様データも取得できていない場合");
					// (9) メールアドレスからお客様検索
					super.logPrint.printDebugLog("■■■　メールアドレスからお客様検索");
					custData = searchCustByMlad(isWebMail, mailData, webMailHonbunList);
				}

				if (custData != null)
				{
					// お客様データからサービス契約番号取得
					String skNo = custData.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO);
					if (skNo != null && !"".equals(skNo.trim()))
					{
						svcKeiNo = skNo;
					}
				}

				if (isWebMail && (custData == null))
				{
					super.logPrint.printDebugLog("■Webメールでお客様情報が取得されなかった場合");
					// (10) Webメールの問合せ客検索
					super.logPrint.printDebugLog("■■■　Webメールの問合せ客検索");
					// Webメール本文5行目(申告メールアドレス)で検索
					tiawsKyakuData = searchTiawsKyakuForWebMail(webMailHonbunList.get(4));
				}

				if (isWebMail == false && svcKeiNo == null && custData == null)
				{
					super.logPrint.printDebugLog("■Webメールでない場合");
					// (11) Webメールでない場合の問合せ客検索
					super.logPrint.printDebugLog("■■■　Webメールでない場合の問合せ客検索");
					tiawsKyakuNo = searchTiawsKyakuForNotWebMail(tiawsKyakuNo, mailData.getString(JBSbatCC_T_MLAD.MLAD));
				}

				if (isWebMail && custData == null)
				{
					super.logPrint.printDebugLog("■Webメールの場合かつお客様データが取得できなかった場合");
					// (12) 問合せ客登録・更新
					super.logPrint.printDebugLog("■■■　問合せ客登録・更新");
					tiawsKyakuNo = entryOrUpdateTiawsKyaku(tiawsKyakuData, webMailHonbunList);
				}

				// (13) キューBOX判定
				super.logPrint.printDebugLog("■■■　キューBOX判定");
				String queBoxNo = null;
				if (isWebMail)
				{
					super.logPrint.printDebugLog("■Webメールの場合");
					// メールタイトルからキューBOX取得
					queBoxNo = getQueBoxNoFromTitle(title);
				}
				else
				{
					super.logPrint.printDebugLog("■Webメールでない場合");
// ▼▼▼ ANK-2924-00-00 2016/08/17 DEL START ▼▼▼
//					if (taioKirokData == null)
//					{
// ▲▲▲ ANK-2924-00-00 2016/08/17 DEL END   ▲▲▲
						// (13)-(c) キューBOX番号取得
						// (受信メールアドレス別キューBOX設定Mapから)
						super.logPrint.printDebugLog("■■■　キューBOX番号取得(受信メールアドレス別キューBOX設定Mapから)");

						// TOアドレス取得
						String[] params = new String[]{mailRcvNo, "01"};
						executeCC_T_MLAD_CR_SELECT_001(params);
						List<JBSbatCommonDBInterface> toMladList = JCRBatCommon.getSelectedDataList(db_CC_T_MLAD);
						if (toMladList != null)
						{
							for (int j = 0; j < toMladList.size(); j++)
							{
								JBSbatCommonDBInterface toMladData = toMladList.get(j);
								String toMladWk = toMladData.getString(JBSbatCC_T_MLAD.MLAD);

								queBoxNo = rcvMladQueMap.get(toMladWk);

								if (queBoxNo != null && !("".equals(queBoxNo)))
								{
									break;
								}
							}
						}

						if (queBoxNo == null || "".equals(queBoxNo))
						{
							// CCアドレス取得
							params = new String[]{mailRcvNo, "03"};
							executeCC_T_MLAD_CR_SELECT_001(params);
							toMladList = JCRBatCommon.getSelectedDataList(db_CC_T_MLAD);
							if (toMladList != null)
							{
								for (int j = 0; j < toMladList.size(); j++)
								{
									JBSbatCommonDBInterface toMladData = toMladList.get(j);
									String toMladWk = toMladData.getString(JBSbatCC_T_MLAD.MLAD);

									queBoxNo = rcvMladQueMap.get(toMladWk);

									if (queBoxNo != null && !("".equals(queBoxNo)))
									{
										break;
									}
								}
							}
						}

						if (queBoxNo == null || "".equals(queBoxNo))
						{
							// BCCアドレス取得
							params = new String[]{mailRcvNo, "04"};
							executeCC_T_MLAD_CR_SELECT_001(params);
							toMladList = JCRBatCommon.getSelectedDataList(db_CC_T_MLAD);
							if (toMladList != null)
							{
								for (int j = 0; j < toMladList.size(); j++)
								{
									JBSbatCommonDBInterface toMladData = toMladList.get(j);
									String toMladWk = toMladData.getString(JBSbatCC_T_MLAD.MLAD);

									queBoxNo = rcvMladQueMap.get(toMladWk);

									if (queBoxNo != null && !("".equals(queBoxNo)))
									{
										break;
									}
								}
							}
						}
						if (queBoxNo == null || "".equals(queBoxNo))
						{
							// TOアドレス等からキューが取得できなかった場合は
							// シスパラアカウントのメルアドで「不明キュー」を検索
							queBoxNo = rcvMladHumeiQueMap.get(mlad);
						}
// ▼▼▼ ANK-2924-00-00 2016/08/17 DEL START ▼▼▼
//					}
// ▲▲▲ ANK-2924-00-00 2016/08/17 DEL END   ▲▲▲
				}

				String workGroupNm = null;

				// (14) キューBOX存在確認
// ▼▼▼ ANK-2924-00-00 2016/08/17 DEL START ▼▼▼
//				if (taioKirokData == null)
//				{
// ▲▲▲ ANK-2924-00-00 2016/08/17 DEL END   ▲▲▲
					super.logPrint.printDebugLog("■■■　キューBOX存在確認");
					JBSbatCommonDBInterface queBoxData = checkQueBox(queBoxNo, mlad);
					queBoxNo = queBoxData.getString(JBSbatCR_T_QUE_BOX.QUE_BOX_NO);
					workGroupNm = queBoxData.getString(JBSbatZM_M_WKKBT_ORG.WKKBT_ORG_NM);
					super.logPrint.printDebugLog("■キューBOX:" + queBoxNo + "、ワークグループ名:" + workGroupNm);
// ▼▼▼ ANK-2924-00-00 2016/08/17 DEL START ▼▼▼
//				}
// ▲▲▲ ANK-2924-00-00 2016/08/17 DEL END   ▲▲▲

				if (queBoxNo != null)
				{
					// キューBOX別追加件数退避
					Integer kensu = queBoxCountMap.get(queBoxNo);
					if (kensu == null)
					{
						super.logPrint.printDebugLog("■初めて対象となるキューBOXの場合");
						queBoxCountMap.put(queBoxNo, 1);
					}
					else
					{
						queBoxCountMap.put(queBoxNo, kensu + 1);
					}
				}

				if (svcKeiNo == null && tiawsKyakuNo == null)
				{
					// サービス契約番号、問合せ客番号が取得できない場合
					tiawsKyakuNo = humeiTiawsKyakuNo;	// 不明問合せ客番号を設定
				}
				// (15) 対応記録関連データ登録
				super.logPrint.printDebugLog("■■■　対応記録関連データ登録");
				Map<String, Map<String, String>> ngwdMap = entry(mailData,
// ▼▼▼ ANK-2924-00-00 2016/08/17 MODIFY START ▼▼▼
//																taioKirokData,
																null,
// ▲▲▲ ANK-2924-00-00 2016/08/17 MODIFY END   ▲▲▲
																svcKeiNo,
																tiawsKyakuNo,
																queBoxNo,
																workGroupNm,
																isWebMail);

				// (16) NGワードデータ退避(NGワード検知メール送信用)
				ngWordData = setNgWordDataForMail(ngWordData, ngwdMap);

				// (17) メール受信更新
				super.logPrint.printDebugLog("■■■　メール受信更新");

				if (chkRes == CHK_RES_OK_CHG)
				{
					// メール受信ステータス　006：既読：不正文字有−問合せ作成（文字変換）
					updateMailRcv(mailRcvNo, MAIL_RCV_STAT_KIDOKU_HUSEI_HENKAN);
				}
				else
				{
					// メール受信ステータス　002：既読
					updateMailRcv(mailRcvNo, MAIL_RCV_STAT_KIDOKU);
				}

				if (messageId != null && !("".equals(messageId)))
				{
					// Message-Idマップ登録
					messageIdMap.put(messageId, mailRcvNo);
				}
			}

			// (18) キューBOX更新
			super.logPrint.printDebugLog("■■■　キューBOX更新");
			updateQueBox(queBoxCountMap);
			queBoxCountMap.clear();

			// (19) 問合せNGワード検知メール送信
			super.logPrint.printDebugLog("■■■　問合せNGワード検知メール送信");
			if (ngWordData.size() > 0)
			{
				// 問合せNGワード検知メール送信
				JCRBatCommon.sendNGWordMail(commonItem, ngWordData, commonItem.getBatchUserId());
				ngWordData.clear();
			}

			// (20) コミット
			super.commit();
		}
		else
		{
			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "通常メール受信件数(" + mlad + ")", 0);
		}
		return existError;
	}

	/**
	 * メールヘッダー情報のキーを大文字に変換したMapを取得する。
	 * @param mailHeaderMap メールヘッダー情報
	 * @return キーを大文字に変換したメールヘッダー情報
	 */
	private Map<String, String> getMailHeaderMapWork(Map<String, String> mailHeaderMap)
	{
		Map<String, String> mailHeaderMapWork = new HashMap<String, String>();

		if (mailHeaderMap != null)
		{
			Set<String> keySet = mailHeaderMap.keySet();
			Iterator<String> it = keySet.iterator();
			while (it.hasNext())
			{
				String key = it.next();
				String value = mailHeaderMap.get(key);
				mailHeaderMapWork.put(key.toUpperCase(), value);
			}
		}
		return mailHeaderMapWork;
	}

	/**
	 * 他社メールの処理
	 * @param mlad 受信メールアドレス
	 * @return エラー有無 エラーがある場合true
	 * @throws Exception 例外
	 */
	private boolean executeTashaMail(String mlad) throws Exception
	{
		boolean existError = false;

		super.logPrint.printDebugLog("■■■　他社メールの処理　受信メールアドレス:" + mlad);

		// 問合せメール受信データ取得(他社メール用受信メールアドレス(1件)に届いたメール取得)
		List<JBSbatCommonDBInterface> mailDataList = getMailData(mlad);

		if (mailDataList != null)
		{
			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "他社・Abuseメール受信件数(" + mlad + ")", mailDataList.size());

			// キューBOX番号と追加件数を格納するMap
			Map<String, Integer> queBoxCountMap = new HashMap<String, Integer>();

			// NGワード情報を格納するMap(NGワード検知メール送信用)
			//		キー:NGワード	値:詳細情報MapのList
			//							|
			//						キー:対応記録番号	値:タイトル
			//						キー:対応記録番号	値:タイトル
			//									・
			//									・
			Map<String, List<Map<String, String>>> ngWordData = new HashMap<String, List<Map<String, String>>>();

			for (int i = 0; i < mailDataList.size(); i++)
			{
				// メール受信レコード1件読込
				JBSbatCommonDBInterface mailData = mailDataList.get(i);
				String mailRcvNo = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_RCV_NO);
				super.logPrint.printDebugLog("■■■　メール受信レコード1件読込　メール受信番号:" + mailRcvNo);

				// メールヘッダー情報取得
				super.logPrint.printDebugLog("■■■　メールヘッダー情報取得");
				String mailHeaderIf = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_HEADER_IF);
				if (mailHeaderIf == null)
				{
					mailHeaderIf = "";
				}

				// メールヘッダー取得部品での処理のため改行コード調整
				mailHeaderIf = mailHeaderIf.replaceAll(JCRStrConst.KAIGYO_CD, "\n");
				mailHeaderIf = mailHeaderIf.replaceAll("\r", "\n");
				mailHeaderIf = mailHeaderIf.replaceAll("\n", System.getProperty("line.separator"));
				Map<String, String> mailHeaderMap = JCRBatCommon.getMailHeader(mailHeaderIf);

				// ------------------------------------------------------------
				// キーを全て大文字にしたメールヘッダー情報を作る
				// ※ メッセージIDのキーが「Message-Id」だったり「Message-ID」だったりするため
				Map<String, String> mailHeaderMapWork = getMailHeaderMapWork(mailHeaderMap);

				// 重複メールのチェック
				String messageId = mailHeaderMapWork.get(KEY_MESSAGE_ID);

				if (messageId != null && !("".equals(messageId)))
				{
					if (messageIdMap.containsKey(messageId))
					{
						// 同じMessage-Idのメールが既に処理されている場合

						String shorizumiMailRcvNo = messageIdMap.get(messageId);

						// ECRB0190KW	%1%の内容が正しくありません。（%2%）
						commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0190KW,
							new String[] {"メール", 
								"重複Message-Id　[メール受信番号:" + mailRcvNo + "]は" + "取得済みの[" + shorizumiMailRcvNo + "]とMessage-Idが一致するのでスキップしました。"});

						// メール受信更新 既読にする
						updateMailRcv(mailRcvNo, MAIL_RCV_STAT_KIDOKU_JYUHUKU);	// 007：既読：重複メール−問合せ未作成
						continue;
					}
				}

				// ------------------------------------------------------------

				// 文字形式チェック
				int chkRes = checkData(mailData);

				if (chkRes == CHK_RES_NG)
				{
					existError = true;

					// メール受信更新 既読にする
					updateMailRcv(mailRcvNo, MAIL_RCV_STAT_KIDOKU_HUSEI);	// 005：既読：不正文字有−問合せ未作成

					// エラーがある場合は次のメールを処理する
					continue;
				}

				JBSbatCommonDBInterface taioKirokData = null;		// 対応記録データ
				JBSbatCommonDBInterface custData = null;			// お客様データ
				String svcKeiNo = null;								// サービス契約番号
				String tiawsKyakuNo = null;							// 問合せ客番号

				String title = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_TITLE);
				super.logPrint.printDebugLog("メール受信タイトル:" + title);

				super.logPrint.printDebugLog("■■■　対応記録検索");
				// 対応記録検索
				// 対応記録番号取得
				String taioKirokNo = getTaioKirokNoFromMail(mailHeaderMap, title);

				if (taioKirokNo != null)
				{
					super.logPrint.printDebugLog("■メールタイトル・ヘッダーから対応記録番号が取得できた場合");
					// 対応記録テーブル検索
					taioKirokData = getTaioKirokData(taioKirokNo);

					if (taioKirokData != null)
					{
						svcKeiNo = taioKirokData.getString(JBSbatCR_T_TAIO_KIROK.SVC_KEI_NO);		// (登録済)対応記録データのサービス契約番号
						tiawsKyakuNo = taioKirokData.getString(JBSbatCR_T_TAIO_KIROK.PROSCST_NO);	// (登録済)対応記録データの問合せ客番号
						super.logPrint.printDebugLog("■(登録済)対応記録のサービス契約番号:" + svcKeiNo);
						super.logPrint.printDebugLog("■(登録済)対応記録の問合せ客番号:" + tiawsKyakuNo);
					}
				}

				if (taioKirokData == null)
				{
					// 対応記録データが取得できていない場合
					super.logPrint.printDebugLog("■対応記録データが取得できていない場合");

					// メールアドレスからお客様検索
					super.logPrint.printDebugLog("■■■　メールアドレスからお客様検索");
					custData = searchCustByMlad(false, mailData, null);
				}

				String fromMlad = mailData.getString(JBSbatCC_T_MLAD.MLAD);
				if (custData != null)
				{
					// お客様データからサービス契約番号取得
					String skNo = custData.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO);
					if (skNo != null && !"".equals(skNo.trim()))
					{
						svcKeiNo = skNo;
					}
				}

				// 問合せ客検索
				if (svcKeiNo == null && custData == null)
				{
					super.logPrint.printDebugLog("■サービス契約番号、お客様データが取得できていない場合");
					// 問合せ客検索
					super.logPrint.printDebugLog("■■■　問合せ客検索");
					tiawsKyakuNo = searchTiawsKyakuForNotWebMail(tiawsKyakuNo, fromMlad);
				}

				// キューBOX判定
				super.logPrint.printDebugLog("■■■　キューBOX判定");
				String queBoxNo = null;
// ▼▼▼ ANK-2924-00-00 2016/08/17 DEL START ▼▼▼
//				if (taioKirokData == null)
//				{
// ▲▲▲ ANK-2924-00-00 2016/08/17 DEL END   ▲▲▲
					// キューBOX番号取得
					// (送信メールアドレス別キューBOX設定Mapから)
					super.logPrint.printDebugLog("■■■　キューBOX番号取得(送信メールアドレス別キューBOX設定Mapから)");
					queBoxNo = sndMladQueMap.get(fromMlad);
// ▼▼▼ ANK-2924-00-00 2016/08/17 DEL START ▼▼▼
//				}
// ▲▲▲ ANK-2924-00-00 2016/08/17 DEL END   ▲▲▲

				String workGroupNm = null;

				// キューBOX存在確認
// ▼▼▼ ANK-2924-00-00 2016/08/17 DEL START ▼▼▼
//				if (taioKirokData == null)
//				{
// ▲▲▲ ANK-2924-00-00 2016/08/17 DEL END   ▲▲▲
					super.logPrint.printDebugLog("■■■　キューBOX存在確認");
					JBSbatCommonDBInterface queBoxData = checkQueBox(queBoxNo, mlad);
					queBoxNo = queBoxData.getString(JBSbatCR_T_QUE_BOX.QUE_BOX_NO);
					workGroupNm = queBoxData.getString(JBSbatZM_M_WKKBT_ORG.WKKBT_ORG_NM);
					super.logPrint.printDebugLog("■キューBOX:" + queBoxNo + "、ワークグループ名:" + workGroupNm);
// ▼▼▼ ANK-2924-00-00 2016/08/17 DEL START ▼▼▼
//				}
// ▲▲▲ ANK-2924-00-00 2016/08/17 DEL END   ▲▲▲

				if (queBoxNo != null)
				{
					// キューBOX別追加件数退避
					Integer kensu = queBoxCountMap.get(queBoxNo);
					if (kensu == null)
					{
						super.logPrint.printDebugLog("■初めて対象となるキューBOXの場合");
						queBoxCountMap.put(queBoxNo, 1);
					}
					else
					{
						queBoxCountMap.put(queBoxNo, kensu + 1);
					}
				}

				if (svcKeiNo == null && tiawsKyakuNo == null)
				{
					// サービス契約番号、問合せ客番号が取得できない場合
					tiawsKyakuNo = karaTiawsKyakuNo;	// 空問合せ客番号を設定
				}
				// 対応記録関連データ登録
				super.logPrint.printDebugLog("■■■　対応記録関連データ登録");
				Map<String, Map<String, String>> ngwdMap = entry(mailData,
// ▼▼▼ ANK-2924-00-00 2016/08/17 MODIFY START ▼▼▼
//																taioKirokData,
																null,
// ▲▲▲ ANK-2924-00-00 2016/08/17 MODIFY END   ▲▲▲
																svcKeiNo,
																tiawsKyakuNo,
																queBoxNo,
																workGroupNm,
																false);

				// NGワードデータ退避(NGワード検知メール送信用)
				ngWordData = setNgWordDataForMail(ngWordData, ngwdMap);

				// メール受信更新
				super.logPrint.printDebugLog("■■■　メール受信更新");

				if (chkRes == CHK_RES_OK_CHG)
				{
					// メール受信ステータス　006：既読：不正文字有−問合せ作成（文字変換）
					updateMailRcv(mailRcvNo, MAIL_RCV_STAT_KIDOKU_HUSEI_HENKAN);
				}
				else
				{
					// メール受信ステータス　002：既読
					updateMailRcv(mailRcvNo, MAIL_RCV_STAT_KIDOKU);
				}

				if (messageId != null && !("".equals(messageId)))
				{
					// Message-Idマップ登録
					messageIdMap.put(messageId, mailRcvNo);
				}
			}

			// キューBOX更新
			super.logPrint.printDebugLog("■■■　キューBOX更新");
			updateQueBox(queBoxCountMap);
			queBoxCountMap.clear();

			// 問合せNGワード検知メール送信
			super.logPrint.printDebugLog("■■■　問合せNGワード検知メール送信");
			if (ngWordData.size() > 0)
			{
				// 問合せNGワード検知メール送信
				JCRBatCommon.sendNGWordMail(commonItem, ngWordData, commonItem.getBatchUserId());
				ngWordData.clear();
			}

			// コミット
			super.commit();
		}
		else
		{
			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "他社・Abuseメール受信件数(" + mlad + ")", 0);
		}
		return existError;
	}

	/**
	 * Abuseメールの処理
	 * @param mlad 受信メールアドレス
	 * @return エラー有無 エラーがある場合true
	 * @throws Exception 例外
	 */
	private boolean executeAbuseMail(String mlad) throws Exception
	{
		super.logPrint.printDebugLog("■■■　Abuseメールの処理　受信メールアドレス:" + mlad);

		// 他社メールの処理呼び出し
		super.logPrint.printDebugLog("他社メールの処理呼び出し");
		return executeTashaMail(mlad);
	}

	/**
	 * データチェック
	 * @param mailData メール受信データ
	 * @return エラー有無 エラーがある場合true
	 * @return チェック結果
	 * 			0:OK
	 * 			1:OK（変換あり）
	 * 			2:NG
	 * @throws Exception 例外
	 */
	private int checkData(JBSbatCommonDBInterface mailData) throws Exception
	{
		int res = CHK_RES_OK;

		// **************************************
		// タイトルチェック
		// **************************************
		int chkTitleRes = checkTitle(mailData);
		if (chkTitleRes > res)
		{
			res = chkTitleRes;
		}

		// **************************************
		// メール本文チェック
		// **************************************
		int chkHonbunRes = checkHonbun(mailData);
		if (chkHonbunRes > res)
		{
			res = chkHonbunRes;
		}

		// **************************************
		// ヘッダー情報チェック
		// **************************************
		int chkHeaderRes = checkHeader(mailData);
		if (chkHeaderRes > res)
		{
			res = chkHeaderRes;
		}

		return res;
	}

	/**
	 * タイトルチェック
	 * @param mailData メール受信データ
	 * @return チェック結果
	 * 			0:OK
	 * 			1:OK（変換あり）
	 * 			2:NG
	 * @throws Exception 例外
	 */
	private int checkTitle(JBSbatCommonDBInterface mailData) throws Exception
	{
		int res = CHK_RES_OK;

		String title = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_TITLE);	// メールタイトル

		// (1) 変換前チェック
		if (JCRBatCommon.isMailTitle(title) == false)
		{
			// 不正文字が含まれている場合

			// (2) 不正文字情報検出
			Map<String, String> wrongStringMap = getWrongString(title, JBSbatCC_T_MAIL_RCV.MAIL_TITLE);

			if (wrongStringMap != null && wrongStringMap.size() > 0)
			{
				// (3) 文字変換
				res = fixData(mailData, wrongStringMap, JBSbatCC_T_MAIL_RCV.MAIL_TITLE, "メールタイトル", title);
			}
		}
		return res;
	}

	/**
	 * 文字変換
	 * @param mailData メール受信情報
	 * @param wrongStringMap 不正文字情報
	 * @param field 項目
	 * @param fieldName 項目名
	 * @param data 対象文字列
	 * @return 結果
	 * 			0:OK
	 * 			1:OK（変換あり）
	 * 			2:NG
	 * @throws Exception
	 */
	private int fixData(JBSbatCommonDBInterface mailData,
						Map<String, String> wrongStringMap,
						String field,
						String fieldName,
						String data) throws Exception
	{
		int res = CHK_RES_OK;
		String wkData = data;

		if (wrongStringMap != null && wrongStringMap.size() > 0)
		{
			boolean changeable = true;		// 変換可否

			Map<String, String> notChgStringMap = new HashMap<String, String>();	// 変換できなかった文字
			Set<String> keys = wrongStringMap.keySet();
			Iterator<String> it = keys.iterator();
			while (it.hasNext())
			{
				String wrongString = it.next();
				String unicode = wrongStringMap.get(wrongString);

				// 文字変換設定マップから変換情報を取得
				String chgMoji = mojiChgMap.get(unicode);

				// 文字変換可否チェック
				if (chgMoji == null)
				{
					// 文字変換設定マップに無かった場合
					changeable = false;
					notChgStringMap.put(wrongString, unicode);
				}

				if (changeable == true)
				{
					// 変換可能の場合

					// 文字変換
					wkData = wkData.replaceAll(wrongString, chgMoji);
				}
			}

			if (changeable == false)
			{
				// 変換できない文字があった場合
				// エラーあり
				res = CHK_RES_NG;

				String mailRcvNo = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_RCV_NO);		// メール受信番号
				// ログ出力
				printMojiErrorLog(mailRcvNo, fieldName, notChgStringMap);
			}
			else
			{
				// 不正文字の全てが変換できた場合
				res = CHK_RES_OK_CHG;

				// 文字変換後の内容設定
				mailData.setValue(field, wkData);
			}
		}
		return res;
	}

	/**
	 * 文字形式チェックエラーのログ出力
	 * @param mailRcvNo メール受信番号
	 * @param fieldName 項目名
	 * @param notChgStringMap 変換不可文字情報
	 */
	private void printMojiErrorLog(String mailRcvNo, String fieldName, Map<String, String> notChgStringMap)
	{
		StringBuilder notChgString = new StringBuilder();

		Set<String> keys = notChgStringMap.keySet();
		Iterator<String> it = keys.iterator();
		while (it.hasNext())
		{
			notChgString.append("[");
			String wrongString = it.next();
			String unicode = notChgStringMap.get(wrongString);
		//	notChgString.append("文字:").append(wrongString).append(",");	// ログに正しく表示できないため除去
			notChgString.append("ユニコード:").append(unicode);
			notChgString.append("]");
		}

// v15.00.00 OM-2015-0002040 MOD START
		// ECRB0190KW	%1%の内容が正しくありません。（%2%）
		// ECRB0450KI	%1%の内容が正しくありません。（%2%）
//		commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0190KW,
		commonItem.getLogPrint().printBusinessErrorLog("ECRB0450KI",
// v15.00.00 OM-2015-0002040 MOD END
			new String[] {fieldName, "使用できない文字が含まれています　[メール受信番号:" + mailRcvNo + "]　検出された文字情報：" + notChgString.toString()});
	}

	/**
	 * 本文チェック
	 * @param mailData メール受信データ
	 * @return チェック結果
	 * 			0:OK
	 * 			1:OK（変換あり）
	 * 			2:NG
	 * @throws Exception 例外
	 */
	private int checkHonbun(JBSbatCommonDBInterface mailData) throws Exception
	{
		int res = CHK_RES_OK;

		String honbun = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_TEXT);	// メール本文

		// (1) 変換前チェック
		if (JCRBatCommon.isMailText(honbun) == false)
		{
			// 不正文字が含まれている場合

			// (2) 不正文字情報検出
			Map<String, String> wrongStringMap = getWrongString(honbun, JBSbatCC_T_MAIL_RCV.MAIL_TEXT);

			if (wrongStringMap != null && wrongStringMap.size() > 0)
			{
				// (3) 文字変換
				res = fixData(mailData, wrongStringMap, JBSbatCC_T_MAIL_RCV.MAIL_TEXT, "メール本文", honbun);
			}
		}
		return res;
	}

	/**
	 * ヘッダー情報チェック
	 * @param mailData メール受信データ
	 * @return チェック結果
	 * 			0:OK
	 * 			1:OK（変換あり）
	 * 			2:NG
	 * @throws Exception 例外
	 */
	private int checkHeader(JBSbatCommonDBInterface mailData) throws Exception
	{
		int res = CHK_RES_OK;

		String header = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_HEADER_IF);		// メールヘッダー情報

		// (1) 変換前チェック
		if (JCRBatCommon.isMailText(header) == false)
		{
			// 不正文字が含まれている場合

			// (2) 不正文字情報検出
			Map<String, String> wrongStringMap = getWrongString(header, JBSbatCC_T_MAIL_RCV.MAIL_HEADER_IF);

			if (wrongStringMap != null && wrongStringMap.size() > 0)
			{
				// (3) 文字変換
				res = fixData(mailData, wrongStringMap, JBSbatCC_T_MAIL_RCV.MAIL_HEADER_IF, "メールヘッダー", header);
			}
		}
		return res;
	}

	/**
	 * 不正文字を検出して返戻する
	 * @param targetString 対象文字列
	 * @param fieldId 項目ID チェック部品の切替判定用
	 * @return 不正文字とユニコードを格納したMap
	 * @throws Exception 例外
	 */
	private Map<String, String> getWrongString(String targetString, String fieldId) throws Exception
	{
		Map<String, String> wrongStringMap = new HashMap<String, String>();

		if (targetString != null)
		{
			for (int i = 0; i < targetString.length(); i++)
			{
				// １文字抽出
				String target = String.valueOf(targetString.charAt(i));

				if (JBSbatCC_T_MAIL_RCV.MAIL_TITLE.equals(fieldId))
				{
					if (JCRBatCommon.isMailTitle(target) == false)
					{
						// 形式：メールタイトルでチェック
						String unicode = getUnicode(target);
						wrongStringMap.put(target, unicode);
					}
				}
				else
				{
					if (JCRBatCommon.isMailText(target) == false)
					{
						// 形式：メール本文でチェック
						String unicode = getUnicode(target);
						wrongStringMap.put(target, unicode);
					}
				}
			}
		}

		return wrongStringMap;
	}

	/**
	 * 文字のユニコードを取得する。
	 * @param target 対象文字列
	 * @return 文字のユニコード
	 * @throws Exception 例外
	 */
	private String getUnicode(String target) throws Exception
	{
		int unicodeByteLength = 4;
		StringBuilder unicode = new StringBuilder();
		char[] chars = target.toCharArray();
		for (int i = 0; i < chars.length; i++)
		{
			char chr = chars[i];
			String hex = Integer.toHexString(chr);
			hex = JCRUtilCommon.fillZero(hex, unicodeByteLength, false);

			unicode.append(hex);
		}
		return unicode.toString().toUpperCase();
	}

	/**
	 * Webメールの本文List生成
	 * @param honbun メール本文
	 * @return Webメールの本文List
	 * @throws Exception 例外
	 */
	private List<String> getWebMailHonbunList(String honbun) throws Exception
	{
		List<String> webMailHonbunList = new ArrayList<String>();

		BufferedReader br = null;
		try
		{
			br = new BufferedReader(new StringReader((honbun == null) ? "" : honbun));
			String data = br.readLine();
			while (data != null)
			{
				// メール本文を1行ずつListに登録
				webMailHonbunList.add(data);
				data = br.readLine();
			}

			if (webMailHonbunList.size() < WEB_MAIL_MIN_ROWCOUNT)
			{
				// PGで使用される最低限の行数に満たない場合はListに追加しておく
				int addCount = WEB_MAIL_MIN_ROWCOUNT - webMailHonbunList.size();
				for (int i = 0; i < addCount; i++)
				{
					webMailHonbunList.add("");
				}
			}
		}
		finally
		{
			if (br != null)
			{
				br.close();
			}
		}
		return webMailHonbunList;
	}

	/**
	 * 問合せメール受信データ取得
	 * @param mlad メールアドレス
	 * @return 問合せメール受信データ
	 * @throws Exception 例外
	 */
	private List<JBSbatCommonDBInterface> getMailData(String mlad) throws Exception
	{
		String sysDate = JCRBatCommon.getSysDate();
		executeCC_T_MAIL_RCV_CR_SELECT_001(new String[] {mlad, sysDate, sysDate});
		return JCRBatCommon.getSelectedDataList(db_CC_T_MAIL_RCV);
	}

	/**
	 * Webメール判定
	 * @param mailHeaderMap メールヘッダー情報Map
	 * @return Webメールの場合true
	 * @throws Exception 例外
	 */
	private boolean isWebMail(Map<String, String> mailHeaderMap) throws Exception
	{
		boolean isWebMail = false;
		String hanteiValue = null;
		if (mailHeaderMap != null)
		{
			// Webメール判定用ヘッダー項目名
			hanteiValue = mailHeaderMap.get(tikiMlHanteiHdrNm);
		}

		if (hanteiValue != null && hanteiValue.startsWith(tikiMlHntiHdrValPfx))
		{
			// Webメール判定用ヘッダー項目の値がプロパティーで指定された値で始まる場合
			isWebMail = true;
		}
		super.logPrint.printDebugLog("■isWebMail:" + isWebMail);

		return isWebMail;
	}

	/**
	 * メールから対応記録番号取得
	 * @param mailHeaderMap メールヘッダー情報
	 * @param mailTitle メールタイトル
	 * @return 対応記録番号(取得できない場合はnull)
	 * @throws Exception 例外
	 */
	private String getTaioKirokNoFromMail(Map<String, String> mailHeaderMap, String mailTitle) throws Exception
	{
		String taioKirokNo = null;
		if (mailHeaderMap != null)
		{
			// メールヘッダーから対応記録番号取得
			// (プロパティーの対応記録番号取得用ヘッダー項目名使用)
			taioKirokNo = mailHeaderMap.get(JCRStrConst.TAIOKIRK_NO_HDR_NM);
		}
		if (taioKirokNo == null || "".equals(taioKirokNo.trim()))
		{

			if (mailTitle != null && !("".equals(mailTitle)))
			{
				// メールタイトルから対応記録番号を検索
				int startIndex = mailTitle.indexOf(TK_NO_KAKOMI_START);
				if (startIndex > -1)
				{
					int endIndex = mailTitle.indexOf(TK_NO_KAKOMI_END, startIndex);
					if (endIndex > -1)
					{
						taioKirokNo = mailTitle.substring(startIndex + TK_NO_KAKOMI_START.length(), endIndex);
					}
				}
			}
		}
		if (taioKirokNo != null && "".equals(taioKirokNo.trim()))
		{
			taioKirokNo = null;
		}
		return taioKirokNo;
	}

	/**
	 * 対応記録テーブル検索
	 * @param taioKirokNo 対応記録番号
	 * @return 対応記録データ
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface getTaioKirokData(String taioKirokNo) throws Exception
	{
		JBSbatCommonDBInterface taioKirokData = null;
		executeCR_T_TAIO_KIROK_CR_SELECT_014(new String[] {taioKirokNo});
		List<JBSbatCommonDBInterface> taioKirokDataList = JCRBatCommon.getSelectedDataList(db_CR_T_TAIO_KIROK);
		if (taioKirokDataList != null && taioKirokDataList.size() > 0)
		{
			taioKirokData = taioKirokDataList.get(0);
		}
		return taioKirokData;
	}

	/**
	 * Webメールのお客様検索
	 * @param webMailHonbunList Webメールの本文を格納したList
	 * @return お客様情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchCustForWebMail(List<String> webMailHonbunList) throws Exception
	{
		JBSbatCommonDBInterface custData = null;

		String svcKeiNo = null;
		String ninshoId = null;

		// (8)-(a) メール本文2行目判定
		String id = webMailHonbunList.get(1);

		if (id != null && id.startsWith(SVC_KEI_NO_PREFIX))
		{
			super.logPrint.printDebugLog("■　Webメール　本文2行目は「サービス契約番号」です:" + id);
			svcKeiNo = id;
		}
		else
		{
			super.logPrint.printDebugLog("■　Webメール　本文2行目は「認証ID」です:" + id);
			ninshoId = id;
		}

		if (svcKeiNo != null)
		{
			// メール本文2行目がサービス契約番号である場合

			// (8)-(b) サービス契約番号検索
			super.logPrint.printDebugLog("■■■　サービス契約番号検索");
			custData = searchCustBySvcKeiNo(svcKeiNo);
		}
		else if (ninshoId != null && !("".equals(ninshoId.trim())))
		{
			// メール本文2行目が認証IDである場合

			// (8)-(c) 認証ID検索

			// (8)-(c)-(1) PPP認証ID検索	(VARCHAR2 14)
			super.logPrint.printDebugLog("■■■　PPP認証ID検索");
			custData = searchCustByPppNinshoId(ninshoId);
			if (custData == null)
			{
				// (8)-(c)-(2) ISP認証ID検索	(VARCHAR2 64)
				super.logPrint.printDebugLog("■■■　ISP認証ID検索");
				custData = searchCustByIspNinshoId(ninshoId);
				if (custData == null)
				{
					// (8)-(c)-(3) ADSL認証ID検索	(VARCHAR2 63)
					super.logPrint.printDebugLog("■■■　ADSL認証ID検索");
					custData = searchCustByAdslNinshoId(ninshoId);
					if (custData == null)
					{
						// (8)-(c)-(4) UQ認証ID検索	(CHAR 30)
						super.logPrint.printDebugLog("■■■　UQ認証ID検索");
						custData = searchCustByUqNinshoId(JCRBatCommon.fillHalfSpace(ninshoId, UQ_NINSHOID_BYTE_SU, true));
						if (custData == null)
						{
							// (8)-(c)-(5) ダイアルアップ接続用認証ID検索	(VARCHAR2 64)
							super.logPrint.printDebugLog("■■■　ダイアルアップ接続用認証ID検索");
							custData = searchCustByDuNinshoId(ninshoId);
						}
					}
				}
			}
		}

		// メール本文7行目(eoID)取得
		String eoId = webMailHonbunList.get(6);
		if (eoId != null && !("".equals(eoId.trim())))
		{
			// (8)-(d) eoId検索
			super.logPrint.printDebugLog("■■■　eoId検索:" + eoId);
			JBSbatCommonDBInterface wkCustData = searchCustByEoId(eoId);
			if (wkCustData != null)
			{
				if (custData != null)
				{
					// 優先されるお客様データを取得
					custData = getYusenCustData(custData, wkCustData);
				}
				else
				{
					custData = wkCustData;
				}
			}
		}
		return custData;
	}

	/**
	 * サービス契約番号検索
	 * @param svcKeiNo サービス契約番号
	 * @return お客様情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchCustBySvcKeiNo(String svcKeiNo) throws Exception
	{
		JBSbatCommonDBInterface custData = null;
		String sysDate = JCRBatCommon.getSysDate();
		executeKK_T_SVC_KEI_CR_SELECT_004(new String[]{svcKeiNo, sysDate});
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_KK_T_SVC_KEI);
		if (selectedDataList != null && selectedDataList.size() > 0)
		{
			custData = selectedDataList.get(0);
		}
		return custData;
	}

	/**
	 * PPP認証ID検索
	 * @param ninshoId 認証ID
	 * @return お客様情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchCustByPppNinshoId(String ninshoId) throws Exception
	{
		JBSbatCommonDBInterface custData = null;
		String sysDate = JCRBatCommon.getSysDate();
		executeKK_T_SVC_KEI_CR_SELECT_005(new String[]{sysDate, ninshoId});
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_KK_T_SVC_KEI);
		if (selectedDataList != null && selectedDataList.size() > 0)
		{
			custData = selectedDataList.get(0);
		}
		return custData;
	}

	/**
	 * ISP認証ID検索
	 * @param ninshoId 認証ID
	 * @return お客様情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchCustByIspNinshoId(String ninshoId) throws Exception
	{
		JBSbatCommonDBInterface custData = null;
		String sysDate = JCRBatCommon.getSysDate();
		executeKK_T_SVC_KEI_CR_SELECT_006(new String[]{sysDate, sysDate, ninshoId});
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_KK_T_SVC_KEI);
		if (selectedDataList != null && selectedDataList.size() > 0)
		{
			custData = selectedDataList.get(0);
		}
		return custData;
	}

	/**
	 * ２つのお客様データを比較し、より優先されるお客様データを取得する
	 * @param data1 お客様データ1
	 * @param data2 お客様データ2
	 * @return 優先されるお客様データ
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface getYusenCustData(JBSbatCommonDBInterface data1, JBSbatCommonDBInterface data2) throws Exception
	{
		JBSbatCommonDBInterface resData = data1;

		// 契約順比較
		// 契約順が小さい(優先される)データを返す

		int keiyakuJun1 = Integer.parseInt(data1.getString(KEIYAKU_JUN));
		int keiyakuJun2 = Integer.parseInt(data2.getString(KEIYAKU_JUN));

		if (keiyakuJun1 > keiyakuJun2)
		{
			resData = data2;
		}
		else if (keiyakuJun1 == keiyakuJun2)
		{
			// 契約締結年月日比較
			// 契約締結年月日が大きい(新しい)データを返す
			String teiketsuDate1 = data1.getString(JBSbatKK_T_SVC_KEI.KEI_CNC_YMD);
			if (teiketsuDate1 == null)
			{
				teiketsuDate1 = MIN_DATE;
			}
			String teiketsuDate2 = data2.getString(JBSbatKK_T_SVC_KEI.KEI_CNC_YMD);
			if (teiketsuDate2 == null)
			{
				teiketsuDate2 = MIN_DATE;
			}
			int res = teiketsuDate1.compareTo(teiketsuDate2);
			if (res < 0)
			{
				resData = data2;
			}
			else if (res == 0)
			{
				// 登録日時比較
				// 登録日時が大きい(新しい)データを返す
				res = data1.getString(JBSbatKK_T_SVC_KEI.ADD_DTM).compareTo(data2.getString(JBSbatKK_T_SVC_KEI.ADD_DTM));
				if (res < 0)
				{
					resData = data2;
				}
			}
		}
		return resData;
	}

	/**
	 * ADSL認証ID検索
	 * @param ninshoId 認証ID
	 * @return お客様情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchCustByAdslNinshoId(String ninshoId) throws Exception
	{
		JBSbatCommonDBInterface custData = null;
		String sysDate = JCRBatCommon.getSysDate();
		executeKK_T_SVC_KEI_CR_SELECT_007(new String[]{sysDate, sysDate, ninshoId});
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_KK_T_SVC_KEI);
		if (selectedDataList != null && selectedDataList.size() > 0)
		{
			custData = selectedDataList.get(0);
		}
		return custData;
	}

	/**
	 * UQ認証ID検索
	 * @param ninshoId 認証ID
	 * @return お客様情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchCustByUqNinshoId(String ninshoId) throws Exception
	{
		JBSbatCommonDBInterface custData = null;
		String sysDate = JCRBatCommon.getSysDate();
		executeKK_T_SVC_KEI_CR_SELECT_008(new String[]{sysDate, sysDate, ninshoId});
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_KK_T_SVC_KEI);
		if (selectedDataList != null && selectedDataList.size() > 0)
		{
			custData = selectedDataList.get(0);
		}
		return custData;
	}

	/**
	 * ダイアルアップ接続用認証ID検索
	 * @param ninshoId 認証ID
	 * @return お客様情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchCustByDuNinshoId(String ninshoId) throws Exception
	{
		JBSbatCommonDBInterface custData = null;
		String sysDate = JCRBatCommon.getSysDate();
		executeKK_T_SVC_KEI_CR_SELECT_009(new String[]{sysDate, sysDate, sysDate, ninshoId});
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_KK_T_SVC_KEI);
		if (selectedDataList != null && selectedDataList.size() > 0)
		{
			custData = selectedDataList.get(0);
		}
		return custData;
	}

	/**
	 * eoID検索
	 * @param eoId 認証ID
	 * @return お客様情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchCustByEoId(String eoId) throws Exception
	{
		JBSbatCommonDBInterface custData = null;
		String sysDate = JCRBatCommon.getSysDate();
		executeKK_T_SVC_KEI_CR_SELECT_010(new String[]{sysDate, eoId, sysDate});
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_KK_T_SVC_KEI);
		if (selectedDataList != null && selectedDataList.size() > 0)
		{
			custData = selectedDataList.get(0);
		}
		return custData;
	}

	/**
	 * メールアドレスからお客様検索
	 * @param isWebMail FROMアドレス
	 * @param mailData メール受信データ
	 * @param webMailHonbunList メール本文List(Webメール用)
	 * @return お客様情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchCustByMlad(boolean isWebMail,
													JBSbatCommonDBInterface mailData,
													List<String> webMailHonbunList) throws Exception
	{
		JBSbatCommonDBInterface custData = null;

		// (9)-(a) 検索メールアドレス確定
		String fromMlad = null;
		if (isWebMail)
		{
			// Webメール本文5行目(申告メールアドレス)
			fromMlad = webMailHonbunList.get(4);
		}
		else
		{
			// Fromメールアドレス
			fromMlad = mailData.getString(JBSbatCC_T_MLAD.MLAD);
		}
		super.logPrint.printDebugLog("■■■　FROMアドレス:" + fromMlad);

		// (9)-(b) 連絡先メールアドレス検索
		super.logPrint.printDebugLog("■■■　連絡先メールアドレス検索");
		custData = searchCustByRrksMlad(fromMlad);
		if (custData == null)
		{
			// (9)-(c) オプションサービス契約<ISP>のメールアドレス検索
			super.logPrint.printDebugLog("■■■　オプションサービス契約<ISP>のメールアドレス検索");
			custData = searchCustByOskIspMlad(fromMlad);
			if (custData == null)
			{
				// (9)-(d) サブオプションサービス契約<ISP>のエイリアス検索
				super.logPrint.printDebugLog("■■■　サブオプションサービス契約<ISP>のエイリアス検索");
				custData = searchCustBySoskIspAlias(fromMlad);
				if (custData == null)
				{
					// (9)-(e) 申込明細の申込連絡先メールアドレス検索
					super.logPrint.printDebugLog("■■■　申込明細の申込連絡先メールアドレス検索");
					custData = searchCustByMkmsMlad(fromMlad);
				}
			}
		}
		return custData;
	}

	/**
	 * 連絡先メールアドレス検索
	 * @param fromMlad FROMアドレス
	 * @return お客様情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchCustByRrksMlad(String fromMlad) throws Exception
	{
		JBSbatCommonDBInterface custData = null;
		String sysDate = JCRBatCommon.getSysDate();
		executeKK_T_SVC_KEI_CR_SELECT_011(new String[]{sysDate, fromMlad, sysDate});
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_KK_T_SVC_KEI);
		if (selectedDataList != null && selectedDataList.size() > 0)
		{
			custData = selectedDataList.get(0);
		}
		return custData;
	}

	/**
	 * オプションサービス契約<ISP>のメールアドレス検索
	 * @param fromMlad FROMアドレス
	 * @return お客様情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchCustByOskIspMlad(String fromMlad) throws Exception
	{
		JBSbatCommonDBInterface custData = null;
		String sysDate = JCRBatCommon.getSysDate();
		executeKK_T_SVC_KEI_CR_SELECT_012(new String[]{sysDate, sysDate, fromMlad});
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_KK_T_SVC_KEI);
		if (selectedDataList != null && selectedDataList.size() > 0)
		{
			custData = selectedDataList.get(0);
		}
		return custData;
	}

	/**
	 * サブオプションサービス契約<ISP>のエイリアス検索
	 * @param fromMlad FROMアドレス
	 * @return お客様情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchCustBySoskIspAlias(String fromMlad) throws Exception
	{
		JBSbatCommonDBInterface custData = null;
		String sysDate = JCRBatCommon.getSysDate();
		int index = fromMlad.indexOf('@');
		if (index != -1)
		{
			String account = fromMlad.substring(0, index);
			String domain = fromMlad.substring(index);
			String paramDomain = JCRBatCommon.getPostfixSearchString(domain);

			executeKK_T_SVC_KEI_CR_SELECT_013(new String[]{sysDate, sysDate, paramDomain, sysDate, account});
			List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_KK_T_SVC_KEI);
			if (selectedDataList != null && selectedDataList.size() > 0)
			{
				custData = selectedDataList.get(0);
			}
		}
		return custData;
	}

	/**
	 * 申込明細の申込連絡先メールアドレス検索
	 * @param fromMlad FROMアドレス
	 * @return お客様情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchCustByMkmsMlad(String fromMlad) throws Exception
	{
		JBSbatCommonDBInterface custData = null;
		executeKK_T_SVC_KEI_CR_SELECT_014(new String[]{JCRBatCommon.getSysDate(), fromMlad});
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_KK_T_SVC_KEI);
		if (selectedDataList != null && selectedDataList.size() > 0)
		{
			custData = selectedDataList.get(0);
		}
		return custData;
	}

	/**
	 * Webメールの問合せ客検索
	 * @param fromMlad FROMアドレス
	 * @return 問合せ客情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchTiawsKyakuForWebMail(String fromMlad) throws Exception
	{
		// メールアドレスから問合せ客情報検索
		return searchTiawsKyakuByMlad(fromMlad);
	}

	/**
	 * メールアドレスから問合せ客情報検索
	 * @param fromMlad FROMアドレス
	 * @return 問合せ客情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchTiawsKyakuByMlad(String fromMlad) throws Exception
	{
		// (10)-(a)
		// (11)-(b)
		// 問合せ客メールアドレス検索
		super.logPrint.printDebugLog("■■■　問合せ客メールアドレス検索");
		JBSbatCommonDBInterface selectedData = searchTiawsKyakuByTasKyakuMlad(fromMlad);
		if (selectedData == null)
		{
			// (10)-(b)
			// (11)-(c)
			// 申込明細検索
			super.logPrint.printDebugLog("■■■　申込明細検索");
			selectedData = searchTiawsKyakuByMkmsMlad(fromMlad);
		}
		return selectedData;
	}

	/**
	 * 問合せ客メールアドレス検索
	 * @param fromMlad FROMアドレス
	 * @return 問合せ客情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchTiawsKyakuByTasKyakuMlad(String fromMlad) throws Exception
	{
		JBSbatCommonDBInterface selectedData = null;
		//ANK-2928-00-00 ADD START
//		executeCK_T_PROSCST_CR_SELECT_002(new String[]{fromMlad, fromMlad});
		executeCK_T_PROSCST_CR_SELECT_002(new String[]{fromMlad, fromMlad,fromMlad, fromMlad});
		//ANK-2928-00-00 ADD END
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_CK_T_PROSCST);
		if (selectedDataList != null && selectedDataList.size() > 0)
		{
			selectedData = selectedDataList.get(0);
		}
		return selectedData;
	}

	/**
	 * 申込明細の申込連絡先メールアドレス検索
	 * @param fromMlad FROMアドレス
	 * @return 問合せ客情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface searchTiawsKyakuByMkmsMlad(String fromMlad) throws Exception
	{
		JBSbatCommonDBInterface selectedData = null;
		executeCK_T_PROSCST_CR_SELECT_003(new String[]{fromMlad});
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_CK_T_PROSCST);
		if (selectedDataList != null && selectedDataList.size() > 0)
		{
			selectedData = selectedDataList.get(0);
		}
		return selectedData;
	}

	/**
	 * Webメールでない場合の問合せ客検索
	 * @param tiawsKyakuNo 問合せ客番号
	 * @param fromMlad FROMアドレス
	 * @return 問合せ客番号
	 * @throws Exception 例外
	 */
	private String searchTiawsKyakuForNotWebMail(String tiawsKyakuNo, String fromMlad) throws Exception
	{
		String resTiawsKyakuNo = tiawsKyakuNo;
		// (登録済)サービス契約番号もお客様情報も取得できない場合
		super.logPrint.printDebugLog("■(登録済)サービス契約番号もお客様情報も取得できない場合");
		boolean existTiawsData = false;
		if (resTiawsKyakuNo != null && !("".equals(resTiawsKyakuNo.trim())))
		{
			// (11)-(a) 問合せ客存在確認
			super.logPrint.printDebugLog("■■■　問合せ客存在確認");
			existTiawsData = existTiawsKyakuData(resTiawsKyakuNo);
		}

		if (existTiawsData == false)
		{
			// メールアドレスから問合せ客検索
			super.logPrint.printDebugLog("■■■　メールアドレスから問合せ客検索");
			JBSbatCommonDBInterface tiawsKyakuData = searchTiawsKyakuByMlad(fromMlad);
			if (tiawsKyakuData != null)
			{
				resTiawsKyakuNo = tiawsKyakuData.getString(JBSbatCK_T_PROSCST.PROSCST_NO);
			}
		}
		return resTiawsKyakuNo;
	}

	/**
	 * 問合せ客登録・更新
	 * @param tiawsKyakuData (登録済)問合せ客データ
	 * @param webMailHonbunList Webメール本文のList
	 * @return 問合せ客番号
	 * @throws Exception 例外
	 */
	private String entryOrUpdateTiawsKyaku(JBSbatCommonDBInterface tiawsKyakuData, List<String> webMailHonbunList) throws Exception
	{
		String tiawsKyakuNo = null;
		if (tiawsKyakuData != null)
		{
			super.logPrint.printDebugLog("■(登録済)問合せ客データが取得されている場合");
			// (12)-(a) 問合せ客更新
			super.logPrint.printDebugLog("■■■　問合せ客更新");
			updateTiawsKyaku(tiawsKyakuData, webMailHonbunList);
			tiawsKyakuNo = tiawsKyakuData.getString(JBSbatCK_T_PROSCST.PROSCST_NO);
		}
		else
		{
			// (12)-(b) 問合せ客登録
			super.logPrint.printDebugLog("■■■　問合せ客登録");
			tiawsKyakuNo = entryTiawsKyaku(webMailHonbunList);
		}
		return tiawsKyakuNo;
	}

	/**
	 * 問合せ客存在確認
	 * @param tiawsKyakuNo 問合せ客番号
	 * @return 問合せ客データ存在有無
	 * @throws Exception 例外
	 */
	private boolean existTiawsKyakuData(String tiawsKyakuNo) throws Exception
	{
		boolean res = false;
		int count = 0;
		executeCK_T_PROSCST_CR_SELECT_004(new String[]{tiawsKyakuNo});
		List<JBSbatCommonDBInterface> selectedDataList = JCRBatCommon.getSelectedDataList(db_CK_T_PROSCST);
		if (selectedDataList != null && selectedDataList.size() > 0)
		{
			count = selectedDataList.get(0).getBigDecimal(CNT).intValue();
		}
		if (count > 0)
		{
			res = true;
		}
		return res;
	}

	/**
	 * 問合せ客更新
	 * @param tiawsKyakuData 既存問合せ客情報
	 * @param webMailHonbunList Webメール本文情報
	 * @throws Exception 例外
	 */
	private void updateTiawsKyaku(JBSbatCommonDBInterface tiawsKyakuData, List<String> webMailHonbunList) throws Exception
	{
		boolean needUpdate = false;

		// 問合せ客名の更新要否確認
		// 問合せ客名
		String tiawsKyakuNm = tiawsKyakuData.getString(JBSbatCK_T_PROSCST.PROSCST_NM);
		if (tiawsKyakuNm == null || "".equals(tiawsKyakuNm.trim()))
		{
			tiawsKyakuNm = webMailHonbunList.get(2);
			if (JCRBatCommon.isKisyuIzonNmAd(tiawsKyakuNm) == false)
			{
				tiawsKyakuNm = null;
			}
			else
			{
				tiawsKyakuNm = JCRUtilCommon.adjustCharSize(tiawsKyakuNm, TAWS_KYAKU_NM_BYTE_SU, "").trim();
			}
			if (tiawsKyakuNm != null && !("".equals(tiawsKyakuNm.trim())))
			{
				needUpdate = true;
			}
		}

		// 問合せ客カナ名の更新要否確認
		// 問合せ客カナ名
		String tiawsKyakuKana = tiawsKyakuData.getString(JBSbatCK_T_PROSCST.PROSCST_KANA);
		if (tiawsKyakuKana == null || "".equals(tiawsKyakuKana.trim()))
		{
			tiawsKyakuKana = webMailHonbunList.get(3);
			if (JCRBatCommon.isZenkakuESuujiKana(tiawsKyakuKana) == false)
			{
				tiawsKyakuKana = null;
			}
			else
			{
				tiawsKyakuKana = JCRUtilCommon.adjustCharSize(tiawsKyakuKana, TAWS_KYAKU_KANA_BYTE_SU, "").trim();
			}
			if (tiawsKyakuKana != null && !("".equals(tiawsKyakuKana.trim())))
			{
				needUpdate = true;
			}
		}

		// 問合せ客電話番号の更新要否確認
		// 問合せ客電話番号
		String tiawsKyakuTelNo = tiawsKyakuData.getString(JBSbatCK_T_PROSCST.PROSCST_TELNO);
		if (tiawsKyakuTelNo == null || "".equals(tiawsKyakuTelNo.trim()))
		{
			tiawsKyakuTelNo = webMailHonbunList.get(5).trim();
			if (tiawsKyakuTelNo != null)
			{
				tiawsKyakuTelNo = tiawsKyakuTelNo.replaceAll("-", "");
			}
			if (JCRBatCommon.isTel2(tiawsKyakuTelNo) == false)
			{
				tiawsKyakuTelNo = null;
			}
			if (tiawsKyakuTelNo != null && !("".equals(tiawsKyakuTelNo.trim())))
			{
				needUpdate = true;
			}
		}

		if (needUpdate)
		{
			String[] setParam = new String[] {
												tiawsKyakuNm,
												tiawsKyakuKana,
												tiawsKyakuTelNo,
												JCRBatCommon.getSysDateTime(),
												commonItem.getBatchUserId()
											};
			// 問合せ客更新
			executeCK_T_PROSCST_PKUPDATE(setParam, new String[]{tiawsKyakuData.getString(JBSbatCK_T_PROSCST.PROSCST_NO)});
		}
	}

	/**
	 * 問合せ客登録
	 * @param webMailHonbunList Webメール本文情報
	 * @return 問合せ客番号
	 * @throws Exception 例外
	 */
	private String entryTiawsKyaku(List<String> webMailHonbunList) throws Exception
	{
		// 問合せ客番号
		String tiawsKyakuNo = JCCBatCommon.getFormatedNextSeq(commonItem, JCRStrConst.SEQ_PROSCST_NO, "", KETA_TIAWS_KYAKU_NO);

		String sysDtm = JCRBatCommon.getSysDateTime();		// システム日時
		String batchUserId = commonItem.getBatchUserId();	// バッチユーザーID

		// 問合せ客名
		String name = webMailHonbunList.get(2);
		if (JCRBatCommon.isKisyuIzonNmAd(name) == false)
		{
			name = null;
		}
		else
		{
			name = JCRUtilCommon.adjustCharSize(name, TAWS_KYAKU_NM_BYTE_SU, "").trim();
		}

		// 問合せ客カナ名
		String kana = webMailHonbunList.get(3);
		if (JCRBatCommon.isZenkakuESuujiKana(kana) == false)
		{
			kana = null;
		}
		else
		{
			kana = JCRUtilCommon.adjustCharSize(kana, TAWS_KYAKU_KANA_BYTE_SU, "").trim();
		}

		// 問合せ客電話番号
		String tel = webMailHonbunList.get(5);
		if (tel != null)
		{
			tel = tel.replaceAll("-", "");
		}
		if (JCRBatCommon.isTel2(tel) == false)
		{
			tel = null;
		}

		// 問合せ客メールアドレス
		String mlad = webMailHonbunList.get(4);
		if (JCRBatCommon.isEMail1(mlad) == false)
		{
			mlad = null;
		}

		String[] param = new String[]{
				tiawsKyakuNo,				// 問合せ客番号
				name,						// 問合せ客名
				kana,						// 問合せ客カナ名
				tel,						// 問合せ客電話番号
				null,						// 問合せ客携帯電話番号
				mlad,						// 問合せ客メールアドレス
				null,						// 問合せ客性別コード
				null,						// 問合せ客生年月日
				null,						// 問合せ客住所コード
				null,						// 問合せ客郵便番号
				null,						// 問合せ客都道府県名
				null,						// 問合せ客市区町村名
				null,						// 問合せ客大字通称名
				null,						// 問合せ客字丁目名
				null,						// 問合せ客番地号
				null,						// 問合せ客住所補記・建物名
				null,						// 問合せ客住所補記・部屋番号
				null,						// お客様ランクコード
				null,						// 連絡手段コード
				null,						// 連絡手段補記
				"0",						// 削除対象外フラグ
				null,						// お客様特定用申込書番号
				mlad,						// 申告アドレス
				//ANK-2928-00-00 ADD START
				null,						// 申告アドレス２
				null,						// 申告アドレス３
				//ANK-2928-00-00 ADD END
				null,						// 問合せ客補足備考
				sysDtm,						// 登録年月日時分秒
				batchUserId,				// 登録オペレータアカウント
				sysDtm,						// 更新年月日時分秒
				batchUserId,				// 更新オペレータアカウント
				null,						// 削除年月日時分秒
				null,						// 削除オペレータアカウント
				"0"							// 無効フラグ
		};

		// 問合せ客登録
		executeCK_T_PROSCST_PKINSERT(param);

		return tiawsKyakuNo;
	}

	/**
	 * キューBOX番号取得(メールタイトルから)
	 * @param title
	 * @return キューBOX番号
	 * @throws Exception 例外
	 */
	private String getQueBoxNoFromTitle(String title) throws Exception
	{
		// (13)-(a) カテゴリーの取得(メールタイトルから)
		super.logPrint.printDebugLog("■■■　カテゴリーの取得(メールタイトルから)");
		if (title == null)
		{
			return null;
		}
		String[] ctgrs = title.split("\\|");
		StringBuilder ctgrGetKey = new StringBuilder(MAX_CTGR_COUNT * CTGR_BYTE_SU);
		for (int j = 0; j < ctgrs.length; j++)
		{
			ctgrGetKey.insert(0, JCRBatCommon.fillHalfSpace(ctgrs[j], CTGR_BYTE_SU, false));
		}
		for (int j = 0; j < (MAX_CTGR_COUNT - ctgrs.length); j++)
		{
			// 最大カテゴリー数に満たない分スペースを追加(カテゴリー別キューBOX設定Mapに合わせるため)
			ctgrGetKey.append(JCRBatCommon.fillHalfSpace("", CTGR_BYTE_SU, true));
		}
		// (13)-(b) カテゴリー別キューBOX設定MapからキューBOX番号取得
		super.logPrint.printDebugLog("■■■　カテゴリー別キューBOX設定MapからキューBOX番号取得");
		return ctgrQueMap.get(ctgrGetKey.toString());
	}

	/**
	 * キューBOX存在確認
	 * (存在しない場合は、不明キューBOXで検索)
	 * @param queBoxNo キューBOX番号
	 * @param mlad 受信メールアドレス
	 * @return 存在確認済のキューBOX情報
	 * @throws Exception 例外
	 */
	private JBSbatCommonDBInterface checkQueBox(String queBoxNo, String mlad) throws Exception
	{
		JBSbatCommonDBInterface queBoxData = null;
		List<JBSbatCommonDBInterface> selectedDataList = null;
		if (queBoxNo != null)
		{
			// (14)-(a) キューBOX番号検索
			super.logPrint.printDebugLog("■■■　キューBOX番号検索");
			String sysDt = JCRBatCommon.getSysDate();		// システム日(YYYYMMDD)
			// 引数のキューBOX番号でキューBOXテーブルを検索
			executeCR_T_QUE_BOX_CR_SELECT_006(new String[]{queBoxNo, sysDt, sysDt});
			selectedDataList = JCRBatCommon.getSelectedDataList(db_CR_T_QUE_BOX);
			if (selectedDataList != null)
			{
				queBoxData = selectedDataList.get(0);
			}
		}

		if (queBoxData == null)
		{
			// (14)-(b) 不明キューBOX番号検索

			// (14)-(b)-(1) 受信メールアドレスから不明キューBOX番号を取得
			super.logPrint.printDebugLog("■■■　受信メールアドレスから不明キューBOX番号を取得");
			String wkQueBoxNo = rcvMladHumeiQueMap.get(mlad);
			if (wkQueBoxNo == null || "".equals(wkQueBoxNo.trim()))
			{
				// ECRB0250KW:データが登録されていません。(%1%)
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0250KW,
						new String[]{"プロパティーに不明キューBOX設定が必要です。[受信アドレス]:" + mlad});
			}
			// (14)-(b)-(2) 不明キューBOX番号でキューBOXテーブルを検索
			super.logPrint.printDebugLog("■■■　不明キューBOX番号でキューBOXテーブルを検索");
			String sysDt = JCRBatCommon.getSysDate();		// システム日(YYYYMMDD)
			executeCR_T_QUE_BOX_CR_SELECT_006(new String[]{wkQueBoxNo, sysDt, sysDt});
			selectedDataList = JCRBatCommon.getSelectedDataList(db_CR_T_QUE_BOX);
			if (selectedDataList == null)
			{
				// ECRB0250KW:データが登録されていません。(%1%)
				String[] param = new String[]{"キューBOXテーブル;キューBOX番号:" + queBoxNo + "/" + wkQueBoxNo};
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0250KW, param);
			}
			queBoxData = selectedDataList.get(0);
		}
		return queBoxData;
	}

	/**
	 * 対応記録関連データ登録処理
	 * @param mailData メール受信データ
	 * @param taioKirokData 対応記録データ
	 * @param svcKeiNo サービス契約番号
	 * @param tiawsKyakuNo 問合せ客番号
	 * @param queBoxNo キューBOX番号
	 * @param workGroupNm 業務個別設定組織名
	 * @param isWebMail Webメールの場合true
	 * @return NGワード情報
	 * 			Map
	 * 				キー:NGワード	値:詳細情報Map
	 * 										|
	 * 									キー:対応記録番号	値:タイトル
	 * 									キー:対応記録番号	値:タイトル
	 * 												・
	 * 												・
	 * @throws Exception 例外
	 */
	private Map<String, Map<String, String>> entry(JBSbatCommonDBInterface mailData,
													JBSbatCommonDBInterface taioKirokData,
													String svcKeiNo,
													String tiawsKyakuNo,
													String queBoxNo,
													String workGroupNm,
													boolean isWebMail) throws Exception
	{

		String taioKirokNo = null;
		if (taioKirokData == null)
		{
			// 新規登録の場合
			// (15)-(a) 対応記録番号取得
			super.logPrint.printDebugLog("■■■　対応記録番号取得");
			taioKirokNo = JCCBatCommon.getFormatedNextSeq(commonItem, JCRStrConst.SEQ_TAIO_KIROK_NO, "", KETA_TAIO_KIROK_NO);
		}
		else
		{
			taioKirokNo = taioKirokData.getString(JBSbatCR_T_TAIO_KIROK.TAIO_KIROK_NO);
		}

		String honbun = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_TEXT);
		String title = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_TITLE);

		// (15)-(b) NGワードチェック
		super.logPrint.printDebugLog("■■■　NGワードチェック");
		boolean existNGWord = false;
		List<String> ngWordInfo = checkNgWord((title + honbun));

		Map<String, Map<String, String>> ngwdMap = null;	// NGワード情報
		if (ngWordInfo != null)
		{
			existNGWord = true;

			// NGワード情報生成
			ngwdMap = new HashMap<String, Map<String, String>>();

			for (int i = 0; i < ngWordInfo.size(); i++)
			{
				String ngwd = ngWordInfo.get(i);
				Map<String, String> map = new HashMap<String, String>();
				map.put(taioKirokNo, title);
				ngwdMap.put(ngwd, map);
			}
		}

		String taioKirkDtlNo = null;
		if (taioKirokData != null)
		{
			// (15)-(c) 対応記録更新
			updateTaioKirok(taioKirokData, mailData, existNGWord);
			taioKirkDtlNo = taioKirokData.getString(JBSbatCR_T_TAIOKRK_DTL.TAIO_KIROK_DTL_NO);
		}
		else
		{
			// (15)-(d) 対応記録登録
			super.logPrint.printDebugLog("■■■　対応記録登録");
			entryTaioKirok(taioKirokNo,
						svcKeiNo,
						tiawsKyakuNo,
						queBoxNo,
						mailData,
						existNGWord);
		}

		// (15)-(e) 対応記録明細登録
		super.logPrint.printDebugLog("■■■　対応記録明細登録");
		String mailRcvTaioKirkDtlNo = entryTaioKirkDtl(taioKirokNo, taioKirkDtlNo, mailData);

		if (isWebMail)
		{
			// (15)-(f)-(1) 対応記録内訳登録
			super.logPrint.printDebugLog("■■■　対応記録内訳登録");
			entryTaiokirkUcwk(taioKirokNo);
			// (15)-(f)-(2) 対応記録内訳カテゴリー登録
			super.logPrint.printDebugLog("■■■　対応記録内訳カテゴリー登録");
			entryTaiokirkUwCtgr(taioKirokNo, workGroupNm, title);
			// (15)-(f)-(3) 対応記録内訳抽出ワーク登録
			super.logPrint.printDebugLog("■■■　対応記録内訳抽出ワーク登録");
			JCRBatCommon.entryTiokrUwCstWkForNew(commonItem, taioKirokNo);
		}

		// (15)-(g) 添付ファイル情報取得
		super.logPrint.printDebugLog("■■■　添付ファイル情報取得");
		List<JBSbatCommonDBInterface> tempFileList = getTempFile(mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_RCV_NO));

		if (tempFileList != null && tempFileList.size() > 0)
		{
			// (15)-(h) 対応履歴電子ファイル管理登録
			super.logPrint.printDebugLog("■■■　対応履歴電子ファイル管理登録");
			entryTaiorkEFileKanri(tempFileList, taioKirokNo, mailRcvTaioKirkDtlNo);
		}

		// (15)-(i) 問合せモニター集計用データ登録
		super.logPrint.printDebugLog("■■■　問合せモニター集計用データ登録");
		entryTiawsMonitorData(taioKirokNo, queBoxNo, existNGWord, taioKirokData);

		return ngwdMap;
	}

	/**
	 * NGワードチェック
	 * @param text 対象文字
	 * @return NGワードが存在する場合、NGワードのList
	 * @throws Exception 例外
	 */
	private List<String> checkNgWord(String text) throws Exception
	{
		List<String> ngWordInfo = null;
		if (text != null)
		{
			// NGワードチェック
			for (int i = 0; i < ngWordList.size(); i++)
			{
				String ngword = ngWordList.get(i);
				if (text.contains(ngword))
				{
					if (ngWordInfo == null)
					{
						ngWordInfo = new ArrayList<String>();
					}
					ngWordInfo.add(ngword);
				}
			}
		}
		return ngWordInfo;
	}

	/**
	 * 対応記録更新
	 * @param taioKirokData 対応記録データ
	 * @param mailData メール受信データ
	 * @param existNGWord NGワード有無
	 * @throws Exception 例外
	 */
	private void updateTaioKirok(JBSbatCommonDBInterface taioKirokData,
								JBSbatCommonDBInterface mailData,
								boolean existNGWord) throws Exception
	{
		String taioKirokNo = taioKirokData.getString(JBSbatCR_T_TAIO_KIROK.TAIO_KIROK_NO);

		// クローズ不可コード
		String closeFailCd = taioKirokData.getString(JBSbatCR_T_TAIO_KIROK.CLOSE_FAIL_CD);
		if (existNGWord)
		{
			closeFailCd = JCRStrConst.CD_DIV_CLOSE_FAIL_CD_HUKANOU_DTL;
		}

		// 対応記録履歴生成
		String rireki = makeRireki(taioKirokNo, mailData, false);
		String[] param = new String[]{
								rireki,								// 対応記録履歴
								closeFailCd,						// クローズ不可コード
								JCRBatCommon.getSysDateTimeStamp(),	// システム日時
								commonItem.getBatchUserId(),		// バッチユーザー
								taioKirokNo							// 対応記録番号
							};

		// 対応記録更新
		executeCR_T_TAIO_KIROK_CR_UPDATE_003(param);
	}

	/**
	 * 対応記録履歴生成
	 * @param taioKirokNo 対応記録番号
	 * @param mailData 受信メール情報
	 * @param isNew 新規登録の場合:true
	 * @return 生成された対応記録履歴
	 * @throws Exception 例外
	 */
	private String makeRireki(String taioKirokNo, JBSbatCommonDBInterface mailData, boolean isNew) throws Exception
	{
		String mailHeader = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_HEADER_IF);				// メールヘッダー情報
		if (mailHeader == null)
		{
			mailHeader = "";
		}
		String honbun = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_TEXT);						// メール本文
		if (honbun == null)
		{
			honbun = "";
		}
		String title = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_TITLE);						// メールタイトル
		if (title == null || "".equals(title))
		{
			title = DEFAULT_TITLE;
		}
		String rcvDtm = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_RCV_DTM).substring(0, 14);	// メール受信年月日時分秒
		String fromMlad = mailData.getString(JBSbatCC_T_MLAD.MLAD);								// (From)メールアドレス

		// TOアドレス取得
		StringBuilder toMlad = new StringBuilder();
		String mailRcvNo = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_RCV_NO);
		String[] params = new String[]{mailRcvNo, "01"};
		executeCC_T_MLAD_CR_SELECT_001(params);
		List<JBSbatCommonDBInterface> toMladList = JCRBatCommon.getSelectedDataList(db_CC_T_MLAD);
		if (toMladList != null)
		{
			for (int i = 0; i < toMladList.size(); i++)
			{
				JBSbatCommonDBInterface toMladData = toMladList.get(i);
				String toMladWk = toMladData.getString(JBSbatCC_T_MLAD.MLAD);
				if (i != 0)
				{
					toMlad.append(",");
				}
				toMlad.append(toMladWk);
			}
		}

		StringBuilder sb = new StringBuilder();

		if (isNew)
		{
			sb.append("------------------------------------------------------------").append(JCRStrConst.KAIGYO_CD);
			sb.append("◇新規作成：　（自動メール取込） ").append(JCRBatCommon.formatDatetimeSS(JCRBatCommon.getSysDateTime())).append(JCRStrConst.KAIGYO_CD);
			sb.append("------------------------------------------------------------").append(JCRStrConst.KAIGYO_CD);
		}
		else
		{
			// 更新の場合
			executeCR_T_TAIO_KIROK_CR_SELECT_019(new String[]{taioKirokNo});
			JBSbatCommonDBInterface selectedData = db_CR_T_TAIO_KIROK.selectNext();
			String taioKirokRireki = selectedData.getString(JBSbatCR_T_TAIO_KIROK.TAIO_KIROK_RIREKI);

			// 対応記録履歴の終端改行コード付加処理
			taioKirokRireki = JCRUtilCommon.addCRLF(taioKirokRireki);

			sb.append(taioKirokRireki);
		}
		sb.append("◆メール受信：").append(JCRBatCommon.formatDatetimeSS(rcvDtm)).append(JCRStrConst.KAIGYO_CD);
		sb.append(JCRStrConst.KAIGYO_CD);
		sb.append("■ヘッダー").append(JCRStrConst.KAIGYO_CD);
		sb.append("・From：").append(fromMlad).append(JCRStrConst.KAIGYO_CD);
		sb.append("・To：").append(toMlad).append(JCRStrConst.KAIGYO_CD);
		sb.append("・Subject：").append(title).append(JCRStrConst.KAIGYO_CD);
		sb.append(JCRStrConst.KAIGYO_CD);
		sb.append("■メールヘッダー").append(JCRStrConst.KAIGYO_CD);
		sb.append(mailHeader).append(JCRStrConst.KAIGYO_CD);
		sb.append(JCRStrConst.KAIGYO_CD);
		sb.append("■本文").append(JCRStrConst.KAIGYO_CD);
		sb.append(honbun).append(JCRStrConst.KAIGYO_CD);
		sb.append("------------------------------------------------------------").append(JCRStrConst.KAIGYO_CD);

		commonItem.getLogPrint().printDebugLog("履歴情報：" + JCRStrConst.KAIGYO_CD + sb);

		return sb.toString();
	}

	/**
	 * 対応記録登録
	 * @param taioKirokNo 対応記録番号
	 * @param svcKeiNo サービス契約番号
	 * @param tiawsKyakuNo 問合せ客番号
	 * @param queBoxNo キューBOX番号
	 * @param mailData メール受信データ
	 * @param existNGWord NGワード有無
	 * @throws Exception 例外
	 */
	private void entryTaioKirok(String taioKirokNo,
								String svcKeiNo,
								String tiawsKyakuNo,
								String queBoxNo,
								JBSbatCommonDBInterface mailData,
								boolean existNGWord) throws Exception
	{
		String sysDtm = JCRBatCommon.getSysDateTime();		// システム日時
		String batchUserId = commonItem.getBatchUserId();	// バッチユーザーID
		// クローズ不可コード
		String closeFailCd = JCRStrConst.CD_DIV_CLOSE_FAIL_CD_KANOU;
		if (existNGWord)
		{
			closeFailCd = JCRStrConst.CD_DIV_CLOSE_FAIL_CD_HUKANOU_DTL;
		}
		// タイトル
		// ▼▼▼ ANK-3633-00-00 2019/05/22 MOD START ▼▼▼
//		String title = JCRBatCommon.adjustCharSize(mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_TITLE), 510, "").trim();
		String title = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_TITLE);
		if (!JCCBatCommon.isKetasuu2(title, "0", MAX_MAIL_TITLE))
		{
			// 超過分は削って登録する。
			title = title.substring(0, Integer.parseInt(MAX_MAIL_TITLE));
		}
		//▲▲▲ ANK-3633-00-00 2019/05/22 MOD END   ▲▲▲

		if (title == null || "".equals(title))
		{
			title = DEFAULT_TITLE;
		}
		String[] param = new String[]{
				taioKirokNo,										// 対応記録番号
				JCRStrConst.CD_DIV_TAIO_KIROK_STAT_ESCL,			// 対応記録ステータス
				mailUser,											// 対応ユーザーＩＤ
				svcKeiNo,											// サービス契約番号
				tiawsKyakuNo,										// 問合せ客番号
				null,												// ＭＹＢＯＸ番号
				queBoxNo,											// キューＢＯＸ番号
				null,												// ＭＹＢＯＸ格納年月日時分秒
				sysDtm,												// キューＢＯＸ格納年月日時分秒
				sysDtm,												// 対応開始年月日時分秒
				null,												// 対応完了年月日時分秒
				null,												// 対応キャンセル年月日時分秒
				null,												// 対応キャンセル再開年月日時分
				null,												// 対応クローズ年月日時分秒
				null,												// 対応クローズ再開年月日時分秒
				"0",												// トータル処理時間
				JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_ESCL,			// 問合せ状態コード
				closeFailCd,										// クローズ不可コード
				JCRStrConst.CD_DIV_TIAWS_UKTKSBT_CD_MAIL,			// 問合せ受付種別コード
				null,												// 簡易メモ
				title,												// タイトル
				makeRireki(taioKirokNo, mailData, true),			// 対応記録履歴
				sysDtm,												// 受付年月日時分秒
				"0",												// 一時保存有無
				null,												// コールバック希望年月日
				null,												// コールバック希望時間
				null,												// コールバック時間指定タイプコード
				null,												// 申込契機コード
				sysDtm,												// 登録年月日時分秒
				batchUserId,										// 登録オペレータアカウント
				sysDtm,												// 更新年月日時分秒
				batchUserId,										// 更新オペレータアカウント
				null,												// 削除年月日時分秒
				null,												// 削除オペレータアカウント
				"0"													// 無効フラグ
		};
		// 対応記録登録
		executeCR_T_TAIO_KIROK_PKINSERT(param);
	}

	/**
	 * 対応記録明細登録
	 * @param taioKirokNo 対応記録番号
	 * @param taioKirkDtlNo 対応記録明細番号
	 * @param mailData メール受信データ
	 * @return アクションタイプが「メール受信」の対応記録明細番号
	 * @throws Exception 例外
	 */
	private String entryTaioKirkDtl(String taioKirokNo,
									String taioKirkDtlNo,
									JBSbatCommonDBInterface mailData) throws Exception
	{
		String wkTaioKirkDtlNo = taioKirkDtlNo;
		if (taioKirkDtlNo == null)
		{
			// 新規問合せの場合
			wkTaioKirkDtlNo = "0000000001";
			// アクションタイプ「新規作成」の対応記録明細登録
			entryTaioKirkDtlSub(taioKirokNo, wkTaioKirkDtlNo, JCRStrConst.CD_DIV_ACTION_TYPE_CD_SHINKI, mailData);
		}

		String mailRcvTaioKirkDtlNo = JCRBatCommon.fillZero(Integer.toString((Integer.parseInt(wkTaioKirkDtlNo) + 1)), KETA_TAIO_KIROK_NO, false);
		// アクションタイプ「メール受信」の対応記録明細登録
		entryTaioKirkDtlSub(taioKirokNo, mailRcvTaioKirkDtlNo, JCRStrConst.CD_DIV_ACTION_TYPE_CD_MLJSN, mailData);

		return mailRcvTaioKirkDtlNo;
	}

	/**
	 * 対応記録明細登録(サブ)
	 * @param taioKirokNo 対応記録番号
	 * @param taioKirkDtlNo 対応記録明細番号
	 * @param actionTypeCd アクションタイプコード
	 * @param mailData メール受信データ
	 * @throws Exception 例外
	 */
	private void entryTaioKirkDtlSub(String taioKirokNo,
									String taioKirkDtlNo,
									String actionTypeCd,
									JBSbatCommonDBInterface mailData) throws Exception
	{
		String sysDtms = JCRBatCommon.getSysDateTimeStamp();	// システム日時(17桁)
		String sysDtm = sysDtms.substring(0, 14);				// システム日時(14桁)
		String batchUserId = commonItem.getBatchUserId();		// バッチユーザーID

		String mailRcvNo = null;
		String title = null;
		String honbun = null;
		String fromMlad = null;
		String headerSubject = null;
		String rcvDtm = null;
		String header = null;

		if (JCRStrConst.CD_DIV_ACTION_TYPE_CD_MLJSN.equals(actionTypeCd))
		{
			// アクションタイプコードが「メール受信」の場合
			mailRcvNo = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_RCV_NO);
			title = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_TITLE);
			headerSubject = title;
			if (title == null || "".equals(title))
			{
				title = DEFAULT_TITLE;
			}
			honbun = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_TEXT);
			fromMlad = mailData.getString(JBSbatCC_T_MLAD.MLAD);
			rcvDtm = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_RCV_DTM).substring(0, MAIL_DTM_BYTE_SU);
			header = mailData.getString(JBSbatCC_T_MAIL_RCV.MAIL_HEADER_IF);
		}

		String[] param = new String[]{
				taioKirokNo,		// 対応記録番号
				taioKirkDtlNo,		// 対応記録明細番号
				actionTypeCd,		// アクションタイプコード
				sysDtm,				// アクション開始年月日時分秒
				sysDtm,				// アクション完了年月日時分秒
				mailUser,			// 対応ユーザーＩＤ
				null,				// 問合せ内容
				null,				// 問合せ元名
				null,				// 回答内容
				null,				// コンタクト先コード
				null,				// メモ内容
				null,				// メモタイプコード
				"0",				// 編集中フラグ
				mailRcvNo,			// メール受信番号
				headerSubject,		// メールヘッダー内タイトル
				fromMlad,			// メールヘッダー内送信者メールアドレス
				null,				// メールヘッダー内宛先メールアドレス
				null,				// メールヘッダー内ＣＣメールアドレス
				null,				// メールヘッダー内メッセージＩＤ
				null,				// メールヘッダー内送信年月日時分秒
				rcvDtm,				// メールヘッダー内受信年月日時分秒
				null,				// メール送信番号
				title,				// メールタイトル
				honbun,				// メール受信本文
				fromMlad,			// 元メールアドレス
				header,				// メールヘッダー
				null,				// メールフッター
				null,				// メール本文
				null,				// 送信先メールアドレス
				null,				// 送信元メールアドレス
				null,				// ＣＣメールアドレス
				null,				// 送信メールタイプコード
				null,				// メール送信年月日時分秒
				null,				// 送信ユーザーＩＤ
				null,				// 送信状態コード
				null,				// 返信記号コード
				sysDtms,			// 登録年月日時分秒
				batchUserId,		// 登録オペレータアカウント
				sysDtms,			// 更新年月日時分秒
				batchUserId,		// 更新オペレータアカウント
				null,				// 削除年月日時分秒
				null,				// 削除オペレータアカウント
				"0",				// 無効フラグ
				null,				// 登録運用年月日
				null,				// 登録処理ID
				null,				// 更新運用年月日
				null,				// 更新処理ID
				null,				// 削除運用年月日
				null,				// 削除処理ID
				null				// 業務個別設定組織コード
		};
		// 対応記録明細登録
		executeCR_T_TAIOKRK_DTL_PKINSERT(param);
	}

	/**
	 * 対応記録内訳登録
	 * @param taioKirokNo 対応記録番号
	 * @throws Exception 例外
	 */
	private void entryTaiokirkUcwk(String taioKirokNo) throws Exception
	{
		String sysDtms = JCRBatCommon.getSysDateTimeStamp();	// システム日時
		String batchUserId = commonItem.getBatchUserId();		// バッチユーザーID

		String[] param = new String[]{
				taioKirokNo,									// 対応記録番号
				"0000000001",									// 対応記録内訳番号
				JCRStrConst.CD_DIV_TIAWS_OUTAI_TIAWS,			// 問合せ応対区分
				null,											// お客様の声
				null,											// ＣＳＲの声
				"1",											// 表示順序
				sysDtms,										// 登録年月日時分秒
				batchUserId,									// 登録オペレータアカウント
				sysDtms,										// 更新年月日時分秒
				batchUserId,									// 更新オペレータアカウント
				null,											// 削除年月日時分秒
				null,											// 削除オペレータアカウント
				"0"												// 無効フラグ
		};
		// 対応記録内訳登録
		executeCR_T_TAIOKRK_UCWK_PKINSERT(param);
	}

	/**
	 * 対応記録内訳カテゴリー登録
	 * @param taioKirokNo 対応記録番号
	 * @param workGroupNm 業務個別設定組織名(カテゴリーレベル1に設定)
	 * @param title メールタイトル(カテゴリー名取得用)
	 * @throws Exception 例外
	 */
	private void entryTaiokirkUwCtgr(String taioKirokNo, String workGroupNm, String title) throws Exception
	{
		String sysDtms = JCRBatCommon.getSysDateTimeStamp();					// システム日時
		String batchUserId = commonItem.getBatchUserId();						// バッチユーザーID

		String[] ctgrs = new String[0];
		if (title != null)
		{
			ctgrs = title.split("\\|");
		}

		// ワークグループ名を含めてカテゴリーのListを生成
		List<String> ctgrList = new ArrayList<String>();
		ctgrList.add(workGroupNm);
		for (int i = (ctgrs.length - 1); i >= 0; i--)
		{
			// タイトルのカテゴリーレベルは一番後ろがレベル1
	// ▼▼▼ ANK-3633-00-00 2019/05/22 MOD START ▼▼▼
	//		ctgrList.add(ctgrs[i].trim());
			String ctgrName = ctgrs[i].trim();
			if (!JCRUtilCommon.isNull(ctgrName) && (!JCCBatCommon.isKetasuu2(ctgrName, "0", MAX_SIZE_UWCTGRNM)))
			{
				super.logPrint.printDebugLog("※対応記録内訳カテゴリー名の桁数調整 対応記録番号=[" + taioKirokNo + "]");
				ctgrName = ctgrName.substring(0, Integer.parseInt(MAX_SIZE_UWCTGRNM));
			}
			ctgrList.add(ctgrName);
	//▲▲▲ ANK-3633-00-00 2019/05/22 MOD END   ▲▲▲
		}

		for (int i = 0; i < ctgrList.size(); i++)
		{
			String[] param = new String[]{
					taioKirokNo,												// 対応記録番号
					"0000000001",												// 対応記録内訳番号
					JCRBatCommon.fillZero(Integer.toString(i + 1), 3, false),	// 対応記録内訳カテゴリーレベル
					ctgrList.get(i),											// 対応記録内訳カテゴリー名
					sysDtms,													// 登録年月日時分秒
					batchUserId,												// 登録オペレータアカウント
					sysDtms,													// 更新年月日時分秒
					batchUserId,												// 更新オペレータアカウント
					null,														// 削除年月日時分秒
					null,														// 削除オペレータアカウント
					"0"															// 無効フラグ
			};
			// 対応記録内訳カテゴリー登録
			executeCR_T_TAIOKRK_UW_CTGR_PKINSERT(param);
		}
	}

	/**
	 * 問合せモニター集計用データ登録
	 * @param taioKirokNo 対応記録番号
	 * @param queBoxNo キューBOX番号
	 * @param existNGWord NGワードが存在した場合:true
	 * @param taioKirokData 対応記録データ
	 * @throws Exception
	 */
	private void entryTiawsMonitorData(String taioKirokNo, String queBoxNo, boolean existNGWord, JBSbatCommonDBInterface taioKirokData) throws Exception
	{
		String userId = mailUser;
		if (taioKirokData != null)
		{
			// 既存対応記録に紐付くメールの場合
			userId = taioKirokData.getString(JBSbatCR_T_TAIO_KIROK.TAIO_USER_ID);
		}
		String userNm = JCRBatCommon.getUserNm(commonItem, userId);		// ユーザー名取得
		if (userNm == null || "".equals(userNm))
		{
			userNm = userId;
		}

		// ワークグループ取得
		String workGroupCd = JCRBatCommon.getWorkGroupCd(commonItem, userId, queBoxNo);

		if (taioKirokData == null)
		{
			// 問合せモニターデータ登録
			JCRBatCommon.entryTiawsMonitorData(commonItem, JCRStrConst.DATA_SBT_CD_NEW, taioKirokNo, userId, userNm, workGroupCd);
			// 問合せキュー移動データ登録
			JCRBatCommon.entryTiawsMontQueMvData(commonItem, JCRStrConst.DATA_SBT_CD_UKETSUKE, taioKirokNo, queBoxNo, workGroupCd, userId);
		}

		if (existNGWord)
		{
			// NGワードありの場合
			// 問合せモニターデータ登録
			JCRBatCommon.entryTiawsMonitorData(commonItem, JCRStrConst.DATA_SBT_CD_NGWORD, taioKirokNo, userId, userNm, workGroupCd);
		}
	}

	/**
	 * 添付ファイル情報取得
	 * @param mailRcvNo メール受信番号
	 * @return 添付ファイル情報
	 * @throws Exception 例外
	 */
	private List<JBSbatCommonDBInterface> getTempFile(String mailRcvNo) throws Exception
	{
		executeCC_T_TEMP_FILE_CR_SELECT_003(new String[]{mailRcvNo});
		return JCRBatCommon.getSelectedDataList(db_CC_T_TEMP_FILE);
	}

	/**
	 * 対応履歴電子ファイル管理登録
	 * @param tempFileList 添付ファイル情報List
	 * @param taioKirokNo 対応記録番号
	 * @param taioKirkDtlNo 対応記録明細番号
	 * @throws Exception 例外
	 */
	private void entryTaiorkEFileKanri(List<JBSbatCommonDBInterface> tempFileList, String taioKirokNo, String taioKirkDtlNo) throws Exception
	{
		String sysDtm = JCRBatCommon.getSysDateTimeStamp();			// システム日時
		String batchUserId = commonItem.getBatchUserId();			// バッチユーザーID

		for (int i = 0; i < tempFileList.size(); i++)
		{
			JBSbatCommonDBInterface tempFileData = tempFileList.get(i);
			String fileNm = tempFileData.getString(JBSbatCC_T_TEMP_FILE.FILE_NM);
			String eFileKanriNo = tempFileData.getString(JBSbatCC_T_TEMP_FILE.EFILE_KANRI_NO);
			String addDtm = tempFileData.getString(JBSbatCC_T_TEMP_FILE.ADD_DTM);
			String torkEfileKnriNo = JCCBatCommon.getFormatedNextSeq(commonItem, JCRStrConst.SEQ_TORK_EFILE_KNRI_NO, "", KETA_TORK_EFILE_KNRI_NO);

			// 対応記録用データ登録
			String[] param = new String[]{
					torkEfileKnriNo,								// 対応履歴電子ファイル管理番号
					JCRStrConst.CD_DIV_BUNSHO_SBT_CD_TAIOKRK,		// 文書種別コード
					taioKirokNo,									// 対応記録番号
					null,											// 対応記録明細番号
					null,											// クエリ番号
					eFileKanriNo,									// 電子ファイル管理番号
					fileNm,											// 対応履歴文書ファイル名
					addDtm,											// 対応履歴文書作成年月日時分秒
					null,											// 業務個別設定組織コード
					null,											// 業務個別設定立場コード
					sysDtm,											// 登録年月日時分秒
					batchUserId,									// 登録オペレータアカウント
					sysDtm,											// 更新年月日時分秒
					batchUserId,									// 更新オペレータアカウント
					null,											// 削除年月日時分秒
					null,											// 削除オペレータアカウント
					"0"												// 無効フラグ
			};
			// 対応履歴電子ファイル管理登録
			executeCR_T_TORK_EFILE_KNRI_PKINSERT(param);

			torkEfileKnriNo = JCCBatCommon.getFormatedNextSeq(commonItem, JCRStrConst.SEQ_TORK_EFILE_KNRI_NO, "", KETA_TORK_EFILE_KNRI_NO);

			// 対応記録明細用データ登録
			param = new String[]{
					torkEfileKnriNo,								// 対応履歴電子ファイル管理番号
					JCRStrConst.CD_DIV_BUNSHO_SBT_CD_TAIOKRK_DTL,	// 文書種別コード
					taioKirokNo,									// 対応記録番号
					taioKirkDtlNo,									// 対応記録明細番号
					null,											// クエリ番号
					eFileKanriNo,									// 電子ファイル管理番号
					fileNm,											// 対応履歴文書ファイル名
					addDtm,											// 対応履歴文書作成年月日時分秒
					null,											// 業務個別設定組織コード
					null,											// 業務個別設定立場コード
					sysDtm,											// 登録年月日時分秒
					batchUserId,									// 登録オペレータアカウント
					sysDtm,											// 更新年月日時分秒
					batchUserId,									// 更新オペレータアカウント
					null,											// 削除年月日時分秒
					null,											// 削除オペレータアカウント
					"0"												// 無効フラグ
			};
			// 対応履歴電子ファイル管理登録
			executeCR_T_TORK_EFILE_KNRI_PKINSERT(param);
		}
	}

	/**
	 * NGワードデータ生成(NGワード検知メール送信用)
	 * @param kizonNgWordData 既存NGワードデータ
	 * @param ngwdMap 登録処理で取得したNGワードデータ
	 * @return NGワード検知メール送信用NGワードデータ
	 * @throws Exception 例外
	 */
	private Map<String, List<Map<String, String>>> setNgWordDataForMail(Map<String, List<Map<String, String>>> kizonNgWordData,
																		Map<String, Map<String, String>> ngwdMap) throws Exception
	{
		Map<String, List<Map<String, String>>> newNgWordData = kizonNgWordData;

		//	ngwdMap
		//		キー:NGワード	値:詳細情報Map(ngwdDtlMap)
		//								|
		//							キー:対応記録番号	値:タイトル
		if (ngwdMap != null && ngwdMap.size() > 0)
		{
			// NGワードがある場合、NGワード検知メール送信用にデータを退避

			Set<String> keySet = ngwdMap.keySet();
			Iterator<String> it = keySet.iterator();
			while (it.hasNext())
			{
				String ngWord = it.next();		// NGワード
				Map<String, String> ngwdDtlMap = ngwdMap.get(ngWord);	// 対応記録番号とタイトルのMap

				// 既登録NGワードデータを検索
				List<Map<String, String>> ngwdList = kizonNgWordData.get(ngWord);

				if (ngwdList == null)
				{
					// 登録済みデータがない場合
					ngwdList = new ArrayList<Map<String, String>>();
				}
				ngwdList.add(ngwdDtlMap);
				newNgWordData.put(ngWord, ngwdList);
			}
		}
		return newNgWordData;
	}

	/**
	 * メール受信更新
	 * (既読に更新する)
	 * @param mailRcvNo メール受信番号
	 * @param status メール受信ステータス
	 * @throws Exception 例外
	 */
	private void updateMailRcv(String mailRcvNo, String status) throws Exception
	{
		String[] setParam = new String[]{
				status,
				JCRBatCommon.getSysDateTime(),
				commonItem.getBatchUserId()
		};
		// メール受信更新
		executeCC_T_MAIL_RCV_PKUPDATE(setParam, new String[]{mailRcvNo});
	}

	/**
	 * キューBOX更新
	 * @param queBoxCountMap キューBOX更新情報Map[キューBOX番号、追加件数]
	 * @throws Exception 例外
	 */
	private void updateQueBox(Map<String, Integer> queBoxCountMap) throws Exception
	{
		String sysDtms = JCRBatCommon.getSysDateTimeStamp();	// システム日時
		String batchUserId = commonItem.getBatchUserId();		// バッチユーザーID

		Set<String> keys = queBoxCountMap.keySet();
		Iterator<String> it = keys.iterator();
		while (it.hasNext())
		{
			String queBoxNo = it.next();
			Integer count = queBoxCountMap.get(queBoxNo);
			// キューBOX更新
			executeCR_T_QUE_BOX_CR_UPDATE_001(new String[]{count.toString(), sysDtms, sysDtms, batchUserId, queBoxNo});
		}
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_WORK_PARAM_KNRI.close();
		db_CC_T_MAIL_RCV.close();
		db_CR_T_TAIO_KIROK.close();
		db_KK_T_SVC_KEI.close();
		db_CK_T_PROSCST.close();
		db_CR_T_QUE_BOX.close();
		db_CC_T_MLAD.close();
		db_CR_T_TAIOKRK_DTL.close();
		db_CR_T_TAIOKRK_UCWK.close();
		db_CR_T_TAIOKRK_UW_CTGR.close();
		db_CC_T_TEMP_FILE.close();
		db_CR_T_TORK_EFILE_KNRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/

		// データアクセスオブジェクトクローズ
		JCRBatCommon.closeDataAccessObj(commonItem);

	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * 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 executeZM_M_WORK_PARAM_KNRI_CR_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_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 executeCC_T_MAIL_RCV_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_CC_T_MAIL_RCV.selectBySqlDefine(paramList, CC_T_MAIL_RCV_CR_SELECT_001);
	}

	/**
	 * SQLKEY(CR_SELECT_014)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	対応記録番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TAIO_KIROK_CR_SELECT_014(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CR_T_TAIO_KIROK.selectBySqlDefine(paramList, CR_T_TAIO_KIROK_CR_SELECT_014);
	}

	/**
	 * SQLKEY(CR_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_CR_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_CR_SELECT_004);
	}

	/**
	 * SQLKEY(CR_SELECT_005)で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_CR_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_CR_SELECT_005);
	}

	/**
	 * SQLKEY(CR_SELECT_006)で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_SVC_KEI_CR_SELECT_006(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_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_CR_SELECT_006);
	}

	/**
	 * SQLKEY(CR_SELECT_007)で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_SVC_KEI_CR_SELECT_007(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_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_CR_SELECT_007);
	}

	/**
	 * SQLKEY(CR_SELECT_008)で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_SVC_KEI_CR_SELECT_008(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_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_CR_SELECT_008);
	}

	/**
	 * SQLKEY(CR_SELECT_009)で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_SVC_KEI_CR_SELECT_009(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_CR_SELECT_009);
	}

	/**
	 * SQLKEY(CR_SELECT_010)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	eoID
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_CR_SELECT_010(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_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_CR_SELECT_010);
	}

	/**
	 * SQLKEY(CR_SELECT_011)で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_011(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_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_CR_SELECT_011);
	}

	/**
	 * SQLKEY(CR_SELECT_012)で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_012(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_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_CR_SELECT_012);
	}

	/**
	 * SQLKEY(CR_SELECT_013)で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_013(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());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_CR_SELECT_013);
	}

	/**
	 * SQLKEY(CR_SELECT_014)で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_014(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_CR_SELECT_014);
	}

	/**
	 * 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 executeCK_T_PROSCST_CR_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		//ANK-2928-00-00 ADD START
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		//ANK-2928-00-00 ADD END

		// DBアクセスを実行します
		db_CK_T_PROSCST.selectBySqlDefine(paramList, CK_T_PROSCST_CR_SELECT_002);
	}

	/**
	 * SQLKEY(CR_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	申込連絡先メールアドレス
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_PROSCST_CR_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CK_T_PROSCST.selectBySqlDefine(paramList, CK_T_PROSCST_CR_SELECT_003);
	}

	/**
	 * SQLKEY(CR_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 executeCK_T_PROSCST_CR_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CK_T_PROSCST.selectBySqlDefine(paramList, CK_T_PROSCST_CR_SELECT_004);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	問合せ客名				PROSCST_NM
	 *		 	問合せ客カナ名				PROSCST_KANA
	 *		 	問合せ客電話番号				PROSCST_TELNO
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	PROSCST_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_PROSCST_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("PROSCST_NM", setParam[0]);
		setMap.setValue("PROSCST_KANA", setParam[1]);
		setMap.setValue("PROSCST_TELNO", setParam[2]);
		setMap.setValue("UPD_DTM", setParam[3]);
		setMap.setValue("UPD_OPEACNT", setParam[4]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("PROSCST_NO", whereParam[0]);

		// DBアクセスを実行します
		db_CK_T_PROSCST.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	問合せ客番号				PROSCST_NO
	 *		 	問合せ客名				PROSCST_NM
	 *		 	問合せ客カナ名				PROSCST_KANA
	 *		 	問合せ客電話番号				PROSCST_TELNO
	 *		 	問合せ客携帯電話番号				PROSCST_KTAI_TELNO
	 *		 	問合せ客メールアドレス				PROSCST_MLAD
	 *		 	問合せ客性別コード				PROSCST_SEX_CD
	 *		 	問合せ客生年月日				PROSCST_BIRTHD
	 *		 	問合せ客住所コード				PROSCST_AD_CD
	 *		 	問合せ客郵便番号				PROSCST_PCD
	 *		 	問合せ客都道府県名				PROSCST_STATE_NM
	 *		 	問合せ客市区町村名				PROSCST_CITY_NM
	 *		 	問合せ客大字通称名				PROSCST_OAZTSU_NM
	 *		 	問合せ客字丁目名				PROSCST_AZCHO_NM
	 *		 	問合せ客番地号				PROSCST_BNCHIGO
	 *		 	問合せ客住所補記・建物名				PROSCST_ADRTTM
	 *		 	問合せ客住所補記・部屋番号				PROSCST_ADRRM
	 *		 	お客様ランクコード				CUST_RANK_CD
	 *		 	連絡手段コード				RRK_WAY_CD
	 *		 	連絡手段補記				RRK_WAY_HOKI
	 *		 	削除対象外フラグ				DEL_TRGT_GAI_FLG
	 *		 	お客様特定用申込書番号				CUST_TOKUT_MSKMSHO_NO
	 *		 	申告アドレス				SKK_AD
	 *		 	申告アドレス２				SKK_AD_2
	 *		 	申告アドレス３				SKK_AD_3
	 *		 	問合せ客補足備考				PROSCST_HSK_BIKO
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_PROSCST_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("PROSCST_NO", setParam[0]);
		setMap.setValue("PROSCST_NM", setParam[1]);
		setMap.setValue("PROSCST_KANA", setParam[2]);
		setMap.setValue("PROSCST_TELNO", setParam[3]);
		setMap.setValue("PROSCST_KTAI_TELNO", setParam[4]);
		setMap.setValue("PROSCST_MLAD", setParam[5]);
		setMap.setValue("PROSCST_SEX_CD", setParam[6]);
		setMap.setValue("PROSCST_BIRTHD", setParam[7]);
		setMap.setValue("PROSCST_AD_CD", setParam[8]);
		setMap.setValue("PROSCST_PCD", setParam[9]);
		setMap.setValue("PROSCST_STATE_NM", setParam[10]);
		setMap.setValue("PROSCST_CITY_NM", setParam[11]);
		setMap.setValue("PROSCST_OAZTSU_NM", setParam[12]);
		setMap.setValue("PROSCST_AZCHO_NM", setParam[13]);
		setMap.setValue("PROSCST_BNCHIGO", setParam[14]);
		setMap.setValue("PROSCST_ADRTTM", setParam[15]);
		setMap.setValue("PROSCST_ADRRM", setParam[16]);
		setMap.setValue("CUST_RANK_CD", setParam[17]);
		setMap.setValue("RRK_WAY_CD", setParam[18]);
		setMap.setValue("RRK_WAY_HOKI", setParam[19]);
		setMap.setValue("DEL_TRGT_GAI_FLG", setParam[20]);
		setMap.setValue("CUST_TOKUT_MSKMSHO_NO", setParam[21]);
		setMap.setValue("SKK_AD", setParam[22]);
		//ANK-2928-00-00 MOD START
		setMap.setValue("SKK_AD_2", setParam[23]);
		setMap.setValue("SKK_AD_3", setParam[24]);
//		setMap.setValue("PROSCST_HSK_BIKO", setParam[23]);
//		setMap.setValue("ADD_DTM", setParam[24]);
//		setMap.setValue("ADD_OPEACNT", setParam[25]);
//		setMap.setValue("UPD_DTM", setParam[26]);
//		setMap.setValue("UPD_OPEACNT", setParam[27]);
//		setMap.setValue("DEL_DTM", setParam[28]);
//		setMap.setValue("DEL_OPEACNT", setParam[29]);
//		setMap.setValue("MK_FLG", setParam[30]);
		setMap.setValue("PROSCST_HSK_BIKO", setParam[25]);
		setMap.setValue("ADD_DTM", setParam[26]);
		setMap.setValue("ADD_OPEACNT", setParam[27]);
		setMap.setValue("UPD_DTM", setParam[28]);
		setMap.setValue("UPD_OPEACNT", setParam[29]);
		setMap.setValue("DEL_DTM", setParam[30]);
		setMap.setValue("DEL_OPEACNT", setParam[31]);
		setMap.setValue("MK_FLG", setParam[32]);
		//ANK-2928-00-00 MOD END
	
		// DBアクセスを実行します
		db_CK_T_PROSCST.insertByPrimaryKeys(setMap);
	}

	/**
	 * SQLKEY(CR_SELECT_006)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	キューBOX番号
	 *		 	業務個別設定組織適用開始年月日
	 *		 	業務個別設定組織適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_QUE_BOX_CR_SELECT_006(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_CR_T_QUE_BOX.selectBySqlDefine(paramList, CR_T_QUE_BOX_CR_SELECT_006);
	}

	/**
	 * SQLKEY(CR_SELECT_019)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	対応記録番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TAIO_KIROK_CR_SELECT_019(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CR_T_TAIO_KIROK.selectBySqlDefine(paramList, CR_T_TAIO_KIROK_CR_SELECT_019);
	}

	/**
	 * 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 executeCC_T_MLAD_CR_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CC_T_MLAD.selectBySqlDefine(paramList, CC_T_MLAD_CR_SELECT_001);
	}

	/**
	 * SQLKEY(CR_UPDATE_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	対応記録履歴
	 *		 	クローズ不可コード
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	対応記録番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TAIO_KIROK_CR_UPDATE_003(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());

		// DBアクセスを実行します
		db_CR_T_TAIO_KIROK.executeBySqlDefine(paramList, CR_T_TAIO_KIROK_CR_UPDATE_003);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	対応記録番号				TAIO_KIROK_NO
	 *		 	対応記録明細番号				TAIO_KIROK_DTL_NO
	 *		 	アクションタイプコード				ACTION_TYPE_CD
	 *		 	アクション開始年月日時分秒				ACTION_STA_DTM
	 *		 	アクション完了年月日時分秒				ACTION_FIN_DTM
	 *		 	対応ユーザーＩＤ				TAIO_USER_ID
	 *		 	問合せ内容				TOIAWASE_NAIYO
	 *		 	問合せ元名				TOIAWASE_MOTO_NM
	 *		 	回答内容				ANS_NAIYO
	 *		 	コンタクト先コード				CONTACT_SAKI_CD
	 *		 	メモ内容				MEMO_NAIYO
	 *		 	メモタイプコード				MEMO_TYPE_CD
	 *		 	編集状態フラグ				HENSHU_STAT_FLG
	 *		 	メール受信番号				MAIL_RCV_NO
	 *		 	メールヘッダー内タイトル				ML_HEADER_NAI_TITLE
	 *		 	メールヘッダー内送信者メールアドレス				ML_HEADER_NAI_SENDER_MLAD
	 *		 	メールヘッダー内宛先メールアドレス				ML_HEADER_NAI_AD_MLAD
	 *		 	メールヘッダー内ＣＣメールアドレス				ML_HEADER_NAI_CC_MLAD
	 *		 	メールヘッダー内メッセージＩＤ				MAIL_HEADER_NAI_MSG_ID
	 *		 	メールヘッダー内送信年月日時分秒				MAIL_HEADER_NAI_SEND_DTM
	 *		 	メールヘッダー内受信年月日時分秒				MAIL_HEADER_NAI_RCV_DTM
	 *		 	メール送信番号				MAIL_SEND_NO
	 *		 	メールタイトル				MAIL_TITLE
	 *		 	メール受信本文				ML_RCV_TEXT
	 *		 	元メールアドレス				MOTO_MLAD
	 *		 	メールヘッダー				MAIL_HEADER
	 *		 	メールフッター				MAIL_FOOTER
	 *		 	メール本文				MAIL_TEXT
	 *		 	送信先メールアドレス				SENDS_MLAD
	 *		 	送信元メールアドレス				SENDM_MLAD
	 *		 	ＣＣメールアドレス				CC_MLAD
	 *		 	送信メールタイプコード				SEND_MAIL_TYPE_CD
	 *		 	メール送信年月日時分秒				MAIL_SEND_DTM
	 *		 	送信ユーザーＩＤ				SEND_USER_ID
	 *		 	送信状態コード				SEND_STAT_CD
	 *		 	返信転送記号コード				HNSIN_TENSO_SYMBOL_CD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 *		 	業務個別設定組織コード				WKKBT_ORG_CD
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TAIOKRK_DTL_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TAIO_KIROK_NO", setParam[0]);
		setMap.setValue("TAIO_KIROK_DTL_NO", setParam[1]);
		setMap.setValue("ACTION_TYPE_CD", setParam[2]);
		setMap.setValue("ACTION_STA_DTM", setParam[3]);
		setMap.setValue("ACTION_FIN_DTM", setParam[4]);
		setMap.setValue("TAIO_USER_ID", setParam[5]);
		setMap.setValue("TOIAWASE_NAIYO", setParam[6]);
		setMap.setValue("TOIAWASE_MOTO_NM", setParam[7]);
		setMap.setValue("ANS_NAIYO", setParam[8]);
		setMap.setValue("CONTACT_SAKI_CD", setParam[9]);
		setMap.setValue("MEMO_NAIYO", setParam[10]);
		setMap.setValue("MEMO_TYPE_CD", setParam[11]);
		setMap.setValue("HENSHU_STAT_FLG", setParam[12]);
		setMap.setValue("MAIL_RCV_NO", setParam[13]);
		setMap.setValue("ML_HEADER_NAI_TITLE", setParam[14]);
		setMap.setValue("ML_HEADER_NAI_SENDER_MLAD", setParam[15]);
		setMap.setValue("ML_HEADER_NAI_AD_MLAD", setParam[16]);
		setMap.setValue("ML_HEADER_NAI_CC_MLAD", setParam[17]);
		setMap.setValue("MAIL_HEADER_NAI_MSG_ID", setParam[18]);
		setMap.setValue("MAIL_HEADER_NAI_SEND_DTM", setParam[19]);
		setMap.setValue("MAIL_HEADER_NAI_RCV_DTM", setParam[20]);
		setMap.setValue("MAIL_SEND_NO", setParam[21]);
		setMap.setValue("MAIL_TITLE", setParam[22]);
		setMap.setValue("ML_RCV_TEXT", setParam[23]);
		setMap.setValue("MOTO_MLAD", setParam[24]);
		setMap.setValue("MAIL_HEADER", setParam[25]);
		setMap.setValue("MAIL_FOOTER", setParam[26]);
		setMap.setValue("MAIL_TEXT", setParam[27]);
		setMap.setValue("SENDS_MLAD", setParam[28]);
		setMap.setValue("SENDM_MLAD", setParam[29]);
		setMap.setValue("CC_MLAD", setParam[30]);
		setMap.setValue("SEND_MAIL_TYPE_CD", setParam[31]);
		setMap.setValue("MAIL_SEND_DTM", setParam[32]);
		setMap.setValue("SEND_USER_ID", setParam[33]);
		setMap.setValue("SEND_STAT_CD", setParam[34]);
		setMap.setValue("HNSIN_TENSO_SYMBOL_CD", setParam[35]);
		setMap.setValue("ADD_DTM", setParam[36]);
		setMap.setValue("ADD_OPEACNT", setParam[37]);
		setMap.setValue("UPD_DTM", setParam[38]);
		setMap.setValue("UPD_OPEACNT", setParam[39]);
		setMap.setValue("DEL_DTM", setParam[40]);
		setMap.setValue("DEL_OPEACNT", setParam[41]);
		setMap.setValue("MK_FLG", setParam[42]);
		setMap.setValue("ADD_UNYO_YMD", setParam[43]);
		setMap.setValue("ADD_TRN_ID", setParam[44]);
		setMap.setValue("UPD_UNYO_YMD", setParam[45]);
		setMap.setValue("UPD_TRN_ID", setParam[46]);
		setMap.setValue("DEL_UNYO_YMD", setParam[47]);
		setMap.setValue("DEL_TRN_ID", setParam[48]);
		setMap.setValue("WKKBT_ORG_CD", setParam[49]);
	
		// DBアクセスを実行します
		db_CR_T_TAIOKRK_DTL.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	対応記録番号				TAIO_KIROK_NO
	 *		 	対応記録ステータス				TAIO_KIROK_STAT
	 *		 	対応ユーザーＩＤ				TAIO_USER_ID
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	問合せ客番号				PROSCST_NO
	 *		 	ＭＹＢＯＸ番号				MYBOX_NO
	 *		 	キューＢＯＸ番号				QUE_BOX_NO
	 *		 	ＭＹＢＯＸ格納年月日時分秒				MYBOX_KAKNO_DTM
	 *		 	キューＢＯＸ格納年月日時分秒				QUE_BOX_KAKNO_DTM
	 *		 	対応開始年月日時分秒				TAIO_STA_DTM
	 *		 	対応完了年月日時分秒				TAIO_FIN_DTM
	 *		 	対応キャンセル年月日時分秒				TAIO_CANCEL_DTM
	 *		 	対応キャンセル再開年月日時分秒				TAIO_CANCEL_SKAI_DTM
	 *		 	対応クローズ年月日時分秒				LAST_END_DTM
	 *		 	対応クローズ再開年月日時分秒				LAST_SKAI_DTM
	 *		 	トータル処理時間				TOTAL_TRAN_TIME
	 *		 	問合せ状態コード				TOIAWASE_STAT_CD
	 *		 	クローズ不可コード				CLOSE_FAIL_CD
	 *		 	問合せ受付種別コード				TOIAWASE_UK_SBT_CD
	 *		 	簡易メモ				EASY_MEMO
	 *		 	タイトル				TITLE
	 *		 	対応記録履歴				TAIO_KIROK_RIREKI
	 *		 	受付年月日時分秒				UK_DTM
	 *		 	一時保存有無				TMP_SAVE_UM
	 *		 	コールバック希望年月日				CALLBK_KIBO_YMD
	 *		 	コールバック希望時間				CALLBK_KIBO_TIME
	 *		 	コールバック時間指定タイプコード				CALLBK_SHITEI_TYPE_CD
	 *		 	申込契機コード				MSKM_OPTNTY_CD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TAIO_KIROK_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TAIO_KIROK_NO", setParam[0]);
		setMap.setValue("TAIO_KIROK_STAT", setParam[1]);
		setMap.setValue("TAIO_USER_ID", setParam[2]);
		setMap.setValue("SVC_KEI_NO", setParam[3]);
		setMap.setValue("PROSCST_NO", setParam[4]);
		setMap.setValue("MYBOX_NO", setParam[5]);
		setMap.setValue("QUE_BOX_NO", setParam[6]);
		setMap.setValue("MYBOX_KAKNO_DTM", setParam[7]);
		setMap.setValue("QUE_BOX_KAKNO_DTM", setParam[8]);
		setMap.setValue("TAIO_STA_DTM", setParam[9]);
		setMap.setValue("TAIO_FIN_DTM", setParam[10]);
		setMap.setValue("TAIO_CANCEL_DTM", setParam[11]);
		setMap.setValue("TAIO_CANCEL_SKAI_DTM", setParam[12]);
		setMap.setValue("LAST_END_DTM", setParam[13]);
		setMap.setValue("LAST_SKAI_DTM", setParam[14]);
		setMap.setValue("TOTAL_TRAN_TIME", setParam[15]);
		setMap.setValue("TOIAWASE_STAT_CD", setParam[16]);
		setMap.setValue("CLOSE_FAIL_CD", setParam[17]);
		setMap.setValue("TOIAWASE_UK_SBT_CD", setParam[18]);
		setMap.setValue("EASY_MEMO", setParam[19]);
		setMap.setValue("TITLE", setParam[20]);
		setMap.setValue("TAIO_KIROK_RIREKI", setParam[21]);
		setMap.setValue("UK_DTM", setParam[22]);
		setMap.setValue("TMP_SAVE_UM", setParam[23]);
		setMap.setValue("CALLBK_KIBO_YMD", setParam[24]);
		setMap.setValue("CALLBK_KIBO_TIME", setParam[25]);
		setMap.setValue("CALLBK_SHITEI_TYPE_CD", setParam[26]);
		setMap.setValue("MSKM_OPTNTY_CD", setParam[27]);
		setMap.setValue("ADD_DTM", setParam[28]);
		setMap.setValue("ADD_OPEACNT", setParam[29]);
		setMap.setValue("UPD_DTM", setParam[30]);
		setMap.setValue("UPD_OPEACNT", setParam[31]);
		setMap.setValue("DEL_DTM", setParam[32]);
		setMap.setValue("DEL_OPEACNT", setParam[33]);
		setMap.setValue("MK_FLG", setParam[34]);
	
		// DBアクセスを実行します
		db_CR_T_TAIO_KIROK.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	対応記録番号				TAIO_KIROK_NO
	 *		 	対応記録内訳番号				TAIO_KIROK_UCWK_NO
	 *		 	問合せ応対区分				TOIAWASE_RSP_DIV
	 *		 	お客様の声				CUST_KOE
	 *		 	ＣＳＲの声				CSR_KOE
	 *		 	表示順序				DSP_JUN
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TAIOKRK_UCWK_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TAIO_KIROK_NO", setParam[0]);
		setMap.setValue("TAIO_KIROK_UCWK_NO", setParam[1]);
		setMap.setValue("TOIAWASE_RSP_DIV", setParam[2]);
		setMap.setValue("CUST_KOE", setParam[3]);
		setMap.setValue("CSR_KOE", setParam[4]);
		setMap.setValue("DSP_JUN", setParam[5]);
		setMap.setValue("ADD_DTM", setParam[6]);
		setMap.setValue("ADD_OPEACNT", setParam[7]);
		setMap.setValue("UPD_DTM", setParam[8]);
		setMap.setValue("UPD_OPEACNT", setParam[9]);
		setMap.setValue("DEL_DTM", setParam[10]);
		setMap.setValue("DEL_OPEACNT", setParam[11]);
		setMap.setValue("MK_FLG", setParam[12]);
	
		// DBアクセスを実行します
		db_CR_T_TAIOKRK_UCWK.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	対応記録番号				TAIO_KIROK_NO
	 *		 	対応記録内訳番号				TAIO_KIROK_UCWK_NO
	 *		 	対応記録内訳カテゴリーレベル				TAIOKRK_UW_CTGR_LV
	 *		 	対応記録内訳カテゴリー名				TAIOKRK_UW_CTGR_NM
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TAIOKRK_UW_CTGR_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TAIO_KIROK_NO", setParam[0]);
		setMap.setValue("TAIO_KIROK_UCWK_NO", setParam[1]);
		setMap.setValue("TAIOKRK_UW_CTGR_LV", setParam[2]);
		setMap.setValue("TAIOKRK_UW_CTGR_NM", setParam[3]);
		setMap.setValue("ADD_DTM", setParam[4]);
		setMap.setValue("ADD_OPEACNT", setParam[5]);
		setMap.setValue("UPD_DTM", setParam[6]);
		setMap.setValue("UPD_OPEACNT", setParam[7]);
		setMap.setValue("DEL_DTM", setParam[8]);
		setMap.setValue("DEL_OPEACNT", setParam[9]);
		setMap.setValue("MK_FLG", setParam[10]);
	
		// DBアクセスを実行します
		db_CR_T_TAIOKRK_UW_CTGR.insertByPrimaryKeys(setMap);
	}

	/**
	 * SQLKEY(CR_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	メール受信番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCC_T_TEMP_FILE_CR_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CC_T_TEMP_FILE.selectBySqlDefine(paramList, CC_T_TEMP_FILE_CR_SELECT_003);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	対応履歴電子ファイル管理番号				TORK_EFILE_KNRI_NO
	 *		 	文書種別コード				BUNSHO_SBT_CD
	 *		 	対応記録番号				TAIO_KIROK_NO
	 *		 	対応記録明細番号				TAIO_KIROK_DTL_NO
	 *		 	クエリ番号				QUERY_NO
	 *		 	電子ファイル管理番号				EFILE_KANRI_NO
	 *		 	対応履歴文書ファイル名				TAIORRKI_BUNSHO_FILE_NM
	 *		 	対応履歴文書作成年月日時分秒				TAIORRKI_BUNSHO_SAKSEI_DTM
	 *		 	業務個別設定組織コード				WKKBT_ORG_CD
	 *		 	業務個別設定立場コード				WKKBT_POSITION_CD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TORK_EFILE_KNRI_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TORK_EFILE_KNRI_NO", setParam[0]);
		setMap.setValue("BUNSHO_SBT_CD", setParam[1]);
		setMap.setValue("TAIO_KIROK_NO", setParam[2]);
		setMap.setValue("TAIO_KIROK_DTL_NO", setParam[3]);
		setMap.setValue("QUERY_NO", setParam[4]);
		setMap.setValue("EFILE_KANRI_NO", setParam[5]);
		setMap.setValue("TAIORRKI_BUNSHO_FILE_NM", setParam[6]);
		setMap.setValue("TAIORRKI_BUNSHO_SAKSEI_DTM", setParam[7]);
		setMap.setValue("WKKBT_ORG_CD", setParam[8]);
		setMap.setValue("WKKBT_POSITION_CD", setParam[9]);
		setMap.setValue("ADD_DTM", setParam[10]);
		setMap.setValue("ADD_OPEACNT", setParam[11]);
		setMap.setValue("UPD_DTM", setParam[12]);
		setMap.setValue("UPD_OPEACNT", setParam[13]);
		setMap.setValue("DEL_DTM", setParam[14]);
		setMap.setValue("DEL_OPEACNT", setParam[15]);
		setMap.setValue("MK_FLG", setParam[16]);
	
		// DBアクセスを実行します
		db_CR_T_TORK_EFILE_KNRI.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	メール受信ステータス				MAIL_RCV_STAT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	MAIL_RCV_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCC_T_MAIL_RCV_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("MAIL_RCV_STAT", setParam[0]);
		setMap.setValue("UPD_DTM", setParam[1]);
		setMap.setValue("UPD_OPEACNT", setParam[2]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("MAIL_RCV_NO", whereParam[0]);

		// DBアクセスを実行します
		db_CC_T_MAIL_RCV.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * SQLKEY(CR_UPDATE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	加算件数
	 *		 	最終格納年月日時分秒
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	キューBOX番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_QUE_BOX_CR_UPDATE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_CR_T_QUE_BOX.executeBySqlDefine(paramList, CR_T_QUE_BOX_CR_UPDATE_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

}
