/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKBmpktTchFileSksi
*	ソースファイル名	：JBSbatKKBmpktTchFileSksi.java
*	作成者				：富士通　
*	作成日				：2012年09月28日
*＜機能概要＞
*　番ポ工事当日通知ファイル作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00		2012/09/28  FJ)井熊		新規作成
*	v4.01		2012/10/19  FJ)井熊		【IT1-2012-0001436】状態にNULLが出る故障対応
*	v4.02		2012/12/17  FJ)砂川		【IT1-2012-0002442】抽出レコードが0件の場合、0バイト出力する対応
*	v4.03		2013/03/13	FJ)鷲塚		【ST3-2013-0000665】移行データ対応(申込事業所マスタ検索方法変更）
*	v5.00		2013/04/04	FJ)井熊		【ST4-2013-0000377】申込種別が内訳作成起因に紐づくように変更
*	v5.00		2013/05/16	FJ)米谷		【SG1-2013-0000041】受付者、担当者項目の出力値を修正
*	v72.00		2024/02/16	FJ)三角		【ANK-4494-00-00】【eo定期】 双方向番ポ対応
*	v72.01		2025/02/04	FJ)佐々木	【#86313】番ポ工事日当日通知ファイル作成 null対応
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatCRIFE016;
//ANK-4494-00-00 DEL START
//import eo.business.util.table.JBSbatCK_T_CUST;
//ANK-4494-00-00 DEL END
import eo.business.util.table.JBSbatCR_M_CTGR;
import eo.business.util.table.JBSbatCR_T_QUE_BOX;
import eo.business.util.table.JBSbatKK_T_MSKM;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_UCWK;
//ANK-4494-00-00 MOD START
//import eo.business.util.table.JBSbatTU_M_MSKM_JIGSHO;
import eo.business.util.table.JBSbatTU_M_TUSHIN_JGYOSHA;
//ANK-4494-00-00 MOD END
import eo.business.util.table.JBSbatTU_T_BMP_KOJI;
//ANK-4494-00-00 ADD START
import eo.common.constant.JKKStrConst;
import eo.common.util.JKKStringUtil;
//ANK-4494-00-00 ADD END
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKBmpktTchFileSksi extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(カテゴリー)*/
	private static final String D_TBL_NAME_CR_M_CTGR = "CR_M_CTGR";

	/** テーブル(申込事業所)*/
	private static final String D_TBL_NAME_CR_T_QUE_BOX = "CR_T_QUE_BOX";

	/** テーブル(サービス契約内訳)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_UCWK = "KK_T_SVC_KEI_UCWK";

	/** テーブル(申込事業所)*/
	private static final String D_TBL_NAME_KK_T_MSKM = "KK_T_MSKM";

//ANK-4494-00-00 MOD START
//	/** テーブル(申込事業所)*/
//	private static final String D_TBL_NAME_TU_M_MSKM_JIGSHO = "TU_M_MSKM_JIGSHO";
	/** テーブル(通信事業者)*/
	private static final String D_TBL_NAME_TU_M_TUSHIN_JGYOSHA = "TU_M_TUSHIN_JGYOSHA";
//ANK-4494-00-00 MOD END

	/** SQL定義キー(KK_SELECT_012)*/
	private static final String KK_T_MSKM_KK_SELECT_012 = "KK_SELECT_012";

	/** テーブルアクセスクラス(カテゴリー)*/
	private JBSbatSQLAccess db_CR_M_CTGR = null;

	/** テーブルアクセスクラス(カテゴリー)*/
	private JBSbatSQLAccess db_CR_T_QUE_BOX = null;

	/** テーブルアクセスクラス(サービス契約内訳)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_UCWK = null;

	/** テーブルアクセスクラス(申込)*/
	private JBSbatSQLAccess db_KK_T_MSKM = null;

//ANK-4494-00-00 MOD START
//	/** テーブルアクセスクラス(申込事業所)*/
//	private JBSbatSQLAccess db_TU_M_MSKM_JIGSHO = null;
	/** テーブルアクセスクラス(通信事業者)*/
	private JBSbatSQLAccess db_TU_M_TUSHIN_JGYOSHA = null;
