/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKjscJokyoSndRslt
*	ソースファイル名	：JBSbatKKKjscJokyoSndRslt.java
*	作成者				：富士通　
*	作成日				：2011年10月12日
*＜機能概要＞
*　工事進捗状況メール送信結果確認部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/10/12   富士通		新規作成
*	v5.00		2013/05/16   FJ)米谷	受付者、担当者項目の出力値を修正
*	v6.00		2013/12/25   FJ)鈴木	【OM-2013-0005248】メール本文の"%"記号の置き換え処理を修正
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatCRIFE016;
import eo.business.util.table.JBSbatCC_M_MAIL;
import eo.business.util.table.JBSbatCC_T_MAIL_SEND;
import eo.business.util.table.JBSbatCC_T_MLAD;
import eo.business.util.table.JBSbatCC_T_TEXT_HTKB;
import eo.business.util.table.JBSbatKK_T_STPPRML_SND_JSK;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JCCbatFrameworkException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatOutputFileUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKKjscJokyoSndRslt extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(メール送信)*/
	private static final String D_TBL_NAME_CC_T_MAIL_SEND = "CC_T_MAIL_SEND";

	/** テーブル(工程進捗メール送信実績)*/
	private static final String D_TBL_NAME_KK_T_STPPRML_SND_JSK = "KK_T_STPPRML_SND_JSK";

	/** テーブル(申込明細)*/
	private static final String D_TBL_NAME_KK_T_MSKM_DTL = "KK_T_MSKM_DTL";

	/** テーブル(メール)*/
	private static final String D_TBL_NAME_CC_M_MAIL = "CC_M_MAIL";

	/** テーブル(メールアドレス)*/
	private static final String D_TBL_NAME_CC_T_MLAD = "CC_T_MLAD";

	/** テーブル(本文非定型部)*/
	private static final String D_TBL_NAME_CC_T_TEXT_HTKB = "CC_T_TEXT_HTKB";

	/** SQL定義キー(KK_UPDATE_001)*/
	private static final String KK_T_MSKM_DTL_KK_UPDATE_001 = "KK_UPDATE_001";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String CC_M_MAIL_KK_SELECT_001 = "KK_SELECT_001";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String CC_T_MLAD_KK_SELECT_001 = "KK_SELECT_001";

// 2013.12.25 OM-2013-0005248 add start
	/** SQL定義キー(CC_SELECT_002)*/
	private static final String CC_T_TEXT_HTKB_CC_SELECT_002 = "CC_SELECT_002";
// 2013.12.25 OM-2013-0005248 add end

	/** テーブルアクセスクラス(メール送信)*/
	private JBSbatSQLAccess db_CC_T_MAIL_SEND = null;

	/** テーブルアクセスクラス(工程進捗メール送信実績)*/
	private JBSbatSQLAccess db_KK_T_STPPRML_SND_JSK = null;

	/** テーブルアクセスクラス(申込明細)*/
	private JBSbatSQLAccess db_KK_T_MSKM_DTL = null;

	/** テーブルアクセスクラス(メール)*/
	private JBSbatSQLAccess db_CC_M_MAIL = null;

	/** テーブルアクセスクラス(メールアドレス)*/
	private JBSbatSQLAccess db_CC_T_MLAD = null;

	/** テーブルアクセスクラス(本文非定型部)*/
	private JBSbatSQLAccess db_CC_T_TEXT_HTKB = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 更新する処理の区分：PCのみ */
	private static final String TRAN_DIV_PC_ONLY = "1";
	
	/** 更新する処理の区分：携帯のみ */
	private static final String TRAN_DIV_KTAI_ONLY = "2";
	
	/** 更新する処理の区分：PC携帯両方 */
	private static final String TRAN_DIV_PC_KTAI = "3";
	
	/** メール送信ステータス：未送信 */
	private static final String SND_MI = "001";
	
	/** メール送信ステータス：送信済 */
	private static final String SND_ZUMI = "002";
	
	/** メール送信ステータス：送信時エラー */
	private static final String SND_ERR = "003";
	
	/** メール送信ステータス：送信停止 */
	private static final String SND_STP = "004";
	
	/** メール送信成否判定：無し */
	private static final String OKNG_JDG_NON = "0";
	
	/** メール送信成否判定：成功 */
	private static final String OKNG_JDG_OK = "1";
	
	/** メール送信成否判定：失敗 */
	private static final String OKNG_JDG_NG = "2";
	
	/** CASEファイル判定：未作成 */
	private static final String CASE_FILE_JDG_MI_SAKSEI = "0";
	
	/** CASEファイル判定：メール送信実績 */
	private static final String CASE_FILE_JDG_SND_JSK = "1";
	
	/** CASEファイル判定：メール送信失敗 */
	private static final String CASE_FILE_JDG_SND_NG = "2";
	
	/** 工程進捗メール送信実績更新判定：未更新 */
	private static final String KK1461_JDG_MI_UPD = "0";
	
	/** 工程進捗メール送信実績更新判定：メール送信更新(PCのみ) */
	private static final String KK1461_JDG_PC_ONLY = "1";
	
	/** 工程進捗メール送信実績更新判定：メール送信更新(携帯のみ) */
	private static final String KK1461_JDG_KTAI_ONLY = "2";
	
	/** 工程進捗メール送信実績更新判定：メール送信完了更新 */
	private static final String KK1461_JDG_FIN_UPD = "3";
	
	/** 工程進捗メール送信実績更新判定：メール送信失敗完了更新 */
	private static final String KK1461_JDG_NG_UPD = "4";
	
	/** メール送信成否判定テーブル */
	HashMap<String, String> okng_jdg_tbl = new HashMap<String, String>();
	
	/** CASEファイル作成判定テーブル */
	HashMap<String, String> case_file_jdg_tbl = new HashMap<String, String>();
	
	/** 工程進捗メール送信実績更新判定テーブル(PCまたは携帯の片方のみ設定) */
	HashMap<String, String> kk1461_jdg_tbl = new HashMap<String, String>();
	
	/** 工程進捗メール送信実績更新判定テーブル(PC携帯の両方が設定) */
	HashMap<String, HashMap<String, String>> kk1461_jdg_tbl_pckt =
		new HashMap<String, HashMap<String, String>>();
	
	/** 本文非定型部連番１ */
	private static final String HTKB_SEQ_1 = "000000000001";

	/** 本文非定型部連番２ */
	private static final String HTKB_SEQ_2 = "000000000002";

	/** 本文非定型部連番３ */
	private static final String HTKB_SEQ_3 = "000000000003";
	
	/** メール本文編集時置換文字列１ */
	private static final String CKAN_CHR_1 = "%1";

	/** メール本文編集時置換文字列１ */
	private static final String CKAN_CHR_2 = "%2";

	/** メール本文編集時置換文字列１ */
	private static final String CKAN_CHR_3 = "%3";
	
	/** CASEファイル出力レコード件数 */
	int case_file_cnt = 0;
	
	/** CASEファイル項目：顧客タイプ固定文字列 */
	private static final String KOKYAKU_TYPE_CHR = "加入者";
	
	/** CASEファイル項目：状態固定文字列 */
	private static final String JYOUTAI_CHR = "クローズ";
	
	/** CASEファイル項目：ステータス固定文字列 */
	private static final String STATUS_CHR = "処理中";
	
	/** CASEファイル項目：受付種別固定文字列 */
	private static final String UKETSUKE_SBT_CHR = "他システム";
	
	/** CASEファイル項目：メール送信実績時、タイトル固定文字列 */
	private static final String TITLE_JSK_CHR = "工事進捗状況メール送信";
	
	/** CASEファイル項目：メール送信失敗時、タイトル固定文字列 */
	private static final String TITLE_NG_CHR = "工事進捗状況メール送信失敗";
	
	/** 作成日時形式：年4桁/月2桁/日2桁スペース時2桁:分2桁:秒2桁) */
	private static final String SAKUSEI_DATE_TEMP = "YYYY/MM/DD hh:mm:ss";
	
	/** 件数ファイル文字コード */
	private static final String SJIS  = "Shift-JIS";
	
	/** 件数ファイル改行コード */
	private static final String CRLF  = "CR+LF";
	
// SG1-2013-0000041 2013.05.16 ADD START
	/** 業務パラメータ(契約用対応履歴登録ユーザ) */
	private static final String WORK_PARAM_ID_KK_TAIORRK_ADD_USER = "KK_TAIORRK_ADD_USER";
	private String taioRrkAddUser = null;
