/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHSeikyUwDataChsht
*	ソースファイル名	：JBSbatCHSeikyUwDataChsht.java
*	作成者				：富士通　
*	作成日				：2011年08月10日
*＜機能概要＞
*　請求内訳データ抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/10   富士通		新規作成
*	v3.00		2012/05/08   FJ）冨井	【ANK-0024-04-00】ファイル項目追加・SS変更対応
*	v4.00.xx	2012/12/14	 高田		【ST4-2012-0000169】不要処理の改善・修正
*	v4.01		2013/02/16   FJ) 小柴	【内部管理番号-0000330】データ抽出時、内訳情報がない場合も合計レコード部は出力するように修正
*   v4.02		2013/02/22   FJ) 小柴   【内部管理番号-0000330】項目コード取得元の修正、一度で十分なデータ取得処理が何度も実行されていた問題の修正
*	v4.03		2013/03/06   FJ）大塚	レンジ化対応
*	v4.04		2013/04/06   FJ）藤田	【ST4-2013-0000429】請求内訳をアンローダ対応とする
*	v5.00		2013/06/11   FJ) 小柴	【LT-2013-0000235】整理番号表示フラグの設定条件を修正
*	v6.00		2013/11/15   FJ) 鈴木	【ANK-1750-00-00】請求内訳の整理番号が１種類しかない場合でも整理番号を表示するように変更
*	v8.00		2013/12/27   FJ) 伊藤	【ANK-1794-00-00】項目追加対応
*	v8.01		2014/01/23   FJ）田内	【IT1-2014-0000034】「請求内訳番号」項目追加対応
*	v8.02		2014/01/29   FJ）田内	【ANK-1589-00-00】整理番号表示フラグの設定条件を修正
*	v71.00.00   2024/04/08 	 FJ）久山   【ANK-4468-00-00】eo光ネット「シンプルプラン」追加対応
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatMatchServiceInterface;
import eo.business.common.JBSbatCHChangeGroupKei;
import eo.business.util.file.JBSbatCHIFM054;
import eo.business.util.file.JBSbatCHIFM055;
import eo.business.util.file.JBSbatCHIFM187;
import eo.business.util.table.JBSbatCH_M_PRC_KMK_CS_CHGE;
import eo.business.util.table.JBSbatCH_M_PRC_KMK_OPUT_NM;
import eo.business.util.table.JBSbatCH_T_SEIKY_UCWK;
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 JBSbatCHSeikyUwDataChsht extends JBSbatBusinessService implements JBSbatMatchServiceInterface
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(請求内訳)*/
	private static final String D_TBL_NAME_CH_T_SEIKY_UCWK = "CH_T_SEIKY_UCWK";

	/** テーブル(料金項目抽出変換)*/
	private static final String D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE = "CH_M_PRC_KMK_CS_CHGE";

	/** SQL定義キー(CH_SELECT_015)*/
	private static final String CH_M_PRC_KMK_CS_CHGE_CH_SELECT_015 = "CH_SELECT_015";

	/** テーブルアクセスクラス(請求内訳)*/
	private JBSbatSQLAccess db_CH_T_SEIKY_UCWK = null;

	/** テーブルアクセスクラス(料金項目抽出変換)*/
	private JBSbatSQLAccess db_CH_M_PRC_KMK_CS_CHGE = null;

	/** キーマッチ処理フラグ*/
	private boolean matchProcFlg;

	/** マスタファイル処理フラグ*/
	private boolean mastProcFlg;

	/** トランファイル処理フラグ*/
	private boolean tranProcFlg;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 業務機能識別コード(請求内訳データ作成)*/
	private String wKinoSkbtUcwkMake = null;
	
	/** 合計判定用リスト */
	private HashMap<String, String> tmpGokeiJdgMap = null;
	
	/** 退避．請求内訳データリスト */
	private ArrayList<JBSbatCommonDBInterface> tmpSeikyUcwkInfoList = null;
	
	/** 合計金額（0円固定用） */
	private static final int AMNT_ZERO = 0;
	
	/** SQL定義キー(CH_SELECT_001)*/
	private static final String CH_M_PRC_KMK_CS_CHGE_CH_SELECT_001 = "CH_SELECT_001";
	
	/** 請求項目抽出変換保持用（当月合計金額0円対応用） */
	private JBSbatCommonDBInterface tmpPrcKmk = null;
	
	//ANK-4468-00-00 ADD START
	/** 退避．シンプルプランID計業務パラメータ設定値データリスト*/
	private static ArrayList<String> workParamSetteValue2 = null;
	
	/** 退避．シンプルプラン料金グループ計業務パラメータ設定値データリスト*/
	private static ArrayList<String> workParamSetteValue = null;
	
	/** シンプルID計フラグ */
	private boolean simpleIdFlg = false;
	//ANK-4468-00-00 ADD END
	
	/** キーブレイク */
	boolean bKey = false;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CH_T_SEIKY_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_SEIKY_UCWK);
		db_CH_M_PRC_KMK_CS_CHGE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");
		
		// パラメータ取得クラス生成
		JACbatParamUtil paramUtil = new JACbatParamUtil(commonItem);
		
		// システムパラメータ情報を取得する
		// 業務機能識別コード取得
		wKinoSkbtUcwkMake 				= paramUtil.getGyoumuParameter(JACStrConst.WKPRA_CH_WKS_SIKY_UW_DT_MK);		// 請求内訳データ作成
		String wKinoSkbtUcwkMakeGokei 	= paramUtil.getGyoumuParameter(JACStrConst.WKPRA_CH_WKS_SIKY_UW_D_GKI);		// 請求内訳データ作成（合計）
		String wkKmkCd					= paramUtil.getGyoumuParameter(JACStrConst.WKPRA_CH_WKS_GSN_SKY_TG_MI);		// 合算請求作成（当月未精算）
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "業務機能識別コード(請求内訳データ作成）：" + wKinoSkbtUcwkMake);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "業務機能識別コード(請求内訳データ作成（合計））：" + wKinoSkbtUcwkMakeGokei);
		
		paramUtil.close();
		
		// 料金項目抽出変換マスタ情報を取得（合計判定用）
		this.tmpGokeiJdgMap = this.makePrcKmkCsChgeList(wKinoSkbtUcwkMakeGokei);
		
		// 料金項目抽出変換より、請求金額合計の項目値を取得
		tmpPrcKmk = getPrcKmk(wkKmkCd);
		
		//ANK-4468-00-00 ADD START
		//シンプルプラン業務パラメータ設定値を取得
		JBSbatCHChangeGroupKei changeGroupKei = new JBSbatCHChangeGroupKei(super.commonItem);
		workParamSetteValue2 = changeGroupKei.getWorkParamSetteValue2(JACStrConst.WK_PARA_ID_SMPLN_IDKEI, opeDate);
		workParamSetteValue = changeGroupKei.getWorkParamSetteValue(JACStrConst.WK_PARA_ID_SMPLN_GRPKEI, opeDate);
		changeGroupKei.close();
		//ANK-4468-00-00 ADD END
		
		this.tmpSeikyUcwkInfoList = new ArrayList<JBSbatCommonDBInterface>();

		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]");
		
		// 入力Ｍのみ存在する
		if (mastMap != null && tranMap == null)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍのみ存在する]");
			if (bKey)
			{
				// 請求内訳データ抽出が取得出来なかった場合
				if(this.tmpSeikyUcwkInfoList.isEmpty())
				{
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][請求内訳データ抽出・取得なし]");
					
					// 当月請求額合計レコードのみ作成する
					outSeikyUcwkGokei(mastMap, outputInItem);
					
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute][当月請求額合計データ作成]");
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");

					bKey = false;
					this.setMastProcFlg(true);
					// 主処理終了
					return outputInItem;
				}
				
				// 整理番号表示非表示判定
				this.setSeiriNoDspFlg();
				
				// 合計明細データ判定
				this.setGkDtlFlg();
				
				// 出力情報設定
				makeOutputBean(mastMap, outputInItem);
			}

			this.tmpSeikyUcwkInfoList.clear();
			bKey = false;
			this.setMastProcFlg(true);
		}
		// 入力Ｔのみ存在する
		else if (mastMap == null && tranMap != null)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｔのみ存在する]");
			if (bKey)
			{
				// 請求内訳データ抽出が取得出来なかった場合
				if(this.tmpSeikyUcwkInfoList.isEmpty())
				{
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][請求内訳データ抽出・取得なし]");
					
					// 当月請求額合計レコードのみ作成する
					outSeikyUcwkGokei(mastMap, outputInItem);
					
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute][当月請求額合計データ作成]");
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");

					bKey = false;
					this.setMastProcFlg(true);
					
					// 主処理終了
					return outputInItem;
				}
				
				// 整理番号表示非表示判定
				this.setSeiriNoDspFlg();
				
				// 合計明細データ判定
				this.setGkDtlFlg();
				
				// 出力情報設定
				makeOutputBean(mastMap, outputInItem);
			}

			this.tmpSeikyUcwkInfoList.clear();
			bKey = false;
			this.setTranProcFlg(true);
		}
		// 入力Ｍ、入力Ｔともに存在する
		else
		{
			// マッチングキー取得
			String mastKey = mastMap.getString(JBSbatCHIFM055.SEIKY_KEI_NO) + mastMap.getString(JBSbatCHIFM055.SEIKY_NO);	// 請求内訳データ抽出対象情報.請求契約番号 + 請求番号
			String tranKey = tranMap.getString(JBSbatCHIFM187.SEIKY_KEI_NO) + tranMap.getString(JBSbatCHIFM187.SEIKY_NO);	// 請求内訳出力順結合ファイル．請求契約番号 + 請求番号
			
			// 入力Ｍ＝入力Ｔ（マッチ）
			if (mastKey.compareTo(tranKey) == 0)
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍ、入力Ｔともに存在する][入力Ｍ＝入力Ｔ（マッチ）]");
				
				if (!bKey)
				{
					this.tmpSeikyUcwkInfoList.clear();
				}
				// トラン側請求内訳データ溜め込み
				getSeikyUcwk(tranMap);
				
				bKey = true;
				this.setTranProcFlg(true);
			}
			// 入力Ｍ＜入力Ｔ
			else if (mastKey.compareTo(tranKey) < 0)
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍ、入力Ｔともに存在する][入力Ｍ＜入力Ｔ]");
				
				// 請求内訳データ抽出が取得出来なかった場合
				if(this.tmpSeikyUcwkInfoList.isEmpty())
				{
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][請求内訳データ抽出・取得なし]");
					
					// 当月請求額合計レコードのみ作成する
					outSeikyUcwkGokei(mastMap, outputInItem);
					
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute][当月請求額合計データ作成]");
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");

					bKey = false;
					this.setMastProcFlg(true);
					
					// 主処理終了
					return outputInItem;
				}
				
				// 整理番号表示非表示判定
				this.setSeiriNoDspFlg();
				
				// 合計明細データ判定
				this.setGkDtlFlg();
				
				// 出力情報設定
				makeOutputBean(mastMap, outputInItem);

				this.tmpSeikyUcwkInfoList.clear();
				bKey = false;
				this.setMastProcFlg(true);
			}
			// 入力Ｍ＞入力Ｔ
			else
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍ、入力Ｔともに存在する][入力Ｍ＞入力Ｔ]");
				bKey = false;
				this.setTranProcFlg(true);
			}
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute][outputBean=" + outputInItem.getOutMapList().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		
		return outputInItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CH_T_SEIKY_UCWK.close();
		db_CH_M_PRC_KMK_CS_CHGE.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 請求内訳データを抽出します。
	 * 
	 * @param inMap 入力電文
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void getSeikyUcwk(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getSeikyUcwk]");
		
		JBSbatCommonDBInterface dbMap = new JBSbatCommonDBInterface();
		
		dbMap.setValue(JBSbatCH_T_SEIKY_UCWK.SEIRI_NO, inMap.getString(JBSbatCHIFM187.SEIRI_NO));
		dbMap.setValue(JBSbatCH_T_SEIKY_UCWK.SVC_KEI_NO, inMap.getString(JBSbatCHIFM187.SVC_KEI_NO));
		dbMap.setValue(JBSbatCH_T_SEIKY_UCWK.PRC_GRP_CD, inMap.getString(JBSbatCHIFM187.PRC_GRP_CD));
		dbMap.setValue(JBSbatCH_T_SEIKY_UCWK.PCRS_CD, inMap.getString(JBSbatCHIFM187.PCRS_CD));
		dbMap.setValue(JBSbatCH_T_SEIKY_UCWK.PRC_SVC_CD, inMap.getString(JBSbatCHIFM187.PRC_SVC_CD));
		dbMap.setValue(JBSbatCH_T_SEIKY_UCWK.PRC_KMK_CD, inMap.getString(JBSbatCHIFM187.PRC_KMK_CD));
		dbMap.setValue(JBSbatCH_T_SEIKY_UCWK.GSAN_SEIKY_YM, inMap.getString(JBSbatCHIFM187.GSAN_SEIKY_YM));
		dbMap.setValue(JBSbatCH_T_SEIKY_UCWK.USE_STAYMD, inMap.getString(JBSbatCHIFM187.USE_STAYMD));
		dbMap.setValue(JBSbatCH_T_SEIKY_UCWK.USE_ENDYMD, inMap.getString(JBSbatCHIFM187.USE_ENDYMD));
		dbMap.setValue(JBSbatCH_T_SEIKY_UCWK.AMNT, inMap.getString(JBSbatCHIFM187.AMNT));
		dbMap.setValue(JBSbatCH_M_PRC_KMK_OPUT_NM.SEIRI_NO_DSP_CTRL_FLG, inMap.getString(JBSbatCHIFM187.SEIRI_NO_DSP_CTRL_FLG));
		dbMap.setValue(JBSbatCH_M_PRC_KMK_OPUT_NM.DSP_JUN, inMap.getString(JBSbatCHIFM187.DSP_JUN));
		dbMap.setValue(JBSbatCHIFM054.SVC_DTL_SKBT_NO, inMap.getString(JBSbatCHIFM187.SVC_DTL_SKBT_NO));
		dbMap.setValue(JBSbatCHIFM054.SEIKY_UCWK_NO, inMap.getString(JBSbatCHIFM187.SEIKY_UCWK_NO));

		// 取得した情報を退避．請求内訳データリストに設定
		this.tmpSeikyUcwkInfoList.add(dbMap);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getSeikyUcwk]");
	}
	
	/**
	 * 出力情報を設定します。
	 * 
	 * @param inMap 入力電文
	 * @param outputBean 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void makeOutputBean(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputBean) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputBean]");
		
		//ANK-4468-00-00 ADD START
		//シンプルプランID計判定
		simpleIdFlg = JBSbatCHChangeGroupKei.simpleIdJudge(this.tmpSeikyUcwkInfoList, workParamSetteValue2);
		//ANK-4468-00-00 ADD END
		int listMax = this.tmpSeikyUcwkInfoList.size();
		
		// 退避．請求内訳データリストの件数分処理を行う
		for(int i = 0; i < listMax; i++ )
		{
			// 退避．請求内訳データリスト[]取得
			JBSbatCommonDBInterface dbMap 	= this.tmpSeikyUcwkInfoList.get(i);

			if (dbMap.getString(JBSbatCHIFM054.GK_DTL_FLG).equals(JACStrConst.GK_DTL_FLG_GOKEI) || inMap.getString(JBSbatCHIFM055.YOKSI_FLG).equals(JACStrConst.SEIKY_YOKSI_FLG_OFF))
			{
				JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
					
				outMap.set(JBSbatCHIFM054.DOFU_CD,			inMap.get(JBSbatCHIFM055.DOFU_CD));						// 同封コード
				outMap.set(JBSbatCHIFM054.SEIKY_KEI_NO,		inMap.get(JBSbatCHIFM055.SEIKY_KEI_NO));				// 請求契約番号
				outMap.set(JBSbatCHIFM054.SEIKY_NO,			inMap.get(JBSbatCHIFM055.SEIKY_NO));					// 請求番号
				outMap.set(JBSbatCHIFM054.PAYWAY_CD,		inMap.get(JBSbatCHIFM055.PAYWAY_CD));					// 支払方法コード
				outMap.set(JBSbatCHIFM054.SEIKY_YM,			inMap.get(JBSbatCHIFM055.SEIKY_YM));					// 請求年月
				outMap.set(JBSbatCHIFM054.SOHUS_PCD,		inMap.get(JBSbatCHIFM055.SOHUS_PCD));					// 送付先郵便番号
				outMap.set(JBSbatCHIFM054.SEIRI_NO_DSP_FLG,	dbMap.getString(JBSbatCHIFM054.SEIRI_NO_DSP_FLG));		// 整理番号表示フラグ
				outMap.set(JBSbatCHIFM054.GK_DTL_FLG,		dbMap.getString(JBSbatCHIFM054.GK_DTL_FLG));			// 合計明細フラグ
				outMap.set(JBSbatCHIFM054.SEIRI_NO,			dbMap.getString(JBSbatCH_T_SEIKY_UCWK.SEIRI_NO));		// 整理番号
				outMap.set(JBSbatCHIFM054.SVC_KEI_NO,		dbMap.getString(JBSbatCH_T_SEIKY_UCWK.SVC_KEI_NO));		// サービス契約番号
				outMap.set(JBSbatCHIFM054.PRC_SVC_CD,		dbMap.getString(JBSbatCH_T_SEIKY_UCWK.PRC_SVC_CD));		// 料金サービスコード
				outMap.set(JBSbatCHIFM054.PRC_KMK_CD,		dbMap.getString(JBSbatCH_T_SEIKY_UCWK.PRC_KMK_CD));		// 料金項目コード
				outMap.set(JBSbatCHIFM054.PCRS_CD,			dbMap.getString(JBSbatCH_T_SEIKY_UCWK.PCRS_CD));		// 料金コースコード
				outMap.set(JBSbatCHIFM054.PRC_GRP_CD,		dbMap.getString(JBSbatCH_T_SEIKY_UCWK.PRC_GRP_CD));		// 料金グループコード
				outMap.set(JBSbatCHIFM054.USE_STAYMD,		dbMap.getString(JBSbatCH_T_SEIKY_UCWK.USE_STAYMD));		// 利用開始年月日
				outMap.set(JBSbatCHIFM054.USE_ENDYMD,		dbMap.getString(JBSbatCH_T_SEIKY_UCWK.USE_ENDYMD));		// 利用終了年月日
				outMap.set(JBSbatCHIFM054.AMNT,				dbMap.getString(JBSbatCH_T_SEIKY_UCWK.AMNT));			// 金額
				outMap.set(JBSbatCHIFM054.GSAN_SEIKY_YM,	dbMap.getString(JBSbatCH_T_SEIKY_UCWK.GSAN_SEIKY_YM));	// 合算請求年月
				outMap.set(JBSbatCHIFM054.SVC_DTL_SKBT_NO,	dbMap.getString(JBSbatCHIFM187.SVC_DTL_SKBT_NO));		// サービス詳細識別番号
				outMap.set(JBSbatCHIFM054.SEIKY_UCWK_NO,	dbMap.getString(JBSbatCHIFM187.SEIKY_UCWK_NO));			// 請求内訳番号
					
				//ANK-4468-00-00 ADD START
				//シンプルプラン料金グループ計編集フラグ
				outMap.set(JBSbatCHIFM054.PRC_GRP_KEI_HENSYU_FLG,	JBSbatCHChangeGroupKei.simpleGroupJudge(simpleIdFlg, dbMap, workParamSetteValue, outMap));		// 料金グループ計編集フラグ
				//ANK-4468-00-00 ADD END
				// 出力フラグ設定
				outMap.setOutFlg(true);
				// 出力共通電文に設定
				outputBean.addOutMapList(outMap);
			}
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputBean][outputBean=" + outputBean.getOutMapList().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputBean]");
	}
	
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * @return mastProcFlg を戻します。
	 */
	public boolean isMastProcFlg()
	{
		return mastProcFlg;
	}

	/**
	 * @return matchProcFlg を戻します。
	 */
	public boolean isMatchProcFlg()
	{
		return matchProcFlg;
	}

	/**
	 * @return tranProcFlg を戻します。
	 */
	public boolean isTranProcFlg()
	{
		return tranProcFlg;
	}

	/**
	 * @param mast_ProcFlg 設定する mastProcFlg。
	 */
	public void setMastProcFlg(boolean mast_ProcFlg)
	{
		this.mastProcFlg = mast_ProcFlg;
	}

	/**
	 * @param match_ProcFlg 設定する matchProcFlg。
	 */
	public void setMatchProcFlg(boolean match_ProcFlg)
	{
		this.matchProcFlg = match_ProcFlg;
	}

	/**
	 * @param tran_ProcFlg 設定する tranProcFlg。
	 */
	public void setTranProcFlg(boolean tran_ProcFlg)
	{
		this.tranProcFlg = tran_ProcFlg;
	}

	/**
	 * SQLKEY(CH_SELECT_015)で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_CS_CHGE_CH_SELECT_015(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_CH_M_PRC_KMK_CS_CHGE.selectBySqlDefine(paramList, CH_M_PRC_KMK_CS_CHGE_CH_SELECT_015);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 料金項目抽出変換スキーマより、料金項目コードを取得する。
	 * @param wkKinoSkbtCd 業務機能識別コード
	 * @return ArrayList<String> 設定済のリスト
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private HashMap<String, String> makePrcKmkCsChgeList(String wkKinoSkbtCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makePrcKmkCsChgeList]");
		
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		// システムコード
		paramList.setValue(super.systemCode);
		
		// 業務機能識別コード
		paramList.setValue(wkKinoSkbtCd);
		
		// 抽出変換コード
		paramList.setValue(JACStrConst.CHSHT_CHG_CD_CST);
		
		// 料金項目抽出変換適用開始年月日
		paramList.setValue(super.opeDate);
		
		// 料金項目抽出変換適用終了年月日
		paramList.setValue(super.opeDate);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makePrcKmkCsChgeList][paramList=" + paramList.getList().toString() + "]");
		
		// SQL実行
		executeCH_M_PRC_KMK_CS_CHGE_CH_SELECT_015(paramList.getList().toArray());
		JBSbatCommonDBInterface dbMap = db_CH_M_PRC_KMK_CS_CHGE.selectNext();
		
		// 取得できなかった場合
		if(null == dbMap)
		{
			// ログ出力（【最重要】ＤＢ未存在エラー）
			String[] msgParam = new String[]
			{ JBSbatCH_M_PRC_KMK_CS_CHGE.TABLE_NAME, paramList.getList().toString() };
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECHB0270CH, msgParam);
		}
		
		HashMap<String, String> map = new HashMap<String, String>();
		StringBuffer sb = new StringBuffer();
		
		// 督促処理制御情報を退避
		while(null != dbMap)
		{
			sb.setLength(0);
			
			sb.append(dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PRC_GRP_CD));
			sb.append(dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PCRS_CD));
			sb.append(dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PRC_SVC_CD));
			sb.append(dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PRC_KMK_CD));
			
			map.put(sb.toString(), sb.toString());
			
			dbMap = db_CH_M_PRC_KMK_CS_CHGE.selectNext();
			
		}
		assert map != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makePrcKmkCsChgeList][strBuf = " + map.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makePrcKmkCsChgeList]");
		return map;
	}
	
	/**
	 * 整理番号表示フラグの設定を行う
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void setSeiriNoDspFlg() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setSeiriNoDspFlg]");
		
// DELETE START 2013.11.15 ANK-1750-00-00
//		// 退避．請求内訳データリスト[]．整理番号にて、異なる整理番号が二つ以上存在しているかチェック
//		HashMap<String, String> map = new HashMap<String, String>();
// DELETE END 2013.11.15 ANK-1750-00-00
		int listMax = this.tmpSeikyUcwkInfoList.size();
		
// DELETE START 2013.11.15 ANK-1750-00-00
//		for(int i = 0; i < listMax; i++ )
//		{
//			// 退避．請求内訳データリスト[]．整理番号を抽出
//			JBSbatCommonDBInterface dbMap = this.tmpSeikyUcwkInfoList.get(i);
//			String seiriNo = dbMap.getString(JBSbatCH_T_SEIKY_UCWK.SEIRI_NO);
//			
//			// 空文字の場合設定対象外
//			if(!seiriNo.trim().isEmpty())
//			{
//				map.put(seiriNo, JACStrConst.KARA_MOJI);
//			}
//		}
//
//		// 存在する場合
//		if(2 <= map.size())
//		{
//			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setSeiriNoDspFlg][２つ以上存在する場合]");
// DELETE END 2013.11.15 ANK-1750-00-00
			
		// 初期化処理
		// 退避．整理番号　←　null
		String tmpSeiriNo = null;
		
		// 退避．合算請求年月Map（合算請求年月（表示順、処理行数））
		Map<String, String[]> tmpGsanSeikyYmMap = new HashMap<String, String[]>();
		
		//退避．請求内訳データリスト[]．整理番号表示フラグ　←　"0"（表示対象外）
		for(int i = 0; i < listMax; i++ )
		{
			// 退避．請求内訳データリスト[]．整理番号表示制御フラグを抽出
			JBSbatCommonDBInterface dbMap 	= this.tmpSeikyUcwkInfoList.get(i);
			String seiriNoDspCtrlFlg 		= dbMap.getString(JBSbatCH_M_PRC_KMK_OPUT_NM.SEIRI_NO_DSP_CTRL_FLG);
			String seiriNo 					= dbMap.getString(JBSbatCH_T_SEIKY_UCWK.SEIRI_NO);
			String dspJun					= dbMap.getString(JBSbatCH_M_PRC_KMK_OPUT_NM.DSP_JUN);
			String gsanSeikyYm				= dbMap.getString(JBSbatCH_T_SEIKY_UCWK.GSAN_SEIKY_YM);
			dbMap.setValue(JBSbatCHIFM054.SEIRI_NO_DSP_FLG, JACStrConst.SEIRI_NO_DSP_FLG_TRGT_GAI);
			
			String seiriNoDspFlg = JACStrConst.KARA_MOJI;
			
			// 退避．請求内訳データリスト[]．整理番号表示制御フラグ　＝　"1"（表示） の場合
			if(JACStrConst.SEIRI_NO_DSP_CTRL_FLG_TRGT.equals(seiriNoDspCtrlFlg))
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setSeiriNoDspFlg][退避．請求内訳データリスト[]．整理番号表示制御フラグ　＝　1（表示） の場合]");
				
				
				// 退避．請求内訳データリスト[]．整理番号が設定されている かつ
				// 退避．請求内訳データリスト[]．整理番号　≠　退避．整理番号 の場合
				if(!seiriNo.trim().isEmpty() && !seiriNo.equals(tmpSeiriNo))
				{
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setSeiriNoDspFlg][整理番号がブレイク]");
					
					// 退避．請求内訳データリスト[]．整理番号表示フラグ　←　"1"（表示対象）
					// 退避．整理番号　←　退避．請求内訳データリスト[]．整理番号
					// 退避．合算請求年月Map[合算請求年月][表示順,処理行数]　←　退避．合算請求年月、退避．請求内訳データリスト[]．表示順、処理行数
					seiriNoDspFlg 	= JACStrConst.SEIRI_NO_DSP_FLG_TRGT;
					tmpSeiriNo	 	= seiriNo;
					tmpGsanSeikyYmMap.clear();
					tmpGsanSeikyYmMap.put(gsanSeikyYm, new String[]{dspJun, String.valueOf(i)});
				}
				// 上記以外
				else
				{
					// 合算請求年月Map内に退避．合算請求年月が存在し、退避．請求内訳データリスト[]．表示順　＜　退避．表示順　の時、表示対象フラグの差し替えを行う
					if (tmpGsanSeikyYmMap.containsKey(gsanSeikyYm) && tmpGsanSeikyYmMap.get(gsanSeikyYm)[0].compareTo(dspJun) > 0)
					{
						assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setSeiriNoDspFlg][退避．請求内訳データリスト[]．表示順　＜　退避．表示順　（合算請求年月既出）]");
						
						// 退避行の整理番号表示フラグを0（表示対象外）に更新
						JBSbatCommonDBInterface tmpMap = this.tmpSeikyUcwkInfoList.get(Integer.valueOf(tmpGsanSeikyYmMap.get(gsanSeikyYm)[1]));
						tmpMap.setValue(JBSbatCHIFM054.SEIRI_NO_DSP_FLG, JACStrConst.SEIRI_NO_DSP_FLG_TRGT_GAI);
						this.tmpSeikyUcwkInfoList.set(Integer.valueOf(tmpGsanSeikyYmMap.get(gsanSeikyYm)[1]), tmpMap);
						
						// 現在の処理行の整理番号表示フラグを1（表示対象）にする
						// 退避．請求内訳データリスト[]．整理番号表示フラグ　←　"1"（表示対象）
						// 退避．合算請求年月Map[合算請求年月][表示順,処理行数]　←　退避．合算請求年月、退避．請求内訳データリスト[]．表示順、処理行数
						seiriNoDspFlg 	= JACStrConst.SEIRI_NO_DSP_FLG_TRGT;
						tmpGsanSeikyYmMap.put(gsanSeikyYm, new String[]{dspJun, String.valueOf(i)});
					}
					// 合算請求年月Map内に退避．合算請求年月が存在しない場合
					else if (!tmpGsanSeikyYmMap.containsKey(gsanSeikyYm))
					{
						assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setSeiriNoDspFlg][退避．請求内訳データリスト[]．表示順　＜　退避．表示順　（合算請求年月初出）]");
						
						// 現在の処理行の整理番号表示フラグを1（表示対象）にする
						// 退避．請求内訳データリスト[]．整理番号表示フラグ　←　"1"（表示対象）
						// 退避．合算請求年月Map[合算請求年月][表示順,処理行数]　←　退避．合算請求年月、退避．請求内訳データリスト[]．表示順、処理行数
						seiriNoDspFlg 	= JACStrConst.SEIRI_NO_DSP_FLG_TRGT;
						tmpGsanSeikyYmMap.put(gsanSeikyYm, new String[]{dspJun, String.valueOf(i)});
					}
					// 退避．請求内訳データリスト[]．表示順　>=　退避．表示順の時、表示対象外とする
					else
					{
						assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setSeiriNoDspFlg][退避．請求内訳データリスト[]．表示順　>=　退避．表示順]");
						
						// 退避．請求内訳データリスト[]．整理番号表示フラグ　←　"0"（表示対象外）
						seiriNoDspFlg = JACStrConst.SEIRI_NO_DSP_FLG_TRGT_GAI;
					}
				}
			}
			// 退避．請求内訳データリスト[]．整理番号表示制御フラグ　≠　"1"（表示） の場合
			else
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setSeiriNoDspFlg][退避．請求内訳データリスト[]．整理番号表示制御フラグ　≠　1（表示） の場合]");
				
				// 退避．請求内訳データリスト[]．整理番号表示フラグ　←　"0"（表示対象外）
				seiriNoDspFlg = JACStrConst.SEIRI_NO_DSP_FLG_TRGT_GAI;
			}
			
			// 退避．請求内訳データリスト[]．整理番号表示フラグ 上記条件にあったフラグを設定
			dbMap.setValue(JBSbatCHIFM054.SEIRI_NO_DSP_FLG, seiriNoDspFlg);
			this.tmpSeikyUcwkInfoList.set(i, dbMap);
		}
// DELETE START 2013.11.15 ANK-1750-00-00
//		}
//		// 存在しない場合
//		else
//		{
//			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setSeiriNoDspFlg][２つ以上存在しない場合]");
//			
//			//退避．請求内訳データリスト[]．整理番号表示フラグ　←　"0"（表示対象外）
//			for(int i = 0; i < this.tmpSeikyUcwkInfoList.size(); i++ )
//			{
//				// 退避．請求内訳データリスト[]．整理番号を抽出
//				JBSbatCommonDBInterface dbMap = this.tmpSeikyUcwkInfoList.get(i);
//				
//				dbMap.setValue(JBSbatCHIFM054.SEIRI_NO_DSP_FLG, JACStrConst.SEIRI_NO_DSP_FLG_TRGT_GAI);
//				
//				this.tmpSeikyUcwkInfoList.set(i, dbMap);
//			}
//		}
// DELETE END 2013.11.15 ANK-1750-00-00
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setSeiriNoDspFlg]");
		return;
	}
	
	/**
	 * 合計明細フラグの設定を行う
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void setGkDtlFlg() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setGkDtlFlg]");
		
		int listMax = this.tmpSeikyUcwkInfoList.size();
		StringBuffer sb = new StringBuffer();
		
		for(int i = 0; i < listMax; i++)
		{
			// 退避．請求内訳データリスト[]．料金グループコード
			// 退避．請求内訳データリスト[]．料金コースコード
			// 退避．請求内訳データリスト[]．料金サービスコード
			// 退避．請求内訳データリスト[]．料金項目コード
			JBSbatCommonDBInterface dbMap 	= this.tmpSeikyUcwkInfoList.get(i);
			
			sb.setLength(0);
			sb.append(dbMap.getString(JBSbatCH_T_SEIKY_UCWK.PRC_GRP_CD));
			sb.append(dbMap.getString(JBSbatCH_T_SEIKY_UCWK.PCRS_CD));
			sb.append(dbMap.getString(JBSbatCH_T_SEIKY_UCWK.PRC_SVC_CD));
			sb.append(dbMap.getString(JBSbatCH_T_SEIKY_UCWK.PRC_KMK_CD));
			
			String key 		= sb.toString();
			String gkDtLFlg = null;
			
			// 退避．合計判定用マップに、下記ＫＥＹと同一のものが存在する場合
			if(this.tmpGokeiJdgMap.containsKey(key))
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setGkDtlFlg][退避．合計判定用マップに、ＫＥＹと同一のものが存在する場合]");
				
				// 退避．請求内訳データリスト[]．合計明細フラグ　←　"1"（合計）
				gkDtLFlg = JACStrConst.GK_DTL_FLG_GOKEI;
				
			}
			// 上記以外の場合
			else
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setGkDtlFlg][退避．合計判定用マップに、ＫＥＹと同一のものが存在しない場合]");
				
				// ・退避．請求内訳データリスト[]．合計明細フラグ　←　"2"（明細）
				gkDtLFlg = JACStrConst.GK_DTL_FLG_DTL;
			}
			
			// 退避．請求内訳データリスト[]．合計明細フラグ 上記条件にあったフラグを設定
			dbMap.setValue(JBSbatCHIFM054.GK_DTL_FLG, gkDtLFlg);
			this.tmpSeikyUcwkInfoList.set(i, dbMap);
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setGkDtlFlg]");
		return;
	}
	
	/**
	 * 請求内訳情報（当月請求額合計のみ）を作成し、出力を行う。
	 * 
	 * @param outputInItem 出力電文
	 * @param togetuFlg 当月請求有フラグ trueで当月請求有
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outSeikyUcwkGokei(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputBean) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outSeikyUcwkGokei]");
		
		// 請求内訳情報（当月請求額合計のみ）のレコード生成
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		outMap.setString(JBSbatCHIFM054.DOFU_CD, 			inMap.getString(JBSbatCHIFM055.DOFU_CD));						// 同封コード
		outMap.setString(JBSbatCHIFM054.SEIKY_KEI_NO, 		inMap.getString(JBSbatCHIFM055.SEIKY_KEI_NO));					// 請求契約番号
		outMap.setString(JBSbatCHIFM054.SEIKY_NO, 			inMap.getString(JBSbatCHIFM055.SEIKY_NO));						// 請求番号
		outMap.setString(JBSbatCHIFM054.PAYWAY_CD, 			inMap.getString(JBSbatCHIFM055.PAYWAY_CD));						// 支払方法コード
		outMap.setString(JBSbatCHIFM054.SEIKY_YM, 			inMap.getString(JBSbatCHIFM055.SEIKY_YM));						// 請求年月
		outMap.setString(JBSbatCHIFM054.SOHUS_PCD, 			inMap.getString(JBSbatCHIFM055.SOHUS_PCD));						// 郵便番号
		outMap.setString(JBSbatCHIFM054.SEIRI_NO_DSP_FLG, 	JACStrConst.SEIRI_NO_DSP_FLG_TRGT_GAI);							// 整理番号表示フラグ
		outMap.setString(JBSbatCHIFM054.GK_DTL_FLG, 		JACStrConst.GK_DTL_FLG_GOKEI);									// 合計明細フラグ
		outMap.setString(JBSbatCHIFM054.SEIRI_NO, 			JACStrConst.SEIRI_NO_SP);										// 整理番号
		outMap.setString(JBSbatCHIFM054.SVC_KEI_NO, 		JACStrConst.SVC_KEI_NO_SP);										// サービス契約番号
		outMap.setString(JBSbatCHIFM054.PRC_GRP_CD, 		tmpPrcKmk.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PRC_GRP_CD));	// 料金グループコード
		outMap.setString(JBSbatCHIFM054.PCRS_CD, 			tmpPrcKmk.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PCRS_CD));		// 料金コースコード
		outMap.setString(JBSbatCHIFM054.PRC_SVC_CD, 		tmpPrcKmk.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PRC_SVC_CD));	// 料金サービスコード
		outMap.setString(JBSbatCHIFM054.PRC_KMK_CD, 		tmpPrcKmk.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PRC_KMK_CD));	// 料金項目コード
		outMap.setString(JBSbatCHIFM054.USE_STAYMD, 		JACStrConst.KARA_MOJI);											// 利用開始年月日
		outMap.setString(JBSbatCHIFM054.USE_ENDYMD, 		JACStrConst.KARA_MOJI);											// 利用終了年月日
		outMap.setBigDecimal(JBSbatCHIFM054.AMNT, 			AMNT_ZERO);														// 金額
		outMap.setString(JBSbatCHIFM054.GSAN_SEIKY_YM, 		inMap.getString(JBSbatCHIFM055.SEIKY_YM));						// 合算請求年月
		outMap.setString(JBSbatCHIFM054.SVC_DTL_SKBT_NO, 	JACStrConst.KARA_MOJI);											// サービス識別詳細番号
		outMap.setString(JBSbatCHIFM054.SEIKY_UCWK_NO,		JACStrConst.KARA_MOJI);											// 請求内訳番号
		//ANK-4468-00-00 ADD START
		outMap.setString(JBSbatCHIFM054.PRC_GRP_KEI_HENSYU_FLG,		JACStrConst.KARA_MOJI);									// 料金グループ計編集フラグ
		//ANK-4468-00-00 ADD END
		outMap.setOutFlg(true);
		
		// 出力共通電文に設定
		outputBean.addOutMapList(outMap);
		
		assert outMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][outSeikyUcwkGokei][請求内訳情報（当月請求額合計のみ）=" + outMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outSeikyUcwkGokei]");
	}
	
	/** 料金項目を取得します。
	 * 
	 * @param wKinoSkbt 業務機能識別コード
	 * @return JBSbatCommonDBInterface 取得結果
	 * @throws Exception業務サービス内で発生した例外全般
	 */
	private JBSbatCommonDBInterface getPrcKmk(String wKinoSkbt) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getPrcKmk]");
		
		// ＤＢアクセス用のパラメータ定義
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();

		// 対象キーの設定
		dbList.setValue(wKinoSkbt); 						// 業務機能識別コード
		dbList.setValue(super.systemCode); 					// システムコード
		dbList.setValue(JACStrConst.CHSHT_CHG_CD_CST); 		// 抽出変換コード（抽出のみ） 
		dbList.setValue(super.opeDate); 					// バッチ運用日
		dbList.setValue(super.opeDate); 					// バッチ運用日
		
		// 料金情報取得
		executeCH_M_PRC_KMK_CS_CHGE_CH_SELECT_001(dbList.getList().toArray());
		
		JBSbatCommonDBInterface prcKmkMap = db_CH_M_PRC_KMK_CS_CHGE.selectNext();
		if(prcKmkMap == null)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][料金項目抽出変換に該当データなし]");
			
			// 【最重要】DB未存在エラー
			String[] msgParam = new String[]{JBSbatCH_M_PRC_KMK_CS_CHGE.TABLE_NAME, wKinoSkbt};
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECHB0270CH, msgParam);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getPrcKmk]");
		
		return prcKmkMap;
	}
	
	/**
	 * SQLKEY(CH_SELECT_001)で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_CS_CHGE_CH_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_CH_M_PRC_KMK_CS_CHGE.selectBySqlDefine(paramList, CH_M_PRC_KMK_CS_CHGE_CH_SELECT_001);
	}
}