//ANK-4494-00-00 MOD END
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** カテゴリ名キー eo電話 .*/
	private static final String CATE_KEY_EOH_TEL = "0000004237";
	/** カテゴリ名キー 新規受付 .*/
	private static final String CATE_KEY_NEW_UKE = "0000004239";
	/** カテゴリ名キー 番ポ保留 .*/
	private static final String CATE_KEY_BMP_HORU = "0000004256";
	/** カテゴリ名キー 工事日当日連絡 .*/
	private static final String CATE_KEY_KOJI_TOD = "0000004247";
	/** カテゴリ名キー 工事日到来 .*/
	private static final String CATE_KEY_KOJI_TOU = "0000004257";
	/** カテゴリ名キー 番ポ切替待ち .*/
	private static final String CATE_KEY_BMP_CHEN = "0000004249";
	/** カテゴリ名キー 通停解除待ち .*/
	private static final String CATE_KEY_TU_TEI = "0000004248";
	/** キュー名称キー 190.番ポ｜保留｜工事日到来 .*/
	private static final String QUE_KEY_190 = "0000002433";
	/** キュー名称キー 140.番ポ｜追加｜あり｜番ポ切替 .*/
	private static final String QUE_KEY_140 = "0000002434";
	
	/** 出力ファイルパス名取得 .*/
	private String[] file_paths = null;
	/** セパレータ .*/
	private static final String sep_ = ";";
	/** 改行コード .*/
	private static final String CRLF = "\r\n";
	/** 件数ファイル括り文字 */
	private static final String SCOPE  = "\"";
	
	/** カテゴリー名 キュー名称格納配列 .*/
	private HashMap<String, String> strArrayList = null;
	
	/** eo光電話開通前 番ポ同時申込判定フラグ .*/
	private String pre_mskm_flg = null;
	/** 判定フラグ 光電話新設番ポ同時申込 .*/
	private static final String DOJI = "0";
	/** 判定フラグ 光電話開通後追加申込 .*/
	private static final String TUIKA = "1";
	
	/** 工事日保留判定フラグ .*/
	private String mHoryuFlg = null;
	/** 工事日保留判定フラグ ON .*/
	private static final String FLG_ON = "1";
	
	/** 申込種別コード 新規申込 .*/
	private static final String NEW_MSKM = "00001";
	/** 申込種別コード サービス追加申込 .*/
	private static final String ADD_SVC = "00002";
	/** 申込種別コード 電話番号追加申込 .*/
	private static final String ADD_NO = "00034";
	/** 申込種別コード 電話番号変更申込 .*/
	private static final String CHEN_NO = "00035";
	/** 申込種別コード 住所変更 .*/
	private static final String JUHEN_NO = "00017";
	
	/** 出力定数項目 顧客タイプ 加入者.*/
	private static final String KKYAKU_TPE = "加入者";
	/** 出力定数項目 状態 クローズ .*/
	private static final String JOUTAI_CLO = "クローズ";
	/** 出力定数項目 状態 エスカレーション .*/
	private static final String JOUTAI_ESC = "エスカレーション";
	/** 出力定数項目 ステータス 処理中 .*/
	private static final String STAT_SHORI = "処理中";
	/** 出力定数項目 受付種別 他システム .*/
	private static final String OTHER_SYS = "他システム";
	
//ANK-4494-00-00 MOD START
//	/** 申込事業所名 .*/
//	private String mMskm_nm = null;
	/** 通信事業者名 .*/
	private String mTsjgs_nm = null;
//ANK-4494-00-00 MOD END
	/** 出力定数項目 作成日時 YYYY/MM/DD hh:mm:ss .*/
	private String mShori_date = null;
	
	/** レコード数カウンタ .*/
	private int count = 0;
	
// 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
// ANK-4494-00-00 ADD START
	/** コード名称管理 コード種別コード 工事実施方法コード */
	private static final String CD_SBT_CD_KOJI_JSSI_WAY = "CD01832";
	/** コード名称管理 コード種別コード 想定切替時間帯コード（無連絡工事） */
	private static final String CD_SBT_CD_SOTEI_SWITCH_TIMEZ_NON = "CD01837";
	/** コード名称管理 コード種別コード 想定切替時間帯コード（個別連絡工事） */
	private static final String CD_SBT_CD_SOTEI_SWITCH_TIMEZ_KBT = "CD01833";
// ANK-4494-00-00 ADD END

	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CR_M_CTGR = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_M_CTGR);
		db_KK_T_SVC_KEI_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_UCWK);
		db_KK_T_MSKM = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM);
//ANK-4494-00-00 MOD START
//		db_TU_M_MSKM_JIGSHO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_TU_M_MSKM_JIGSHO);
		db_TU_M_TUSHIN_JGYOSHA = new JBSbatSQLAccess(commonItem, D_TBL_NAME_TU_M_TUSHIN_JGYOSHA);