// SG1-2013-0000041 2013.05.16 ADD END

	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CC_T_MAIL_SEND = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_MAIL_SEND);
		db_KK_T_STPPRML_SND_JSK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_STPPRML_SND_JSK);
		db_KK_T_MSKM_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM_DTL);
		db_CC_M_MAIL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_M_MAIL);
		db_CC_T_MLAD = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_MLAD);
		db_CC_T_TEXT_HTKB = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_TEXT_HTKB);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// メール送信成否判定テーブル初期化
		// メール送信ステータス, 成否
		okng_jdg_tbl.put(SND_MI,   OKNG_JDG_NON); // 未送信,   判定無し
		okng_jdg_tbl.put(SND_ZUMI, OKNG_JDG_OK);  // 送信済,   成功
		okng_jdg_tbl.put(SND_ERR,  OKNG_JDG_NG);  // エラー,   失敗
		okng_jdg_tbl.put(SND_STP,  OKNG_JDG_NG);  // 送信停止, 失敗
		
		// CASEファイル作成判定テーブル初期化
		// メール送信ステータス, CASEファイル判定
		case_file_jdg_tbl.put(SND_MI,   CASE_FILE_JDG_MI_SAKSEI); // 未送信,   未作成
		case_file_jdg_tbl.put(SND_ZUMI, CASE_FILE_JDG_SND_JSK);   // 送信済,   メール送信実績
		case_file_jdg_tbl.put(SND_ERR,  CASE_FILE_JDG_SND_NG);    // エラー,   メール送信失敗
		case_file_jdg_tbl.put(SND_STP,  CASE_FILE_JDG_SND_NG);    // 送信停止, メール送信失敗
		
		// 工程進捗メール送信実績更新判定テーブル(PCまたは携帯の片方のみ設定)初期化
		// メール送信ステータス, 工程進捗メール送信実績更新判定
		kk1461_jdg_tbl.put(SND_MI,   KK1461_JDG_MI_UPD);  // 未送信,   未更新
		kk1461_jdg_tbl.put(SND_ZUMI, KK1461_JDG_FIN_UPD); // 送信済,   完了更新
		kk1461_jdg_tbl.put(SND_ERR,  KK1461_JDG_NG_UPD);  // エラー,   失敗完了更新
		kk1461_jdg_tbl.put(SND_STP,  KK1461_JDG_NG_UPD);  // 送信停止, 失敗完了更新
		
		// 工程進捗メール送信実績更新判定テーブル(PC携帯の両方が設定)初期化
		HashMap<String, String> pc_snd_mi   = new HashMap<String, String>();
		HashMap<String, String> pc_snd_zumi = new HashMap<String, String>();
		HashMap<String, String> pc_snd_err  = new HashMap<String, String>();
		HashMap<String, String> pc_snd_stp  = new HashMap<String, String>();
		// PC分未送信
		// メール送信ステータス(携帯分), 工程進捗メール送信実績更新判定
		pc_snd_mi.put(SND_MI,   KK1461_JDG_MI_UPD);     // PC未送信  ：携帯未送信,   未更新
		pc_snd_mi.put(SND_ZUMI, KK1461_JDG_KTAI_ONLY);  // PC未送信  ：携帯送信済,   携帯のみ更新
		pc_snd_mi.put(SND_ERR,  KK1461_JDG_NG_UPD);     // PC未送信  ：携帯エラー,   失敗完了更新
		pc_snd_mi.put(SND_STP,  KK1461_JDG_NG_UPD);     // PC未送信  ：携帯送信停止, 失敗完了更新
		kk1461_jdg_tbl_pckt.put(SND_MI, pc_snd_mi);
		// PC分送信済
		// メール送信ステータス(携帯分), 工程進捗メール送信実績更新判定
		pc_snd_zumi.put(SND_MI,   KK1461_JDG_PC_ONLY);  // PC送信済  ：携帯未送信,   PCのみ更新
		pc_snd_zumi.put(SND_ZUMI, KK1461_JDG_FIN_UPD);  // PC送信済  ：携帯送信済,   完了更新
		pc_snd_zumi.put(SND_ERR,  KK1461_JDG_PC_ONLY);  // PC送信済  ：携帯エラー,   PCのみ更新
		pc_snd_zumi.put(SND_STP,  KK1461_JDG_PC_ONLY);  // PC送信済  ：携帯送信停止, PCのみ更新
		kk1461_jdg_tbl_pckt.put(SND_ZUMI, pc_snd_zumi);
		// PC分送信時エラー
		// メール送信ステータス(携帯分), 工程進捗メール送信実績更新判定
		pc_snd_err.put(SND_MI,   KK1461_JDG_NG_UPD);    // PCエラー  ：携帯未送信,   失敗完了更新
		pc_snd_err.put(SND_ZUMI, KK1461_JDG_KTAI_ONLY); // PCエラー  ：携帯送信済,   携帯のみ更新
		pc_snd_err.put(SND_ERR,  KK1461_JDG_NG_UPD);    // PCエラー  ：携帯エラー,   失敗完了更新
		pc_snd_err.put(SND_STP,  KK1461_JDG_NG_UPD);    // PCエラー  ：携帯送信停止, 失敗完了更新
		kk1461_jdg_tbl_pckt.put(SND_ERR, pc_snd_err);
		// PC分送信停止
		// メール送信ステータス(携帯分), 工程進捗メール送信実績更新判定
		pc_snd_stp.put(SND_MI,   KK1461_JDG_NG_UPD);    // PC送信停止：携帯未送信,   失敗完了更新
		pc_snd_stp.put(SND_ZUMI, KK1461_JDG_KTAI_ONLY); // PC送信停止：携帯送信済,   携帯のみ更新
		pc_snd_stp.put(SND_ERR,  KK1461_JDG_NG_UPD);    // PC送信停止：携帯エラー,   失敗完了更新
		pc_snd_stp.put(SND_STP,  KK1461_JDG_NG_UPD);    // PC送信停止：携帯送信停止, 失敗完了更新
		kk1461_jdg_tbl_pckt.put(SND_STP, pc_snd_stp);
		
// SG1-2013-0000041 2013.05.16 ADD START
		// 受付者、担当者用文字列を取得	
		this.taioRrkAddUser = JKKBatCommon.getWorkParamSetteValue(super.commonItem, WORK_PARAM_ID_KK_TAIORRK_ADD_USER);
