/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACEOHUseKoInfTrkm
*	ソースファイル名	：JBSbatACEOHUseKoInfTrkm.java
*	作成者				：富士通　
*	作成日				：2011年08月10日
*＜機能概要＞
*　eo光電話利用呼情報取込の更新処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2013/02/14   富士通		新規作成
*	v4.00.00	2013/04/10   FJ）藤田	更新項目からプライマリキーをはずす
*	v4.00.01	2013/04/24   FJ)狭間	【ST4-2013-0000XXX】オンライン24時間対策
*	v4.00.02	2013/05/15   FJ）藤田	更新、登録件数の出力を実装する
*	v9.00.00	2014/05/07   FJ) 江森	【ANK-2057-00-00】eo多機能ルーターによる複数通話対応
*	v9.00.01	2014/06/16   FJ）江森	【IT1-2014-0000218】完全重複呼チェック時の性能改善
*	v29.00.00	2017/02/10   FJ）鈴木	【OM-2016-0002546】完全重複呼チェック誤り対応
*	v29.00.01	2017/03/14   FJ）清原	【OM-2016-0002547】重複呼がチェックエラーとならずに通話明細テーブルがUPDATEされる
*	v61.00.00	2023/04/26   FJ) 渋谷	【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JACbatSchdlUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatACIFM157;
import eo.business.util.file.JBSbatACIFM182;
import eo.business.util.table.JBSbatAC_T_EOH_TEL_TW_DTL;
import eo.business.util.table.JBSbatCH_M_PRC_SCHDL_TEIGI;
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 JBSbatACEOHUseKoInfTrkmUpd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/

	/** テーブル(ｅｏ光電話通話明細)*/
	private static final String D_TBL_NAME_AC_T_EOH_TEL_TW_DTL = "AC_T_EOH_TEL_TW_DTL";
	/** テーブル(サービス契約内訳＜ｅｏ光電話＞)*/
	private static final String D_TBL_NAME_KK_T_SVKEIUW_EOH_TEL = "KK_T_SVKEIUW_EOH_TEL";
// 2017/02/10 OM-2016-0002546 ADD START
	/** テーブル(料金スケジュール定義)*/
	private static final String D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI = "CH_M_PRC_SCHDL_TEIGI";
// 2017/02/10 OM-2016-0002546 ADD END

	/** テーブルアクセスクラス(ｅｏ光電話通話明細)*/
	private JBSbatSQLAccess db_AC_T_EOH_TEL_TW_DTL_INSERT = null;
//v29.00.01 OM-2016-0002547 Del Start
//	private JBSbatSQLAccess db_AC_T_EOH_TEL_TW_DTL_UPDATE = null;
//v29.00.01 OM-2016-0002547 Del End
	
	/** テーブルアクセスクラス(サービス契約内訳＜ｅｏ光電話＞)*/
	private JBSbatSQLAccess db_KK_T_SVKEIUW_EOH_TEL = null;
	
	/** テーブルアクセスクラス(ｅｏ光電話通話明細)*/
	private JBSbatSQLAccess db_AC_T_EOH_TEL_TW_DTL = null;

// 2017/02/10 OM-2016-0002546 ADD START
	/** テーブルアクセスクラス(料金スケジュール定義)*/
	private JBSbatSQLAccess db_CH_M_PRC_SCHDL_TEIGI = null;
// 2017/02/10 OM-2016-0002546 ADD END
	
	/** SQL定義キー(AC_SELECT_004)*/
	private static final String KK_T_SVKEIUW_EOH_TEL_AC_SELECT_004 = "AC_SELECT_004";
	
	/** SQL定義キー(AC_SELECT_008)*/
	private static final String AC_T_EOH_TEL_TW_DTL_AC_SELECT_008 = "AC_SELECT_008";

// 2017/02/10 OM-2016-0002546 ADD START
	/** SQL定義キー(AC_SELECT_002)*/
	private static final String CH_M_PRC_SCHDL_TEIGI_AC_SELECT_002 = "AC_SELECT_002";
// 2017/02/10 OM-2016-0002546 ADD END
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**▼▼▼▼▼▼クラス変数追加 開始▼▼▼▼▼▼*/

	//v29.00.01 OM-2016-0002547 Del Start