//ANK-4494-00-00 MOD END
		db_CR_T_QUE_BOX = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_QUE_BOX);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// Free項目からCASEファイルパスと件数ファイルパスを取得
		file_paths = super.freeItem.split(sep_);
		
		// 格納配列初期化
		strArrayList = new HashMap<String, String>();
		
		// カテゴリ抽出キーを格納
		String[] cateKey = {
				CATE_KEY_EOH_TEL,
				CATE_KEY_NEW_UKE,
				CATE_KEY_BMP_HORU,
				CATE_KEY_KOJI_TOD,
				CATE_KEY_KOJI_TOU,
				CATE_KEY_BMP_CHEN,
				CATE_KEY_TU_TEI
		};
		JBSbatCommonDBInterface result = null;
		JBSbatCommonDBInterface whereMap = null;
		// カテゴリー名をキーに従いすべて抽出し格納
		for(int i = 0; i < cateKey.length; i++)
		{
			// 検索用キーマップ初期化
			whereMap = new JBSbatCommonDBInterface();
			// キー準備
			String key = cateKey[i];
			whereMap.setValue(JBSbatCR_M_CTGR.CTGR_NO, key);
			result = this.db_CR_M_CTGR.selectByPrimaryKeys(whereMap);
			if(result != null)
			{
				strArrayList.put(key, result.getString(JBSbatCR_M_CTGR.CTGR_NM));
			}
			else
			{
				// カテゴリー名取得できない
				throw new JBSbatBusinessException("EKKB0060TE", new String[]{"カテゴリーＫＥＹ：" + key});
			}
		}
		
		// キュー抽出キーを格納
		String[] queKey = {
				QUE_KEY_190,
				QUE_KEY_140
		};
		// キュー名称をすべて抽出し格納
		for(int i = 0; i < queKey.length; i++)
		{
			// 検索用キーマップ初期化
			whereMap = new JBSbatCommonDBInterface();
			// キー準備
			String key = queKey[i];
			whereMap.setValue(JBSbatCR_T_QUE_BOX.QUE_BOX_NO, key);
			result = this.db_CR_T_QUE_BOX.selectByPrimaryKeys(whereMap);
			if(result != null)
			{
				strArrayList.put(key, result.getString(JBSbatCR_T_QUE_BOX.QUE_BOX_NM));
			}
			else
			{
				// キュー名称取得できない
				throw new JBSbatBusinessException("EKKB0060TE", new String[]{"キュー名称ＫＥＹ：" + key});
			}
		}
		
		// 処理日付時間を取得（yyyy/MM/DD hh:mm:ss）
		mShori_date = this.getSysdateOrgnFormat();
		
// 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
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 入力のサービス契約内訳がeo光電話同時申込番ポ工事か判定
		this.pre_mskm_flg = this.checkPreMskmFlg(inMap);
		if(pre_mskm_flg == null)
		{
			// 判定不能データをスキップ
//			super.commonItem.setErrFlg(true);
//			super.logPrint.printBusinessErrorLog("EKKB0010CW", new String[]{
//					"申込種別コード判定失敗(サービス契約内訳番号:" + inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO) + ")" });
			return null;
		}
		
		// 保留フラグ抽出（nullの場合はフラグが立ってないのと同意）
		this.mHoryuFlg = inMap.getString(JBSbatTU_T_BMP_KOJI.BMPKJ_KIBO_YMD_PDING_FLG);
		
//ANK-4494-00-00 MOD START
//		// 申込事業者名を取得
//		if((this.mMskm_nm = this.getMSKM_NM(inMap)) == null)
		// 通信事業者名を取得
		if((this.mTsjgs_nm = this.getTsjgs_nm(inMap)) == null)
//ANK-4494-00-00 MOD END
		{
//			// 申込事業所名が取得できない
//			super.commonItem.setErrFlg(true);
//			super.logPrint.printBusinessErrorLog("EKKB0230TW", new String[] {
//					"申込事業所名(番ポ申込事業所番号:" + inMap.getString(JBSbatTU_T_BMP_KOJI.BMP_MSKM_JIGSHO_NO) + ")"});
//#86313 MOD STARAT
//			return null;
			this.mTsjgs_nm = JKKStrConst.KARA;
//#86313 MOD END
		}
		
		// ファイル出力オブジェクト作成
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		// 番ポ工事当日通知ファイルオブジェクト作成
		JBSbatServiceInterfaceMap outFile016 = new JBSbatServiceInterfaceMap();
		
		// オブジェクトへ出力項目をセット
		this.setParamToFileObj(inMap, outFile016);
		
		// ファイル出力
		outFile016.setOutFlg(true);
		outputItem.addOutMapList(outFile016);
		
		// カウントをインクリメント
		count++;
		
		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CR_M_CTGR.close();
		db_CR_T_QUE_BOX.close();
		db_KK_T_SVC_KEI_UCWK.close();
		db_KK_T_MSKM.close();
