/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCRIktEscl
*	ソースファイル名	：JBSbatCRIktEscl.java
*	作成者				：富士通　
*	作成日				：2011年10月11日
*＜機能概要＞
*　エスカレーション一括処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者			修正内容
*	v1.00.00	2011/10/11   富士通			新規作成
*	v6.00.00	2013/11/15   FJ）斉藤(諭)	OM-2013-0004086対応
*	v6.00.01	2013/11/28   FJ）斉藤(諭)	OM-2013-0004744対応
*	v6.00.02	2013/11/29   FJ）斉藤(諭)	ANK-1637-00-00対応
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.math.BigDecimal;
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 java.util.TreeSet;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCRBatCommon;
import eo.business.util.table.JBSbatCC_T_DLYD_TRN_REQ;
import eo.business.util.table.JBSbatCR_T_MYBOX;
import eo.business.util.table.JBSbatCR_T_TAIOKRK_DTL;
import eo.business.util.table.JBSbatCR_T_TAIO_KIROK;
import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JCRUtilCommon;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.log.JBSbatLogPrintControl;

/**
* エスカレーション一括処理<p>
*<BR>
* @author 富士通
*/
public class JBSbatCRIktEscl extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(ＭＹＢＯＸ)*/
	private static final String D_TBL_NAME_CR_T_MYBOX = "CR_T_MYBOX";

	/** テーブル(対応記録)*/
	private static final String D_TBL_NAME_CR_T_TAIO_KIROK = "CR_T_TAIO_KIROK";

	/** テーブル(対応記録明細)*/
	private static final String D_TBL_NAME_CR_T_TAIOKRK_DTL = "CR_T_TAIOKRK_DTL";

	/** テーブル(キューＢＯＸ)*/
	private static final String D_TBL_NAME_CR_T_QUE_BOX = "CR_T_QUE_BOX";

	/** SQL定義キー(CR_SELECT_001)*/
	private static final String CR_T_MYBOX_CR_SELECT_001 = "CR_SELECT_001";

	/** SQL定義キー(CR_SELECT_016)*/
	private static final String CR_T_TAIO_KIROK_CR_SELECT_016 = "CR_SELECT_016";

	/** SQL定義キー(CR_SELECT_008)*/
	private static final String CR_T_TAIOKRK_DTL_CR_SELECT_008 = "CR_SELECT_008";

	/** SQL定義キー(CR_SELECT_006)*/
	private static final String CR_T_TAIOKRK_DTL_CR_SELECT_006 = "CR_SELECT_006";

	/** SQL定義キー(CR_UPDATE_001)*/
	private static final String CR_T_QUE_BOX_CR_UPDATE_001 = "CR_UPDATE_001";

	/** SQL定義キー(CR_UPDATE_001)*/
	private static final String CR_T_MYBOX_CR_UPDATE_001 = "CR_UPDATE_001";

	/** SQL定義キー(CR_UPDATE_002)*/
	private static final String CR_T_QUE_BOX_CR_UPDATE_002 = "CR_UPDATE_002";

	/** SQL定義キー(CR_UPDATE_002)*/
	private static final String CR_T_MYBOX_CR_UPDATE_002 = "CR_UPDATE_002";

	/** テーブルアクセスクラス(ＭＹＢＯＸ)*/
	private JBSbatSQLAccess db_CR_T_MYBOX = null;

	/** テーブルアクセスクラス(対応記録)*/
	private JBSbatSQLAccess db_CR_T_TAIO_KIROK = null;

	/** テーブルアクセスクラス(対応記録明細)*/
	private JBSbatSQLAccess db_CR_T_TAIOKRK_DTL = null;

	/** テーブルアクセスクラス(キューＢＯＸ)*/
	private JBSbatSQLAccess db_CR_T_QUE_BOX = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 対応履歴一時ファイル保存先パス
	 */
	private String tmpFileDir = null;

	/**
	 * システム日時　17桁
	 */
	private String sysDtms = null;

	/**
	 * システム日時　14桁
	 */
	private String sysDtm = null;

	/** 初期処理エラーメッセージ */
	private String initErrMessage = null;

	/** エスカレーション先区分　1(キューBOX) */
	private static final String ESCL_SAKI_KBN_QUE = "1";

	/** エスカレーション先区分　2(ユーザー) */
	private static final String ESCL_SAKI_KBN_USER = "2";

	/** 1行目の項目数 */
	private static final int KOUMOKUSU_1GYOUME = 9;

	/** 項目数 */
	private static final int KOUMOKUSU = 2;

	/** 対応記録明細番号の桁数 */
	private static final int KETA_TAIO_KIROK_DTL_NO = 10;

	/** YYYYMMDDHHmmの桁数 */
	private static final int KETA_YYYYMMDDHHMM = 12;

	/** エラーメッセージ取得キー */
	private static final String KEY_ERR_MESSAGE = "KEY_ERR_MESSAGE";

	/** エスカレーション先区分取得キー */
	private static final String KEY_ESCL_SAKI_KBN = "ESCL_SAKI_KBN";

	/** エスカレーション先ユーザーID取得キー */
	private static final String KEY_ESCL_SAKI_USER_ID = "ESCL_SAKI_USER_ID";

	/** エスカレーション先ユーザー名取得キー */
	private static final String KEY_ESCL_SAKI_USER_NM = "ESCL_SAKI_USER_NM";

	/** エスカレーション先MYBOX番号取得キー */
	private static final String KEY_ESCL_SAKI_MYBOX_NO = "ESCL_SAKI_MYBOX_NO";

	/** エスカレーション先キューBOX番号取得キー */
	private static final String KEY_ESCL_SAKI_QUEBOX_NO = "ESCL_SAKI_QUEBOX_NO";

	/** エスカレーション先キューBOX名取得キー */
	private static final String KEY_ESCL_SAKI_QUEBOX_NM = "ESCL_SAKI_QUEBOX_NM";

	/** エスカレーション先キューBOX番号取得キー */
	private static final String KEY_ESCL_SAKI_WKKBT_ORG_NM = "ESCL_SAKI_WKKBT_ORG_NM";

	/** 問合せ状態コード取得キー */
	private static final String KEY_TIAWS_JOTAI_CD = "TIAWS_JOTAI_CD";

	/** ログインユーザーID取得キー */
	private static final String KEY_LOGIN_USER_ID = "LOGIN_USER_ID";

	/** ログインユーザー名取得キー */
	private static final String KEY_LOGIN_USER_NM = "LOGIN_USER_NM";

	/** ログインユーザーの業務個別設定組織コード取得キー */
	private static final String KEY_LOGIN_USER_WKKBT_ORG_CD = "LOGIN_USER_WKKBT_ORG_CD";

	/** ログインユーザーの業務個別設定組織名取得キー */
	private static final String KEY_LOGIN_USER_WKKBT_ORG_NM = "LOGIN_USER_WKKBT_ORG_NM";

	/** 対応記録番号取得キー */
	private static final String KEY_TAIO_KRK_NO = "TAIO_KRK_NO";

	/** 対応ユーザーID取得キー */
	private static final String KEY_TAIO_USER_ID = "TAIO_USER_ID";

	/** エスカレーション元キューBOX番号取得キー */
	private static final String KEY_ESCL_MOTO_QUEBOX_NO = "ESCL_MOTO_QUEBOX_NO";

	/** エスカレーション元MYBOX番号取得キー */
	private static final String KEY_ESCL_MOTO_MYBOX_NO = "ESCL_MOTO_MYBOX_NO";

	/** 対応記録履歴取得キー */
	private static final String KEY_TAIO_KIROK_RIREKI = "TAIO_KIROK_RIREKI";

	/** 件数取得項目名 */
	private static final String CNT = "CNT";

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CR_T_MYBOX = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_MYBOX);
		db_CR_T_TAIO_KIROK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TAIO_KIROK);
		db_CR_T_TAIOKRK_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TAIOKRK_DTL);
		db_CR_T_QUE_BOX = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_QUE_BOX);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

		// プロパティーチェック
		initErrMessage = checkProperty();

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * プロパティーチェック
	 * @return エラーメッセージ
	 */
	private String checkProperty()
	{
		// プロパティーチェック
		String errMessage = null;

		try
		{
			// 対応履歴一時ファイル保存先パス
			tmpFileDir = JCRBatCommon.getApplicationConst("CR_TEMP_FILE_DIR");
			if (tmpFileDir == null || "".equals(tmpFileDir.trim()))
			{
				// ECRB0010KW:プロパティーファイルの設定が正しくありません。(項目名:%1%)
				errMessage = JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0010KW, new String[] {"CR_TEMP_FILE_DIR"});
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECRB0010KW, new String[] {"CR_TEMP_FILE_DIR"});
			}
			else if (JCRUtilCommon.checkDirExist(tmpFileDir) == null)
			{
				// 存在しない場合
				// ECRB0160KW:指定されたパスが存在しません。(%1%)
				errMessage = JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0160KW, new String[] {tmpFileDir});
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECRB0160KW, new String[] {tmpFileDir});
			}
			super.logPrint.printDebugLog("対応履歴一時ファイル保存先パス:" + tmpFileDir);
		}
		catch (Exception e)
		{
			// ECRB0260KW:%1%処理中に予期せぬエラーが発生しました。　%2%
			errMessage = JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.ECRB0260KW, new String[] {"一括エスカレーション", e.toString()});
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECRB0260KW, new String[] {"一括エスカレーション", e.toString()});
			super.logPrint.printDebugLog("例外発生:" + e.toString());
			super.logPrint.printDebugLog("　　　　:" + e.getMessage());
		}

		return errMessage;
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		// 2-(1) ディレイド処理依頼情報取得
		ArrayList<HashMap<String, Object>> shoriIraiInfoList = JCRBatCommon.getShoriIraiInfo(commonItem, super.jobid);

		if (shoriIraiInfoList != null)
		{
			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "ディレイド処理依頼件数", shoriIraiInfoList.size());

			for (int i = 0; i < shoriIraiInfoList.size(); i++)
			{
				// ディレイド処理結果コード
				String shoriKekkaCd = JCRStrConst.DLYD_SYSTEM_ERR;	// 一旦システムエラーのコードを設定

				String shoriiraiNo = null;		// ディレイド処理依頼番号
				List<String> errList = null;	// エラー情報List

				try
				{
					// 2-(2) ディレイド処理依頼情報1件読込
					HashMap<String, Object> shoriIraiInfoMap = shoriIraiInfoList.get(i);
					// ディレイド処理依頼番号
					shoriiraiNo = shoriIraiInfoMap.get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO).toString();
					// システム日時　17桁
					sysDtms = JCRBatCommon.getSysDateTimeStamp();
					// システム日時　14桁
					sysDtm = sysDtms.substring(0, 14);

					if (initErrMessage == null)
					{
						// 初期処理チェックでエラーがない場合

						// 2-(3) 画面入力情報ファイル取得
						byte[] gamenDataBytes = (byte[])shoriIraiInfoMap.get("INPUT_EFILE");

						// エスカレーション一括処理実行
						errList = executeEscl(gamenDataBytes);

						// 処理結果コード設定
						if (errList == null || errList.isEmpty())
						{
							shoriKekkaCd = JCRStrConst.DLYD_OK;
						}
						else
						{
							shoriKekkaCd = JCRStrConst.DLYD_GYOMU_ERR;
						}
					}
				}
				catch (JBSbatBusinessException ex)
				{
					// システムエラーフラグを設定する
					shoriKekkaCd = JCRStrConst.DLYD_SYSTEM_ERR;
					super.logPrint.printDebugLog("システムエラー発生:" + ex.toString());
					super.logPrint.printDebugLog("　　　　　　　　　:" + ex.getMessage());
				}
				finally
				{
					// (8) 終了処理
					end(shoriiraiNo, shoriKekkaCd, errList);
				}
			}
		}
		else
		{
			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "ディレイド処理依頼件数", 0);
		}
		return null;

	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * エスカレーション一括処理実行
	 * @param gamenDataBytes 画面入力情報ファイルデータ
	 * @return エラー情報List
	 * @throws Exception 例外
	 */
	private List<String> executeEscl(byte[] gamenDataBytes) throws Exception
	{
		List<String> errList = new ArrayList<String>();
		BufferedReader gamenDataFile = null;
		int rowNum = 0;		// 行番号

		Set<String> queBoxSet = new TreeSet<String>();
		Set<String> userSet = new TreeSet<String>();

		try
		{
			gamenDataFile = new BufferedReader(new StringReader(new String(gamenDataBytes, JCRStrConst.DEFAULT_ENCODE)));

			// 2-(4) 行読込
			String gamenData = gamenDataFile.readLine();

			// 1行目の情報
			String esclSakiKbn = 			null;		// エスカレーション先区分
			String esclSakiQueBoxNo = 		null;		// キューBOX番号			(エスカレーション先)
			String esclSakiQueBoxNm = 		null;		// キューBOX名				(エスカレーション先)
//			String esclSakiWkKbtOrgCd = 	null;		// 業務個別設定組織コード	(エスカレーション先)
			String esclSakiWkKbtOrgNm = 	null;		// 業務個別設定組織名		(エスカレーション先)

			String esclSakiUserId = 		null;		// ユーザーID				(エスカレーション先)
			String esclSakiUserNm = 		null;		// ユーザー名				(エスカレーション先)
			String esclSakiMyBoxNo = 		null;		// MYBOX番号				(エスカレーション先)

			String loginUserId = 			null;		// 画面のログインユーザーID
			String loginUserNm = 			null;		// 画面のログインユーザー名
			String loginUserWkKbtOrgCd = 	null;		// 画面の業務個別設定組織コード
			String loginUserWkKbtOrgNm = 	null;		// 画面の業務個別設定組織名

			// 2行目以降の情報
			String taioKrkNo = 				null;		// 対応記録番号
			String updateDtm = 				null;		// 対応記録．更新年月日時分秒

			String taioUserId = 			null;		// 対応ユーザーID
			String esclMotoMyBoxNo = 		null;		// MYBOX番号
			String esclMotoQueBoxNo = 		null;		// キューBOX番号
			String tiawsJotaiCd = 			null;		// 問合せ状態コード
			String rireki = 				null;		// 対応記録履歴
			String ichijiHozonUmu = 		null;		// 一時保存有無

			while (gamenData != null)
			{
				++rowNum;

				// 2-(5)-(a) 画面入力項目取得
				List<String> oneLineKoumokuList = JCRUtilCommon.convStringToList(gamenData);

				// 2-(5)-(b) 項目数チェック
				String errMessage = checkKoumokuSu(rowNum, oneLineKoumokuList.size());
				if (errMessage != null)
				{
					errList.add(errMessage);
				}

				if (errList.isEmpty())
				{
					if (rowNum == 1)
					{
						// 1行目の場合
						// 2-(5)-(c) エスカレーション先情報取得

						// (1) エスカレーション先区分取得
						esclSakiKbn = oneLineKoumokuList.get(0);

						if (ESCL_SAKI_KBN_QUE.equals(esclSakiKbn))
						{
							// エスカレーション先区分が'1'(キューBOX)の場合
							esclSakiQueBoxNo = oneLineKoumokuList.get(1);	// キューBOX番号(エスカレーション先)
							esclSakiQueBoxNm = oneLineKoumokuList.get(2);	// キューBOX名	(エスカレーション先)

							if (esclSakiQueBoxNo != null && !("".equals(esclSakiQueBoxNo)))
							{
								// キューBOX番号　(エスカレーション先)
								queBoxSet.add(esclSakiQueBoxNo);
							}
						}
						else
						{
							// (2) エスカレーション先ユーザーMYBOX情報取得
							esclSakiUserId = oneLineKoumokuList.get(1);		// ユーザーID	(エスカレーション先)
							esclSakiUserNm = oneLineKoumokuList.get(2);		// ユーザー名	(エスカレーション先)
							Map<String, String> myBoxInfoMap = getMyBox(esclSakiUserId);
							errMessage = myBoxInfoMap.get(KEY_ERR_MESSAGE);
							if (errMessage != null)
							{
								errList.add(errMessage);
							}
							else
							{
								esclSakiMyBoxNo = myBoxInfoMap.get(JBSbatCR_T_MYBOX.MYBOX_NO);	// MYBOX番号(エスカレーション先)

								if (esclSakiUserId != null && !("".equals(esclSakiUserId)))
								{
									// ユーザーID　(エスカレーション先)
									userSet.add(esclSakiUserId);
								}
							}
						}

//						esclSakiWkKbtOrgCd = 	oneLineKoumokuList.get(3);	// 業務個別設定組織コード	(エスカレーション先)
						esclSakiWkKbtOrgNm = 	oneLineKoumokuList.get(4);	// 業務個別設定組織名		(エスカレーション先)
						loginUserId = 			oneLineKoumokuList.get(5);	// 画面のログインユーザーID
						loginUserNm = 			oneLineKoumokuList.get(6);	// 画面のログインユーザー名
						loginUserWkKbtOrgCd = 	oneLineKoumokuList.get(7);	// 画面の業務個別設定組織コード
						loginUserWkKbtOrgNm = 	oneLineKoumokuList.get(8);	// 画面の業務個別設定組織名
					}
					else
					{
						// 2行目以降の場合
						// 2-(5)-(d) 対応記録情報取得
						taioKrkNo = oneLineKoumokuList.get(0);				// 対応記録番号
						updateDtm = oneLineKoumokuList.get(1);				// 対応記録．更新年月日時分秒
						Map<String, String> taioKrkInfoMap = getTaioKrkInfo(taioKrkNo, updateDtm);
						errMessage = taioKrkInfoMap.get(KEY_ERR_MESSAGE);
						if (errMessage != null)
						{
							errList.add(errMessage);
						}
						else
						{
							taioUserId = 		taioKrkInfoMap.get(JBSbatCR_T_TAIO_KIROK.TAIO_USER_ID);			// 対応ユーザーID
							esclMotoMyBoxNo = 	taioKrkInfoMap.get(JBSbatCR_T_TAIO_KIROK.MYBOX_NO);				// MYBOX番号
							esclMotoQueBoxNo = 	taioKrkInfoMap.get(JBSbatCR_T_TAIO_KIROK.QUE_BOX_NO);			// キューBOX番号
							tiawsJotaiCd = 		taioKrkInfoMap.get(JBSbatCR_T_TAIO_KIROK.TOIAWASE_STAT_CD);		// 問合せ状態コード
							rireki = 			taioKrkInfoMap.get(JBSbatCR_T_TAIO_KIROK.TAIO_KIROK_RIREKI);	// 対応記録履歴
							ichijiHozonUmu = 	taioKrkInfoMap.get(JBSbatCR_T_TAIO_KIROK.TMP_SAVE_UM);			// 一時保存有無
						}
					}
				}

				// 2-(6) データチェック処理
				if (errList.isEmpty())
				{
					if (rowNum >= 2)
					{
						// 2行目以降の場合
						// 一時保存中チェック
						errMessage = checkIchijiHozon(ichijiHozonUmu, taioKrkNo);
						if (errMessage != null)
						{
							errList.add(errMessage);
						}
					}
				}

				// 2-(7) データ更新・登録処理
				if (errList.isEmpty())
				{
					if (rowNum >= 2)
					{
						// 2行目以降の場合

						Map<String, String> paramMap = new HashMap<String, String>();
						paramMap.put(KEY_ESCL_SAKI_KBN, 			esclSakiKbn);			// エスカレーション先区分
						paramMap.put(KEY_ESCL_SAKI_USER_ID, 		esclSakiUserId);		// ユーザーID			(エスカレーション先)
						paramMap.put(KEY_ESCL_SAKI_USER_NM, 		esclSakiUserNm);		// ユーザー名			(エスカレーション先)
						paramMap.put(KEY_ESCL_SAKI_MYBOX_NO, 		esclSakiMyBoxNo);		// MYBOX番号			(エスカレーション先)
						paramMap.put(KEY_ESCL_SAKI_QUEBOX_NO, 		esclSakiQueBoxNo);		// キューBOX番号		(エスカレーション先)
						paramMap.put(KEY_ESCL_SAKI_QUEBOX_NM, 		esclSakiQueBoxNm);		// キューBOX名			(エスカレーション先)
						paramMap.put(KEY_ESCL_SAKI_WKKBT_ORG_NM, 	esclSakiWkKbtOrgNm);	// 業務個別設定組織名	(エスカレーション先)
						paramMap.put(KEY_TIAWS_JOTAI_CD, 			tiawsJotaiCd);			// 問合せ状態コード
						paramMap.put(KEY_LOGIN_USER_NM, 			loginUserNm);			// 画面のログインユーザー名
						paramMap.put(KEY_LOGIN_USER_WKKBT_ORG_NM, 	loginUserWkKbtOrgNm);	// 画面の業務個別設定組織名
						paramMap.put(KEY_TAIO_KRK_NO, 				taioKrkNo);				// 対応記録番号
						paramMap.put(KEY_TAIO_USER_ID, 				taioUserId);			// 対応ユーザーID
						paramMap.put(KEY_ESCL_MOTO_QUEBOX_NO, 		esclMotoQueBoxNo);		// キューBOX番号		(エスカレーション元)
						paramMap.put(KEY_ESCL_MOTO_MYBOX_NO, 		esclMotoMyBoxNo);		// MYBOX番号			(エスカレーション元)
						paramMap.put(KEY_TAIO_KIROK_RIREKI, 		rireki);				// 対応記録履歴
						paramMap.put(KEY_LOGIN_USER_ID, 			loginUserId);			// 画面のログインユーザーID
						paramMap.put(KEY_LOGIN_USER_WKKBT_ORG_CD, 	loginUserWkKbtOrgCd);	// 画面の業務個別設定組織コード

						if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_ESCL.equals(tiawsJotaiCd))
						{
							// 問合せ状態が「エスカレーション」の場合

							if (esclMotoQueBoxNo != null && !("".equals(esclMotoQueBoxNo)))
							{
								// キューBOX番号		(エスカレーション元)
								queBoxSet.add(esclMotoQueBoxNo);
							}
						}

						if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_OPEN.equals(tiawsJotaiCd))
						{
							// 問合せ状態が「オープン」の場合

							if (taioUserId != null && !("".equals(taioUserId)))
							{
								// 対応ユーザーID
								userSet.add(taioUserId);
							}
						}

						// 登録更新処理
						entry(paramMap);
					}
				}

				if (errList.isEmpty())
				{
					gamenData = gamenDataFile.readLine();
				}
				else
				{
					gamenData = null;
				}
			}

			if (errList.isEmpty())
			{
				// 現在格納数更新
				updateNowKaknoCnt(queBoxSet, userSet);
			}

		}
		finally
		{
			// 処理件数ログ出力
			JCRBatCommon.printShoriCountLog(commonItem, "処理行数", rowNum);

			if (gamenDataFile != null)
			{
				try
				{
					gamenDataFile.close();
				}
				catch (IOException ioe)
				{
					// ECRB0260KW %1%処理中に予期せぬエラーが発生しました。　%2%
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECRB0260KW, new String[]{"画面入力情報ファイルクローズ", "(処理は続行します)"});
				}
			}
		}

		return errList;
	}

	/**
	 * 項目数チェック
	 * @param rowNum 行番号
	 * @param koumokuSu 項目数
	 * @return エラーメッセージ
	 */
	private String checkKoumokuSu(int rowNum, int koumokuSu)
	{
		String errMessage = null;

		if (rowNum == 1)
		{
			// 1行目の場合
			if (koumokuSu != KOUMOKUSU_1GYOUME)
			{
				// ECRB0180KW:項目数が正しくありません。（%1%）
				String messageId = JPCBatchMessageConstant.ECRB0180KW;
				String[] logParam = new String[]{"1行目"};
				super.logPrint.printBusinessErrorLog(messageId, logParam);
				errMessage = JBSbatLogPrintControl.getMessage(messageId, logParam);
			}
		}
		else
		{
			// 2行目以降の場合
			if (koumokuSu != KOUMOKUSU)
			{
				// ECRB0180KW:項目数が正しくありません。（%1%）
				String messageId = JPCBatchMessageConstant.ECRB0180KW;
				String[] logParam = new String[]{rowNum + "行目"};
				super.logPrint.printBusinessErrorLog(messageId, logParam);
				errMessage = JBSbatLogPrintControl.getMessage(messageId, logParam);
			}
		}

		return errMessage;
	}

	/**
	 * MYBOX情報取得
	 * @param userId ユーザーID
	 * @return キューBOX情報Map
	 * 			キー				値
	 * 			KEY_ERR_MESSAGE		エラーメッセージ
	 * 			MYBOX_NO			MYBOX番号
	 * @throws Exception 例外
	 */
	private Map<String, String> getMyBox(String userId) throws Exception
	{
		Map<String, String> resMap = new HashMap<String, String>();
		String errMessage = null;

		// MYBOX情報取得
		executeCR_T_MYBOX_CR_SELECT_001(new String[]{userId});
		JBSbatCommonDBInterface myBoxData = db_CR_T_MYBOX.selectNext();
		if (myBoxData != null)
		{
			resMap.put(JBSbatCR_T_MYBOX.MYBOX_NO, myBoxData.getString(JBSbatCR_T_MYBOX.MYBOX_NO));
		}
		else
		{
			// ECRB0250KW:データが登録されていません。（%1%）
			String messageId = JPCBatchMessageConstant.ECRB0250KW;
			String[] logParam = new String[]{"ユーザーID:" + userId};
			super.logPrint.printBusinessErrorLog(messageId, logParam);
			errMessage = JBSbatLogPrintControl.getMessage(messageId, logParam);
		}

		resMap.put(KEY_ERR_MESSAGE, errMessage);

		return resMap;
	}

	/**
	 * 対応記録情報取得
	 * @param taioKrkNo 対応記録番号
	 * @param updateDtm 対応記録．更新年月日時分秒
	 * @return 対応記録情報Map
	 * 			キー				値
	 * 			KEY_ERR_MESSAGE		エラーメッセージ
	 * 			TAIO_USER_ID		対応ユーザーID
	 * 			MYBOX_NO			MYBOX番号
	 * 			QUE_BOX_NO			キューBOX番号
	 * 			TOIAWASE_STAT_CD	問合せ状態コード
	 * 			TMP_SAVE_UM			一時保存有無
	 * @throws Exception 例外
	 */
	private Map<String, String> getTaioKrkInfo(String taioKrkNo, String updateDtm) throws Exception
	{
		Map<String, String> resMap = new HashMap<String, String>();
		String errMessage = null;

		executeCR_T_TAIO_KIROK_CR_SELECT_016(new String[]{taioKrkNo, updateDtm});
		JBSbatCommonDBInterface taioKrkData = db_CR_T_TAIO_KIROK.selectNext();
		if (taioKrkData != null)
		{
			// 対応記録明細存在チェック
			executeCR_T_TAIOKRK_DTL_CR_SELECT_008(new String[]{taioKrkNo});
			JBSbatCommonDBInterface dtlData = db_CR_T_TAIOKRK_DTL.selectNext();
			BigDecimal dtlCount = dtlData.getBigDecimal(CNT);
			if (dtlCount == null || dtlCount.intValue() <= 0)
			{
				// ECRB0250KW:データが登録されていません。（%1%）
				String messageId = JPCBatchMessageConstant.ECRB0250KW;
				String[] logParam = new String[]{"問合せID:" + taioKrkNo + "の対応記録明細が存在しません"};
				super.logPrint.printBusinessErrorLog(messageId, logParam);
				errMessage = JBSbatLogPrintControl.getMessage(messageId, logParam);
			}
			else
			{
				resMap.put(JBSbatCR_T_TAIO_KIROK.TAIO_USER_ID, 			taioKrkData.getString(JBSbatCR_T_TAIO_KIROK.TAIO_USER_ID));			// 対応ユーザーID
				resMap.put(JBSbatCR_T_TAIO_KIROK.MYBOX_NO, 				taioKrkData.getString(JBSbatCR_T_TAIO_KIROK.MYBOX_NO));				// MYBOX番号
				resMap.put(JBSbatCR_T_TAIO_KIROK.QUE_BOX_NO, 			taioKrkData.getString(JBSbatCR_T_TAIO_KIROK.QUE_BOX_NO));			// キューBOX番号
				resMap.put(JBSbatCR_T_TAIO_KIROK.TOIAWASE_STAT_CD, 		taioKrkData.getString(JBSbatCR_T_TAIO_KIROK.TOIAWASE_STAT_CD));		// 問合せ状態コード
				resMap.put(JBSbatCR_T_TAIO_KIROK.TAIO_KIROK_RIREKI, 	taioKrkData.getString(JBSbatCR_T_TAIO_KIROK.TAIO_KIROK_RIREKI));	// 対応記録履歴
				resMap.put(JBSbatCR_T_TAIO_KIROK.TMP_SAVE_UM, 			taioKrkData.getString(JBSbatCR_T_TAIO_KIROK.TMP_SAVE_UM));			// 一時保存有無
			}
		}
		else
		{
			// ECRB0250KW:データが登録されていません。（%1%）
			String messageId = JPCBatchMessageConstant.ECRB0250KW;
			String[] logParam = new String[]{"問合せID:" + taioKrkNo};
			super.logPrint.printBusinessErrorLog(messageId, logParam);
			errMessage = JBSbatLogPrintControl.getMessage(messageId, logParam);
		}

		resMap.put(KEY_ERR_MESSAGE, errMessage);

		return resMap;
	}

	/**
	 * 一時保存中チェック
	 * 一時保存有無が'0'(無)でない場合にエラーとする
	 * @param ichijiHozonUmu 一時保存有無
	 * @param taioKrkNo 対応記録番号
	 * @return エラーメッセージ
	 */
	private String checkIchijiHozon(String ichijiHozonUmu, String taioKrkNo)
	{
		String errMessage = null;

		// 一時保存中チェック
		if (!(JCRStrConst.TEMP_SAVE_OFF.equals(ichijiHozonUmu)))
		{
			// 一時保存有無が'0'(無)でない場合
			// ECRB0190KW:%1%の内容が正しくありません。（%2%）
			String messageId = JPCBatchMessageConstant.ECRB0190KW;
			String[] logParam = new String[]{"一時保存有無", "問合せID:" + taioKrkNo};
			super.logPrint.printBusinessErrorLog(messageId, logParam);
			errMessage = JBSbatLogPrintControl.getMessage(messageId, logParam);
		}

		return errMessage;
	}

	/**
	 * 登録更新処理
	 * @param paramMap 引数格納Map
	 * @throws Exception 例外
	 */
	private void entry(Map<String, String> paramMap) throws Exception
	{
		String loginUserId =		paramMap.get(KEY_LOGIN_USER_ID);			// 画面のログインユーザーID
		String loginUserWkKbtOrgCd = paramMap.get(KEY_LOGIN_USER_WKKBT_ORG_CD);	// 画面の業務個別設定組織コード
		String esclSakiKbn = 		paramMap.get(KEY_ESCL_SAKI_KBN);			// エスカレーション先区分
		String esclSakiUserId = 	paramMap.get(KEY_ESCL_SAKI_USER_ID);		// ユーザーID			(エスカレーション先)
		String esclSakiMyBoxNo = 	paramMap.get(KEY_ESCL_SAKI_MYBOX_NO);		// MYBOX番号			(エスカレーション先)
		String esclSakiQueBoxNo = 	paramMap.get(KEY_ESCL_SAKI_QUEBOX_NO);		// キューBOX番号		(エスカレーション先)
		String tiawsJotaiCd = 		paramMap.get(KEY_TIAWS_JOTAI_CD);			// 問合せ状態コード
		String taioKrkNo = 			paramMap.get(KEY_TAIO_KRK_NO);				// 対応記録番号
		String taioUserId = 		paramMap.get(KEY_TAIO_USER_ID);				// 対応ユーザーID
		String esclMotoQueBoxNo = 	paramMap.get(KEY_ESCL_MOTO_QUEBOX_NO);		// キューBOX番号		(エスカレーション元)
		String esclMotoMyBoxNo = 	paramMap.get(KEY_ESCL_MOTO_MYBOX_NO);		// MYBOX番号			(エスカレーション元)

		// (a) 対応記録更新
		updateTaioKrk(paramMap);

		// (b) 対応記録明細登録
		// ・最大対応記録明細番号取得
		executeCR_T_TAIOKRK_DTL_CR_SELECT_006(new String[]{taioKrkNo});
		JBSbatCommonDBInterface taioKrkMeisaiData = db_CR_T_TAIOKRK_DTL.selectNext();
		BigDecimal maxTaioKrkDtlNo = taioKrkMeisaiData.getBigDecimal(JBSbatCR_T_TAIOKRK_DTL.TAIO_KIROK_DTL_NO);

		// ・対応記録明細登録
		if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_CLOSE.equals(tiawsJotaiCd)
			|| JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_CNCL.equals(tiawsJotaiCd))
		{
			// 問合せ状態が「クローズ」「キャンセル」の場合
			// 「再開」の明細作成
			maxTaioKrkDtlNo = maxTaioKrkDtlNo.add(new BigDecimal(1));
			String saikaiMeisaiNo = JCRBatCommon.fillZero(maxTaioKrkDtlNo.toString(), KETA_TAIO_KIROK_DTL_NO, false);
			entryTaioKirkDtl(taioKrkNo, saikaiMeisaiNo, loginUserId, loginUserWkKbtOrgCd, JCRStrConst.CD_DIV_ACTION_TYPE_CD_SAIKAI);
		}

		if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_ESCL.equals(tiawsJotaiCd))
		{
			// 問合せ状態が「エスカレーション」の場合
			// 「アクセプト」の明細作成
			maxTaioKrkDtlNo = maxTaioKrkDtlNo.add(new BigDecimal(1));
			String acceptMeisaiNo = JCRBatCommon.fillZero(maxTaioKrkDtlNo.toString(), KETA_TAIO_KIROK_DTL_NO, false);
			entryTaioKirkDtl(taioKrkNo, acceptMeisaiNo, loginUserId, loginUserWkKbtOrgCd, JCRStrConst.CD_DIV_ACTION_TYPE_CD_ACCEPT);
		}

		// 「一括エスカレーション」の明細作成
		maxTaioKrkDtlNo = maxTaioKrkDtlNo.add(new BigDecimal(1));
		String esclMeisaiNo = JCRBatCommon.fillZero(maxTaioKrkDtlNo.toString(), KETA_TAIO_KIROK_DTL_NO, false);
		entryTaioKirkDtl(taioKrkNo, esclMeisaiNo, loginUserId, loginUserWkKbtOrgCd, JCRStrConst.CD_DIV_ACTION_TYPE_CD_IKT_ESCL);

		// (c) エスカレーション[先]キューBOX更新		(現在格納数 + 1)
		if (ESCL_SAKI_KBN_QUE.equals(esclSakiKbn))
		{
			// エスカレーション先区分が'1'(キューBOX)の場合

			// (1) キューBOX更新
//			String[] param = new String[]{"1", sysDtms, sysDtms, batchUserId, esclSakiQueBoxNo};
//			executeCR_T_QUE_BOX_CR_UPDATE_001(param);

			// (2) 問合せモニタワーク登録
			String esclMotoWkKbtOrgCd = JCRBatCommon.getWorkGroupCd(commonItem, taioUserId, null);
			JCRBatCommon.entryTiawsMontQueMvData(commonItem,
												JCRStrConst.DATA_SBT_CD_UKETSUKE,
												taioKrkNo,
												esclSakiQueBoxNo,
												esclMotoWkKbtOrgCd,
												batchUserId);
		}

		// (d) エスカレーション[先]ユーザーのMYBOX更新	(現在格納数 + 1)
