/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACEOHKoIfReTonyuJdg
*	ソースファイル名	：JBSbatACEOHKoIfReTonyuJdg.java
*	作成者				：富士通　
*	作成日				：2011年08月01日
*＜機能概要＞
*　ｅｏ光電話利用呼情報再投入判定部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/01   富士通		新規作成
*	v3.01		2012/09/12   FJ）岡田	【ST2-2012-0001673】遅延呼対応
*	v9.00		2014/04/24   FJ) 江森	【OM-2014-0001161】再投入判定条件を修正。
*********************************************************************/
package eo.business.service;

import eo.business.common.JACbatSchdlUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatMatchServiceInterface;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatACIFM022;
import eo.business.util.file.JBSbatACIFM157;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
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.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatACEOHKoIfReTonyuJdg extends JBSbatBusinessService implements JBSbatMatchServiceInterface
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** SQL定義キー(AC_SELECT_001)*/
	private static final String ZM_M_WORK_PARAM_KNRI_AC_SELECT_001 = "AC_SELECT_001";

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;

	/** キーマッチ処理フラグ*/
	private boolean matchProcFlg;

	/** マスタファイル処理フラグ*/
	private boolean mastProcFlg;

	/** トランファイル処理フラグ*/
	private boolean tranProcFlg;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** [業務パラメータ]再投入対象月数 */
	private int wkParamReTonyu = 0;
	
	/** 工事完了報告遅延区分 */
	private String KOJI_DLY_REPORT_FIN_DIV = "1";
	
	/** 工事完了報告遅延区分（課金不可） */
	private String KOJI_DLY_REPORT_FIN_DIV_F = "2";

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

		// 再投入対象月数の取得
		executeZM_M_WORK_PARAM_KNRI_AC_SELECT_001(new Object[] {JACStrConst.WKPARA_AC_RETONYU_TG_MONCNT, 
																super.opeDate, super.opeDate});
		JBSbatCommonDBInterface record = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		if (record == null)
		{
			// 業務パラメータ管理テーブルから取得できない場合はエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE,
					new String[] { JBSbatZM_M_WORK_PARAM_KNRI.TABLE_NAME });
		}
		wkParamReTonyu = Integer.parseInt(record.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE));

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param mastMap　入力電文
	 * @param tranMap　入力電文
	 * @param outputInItem  入力情報
	 * @return JBSbatOutputItem 出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap, JBSbatOutputItem outputInItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		if (mastMap != null)
		{
			String errCd = mastMap.getString(JBSbatACIFM157.ERR_CD);

			// エラーコードを判定する
			if (JACStrConst.KARA_MOJI.equals(errCd) || 
					JACStrConst.WKPARA_AC_MSG_BMKJ_FIN_MIAD.equals(errCd) ||
						JACStrConst.WKPARA_AC_MSG_STKU_TWSBTERR.equals(errCd) ||
						JACStrConst.WKPARA_AC_MSG_TWSTA_FUTRERR.equals(errCd) ||
						JACStrConst.WKPARA_AC_MSG_BMKJ_CHRG_F.equals(errCd) ||
						JACStrConst.WKPARA_AC_MSG_STKU_CHRG_F.equals(errCd) ||
						JACStrConst.WKPARA_AC_MSG_TWSTA_CHRG_F.equals(errCd))
			{
				// エラーコードが「工事報告完了遅延」「番ポ工事完了日未登録「通話種別取得エラー」「工事完了報告遅延（課金不可）」
				// 「番ポ工事完了日未登録（課金不可）」「通話種別（課金不可）」「通話開始年月未来日エラー（課金不可）」の場合
				if (tranMap != null)
				{
					// 再投入判定を行う
					String mKakinsTelNo = mastMap.getString(JBSbatACIFM157.KAKINS_TELNO);
					String mPcallStaYmd = mastMap.getString(JBSbatACIFM157.PCALL_STAYMD);
					String mPcallStaHms = mastMap.getString(JBSbatACIFM157.PCALL_STA_HMS);
					String tKakinsTelNo = tranMap.getString(JBSbatACIFM022.KAKINS_TELNO);
					String tPcallStaYmd = tranMap.getString(JBSbatACIFM022.PCALL_STAYMD);
					String tPcallStaHms = tranMap.getString(JBSbatACIFM022.PCALL_STA_HMS);
					
					StringBuffer mastKey = new StringBuffer();
					mastKey.append(mKakinsTelNo);
					mastKey.append(mPcallStaYmd);
					mastKey.append(mPcallStaHms);
					
					StringBuffer tranKey = new StringBuffer();
					tranKey.append(tKakinsTelNo);
					tranKey.append(tPcallStaYmd);
					tranKey.append(tPcallStaHms);
					
					if (mastKey.toString().compareTo(tranKey.toString()) == 0)
					{
						// 入力Ｍ ＝ 入力Ｔ
						setMatchProcFlg(true);
						setMastProcFlg(true);

						// 一致したら日付チェック
						String trkmUnyoDay = tranMap.getString(JBSbatACIFM022.TRKM_UNYO_DAY);
						String chkLastYm = JCCBatCommon.addMonth(trkmUnyoDay, wkParamReTonyu).substring(0, 6);
						String chkLastDay = JCCBatCommon.getEndOfMonth(chkLastYm);
						String KojiDiv = mastMap.getString(JBSbatACIFM157.KOJI_DLY_REPORT_FIN_DIV);
						
						// 取込運用日の年月を取得
						String trkmUnyoYm = trkmUnyoDay.substring(0, 6);
						String evebtYmd = null;
						
						// 取込運用日の料金計算日（利用開始終了基準）を取得
						JACbatSchdlUtil schdlUtil = new JACbatSchdlUtil(commonItem);
						try
						{
							// 料金計算日
							evebtYmd 	= schdlUtil.getUseStrEnd(trkmUnyoYm, JACStrConst.EVENT_CD_USE_STAYMD, JACStrConst.EVENT_CD_PRC_CALC_DAY)[1];
						}
						finally
						{
							schdlUtil.close();
						}
						
						if (((JACStrConst.KARA_MOJI.equals(errCd) && KojiDiv.equals(KOJI_DLY_REPORT_FIN_DIV))
							|| JACStrConst.WKPARA_AC_MSG_BMKJ_FIN_MIAD.equals(errCd)) 
							&& super.opeDate.compareTo(chkLastYm + chkLastDay) >= 0)
						{
							// エラーコードが「工事報告完了遅延」「番ポ工事完了日未登録」かつ バッチ運用日 ≧ 取込運用日の翌月末日 の場合
							outputInItem.addOutMapList(setFixDataFileMap(mastMap));
						}
						else if((JACStrConst.WKPARA_AC_MSG_STKU_TWSBTERR.equals(errCd)
								|| JACStrConst.WKPARA_AC_MSG_TWSTA_FUTRERR.equals(errCd)
								|| (JACStrConst.KARA_MOJI.equals(errCd) && KojiDiv.equals(KOJI_DLY_REPORT_FIN_DIV_F))
								|| JACStrConst.WKPARA_AC_MSG_BMKJ_CHRG_F.equals(errCd)
								|| JACStrConst.WKPARA_AC_MSG_STKU_CHRG_F.equals(errCd)
								|| JACStrConst.WKPARA_AC_MSG_TWSTA_CHRG_F.equals(errCd))
								&& super.opeDate.compareTo(evebtYmd) >= 0)
						{
							// エラーコードが「通話種別」「通話開始年月未来日」「工事完了報告遅延（課金不可）」「番ポ工事完了日未登録（課金不可）」
							// 「通話種別（課金不可）」「通話開始年月未来日エラー（課金不可）」 かつ
							// バッチ運用日 ≧ 取込運用日の料金計算日（利用開始終了基準） の場合
							outputInItem.addOutMapList(setFixDataFileMap(mastMap));
						}
						else
						{
							// その他 の場合
							outputInItem.addOutMapList_2(setReTonyuDataFileMap(mastMap, trkmUnyoDay));
						}
					}
					else if (mastKey.toString().compareTo(tranKey.toString()) < 0)
					{
						// 入力Ｍ ＜ 入力Ｔ
						setMastProcFlg(true);
						
						// 一致しなかったら再投入データ
						outputInItem.addOutMapList_2(setReTonyuDataFileMap(mastMap, super.opeDate));
					}
					else
					{
						// 入力Ｍ ＞ 入力Ｔ
						setTranProcFlg(true);
					}
				}
				else
				{
					// ｅｏ光電話利用呼情報エラー情報（運用日付き）（前回）ファイルが読み込まれていない場合
					setMastProcFlg(true);
					outputInItem.addOutMapList_2(setReTonyuDataFileMap(mastMap, super.opeDate));
				}
			}
			else
			{
				// ｅｏ光電話利用呼情報エラー情報（確定）ファイルへ出力
				setMastProcFlg(true);
				outputInItem.addOutMapList(setFixDataFileMap(mastMap));
			}
		}
		else
		{
			setTranProcFlg(true);
		}

		return outputInItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_WORK_PARAM_KNRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * @return mastProcFlg を戻します。
	 */
	public boolean isMastProcFlg()
	{
		return mastProcFlg;
	}

	/**
	 * @return matchProcFlg を戻します。
	 */
	public boolean isMatchProcFlg()
	{
		return matchProcFlg;
	}

	/**
	 * @return tranProcFlg を戻します。
	 */
	public boolean isTranProcFlg()
	{
		return tranProcFlg;
	}

	/**
	 * @param mast_ProcFlg 設定する mastProcFlg。
	 */
	public void setMastProcFlg(boolean mast_ProcFlg)
	{
		this.mastProcFlg = mast_ProcFlg;
	}

	/**
	 * @param match_ProcFlg 設定する matchProcFlg。
	 */
	public void setMatchProcFlg(boolean match_ProcFlg)
	{
		this.matchProcFlg = match_ProcFlg;
	}

	/**
	 * @param tran_ProcFlg 設定する tranProcFlg。
	 */
	public void setTranProcFlg(boolean tran_ProcFlg)
	{
		this.tranProcFlg = tran_ProcFlg;
	}

	/**
	 * SQLKEY(AC_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 executeZM_M_WORK_PARAM_KNRI_AC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_AC_SELECT_001);
	}

	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * ｅｏ光電話利用呼情報エラー情報（確定）の出力項目を設定する
	 * @param inMap		入力電文
	 * @return	JBSbatServiceInterfaceMap	出力電文
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap setFixDataFileMap(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		JBSbatServiceInterfaceMap retMap = new JBSbatServiceInterfaceMap();

		// 課金電話番号
		retMap.set(JBSbatACIFM157.KAKINS_TELNO, inMap.get(JBSbatACIFM157.KAKINS_TELNO));

		// 発信元電話番号
		retMap.set(JBSbatACIFM157.HASHIN_TELNO, inMap.get(JBSbatACIFM157.HASHIN_TELNO));

		// 着信先電話番号
		retMap.set(JBSbatACIFM157.INCOMING_TELNO, inMap.get(JBSbatACIFM157.INCOMING_TELNO));

		// 通話開始日
		retMap.set(JBSbatACIFM157.PCALL_STAYMD, inMap.get(JBSbatACIFM157.PCALL_STAYMD));

		// 通話開始時刻
		retMap.set(JBSbatACIFM157.PCALL_STA_HMS, inMap.get(JBSbatACIFM157.PCALL_STA_HMS));

		// 通話終了日
		retMap.set(JBSbatACIFM157.PCALL_ENDYMD, inMap.get(JBSbatACIFM157.PCALL_ENDYMD));

		// 通話終了時刻
		retMap.set(JBSbatACIFM157.PCALL_END_HMS, inMap.get(JBSbatACIFM157.PCALL_END_HMS));

		// 通話秒数
		retMap.set(JBSbatACIFM157.PCALL_SEC_CNT, addDecimalPoint(inMap.getString(JBSbatACIFM157.PCALL_SEC_CNT), JACStrConst.PCALL_SEC_CNT_DEC_LENGTH));

		// 通話度数
		retMap.set(JBSbatACIFM157.PCALL_DOSU, inMap.get(JBSbatACIFM157.PCALL_DOSU));

		// 通話単価
		retMap.set(JBSbatACIFM157.PCALL_TANKA, addDecimalPoint(inMap.getString(JBSbatACIFM157.PCALL_TANKA), JACStrConst.PCALL_TANKA_DEC_LENGTH));

		// 通話料金
		retMap.set(JBSbatACIFM157.PCALL_PRC, addDecimalPoint(inMap.getString(JBSbatACIFM157.PCALL_PRC), JACStrConst.PCALL_PRC_DEC_LENGTH));

		// 通話種別
		retMap.set(JBSbatACIFM157.PCALL_SBT, inMap.get(JBSbatACIFM157.PCALL_SBT));

		// 通話サービス識別コード
		retMap.set(JBSbatACIFM157.TUWA_SVC_SKBT_CD, inMap.get(JBSbatACIFM157.TUWA_SVC_SKBT_CD));

		// 切断理由−ＳＩＰ
		retMap.set(JBSbatACIFM157.CUT_RSN_DIV_SIP, inMap.get(JBSbatACIFM157.CUT_RSN_DIV_SIP));

		// 切断理由−ＩＳＵＰ
		retMap.set(JBSbatACIFM157.CUT_RSN_DIV_ISUP, inMap.get(JBSbatACIFM157.CUT_RSN_DIV_ISUP));

		// 切断理由区分
		retMap.set(JBSbatACIFM157.CUT_RSN_DIV, inMap.get(JBSbatACIFM157.CUT_RSN_DIV));

		// 切断詳細情報−大項目
		retMap.set(JBSbatACIFM157.CUT_DTAIL_INFO_DKMK_IDX_NO, inMap.get(JBSbatACIFM157.CUT_DTAIL_INFO_DKMK_IDX_NO));

		// 切断詳細情報−中項目
		retMap.set(JBSbatACIFM157.CUT_DTAIL_INFO_CKMK_IDX_NO, inMap.get(JBSbatACIFM157.CUT_DTAIL_INFO_CKMK_IDX_NO));

		// 切断詳細情報−発着種別
		retMap.set(JBSbatACIFM157.CUT_DTAIL_INFO_HTCK_SBT_CD, inMap.get(JBSbatACIFM157.CUT_DTAIL_INFO_HTCK_SBT_CD));

		// 課金表示
		retMap.set(JBSbatACIFM157.CHRG_DSP_CD, inMap.get(JBSbatACIFM157.CHRG_DSP_CD));

		// 緊急通報呼フラグ
		retMap.set(JBSbatACIFM157.EMG_KO_FLG, inMap.get(JBSbatACIFM157.EMG_KO_FLG));

		// ＣＨＧ信号受信回数
		retMap.set(JBSbatACIFM157.CHG_SIGNAL_RCV_CNT, inMap.get(JBSbatACIFM157.CHG_SIGNAL_RCV_CNT));

		// 転送時発信元番号
		retMap.set(JBSbatACIFM157.TENSO_JI_HASHIN_TELNO, inMap.get(JBSbatACIFM157.TENSO_JI_HASHIN_TELNO));

		// 国名
		retMap.set(JBSbatACIFM157.COUNTRY_NM, inMap.get(JBSbatACIFM157.COUNTRY_NM));

		// ０５０オプション電話番号
		retMap.set(JBSbatACIFM157.N_050_OP_TELNO, inMap.get(JBSbatACIFM157.N_050_OP_TELNO));

		// エラーコード
		retMap.set(JBSbatACIFM157.ERR_CD, inMap.get(JBSbatACIFM157.ERR_CD));

		// エラー内容
		retMap.set(JBSbatACIFM157.ERR_NAIYO, inMap.get(JBSbatACIFM157.ERR_NAIYO));
		
		// 工事完了報告遅延区分
		retMap.set(JBSbatACIFM157.KOJI_DLY_REPORT_FIN_DIV, inMap.get(JBSbatACIFM157.KOJI_DLY_REPORT_FIN_DIV));

		retMap.setOutFlg(true);
		return retMap;
	}

	/**
	 * ｅｏ光電話利用呼情報エラー情報（運用日付き）の出力項目を設定する
	 * @param inMap		入力電文
	 * @param trkmUnyoDay	取込運用日
	 * @return	JBSbatServiceInterfaceMap	出力電文
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap setReTonyuDataFileMap(JBSbatServiceInterfaceMap inMap, String trkmUnyoDay) throws Exception
	{
		JBSbatServiceInterfaceMap retMap = new JBSbatServiceInterfaceMap();

		// 取込運用日
		retMap.set(JBSbatACIFM022.TRKM_UNYO_DAY, trkmUnyoDay);

		// 課金電話番号
		retMap.set(JBSbatACIFM022.KAKINS_TELNO, inMap.get(JBSbatACIFM157.KAKINS_TELNO));

		// 発信元電話番号
		retMap.set(JBSbatACIFM022.HASHIN_TELNO, inMap.get(JBSbatACIFM157.HASHIN_TELNO));

		// 着信先電話番号
		retMap.set(JBSbatACIFM022.INCOMING_TELNO, inMap.get(JBSbatACIFM157.INCOMING_TELNO));

		// 通話開始日
		retMap.set(JBSbatACIFM022.PCALL_STAYMD, inMap.get(JBSbatACIFM157.PCALL_STAYMD));

		// 通話開始時刻
		retMap.set(JBSbatACIFM022.PCALL_STA_HMS, inMap.get(JBSbatACIFM157.PCALL_STA_HMS));

		// 通話終了日
		retMap.set(JBSbatACIFM022.PCALL_ENDYMD, inMap.get(JBSbatACIFM157.PCALL_ENDYMD));

		// 通話終了時刻
		retMap.set(JBSbatACIFM022.PCALL_END_HMS, inMap.get(JBSbatACIFM157.PCALL_END_HMS));

		// 通話秒数
		retMap.set(JBSbatACIFM022.PCALL_SEC_CNT, inMap.get(JBSbatACIFM157.PCALL_SEC_CNT));

		// 通話度数
		retMap.set(JBSbatACIFM022.PCALL_DOSU, inMap.get(JBSbatACIFM157.PCALL_DOSU));

		// 通話単価
		retMap.set(JBSbatACIFM022.PCALL_TANKA, inMap.get(JBSbatACIFM157.PCALL_TANKA));

		// 通話料金
		retMap.set(JBSbatACIFM022.PCALL_PRC, inMap.get(JBSbatACIFM157.PCALL_PRC));

		// 通話種別
		retMap.set(JBSbatACIFM022.PCALL_SBT, inMap.get(JBSbatACIFM157.PCALL_SBT));

		// 通話サービス識別コード
		retMap.set(JBSbatACIFM022.TUWA_SVC_SKBT_CD, inMap.get(JBSbatACIFM157.TUWA_SVC_SKBT_CD));

		// 切断理由−ＳＩＰ
		retMap.set(JBSbatACIFM022.CUT_RSN_DIV_SIP, inMap.get(JBSbatACIFM157.CUT_RSN_DIV_SIP));

		// 切断理由−ＩＳＵＰ
		retMap.set(JBSbatACIFM022.CUT_RSN_DIV_ISUP, inMap.get(JBSbatACIFM157.CUT_RSN_DIV_ISUP));

		// 切断理由区分
		retMap.set(JBSbatACIFM022.CUT_RSN_DIV, inMap.get(JBSbatACIFM157.CUT_RSN_DIV));

		// 切断詳細情報−大項目
		retMap.set(JBSbatACIFM022.CUT_DTAIL_INFO_DKMK_IDX_NO, inMap.get(JBSbatACIFM157.CUT_DTAIL_INFO_DKMK_IDX_NO));

		// 切断詳細情報−中項目
		retMap.set(JBSbatACIFM022.CUT_DTAIL_INFO_CKMK_IDX_NO, inMap.get(JBSbatACIFM157.CUT_DTAIL_INFO_CKMK_IDX_NO));

		// 切断詳細情報−発着種別
		retMap.set(JBSbatACIFM022.CUT_DTAIL_INFO_HTCK_SBT_CD, inMap.get(JBSbatACIFM157.CUT_DTAIL_INFO_HTCK_SBT_CD));

		// 課金表示
		retMap.set(JBSbatACIFM022.CHRG_DSP_CD, inMap.get(JBSbatACIFM157.CHRG_DSP_CD));

		// 緊急通報呼フラグ
		retMap.set(JBSbatACIFM022.EMG_KO_FLG, inMap.get(JBSbatACIFM157.EMG_KO_FLG));

		// ＣＨＧ信号受信回数
		retMap.set(JBSbatACIFM022.CHG_SIGNAL_RCV_CNT, inMap.get(JBSbatACIFM157.CHG_SIGNAL_RCV_CNT));

		// 転送時発信元番号
		retMap.set(JBSbatACIFM022.TENSO_JI_HASHIN_TELNO, inMap.get(JBSbatACIFM157.TENSO_JI_HASHIN_TELNO));

		// 国名
		retMap.set(JBSbatACIFM022.COUNTRY_NM, inMap.get(JBSbatACIFM157.COUNTRY_NM));

		// ０５０オプション電話番号
		retMap.set(JBSbatACIFM022.N_050_OP_TELNO, inMap.get(JBSbatACIFM157.N_050_OP_TELNO));

		// 工事完了報告遅延区分
		retMap.set(JBSbatACIFM022.KOJI_DLY_REPORT_FIN_DIV, inMap.get(JBSbatACIFM157.KOJI_DLY_REPORT_FIN_DIV));
		
		retMap.setOutFlg(true);
		return retMap;
	}
	
	/**
	 * 文字列の右から 指定された桁数の位置に小数点を付与する
	 * @param baseNumValue	付与元文字列
	 * @param decNum	小数点以下桁数
	 * @return	double	小数点付与後文字列
	 * @throws Exception
	 */
	private String addDecimalPoint(String baseNumValue, int decNum) throws Exception
	{
		StringBuffer numValue = new StringBuffer(baseNumValue);

		// 指定位置に小数点を付与して返却
		return numValue.insert(baseNumValue.length() - decNum, JACStrConst.DECIMAL_POINT).toString();
	}
	
}