//ANK-4494-00-00 MOD START
//		db_TU_M_MSKM_JIGSHO.close();
		db_TU_M_TUSHIN_JGYOSHA.close();
//ANK-4494-00-00 MOD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		// ▼▼▼ IT1-2012-0002442 Add Start ▼▼▼
		// 件数ファイルを作成し、処理件数を出力
		JBSbatOutputFileUtil cntFile = new JBSbatOutputFileUtil(this.file_paths[1]);
		cntFile.setEncode(JKKBatConst.SJIS);
		cntFile.setLine(CRLF);
		cntFile.createWriter();
		StringBuffer sb = new StringBuffer();
		sb.append(SCOPE);
		sb.append(String.valueOf(this.count));
		sb.append(SCOPE);
		cntFile.write(sb.toString());
		cntFile.close();
		// ▲▲▲ IT1-2012-0002442 Add End   ▲▲▲

	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
//ANK-4494-00-00 MOD START
//	// ST3-2013-0000665 2013/03/13 ADD START
//	/**
//	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.引数で条件マップを作ります。<br>
//	 *
//	 * 2.DBアクセスを実行します。<br>
//	 * 
//	 * 3.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
//	 *		 	MSKM_JIGSHO_NO
//	 * </pre>
//	 * <p>
//	 * @param whereParam 条件項目の値。
//	 * @return JBSbatCommonDBInterface 検索の結果。
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private JBSbatCommonDBInterface executeTU_M_MSKM_JIGSHO_PKSELECT(Object[] whereParam) throws Exception
//	{
//		// 条件のマップを作成します
//		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
//		whereMap.setValue("MSKM_JIGSHO_NO", whereParam[0]);
//
//		// DBアクセスを実行します
//		return db_TU_M_MSKM_JIGSHO.selectByPrimaryKeys(whereMap);
//	}
//	// ST3-2013-0000665 2013/03/13 ADD END
	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	TSJGS_CD
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeTU_M_TUSHIN_JGYOSHA_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("TSJGS_CD", whereParam[0]);

		// DBアクセスを実行します
		return db_TU_M_TUSHIN_JGYOSHA.selectByPrimaryKeys(whereMap);
	}
//ANK-4494-00-00 MOD END
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 入力のサービス契約内訳がeo光電話同時申込番ポ工事か判定
	 * 
	 * @param inMap 入力レコード
	 * @return "0" 光電話新設同時番ポ申込  "1" 開通後追加番ポ申込  null 判定不能スキップ
	 * @throws Exception 各種エラー
	 */
	private String checkPreMskmFlg(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// サービス契約内訳を抽出
		String svcKeiUcwkNo = inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO);
		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();
		param.setValue(svcKeiUcwkNo);
		param.setValue(super.opeDate);
		// サービス契約内訳が作られた起因になる申込明細番号から申込種別を取得する
		this.db_KK_T_MSKM.selectBySqlDefine(param, KK_T_MSKM_KK_SELECT_012);
		JBSbatCommonDBInterface result = this.db_KK_T_MSKM.selectNext();
		if(result != null)
		{
			String mskm_cd = result.getString(JBSbatKK_T_MSKM.MSKM_SBT_CD);
			if(NEW_MSKM.equals(mskm_cd) || ADD_SVC.equals(mskm_cd) || ADD_NO.equals(mskm_cd) || JUHEN_NO.equals(mskm_cd))
			{
				// 光電話新設と番ポ同時申込
				return DOJI;
			}
			else if(CHEN_NO.equals(mskm_cd))
			{
				// 光電話開通後追加申込
				return TUIKA;
			}
		}
		// 判定不能データ
		return null;
	}

	/**
	 * ファイルオブジェクトへ出力項目をセットする
	 * 
	 * @param inMap 入力レコード
	 * @param outFile016 出力ファイル
	 * @throws Exception 各種エラー
	 */
	private void setParamToFileObj(JBSbatServiceInterfaceMap inMap,
			JBSbatServiceInterfaceMap outFile016) throws Exception
	{
		outFile016.set(JBSbatCRIFE016.CUST_TYPE, KKYAKU_TPE);													// 顧客タイプ
		outFile016.set(JBSbatCRIFE016.CUST_ID, inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_NO));			// お客様ID（サービス契約番号）
		// 顧客氏名
		// 電話番号
		// 電話番号２
		// 郵便番号
		// 住所１
		// 住所２
		// 住所３
		// 性別
		// 生年月日
		outFile016.setString(JBSbatCRIFE016.JOTAI, this.getJOTAI());											// 状態
		outFile016.setString(JBSbatCRIFE016.STAT, STAT_SHORI);													// ステータス
		outFile016.setString(JBSbatCRIFE016.SAKSEI_DATE, mShori_date);											// 作成日時