// SG1-2013-0000041 2013.05.16 ADD END
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		// 工程進捗メール送信実績．メール送信番号(PC)
		String kk1461_mail_snd_no_pc = inMap.getString(JBSbatKK_T_STPPRML_SND_JSK.MAIL_SEND_NO_PC);
		
		// 工程進捗メール送信実績．メール送信ステータス(PC)
		String kk1461_mail_stat_pc = inMap.getString(JBSbatKK_T_STPPRML_SND_JSK.MAIL_SEND_STAT_PC);
		
		// 工程進捗メール送信実績．メール送信番号(携帯)
		String kk1461_mail_snd_no_ktai = inMap.getString(JBSbatKK_T_STPPRML_SND_JSK.MAIL_SEND_NO_KTAI);
		
		// 工程進捗メール送信実績．メール送信ステータス(携帯)
		String kk1461_mail_stat_ktai = inMap.getString(JBSbatKK_T_STPPRML_SND_JSK.MAIL_SEND_STAT_KTAI);
		
		// 工程進捗メール送信実績．申込明細番号
		String kk1461_mskm_dtl_no = inMap.getString(JBSbatKK_T_STPPRML_SND_JSK.MSKM_DTL_NO);
		
		// 工程進捗メール送信実績．工程進捗メール送信実績番号
		String kk1461_stpprml_snd_jsk_no = inMap.getString(JBSbatKK_T_STPPRML_SND_JSK.STPPRML_SND_JSK_NO);
		
		// 工程進捗メール送信実績．サービス契約番号
		String kk1461_svc_kei_no = inMap.getString(JBSbatKK_T_STPPRML_SND_JSK.SVC_KEI_NO);
		
		// 更新する処理の区分(PCのみ、携帯のみ、PC携帯両方)
		String tran_div = "";
		
		// メール送信から抽出したデータ(PC携帯両方の場合PCのデータとなる)
		JBSbatCommonDBInterface mail_send_data_1 = null;
		
		// メール送信から抽出したデータ(PC携帯両方の場合しか使用されず携帯のデータとなる)
		JBSbatCommonDBInterface mail_send_data_2 = null;
		
		// メール送信から抽出したメール送信ステータス(PC携帯両方の場合PCのステータスとなる)
		String cc0021_mail_snd_stat_1 = "";
		
		// メール送信から抽出したメール送信ステータス(PC携帯両方の場合しか使用されず携帯のステータスとなる)
		String cc0021_mail_snd_stat_2 = "";
		
		// 工程進捗メール送信実績更新判定結果
		String kk1461_jdg = "";
		
		// メール送信成否判定結果(成功の場合、申込明細を更新する)
		String ok_ng_jdg = "";
		
		// メール送信成否判定結果(PC携帯両方の場合PCの判定結果、PCまたは携帯の場合そのままok_ng_jdgに値を代入する)
		String ok_ng_jdg_1 = "";
		
		// メール送信成否判定結果(PC携帯両方の場合しか使用されず携帯の判定結果となりPCの判定結果と合わせてok_ng_jdgを判定する)
		String ok_ng_jdg_2 = "";
		
		// 進捗メール最終送信年月日時分秒(メール送信成功の場合、メール送信．メール送信実施年月日時分秒を設定)
		String prg_ml_last_send_dtm = "";
		
		// CASEファイル判定結果(PC携帯両方の場合PCの判定結果となる)
		String case_file_jdg_1 = "";
		
		// CASEファイル判定結果(PC携帯両方の場合しか使用されず携帯の判定結果となる)
		String case_file_jdg_2 = "";
		
		// 問合せ履歴文字列(PC携帯両方の場合PCの文字列となる)
		String toiawase_rireki_1 = "";
		
		// 問合せ履歴文字列(PC携帯両方の場合しか使用されず携帯の文字列となる)
		String toiawase_rireki_2 = "";
		
		// メール送信から抽出したメールコード(PC携帯両方の場合PCのメールコードとなる)
		String mail_cd_1 = "";
		
		// メール送信から抽出したメールコード(PC携帯両方の場合しか使用されず携帯のメールコードとなる)
		String mail_cd_2 = "";
		
		// 処理区分を決定し、メール送信テーブルから抽出を行う
		// PC、携帯共にメール送信番号が設定されている
		if(isNotMiSetChr(kk1461_mail_snd_no_pc) && isNotMiSetChr(kk1461_mail_snd_no_ktai))
		{
			// 更新する処理の区分：PC携帯両方
			tran_div = TRAN_DIV_PC_KTAI;
			// メール送信番号(PC)でメール送信テーブルからデータ抽出を行う
			Object[] whereParam1 = getCC0021PkWhereParam(kk1461_mail_snd_no_pc);
			mail_send_data_1 = executeCC_T_MAIL_SEND_PKSELECT(whereParam1);
			// メール送信番号(携帯)でメール送信テーブルからデータ抽出を行う
			Object[] whereParam2 = getCC0021PkWhereParam(kk1461_mail_snd_no_ktai);
			mail_send_data_2 = executeCC_T_MAIL_SEND_PKSELECT(whereParam2);
		}
		// PCのみメール送信番号が設定されている
		else if(isNotMiSetChr(kk1461_mail_snd_no_pc))
		{
			// 更新する処理の区分：PCのみ
			tran_div = TRAN_DIV_PC_ONLY;
			// メール送信番号(PC)でメール送信テーブルからデータ抽出を行う
			Object[] whereParam1 = getCC0021PkWhereParam(kk1461_mail_snd_no_pc);
			mail_send_data_1 = executeCC_T_MAIL_SEND_PKSELECT(whereParam1);
		}
		// 携帯のみメール送信番号が設定されている
		else if(isNotMiSetChr(kk1461_mail_snd_no_ktai))
		{
			// 更新する処理の区分：携帯のみ
			tran_div = TRAN_DIV_KTAI_ONLY;
			// メール送信番号(携帯)でメール送信テーブルからデータ抽出を行う
			Object[] whereParam1 = getCC0021PkWhereParam(kk1461_mail_snd_no_ktai);
			mail_send_data_1 = executeCC_T_MAIL_SEND_PKSELECT(whereParam1);
		}
		// メール送信からレコードが抽出できない場合
		if(mail_send_data_1 == null)
		{
			String key_mail_snd_no = "";
			// 携帯のみ
			if(TRAN_DIV_KTAI_ONLY.equals(tran_div))
			{
				key_mail_snd_no = kk1461_mail_snd_no_ktai;
			}
			// PCのみ、またはPC携帯両方
			else
			{
				key_mail_snd_no = kk1461_mail_snd_no_pc;
			}
			// エラー出力
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE,
					new String[] {D_TBL_NAME_CC_T_MAIL_SEND, "メール送信番号=" + key_mail_snd_no});
			super.commonItem.setErrFlg(true);
			return null;
		}
		// メール送信からレコードが抽出できない場合(PC携帯両方の場合のメール送信番号(携帯))
		if(TRAN_DIV_PC_KTAI.equals(tran_div) && mail_send_data_2 == null)
		{
			// エラー出力
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE,
					new String[] {D_TBL_NAME_CC_T_MAIL_SEND, "メール送信番号=" + kk1461_mail_snd_no_ktai});
			super.commonItem.setErrFlg(true);
			return null;
		}
		
		// メール送信ステータスを取得(PC携帯両方の場合PCのステータスとなる)
		cc0021_mail_snd_stat_1 = mail_send_data_1.getString(JBSbatCC_T_MAIL_SEND.MAIL_SEND_STAT);
		
		// key=メール送信ステータス, value=メール送信成否判定結果
		ok_ng_jdg_1 = okng_jdg_tbl.get(cc0021_mail_snd_stat_1);
		
		// PC携帯両方の場合のメール送信成否判定
		if(TRAN_DIV_PC_KTAI.equals(tran_div))
		{
			// メール送信ステータス(携帯)を取得
			cc0021_mail_snd_stat_2 = mail_send_data_2.getString(JBSbatCC_T_MAIL_SEND.MAIL_SEND_STAT);
			// key=メール送信ステータス(携帯), value=メール送信(携帯分)成否判定結果
			ok_ng_jdg_2 = okng_jdg_tbl.get(cc0021_mail_snd_stat_2);
		}
		
		// CASEファイル判定
		case_file_jdg_1 = case_file_jdg_tbl.get(cc0021_mail_snd_stat_1);
		// メール送信成否判定が成功またはCASEファイル判定がメール送信実績またはメール送信失敗の場合(に使用するので)チェックする
		if(OKNG_JDG_OK.equals(ok_ng_jdg_1) || CASE_FILE_JDG_SND_JSK.equals(case_file_jdg_1) || CASE_FILE_JDG_SND_NG.equals(case_file_jdg_1))
		{
			// メール送信実施年月日時分秒が設定されていない場合
			String chk_mail_send_jssi_dtm = mail_send_data_1.getString(JBSbatCC_T_MAIL_SEND.MAIL_SEND_JSSI_DTM);
			if(!(isNotMiSetChr(chk_mail_send_jssi_dtm)))
			{
				String key_mail_snd_no = "";
				// 携帯のみ
				if(TRAN_DIV_KTAI_ONLY.equals(tran_div))
				{
					key_mail_snd_no = kk1461_mail_snd_no_ktai;
				}
				// PCのみ、またはPC携帯両方
				else
				{
					key_mail_snd_no = kk1461_mail_snd_no_pc;
				}
				// エラー出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0090TE,
						new String[] {D_TBL_NAME_CC_T_MAIL_SEND +
						"テーブル(メール送信番号=" + key_mail_snd_no +
						")のメール送信実施年月日時分秒が設定されていません"});
				super.commonItem.setErrFlg(true);
				return null;
			}
		}
		// CASEファイル判定がメール送信実績またはメール送信失敗の場合(に使用するので)チェックする
		if(CASE_FILE_JDG_SND_JSK.equals(case_file_jdg_1) || CASE_FILE_JDG_SND_NG.equals(case_file_jdg_1))
		{
			// メールコードが設定されていない場合
			mail_cd_1 = mail_send_data_1.getString(JBSbatCC_T_MAIL_SEND.MAIL_CD);
			if(!(isNotMiSetChr(mail_cd_1)))
			{
				String key_mail_snd_no = "";
				// 携帯のみ
				if(TRAN_DIV_KTAI_ONLY.equals(tran_div))
				{
					key_mail_snd_no = kk1461_mail_snd_no_ktai;
				}
				// PCのみ、またはPC携帯両方
				else
				{
					key_mail_snd_no = kk1461_mail_snd_no_pc;
				}
				// エラー出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0090TE,
						new String[] {D_TBL_NAME_CC_T_MAIL_SEND +
						"テーブル(メール送信番号=" + key_mail_snd_no +
						")のメールコードが設定されていません"});
				super.commonItem.setErrFlg(true);
				return null;
			}
		}
		// PC携帯両方の場合の携帯
		if(TRAN_DIV_PC_KTAI.equals(tran_div))
		{
			// CASEファイル判定(携帯)
			case_file_jdg_2 = case_file_jdg_tbl.get(cc0021_mail_snd_stat_2);
			// メール送信成否判定が成功またはCASEファイル判定がメール送信実績またはメール送信失敗の場合(に使用するので)チェックする
			if(OKNG_JDG_OK.equals(ok_ng_jdg_2) || CASE_FILE_JDG_SND_JSK.equals(case_file_jdg_2) || CASE_FILE_JDG_SND_NG.equals(case_file_jdg_2))
			{
				// メール送信実施年月日時分秒が設定されていない場合
				String chk_mail_send_jssi_dtm_2 = mail_send_data_2.getString(JBSbatCC_T_MAIL_SEND.MAIL_SEND_JSSI_DTM);
				if(!(isNotMiSetChr(chk_mail_send_jssi_dtm_2)))
				{
					// エラー出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0090TE,
							new String[] {D_TBL_NAME_CC_T_MAIL_SEND +
							"テーブル(メール送信番号=" + kk1461_mail_snd_no_ktai +
							")のメール送信実施年月日時分秒が設定されていません"});
					super.commonItem.setErrFlg(true);
					return null;
				}
			}
			// CASEファイル判定がメール送信実績またはメール送信失敗の場合(に使用するので)チェックする
			if(CASE_FILE_JDG_SND_JSK.equals(case_file_jdg_2) || CASE_FILE_JDG_SND_NG.equals(case_file_jdg_2))
			{
				// メールコードが設定されていない場合
				mail_cd_2 = mail_send_data_2.getString(JBSbatCC_T_MAIL_SEND.MAIL_CD);
				if(!(isNotMiSetChr(mail_cd_2)))
				{
					// エラー出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0090TE,
							new String[] {D_TBL_NAME_CC_T_MAIL_SEND +
							"テーブル(メール送信番号=" + kk1461_mail_snd_no_ktai +
							")のメールコードが設定されていません"});
					super.commonItem.setErrFlg(true);
					return null;
				}
			}
		}
		
		// 問合せ履歴文字列の作成
		// CASEファイル判定がメール送信実績、またはメール送信失敗
		if(CASE_FILE_JDG_SND_JSK.equals(case_file_jdg_1) || CASE_FILE_JDG_SND_NG.equals(case_file_jdg_1))
		{
			// PCのみ、またはPC携帯両方
			if(TRAN_DIV_PC_ONLY.equals(tran_div) || TRAN_DIV_PC_KTAI.equals(tran_div))
			{
				toiawase_rireki_1 = getToiawaseRireki(mail_cd_1, kk1461_mail_snd_no_pc);
			}
			// 携帯のみ
			else if(TRAN_DIV_KTAI_ONLY.equals(tran_div))
			{
				toiawase_rireki_1 = getToiawaseRireki(mail_cd_1, kk1461_mail_snd_no_ktai);
			}
			// 戻り値がnullの場合、DBからの抽出で業務エラーが発生
			if(toiawase_rireki_1 == null)
			{
				return null;
			}
		}
		// PC携帯両方の場合、携帯のCASEファイル
		if(TRAN_DIV_PC_KTAI.equals(tran_div))
		{
			// CASEファイル判定(携帯)がメール送信実績、またはメール送信失敗
			if(CASE_FILE_JDG_SND_JSK.equals(case_file_jdg_2) || CASE_FILE_JDG_SND_NG.equals(case_file_jdg_2))
			{
				toiawase_rireki_2 = getToiawaseRireki(mail_cd_2, kk1461_mail_snd_no_ktai);
				// 戻り値がnullの場合、DBからの抽出で業務エラーが発生
				if(toiawase_rireki_2 == null)
				{
					return null;
				}
			}
		}
		
		// メール送信成否判定を行い、進捗メール最終送信年月日時分秒を決定する
		// PCのみ、または、携帯のみの場合
		if(TRAN_DIV_PC_ONLY.equals(tran_div) || TRAN_DIV_KTAI_ONLY.equals(tran_div))
		{
			// メール送信成否判定
			ok_ng_jdg = ok_ng_jdg_1;
			// メール送信．メール送信実施年月日時分秒を取得
			prg_ml_last_send_dtm = mail_send_data_1.getString(JBSbatCC_T_MAIL_SEND.MAIL_SEND_JSSI_DTM);
		}
		// PC携帯両方の場合
		else if(TRAN_DIV_PC_KTAI.equals(tran_div))
		{
			// PC分 メール送信．メール送信実施年月日時分秒を取得
			String prg_ml_last_send_dtm_pc = mail_send_data_1.getString(JBSbatCC_T_MAIL_SEND.MAIL_SEND_JSSI_DTM);
			// 携帯分 メール送信．メール送信実施年月日時分秒を取得
			String prg_ml_last_send_dtm_ktai = mail_send_data_2.getString(JBSbatCC_T_MAIL_SEND.MAIL_SEND_JSSI_DTM);
			// PC、携帯共にメール送信に成功している場合
			if(OKNG_JDG_OK.equals(ok_ng_jdg_1) && OKNG_JDG_OK.equals(ok_ng_jdg_2))
			{
				// メール送信成否判定を成功とする
				ok_ng_jdg = OKNG_JDG_OK;
				// 日付が大きい方のメール送信．メール送信実施年月日時分秒を設定する
				prg_ml_last_send_dtm = getFutureDate(prg_ml_last_send_dtm_pc, prg_ml_last_send_dtm_ktai);
			}
			// PCのみメール送信に成功している場合
			else if(OKNG_JDG_OK.equals(ok_ng_jdg_1))
			{
				// メール送信成否判定を成功とする
				ok_ng_jdg = OKNG_JDG_OK;
				// PC分のメール送信．メール送信実施年月日時分秒を設定
				prg_ml_last_send_dtm = prg_ml_last_send_dtm_pc;
			}
			// 携帯のみメール送信に成功している場合
			else if(OKNG_JDG_OK.equals(ok_ng_jdg_2))
			{
				// メール送信成否判定を成功とする
				ok_ng_jdg = OKNG_JDG_OK;
				// 携帯分のメール送信．メール送信実施年月日時分秒を設定
				prg_ml_last_send_dtm = prg_ml_last_send_dtm_ktai;
			}
			// PC、携帯共に成功でなかった場合
			else
			{
				// メール送信成否判定を失敗とする
				ok_ng_jdg = OKNG_JDG_NG;
			}
		}
		// メール送信に成功している場合、申込明細を更新する
		if(OKNG_JDG_OK.equals(ok_ng_jdg))
		{
			// バインド変数配列
			Object[] param = getKK0021UpdParam(kk1461_mskm_dtl_no, prg_ml_last_send_dtm);
			// 申込明細更新実行
			int mskmdtl_tran_cnt = executeKK_T_MSKM_DTL_KK_UPDATE_001(param);
			// 処理結果が0件だった
			if(mskmdtl_tran_cnt == 0)
			{
				// エラー出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE,
						new String[] {D_TBL_NAME_KK_T_MSKM_DTL,
						"申込明細番号=" + kk1461_mskm_dtl_no});
				super.commonItem.setErrFlg(true);
				return null;
			}
		}
		
		// DBのレコード、項目によるエラーチェックはここまでで全て終了
		// 工程進捗メール送信実績を更新する
		// PCのみ、または、携帯のみの場合の工程進捗メール送信実績更新判定
		if(TRAN_DIV_PC_ONLY.equals(tran_div) || TRAN_DIV_KTAI_ONLY.equals(tran_div))
		{
			// key=メール送信ステータス value=更新判定
			kk1461_jdg = kk1461_jdg_tbl.get(cc0021_mail_snd_stat_1);
		}
		// PC携帯両方の場合の工程進捗メール送信実績更新判定
		else if(TRAN_DIV_PC_KTAI.equals(tran_div))
		{
			// key=メール送信ステータス(PC) value=メール送信ステータス(携帯)をkeyとするHashMap
			HashMap<String, String> kk1461_jdg_map = kk1461_jdg_tbl_pckt.get(cc0021_mail_snd_stat_1);
			// key=メール送信ステータス(携帯) value=更新判定
			kk1461_jdg = kk1461_jdg_map.get(cc0021_mail_snd_stat_2);
		}
		// 工程進捗メール送信実績更新判定が「メール送信更新(PCのみ)」
		if(KK1461_JDG_PC_ONLY.equals(kk1461_jdg))
		{
			// メール送信ステータス(PC)=送信済, メール送信ステータス(携帯)=抽出した値のまま
			Object[] setParam = getKK1461PkUpdSetParam(SND_ZUMI, kk1461_mail_stat_ktai);
			// PK
			Object[] whereParam = getKK1461PkWhereParam(kk1461_stpprml_snd_jsk_no);
			// PK更新実行
			executeKK_T_STPPRML_SND_JSK_PKUPDATE(setParam, whereParam);
		}
		// 工程進捗メール送信実績更新判定が「メール送信更新(携帯のみ)」
		else if(KK1461_JDG_KTAI_ONLY.equals(kk1461_jdg))
		{
			// メール送信ステータス(PC)=抽出した値のまま, メール送信ステータス(携帯)=送信済
			Object[] setParam = getKK1461PkUpdSetParam(kk1461_mail_stat_pc, SND_ZUMI);
			// PK
			Object[] whereParam = getKK1461PkWhereParam(kk1461_stpprml_snd_jsk_no);
			// PK更新実行
			executeKK_T_STPPRML_SND_JSK_PKUPDATE(setParam, whereParam);
		}
		// 工程進捗メール送信実績更新判定が「メール送信完了更新」
		else if(KK1461_JDG_FIN_UPD.equals(kk1461_jdg))
		{
			// メール送信ステータス(PC)=送信済, メール送信ステータス(携帯)=送信済
			Object[] setParam = getKK1461PkUpdSetParam(SND_ZUMI, SND_ZUMI);
			// PK
			Object[] whereParam = getKK1461PkWhereParam(kk1461_stpprml_snd_jsk_no);
			// PK更新実行
			executeKK_T_STPPRML_SND_JSK_PKUPDATE(setParam, whereParam);
		}
		// 工程進捗メール送信実績更新判定が「メール送信失敗完了更新」
		else if(KK1461_JDG_NG_UPD.equals(kk1461_jdg))
		{
			// PK
			Object[] whereParam = getKK1461PkWhereParam(kk1461_stpprml_snd_jsk_no);
			// PK論理削除実行
			executeKK1461_PKLOGICDELETE(whereParam);
		}
		
		// CASEファイルの作成を行う
		// CASEファイル判定がメール送信実績、またはメール送信失敗
		if(CASE_FILE_JDG_SND_JSK.equals(case_file_jdg_1) || CASE_FILE_JDG_SND_NG.equals(case_file_jdg_1))
		{
			String mail_send_jssi_dtm = mail_send_data_1.getString(JBSbatCC_T_MAIL_SEND.MAIL_SEND_JSSI_DTM);
			JBSbatServiceInterfaceMap outmap = null;
			// CASEファイル作成
			outmap = getCaseFileData(kk1461_svc_kei_no, mail_send_jssi_dtm, case_file_jdg_1, toiawase_rireki_1);
			// 出力フラグを設定
			outmap.setOutFlg(true);
			// 出力
			outputBean.addOutMapList(outmap);
		}
		// PC携帯両方の場合、携帯のCASEファイル
		if(TRAN_DIV_PC_KTAI.equals(tran_div))
		{
			// CASEファイル判定(携帯)がメール送信実績、またはメール送信失敗
			if(CASE_FILE_JDG_SND_JSK.equals(case_file_jdg_2) || CASE_FILE_JDG_SND_NG.equals(case_file_jdg_2))
			{
				String mail_send_jssi_dtm = mail_send_data_2.getString(JBSbatCC_T_MAIL_SEND.MAIL_SEND_JSSI_DTM);
				JBSbatServiceInterfaceMap outmap = null;
				// CASEファイル作成
				outmap = getCaseFileData(kk1461_svc_kei_no, mail_send_jssi_dtm, case_file_jdg_2, toiawase_rireki_2);
				// 出力フラグを設定
				outmap.setOutFlg(true);
				// 出力
				outputBean.addOutMapList(outmap);
			}
		}
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CC_T_MAIL_SEND.close();
		db_KK_T_STPPRML_SND_JSK.close();
		db_KK_T_MSKM_DTL.close();
		db_CC_M_MAIL.close();
		db_CC_T_MLAD.close();
		db_CC_T_TEXT_HTKB.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		// CASE件数ファイルの出力
		String[] fileNames = super.freeItem.split(JKKBatConst.S_PARAM_DELIM);
		JBSbatOutputFileUtil flgFile = new JBSbatOutputFileUtil(fileNames[0]);
		flgFile.setEncode(SJIS);
		flgFile.setLine(CRLF);
		flgFile.createWriter();
		flgFile.write(getCntStr());
		flgFile.close();
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	MAIL_SEND_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeCC_T_MAIL_SEND_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("MAIL_SEND_NO", whereParam[0]);

		// DBアクセスを実行します
		return db_CC_T_MAIL_SEND.selectByPrimaryKeys(whereMap);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	メール送信ステータス（携帯）				MAIL_SEND_STAT_KTAI
	 *		 	メール送信ステータス（ＰＣ）				MAIL_SEND_STAT_PC
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	STPPRML_SND_JSK_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_STPPRML_SND_JSK_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("MAIL_SEND_STAT_KTAI", setParam[0]);
		setMap.setValue("MAIL_SEND_STAT_PC", setParam[1]);
		setMap.setValue("UPD_DTM", setParam[2]);
		setMap.setValue("UPD_OPEACNT", setParam[3]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("STPPRML_SND_JSK_NO", whereParam[0]);

		// DBアクセスを実行します
		db_KK_T_STPPRML_SND_JSK.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * SQLKEY(KK_UPDATE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	進捗メール最終送信年月日時分秒
	 *		 	申込明細番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @return 更新件数
	 */
	private int executeKK_T_MSKM_DTL_KK_UPDATE_001(Object[] param) throws Exception
	//private void executeKK_T_MSKM_DTL_KK_UPDATE_001(Object[] param) throws Exception
	// ■■■ ↑メソッド宣言、コメントの@returnを手動修正 ■■■
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		// ■■■ 手動修正開始 ■■■
		//db_KK_T_MSKM_DTL.executeBySqlDefine(paramList, KK_T_MSKM_DTL_KK_UPDATE_001);
		return db_KK_T_MSKM_DTL.executeBySqlDefine(paramList, KK_T_MSKM_DTL_KK_UPDATE_001);
		// ■■■ 手動修正終了 ■■■
	}

	/**
	 * SQLKEY(KK_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	メールコード
	 *		 	予約適用年月日
	 *		 	メール適用開始年月日
	 *		 	メール適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCC_M_MAIL_KK_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_CC_M_MAIL.selectBySqlDefine(paramList, CC_M_MAIL_KK_SELECT_001);
	}

	/**
	 * SQLKEY(KK_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	メール送信番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCC_T_MLAD_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CC_T_MLAD.selectBySqlDefine(paramList, CC_T_MLAD_KK_SELECT_001);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	MAIL_SEND_NO
	 *		 	TEXT_HTKB_SEQ
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeCC_T_TEXT_HTKB_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("MAIL_SEND_NO", whereParam[0]);
		whereMap.setValue("TEXT_HTKB_SEQ", whereParam[1]);

		// DBアクセスを実行します
		return db_CC_T_TEXT_HTKB.selectByPrimaryKeys(whereMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * PK(ＰＫ　論理削除)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *			STPPRML_SND_JSK_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK1461_PKLOGICDELETE(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("STPPRML_SND_JSK_NO", whereParam[0]);
		
		// DBアクセスを実行します
		db_KK_T_STPPRML_SND_JSK.logicalDeleteByPrimaryKeys(whereMap);
	}
	
	/**
	 * CC_T_MAIL_SENDにDBアクセスを実行する際に必要なPKを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param mail_send_no メール送信番号
	 * @return param CC_T_MAIL_SENDにDBアクセスを実行する際に必要なPK
	 * @throws Exception 
	 */
	private Object[] getCC0021PkWhereParam(String mail_send_no) throws Exception 
	{
		// パラメータの設定
		Object[] param = {
			mail_send_no // メール送信番号
		};

		return param;
	}
	
	/**
	 * KK_T_STPPRML_SND_JSKにDBアクセスを実行する際に必要なPKを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param stpprml_snd_jsk_no 工程進捗メール送信実績番号
	 * @return param KK_T_STPPRML_SND_JSKにDBアクセスを実行する際に必要なPK
	 * @throws Exception 
	 */
	private Object[] getKK1461PkWhereParam(String stpprml_snd_jsk_no) throws Exception 
	{
		// パラメータの設定
		Object[] param = {
			stpprml_snd_jsk_no // 工程進捗メール送信実績番号
		};

		return param;
	}
	
	/**
	 * KK_T_STPPRML_SND_JSK_PKUPDATEでDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param mail_snd_stat_pc メール送信ステータス（ＰＣ）
	 * @param mail_snd_stat_ktai メール送信ステータス（携帯）
	 * @return param KK_T_STPPRML_SND_JSK_PKUPDATEでDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getKK1461PkUpdSetParam(String mail_snd_stat_pc, String mail_snd_stat_ktai) throws Exception 
	{
		// パラメータの設定
		Object[] param = {
			mail_snd_stat_ktai,					// メール送信ステータス（携帯）
			mail_snd_stat_pc,					// メール送信ステータス（ＰＣ）
			JCCBatCommon.getSysDateTimeStamp(),	// 更新年月日時分秒
			super.batchUserId					// 更新オペレータアカウント
		};

		return param;
	}
	
	/**
	 * KK_T_MSKM_DTL_UPDATE_001でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param mskm_dtl_no 対象申込明細番号
	 * @param prg_ml_snd_last_dtm 進捗メール最終送信年月日時分秒
	 * @return param KK_T_MSKM_DTL_UPDATE_001でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getKK0021UpdParam(String mskm_dtl_no, String prg_ml_snd_last_dtm) throws Exception 
	{
		// パラメータの設定
		Object[] param = {
			prg_ml_snd_last_dtm,				// 進捗メール最終送信年月日時分秒
			mskm_dtl_no							// 申込明細番号
		};

		return param;
	}
	
	/**
	 * CC_M_MAIL_SELECT_001でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param mail_cd メールコード
	 * @return param CC_M_MAIL_SELECT_001でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getCC0121SelectParam(String mail_cd) throws Exception 
	{
		// パラメータの設定
		Object[] param = {
			mail_cd,                   // メールコード
			JCCBatCommon.getSysDate(), // 適用年月日
			JCCBatCommon.getSysDate(), // メール適用開始年月日
			JCCBatCommon.getSysDate()  // メール適用終了年月日
		};
		
		return param;
	}
	
	/**
	 * CC_T_MLAD_SELECT_001でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param mail_send_no メール送信番号
	 * @return param CC_T_MLAD_SELECT_001でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getCC0131SelectParam(String mail_send_no) throws Exception 
	{
		// パラメータの設定
		Object[] param = {
			mail_send_no // メール送信番号
		};
		
		return param;
	}

	/**
	 * CC_T_TEXT_HTKBにDBアクセスを実行する際に必要なPKを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param mail_send_no メール送信番号
	 * @param text_htkb_seq 本文非定型部連番
	 * @return param CC_T_TEXT_HTKBにDBアクセスを実行する際に必要なPK
	 * @throws Exception 
	 */
	private Object[] getCC0141PkWhereParam(String mail_send_no, String text_htkb_seq) throws Exception 
	{
		// パラメータの設定
		Object[] param = {
			mail_send_no, // メール送信番号
			text_htkb_seq // 本文非定型部連番
		};

		return param;
	}
	
	/**
	 * 文字列が設定されていることをチェックします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.文字列の判定。
	 * </pre>
	 * <p>
	 * @param target 判定対象文字列
	 * @return jdg_rslt 判定対象文字列がnullでないかつ""でもない場合true、それ以外の場合false
	 */
	private boolean isNotMiSetChr(String target)
	{
		boolean jdg_rslt = false;
		if(target != null && !("".equals(target)))
		{
			jdg_rslt = true;
		}
		return jdg_rslt;
	}
	
	/**
	 * 大きい方の日付を返却します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.日付の比較。
	 * </pre>
	 * <p>
	 * @param str_date_1 判定対象日付
	 * @param str_date_2 判定対象日付
	 * @return future_date 判定対象日付のうち大きい方
	 */
	private String getFutureDate(String str_date_1, String str_date_2)
	{
		String future_date = "";
		long l_date_1 = Long.parseLong(str_date_1);
		long l_date_2 = Long.parseLong(str_date_2);
		if(l_date_1 > l_date_2)
		{
			// 対象日付１の方が大きい
			future_date = str_date_1;
		}
		else
		{
			// 対象日付２の方が大きい
			future_date = str_date_2;
		}
		return future_date;
	}
	
	/**
	 * CASEファイルデータ項目の問合せ履歴に設定する文字列を返却する。<br>
	 * メールからメール本文、メールアドレスからメールアドレス、<br>
	 * 本文非定型部から本文非定型置換文字を抽出し、<br>
	 * 本文非定型置換文字でメール本文を編集後、<br>
	 * メールアドレス + 半角スペース + 編集後のメール本文の形式で返却する。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.メール、メールアドレス、本文非定型部からデータを抽出
	 * </pre>
	 * <pre>
	 * 2.メール本文の編集、問合せ履歴の作成
	 * </pre>
	 * <p>
	 * @param mail_cd メールコード
	 * @param mail_snd_no メール送信番号
	 * @return toiawase_rireki CASEファイルデータ項目の問合せ履歴に設定する文字列を返却
	 * @throws Exception
	 */
	private String getToiawaseRireki(String mail_cd, String mail_snd_no) throws Exception
	{
		// メールから抽出したメール本文
		String mail_text = "";
		// メールアドレスから抽出したメールアドレス
		String mlad = "";
		// 本文非定型部から抽出した本文非定型部連番１の本文非定型置換文字
		String ckan_moji_1 = "";
		// 本文非定型部から抽出した本文非定型部連番２の本文非定型置換文字
		String ckan_moji_2 = "";
		// 本文非定型部から抽出した本文非定型部連番３の本文非定型置換文字
		String ckan_moji_3 = "";
		// 編集後のメール本文
		String henshu_mail_text = "";
		// 返却する問合せ履歴
		String toiawawse_rireki = "";
		
		// メール検索用SQLのバインド変数
		Object[] mail_param = getCC0121SelectParam(mail_cd);
		// メール検索実行
		executeCC_M_MAIL_KK_SELECT_001(mail_param);
		// メール本文の抽出
		JBSbatCommonDBInterface rcv_mail_map = db_CC_M_MAIL.selectNext();
		if(rcv_mail_map != null)
		{
			mail_text = rcv_mail_map.getString(JBSbatCC_M_MAIL.MAIL_TEXT);
			// メール本文が未設定
			if(!(isNotMiSetChr(mail_text)))
			{
				// エラー出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0090TE,
						new String[] {D_TBL_NAME_CC_M_MAIL +
						"テーブル(メールコード=" + mail_cd +
						")のメール本文が設定されていません"});
				super.commonItem.setErrFlg(true);
				return null;
			}
		}
		else
		{
			// エラー出力
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE,
					new String[] {D_TBL_NAME_CC_M_MAIL, "メールコード=" + mail_cd});
			super.commonItem.setErrFlg(true);
			return null;
		}
		
		// メールアドレス検索用SQLのバインド変数
		Object[] mlad_param = getCC0131SelectParam(mail_snd_no);
		// メールアドレス検索実行
		executeCC_T_MLAD_KK_SELECT_001(mlad_param);
		// メールアドレスの抽出
		JBSbatCommonDBInterface rcv_mlad_map = db_CC_T_MLAD.selectNext();
		if(rcv_mlad_map != null)
		{
			mlad = rcv_mlad_map.getString(JBSbatCC_T_MLAD.MLAD);
		}
		else
		{
			// エラー出力
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE,
					new String[] {D_TBL_NAME_CC_T_MLAD, "メール送信番号=" + mail_snd_no});
			super.commonItem.setErrFlg(true);
			return null;
		}

