/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACCatJsHdopMhSksi
*	ソースファイル名	：JBSbatACCatJsHdopMhSksi.java
*	作成者				：富士通　
*	作成日				：2012年01月18日
*＜機能概要＞
*　ＫＣＡＴ事業者間精算ＨＤＯＰ明細表作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/01/18   富士通		新規作成
*	v3.00		2012/08/03   FJ）冨井	【TGI-2012-0000054】ダミーレコード設定位置修正
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import eo.business.common.JACBatCommon;
import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JACbatRknBusinessUtil;
import eo.business.common.JACbatSchdlUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatACIFM107;
import eo.business.util.file.JBSbatACIFM113;
import eo.business.util.table.JBSbatAC_M_FILE_OPUT_CTRL;
import eo.business.util.table.JBSbatCH_M_PRC_KMK_OPUT_NM;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JPCFomatString;
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;
import eo.framework.util.JBSbatBusinessFileUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatACCatJsHdopMhSksi extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(ファイル出力制御)*/
	private static final String D_TBL_NAME_AC_M_FILE_OPUT_CTRL = "AC_M_FILE_OPUT_CTRL";

	/** テーブル(料金項目出力名称)*/
	private static final String D_TBL_NAME_CH_M_PRC_KMK_OPUT_NM = "CH_M_PRC_KMK_OPUT_NM";

	/** SQL定義キー(AC_SELECT_006)*/
	private static final String AC_M_FILE_OPUT_CTRL_AC_SELECT_006 = "AC_SELECT_006";

	/** SQL定義キー(AC_SELECT_006)*/
	private static final String CH_M_PRC_KMK_OPUT_NM_AC_SELECT_006 = "AC_SELECT_006";

	/** テーブルアクセスクラス(ファイル出力制御)*/
	private JBSbatSQLAccess db_AC_M_FILE_OPUT_CTRL = null;

	/** テーブルアクセスクラス(料金項目出力名称)*/
	private JBSbatSQLAccess db_CH_M_PRC_KMK_OPUT_NM = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 出力元項目コード："0" */
	private static final String OUT_MT_KMK_CD_ZERO  			= "0";
	/** 項目編集識別："1" */
	private static final String KMK_HENSHU_SKBT_CD_ONE 		= "1";
	/** 名称識別コード："1" */
	private static final String NM_SKBT_CD_ONE 				= "1";
	/** 横位置：１ */
	private static final String SIDE_1 						= "1";
	/** 横位置：２ */
	private static final String SIDE_2 						= "2";
	/** 横位置：３ */
	private static final String SIDE_3 						= "3";
	/** 横位置：４ */
	private static final String SIDE_4 						= "4";
	/** 横位置：５ */
	private static final String SIDE_5 						= "5";
	/** 横位置：６ */
	private static final String SIDE_6 						= "6";
	/** 横位置：７ */
	private static final String SIDE_7 						= "7";
	/** 横位置：８ */
	private static final String SIDE_8 						= "8";
	/** 横位置：９ */
	private static final String SIDE_9 						= "9";
	
	/** 出力識別：０ */
	private static final int 	OUT_SKBT_ZERO 	= 0;
	/** 出力識別：１(料金コース) */
	private static final int 	OUT_SKBT_ONE 	= 1;
	/** 出力識別：２(オプション) */
	private static final int 	OUT_SKBT_TWO 	= 2;
	
	/** 退避.ＫＣＡＴ事業者間精算ＨＤＯＰ明細表ファイルID */
	private String acKcatHdopDtlFid							= null;
	/** 退避.ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_基本契約行 */
	private String acKcatHdopKkFid								= null;
	/** 退避.ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_料金コース行 */
	private String acKcatHdopPcFid								= null;
	/** 退避.ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_料金コース合計行 */
	private String acKcatHdopRcgFid 							= null;
	/** 退避.ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_オプション行 */
	private String acKcatHdopOpFid 							= null;
	/** 退避.ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_オプション合計行 */
	private String acKcatHdopOpgFid 							= null;
	/** 退避.請求年月 */
	private String seikyYM 									= null;
	/** 退避.精算金額（料金コース合計） */
	private BigDecimal rcgSsnAmnt								= BigDecimal.ZERO;
	/** 退避.精算金額（オプション合計） */
	private BigDecimal opgSsnAmnt 								= BigDecimal.ZERO;
	/** 料金スケジュール定義アクセス部品 */
	private JACbatSchdlUtil schdlUtil 							= null;
	
	/** ファイル名（フルパス） */
	private String fileNm = JACStrConst.KARA_MOJI;
	
	/** ファイルインスタンス */
	private JBSbatBusinessFileUtil outFileObj = null;
	
	/** 出力件数 */
	private int outputCnt = 0;
	
	/** 出力情報設定キーリスト */
	private ArrayList<String>outputKeyList = null;
	
	/** 出力情報 */
	private HashMap<String, Object> tmpOutputInf = null;
	
	/** ヘッダ情報リスト */
	private List<HashMap<String, String>> headerInfoList 	= new ArrayList<HashMap<String, String>>();
	/** 基本契約行用リストマップ */
	private HashMap<String, List<HashMap<String, String>>> meisaiKkInfoListMap 	= new HashMap<String, List<HashMap<String, String>>>();
	/** 料金コース行用リストマップ */
	private HashMap<String, List<HashMap<String, String>>> meisaiPcInfoListMap 	= new HashMap<String, List<HashMap<String, String>>>();
	/** オプション行用リストマップ */
	private HashMap<String, List<HashMap<String, String>>> meisaiOpInfoListMap 	= new HashMap<String, List<HashMap<String, String>>>();
	/** 料金コース合計行用リスト */
	private List<HashMap<String, String>> meisaiRcgInfoList 	= new ArrayList<HashMap<String, String>>();
	/** オプション合計行用リスト */
	private List<HashMap<String, String>> meisaiOpgInfoList 	= new ArrayList<HashMap<String, String>>();
	
	/** 退避.料金項目名称取得キー */
	private ArrayList<String> prcKmkKey 						= null;
	/** 退避.料金項目名称マップ */
	private HashMap<String, String> prcKmkNmMap 				= null;
	
	/**料金コース行カウント */
	private int pcCnt = 0;
	/**オプション行カウント */
	private int opCnt = 0;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_AC_M_FILE_OPUT_CTRL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_M_FILE_OPUT_CTRL);
		db_CH_M_PRC_KMK_OPUT_NM = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_KMK_OPUT_NM);
		
		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 + "]");
		
		// パラメータ取得クラス生成
		JACbatParamUtil paramUtil 	= new JACbatParamUtil(commonItem);
		// ＫＣＡＴ事業者間精算ＨＤＯＰ明細表ファイルID
		this.acKcatHdopDtlFid		= paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_KCAT_HDOP_DTL_FID);
		// ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_基本契約行
		this.acKcatHdopKkFid		= paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_KCAT_HDOP_KK_FID);
		// ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_料金コース行
		this.acKcatHdopPcFid		= paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_KCAT_HDOP_PC_FID);
		// ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_料金コース合計行
		this.acKcatHdopRcgFid		= paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_KCAT_HDOP_RCG_FID);
		// ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_オプション行
		this.acKcatHdopOpFid		= paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_KCAT_HDOP_OP_FID);
		// ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_オプション合計行
		this.acKcatHdopOpgFid		= paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_KCAT_HDOP_OPG_FID);
		
		paramUtil.close();

		// 料金スケジュール定義アクセス部品初期処理
		schdlUtil = new JACbatSchdlUtil(commonItem);
		// 請求年月取得
		this.seikyYM = schdlUtil.getBillDate(super.opeDate, JACStrConst.EVENT_CD_PRC_CALC_DAY);
		schdlUtil.close();

		// FREEITEMの取得
		String[] freeItems = super.freeItem.split(JACStrConst.SEMI_COLON);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][freeItems=" + freeItems[0] + ", " + freeItems[1] + "]");
		
		// ファイル生成します。
		// （引数：バッチ共通パラメータ, ファイルID, ファイル分割有無, ファイル連番, 請求年月, 自由設定, 文字コード, 変換前改行コード）
		ArrayList<Object> fileInf = JACBatCommon.geneFile(commonItem,
															this.acKcatHdopDtlFid,
															freeItems[0], 
															freeItems[1], 
															this.seikyYM, 
															JACStrConst.KARA_MOJI, 
															JACStrConst.KARA_MOJI, 
															JACStrConst.KARA_MOJI, 
															JACStrConst.LINE_CRLF);
		
		this.fileNm = (String)fileInf.get(0);							// ファイル名（フルパス）
		this.outFileObj = (JBSbatBusinessFileUtil)fileInf.get(2);		// ファイルインスタンス
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][fileNm=" + this.fileNm + "]");
		
		// 出力情報設定キーリストを作成します。
		this.makeOutputKeyList();

		// ヘッダ情報リスト作成
		this.headerInfoList = makeInfo(this.acKcatHdopDtlFid, JACStrConst.OUTDATASKBT_HEADER);
		// ヘッダ情報編集・出力
		outHeaderInfo();
		// 料金項目名称取得
		makePrcKmkNm();
		// 明細情報取得
		getMeisaiInfo();
		// 合計行情報取得
		getSummaryInfo();
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");

		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 情報リスト作成処理
	 * @param  gyoParaID   ファイルID
	 * @param  outDataSkbt 出力データ識別コード
	 * @return infoList    情報リスt
	 * @throws Exception   業務サービス内で発生した例外全般。
	 */
	private List<HashMap<String, String>> makeInfo(String gyoParaID, String outDataSkbt) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeInfo]");
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		paramList.setValue(super.systemCode);	// システムコード
		paramList.setValue(gyoParaID);			// ファイルID
		paramList.setValue(outDataSkbt);		// 出力データ識別コード
		paramList.setValue(super.opeDate);		// バッチ運用日
		paramList.setValue(super.opeDate);		// バッチ運用日
		paramList.setValue(super.opeDate);		// バッチ運用日
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeInfo][paramList=" + paramList.getList().toString() + "]");

		// SQL実行
		executeAC_M_FILE_OPUT_CTRL_AC_SELECT_006(paramList.getList().toArray());
		JBSbatCommonDBInterface dbMap = db_AC_M_FILE_OPUT_CTRL.selectNext();
		// ファイル出力情報用リスト
		ArrayList<HashMap<String, String>> infoList = null;
		// 結果取得
		if(dbMap != null)
		{
			// ファイル出力情報用リスト
			infoList = new ArrayList<HashMap<String, String>>();
			while (dbMap != null)
			{
				HashMap<String, String> tmpMap = new HashMap<String, String>();
				tmpMap.put(JBSbatAC_M_FILE_OPUT_CTRL.PRC_KMK_CD, 			dbMap.getString(JBSbatAC_M_FILE_OPUT_CTRL.PRC_KMK_CD)); 		// 料金項目コード
				tmpMap.put(JBSbatAC_M_FILE_OPUT_CTRL.LENGTH_POSITION, 		dbMap.getString(JBSbatAC_M_FILE_OPUT_CTRL.LENGTH_POSITION));	// 縦位置
				tmpMap.put(JBSbatAC_M_FILE_OPUT_CTRL.SIDE_POSITION, 		dbMap.getString(JBSbatAC_M_FILE_OPUT_CTRL.SIDE_POSITION));		// 横位置
				tmpMap.put(JBSbatAC_M_FILE_OPUT_CTRL.OUTPUT_MT_KMK_CD, 		dbMap.getString(JBSbatAC_M_FILE_OPUT_CTRL.OUTPUT_MT_KMK_CD));	// 出力元項目コード
				tmpMap.put(JBSbatAC_M_FILE_OPUT_CTRL.KMK_HENSHU_SKBT_CD, 	dbMap.getString(JBSbatAC_M_FILE_OPUT_CTRL.KMK_HENSHU_SKBT_CD));	// 項目編集識別コード
				tmpMap.put(JBSbatAC_M_FILE_OPUT_CTRL.NM_SKBT_CD, 			dbMap.getString(JBSbatAC_M_FILE_OPUT_CTRL.NM_SKBT_CD));			// 名称識別コード
				if(NM_SKBT_CD_ONE.equals(tmpMap.get(JBSbatAC_M_FILE_OPUT_CTRL.NM_SKBT_CD)))
				{
					tmpMap.put(JBSbatAC_M_FILE_OPUT_CTRL.OUTPUT_KMK, 			this.prcKmkNmMap.get(tmpMap.get(JBSbatAC_M_FILE_OPUT_CTRL.PRC_KMK_CD)));
				}
				else
				{
					tmpMap.put(JBSbatAC_M_FILE_OPUT_CTRL.OUTPUT_KMK, 			dbMap.getString(JBSbatAC_M_FILE_OPUT_CTRL.OUTPUT_KMK));			// 出力項目
				}
				// リストにマップを格納
				infoList.add(tmpMap);
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeInfo][tmpMap=" + tmpMap.toString() + "]");
				tmpMap = null;
				dbMap = db_AC_M_FILE_OPUT_CTRL.selectNext();
			}
		}
		else
		{
			// DB未存在エラー
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeInfo][DB未存在エラー]");
			String[] outCntMsg = {JBSbatAC_M_FILE_OPUT_CTRL.TABLE_NAME, paramList.getList().toString()};
			// エラーログ出力（エラーコード："EACB0240CW"（DB未存在エラー））
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0240CW, outCntMsg);
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeInfo]");
		return infoList;
	}

	/**
	 * ヘッダ情報編集・出力
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void outHeaderInfo() throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outHeaderInfo]");
		
		// 出力情報格納用マップ
		HashMap<String, Object> tmpMap 		= new HashMap<String, Object>();
		// ヘッダ情報リスト≠nullの場合
		if(this.headerInfoList != null)
		{
			for(HashMap<String, String> meisaiInfo1 :headerInfoList)
			{
				// 基本契約行作成処理
				createOutput(null, tmpMap, meisaiInfo1, OUT_SKBT_ZERO);
			}

		}
		// 出力情報退避
		this.tmpOutputInf = tmpMap;
		// ファイル出力
		outputRecord();
		
		// ログ出力
		String[] outCntMsg = {JACStrConst.LOG_MSG_INITIAL, String.valueOf(this.outputCnt)};
		super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0560AI, outCntMsg);
		
		// 退避．出力件数クリア
		this.outputCnt = 0;
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outHeaderInfo]");
	}

	/**
	 * 出力情報作成処理
	 * @param  outMap      出力情報
	 * @param  setteiValue 設定値
	 * @param  sidePs      横位置
	 * @throws Exception   業務サービス内で発生した例外全般。
	 */
	private void makeOutInfo(HashMap<String, Object> outMap
														, String setteiValue
														, String sidePs) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutInfo]");
		// 横位置：１
		if(SIDE_1.equals(sidePs))
		{
			outMap.put(JBSbatACIFM113.SORT_KEY, 		setteiValue);	// ソートキー
		}
		// 横位置：２
		if(SIDE_2.equals(sidePs))
		{
			outMap.put(JBSbatACIFM113.BUNRUI, 		setteiValue);	// 分類
		}
		// 横位置：３
		if(SIDE_3.equals(sidePs))
		{
			outMap.put(JBSbatACIFM113.SSN_NM, 		setteiValue);	// 精算名称
		}
		// 横位置：４
		if(SIDE_4.equals(sidePs))
		{
			outMap.put(JBSbatACIFM113.HD_CHANNEL_CNT, 		setteiValue);	// ＨＤｃｈ数
		}
		// 横位置：５
		if(SIDE_5.equals(sidePs))
		{
			outMap.put(JBSbatACIFM113.DATA_CNY, 		setteiValue);	// データ数
		}
		// 横位置：６
		if(SIDE_6.equals(sidePs))
		{
			outMap.put(JBSbatACIFM113.TANI, 			setteiValue);	// 単位
		}
		// 横位置：７
		if(SIDE_7.equals(sidePs))
		{
			outMap.put(JBSbatACIFM113.TANKA, 		setteiValue);	// 単価
		}
		// 横位置：８
		if(SIDE_8.equals(sidePs))
		{
			outMap.put(JBSbatACIFM113.SHIKI, 		setteiValue);	// 式
		}
		// 横位置：９
		if(SIDE_9.equals(sidePs))
		{
			outMap.put(JBSbatACIFM113.SSN_AMNT, 	setteiValue);	// 精算金額
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutInfo]");
	}

	/**
	 * 料金項目名称マップ作成
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void makePrcKmkNm() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getPrcKmkNm]");
		JBSbatCommonDBInterface paramList		 	= new JBSbatCommonDBInterface();

		// 料金項目名称マップ初期化
		this.prcKmkNmMap = new HashMap<String, String>();
		// 退避.料金項目コード
		String prcKmkCd 	= null;
		
		paramList.setValue(JACStrConst.PRC_KMK_NM_SBT_CD_JGSYA_KMK_NM);	// 料金項目名称種別コード
		paramList.setValue(super.opeDate);								// バッチ運用日
		paramList.setValue(super.opeDate);								// バッチ運用日
		paramList.setValue(super.opeDate);								// バッチ運用日
		// SQL実行
		executeCH_M_PRC_KMK_OPUT_NM_AC_SELECT_006(paramList.getList().toArray());
		JBSbatCommonDBInterface dbMap = db_CH_M_PRC_KMK_OPUT_NM.selectNext();
		// 料金項目名称マップ作成
			// 結果取得
		if(dbMap != null)
		{
			while(dbMap != null)
			{
				// 料金項目名称マップに値を格納する。料金項目コード：キー 料金項目名称：値
				this.prcKmkNmMap.put(dbMap.getString(JBSbatCH_M_PRC_KMK_OPUT_NM.PRC_KMK_CD), dbMap.getString(JBSbatCH_M_PRC_KMK_OPUT_NM.PRC_KMK_NM));
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getPrcKmkNm][prcKmkCd=" + prcKmkCd + "]");
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint	,
														"[L][getPrcKmkNm][PRC_KMK_NM=" + dbMap.getString(JBSbatCH_M_PRC_KMK_OPUT_NM.PRC_KMK_NM) + "]");
				dbMap = db_CH_M_PRC_KMK_OPUT_NM.selectNext();
			}
		}
		else
		{
			// DB未存在エラー
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getPrcKmkNm][DB未存在エラー]");
			String[] outCntMsg = {JBSbatCH_M_PRC_KMK_OPUT_NM.TABLE_NAME, paramList.getList().toString()};
			// エラーログ出力（エラーコード："EACB0240CW"（DB未存在エラー））
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0240CW, outCntMsg);
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getPrcKmkNm]");
	}

	/**
	 * 明細情報リストマップ作成
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getMeisaiInfo() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getMeisaiSummaryInfo]");

		// 退避.料金項目名称取得キーを初期化
		this.prcKmkKey = new ArrayList<String>();
		// 明細情報リストマップ作成 ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_基本契約行
		this.meisaiKkInfoListMap = makeMeisaiInfoListMap(makeInfo(this.acKcatHdopKkFid, JACStrConst.OUTDATASKBT_DTL));
		// 明細情報リストマップ作成 ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_料金コース行
		this.meisaiPcInfoListMap = makeMeisaiInfoListMap(makeInfo(this.acKcatHdopPcFid, 		JACStrConst.OUTDATASKBT_DTL));
		// 明細情報リストマップ作成 ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_オプション行
		this.meisaiOpInfoListMap = makeMeisaiInfoListMap(makeInfo(this.acKcatHdopOpFid,	 	JACStrConst.OUTDATASKBT_DTL));

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getMeisaiSummaryInfo]");
	}

	/**
	 * 合計行リスト作成
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getSummaryInfo() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getSummaryInfo]");

		// 明細情報リスト作成 ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_料金コース合計行
		this.meisaiRcgInfoList = makeInfo(this.acKcatHdopRcgFid, JACStrConst.OUTDATASKBT_DTL);
		// 明細情報リスト作成 ＫＣＡＴ事業者間精算ＨＤＯＰ明細表_オプション合計行
		this.meisaiOpgInfoList = makeInfo(this.acKcatHdopOpgFid, JACStrConst.OUTDATASKBT_DTL);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getSummaryInfo]");
	}

	/**
	 * 明細情報リストマップ作成
	 * @param  tmpList             明細情報リスト
	 * @return meisaiInfoListMap   明細情報リストマップ
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private HashMap<String, List<HashMap<String, String>>> makeMeisaiInfoListMap(List<HashMap<String, String>> tmpList) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeMeisaiInfoListMap]");
		// 明細リストマップ
		HashMap<String, List<HashMap<String, String>>> meisaiInfoListMap = new HashMap<String, List<HashMap<String, String>>>();
		// 明細情報リスト≠nullの場合
		if(tmpList != null)
		{
			// 明細リスト
			List<HashMap<String, String>> meisaiList 	= new ArrayList<HashMap<String, String>>();
			// 退避.料金項目コード
			String prcKmkCd 							= null;
			// 明細情報カウンタ
			int tmpCnt 									= 0;

			// 取得結果がある限り処理を続ける
			while(tmpList.size() > tmpCnt)
			{
				// 明細情報.料金項目コード≠退避.料金項目コードの場合
				if(!tmpList.get(tmpCnt).get(JBSbatAC_M_FILE_OPUT_CTRL.PRC_KMK_CD).equals(prcKmkCd))
				{
					// 退避.料金項目コード≠nullの場合
					if(prcKmkCd != null)
					{
						// 明細情報リストを明細情報リストマップに格納
						meisaiInfoListMap.put(prcKmkCd, meisaiList);
						// 退避.料金項目名称取得キーに情報マップ.料金項目コードを格納
						this.prcKmkKey.add(prcKmkCd);
						// 明細情報リストを初期化
						meisaiList = new ArrayList<HashMap<String, String>>();
					}
					// 明細情報.料金項目コードを退避.料金項目コードに格納
					prcKmkCd = tmpList.get(tmpCnt).get(JBSbatAC_M_FILE_OPUT_CTRL.PRC_KMK_CD);
				}
				// 明細リストに取得結果した情報マップを格納
				meisaiList.add(tmpList.get(tmpCnt));
				tmpCnt++;
			}
			// 退避.料金項目コード≠nullの場合
			if(prcKmkCd != null)
			{
				// 明細情報リストマップにキーと値を格納
				meisaiInfoListMap.put(prcKmkCd, meisaiList);
				// 退避.料金項目名称取得キーに情報マップ.料金項目コードを格納
				this.prcKmkKey.add(prcKmkCd);
			}
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeMeisaiInfoListMap]");
		return meisaiInfoListMap;
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @param outputInItem 入力情報
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert 	inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][inMap=" + inMap.getMap().toString() + "]") : true;
		
		//1件目のレコードの場合
		if(!outputInItem.isOutMapList())
		{
			// ダミーレコードセット
			outputInItem.addOutMapList(new JBSbatServiceInterfaceMap());
		}
		
		// 出力情報格納用マップ
		HashMap<String, Object> tmpMap 			= new HashMap<String, Object>();
		
		// 入力情報＝nullの場合
		if(null == inMap)
		{
			// 料金コース合計行作成処理
			if(this.meisaiRcgInfoList != null)
			{
				for(HashMap<String, String> meisaiInfo :this.meisaiRcgInfoList)
				{
					createOutput(inMap, tmpMap, meisaiInfo, OUT_SKBT_ZERO);
				}
				tmpMap.put(JBSbatACIFM113.SSN_AMNT, this.rcgSsnAmnt);	// 精算金額
				
				// 出力情報退避
				this.tmpOutputInf.putAll(tmpMap);
				// ファイル出力処理
				outputRecord();
			}
			
			// オプション合計行作成処理作成処理
			if(this.meisaiOpgInfoList != null)
			{
				for(HashMap<String, String> meisaiInfo :this.meisaiOpgInfoList)
				{
					createOutput(inMap, tmpMap, meisaiInfo, OUT_SKBT_ZERO);
				}
				tmpMap.put(JBSbatACIFM113.SSN_AMNT, this.opgSsnAmnt);	// 精算金額
				// 出力情報退避
				this.tmpOutputInf.putAll(tmpMap);
				// ファイル出力処理
				outputRecord();
			}
			
			String[] outCntMsg = {JACStrConst.LOG_MSG_EXECUTE, String.valueOf(this.outputCnt)};
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0560AI, outCntMsg);
			
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
			return outputInItem;
		}

		// 基本契約行用リストマップを入力情報.料金項目コードで検索した結果がtrue
		if(this.meisaiKkInfoListMap.containsKey(inMap.get(JBSbatACIFM107.PRC_KMK_CD)))
		{
			for(HashMap<String, String> meisaiInfo :meisaiKkInfoListMap.get(inMap.get(JBSbatACIFM107.PRC_KMK_CD)))
			{
				// 基本契約行作成処理
				createOutput(inMap, tmpMap, meisaiInfo, OUT_SKBT_ZERO);
				// 出力情報退避
				this.tmpOutputInf.putAll(tmpMap);
			}
		}

		// 料金コース行用リストマップを入力情報.料金項目コードで検索した結果がtrue
		if(this.meisaiPcInfoListMap.containsKey(inMap.get(JBSbatACIFM107.PRC_KMK_CD)))
		{
			// 料金コース行の件数カウント
			this.pcCnt++;
			
			for(HashMap<String, String> meisaiInfo :meisaiPcInfoListMap.get(inMap.get(JBSbatACIFM107.PRC_KMK_CD)))
			{
				// 料金コース行作成処理
				createOutput(inMap, tmpMap, meisaiInfo, OUT_SKBT_ONE);
			}
			// 精算金額を計算して設定する
			BigDecimal ssnAmnt = multiSsnAmnt(tmpMap);
			
			// 精算金額（料金コース合計）の加算
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][ssnAmnt=" + ssnAmnt + "]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][rcgSsnAmnt=" + this.rcgSsnAmnt + "]");
			this.rcgSsnAmnt = this.rcgSsnAmnt.add(ssnAmnt);
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][rcgSsnAmnt=" + this.rcgSsnAmnt + "]");
			// 出力情報退避
			this.tmpOutputInf.putAll(tmpMap);
		}

		// オプション行用リストマップを入力情報.料金項目コードで検索した結果がtrue
		if(this.meisaiOpInfoListMap.containsKey(inMap.get(JBSbatACIFM107.PRC_KMK_CD)))
		{
			// オプション行の件数カウント
			this.opCnt++;
			
			for(HashMap<String, String> meisaiInfo :meisaiOpInfoListMap.get(inMap.get(JBSbatACIFM107.PRC_KMK_CD)))
			{
				// オプション行作成処理
				createOutput(inMap, tmpMap, meisaiInfo, OUT_SKBT_TWO);
			}
			
			// 精算金額を計算して設定する
			BigDecimal optSsnAmnt = multiSsnAmnt(tmpMap);
			// 精算金額（オプション合計）の加算
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][ssnAmnt=" + optSsnAmnt + "]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][rcgSsnAmnt=" + this.opgSsnAmnt + "]");
			this.opgSsnAmnt = this.opgSsnAmnt.add(optSsnAmnt);
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][rcgSsnAmnt=" + this.opgSsnAmnt + "]");
			// 出力情報退避
			this.tmpOutputInf.putAll(tmpMap);
		}
			
		// 出力されていない情報が存在している場合
		if(!this.tmpOutputInf.isEmpty())
		{
			// ファイル出力処理
			outputRecord();
		}
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return outputInItem;
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 精算金額を計算する
	 * @param  tmpMap     出力用マップ
	 * @return ssnAmnt    精算金額
	 */

	private BigDecimal multiSsnAmnt(HashMap<String, Object> tmpMap)
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][multiSsnAmnt]");
		// 精算金額
		BigDecimal result = BigDecimal.ZERO;
		
		BigDecimal dataCny = new BigDecimal(tmpMap.get(JBSbatACIFM113.DATA_CNY).toString());			// データ数
		BigDecimal hdChannelCnt = new BigDecimal(tmpMap.get(JBSbatACIFM113.HD_CHANNEL_CNT).toString());	// ＨＤｃｈ数
		BigDecimal tanka = new BigDecimal(tmpMap.get(JBSbatACIFM113.TANKA).toString());					// 単価
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][multiSsnAmnt][データ数=" + dataCny + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][multiSsnAmnt][ＨＤｃｈ数=" + hdChannelCnt + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][multiSsnAmnt][単価=" + tanka + "]");
		
		// 精算金額を計算する
		result = dataCny.multiply(hdChannelCnt).multiply(tanka);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][multiSsnAmnt][小数点以下切り捨て前=" + result + "]");
		// 小数点以下切り捨て
		result = JACbatRknBusinessUtil.round(JACStrConst.ROUND_DOWN, result, 0);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][multiSsnAmnt][小数点以下切り捨て後=" + result + "]");

		tmpMap.put(JBSbatACIFM113.SSN_AMNT, result);	// 精算金額
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][multiSsnAmnt]");
		return result;
	}

	/**
	 * 出力用マップ作成
	 * @param  inMap      入力電文
	 * @param  tmpMap     出力用マップ
	 * @param  meisaiInfo 明細情報
	 * @param  outSkbtFlg 出力識別フラグ
	 * @return tmpMap     出力用マップ
	 * @throws Exception  業務サービス内で発生した例外全般。
	 */
	private void createOutput(JBSbatServiceInterfaceMap inMap, 
								HashMap<String, Object> tmpMap, 
								HashMap<String, String> meisaiInfo, 
													int outSkbtFlg) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][createOutput]");

		// 入力情報リスト
		ArrayList<String> inMapList 	= null;
		// 設定値
		String setteiValue 				= null;
		// 横位置
		String sidePs 					= null;
		// 横位置取得
		sidePs = meisaiInfo.get(JBSbatAC_M_FILE_OPUT_CTRL.SIDE_POSITION).toString();
		
		// 出力識別フラグが0でないかつ横位置が5の場合
		if(outSkbtFlg != OUT_SKBT_ZERO
			&& SIDE_5.equals(sidePs))
		{
			// 出力識別が料金コースである場合
			if(outSkbtFlg == OUT_SKBT_ONE)
			{
				// 設定値に料金コース行カウントを設定
				setteiValue = Integer.toString(pcCnt);
			}
			// オプションの場合
			else
			{
				// 設定値にオプション行カウントを設定
				setteiValue = Integer.toString(opCnt);
			}
		}
		else
		{
			// ファイル出力制御情報.出力元項目コード＝"0"の場合
			if(OUT_MT_KMK_CD_ZERO.equals(meisaiInfo.get(JBSbatAC_M_FILE_OPUT_CTRL.OUTPUT_MT_KMK_CD)))
			{
				setteiValue = meisaiInfo.get(JBSbatAC_M_FILE_OPUT_CTRL.OUTPUT_KMK);
			}
			// ファイル出力制御情報.出力元項目コード≠"0"の場合
			else if(inMap != null)
			{
				inMapList 	= new ArrayList<String>();
				// 入力情報リスト作成
				inMapList = makeInMapList(inMap);
				setteiValue = inMapList.get(Integer.parseInt(meisaiInfo.get(JBSbatAC_M_FILE_OPUT_CTRL.OUTPUT_MT_KMK_CD)) - 1);
			}
		}
		
		// 項目編集識別コード＝"1"の場合
		if(KMK_HENSHU_SKBT_CD_ONE.equals(meisaiInfo.get(JBSbatAC_M_FILE_OPUT_CTRL.KMK_HENSHU_SKBT_CD)))
		{
			// 設定値をカンマ区切り編集
			setteiValue = JPCFomatString.formatNumber(setteiValue);
		}
		
		// 明細情報作成処理
		makeOutInfo(tmpMap, setteiValue, sidePs);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][createOutput]");
	}

	/**
	 * 入力情報リスト作成
	 * @param  inMap     入力電文
	 * @return inMapList 入力情報リスト
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private ArrayList<String> makeInMapList(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeInMapList]");
		// 入力情報リスト
		ArrayList<String> inMapList = new ArrayList<String>();
		
		inMapList.add(inMap.getString(JBSbatACIFM107.SEIKY_KEI_NO));	//  1.請求先番号
		inMapList.add(inMap.getString(JBSbatACIFM107.SEIKY_YM));		//  2.請求年月
		inMapList.add(inMap.getString(JBSbatACIFM107.SVC_NO));			//  3.サービス番号
		inMapList.add(inMap.getString(JBSbatACIFM107.SVC_SKBT_CD));		//  4.料金サービス識別コード
		inMapList.add(inMap.getString(JBSbatACIFM107.PCRS_CD));			//  5.料金コースコード
		inMapList.add(inMap.getString(JBSbatACIFM107.PRC_SVC_CD));		//  6.料金サービスコード
		inMapList.add(inMap.getString(JBSbatACIFM107.PRC_KMK_CD));		//  7.料金項目コード
		inMapList.add(inMap.getString(JBSbatACIFM107.JIGYOSHA_CD));		//  8.事業者コード
		inMapList.add(inMap.getString(JBSbatACIFM107.JIGYOSHA_KEI_CD));	//  9.事業者契約コード
		inMapList.add(inMap.getBigDecimal(JBSbatACIFM107.PRC).toString());				// 10.料金
		inMapList.add(inMap.getBigDecimal(JBSbatACIFM107.SSN_CNT).toString());			// 11.精算項目件数
		inMapList.add(inMap.getString(JBSbatACIFM107.USE_STAYMD));		// 12.利用開始日
		inMapList.add(inMap.getString(JBSbatACIFM107.USE_ENDYMD));		// 13.利用終了日
		inMapList.add(inMap.getString(JBSbatACIFM107.AIT_DIV));			// 14.相対区分
		inMapList.add(inMap.getString(JBSbatACIFM107.SIME_DAY));		// 15.締め日
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeInMapList][inMapList=" + inMapList.toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeInMapList]");
		return inMapList;
	}
	
	/**
	 * 出力情報設定キーリストを作成します。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void makeOutputKeyList() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputKeyList]");
		
		this.outputKeyList = new ArrayList<String>(25);
		
		this.outputKeyList.add(JBSbatACIFM113.SORT_KEY);			// ソートキー
		this.outputKeyList.add(JBSbatACIFM113.BUNRUI);				// 分類
		this.outputKeyList.add(JBSbatACIFM113.SSN_NM);				// 精算名称
		this.outputKeyList.add(JBSbatACIFM113.HD_CHANNEL_CNT);		// ＨＤｃｈ数
		this.outputKeyList.add(JBSbatACIFM113.DATA_CNY);			// データ数
		this.outputKeyList.add(JBSbatACIFM113.TANI);				// 単位
		this.outputKeyList.add(JBSbatACIFM113.TANKA);				// 単価
		this.outputKeyList.add(JBSbatACIFM113.SHIKI);				// 式
		this.outputKeyList.add(JBSbatACIFM113.SSN_AMNT);			// 精算金額
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputKeyList][=" + this.outputKeyList.toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputKeyList]");
	}
	
	/**
	 * ファイルを出力します。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void outputRecord() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outputRecord]");
		
		// ファイル出力を行う
		JCCBatCommon.printBusinessFileUtil(this.outFileObj, this.chgMapToList());
		
		this.outputCnt++;		// 出力件数カウントアップ
		
		this.tmpOutputInf.clear();		// 出力情報クリア
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outputRecord]");
	}
	
	/**
	 * マップをリストに詰め替えます。
	 * 
	 * @return ArrayList 出力情報（リスト）
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private ArrayList<Object> chgMapToList() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][chgMapToList]");
		
		ArrayList<Object> outList = new ArrayList<Object>(25);
		
		int size = this.outputKeyList.size();
		
		for(int i = 0; i < size; i++)
		{
			// 出力情報キーリスト．VALUEが出力情報のキーに含まれる場合
			if(this.tmpOutputInf.containsKey(this.outputKeyList.get(i)))
			{
				Object value = this.tmpOutputInf.get(this.outputKeyList.get(i));
				
				// 出力情報の値がnullの場合
				if(value == null)
				{
					outList.add(JACStrConst.KARA_MOJI);		// 空文字
				}
				// 上記以外の場合
				else
				{
					outList.add(value);						// 取得した値
				}
			}
			else
			{
				outList.add(JACStrConst.KARA_MOJI);		// 空文字
			}
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][chgMapToList][outList=" + outList.toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][chgMapToList]");
		return outList;
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_AC_M_FILE_OPUT_CTRL.close();
		
		// ファイルインスタンスがNULLでない場合
		if(null != this.outFileObj)
		{
			// ファイルクローズ
			JCCBatCommon.closeBusinessFileUtil(this.outFileObj);
		}
		db_CH_M_PRC_KMK_OPUT_NM.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/

	/**
	 * SQLKEY(AC_SELECT_006)で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 executeAC_M_FILE_OPUT_CTRL_AC_SELECT_006(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());

		// DBアクセスを実行します
		db_AC_M_FILE_OPUT_CTRL.selectBySqlDefine(paramList, AC_M_FILE_OPUT_CTRL_AC_SELECT_006);
	}

	/**
	 * SQLKEY(AC_SELECT_006)で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_KMK_OPUT_NM_AC_SELECT_006(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_CH_M_PRC_KMK_OPUT_NM.selectBySqlDefine(paramList, CH_M_PRC_KMK_OPUT_NM_AC_SELECT_006);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