// SG1-2013-0000041 2013.05.16 MOD START
		outFile016.setString(JBSbatCRIFE016.UKSHA, this.taioRrkAddUser);										// 受付者
		outFile016.setString(JBSbatCRIFE016.TNTSHA, this.taioRrkAddUser);										// 担当者
// SG1-2013-0000041 2013.05.16 MOD END
		outFile016.setString(JBSbatCRIFE016.QUE_NM, this.getQUE_NM(inMap));										// キュー名
		outFile016.setString(JBSbatCRIFE016.UK_SBT, OTHER_SYS);													// 受付種別
		outFile016.setString(JBSbatCRIFE016.TITLE, this.getTITLE(inMap));										// タイトル
		outFile016.setString(JBSbatCRIFE016.CTGR_1, strArrayList.get(CATE_KEY_EOH_TEL));						// カテゴリ１
		outFile016.setString(JBSbatCRIFE016.CTGR_2, strArrayList.get(CATE_KEY_NEW_UKE));						// カテゴリ２
		outFile016.setString(JBSbatCRIFE016.CTGR_3, this.getCTGR_3());											// カテゴリ３
		outFile016.setString(JBSbatCRIFE016.CTGR_4, this.getCTGR_4());											// カテゴリ４
		// カテゴリ５
		// カテゴリ６
		// カテゴリ７
		// カテゴリ８
		// カテゴリ９
		// カテゴリ１０
		// カテゴリ１１
		outFile016.setString(JBSbatCRIFE016.TOIAWASE_RIREKI, this.getTOIAWASE_RIREKI(inMap));							// 問合せ履歴
		// 問い合わせ客ID
		// eoID
		// 申込書番号
		// コールバック日時
		// コールバック時間指定タイプ
		
	}

	/**
	 * カテゴリー４の文字列返却
	 * 
	 * @return カテゴリー４文字列
	 */
	private String getCTGR_4()
	{
		if(FLG_ON.equals(this.mHoryuFlg))
		{
			// 工事日到来
			return this.strArrayList.get(CATE_KEY_KOJI_TOU);
		}
		else if(TUIKA.equals(this.pre_mskm_flg))
		{
			// 番ポ切替え待ち
			return this.strArrayList.get(CATE_KEY_BMP_CHEN);
		}
		else
		{
			// 通停解除待ち
			return this.strArrayList.get(CATE_KEY_TU_TEI);
		}
	}

	/**
	 * カテゴリー３の文字列返却
	 * 
	 * @return カテゴリー３文字列
	 */
	private String getCTGR_3()
	{
		if(FLG_ON.equals(this.mHoryuFlg))
		{
			// 番ポ保留
			return this.strArrayList.get(CATE_KEY_BMP_HORU);
		}
		else
		{
			// 番ポ工事当日連絡
			return this.strArrayList.get(CATE_KEY_KOJI_TOD);
		}
	}

	/**
	 * 問合せ履歴を返す
	 * 
	 * @param inMap 入力レコード
	 * @return 問合せ履歴文字列
	 * @throws Exception 各種エラー
	 */
	private Object getTOIAWASE_RIREKI(JBSbatServiceInterfaceMap inMap) throws Exception
	{
//ANK-4494-00-00 MOD START
//		final String str_keishou_kojibi = "様の番ポ工事日です。";
//		final String str_horyu = "保留しています。";
//		final String str_tel = "連絡先ＴＥＬ";
//		final String str_fax = "連絡先ＦＡＸ";
//		
//		// 番ポ工事確定年月日時
//		String koji_kakutei_ymd = inMap.getString(JBSbatTU_T_BMP_KOJI.BMP_KOJI_FIX_YMDH);
//		// お客様名
//		String user_nm = inMap.getString(JBSbatCK_T_CUST.CUST_NM);
//		// 申込事業所名
//		String mskmso_nm = this.mMskm_nm;
//		// 連絡先ＴＥＬ
//		String ren_tel = inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_TELNO);
//		if(ren_tel == null)
//		{
//			ren_tel = " ";
//		}
//		// 連絡先ＦＡＸ
//		String fax_tel = inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_FAX_NO);
//		if(fax_tel == null)
//		{
//			fax_tel = " ";
//		}
//		
//		// 前半文字列成形
//		String str_mae = koji_kakutei_ymd + user_nm + str_keishou_kojibi;
//		// 後半文字列成形
//		String str_ato = mskmso_nm + str_tel + ren_tel + str_fax + fax_tel;
//
//		if(FLG_ON.equals(this.mHoryuFlg))
//		{
//			// 保留フラグが保留中
//			return str_mae + str_horyu + str_ato;
//		}
//		else
//		{
//			// 保留以外
//			return str_mae + str_ato;
//		}
		final String str_keishou = "様の" + CRLF + "番ポ工事日です。";
		final String str_horyu = "保留しています。";
		
// ANK-4494-03-00 MOD START
//		// 番ポ工事希望年月日時(YYYYMMDD)
//		String bmp_koji_kibo_ymdh = inMap.getString(JBSbatTU_T_BMP_KOJI.BMP_KOJI_KIBO_YMDH);
//		String bmp_koji_kibo_ymd = null;
//		// 桁数チェック
//		if(!JKKStringUtil.isNullBlank(bmp_koji_kibo_ymdh) && bmp_koji_kibo_ymdh.length() >= 8)
//		{
//			bmp_koji_kibo_ymd = bmp_koji_kibo_ymdh.substring(0, 8);
//		}
		// 番ポ工事確定年月日時(YYYYMMDD)
		String koji_kakutei_ymdh = inMap.getString(JBSbatTU_T_BMP_KOJI.BMP_KOJI_FIX_YMDH);
		String koji_kakutei_ymd = null;
		// 桁数チェック
		if(!JKKStringUtil.isNullBlank(koji_kakutei_ymdh) && koji_kakutei_ymdh.length() >= 8)
		{
			koji_kakutei_ymd = koji_kakutei_ymdh.substring(0, 8);
		}
// ANK-4494-03-00 MOD END
		// 工事実施方法
		String koji_jssi_way = JKKBatCommon.getCdDivName(super.commonItem, CD_SBT_CD_KOJI_JSSI_WAY, inMap.getString(JBSbatTU_T_BMP_KOJI.KOJI_JSSI_WAY));
		// 想定切替時間帯
		String sotei_switch_timez_cd = inMap.getString(JBSbatTU_T_BMP_KOJI.SOTEI_SWITCH_TIMEZ);
// #86313 MOD START
//		String sotei_switch_timez = null;
		String sotei_switch_timez = JKKStrConst.KARA;
// #86313 MOD END
		
		// 工事実施方法 = "1"(無連絡工事)の場合
		if("1".equals(inMap.getString(JBSbatTU_T_BMP_KOJI.KOJI_JSSI_WAY)))
		{
			sotei_switch_timez = JKKBatCommon.getCdDivName(super.commonItem, CD_SBT_CD_SOTEI_SWITCH_TIMEZ_NON, sotei_switch_timez_cd);
		}
		// 工事実施方法 = "2"(個別連絡工事)の場合
		else if("2".equals(inMap.getString(JBSbatTU_T_BMP_KOJI.KOJI_JSSI_WAY)))
		{
			sotei_switch_timez = JKKBatCommon.getCdDivName(super.commonItem, CD_SBT_CD_SOTEI_SWITCH_TIMEZ_KBT, sotei_switch_timez_cd);
		}

		// NTT契約者名
		String ntt_keisha_nm = inMap.getString(JBSbatTU_T_BMP_KOJI.NTT_KEISHA_NM);
		// 通信事業者名
		String tsjgs_nm = this.mTsjgs_nm;

		// 前半文字列成形
// ANK-4494-03-00 MOD START
//		String str_mae = bmp_koji_kibo_ymd + "_" + sotei_switch_timez + "(" + koji_jssi_way + ")"
//						+ CRLF + ntt_keisha_nm + str_keishou;
		String str_mae = koji_kakutei_ymd + "_" + sotei_switch_timez + "(" + koji_jssi_way + ")"
						+ CRLF + ntt_keisha_nm + str_keishou;
// ANK-4494-03-00 MOD END
		// 後半文字列成形
		String str_ato = CRLF + tsjgs_nm;

		if(FLG_ON.equals(this.mHoryuFlg))
		{
			// 保留フラグが保留中
			return str_mae + str_horyu + str_ato;
		}
		else
		{
			// 保留以外
			return str_mae + str_ato;
		}
//ANK-4494-00-00 MOD END
	}
	
	/**
	 * タイトルを生成して返す
	 * 
	 * @param inMap 入力
	 * @return 申込受付事業者名
	 * @throws Exception 各種エラー
	 */
	private String getTITLE(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		final String head_1 = "番ポ保留工事日到来";
		final String head_2 = "番ポ工事開始通知";
		final String under_sep = "_";
		
//ANK-4494-00-00 MOD START
//		// 番ポ工事確定年月日時
//		String koji_kakutei_ymd = inMap.getString(JBSbatTU_T_BMP_KOJI.BMP_KOJI_FIX_YMDH);
//		// 後半文字列整形 _申込事業所名_工事確定年月日時
//		final String titleStr = under_sep + this.mMskm_nm + under_sep + koji_kakutei_ymd;
//		
//		if(FLG_ON.equals(this.mHoryuFlg))
//		{
//			// 保留フラグが保留中
//			return head_1 + titleStr;
//		}
//		else
//		{
//			// 保留以外
//			return head_2 + titleStr;
//		}
// ANK-4494-03-00 MOD START
//		// 番ポ工事希望年月日時(YYYYMMDD)
//		String bmp_koji_kibo_ymdh = inMap.getString(JBSbatTU_T_BMP_KOJI.BMP_KOJI_KIBO_YMDH);
//		String bmp_koji_kibo_ymd = null;
//		// 桁数チェック
//		if(!JKKStringUtil.isNullBlank(bmp_koji_kibo_ymdh) && bmp_koji_kibo_ymdh.length() >= 8)
//		{
//			bmp_koji_kibo_ymd = bmp_koji_kibo_ymdh.substring(0, 8);
//		}
		// 番ポ工事確定年月日時(YYYYMMDD)
		String koji_kakutei_ymdh = inMap.getString(JBSbatTU_T_BMP_KOJI.BMP_KOJI_FIX_YMDH);
		String koji_kakutei_ymd = null;
		// 桁数チェック
		if(!JKKStringUtil.isNullBlank(koji_kakutei_ymdh) && koji_kakutei_ymdh.length() >= 8)
		{
			koji_kakutei_ymd = koji_kakutei_ymdh.substring(0, 8);
		}
// ANK-4494-03-00 MOD END
		// 工事実施方法
		String koji_jssi_way = JKKBatCommon.getCdDivName(super.commonItem, CD_SBT_CD_KOJI_JSSI_WAY, inMap.getString(JBSbatTU_T_BMP_KOJI.KOJI_JSSI_WAY));
		// 想定切替時間帯
		String sotei_switch_timez_cd = inMap.getString(JBSbatTU_T_BMP_KOJI.SOTEI_SWITCH_TIMEZ);
// #86313 MOD START
//		String sotei_switch_timez = null;
		String sotei_switch_timez = JKKStrConst.KARA;
// #86313 MOD END
		
		// 工事実施方法 = "1"(無連絡工事)の場合
		if("1".equals(inMap.getString(JBSbatTU_T_BMP_KOJI.KOJI_JSSI_WAY)))
		{
			sotei_switch_timez = JKKBatCommon.getCdDivName(super.commonItem, CD_SBT_CD_SOTEI_SWITCH_TIMEZ_NON, sotei_switch_timez_cd);
		}
		// 工事実施方法 = "2"(個別連絡工事)の場合
		else if("2".equals(inMap.getString(JBSbatTU_T_BMP_KOJI.KOJI_JSSI_WAY)))
		{
			sotei_switch_timez = JKKBatCommon.getCdDivName(super.commonItem, CD_SBT_CD_SOTEI_SWITCH_TIMEZ_KBT, sotei_switch_timez_cd);
		}

		// 後半文字列整形 _申込事業所名_工事確定年月日時
// ANK-4494-03-00 MOD START
//		final String titleStr = under_sep + this.mTsjgs_nm + under_sep + bmp_koji_kibo_ymd + under_sep
//								+ sotei_switch_timez + "(" + koji_jssi_way + ")";
		final String titleStr = under_sep + this.mTsjgs_nm + under_sep + koji_kakutei_ymd + under_sep
								+ sotei_switch_timez + "(" + koji_jssi_way + ")";
// ANK-4494-03-00 MOD END
		
		if(FLG_ON.equals(this.mHoryuFlg))
		{
			// 保留フラグが保留中
			return head_1 + titleStr;
		}
		else
		{
			// 保留以外
			return head_2 + titleStr;
		}
//ANK-4494-00-00 MOD END
	}