// 2013.12.25 OM-2013-0005248 del start
//		// 本文非定型部PK(連番1)
//		Object[] htkb_param_1 = getCC0141PkWhereParam(mail_snd_no, HTKB_SEQ_1);
//		// 本文非定型部PK検索実行
//		JBSbatCommonDBInterface rcv_text_htkb_1 = executeCC_T_TEXT_HTKB_PKSELECT(htkb_param_1);
//		// 本文非定型置換文字の取得
//		if(rcv_text_htkb_1 != null)
//		{
//			ckan_moji_1 = rcv_text_htkb_1.getString(JBSbatCC_T_TEXT_HTKB.TEXT_HTK_CKAN_MOJI);
//			// 本文非定型置換文字が未設定
//			if(!(isNotMiSetChr(ckan_moji_1)))
//			{
//				// エラー出力
//				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0090TE,
//						new String[] {D_TBL_NAME_CC_T_TEXT_HTKB +
//						"テーブル(メール送信番号=" + mail_snd_no + ", 本文非定型部連番=" + HTKB_SEQ_1,
//						")の本文非定型置換文字が設定されていません"});
//				super.commonItem.setErrFlg(true);
//				return null;
//			}
//		}
//		else
//		{
//			// エラー出力
//			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE,
//					new String[] {D_TBL_NAME_CC_T_TEXT_HTKB, "メール送信番号=" + mail_snd_no + ", 本文非定型部連番=" + HTKB_SEQ_1});
//			super.commonItem.setErrFlg(true);
//			return null;
//		}
//
//		// 本文非定型部PK(連番2)
//		Object[] htkb_param_2 = getCC0141PkWhereParam(mail_snd_no, HTKB_SEQ_2);
//		// 本文非定型部PK検索実行
//		JBSbatCommonDBInterface rcv_text_htkb_2 = executeCC_T_TEXT_HTKB_PKSELECT(htkb_param_2);
//		// 本文非定型置換文字の取得
//		if(rcv_text_htkb_2 != null)
//		{
//			ckan_moji_2 = rcv_text_htkb_2.getString(JBSbatCC_T_TEXT_HTKB.TEXT_HTK_CKAN_MOJI);
//			// 本文非定型置換文字が未設定
//			if(!(isNotMiSetChr(ckan_moji_2)))
//			{
//				// エラー出力
//				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0090TE,
//						new String[] {D_TBL_NAME_CC_T_TEXT_HTKB +
//						"テーブル(メール送信番号=" + mail_snd_no + ", 本文非定型部連番=" + HTKB_SEQ_2 +
//						")の本文非定型置換文字が設定されていません"});
//				super.commonItem.setErrFlg(true);
//				return null;
//			}
//		}
//		else
//		{
//			// エラー出力
//			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE,
//					new String[] {D_TBL_NAME_CC_T_TEXT_HTKB, "メール送信番号=" + mail_snd_no + ", 本文非定型部連番=" + HTKB_SEQ_2});
//			super.commonItem.setErrFlg(true);
//			return null;
//		}
//
//		// 本文非定型部PK(連番3)
//		Object[] htkb_param_3 = getCC0141PkWhereParam(mail_snd_no, HTKB_SEQ_3);
//		// 本文非定型部PK検索実行
//		JBSbatCommonDBInterface rcv_text_htkb_3 = executeCC_T_TEXT_HTKB_PKSELECT(htkb_param_3);
//		// 本文非定型置換文字の取得
//		if(rcv_text_htkb_3 != null)
//		{
//			ckan_moji_3 = rcv_text_htkb_3.getString(JBSbatCC_T_TEXT_HTKB.TEXT_HTK_CKAN_MOJI);
//			// 本文非定型置換文字が未設定
//			if(!(isNotMiSetChr(ckan_moji_3)))
//			{
//				// エラー出力
//				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0090TE,
//						new String[] {D_TBL_NAME_CC_T_TEXT_HTKB +
//						"テーブル(メール送信番号=" + mail_snd_no + ", 本文非定型部連番=" + HTKB_SEQ_3 +
//						")の本文非定型置換文字が設定されていません"});
//				super.commonItem.setErrFlg(true);
//				return null;
//			}
//		}
//		else
//		{
//			// エラー出力
//			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE,
//					new String[] {D_TBL_NAME_CC_T_TEXT_HTKB, "メール送信番号=" + mail_snd_no + ", 本文非定型部連番=" + HTKB_SEQ_3});
//			super.commonItem.setErrFlg(true);
//			return null;
//		}
// 2013.12.25 OM-2013-0005248 del end

