/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHDofuKnri
*	ソースファイル名	：JBSbatCHDofuKnri.java
*	作成者				：富士通　
*	作成日				：2011年08月24日
*＜機能概要＞
*　同封管理レコード作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/24   富士通		新規作成
*	v3.00		2012/05/30   FJ）冨井	【ANK-0024-04-00】集約に変更
*	v3.01		2012/06/26   FJ）冨井	【ST2-2012-0001216】ファイル項目・請求年月追加（戻し）
*	v3.02		2012/08/03   FJ）冨井	【TGI-2012-0000054】ダミーレコード設定位置修正
*	v4.00		2012/12/03   FJ）後藤	マッチングに修正
*	v4.01		2013/01/22   FJ) 小柴	【ST3-2013-0000172】内訳情報組立処理・口振警告終了
*	v4.02		2013/02/28   FJ) 小柴	【】出力項目に支払方法コード（ソート用）を追加
*	v5.00		2013/03/04   FJ) 小柴	【ANK-1417-00-00】出力項目に「投函日情報」を追加
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashSet;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatMatchServiceInterface;
import eo.business.util.file.JBSbatCHIFM087;
import eo.business.util.file.JBSbatCHIFM089;
import eo.business.util.file.JBSbatCHIFM147;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JPCEditString;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* 同封管理レコード作成 <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHDofuKnri extends JBSbatBusinessService implements JBSbatMatchServiceInterface
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** キーマッチ処理フラグ*/
	private boolean matchProcFlg;

	/** マスタファイル処理フラグ*/
	private boolean mastProcFlg;

	/** トランファイル処理フラグ*/
	private boolean tranProcFlg;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	
	/**▼▼▼▼▼▼クラス変数追加 開始▼▼▼▼▼▼*/
	
	/** 支払方法 */
	private HashSet<String> payWaySet = null;
	
	/** 組立種別（ヘッダ） */
	private static final String KUMI_SBT_HD = "0";
	
	/** 組立種別（トレーラ） */
	private static final String KUMI_SBT_TR = "Z";
	
	/** 同封制御請求契約番号（ヘッダ） */
	private static final String DOFU_CTRL_SEIKY_KEI_NO_HD = JPCEditString.fillZero("0", 12, true);
	
	/** 同封制御請求契約番号（トレーラ） */
	private static final String DOFU_CTRL_SEIKY_KEI_NO_TR = "zzzzzzzzzzzz";
	
	/** 組立連番（ヘッダ） */
	private static final String KUMI_RENBAN_HD = JPCEditString.fillZero("0", 5, true);
	
	/** 組立連番（トレーラ） */
	private static final String KUMI_RENBAN_TR = "ZZZZZ";
	
	/** レコード種別 */
	private static final String REC_SBT_VALUE = "1";
	
	/** 入力Ｍファイル名（請求書印刷情報） */
	private static final String TRN_FILE_NM = "請求書印刷情報";
	
	/** 入力Ｔファイル名（請求書面数データ） */
	private static final String MST_FILE_NM = "請求書面数データ";
	
	/** 同封制御＿サービス契約番号 */
	private static final String DOFU_SVC_KEI_NO_VALUE = JPCEditString.fillHalfSpace(" ", 10, true);
	
	/** 同封制御＿課金先電話番号 */
	private static final String DOFU_KAKINS_TELNO_VALUE = JPCEditString.fillHalfSpace(" ", 12, true);
	
	/** レコード区分（ヘッダ） */
	private static final String REC_DIV_HD = "050";
	
	/** レコード区分（トレーラ） */
	private static final String REC_DIV_TR = "800";
	
	/** 明細有無判定用印刷内訳 */
	private static final BigDecimal DTL_JUDGE_UW = new BigDecimal("2");
	
	/** 明細有無判定用印刷明細 */
	private static final BigDecimal DTL_JUDGE_DTL = BigDecimal.ONE;
	
	/** 封書区分 */
	private static final String FUSYO_DIV_VALUE = JPCEditString.fillHalfSpace(" ", 2, true);
	
	/** 予備＿ヘッダ */
	private static final String YOBI_HD =  JPCEditString.fillHalfSpace(" ", 1200, true);
	
	/** 予備＿トレーラ */
	private static final String YOBI_TR = JPCEditString.fillHalfSpace(" ", 1239, true);
	
	/** レコードＳＥＱ */
	private static final String REC_SEQ_TR = JPCEditString.fillHalfSpace(" ", 7, true);
	
	/** 退避．前回同封コード */
	private String znkiDofuCd = null;
	
	/** 退避．処理対象件数（明細あり） */
	private int trnTrgCntAri = 0;
	
	/** 退避．処理対象件数（明細なし） */
	private int trnTrgCntNashi = 0;
	
	/** 退避．ヘッダレコード */
	private ArrayList<JBSbatServiceInterfaceMap> tempHderRec = null;
	
	/** 退避．トレーラレコード */
	private ArrayList<JBSbatServiceInterfaceMap> tempTrailerRec = null;
	
	/** 通話明細有無 */
	private String pcallDtlHakkoUm = null;
	
	/**▲▲▲▲▲▲クラス変数追加 終了▲▲▲▲▲▲*/
	

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial][opeDate=" + super.opeDate + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial][freeItem=" + super.freeItem + "]");
		
		tempHderRec = new ArrayList<JBSbatServiceInterfaceMap>();
		tempTrailerRec = new ArrayList<JBSbatServiceInterfaceMap>();
		
		// 支払方法1、2を取り出し
		payWaySet = new HashSet<String>();
		if ((super.freeItem != null) && (super.freeItem.length() > 0))
		{
			String payWayValue[] = super.freeItem.split(JACStrConst.FREE_DIV);
			if (payWayValue.length >= 2)
			{
				// 支払方法2
				if (payWayValue[1].length() > 0)
				{
					payWaySet.add(payWayValue[1]);
				}
			}

			// 支払方法1
			if (payWayValue[0].length() > 0)
			{
				payWaySet.add(payWayValue[0]);
			}
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param mastMap　入力電文
	 * @param tranMap　入力電文
	 * @param outputInItem  入力情報
	 * @return JBSbatOutputItem 出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap, JBSbatOutputItem outputInItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert mastMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][mastMap=" + mastMap.getMap().toString() + "]") : true;
		assert tranMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][tranMap=" + tranMap.getMap().toString() + "]") : true;

		if(mastMap == null)
			// 入力MのみNullの場合
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力MのみNull]");
			
			// 出力情報を設定。
			getOutputItem(outputInItem);
			
			// トランファイル処理フラグを設定する
			this.setTranProcFlg(true);
		}
		else if(tranMap == null)
			// 入力TのみNullの場合
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力TのみNull]");
			String[] msgParam = new String[] {TRN_FILE_NM, MST_FILE_NM};
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1470KW, msgParam);	
			// マスタファイル処理フラグを設定する
			this.setMastProcFlg(true);
		}
		else
		{
			// 出力対象チェック
			// 起動引数の支払方法と請求方法コードが一致しない場合、
			String seikyWayCd = mastMap.getString(JBSbatCHIFM087.SEIKY_WAY_CD);
			if (!payWaySet.contains(seikyWayCd))
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][処理対象外]");
				// マスタファイル処理フラグを設定する
				this.setMastProcFlg(true);
				
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
				return outputInItem;
			}
			
			// マッチングキー設定
			// マスタキー
			String mastKey = mastMap.getString(JBSbatCHIFM087.SEIKY_WAY_CD).concat(mastMap.getString(JBSbatCHIFM087.DOFU_CD)).concat(mastMap.getString(JBSbatCHIFM087.SEIKY_KEI_NO));
			// トランキー
			String tranKey = tranMap.getString(JBSbatCHIFM147.SEIKY_WAY_CD).concat(tranMap.getString(JBSbatCHIFM147.DOFU_CD)).concat(tranMap.getString(JBSbatCHIFM147.SEIKY_KEI_NO));;
			
			// マッチした場合
			if(mastKey.equals(tranKey))
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍ　＝　入力Ｔ]");
				// 入力．同封コードと退避．前回同封コードが異なる場合
				if(!mastMap.getString(JBSbatCHIFM087.DOFU_CD).equals(znkiDofuCd))
				{
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力．同封コードと退避．前回同封コードが異なる場合]");
					
					// 印刷枚数オーバーフラグ　＝　'1'印刷枚数オーバーフラグ（上限以下）の場合
					if(tranMap.getString(JBSbatCHIFM147.PRINT_CNT_OVER_FLG).equals(JACStrConst.PRINT_CNT_OVER_FLG_UNDER))
					{
						assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][印刷枚数オーバーフラグ　＝　'1'印刷枚数オーバーフラグ（上限以下）]");

						// 処理対象件数更新
						updTrnTrgCnt(tranMap);
						// ヘッダレコードを作成
						setHderRec(mastMap, tranMap);
						// トレーラレコードを作成
						setTrailerRec(mastMap);
					}

					// 退避．前回同封コードに入力．同封コードを設定
					znkiDofuCd = mastMap.getString(JBSbatCHIFM087.DOFU_CD);
				}
				
				// マスタファイル処理フラグを設定する
				this.setMastProcFlg(true);
				
			}
			// マスタ＞トランの場合
			else if(mastKey.compareTo(tranKey) > 0)
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍ　＞　入力Ｔ]");
				// トランファイル処理フラグを設定する
				this.setTranProcFlg(true);
			}
			// 上記以外の場合（マスタ＜トランの場合）
			else
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍ　＜　入力Ｔ]");
				String[] msgParam = new String[] {TRN_FILE_NM, MST_FILE_NM};
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1470KW, msgParam);	
				// マスタファイル処理フラグを設定する
				this.setMastProcFlg(true);
			}
		}
		
		assert znkiDofuCd != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][znkiDofuCd=" + znkiDofuCd.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][trnTrgCntNashi=" +  String.valueOf(trnTrgCntNashi) + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][trnTrgCntAri=" +  String.valueOf(trnTrgCntAri) + "]");
		assert tempHderRec != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][tempHderRec=" + tempHderRec.toString() + "]") : true;
		assert tempHderRec != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][tempTrailerRec=" + tempTrailerRec.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		
		return outputInItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼メソッド追加 開始▼▼▼▼▼▼*/
	
	/**
	 * ヘッダレコードを退避．ヘッダレコードに設定します。
	 * 
	 * @param mastMap 入力情報
	 * @param tranMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void setHderRec(JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setHederRec]");
		
		JBSbatServiceInterfaceMap hderRec = new JBSbatServiceInterfaceMap();
		
		// レコード情報を設定します。
		// 支払方法コード（ソート順）
		hderRec.setString(JBSbatCHIFM089.PAY_WAY_SORT, mastMap.getString(JBSbatCHIFM087.PAY_WAY_CD));
		// 同封レコード区分
		hderRec.setString(JBSbatCHIFM089.DOFU_CTRL_REC_DIV, REC_DIV_HD);
		// 同封コード
		hderRec.setString(JBSbatCHIFM089.DOFU_CD, mastMap.getString(JBSbatCHIFM087.DOFU_CD));
		// 同封制御請求契約番号
		hderRec.setString(JBSbatCHIFM089.DOFU_CTRL_SEIKY_KEI_NO, DOFU_CTRL_SEIKY_KEI_NO_HD);
		// 組立種別
		hderRec.setString(JBSbatCHIFM089.KUMI_SBT, KUMI_SBT_HD);
		// 組立連番
		hderRec.setString(JBSbatCHIFM089.KUMI_RENBAN, KUMI_RENBAN_HD);
		// 同封制御レコード種別
		hderRec.setString(JBSbatCHIFM089.DOFU_REC_SBT, REC_SBT_VALUE);
		// 同封制御＿サービス契約番号
		hderRec.setString(JBSbatCHIFM089.DOFU_SVC_KEI_NO, DOFU_SVC_KEI_NO_VALUE);
		// 同封制御＿課金先電話番号
		hderRec.setString(JBSbatCHIFM089.DOFU_KAKINS_TELNO, DOFU_KAKINS_TELNO_VALUE);
		// 請求年月
		hderRec.setString(JBSbatCHIFM089.SEIKY_YM, mastMap.getString(JBSbatCHIFM087.SEIKY_YM));
		// レコード区分
		hderRec.setString(JBSbatCHIFM089.REC_DIV, REC_DIV_HD);
		// 同封シーケンス
		// 入力．通話明細有無フラグ　＝　"0"（通話明細発行なしの場合）
		if(pcallDtlHakkoUm.equals(JACStrConst.TUWA_MEISAI_UMU_FLG_NASI))
		{
			// 処理対象件数（明細なし）を設定（左詰めゼロパディング）
			hderRec.setString(JBSbatCHIFM089.DOFU_SEQ, JPCEditString.fillZero(String.valueOf(trnTrgCntNashi), 10, false));
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setHederRec][trnTrgCntNashi=" +  String.valueOf(trnTrgCntNashi) + "]");
		}
		// 上記以外の場合
		else
		{
			// 処理対象件数（明細なし）を設定（左詰めゼロパディング）
			hderRec.setString(JBSbatCHIFM089.DOFU_SEQ, JPCEditString.fillZero(String.valueOf(trnTrgCntAri), 10, false));
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setHederRec][trnTrgCntAri=" +  String.valueOf(trnTrgCntAri) + "]");
		}
		// eo請求先番号
		hderRec.setString(JBSbatCHIFM089.EO_SEIKY_KEI_NO, mastMap.getString(JBSbatCHIFM087.SEIKY_KEI_NO));
		// 印刷面数（総合計）
		hderRec.setString(JBSbatCHIFM089.PRINT_CNT_TTL, JPCEditString.fillZero(tranMap.getString(JBSbatCHIFM147.PRINT_CNT_TTL), 5, false));
		// 印刷面数（内訳書＿eo）
		hderRec.setString(JBSbatCHIFM089.PRINT_CNT_UW_EO, JPCEditString.fillZero(tranMap.getString(JBSbatCHIFM147.PRINT_CNT_UCWK), 5, false));
		// 印刷面数（明細書＿eo電話）
		hderRec.setString(JBSbatCHIFM089.PRINT_CNT_DTL_EO, JPCEditString.fillZero(tranMap.getString(JBSbatCHIFM147.PRINT_CNT_DTL), 5, false));
		// 封書区分
		hderRec.setString(JBSbatCHIFM089.FUSYO_DIV, FUSYO_DIV_VALUE);
		// 通話明細有無
		hderRec.setString(JBSbatCHIFM089.TUWA_DTL_UM, pcallDtlHakkoUm);
		// 投函日情報
		hderRec.setString(JBSbatCHIFM089.TKN_NITTE_CD, mastMap.getString(JBSbatCHIFM087.TKN_NITTE_CD));
		// 予備＿ヘッダ
		hderRec.setString(JBSbatCHIFM089.YOBI_H, YOBI_HD);
		// 予備＿トレーラ
		hderRec.setString(JBSbatCHIFM089.YOBI_T, JACStrConst.KARA_MOJI);
		// レコードＳＥＱ
		hderRec.setString(JBSbatCHIFM089.REC_SEQ, REC_SEQ_TR);
		
		tempHderRec.add(hderRec);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setHederRec]");
		
		return;
	}
	
	/**
	 * トレーラレコードを退避．トレーラレコードに設定します。
	 * 
	 * @param mastMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void setTrailerRec(JBSbatServiceInterfaceMap mastMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setTrailerRec]");
		assert mastMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setTrailerRec][mastMap=" + mastMap.getMap().toString() + "]") : true;
		
		JBSbatServiceInterfaceMap TrailerRec = new JBSbatServiceInterfaceMap();
		
		// レコード情報を設定します。
		// 支払方法コード（ソート順）
		TrailerRec.setString(JBSbatCHIFM089.PAY_WAY_SORT, mastMap.getString(JBSbatCHIFM087.PAY_WAY_CD));
		// 同封レコード区分
		TrailerRec.setString(JBSbatCHIFM089.DOFU_CTRL_REC_DIV, REC_DIV_TR);
		// 同封コード
		TrailerRec.setString(JBSbatCHIFM089.DOFU_CD, mastMap.getString(JBSbatCHIFM087.DOFU_CD));
		// 同封制御請求契約番号
		TrailerRec.setString(JBSbatCHIFM089.DOFU_CTRL_SEIKY_KEI_NO, DOFU_CTRL_SEIKY_KEI_NO_TR);
		// 組立種別
		TrailerRec.setString(JBSbatCHIFM089.KUMI_SBT, KUMI_SBT_TR);
		// 組立連番
		TrailerRec.setString(JBSbatCHIFM089.KUMI_RENBAN, KUMI_RENBAN_TR);
		// 同封制御レコード種別
		TrailerRec.setString(JBSbatCHIFM089.DOFU_REC_SBT, REC_SBT_VALUE);
		// 同封制御＿サービス契約番号
		TrailerRec.setString(JBSbatCHIFM089.DOFU_SVC_KEI_NO, DOFU_SVC_KEI_NO_VALUE);
		// 同封制御＿課金先電話番号
		TrailerRec.setString(JBSbatCHIFM089.DOFU_KAKINS_TELNO, DOFU_KAKINS_TELNO_VALUE);
		// 請求年月
		TrailerRec.setString(JBSbatCHIFM089.SEIKY_YM, mastMap.getString(JBSbatCHIFM087.SEIKY_YM));
		// レコード区分
		TrailerRec.setString(JBSbatCHIFM089.REC_DIV, REC_DIV_TR);
		// 同封シーケンス
		TrailerRec.setString(JBSbatCHIFM089.DOFU_SEQ, JACStrConst.KARA_MOJI);
		// eo請求先番号
		TrailerRec.setString(JBSbatCHIFM089.EO_SEIKY_KEI_NO, JACStrConst.KARA_MOJI);
		// 印刷面数（総合計）
		TrailerRec.setString(JBSbatCHIFM089.PRINT_CNT_TTL, JACStrConst.KARA_MOJI);
		// 印刷面数（内訳書＿eo）
		TrailerRec.setString(JBSbatCHIFM089.PRINT_CNT_UW_EO, JACStrConst.KARA_MOJI);
		// 印刷面数（明細書＿eo電話）
		TrailerRec.setString(JBSbatCHIFM089.PRINT_CNT_DTL_EO, JACStrConst.KARA_MOJI);
		// 封書区分
		TrailerRec.setString(JBSbatCHIFM089.FUSYO_DIV, JACStrConst.KARA_MOJI);
		// 通話明細有無
		TrailerRec.setString(JBSbatCHIFM089.TUWA_DTL_UM, JACStrConst.KARA_MOJI);
		// 投函日情報
		TrailerRec.setString(JBSbatCHIFM089.TKN_NITTE_CD, JACStrConst.KARA_MOJI);
		// 予備＿ヘッダ
		TrailerRec.setString(JBSbatCHIFM089.YOBI_H, JACStrConst.KARA_MOJI);
		// 予備＿トレーラ
		TrailerRec.setString(JBSbatCHIFM089.YOBI_T, YOBI_TR);
		// レコードＳＥＱ
		TrailerRec.setString(JBSbatCHIFM089.REC_SEQ, REC_SEQ_TR);
		
		tempTrailerRec.add(TrailerRec);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setTrailerRec]");
		
		return;
	}
	
	/**
	 * 出力情報を取得します。
	 * 
	 * @param JBSbatOutputItem 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getOutputItem(JBSbatOutputItem outputItem) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getOutputItem]");
		
		// ヘッダレコード
		JBSbatServiceInterfaceMap hderRec = new JBSbatServiceInterfaceMap();
		// トレーラレコード
		JBSbatServiceInterfaceMap trailerRec = new JBSbatServiceInterfaceMap();
		
		int i = 0;
		// 退避レコードがなくなるまで繰り返し
		while(tempTrailerRec.size() > i && tempHderRec.size() > i)
		{
			// 退避．ヘッダーレコードの値を設定
			hderRec = tempHderRec.get(i);
			
			hderRec.setOutFlg(true);
			outputItem.addOutMapList(hderRec);
			// 退避．トレーラレコードの値を設定
			trailerRec = tempTrailerRec.get(i);
			
			trailerRec.setOutFlg(true);
			
			outputItem.addOutMapList(trailerRec);
			
			i++;
		}
		
		// 退避情報クリア
		tempHderRec.clear();
		tempTrailerRec.clear();
		
		assert outputItem != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getOutputItem][outputItem=" + outputItem.getOutMapList().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getOutputItem]");
		
		return ;
	}
	
	/**
	 * 処理対象件数の値を更新します。
	 * 
	 * @param tranMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void updTrnTrgCnt(JBSbatServiceInterfaceMap tranMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][updTrnTrgCnt]");
		
		// 印刷面数（内訳書＿ｅｏ）
		BigDecimal printCntUcwk = new BigDecimal(tranMap.getString(JBSbatCHIFM147.PRINT_CNT_UCWK));
		// 印刷面数（明細書＿ｅｏ）
		BigDecimal printCntDtl = new BigDecimal(tranMap.getString(JBSbatCHIFM147.PRINT_CNT_DTL));
		
		// 印刷面数（内訳書＿ｅｏ） ≧ 2 または印刷面数（明細書＿ｅｏ） ≧ 1 の場合
		if(printCntUcwk.compareTo(DTL_JUDGE_UW) >= 0 || printCntDtl.compareTo(DTL_JUDGE_DTL) >= 0)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeSksDataTtlAddFileInf][通話明細有無　←　1（明細あり）]");			
			// 処理対象件数（明細あり）を更新
			trnTrgCntAri++;
			pcallDtlHakkoUm = JACStrConst.TUWA_MEISAI_UMU_FLG_ARI;
			
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updTrnTrgCnt][trnTrgCntAri=" +  String.valueOf(trnTrgCntAri) + "]");
			
		}
		else
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeSksDataTtlAddFileInf][通話明細有無　←　0（明細なし）]");
			// 処理対象件数（明細なし）を更新
			trnTrgCntNashi++;
			pcallDtlHakkoUm = JACStrConst.TUWA_MEISAI_UMU_FLG_NASI;
			
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updTrnTrgCnt][trnTrgCntNashi=" +  String.valueOf(trnTrgCntNashi) + "]");
		}

		return;
	}

	/**▲▲▲▲▲▲メソッド追加 終了▲▲▲▲▲▲*/
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * @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;
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