//		if (ESCL_SAKI_KBN_USER.equals(esclSakiKbn))
//		{
			// エスカレーション先区分が'2'(ユーザー)の場合
			// (1) キューBOX更新
//			String[] param = new String[]{"1", sysDtms, sysDtms, batchUserId, esclSakiMyBoxNo};
//			executeCR_T_MYBOX_CR_UPDATE_001(param);
//		}

		// (e) エスカレーション[元]キューBOX更新		(現在格納数 - 1)
//		if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_ESCL.equals(tiawsJotaiCd))
//		{
			// 問合せ状態が「エスカレーション」の場合
//			String[] param = new String[]{"-1", sysDtms, batchUserId, esclMotoQueBoxNo};
//			executeCR_T_QUE_BOX_CR_UPDATE_002(param);
//		}

		// (f) エスカレーション[元]ユーザーのMYBOX更新	(現在格納数 - 1)
//		if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_OPEN.equals(tiawsJotaiCd))
//		{
			// 問合せ状態が「オープン」の場合
//			String[] param = new String[]{"-1", sysDtms, batchUserId, esclMotoMyBoxNo};
//			executeCR_T_MYBOX_CR_UPDATE_002(param);
//		}
	}

	/**
	 * 対応記録更新
	 * @param paramMap 引数格納Map
	 * @throws Exception 例外
	 */
	private void updateTaioKrk(Map<String, String> paramMap) throws Exception
	{
		String esclSakiKbn = 			paramMap.get(KEY_ESCL_SAKI_KBN);			// エスカレーション先区分
		String esclSakiUserId = 		paramMap.get(KEY_ESCL_SAKI_USER_ID);		// ユーザーID			(エスカレーション先)
		String esclSakiUserNm = 		paramMap.get(KEY_ESCL_SAKI_USER_NM);		// ユーザー名			(エスカレーション先)
		String esclSakiMyBoxNo = 		paramMap.get(KEY_ESCL_SAKI_MYBOX_NO);		// MYBOX番号			(エスカレーション先)
		String esclSakiQueBoxNo = 		paramMap.get(KEY_ESCL_SAKI_QUEBOX_NO);		// キューBOX番号		(エスカレーション先)
		String esclSakiQueBoxNm = 		paramMap.get(KEY_ESCL_SAKI_QUEBOX_NM);		// キューBOX名			(エスカレーション先)
		String esclSakiWkKbtOrgNm = 	paramMap.get(KEY_ESCL_SAKI_WKKBT_ORG_NM);	// 業務個別設定組織名	(エスカレーション先)
		String tiawsJotaiCd = 			paramMap.get(KEY_TIAWS_JOTAI_CD);			// 問合せ状態コード
		String loginUserNm = 			paramMap.get(KEY_LOGIN_USER_NM);			// 画面のログインユーザー名
		String loginUserWkKbtOrgNm = 	paramMap.get(KEY_LOGIN_USER_WKKBT_ORG_NM);	// 画面の業務個別設定組織名
		String taioKrkNo = 				paramMap.get(KEY_TAIO_KRK_NO);				// 対応記録番号
		String rireki = 				paramMap.get(KEY_TAIO_KIROK_RIREKI);		// 対応記録履歴

		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();

		if (ESCL_SAKI_KBN_QUE.equals(esclSakiKbn))
		{
			// キューBOXへのエスカレーションの場合
			setMap.setValue("TAIO_KIROK_STAT", JCRStrConst.CD_DIV_TAIO_KIROK_STAT_ESCL);		// 対応記録ステータス　203(エスカレーション中)
			setMap.setValue("TOIAWASE_STAT_CD", JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_ESCL);		// 問合せ状態コード　102(エスカレーション)
			setMap.setValue("MYBOX_NO", "");													// MYBOX番号　クリア
			setMap.setValue("QUE_BOX_NO", esclSakiQueBoxNo);									// キューBOX番号
			setMap.setValue("QUE_BOX_KAKNO_DTM", sysDtm);										// キューBOX番号格納年月日時分秒
		}
		else
		{
			// ユーザーへのエスカレーションの場合
			setMap.setValue("TAIO_KIROK_STAT", JCRStrConst.CD_DIV_TAIO_KIROK_STAT_SHORICHU);	// 対応記録ステータス　201(処理中)
			setMap.setValue("TOIAWASE_STAT_CD", JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_OPEN);		// 問合せ状態コード　101(オープン)
			setMap.setValue("TAIO_USER_ID", esclSakiUserId);									// 対応ユーザーID
			setMap.setValue("MYBOX_NO", esclSakiMyBoxNo);										// MYBOX番号
			setMap.setValue("MYBOX_KAKNO_DTM", sysDtm);											// MYBOX番号格納年月日時分秒
			setMap.setValue("QUE_BOX_NO", "");													// キューBOX番号　クリア
		}

		// 対応記録履歴
		rireki = rireki + makeRireki(tiawsJotaiCd, esclSakiKbn, loginUserNm, loginUserWkKbtOrgNm, esclSakiUserNm, esclSakiQueBoxNm, esclSakiWkKbtOrgNm);
		setMap.setValue("TAIO_KIROK_RIREKI", rireki);

		if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_CLOSE.equals(tiawsJotaiCd))
		{
			// 問合せ状態が「クローズ」の場合
			setMap.setValue("TAIO_FIN_DTM", "");						// 対応完了年月日時分秒　クリア
			setMap.setValue("LAST_SKAI_DTM", sysDtm);					// クローズ再開年月日時分秒
			setMap.setValue("TOTAL_TRAN_TIME", 0);						// トータル処理時間
		}
		else if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_CNCL.equals(tiawsJotaiCd))
		{
			// 問合せ状態が「キャンセル」の場合
			setMap.setValue("TAIO_FIN_DTM", "");						// 対応完了年月日時分秒　クリア
			setMap.setValue("TAIO_CANCEL_SKAI_DTM", sysDtm);			// 対応キャンセル再開年月日時分秒
			setMap.setValue("TOTAL_TRAN_TIME", 0);						// トータル処理時間
		}

		setMap.setValue("UPD_DTM", sysDtms);							// 更新年月日時分秒
		setMap.setValue("UPD_OPEACNT", batchUserId);					// 更新オペレータアカウント

		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("TAIO_KIROK_NO", taioKrkNo);					// 対応記録番号

		// DBアクセスを実行します
		db_CR_T_TAIO_KIROK.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * 対応記録履歴生成
	 * @param tiawsJotaiCd 問合せ状態コード
	 * @param esclSakiKbn エスカレーション先区分
	 * @param loginUserNm ログインユーザー名
	 * @param loginUserWkKbtOrgNm ログインユーザーの業務個別設定組織名
	 * @param esclSakiUserNm エスカレーション先ユーザー名
	 * @param esclSakiQueBoxNm エスカレーション先キューBOX名
	 * @param esclSakiWkKbtOrgNm エスカレーション先業務個別設定組織名
	 * @return 生成された対応記録履歴
	 * @throws Exception 例外
	 */
	private String makeRireki(String tiawsJotaiCd,
							String esclSakiKbn,
							String loginUserNm,
							String loginUserWkKbtOrgNm,
							String esclSakiUserNm,
							String esclSakiQueBoxNm,
							String esclSakiWkKbtOrgNm) throws Exception
	{
		StringBuilder sb = new StringBuilder();

		String sysYYYYMMDDHHMM = JCRBatCommon.formatDatetimeMM(sysDtm.substring(0, KETA_YYYYMMDDHHMM));
		String separateLine = "------------------------------------------------------------";

		if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_CLOSE.equals(tiawsJotaiCd)
			|| JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_CNCL.equals(tiawsJotaiCd))
		{
			// 問合せ状態が「クローズ」「キャンセル」の場合
			sb.append("□再開：　").append(loginUserWkKbtOrgNm).append("(").append(loginUserNm).append(") ");
			sb.append(sysYYYYMMDDHHMM).append(JCRStrConst.KAIGYO_CD);
			sb.append(separateLine).append(JCRStrConst.KAIGYO_CD);
		}

		if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_ESCL.equals(tiawsJotaiCd))
		{
			// 問合せ状態が「エスカレーション」の場合
			sb.append("□アクセプト：　").append(loginUserWkKbtOrgNm).append("(").append(loginUserNm).append(") ");
			sb.append(sysYYYYMMDDHHMM).append(JCRStrConst.KAIGYO_CD);
			sb.append(separateLine).append(JCRStrConst.KAIGYO_CD);
		}

		sb.append("□一括エスカレーション：　").append(loginUserWkKbtOrgNm).append("(").append(loginUserNm).append(") ");
		sb.append(sysYYYYMMDDHHMM).append(JCRStrConst.KAIGYO_CD);

		if (ESCL_SAKI_KBN_QUE.equals(esclSakiKbn))
		{
			// キューBOXへのエスカレーションの場合
			sb.append("一括エスカレーション先：　「").append(esclSakiQueBoxNm).append("」キュー").append(JCRStrConst.KAIGYO_CD);
		}
		else
		{
			// ユーザーへのエスカレーションの場合
			sb.append("一括エスカレーション先：　").append(esclSakiWkKbtOrgNm).append("(").append(esclSakiUserNm).append(")").append(JCRStrConst.KAIGYO_CD);
		}
		sb.append(separateLine).append(JCRStrConst.KAIGYO_CD);

		commonItem.getLogPrint().printDebugLog("一括エスカレーション情報：" + JCRStrConst.KAIGYO_CD + sb);

		return sb.toString();
	}

	/**
	 * 対応記録明細登録
	 * @param taioKrkNo 対応記録番号
	 * @param taioKrkDtlNo 対応記録明細番号
	 * @param taioUserId 対応ユーザーID
	 * @param wkKbtOrgCd 業務個別設定組織コード
	 * @param actionTypeCd アクションタイプコード
	 * @throws Exception 例外
	 */
	private void entryTaioKirkDtl(String taioKrkNo,
									String taioKrkDtlNo,
									String taioUserId,
									String wkKbtOrgCd,
									String actionTypeCd) throws Exception
	{
		String[] param = new String[]{
				taioKrkNo,										// 対応記録番号
				taioKrkDtlNo,									// 対応記録明細番号
				actionTypeCd,									// アクションタイプコード
				sysDtm,											// アクション開始年月日時分秒
				sysDtm,											// アクション完了年月日時分秒
				taioUserId,										// 対応ユーザーＩＤ
				null,											// 問合せ内容
				null,											// 問合せ元名
				null,											// 回答内容
				null,											// コンタクト先コード
				null,											// メモ内容
				null,											// メモタイプコード
				JCRStrConst.CD_DIV_HENSHU_STAT_FLG_KANRYO,		// 編集中フラグ
				null,											// メール受信番号
				null,											// メールヘッダー内タイトル
				null,											// メールヘッダー内送信者メールアドレス
				null,											// メールヘッダー内宛先メールアドレス
				null,											// メールヘッダー内ＣＣメールアドレス
				null,											// メールヘッダー内メッセージＩＤ
				null,											// メールヘッダー内送信年月日時分秒
				null,											// メールヘッダー内受信年月日時分秒
				null,											// メール送信番号
				null,											// メールタイトル
				null,											// メール受信本文
				null,											// 元メールアドレス
				null,											// メールヘッダー
				null,											// メールフッター
				null,											// メール本文
				null,											// 送信先メールアドレス
				null,											// 送信元メールアドレス
				null,											// ＣＣメールアドレス
				null,											// 送信メールタイプコード
				null,											// メール送信年月日時分秒
				null,											// 送信ユーザーＩＤ
				null,											// 送信状態コード
				null,											// 返信記号コード
				sysDtms,										// 登録年月日時分秒
				batchUserId,									// 登録オペレータアカウント
				sysDtms,										// 更新年月日時分秒
				batchUserId,									// 更新オペレータアカウント
				null,											// 削除年月日時分秒
				null,											// 削除オペレータアカウント
				JCRStrConst.CD_DIV_MK_FLG_YUKO,					// 無効フラグ
				null,											// 登録運用年月日
				null,											// 登録処理ＩＤ
				null,											// 更新運用年月日
				null,											// 更新処理ＩＤ
				null,											// 削除運用年月日
				null,											// 削除処理ＩＤ
				wkKbtOrgCd										// 業務個別設定組織コード
		};
		// 対応記録明細登録
		executeCR_T_TAIOKRK_DTL_PKINSERT(param);
	}

	/**
	 * キューBOX,MYBOXの現在格納数を更新する
	 * @param queBoxSet 対象キューBOX
	 * @param userSet 対象ユーザー
	 * @throws Exception 例外
	 */
	private void updateNowKaknoCnt(Set<String> queBoxSet, Set<String> userSet) throws Exception
	{
		// キューBOXの現在格納数更新
		if (queBoxSet != null && queBoxSet.size() > 0)
		{
			Iterator<String> it = queBoxSet.iterator();
			while (it.hasNext())
			{
				String queBoxNo = it.next();
				JCRBatCommon.updateQueNowKaknoCnt(commonItem, queBoxNo);
			}
		}

		// MYBOXの現在格納数更新
		if (userSet != null && userSet.size() > 0)
		{
			Iterator<String> it = userSet.iterator();
			while (it.hasNext())
			{
				String userId = it.next();
				JCRBatCommon.updateMyBoxNowKaknoCntByUserId(commonItem, userId);
			}
		}
	}

	/**
	 * 終了処理
	 * @param shoriiraiNo ディレイド処理依頼番号
	 * @param shoriKekkaCd ディレイド処理結果コード
	 * @param errList エラー情報List
	 * @throws Exception 例外
	 */
	private void end(String shoriiraiNo, String shoriKekkaCd, List<String> errList) throws Exception
	{
		// (8)-(a) 更新処理コミット
		commitOrRollback(shoriKekkaCd);

		// (8)-(b) エラー情報ファイル出力
		String errFilePath = null;
		if (errList != null && (errList.isEmpty() == false))
		{
			errFilePath = entryErrFile(errList);
		}

		// (8)-(c) ディレイド処理依頼結果更新処理
		entryShoriKekka(shoriiraiNo, shoriKekkaCd, errFilePath);

		// (8)-(d) 一時ファイル削除
		JCRUtilCommon.deleteTempFile(errFilePath);
	}

	/**
	 * エラーファイル作成
	 * @param errList	エラーリスト
	 * @return エラーファイル名
	 * @throws Exception 例外
	 */
	private String entryErrFile(List<String> errList) throws Exception
	{
		String errFilePath = tmpFileDir + File.separator + super.jobid + "_" + sysDtms + ".TXT";
		JCRBatCommon.entryErrFileData(commonItem, errFilePath, errList);

		return errFilePath;
	}

	/**
	 * 更新処理コミット(またはロールバック)
	 * @param shoriKekkaCd ディレイド処理結果コード
	 * @throws Exception 例外
	 */
	private void commitOrRollback(String shoriKekkaCd) throws Exception
	{
		if (JCRStrConst.DLYD_OK.equals(shoriKekkaCd))
		{
			// 正常終了の場合
			// 更新処理コミット
			super.commit();
		}
		else
		{
			// ロールバック
			commonItem.getConnection().rollback();
		}
	}

	/**
	 * 処理依頼結果登録
	 * @param shoriiraiNo ディレイド処理依頼番号
	 * @param shoriKekkaCd ディレイド処理結果コード
	 * @param errFilePath エラーファイルパス(エラーが無い場合はnull)
	 * @throws Exception 例外
	 */
	private void entryShoriKekka(String shoriiraiNo, String shoriKekkaCd, String errFilePath) throws Exception
	{
		// (8)-(c)-(1) ディレイド処理依頼結果更新処理
		JCRBatCommon.updateShoriIraiResult(commonItem, shoriiraiNo, shoriKekkaCd, errFilePath);

		// (8)-(c)-(2) ディレイド処理結果登録コミット
		super.commit();
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CR_T_MYBOX.close();
		db_CR_T_TAIO_KIROK.close();
		db_CR_T_TAIOKRK_DTL.close();
		db_CR_T_QUE_BOX.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/

		// データアクセスオブジェクトクローズ
		JCRBatCommon.closeDataAccessObj(commonItem);

	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(CR_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	ユーザーID
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_MYBOX_CR_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CR_T_MYBOX.selectBySqlDefine(paramList, CR_T_MYBOX_CR_SELECT_001);
	}

	/**
	 * SQLKEY(CR_SELECT_016)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	対応記録番号
	 *		 	更新年月日時分秒
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TAIO_KIROK_CR_SELECT_016(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CR_T_TAIO_KIROK.selectBySqlDefine(paramList, CR_T_TAIO_KIROK_CR_SELECT_016);
	}

	/**
	 * SQLKEY(CR_SELECT_008)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	対応記録番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TAIOKRK_DTL_CR_SELECT_008(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CR_T_TAIOKRK_DTL.selectBySqlDefine(paramList, CR_T_TAIOKRK_DTL_CR_SELECT_008);
	}

	/**
	 * SQLKEY(CR_SELECT_006)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	対応記録番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TAIOKRK_DTL_CR_SELECT_006(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CR_T_TAIOKRK_DTL.selectBySqlDefine(paramList, CR_T_TAIOKRK_DTL_CR_SELECT_006);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	対応記録番号				TAIO_KIROK_NO
	 *		 	対応記録明細番号				TAIO_KIROK_DTL_NO
	 *		 	アクションタイプコード				ACTION_TYPE_CD
	 *		 	アクション開始年月日時分秒				ACTION_STA_DTM
	 *		 	アクション完了年月日時分秒				ACTION_FIN_DTM
	 *		 	対応ユーザーＩＤ				TAIO_USER_ID
	 *		 	問合せ内容				TOIAWASE_NAIYO
	 *		 	問合せ元名				TOIAWASE_MOTO_NM
	 *		 	回答内容				ANS_NAIYO
	 *		 	コンタクト先コード				CONTACT_SAKI_CD
	 *		 	メモ内容				MEMO_NAIYO
	 *		 	メモタイプコード				MEMO_TYPE_CD
	 *		 	編集状態フラグ				HENSHU_STAT_FLG
	 *		 	メール受信番号				MAIL_RCV_NO
	 *		 	メールヘッダー内タイトル				ML_HEADER_NAI_TITLE
	 *		 	メールヘッダー内送信者メールアドレス				ML_HEADER_NAI_SENDER_MLAD
	 *		 	メールヘッダー内宛先メールアドレス				ML_HEADER_NAI_AD_MLAD
	 *		 	メールヘッダー内ＣＣメールアドレス				ML_HEADER_NAI_CC_MLAD
	 *		 	メールヘッダー内メッセージＩＤ				MAIL_HEADER_NAI_MSG_ID
	 *		 	メールヘッダー内送信年月日時分秒				MAIL_HEADER_NAI_SEND_DTM
	 *		 	メールヘッダー内受信年月日時分秒				MAIL_HEADER_NAI_RCV_DTM
	 *		 	メール送信番号				MAIL_SEND_NO
	 *		 	メールタイトル				MAIL_TITLE
	 *		 	メール受信本文				ML_RCV_TEXT
	 *		 	元メールアドレス				MOTO_MLAD
	 *		 	メールヘッダー				MAIL_HEADER
	 *		 	メールフッター				MAIL_FOOTER
	 *		 	メール本文				MAIL_TEXT
	 *		 	送信先メールアドレス				SENDS_MLAD
	 *		 	送信元メールアドレス				SENDM_MLAD
	 *		 	ＣＣメールアドレス				CC_MLAD
	 *		 	送信メールタイプコード				SEND_MAIL_TYPE_CD
	 *		 	メール送信年月日時分秒				MAIL_SEND_DTM
	 *		 	送信ユーザーＩＤ				SEND_USER_ID
	 *		 	送信状態コード				SEND_STAT_CD
	 *		 	返信転送記号コード				HNSIN_TENSO_SYMBOL_CD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 *		 	業務個別設定組織コード				WKKBT_ORG_CD
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TAIOKRK_DTL_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TAIO_KIROK_NO", setParam[0]);
		setMap.setValue("TAIO_KIROK_DTL_NO", setParam[1]);
		setMap.setValue("ACTION_TYPE_CD", setParam[2]);
		setMap.setValue("ACTION_STA_DTM", setParam[3]);
		setMap.setValue("ACTION_FIN_DTM", setParam[4]);
		setMap.setValue("TAIO_USER_ID", setParam[5]);
		setMap.setValue("TOIAWASE_NAIYO", setParam[6]);
		setMap.setValue("TOIAWASE_MOTO_NM", setParam[7]);
		setMap.setValue("ANS_NAIYO", setParam[8]);
		setMap.setValue("CONTACT_SAKI_CD", setParam[9]);
		setMap.setValue("MEMO_NAIYO", setParam[10]);
		setMap.setValue("MEMO_TYPE_CD", setParam[11]);
		setMap.setValue("HENSHU_STAT_FLG", setParam[12]);
		setMap.setValue("MAIL_RCV_NO", setParam[13]);
		setMap.setValue("ML_HEADER_NAI_TITLE", setParam[14]);
		setMap.setValue("ML_HEADER_NAI_SENDER_MLAD", setParam[15]);
		setMap.setValue("ML_HEADER_NAI_AD_MLAD", setParam[16]);
		setMap.setValue("ML_HEADER_NAI_CC_MLAD", setParam[17]);
		setMap.setValue("MAIL_HEADER_NAI_MSG_ID", setParam[18]);
		setMap.setValue("MAIL_HEADER_NAI_SEND_DTM", setParam[19]);
		setMap.setValue("MAIL_HEADER_NAI_RCV_DTM", setParam[20]);
		setMap.setValue("MAIL_SEND_NO", setParam[21]);
		setMap.setValue("MAIL_TITLE", setParam[22]);
		setMap.setValue("ML_RCV_TEXT", setParam[23]);
		setMap.setValue("MOTO_MLAD", setParam[24]);
		setMap.setValue("MAIL_HEADER", setParam[25]);
		setMap.setValue("MAIL_FOOTER", setParam[26]);
		setMap.setValue("MAIL_TEXT", setParam[27]);
		setMap.setValue("SENDS_MLAD", setParam[28]);
		setMap.setValue("SENDM_MLAD", setParam[29]);
		setMap.setValue("CC_MLAD", setParam[30]);
		setMap.setValue("SEND_MAIL_TYPE_CD", setParam[31]);
		setMap.setValue("MAIL_SEND_DTM", setParam[32]);
		setMap.setValue("SEND_USER_ID", setParam[33]);
		setMap.setValue("SEND_STAT_CD", setParam[34]);
		setMap.setValue("HNSIN_TENSO_SYMBOL_CD", setParam[35]);
		setMap.setValue("ADD_DTM", setParam[36]);
		setMap.setValue("ADD_OPEACNT", setParam[37]);
		setMap.setValue("UPD_DTM", setParam[38]);
		setMap.setValue("UPD_OPEACNT", setParam[39]);
		setMap.setValue("DEL_DTM", setParam[40]);
		setMap.setValue("DEL_OPEACNT", setParam[41]);
		setMap.setValue("MK_FLG", setParam[42]);
		setMap.setValue("ADD_UNYO_YMD", setParam[43]);
		setMap.setValue("ADD_TRN_ID", setParam[44]);
		setMap.setValue("UPD_UNYO_YMD", setParam[45]);
		setMap.setValue("UPD_TRN_ID", setParam[46]);
		setMap.setValue("DEL_UNYO_YMD", setParam[47]);
		setMap.setValue("DEL_TRN_ID", setParam[48]);
		setMap.setValue("WKKBT_ORG_CD", setParam[49]);
	
		// DBアクセスを実行します
		db_CR_T_TAIOKRK_DTL.insertByPrimaryKeys(setMap);
	}

	/**
	 * SQLKEY(CR_UPDATE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	加算件数
	 *		 	最終格納年月日時分秒
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	キューBOX番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_QUE_BOX_CR_UPDATE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_CR_T_QUE_BOX.executeBySqlDefine(paramList, CR_T_QUE_BOX_CR_UPDATE_001);
	}

	/**
	 * SQLKEY(CR_UPDATE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	加算件数
	 *		 	最終格納年月日時分秒
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	MYBOX番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_MYBOX_CR_UPDATE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_CR_T_MYBOX.executeBySqlDefine(paramList, CR_T_MYBOX_CR_UPDATE_001);
	}

	/**
	 * SQLKEY(CR_UPDATE_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	現在格納数
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	キューBOX番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_QUE_BOX_CR_UPDATE_002(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_T_QUE_BOX.executeBySqlDefine(paramList, CR_T_QUE_BOX_CR_UPDATE_002);
	}

	/**
	 * SQLKEY(CR_UPDATE_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	現在格納数
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	MYBOX番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_MYBOX_CR_UPDATE_002(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_T_MYBOX.executeBySqlDefine(paramList, CR_T_MYBOX_CR_UPDATE_002);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
