/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHSeikyUwDataChshtTeisei
*	ソースファイル名	：JBSbatCHSeikyUwDataChshtTeisei.java
*	作成者				：富士通　
*	作成日				：2023年06月15日
*＜機能概要＞
*  修正版請求内訳データ抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v67.00.00	2023/06/15  FJ)枡岡		【ANK-4401-00-00】インボイス対応 新規作成
*				2023/08/08	FJ)松永		【IT1-2023-0000026】過去月の料金変更がある請求データが取得できない
*				2023/08/16	FJ)松永		【ANK-4401-14-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.Map;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatCHChangeGroupKei;
import eo.business.util.file.JBSbatCHIFM054;
import eo.business.util.file.JBSbatCHIFM427;
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 JBSbatCHSeikyUwDataChshtTeisei extends JBSbatBusinessService
{
	/** テーブル(請求内訳)*/
	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;
	
	//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

// IT1-2023-0000026 DEL START
//	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
//	/** キーマッチ処理フラグ*/
//	private boolean matchProcFlg;
//
//	/** マスタファイル処理フラグ*/
//	private boolean mastProcFlg;
//
//	/** トランファイル処理フラグ*/
//	private boolean tranProcFlg;
//	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
// IT1-2023-0000026 DEL END
	
	/** 業務機能識別コード(請求内訳データ作成)*/
	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;
	
// IT1-2023-0000026 DEL START
//	/** キーブレイク */
//	boolean bKey = false;
// IT1-2023-0000026 DEL END

// ANK-4401-14-00 DEL START
//	/** 送信不可理由_01 */
//	private static final String SENDS_FUKA_RIYU_01 = "請求書抑止あり";
//	
//	/** 送信不可理由_02 */
//	private static final String SENDS_FUKA_RIYU_02 = "請求内訳抑止あり";
//	
//	/** 抑止内容_01 */
//	private static final String SEIKY_YOKSI_CD_01 = "請求書等発行抑止";
//	
//	/** 抑止内容_02 */
//	private static final String SEIKY_YOKSI_CD_02 = "請求書等内訳発行抑止";

// IT1-2023-0000026 ADD START
	
//	/** 請求書送信不可リスト重複確認用セット */
//	private HashSet<String> sksSendFukaSet = null;
// ANK-4401-14-00 DEL END
	
	/** 請求内訳リスト初期化制御キー */
	private String seikyUcwkListInitCtrlKey = null;

	/** 空白 */
	private String BLANK = "";
// IT1-2023-0000026 ADD END
	
	/**
	 * 初期処理
	 * @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>();
		
// ANK-4401-14-00 DEL START
//		this.sksSendFukaSet = new HashSet<String>();
// ANK-4401-14-00 DEL END

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}
	
// IT1-2023-0000026 ADD START
	/**
	 * 主処理
	 * @param inMap 入力電文
	 * @param outputInItem 入力情報
	 * @return outputInItem 出力情報
	 * @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;
		
		ArrayList<JBSbatServiceInterfaceMap> inMapList = new ArrayList<JBSbatServiceInterfaceMap>();
		
		// ■最終レコード後はここで終了
		if(inMap == null)
		{
			// 入力電文を初期化
			inMap = new JBSbatServiceInterfaceMap();
			
			// 出力リストに設定していた最終行の情報を取得
			JBSbatServiceInterfaceMap map = (JBSbatServiceInterfaceMap) outputInItem.getOutMapList().get(0);
			
			// 最終レコードの請求契約番号・請求年月を入力電文に格納
			inMap.setString(JBSbatCHIFM427.SEIKY_KEI_NO, map.getString(JBSbatCHIFM427.SEIKY_KEI_NO));
			inMap.setString(JBSbatCHIFM427.SEIKY_YM, map.getString(JBSbatCHIFM427.SEIKY_YM));
			
			// 出力リストを初期化
			outputInItem.clearOutMapList();
			
			// 整理番号表示非表示判定
			this.setSeiriNoDspFlg();

			// 合計明細データ判定
			this.setGkDtlFlg();
			
			// 溜め込んだ請求内訳データを出力電文．出力リストに設定
			this.makeOutputBean(outputInItem);
			
			// 処理終了
			return outputInItem;
		}
		
		// キー生成
		String tempKey = inMap.getString(JBSbatCHIFM427.SEIKY_KEI_NO) + inMap.getString(JBSbatCHIFM427.SEIKY_YM);
		
		// 請求内訳リスト初期化制御キーがNULLまたは空、一時キーと値が同じ場合
		if (seikyUcwkListInitCtrlKey == null || seikyUcwkListInitCtrlKey.isEmpty() || seikyUcwkListInitCtrlKey.equals(tempKey))
		{
			if (seikyUcwkListInitCtrlKey == null || seikyUcwkListInitCtrlKey.isEmpty())
			{
				// 請求内訳リスト初期化制御キー
				seikyUcwkListInitCtrlKey = inMap.getString(JBSbatCHIFM427.SEIKY_KEI_NO) + inMap.getString(JBSbatCHIFM427.SEIKY_YM);
			}
			// 請求内訳データを溜め込む
			this.getSeikyUcwk(inMap);
			
			// 出力はしないが、最終レコード後に処理が継続するよう出力情報には常に処理中のレコードの情報を出力情報．出力リストに格納。
			inMapList.add(inMap);
			outputInItem.setOutMapList(inMapList);
		}
		else
		{
			// 出力情報．出力リストをクリア
			outputInItem.clearOutMapList();
			
			// 整理番号表示非表示判定
			this.setSeiriNoDspFlg();

			// 合計明細データ判定
			this.setGkDtlFlg();
			
			// 溜め込んだ請求内訳データを出力電文．出力リストに設定
			this.makeOutputBean(outputInItem);
			
			// 請求内訳リスト初期化制御キーと請求内訳リストをクリアする。
			seikyUcwkListInitCtrlKey = BLANK;
			tmpSeikyUcwkInfoList.clear();
			
			// 新しく請求内訳データを溜め込む
			getSeikyUcwk(inMap);
		}
		assert outputInItem != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute][outputInItem=" + outputInItem.getOutMapList().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return outputInItem;
		/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
// IT1-2023-0000026 ADD END

// IT1-2023-0000026 DEL START
//	/**
//	 * 主処理
//	 * @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();
//				
//				// 出力情報設定
//				this.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();
//				
//				// 出力情報設定
//				this.makeOutputBean(mastMap, outputInItem);
//			}
//
//			this.tmpSeikyUcwkInfoList.clear();
//			bKey = false;
//			this.setTranProcFlg(true);
//		}
//		// 入力Ｍ、入力Ｔともに存在する
//		else
//		{
//			// マッチングキー取得
//			String mastKey = mastMap.getString(JBSbatCHIFM427.SEIKY_KEI_NO) + mastMap.getString(JBSbatCHIFM427.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();
//				
//				// 出力情報設定
//				this.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;
//	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
//	}
// IT1-2023-0000026 DEL END

	/**
	 * 業務サービス終了処理
	 * @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();
		
// IT1-2023-0000026 MOD START
		dbMap.setValue(JBSbatCHIFM427.DOFU_CD, inMap.getString(JBSbatCHIFM427.DOFU_CD));
		dbMap.setValue(JBSbatCHIFM427.SEIKY_KEI_NO, inMap.getString(JBSbatCHIFM427.SEIKY_KEI_NO));
		dbMap.setValue(JBSbatCHIFM427.SEIKY_NO, inMap.getString(JBSbatCHIFM427.SEIKY_NO));
		dbMap.setValue(JBSbatCHIFM427.PAYWAY_CD, inMap.getString(JBSbatCHIFM427.PAYWAY_CD));
		dbMap.setValue(JBSbatCHIFM427.SEIKY_YM, inMap.getString(JBSbatCHIFM427.SEIKY_YM));
		dbMap.setValue(JBSbatCHIFM427.SOHUS_PCD, inMap.getString(JBSbatCHIFM427.SOHUS_PCD));
		dbMap.setValue(JBSbatCHIFM427.SEIRI_NO, inMap.getString(JBSbatCHIFM427.SEIRI_NO));
		dbMap.setValue(JBSbatCHIFM427.SVC_KEI_NO, inMap.getString(JBSbatCHIFM427.SVC_KEI_NO));
		dbMap.setValue(JBSbatCHIFM427.PRC_GRP_CD, inMap.getString(JBSbatCHIFM427.PRC_GRP_CD));
		dbMap.setValue(JBSbatCHIFM427.PCRS_CD, inMap.getString(JBSbatCHIFM427.PCRS_CD));
		dbMap.setValue(JBSbatCHIFM427.PRC_SVC_CD, inMap.getString(JBSbatCHIFM427.PRC_SVC_CD));
		dbMap.setValue(JBSbatCHIFM427.PRC_KMK_CD, inMap.getString(JBSbatCHIFM427.PRC_KMK_CD));
		dbMap.setValue(JBSbatCHIFM427.USE_STAYMD, inMap.getString(JBSbatCHIFM427.USE_STAYMD));
		dbMap.setValue(JBSbatCHIFM427.USE_ENDYMD, inMap.getString(JBSbatCHIFM427.USE_ENDYMD));
		dbMap.setValue(JBSbatCHIFM427.AMNT, inMap.getString(JBSbatCHIFM427.AMNT));
		dbMap.setValue(JBSbatCHIFM427.GSAN_SEIKY_YM, inMap.getString(JBSbatCHIFM427.GSAN_SEIKY_YM));
		dbMap.setValue(JBSbatCHIFM427.SVC_DTL_SKBT_NO, inMap.getString(JBSbatCHIFM427.SVC_DTL_SKBT_NO));
		dbMap.setValue(JBSbatCHIFM427.SEIKY_UCWK_NO, inMap.getString(JBSbatCHIFM427.SEIKY_UCWK_NO));
		dbMap.setValue(JBSbatCHIFM427.SEIKY_YOKSI_CD, inMap.getString(JBSbatCHIFM427.SEIKY_YOKSI_CD));
		dbMap.setValue(JBSbatCHIFM427.SEIRI_NO_DSP_FLG, inMap.getString(JBSbatCHIFM427.SEIRI_NO_DSP_FLG));
		dbMap.setValue(JBSbatCHIFM427.DSP_JUN, inMap.getString(JBSbatCHIFM427.DSP_JUN));
		dbMap.setValue(JBSbatCHIFM427.GK_DTL_FLG, inMap.getString(JBSbatCHIFM427.GK_DTL_FLG));
//		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));
// IT1-2023-0000026 MOD END

		// 取得した情報を退避．請求内訳データリストに設定
		this.tmpSeikyUcwkInfoList.add(dbMap);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getSeikyUcwk]");
	}
	
	/**
	 * 出力情報を設定します。
	 * 
	 * @param outputBean 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void makeOutputBean(JBSbatOutputItem outputBean) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputBean]");

// ANK-4401-14-00 DEL START
//		JBSbatCommonDBInterface map = tmpSeikyUcwkInfoList.get(0);
//
//		// 請求契約番号と請求年月を文字列結合したキーを生成
//		String mastKey = map.getString(JBSbatCHIFM427.SEIKY_KEI_NO) + map.getString(JBSbatCHIFM427.SEIKY_YM);;
//		// 請求書送信不可リストマップ
//		JBSbatServiceInterfaceMap outYoksiMap = new JBSbatServiceInterfaceMap();
//		outYoksiMap.setOutFlg(false);
// ANK-4401-14-00 DEL END
		
		//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);
			
// ANK-4401-14-00 DEL START
//			if (!"01".equals(map.getString(JBSbatCHIFM427.SEIKY_YOKSI_CD)) && !"02".equals(map.getString(JBSbatCHIFM427.SEIKY_YOKSI_CD)))
//			{
// ANK-4401-14-00 DEL END
			
			JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();

			outMap.set(JBSbatCHIFM054.DOFU_CD,			dbMap.getString(JBSbatCHIFM427.DOFU_CD));				// 同封コード
			outMap.set(JBSbatCHIFM054.SEIKY_KEI_NO,		dbMap.getString(JBSbatCHIFM427.SEIKY_KEI_NO));			// 請求契約番号
			outMap.set(JBSbatCHIFM054.SEIKY_NO,			dbMap.getString(JBSbatCHIFM427.SEIKY_NO));				// 請求番号
			outMap.set(JBSbatCHIFM054.PAYWAY_CD,		dbMap.getString(JBSbatCHIFM427.PAYWAY_CD));				// 支払方法コード
			outMap.set(JBSbatCHIFM054.SEIKY_YM,			dbMap.getString(JBSbatCHIFM427.SEIKY_YM));				// 請求年月
			outMap.set(JBSbatCHIFM054.SOHUS_PCD,		dbMap.getString(JBSbatCHIFM427.SOHUS_PCD));				// 送付先郵便番号
			outMap.set(JBSbatCHIFM054.SEIRI_NO_DSP_FLG,	dbMap.getString(JBSbatCHIFM427.SEIRI_NO_DSP_FLG));		// 整理番号表示フラグ
			outMap.set(JBSbatCHIFM054.GK_DTL_FLG,		dbMap.getString(JBSbatCHIFM427.GK_DTL_FLG));			// 合計明細フラグ
			outMap.set(JBSbatCHIFM054.SEIRI_NO,			dbMap.getString(JBSbatCHIFM427.SEIRI_NO));				// 整理番号
			outMap.set(JBSbatCHIFM054.SVC_KEI_NO,		dbMap.getString(JBSbatCHIFM427.SVC_KEI_NO));			// サービス契約番号
			outMap.set(JBSbatCHIFM054.PRC_SVC_CD,		dbMap.getString(JBSbatCHIFM427.PRC_SVC_CD));			// 料金サービスコード
			outMap.set(JBSbatCHIFM054.PRC_KMK_CD,		dbMap.getString(JBSbatCHIFM427.PRC_KMK_CD));			// 料金項目コード
			outMap.set(JBSbatCHIFM054.PCRS_CD,			dbMap.getString(JBSbatCHIFM427.PCRS_CD));				// 料金コースコード
			outMap.set(JBSbatCHIFM054.PRC_GRP_CD,		dbMap.getString(JBSbatCHIFM427.PRC_GRP_CD));			// 料金グループコード
			outMap.set(JBSbatCHIFM054.USE_STAYMD,		dbMap.getString(JBSbatCHIFM427.USE_STAYMD));			// 利用開始年月日
			outMap.set(JBSbatCHIFM054.USE_ENDYMD,		dbMap.getString(JBSbatCHIFM427.USE_ENDYMD));			// 利用終了年月日
			outMap.set(JBSbatCHIFM054.AMNT,				dbMap.getString(JBSbatCHIFM427.AMNT));					// 金額
			outMap.set(JBSbatCHIFM054.GSAN_SEIKY_YM,	dbMap.getString(JBSbatCHIFM427.GSAN_SEIKY_YM));			// 合算請求年月
			outMap.set(JBSbatCHIFM054.SVC_DTL_SKBT_NO,	dbMap.getString(JBSbatCHIFM427.SVC_DTL_SKBT_NO));		// サービス詳細識別番号
			outMap.set(JBSbatCHIFM054.SEIKY_UCWK_NO,	dbMap.getString(JBSbatCHIFM427.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);
// ANK-4401-14-11 DEL START
//			}
//			else
//			{
//				// 請求書送信不可リスト重複確認
//				if (!sksSendFukaSet.contains(mastKey))
//				{
//					//抑止内容の初期化
//					String YOKSI_NAIYO = null;
//					String SENDS_FUKA_RIYU = null;
//					
//					// ANK-4401-14-00 ADD START
//					String PAYWAY_NAIYO = null;
//					// ANK-4401-14-00 ADD END
//
//					switch(Integer.parseInt((map.getString(JBSbatCHIFM427.SEIKY_YOKSI_CD))))
//					{
//					case 1:
//						SENDS_FUKA_RIYU = SENDS_FUKA_RIYU_01;
//						break;
//					case 2:
//						SENDS_FUKA_RIYU = SENDS_FUKA_RIYU_02;
//						break;
//					}
//					switch(Integer.parseInt((map.getString(JBSbatCHIFM427.SEIKY_YOKSI_CD)))){
//					case 1:
//						YOKSI_NAIYO = SEIKY_YOKSI_CD_01;
//						break;
//					case 2:
//						YOKSI_NAIYO = SEIKY_YOKSI_CD_02;
//						break;
//					}
//					
//					outYoksiMap.set(JBSbatCHIFM428.SEIKY_KEI_NO,		map.getString(JBSbatCHIFM427.SEIKY_KEI_NO));	// 請求契約番号
//					outYoksiMap.set(JBSbatCHIFM428.SEIKY_YM,			map.getString(JBSbatCHIFM427.SEIKY_YM));		// 請求年月
//					outYoksiMap.set(JBSbatCHIFM428.SENDS_FUKA_RIYU,		SENDS_FUKA_RIYU);							// 送信不可理由
//					outYoksiMap.set(JBSbatCHIFM428.TOKUSOKU_STAT, 		BLANK);										// 督促ステータス
//					outYoksiMap.set(JBSbatCHIFM428.TOKUSOKU_NAIYO,		BLANK);										// 督促内容
//					outYoksiMap.set(JBSbatCHIFM428.SEIKY_YOKSI_CD,		map.getString(JBSbatCHIFM427.SEIKY_YOKSI_CD));	// 請求抑止コード
//					outYoksiMap.set(JBSbatCHIFM428.YOKSI_NAIYO,          YOKSI_NAIYO);								// 抑止内容
//
//					// 出力フラグ設定
//					outYoksiMap.setOutFlg(true);
//					// 出力共通電文に設定
//					outputBean.addOutMapList_2(outYoksiMap);
//					
//					// 請求書送信不可リストに重複レコードが出力されないよう制御
//					sksSendFukaSet.add(mastKey);
//				}
//			}
// ANK-4401-14-00 DEL END
		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputBean][outputBean=" + outputBean.getOutMapList().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputBean]");
	}
	
// IT1-2023-0000026 DEL START
//	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
//	
//	/**
//	 * @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;
//	}
//	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
// IT1-2023-0000026 DEL END

	/**
	 * 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]");
		
		int listMax = this.tmpSeikyUcwkInfoList.size();
			
		// 初期化処理
		// 退避．整理番号　←　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);
		}
		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;
	}

// IT1-2023-0000026 DEL START
//	/**
//	 * 請求内訳情報（当月請求額合計のみ）を作成し、出力を行う。
//	 * 
//	 * @param outputInItem 出力電文
//	 * @param togetuFlg 当月請求有フラグ trueで当月請求有
//	 * @throws Exception 業務サービス内で発生した例外全般
//	 */
//	private void outSeikyUcwkGokei(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputBean) throws Exception
//	{
//		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outSeikyUcwkGokei]");
//		
//		//抑止以外のレコードのみ出力
//		if (!"01".equals(inMap.getString(JBSbatCHIFM427.SEIKY_YOKSI_CD)) && !"02".equals(inMap.getString(JBSbatCHIFM427.SEIKY_YOKSI_CD)))
//		{
//			// 請求内訳情報（当月請求額合計のみ）のレコード生成
//			JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
//			outMap.setString(JBSbatCHIFM054.DOFU_CD, 			inMap.getString(JBSbatCHIFM427.DOFU_CD));						// 同封コード
//			outMap.setString(JBSbatCHIFM054.SEIKY_KEI_NO, 		inMap.getString(JBSbatCHIFM427.SEIKY_KEI_NO));					// 請求契約番号
//			outMap.setString(JBSbatCHIFM054.SEIKY_NO, 			inMap.getString(JBSbatCHIFM427.SEIKY_NO));						// 請求番号
//			outMap.setString(JBSbatCHIFM054.PAYWAY_CD, 			inMap.getString(JBSbatCHIFM427.PAYWAY_CD));						// 支払方法コード
//			outMap.setString(JBSbatCHIFM054.SEIKY_YM, 			inMap.getString(JBSbatCHIFM427.SEIKY_YM));						// 請求年月
//			outMap.setString(JBSbatCHIFM054.SOHUS_PCD, 			inMap.getString(JBSbatCHIFM427.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(JBSbatCHIFM427.SEIKY_YM));						// 合算請求年月
//			outMap.setString(JBSbatCHIFM054.SVC_DTL_SKBT_NO, 	JACStrConst.KARA_MOJI);											// サービス識別詳細番号
//			outMap.setString(JBSbatCHIFM054.SEIKY_UCWK_NO,		JACStrConst.KARA_MOJI);											// 請求内訳番号
//		
//			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]");
//		}
//	}
// IT1-2023-0000026 DEL END
	
	/** 料金項目を取得します。
	 * 
	 * @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);
	}
}
