/*********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名			：eo顧客基幹システム
 *	モジュール名		：JBSbatKVWribVrfyFamilyInfo
 *	ソースファイル名	：JBSbatKVWribVrfyFamilyInfo.java
 *	作成者				：富士通　
 *	作成日				：2013年06月10日
 *＜機能概要＞
 *　割引検証ファミリーパック割引情報検証結果出力部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2013/06/10   富士通		新規作成
 *********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatMatchServiceInterface;
import eo.business.util.file.JBSbatKVIFM017;
import eo.business.util.file.JBSbatKVIFM016;
import eo.business.util.file.JBSbatKVIFM019;
import eo.business.util.file.JBSbatKVIFM024;
import eo.common.constant.JKKStrConst;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
 * (クラスの機能概要)
 * <p>
 *<BR>
 * 
 * @author 富士通
 */
public class JBSbatKVWribVrfyFamilyInfo extends JBSbatBusinessService implements
		JBSbatMatchServiceInterface {
	/** ▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼ */
//	/** テーブル(割引サービス対象契約) */
//	private static final String D_TBL_NAME_KK_T_WRISVC_TG_KEI = "KK_T_WRISVC_TG_KEI";

	/** SQL定義キー(KK_SELECT_048) */
	// private static final String KK_T_WRISVC_TG_KEI_KK_SELECT_048 =
	// "KK_SELECT_048";
	/** テーブルアクセスクラス(割引サービス対象契約) */
//	private JBSbatSQLAccess db_KK_T_WRISVC_TG_KEI = null;

	/** キーマッチ処理フラグ */
	private boolean matchProcFlg;

	/** マスタファイル処理フラグ */
	private boolean mastProcFlg;

	/** トランファイル処理フラグ */
	private boolean tranProcFlg;
	/** ▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲ */

	/** ヘッダ出力処理用フラグ */
	private boolean booHeaderOutputFlg = false; 
	
	/** テーブル(割引サービス対象サービス) */
	private static final String D_TBL_NAME_KK_M_WRISVC_TG_SVC = "KK_M_WRISVC_TG_SVC";

	/** SQL定義キー(KV_SELECT_002) */
	private static final String KK_M_WRISVC_TG_SVC_KV_SELECT_002 = "KV_SELECT_002";

	/** テーブルアクセスクラス(割引サービス対象サービス) */
	private JBSbatSQLAccess db_KK_M_WRISVC_TG_SVC = null;

	/** 検証エラーメッセージ（ファミリーパック割引適用外の適用） */
	private static final String MSG_CHECK_RESULT_01 = "ファミリーパック割引が適用外だが適用されている。";

	/** ファミリーパック契約割引チェック済みフラグ */
	private boolean familyChkFlg = false;

	/**
	 * 初期処理
	 * 
	 * @param JBSbatCommonItem
	 *            commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception {
		/** ▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼ */
		/** ▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼ */
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
//		db_KK_T_WRISVC_TG_KEI = new JBSbatSQLAccess(commonItem,
//			D_TBL_NAME_KK_T_WRISVC_TG_KEI);
		/** ▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲ */

		db_KK_M_WRISVC_TG_SVC = new JBSbatSQLAccess(commonItem,
			D_TBL_NAME_KK_M_WRISVC_TG_SVC);
		/** ▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲ */
	}

	/**
	 * 主処理
	 * 
	 * @param mastMap
	 *            　入力電文
	 * @param tranMap
	 *            　入力電文
	 * @param outputInItem
	 *            入力情報
	 * @return JBSbatOutputItem 出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap svcMap,
			JBSbatServiceInterfaceMap wribMap, JBSbatOutputItem outputInItem)
			throws Exception {
		/** ▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼ */
		super.logPrint.printDebugLog("execute_START");
		
		// 初回のみ処理
		if (!booHeaderOutputFlg)
		{
			this.editOutputHeaderItem(outputInItem);
			booHeaderOutputFlg = true;
		}
		
		// ファミリーパックの妥当性を検証する
		if (svcMap == null && wribMap != null) {
			// 入力Ｍのみnullの場合 ⇒ トランのみ
			this.setTranProcFlg(true);
			super.logPrint.printDebugLog("execute_END");
			return outputInItem;

		} else if (svcMap != null && wribMap == null) {
			// 入力Ｔのみnullの場合 ⇒ マスタのみ
			this.setMastProcFlg(true);
			super.logPrint.printDebugLog("execute_END");
			return outputInItem;
		// 2013/09/09 add start
		} else if (svcMap.getString(JBSbatKVIFM016.SVC_KEI_STAT).equals("010")) {
			// 検証対象外
			super.logPrint.printDebugLog("検証対象外：" + svcMap.getString(JBSbatKVIFM016.SVC_KEI_NO));
			this.setMastProcFlg(true);
			super.logPrint.printDebugLog("execute_END");
			return outputInItem;

		} else if (!wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_STAT).equals("100")) {
			// 検証対象外
			super.logPrint.printDebugLog("検証対象外：" + wribMap.getString(JBSbatKVIFM017.SVC_KEI_NO)
				+ "、" + wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_NO));
			this.setTranProcFlg(true);
			super.logPrint.printDebugLog("execute_END");
			return outputInItem;
		// 2013/09/09 add end
		} else {
			// マッチング処理
			// サービス契約コードを主キーにする
			String strMastData = svcMap.getString(JBSbatKVIFM016.SVC_KEI_NO);
			String strTranData = wribMap.getString(JBSbatKVIFM017.SVC_KEI_NO);
			super.logPrint.printDebugLog("入力Ｍ：" + strMastData);
			super.logPrint.printDebugLog("入力Ｔ：" + strTranData);

			int intRsrt = strMastData.compareTo(strTranData);

			if (intRsrt == 0) {
				// 一致した場合
				// すでにチェック済みの場合はチェックしない
				if (!familyChkFlg) {

					if (wribMap.getString(JBSbatKVIFM017.PPLAN_CD).equals(
						JKKStrConst.PPLAN_CD_FAMILY_PACK)) {

						// 割引サービスコードをキーにして割引サービス対象サービスマスタを参照し、
						// 料金グループコード、料金プランコードを取得する。
						String[] param = new String[6];
						param[0] = wribMap.getString(JBSbatKVIFM017.WRIB_SVC_CD);
						param[1] = svcMap.getString(JBSbatKVIFM016.SVC_CD);
						param[2] = svcMap.getString(JBSbatKVIFM016.PRC_GRP_CD);
						param[3] = svcMap.getString(JBSbatKVIFM016.PCRS_CD);
						param[4] = svcMap.getString(JBSbatKVIFM016.PPLAN_CD);
						param[5] = super.opeDate;

						executeKK_M_WRISVC_TG_SVC_KV_SELECT_002(param);
						JBSbatCommonDBInterface db_map = db_KK_M_WRISVC_TG_SVC
							.selectNext();

						if (db_map == null) {
							editOutputInItem(outputInItem, svcMap, wribMap);
						} else {
						}

						familyChkFlg = true;
					}
				}

				// 入力Ｔのみ ⇒ 次のデータを読み込む
				this.setMastProcFlg(false);
				this.setTranProcFlg(true);
			} else if (intRsrt < 0) {
				// 入力Ｍのみ ⇒ 次のデータを読み込む
				this.setMastProcFlg(true);
				this.setTranProcFlg(false);
				familyChkFlg = false;
			} else {
				// 入力Ｔのみ ⇒ 次のデータを読み込む
				this.setMastProcFlg(false);
				this.setTranProcFlg(true);
				familyChkFlg = false;
			}
		}

		super.logPrint.printDebugLog("execute_END");
		return outputInItem;
		/** ▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲ */
	}

	/**
	 * 業務サービス終了処理
	 * 
	 * @throws Exception
	 */
	public void terminal() throws Exception {
		/** ▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼ */
		/** ▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼ */
		// DBアクセスクラスをクローズします
//		db_KK_T_WRISVC_TG_KEI.close();
		/** ▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲ */
		
		db_KK_M_WRISVC_TG_SVC.close();
		/** ▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲ */
	}

	/** ▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼ */
	/**
	 * @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;
	}

	// /**
	// * SQLKEY(KK_SELECT_048)でDBアクセスを行います。<br>
	// * <p>
	// * <b>処理フロー</b><br>
	// * <pre>
	// * 1.引数でバイント変数を設定します。<br>
	// *
	// * 2.DBアクセスを実行します。<br>
	// *
	// * 3.メソッドの呼び出し方です。<br>
	// * 引数:
	// * param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	// * サービス契約番号
	// * バッチ運用日付
	// * バッチ運用日付
	// * 料金グループコード
	// * 料金グループコード
	// * 料金グループコード
	// * 料金プランコード
	// * 料金コースコード
	// * 料金コースコード
	// * 料金コースコード
	// * 料金コースコード
	// * 料金コースコード
	// * 料金グループコード
	// * 料金グループコード
	// * 料金グループコード
	// * 料金プランコード
	// * バッチ運用日付
	// * </pre>
	// * <p>
	// * @param param バイント変数の値配列。
	// * @throws Exception 業務サービス内で発生した例外全般。
	// */
	// private void executeKK_T_WRISVC_TG_KEI_KK_SELECT_048(Object[] param)
	// throws Exception
	// {
	// // バイント変数のリストを生成します
	// JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
	// paramList.setValue(param[0].toString());
	// paramList.setValue(param[1].toString());
	// paramList.setValue(param[2].toString());
	// paramList.setValue(param[3].toString());
	//
	// // DBアクセスを実行します
	// db_KK_T_WRISVC_TG_KEI.selectBySqlDefine(paramList,
	// KK_T_WRISVC_TG_KEI_KK_SELECT_048);
	// }
	/** ▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲ */

	/**
	 * SQLKEY(KV_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.引数でバイント変数を設定します。&lt;br&gt;
	 * 
	 * 2.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 3.メソッドの呼び出し方です。&lt;br&gt;
	 * 	引数:
	 * 	param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * 	 	割引サービスコード
	 * 	 	予約適用年月日
	 * </pre>
	 * <p>
	 * 
	 * @param param
	 *            バイント変数の値配列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_WRISVC_TG_SVC_KV_SELECT_002(Object[] param)
			throws Exception {
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());

		// DBアクセスを実行します
		db_KK_M_WRISVC_TG_SVC.selectBySqlDefine(paramList,
			KK_M_WRISVC_TG_SVC_KV_SELECT_002);
	}

	/**
	 * 検証結果ファイルを編集します。
	 * 
	 * @param outputInItem
	 *            出力ファイル
	 * @param svcMap
	 *            マスタデータ（割引検証サービス契約情報抽出結果ファイル）
	 * @param wribMap
	 *            トランデータ（割引検証ファミリーパック割引情報抽出結果ファイル））
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void editOutputInItem(JBSbatOutputItem outputInItem,
			JBSbatServiceInterfaceMap svcMap, JBSbatServiceInterfaceMap wribMap)
			throws Exception {
		// 入出力インタフェースオブジェクトを生成
		JBSbatServiceInterfaceMap out_map = new JBSbatServiceInterfaceMap();

		// 出力項目を設定する
		out_map.setString(JBSbatKVIFM024.SVC_KEI_NO, svcMap
			.getString(JBSbatKVIFM016.SVC_KEI_NO)); // サービス契約番号
		out_map.setString(JBSbatKVIFM019.SVC_KEI_STAT, svcMap
			.getString(JBSbatKVIFM016.SVC_KEI_STAT)); // サービス契約ステータス
		out_map.setString(JBSbatKVIFM019.SVC_KEI_STAT_NM, svcMap
			.getString(JBSbatKVIFM016.SVC_KEI_STAT_NM)); // サービス契約ステータス名称
		out_map.setString(JBSbatKVIFM019.PCRS_CD, svcMap
			.getString(JBSbatKVIFM016.PCRS_CD)); // 料金コースコード
		out_map.setString(JBSbatKVIFM019.PCRS_NM, svcMap
			.getString(JBSbatKVIFM016.PCRS_NM)); // 料金コース名
		out_map.setString(JBSbatKVIFM019.PPLAN_CD, svcMap
			.getString(JBSbatKVIFM016.PPLAN_CD)); // 料金プランコード
		out_map.setString(JBSbatKVIFM019.PPLAN_NM, svcMap
			.getString(JBSbatKVIFM016.PPLAN_NM)); // 料金プラン名
		out_map.setString(JBSbatKVIFM024.KAKINS_NO, svcMap
			.getString(JBSbatKVIFM016.KAKINS_NO)); // 課金先番号
		out_map.setString(JBSbatKVIFM024.SEIKY_KEI_NO, svcMap
			.getString(JBSbatKVIFM016.SEIKY_KEI_NO)); // 請求契約番号
		out_map.setString(JBSbatKVIFM024.SVC_KEI_KAISEN_UCWK_NO, svcMap
			.getString(JBSbatKVIFM016.SVC_KEI_KAISEN_UCWK_NO)); // サービス契約回線内訳番号
		out_map.setString(JBSbatKVIFM024.PLAN_STAYMD_SVC, svcMap
			.getString(JBSbatKVIFM016.PLAN_STAYMD)); // プラン開始年月日
		out_map.setString(JBSbatKVIFM024.PLAN_ENDYMD_SVC, svcMap
			.getString(JBSbatKVIFM016.PLAN_ENDYMD)); // プラン終了年月日
		out_map.setString(JBSbatKVIFM024.PLAN_CHRG_STAYMD_SVC, svcMap
			.getString(JBSbatKVIFM016.PLAN_CHRG_STAYMD)); // プラン課金開始年月日
		out_map.setString(JBSbatKVIFM024.PLAN_CHRG_ENDYMD_SVC, svcMap
			.getString(JBSbatKVIFM016.PLAN_CHRG_ENDYMD)); // プラン課金終了年月日
		out_map.setString(JBSbatKVIFM024.SVC_CANCEL_YMD_SVC, svcMap
			.getString(JBSbatKVIFM016.SVC_CANCEL_YMD)); // サービスキャンセル年月日
		out_map.setString(JBSbatKVIFM024.SVC_STA_YMD_SVC, svcMap
			.getString(JBSbatKVIFM016.SVC_STA_YMD)); // サービス開始年月日
		out_map.setString(JBSbatKVIFM024.SVC_CHRG_STAYMD_SVC, svcMap
			.getString(JBSbatKVIFM016.SVC_CHRG_STAYMD)); // サービス課金開始年月日
		out_map.setString(JBSbatKVIFM024.SVC_PAUSE_YMD_SVC, svcMap
			.getString(JBSbatKVIFM016.SVC_PAUSE_YMD)); // サービス休止年月日
		out_map.setString(JBSbatKVIFM024.SVC_PAUSE_RLS_YMD_SVC, svcMap
			.getString(JBSbatKVIFM016.SVC_PAUSE_RLS_YMD)); // サービス休止解除年月日
		out_map.setString(JBSbatKVIFM024.SVC_ENDYMD_SVC, svcMap
			.getString(JBSbatKVIFM016.SVC_ENDYMD)); // サービス終了年月日
		out_map.setString(JBSbatKVIFM024.SVC_CHRG_ENDYMD_SVC, svcMap
			.getString(JBSbatKVIFM016.SVC_CHRG_ENDYMD)); // サービス課金終了年月日
		out_map.setString(JBSbatKVIFM024.SVC_DSL_KISAN_YMD_SVC, svcMap
			.getString(JBSbatKVIFM016.SVC_DSL_KISAN_YMD)); // サービス解約起算年月日
		out_map.setString(JBSbatKVIFM024.SVC_DSL_YMD_SVC, svcMap
			.getString(JBSbatKVIFM016.SVC_DSL_YMD)); // サービス解約年月日
		out_map.setString(JBSbatKVIFM024.KAIHK_YMD_SVC, svcMap
			.getString(JBSbatKVIFM016.KAIHK_YMD)); // 回復年月日
		out_map.setString(JBSbatKVIFM024.SVC_CANCEL_CL_YMD_SVC, svcMap
			.getString(JBSbatKVIFM016.SVC_CANCEL_CL_YMD)); // サービスキャンセル取消年月日
		out_map.setString(JBSbatKVIFM024.SVC_DSL_CL_YMD_SVC, svcMap
			.getString(JBSbatKVIFM016.SVC_DSL_CL_YMD)); // サービス解約取消年月日

		out_map.setString(JBSbatKVIFM024.WRIB_SVC_KEI_NO, wribMap
			.getString(JBSbatKVIFM017.WRIB_SVC_KEI_NO)); // 割引サービス契約番号
		out_map.setString(JBSbatKVIFM019.WRIB_SVC_KEI_STAT, wribMap
			.getString(JBSbatKVIFM017.WRIB_SVC_KEI_STAT)); // 割引サービスステータス
		out_map.setString(JBSbatKVIFM019.WRIB_SVC_KEI_STAT_NM, wribMap
			.getString(JBSbatKVIFM017.WRIB_SVC_KEI_STAT_NM)); // 割引サービスステータス名称
		out_map.setString(JBSbatKVIFM024.SYSID, wribMap
			.getString(JBSbatKVIFM017.SYSID)); // ＳＹＳＩＤ
		out_map.setString(JBSbatKVIFM024.WRIB_SVC_CD, wribMap
			.getString(JBSbatKVIFM017.WRIB_SVC_CD)); // 割引サービスコード
		out_map.setString(JBSbatKVIFM019.DSP_CAMPAIGN_CD, wribMap
			.getString(JBSbatKVIFM017.DSP_CAMPAIGN_CD)); // 表示用キャンペーンコード
		out_map.setString(JBSbatKVIFM019.WRIB_SVC_NM, wribMap
			.getString(JBSbatKVIFM017.WRIB_SVC_NM)); // 割引サービス名
		out_map.setString(JBSbatKVIFM024.PLAN_STAYMD_WRIB, wribMap
			.getString(JBSbatKVIFM017.PLAN_STAYMD)); // プラン開始年月日
		out_map.setString(JBSbatKVIFM024.PLAN_ENDYMD_WRIB, wribMap
			.getString(JBSbatKVIFM017.PLAN_ENDYMD)); // プラン終了年月日
		out_map.setString(JBSbatKVIFM024.PLAN_CHRG_STAYMD_WRIB, wribMap
			.getString(JBSbatKVIFM017.PLAN_CHRG_STAYMD)); // プラン課金開始年月日
		out_map.setString(JBSbatKVIFM024.PLAN_CHRG_ENDYMD_WRIB, wribMap
			.getString(JBSbatKVIFM017.PLAN_CHRG_ENDYMD)); // プラン課金終了年月日
		out_map.setString(JBSbatKVIFM024.PLAN_END_SBT_CD, wribMap
			.getString(JBSbatKVIFM017.PLAN_END_SBT_CD)); // プラン終了種別コード
		out_map.setString(JBSbatKVIFM024.SVC_CANCEL_YMD_WRIB, wribMap
			.getString(JBSbatKVIFM017.SVC_CANCEL_YMD)); // サービスキャンセル年月日
		out_map.setString(JBSbatKVIFM024.SVC_CANCEL_RSN_CD, wribMap
			.getString(JBSbatKVIFM017.SVC_CANCEL_RSN_CD)); // サービスキャンセル理由コード
		out_map.setString(JBSbatKVIFM024.SVC_STA_YMD_WRIB, wribMap
			.getString(JBSbatKVIFM017.SVC_STA_YMD)); // サービス開始年月日
		out_map.setString(JBSbatKVIFM024.SVC_CHRG_STAYMD_WRIB, wribMap
			.getString(JBSbatKVIFM017.SVC_CHRG_STAYMD)); // サービス課金開始年月日
		out_map.setString(JBSbatKVIFM024.SVC_ENDYMD_WRIB, wribMap
			.getString(JBSbatKVIFM017.SVC_ENDYMD)); // サービス終了年月日
		out_map.setString(JBSbatKVIFM024.SVC_CHRG_ENDYMD_WRIB, wribMap
			.getString(JBSbatKVIFM017.SVC_CHRG_ENDYMD)); // サービス課金終了年月日
		out_map.setString(JBSbatKVIFM024.SVC_DSL_YMD_WRIB, wribMap
			.getString(JBSbatKVIFM017.SVC_DSL_YMD)); // サービス解約年月日
		out_map.setString(JBSbatKVIFM024.KAIHK_YMD_WRIB, wribMap
			.getString(JBSbatKVIFM017.KAIHK_YMD)); // 回復年月日
		out_map.setString(JBSbatKVIFM024.SVC_CANCEL_CL_YMD_WRIB, wribMap
			.getString(JBSbatKVIFM017.SVC_CANCEL_CL_YMD)); // サービスキャンセル取消年月日
		out_map.setString(JBSbatKVIFM024.SVC_DSL_CL_YMD_WRIB, wribMap
			.getString(JBSbatKVIFM017.SVC_DSL_CL_YMD)); // サービス解約取消年月日
		out_map.setString(JBSbatKVIFM024.INTR_CD, wribMap
			.getString(JBSbatKVIFM017.INTR_CD)); // 紹介コード
		out_map.setString(JBSbatKVIFM024.MSKM_KISAN_YMD, wribMap
			.getString(JBSbatKVIFM017.MSKM_KISAN_YMD)); // 申込起算年月日
		out_map.setString(JBSbatKVIFM024.WRIB_ADD_OPTY_CD, wribMap
			.getString(JBSbatKVIFM017.WRIB_ADD_OPTY_CD)); // 割引登録契機コード
		out_map.setString(JBSbatKVIFM024.WRIB_DSL_CNCL_OPTY_CD, wribMap
			.getString(JBSbatKVIFM017.WRIB_DSL_CNCL_OPTY_CD)); // 割引解約キャンセル契機コード
		out_map.setString(JBSbatKVIFM024.WRIB_AMNT_SNST_STDARDYMD, wribMap
			.getString(JBSbatKVIFM017.WRIB_AMNT_SNST_STDARDYMD)); // 割引額算出基準年月日
		out_map.setString(JBSbatKVIFM024.WRIB_CHRG_STA_MON_STI_CD, wribMap
			.getString(JBSbatKVIFM017.WRIB_CHRG_STA_MON_STI_CD)); // 割引課金開始月指定コード
		out_map.setString(JBSbatKVIFM024.WRIB_ADD_YMD, wribMap
			.getString(JBSbatKVIFM017.WRIB_ADD_YMD)); // 割引登録年月日
		out_map.setString(JBSbatKVIFM024.CHECK_RESULT, MSG_CHECK_RESULT_01); // 検証結果

		// 出力フラグを設定
		out_map.setOutFlg(true);

		// 出力共通電文に入出力インターフェースを設定する。
		outputInItem.addOutMapList(out_map);
	}

	/**
	 * 検証結果ファイル（ヘッダ）を編集します。
	 * 
	 * @param outputInItem 出力ファイル
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void editOutputHeaderItem(JBSbatOutputItem outputInItem) throws Exception
	{
		// ヘッダ項目の変数を指定する
		String COLUMN_01 = "サービス契約番号";
		String COLUMN_02 = "サービス契約ステータス";
		String COLUMN_03 = "サービス契約ステータス名称";
		String COLUMN_04 = "料金コースコード";
		String COLUMN_05 = "料金コース名";
		String COLUMN_06 = "料金プランコード";
		String COLUMN_07 = "料金プラン名";
		String COLUMN_08 = "課金先番号";
		String COLUMN_09 = "請求契約番号";
		String COLUMN_10 = "サービス契約回線内訳番号";
		String COLUMN_11 = "プラン開始年月日(サービス)";
		String COLUMN_12 = "プラン終了年月日(サービス)";
		String COLUMN_13 = "プラン課金開始年月日(サービス)";
		String COLUMN_14 = "プラン課金終了年月日(サービス)";
		String COLUMN_15 = "サービスキャンセル年月日(サービス)";
		String COLUMN_16 = "サービス開始年月日(サービス)";
		String COLUMN_17 = "サービス課金開始年月日(サービス)";
		String COLUMN_18 = "サービス休止年月日(サービス)";
		String COLUMN_19 = "サービス休止解除年月日(サービス)";
		String COLUMN_20 = "サービス終了年月日(サービス)";
		String COLUMN_21 = "サービス課金終了年月日(サービス)";
		String COLUMN_22 = "サービス解約起算年月日(サービス)";
		String COLUMN_23 = "サービス解約年月日(サービス)";
		String COLUMN_24 = "回復年月日(サービス)";
		String COLUMN_25 = "サービスキャンセル取消年月日(サービス)";
		String COLUMN_26 = "サービス解約取消年月日(サービス)";
		String COLUMN_27 = "割引サービス契約番号";
		String COLUMN_28 = "割引サービス契約ステータス";
		String COLUMN_29 = "割引サービス契約ステータス名称";
		String COLUMN_30 = "SYSID";
		String COLUMN_31 = "割引サービスコード";
		String COLUMN_32 = "表示用キャンペーンコード";
		String COLUMN_33 = "割引サービス名";
		String COLUMN_34 = "プラン開始年月日（割引）";
		String COLUMN_35 = "プラン終了年月日（割引）";
		String COLUMN_36 = "プラン課金開始年月日（割引）";
		String COLUMN_37 = "プラン課金終了年月日（割引）";
		String COLUMN_38 = "プラン終了種別コード";
		String COLUMN_39 = "サービスキャンセル年月日（割引）";
		String COLUMN_40 = "サービスキャンセル理由コード";
		String COLUMN_41 = "サービス開始年月日（割引）";
		String COLUMN_42 = "サービス課金開始年月日（割引）";
		String COLUMN_43 = "サービス終了年月日（割引）";
		String COLUMN_44 = "サービス課金終了年月日（割引）";
		String COLUMN_45 = "サービス解約年月日（割引）";
		String COLUMN_46 = "回復年月日（割引）";
		String COLUMN_47 = "サービスキャンセル取消年月日（割引）";
		String COLUMN_48 = "サービス解約取消年月日（割引）";
		String COLUMN_49 = "紹介コード";
		String COLUMN_50 = "申込起算年月日";
		String COLUMN_51 = "割引登録契機コード";
		String COLUMN_52 = "割引解約キャンセル契機コード";
		String COLUMN_53 = "割引額算出基準年月日";
		String COLUMN_54 = "割引課金開始月指定コード";
		String COLUMN_55 = "割引登録年月日";
		String COLUMN_56 = "検証結果";
		
		// 入出力インタフェースオブジェクトを生成
		JBSbatServiceInterfaceMap out_map = new JBSbatServiceInterfaceMap();
		
		// 出力項目を設定する
		out_map.setString(JBSbatKVIFM024.SVC_KEI_NO, 					COLUMN_01);		//サービス契約番号
		out_map.setString(JBSbatKVIFM024.SVC_KEI_STAT, 					COLUMN_02);		//サービス契約ステータス
		out_map.setString(JBSbatKVIFM024.SVC_KEI_STAT_NM, 				COLUMN_03);		//サービス契約ステータス名称
		out_map.setString(JBSbatKVIFM024.PCRS_CD, 						COLUMN_04);		//料金コースコード
		out_map.setString(JBSbatKVIFM024.PCRS_NM, 						COLUMN_05);		//料金コース名
		out_map.setString(JBSbatKVIFM024.PPLAN_CD, 						COLUMN_06);		//料金プランコード
		out_map.setString(JBSbatKVIFM024.PPLAN_NM, 						COLUMN_07);		//料金プラン名
		out_map.setString(JBSbatKVIFM024.KAKINS_NO, 					COLUMN_08);		//課金先番号
		out_map.setString(JBSbatKVIFM024.SEIKY_KEI_NO, 					COLUMN_09);		//請求契約番号
		out_map.setString(JBSbatKVIFM024.SVC_KEI_KAISEN_UCWK_NO, 		COLUMN_10);		//サービス契約回線内訳番号
		out_map.setString(JBSbatKVIFM024.PLAN_STAYMD_SVC, 				COLUMN_11);		//プラン開始年月日(サービス)
		out_map.setString(JBSbatKVIFM024.PLAN_ENDYMD_SVC, 				COLUMN_12);		//プラン終了年月日(サービス)
		out_map.setString(JBSbatKVIFM024.PLAN_CHRG_STAYMD_SVC, 			COLUMN_13);		//プラン課金開始年月日(サービス)
		out_map.setString(JBSbatKVIFM024.PLAN_CHRG_ENDYMD_SVC, 			COLUMN_14);		//プラン課金終了年月日(サービス)
		out_map.setString(JBSbatKVIFM024.SVC_CANCEL_YMD_SVC, 			COLUMN_15);		//サービスキャンセル年月日(サービス)
		out_map.setString(JBSbatKVIFM024.SVC_STA_YMD_SVC, 				COLUMN_16);		//サービス開始年月日(サービス)
		out_map.setString(JBSbatKVIFM024.SVC_CHRG_STAYMD_SVC, 			COLUMN_17);		//サービス課金開始年月日(サービス)
		out_map.setString(JBSbatKVIFM024.SVC_PAUSE_YMD_SVC, 			COLUMN_18);		//サービス休止年月日(サービス)
		out_map.setString(JBSbatKVIFM024.SVC_PAUSE_RLS_YMD_SVC, 		COLUMN_19);		//サービス休止解除年月日(サービス)
		out_map.setString(JBSbatKVIFM024.SVC_ENDYMD_SVC, 				COLUMN_20);		//サービス終了年月日(サービス)
		out_map.setString(JBSbatKVIFM024.SVC_CHRG_ENDYMD_SVC, 			COLUMN_21);		//サービス課金終了年月日(サービス)
		out_map.setString(JBSbatKVIFM024.SVC_DSL_KISAN_YMD_SVC, 		COLUMN_22);		//サービス解約起算年月日(サービス)
		out_map.setString(JBSbatKVIFM024.SVC_DSL_YMD_SVC, 				COLUMN_23);		//サービス解約年月日(サービス)
		out_map.setString(JBSbatKVIFM024.KAIHK_YMD_SVC, 				COLUMN_24);		//回復年月日(サービス)
		out_map.setString(JBSbatKVIFM024.SVC_CANCEL_CL_YMD_SVC, 		COLUMN_25);		//サービスキャンセル取消年月日(サービス)
		out_map.setString(JBSbatKVIFM024.SVC_DSL_CL_YMD_SVC, 			COLUMN_26);		//サービス解約取消年月日(サービス)
		out_map.setString(JBSbatKVIFM024.WRIB_SVC_KEI_NO, 				COLUMN_27);		//割引サービス契約番号
		out_map.setString(JBSbatKVIFM024.WRIB_SVC_KEI_STAT, 			COLUMN_28);		//割引サービス契約ステータス
		out_map.setString(JBSbatKVIFM024.WRIB_SVC_KEI_STAT_NM, 			COLUMN_29);		//割引サービス契約ステータス名称
		out_map.setString(JBSbatKVIFM024.SYSID, 						COLUMN_30);		//SYSID
		out_map.setString(JBSbatKVIFM024.WRIB_SVC_CD, 					COLUMN_31);		//割引サービスコード
		out_map.setString(JBSbatKVIFM024.DSP_CAMPAIGN_CD, 				COLUMN_32);		//表示用キャンペーンコード
		out_map.setString(JBSbatKVIFM024.WRIB_SVC_NM, 					COLUMN_33);		//割引サービス名
		out_map.setString(JBSbatKVIFM024.PLAN_STAYMD_WRIB, 				COLUMN_34);		//プラン開始年月日（割引）
		out_map.setString(JBSbatKVIFM024.PLAN_ENDYMD_WRIB, 				COLUMN_35);		//プラン終了年月日（割引）
		out_map.setString(JBSbatKVIFM024.PLAN_CHRG_STAYMD_WRIB, 		COLUMN_36);		//プラン課金開始年月日（割引）
		out_map.setString(JBSbatKVIFM024.PLAN_CHRG_ENDYMD_WRIB, 		COLUMN_37);		//プラン課金終了年月日（割引）
		out_map.setString(JBSbatKVIFM024.PLAN_END_SBT_CD, 				COLUMN_38);		//プラン終了種別コード
		out_map.setString(JBSbatKVIFM024.SVC_CANCEL_YMD_WRIB, 			COLUMN_39);		//サービスキャンセル年月日（割引）
		out_map.setString(JBSbatKVIFM024.SVC_CANCEL_RSN_CD, 			COLUMN_40);		//サービスキャンセル理由コード
		out_map.setString(JBSbatKVIFM024.SVC_STA_YMD_WRIB, 				COLUMN_41);		//サービス開始年月日（割引）
		out_map.setString(JBSbatKVIFM024.SVC_CHRG_STAYMD_WRIB, 			COLUMN_42);		//サービス課金開始年月日（割引）
		out_map.setString(JBSbatKVIFM024.SVC_ENDYMD_WRIB, 				COLUMN_43);		//サービス終了年月日（割引）
		out_map.setString(JBSbatKVIFM024.SVC_CHRG_ENDYMD_WRIB, 			COLUMN_44);		//サービス課金終了年月日（割引）
		out_map.setString(JBSbatKVIFM024.SVC_DSL_YMD_WRIB, 				COLUMN_45);		//サービス解約年月日（割引）
		out_map.setString(JBSbatKVIFM024.KAIHK_YMD_WRIB, 				COLUMN_46);		//回復年月日（割引）
		out_map.setString(JBSbatKVIFM024.SVC_CANCEL_CL_YMD_WRIB, 		COLUMN_47);		//サービスキャンセル取消年月日（割引）
		out_map.setString(JBSbatKVIFM024.SVC_DSL_CL_YMD_WRIB, 			COLUMN_48);		//サービス解約取消年月日（割引）
		out_map.setString(JBSbatKVIFM024.INTR_CD, 						COLUMN_49);		//紹介コード
		out_map.setString(JBSbatKVIFM024.MSKM_KISAN_YMD, 				COLUMN_50);		//申込起算年月日
		out_map.setString(JBSbatKVIFM024.WRIB_ADD_OPTY_CD, 				COLUMN_51);		//割引登録契機コード
		out_map.setString(JBSbatKVIFM024.WRIB_DSL_CNCL_OPTY_CD, 		COLUMN_52);		//割引解約キャンセル契機コード
		out_map.setString(JBSbatKVIFM024.WRIB_AMNT_SNST_STDARDYMD, 		COLUMN_53);		//割引額算出基準年月日
		out_map.setString(JBSbatKVIFM024.WRIB_CHRG_STA_MON_STI_CD, 		COLUMN_54);		//割引課金開始月指定コード
		out_map.setString(JBSbatKVIFM024.WRIB_ADD_YMD, 					COLUMN_55);		//割引登録年月日
		out_map.setString(JBSbatKVIFM024.CHECK_RESULT, 					COLUMN_56);		//検証結果
		
		//出力フラグを設定
		out_map.setOutFlg(true);
		
		//出力共通電文に入出力インターフェースを設定する。
		outputInItem.addOutMapList(out_map);
	}
}
