/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACSvcKeiIfCheck
*	ソースファイル名	：JBSbatACSvcKeiIfCheck.java
*	作成者				：富士通　
*	作成日				：2013年12月05日
*＜機能概要＞
*　サービス契約情報インターフェイスチェック部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v6.00.00	2013/12/05   FJ）狭間	【OM-2013-0004668】新規作成
*	v6.01.00	2013/12/11   FJ) 早崎	【OM-2013-0005117】料金サービスコード≠"SEIKYU"の情報のみチェック対象とする
*	v6.02.00	2013/12/17   FJ) 小掠	【OM-2013-0005139】Not null項目のチェックを増強
*	v6.03.00	2013/12/24   FJ) 早崎	【OM-2013-0005105】チェック内容C(課金開始日とサービス開始日の比較チェック)を削除
*********************************************************************/
package eo.business.service;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatACIFI001;
import eo.business.util.file.JBSbatACIFM253;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatACSvcKeiIfCheck extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** エラーフラグ */
	private long errCnt = 0;
	
	/** エラーコード */
	private String errCd = JACStrConst.KARA_MOJI;
	
	/** エラーメッセージ */
	private String errMsg = JACStrConst.KARA_MOJI;
	
	/** エラーコード定義 */
	private static final String ERR_CD_05 = "05";
	private static final String ERR_CD_10 = "10";
	private static final String ERR_CD_15 = "15";
	private static final String ERR_CD_25 = "25";
	private static final String ERR_CD_30 = "30";
	private static final String ERR_CD_35 = "35";
	private static final String ERR_CD_40 = "40";
	private static final String ERR_CD_45 = "45";
	private static final String ERR_CD_50 = "50";
	private static final String ERR_CD_55 = "55";
	private static final String ERR_CD_60 = "60";
	private static final String ERR_CD_62 = "62";
	private static final String ERR_CD_64 = "64";
	private static final String ERR_CD_66 = "66";
	private static final String ERR_CD_68 = "68";
	private static final String ERR_CD_70 = "70";
	private static final String ERR_CD_72 = "72";
	private static final String ERR_CD_74 = "74";
	private static final String ERR_CD_76 = "76";
	private static final String ERR_CD_78 = "78";
	private static final String ERR_CD_80 = "80";
	
	
	/** エラーメッセージ定義 */
	private static final String ERR_MSG_00 = "複数のエラーがあります。エラーコードをご確認ください。";
	private static final String ERR_MSG_05 = "サービス解約日とサービス解約理由がセットで設定されていません。";
	private static final String ERR_MSG_10 = "サービス休止解除日が設定されているのにサービス休止日が設定されていません。";
	private static final String ERR_MSG_15 = "利用不可終了日が設定されているのに利用不可開始日が設定されていません。";
	private static final String ERR_MSG_25 = "サービス継続日数が定義された桁数（５）を超えています。";
	private static final String ERR_MSG_30 = "サービス継続月数が定義された桁数（３）を超えています。";
	private static final String ERR_MSG_35 = "課金継続日数が定義された桁数（５）を超えています。";
	private static final String ERR_MSG_40 = "課金継続月数が定義された桁数（３）を超えています。";
	private static final String ERR_MSG_45 = "NOT NULL項目（料金サービスコード）に値が設定されていません。";
	private static final String ERR_MSG_50 = "NOT NULL項目（請求契約番号）に値が設定されていません。";
	private static final String ERR_MSG_55 = "NOT NULL項目（相対区分）に値が設定されていません。";
	private static final String ERR_MSG_60 = "NOT NULL項目（締め日）に値が設定されていません。";
	private static final String ERR_MSG_62 = "NOT NULL項目（サービス開始日）に値が設定されていません。";
	private static final String ERR_MSG_64 = "NOT NULL項目（課金開始日）に値が設定されていません。";
	private static final String ERR_MSG_66 = "NOT NULL項目（初回課金開始日）に値が設定されていません。";
	private static final String ERR_MSG_68 = "NOT NULL項目（課金終了日）に値が設定されていません。";
	private static final String ERR_MSG_70 = "NOT NULL項目（サービス継続月数）に値が設定されていません。";
	private static final String ERR_MSG_72 = "NOT NULL項目（サービス継続日数）に値が設定されていません。";
	private static final String ERR_MSG_74 = "NOT NULL項目（課金継続月数）に値が設定されていません。";
	private static final String ERR_MSG_76 = "NOT NULL項目（課金継続日数）に値が設定されていません。";
	private static final String ERR_MSG_78 = "NOT NULL項目（契約数）に値が設定されていません。";
	private static final String ERR_MSG_80 = "NOT NULL項目（月中最大契約数）に値が設定されていません。";
	
	/** エラーコード区切り文字 */
	private static final String ERR_CD_SEP = "|";
	
	/**
	 * 初期処理
	 * @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, "[L][initial][opeDate=" + super.opeDate + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][freeItem=" + super.freeItem + "]");

		this.errCnt = 0;
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert 	inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][inMap=" + inMap.getMap().toString() + "]") : true;
		JBSbatOutputItem outputItem = new JBSbatOutputItem();

		// 入力チェック処理
		if(isCheckInputData(inMap))
		{
			// チェック結果が正常の場合
			// サービス契約情報チェック後（ACIFI001）作成
			JBSbatServiceInterfaceMap outMapNomal = this.getOutputInfNormal(inMap);
			outputItem.addOutMapList(outMapNomal);
		}
		else
		{
			
			if(this.errCnt == 0)
			{
				// サービス契約情報チェック結果（ACIFM253）作成
				JBSbatServiceInterfaceMap outMapHedder = this.outHedderError();
				outputItem.addOutMapList_2(outMapHedder);
			}
			
			// チェック結果が異常の場合
			// サービス契約情報チェック結果（ACIFM253）作成
			JBSbatServiceInterfaceMap outMapError = this.getOutputInfError(inMap, this.errMsg, this.errCd);
			outputItem.addOutMapList_2(outMapError);
			this.errCnt = this.errCnt + 1;
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][" + this.errMsg + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		
		// エラーデータが1件でもあれば
		if(0 < this.errCnt)
		{
			// (a) 入出力情報をFree項目より取得
			String[] freeItem = this.freeItem.split(JACStrConst.FREE_DIV);
			String outFile2 = freeItem[0];
			String tmpErrCnt = String.valueOf(this.errCnt);

			// ワーニングログを出力する
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0910NW, 
					new String[] {tmpErrCnt, outFile2});
		}
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * ヘッダーの作成を行います。
	 * 
	 * @return outMap    出力電文
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatServiceInterfaceMap outHedderError() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outHedderError]");
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		outMap.setString(JBSbatACIFM253.ERR_MSG, "エラー内容");									// エラー内容
		outMap.setString(JBSbatACIFM253.ERR_CD, "エラーコード");								// エラーコード
		outMap.setString(JBSbatACIFM253.PRC_GRP_CD, "料金グループコード");						// 料金グループコード
		outMap.setString(JBSbatACIFM253.PCRS_CD, "料金コースコード");							// 料金コースコード
		outMap.setString(JBSbatACIFM253.TRGT_PRC_SVC_CD, "料金サービスコード");					// 料金サービスコード
		outMap.setString(JBSbatACIFM253.SEIRI_NO, "整理番号");									// 整理番号
		outMap.setString(JBSbatACIFM253.SVC_NO, "サービス番号");								// サービス番号
		outMap.setString(JBSbatACIFM253.JYUZOKU_SVC_NO, "従属サービス番号");					// 従属サービス番号
		outMap.setString(JBSbatACIFM253.SEIKY_KEI_NO, "請求契約番号");							// 請求契約番号
		outMap.setString(JBSbatACIFM253.WRIB_SVC_KEI_NO, "割引サービス契約番号");				// 割引サービス契約番号
		outMap.setString(JBSbatACIFM253.SVC_STAYMD, "サービス開始日");							// サービス開始日
		outMap.setString(JBSbatACIFM253.SVC_DSL_YMD, "サービス解約日");							// サービス解約日
		outMap.setString(JBSbatACIFM253.SVC_DLRE, "サービス解約理由");							// サービス解約理由
		outMap.setString(JBSbatACIFM253.SVC_KAIHK_DAY, "サービス回復日");						// サービス回復日
		outMap.setString(JBSbatACIFM253.SVC_CANCEL_DAY, "サービスキャンセル日");				// サービスキャンセル日
		outMap.setString(JBSbatACIFM253.SVC_PAUSE_DAY, "サービス休止日");						// サービス休止日
		outMap.setString(JBSbatACIFM253.SVC_PAUSE_RLS_YMD, "サービス休止解除日");				// サービス休止解除日
		outMap.setString(JBSbatACIFM253.SVC_USE_FAIL_STAYMD, "サービス利用不可開始日");			// サービス利用不可開始日
		outMap.setString(JBSbatACIFM253.SVC_USE_FAIL_ENDYMD, "サービス利用不可終了日");			// サービス利用不可終了日
		outMap.setString(JBSbatACIFM253.CHRG_STAYMD, "課金開始日");								// 課金開始日
		outMap.setString(JBSbatACIFM253.FIRST_CHRG_STAYMD, "初回課金開始日");					// 初回課金開始日
		outMap.setString(JBSbatACIFM253.CHRG_ENDYMD, "課金終了日");								// 課金終了日
		outMap.setString(JBSbatACIFM253.SVC_KEIZOKU_MON_CNT, "サービス継続月数");				// サービス継続月数
		outMap.setString(JBSbatACIFM253.SVC_KEIZOKU_DAY_CNT, "サービス継続日数");				// サービス継続日数
		outMap.setString(JBSbatACIFM253.CHRG_KEIZOKU_MON_CNT, "課金継続月数");					// 課金継続月数
		outMap.setString(JBSbatACIFM253.CHRG_KEIZOKU_DAY_CNT, "課金継続日数");					// 課金継続日数
		outMap.setString(JBSbatACIFM253.KEI_CNT, "契約数");										// 契約数
		outMap.setString(JBSbatACIFM253.MON_CHU_MAX_KEI_CNT, "月中最大契約数");					// 月中最大契約数
		outMap.setString(JBSbatACIFM253.AIT_DIV, "相対区分");									// 相対区分
		outMap.setString(JBSbatACIFM253.SIME_DAY, "締め日");									// 締め日
		outMap.setString(JBSbatACIFM253.MANSION_ID, "マンションID");							// マンションID
		outMap.setString(JBSbatACIFM253.TK_HOSHIKI_KEI_NO, "提供方式契約番号");					// 提供方式契約番号
		outMap.setString(JBSbatACIFM253.KANYU_KEI_PAY_HOSHIKI_CD, "加入契約支払方式コード");	// 加入契約支払方式コード
		outMap.setString(JBSbatACIFM253.TTL_KOSU, "総戸数");									// 総戸数
		outMap.setOutFlg(true);
		
		assert 	outMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outHedderError][outMap=" + outMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outHedderError]");
		return outMap;
	}
	
	/**
	 * 入力データのチェックを行います。
	 * 
	 * @param inMap 入力電文
	 * @param errMsg エラー内容
	 * @return boolean チェック結果
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private boolean isCheckInputData(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 変数の初期化
		boolean checkResult = true;
		this.errCd = JACStrConst.KARA_MOJI;
		this.errMsg = JACStrConst.KARA_MOJI;
		
		// 入力データのチェック
		String svcStaYmd         = inMap.getString(JBSbatACIFI001.SVC_STAYMD);				// サービス開始日
		String svcDslYmd         = inMap.getString(JBSbatACIFI001.SVC_DSL_YMD);				// サービス解約日
		String svcDlre           = inMap.getString(JBSbatACIFI001.SVC_DLRE);				// サービス解約理由
		String svcPauseRlsYmd    = inMap.getString(JBSbatACIFI001.SVC_PAUSE_RLS_YMD);		// サービス休止解除日
		String svcPauseDay       = inMap.getString(JBSbatACIFI001.SVC_PAUSE_DAY);			// サービス休止日
		String svcUseFailEmdYmd  = inMap.getString(JBSbatACIFI001.SVC_USE_FAIL_ENDYMD);		// サービス利用不可終了日
		String svcUseFailStaYmd  = inMap.getString(JBSbatACIFI001.SVC_USE_FAIL_STAYMD);		// サービス利用不可開始日
		String chrgStaYmd        = inMap.getString(JBSbatACIFI001.CHRG_STAYMD);				// 課金開始日
		String firstChrgStaYmd   = inMap.getString(JBSbatACIFI001.FIRST_CHRG_STAYMD);		// 初回課金開始日
		String chrgEndYmd        = inMap.getString(JBSbatACIFI001.CHRG_ENDYMD);				// 課金終了日
		String svcKeizokuDayCnt  = inMap.getString(JBSbatACIFI001.SVC_KEIZOKU_DAY_CNT);		// サービス継続日数
		String svcKeizokuMonCnt  = inMap.getString(JBSbatACIFI001.SVC_KEIZOKU_MON_CNT);		// サービス継続月数
		String chrgKeizokuDayCnt = inMap.getString(JBSbatACIFI001.CHRG_KEIZOKU_DAY_CNT);	// 課金継続日数
		String chrgKeizokuMonCnt = inMap.getString(JBSbatACIFI001.CHRG_KEIZOKU_MON_CNT);	// 課金継続月数
		String trgtPrcSvcCd      = inMap.getString(JBSbatACIFI001.TRGT_PRC_SVC_CD);			// 料金サービスコード
		String seikyKeiNo        = inMap.getString(JBSbatACIFI001.SEIKY_KEI_NO);			// 請求契約番号
		String aitDiv            = inMap.getString(JBSbatACIFI001.AIT_DIV);					// 相対区分
		String simeDay           = inMap.getString(JBSbatACIFI001.SIME_DAY);				// 締め日
		String keiCnt            = inMap.getString(JBSbatACIFI001.KEI_CNT);					// 契約数
		String monChuMaxKeiCnt   = inMap.getString(JBSbatACIFI001.MON_CHU_MAX_KEI_CNT);		// 月中最大契約数
		
		// 料金サービスコード≠"SEIKYU"のデータを対象とする
		if(!JACStrConst.PRC_SVC_CD_SEIKY.equals(trgtPrcSvcCd.trim()))
		{
			// @サービス解約日とサービス解約理由はそれぞれが必ずセットで設定されていること。
			if((JACStrConst.KARA_MOJI.equals(svcDslYmd) && !JACStrConst.KARA_MOJI.equals(svcDlre))
							|| (!JACStrConst.KARA_MOJI.equals(svcDslYmd) && JACStrConst.KARA_MOJI.equals(svcDlre)))
			{
				this.setErrCd(ERR_CD_05);
				this.setErrMsg(ERR_MSG_05);
				checkResult = false;
			}
			
			// Aサービス休止解除日が設定されている場合は、必ずサービス休止日が設定されていること。
			if(!JACStrConst.KARA_MOJI.equals(svcPauseRlsYmd) && JACStrConst.KARA_MOJI.equals(svcPauseDay))
			{
				this.setErrCd(ERR_CD_10);
				this.setErrMsg(ERR_MSG_10);
				checkResult = false;
			}
			
			// B利用不可終了日が設定されている場合は、必ず利用不可開始日が設定されていること。
			if(!JACStrConst.KARA_MOJI.equals(svcUseFailEmdYmd) && JACStrConst.KARA_MOJI.equals(svcUseFailStaYmd))
			{
				this.setErrCd(ERR_CD_15);
				this.setErrMsg(ERR_MSG_15);
				checkResult = false;
			}
			
			// Cサービス継続日数、サービス継続月数、課金継続日数、課金継続月数が定義された桁数以内で設定されていること。
			if(JACStrConst.SVC_KEIZOKU_DAY_CNT_LENGTH < svcKeizokuDayCnt.length())
			{
				this.setErrCd(ERR_CD_25);
				this.setErrMsg(ERR_MSG_25);
				checkResult = false;
			}
			if(JACStrConst.SVC_KEIZOKU_MON_CNT_LENGTH < svcKeizokuMonCnt.length())
			{
				this.setErrCd(ERR_CD_30);
				this.setErrMsg(ERR_MSG_30);
				checkResult = false;
			}
			if(JACStrConst.CHRG_KEIZOKU_DAY_CNT_LENGTH < chrgKeizokuDayCnt.length())
			{
				this.setErrCd(ERR_CD_35);
				this.setErrMsg(ERR_MSG_35);
				checkResult = false;
			}
			if(JACStrConst.CHRG_KEIZOKU_MON_CNT_LENGTH < chrgKeizokuMonCnt.length())
			{
				this.setErrCd(ERR_CD_40);
				this.setErrMsg(ERR_MSG_40);
				checkResult = false;
			}
			
			// DNOT NULL項目に値が設定されていること。
			if(JACStrConst.KARA_MOJI.equals(trgtPrcSvcCd))
			{
				this.setErrCd(ERR_CD_45);
				this.setErrMsg(ERR_MSG_45);
				checkResult = false;
			}
			if(JACStrConst.KARA_MOJI.equals(seikyKeiNo))
			{
				this.setErrCd(ERR_CD_50);
				this.setErrMsg(ERR_MSG_50);
				checkResult = false;
			}
			if(JACStrConst.KARA_MOJI.equals(aitDiv))
			{
				this.setErrCd(ERR_CD_55);
				this.setErrMsg(ERR_MSG_55);
				checkResult = false;
			}
			if(JACStrConst.KARA_MOJI.equals(simeDay))
			{
				this.setErrCd(ERR_CD_60);
				this.setErrMsg(ERR_MSG_60);
				checkResult = false;
			}
			// サービス開始日がnullでないこと
			if(JACStrConst.KARA_MOJI.equals(svcStaYmd))
			{
				this.setErrCd(ERR_CD_62);
				this.setErrMsg(ERR_MSG_62);
				checkResult = false;
			}
			// 課金開始日がnullでないこと
			if(JACStrConst.KARA_MOJI.equals(chrgStaYmd))
			{
				this.setErrCd(ERR_CD_64);
				this.setErrMsg(ERR_MSG_64);
				checkResult = false;
			}
			// 初回課金開始日がnullでないこと
			if(JACStrConst.KARA_MOJI.equals(firstChrgStaYmd))
			{
				this.setErrCd(ERR_CD_66);
				this.setErrMsg(ERR_MSG_66);
				checkResult = false;
			}
			// 課金終了日がnullでないこと
			if(JACStrConst.KARA_MOJI.equals(chrgEndYmd))
			{
				this.setErrCd(ERR_CD_68);
				this.setErrMsg(ERR_MSG_68);
				checkResult = false;
			}
			// サービス継続月数がnullでないこと
			if(JACStrConst.KARA_MOJI.equals(svcKeizokuMonCnt))
			{
				this.setErrCd(ERR_CD_70);
				this.setErrMsg(ERR_MSG_70);
				checkResult = false;
			}
			// サービス継続日数がnullでないこと
			if(JACStrConst.KARA_MOJI.equals(svcKeizokuDayCnt))
			{
				this.setErrCd(ERR_CD_72);
				this.setErrMsg(ERR_MSG_72);
				checkResult = false;
			}
			// 課金継続月数がnullでないこと
			if(JACStrConst.KARA_MOJI.equals(chrgKeizokuMonCnt))
			{
				this.setErrCd(ERR_CD_74);
				this.setErrMsg(ERR_MSG_74);
				checkResult = false;
			}
			// 課金継続日数がnullでないこと
			if(JACStrConst.KARA_MOJI.equals(chrgKeizokuDayCnt))
			{
				this.setErrCd(ERR_CD_76);
				this.setErrMsg(ERR_MSG_76);
				checkResult = false;
			}
			// 契約数がnullでないこと
			if(JACStrConst.KARA_MOJI.equals(keiCnt))
			{
				this.setErrCd(ERR_CD_78);
				this.setErrMsg(ERR_MSG_78);
				checkResult = false;
			}
			// 月中最大契約数がnullでないこと
			if(JACStrConst.KARA_MOJI.equals(monChuMaxKeiCnt))
			{
				this.setErrCd(ERR_CD_80);
				this.setErrMsg(ERR_MSG_80);
				checkResult = false;
			}
		}
		return checkResult;
	}
	
	/**
	 * 出力情報（正常）を取得します。
	 * 
	 * @param inMap 入力情報
	 * @return JBSbatServiceInterfaceMap 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap getOutputInfNormal(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getOutputInfNormal]");
		
		inMap.setOutFlg(true);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getOutputInfNormal]");
		return inMap;
	}
	
	/**
	 * 出力情報（異常）を取得します。
	 * 
	 * @param inMap 入力情報
	 * @param setErrMsg エラー内容
	 * @param setErrCd エラーコード
	 * @return JBSbatServiceInterfaceMap 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap getOutputInfError(JBSbatServiceInterfaceMap inMap, String setErrMsg, String setErrCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getOutputInfError]");
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		outMap.setMap(inMap.getMap());
		outMap.setString(JBSbatACIFM253.ERR_MSG,	setErrMsg);	// エラー内容
		outMap.setString(JBSbatACIFM253.ERR_CD,		setErrCd);	// エラーコード
		outMap.setOutFlg(true);
		
		assert 	outMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getOutputInfError][outMap=" + outMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getOutputInfError]");
		return outMap;
	}
	
	/**
	 * エラーコードをセットします。
	 * 
	 * @param setErrCd エラーコード
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void setErrCd(String setErrCd) throws Exception
	{
		if(JACStrConst.KARA_MOJI.equals(this.errCd))
		{
			// エラーコード出力バッファが空ならそのままセット
			this.errCd = setErrCd;
		}
		else
		{
			// エラーコード出力バッファが空でなければ区切り文字を付けて連結
			this.errCd = this.errCd + ERR_CD_SEP + setErrCd;
		}
	}
	
	/**
	 * エラーメッセージをセットします。
	 * 
	 * @param setErrMsg エラーメッセージ
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void setErrMsg(String setErrMsg) throws Exception
	{
		if(JACStrConst.KARA_MOJI.equals(this.errMsg))
		{
			// エラーメッセージ出力バッファが空ならそのままセット
			this.errMsg = setErrMsg;
		}
		else
		{
			// エラーメッセージ出力バッファが空でなければ複数エラーメッセージをセット
			this.errMsg = ERR_MSG_00;
		}
	}
}
