/*********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名			：eo顧客基幹システム
 *	モジュール名		：JBSbatKVWribVrfyCanpaignInfo
 *	ソースファイル名	：JBSbatKVWribVrfyCanpaignInfo.java
 *	作成者				：富士通　
 *	作成日				：2013年05月28日
 *＜機能概要＞
 *　割引検証キャンペーン情報検証部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2013/05/28   富士通		新規作成
 *********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatMatchServiceInterface;
import eo.business.util.file.JBSbatKVIFM016;
import eo.business.util.file.JBSbatKVIFM017;
import eo.business.util.file.JBSbatKVIFM031;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
 * (クラスの機能概要)
 * <p>
 *<BR>
 * 
 * @author 富士通
 */
public class JBSbatKVWribVrfyOverlapCheck extends JBSbatBusinessService
		implements JBSbatMatchServiceInterface {
	/** ▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼ */
	/** キーマッチ処理フラグ */
	private boolean matchProcFlg;

	/** マスタファイル処理フラグ */
	private boolean mastProcFlg;

	/** トランファイル処理フラグ */
	private boolean tranProcFlg;
	/** ▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲ */

	/** ヘッダ出力処理用フラグ */
	private boolean booHeaderOutputFlg = false;

	/** 割引サービスコード */
	private String wribSvcCdBase = "";

	/** 割引情報 */
	private List<JBSbatServiceInterfaceMap> wribMapList = new ArrayList<JBSbatServiceInterfaceMap>();

	/**  */
	private String message = "割引サービス契約の%sがお客さまＩＤ：%sに多重適用されている。多重適用期間%s〜%s";

	/**
	 * 初期処理
	 * 
	 * @param JBSbatCommonItem
	 *            commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception {
		/** ▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼ */
		/** ▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼ */
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/** ▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲ */
		/** ▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲ */
	}

	/**
	 * 主処理
	 * 
	 * @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")
				|| svcMap.getString(JBSbatKVIFM016.SVC_KEI_STAT).equals("020")
				|| svcMap.getString(JBSbatKVIFM016.SVC_KEI_STAT).equals("030")){
			// 検証対象外
			super.logPrint.printDebugLog("検証対象外：" + svcMap.getString(JBSbatKVIFM016.SVC_KEI_NO));
			this.setMastProcFlg(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);

			// 2013/09/09 add start
			// strTranData null対策
			if (strTranData == null){
				strTranData = "ZZZZZZZZZZZ";
			}
			// 2013/09/09 add end
			int intRsrt = strMastData.compareTo(strTranData);

			if (intRsrt == 0) {
				super.logPrint.printDebugLog("サービス契約＝割引サービス契約");

				String wribSvcCd = wribMap
					.getString(JBSbatKVIFM017.WRIB_SVC_CD);

				// 割引サービスコードが前回と同じ場合
				if (wribSvcCdBase.equals(wribSvcCd)) {

					for (JBSbatServiceInterfaceMap wribMapTmp : wribMapList) {

						String svcChrgStaymd1 = wribMapTmp
							.getString(JBSbatKVIFM017.SVC_CHRG_STAYMD);
						String svcChrgEndymd1 = wribMapTmp
							.getString(JBSbatKVIFM017.SVC_CHRG_ENDYMD);
						String svcChrgStaymd2 = wribMap
							.getString(JBSbatKVIFM017.SVC_CHRG_STAYMD);
						String svcChrgEndymd2 = wribMap
							.getString(JBSbatKVIFM017.SVC_CHRG_ENDYMD);
						boolean flg = false;

						if (svcChrgStaymd1.compareTo(svcChrgStaymd2) >= 0) {
							if (svcChrgEndymd2.compareTo(svcChrgStaymd1) >= 0) {
								flg = true;
							}
							
						} else {
							if (svcChrgEndymd1.compareTo(svcChrgStaymd2) >= 0) {
								flg = true;
							}
						}
						
						if (flg) {
							// 一致するデータがない場合、データを出力
							String[] outData = setOutData(svcMap, wribMap, String
								.format(message, wribSvcCdBase, strMastData,
									svcChrgStaymd1, svcChrgEndymd1));
							outPutWork(outputInItem, outData);
						}
					}

				} else {
					wribMapList.clear();
				}

				wribSvcCdBase = wribSvcCd;
				wribMapList.add(wribMap);

				// 割引サービス契約のみ次のデータを読み込む
				this.setMastProcFlg(false);
				this.setTranProcFlg(true);

			} else if (intRsrt < 0) {
				super.logPrint.printDebugLog("サービス契約＜割引サービス契約");

				wribSvcCdBase = "";
				wribMapList.clear();

				// サービス契約のみ次のデータを読み込む
				this.setMastProcFlg(true);
				this.setTranProcFlg(false);

			} else {
				super.logPrint.printDebugLog("サービス契約＞割引サービス契約");

				wribSvcCdBase = "";
				wribMapList.clear();

				// 割引サービス契約のみ次のデータを読み込む
				this.setMastProcFlg(false);
				this.setTranProcFlg(true);
			}
		}

		super.logPrint.printDebugLog("execute_END");

		return outputInItem;
		/** ▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲ */
	}

	/**
	 * 業務サービス終了処理
	 * 
	 * @throws Exception
	 */
	public void terminal() throws Exception {
		/** ▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼ */
		/** ▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼ */
		/** ▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲ */
		/** ▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲ */
	}

	/** ▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲ */

	/**
	 * @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 svcMap
	 *            サービス契約データ
	 * @param wribMap
	 *            割引サービス契約データ
	 * @param message
	 *            検証結果
	 * @return 出力データ
	 * @throws Exception
	 */
	private String[] setOutData(JBSbatServiceInterfaceMap svcMap,
			JBSbatServiceInterfaceMap wribMap, String message) throws Exception {

		String[] outData = new String[56];
		// サービス契約番号
		outData[0] = svcMap.getString(JBSbatKVIFM016.SVC_KEI_NO);
		// サービス契約ステータス
		outData[1] = svcMap.getString(JBSbatKVIFM016.SVC_KEI_STAT);
		// サービス契約ステータス名称
		outData[2] = svcMap.getString(JBSbatKVIFM016.SVC_KEI_STAT_NM);
		// 料金コースコード
		outData[3] = svcMap.getString(JBSbatKVIFM016.PCRS_CD);
		// 料金コース名
		outData[4] = svcMap.getString(JBSbatKVIFM016.PCRS_NM);
		// 料金プランコード
		outData[5] = svcMap.getString(JBSbatKVIFM016.PPLAN_CD);
		// 料金プラン名
		outData[6] = svcMap.getString(JBSbatKVIFM016.PPLAN_NM);
		// 課金先番号
		outData[7] = svcMap.getString(JBSbatKVIFM016.KAKINS_NO);
		// 請求契約番号
		outData[8] = svcMap.getString(JBSbatKVIFM016.SEIKY_KEI_NO);
		// サービス契約回線内訳番号
		outData[9] = svcMap.getString(JBSbatKVIFM016.SVC_KEI_KAISEN_UCWK_NO);
		// プラン開始年月日(サービス)
		outData[10] = svcMap.getString(JBSbatKVIFM016.PLAN_STAYMD);
		// プラン終了年月日(サービス)
		outData[11] = svcMap.getString(JBSbatKVIFM016.PLAN_ENDYMD);
		// プラン課金開始年月日(サービス)
		outData[12] = svcMap.getString(JBSbatKVIFM016.PLAN_CHRG_STAYMD);
		// プラン課金終了年月日(サービス)
		outData[13] = svcMap.getString(JBSbatKVIFM016.PLAN_CHRG_ENDYMD);
		// サービスキャンセル年月日(サービス)
		outData[14] = svcMap.getString(JBSbatKVIFM016.SVC_CANCEL_YMD);
		// サービス開始年月日(サービス)
		outData[15] = svcMap.getString(JBSbatKVIFM016.SVC_STA_YMD);
		// サービス課金開始年月日(サービス)
		outData[16] = svcMap.getString(JBSbatKVIFM016.SVC_CHRG_STAYMD);
		// サービス休止年月日(サービス)
		outData[17] = svcMap.getString(JBSbatKVIFM016.SVC_PAUSE_YMD);
		// サービス休止解除年月日(サービス)
		outData[18] = svcMap.getString(JBSbatKVIFM016.SVC_PAUSE_RLS_YMD);
		// サービス終了年月日(サービス)
		outData[19] = svcMap.getString(JBSbatKVIFM016.SVC_ENDYMD);
		// サービス課金終了年月日(サービス)
		outData[20] = svcMap.getString(JBSbatKVIFM016.SVC_CHRG_ENDYMD);
		// サービス解約起算年月日(サービス)
		outData[21] = svcMap.getString(JBSbatKVIFM016.SVC_DSL_KISAN_YMD);
		// サービス解約年月日(サービス)
		outData[22] = svcMap.getString(JBSbatKVIFM016.SVC_DSL_YMD);
		// 回復年月日(サービス)
		outData[23] = svcMap.getString(JBSbatKVIFM016.KAIHK_YMD);
		// サービスキャンセル取消年月日(サービス)
		outData[24] = svcMap.getString(JBSbatKVIFM016.SVC_CANCEL_CL_YMD);
		// サービス解約取消年月日(サービス)
		outData[25] = svcMap.getString(JBSbatKVIFM016.SVC_DSL_CL_YMD);
		// 割引サービス契約番号
		outData[26] = wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_NO);
		// 割引サービス契約ステータス
		outData[27] = wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_STAT);
		// 割引サービス契約ステータス名称
		outData[28] = wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_STAT_NM);
		// SYSID
		outData[29] = wribMap.getString(JBSbatKVIFM017.SYSID);
		// 割引サービスコード
		outData[30] = wribMap.getString(JBSbatKVIFM017.WRIB_SVC_CD);
		// 表示用キャンペーンコード
		outData[31] = wribMap.getString(JBSbatKVIFM017.DSP_CAMPAIGN_CD);
		// 割引サービスコード
		outData[32] = wribMap.getString(JBSbatKVIFM017.WRIB_SVC_NM);
		// プラン開始年月日（割引）
		outData[33] = wribMap.getString(JBSbatKVIFM017.PLAN_STAYMD);
		// プラン終了年月日（割引）
		outData[34] = wribMap.getString(JBSbatKVIFM017.PLAN_ENDYMD);
		// プラン課金開始年月日（割引）
		outData[35] = wribMap.getString(JBSbatKVIFM017.PLAN_CHRG_STAYMD);
		// プラン課金終了年月日（割引）
		outData[36] = wribMap.getString(JBSbatKVIFM017.PLAN_CHRG_ENDYMD);
		// プラン終了種別コード
		outData[37] = wribMap.getString(JBSbatKVIFM017.PLAN_END_SBT_CD);
		// サービスキャンセル年月日（割引）
		outData[38] = wribMap.getString(JBSbatKVIFM017.SVC_CANCEL_YMD);
		// サービスキャンセル理由コード
		outData[39] = wribMap.getString(JBSbatKVIFM017.SVC_CANCEL_RSN_CD);
		// サービス開始年月日（割引）
		outData[40] = wribMap.getString(JBSbatKVIFM017.SVC_STA_YMD);
		// サービス課金開始年月日（割引）
		outData[41] = wribMap.getString(JBSbatKVIFM017.SVC_CHRG_STAYMD);
		// サービス終了年月日（割引）
		outData[42] = wribMap.getString(JBSbatKVIFM017.SVC_ENDYMD);
		// サービス課金終了年月日（割引）
		outData[43] = wribMap.getString(JBSbatKVIFM017.SVC_CHRG_ENDYMD);
		// サービス解約年月日（割引）
		outData[44] = wribMap.getString(JBSbatKVIFM017.SVC_DSL_YMD);
		// 回復年月日（割引）
		outData[45] = wribMap.getString(JBSbatKVIFM017.KAIHK_YMD);
		// サービスキャンセル取消年月日（割引）
		outData[46] = wribMap.getString(JBSbatKVIFM017.SVC_CANCEL_CL_YMD);
		// サービス解約取消年月日（割引）
		outData[47] = wribMap.getString(JBSbatKVIFM017.SVC_DSL_CL_YMD);
		// 紹介コード
		outData[48] = wribMap.getString(JBSbatKVIFM017.INTR_CD);
		// 申込起算年月日
		outData[49] = wribMap.getString(JBSbatKVIFM017.MSKM_KISAN_YMD);
		// 割引登録契機コード
		outData[50] = wribMap.getString(JBSbatKVIFM017.WRIB_ADD_OPTY_CD);
		// 割引解約キャンセル契機コード
		outData[51] = wribMap.getString(JBSbatKVIFM017.WRIB_DSL_CNCL_OPTY_CD);
		// 割引額算出基準年月日
		outData[52] = wribMap
			.getString(JBSbatKVIFM017.WRIB_AMNT_SNST_STDARDYMD);
		// 割引課金開始月指定コード
		outData[53] = wribMap
			.getString(JBSbatKVIFM017.WRIB_CHRG_STA_MON_STI_CD);
		// 割引登録年月日
		outData[54] = wribMap.getString(JBSbatKVIFM017.WRIB_ADD_YMD);

		// 検証結果
		outData[55] = message;

		return outData;
	}

	/**
	 * 不正データ出力処理
	 * 
	 * @param outputInItem
	 *            出力情報
	 * @param outData
	 *            出力するデータ
	 * @throws Exception
	 *             メソッド内で発生した例外全般。
	 */
	private void outPutWork(JBSbatOutputItem outputInItem, String[] outData)
			throws Exception {

		super.logPrint.printDebugLog("【出力開始】");

		// 入出力インタフェースオブジェクトを生成
		JBSbatServiceInterfaceMap out_map = new JBSbatServiceInterfaceMap();

		// 出力項目を設定する
		// サービス契約番号
		out_map.setString(JBSbatKVIFM031.SVC_KEI_NO, outData[0]);
		// サービス契約ステータス
		out_map.setString(JBSbatKVIFM031.SVC_KEI_STAT, outData[1]);
		// サービス契約ステータス名称
		out_map.setString(JBSbatKVIFM031.SVC_KEI_STAT_NM, outData[2]);
		// 料金コースコード
		out_map.setString(JBSbatKVIFM031.PCRS_CD, outData[3]);
		// 料金コース名
		out_map.setString(JBSbatKVIFM031.PCRS_CD_NM, outData[4]);
		// 料金プランコード
		out_map.setString(JBSbatKVIFM031.PPLAN_CD, outData[5]);
		// 料金プラン名
		out_map.setString(JBSbatKVIFM031.PPLAN_CD_NM, outData[6]);
		// 課金先番号
		out_map.setString(JBSbatKVIFM031.KAKINS_NO, outData[7]);
		// 請求契約番号
		out_map.setString(JBSbatKVIFM031.SEIKY_KEI_NO, outData[8]);
		// サービス契約回線内訳番号
		out_map.setString(JBSbatKVIFM031.SVC_KEI_KAISEN_UCWK_NO, outData[9]);
		// プラン開始年月日(サービス)
		out_map.setString(JBSbatKVIFM031.PLAN_STAYMD_SVC, outData[10]);
		// プラン終了年月日(サービス)
		out_map.setString(JBSbatKVIFM031.PLAN_ENDYMD_SVC, outData[11]);
		// プラン課金開始年月日(サービス)
		out_map.setString(JBSbatKVIFM031.PLAN_CHRG_STAYMD_SVC, outData[12]);
		// プラン課金終了年月日(サービス)
		out_map.setString(JBSbatKVIFM031.PLAN_CHRG_ENDYMD_SVC, outData[13]);
		// サービスキャンセル年月日(サービス)
		out_map.setString(JBSbatKVIFM031.SVC_CANCEL_YMD_SVC, outData[14]);
		// サービス開始年月日(サービス)
		out_map.setString(JBSbatKVIFM031.SVC_STA_YMD_SVC, outData[15]);
		// サービス課金開始年月日(サービス)
		out_map.setString(JBSbatKVIFM031.SVC_CHRG_STAYMD_SVC, outData[16]);
		// サービス休止年月日(サービス)
		out_map.setString(JBSbatKVIFM031.SVC_PAUSE_YMD_SVC, outData[17]);
		// サービス休止解除年月日(サービス)
		out_map.setString(JBSbatKVIFM031.SVC_PAUSE_RLS_YMD_SVC, outData[18]);
		// サービス終了年月日(サービス)
		out_map.setString(JBSbatKVIFM031.SVC_ENDYMD_SVC, outData[19]);
		// サービス課金終了年月日(サービス)
		out_map.setString(JBSbatKVIFM031.SVC_CHRG_ENDYMD_SVC, outData[20]);
		// サービス解約起算年月日(サービス)
		out_map.setString(JBSbatKVIFM031.SVC_DSL_KISAN_YMD_SVC, outData[21]);
		// サービス解約年月日(サービス)
		out_map.setString(JBSbatKVIFM031.SVC_DSL_YMD_SVC, outData[22]);
		// 回復年月日(サービス)
		out_map.setString(JBSbatKVIFM031.KAIHK_YMD_SVC, outData[23]);
		// サービスキャンセル取消年月日(サービス)
		out_map.setString(JBSbatKVIFM031.SVC_CANCEL_CL_YMD_SVC, outData[24]);
		// サービス解約取消年月日(サービス)
		out_map.setString(JBSbatKVIFM031.SVC_DSL_CL_YMD_SVC, outData[25]);
		// 割引サービス契約番号
		out_map.setString(JBSbatKVIFM031.WRIB_SVC_KEI_NO, outData[26]);
		// 割引サービス契約ステータス
		out_map.setString(JBSbatKVIFM031.WRIB_SVC_KEI_STAT, outData[27]);
		// 割引サービス契約ステータス名称
		out_map.setString(JBSbatKVIFM031.WRIB_SVC_KEI_STAT_NM, outData[28]);
		// ＳＹＳＩＤ
		out_map.setString(JBSbatKVIFM031.SYSID, outData[29]);
		// 割引サービスコード
		out_map.setString(JBSbatKVIFM031.WRIB_SVC_CD, outData[30]);
		// 表示用キャンペーンコード
		out_map.setString(JBSbatKVIFM031.DSP_CAMPAIGN_CD, outData[31]);
		// 割引サービス名
		out_map.setString(JBSbatKVIFM031.WRIB_SVC_NM, outData[32]);
		// プラン終了年月日（割引）
		out_map.setString(JBSbatKVIFM031.PLAN_STAYMD_WRIB, outData[33]);
		// プラン終了年月日（割引）
		out_map.setString(JBSbatKVIFM031.PLAN_ENDYMD_WRIB, outData[34]);
		// プラン課金開始年月日（割引）
		out_map.setString(JBSbatKVIFM031.PLAN_CHRG_STAYMD_WRIB, outData[35]);
		// プラン課金終了年月日（割引）
		out_map.setString(JBSbatKVIFM031.PLAN_CHRG_ENDYMD_WRIB, outData[36]);
		// プラン終了種別コード
		out_map.setString(JBSbatKVIFM031.PLAN_END_SBT_CD, outData[37]);
		// サービスキャンセル年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_CANCEL_YMD_WRIB, outData[38]);
		// サービスキャンセル理由コード
		out_map.setString(JBSbatKVIFM031.SVC_CANCEL_RSN_CD, outData[39]);
		// サービス開始年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_STA_YMD_WRIB, outData[40]);
		// サービス課金開始年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_CHRG_STAYMD_WRIB, outData[41]);
		// サービス終了年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_ENDYMD_WRIB, outData[42]);
		// サービス課金終了年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_CHRG_ENDYMD_WRIB, outData[43]);
		// サービス解約年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_DSL_YMD_WRIB, outData[44]);
		// 回復年月日（割引）
		out_map.setString(JBSbatKVIFM031.KAIHK_YMD_WRIB, outData[45]);
		// サービスキャンセル取消年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_CANCEL_CL_YMD_WRIB, outData[46]);
		// サービス解約取消年月日v
		out_map.setString(JBSbatKVIFM031.SVC_DSL_CL_YMD_WRIB, outData[47]);
		// 紹介コード
		out_map.setString(JBSbatKVIFM031.INTR_CD, outData[48]);
		// 申込起算年月日
		out_map.setString(JBSbatKVIFM031.MSKM_KISAN_YMD, outData[49]);
		// 割引解約キャンセル契機コード
		out_map.setString(JBSbatKVIFM031.WRIB_ADD_OPTY_CD, outData[50]);
		// 割引解約キャンセル契機コード
		out_map.setString(JBSbatKVIFM031.WRIB_DSL_CNCL_OPTY_CD, outData[51]);
		// 割引額算出基準年月日
		out_map.setString(JBSbatKVIFM031.WRIB_AMNT_SNST_STDARDYMD, outData[52]);
		// 割引課金開始月指定コード
		out_map.setString(JBSbatKVIFM031.WRIB_CHRG_STA_MON_STI_CD, outData[53]);
		// 割引登録年月日
		out_map.setString(JBSbatKVIFM031.WRIB_ADD_YMD, outData[54]);
		// 検証結果
		out_map.setString(JBSbatKVIFM031.CHECK_RESULT, outData[55]);

		// 出力フラグを設定
		out_map.setOutFlg(true);

		// 出力共通電文に入出力インターフェースを設定する。
		outputInItem.addOutMapList(out_map);
		super.logPrint.printDebugLog("【出力終了】");
	}

	/**
	 * 検証結果ファイル（ヘッダ）を編集します。
	 * 
	 * @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 = "ＳＹＳＩＤ";
		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(JBSbatKVIFM031.SVC_KEI_NO, COLUMN_01); // サービス契約番号
		out_map.setString(JBSbatKVIFM031.SVC_KEI_STAT, COLUMN_02); // サービス契約ステータス
		out_map.setString(JBSbatKVIFM031.SVC_KEI_STAT_NM, COLUMN_03); // サービス契約ステータス名称
		out_map.setString(JBSbatKVIFM031.PCRS_CD, COLUMN_04); // 料金コースコード
		out_map.setString(JBSbatKVIFM031.PCRS_CD_NM, COLUMN_05); // 料金コース名
		out_map.setString(JBSbatKVIFM031.PPLAN_CD, COLUMN_06); // 料金プランコード
		out_map.setString(JBSbatKVIFM031.PPLAN_CD_NM, COLUMN_07); // 料金プラン名
		out_map.setString(JBSbatKVIFM031.KAKINS_NO, COLUMN_08); // 課金先番号
		out_map.setString(JBSbatKVIFM031.SEIKY_KEI_NO, COLUMN_09); // 請求契約番号
		out_map.setString(JBSbatKVIFM031.SVC_KEI_KAISEN_UCWK_NO, COLUMN_10); // サービス契約回線内訳番号
		out_map.setString(JBSbatKVIFM031.PLAN_STAYMD_SVC, COLUMN_11); // プラン開始年月日（サービス）
		out_map.setString(JBSbatKVIFM031.PLAN_ENDYMD_SVC, COLUMN_12); // プラン終了年月日（サービス）
		out_map.setString(JBSbatKVIFM031.PLAN_CHRG_STAYMD_SVC, COLUMN_13); // プラン課金開始年月日（サービス）
		out_map.setString(JBSbatKVIFM031.PLAN_CHRG_ENDYMD_SVC, COLUMN_14); // プラン課金終了年月日（サービス）
		out_map.setString(JBSbatKVIFM031.SVC_CANCEL_YMD_SVC, COLUMN_15); // サービスキャンセル年月日（サービス）
		out_map.setString(JBSbatKVIFM031.SVC_STA_YMD_SVC, COLUMN_16); // サービス開始年月日（サービス）
		out_map.setString(JBSbatKVIFM031.SVC_CHRG_STAYMD_SVC, COLUMN_17); // サービス課金開始年月日（サービス）
		out_map.setString(JBSbatKVIFM031.SVC_PAUSE_YMD_SVC, COLUMN_18); // サービス休止年月日（サービス）
		out_map.setString(JBSbatKVIFM031.SVC_PAUSE_RLS_YMD_SVC, COLUMN_19); // サービス休止解除年月日（サービス）
		out_map.setString(JBSbatKVIFM031.SVC_ENDYMD_SVC, COLUMN_20); // サービス終了年月日（サービス）
		out_map.setString(JBSbatKVIFM031.SVC_CHRG_ENDYMD_SVC, COLUMN_21); // サービス課金終了年月日（サービス）
		out_map.setString(JBSbatKVIFM031.SVC_DSL_KISAN_YMD_SVC, COLUMN_22); // サービス解約起算年月日（サービス）
		out_map.setString(JBSbatKVIFM031.SVC_DSL_YMD_SVC, COLUMN_23); // サービス解約年月日（サービス）
		out_map.setString(JBSbatKVIFM031.KAIHK_YMD_SVC, COLUMN_24); // 回復年月日（サービス）
		out_map.setString(JBSbatKVIFM031.SVC_CANCEL_CL_YMD_SVC, COLUMN_25); // サービスキャンセル取消年月日（サービス）
		out_map.setString(JBSbatKVIFM031.SVC_DSL_CL_YMD_SVC, COLUMN_26); // サービス解約取消年月日（サービス）
		out_map.setString(JBSbatKVIFM031.WRIB_SVC_KEI_NO, COLUMN_27); // 割引サービス契約番号
		out_map.setString(JBSbatKVIFM031.WRIB_SVC_KEI_STAT, COLUMN_28); // 割引サービス契約ステータス
		out_map.setString(JBSbatKVIFM031.WRIB_SVC_KEI_STAT_NM, COLUMN_29); // 割引サービス契約ステータス名称
		out_map.setString(JBSbatKVIFM031.SYSID, COLUMN_30); // ＳＹＳＩＤ
		out_map.setString(JBSbatKVIFM031.WRIB_SVC_CD, COLUMN_31); // 割引サービスコード
		out_map.setString(JBSbatKVIFM031.DSP_CAMPAIGN_CD, COLUMN_32); // 表示用キャンペーンコード
		out_map.setString(JBSbatKVIFM031.WRIB_SVC_NM, COLUMN_33); // 割引サービス名
		out_map.setString(JBSbatKVIFM031.PLAN_STAYMD_WRIB, COLUMN_34); // プラン開始年月日（割引）
		out_map.setString(JBSbatKVIFM031.PLAN_ENDYMD_WRIB, COLUMN_35); // プラン終了年月日（割引）
		out_map.setString(JBSbatKVIFM031.PLAN_CHRG_STAYMD_WRIB, COLUMN_36); // プラン課金開始年月日（割引）
		out_map.setString(JBSbatKVIFM031.PLAN_CHRG_ENDYMD_WRIB, COLUMN_37); // プラン課金終了年月日（割引）
		out_map.setString(JBSbatKVIFM031.PLAN_END_SBT_CD, COLUMN_38); // プラン終了種別コード
		out_map.setString(JBSbatKVIFM031.SVC_CANCEL_YMD_WRIB, COLUMN_39); // サービスキャンセル年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_CANCEL_RSN_CD, COLUMN_40); // サービスキャンセル理由コード
		out_map.setString(JBSbatKVIFM031.SVC_STA_YMD_WRIB, COLUMN_41); // サービス開始年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_CHRG_STAYMD_WRIB, COLUMN_42); // サービス課金開始年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_ENDYMD_WRIB, COLUMN_43); // サービス終了年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_CHRG_ENDYMD_WRIB, COLUMN_44); // サービス課金終了年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_DSL_YMD_WRIB, COLUMN_45); // サービス解約年月日（割引）
		out_map.setString(JBSbatKVIFM031.KAIHK_YMD_WRIB, COLUMN_46); // 回復年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_CANCEL_CL_YMD_WRIB, COLUMN_47); // サービスキャンセル取消年月日（割引）
		out_map.setString(JBSbatKVIFM031.SVC_DSL_CL_YMD_WRIB, COLUMN_48); // サービス解約取消年月日（割引）
		out_map.setString(JBSbatKVIFM031.INTR_CD, COLUMN_49); // 紹介コード
		out_map.setString(JBSbatKVIFM031.MSKM_KISAN_YMD, COLUMN_50); // 申込起算年月日
		out_map.setString(JBSbatKVIFM031.WRIB_ADD_OPTY_CD, COLUMN_51); // 割引登録契機コード
		out_map.setString(JBSbatKVIFM031.WRIB_DSL_CNCL_OPTY_CD, COLUMN_52); // 割引解約キャンセル契機コード
		out_map.setString(JBSbatKVIFM031.WRIB_AMNT_SNST_STDARDYMD, COLUMN_53); // 割引額算出基準年月日
		out_map.setString(JBSbatKVIFM031.WRIB_CHRG_STA_MON_STI_CD, COLUMN_54); // 割引課金開始月指定コード
		out_map.setString(JBSbatKVIFM031.WRIB_ADD_YMD, COLUMN_55); // 割引登録年月日
		out_map.setString(JBSbatKVIFM031.CHECK_RESULT, COLUMN_56); // 検証結果

		// 出力フラグを設定
		out_map.setOutFlg(true);

		// 出力共通電文に入出力インターフェースを設定する。
		outputInItem.addOutMapList(out_map);
	}
}
