/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCRWebUktkInfoTrkm
*	ソースファイル名	：JBSbatCRWebUktkInfoTrkm.java
*	作成者				：富士通　
*	作成日				：2011年05月21日
*＜機能概要＞
*　ＷＥＢ資料受付情報取込処理
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/05/21	富士通		新規作成
*				2013/01/17	富士通		ANK-1245-00-00 機種依存文字対応
*	v6.00.00	2013/09/06  FJ斉藤諭	OM-2013-0001745対応
*	v6.00.01	2013/11/26  FJ斉藤諭	ANK-1637-00-00対応
*	v48.00.00	2019/12/27  FJ) 張本	ANK-3795-00-00 見込顧客システム構築対応
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
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.JCRBatCommon;
import eo.business.util.table.JBSbatCR_M_ATICLE;
import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.constant.JZM0171Constant;
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;
import eo.framework.log.JBSbatLogPrintControl;

/**
* ＷＥＢ資料受付情報取込処理<p>
*<BR>
* @author 富士通
*/
public class JBSbatCRWebUktkInfoTrkm extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(資料)*/
	private static final String D_TBL_NAME_CR_M_ATICLE = "CR_M_ATICLE";

	/** テーブル(対応記録)*/
	private static final String D_TBL_NAME_CR_T_TAIO_KIROK = "CR_T_TAIO_KIROK";

	/** テーブル(資料送付)*/
	private static final String D_TBL_NAME_CR_T_ATICLE_SOHU = "CR_T_ATICLE_SOHU";

	/** テーブル(資料送付記録)*/
	private static final String D_TBL_NAME_CR_T_ATICLE_SOHU_KRK = "CR_T_ATICLE_SOHU_KRK";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String CR_M_ATICLE_CR_SELECT_001 = "CR_SELECT_001";

	/** テーブルアクセスクラス(資料)*/
	private JBSbatSQLAccess db_CR_M_ATICLE = null;

	/** テーブルアクセスクラス(対応記録)*/
	private JBSbatSQLAccess db_CR_T_TAIO_KIROK = null;

	/** テーブルアクセスクラス(資料送付)*/
	private JBSbatSQLAccess db_CR_T_ATICLE_SOHU = null;

	/** テーブルアクセスクラス(資料送付記録)*/
	private JBSbatSQLAccess db_CR_T_ATICLE_SOHU_KRK = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** MATEファイル名の先頭文字 */
	private static final String MATE_PRE_FIX = "MATE_";

	/** MATEエラーファイル名の先頭文字 */
	private static final String MATE_ERR_PRE_FIX = "MATE_NG_";

	/** インデックス:顧客タイプ */
	private static final int IDX_KOKYAKU_TYPE = 0;
	/** インデックス:サービス契約番号 */
	private static final int IDX_SVC_KEI_NO = 1;
	/** インデックス:状態 */
	private static final int IDX_JOTAI = 12;
	/** インデックス:作成日時 */
	private static final int IDX_SAKUSEI_DATE = 14;
	/** インデックス:担当者 */
	private static final int IDX_TANTO = 16;
	/** インデックス:キューBOX名 */
	private static final int IDX_QUE_NM = 17;
	/** インデックス:受付種別 */
	private static final int IDX_UKETSUKE_SBT = 18;
	/** インデックス:タイトル */
	private static final int IDX_TITLE = 19;
	/** インデックス:カテゴリー1 */
	private static final int IDX_CTGR_01 = 20;
	/** インデックス:問合せ履歴 */
	private static final int IDX_RIREKI = 31;
	/** インデックス:問合せ客番号 */
	private static final int IDX_TIAWS_KYAKU_NO = 32;
	/** インデックス:コールバック日時 */
	private static final int IDX_CALLBACK_DATE = 35;
	/** インデックス:コールバック時間指定タイプ */
	private static final int IDX_CALLBACK_TYPE = 36;
	/** インデックス:ＷＥＢ受付番号 */
	private static final int IDX_WEBUKTK_NO = 37;
	/** インデックス:送付区分 */
	private static final int IDX_SOHU_KBN = 38;
	/** インデックス:資料分類 */
	private static final int IDX_SHIRYO_BUNRUI = 39;
	/** インデックス:資料名 */
	private static final int IDX_SHIRYO_NM = 40;
	/** インデックス:送付部数 */
	private static final int IDX_SOHU_BUSU = 41;
	/** インデックス:送付先氏名 */
	private static final int IDX_SOHUSAKI_NM = 42;
	/** インデックス:送付先氏名カナ */
	private static final int IDX_SOHUSAKI_KANA = 43;
	/** インデックス:送付先電話番号 */
	private static final int IDX_SOHUSAKI_TEL = 44;
	/** インデックス:送付先郵便番号 */
	private static final int IDX_SOHUSAKI_YUBIN = 45;
	/** インデックス:送付先住所1 */
	private static final int IDX_SOHUSAKI_JUSHO1 = 46;
	/** インデックス:送付先住所2 */
	private static final int IDX_SOHUSAKI_JUSHO2 = 47;
	/** インデックス:送付先住所3 */
	private static final int IDX_SOHUSAKI_JUSHO3 = 48;
	/** インデックス:備考 */
	private static final int IDX_BIKO = 49;
	/** インデックス:業務個別設定組織コード */
	private static final int IDX_WKKBT_ORG_CD = 50;
// v48.00.00 ANK-3795-00-00 ADD START
	/** インデックス:見込顧客番号 */	
	private static final int IDX_MIKMCST_NO = 51;
// v48.00.00 ANK-3795-00-00 ADD END

	/** 1行の項目数 */
	private static final int KOUMOKU_SU_START = 50;

	/**
	 * 1行の項目数 終了
	 * （業務個別設定組織コード、見込顧客番号の追加により50,51,52とも許容する）
	 */
// v48.00.00 ANK-3795-00-00 MOD START
//	private static final int KOUMOKU_SU_END = 51;
	private static final int KOUMOKU_SU_END = 52;