// 2013.12.25 OM-2013-0005248 add start
		henshu_mail_text = editMailText(mail_cd, mail_text, mail_snd_no);
// 2013.12.25 OM-2013-0005248 add end

// 2013.12.25 OM-2013-0005248 del start
//		// メール本文の編集
//		henshu_mail_text = mail_text;
//		henshu_mail_text = henshu_mail_text.replace(CKAN_CHR_1, ckan_moji_1);
//		henshu_mail_text = henshu_mail_text.replace(CKAN_CHR_2, ckan_moji_2);
//		henshu_mail_text = henshu_mail_text.replace(CKAN_CHR_3, ckan_moji_3);
// 2013.12.25 OM-2013-0005248 del end
		
		// 問合せ履歴の編集
		toiawawse_rireki = mlad + " " + henshu_mail_text;
		return toiawawse_rireki;
	}

	
	/**
	 * CASEファイルのレコードを作成し、返却します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.メール送信実績の判定
	 * </pre>
	 * <pre>
	 * 2.作成日時の編集
	 * </pre>
	 * <pre>
	 * 3.CASEファイルレコードの作成
	 * </pre>
	 * <pre>
	 * 4.出力レコード数をインクリメント
	 * </pre>
	 * <p>
	 * @param svc_kei_no サービス契約番号
	 * @param ml_snd_jssi_dtm メール送信実施年月日時分秒
	 * @param case_file_jdg CASEファイル判定結果
	 * @param toiawase_rireki 問合せ履歴
	 * @return outmap CASEファイルレコード
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap getCaseFileData(
			String svc_kei_no, String ml_snd_jssi_dtm, String case_file_jdg, String toiawase_rireki) throws Exception
	{
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		String title = ""; // タイトル
		String sakusei_date = SAKUSEI_DATE_TEMP; // 作成日時
		
		// メール送信実績・失敗判定
		if(CASE_FILE_JDG_SND_JSK.equals(case_file_jdg))
		{
			title = TITLE_JSK_CHR;
		}
		else if(CASE_FILE_JDG_SND_NG.equals(case_file_jdg))
		{
			title = TITLE_NG_CHR;
		}
		
		// 作成日時の形式編集
		String year = ml_snd_jssi_dtm.substring(0, 4);
		String mon = ml_snd_jssi_dtm.substring(4, 6);
		String day = ml_snd_jssi_dtm.substring(6, 8);
		String hh = ml_snd_jssi_dtm.substring(8, 10);
		String mm = ml_snd_jssi_dtm.substring(10, 12);
		String ss = ml_snd_jssi_dtm.substring(12, 14);
		sakusei_date = sakusei_date.replace("YYYY", year);
		sakusei_date = sakusei_date.replace("MM", mon);
		sakusei_date = sakusei_date.replace("DD", day);
		sakusei_date = sakusei_date.replace("hh", hh);
		sakusei_date = sakusei_date.replace("mm", mm);
		sakusei_date = sakusei_date.replace("ss", ss);
		
		// ファイルレコード作成
		outmap.setString(JBSbatCRIFE016.CUST_TYPE, KOKYAKU_TYPE_CHR);		// 顧客タイプ
		outmap.setString(JBSbatCRIFE016.CUST_ID, svc_kei_no);				// お客様ＩＤ
		outmap.setString(JBSbatCRIFE016.CUST_NM, "");						// 顧客氏名
		outmap.setString(JBSbatCRIFE016.CUST_NM_KANA, "");					// 顧客氏名（カナ）
		outmap.setString(JBSbatCRIFE016.TELNO, "");							// 電話番号
		outmap.setString(JBSbatCRIFE016.TELNO_2, "");						// 電話番号2
		outmap.setString(JBSbatCRIFE016.PCD, "");							// 郵便番号
		outmap.setString(JBSbatCRIFE016.AD_1, "");							// 住所1
		outmap.setString(JBSbatCRIFE016.AD_2, "");							// 住所2
		outmap.setString(JBSbatCRIFE016.AD_3, "");							// 住所3
		outmap.setString(JBSbatCRIFE016.SEX, "");							// 性別
		outmap.setString(JBSbatCRIFE016.BIRTHD, "");						// 生年月日
		outmap.setString(JBSbatCRIFE016.JOTAI, JYOUTAI_CHR);				// 状態
		outmap.setString(JBSbatCRIFE016.STAT, STATUS_CHR);					// ステータス
		outmap.setString(JBSbatCRIFE016.SAKSEI_DATE, sakusei_date);			// 作成日時
// SG1-2013-0000041 2013.05.16 MOD START
		outmap.setString(JBSbatCRIFE016.UKSHA, this.taioRrkAddUser);		// 受付者
		outmap.setString(JBSbatCRIFE016.TNTSHA, this.taioRrkAddUser);		// 担当者
// SG1-2013-0000041 2013.05.16 ADD END
		outmap.setString(JBSbatCRIFE016.QUE_NM, "");						// キュー名
		outmap.setString(JBSbatCRIFE016.UK_SBT, UKETSUKE_SBT_CHR);			// 受付種別
		outmap.setString(JBSbatCRIFE016.TITLE, title);						// タイトル
		outmap.setString(JBSbatCRIFE016.CTGR_1, "");						// カテゴリ1
		outmap.setString(JBSbatCRIFE016.CTGR_2, "");						// カテゴリ2
		outmap.setString(JBSbatCRIFE016.CTGR_3, "");						// カテゴリ3
		outmap.setString(JBSbatCRIFE016.CTGR_4, "");						// カテゴリ4
		outmap.setString(JBSbatCRIFE016.CTGR_5, "");						// カテゴリ5
		outmap.setString(JBSbatCRIFE016.CTGR_6, "");						// カテゴリ6
		outmap.setString(JBSbatCRIFE016.CTGR_7, "");						// カテゴリ7
		outmap.setString(JBSbatCRIFE016.CTGR_8, "");						// カテゴリ8
		outmap.setString(JBSbatCRIFE016.CTGR_9, "");						// カテゴリ9
		outmap.setString(JBSbatCRIFE016.CTGR_10, "");						// カテゴリ10
		outmap.setString(JBSbatCRIFE016.CTGR_11, "");						// カテゴリ11
		outmap.setString(JBSbatCRIFE016.TOIAWASE_RIREKI, toiawase_rireki);	// 問合せ履歴
		outmap.setString(JBSbatCRIFE016.PROSCST_ID, "");					// 問合せ客ID
		outmap.setString(JBSbatCRIFE016.EOID, "");							// eoID
		outmap.setString(JBSbatCRIFE016.MSKMSHO_NO, "");					// 申込書番号
		outmap.setString(JBSbatCRIFE016.CALLBK_DATE, "");					// エスカレーション日時
		outmap.setString(JBSbatCRIFE016.CALLBK_SHITEI_TYPE, "");			// コールバック時間指定タイプ
		
		// 出力レコード数をインクリメント
		case_file_cnt++;
		
		return outmap;
	}
	
	/**
	 * CASE件数ファイルの文字列を作成し、返却します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.CASE件数ファイル文字列の作成
	 * </pre>
	 * <p>
	 * @return str_case_file_cnt CASE件数ファイル文字列(ダブルクォート付与)
	 * @throws Exception
	 */
	private String getCntStr() throws Exception
	{
		// FWを使用せずファイル出力を行う為、この時点でダブルクォートを付与しておく
		String str_case_file_cnt = "\"" + String.valueOf(case_file_cnt) + "\"";
		return str_case_file_cnt;
	}