//ANK-4494-00-00 MOD START
//	/**
//	 * 申込事業所データを抽出して事業所名を返す
//	 * 
//	 * @param inMap 入力レコード
//	 * @return 申込事業所名
//	 * @throws Exception 
//	 */
//	private String getMSKM_NM(JBSbatServiceInterfaceMap inMap) throws Exception
//	{
//		// ST3-2013-0000665 2013/03/13 ADD START
//		// 入力.番ポ申込事業所番号
//		String bmpMskmJigshoNo = inMap.getString(JBSbatTU_T_BMP_KOJI.BMP_MSKM_JIGSHO_NO);
//		// 番ポ申込事業所番号から申込事業所名を取得
//		Object[] paramMap = {
//				bmpMskmJigshoNo
//		};
//		JBSbatCommonDBInterface result = this.executeTU_M_MSKM_JIGSHO_PKSELECT(paramMap);
//		if (result == null)
//		{
//			// 申込事業所コードがとれない
//			return null;
//		}
//		// ST3-2013-0000665 2013/03/13 ADD END
//
//		// 申込事業所名返却
//		return result.getString(JBSbatTU_M_MSKM_JIGSHO.MSKM_JIGSHONM);
//	}
	/**
	 * 通信事業者データを抽出して通信事業者名を返す
	 * 
	 * @param inMap 入力レコード
	 * @return 通信事業者名
	 * @throws Exception 
	 */
	private String getTsjgs_nm(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 入力.移転元通信事業者コード
		String itnm_tsjgs_cd = inMap.getString(JBSbatTU_T_BMP_KOJI.ITNM_TSJGS_CD);
		if (JKKStringUtil.isNullBlank(itnm_tsjgs_cd))
		{
			// 通信事業者コードがとれない
			return null;
		}
		// 移転元通信事業者コードから通信事業者名を取得
		Object[] paramMap = {
				itnm_tsjgs_cd
		};
		JBSbatCommonDBInterface result = this.executeTU_M_TUSHIN_JGYOSHA_PKSELECT(paramMap);
		if (result == null)
		{
			// 通信事業者コードがとれない
			return null;
		}

		// 通信事業者名返却
		return result.getString(JBSbatTU_M_TUSHIN_JGYOSHA.TSJGS_NM);
	}