// v48.00.00 ANK-3795-00-00 MOD END

	/** 未加入者 */
	private static final String MI_KANYUSHA = "未加入者";

	/** ユーザーIDのバイト数 */
	private static final int USERID_BYTE_SU = 10;

	/** 問合せ客番号のバイト数 */
	private static final int TIAWS_KYAKU_NO_BYTE_SU = 10;

	/** WEB受付番号のバイト数 */
	private static final int WEB_UKTK_NO_BYTE_SU = 10;

	/** 資料分類のバイト数 */
	private static final int SHIRYO_BUNRUI_BYTE_SU = 40;

	/** 資料名のバイト数 */
	private static final int SHIRYO_NM_BYTE_SU = 160;

	/** 送付部数のバイト数 */
	private static final int SOHU_BUSU_BYTE_SU = 1;

	/** 送付先氏名のバイト数 */
	private static final int SOHUSAKI_NM_BYTE_SU = 90;

	/** 送付先氏名カナのバイト数 */
	private static final int SOHUSAKI_KANA_BYTE_SU = 120;

	/** 電話番号のバイト数 */
	private static final int TELNO_BYTE_SU = 11;

	/** 郵便番号のバイト数 */
	private static final int YUBINNO_BYTE_SU = 7;

	/** 住所1のバイト数 */
	private static final int JUSHO1_BYTE_SU = 30;

	/** 住所2のバイト数 */
	private static final int JUSHO2_BYTE_SU = 30;

	/** 住所3のバイト数 */
	private static final int JUSHO3_BYTE_SU = 30;

	/** 備考のバイト数 */
	private static final int BIKO_BYTE_SU = 255;

	/** 送付区分 */
	private static final String[] SOHU_KBN_LIST = new String[] {"普通", "速達", "その他"};

	/** 最大カテゴリーレベル */
	private static final int MAX_TGR_LVL = 11;

	/** 対応記録番号の桁数 */
	private static final int KETA_TAIO_KIROK_NO = 10;
	/** コールバック希望年月日の終了桁数 */
	private static final int KETA_CALLBACK_YYYYMMDD_END = 8;
	/** コールバック希望時分の開始桁数 */
	private static final int KETA_CALLBACK_HHMI_START = 8;
	/** コールバック希望時分の開始桁数 */
	private static final int KETA_CALLBACK_HHMI_END = 12;
	/** 資料送付テーブルの項目数 */
	private static final int KOMOKU_SU_ATICLE_SOHU = 22;
	/** 資料送付記録テーブルの項目数 */
	private static final int KOMOKU_SU_ATICLE_SOHU_KIROK = 17;
	/** 資料送付番号の初期値 */
	private static final String DEFAULT_SHIRYO_SOHU_NO = "0000000001";

	/** エラー有無を取得するキー */
	private static final String KEY_EXIST_ERROR = "KEY_EXIST_ERROR";
	/** 項目数エラー有無を取得するキー */
	private static final String KEY_EXIST_KOUMOKUSU_ERROR = "KEY_EXIST_KOUMOKUSU_ERROR";
	/** サービス契約番号を取得するキー */
	private static final String KEY_SVC_KEY_NO = "KEY_SVC_KEY_NO";
	/** キューBOX番号を取得するキー */
	private static final String KEY_QUE_BOX_NO = "KEY_QUE_BOX_NO";
	/** MYBOX番号を取得するキー */
	private static final String KEY_MYBOX_NO = "KEY_MYBOX_NO";
	/** エラー行データを取得するキー */
	private static final String KEY_ERR_DATA = "KEY_ERR_DATA";
	/** ログデータを取得するキー */
	private static final String KEY_LOG_DATA = "KEY_LOG_DATA";
	/** 対応記録番号を取得するキー */
	private static final String KEY_TAIOKRK_NO = "KEY_TAIOKRK_NO";
	/** NGワード情報を取得するキー */
	private static final String KEY_NG_INFO = "KEY_NG_INFO";
	/** 資料分類コードを取得するキー */
	private static final String KEY_SIRYO_BUNRUI_CD = "KEY_SIRYO_BUNRUI_CD";
	/** 資料番号を取得するキー */
	private static final String KEY_SIRYO_NO = "KEY_SIRYO_NO";

	/** 資料送付情報項目の区切り文字 */
	private static final String KUGIRI = "／";

	/** NGワードチェック条件のList */
	private String[] ngWordChkJokenList = null;

	/** 取込元のCSVファイルが配置されるディレクトリーパス */
	private File csvPath = null;

	/** 取込元のCSVファイルを処理用に変換したファイルを配置するディレクトリーパス */
	private File tmpPath = null;

	/** 正常終了したデータを格納したファイルを配置するディレクトリーパス */
	private File normalDataPath = null;

	/** 異常終了したデータを格納したファイルを配置するディレクトリーパス */
	private File abnormalDataPath = null;

	/** 問合せタイトル */
	private String toiawaseTitle = null;

	/** YYYYMMDDHHmmの桁数 */
	private static final int KETA_YYYYMMDDHHMM = 12;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CR_M_ATICLE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_M_ATICLE);
		db_CR_T_TAIO_KIROK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TAIO_KIROK);
		db_CR_T_ATICLE_SOHU = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_ATICLE_SOHU);
		db_CR_T_ATICLE_SOHU_KRK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_ATICLE_SOHU_KRK);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

		// プロパティーチェック
		checkProperty();

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * プロパティーチェック
	 * @throws Exception 例外
	 */
	private void checkProperty() throws Exception
	{

		// プロパティーチェック

		// 取込元のCSVファイルが配置されるディレクトリーパス
		String path = JCRBatCommon.getApplicationConst("CR_WEB_UKTK_FILE_DIR");
		if (path == null)
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_WEB_UKTK_FILE_DIR"});
		}
		else
		{
			csvPath = JCRUtilCommon.checkDirExist(path);
			if (csvPath == null)
			{
				// 存在しない場合
				// ECRB0160KW:指定されたパスが存在しません。(%1%)
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0160KW, new String[]{path});
			}
			super.logPrint.printDebugLog("取込元のCSVファイルが配置されるディレクトリーパス:" + csvPath);
		}

		path = JCRBatCommon.getApplicationConst("CR_WEB_UKTK_TMP_FILE_DIR");
		if (path == null)
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_WEB_UKTK_TMP_FILE_DIR"});
		}
		else
		{
			tmpPath = JCRUtilCommon.checkDirExist(path);
			if (tmpPath == null)
			{
				// 存在しない場合
				// ECRB0160KW:指定されたパスが存在しません。(%1%)
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0160KW, new String[]{path});
			}
			super.logPrint.printDebugLog("取込元のCSVファイルを処理用に変換したファイルを配置するディレクトリーパス:" + tmpPath);
		}

		// 正常終了したデータを格納したファイルを配置するディレクトリーパス
		path = JCRBatCommon.getApplicationConst("CR_WEB_UKTK_NML_DATA_DIR");
		if (path == null)
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_WEB_UKTK_NML_DATA_DIR"});
		}
		else
		{
			normalDataPath = JCRUtilCommon.checkDirExist(path);
			if (normalDataPath == null)
			{
				// 存在しない場合
				// ECRB0160KW:指定されたパスが存在しません。(%1%)
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0160KW, new String[]{path});
			}
			super.logPrint.printDebugLog("正常終了したデータを格納したファイルを配置するディレクトリーパス:" + normalDataPath);
		}

		// 異常終了したデータを格納したファイルを配置するディレクトリーパス
		path = JCRBatCommon.getApplicationConst("CR_WEB_UKTK_ABNML_DATA_DIR");
		if (path == null)
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_WEB_UKTK_ABNML_DATA_DIR"});
		}
		else
		{
			abnormalDataPath = JCRUtilCommon.checkDirExist(path);
			if (abnormalDataPath == null)
			{
				// 存在しない場合
				// ECRB0160KW:指定されたパスが存在しません。(%1%)
				throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0160KW, new String[]{path});
			}
			super.logPrint.printDebugLog("異常終了したデータを格納したファイルを配置するディレクトリーパス:" + abnormalDataPath);
		}

		// 「読込ファイル」の「タイトル」が空白の場合に設定するタイトル
		toiawaseTitle = JCRBatCommon.getApplicationConst("CR_WEB_UKTK_TITLE");
		if (toiawaseTitle == null || "".equals(toiawaseTitle.trim()))
		{
			// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_WEB_UKTK_TITLE"});
		}
		super.logPrint.printDebugLog("問合せタイトル:" + toiawaseTitle);

		// NGワードチェック条件
		String ngWordChkJoken = JCRBatCommon.getApplicationConst("CR_NGWD_CHK_JOKEN");
		if (ngWordChkJoken != null)
		{
			ngWordChkJokenList = ngWordChkJoken.split(",");
			if (ngWordChkJokenList != null)
			{
				if ((ngWordChkJokenList.length % 2) != 0)
				{
					// 設定項目数が偶数でない場合
					// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
					throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_NGWD_CHK_JOKEN"});
				}

				// NGワードチェックを行うかどうかの条件チェック
				for (int i = 0; i < ngWordChkJokenList.length; i++)
				{
					String index = "";
					if ((i % 2) == 0)
					{
						index = ngWordChkJokenList[i].trim();
						if (!(JCRBatCommon.isHannkakuSuuji1(index)))
						{
							// 項目インデックス(Listの添字)が偶数の場合
							// 内容が数字でない場合はエラー
							// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
							throw new JBSbatBusinessException(JPCBatchMessageConstant.ECRB0010KW, new String[]{"CR_NGWD_CHK_JOKEN"});
						}
					}
				}
			}
			super.logPrint.printDebugLog("NGワードチェック条件:" + ngWordChkJoken);
		}
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		// ファイル一覧取得
		File[] csvFiles = csvPath.listFiles();

		int tgtFileCount = 0;

		for (int i = 0; i < csvFiles.length; i++)
		{
			File csvFile = csvFiles[i];
			String csvFileName = csvFile.getName().toUpperCase();

			if (csvFileName.startsWith(MATE_PRE_FIX) && csvFileName.endsWith(JCRStrConst.EXT_CSV))
			{
				// ファイル名が、「MATE_」で始まり「.CSV」で終わっているものが対象
				super.logPrint.printDebugLog("対象ファイル名:" + csvFile.getName());

				// 付属ファイル確認(件数ファイル、フラグファイルの存在確認)
				commonItem.getLogPrint().printDebugLog("共通部品:付属ファイル確認呼出(JCRBatCommon.getHuzokuFile())");
				Map<String, File> huzokuFileMap = JCRBatCommon.getHuzokuFile(commonItem, csvFile, csvPath);
				if (huzokuFileMap.size() < 2)
				{
					continue;
				}

				File countFile = huzokuFileMap.get(JCRBatCommon.KEY_KENSU_FILE);	// 件数ファイル
				File flgFile = huzokuFileMap.get(JCRBatCommon.KEY_FLAG_FILE);		// フラグファイル
				++tgtFileCount;

				// CSV一般化処理
				commonItem.getLogPrint().printDebugLog("共通部品:CSV一般化処理呼出(JCRBatCommon.chgToOneRowForCsv())");
				Map<String, Object> tmpFileMap = JCRBatCommon.chgToOneRowForCsv(commonItem, csvFile, tmpPath);

				String chgCRWord = (String)tmpFileMap.get(JCRBatCommon.KEY_KAIGYO_CD_HENKAN_MOJI);	// 改行コード変換文字
				File tmpFile = (File)tmpFileMap.get(JCRBatCommon.KEY_HENKANGO_FILE);				// 変換後一時ファイル
				int dataCount = ((Integer)tmpFileMap.get(JCRBatCommon.KEY_COUNT)).intValue();		// レコード件数

				commonItem.getLogPrint().printDebugLog("改行コード変換文字:" + chgCRWord);
				commonItem.getLogPrint().printDebugLog("一時ファイル名:" + tmpFile.getName());
				commonItem.getLogPrint().printDebugLog("データ件数:" + dataCount);
				// 処理件数ログ出力
				JCRBatCommon.printShoriCountLog(commonItem, "データ件数(MATE) ファイル名:" + csvFile.getName(), dataCount);

				boolean isErrorFile = false;
				String errData = null;
				String logData = null;
				Map<String, Object> errInfoMap = null;

				// 件数ファイルチェック
				commonItem.getLogPrint().printDebugLog("共通部品:件数ファイルチェック呼出(JCRBatCommon.isCountFileCheckOK())");
				if (JCRBatCommon.isCountFileCheckOK(commonItem, csvFile, dataCount, countFile))
				{
					// 変換後ファイル読込処理
					errInfoMap = executeTmpFile(commonItem, tmpFile, chgCRWord);
					isErrorFile = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
				}
				else
				{
					// ログ出力
					isErrorFile = true;
					// ECRB0170KW:データ件数が件数ファイルの件数と一致しません。（%1%）
					logData = (JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0170KW, new String[] {csvFileName})) + JCRStrConst.KAIGYO_CD;
					errInfoMap = new HashMap<String, Object>();
					errInfoMap.put(KEY_LOG_DATA, logData);
				}

				if (isErrorFile)
				{
					// エラーが存在する場合

					// 処理結果ファイル登録(エラー行ファイル、ログファイルの登録)
					errData = (String)errInfoMap.get(KEY_ERR_DATA);
					logData = (String)errInfoMap.get(KEY_LOG_DATA);
					// エラーデータ登録処理
					commonItem.getLogPrint().printDebugLog("共通部品:エラーデータ登録処理呼出(JCRBatCommon.entryErrorFile())");
					JCRBatCommon.entryErrorFile(commonItem,
												abnormalDataPath,
												errData,
												logData,
												csvFile,
												MATE_PRE_FIX,
												MATE_ERR_PRE_FIX,
												chgCRWord);
				}

				// コミット
				super.commit();

				// ファイル移動・削除
				File[] moveFiles = new File[] {csvFile, countFile, flgFile};	// 移動するファイル
				File[] deleteFiles = new File[] {tmpFile};						// 削除するファイル
				File outputPath = normalDataPath;								// 出力先パス
				if (isErrorFile)
				{
					// エラーが存在した場合
					outputPath = abnormalDataPath;
				}
				// ファイル移動・削除処理
				commonItem.getLogPrint().printDebugLog("共通部品:ファイル移動・削除呼出(JCRUtilCommon.moveAndDeleteFile())");
				JCRUtilCommon.moveAndDeleteFile(moveFiles, deleteFiles, outputPath);
			}
		}

		// 処理件数ログ出力
		JCRBatCommon.printShoriCountLog(commonItem, "対象ファイル数", tgtFileCount);

		return null;

	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 変換後ファイル読込処理
	 * @param commonItem 共通情報
	 * @param tmpFile 一時ファイル
	 * @param chgCRWord 改行コード変換文字
	 * @return 処理結果のMap
	 * 			キー
	 * 			KEY_EXIST_ERROR		エラーが有る場合はtrue
	 * 			KEY_ERR_DATA		エラー行データ
	 * 			KEY_LOG_DATA		ログ情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> executeTmpFile(JBSbatCommonItem commonItem, File tmpFile, String chgCRWord) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean isErrorFile = false;		// エラー有無判定用(1件でもエラーがあればtrue)

		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納
		StringBuilder errData = new StringBuilder();	// エラー行格納

		// 一時ファイル読込み処理
		BufferedReader br = null;
		try
		{
			// 一時ファイル(変換後)
			br = new BufferedReader(new InputStreamReader(new FileInputStream(tmpFile), JCRStrConst.DEFAULT_ENCODE));

			int errorRecordCount = 1;

			Map<String, List<Map<String, String>>> ngWordData = new HashMap<String, List<Map<String, String>>>();
			Map<String, Integer> queBoxMap = new HashMap<String, Integer>();
			Map<String, Integer> myboxMap = new HashMap<String, Integer>();

			// 送付内容を格納するMap
			// キー:	WEB受付番号
			// 値:		配列
			// 				[0]:対応記録番号
			// 				[1]:送付内容
			// 				[2]:件数
			Map<String, Object[]> webUktkMap = new HashMap<String, Object[]>();

			String data = br.readLine();		// 1行読込み

			while (data != null)
			{

				// 読込みデータList化
				List<String> dataList = JCRUtilCommon.convStringToList(data);
				if (dataList == null)
				{
					dataList = new ArrayList<String>();
				}

				String svcKeiNo = null;								// サービス契約番号
				String queBoxNo = null;								// キューBOX番号
				String myboxNo = null;								// MYBOX番号
				String shiryoNo = null;								// 資料番号

				// チェック処理
				Map<String, Object> checkInfoMap = check(commonItem, dataList, errorRecordCount, chgCRWord);
				boolean existError = (Boolean)checkInfoMap.get(KEY_EXIST_ERROR);	// 1行中のエラー有無
				if (!(existError))
				{
					svcKeiNo = dataList.get(IDX_SVC_KEI_NO);		// サービス契約番号

					String wkSvcKeiNo = (String)checkInfoMap.get(KEY_SVC_KEY_NO);
					if (wkSvcKeiNo != null && !("".equals(wkSvcKeiNo.trim())))
					{
						// eoIDからサービス契約番号が取得できた場合
						svcKeiNo = wkSvcKeiNo;
					}
					queBoxNo = (String)checkInfoMap.get(KEY_QUE_BOX_NO);
					myboxNo = (String)checkInfoMap.get(KEY_MYBOX_NO);
					shiryoNo = (String)checkInfoMap.get(KEY_SIRYO_NO);
				}
				else
				{
					// エラー行を退避
					errData.append(data);
					errData.append(JCRStrConst.KAIGYO_CD);
					logData.append(checkInfoMap.get(KEY_LOG_DATA));

					isErrorFile = true;
					errorRecordCount++;
				}

				if (!(existError))
				{
					// 退避した送付内容をWEB受付番号で検索
					String webUktkNo = dataList.get(IDX_WEBUKTK_NO);		// WEB受付番号

					String shiryoBunrui = dataList.get(IDX_SHIRYO_BUNRUI);	// 資料分類
					String shiryoNm = dataList.get(IDX_SHIRYO_NM);			// 資料名
					String sohuBusu = dataList.get(IDX_SOHU_BUSU);			// 送付部数

					String taioKrkNo = null;

					Object[] sohuNaiyoArray = webUktkMap.get(webUktkNo);	// 対応記録番号と送付内容を格納

					// データ登録処理
					Map<String, Object> entryInfoMap = entry(dataList, svcKeiNo, myboxNo, queBoxNo, shiryoNo, chgCRWord, sohuNaiyoArray);
					taioKrkNo = (String)entryInfoMap.get(KEY_TAIOKRK_NO);

					if (sohuNaiyoArray == null)
					{
						// 新規登録の場合

						Map<String, Map<String, String>> ngwdMap = (Map<String, Map<String, String>>)entryInfoMap.get(KEY_NG_INFO);
						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();
								Map<String, String> ngwdDtlMap = ngwdMap.get(ngWord);

								// 既登録NGワードデータを検索
								List<Map<String, String>> ngwdList = ngWordData.get(ngWord);

								if (ngwdList == null)
								{
									// 登録済みデータがない場合
									ngwdList = new ArrayList<Map<String, String>>();
									ngwdList.add(ngwdDtlMap);
									ngWordData.put(ngWord, ngwdList);
								}
								else
								{
									// 同じNGワードで既に登録がある場合
									ngwdList.add(ngwdDtlMap);
								}
							}
						}

						if (queBoxNo != null && !("".equals(queBoxNo.trim())))
						{
							// キューBOX更新用データ退避
							Integer nowCountQueBox = queBoxMap.get(queBoxNo);
							if (nowCountQueBox == null)
							{
								queBoxMap.put(queBoxNo, 1);
							}
							else
							{
								queBoxMap.put(queBoxNo, nowCountQueBox + 1);
							}
						}

						if (myboxNo != null && !("".equals(myboxNo.trim())))
						{
							// MYBOX更新用データ退避
							Integer nowCountMybox = myboxMap.get(myboxNo);
							if (nowCountMybox == null)
							{
								myboxMap.put(myboxNo, 1);
							}
							else
							{
								myboxMap.put(myboxNo, nowCountMybox.intValue() + 1);
							}
						}
					}

					int count = 0;
					if (sohuNaiyoArray == null)
					{
						sohuNaiyoArray = new Object[3];		// [0]:対応記録番号、[1]:送付内容、[2]:件数
						sohuNaiyoArray[0] = taioKrkNo;
					}
					else
					{
						count = (Integer)sohuNaiyoArray[2];
					}

					// 送付内容を生成して保持
					StringBuilder sohuNaiyo = new StringBuilder();
					if (sohuNaiyoArray[1] != null)
					{
						sohuNaiyo.append(sohuNaiyoArray[1]);
						sohuNaiyo.append(JCRStrConst.KAIGYO_CD);
					}
					sohuNaiyo.append("　送付内容：").append(shiryoBunrui).append(KUGIRI).append(shiryoNm).append(KUGIRI).append(sohuBusu);
					sohuNaiyoArray[1] = sohuNaiyo.toString();

					// 件数保持
					sohuNaiyoArray[2] = count + 1;

					webUktkMap.put(webUktkNo, sohuNaiyoArray);

				}

				data = br.readLine();		// 1行読込み

			}

			// 問合せ格納数更新

			// キューBOX更新
			commonItem.getLogPrint().printDebugLog("共通部品:キューBOX更新呼出(JCRBatCommon.updateQueBox())");
			JCRBatCommon.updateQueBox(commonItem, queBoxMap);

			// MYBOX更新
			commonItem.getLogPrint().printDebugLog("共通部品:MYBOX更新呼出(JCRBatCommon.updateMybox())");
			JCRBatCommon.updateMybox(commonItem, myboxMap);

			if (ngWordData != null && ngWordData.size() > 0)
			{
				// 問合せNGワード検知メール送信
				commonItem.getLogPrint().printDebugLog("共通部品:問合せNGワード検知メール送信呼出(JCRBatCommon.sendNGWordMail())");
				JCRBatCommon.sendNGWordMail(commonItem, ngWordData, commonItem.getBatchUserId());
			}

			resMap.put(KEY_EXIST_ERROR, isErrorFile);
			resMap.put(KEY_ERR_DATA, errData.toString());
			resMap.put(KEY_LOG_DATA, logData.toString());

			return resMap;

		}
		finally
		{
			if (br != null)
			{
				try
				{
					br.close();
				}
				catch (IOException ioe)
				{
					commonItem.getLogPrint().printDebugLog("br close error");
				}
			}
		}
	}

	/**
	 * チェック処理
	 * @param commonItem 共通情報
	 * @param dataList 1行分のデータ
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @param chgCRWord 改行コード変換文字
	 * @return チェック結果のMap
	 * 			キー
	 * 			KEY_EXIST_ERROR		エラーが有る場合はtrue
	 * 			KEY_SVC_KEY_NO		サービス契約番号
	 * 			KEY_QUE_BOX_NO		キューBOX番号(取得できた場合)
	 * 			KEY_MYBOX_NO		MYBOX番号(取得できた場合)
	 * 			KEY_LOG_DATA		ログ情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> check(JBSbatCommonItem commonItem,
									List<String> dataList,
									int errorRecordCount,
									String chgCRWord) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;

		Map<String, Object> errInfoMap = null;			// エラー情報
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		// 読込データチェック
		errInfoMap = checkData(dataList, errorRecordCount, chgCRWord);
		boolean error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}
		else
		{
			String shiryoNo = (String)errInfoMap.get(KEY_SIRYO_NO);
			resMap.put(KEY_SIRYO_NO, shiryoNo);			// 資料番号
		}
		boolean koumokusuError = (Boolean)errInfoMap.get(KEY_EXIST_KOUMOKUSU_ERROR);
		if (!(koumokusuError))
		{
			// 項目数エラーが無かった場合
			// テーブルチェック
			commonItem.getLogPrint().printDebugLog("共通部品:テーブルデータチェック呼出(JCRBatCommon.checkTableData())");
			errInfoMap = JCRBatCommon.checkTableData(commonItem, dataList, errorRecordCount, chgCRWord, true);
			error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
			if (error)
			{
				commonItem.getLogPrint().printDebugLog("テーブルデータチェックエラー有");
				logData.append(errInfoMap.get(KEY_LOG_DATA));
				existError = true;
			}
			else
			{
				commonItem.getLogPrint().printDebugLog("テーブルデータチェックエラー無");
				String svcKeiNo = (String)errInfoMap.get(KEY_SVC_KEY_NO);
				String queBoxNo = (String)errInfoMap.get(KEY_QUE_BOX_NO);
				String myBoxNo = (String)errInfoMap.get(KEY_MYBOX_NO);
				if (svcKeiNo != null && !("".equals(svcKeiNo)))
				{
					resMap.put(KEY_SVC_KEY_NO, svcKeiNo);				// サービス契約番号
				}
				if (queBoxNo != null && !("".equals(queBoxNo)))
				{
					resMap.put(KEY_QUE_BOX_NO, queBoxNo);				// キューBOX番号
				}
				if (myBoxNo != null && !("".equals(myBoxNo)))
				{
					resMap.put(KEY_MYBOX_NO, myBoxNo);					// MYBOX番号
				}
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());

		return resMap;
	}

	/**
	 * データチェック
	 * @param dataList 1行分のデータ
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @param chgCRWord 改行コード変換文字
	 * @return エラー情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkData(List<String> dataList,
										int errorRecordCount,
										String chgCRWord) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;
		boolean existKoumokusuError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		if (dataList.size() < KOUMOKU_SU_START || dataList.size() > KOUMOKU_SU_END)
		{
			// エラーログ 項目数が正しくありません。(%1%)
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0180KW, new String[] {String.valueOf(errorRecordCount) + "レコード目"});
			logData.append(errorRecordCount + "レコード目:");
			logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0180KW, new String[] {"MATEファイル"}));
			logData.append(JCRStrConst.KAIGYO_CD);
			existError = true;
			existKoumokusuError = true;
		}
		else
		{
			// 項目数が正しい場合

			// 各項目チェック
			commonItem.getLogPrint().printDebugLog("共通部品:共通項目チェック呼出(JCRBatCommon.checkTrkmData())");
			Map<String, Object> errInfoMap = JCRBatCommon.checkTrkmData(commonItem, dataList, errorRecordCount, chgCRWord, true);
			boolean error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
			if (error)
			{
				logData.append(errInfoMap.get(KEY_LOG_DATA));
				existError = true;
			}

			// Web資料受付情報独自項目チェック
			Map<String, Object> resultMap = checkDataSub(commonItem, dataList, errorRecordCount, chgCRWord);
			error = (Boolean)resultMap.get(KEY_EXIST_ERROR);
			if (error)
			{
				logData.append(resultMap.get(KEY_LOG_DATA));
				existError = true;
			}
			String shiryoNo = (String)resultMap.get(KEY_SIRYO_NO);
			resMap.put(KEY_SIRYO_NO, shiryoNo);							// 資料番号
		}

		resMap.put(KEY_EXIST_ERROR, existError);						// エラー有無
		resMap.put(KEY_EXIST_KOUMOKUSU_ERROR, existKoumokusuError);		// 項目数エラー有無
		resMap.put(KEY_LOG_DATA, logData.toString());					// ログ用データ

		return resMap;
	}

	/**
	 * データチェック(Web資料受付情報独自項目チェック)
	 * @param commonItem 共通情報
	 * @param dataList 1行分のデータ
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @param chgCRWord 改行コード変換文字
	 * @return エラー情報及び資料番号を格納したMap
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkDataSub(JBSbatCommonItem commonItem,
											List<String> dataList,
											int errorRecordCount,
											String chgCRWord) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		Map<String, Object> errInfoMap = null;			// エラー情報

		// WEB受付番号チェック
		String webUktkNo = dataList.get(IDX_WEBUKTK_NO);
		errInfoMap = checkWebUktkNo(webUktkNo, errorRecordCount);
		boolean error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}

		// 送付区分チェック
		String sohuKbn = dataList.get(IDX_SOHU_KBN);
		errInfoMap = checkSohuKbn(sohuKbn, errorRecordCount);
		error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}

		// 資料分類チェック
		String shiryoBunrui = dataList.get(IDX_SHIRYO_BUNRUI);
		errInfoMap = checkShiryoBunrui(shiryoBunrui, errorRecordCount);
		error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}

		// 資料分類コード
		String shiryoBunruiCd = (String)errInfoMap.get(KEY_SIRYO_BUNRUI_CD);

		// 資料名チェック
		String shiryoNm = dataList.get(IDX_SHIRYO_NM);
		errInfoMap = checkShiryoNm(shiryoNm, shiryoBunruiCd, errorRecordCount);
		error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}

		// 資料番号
		String shiryoNo = (String)errInfoMap.get(KEY_SIRYO_NO);

		// 送付部数チェック
		String sohuBusu = dataList.get(IDX_SOHU_BUSU);
		errInfoMap = checkSohuBusu(sohuBusu, errorRecordCount);
		error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}

		// 送付先氏名チェック
		String sohusakiNm = dataList.get(IDX_SOHUSAKI_NM);
		errInfoMap = checkSohusakiNm(sohusakiNm, errorRecordCount);
		error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}

		// 送付先氏名カナチェック
		String sohusakiKana = dataList.get(IDX_SOHUSAKI_KANA);
		errInfoMap = checkSohusakiKana(sohusakiKana, errorRecordCount);
		error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}

		// 送付先電話番号チェック
		String sohusakiTel = dataList.get(IDX_SOHUSAKI_TEL);
		errInfoMap = checkSohusakiTelNo(sohusakiTel, errorRecordCount);
		error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}

		// 送付先郵便番号チェック
		String sohusakiYubinNo = dataList.get(IDX_SOHUSAKI_YUBIN);
		errInfoMap = checkSohusakiYubinNo(sohusakiYubinNo, errorRecordCount);
		error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}

		// 送付先住所1チェック
		String sohusakiJusho1 = dataList.get(IDX_SOHUSAKI_JUSHO1);
		errInfoMap = checkSohusakiJusho1(sohusakiJusho1, errorRecordCount);
		error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}

		// 送付先住所2チェック
		String sohusakiJusho2 = dataList.get(IDX_SOHUSAKI_JUSHO2);
		errInfoMap = checkSohusakiJusho2(sohusakiJusho2, errorRecordCount);
		error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}

		// 送付先住所3チェック
		String sohusakiJusho3 = dataList.get(IDX_SOHUSAKI_JUSHO3);
		errInfoMap = checkSohusakiJusho3(sohusakiJusho3, errorRecordCount);
		error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}

		// 備考チェック
		String biko = dataList.get(IDX_BIKO);
		errInfoMap = checkBiko(biko, errorRecordCount);
		error = (Boolean)errInfoMap.get(KEY_EXIST_ERROR);
		if (error)
		{
			logData.append(errInfoMap.get(KEY_LOG_DATA));
			existError = true;
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());
		resMap.put(KEY_SIRYO_NO, shiryoNo);				// 資料番号

		return resMap;
	}

	/**
	 * WEB受付番号チェック
	 * @param webUktkNo WEB受付番号
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @return エラー情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkWebUktkNo(String webUktkNo, int errorRecordCount) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		if (webUktkNo == null || "".equals(webUktkNo.trim()))
		{
			// 必須チェック
			// エラーログ
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0370TW, new String[] {"WEB受付番号"});
			logData.append(String.valueOf(errorRecordCount) + "レコード目:");
			logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0370TW, new String[] {"WEB受付番号"}));
			logData.append(JCRStrConst.KAIGYO_CD);

			existError = true;
		}
		else
		{
			int byteLength = JCRUtilCommon.getByteLength(webUktkNo);
			if (byteLength > WEB_UKTK_NO_BYTE_SU)
			{
				// 桁数チェック
				// ECRB0200TW	%1%のバイト数が正しくありません。(条件:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"WEB受付番号", WEB_UKTK_NO_BYTE_SU + "byte以内", String.valueOf(byteLength)});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"WEB受付番号", WEB_UKTK_NO_BYTE_SU + "byte以内", String.valueOf(byteLength)}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());

		return resMap;
	}

	/**
	 * 送付区分チェック
	 * @param sohuKbn 送付区分
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @return エラー情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkSohuKbn(String sohuKbn, int errorRecordCount) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		if (sohuKbn == null || "".equals(sohuKbn.trim()))
		{
			// 必須チェック
			// エラーログ
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付区分"});
			logData.append(String.valueOf(errorRecordCount) + "レコード目:");
			logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付区分"}));
			logData.append(JCRStrConst.KAIGYO_CD);

			existError = true;
		}
		else
		{
			boolean exist = false;
			StringBuilder jotaiList = new StringBuilder();
			for (int i = 0; i < SOHU_KBN_LIST.length; i++)
			{
				if (SOHU_KBN_LIST[i].equals(sohuKbn))
				{
					exist = true;
				}
				if (i != 0)
				{
					jotaiList.append(",");
				}
				jotaiList.append(SOHU_KBN_LIST[i]);
			}
			if (!(exist))
			{
				// 値チェック
				// ECRB0390TW	%1%の値チェックエラー。（%2%を入力）値：%3%
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0390TW, new String[] {"送付区分", jotaiList.toString(), sohuKbn});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0390TW, new String[] {"送付区分", jotaiList.toString(), sohuKbn}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());

		return resMap;
	}

	/**
	 * 資料分類チェック
	 * @param shiryoBunrui 資料分類
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @return エラー情報、資料分類コード
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkShiryoBunrui(String shiryoBunrui, int errorRecordCount) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();
		String shiryoBunruiCd = null;
		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		if (shiryoBunrui == null || "".equals(shiryoBunrui.trim()))
		{
			// 必須チェック
			// エラーログ
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0370TW, new String[] {"資料分類"});
			logData.append(String.valueOf(errorRecordCount) + "レコード目:");
			logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0370TW, new String[] {"資料分類"}));
			logData.append(JCRStrConst.KAIGYO_CD);

			existError = true;
		}
		else
		{
			int byteLength = JCRUtilCommon.getByteLength(shiryoBunrui);
			if (byteLength > SHIRYO_BUNRUI_BYTE_SU)
			{
				// 桁数チェック
				// ECRB0200TW	%1%のバイト数が正しくありません。(条件:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"資料分類", SHIRYO_BUNRUI_BYTE_SU + "byte以内", String.valueOf(byteLength)});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"資料分類", SHIRYO_BUNRUI_BYTE_SU + "byte以内", String.valueOf(byteLength)}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}
			else
			{
				// コード名称管理登録チェック
				shiryoBunruiCd = JCRBatCommon.getCodeKbn(commonItem, JZM0171Constant.CD00360, shiryoBunrui);
				if (shiryoBunruiCd == null || "".equals(shiryoBunruiCd.trim()))
				{
					// ECRB0250KW:データが登録されていません。(%1%)
					commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0250KW, new String[] {"コード名称管理;資料分類:" + shiryoBunrui});
					logData.append(String.valueOf(errorRecordCount) + "レコード目:");
					logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0250KW, new String[] {"コード名称管理;資料分類:" + shiryoBunrui}));
					logData.append(JCRStrConst.KAIGYO_CD);

					existError = true;
				}
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());
		resMap.put(KEY_SIRYO_BUNRUI_CD, shiryoBunruiCd);	// 資料分類コード

		return resMap;
	}

	/**
	 * 資料名チェック
	 * @param shiryoNm 資料名
	 * @param shiryoBunruiCd 資料分類コード
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @return エラー情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkShiryoNm(String shiryoNm, String shiryoBunruiCd, int errorRecordCount) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();
		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納
		String siryoNo = null;							// 資料番号

		String sysDate = JCRBatCommon.getSysDate();

		if (shiryoNm == null || "".equals(shiryoNm.trim()))
		{
			// 必須チェック
			// エラーログ
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0370TW, new String[] {"資料名"});
			logData.append(String.valueOf(errorRecordCount) + "レコード目:");
			logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0370TW, new String[] {"資料名"}));
			logData.append(JCRStrConst.KAIGYO_CD);

			existError = true;
		}
		else
		{
			int byteLength = JCRUtilCommon.getByteLength(shiryoNm);
			if (byteLength > SHIRYO_NM_BYTE_SU)
			{
				// 桁数チェック
				// ECRB0200TW	%1%のバイト数が正しくありません。(条件:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"資料名", SHIRYO_NM_BYTE_SU + "byte以内", String.valueOf(byteLength)});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"資料名", SHIRYO_NM_BYTE_SU + "byte以内", String.valueOf(byteLength)}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}
			else
			{
				// 資料テーブル存在チェック

				String[] param = new String[4];
				int index = 0;
				param[index++] = (shiryoNm == null) ? "" : shiryoNm;
				param[index++] = (shiryoBunruiCd == null) ? "" : shiryoBunruiCd;
				param[index++] = sysDate;
				param[index++] = sysDate;
				// 資料テーブル検索
				executeCR_M_ATICLE_CR_SELECT_001(param);
				JBSbatCommonDBInterface selectedData = db_CR_M_ATICLE.selectNext();
				if (selectedData != null)
				{
					siryoNo = selectedData.getString(JBSbatCR_M_ATICLE.ATICLE_NO);
				}

				if (siryoNo == null)
				{
					// ECRB0250KW:データが登録されていません。(%1%)
					String[] params = new String[] {"資料;資料名:" + shiryoNm + "、資料分類コード:" + shiryoBunruiCd};
					commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0250KW, params);
					logData.append(String.valueOf(errorRecordCount) + "レコード目:");
					logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0250KW, params));
					logData.append(JCRStrConst.KAIGYO_CD);

					existError = true;
				}
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());
		resMap.put(KEY_SIRYO_NO, siryoNo);

		return resMap;
	}

	/**
	 * 送付部数チェック
	 * @param sohuBusu 送付部数
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @return エラー情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkSohuBusu(String sohuBusu, int errorRecordCount) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		if (sohuBusu == null || "".equals(sohuBusu.trim()))
		{
			// 必須チェック
			// エラーログ
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付部数"});
			logData.append(String.valueOf(errorRecordCount) + "レコード目:");
			logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付部数"}));
			logData.append(JCRStrConst.KAIGYO_CD);

			existError = true;
		}
		else
		{
			if (!(JCRBatCommon.isHannkakuSuuji1(sohuBusu)))
			{
				// ECRB0230TW	%1%の属性が正しくありません。(属性:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付部数", "半角数字", sohuBusu});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付部数", "半角数字", sohuBusu}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}

			int byteLength = JCRUtilCommon.getByteLength(sohuBusu);
			if (byteLength > SOHU_BUSU_BYTE_SU)
			{
				// 桁数チェック
				// ECRB0200TW	%1%のバイト数が正しくありません。(条件:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"送付部数", SOHU_BUSU_BYTE_SU + "byte以内", String.valueOf(byteLength)});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"送付部数", SOHU_BUSU_BYTE_SU + "byte以内", String.valueOf(byteLength)}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());

		return resMap;
	}

	/**
	 * 送付先氏名チェック
	 * @param sohusakiNm 送付先氏名
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @return エラー情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkSohusakiNm(String sohusakiNm, int errorRecordCount) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		if (sohusakiNm == null || "".equals(sohusakiNm.trim()))
		{
			// 必須チェック
			// エラーログ
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付先氏名"});
			logData.append(String.valueOf(errorRecordCount) + "レコード目:");
			logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付先氏名"}));
			logData.append(JCRStrConst.KAIGYO_CD);

			existError = true;
		}
		else
		{
			if (!(JCRBatCommon.isKisyuIzonNmAd(sohusakiNm)))
			{
				// ECRB0230TW	%1%の属性が正しくありません。(属性:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付先氏名", "機種依存_氏名/住所", sohusakiNm});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付先氏名", "機種依存_氏名/住所", sohusakiNm}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}

			int byteLength = JCRUtilCommon.getByteLength(sohusakiNm);
			if (byteLength > SOHUSAKI_NM_BYTE_SU)
			{
				// 桁数チェック
				// ECRB0200TW	%1%のバイト数が正しくありません。(条件:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"送付先氏名", SOHUSAKI_NM_BYTE_SU + "byte以内", String.valueOf(byteLength)});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"送付先氏名", SOHUSAKI_NM_BYTE_SU + "byte以内", String.valueOf(byteLength)}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());

		return resMap;
	}

	/**
	 * 送付先氏名カナチェック
	 * @param sohusakiKana 送付先氏名カナ
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @return エラー情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkSohusakiKana(String sohusakiKana, int errorRecordCount) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		if (sohusakiKana == null || "".equals(sohusakiKana.trim()))
		{
			// 必須チェック
			// エラーログ
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付先氏名カナ"});
			logData.append(String.valueOf(errorRecordCount) + "レコード目:");
			logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付先氏名カナ"}));
			logData.append(JCRStrConst.KAIGYO_CD);

			existError = true;
		}
		else
		{
			if (!(JCRBatCommon.isZenkakuESuujiKana(sohusakiKana)))
			{
				// ECRB0230TW	%1%の属性が正しくありません。(属性:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付先氏名カナ", "全角英数字カナ", sohusakiKana});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付先氏名カナ", "全角英数字カナ", sohusakiKana}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}

			int byteLength = JCRUtilCommon.getByteLength(sohusakiKana);
			if (byteLength > SOHUSAKI_KANA_BYTE_SU)
			{
				// 桁数チェック
				// ECRB0200TW	%1%のバイト数が正しくありません。(条件:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"送付先氏名カナ", SOHUSAKI_KANA_BYTE_SU + "byte以内", String.valueOf(byteLength)});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"送付先氏名カナ", SOHUSAKI_KANA_BYTE_SU + "byte以内", String.valueOf(byteLength)}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());

		return resMap;
	}

	/**
	 * 送付先電話番号チェック
	 * @param telNo 送付先電話番号
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @return エラー情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkSohusakiTelNo(String telNo, int errorRecordCount)
	throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		if (telNo != null && !("".equals(telNo.trim())))
		{
			// ハイフン除去
			String telNoWork = JCRBatCommon.formatTelNoDel(telNo);
			int byteLength = JCRUtilCommon.getByteLength(telNoWork);
			if (byteLength > TELNO_BYTE_SU)
			{
				// 桁数チェック
				// ECRB0200TW	%1%のバイト数が正しくありません。(条件:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0200TW,
																new String[] {"送付先電話番号", TELNO_BYTE_SU + "byte以内", String.valueOf(byteLength)});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0200TW,
																new String[] {"送付先電話番号", TELNO_BYTE_SU + "byte以内", String.valueOf(byteLength)}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());

		return resMap;
	}

	/**
	 * 送付先郵便番号チェック
	 * @param yubinNo 送付先郵便番号
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @return エラー情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkSohusakiYubinNo(String yubinNo, int errorRecordCount)
	throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		if (yubinNo == null || "".equals(yubinNo.trim()))
		{
			// 必須チェック
			// エラーログ
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付先郵便番号"});
			logData.append(String.valueOf(errorRecordCount) + "レコード目:");
			logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付先郵便番号"}));
			logData.append(JCRStrConst.KAIGYO_CD);

			existError = true;
		}
		else
		{
			// ハイフン除去
			String yubinNoWork = yubinNo.replaceAll("-", "");

			if (!(JCRBatCommon.isHannkakuSuuji1(yubinNoWork)))
			{
				// ECRB0230TW	%1%の属性が正しくありません。(属性:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付先郵便番号", "半角数字、'-'", yubinNo});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付先郵便番号", "半角数字、'-'", yubinNo}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}

			int byteLength = JCRUtilCommon.getByteLength(yubinNoWork);
			if (byteLength > YUBINNO_BYTE_SU)
			{
				// 桁数チェック
				// ECRB0200TW	%1%のバイト数が正しくありません。(条件:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0200TW,
																new String[] {"送付先郵便番号", YUBINNO_BYTE_SU + "byte以内", String.valueOf(byteLength)});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0200TW,
																new String[] {"送付先郵便番号", YUBINNO_BYTE_SU + "byte以内", String.valueOf(byteLength)}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());

		return resMap;
	}

	/**
	 * 送付先住所1チェック
	 * @param jusho1 送付先住所1
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @return エラー情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkSohusakiJusho1(String jusho1, int errorRecordCount) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		if (jusho1 == null || "".equals(jusho1.trim()))
		{
			// 必須チェック
			// エラーログ
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付先住所1"});
			logData.append(String.valueOf(errorRecordCount) + "レコード目:");
			logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付先住所1"}));
			logData.append(JCRStrConst.KAIGYO_CD);

			existError = true;
		}
		else
		{
			if (!(JCRBatCommon.isKisyuIzonNmAd(jusho1)))
			{
				// ECRB0230TW	%1%の属性が正しくありません。(属性:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付先住所1", "機種依存_氏名/住所", jusho1});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付先住所1", "機種依存_氏名/住所", jusho1}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}

			int byteLength = JCRUtilCommon.getByteLength(jusho1);
			if (byteLength > JUSHO1_BYTE_SU)
			{
				// 桁数チェック
				// ECRB0200TW	%1%のバイト数が正しくありません。(条件:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"送付先住所1", JUSHO1_BYTE_SU + "byte以内", String.valueOf(byteLength)});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"送付先住所1", JUSHO1_BYTE_SU + "byte以内", String.valueOf(byteLength)}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());

		return resMap;
	}

	/**
	 * 送付先住所2チェック
	 * @param jusho2 送付先住所2
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @return エラー情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkSohusakiJusho2(String jusho2, int errorRecordCount) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		if (jusho2 == null || "".equals(jusho2.trim()))
		{
			// 必須チェック
			// エラーログ
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付先住所2"});
			logData.append(String.valueOf(errorRecordCount) + "レコード目:");
			logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0370TW, new String[] {"送付先住所2"}));
			logData.append(JCRStrConst.KAIGYO_CD);

			existError = true;
		}
		else
		{
			if (!(JCRBatCommon.isKisyuIzonNmAd(jusho2)))
			{
				// ECRB0230TW	%1%の属性が正しくありません。(属性:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付先住所2", "機種依存_氏名/住所", jusho2});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付先住所2", "機種依存_氏名/住所", jusho2}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}

			int byteLength = JCRUtilCommon.getByteLength(jusho2);
			if (byteLength > JUSHO2_BYTE_SU)
			{
				// 桁数チェック
				// ECRB0200TW	%1%のバイト数が正しくありません。(条件:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"送付先住所2", JUSHO2_BYTE_SU + "byte以内", String.valueOf(byteLength)});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"送付先住所2", JUSHO2_BYTE_SU + "byte以内", String.valueOf(byteLength)}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());

		return resMap;
	}

	/**
	 * 送付先住所3チェック
	 * @param jusho3 送付先住所3
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @return エラー情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkSohusakiJusho3(String jusho3, int errorRecordCount) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		if (jusho3 != null && !("".equals(jusho3.trim())))
		{
			if (!(JCRBatCommon.isKisyuIzonNmAd(jusho3)))
			{
				// ECRB0230TW	%1%の属性が正しくありません。(属性:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付先住所3", "機種依存_氏名/住所", jusho3});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0230TW, new String[] {"送付先住所3", "機種依存_氏名/住所", jusho3}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}

			int byteLength = JCRUtilCommon.getByteLength(jusho3);
			if (byteLength > JUSHO3_BYTE_SU)
			{
				// 桁数チェック
				// ECRB0200TW	%1%のバイト数が正しくありません。(条件:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"送付先住所3", JUSHO3_BYTE_SU + "byte以内", String.valueOf(byteLength)});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"送付先住所3", JUSHO3_BYTE_SU + "byte以内", String.valueOf(byteLength)}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());

		return resMap;
	}

	/**
	 * 備考チェック
	 * @param biko 備考
	 * @param errorRecordCount エラーが存在したレコードの件数番号
	 * @return エラー情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> checkBiko(String biko, int errorRecordCount) throws Exception
	{

		Map<String, Object> resMap = new HashMap<String, Object>();

		boolean existError = false;
		StringBuilder logData = new StringBuilder();	// 取込処理ログファイル出力内容格納

		if (biko != null && !("".equals(biko.trim())))
		{
			if (!(JCRBatCommon.isMailTitle(biko)))
			{
				// ECRB0230TW	%1%の属性が正しくありません。(属性:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0230TW, new String[] {"備考", "メールタイトル", biko});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0230TW, new String[] {"備考", "メールタイトル", biko}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}

			int byteLength = JCRUtilCommon.getByteLength(biko);
			if (byteLength > BIKO_BYTE_SU)
			{
				// 桁数チェック
				// ECRB0200TW	%1%のバイト数が正しくありません。(条件:%2% 値:%3%)
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"備考", BIKO_BYTE_SU + "byte以内", String.valueOf(byteLength)});
				logData.append(String.valueOf(errorRecordCount) + "レコード目:");
				logData.append(JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0200TW,
															new String[] {"備考", BIKO_BYTE_SU + "byte以内", String.valueOf(byteLength)}));
				logData.append(JCRStrConst.KAIGYO_CD);

				existError = true;
			}
		}

		resMap.put(KEY_EXIST_ERROR, existError);
		resMap.put(KEY_LOG_DATA, logData.toString());

		return resMap;
	}

	/**
	 * 登録処理
	 * @param commonItem バッチ共通パラメータ電文
	 * @param dataList 対象データ(1行分)
	 * @param svcKeiNo サービス契約番号
	 * @param myboxNo MYBOX番号
	 * @param queBoxNo キューBOX番号
	 * @param shiryoNo 資料番号
	 * @param chgCRWord 改行コード変換文字
	 * @param sohuNaiyoArray 送付内容
	 * @return NGワード情報
	 * @throws Exception 例外
	 */
	private Map<String, Object> entry(List<String> dataList,
									String svcKeiNo,
									String myboxNo,
									String queBoxNo,
									String shiryoNo,
									String chgCRWord,
									Object[] sohuNaiyoArray) throws Exception
	{

		String kokyakuTp = dataList.get(IDX_KOKYAKU_TYPE);			// 顧客タイプ
		String tiawsKyakuNo = dataList.get(IDX_TIAWS_KYAKU_NO);		// 問合せ客番号
		String jotai = dataList.get(IDX_JOTAI);						// 状態
		Map<String, Map<String, String>> ngwdMap = null;			// NGワードチェック結果情報

		// 登録済送付情報確認
		String taioKirkNo = null;
		String sohuNaiyo = null;
		int count = 0;
		if (sohuNaiyoArray != null && sohuNaiyoArray.length >= 3)
		{
			taioKirkNo = (String)sohuNaiyoArray[0];
			sohuNaiyo = (String)sohuNaiyoArray[1];
			count = (Integer)sohuNaiyoArray[2];
		}

		// 問合せ状態コード
		String jotaiCd = JCRBatCommon.getCodeKbn(commonItem, JZM0171Constant.CD00229, jotai);

		if (taioKirkNo == null || "".equals(taioKirkNo))
		{
			// 引数の対応記録番号が空白の場合(未登録の場合)

			// 問合せ客登録
			if (MI_KANYUSHA.equals(kokyakuTp))
			{
				if (tiawsKyakuNo == null || "".equals(tiawsKyakuNo.trim()))
				{
					// 問合せ客登録
					commonItem.getLogPrint().printDebugLog("共通部品:問合せ客登録呼出(JCRBatCommon.entryTiawsKyaku())");
					tiawsKyakuNo = JCRBatCommon.entryTiawsKyaku(commonItem, dataList);
				}
			}

			List<String> ngWordInfo = null;
			boolean existNGWord = false;
			if (!(JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_CLOSE.equals(jotaiCd)))
			{
				 // 状態がクローズでない場合

				// NGワードチェック
				commonItem.getLogPrint().printDebugLog("共通部品:NGワードチェック呼出(JCRBatCommon.checkRrkInfoInportNGWord())");
				ngWordInfo = JCRBatCommon.checkRrkInfoInportNGWord(commonItem, ngWordChkJokenList, dataList);
				if (ngWordInfo != null && ngWordInfo.size() > 0)
				{
					existNGWord = true;
				}
			}

			// 対応記録登録
			taioKirkNo = entryTaioKirok(dataList, svcKeiNo, tiawsKyakuNo, myboxNo, queBoxNo, jotaiCd, chgCRWord, existNGWord);

			// NGワード情報生成
			if (ngWordInfo != null && ngWordInfo.size() > 0)
			{
				String title = dataList.get(IDX_TITLE);				// タイトル
				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(taioKirkNo, title);
					ngwdMap.put(ngwd, map);
				}
			}

			// 対応記録明細登録
			commonItem.getLogPrint().printDebugLog("共通部品:対応記録明細登録呼出(JCRBatCommon.entryTaiokirkDtl())");
			JCRBatCommon.entryTaiokirkDtl(commonItem, dataList, taioKirkNo, jotaiCd, true);

			// カテゴリー存在確認
			// カテゴリーの組合せについてはチェック済のため
			// ここでは存在のみを確認する
			boolean existCtgr = false;
			String[] ctgrs = new String[MAX_TGR_LVL];
			for (int i = 0; i < ctgrs.length; i++)
			{
				ctgrs[i] = dataList.get(IDX_CTGR_01 + i);
				if (ctgrs[i] != null && !("".equals(ctgrs[i].trim())))
				{
					existCtgr = true;
				}
			}
			if (existCtgr)
			{
				// 対応記録内訳登録
				commonItem.getLogPrint().printDebugLog("共通部品:対応記録内訳登録呼出(JCRBatCommon.entryTaiokirkUcwk())");
				JCRBatCommon.entryTaiokirkUcwk(commonItem, taioKirkNo);
				// 対応記録内訳カテゴリー登録
				commonItem.getLogPrint().printDebugLog("共通部品:対応記録内訳カテゴリー登録呼出(JCRBatCommon.entryTaiokirkUwCtgr())");
				JCRBatCommon.entryTaiokirkUwCtgr(commonItem, ctgrs, taioKirkNo);
				// 対応記録内訳抽出ワーク登録
				JCRBatCommon.entryTiokrUwCstWkForNew(commonItem, taioKirkNo);
			}

			// 資料送付登録
			entryShiryoSohu(dataList, taioKirkNo, chgCRWord);

			String tanto = dataList.get(IDX_TANTO);			// 担当者

			// ワークグループ取得
			String workGroupCd = null;
			if (dataList.size() > IDX_WKKBT_ORG_CD)
			{
				workGroupCd = dataList.get(IDX_WKKBT_ORG_CD);
			}
			if (workGroupCd == null || "".equals(workGroupCd.trim()))
			{
				workGroupCd = JCRBatCommon.getWorkGroupCd(commonItem, JCRUtilCommon.adjustCharSize(tanto, USERID_BYTE_SU, "").trim(), queBoxNo);
			}
			// 問合せモニター集計用データ登録
			commonItem.getLogPrint().printDebugLog("共通部品:問合せモニター集計用データ登録呼出(JCRBatCommon.entryRrkInfoInportTiawsMntData())");
			JCRBatCommon.entryRrkInfoInportTiawsMntData(commonItem,
														queBoxNo,
														jotaiCd,
														taioKirkNo,
														JCRUtilCommon.adjustCharSize(tanto, USERID_BYTE_SU, "").trim(),
														workGroupCd,
														existNGWord);

		}
		else
		{
			// 引数の対応記録番号が空白でない場合(WEB受付番号が同じで既に登録されている場合)
			// 対応記録更新
			updateTaioKirok(dataList, taioKirkNo, sohuNaiyo, chgCRWord, jotaiCd);
		}

		// 資料送付記録番号
		int shiryoSohuKirkCount = 1;
		if (sohuNaiyo != null)
		{
			shiryoSohuKirkCount = count + 1;
		}
		String shiryoSohuKirkNo = JCRUtilCommon.fillZero(Integer.toString(shiryoSohuKirkCount), 10, false);

		// 資料送付記録登録
		entryShiryoSohuKirk(dataList, taioKirkNo, shiryoSohuKirkNo, shiryoNo);

		Map<String, Object> resMap = new HashMap<String, Object>();
		resMap.put(KEY_TAIOKRK_NO, taioKirkNo);
		resMap.put(KEY_NG_INFO, ngwdMap);

		return resMap;
	}

	/**
	 * 対応記録登録
	 * @param dataList 対象データ(1行分)
	 * @param svcKeiNo サービス契約番号
	 * @param tiawsKyakuNo 問合せ客番号
	 * @param myboxNo MYBOX番号
	 * @param queBoxNo キューBOX番号
	 * @param jotaiCd 問合せ状態コード
	 * @param chgCRWord 改行コード変換文字
	 * @param existNG NGワードが存在する場合true
	 * @return 対応記録番号
	 * @throws Exception 例外
	 */
	private String entryTaioKirok(List<String> dataList,
								String svcKeiNo,
								String tiawsKyakuNo,
								String myboxNo,
								String queBoxNo,
								String jotaiCd,
								String chgCRWord,
								boolean existNG) throws Exception
	{

		String sysDtms = JCRBatCommon.getSysDateTimeStamp();
		String userId = commonItem.getBatchUserId();

		// 対応記録番号
		String taioKirkNo = JCRBatCommon.getFormatedNextSeq(commonItem, JCRStrConst.SEQ_TAIO_KIROK_NO, "", KETA_TAIO_KIROK_NO);

		// 対応記録ステータス
		String status = null;
		if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_OPEN.equals(jotaiCd))
		{
			status = JCRStrConst.CD_DIV_TAIO_KIROK_STAT_SHORICHU;	// 処理中
		}
		else if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_CLOSE.equals(jotaiCd))
		{
			status = JCRStrConst.CD_DIV_TAIO_KIROK_STAT_CLOSE;		// クローズ
		}
		else if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_ESCL.equals(jotaiCd))
		{
			status = JCRStrConst.CD_DIV_TAIO_KIROK_STAT_ESCL;		// エスカレーション中
		}

		String tanto = dataList.get(IDX_TANTO);			// 担当者

		String kokyakuTp = dataList.get(IDX_KOKYAKU_TYPE);			// 顧客タイプ

		String wktiawsKyakuNo = tiawsKyakuNo;
		if (MI_KANYUSHA.equals(kokyakuTp))
		{
			// 「未加入者」の場合

			// サービス契約番号
			svcKeiNo = "";

			// 問合せ客番号
			if (tiawsKyakuNo != null && !("".equals(tiawsKyakuNo)))
			{
				wktiawsKyakuNo = JCRBatCommon.fillZero(tiawsKyakuNo, TIAWS_KYAKU_NO_BYTE_SU, false);
			}
		}
		else
		{
			wktiawsKyakuNo = "";
		}

		// MYBOX格納年月日時分秒
		String myboxKakunouDtm = null;
		if (myboxNo != null && !("".equals(myboxNo)))
		{
			myboxKakunouDtm = JCRBatCommon.getSysDateTime();
		}

		// キューBOX格納年月日時分秒
		String queBoxKakunouDtm = null;
		if (queBoxNo != null && !("".equals(queBoxNo)))
		{
			queBoxKakunouDtm = JCRBatCommon.getSysDateTime();
		}

		String sakuseiDate = getNoDateSignString(dataList.get(IDX_SAKUSEI_DATE));	// 作成日時

		// 対応完了年月日時分秒
		String taioKanryoDtm = null;
		if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_CLOSE.equals(jotaiCd))
		{
			taioKanryoDtm = sakuseiDate;
		}

		// 対応クローズ年月日時分秒
		String closeDtm = null;
		if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_CLOSE.equals(jotaiCd))
		{
			closeDtm = sakuseiDate;
		}

		// クローズ不可コード
		String closeHukaCd = JCRStrConst.CD_DIV_CLOSE_FAIL_CD_KANOU;
		if (existNG)
		{
			closeHukaCd = JCRStrConst.CD_DIV_CLOSE_FAIL_CD_HUKANOU;
		}

		// 問合せ受付種別コード
		String uketsuke = dataList.get(IDX_UKETSUKE_SBT);
		// コード名称管理検索
		String uketsukeCd = JCRBatCommon.getCodeKbn(commonItem, JZM0171Constant.CD00233, uketsuke);

		// タイトル
		String title = dataList.get(IDX_TITLE);
		if (title == null || "".equals(title.trim()))
		{
			title = JCRBatCommon.getApplicationConst("CR_TWS_RK_TITLE");
		}
		else
		{
			title = title.replaceAll("\"\"", "\"");
		}

		// キューBOX名
		String queNm = dataList.get(IDX_QUE_NM);
		// 対応記録履歴
		String rireki = makeRireki(dataList, chgCRWord, null, jotaiCd, queNm);

		// コールバック希望日時
		String callbackDate = getNoDateSignString(dataList.get(IDX_CALLBACK_DATE));
		String callbackYYYYMMDD = null;		// コールバック希望年月日
		String callbackHHMM = null;			// コールバック希望時間
		String callbackTypeCd = null;		// コールバック時間指定タイプコード
		if (callbackDate != null && !("".equals(callbackDate.trim())))
		{
			// コールバック希望年月日
			callbackYYYYMMDD = callbackDate.substring(0, KETA_CALLBACK_YYYYMMDD_END);

			// コールバック希望時間
			callbackHHMM = callbackDate.substring(KETA_CALLBACK_HHMI_START, KETA_CALLBACK_HHMI_END);
			callbackHHMM = getNoDateSignString(callbackHHMM);

			// コールバック時間指定タイプコード
			String callbackType = dataList.get(IDX_CALLBACK_TYPE);

			if (callbackType != null && !("".equals(callbackType.trim())))
			{
				callbackTypeCd = JCRBatCommon.getCodeKbn(commonItem, JZM0171Constant.CD00457, callbackType);
			}
		}

