/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatAKSeikyuwIdoFyo
*	ソースファイル名	：JBSbatAKSeikyuwIdoFyo.java
*	作成者				：富士通　
*	作成日				：2013年04月24日
*＜機能概要＞
*　当月異動情報付与部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2013/04/24   富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JZMBatConst;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.business.common.JBSbatMatchServiceInterface;
import eo.business.util.file.JBSbatAKIFM021;
import eo.business.util.file.JBSbatAKIFM022;
import eo.business.util.file.JBSbatAKIFM023;
import eo.business.common.JCNBatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatAKSeikyuwIdoFyo extends JBSbatBusinessService implements JBSbatMatchServiceInterface
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** キーマッチ処理フラグ*/
	private boolean matchProcFlg;

	/** マスタファイル処理フラグ*/
	private boolean mastProcFlg;

	/** トランファイル処理フラグ*/
	private boolean tranProcFlg;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** データ種別＿請求内訳(当月異動分） */
	private static final String DATA_SBT_SEIKYUW_TOGTU_IDO = "51";
	
	/** データ種別＿請求内訳なし */
	private static final String DATA_SBT_SEIKYUW_NASHI = "99";
	
	/** 内訳重複識別＿１件目出力時 */
	private static final String UCWK_DBLE_SBT_0 = "0";
	
	/** 内訳重複識別＿２件目以降出力時 */
	private static final String UCWK_DBLE_SBT_1 = "1";
	
	/** 退避．トランリスト */
	private ArrayList<JBSbatServiceInterfaceMap> tmpTranList = null;
	
	/** 退避．マスターキー */
	private String tmpKey = null;
	
	/** マスターキー初回判定フラグ */
	private boolean mastKeyJdgFlg = false;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		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;
		
		//マッチングキー
		String mastKey = "";
		String tranKey = "";
		
		// 入力Ｍ、入力Ｔともにnullの場合
		if(mastMap == null && tranMap == null)
		{
			// 処理を抜ける
			return null;
		}
		// 入力Ｍのみ存在する
		else if (mastMap != null && tranMap == null)
		{	
			// マスタマッチングキー取得
			mastKey 	= new StringBuffer().append(mastMap.getString(JBSbatAKIFM023.SEIKY_KEI_NO)).			// 請求内訳．請求契約番号
											append(mastMap.getString(JBSbatAKIFM023.SVC_KEI_NO)).toString();	// 請求内訳．サービス契約番号
			
			if(mastKey.equals(tmpKey) && mastKeyJdgFlg)
			{
					mastKeyJdgFlg = false;
			}
			else if(mastKey.equals(tmpKey) && !mastKeyJdgFlg)
			{
				
				// 退避．トランリストから出力レコード作成
				for(int i =0; i < tmpTranList.size(); i++)
				{
					JBSbatServiceInterfaceMap wkTranMap = tmpTranList.get(i);
					outputInItem.addOutMapList(makeOutputInfo(mastMap, wkTranMap, i));
				}
				
			} else {
				// 出力処理（請求内訳のみ） 
				outputInItem.addOutMapList(makeOutputInfo(mastMap, null, 0));
			}
			
			// マスター次レコード
			this.setMastProcFlg(true);
		}
		// 入力Ｔのみ存在する
		else if (mastMap == null && tranMap != null)
		{
			// 出力処理（異動データのみ）
			outputInItem.addOutMapList(makeOutputInfo(null, tranMap, 0));
			// トラン次レコード
			this.setTranProcFlg(true);
		}
		// 入力Ｍ、入力Ｔともに存在する
		else
		{
			// マッチングキー取得
			mastKey 	= new StringBuffer().append(mastMap.getString(JBSbatAKIFM023.SEIKY_KEI_NO)).			// 請求内訳．請求契約番号
											append(mastMap.getString(JBSbatAKIFM023.SVC_KEI_NO)).toString();	// 請求内訳．サービス契約番号
			tranKey 	= new StringBuffer().append(tranMap.getString(JBSbatAKIFM023.SEIKY_KEI_NO)).			// 異動データ．請求契約番号
											append(tranMap.getString(JBSbatAKIFM023.SVC_KEI_NO)).toString();	// 異動データ．サービス契約番号
			
			// 退避キーがない(入力１件目) or キーブレイク時
			if (tmpKey == null || !mastKey.equals(tmpKey))
			{
				// 退避．トランリストを初期化する
				tmpTranList = new ArrayList<JBSbatServiceInterfaceMap>();
				// 退避．マスターキーを設定する
				tmpKey = mastKey;
				// マスターキー初回判定フラグを設定する
				mastKeyJdgFlg = true;
			}
		
			// 入力Ｍ ＝ 入力Ｔ
			if (mastKey.compareTo(tranKey) == 0)
			{

				// 出力処理
				outputInItem.addOutMapList(makeOutputInfo(mastMap, tranMap, tmpTranList.size()));
				
				// 退避．トランリストに追加する
				tmpTranList.add(tranMap);
				
				// トラン次レコード
				this.setTranProcFlg(true);

			}
			// 入力Ｍ < 入力Ｔ
			else if (mastKey.compareTo(tranKey) < 0)
			{
				// マスターキー変更初回、トランがない場合
				if (mastKeyJdgFlg && 0 == tmpTranList.size())
				{
					// 出力処理（請求内訳のみ） 
					outputInItem.addOutMapList(makeOutputInfo(mastMap, null, 0));
				}
				// マスターキー変更初回、トランがある場合
				else if (mastKeyJdgFlg && 0 < tmpTranList.size())
				{
					mastKeyJdgFlg = false;
				}
				// キーが同じマスターの２件目以降
				else
				{
					// 退避．トランリストから出力レコード作成
					for(int i =0; i < tmpTranList.size(); i++)
					{
						JBSbatServiceInterfaceMap wkTranMap = tmpTranList.get(i);
						outputInItem.addOutMapList(makeOutputInfo(mastMap, wkTranMap, i));
					}
					
				}
				
				// マスター次レコード
				this.setMastProcFlg(true);
			}
			// 入力Ｍ > 入力Ｔ
			else if (mastKey.compareTo(tranKey) > 0)
			{
				// 出力処理（異動データのみ）
				outputInItem.addOutMapList(makeOutputInfo(null, tranMap, 0));
				
				// トラン次レコード
				this.setTranProcFlg(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]");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * @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  mastMap       請求内訳（マスタ）
	 * @param  tranMap       異動データ（トラン）
	 * @param  tranIndex     
	 * @return JBSbatServiceInterfaceMap		出力情報
	 * @throws Exception  業務サービス内で発生した例外全般
	 */
	private JBSbatServiceInterfaceMap makeOutputInfo(JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap, int tranIndex) throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputInfo]");
		
		// 請求内訳異動データマップ
		JBSbatServiceInterfaceMap retMap = new JBSbatServiceInterfaceMap();

		// マスタがない場合、ブランクを設定（DB項目がCHAR型かつNotNullの場合半角スペースで桁数分を設定する）
		if (mastMap == null)
		{
			retMap.set(JBSbatAKIFM023.DATA_SBT, 			DATA_SBT_SEIKYUW_NASHI);								// データ種別
			retMap.set(JBSbatAKIFM023.SEIKY_NO, 			JCNBatStringUtil.strHankakuSpacePad("", 12));			// 請求番号
			retMap.set(JBSbatAKIFM023.SEIKY_KEI_NO,  		JCNBatStringUtil.strHankakuSpacePad("", 10));			// 請求契約番号
			retMap.set(JBSbatAKIFM023.SEIKY_YM,  			JCNBatStringUtil.strHankakuSpacePad("", 6)); 			// 請求年月
			retMap.set(JBSbatAKIFM023.SEIRI_NO,  			JCNBatStringUtil.strHankakuSpacePad("", 14)); 			// 整理番号
			retMap.set(JBSbatAKIFM023.SVC_KEI_NO,			JCNBatStringUtil.strHankakuSpacePad("", 10));			// サービス契約番号
			retMap.set(JBSbatAKIFM023.UCWK_JFK_SKB, 		JZMBatConst.BLANK);										// 内訳重複種別
			retMap.set(JBSbatAKIFM023.PRC_GRP_CD, 			JCNBatStringUtil.strHankakuSpacePad("", 2));			// 料金グループコード
			retMap.set(JBSbatAKIFM023.PCRS_CD,				JCNBatStringUtil.strHankakuSpacePad("", 3));			// 料金コースコード
			retMap.set(JBSbatAKIFM023.PRC_SVC_CD,			JCNBatStringUtil.strHankakuSpacePad("", 12));			// 料金サービスコード
			retMap.set(JBSbatAKIFM023.PRC_KMK_CD,			JCNBatStringUtil.strHankakuSpacePad("", 11));			// 料金項目コード
			retMap.set(JBSbatAKIFM023.PRC_KMK_NM,			JZMBatConst.BLANK);										// 料金項目名称
			retMap.set(JBSbatAKIFM023.GSAN_SEIKY_YM,		JCNBatStringUtil.strHankakuSpacePad("", 6));			// 合算請求年月
			retMap.set(JBSbatAKIFM023.USE_STAYMD,			JZMBatConst.BLANK);										// 利用開始年月日
			retMap.set(JBSbatAKIFM023.USE_ENDYMD,			JZMBatConst.BLANK);										// 利用終了年月日
			retMap.set(JBSbatAKIFM023.AMNT,					JZMBatConst.BLANK);										// 金額
			retMap.set(JBSbatAKIFM023.ZGTU_AMNT,			JZMBatConst.BLANK);										// 前月金額
			retMap.set(JBSbatAKIFM023.PRC_TEISE_ADD_FLG,	JCNBatStringUtil.strHankakuSpacePad("", 1));			// 料金訂正登録フラグ
			retMap.set(JBSbatAKIFM023.ADD_DTM,				JCNBatStringUtil.strHankakuSpacePad("", 17));			// 登録年月日時分秒
			retMap.set(JBSbatAKIFM023.ADD_OPEACNT,			JCNBatStringUtil.strHankakuSpacePad("", 10));			// 登録オペレータアカウント
			retMap.set(JBSbatAKIFM023.UPD_DTM,				JCNBatStringUtil.strHankakuSpacePad("", 17));			// 更新年月日時分秒
			retMap.set(JBSbatAKIFM023.UPD_OPEACNT,			JCNBatStringUtil.strHankakuSpacePad("", 10));			// 更新オペレータアカウント
		}
		// マスタがある場合
		else
		{
			retMap.set(JBSbatAKIFM023.DATA_SBT, 			DATA_SBT_SEIKYUW_TOGTU_IDO);							// データ種別
			retMap.set(JBSbatAKIFM023.SEIKY_NO, 			mastMap.getString(JBSbatAKIFM021.SEIKY_NO));			// 請求番号
			retMap.set(JBSbatAKIFM023.SEIKY_KEI_NO,  		mastMap.getString(JBSbatAKIFM021.SEIKY_KEI_NO));		// 請求契約番号
			retMap.set(JBSbatAKIFM023.SEIKY_YM,  			mastMap.getString(JBSbatAKIFM021.SEIKY_YM)); 			// 請求年月
			retMap.set(JBSbatAKIFM023.SEIRI_NO,  			mastMap.getString(JBSbatAKIFM021.SEIRI_NO)); 			// 整理番号
			retMap.set(JBSbatAKIFM023.SVC_KEI_NO,			mastMap.getString(JBSbatAKIFM021.SVC_KEI_NO));			// サービス契約番号

			// トランが１件目の場合
			if (0 == tranIndex)
			{
				retMap.set(JBSbatAKIFM023.UCWK_JFK_SKB, 	UCWK_DBLE_SBT_0);										// 内訳重複種別
			}
			// トランが２件目以降の場合
			else 
			{
				retMap.set(JBSbatAKIFM023.UCWK_JFK_SKB, 	UCWK_DBLE_SBT_1);										// 内訳重複種別
			}

			retMap.set(JBSbatAKIFM023.PRC_GRP_CD, 			mastMap.getString(JBSbatAKIFM021.PRC_GRP_CD));			// 料金グループコード
			retMap.set(JBSbatAKIFM023.PCRS_CD,				mastMap.getString(JBSbatAKIFM021.PCRS_CD));				// 料金コースコード
			retMap.set(JBSbatAKIFM023.PRC_SVC_CD,			mastMap.getString(JBSbatAKIFM021.PRC_SVC_CD));			// 料金サービスコード
			retMap.set(JBSbatAKIFM023.PRC_KMK_CD,			mastMap.getString(JBSbatAKIFM021.PRC_KMK_CD));			// 料金項目コード
			retMap.set(JBSbatAKIFM023.PRC_KMK_NM,			mastMap.getString(JBSbatAKIFM021.PRC_KMK_NM));			// 料金項目名称
			retMap.set(JBSbatAKIFM023.GSAN_SEIKY_YM,		mastMap.getString(JBSbatAKIFM021.GSAN_SEIKY_YM));		// 合算請求年月
			retMap.set(JBSbatAKIFM023.USE_STAYMD,			mastMap.getString(JBSbatAKIFM021.USE_STAYMD));			// 利用開始年月日
			retMap.set(JBSbatAKIFM023.USE_ENDYMD,			mastMap.getString(JBSbatAKIFM021.USE_ENDYMD));			// 利用終了年月日
			retMap.set(JBSbatAKIFM023.AMNT,					mastMap.getString(JBSbatAKIFM021.AMNT));				// 金額
			retMap.set(JBSbatAKIFM023.ZGTU_AMNT,			JZMBatConst.BLANK);										// 前月金額
			retMap.set(JBSbatAKIFM023.PRC_TEISE_ADD_FLG,	mastMap.getString(JBSbatAKIFM021.PRC_TEISE_ADD_FLG));	// 料金訂正登録フラグ
			retMap.set(JBSbatAKIFM023.ADD_DTM,				mastMap.getString(JBSbatAKIFM021.ADD_DTM));				// 登録年月日時分秒
			retMap.set(JBSbatAKIFM023.ADD_OPEACNT,			mastMap.getString(JBSbatAKIFM021.ADD_OPEACNT));			// 登録オペレータアカウント
			retMap.set(JBSbatAKIFM023.UPD_DTM,				mastMap.getString(JBSbatAKIFM021.UPD_DTM));				// 更新年月日時分秒
			retMap.set(JBSbatAKIFM023.UPD_OPEACNT,			mastMap.getString(JBSbatAKIFM021.UPD_OPEACNT));			// 更新オペレータアカウント
		}
		
		// トランがない場合、ブランクを設定（DB項目がCHAR型かつNotNullの場合半角スペースで桁数分を設定する）
		if (tranMap == null)
		{
			retMap.set(JBSbatAKIFM023.PRG_NO,					JCNBatStringUtil.strHankakuSpacePad("", 12));		// 進捗番号
			retMap.set(JBSbatAKIFM023.MSKM_DTL_NO,				JZMBatConst.BLANK);									// 申込明細番号
			retMap.set(JBSbatAKIFM023.PRG_SEIKY_KEI_NO,			JZMBatConst.BLANK);									// 進捗請求契約番号
			retMap.set(JBSbatAKIFM023.PRG_SVC_KEI_NO,			JCNBatStringUtil.strHankakuSpacePad("", 10));		// 進捗サービス契約番号
			retMap.set(JBSbatAKIFM023.SVC_KEI_UCWK_NO,			JZMBatConst.BLANK);									// サービス契約内訳番号
			retMap.set(JBSbatAKIFM023.SVC_KEI_KAISEN_UCWK_NO,	JZMBatConst.BLANK);									// サービス契約回線内訳番号
			retMap.set(JBSbatAKIFM023.KKTK_SVC_KEI_NO,			JZMBatConst.BLANK);									// 機器提供サービス契約番号
			retMap.set(JBSbatAKIFM023.OP_SVC_KEI_NO,			JZMBatConst.BLANK);									// オプションサービス契約番号
			retMap.set(JBSbatAKIFM023.SEIOPSVC_KEI_NO,			JZMBatConst.BLANK);									// 請求オプションサービス契約番号
			retMap.set(JBSbatAKIFM023.SBOP_SVC_KEI_NO,			JZMBatConst.BLANK);									// サブオプションサービス契約番号
			retMap.set(JBSbatAKIFM023.WRIB_SVC_KEI_NO,			JZMBatConst.BLANK);									// 割引サービス契約番号
			retMap.set(JBSbatAKIFM023.IDO_DIV,					JCNBatStringUtil.strHankakuSpacePad("", 5));		// 異動区分
			retMap.set(JBSbatAKIFM023.IDO_DIV_NM,				JZMBatConst.BLANK);									// 異動区分名
			retMap.set(JBSbatAKIFM023.IDO_DTM,					JCNBatStringUtil.strHankakuSpacePad("", 17));		// 異動年月日時分秒
			retMap.set(JBSbatAKIFM023.PRG_STAT,					JCNBatStringUtil.strHankakuSpacePad("", 4));		// 進捗ステータス
			retMap.set(JBSbatAKIFM023.PRG_DTM,					JCNBatStringUtil.strHankakuSpacePad("", 17));		// 進捗年月日時分秒
			retMap.set(JBSbatAKIFM023.PRG_MEMO,					JZMBatConst.BLANK);									// 進捗メモ
			retMap.set(JBSbatAKIFM023.PRG_TKJK_1,				JZMBatConst.BLANK);									// 進捗特記事項１
			retMap.set(JBSbatAKIFM023.PRG_TKJK_2,				JZMBatConst.BLANK);									// 進捗特記事項２
		}
		// トランがある場合
		else 
		{
			retMap.set(JBSbatAKIFM023.PRG_NO,					tranMap.getString(JBSbatAKIFM022.PRG_NO));					// 進捗番号
			retMap.set(JBSbatAKIFM023.MSKM_DTL_NO,				tranMap.getString(JBSbatAKIFM022.MSKM_DTL_NO));				// 申込明細番号
			retMap.set(JBSbatAKIFM023.PRG_SEIKY_KEI_NO,			tranMap.getString(JBSbatAKIFM022.SEIKY_KEI_NO));			// 進捗請求契約番号
			retMap.set(JBSbatAKIFM023.PRG_SVC_KEI_NO,			tranMap.getString(JBSbatAKIFM022.SVC_KEI_NO));				// 進捗サービス契約番号
			retMap.set(JBSbatAKIFM023.SVC_KEI_UCWK_NO,			tranMap.getString(JBSbatAKIFM022.SVC_KEI_UCWK_NO));			// サービス契約内訳番号
			retMap.set(JBSbatAKIFM023.SVC_KEI_KAISEN_UCWK_NO,	tranMap.getString(JBSbatAKIFM022.SVC_KEI_KAISEN_UCWK_NO));	// サービス契約回線内訳番号
			retMap.set(JBSbatAKIFM023.KKTK_SVC_KEI_NO,			tranMap.getString(JBSbatAKIFM022.KKTK_SVC_KEI_NO));			// 機器提供サービス契約番号
			retMap.set(JBSbatAKIFM023.OP_SVC_KEI_NO,			tranMap.getString(JBSbatAKIFM022.OP_SVC_KEI_NO));			// オプションサービス契約番号
			retMap.set(JBSbatAKIFM023.SEIOPSVC_KEI_NO,			tranMap.getString(JBSbatAKIFM022.SEIOPSVC_KEI_NO));			// 請求オプションサービス契約番号
			retMap.set(JBSbatAKIFM023.SBOP_SVC_KEI_NO,			tranMap.getString(JBSbatAKIFM022.SBOP_SVC_KEI_NO));			// サブオプションサービス契約番号
			retMap.set(JBSbatAKIFM023.WRIB_SVC_KEI_NO,			tranMap.getString(JBSbatAKIFM022.WRIB_SVC_KEI_NO));			// 割引サービス契約番号
			retMap.set(JBSbatAKIFM023.IDO_DIV,					tranMap.getString(JBSbatAKIFM022.IDO_DIV));					// 異動区分
			retMap.set(JBSbatAKIFM023.IDO_DIV_NM,				tranMap.getString(JBSbatAKIFM022.IDO_DIV_NM));				// 異動区分名
			retMap.set(JBSbatAKIFM023.IDO_DTM,					tranMap.getString(JBSbatAKIFM022.IDO_DTM));					// 異動年月日時分秒
			retMap.set(JBSbatAKIFM023.PRG_STAT,					tranMap.getString(JBSbatAKIFM022.PRG_STAT));				// 進捗ステータス
			retMap.set(JBSbatAKIFM023.PRG_DTM,					tranMap.getString(JBSbatAKIFM022.PRG_DTM));					// 進捗年月日時分秒
			retMap.set(JBSbatAKIFM023.PRG_MEMO,					tranMap.getString(JBSbatAKIFM022.PRG_MEMO));				// 進捗メモ
			retMap.set(JBSbatAKIFM023.PRG_TKJK_1,				tranMap.getString(JBSbatAKIFM022.PRG_TKJK_1));				// 進捗特記事項１
			retMap.set(JBSbatAKIFM023.PRG_TKJK_2,				tranMap.getString(JBSbatAKIFM022.PRG_TKJK_2));				// 進捗特記事項２
		
		}
			
		retMap.setOutFlg(true);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputInfo][retMap=" + retMap.getMap().toString() + "]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputInfo]");
		return retMap;
	}
	/**▲▲▲▲▲▲メソッド追加 終了▲▲▲▲▲▲*/
}