//ANK-4494-00-00 MOD END

	/**
	 * キュー名を取得する
	 * 
	 * @param inMap 入力レコード
	 * @return キュー名
	 * @throws Exception 各種エラー
	 */
	private String getQUE_NM(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		if(FLG_ON.equals(this.mHoryuFlg))
		{
			// 保留フラグが保留中
			return strArrayList.get(QUE_KEY_190);
		}
		else if(TUIKA.equals(pre_mskm_flg))
		{
			// 開通後追加番ポ申込
			return strArrayList.get(QUE_KEY_140);
		}
		else
		{
			// 上記以外
			return null;
		}
	}

	/**
	 * 状態を取得
	 * 
	 * @return 状態文字列
	 */
	private String getJOTAI()
	{
		// ■■■ 故障対応 START ■■■
		if(DOJI.equals(pre_mskm_flg))
		{
			// 新規同時番ポ申込 クローズ
			return JOUTAI_CLO;
		}
		else
		{
			// 上記以外 エスカレーション
			return JOUTAI_ESC;
		}
		// ■■■ 故障対応   END ■■■
	}

	/**
	 * システム日付を取得して成形して返す
	 * 
	 * @return yyyy/MM/dd hh:mm:ss 形式のシステム日付
	 */
	private String getSysdateOrgnFormat()
	{
		final String sepaSula = "/";
		final String space_ = " ";
		final String coron_ = ":";
		
		String date = JKKBatCommon.getSysDateTime();
		StringBuffer buff = new StringBuffer();
		buff.append(date.substring(0, 4));
		buff.append(sepaSula);
		buff.append(date.substring(4, 6));
		buff.append(sepaSula);
		buff.append(date.substring(6, 8));
		buff.append(space_);
		buff.append(date.substring(8, 10));
		buff.append(coron_);
		buff.append(date.substring(10, 12));
		buff.append(coron_);
		buff.append(date.substring(12, 14));
		
		return buff.toString();
	}
}