// v48.00.00 ANK-3795-00-00 ADD START
		// 見込顧客番号
		String mikmcstNo = null;
		if(dataList.size() > IDX_MIKMCST_NO)
		{
			mikmcstNo = dataList.get(IDX_MIKMCST_NO);
		}
// v48.00.00 ANK-3795-00-00 ADD END

// v48.00.00 ANK-3795-00-00 MOD START
//		String[] setParam = new String[35];
		String[] setParam = new String[36];
// v48.00.00 ANK-3795-00-00 MOD END
		int index = 0;

		setParam[index++] = taioKirkNo;						// 対応記録番号
		setParam[index++] = status;							// 対応記録ステータス
		setParam[index++] = JCRUtilCommon.adjustCharSize(tanto, USERID_BYTE_SU, "").trim();	// 対応ユーザーID
		setParam[index++] = svcKeiNo;						// サービス契約番号
		setParam[index++] = wktiawsKyakuNo;					// 問合せ客番号
		setParam[index++] = myboxNo;						// MYBOX番号
		setParam[index++] = queBoxNo;						// キューBOX番号
		setParam[index++] = myboxKakunouDtm;				// MYBOX格納年月日時分秒
		setParam[index++] = queBoxKakunouDtm;				// キューBOX格納年月日時分秒
		setParam[index++] = sakuseiDate;					// 対応開始年月日時分秒
		setParam[index++] = taioKanryoDtm;					// 対応完了年月日時分秒
		setParam[index++] = null;							// 対応キャンセル年月日時分秒
		setParam[index++] = null;							// 対応キャンセル再開年月日時分秒
		setParam[index++] = closeDtm;						// 対応クローズ年月日時分秒
		setParam[index++] = null;							// 対応クローズ再開年月日時分秒
		setParam[index++] = "0";							// トータル処理時間
		setParam[index++] = jotaiCd;						// 問合せ状態コード
		setParam[index++] = closeHukaCd;					// クローズ不可コード
		setParam[index++] = uketsukeCd;						// 問合せ受付種別コード
		setParam[index++] = null;							// 簡易メモ
		setParam[index++] = title;							// タイトル
		setParam[index++] = rireki;							// 対応記録履歴
		setParam[index++] = sakuseiDate;					// 受付年月日時分秒
		setParam[index++] = "0";							// 一時保存有無
		setParam[index++] = callbackYYYYMMDD;				// コールバック希望年月日
		setParam[index++] = callbackHHMM;					// コールバック希望時間
		setParam[index++] = callbackTypeCd;					// コールバック時間指定タイプコード
		setParam[index++] = null;							// 申込契機コード
		setParam[index++] = sysDtms;						// 登録年月日時分秒
		setParam[index++] = userId;							// 登録オペレータアカウント
		setParam[index++] = sysDtms;						// 更新年月日時分秒
		setParam[index++] = userId;							// 更新オペレータアカウント
		setParam[index++] = null;							// 削除年月日時分秒
		setParam[index++] = null;							// 削除オペレータアカウント
		setParam[index++] = JCRStrConst.CD_DIV_MK_FLG_YUKO;	// 無効フラグ