// 2013.12.25 OM-2013-0005248 add start
	/**
	 * メール本文中の置き換え記号（"%"）を、本文非定型部テーブルから検索した文字列で置き換えます。
	 * @param mail_cd
	 * @param mail_text
	 * @param mail_snd_no
	 * @return "%"記号を置き換え後のメール本文
	 * @throws Exception
	 */
	private String editMailText(String mail_cd, String mail_text, String mail_snd_no) throws Exception
	{
		// 編集後の文字列
		String henshu_mail_text = null;
		
		//------------------------------------
		// 本文非定型部テーブル検索一覧取得
		//------------------------------------
		// メール本文組立て用領域
		StringBuffer sbMailText = new StringBuffer("");

		//一時格納用変数を定義
		JBSbatCommonDBInterface rsTextHtkbMap = null;
		String textHtkCkanMoji = null;
		boolean existTextHtkb = false;
		String mailText = mail_text;
		
		// v1.00.01 本文非定型部の数をカウントアップする領域
		int htkbCntr = 0;
		
		// v1.00.01 メール本文内の"%"の数を格納しておく領域
		int srcCkanCntr = getStrCnt(mailText, "%");

		//---------------------------------------
		// 本文非定型部テーブル情報一覧検索
		//---------------------------------------
		Object[] param = new Object[1];
		param[0] = mail_snd_no;
		executeCC_T_TEXT_HTKB_CC_SELECT_002(param);

		// 本文中の"%"を本文非定型部置換文字列に置き換えながら連結
		while((rsTextHtkbMap = db_CC_T_TEXT_HTKB.selectNext()) != null)
		{
			// v1.00.01 本文非定型部の数をカウントアップ
			htkbCntr++;
			
			existTextHtkb = true;
			textHtkCkanMoji = rsTextHtkbMap.getString(JBSbatCC_T_TEXT_HTKB.TEXT_HTK_CKAN_MOJI);
			if(mailText.indexOf("%") == -1)
			{
				sbMailText.append(mailText);
				break;
			}
			else
			{
				// "%"部分までを登録用本文にセット
				sbMailText.append(mailText.substring(0, mailText.indexOf("%")));
				// 非定型置換文字列を連結
				// 2011/11/17 指定値がnullの場合は空文字に置換する start
				if(null == textHtkCkanMoji)
				{
					textHtkCkanMoji = "";
				}
				// 2011/11/17 指定値がnullの場合は空文字に置換する end
				sbMailText.append(textHtkCkanMoji);
				// 登録した部分までをトリミング
				mailText = mailText.substring(mailText.indexOf("%") + 1);
				//"%"が無くなった場合は残り全てを連結してループ抜け
				if(mailText.indexOf("%") == -1)
				{
					sbMailText.append(mailText);
				}
			}
		}
		// 本文非定型部データが空の場合
		if (!existTextHtkb)
		{
			sbMailText.append(mailText);
		}
		
		// v1.00.01 メール本文中の"%"の数と置換文字の数が一致しない場合は例外をスロー
		if (htkbCntr != srcCkanCntr)
		{
			throw new JCCbatFrameworkException("メール本文中の置換文字数_本文非定型置換文字数不一致エラー。"
												// 2013/02/14 FST_mukuo)ログ出力メッセージ見直し対応 start
												+ "メールコード:[" + mail_cd  + "] "
												// 2013/02/14 FST_mukuo)ログ出力メッセージ見直し対応 end
												+ "メール本文中の置換文字の数:[" + String.valueOf(srcCkanCntr)  + "] "
												+ "本文非定型部の数:[" + String.valueOf(htkbCntr) + "]");
		}
		
		henshu_mail_text = sbMailText.toString();
			
		return henshu_mail_text;
	}
	
		/**
	 * 本文非定型部テーブル情報一覧検索処理です。<br>
	 * SQLKEY(CC_SELECT_002)でDBアクセスを行います。<br>
	 * 指定したメール送信番号に紐づく本文非定型部テーブルの情報を抽出します。<br>
	 * 結果は本文非定型部連番でソートします。<br>
	 * @param param バイント変数の値配列。param[0]:メール送信番号
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCC_T_TEXT_HTKB_CC_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		// 本文非定型部.メール送信番号 ← 未送信メール情報ファイル.メール送信番号
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CC_T_TEXT_HTKB.selectBySqlDefine(paramList, CC_T_TEXT_HTKB_CC_SELECT_002);
	}

	/**
	 * 文字列中に存在するの任意の文字列の個数を取得する
	 * @param srcStr 検索元の文字列
	 * @param searchStr 検索したい文字列
	 * @return 存在数
	 */
	private static int getStrCnt(String srcStr, String searchStr)
	{
		int cnt = 0;
		if(isEmpty(srcStr) || isEmpty(searchStr))
		{
			return 0;
		}
		String tmpStr = srcStr;
		
		while(tmpStr.indexOf(searchStr) != -1)
		{
			cnt++;
			tmpStr = tmpStr.substring(tmpStr.indexOf(searchStr) + searchStr.length());
		}
		return cnt;
	}

	/**
	 * 文字列がnullか判定する
	 * <br>
	 * @param arg0 判定する文字列
	 * @return 文字列がNullか空文字のときtrue
	 */
	private static boolean isEmpty(String arg0) 
	{
		if (arg0 == null || "".equals(arg0)) 
		{
			return true;
		}
		return false;
	}
// 2013.12.25 OM-2013-0005248 add end

}
