/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHUwInfoKumi
*	ソースファイル名	：JBSbatCHUwInfoKumi.java
*	作成者				：富士通　
*	作成日				：2011年08月25日
*＜機能概要＞
*　内訳情報組立処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/25   富士通		新規作成
*	v3.00		2012/05/27   FJ）冨井	【ANK-0024-04-00】ファイル項目追加
*	v3.01		2012/06/25   FJ）冨井	【ANK-0024-04-00】集約に修正、ＮＯ設定修正
*	v3.02		2012/06/26   FJ）冨井	【ST2-2012-0001216】ファイル項目・請求年月追加（戻し）
*	v3.03		2012/08/03   FJ）冨井	【TGI-2012-0000054】ダミーレコード設定位置修正
*	v3.04		2012/09/24   FJ）岡田	【IT1-2012-0001012】請求書印刷データ項目追加対応
*	v4.00		2012/12/03   FJ）後藤	マッチングに修正
*	v4.01		2013/01/22   FJ) 小柴	【ST3-2013-0000172】内訳情報組立処理・口振警告終了
*	v4.02		2013/02/28   FJ) 小柴	【】出力項目に支払方法コード（ソート用）を追加
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatMatchServiceInterface;
import eo.business.common.JCHbatBCDUtil;
import eo.business.util.file.JBSbatCHIFM058;
import eo.business.util.file.JBSbatCHIFM090;
import eo.business.util.file.JBSbatCHIFM147;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JPCUtilCommon;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* 内訳情報組立処理 <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHUwInfoKumi extends JBSbatBusinessService implements JBSbatMatchServiceInterface
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** キーマッチ処理フラグ*/
	private boolean matchProcFlg;

	/** マスタファイル処理フラグ*/
	private boolean mastProcFlg;

	/** トランファイル処理フラグ*/
	private boolean tranProcFlg;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	// 料金内訳情報部インデックス
	/** インデックス＿料金内訳情報部１ */
	private final int IDX_PRC_UCWK_INFO_1 = 0;
	
	/** インデックス＿料金内訳情報部２ */
	private final int IDX_PRC_UCWK_INFO_2 = 1;
	
	/** インデックス＿料金内訳情報部３ */
	private final int IDX_PRC_UCWK_INFO_3 = 2;
	
	/** インデックス＿料金内訳情報部４ */
	private final int IDX_PRC_UCWK_INFO_4 = 3;
	
	/** インデックス＿料金内訳情報部５ */
	private final int IDX_PRC_UCWK_INFO_5 = 4;
	
	/** インデックス＿料金内訳情報部６ */
	private final int IDX_PRC_UCWK_INFO_6 = 5;
	
	/** インデックス＿料金内訳情報部７ */
	private final int IDX_PRC_UCWK_INFO_7 = 6;
	
	// 印刷制御情報格納マップキー
	/** 支払方法コード（ソート順） */
	private final String PRINT_KEY_PAY_WAY_SORT = "PAY_WAY_SORT";
	
	/** 同封制御レコード区分 */
	private final String PRINT_KEY_DOFU_CTRL_REC_DIV = "DOFU_CTRL_REC_DIV";
	
	/** 同封コード */
	private final String PRINT_KEY_DOFU_CODE = "DOFU_CODE";
	
	/** 同封制御請求契約番号 */
	private final String PRINT_KEY_DOFU_CTRL_SEIKY_KEI_NO = "DOFU_CTRL_SEIKY_KEI_NO";
	
	/** 組立種別 */
	private final String PRINT_KEY_KUMI_SBT = "KUMI_SBT";
	
	/** 同封制御レコード種別 */
	private final String PRINT_KEY_DOFU_REC_SBT = "DOFU_REC_SBT";
	
	/** 同封制御＿サービス契約番号 */
	private final String PRINT_KEY_DOFU_SVC_KEI_NO = "DOFU_SVC_KEI_NO";
	
	/** 同封制御＿課金先電話番号 */
	private final String PRINT_KEY_DOFU_KAKINS_TELNO = "DOFU_KAKINS_TELNO";
	
	/** 請求年月 */
	private final String PRINT_SEIKY_YM = "SEIKY_YM";
	
	/** レコード種別 */
	private final String PRINT_KEY_REC_SBT = "REC_SBT";
	
	/** レコード区分 */
	private final String PRINT_KEY_REC_DIV = "REC_DIV";
	
	/** 請求契約番号 */
	private final String PRINT_KEY_SEIKY_KEI_NO = "SEIKY_KEI_NO";
	
	/** 印刷電話番号 */
	private final String PRINT_KEY_PRINT_TEL_NO = "PRINT_TEL_NO";
	
	/** 郵便番号 */
	private final String PRINT_KEY_SOHUS_PCD = "SOHUS_PCD";
	
	/** 封書区分 */
	private final String PRINT_KEY_FUSYO_DIV = "FUSYO_DIV";
	
	/** 同封物種別１ */
	private final String PRINT_KEY_DOHUBT_SBT1 = "DOHUBT_SBT1";
	
	/** 同封物種別１部数 */
	private final String PRINT_KEY_DOHUBT_SBT1_CNT = "DOHUBT_SBT1_CNT";
	
	/** 同封物種別２ */
	private final String PRINT_KEY_DOHUBT_SBT2 = "DOHUBT_SBT2";
	
	/** 同封物種別２部数 */
	private final String PRINT_KEY_DOHUBT_SBT2_CNT = "DOHUBT_SBT2_CNT";
	
	/** 同封物種別３ */
	private final String PRINT_KEY_DOHUBT_SBT3 = "DOHUBT_SBT3";
	
	/** 同封物種別３部数 */
	private final String PRINT_KEY_DOHUBT_SBT3_CNT = "DOHUBT_SBT3_CNT";
	
	/** 同封物種別４ */
	private final String PRINT_KEY_DOHUBT_SBT4 = "DOHUBT_SBT4";
	
	/** 同封物種別４部数 */
	private final String PRINT_KEY_DOHUBT_SBT4_CNT = "DOHUBT_SBT4_CNT";
	
	/** 同封物種別５ */
	private final String PRINT_KEY_DOHUBT_SBT5 = "DOHUBT_SBT5";
	
	/** 同封物種別５部数 */
	private final String PRINT_KEY_DOHUBT_SBT5_CNT = "DOHUBT_SBT5_CNT";
	
	/** 同封物種別６ */
	private final String PRINT_KEY_DOHUBT_SBT6 = "DOHUBT_SBT6";
	
	/** 同封物種別６部数 */
	private final String PRINT_KEY_DOHUBT_SBT6_CNT = "DOHUBT_SBT6_CNT";
	
	/** レコードＳＥＱ１ */
	private final String PRINT_KEY_REC_SEQ = "REC_SEQ";
	
	// 料金内訳情報格納マップキー
	/** 枚数 */
	private final String PRC_KEY_CNT = "CNT";
	
	/** 表裏区分 */
	private final String PRC_KEY_UPDOWN_DIV = "UPDOWN_DIV";
	
	/** 行 */
	private final String PRC_KEY_ROW = "ROW";
	
	/** 内訳面数 */
	private final String PRC_KEY_UW_CNT = "UW_CNT";
	
	/** ＮＯ */
	private final String PRC_KEY_NO = "NO";
	
	/** 電話番号 */
	private final String PRC_KEY_TEL_NO = "TEL_NO";
	
	/** 電話番号編集 */
	private final String PRC_KEY_TELNO_HENSHU = "TELNO_HENSHU";
	
	/** 料金コード */
	private final String PRC_KEY_PRC_CD = "PRC_CD";
	
	/** 料金名称 */
	private final String PRC_KEY_PRC_NM = "PRC_NM";
	
	/** 税区分 */
	private final String PRC_KEY_TAX_DIV = "TAX_DIV";
	
	/** 金額 */
	private final String PRC_KEY_AMNT = "AMNT";
	
	/** 金額内訳 */
	private final String PRC_KEY_AMNT_UCWK = "AMNT_UCWK";
	
	/** 編集金額 */
	private final String PRC_KEY_HENSHU_AMNT = "HENSHU_AMNT";
	
	/** 編集金額内訳 */
	private final String PRC_KEY_HENSHU_AMNT_UCWK = "HENSHU_AMNT_UCWK";
	
	/** 利用期間 */
	private final String PRC_KEY_CHRG_PCALL_CNT = "CHRG_PCALL_CNT";
	
	/** 予備２ */
	private final String PRINT_KEY_YOBI2 = "YOBI2";
	
	// ファイル項目桁数
	/** 桁数＿支払方法コード（ソート順） */
	private final int LENGTH_PAY_WAY_SORT = 1;
	
	/** 桁数＿同封制御レコード区分 */
	private final int LENGTH_DOFU_CTRL_REC_DIV = 3;
	
	/** 桁数＿同封コード */
	 private final int LENGTH_DOFU_CODE = 12;
	 
	/** 桁数＿同封制御請求契約番号 */
	 private final int LENGTH_DOFU_CTRL_SEIKY_KEI_NO = 12;
	 
	/** 桁数＿組立連番 */
	 private final int LENGTH_KUMI_RENBAN = 5;
	 
	/** 桁数＿同封制御＿サービス契約番号 */
	 private final int LENGTH_DOFU_SVC_KEI_NO = 10;
	 
	/** 桁数＿同封制御＿課金先電話番号 */
	 private final int LENGTH_DOFU_KAKINS_TELNO = 12;
	 
	/** 桁数＿レコード区分 */
	 private final int LENGTH_REC_DIV = 3;
	 
	/** 桁数＿シーケンス番号 */
	 private final int LENGTH_SEQ_NO = 5;
	 
	/** 桁数＿請求契約番号 */
	 private final int LENGTH_SEIKY_KEI_NO = 10;
	 
	/** 桁数＿印刷電話番号 */
	 private final int LENGTH_PRINT_TEL_NO = 12;
	 
	/** 桁数＿郵便番号 */
	 private final int LENGTH_SOHUS_PCD = 8;
	 
	/** 桁数＿封書区分 */
	 private final int LENGTH_FUSYO_DIV = 2;
	 
	/** 桁数＿同封物種別１ */
	 private final int LENGTH_DOHUBT_SBT1 = 3;
	 
	/** 桁数＿同封物種別２ */
	 private final int LENGTH_DOHUBT_SBT2 = 3;
	 
	/** 桁数＿同封物種別３ */
	 private final int LENGTH_DOHUBT_SBT3 = 3;
	 
	/** 桁数＿同封物種別４ */
	 private final int LENGTH_DOHUBT_SBT4 = 3;
	 
	/** 桁数＿同封物種別５ */
	 private final int LENGTH_DOHUBT_SBT5 = 3;
	 
	/** 桁数＿同封物種別６ */
	 private final int LENGTH_DOHUBT_SBT6 = 3;
	 
	/** 桁数＿予備２ */
	 private final int LENGTH_YOBI2 = 28;
	 
	/** 桁数＿枚数 */
	private final int LENGTH_CNT = 4;
	
	/** 桁数＿行 */
	private final int LENGTH_ROW = 2;
	
	/** 桁数＿内訳面数 */
	private final int LENGTH_UW_CNT = 4;
	
	/** 桁数＿ＮＯ */
	private final int LENGTH_NO = 15;
	
	/** 桁数＿電話番号 */
	private final int LENGTH_TEL_NO = 12;
	
	/** 桁数＿電話番号編集 */
	private final int LENGTH_TELNO_HENSHU = 14;
	
	/** 桁数＿料金コード */
	private final int LENGTH_PRC_CD = 4;
	
	/** 桁数＿料金名称 */
	private final int LENGTH_PRC_NM = 30;
	
	/** 桁数＿税区分 */
	private final int LENGTH_TAX_DIV = 1;
	
	/** 桁数＿金額 */
	private final int LENGTH_AMNT = 12;
	
	/** 桁数＿金額内訳 */
	private final int LENGTH_AMNT_UCWK = 12;
	
	/** 桁数＿編集金額 */
	private final int LENGTH_HENSHU_AMNT = 12;
	
	/** 桁数＿編集金額内訳 */
	private final int LENGTH_HENSHU_AMNT_UCWK = 12;
	
	/** 桁数＿利用期間数 */
	private final int LENGTH_CHRG_PCALL_CNT = 13;
	
	/** レコードＳＥＱ */
	 private final int LENGTH_REC_SEQ = 7;
	
	// その他定数
	/** 組立種別（請求内訳あり） */
	private final String KUMI_CBT_UCWK_ARI = "1";
	
	/** レコード種別（データレコード） */
	private final String REC_SBT_DATA = "1";
	
	/** 表裏区分 */
	private final String UP_DOWN_DIV = "1";

	/** 全角空白 */
	private final String FULL_SPACE = "　";
	
	/** 固定値：0 */
	private final String ZERO = "0";

	// 退避情報
	/**  支払方法 */
	private HashSet<String> payWaySet = null;
	
	/** 印刷制御情報 */
	private HashMap<String, String> printCtrlInfoMap = null;
	
	/** 料金内訳情報リスト */
	private ArrayList<HashMap<String, String>> prcUcwkInfoList = null;
	
	/** 料金内訳情報リストカウンタ */
	private int prcUcwkInfoListCnt = 0;
	
	/** 処理件数 */
	private int trnCnt = 0;
	
	/** 同封内出力連番件数 */
	private int dofuNaiOutputSeqNoCnt = 0;
	
	/** 料金内訳格納数 */
	private int ucwkOccursCnt = 0;

	/** シーケンス番号 */
	private int seqNo = 0;
	
	/** 退避．前回ＫＥＹ１（同封コード＋請求契約番号＋面番号） */
	private String tihBfKey1 = null;
	
	/** 退避．前回ＫＥＹ２（同封コード＋請求契約番号） */
	private String tihBfKey2 = null;
	
	/** 退避．前回ＫＥＹ３（請求契約番号） */
	private String tihBfKey3 = null;
	
	/** 退避．ＫＥＹ２（同封コード＋請求契約番号） */
	private String tihKey2 = null;
	
	/** 退避．ＫＥＹ３（請求契約番号） */
	private String tihKey3 = null;
	
	/** 入力Ｍファイル名（請求内訳印刷データ） */
	private static final String TRN_FILE_NM = "請求内訳印刷データ";
	
	/** 入力Ｔファイル名（請求書面数データ） */
	private static final String MST_FILE_NM = "請求書面数データ";
	
	/** 処理終了判定フラグ */
	private boolean endFlg = true;
	
	/**
	 * 初期処理
	 * @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 + "]");
		
		payWaySet = new HashSet<String>();
		
		// バッチ共通パラメータ．フリー項目から支払方法を取得
		if (super.freeItem != null)
		{
			String[] payWayArray = super.freeItem.split(JACStrConst.FREE_DIV);
			
			for (int i = 0; i < payWayArray.length; i++)
			{
				payWaySet.add(payWayArray[i]);
			}
		}
		
		// 料金内訳情報格納数取得
		JACbatParamUtil paramUtil = new JACbatParamUtil(super.commonItem);
		ucwkOccursCnt = Integer.parseInt(paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_UCWK_OCCURS_CNT));
		paramUtil.close();
		
		// 料金内訳情報リスト
		prcUcwkInfoList = new ArrayList<HashMap<String,String>>();
		
		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]");
			
			if(!endFlg)
			{
				outputInItem = makeUcwkInfoKumiFile(outputInItem, mastMap);
				endFlg = true;
			}
			// トランファイル処理フラグを設定する
			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(JBSbatCHIFM058.PAYWAY_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(JBSbatCHIFM058.PAYWAY_CD).concat(mastMap.getString(JBSbatCHIFM058.DOFU_CD)).concat(mastMap.getString(JBSbatCHIFM058.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))
			{
				// 印刷枚数オーバーフラグ　＝　'1'印刷枚数オーバーフラグ（上限以下）の場合
				if(tranMap.getString(JBSbatCHIFM147.PRINT_CNT_OVER_FLG).equals(JACStrConst.PRINT_CNT_OVER_FLG_UNDER))
				{
					outputInItem = executeUcwkInfoKumi(outputInItem, mastMap, tranMap);
				}
				// マスタファイル処理フラグを設定する
				this.setMastProcFlg(true);
			}
			// マスタ＞トランの場合
			else if(mastKey.compareTo(tranKey) > 0)
			{
				// トランファイル処理フラグを設定する
				this.setTranProcFlg(true);
			}
			// 上記以外の場合（マスタ＜トランの場合）
			else
			{
				String[] msgParam = new String[] {TRN_FILE_NM, MST_FILE_NM};
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1470KW, msgParam);	
				// マスタファイル処理フラグを設定する
				this.setMastProcFlg(true);
			}
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		
		return outputInItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 内訳情報組立処理を実施します。
	 * 
	 * @param outputItem 出力情報
	 * @param mastMap 入力電文
	 * @param tranMap 入力電文
	 * @return 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatOutputItem executeUcwkInfoKumi(JBSbatOutputItem outputItem, JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][executeSeikyUwInfoKumi]");
		assert mastMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][executeSeikyUwInfoKumi][mastMap=" + mastMap.getMap().toString() + "]") : true;
		
		// 入力ＫＥＹ１（請求書内訳印刷データ．同封コード＋請求書内訳印刷データ．請求契約番号）
		String key1 = makeStr(mastMap.getString(JBSbatCHIFM058.DOFU_CD), mastMap.getString(JBSbatCHIFM058.SEIKY_KEI_NO));
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][executeUcwkInfoKumi][key1=" + key1 + "]");
		
		// 退避．前回ＫＥＹ１ ＝ 入力ＫＥＹ１ の場合
		if (key1.equals(this.tihBfKey1))
		{
			// 処理件数カウントアップ
			trnCnt++;
			
			// 料金内訳情報リストカウンタのカウントアップ
			prcUcwkInfoListCnt++;
			
			// 格納数を超えた場合
			if (ucwkOccursCnt < trnCnt)
			{
				// 請求内訳情報組立ファイル出力情報作成
				outputItem = makeUcwkInfoKumiFile(outputItem, mastMap);
				
				// 処理件数クリア
				trnCnt = 1;
				
				// 料金内訳情報リストカウンタの初期化
				prcUcwkInfoListCnt = 0;
			}
			
			// 料金内訳情報リスト編集
			editPrcUcwkInfoList(mastMap, tranMap);
		}
		
		// キーブレーク
		else if(!key1.equals(this.tihBfKey1))
		{
			// 処理件数初期化
			trnCnt = 1;
			
			// 料金内訳情報リストカウンタの初期化
			prcUcwkInfoListCnt = 0;
			
			// 初回レコード以外の場合
			if (this.tihBfKey1 != null)
			{
				// 請求内訳情報組立ファイル出力情報作成 
				outputItem = makeUcwkInfoKumiFile(outputItem, mastMap);
			}
			else
			{
				endFlg = false;
			}
			
			// 料金内訳情報リスト編集
			editPrcUcwkInfoList(mastMap, tranMap);
			
			// 退避処理
			this.tihBfKey1 = key1;
			
			
			// 入力ＫＥＹ２（請求書内訳印刷データ．同封コード＋請求書内訳印刷データ．請求契約番号）
			tihKey2 = makeStr(mastMap.getString(JBSbatCHIFM058.DOFU_CD), mastMap.getString(JBSbatCHIFM058.SEIKY_KEI_NO));
			// 入力ＫＥＹ３（請求書内訳印刷データ．請求契約番号）
			tihKey3 = makeStr(mastMap.getString(JBSbatCHIFM058.SEIKY_KEI_NO));
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][executeSeikyUwInfoKumi]");
		
		return outputItem;
	}

	/**
	 * 料金内訳情報リストを編集します。
	 * 
	 * @param mastMap 入力情報
	 * @param tranMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void editPrcUcwkInfoList(JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][editPrcUcwkInfoList]");
		assert mastMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][editPrcUcwkInfoList][mastMap=" + mastMap.getMap().toString() + "]") : true;
		
		if(trnCnt == 1)
		{
			// 印刷制御情報部編集
			editPrintCtrlInfo(mastMap);
			
			// 料金内訳情報リスト初期化
			initPrcUcwkInfoList();
		}
		
		// 料金内訳情報部編集
		editPrcUcwkInfo(mastMap, tranMap);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][editPrcUcwkInfoList]");
	}

	/**
	 * 請求書内訳情報組立ファイルの印刷制御情報部を編集します。
	 * 
	 * @param mastMap 入力電文
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void editPrintCtrlInfo(JBSbatServiceInterfaceMap mastMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][editPrintCtrlInfo]");
		assert mastMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][editPrintCtrlInfo][mastMap=" + mastMap.getMap().toString() + "]") : true;
		
		// 印刷制御情報
		printCtrlInfoMap = new HashMap<String, String>();
		
		// 支払方法コード（ソート順）
		if (JBSbatCHIFM058.PAYWAY_CD.trim().length() != 0)
		{
			printCtrlInfoMap.put(PRINT_KEY_PAY_WAY_SORT, JPCUtilCommon.fillHalfSpace(mastMap.getString(JBSbatCHIFM058.PAYWAY_CD), LENGTH_PAY_WAY_SORT, true));
		}
		else
		{
			printCtrlInfoMap.put(PRINT_KEY_PAY_WAY_SORT, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_PAY_WAY_SORT, true));
		}
		// 同封制御レコード区分
		if(mastMap.getString(JBSbatCHIFM058.SORT_REC_DIV).trim().length() != 0)
		{
			printCtrlInfoMap.put(PRINT_KEY_DOFU_CTRL_REC_DIV, JPCUtilCommon.fillHalfSpace(mastMap.getString(JBSbatCHIFM058.SORT_REC_DIV), LENGTH_DOFU_CTRL_REC_DIV, true));
		}
		else
		{
			printCtrlInfoMap.put(PRINT_KEY_DOFU_CTRL_REC_DIV, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_DOFU_CTRL_REC_DIV, true));
		}
		// 同封コード
		if(mastMap.getString(JBSbatCHIFM058.SORT_DOFU_CD).trim().length() != 0)
		{
			printCtrlInfoMap.put(PRINT_KEY_DOFU_CODE, JPCUtilCommon.fillHalfSpace(mastMap.getString(JBSbatCHIFM058.SORT_DOFU_CD), LENGTH_DOFU_CODE, true));
		}
		else
		{
			printCtrlInfoMap.put(PRINT_KEY_DOFU_CODE, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_DOFU_CODE, true));
		}
		// 同封制御請求契約番号
		if(mastMap.getString(JBSbatCHIFM058.SORT_SEIKY_KEI_NO).trim().length() != 0)
		{
			printCtrlInfoMap.put(PRINT_KEY_DOFU_CTRL_SEIKY_KEI_NO, JPCUtilCommon.fillHalfSpace(mastMap.getString(JBSbatCHIFM058.SORT_SEIKY_KEI_NO), LENGTH_DOFU_CTRL_SEIKY_KEI_NO, true));
		}
		else
		{
			printCtrlInfoMap.put(PRINT_KEY_DOFU_CTRL_SEIKY_KEI_NO, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_DOFU_CTRL_SEIKY_KEI_NO, true));
		}
		// 組立種別
		printCtrlInfoMap.put(PRINT_KEY_KUMI_SBT, KUMI_CBT_UCWK_ARI);
		// 同封制御レコード種別
		printCtrlInfoMap.put(PRINT_KEY_DOFU_REC_SBT, REC_SBT_DATA);
		// 同封制御＿サービス契約番号
		printCtrlInfoMap.put(PRINT_KEY_DOFU_SVC_KEI_NO, JPCUtilCommon.fillZero(ZERO, LENGTH_DOFU_SVC_KEI_NO, true));
		// 同封制御＿課金先電話番号
		printCtrlInfoMap.put(PRINT_KEY_DOFU_KAKINS_TELNO, JPCUtilCommon.fillZero(ZERO, LENGTH_DOFU_KAKINS_TELNO, true));
		// 請求年月
		printCtrlInfoMap.put(PRINT_SEIKY_YM, mastMap.getString(JBSbatCHIFM058.SEIKY_YM));
		// レコード種別
		printCtrlInfoMap.put(PRINT_KEY_REC_SBT, REC_SBT_DATA);
		// レコード区分
		if(mastMap.getString(JBSbatCHIFM058.REC_DIV).trim().length() != 0)
		{
			printCtrlInfoMap.put(PRINT_KEY_REC_DIV, JPCUtilCommon.fillHalfSpace(mastMap.getString(JBSbatCHIFM058.REC_DIV), LENGTH_REC_DIV, true));
		}
		else
		{
			printCtrlInfoMap.put(PRINT_KEY_REC_DIV, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_REC_DIV, true));
		}

		// 請求契約番号
		if(mastMap.getString(JBSbatCHIFM058.SEIKY_KEI_NO).trim().length() != 0)
		{
			printCtrlInfoMap.put(PRINT_KEY_SEIKY_KEI_NO, JPCUtilCommon.fillHalfSpace(mastMap.getString(JBSbatCHIFM058.SEIKY_KEI_NO), LENGTH_SEIKY_KEI_NO, true));
		}
		else
		{
			printCtrlInfoMap.put(PRINT_KEY_SEIKY_KEI_NO, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_SEIKY_KEI_NO, true));
		}
		// 印刷電話番号
		printCtrlInfoMap.put(PRINT_KEY_PRINT_TEL_NO, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_PRINT_TEL_NO, true));
		// 郵便番号
		if(mastMap.getString(JBSbatCHIFM058.SOHUS_PCD).trim().length() != 0)
		{
			printCtrlInfoMap.put(PRINT_KEY_SOHUS_PCD, JPCUtilCommon.fillHalfSpace(mastMap.getString(JBSbatCHIFM058.SOHUS_PCD), LENGTH_SOHUS_PCD, true));
		}
		else
		{
			printCtrlInfoMap.put(PRINT_KEY_SOHUS_PCD, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_SOHUS_PCD, true));
		}
		
		// 封書区分
		if(mastMap.getString(JBSbatCHIFM058.FUSHO_DIV).trim().length() != 0)
		{
			printCtrlInfoMap.put(PRINT_KEY_FUSYO_DIV, JPCUtilCommon.fillHalfSpace(mastMap.getString(JBSbatCHIFM058.FUSHO_DIV), LENGTH_FUSYO_DIV, true));
		}
		else
		{
			printCtrlInfoMap.put(PRINT_KEY_FUSYO_DIV, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_FUSYO_DIV, true));
		}
		// 同封物種別１
		printCtrlInfoMap.put(PRINT_KEY_DOHUBT_SBT1, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_DOHUBT_SBT1, true));
		// 同封物種別１部数
		printCtrlInfoMap.put(PRINT_KEY_DOHUBT_SBT1_CNT, JACStrConst.SPACE_1);
		// 同封物種別２
		printCtrlInfoMap.put(PRINT_KEY_DOHUBT_SBT2, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_DOHUBT_SBT2, true));
		// 同封物種別２部数
		printCtrlInfoMap.put(PRINT_KEY_DOHUBT_SBT2_CNT, JACStrConst.SPACE_1);
		// 同封物種別３
		printCtrlInfoMap.put(PRINT_KEY_DOHUBT_SBT3, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_DOHUBT_SBT3, true));
		// 同封物種別３部数
		printCtrlInfoMap.put(PRINT_KEY_DOHUBT_SBT3_CNT, JACStrConst.SPACE_1);
		// 同封物種別４
		printCtrlInfoMap.put(PRINT_KEY_DOHUBT_SBT4, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_DOHUBT_SBT4, true));
		// 同封物種別４部数
		printCtrlInfoMap.put(PRINT_KEY_DOHUBT_SBT4_CNT, JACStrConst.SPACE_1);
		// 同封物種別５
		printCtrlInfoMap.put(PRINT_KEY_DOHUBT_SBT5, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_DOHUBT_SBT5, true));
		// 同封物種別５部数
		printCtrlInfoMap.put(PRINT_KEY_DOHUBT_SBT5_CNT, JACStrConst.SPACE_1);
		// 同封物種別６
		printCtrlInfoMap.put(PRINT_KEY_DOHUBT_SBT6, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_DOHUBT_SBT6, true));
		// 同封物種別６部数
		printCtrlInfoMap.put(PRINT_KEY_DOHUBT_SBT6_CNT, JACStrConst.SPACE_1);
		// 予備２
		printCtrlInfoMap.put(PRINT_KEY_YOBI2,  JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_YOBI2, true));
		// レコードＳＥＱ
		printCtrlInfoMap.put(PRINT_KEY_REC_SEQ,  JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_REC_SEQ, true));
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][editPrintCtrlInfo]");
	}

	/**
	 * 料金内訳情報リストの初期化を行う。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void initPrcUcwkInfoList() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initPrcUcwkInfoRecList]");
		
		// 料金内訳情報
		HashMap<String, String> prcUcwkInfoMap = null;
		
		// 料金内訳格納数分、繰り返す
		for(int i = 0; i < ucwkOccursCnt; i++)
		{
			prcUcwkInfoMap = new HashMap<String, String>();
			// 枚数
			prcUcwkInfoMap.put(PRC_KEY_CNT, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_CNT, true));
			// 表裏区分
			prcUcwkInfoMap.put(PRC_KEY_UPDOWN_DIV, JACStrConst.SPACE_1);
			// 行
			prcUcwkInfoMap.put(PRC_KEY_ROW, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_ROW, true));
			// 内訳面数
			prcUcwkInfoMap.put(PRC_KEY_UW_CNT, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_UW_CNT, true));
			// ＮＯ
			prcUcwkInfoMap.put(PRC_KEY_NO, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_NO, true));
			// 電話番号
			prcUcwkInfoMap.put(PRC_KEY_TEL_NO, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_TEL_NO, true));
			// 電話番号編集
			prcUcwkInfoMap.put(PRC_KEY_TELNO_HENSHU, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_TELNO_HENSHU, true));
			// 料金コード
			prcUcwkInfoMap.put(PRC_KEY_PRC_CD, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_PRC_CD, true));
			// 料金名称
			prcUcwkInfoMap.put(PRC_KEY_PRC_NM, JPCUtilCommon.fillSpace(FULL_SPACE, LENGTH_PRC_NM, true));
			// 税区分
			prcUcwkInfoMap.put(PRC_KEY_TAX_DIV, JPCUtilCommon.fillSpace(JACStrConst.FULL_SPACE_1, LENGTH_TAX_DIV, true));
			// 金額
			prcUcwkInfoMap.put(PRC_KEY_AMNT, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_AMNT, true));
			// 金額内訳
			prcUcwkInfoMap.put(PRC_KEY_AMNT_UCWK, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_AMNT_UCWK, true));
			// 編集金額
			prcUcwkInfoMap.put(PRC_KEY_HENSHU_AMNT, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_HENSHU_AMNT, true));
			// 編集金額内訳
			prcUcwkInfoMap.put(PRC_KEY_HENSHU_AMNT_UCWK, JPCUtilCommon.fillHalfSpace(JACStrConst.SPACE_1, LENGTH_HENSHU_AMNT_UCWK, true));
			// 利用期間
			prcUcwkInfoMap.put(PRC_KEY_CHRG_PCALL_CNT, JPCUtilCommon.fillSpace(JACStrConst.FULL_SPACE_1, LENGTH_CHRG_PCALL_CNT, true));
			
			prcUcwkInfoList.add(prcUcwkInfoMap);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initPrcUcwkInfoRecList]");
	}

	/**
	 * 請求書内訳情報組立ファイルの料金内訳情報部を編集します。
	 * 
	 * @param mastMap 入力電文
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void editPrcUcwkInfo(JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][editPrcUcwkInfo]");
		assert mastMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][editPrcUcwkInfo][mastMap=" + mastMap.getMap().toString() + "]") : true;
		
		// 料金内訳情報
		HashMap<String, String> prcUcwkInfoMap = prcUcwkInfoList.get(prcUcwkInfoListCnt);
		
		// 枚数算出を算出し、設定
		int menNo = Integer.parseInt(mastMap.getString(JBSbatCHIFM058.MEN_NO));
		int maisu = menNo / 2;
		float amari = menNo % 2;
		// 面番が２で割り切れなかった場合、繰り上げ
		if(amari != 0)
		{
			maisu++;
		}
		prcUcwkInfoMap.put(PRC_KEY_CNT, JPCUtilCommon.fillZero(tranMap.getString(JBSbatCHIFM147.PRINT_PAGE_TTL), LENGTH_CNT, false));
		
		// 表裏区分
		prcUcwkInfoMap.put(PRC_KEY_UPDOWN_DIV, getUrDiv(mastMap.getString(JBSbatCHIFM058.MEN_NO)));
		// 行
		prcUcwkInfoMap.put(PRC_KEY_ROW, JPCUtilCommon.fillZero(mastMap.getString(JBSbatCHIFM058.GYO_NO), LENGTH_ROW, false));
		// 内訳面数
		prcUcwkInfoMap.put(PRC_KEY_UW_CNT, JPCUtilCommon.fillZero(String.valueOf(menNo), LENGTH_UW_CNT, false));
		
		// ＮＯ 右埋め半角空白
		if(mastMap.getString(JBSbatCHIFM058.NO_RAN).trim().length() != 0)
		{
			prcUcwkInfoMap.put(PRC_KEY_NO, JPCUtilCommon.fillHalfSpace(mastMap.getString(JBSbatCHIFM058.NO_RAN), LENGTH_NO, true));
		}
		
		// 料金コード 右埋め半角空白設定
		if(mastMap.getString(JBSbatCHIFM058.PRC_CD_RAN).trim().length() != 0)
		{
			prcUcwkInfoMap.put(PRC_KEY_PRC_CD, JPCUtilCommon.fillHalfSpace(mastMap.getString(JBSbatCHIFM058.PRC_CD_RAN), LENGTH_PRC_CD, true));
		}
		
		// 料金名称
		if(mastMap.getString(JBSbatCHIFM058.PRC_NM_RAN).trim().length() != 0)
		{
			prcUcwkInfoMap.put(PRC_KEY_PRC_NM, JPCUtilCommon.fillSpace(mastMap.getString(JBSbatCHIFM058.PRC_NM_RAN), LENGTH_PRC_NM, true));
		}
		// 税区分
		if(mastMap.getString(JBSbatCHIFM058.TAXAREA_RAN).trim().length() != 0)
		{
			prcUcwkInfoMap.put(PRC_KEY_TAX_DIV, JPCUtilCommon.fillHalfSpace(mastMap.getString(JBSbatCHIFM058.TAXAREA_RAN), LENGTH_TAX_DIV, true));
		}
		// 金額
		if(mastMap.getString(JBSbatCHIFM058.AMNT_RAN).trim().length() != 0)
		{
			String amnt = JCHbatBCDUtil.toBCDString(mastMap.get(JBSbatCHIFM058.AMNT_RAN).toString());
			prcUcwkInfoMap.put(PRC_KEY_AMNT, JPCUtilCommon.fillZero(amnt, LENGTH_AMNT, false));
		}
		
		// 金額内訳
		if(mastMap.getString(JBSbatCHIFM058.UCWK_AMNT_RAN).trim().length() != 0)
		{
			String ucwkAmnt = JCHbatBCDUtil.toBCDString(mastMap.get(JBSbatCHIFM058.UCWK_AMNT_RAN).toString());
			prcUcwkInfoMap.put(PRC_KEY_AMNT_UCWK, JPCUtilCommon.fillZero(ucwkAmnt, LENGTH_AMNT_UCWK, false));
		}
		
		// 編集金額欄
		if(mastMap.getString(JBSbatCHIFM058.HENSHU_AMNT_RAN).trim().length() != 0)
		{
			prcUcwkInfoMap.put(PRC_KEY_HENSHU_AMNT, JPCUtilCommon.fillHalfSpace(mastMap.getString(JBSbatCHIFM058.HENSHU_AMNT_RAN), LENGTH_HENSHU_AMNT, true));
		}
		
		// 編集金額内訳
		if(mastMap.getString(JBSbatCHIFM058.HENSHU_UCWK_AMNT_RAN).trim().length() != 0)
		{
			prcUcwkInfoMap.put(PRC_KEY_HENSHU_AMNT_UCWK, JPCUtilCommon.fillHalfSpace(mastMap.getString(JBSbatCHIFM058.HENSHU_UCWK_AMNT_RAN), LENGTH_HENSHU_AMNT_UCWK, true));
		}
		
		// 利用期間
		if(mastMap.getString(JBSbatCHIFM058.USE_PRD_RAN).trim().length() != 0)
		{
			prcUcwkInfoMap.put(PRC_KEY_CHRG_PCALL_CNT, JPCUtilCommon.fillSpace(mastMap.getString(JBSbatCHIFM058.USE_PRD_RAN), LENGTH_CHRG_PCALL_CNT, true));
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][editPrcUcwkInfo]");
	}

	/**
	 * 請求書内訳情報組立ファイルを作成します。
	 * 
	 * outputItem 出力情報
	 * @param mastMap　入力電文
	 * @return 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatOutputItem makeUcwkInfoKumiFile(JBSbatOutputItem outputItem, JBSbatServiceInterfaceMap mastMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeUcwkInfoKumiFile]");
		
		// 同封内出力連番件数設定
		
		// 入力ＫＥＹ２（請求書内訳印刷データ．同封コード＋請求書内訳印刷データ．請求契約番号）

		// 退避．ＫＥＹ２ ＝ 入力ＫＥＹ２ の場合
		//if(this.tihBfKey2.equals(this.tihKey2))
		if(this.tihKey2 != null && this.tihKey2.equals(this.tihBfKey2))	
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeUcwkInfoKumiFile][退避．ＫＥＹ２ ＝ 入力ＫＥＹ２]");
			// 同封内出力連番件数をカウントアップ
			dofuNaiOutputSeqNoCnt++;
		}
		else
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeUcwkInfoKumiFile][退避．ＫＥＹ２ ≠ 入力ＫＥＹ２]");
			// 同封内出力連番件数の初期化
			dofuNaiOutputSeqNoCnt = 1;
		}
		// 退避処理
		this.tihBfKey2 = this.tihKey2;

		// 入力ＫＥＹ３（請求書内訳印刷データ．請求契約番号）

		// 退避．ＫＥＹ３ ＝ 入力ＫＥＹ３ の場合
		if(this.tihKey3 != null && this.tihKey3.equals(this.tihBfKey3))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeUcwkInfoKumiFile][退避．ＫＥＹ３ ＝ 入力ＫＥＹ３]");
			// シーケンス番号をカウントアップ
			this.seqNo++;
		}
		else
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeUcwkInfoKumiFile][退避．ＫＥＹ３ ≠ 入力ＫＥＹ３]");
			// シーケンス番号の初期化
			this.seqNo = 1;
		}
		// 退避処理
		this.tihBfKey3 = this.tihKey3;
		
		// 請求書内訳情報組立ファイルへの出力情報設定
		JBSbatServiceInterfaceMap ucwkInfoKumiFileInfo = setUcwkInfoKumiFile();
		
		assert ucwkInfoKumiFileInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeUcwkInfoKumiFile][ucwkInfoKumiFileInfo=" + ucwkInfoKumiFileInfo.getMap().toString() + "]") : true;
		
		// 出力フラグON
		ucwkInfoKumiFileInfo.setOutFlg(true);
		
		// 最終レコードの場合
		if(outputItem == null)
		{
			outputItem = new JBSbatOutputItem();
		}
		// 出力共通電文設定
		outputItem.addOutMapList(ucwkInfoKumiFileInfo);
		
		// 料金内訳情報リストクリア
		prcUcwkInfoList.clear();
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeUcwkInfoKumiFile]");
		
		return outputItem;
	}

	/**
	 * 請求書内訳情報組立ファイルへの出力情報を設定します。
	 * 
	 * @return 請求書内訳情報組立ファイル情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatServiceInterfaceMap setUcwkInfoKumiFile() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setUcwkInfoKumiFile]");
		
		// 請求書内訳情報組立ファイル情報
		JBSbatServiceInterfaceMap ucwkInfoKumiFileInfo = new JBSbatServiceInterfaceMap();
		
		/* 印刷制御情報部 */
		// 支払方法コード（ソート順）
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PAY_WAY_SORT, printCtrlInfoMap.get(PRINT_KEY_PAY_WAY_SORT));
		// 同封制御レコード区分
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOFU_CTRL_REC_DIV, printCtrlInfoMap.get(PRINT_KEY_REC_DIV));
		// 同封コード
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOFU_CODE, printCtrlInfoMap.get(PRINT_KEY_DOFU_CODE));
		// 同封制御請求契約番号
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOFU_CTRL_SEIKY_KEI_NO, printCtrlInfoMap.get(PRINT_KEY_DOFU_CTRL_SEIKY_KEI_NO));
		// 組立種別
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.KUMI_SBT, printCtrlInfoMap.get(PRINT_KEY_KUMI_SBT));
		// 組立連番
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.KUMI_RENBAN, JPCUtilCommon.fillZero(String.valueOf(dofuNaiOutputSeqNoCnt), LENGTH_KUMI_RENBAN, false));
		// 同封制御レコード種別
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOFU_REC_SBT, printCtrlInfoMap.get(PRINT_KEY_DOFU_REC_SBT));
		// 同封制御＿サービス契約番号
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOFU_SVC_KEI_NO, printCtrlInfoMap.get(PRINT_KEY_DOFU_SVC_KEI_NO));
		// 同封制御＿課金先電話番号
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOFU_KAKINS_TELNO, printCtrlInfoMap.get(PRINT_KEY_DOFU_KAKINS_TELNO));
		// 請求年月
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.SEIKY_YM, printCtrlInfoMap.get(PRINT_SEIKY_YM));
		// レコード区分
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.REC_DIV, printCtrlInfoMap.get(PRINT_KEY_REC_DIV));
		// シーケンス番号
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.SEQ_NO, JPCUtilCommon.fillZero(String.valueOf(this.seqNo), LENGTH_SEQ_NO, false));
		// 請求契約番号
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.SEIKY_KEI_NO, printCtrlInfoMap.get(PRINT_KEY_SEIKY_KEI_NO));
		// 郵便番号
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.SOHUS_PCD, printCtrlInfoMap.get(PRINT_KEY_SOHUS_PCD));
		// 封書区分
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.FUSHO_DIV, printCtrlInfoMap.get(PRINT_KEY_FUSYO_DIV));
		// 同封物種別１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOHUBT_SBT1, printCtrlInfoMap.get(PRINT_KEY_DOHUBT_SBT1));
		// 同封物種別１部数
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOHUBT_SBT1_CNT, printCtrlInfoMap.get(PRINT_KEY_DOHUBT_SBT1_CNT));
		// 同封物種別２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOHUBT_SBT2, printCtrlInfoMap.get(PRINT_KEY_DOHUBT_SBT2));
		// 同封物種別２部数
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOHUBT_SBT2_CNT, printCtrlInfoMap.get(PRINT_KEY_DOHUBT_SBT2_CNT));
		// 同封物種別３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOHUBT_SBT3, printCtrlInfoMap.get(PRINT_KEY_DOHUBT_SBT3));
		// 同封物種別３部数
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOHUBT_SBT3_CNT, printCtrlInfoMap.get(PRINT_KEY_DOHUBT_SBT3_CNT));
		// 同封物種別４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOHUBT_SBT4, printCtrlInfoMap.get(PRINT_KEY_DOHUBT_SBT4));
		// 同封物種別４部数
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOHUBT_SBT4_CNT, printCtrlInfoMap.get(PRINT_KEY_DOHUBT_SBT4_CNT));
		// 同封物種別５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOHUBT_SBT5, printCtrlInfoMap.get(PRINT_KEY_DOHUBT_SBT5));
		// 同封物種別５部数
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOHUBT_SBT5_CNT, printCtrlInfoMap.get(PRINT_KEY_DOHUBT_SBT5_CNT));
		// 同封物種別６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOHUBT_SBT6, printCtrlInfoMap.get(PRINT_KEY_DOHUBT_SBT6));
		// 同封物種別６部数
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.DOHUBT_SBT6_CNT, printCtrlInfoMap.get(PRINT_KEY_DOHUBT_SBT6_CNT));
		// 予備２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.YOBI2, printCtrlInfoMap.get(PRINT_KEY_YOBI2));
		// レコードＳＥＱ
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.REC_SEQ, printCtrlInfoMap.get(PRINT_KEY_REC_SEQ));
		
		/* 料金内訳情報部１ */
		// 料金内訳情報部１格納マップ取得
		HashMap<String, String> prcUcwkInfoMap = prcUcwkInfoList.get(IDX_PRC_UCWK_INFO_1);
		
		// 枚数＿１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CNT_1, prcUcwkInfoMap.get(PRC_KEY_CNT));
		// 表裏区分＿１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UPDOWN_DIV_1, prcUcwkInfoMap.get(PRC_KEY_UPDOWN_DIV));
		// 行＿１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.ROW_1, prcUcwkInfoMap.get(PRC_KEY_ROW));
		// 内訳面数＿１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UW_CNT_1, prcUcwkInfoMap.get(PRC_KEY_UW_CNT));
		// ＮＯ＿１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.NO_1, prcUcwkInfoMap.get(PRC_KEY_NO));
		// 料金コード＿１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_CD_1, prcUcwkInfoMap.get(PRC_KEY_PRC_CD));
		// 料金名称＿１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_NM_1, prcUcwkInfoMap.get(PRC_KEY_PRC_NM));
		// 税区分＿１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.TAX_DIV_1, prcUcwkInfoMap.get(PRC_KEY_TAX_DIV));
		// 金額＿１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_1, prcUcwkInfoMap.get(PRC_KEY_AMNT));
		// 金額内訳＿１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_UCWK_1, prcUcwkInfoMap.get(PRC_KEY_AMNT_UCWK));
		// 編集金額＿１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_1, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT));
		// 編集金額内訳＿１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_UCWK_1, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT_UCWK));
		// 利用期間＿１
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CHRG_PCALL_CNT_1, prcUcwkInfoMap.get(PRC_KEY_CHRG_PCALL_CNT));
		
		// 料金内訳情報部１格納マップクリア
		prcUcwkInfoMap.clear();
		
		/* 料金内訳情報部２ */
		// 料金内訳情報部２格納マップ取得
		prcUcwkInfoMap = prcUcwkInfoList.get(IDX_PRC_UCWK_INFO_2);
		
		// 枚数＿２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CNT_2, prcUcwkInfoMap.get(PRC_KEY_CNT));
		// 表裏区分＿２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UPDOWN_DIV_2, prcUcwkInfoMap.get(PRC_KEY_UPDOWN_DIV));
		// 行＿２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.ROW_2, prcUcwkInfoMap.get(PRC_KEY_ROW));
		// 内訳面数＿２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UW_CNT_2, prcUcwkInfoMap.get(PRC_KEY_UW_CNT));
		// ＮＯ＿２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.NO_2, prcUcwkInfoMap.get(PRC_KEY_NO));
		// 料金コード＿２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_CD_2, prcUcwkInfoMap.get(PRC_KEY_PRC_CD));
		// 料金名称＿２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_NM_2, prcUcwkInfoMap.get(PRC_KEY_PRC_NM));
		// 税区分＿２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.TAX_DIV_2, prcUcwkInfoMap.get(PRC_KEY_TAX_DIV));
		// 金額＿２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_2, prcUcwkInfoMap.get(PRC_KEY_AMNT));
		// 金額内訳＿２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_UCWK_2, prcUcwkInfoMap.get(PRC_KEY_AMNT_UCWK));
		// 編集金額＿２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_2, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT));
		// 編集金額内訳＿２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_UCWK_2, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT_UCWK));
		// 利用期間＿２
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CHRG_PCALL_CNT_2, prcUcwkInfoMap.get(PRC_KEY_CHRG_PCALL_CNT));
		
		// 料金内訳情報部２格納マップクリア
		prcUcwkInfoMap.clear();
		
		/* 料金内訳情報部３ */
		// 料金内訳情報部３格納マップ取得
		prcUcwkInfoMap = prcUcwkInfoList.get(IDX_PRC_UCWK_INFO_3);
		
		// 枚数＿３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CNT_3, prcUcwkInfoMap.get(PRC_KEY_CNT));
		// 表裏区分＿３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UPDOWN_DIV_3, prcUcwkInfoMap.get(PRC_KEY_UPDOWN_DIV));
		// 行＿３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.ROW_3, prcUcwkInfoMap.get(PRC_KEY_ROW));
		// 内訳面数＿３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UW_CNT_3, prcUcwkInfoMap.get(PRC_KEY_UW_CNT));
		// ＮＯ＿３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.NO_3, prcUcwkInfoMap.get(PRC_KEY_NO));
		// 料金コード＿３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_CD_3, prcUcwkInfoMap.get(PRC_KEY_PRC_CD));
		// 料金名称＿３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_NM_3, prcUcwkInfoMap.get(PRC_KEY_PRC_NM));
		// 税区分＿３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.TAX_DIV_3, prcUcwkInfoMap.get(PRC_KEY_TAX_DIV));
		// 金額＿３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_3, prcUcwkInfoMap.get(PRC_KEY_AMNT));
		// 金額内訳＿３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_UCWK_3, prcUcwkInfoMap.get(PRC_KEY_AMNT_UCWK));
		// 編集金額＿３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_3, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT));
		// 編集金額内訳＿３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_UCWK_3, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT_UCWK));
		// 利用期間＿３
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CHRG_PCALL_CNT_3, prcUcwkInfoMap.get(PRC_KEY_CHRG_PCALL_CNT));
		
		// 料金内訳情報部３格納マップクリア
		prcUcwkInfoMap.clear();
		
		/* 料金内訳情報部４ */
		// 料金内訳情報部４格納マップ取得
		prcUcwkInfoMap = prcUcwkInfoList.get(IDX_PRC_UCWK_INFO_4);
		
		// 枚数＿４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CNT_4, prcUcwkInfoMap.get(PRC_KEY_CNT));
		// 表裏区分＿４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UPDOWN_DIV_4, prcUcwkInfoMap.get(PRC_KEY_UPDOWN_DIV));
		// 行＿４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.ROW_4, prcUcwkInfoMap.get(PRC_KEY_ROW));
		// 内訳面数＿４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UW_CNT_4, prcUcwkInfoMap.get(PRC_KEY_UW_CNT));
		// ＮＯ＿４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.NO_4, prcUcwkInfoMap.get(PRC_KEY_NO));
		// 料金コード＿４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_CD_4, prcUcwkInfoMap.get(PRC_KEY_PRC_CD));
		// 料金名称＿４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_NM_4, prcUcwkInfoMap.get(PRC_KEY_PRC_NM));
		// 税区分＿４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.TAX_DIV_4, prcUcwkInfoMap.get(PRC_KEY_TAX_DIV));
		// 金額＿４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_4, prcUcwkInfoMap.get(PRC_KEY_AMNT));
		// 金額内訳＿４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_UCWK_4, prcUcwkInfoMap.get(PRC_KEY_AMNT_UCWK));
		// 編集金額＿４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_4, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT));
		// 編集金額内訳＿４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_UCWK_4, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT_UCWK));
		// 利用期間＿４
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CHRG_PCALL_CNT_4, prcUcwkInfoMap.get(PRC_KEY_CHRG_PCALL_CNT));
		
		// 料金内訳情報部４格納マップクリア
		prcUcwkInfoMap.clear();
		
		/* 料金内訳情報部５ */
		// 料金内訳情報部５格納マップ取得
		prcUcwkInfoMap = prcUcwkInfoList.get(IDX_PRC_UCWK_INFO_5);
		
		// 枚数＿５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CNT_5, prcUcwkInfoMap.get(PRC_KEY_CNT));
		// 表裏区分＿５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UPDOWN_DIV_5, prcUcwkInfoMap.get(PRC_KEY_UPDOWN_DIV));
		// 行＿５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.ROW_5, prcUcwkInfoMap.get(PRC_KEY_ROW));
		// 内訳面数＿５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UW_CNT_5, prcUcwkInfoMap.get(PRC_KEY_UW_CNT));
		// ＮＯ＿５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.NO_5, prcUcwkInfoMap.get(PRC_KEY_NO));
		// 料金コード＿５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_CD_5, prcUcwkInfoMap.get(PRC_KEY_PRC_CD));
		// 料金名称＿５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_NM_5, prcUcwkInfoMap.get(PRC_KEY_PRC_NM));
		// 税区分＿５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.TAX_DIV_5, prcUcwkInfoMap.get(PRC_KEY_TAX_DIV));
		// 金額＿５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_5, prcUcwkInfoMap.get(PRC_KEY_AMNT));
		// 金額内訳＿５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_UCWK_5, prcUcwkInfoMap.get(PRC_KEY_AMNT_UCWK));
		// 編集金額＿５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_5, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT));
		// 編集金額内訳＿５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_UCWK_5, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT_UCWK));
		// 利用期間＿５
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CHRG_PCALL_CNT_5, prcUcwkInfoMap.get(PRC_KEY_CHRG_PCALL_CNT));
		
		// 料金内訳情報部５格納マップクリア
		prcUcwkInfoMap.clear();
		
		/* 料金内訳情報部６ */
		// 料金内訳情報部６格納マップ取得
		prcUcwkInfoMap = prcUcwkInfoList.get(IDX_PRC_UCWK_INFO_6);
		
		// 枚数＿６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CNT_6, prcUcwkInfoMap.get(PRC_KEY_CNT));
		// 表裏区分＿６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UPDOWN_DIV_6, prcUcwkInfoMap.get(PRC_KEY_UPDOWN_DIV));
		// 行＿６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.ROW_6, prcUcwkInfoMap.get(PRC_KEY_ROW));
		// 内訳面数＿６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UW_CNT_6, prcUcwkInfoMap.get(PRC_KEY_UW_CNT));
		// ＮＯ＿６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.NO_6, prcUcwkInfoMap.get(PRC_KEY_NO));
		// 料金コード＿６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_CD_6, prcUcwkInfoMap.get(PRC_KEY_PRC_CD));
		// 料金名称＿６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_NM_6, prcUcwkInfoMap.get(PRC_KEY_PRC_NM));
		// 税区分＿６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.TAX_DIV_6, prcUcwkInfoMap.get(PRC_KEY_TAX_DIV));
		// 金額＿６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_6, prcUcwkInfoMap.get(PRC_KEY_AMNT));
		// 金額内訳＿６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_UCWK_6, prcUcwkInfoMap.get(PRC_KEY_AMNT_UCWK));
		// 編集金額＿６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_6, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT));
		// 編集金額内訳＿６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_UCWK_6, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT_UCWK));
		// 利用期間＿６
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CHRG_PCALL_CNT_6, prcUcwkInfoMap.get(PRC_KEY_CHRG_PCALL_CNT));
		
		// 料金内訳情報部６格納マップクリア
		prcUcwkInfoMap.clear();
		
		/* 料金内訳情報部７ */
		// 料金内訳情報部７格納マップ取得
		prcUcwkInfoMap = prcUcwkInfoList.get(IDX_PRC_UCWK_INFO_7);
		
		// 枚数＿７
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CNT_7, prcUcwkInfoMap.get(PRC_KEY_CNT));
		// 表裏区分＿７
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UPDOWN_DIV_7, prcUcwkInfoMap.get(PRC_KEY_UPDOWN_DIV));
		// 行＿７
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.ROW_7, prcUcwkInfoMap.get(PRC_KEY_ROW));
		// 内訳面数＿７
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.UW_CNT_7, prcUcwkInfoMap.get(PRC_KEY_UW_CNT));
		// ＮＯ＿７
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.NO_7, prcUcwkInfoMap.get(PRC_KEY_NO));
		// 料金コード＿７
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_CD_7, prcUcwkInfoMap.get(PRC_KEY_PRC_CD));
		// 料金名称＿７
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.PRC_NM_7, prcUcwkInfoMap.get(PRC_KEY_PRC_NM));
		// 税区分＿７
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.TAX_DIV_7, prcUcwkInfoMap.get(PRC_KEY_TAX_DIV));
		// 金額＿７
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_7, prcUcwkInfoMap.get(PRC_KEY_AMNT));
		// 金額内訳＿７
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.AMNT_UCWK_7, prcUcwkInfoMap.get(PRC_KEY_AMNT_UCWK));
		// 編集金額＿７
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_7, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT));
		// 編集金額内訳＿７
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.HENSHU_AMNT_UCWK_7, prcUcwkInfoMap.get(PRC_KEY_HENSHU_AMNT_UCWK));
		// 利用期間＿７
		ucwkInfoKumiFileInfo.set(JBSbatCHIFM090.CHRG_PCALL_CNT_7, prcUcwkInfoMap.get(PRC_KEY_CHRG_PCALL_CNT));
		
		// 料金内訳情報部７格納マップクリア
		prcUcwkInfoMap.clear();	
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setUcwkInfoKumiFile]");
		
		return ucwkInfoKumiFileInfo;
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * @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;
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 面数から表裏区分を判定します
	 * 
	 * @param menNo 明細面数
	 * @return String 表裏区分
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private String getUrDiv(String menNo)throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getUrDiv]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getUrDiv][面数" + menNo +"]");
		
		int tmpurDiv = Integer.parseInt(menNo) % 2;
		if(tmpurDiv == 1)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getUrDiv][表裏区分：'1'表]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getUrDiv]");
			return JACStrConst.UR_DIV_FRONT;
		}
		else
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getUrDiv][表裏区分：'2'表]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getUrDiv]");
			return JACStrConst.UR_DIV_BACK;
		}
	}
	
	/**
	 * 文字を連結します
	 * @param  string 文字
	 * @return strBuf 連結した文字列
	 */
	private String makeStr(String ...string)
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeStr]");
		
		StringBuffer strBuf = new StringBuffer();
		for(String str:string)
		{
			if(str == null)
			{
				strBuf.append(JACStrConst.KARA_MOJI);
			}
			else
			{
				strBuf.append(str);
			}
		}
		
		assert strBuf != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][strBuf][strBuf = " + strBuf.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeStr]");
		
		return strBuf.toString();
	}
}