// v48.00.00 ANK-3795-00-00 ADD START
		setParam[index++] = mikmcstNo;						// 見込顧客番号
// v48.00.00 ANK-3795-00-00 ADD END

		// 対応記録登録
		executeCR_T_TAIO_KIROK_PKINSERT(setParam);

		return taioKirkNo;
	}

	/**
	 * 履歴情報生成
	 * @param dataList 1行分データのList
	 * @param chgCRWord 改行コード変換文字
	 * @param sohuNaiyo 送付内容
	 * @param jotaiCd 問合せ状態コード
	 * @param queNm キューBOX名
	 * @return 生成された履歴情報
	 * @throws Exception 例外
	 */
	private String makeRireki(List<String> dataList, String chgCRWord, String sohuNaiyo, String jotaiCd, String queNm) throws Exception
	{

		// 対応記録履歴
		String tanto = JCRUtilCommon.adjustCharSize(dataList.get(IDX_TANTO), USERID_BYTE_SU, "").trim();	// 送付区分			(必須)
		String sakuseiDate = dataList.get(IDX_SAKUSEI_DATE);		// 作成日時			(必須)
		String webUktkNo = dataList.get(IDX_WEBUKTK_NO);			// WEB受付番号		(必須)
		String sohuKbn = dataList.get(IDX_SOHU_KBN);				// 送付区分			(必須)
		String shiryoBunrui = dataList.get(IDX_SHIRYO_BUNRUI);		// 資料分類			(必須)
		String shiryoNm = dataList.get(IDX_SHIRYO_NM);				// 資料名			(必須)
		String sohuBusu = dataList.get(IDX_SOHU_BUSU);				// 送付部数			(必須)
		String sohusakiNm = dataList.get(IDX_SOHUSAKI_NM);			// 送付先氏名		(必須)
		String sohusakiKana = dataList.get(IDX_SOHUSAKI_KANA);		// 送付先氏名カナ	(必須)
		String sohusakiTel = dataList.get(IDX_SOHUSAKI_TEL);		// 送付先電話番号
		String sohusakiYubinNo = dataList.get(IDX_SOHUSAKI_YUBIN);	// 送付先郵便番号	(必須)
		String sohusakiJusho1 = dataList.get(IDX_SOHUSAKI_JUSHO1);	// 送付先住所1		(必須)
		String sohusakiJusho2 = dataList.get(IDX_SOHUSAKI_JUSHO2);	// 送付先住所2		(必須)
		String sohusakiJusho3 = dataList.get(IDX_SOHUSAKI_JUSHO3);	// 送付先住所3

		String biko = dataList.get(IDX_BIKO);						// 備考
		if (biko != null && !("".equals(biko)))
		{
			biko = biko.replaceAll(chgCRWord, " ");
			biko = biko.replaceAll("\"\"", "\"");
		}

		// 業務個別設定組織
		String workGroupCd = JCRBatCommon.getWorkGroupCd(commonItem, tanto, null);
		// 送付部署名
		String workGroupNm = JCRBatCommon.getWkkbtOrgNm(commonItem, workGroupCd);

		// システム日時　14桁
		String sysDtm = JCRBatCommon.getSysDateTime();

		String sysYYYYMMDDHHMM = JCRBatCommon.formatDatetimeMM(sysDtm.substring(0, KETA_YYYYMMDDHHMM));
		String separateLine = "------------------------------------------------------------";

		String rireki = dataList.get(IDX_RIREKI);
		if (rireki != null)
		{
			rireki = rireki.replaceAll(chgCRWord, JCRStrConst.KAIGYO_CD);
			rireki = rireki.replaceAll("\"\"", "\"");
		}

		StringBuilder sb = new StringBuilder();

		sb.append(separateLine).append(JCRStrConst.KAIGYO_CD);
		sb.append("◇新規作成：　（MATE取込） ").append(sysYYYYMMDDHHMM).append(JCRStrConst.KAIGYO_CD);
		sb.append(separateLine).append(JCRStrConst.KAIGYO_CD);

		if (rireki != null && !("".equals(rireki)))
		{
			sb.append(rireki);
			sb.append(JCRStrConst.KAIGYO_CD);
			sb.append(separateLine).append(JCRStrConst.KAIGYO_CD);
		}

		sb.append("◆対応箇所：").append(workGroupNm).append("(").append(tanto).append(")").append(JCRStrConst.KAIGYO_CD);
		sb.append("　対応日時：").append(sakuseiDate).append(JCRStrConst.KAIGYO_CD);
		sb.append("　対応種別：資料送付").append(JCRStrConst.KAIGYO_CD);

		if (sohuNaiyo != null)
		{
			sb.append(sohuNaiyo);
			sb.append(JCRStrConst.KAIGYO_CD);
		}
		sb.append("　送付内容：").append(shiryoBunrui).append(KUGIRI).append(shiryoNm).append(KUGIRI).append(sohuBusu);
		sb.append(JCRStrConst.KAIGYO_CD);

		sb.append("　送付先情報：").append(sohusakiNm).append(KUGIRI).append(sohusakiKana).append(KUGIRI).append(sohusakiTel).append(KUGIRI).append(sohuKbn);
		sb.append(JCRStrConst.KAIGYO_CD);
		sb.append("　送付先住所：").append(sohusakiYubinNo).append(sohusakiJusho1).append(sohusakiJusho2).append(sohusakiJusho3);
		sb.append(JCRStrConst.KAIGYO_CD);
		sb.append("　備考：").append(webUktkNo).append(KUGIRI).append(biko).append(JCRStrConst.KAIGYO_CD);
		sb.append(separateLine).append(JCRStrConst.KAIGYO_CD);

		if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_CLOSE.equals(jotaiCd))
		{
			// 問合せ状態が「クローズ」の場合
			sb.append("◇クローズ：　（MATE取込） ").append(sysYYYYMMDDHHMM).append(JCRStrConst.KAIGYO_CD);
			sb.append(separateLine).append(JCRStrConst.KAIGYO_CD);
		}

		if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_ESCL.equals(jotaiCd))
		{
			// 問合せ状態が「エスカレーション」の場合
			sb.append("□エスカレーション：　（MATE取込） ").append(sysYYYYMMDDHHMM).append(JCRStrConst.KAIGYO_CD);
			sb.append("　エスカレーション先：　「").append(queNm).append("」キュー").append(JCRStrConst.KAIGYO_CD);
			sb.append(separateLine).append(JCRStrConst.KAIGYO_CD);
		}

		return sb.toString();
	}

	/**
	 * 日付記号を除去した文字列を取得する。
	 * @param target 対象文字列
	 * @return 日付記号を除去した文字列
	 */
	private static String getNoDateSignString(String target)
	{
		String res = target;
		res = res.replaceAll("/", "");
		res = res.replaceAll(":", "");
		res = res.replaceAll("\\.", "");
		res = res.replaceAll(" ", "");
		return res;
	}

	/**
	 * 対応記録登録
	 * @param dataList 対象データ(1行分)
	 * @param taioKirkNo 対応記録番号
	 * @param sohuNaiyo 送付内容
	 * @param chgCRWord 改行コード変換文字
	 * @param jotaiCd 問合せ状態コード
	 * @throws Exception 例外
	 */
	private void updateTaioKirok(List<String> dataList,
								String taioKirkNo,
								String sohuNaiyo,
								String chgCRWord,
								String jotaiCd) throws Exception
	{
		// キューBOX名
		String queNm = dataList.get(IDX_QUE_NM);

		// 対応記録履歴
		String rireki = makeRireki(dataList, chgCRWord, sohuNaiyo, jotaiCd, queNm);

		String[] setParam = new String[3];
		setParam[0] = rireki;
		setParam[1] = JCRBatCommon.getSysDateTimeStamp();
		setParam[2] = commonItem.getBatchUserId();

		String[] whereParam = new String[1];
		whereParam[0] = taioKirkNo;
		executeCR_T_TAIO_KIROK_PKUPDATE(setParam, whereParam);

		commonItem.getLogPrint().printDebugLog("[対応記録更新]");
	}

	/**
	 * 資料送付・資料送付記録登録
	 * @param dataList 対象データ(1行分)
	 * @param taioKirkNo 対応記録番号
	 * @param chgCRWord 改行コード変換文字
	 * @throws Exception 例外
	 */
	private void entryShiryoSohu(List<String> dataList, String taioKirkNo, String chgCRWord)
	throws Exception
	{
		String sysDtms = JCRBatCommon.getSysDateTimeStamp();
		String userId = commonItem.getBatchUserId();

		String tanto = dataList.get(IDX_TANTO);						// 担当者			(必須)
		String sohusakiNm = dataList.get(IDX_SOHUSAKI_NM);			// 送付先氏名		(必須)
		String sohusakiKana = dataList.get(IDX_SOHUSAKI_KANA);		// 送付先氏名カナ	(必須)
		String sohusakiYubinNo = dataList.get(IDX_SOHUSAKI_YUBIN);	// 送付先郵便番号	(必須)
		if (sohusakiYubinNo != null && !("".equals(sohusakiYubinNo)))
		{
			sohusakiYubinNo = sohusakiYubinNo.replaceAll("-", "");
		}
		String sohusakiJusho1 = dataList.get(IDX_SOHUSAKI_JUSHO1);	// 送付先住所1		(必須)
		String sohusakiJusho2 = dataList.get(IDX_SOHUSAKI_JUSHO2);	// 送付先住所2		(必須)
		String sohusakiJusho3 = dataList.get(IDX_SOHUSAKI_JUSHO3);	// 送付先住所3
		if (sohusakiJusho3 == null || ("".equals(sohusakiJusho3.trim())))
		{
			sohusakiJusho3 = "";
		}

		String biko = dataList.get(IDX_BIKO);						// 備考
		if (biko == null || ("".equals(biko.trim())))
		{
			biko = "";
		}
		if (biko != null && !("".equals(biko)))
		{
			biko = biko.replaceAll(chgCRWord, " ");
			biko = biko.replaceAll("\"\"", "\"");
		}

		String sohusakiTelNo = dataList.get(IDX_SOHUSAKI_TEL);		// 送付先電話番号
		if (sohusakiTelNo == null || ("".equals(sohusakiTelNo.trim())))
		{
			sohusakiTelNo = "";
		}
		if (sohusakiTelNo != null && !("".equals(sohusakiTelNo)))
		{
			sohusakiTelNo = sohusakiTelNo.replaceAll("-", "");
		}

		// 資料送付登録項目設定
		String[] param = new String[KOMOKU_SU_ATICLE_SOHU];
		int index = 0;
		param[index++] = taioKirkNo;						// 対応記録番号
		param[index++] = DEFAULT_SHIRYO_SOHU_NO;			// 資料送付番号
		param[index++] = JCRUtilCommon.adjustCharSize(tanto, USERID_BYTE_SU, "").trim();	// 送付受付担当ユーザーID
		param[index++] = biko;								// 資料送付備考
		param[index++] = sohusakiNm;						// 送付先名
		param[index++] = sohusakiKana;						// 送付先カナ名
		param[index++] = sohusakiYubinNo;					// 送付先郵便番号
		param[index++] = null;								// 送付先都道府県名
		param[index++] = null;								// 送付先市区町村名
		param[index++] = null;								// 送付先大字通称名
		param[index++] = null;								// 送付先字丁目名
		param[index++] = sohusakiJusho1 + sohusakiJusho2 + sohusakiJusho3;		// 送付先番地号
		param[index++] = null;								// 送付先住所補記・建物名
		param[index++] = null;								// 送付先住所補記・部屋番号
		param[index++] = sohusakiTelNo;						// 送付先電話番号
		param[index++] = sysDtms;							// 登録年月日時分秒
		param[index++] = userId;							// 登録オペレータアカウント
		param[index++] = sysDtms;							// 更新年月日時分秒
		param[index++] = userId;							// 更新オペレータアカウント
		param[index++] = null;								// 削除年月日時分秒
		param[index++] = null;								// 削除オペレータアカウント
		param[index++] = JCRStrConst.CD_DIV_MK_FLG_YUKO;	// 無効フラグ

		// 資料送付登録
		executeCR_T_ATICLE_SOHU_PKINSERT(param);
	}

	/**
	 * 資料送付・資料送付記録登録
	 * @param dataList 対象データ(1行分)
	 * @param taioKirkNo 対応記録番号
	 * @param shiryoSohuKirkNo 資料送付記録番号
	 * @param shiryoNo 資料番号
	 * @throws Exception 例外
	 */
	private void entryShiryoSohuKirk(List<String> dataList, String taioKirkNo, String shiryoSohuKirkNo, String shiryoNo)
	throws Exception
	{
		String sysDate = JCRBatCommon.getSysDate();
		String sysDtms = JCRBatCommon.getSysDateTimeStamp();
		String userId = commonItem.getBatchUserId();

		String sohuKbn = dataList.get(IDX_SOHU_KBN);				// 送付区分			(必須)
		String sohuBusu = dataList.get(IDX_SOHU_BUSU);				// 送付部数			(必須)

		// 資料送付方法種別コード
		String siryoSohuSbtCd = JCRBatCommon.getCodeKbn(commonItem, JZM0171Constant.CD00304, sohuKbn);

		// 資料送付記録登録項目設定
		String[] param = new String[KOMOKU_SU_ATICLE_SOHU_KIROK];
		int index = 0;
		param[index++] = taioKirkNo;				// 対応記録番号
		param[index++] = DEFAULT_SHIRYO_SOHU_NO;	// 資料送付番号
		param[index++] = shiryoSohuKirkNo;			// 資料送付記録番号
		param[index++] = JCRStrConst.CD_DIV_SIRYOSOFU_KIROK_STAT_MISOFU;	// 資料送付記録ステータス
		param[index++] = shiryoNo;					// 資料番号
		param[index++] = sohuBusu;					// 送付部数
		param[index++] = siryoSohuSbtCd;			// 資料送付方法種別コード
		param[index++] = sysDate;					// 資料送付記録作成年月日
		param[index++] = null;						// ラベル出力年月日
		param[index++] = null;						// 資料送付完了年月日
		param[index++] = sysDtms;					// 登録年月日時分秒
		param[index++] = userId;					// 登録オペレータアカウント
		param[index++] = sysDtms;					// 更新年月日時分秒
		param[index++] = userId;					// 更新オペレータアカウント
		param[index++] = null;						// 削除年月日時分秒
		param[index++] = null;						// 削除オペレータアカウント
		param[index++] = JCRStrConst.CD_DIV_MK_FLG_YUKO;	// 無効フラグ

		// 資料送付記録登録
		executeCR_T_ATICLE_SOHU_KRK_PKINSERT(param);
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CR_M_ATICLE.close();
		db_CR_T_TAIO_KIROK.close();
		db_CR_T_ATICLE_SOHU.close();
		db_CR_T_ATICLE_SOHU_KRK.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/

		// データアクセスオブジェクトクローズ
		JCRBatCommon.closeDataAccessObj(commonItem);

	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * 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 executeCR_M_ATICLE_CR_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_CR_M_ATICLE.selectBySqlDefine(paramList, CR_M_ATICLE_CR_SELECT_001);
	}

	/**
	 * 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
	 *		 	見込顧客番号				MIKMCST_NO
	 * </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]);
// v48.00.00 ANK-3795-00-00 ADD START
		setMap.setValue("MIKMCST_NO", setParam[35]);
// v48.00.00 ANK-3795-00-00 ADD END
	
		// DBアクセスを実行します
		db_CR_T_TAIO_KIROK.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	対応記録履歴				TAIO_KIROK_RIREKI
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	TAIO_KIROK_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TAIO_KIROK_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TAIO_KIROK_RIREKI", setParam[0]);
		setMap.setValue("UPD_DTM", setParam[1]);
		setMap.setValue("UPD_OPEACNT", setParam[2]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("TAIO_KIROK_NO", whereParam[0]);

		// DBアクセスを実行します
		db_CR_T_TAIO_KIROK.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	対応記録番号				TAIO_KIROK_NO
	 *		 	資料送付番号				ATICLE_SOHU_NO
	 *		 	送付受付担当ユーザーＩＤ				SOHU_UK_USER_ID
	 *		 	資料送付備考				ATICLE_SOHU_BIKO
	 *		 	送付先名				SOHUS_NM
	 *		 	送付先カナ名				SOHUS_KANA_NM
	 *		 	送付先郵便番号				SOHUS_PCD
	 *		 	送付先都道府県名				SOHUS_STATE_NM
	 *		 	送付先市区町村名				SOHUS_CITY_NM
	 *		 	送付先大字通称名				SOHUS_OAZTSU_NM
	 *		 	送付先字丁目名				SOHUS_AZCHO_NM
	 *		 	送付先番地号				SOHUS_BNCHIGO
	 *		 	送付先住所補記・建物名				SOHUS_ADRTTM
	 *		 	送付先住所補記・部屋番号				SOHUS_ADRRM
	 *		 	送付先電話番号				SOHUS_TELNO
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_ATICLE_SOHU_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TAIO_KIROK_NO", setParam[0]);
		setMap.setValue("ATICLE_SOHU_NO", setParam[1]);
		setMap.setValue("SOHU_UK_USER_ID", setParam[2]);
		setMap.setValue("ATICLE_SOHU_BIKO", setParam[3]);
		setMap.setValue("SOHUS_NM", setParam[4]);
		setMap.setValue("SOHUS_KANA_NM", setParam[5]);
		setMap.setValue("SOHUS_PCD", setParam[6]);
		setMap.setValue("SOHUS_STATE_NM", setParam[7]);
		setMap.setValue("SOHUS_CITY_NM", setParam[8]);
		setMap.setValue("SOHUS_OAZTSU_NM", setParam[9]);
		setMap.setValue("SOHUS_AZCHO_NM", setParam[10]);
		setMap.setValue("SOHUS_BNCHIGO", setParam[11]);
		setMap.setValue("SOHUS_ADRTTM", setParam[12]);
		setMap.setValue("SOHUS_ADRRM", setParam[13]);
		setMap.setValue("SOHUS_TELNO", setParam[14]);
		setMap.setValue("ADD_DTM", setParam[15]);
		setMap.setValue("ADD_OPEACNT", setParam[16]);
		setMap.setValue("UPD_DTM", setParam[17]);
		setMap.setValue("UPD_OPEACNT", setParam[18]);
		setMap.setValue("DEL_DTM", setParam[19]);
		setMap.setValue("DEL_OPEACNT", setParam[20]);
		setMap.setValue("MK_FLG", setParam[21]);
	
		// DBアクセスを実行します
		db_CR_T_ATICLE_SOHU.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	対応記録番号				TAIO_KIROK_NO
	 *		 	資料送付番号				ATICLE_SOHU_NO
	 *		 	資料送付記録番号				ATICLE_SOHU_KIROK_NO
	 *		 	資料送付記録ステータス				ATICLE_SOHU_KIROK_STAT
	 *		 	資料番号				ATICLE_NO
	 *		 	送付部数				SOHU_CNT
	 *		 	資料送付方法種別コード				ATICLE_SOHU_SBT_CD
	 *		 	資料送付記録作成年月日				ATICLE_SOHU_KRK_SAKSEI_YMD
	 *		 	ラベル出力年月日時分				LABEL_OUTPUT_YMDHM
	 *		 	資料送付完了年月日				ATICLE_SOHU_FIN_YMD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_ATICLE_SOHU_KRK_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TAIO_KIROK_NO", setParam[0]);
		setMap.setValue("ATICLE_SOHU_NO", setParam[1]);
		setMap.setValue("ATICLE_SOHU_KIROK_NO", setParam[2]);
		setMap.setValue("ATICLE_SOHU_KIROK_STAT", setParam[3]);
		setMap.setValue("ATICLE_NO", setParam[4]);
		setMap.setValue("SOHU_CNT", setParam[5]);
		setMap.setValue("ATICLE_SOHU_SBT_CD", setParam[6]);
		setMap.setValue("ATICLE_SOHU_KRK_SAKSEI_YMD", setParam[7]);
		setMap.setValue("LABEL_OUTPUT_YMDHM", setParam[8]);
		setMap.setValue("ATICLE_SOHU_FIN_YMD", 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_ATICLE_SOHU_KRK.insertByPrimaryKeys(setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

}
