/*********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名			：eo顧客基幹システム
 *	モジュール名		：JBSbatACFtthTsnryoShukGokei
 *	ソースファイル名	：JBSbatACFtthTsnryoShukGokei.java
 *	作成者				：富士通　
 *	作成日				：2012年03月15日
 *＜機能概要＞
 *　ＦＴＴＨ通信量情報集計（合計登録用）部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2012/03/15   富士通		新規作成
 *	v3.00		2012/05/23   FJ)永田	【ANK-0024-04-00】
 *	v3.01		2012/08/30   FJ)冨井	【ST2-2012-0001602】FTTH通信合計更新修正
 *	v4.00		2012/09/11   FJ)冨井	【ANK-0363-00-00】従量料金、ＦＴＴＨ通信明細検索修正　FTTH通信量合計情報出力ファイル出力条件追加
 *	v4.00		2013/01/10   FJ)高田	【ST4-2013-0000043】配列更新化・SQL修正
 *	v4.01		2013/02/05   FJ)狭間	【ST4-2013-0000144】性能改善の為、ＤＢ入出力をアンロード・ロード化
 *	v4.02		2013/02/27   FJ)浜口	利用通信量合計出力の不備を修正
 *	v4.03		2013/04/03   FJ)狭間	【ST4-2013-0000345】更なる性能改善を目指し、削除処理をシェル内に移動
 *	v4.04		2013/04/03   FJ)狭間	【ST2-2013-0001703】ACIFM132001に出力内容不具合を修正
 *	v4.05		2013/04/24   FJ)狭間	【ST4-2013-0000XXX】オンライン24時間対策
 *********************************************************************/
package eo.business.service;

import java.math.BigDecimal;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatRknBusinessUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatMatchServiceInterface;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatACIFM132;
import eo.business.util.file.JBSbatACIFM187;
import eo.business.util.file.JBSbatACIFM188;
import eo.common.constant.JACStrConst;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;

/**
 * (クラスの機能概要)
 * <p>
 *<BR>
 * 
 * @author 富士通
 */