//	/** update件数カウント(eo光電話通話明細) */
//	private int eoTelTwDtlUpdCnt = 0;
	//v29.00.01 OM-2016-0002547 Del End
	/** insert件数カウント(eo光電話通話明細) */
	private int eoTelTwDtlInsCnt = 0;
	
	/** 「割込電話／複数通話オプション」サービスコードリスト */
	private String[]  wrkmFukuSvcCdList ;
	
	/** 「多機能ルータ」サービスコードリスト */
	private String[] takinoRtSvcCdList;
	
	/** 「電話アダプター」サービスコードリスト */
	private String[] telAdaptSvcCdList;
	
	// ANK-4315-00-00 ADD START
	/** 「ホームゲートウェイ」サービスコードリスト */
	private String[] HgwRtSvcCdList;
	// ANK-4315-00-00 ADD END
	
	/** 複数同時通話可能判定結果 */
	private boolean jdgRsult = false;
	
	/** ブレイクキー */
	private String breakKey = null;
	
	/** 同時通話番号 */
	private int dojiTuwaNo = 0;
	
	/** ブレイクフラグ */
	private boolean breakFlg = false;
	
	/** 請求年月 */
	private String seikyYm = null;
	
	/** 請求年月前月 */
	private String seikyYmBefore = null;
	
	// 2017/03/14 OM-2016-0002547 Add Start
	/** eo光電話通話明細レコード重複エラー */
	private String acMsgHtdtlrDblErr = null;
	
	/** 請求工事遅延フラグ：工事遅延なし */
	public static final int KOJI_DLY_REPORT_FIN_DIV_NASI = 0;
	
	/** 転送時発信電話番号 ダミーレコード */
	private static final String TENSOJI_HASHIN_TELNO_DUMMY = "**********************";
	
	/** 転送時発信電話番号 オールスペース */
	private static final String TENSOJI_HASHIN_TELNO_SPACE = "                      ";
	// 2017/03/14 OM-2016-0002547 Add End
	
	/**▲▲▲▲▲▲クラス変数追加 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_AC_T_EOH_TEL_TW_DTL_INSERT = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_T_EOH_TEL_TW_DTL);
//v29.00.01 OM-2016-0002547 Del Start
//		db_AC_T_EOH_TEL_TW_DTL_UPDATE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_T_EOH_TEL_TW_DTL);
//v29.00.01 OM-2016-0002547 Del End
		db_KK_T_SVKEIUW_EOH_TEL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEIUW_EOH_TEL);
		db_AC_T_EOH_TEL_TW_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_T_EOH_TEL_TW_DTL);
// 2017/02/10 OM-2016-0002546 ADD START
		db_CH_M_PRC_SCHDL_TEIGI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI);
// 2017/02/10 OM-2016-0002546 ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		JACbatParamUtil paramUtil = new JACbatParamUtil(commonItem);
		
		try
		{	
			// 「割込電話／複数通話オプション」「多機能ルータ」「電話アダプター」「ホームゲートウェイ」の各サービスコードをリストに格納
			wrkmFukuSvcCdList = paramUtil.getGyoumuParameter(JACStrConst.WRKM_FUKU_SVC_CD).split(",");
			takinoRtSvcCdList = paramUtil.getGyoumuParameter(JACStrConst.TAKINORT_SVC_CD).split(",");
			telAdaptSvcCdList = paramUtil.getGyoumuParameter(JACStrConst.TEL_ADAPT_SVC_CD).split(",");
			// ANK-4315-00-00 ADD START
			HgwRtSvcCdList = paramUtil.getGyoumuParameter(JACStrConst.HGW_SVC_CD).split(",");
			// ANK-4315-00-00 ADD END

			//v29.00.01 OM-2016-0002547 Add Start
			//eo光電話通話明細レコード重複エラーを取得する。
			acMsgHtdtlrDblErr = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_MSG_HTDTLR_DBLERR);
			//v29.00.01 OM-2016-0002547 Add End
		}
		finally
		{
			paramUtil.close();
		}
		
		// 料金スケジュール定義アクセス部品初期処理
		JACbatSchdlUtil schdlUtil 		= new JACbatSchdlUtil(commonItem);
		
		try
		{	
// 2017/02/10 OM-2016-0002546 MOD START
//			// 請求年月を取得する
//			this.seikyYm = schdlUtil.getBillDate(super.opeDate, JACStrConst.EVENT_CD_RYOKIN_KEISAN_YMD);
			// 利用開始日と利用終了に対応する請求年月を取得する
			this.seikyYm = getSeikyYm(super.opeDate);
// 2017/02/10 OM-2016-0002546 MOD END
			
			// 請求年月前月を取得する
			this.seikyYmBefore = JCCBatCommon.addMonth(seikyYm.concat(JACStrConst.STR_OF_MONTH), -1).substring(0, 6);
		}
		finally
		{
			schdlUtil.close();
		}
		
		/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][inMap = " + inMap.getMap().toString() + "]") : true;

		JBSbatOutputItem outputItem = new JBSbatOutputItem();

		if (inMap == null)
		{	// 最終行は処理なし
			return outputItem;
		}
		
		// 同時通話番号を設定する
		// キー設定
		StringBuffer keyBuf = new StringBuffer();
		keyBuf.append(inMap.getString(JBSbatACIFM182.SVC_KEI_NO));
		keyBuf.append(inMap.getString(JBSbatACIFM182.SVC_KEI_UCWK_NO));
		keyBuf.append(inMap.getString(JBSbatACIFM182.PCRS_CD));
		keyBuf.append(inMap.getString(JBSbatACIFM182.PRC_SVC_CD));
		keyBuf.append(inMap.getString(JBSbatACIFM182.SEIKY_YM));
		keyBuf.append(inMap.getString(JBSbatACIFM182.KAKINS_TELNO));
		keyBuf.append(inMap.getString(JBSbatACIFM182.PCALL_STAYMD));
		keyBuf.append(inMap.getString(JBSbatACIFM182.PCALL_STA_HMS));
		keyBuf.append(inMap.getString(JBSbatACIFM182.PCALL_SBT_CD));
		keyBuf.append(inMap.getString(JBSbatACIFM182.TENSO_JI_HASHIN_TELNO));
		
		String inkey = keyBuf.toString();
		
		if (inkey.equals(breakKey))
		{
			breakFlg = true;
		}
		else
		{
			breakFlg = false;
			breakKey = inkey;
			dojiTuwaNo = 0;
		}

		// eo光電話通話明細の更新処理
		// 戻り値は、eo光電話利用呼情報エラー情報ファイル行データ
		if("0".equals(inMap.getString(JBSbatACIFM182.UPDATE_FLG)))
		{
			pCallDtlInsExec(inMap);
		}
		else
		{
			// 重複チェック
			jdgRsult = dualCallJdg(inMap);
			if (jdgRsult)
			{
				// 完全重複呼チェックを行う
				if (pfctcblcheck(inMap))
				{
					pCallDtlInsExec(inMap);
				}
				else
				{
// 2017/02/10 OM-2016-0002546 ADD START
					// ログ出力、マイナーアラームを発行
					String logMsg = "eo光電話通話明細に完全重複呼あり：";
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0340CW, new String[] {logMsg + inMap.getMap().toString()});
//v29.00.01 OM-2016-0002547 Del Start
//					pCallDtlUpdExec(inMap);
//v29.00.01 OM-2016-0002547 Del End
					//v29.00.01 OM-2016-0002547 Add Start
					outPutErrFile(inMap,outputItem);
					//v29.00.01 OM-2016-0002547 Add End
				}
			}
			else
			{
//v29.00.01 OM-2016-0002547 Del Start
//				pCallDtlUpdExec(inMap);
//v29.00.01 OM-2016-0002547 Del End
				//v29.00.01 OM-2016-0002547 Add Start
				outPutErrFile(inMap,outputItem);
				//v29.00.01 OM-2016-0002547 Add End
			}
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");

		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/

		eoTelTwDtlInsCnt += db_AC_T_EOH_TEL_TW_DTL_INSERT.clearBatch();
//v29.00.01 OM-2016-0002547 Del Start
//		eoTelTwDtlUpdCnt += db_AC_T_EOH_TEL_TW_DTL_UPDATE.clearBatch();
//v29.00.01 OM-2016-0002547 Del End

		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/

		// DBアクセスクラスをクローズします
		db_AC_T_EOH_TEL_TW_DTL_INSERT.close();
//v29.00.01 OM-2016-0002547 Del Start
//		db_AC_T_EOH_TEL_TW_DTL_UPDATE.close();
//v29.00.01 OM-2016-0002547 Del End
		db_KK_T_SVKEIUW_EOH_TEL.close();
		db_AC_T_EOH_TEL_TW_DTL.close();
// 2017/02/10 OM-2016-0002546 ADD START
		db_CH_M_PRC_SCHDL_TEIGI.close();
// 2017/02/10 OM-2016-0002546 ADD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/

//v29.00.01 OM-2016-0002547 Del Start
//		// 更新件数ログ出力
//		super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1190AI,
//				new String[] {JBSbatAC_T_EOH_TEL_TW_DTL.TABLE_NAME + "（更新）", String.valueOf(eoTelTwDtlUpdCnt)});
//v29.00.01 OM-2016-0002547 Del End
		// 登録件数ログ出力
		super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1190AI,
				new String[] {JBSbatAC_T_EOH_TEL_TW_DTL.TABLE_NAME + "（登録）", String.valueOf(eoTelTwDtlInsCnt)});
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
//v29.00.01 OM-2016-0002547 Del Start
//
//	/**
//	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.引数で設定項目マップを作ります。<br>
//	 *
//	 * 2.引数で条件マップを作ります。<br>
//	 *
//	 * 3.DBアクセスを実行します。<br>
//	 * 
//	 * 4.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
//	 *		 	料金項目コード							PRC_KMK_CD
//	 *		 	請求契約番号							SEIKY_KEI_NO
//	 *		 	発信電話番号							HASHIN_TELNO
//	 *		 	着信電話番号							INCOMING_TELNO
//	 *		 	通話終了年月日							PCALL_ENDYMD
//	 *		 	通話終了時分秒							PCALL_END_HMS
//	 *		 	通話秒数								PCALL_SEC_CNT
//	 *		 	通話度数								PCALL_DOSU
//	 *		 	通話単価								PCALL_TANKA
//	 *		 	通話料金								PCALL_PRC
//	 *		 	通話種別コード							PCALL_SBT_CD
//	 *		 	課税非課税コード						KAZEI_HIKAZEI_CD
//	 *		 	通話サービス識別コード					TUWA_SVC_SKBT_CD
//	 *		 	切断理由区分−ＳＩＰ					CUT_RSN_DIV_SIP
//	 *		 	切断理由区分−ＩＳＵＰ					CUT_RSN_DIV_ISUP
//	 *		 	切断理由区分							CUT_RSN_DIV
//	 *		 	切断詳細情報−大項目インデックス番号	CUT_DTAIL_INFO_DKMK_IDX_NO
//	 *		 	切断詳細情報−中項目インデックス番号	CUT_DTAIL_INFO_CKMK_IDX_NO
//	 *		 	切断詳細情報−発着種別コード			CUT_DTAIL_INFO_HTCK_SBT_CD
//	 *		 	課金表示コード							CHRG_DSP_CD
//	 *		 	緊急通報呼フラグ						EMG_KO_FLG
//	 *		 	ＣＨＧ信号受信回数						CHG_SIGNAL_RCV_CNT
//	 *		 	転送時発信電話番号						TENSO_JI_HASHIN_TELNO
//	 *		 	国名									COUNTRY_NM
//	 *		 	０５０オプション電話番号				N_050_OP_TELNO
//	 *		 	課金可否								CHRG_KH
//	 *		 	更新年月日時分秒						UPD_DTM
//	 *		 	更新オペレータアカウント				UPD_OPEACNT
//	 *		 	更新運用年月日							UPD_UNYO_YMD
//	 *		 	更新処理ＩＤ							UPD_TRN_ID
//	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
//	 *		 	SVC_KEI_NO
//	 *		 	SVC_KEI_UCWK_NO
//	 *		 	PCRS_CD
//	 *		 	PRC_SVC_CD
//	 *		 	SEIKY_YM
//	 *		 	KAKINS_TELNO
//	 *		 	PCALL_STAYMD
//	 *		 	PCALL_STA_HMS
//	 * </pre>
//	 * <p>
//	 * @param setParam 設定項目の値。
//	 * @param whereParam 条件項目の値。
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private void executeAC_T_EOH_TEL_TW_DTL_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
//	{
//		// 設定値のマップを作成します
//		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.PRC_KMK_CD,					setParam[0]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.SEIKY_KEI_NO,					setParam[1]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.HASHIN_TELNO,					setParam[2]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.INCOMING_TELNO,				setParam[3]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.PCALL_ENDYMD,					setParam[4]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.PCALL_END_HMS,				setParam[5]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.PCALL_SEC_CNT,				setParam[6]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.PCALL_DOSU,					setParam[7]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.PCALL_TANKA,					setParam[8]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.PCALL_PRC,					setParam[9]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.KAZEI_HIKAZEI_CD,				setParam[11]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.TUWA_SVC_SKBT_CD,				setParam[12]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.CUT_RSN_DIV_SIP,				setParam[13]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.CUT_RSN_DIV_ISUP,				setParam[14]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.CUT_RSN_DIV,					setParam[15]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.CUT_DTAIL_INFO_DKMK_IDX_NO,	setParam[16]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.CUT_DTAIL_INFO_CKMK_IDX_NO,	setParam[17]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.CUT_DTAIL_INFO_HTCK_SBT_CD,	setParam[18]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.CHRG_DSP_CD,					setParam[19]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.EMG_KO_FLG,					setParam[20]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.CHG_SIGNAL_RCV_CNT,			setParam[21]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.COUNTRY_NM,					setParam[23]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.N_050_OP_TELNO,				setParam[24]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.CHRG_KH,						setParam[25]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.UPD_DTM,						setParam[26]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.UPD_OPEACNT,					setParam[27]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.UPD_UNYO_YMD,					setParam[28]);
//		setMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.UPD_TRN_ID,					setParam[29]);
//
//		// 条件のマップを作成します
//		
//		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
//		whereMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.SVC_KEI_NO,					whereParam[0]);
//		whereMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.SVC_KEI_UCWK_NO,			whereParam[1]);
//		whereMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.PCRS_CD,					whereParam[2]);
//		whereMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.PRC_SVC_CD,					whereParam[3]);
//		whereMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.SEIKY_YM,					whereParam[4]);
//		whereMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.KAKINS_TELNO,				whereParam[5]);
//		whereMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.PCALL_STAYMD,				whereParam[6]);
//		whereMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.PCALL_STA_HMS,				whereParam[7]);
//		whereMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.PCALL_SBT_CD,				whereParam[8]);
//		whereMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.TENSO_JI_HASHIN_TELNO,		whereParam[9]);
//		whereMap.setValue(JBSbatAC_T_EOH_TEL_TW_DTL.DOJI_TUWA_NO,				whereParam[10]);
//
//		// DBアクセスを実行します
//		eoTelTwDtlUpdCnt += db_AC_T_EOH_TEL_TW_DTL_UPDATE.updateByPrimaryKeysBatch(whereMap, setMap, 1);
//	}
//v29.00.01 OM-2016-0002547 Del End

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	サービス契約番号					SVC_KEI_NO
	 *			サービス契約内訳番号				SVC_KEI_UCWK_NO
	 *		 	料金コースコード					PCRS_CD
	 *		 	料金サービスコード					PRC_SVC_CD
	 *		 	請求年月							SEIKY_YM
	 *			課金先電話番号						KAKINS_TELNO
	 *			通話開始年月日						PCALL_STAYMD
	 *			通話開始時分秒						PCALL_STA_HMS
	 *			料金項目コード						PRC_KMK_CD
	 *		 	請求契約番号						SEIKY_KEI_NO
	 *			発信電話番号						HASHIN_TELNO
	 *			着信電話番号						INCOMING_TELNO
	 *			通話終了年月日						PCALL_ENDYMD
	 *			通話終了時分秒						PCALL_END_HMS
	 *			通話秒数							PCALL_SEC_CNT
	 *			通話度数							PCALL_DOSU
	 *			通話単価							PCALL_TANKA
	 *			通話料金							PCALL_PRC
	 *			通話種別コード						PCALL_SBT_CD
	 *			課税非課税コード					KAZEI_HIKAZEI_CD
	 *			通話サービス識別コード				TUWA_SVC_SKBT_CD
	 *			切断理由区分-SIP					CUT_RSN_DIV_SIP
	 *			切断理由区分-ISUP					CUT_RSN_DIV_ISUP
	 *			切断理由区分						CUT_RSN_DIV
	 *			切断詳細情報-大項目インデックス番号	CUT_DTAIL_INFO_DKMK_IDX_NO
	 *			切断詳細情報-中項目インデックス番号	CUT_DTAIL_INFO_CKMK_IDX_NO
	 *			切断詳細情報-発着種別コード			CUT_DTAIL_INFO_HTCK_SBT_CD
	 *			課金表示コード						CHRG_DSP_CD
	 *			緊急通報呼フラグ					EMG_KO_FLG
	 *			CHG信号受信回数						CHG_SIGNAL_RCV_CNT
	 *			転送時発信電話番号					TENSO_JI_HASHIN_TELNO
	 *			国名								COUNTRY_NM
	 *			050オプション電話番号				N_050_OP_TELNO
	 *			課金可否							CHRG_KH
	 *		 	登録年月日時分秒					ADD_DTM
	 *		 	登録オペレータアカウント			ADD_OPEACNT
	 *		 	更新年月日時分秒					UPD_DTM
	 *		 	更新オペレータアカウント			UPD_OPEACNT
	 *		 	削除年月日時分秒					DEL_DTM
	 *		 	削除オペレータアカウント			DEL_OPEACNT
	 *		 	無効フラグ							MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeAC_T_EOH_TEL_TW_DTL_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("SVC_KEI_NO",					setParam[0]);
		setMap.setValue("SVC_KEI_UCWK_NO",				setParam[1]);
		setMap.setValue("PCRS_CD",						setParam[2]);
		setMap.setValue("PRC_SVC_CD",					setParam[3]);
		setMap.setValue("SEIKY_YM",						setParam[4]);
		setMap.setValue("KAKINS_TELNO",					setParam[5]);
		setMap.setValue("PCALL_STAYMD",					setParam[6]);
		setMap.setValue("PCALL_STA_HMS",				setParam[7]);
		setMap.setValue("PRC_KMK_CD",					setParam[8]);
		setMap.setValue("SEIKY_KEI_NO",					setParam[9]);
		setMap.setValue("HASHIN_TELNO",					setParam[10]);
		setMap.setValue("INCOMING_TELNO",				setParam[11]);
		setMap.setValue("PCALL_ENDYMD",					setParam[12]);
		setMap.setValue("PCALL_END_HMS",				setParam[13]);
		setMap.setValue("PCALL_SEC_CNT",				setParam[14]);
		setMap.setValue("PCALL_DOSU",					setParam[15]);
		setMap.setValue("PCALL_TANKA",					setParam[16]);
		setMap.setValue("PCALL_PRC",					setParam[17]);
		setMap.setValue("PCALL_SBT_CD",					setParam[18]);
		setMap.setValue("KAZEI_HIKAZEI_CD", 			setParam[19]);
		setMap.setValue("TUWA_SVC_SKBT_CD",				setParam[20]);
		setMap.setValue("CUT_RSN_DIV_SIP",				setParam[21]);
		setMap.setValue("CUT_RSN_DIV_ISUP",				setParam[22]);
		setMap.setValue("CUT_RSN_DIV",					setParam[23]);
		setMap.setValue("CUT_DTAIL_INFO_DKMK_IDX_NO",	setParam[24]);
		setMap.setValue("CUT_DTAIL_INFO_CKMK_IDX_NO",	setParam[25]);
		setMap.setValue("CUT_DTAIL_INFO_HTCK_SBT_CD",	setParam[26]);
		setMap.setValue("CHRG_DSP_CD",					setParam[27]);
		setMap.setValue("EMG_KO_FLG",					setParam[28]);
		setMap.setValue("CHG_SIGNAL_RCV_CNT",			setParam[29]);
		setMap.setValue("TENSO_JI_HASHIN_TELNO",		setParam[30]);
		setMap.setValue("COUNTRY_NM",					setParam[31]);
		setMap.setValue("N_050_OP_TELNO",				setParam[32]);
		setMap.setValue("CHRG_KH",						setParam[33]);
		setMap.setValue("ADD_DTM",						setParam[34]);
		setMap.setValue("ADD_OPEACNT",					setParam[35]);
		setMap.setValue("UPD_DTM",						setParam[36]);
		setMap.setValue("UPD_OPEACNT",					setParam[37]);
		setMap.setValue("DEL_DTM",						setParam[38]);
		setMap.setValue("DEL_OPEACNT",					setParam[39]);
		setMap.setValue("MK_FLG",						setParam[40]);
		setMap.setValue("DOJI_TUWA_NO",					setParam[41]);
		
		// DBアクセスを実行します
		eoTelTwDtlInsCnt += db_AC_T_EOH_TEL_TW_DTL_INSERT.insertByPrimaryKeysBatch(setMap);
	}
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(AC_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	通話開始年月日
	 *		 	通話開始年月日
	 *		 	通話開始年月日
	 *		 	割込電話／複数通話
	 *		 	通話開始年月日
	 *		 	通話開始年月日
	 *		 	通話開始年月日
	 *		 	通話開始年月日
	 *		 	通話開始年月日
	 *		 	通話開始年月日
	 *		 	多機能ルーター
	 *		 	ホームゲートウェイ
	 *		 	通話開始年月日
	 *		 	通話開始年月日
	 *		 	通話開始年月日
	 *		 	電話アダプター機能
	 *		 	通話開始年月日
	 *		 	通話開始年月日
	 *		 	通話開始年月日
	 *		 	課金先電話番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVKEIUW_EOH_TEL_AC_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());
		paramList.setValue(param[9].toString());
		paramList.setValue(param[10].toString());
		paramList.setValue(param[11].toString());
		paramList.setValue(param[12].toString());
		paramList.setValue(param[13].toString());
		paramList.setValue(param[14].toString());
		paramList.setValue(param[15].toString());
		paramList.setValue(param[16].toString());
		paramList.setValue(param[17].toString());
		paramList.setValue(param[18].toString());
		// ANK-4315-00-00 ADD START
		paramList.setValue(param[19].toString());
		// ANK-4315-00-00 ADD END

		// DBアクセスを実行します
		db_KK_T_SVKEIUW_EOH_TEL.selectBySqlDefine(paramList, KK_T_SVKEIUW_EOH_TEL_AC_SELECT_004);
	}

	/**▼▼▼▼▼▼メソッド追加 開始▼▼▼▼▼▼*/