public class JBSbatACFtthTsnryoShukGokei extends JBSbatBusinessService
		implements JBSbatMatchServiceInterface {
	/** ▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼ */
	/** キーマッチ処理フラグ */
	private boolean matchProcFlg;

	/** マスタファイル処理フラグ */
	private boolean mastProcFlg;

	/** トランファイル処理フラグ */
	private boolean tranProcFlg;

	/** テーブル(ＦＴＴＨ通信合計)*/
	private static final String D_TBL_NAME_AC_T_FTTH_TUSHIN_GK = "AC_T_FTTH_TUSHIN_GK";

	/** テーブルアクセスクラス(ＦＴＴＨ通信合計)*/
	private JBSbatSQLAccess db_AC_T_FTTH_TUSHIN_GK_INSERT = null;
	private JBSbatSQLAccess db_AC_T_FTTH_TUSHIN_GK_UPDATE = null;
/** ▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲ */

	/** 割り算用：1000 */
	private static final BigDecimal THOUSAND = new BigDecimal("1000");

	/** 変換済利用通信量 */
	private BigDecimal chgUseTsn = null;
	/** 利用通信量合計 */
	private BigDecimal useTsnGk  = null;
	/** FTTH通信合計_更新フラグ */
	private String ftthTsnUpdFlg = null;
	/** 実行JOBID */
	private String job = null;
	/** JOBID(ＦＴＴＨ通信量情報集計（合計登録用）) */
	private static final String JOB_EO3190110J0 = "EO3190110J0";

	private String dataFromFlg = null;
	private final String fromMast = "1";
	private final String fromTran = "2";

	/**
	 * 初期処理
	 * 
	 * @param JBSbatCommonItem
	 *            commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception {
		/** ▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼ */
		/** ▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼ */
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_AC_T_FTTH_TUSHIN_GK_INSERT = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_T_FTTH_TUSHIN_GK);
		db_AC_T_FTTH_TUSHIN_GK_UPDATE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_T_FTTH_TUSHIN_GK);
		/** ▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲ */
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][freeItem=" + super.freeItem + "]");
		job = commonItem.getJobid();

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
		/** ▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲ */
	}

	/**
	 * 主処理
	 * 
	 * @param mastMap
	 *            　入力電文（ＦＴＴＨ通信合計）
	 * @param tranMap
	 *            　入力電文（ＦＴＴＨ通信明細集計）
	 * @param outputInItem
	 *            入力情報
	 * @return JBSbatOutputItem 出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap mastMap,
			JBSbatServiceInterfaceMap tranMap, JBSbatOutputItem outputInItem)
			throws Exception {
		/** ▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼ */
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert mastMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][mastMap=" + mastMap.getMap().toString() + "]") : true;
		assert tranMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][tranMap=" + tranMap.getMap().toString() + "]") : true;

		this.ftthTsnUpdFlg = null;
		this.dataFromFlg = null;

		// 入力Ｍのみ存在する
		if (mastMap != null && tranMap == null) {
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint,"[L][execute][入力Ｍのみ存在する]");
			this.dataFromFlg = this.fromMast;
			this.setMastProcFlg(true);
		}
		// 入力Ｔのみ存在する
		else if (mastMap == null && tranMap != null) {
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint,"[L][execute][入力Ｔのみ存在する]");
			this.dataFromFlg = this.fromTran;
			// FTTH通信合計_更新フラグ＝"0"(追加)
			this.ftthTsnUpdFlg = JACStrConst.FTTH_TSN_GK_IN;
			this.setTranProcFlg(true);
		}
		// 入力Ｍ、入力Ｔともに存在する
		else {
			// マッチングキー取得
			// ＦＴＴＨ通信合計．サービス契約番号 + ＦＴＴＨ通信合計．料金コースコード + ＦＴＴＨ通信合計．料金サービスコード
			// + ＦＴＴＨ通信合計．請求契約番号 + ＦＴＴＨ通信合計．請求年月 + ＦＴＴＨ通信合計．利用年月
			String mastKey = mastMap.getString(JBSbatACIFM188.SVC_KEI_NO)
					+ mastMap.getString(JBSbatACIFM188.PCRS_CD)
					+ mastMap.getString(JBSbatACIFM188.PRC_SVC_CD)
					+ mastMap.getString(JBSbatACIFM188.SEIKY_KEI_NO)
					+ mastMap.getString(JBSbatACIFM188.SEIKY_YM)
					+ mastMap.getString(JBSbatACIFM188.USE_YM);
			// ＦＴＴＨ通信明細集計．サービス契約番号 + ＦＴＴＨ通信明細集計．料金コースコード + ＦＴＴＨ通信明細集計．料金サービスコード
			// + ＦＴＴＨ通信明細集計．請求契約番号 + ＦＴＴＨ通信明細集計．請求年月 + ＦＴＴＨ通信合計．通信明細集計
			String tranKey = tranMap.getString(JBSbatACIFM187.SVC_KEI_NO)
					+ tranMap.getString(JBSbatACIFM187.PCRS_CD)
					+ tranMap.getString(JBSbatACIFM187.PRC_SVC_CD)
					+ tranMap.getString(JBSbatACIFM187.SEIKY_KEI_NO)
					+ tranMap.getString(JBSbatACIFM187.SEIKY_YM)
					+ tranMap.getString(JBSbatACIFM187.USE_YM);

			// 入力Ｍ＝入力Ｔ（マッチ）
			if (mastKey.compareTo(tranKey) == 0) {
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint,"[L][execute][入力Ｍ、入力Ｔともに存在する][入力Ｍ＝入力Ｔ（マッチ）]");

				this.dataFromFlg = this.fromTran;
				// FTTH通信合計_更新フラグ＝"1"(更新)
				this.useTsnGk = mastMap.getBigDecimal(JBSbatACIFM188.USE_TSRYO_GK);
				this.ftthTsnUpdFlg = JACStrConst.FTTH_TSN_GK_UPD;
				this.setMastProcFlg(true);
				this.setTranProcFlg(true);
			}
			// 入力Ｍ＜入力Ｔ
			else if (mastKey.compareTo(tranKey) < 0) {
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint,"[L][execute][入力Ｍ、入力Ｔともに存在する][入力Ｍ＜入力Ｔ]");
				this.dataFromFlg = this.fromMast;
				this.setMastProcFlg(true);
			}
			// 入力Ｍ＞入力Ｔ
			else {
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint,"[L][execute][入力Ｍ、入力Ｔともに存在する][入力Ｍ＞入力Ｔ]");
				this.dataFromFlg = this.fromTran;
				// FTTH通信合計_更新フラグ＝"0"(追加)
				this.ftthTsnUpdFlg = JACStrConst.FTTH_TSN_GK_IN;
				this.setTranProcFlg(true);
			}
		}

		if (this.fromTran.equals(this.dataFromFlg)) {
			// 利用通信量≠nullの場合
			if (tranMap.getBigDecimal(JBSbatACIFM187.USE_TSRYO) != null) {
				// 利用通信量変換処理:(小数点以下切り上げ))
				this.chgUseTsn = JACbatRknBusinessUtil.round(
						JACStrConst.ROUND_UP, tranMap.getBigDecimal(
								JBSbatACIFM187.USE_TSRYO).divide(THOUSAND), 0);
			}
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint,"[L][execute][chgUseTsn=" + this.chgUseTsn + "]");

			// ＦＴＴＨ通信量情報集計（合計登録用）実行時のみFTTH通信量合計情報を出力
			if (JOB_EO3190110J0.equals(this.job)) {
				// サービス契約．従量超過通知要否 ＝ 1（要）の場合
				if (JACStrConst.JURYO_CHOK_TCHI_YH_Y.equals(tranMap
						.getString(JBSbatACIFM187.JURYO_CHOK_TCHI_YH))) {
					// FTTH通信量合計情報出力
					JBSbatServiceInterfaceMap outMap = outputFtthTsnGkInfo(tranMap);
					outputInItem.addOutMapList(outMap);
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint,"[L][execute][FTTH通信量合計情報出力]");
				}
			}

			// FTTH通信合計_更新フラグ＝"1"(更新)の場合
			if (JACStrConst.FTTH_TSN_GK_UPD.equals(this.ftthTsnUpdFlg)) {
				// ＦＴＴＨ通信合計登録データ出力
				this.updateFtthTsnGK(tranMap);
			}
			// FTTH通信合計_更新フラグ＝"0"(追加)の場合
			else {
				// ＦＴＴＨ通信合計登録データ出力
				this.insertFtthTsnGK(tranMap);
			}
		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return outputInItem;
		/** ▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲ */
	}

	/**
	 * 業務サービス終了処理
	 * 
	 * @throws Exception
	 */
	public void terminal() throws Exception {
		/** ▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼ */

		db_AC_T_FTTH_TUSHIN_GK_INSERT.clearBatch();
		db_AC_T_FTTH_TUSHIN_GK_UPDATE.clearBatch();
		
		/** ▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼ */
		// DBアクセスクラスをクローズします
		db_AC_T_FTTH_TUSHIN_GK_INSERT.close();
		db_AC_T_FTTH_TUSHIN_GK_UPDATE.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;
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	利用通信量合計				USE_TSRYO_GK
	 *		 	更新年月日時分秒			UPD_DTM
	 *		 	更新オペレータアカウント	UPD_OPEACNT
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	SVC_KEI_NO
	 *		 	PCRS_CD
	 *		 	PRC_SVC_CD
	 *		 	USE_YM
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeAC_T_FTTH_TUSHIN_GK_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("USE_TSRYO_GK", setParam[0]);
		setMap.setValue("UPD_DTM", setParam[1]);
		setMap.setValue("UPD_OPEACNT", setParam[2]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("SVC_KEI_NO", whereParam[0]);
		whereMap.setValue("PCRS_CD", whereParam[1]);
		whereMap.setValue("PRC_SVC_CD", whereParam[2]);
		whereMap.setValue("USE_YM", whereParam[3]);

		// DBアクセスを実行します
		db_AC_T_FTTH_TUSHIN_GK_UPDATE.updateByPrimaryKeysBatch(whereMap, setMap, 1);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	サービス契約番号			SVC_KEI_NO
	 *		 	料金コースコード			PCRS_CD
	 *		 	料金サービスコード			PRC_SVC_CD
	 *		 	請求契約番号				SEIKY_KEI_NO
	 *		 	請求年月					SEIKY_YM
	 *		 	利用年月					USE_YM
	 *		 	利用通信量合計				USE_TSRYO_GK
	 *		 	補正通信量合計				HOSEI_TSRYO_GK
	 *		 	超過通知コード				CHOK_TCHI_CD
	 *		 	登録年月日時分秒			ADD_DTM
	 *		 	登録オペレータアカウント	ADD_OPEACNT
	 *		 	更新年月日時分秒			UPD_DTM
	 *		 	更新オペレータアカウント	UPD_OPEACNT
	 *		 	削除年月日時分秒			DEL_DTM
	 *		 	削除オペレータアカウント	DEL_OPEACNT
	 *		 	無効フラグ					MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeAC_T_FTTH_TUSHIN_GK_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("SVC_KEI_NO", setParam[0]);
		setMap.setValue("PCRS_CD", setParam[1]);
		setMap.setValue("PRC_SVC_CD", setParam[2]);
		setMap.setValue("SEIKY_KEI_NO", setParam[3]);
		setMap.setValue("SEIKY_YM", setParam[4]);
		setMap.setValue("USE_YM", setParam[5]);
		setMap.setValue("USE_TSRYO_GK", setParam[6]);
		setMap.setValue("HOSEI_TSRYO_GK", setParam[7]);
		setMap.setValue("CHOK_TCHI_CD", setParam[8]);
		setMap.setValue("ADD_DTM", setParam[9]);
		setMap.setValue("ADD_OPEACNT", setParam[10]);
		setMap.setValue("UPD_DTM", setParam[11]);
		setMap.setValue("UPD_OPEACNT", setParam[12]);
		setMap.setValue("DEL_DTM", setParam[13]);
		setMap.setValue("DEL_OPEACNT", setParam[14]);
		setMap.setValue("MK_FLG", setParam[15]);
	
		// DBアクセスを実行します
		db_AC_T_FTTH_TUSHIN_GK_INSERT.insertByPrimaryKeysBatch(setMap);
	}
	/** ▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲ */
	
	/**
	 * FTTH通信合計更新処理
	 * @param tsnMeisaiMap 通信明細マップ
	 * @throws Exception   業務サービス内で発生した例外全般。
	 */
	private void updateFtthTsnGK(JBSbatServiceInterfaceMap tsnMeisaiMap) throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][updateFtthTsnGK]");
		// 設定項目
		JBSbatCommonDBInterface setParam 	= new JBSbatCommonDBInterface();
		// 設定条件
		JBSbatCommonDBInterface whereParam 	= new JBSbatCommonDBInterface();
		
		setParam.setValue(this.chgUseTsn); 											// 変換済利用通信量
		setParam.setValue(JCCBatCommon.getSysDateTimeStamp()); 						// システム日時
		setParam.setValue(JACStrConst.OPEACNT_SYSTEM); 								// オペレータアカウント
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updateFtthTsnGK][setParam=" + setParam.getList().toString() + "]");
		whereParam.setValue(tsnMeisaiMap.getString(JBSbatACIFM187.SVC_KEI_NO)); 	// サービス契約番号
		whereParam.setValue(tsnMeisaiMap.getString(JBSbatACIFM187.PCRS_CD)); 		// 料金コースコード
		whereParam.setValue(tsnMeisaiMap.getString(JBSbatACIFM187.PRC_SVC_CD)); 	// 料金サービスコード
		whereParam.setValue(tsnMeisaiMap.getString(JBSbatACIFM187.USE_YM)); 		// 利用年月
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updateFtthTsnGK][whereParam=" + whereParam.getList().toString() + "]");
		// FTTH通信合計更新
		executeAC_T_FTTH_TUSHIN_GK_PKUPDATE(setParam.getList().toArray(), whereParam.getList().toArray());
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][updateFtthTsnGK]");
	}

	/**
	 * FTTH通信合計追加処理
	 * @param tsnMeisaiMap 通信明細マップ
	 * @throws Exception   業務サービス内で発生した例外全般。
	 */
	private void insertFtthTsnGK(JBSbatServiceInterfaceMap tsnMeisaiMap) throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][insertFtthTsnGK]");
		// 設定項目
		JBSbatCommonDBInterface setParam 	= new JBSbatCommonDBInterface();
		setParam.setValue(tsnMeisaiMap.getString(JBSbatACIFM187.SVC_KEI_NO)); 	// サービス契約番号
		setParam.setValue(tsnMeisaiMap.getString(JBSbatACIFM187.PCRS_CD)); 		// 料金コースコード
		setParam.setValue(tsnMeisaiMap.getString(JBSbatACIFM187.PRC_SVC_CD)); 	// 料金サービスコード
		setParam.setValue(tsnMeisaiMap.getString(JBSbatACIFM187.SEIKY_KEI_NO)); // 請求契約番号
		setParam.setValue(tsnMeisaiMap.getString(JBSbatACIFM187.SEIKY_YM)); 	// 請求年月
		setParam.setValue(tsnMeisaiMap.getString(JBSbatACIFM187.USE_YM)); 		// 利用年月
		setParam.setValue(this.chgUseTsn); 										// 利用通信量合計
		setParam.setValue(0); 													// 補正通信量合計
		setParam.setValue(JACStrConst.CHOK_TCHI_CD_MI); 						// 超過通知コード
		setParam.setValue(null); 												// 登録年月日時分秒
		setParam.setValue(null); 												// 登録オペレータアカウント
		setParam.setValue(null); 												// 更新年月日時分秒
		setParam.setValue(null); 												// 更新オペレータアカウント
		setParam.setValue(null); 												// 削除年月日時分秒
		setParam.setValue(null); 												// 削除オペレータアカウント
		setParam.setValue(null); 												// 無効フラグ
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][insertFtthTsnGK][setParam=" + setParam.getList().toString() + "]");
		// FTTH通信合計追加
		executeAC_T_FTTH_TUSHIN_GK_PKINSERT(setParam.getList().toArray());
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][insertFtthTsnGK]");
	}

	/**
	 * FTTH通信量合計情報出力
	 * 
	 * @param tempMap
	 *            通信明細マップ
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap outputFtthTsnGkInfo(
			JBSbatServiceInterfaceMap tempMap) throws Exception {
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint,"[S][outputFtthTsnGkInfo]");
		// FTTH通信量合計情報リスト

		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();

		outMap.set(JBSbatACIFM132.SVKEI_NO,		tempMap.getString(JBSbatACIFM187.SVC_KEI_NO));		// サービス契約番号
		outMap.set(JBSbatACIFM132.PCRS_CD,		tempMap.getString(JBSbatACIFM187.PCRS_CD));			// 料金コースコード
		outMap.set(JBSbatACIFM132.PRC_SVC_CD,	tempMap.getString(JBSbatACIFM187.PRC_SVC_CD));		// 料金サービスコード
		outMap.set(JBSbatACIFM132.SEIKY_KEI_NO,	tempMap.getString(JBSbatACIFM187.SEIKY_KEI_NO));	// 請求契約番号
		outMap.set(JBSbatACIFM132.SEIKY_YM,		tempMap.getString(JBSbatACIFM187.SEIKY_YM));		// 請求年月
		outMap.set(JBSbatACIFM132.RIYOU_YM,		tempMap.getString(JBSbatACIFM187.USE_YM));			// 利用年月

		// FTTH通信合計_更新フラグ＝"1"(更新)の場合
		if (JACStrConst.FTTH_TSN_GK_UPD.equals(this.ftthTsnUpdFlg)) {
			outMap.set(JBSbatACIFM132.TUSHINRYOGKEI_MAE, this.useTsnGk); // 利用料金合計
		}
		// FTTH通信合計_更新フラグ＝"0"(追加)の場合
		else {
			outMap.set(JBSbatACIFM132.TUSHINRYOGKEI_MAE, BigDecimal.ZERO); // 利用料金合計
		}

		outMap.set(JBSbatACIFM132.TUSHINRYOGKEI_ATO, this.chgUseTsn); // 利用通信量合計

		// 出力フラグを設定する
		outMap.setOutFlg(true);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint,"[E][outputFtthTsnGkInfo]");

		return outMap;

	}
}