//v29.00.01 OM-2016-0002547 Del Start
//
//	/**
//	 * eo光電話通話明細更新
//	 * @param inMap  入力情報(ｅｏ光電話利用履歴情報＋課金対象従量ｻｰﾋﾞｽ契約情報）
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private void pCallDtlUpdExec(JBSbatServiceInterfaceMap inMap) throws Exception
//	{
//		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][pCallDtlUpdExec]");
//
//		// eo光電話通話明細を更新する
//		Object[] setParam = new Object[30];
//
//		setParam[0] = inMap.getString(JBSbatACIFM182.PRC_KMK_CD);
//		setParam[1] = inMap.getString(JBSbatACIFM182.SEIKY_KEI_NO);
//		setParam[2] = inMap.getString(JBSbatACIFM182.HASHIN_TELNO);
//		setParam[3] = inMap.getString(JBSbatACIFM182.INCOMING_TELNO);
//		setParam[4] = inMap.getString(JBSbatACIFM182.PCALL_ENDYMD);
//		setParam[5] = inMap.getString(JBSbatACIFM182.PCALL_END_HMS);
//		setParam[6] = inMap.getBigDecimal(JBSbatACIFM182.PCALL_SEC_CNT);
//		setParam[7] = inMap.getBigDecimal(JBSbatACIFM182.PCALL_DOSU);
//		setParam[8] = inMap.getBigDecimal(JBSbatACIFM182.PCALL_TANKA);
//		setParam[9] = inMap.getBigDecimal(JBSbatACIFM182.PCALL_PRC);
//		setParam[11] = inMap.getString(JBSbatACIFM182.KAZEI_HIKAZEI_CD);
//		setParam[12] = inMap.getString(JBSbatACIFM182.TUWA_SVC_SKBT_CD);
//		setParam[13] = inMap.getString(JBSbatACIFM182.CUT_RSN_DIV_SIP);
//		setParam[14] = inMap.getString(JBSbatACIFM182.CUT_RSN_DIV_ISUP);
//		setParam[15] = inMap.getString(JBSbatACIFM182.CUT_RSN_DIV);
//		setParam[16] = inMap.getString(JBSbatACIFM182.CUT_DTAIL_INFO_DKMK_IDX_NO);
//		setParam[17] = inMap.getString(JBSbatACIFM182.CUT_DTAIL_INFO_CKMK_IDX_NO);
//		setParam[18] = inMap.getString(JBSbatACIFM182.CUT_DTAIL_INFO_HTCK_SBT_CD);
//		setParam[19] = inMap.getString(JBSbatACIFM182.CHRG_DSP_CD);
//		setParam[20] = inMap.getString(JBSbatACIFM182.EMG_KO_FLG);
//		setParam[21] = inMap.getBigDecimal(JBSbatACIFM182.CHG_SIGNAL_RCV_CNT);
//		setParam[23] = inMap.getString(JBSbatACIFM182.COUNTRY_NM);
//		setParam[24] = inMap.getString(JBSbatACIFM182.N_050_OP_TELNO);
//		setParam[25] = inMap.getString(JBSbatACIFM182.CHRG_KH);
//		setParam[26] = null;
//		setParam[27] = null;
//
//		// 検索条件
//		Object[] whereParam = new Object[11];
//		whereParam[0] = inMap.get(JBSbatACIFM182.SVC_KEI_NO);
//		whereParam[1] = inMap.get(JBSbatACIFM182.SVC_KEI_UCWK_NO);
//		whereParam[2] = inMap.get(JBSbatACIFM182.PCRS_CD);
//		whereParam[3] = inMap.get(JBSbatACIFM182.PRC_SVC_CD);
//		whereParam[4] = inMap.get(JBSbatACIFM182.SEIKY_YM);
//		whereParam[5] = inMap.get(JBSbatACIFM182.KAKINS_TELNO);
//		whereParam[6] = inMap.get(JBSbatACIFM182.PCALL_STAYMD);
//		whereParam[7] = inMap.get(JBSbatACIFM182.PCALL_STA_HMS);
//		whereParam[8] = inMap.get(JBSbatACIFM182.PCALL_SBT_CD);
//		whereParam[9] = inMap.get(JBSbatACIFM182.TENSO_JI_HASHIN_TELNO);
//		if(dojiTuwaNo != 0)
//		{
//			whereParam[10] = String.valueOf(dojiTuwaNo);
//		}
//		else
//		{
//			whereParam[10] = "1";
//		}
//			
//		
//		
//		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][useKoInfTrkm][whereParam=" + whereParam[0].toString() + ", " + whereParam[1].toString() + ", " + whereParam[2].toString() + ", " + whereParam[3].toString() +  ", " + whereParam[4].toString() +  ", " + whereParam[5].toString() +  ", " + whereParam[6].toString() +  ", " + whereParam[7].toString() + "]");
//
//		// 更新実行
//		executeAC_T_EOH_TEL_TW_DTL_PKUPDATE(setParam, whereParam);
//	}
//v29.00.01 OM-2016-0002547 Del End

	/**
	 * eo光電話通話明細更新
	 * 
	 * @param inMap  入力情報(ｅｏ光電話利用履歴情報＋課金対象従量ｻｰﾋﾞｽ契約情報）
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void pCallDtlInsExec(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][pCallDtlInsExec]");

		// eo光電話通話明細を更新する
		Object[] setParam = new Object[42];

		setParam[0]		= inMap.getString(JBSbatACIFM182.SVC_KEI_NO);
		setParam[1]		= inMap.getString(JBSbatACIFM182.SVC_KEI_UCWK_NO);
		setParam[2]		= inMap.getString(JBSbatACIFM182.PCRS_CD);
		setParam[3]		= inMap.getString(JBSbatACIFM182.PRC_SVC_CD);
		setParam[4]		= inMap.getString(JBSbatACIFM182.SEIKY_YM);
		setParam[5]		= inMap.getString(JBSbatACIFM182.KAKINS_TELNO);
		setParam[6]		= inMap.getString(JBSbatACIFM182.PCALL_STAYMD);
		setParam[7]		= inMap.getString(JBSbatACIFM182.PCALL_STA_HMS);
		setParam[8]		= inMap.getString(JBSbatACIFM182.PRC_KMK_CD);
		setParam[9]		= inMap.getString(JBSbatACIFM182.SEIKY_KEI_NO);
		setParam[10]	= inMap.getString(JBSbatACIFM182.HASHIN_TELNO);
		setParam[11]	= inMap.getString(JBSbatACIFM182.INCOMING_TELNO);
		setParam[12]	= inMap.getString(JBSbatACIFM182.PCALL_ENDYMD);
		setParam[13]	= inMap.getString(JBSbatACIFM182.PCALL_END_HMS);
		setParam[14]	= inMap.getBigDecimal(JBSbatACIFM182.PCALL_SEC_CNT);
		setParam[15]	= inMap.getBigDecimal(JBSbatACIFM182.PCALL_DOSU);
		setParam[16]	= inMap.getBigDecimal(JBSbatACIFM182.PCALL_TANKA);
		setParam[17]	= inMap.getBigDecimal(JBSbatACIFM182.PCALL_PRC);
		setParam[18]	= inMap.getString(JBSbatACIFM182.PCALL_SBT_CD);
		setParam[19]	= inMap.getString(JBSbatACIFM182.KAZEI_HIKAZEI_CD);
		setParam[20]	= inMap.getString(JBSbatACIFM182.TUWA_SVC_SKBT_CD);
		setParam[21]	= inMap.getString(JBSbatACIFM182.CUT_RSN_DIV_SIP);
		setParam[22]	= inMap.getString(JBSbatACIFM182.CUT_RSN_DIV_ISUP);
		setParam[23]	= inMap.getString(JBSbatACIFM182.CUT_RSN_DIV);
		setParam[24]	= inMap.getString(JBSbatACIFM182.CUT_DTAIL_INFO_DKMK_IDX_NO);
		setParam[25]	= inMap.getString(JBSbatACIFM182.CUT_DTAIL_INFO_CKMK_IDX_NO);
		setParam[26]	= inMap.getString(JBSbatACIFM182.CUT_DTAIL_INFO_HTCK_SBT_CD);
		setParam[27]	= inMap.getString(JBSbatACIFM182.CHRG_DSP_CD);
		setParam[28]	= inMap.getString(JBSbatACIFM182.EMG_KO_FLG);
		setParam[29]	= inMap.getBigDecimal(JBSbatACIFM182.CHG_SIGNAL_RCV_CNT);
		setParam[30]	= inMap.getString(JBSbatACIFM182.TENSO_JI_HASHIN_TELNO);
		setParam[31]	= inMap.getString(JBSbatACIFM182.COUNTRY_NM);
		setParam[32]	= inMap.getString(JBSbatACIFM182.N_050_OP_TELNO);
		setParam[33]	= inMap.getString(JBSbatACIFM182.CHRG_KH);
		setParam[34]	= null;
		setParam[35]	= null;
		setParam[36]	= null;
		setParam[37]	= null;
		setParam[38]	= null;
		setParam[39]	= null;
		setParam[40]	= null;
		
		String setDojiTuwaNo = null;
		
		if (breakFlg == true)
		{
			dojiTuwaNo = dojiTuwaNo + 1;
		}
		else
		{
			if (dojiTuwaNo != 0 )
			{
				dojiTuwaNo = dojiTuwaNo + 1;
			}
			else
			{
				// 同時通話番号初期化
				dojiTuwaNo = 0;
			}
		}
		
		if (dojiTuwaNo == 0)
		{
			setDojiTuwaNo = "1";
			dojiTuwaNo = 1;
		}
		else
		{
			setDojiTuwaNo = String.valueOf(dojiTuwaNo);
		}
		
		setParam[41]	= setDojiTuwaNo;
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][pCallDtlInsExec][setParam=" + setParam.toString() + "]");

		// 更新実行
		executeAC_T_EOH_TEL_TW_DTL_PKINSERT(setParam);
	}
	
	/**
	 * SQLKEY(AC_SELECT_008)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	課金先電話番号
	 *		 	着信電話番号
	 *		 	通話開始年月日
	 *		 	通話開始時分秒
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeAC_T_EOH_TEL_TW_DTL_AC_SELECT_008(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_AC_T_EOH_TEL_TW_DTL.selectBySqlDefine(paramList, AC_T_EOH_TEL_TW_DTL_AC_SELECT_008);
	}
	
	/**
	 * 複数同時通話可能判定を行う
	 * @param inMap 入力情報
	 * @throws Exception
	 */
	private boolean dualCallJdg(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][dualCallJdg]");
		
		// 課金電話番号
		String kakins_telno = inMap.getString(JBSbatACIFM182.KAKINS_TELNO);
		
		// 通話開始年月日
		String pcall_staymd = inMap.getString(JBSbatACIFM182.PCALL_STAYMD);
		
		// サービスコード初期化
		String svcCd1 = null;			// 「割込電話／複数通話オプション」サービスコード
		String svcCd2 = null;			// 「多機能ルータ」サービスコード
		String svcCd3 = null;			// 「電話アダプター機能」
		// ANK-4315-00-00 ADD START
		String svcCd4 = null;			// 「ホームゲートウェイ」サービスコード
		// ANK-4315-00-00 ADD END
		
		// 複数同時通話可能判定
		for (int i = 0; wrkmFukuSvcCdList.length > i; i++ )
		{
			svcCd1 = wrkmFukuSvcCdList[i];
			
			for (int j = 0; wrkmFukuSvcCdList.length > j; j++ )
			{
				svcCd2 = takinoRtSvcCdList[i];
				// ANK-4315-00-00 ADD START
				svcCd4 = HgwRtSvcCdList[i];
				// ANK-4315-00-00 ADD END
				
				for (int k = 0; wrkmFukuSvcCdList.length > k; k++ )
				{
					svcCd3 = telAdaptSvcCdList[i];
					
					JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
					
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					//「割込電話／複数通話オプション」サービスコード
					paramList.setValue(svcCd1);
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// 「多機能ルータ」サービスコード
					paramList.setValue(svcCd2);
					// ANK-4315-00-00 ADD START
					// 「ホームゲートウェイ」サービスコード
					paramList.setValue(svcCd4);
					// ANK-4315-00-00 ADD END
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// 「電話アダプター機能」
					paramList.setValue(svcCd3);
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// eo光電話利用履歴情報．通話開始年月日
					paramList.setValue(pcall_staymd);
					// eo光電話利用履歴情報．課金先電話番号
					paramList.setValue(kakins_telno);

					// SQL実施
					executeKK_T_SVKEIUW_EOH_TEL_AC_SELECT_004(paramList.getList().toArray());
					
					JBSbatCommonDBInterface record = db_KK_T_SVKEIUW_EOH_TEL.selectNext();
					
					if(record != null)
					{
						assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][dualCallJdg]");
						
						return true;
					}
				}
			}
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][dualCallJdg]");
		
		return false;
	}
	
	/**
	 * 完全重複呼チェック
	 * @param inMap 入力情報
	 * @throws Exception
	 */
	private boolean pfctcblcheck(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 課金電話番号
		String kakins_telno = inMap.getString(JBSbatACIFM182.KAKINS_TELNO);
		
		// 着信先電話番号
		String inComingTelNo = inMap.getString(JBSbatACIFM182.INCOMING_TELNO);
		
		// 通話開始年月日
		String pcall_staymd = inMap.getString(JBSbatACIFM182.PCALL_STAYMD);
		
		// 通話開始時分秒
		String pcall_sta_hms = inMap.getString(JBSbatACIFM182.PCALL_STA_HMS);
		
		// 通話終了年月日
		String pcall_endymd = inMap.getString(JBSbatACIFM182.PCALL_ENDYMD);
		
		// 通話終了時分秒
		String pcall_end_hms = inMap.getString(JBSbatACIFM182.PCALL_END_HMS);

		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		paramList.setValue(kakins_telno);		// 課金電話番号
		paramList.setValue(pcall_staymd);		// 通話開始年月日
		paramList.setValue(pcall_sta_hms);		// 通話開始時分秒
		paramList.setValue(this.seikyYm);		// 請求年月
		paramList.setValue(this.seikyYmBefore);		// 請求年月前月
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeJuryoPrcInfoMap][paramList=" + paramList.getList().toString() + "]");
		
		// SQL実行
		executeAC_T_EOH_TEL_TW_DTL_AC_SELECT_008(paramList.getList().toArray());
				
		JBSbatCommonDBInterface dbMap =db_AC_T_EOH_TEL_TW_DTL.selectNext();
		
		while(dbMap != null)
		{	
			if (dojiTuwaNo == 0 || dojiTuwaNo < Integer.parseInt(dbMap.getString(JBSbatAC_T_EOH_TEL_TW_DTL.DOJI_TUWA_NO)))
			{
				dojiTuwaNo = Integer.parseInt(dbMap.getString(JBSbatAC_T_EOH_TEL_TW_DTL.DOJI_TUWA_NO));
			}
			
			if (pcall_endymd.equals(dbMap.getString(JBSbatAC_T_EOH_TEL_TW_DTL.PCALL_ENDYMD)) 
					&& pcall_end_hms.equals(dbMap.getString(JBSbatAC_T_EOH_TEL_TW_DTL.PCALL_END_HMS))
						&& inComingTelNo.equals(dbMap.getString(JBSbatAC_T_EOH_TEL_TW_DTL.INCOMING_TELNO)))
			{
				return false;
			}

			dbMap =db_AC_T_EOH_TEL_TW_DTL.selectNext();
		}
		
		return true;
	}

// 2017/02/10 OM-2016-0002546 ADD START
	/**
	 * 請求年月を取得する。
	 * イベント日付（利用開始日）<= 運用日付 <= イベント日付（利用終了日） に当てはまる
	 * 請求年月を取得します。
	 * 
	 * @param ymd 年月日
	 * @return 請求年月
	 * @throws Exception
	 */
	private String getSeikyYm(String ymd) throws Exception
	{
		executeCH_M_PRC_SCHDL_TEIGI_AC_SELECT_002(new String[] {ymd, ymd});
		JBSbatCommonDBInterface record = db_CH_M_PRC_SCHDL_TEIGI.selectNext();
		if (record != null)
		{
			// レコードが存在する場合
			return record.getString(JBSbatCH_M_PRC_SCHDL_TEIGI.SEIKY_YM);
		}
		else
		{
			// レコードが存在しない場合

			// 業務例外
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE, new String[] {JBSbatCH_M_PRC_SCHDL_TEIGI.TABLE_NAME});
		}
	}
	
	/**
	 * SQLKEY(AC_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	運用日付
	 *		 	運用日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_M_PRC_SCHDL_TEIGI_AC_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CH_M_PRC_SCHDL_TEIGI.selectBySqlDefine(paramList, CH_M_PRC_SCHDL_TEIGI_AC_SELECT_002);
	}
// 2017/02/10 OM-2016-0002546 ADD END
// 2017/03/14 OM-2016-0002547 Add Start

	/**
	 * ｅｏ光電話利用呼情報エラー情報を出力する。
	 * @param inMap 入力電文
	 * @param outputItem 出力情報
	 * @throws Exception
	 */
	private void outPutErrFile(JBSbatServiceInterfaceMap inMap ,JBSbatOutputItem outputItem) throws Exception {
		
		//ファイル出力用インスタンスの作成
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		
		//出力ファイル設定
		outmap.setString(JBSbatACIFM157.KAKINS_TELNO                 ,inMap.getString(JBSbatACIFM182.KAKINS_TELNO));
		outmap.setString(JBSbatACIFM157.HASHIN_TELNO                 ,inMap.getString(JBSbatACIFM182.HASHIN_TELNO));
		outmap.setString(JBSbatACIFM157.INCOMING_TELNO               ,inMap.getString(JBSbatACIFM182.INCOMING_TELNO));
		outmap.setString(JBSbatACIFM157.PCALL_STAYMD                 ,inMap.getString(JBSbatACIFM182.PCALL_STAYMD));
		outmap.setString(JBSbatACIFM157.PCALL_STA_HMS                ,inMap.getString(JBSbatACIFM182.PCALL_STA_HMS));
		outmap.setString(JBSbatACIFM157.PCALL_ENDYMD                 ,inMap.getString(JBSbatACIFM182.PCALL_ENDYMD));
		outmap.setString(JBSbatACIFM157.PCALL_END_HMS                ,inMap.getString(JBSbatACIFM182.PCALL_END_HMS));
		outmap.setString(JBSbatACIFM157.PCALL_SEC_CNT                ,setZero(inMap.getBigDecimal(JBSbatACIFM182.PCALL_SEC_CNT), 10));
		outmap.setString(JBSbatACIFM157.PCALL_DOSU                   ,setZero(inMap.getBigDecimal(JBSbatACIFM182.PCALL_DOSU), 9));
		outmap.setString(JBSbatACIFM157.PCALL_TANKA                  ,setZero(inMap.getBigDecimal(JBSbatACIFM182.PCALL_TANKA), 12));
		outmap.setString(JBSbatACIFM157.PCALL_PRC                    ,setZero(inMap.getBigDecimal(JBSbatACIFM182.PCALL_PRC), 12));
		outmap.setString(JBSbatACIFM157.PCALL_SBT                    ,inMap.getString(JBSbatACIFM182.PCALL_SBT_CD));
		outmap.setString(JBSbatACIFM157.TUWA_SVC_SKBT_CD             ,inMap.getString(JBSbatACIFM182.TUWA_SVC_SKBT_CD));
		outmap.setString(JBSbatACIFM157.CUT_RSN_DIV_SIP              ,inMap.getString(JBSbatACIFM182.CUT_RSN_DIV_SIP));
		outmap.setString(JBSbatACIFM157.CUT_RSN_DIV_ISUP             ,inMap.getString(JBSbatACIFM182.CUT_RSN_DIV_ISUP));
		outmap.setString(JBSbatACIFM157.CUT_RSN_DIV                  ,inMap.getString(JBSbatACIFM182.CUT_RSN_DIV));
		outmap.setString(JBSbatACIFM157.CUT_DTAIL_INFO_DKMK_IDX_NO   ,inMap.getString(JBSbatACIFM182.CUT_DTAIL_INFO_DKMK_IDX_NO));
		outmap.setString(JBSbatACIFM157.CUT_DTAIL_INFO_CKMK_IDX_NO   ,inMap.getString(JBSbatACIFM182.CUT_DTAIL_INFO_CKMK_IDX_NO));
		outmap.setString(JBSbatACIFM157.CUT_DTAIL_INFO_HTCK_SBT_CD   ,inMap.getString(JBSbatACIFM182.CUT_DTAIL_INFO_HTCK_SBT_CD));
		outmap.setString(JBSbatACIFM157.CHRG_DSP_CD                  ,inMap.getString(JBSbatACIFM182.CHRG_DSP_CD));
		outmap.setString(JBSbatACIFM157.EMG_KO_FLG                   ,inMap.getString(JBSbatACIFM182.EMG_KO_FLG));
		outmap.setString(JBSbatACIFM157.CHG_SIGNAL_RCV_CNT           ,setZero(inMap.getBigDecimal(JBSbatACIFM182.CHG_SIGNAL_RCV_CNT), 3));
		outmap.setString(JBSbatACIFM157.TENSO_JI_HASHIN_TELNO        ,setHashinTelNo(inMap.getString(JBSbatACIFM182.TENSO_JI_HASHIN_TELNO)));
		outmap.setString(JBSbatACIFM157.COUNTRY_NM                   ,inMap.getString(JBSbatACIFM182.COUNTRY_NM));
		outmap.setString(JBSbatACIFM157.N_050_OP_TELNO               ,inMap.getString(JBSbatACIFM182.N_050_OP_TELNO));
		outmap.setString(JBSbatACIFM157.ERR_CD                       ,JACStrConst.WKPARA_AC_MSG_HTDTLR_DBLERR);
		outmap.setString(JBSbatACIFM157.ERR_NAIYO                    ,this.acMsgHtdtlrDblErr);
		outmap.setString(JBSbatACIFM157.KOJI_DLY_REPORT_FIN_DIV      ,KOJI_DLY_REPORT_FIN_DIV_NASI);
		
		outmap.setOutFlg(true);
		
		//出力ファイルリストに設定
		outputItem.addOutMapList(outmap);
		
	}
	
	/**
	 * Double型のString変換及びゼロ埋め（左）を行う
	 * @param doubleValue
	 * @param len
	 * @return String
	 */
	private String setZero(BigDecimal decimalValue, int len)
	{
		String value = decimalValue.toString();
		
		if(value == null)
		{
			return value;
		}
		
		
		String tmp = value;
		String zero = "0";
		
		while(tmp.length() < len)
		{
			tmp = zero + tmp;
		}
		

		
		return tmp;
	}	
	
	/**
	 * 転送時発信電話番号の編集を行う
	 * @param doubleValue
	 * @param len
	 * @return String
	 */
	private String setHashinTelNo(String value)
	{
		
		if(TENSOJI_HASHIN_TELNO_DUMMY.equals(value))
		
		{
			return TENSOJI_HASHIN_TELNO_SPACE;
		}
		else
		{
			return value;
		}
	}
	
// 2017/03/14 OM-2016-0002547 Add End

}
