/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatAKSeikyPtnknshoRsltSks
*	ソースファイル名	：JBSbatAKSeikyPtnknshoRsltSks.java
*	作成者				：富士通　
*	作成日				：2012年07月26日
*＜機能概要＞
*　請求パターン検証結果情報作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2012/07/26   FJ）岩切	新規作成
*	v4.00.00	2013/04/05   FJ) 小柴	【IKK-2013-0000783】文字化け対策のため、エンコード形式の変更
*	v5.00.00	2013/07/01   FJ) 黒木	【ANK-1464-00-00】料金検証障害対応
*	v5.01		2013/07/09   FJ）河井	【TG1-2013-0000662】マスタ参照基準日変更対応
*	v5.02.00	2013/07/11   FJ) 桑島	【TG1-2013-0000662】請求年月対応
*	v5.03.00	2013/07/19   FJ) 小柴	【TG1-2013-0000662】料金コース、料金項目出力名称の取得条件修正
*	v8.00.00	2013/01/15   FJ) 前田	【ANK-1584-00-00】L2-MVNO対応 サービス詳細識別番号の追加
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JACBatCommon;
import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatSchdlUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatAKIFM013;
import eo.business.util.table.JBSbatAK_T_SEIKY_PTN_KNSKK;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.business.util.table.JBSbatKK_M_PCRS;
import eo.business.util.table.JBSbatKK_M_PPLAN;
import eo.business.util.table.JBSbatKK_M_WRIB_SVC_TANKA;
import eo.business.util.table.JBSbatKK_M_WRIB_SVC;
import eo.business.util.table.JBSbatCH_M_PRC_KMK_OPUT_NM;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatBusinessFileUtil;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.common.constant.JZM0171Constant;
import eo.common.constant.JACStrConst;


/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatAKSeikyPtnknshoRsltSks extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(料金項目出力名称)*/
	private static final String D_TBL_NAME_CH_M_PRC_KMK_OPUT_NM = "CH_M_PRC_KMK_OPUT_NM";

	/** テーブル(料金コース)*/
	private static final String D_TBL_NAME_KK_M_PCRS = "KK_M_PCRS";

	/** テーブル(料金プラン)*/
	private static final String D_TBL_NAME_KK_M_PPLAN = "KK_M_PPLAN";

	/** テーブル(割引サービス単価)*/
	private static final String D_TBL_NAME_KK_M_WRIB_SVC_TANKA = "KK_M_WRIB_SVC_TANKA";

	/** SQL定義キー(AK_SELECT_002)*/
	private static final String ZM_M_CD_NM_KANRI_AK_SELECT_002 = "AK_SELECT_002";

	/** SQL定義キー(AK_SELECT_002)*/
	private static final String CH_M_PRC_KMK_OPUT_NM_AK_SELECT_002 = "AK_SELECT_002";

	/** SQL定義キー(AK_SELECT_001)*/
	private static final String KK_M_PCRS_AK_SELECT_001 = "AK_SELECT_001";

	/** SQL定義キー(AK_SELECT_001)*/
	private static final String KK_M_PPLAN_AK_SELECT_001 = "AK_SELECT_001";

	/** SQL定義キー(AK_SELECT_001)*/
	private static final String KK_M_WRIB_SVC_TANKA_AK_SELECT_001 = "AK_SELECT_001";

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;

	/** テーブルアクセスクラス(料金項目出力名称)*/
	private JBSbatSQLAccess db_CH_M_PRC_KMK_OPUT_NM = null;

	/** テーブルアクセスクラス(料金コース)*/
	private JBSbatSQLAccess db_KK_M_PCRS = null;

	/** テーブルアクセスクラス(料金プラン)*/
	private JBSbatSQLAccess db_KK_M_PPLAN = null;

	/** テーブルアクセスクラス(割引サービス単価)*/
	private JBSbatSQLAccess db_KK_M_WRIB_SVC_TANKA = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 料金サービスコード桁数 */
	private static final int PRC_SVC_CD_LEN = 6;

	/** 調査検証結果補足固定文字 */
	private static final String CHOSAKNS_RSLT_HSK_KOTEI = "調査検証対象なし";

	/** 退避．料金検証契約状態マップ */
	private HashMap<String, String> tmpPrcknsKeiStatMap = null;

	/** 退避．存在比較結果コードマップ */
	private HashMap<String, String> tmpSonzaiHikakuRlMap = null;

	/** 退避．存在チェックレベルコードマップ */
	private HashMap<String, String> tmpSonzaiChkLvMap = null;

	/** 退避．金額比較結果コードマップ */
	private HashMap<String, String> tmpAmntHikakuRsltMap = null;

	/** 退避．金額チェックレベルコードマップ */
	private HashMap<String, String> tmpAmntChkLvMap = null;

	/** 退避．請求パターン検証エラーレベルマップ */
	private HashMap<String, String> tmpSeikyPtKnsErrMap = null;

	/** 退避．加入契約支払方式コードマップ */
	private HashMap<String, String> tmpKanyKeiPayHoskMap = null;

	/** 退避．料金検証料金項目タイプコードマップ */
	private HashMap<String, String> tmpPrcknsPrcKmkTpMap = null;

	/** 退避．料金コースマップ */
	private HashMap<String, String> tmpPcrsMap = null;

	/** 退避．料金サービスコードマップ */
	private HashMap<String, String> tmpPplanMap = null;

	/** 退避．割引サービスコードマップ */
	private HashMap<String, String> tmpWribSvcCdMap = null;

	/** 退避．料金項目コードマップ */
	private HashMap<String, String> tmpPrcKmkMap = null;

	/** 退避．出力抑止ファイル */
	private String tmpOputYoksiFile = null;

	/** 退避．出力抑止リスト */
	private ArrayList<String> temOputYoksiList = new ArrayList<String>();

	/** 退避．出力抑止検証日区分リスト */
	private ArrayList<String> temOputYoksiKnshoKbList = new ArrayList<String>();
	
	/** 出力ファイル定義 */
	private static final String PARAM_OTD = "OTD";
	
	/** 請求年月 */
	private String skyYm = "";
	
	/** 月末日 */
	private String tmpSeikyuYmEndDay  = null;
	
	/** 請求年月初日及び料金計算日([0]:請求年月初日 [1]:料金計算日) */
	private String[] prcCalcDay = null;
	
	/** 出力抑止リストに未存在 */
	private static final int NOT_FOUND = -1;
	
	/** ファイル出力対象 */
	private static final String FILE_OUT = "1";

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_CH_M_PRC_KMK_OPUT_NM = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_KMK_OPUT_NM);
		db_KK_M_PCRS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PCRS);
		db_KK_M_PPLAN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PPLAN);
		db_KK_M_WRIB_SVC_TANKA = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_WRIB_SVC_TANKA);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

		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 + "]");

		// 料金計算日取得
		JACbatSchdlUtil su = new JACbatSchdlUtil(commonItem);
		try
		{
			// 請求年月を取得
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][イベントコード:" + JACStrConst.EVENT_CD_RYOKIN_KEISAN_YMD + "]");
			this.skyYm = su.getBillDate(super.opeDate, JACStrConst.EVENT_CD_RYOKIN_KEISAN_YMD);
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][請求年月:" + this.skyYm + "]");
			
			// 請求年月初日及び料金計算日取得
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][イベントコード:" + JACStrConst.EVENT_CD_USE_STAYMD + "]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][イベントコード:" + JACStrConst.EVENT_CD_PRC_CALC_DAY + "]");
			this.prcCalcDay = su.getUseStrEnd(skyYm, JACStrConst.EVENT_CD_USE_STAYMD, JACStrConst.EVENT_CD_PRC_CALC_DAY);
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][請求年月日初日:" + this.prcCalcDay[0] + ", 料金計算日:" + this.prcCalcDay[1] + "]");
			
			// 月初日[0] 月末日[1]
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][イベントコード:" + JACStrConst.EVENT_CD_USE_STAYMD + "]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][イベントコード:" + JACStrConst.EVENT_CD_USE_ENDYMD + "]");
			String[] rtn = su.getUseStrEnd(skyYm, JACStrConst.EVENT_CD_USE_STAYMD, JACStrConst.EVENT_CD_USE_ENDYMD);
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][請求年月日初日:" + rtn[0] + ", 請求年月末日:" + rtn[1] + "]");
			
			this.tmpSeikyuYmEndDay = rtn[1];
		}
		finally
		{
			su.close();
		}
		
		// 料金検証契約状態のマップ作成
		this.tmpPrcknsKeiStatMap = new HashMap<String, String>(); 
		makeCdNmKanriInfo(JZM0171Constant.CD01474, this.tmpPrcknsKeiStatMap);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][tmpPrcknsKeiStatMap=" + this.tmpPrcknsKeiStatMap.toString() + "]");
		
		// 存在比較結果コードのマップ作成
		this.tmpSonzaiHikakuRlMap = new HashMap<String, String>(); 
		makeCdNmKanriInfo(JZM0171Constant.CD01488, this.tmpSonzaiHikakuRlMap);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][tmpSonzaiHikakuRlMap=" + this.tmpSonzaiHikakuRlMap.toString() + "]");
		
		// 存在チェックレベルコードのマップ作成
		this.tmpSonzaiChkLvMap = new HashMap<String, String>(); 
		makeCdNmKanriInfo(JZM0171Constant.CD01475, this.tmpSonzaiChkLvMap);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][tmpSonzaiChkLvMap=" + this.tmpSonzaiChkLvMap.toString() + "]");
		
		// 金額比較結果コードのマップ作成
		this.tmpAmntHikakuRsltMap = new HashMap<String, String>(); 
		makeCdNmKanriInfo(JZM0171Constant.CD01489, this.tmpAmntHikakuRsltMap);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][tmpAmntHikakuRsltMap=" + this.tmpAmntHikakuRsltMap.toString() + "]");
		
		// 金額チェックレベルコードのマップ作成
		this.tmpAmntChkLvMap = new HashMap<String, String>(); 
		makeCdNmKanriInfo(JZM0171Constant.CD01476, this.tmpAmntChkLvMap);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][tmpAmntChkLvMap=" + this.tmpAmntChkLvMap.toString() + "]");
		
		// 請求パターン検証エラーレベルのマップ作成
		this.tmpSeikyPtKnsErrMap = new HashMap<String, String>(); 
		makeCdNmKanriInfo(JZM0171Constant.CD01491, this.tmpSeikyPtKnsErrMap);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][tmpSeikyPtKnsErrMap=" + this.tmpSeikyPtKnsErrMap.toString() + "]");
		
		// 加入契約支払方式コードのマップ作成
		this.tmpKanyKeiPayHoskMap = new HashMap<String, String>(); 
		makeCdNmKanriInfo(JZM0171Constant.CD01216, this.tmpKanyKeiPayHoskMap);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][tmpKanyKeiPayHoskMap=" + this.tmpKanyKeiPayHoskMap.toString() + "]");
		
		// 料金検証料金項目タイプコードのマップ作成
		this.tmpPrcknsPrcKmkTpMap = new HashMap<String, String>(); 
		makeCdNmKanriInfo(JZM0171Constant.CD01485, this.tmpPrcknsPrcKmkTpMap);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][tmpPrcknsPrcKmkTpMap=" + this.tmpPrcknsPrcKmkTpMap.toString() + "]");
		
		// 料金コースのマップ作成
		this.makePcrsMap();
		
		// 料金サービスのマップ作成
		this.makePplanMap();
		
		// 割引サービスコードのマップ作成
		this.makeWribSvcCdMap();
		
		// 料金項目マスタのマップ作成
		this.makePrcKmkMap();
		
		// 検証結果出力抑止リストの作成
		this.makeOputYoksiList();
		
		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();
		
		// 出力抑止リスト検索キーをセットする。
		String findKey = makeStr(inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PCRS_CD)
							, inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PRC_KMK_CD)
							, inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SEIKY_PTN_CD)
							, inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SEIKY_PTN_KNSHO_ERR_LV_CD));
		
		// 出力抑止リストを検索する。
		// 検索キー：料金コースコード、料金項目コード、請求パターンコード、請求パターン検証エラーレベルコード
		int findPos = temOputYoksiList.indexOf(findKey);
		
		// 検索結果判定。
		if(findPos == NOT_FOUND)
		{
			// 検索出来なかった場合、請求パターン検証結果を出力する。
			this.makeOutputInfo(inMap, outputItem);
		}
		else
		{
			// バッチ運用日が料金計算日と同一日で出力抑止検証日区分リスト・検証日区分が１であれば請求パターン検証結果を出力する。
			if(super.opeDate.equals(prcCalcDay[1]) && FILE_OUT.equals(temOputYoksiKnshoKbList.get(findPos)))
			{
				this.makeOutputInfo(inMap, outputItem);
			}
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return outputItem;

	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		
		String[] freeItem = this.freeItem.split(JACStrConst.FREE_DIV);
		
		// ファイル出力
		outputFile(freeItem[2], freeItem[3]);
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_CD_NM_KANRI.close();
		db_CH_M_PRC_KMK_OPUT_NM.close();
		db_KK_M_PCRS.close();
		db_KK_M_PPLAN.close();
		db_KK_M_WRIB_SVC_TANKA.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * コード名称管理スキーマを検索し、その結果を基にマップを作成します。
	 * 
	 * @param cdSbtCd　請求抑止コード
	 * @param map　空のマップ作成
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void makeCdNmKanriInfo(String cdSbtCd, HashMap<String, String> map) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeCdNmKanriInfo]");
		
		// 条件値
		JBSbatCommonDBInterface setParam = new JBSbatCommonDBInterface();
		
		// コード種別コード
		setParam.setValue(cdSbtCd);
		// 適用開始年月日
		setParam.setValue(super.opeDate);
		// 適用終了年月日
		setParam.setValue(super.opeDate);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeCdNmKanriInfo][setParam=" + setParam.getList().toString() + "]");
		
		// SQL実施
		executeZM_M_CD_NM_KANRI_AK_SELECT_002(setParam.getList().toArray());
		
		// 結果取得
		JBSbatCommonDBInterface dbMap = db_ZM_M_CD_NM_KANRI.selectNext();

		// 取得した情報分情報を設定します。
		while(null != dbMap)
		{
			// 値を設定（KEY:コード名称管理．コード区分、VALUE:コード名称管理．コード区分名称）
			map.put(dbMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV),		dbMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM));
			
			// 次レコード　読み込み
			dbMap = db_ZM_M_CD_NM_KANRI.selectNext();
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeCdNmKanriInfo]");
	}

	/**
	 * 料金コースマスタを検索して、料金コースマップを作成する。
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void makePcrsMap() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makePcrsMap]");

		JBSbatCommonDBInterface setParam = new JBSbatCommonDBInterface();
	
		setParam.setValue(this.tmpSeikyuYmEndDay);		// 料金コース適用開始年月日
		setParam.setValue(this.tmpSeikyuYmEndDay);		// 料金コース適用終了年月日
		setParam.setValue(this.tmpSeikyuYmEndDay);		// 予約適用年月日

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makePcrsMap][setParam=" + setParam.getList().toString() + "]");

		// SQL実行
		executeKK_M_PCRS_AK_SELECT_001(setParam.getList().toArray());
		JBSbatCommonDBInterface dbMap = db_KK_M_PCRS.selectNext();
		
		this.tmpPcrsMap = new HashMap<String, String>();
		
		// 取得件数分処理を繰り返す
		while (dbMap != null)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makePcrsMap][dbMap=" + dbMap.getMap().toString() + "]");
			// 取得した情報マップに設定
			// KEY：料金コースコード VALUE：料金コース名
			this.tmpPcrsMap.put(dbMap.getString(JBSbatKK_M_PCRS.PCRS_CD), dbMap.getString(JBSbatKK_M_PCRS.PCRS_NM));
			dbMap = db_KK_M_PCRS.selectNext();
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makePcrsMap]");
		return;
	}
	
	/**
	 * 料金プランマスタを検索して、料金サービスコードマップを作成する。
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void makePplanMap() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makePplanMap]");

		JBSbatCommonDBInterface setParam = new JBSbatCommonDBInterface();
	
		// 料金プラン適用開始年月日
		setParam.setValue(this.tmpSeikyuYmEndDay);
		// 料金プラン適用終了年月日
		setParam.setValue(this.tmpSeikyuYmEndDay);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makePplanMap][setParam=" + setParam.getList().toString() + "]");

		// SQL実行
		executeKK_M_PPLAN_AK_SELECT_001(setParam.getList().toArray());
		JBSbatCommonDBInterface dbMap = db_KK_M_PPLAN.selectNext();
		
		this.tmpPplanMap = new HashMap<String, String>();
		
		// 取得件数分処理を繰り返す
		while (dbMap != null)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makePplanMap][dbMap=" + dbMap.getMap().toString() + "]");
			// 取得した情報マップに設定（同一キーの場合は取得一件目を設定する）
			
			// 退避．料金サービスコードマップに取得結果のプランコードで設定されたデータが存在しない場合
			if(!this.tmpPplanMap.containsKey(dbMap.getString(JBSbatKK_M_PPLAN.PPLAN_CD)))
			{
				// KEY：料金プランコード VALUE：料金プラン名
				this.tmpPplanMap.put(dbMap.getString(JBSbatKK_M_PPLAN.PPLAN_CD), dbMap.getString(JBSbatKK_M_PPLAN.PPLAN_NM));
			}
			dbMap = db_KK_M_PPLAN.selectNext();
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makePplanMap]");
		return;
	}

	/**
	 * 割引サービス単価マスタ／割引サービスマスタを検索して、割引サービスコードマップを作成する。
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void makeWribSvcCdMap() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeWribSvcCdMap]");

		JBSbatCommonDBInterface setParam = new JBSbatCommonDBInterface();
	
		// 割引サービス単価適用開始年月日
		setParam.setValue(super.opeDate);
		// 割引サービス単価適用終了年月日
		setParam.setValue(super.opeDate);
		// 割引サービス適用開始年月日
		setParam.setValue(super.opeDate);
		// 割引サービス適用終了年月日
		setParam.setValue(super.opeDate);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeWribSvcCdMap][setParam=" + setParam.getList().toString() + "]");

		// SQL実行
		executeKK_M_WRIB_SVC_TANKA_AK_SELECT_001(setParam.getList().toArray());
		JBSbatCommonDBInterface dbMap = db_KK_M_WRIB_SVC_TANKA.selectNext();
		
		this.tmpWribSvcCdMap = new HashMap<String, String>();
		
		// 取得件数分処理を繰り返す
		while (dbMap != null)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeWribSvcCdMap][dbMap=" + dbMap.getMap().toString() + "]");
			// 取得した情報マップに設定
			// KEY：割引サービス単価番号 VALUE：割引サービス名
			this.tmpWribSvcCdMap.put(dbMap.getString(JBSbatKK_M_WRIB_SVC_TANKA.WRIB_SVC_TANKA_NO), dbMap.getString(JBSbatKK_M_WRIB_SVC.WRIB_SVC_NM));
			dbMap = db_KK_M_WRIB_SVC_TANKA.selectNext();
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeWribSvcCdMap]");
		return;
	}
	
	/**
	 * 料金項目出力名称マスタを検索して、料金項目コードマップを作成する。
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void makePrcKmkMap() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makePrcKmkMap]");

		JBSbatCommonDBInterface setParam = new JBSbatCommonDBInterface();
	
		setParam.setValue(JACStrConst.PRC_KMK_NM_SBT_CD_PRC_NM);	// 料金項目名称種別コード
		setParam.setValue(this.tmpSeikyuYmEndDay);					// 料金項目出力名称適用開始年月日
		setParam.setValue(this.tmpSeikyuYmEndDay);					// 料金項目出力名称適用終了年月日
		setParam.setValue(this.tmpSeikyuYmEndDay);					// 予約適用年月日

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makePrcKmkMap][setParam=" + setParam.getList().toString() + "]");

		// SQL実行
		executeCH_M_PRC_KMK_OPUT_NM_AK_SELECT_002(setParam.getList().toArray());
		JBSbatCommonDBInterface dbMap = db_CH_M_PRC_KMK_OPUT_NM.selectNext();
		
		this.tmpPrcKmkMap = new HashMap<String, String>();
		
		// 取得件数分処理を繰り返す
		while (dbMap != null)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makePrcKmkMap][dbMap=" + dbMap.getMap().toString() + "]");
			// 取得した情報マップに設定
			// KEY：料金グループコード＋料金コースコード＋料金サービスコード＋料金項目コード VALUE：料金項目名称
			this.tmpPrcKmkMap.put(makeStr(dbMap.getString(JBSbatCH_M_PRC_KMK_OPUT_NM.PRC_GRP_CD)
										, dbMap.getString(JBSbatCH_M_PRC_KMK_OPUT_NM.PCRS_CD)
										, dbMap.getString(JBSbatCH_M_PRC_KMK_OPUT_NM.PRC_SVC_CD)
										, dbMap.getString(JBSbatCH_M_PRC_KMK_OPUT_NM.PRC_KMK_CD))
										, dbMap.getString(JBSbatCH_M_PRC_KMK_OPUT_NM.PRC_KMK_NM));
			dbMap = db_CH_M_PRC_KMK_OPUT_NM.selectNext();
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makePrcKmkMap]");
		return;
	}

	/**
	 * 出力抑止ファイルの読み込みを行います。<br>
	 * <p>
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void makeOputYoksiList() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOputYoksiList]");

		// 入力ファイル情報をFree項目より取得
		String[] freeItem = this.freeItem.split(JACStrConst.FREE_DIV);
		tmpOputYoksiFile = freeItem[0].concat(JACStrConst.SLASH).concat(freeItem[1]);

		JBSbatInputFileUtil inFileUtil = null;
		temOputYoksiList = new ArrayList<String>();
		
		inFileUtil = new JBSbatInputFileUtil(tmpOputYoksiFile);
		inFileUtil.setEncode(JACStrConst.ENCODE_MS932);
		inFileUtil.createReader();
		while (inFileUtil.ready())
		{
			// 出力抑止ファイルを読み込み、以下項目を連結しリストに格納する。
			// 料金コースコード＋料金項目コード＋請求パターンコード、請求パターン検証エラーレベルコード
			String[] tmpreadline = inFileUtil.readLine().split(JACStrConst.COMMA);
			String outLine = makeStr(tmpreadline[1], tmpreadline[2], tmpreadline[3], tmpreadline[4]);
			temOputYoksiList.add(outLine);
			temOputYoksiKnshoKbList.add(tmpreadline[0]);
		}
		
		// ファイルを閉じる
		if (inFileUtil != null)
		{
			inFileUtil.close();
			
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOputYoksiList][temOputYoksiList=" + temOputYoksiList + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOputYoksiList]");

	}

	/**
	 * 文字を連結します
	 * @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, "[L][strBuf][strBuf = " + strBuf.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeStr]");
		
		return strBuf.toString();
	}

	/**
	 * 請求パターン検証結果情報作成処理を行います。
	 * 
	 * @param inMap　入力電文
	 * @param outputInItem　出力情報
	 * @throws Exception
	 */
	private void makeOutputInfo(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputInfo]");
		
		// 請求パターン検証結果情報
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();

		// チェック
		outMap.set(JBSbatAKIFM013.CHK,				 				JACStrConst.KARA_MOJI);
		// 請求契約番号
		outMap.set(JBSbatAKIFM013.SEIKY_KEI_NO, 					inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SEIKY_KEI_NO));
		// サービス契約番号
		outMap.set(JBSbatAKIFM013.SVC_KEI_NO, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SVC_KEI_NO));
		// ＳＹＳＩＤ
		outMap.set(JBSbatAKIFM013.SYSID, 							inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SYSID));
		// 整理番号
		outMap.set(JBSbatAKIFM013.SEIRI_NO, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SEIRI_NO));
		// 請求年月
		outMap.set(JBSbatAKIFM013.SEIKY_YM, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SEIKY_YM));
		// 検証年月日
		outMap.set(JBSbatAKIFM013.KNSHO_YMD, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.KNSHO_YMD));
		// 料金グループコード
		outMap.set(JBSbatAKIFM013.PRC_GRP_CD, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PRC_GRP_CD));

		// 料金コースコード
		outMap.set(JBSbatAKIFM013.PCRS_CD,							inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PCRS_CD));
		// 料金コース名称
		// マップより取得した名称を設定
		outMap.set(JBSbatAKIFM013.PCRS_NM,							this.tmpPcrsMap.get(inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PCRS_CD)));
		
		// 料金サービスコード
		outMap.set(JBSbatAKIFM013.PRC_SVC_CD, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PRC_SVC_CD));
		// 料金サービス名称
		// 料金サービスコードの桁数に応じて料金サービス名称を設定する
		int tmpPrcSvcCdLen = inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PRC_SVC_CD).trim().length();
		if (tmpPrcSvcCdLen == PRC_SVC_CD_LEN)
		{
			// 料金サービスコードが6桁の場合
			// 料金サービスコードマップより取得した名称を設定
			outMap.set(JBSbatAKIFM013.PRC_SVC_NM,					this.tmpPplanMap.get(inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PRC_SVC_CD).trim()));
		}
		else
		{
			// 料金サービスコードが6桁以外（12桁）の場合
			// 割引サービスコードマップより取得した名称を設定
			outMap.set(JBSbatAKIFM013.PRC_SVC_NM,					this.tmpWribSvcCdMap.get(inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PRC_SVC_CD)));
		}
		
		// 料金検証契約状態コード
		outMap.set(JBSbatAKIFM013.PRCKNS_KEI_STAT_CD, 				inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PRCKNS_KEI_STAT_CD));
		// 料金検証契約状態名称
		// 料金検証契約状態マップより取得した名称を設定
		outMap.set(JBSbatAKIFM013.PRCKNS_KEI_STAT_NM, 				this.tmpPrcknsKeiStatMap.get(inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PRCKNS_KEI_STAT_CD)));

		// 請求パターンコード
		outMap.set(JBSbatAKIFM013.SEIKY_PTN_CD, 					inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SEIKY_PTN_CD));

		// サービス詳細識別番号
		outMap.set(JBSbatAKIFM013.SVC_DTL_SKBT_NO, 					inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SVC_DTL_SKBT_NO));
		
		// 料金項目コード
		outMap.set(JBSbatAKIFM013.PRC_KMK_CD, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PRC_KMK_CD));
		// 料金項目名称
		// 料金項目コードマップより取得した名称を設定
		outMap.set(JBSbatAKIFM013.PRC_KMK_NM,						this.tmpPrcKmkMap.get(makeStr(inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PRC_GRP_CD)
																								, inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PCRS_CD)
																								, inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PRC_SVC_CD)
																								, inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PRC_KMK_CD))));

		// 想定金額
		outMap.set(JBSbatAKIFM013.SOTEI_AMNT, 						inMap.getBigDecimal(JBSbatAK_T_SEIKY_PTN_KNSKK.SOTEI_AMNT));
		// 金額
		outMap.set(JBSbatAKIFM013.AMNT, 							inMap.getBigDecimal(JBSbatAK_T_SEIKY_PTN_KNSKK.AMNT));
		// 比較検証差額
		outMap.set(JBSbatAKIFM013.HIKAKU_KNSHO_SAGAKU, 				inMap.getBigDecimal(JBSbatAK_T_SEIKY_PTN_KNSKK.HIKAKU_KNSHO_SAGAKU));
		// 調査検証合計金額
		outMap.set(JBSbatAKIFM013.CHOSAKNS_GOKEI_AMNT, 				inMap.getBigDecimal(JBSbatAK_T_SEIKY_PTN_KNSKK.CHOSAKNS_GOKEI_AMNT));

		// 存在比較結果コード
		// 存在比較結果コードマップより取得した名称を設定
		outMap.set(JBSbatAKIFM013.SONZAI_HIKAKU_RSLT_CD,			this.tmpSonzaiHikakuRlMap.get(inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SONZAI_HIKAKU_RSLT_CD)));

		// 存在チェックレベルコード名称
		// 存在チェックレベルコードマップより取得した名称を設定
		outMap.set(JBSbatAKIFM013.SONZAI_CHK_LV_NM,					this.tmpSonzaiChkLvMap.get(inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SONZAI_CHK_LV_CD)));

		// 存在チェック結果コード
		outMap.set(JBSbatAKIFM013.SONZAI_CHK_RSLT_CD, 				inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SONZAI_CHK_RSLT_CD));

		// 金額比較結果コード
		// 金額比較結果コードマップより取得した名称を設定
		outMap.set(JBSbatAKIFM013.AMNT_HIKAKU_RSLT_CD,				this.tmpAmntHikakuRsltMap.get(inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.AMNT_HIKAKU_RSLT_CD)));

		// 金額チェックレベルコード名称
		// 金額チェックレベルコードマップより取得した名称を設定
		outMap.set(JBSbatAKIFM013.AMNT_CHK_LV_NM,					this.tmpAmntChkLvMap.get(inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.AMNT_CHK_LV_CD)));

		// 金額チェック結果コード
		outMap.set(JBSbatAKIFM013.AMNT_CHK_RSLT_CD, 				inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.AMNT_CHK_RSLT_CD));

		// 請求パターン検証エラーレベルコード
		outMap.set(JBSbatAKIFM013.SEIKY_PTN_KNSHO_ERR_LV_CD, 		inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SEIKY_PTN_KNSHO_ERR_LV_CD));
		// 請求パターン検証エラーレベル名称
		// 請求パターン検証エラーレベルマップより取得した名称を設定
		outMap.set(JBSbatAKIFM013.SEIKY_PTN_KNSHO_ERR_LV_NM,		this.tmpSeikyPtKnsErrMap.get(inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SEIKY_PTN_KNSHO_ERR_LV_CD)));

		// 調査検証結果補足
		String tmpChosaknsRlstHsk = inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.CHOSAKNS_RSLT_HSK);
		if (tmpChosaknsRlstHsk != null)
		{
			// 調査検証結果補足が設定されている場合、そのまま設定する。
			outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_HSK, 			tmpChosaknsRlstHsk);
		}
		else
		{
			// 比較に用いる値を取得する。
			String tmpSonzaiChkRsltCd = inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SONZAI_CHK_RSLT_CD);
			String tmpAmntChkRsltCd = inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.AMNT_CHK_RSLT_CD);
			
			// 存在チェック結果と金額チェック結果の値により調査検証結果補足の設定を行う。
			if (tmpSonzaiChkRsltCd.equals(JACStrConst.KNSHO_RSLT_NG)
				|| tmpSonzaiChkRsltCd.equals(JACStrConst.KNSHO_RSLT_WRN))
			{
				// 存在チェック結果 ＝ "2"(NG) または "1"(WRN)の場合、空文字を設定する。
				outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_HSK, 		JACStrConst.KARA_MOJI);
			}
			else if(tmpSonzaiChkRsltCd.equals(JACStrConst.KNSHO_RSLT_OK)
					&& tmpAmntChkRsltCd.equals(JACStrConst.KNSHO_RSLT_WRN))
			{
				// 存在チェック結果 ＝ "0"(OK) かつ 金額チェック結果 ＝ "1"(WRN) の場合、空文字を設定する。
				outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_HSK, 		JACStrConst.KARA_MOJI);
			}
			else if(tmpSonzaiChkRsltCd.equals(JACStrConst.KNSHO_RSLT_OK)
					&& tmpAmntChkRsltCd.equals(JACStrConst.KNSHO_RSLT_NG))
			{
				// 存在チェック結果 ＝ "0"(OK) かつ 金額チェック結果 ＝ "2"(NG) の場合
				String tmpPrcknsPrcKmkTypeNm = this.tmpPrcknsPrcKmkTpMap.get(inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PRCKNS_PRC_KMK_TYPE_CD));
				if (tmpPrcknsPrcKmkTypeNm != null)
				{
					// マップより取得した名称 ＋ 調査検証結果補足固定文字 を設定 
					outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_HSK, 	makeStr(tmpPrcknsPrcKmkTypeNm, CHOSAKNS_RSLT_HSK_KOTEI));
				}
				else
				{
					// 調査検証結果補足固定文字 を設定
					outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_HSK, 	CHOSAKNS_RSLT_HSK_KOTEI);
				}
			}
			
		}
		// 調査検証結果（１Ｎ割引適用対象）
		outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_1N_WRBAPL_TG, 		inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.CHOSAKNS_RSLT_1N_WRBAPL_TG));
		// 調査検証結果（請求書発行手数料）
		outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_SKS_HAK_CMS, 		inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.CHOSAKNS_RSLT_SKS_HAK_CMS));
		// 調査検証結果（外部料金パターン外）
		outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_OUTPRCPTNOT, 		inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.CHOSAKNS_RSLT_OUTPRCPTNOT));
		// 調査検証結果（外部料金パターン内）
		outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_OUTPRCPTNIN, 		inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.CHOSAKNS_RSLT_OUTPRCPTNIN));
		// 調査検証結果（通話料金）
		outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_TUWA_PRC, 			inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.CHOSAKNS_RSLT_TUWA_PRC));
		// 調査検証結果（パケット料金）
		outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_PCT_PRC, 			inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.CHOSAKNS_RSLT_PCT_PRC));
		// 調査検証結果（ＦＴＴＨ通信料金）
		outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_FTTH_TSPRC, 		inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.CHOSAKNS_RSLT_FTTH_TSPRC));
		// 調査検証結果（投入一時金）
		outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_TONYU_ICJKN, 		inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.CHOSAKNS_RSLT_TONYU_ICJKN));
		// 調査検証結果（調整金）
		outMap.set(JBSbatAKIFM013.CHOSAKNS_RSLT_ADJ_PRC, 			inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.CHOSAKNS_RSLT_ADJ_PRC));
		// サービス開始年月日
		outMap.set(JBSbatAKIFM013.SVC_STA_YMD, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SVC_STA_YMD));
		// サービス終了年月日
		outMap.set(JBSbatAKIFM013.SVC_ENDYMD, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SVC_ENDYMD));
		// サービス課金開始年月日
		outMap.set(JBSbatAKIFM013.SVC_CHRG_STAYMD, 					inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SVC_CHRG_STAYMD));
		// サービス課金終了年月日
		outMap.set(JBSbatAKIFM013.SVC_CHRG_ENDYMD, 					inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SVC_CHRG_ENDYMD));
		// プラン開始年月日
		outMap.set(JBSbatAKIFM013.PLAN_STAYMD, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PLAN_STAYMD));
		// プラン終了年月日
		outMap.set(JBSbatAKIFM013.PLAN_ENDYMD, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PLAN_ENDYMD));
		// プラン課金開始年月日
		outMap.set(JBSbatAKIFM013.PLAN_CHRG_STAYMD, 				inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PLAN_CHRG_STAYMD));
		// プラン課金終了年月日
		outMap.set(JBSbatAKIFM013.PLAN_CHRG_ENDYMD, 				inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PLAN_CHRG_ENDYMD));
		// プラン終了種別コード
		outMap.set(JBSbatAKIFM013.PLAN_END_SBT_CD, 					inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PLAN_END_SBT_CD));
		// 違約金発生コード
		outMap.set(JBSbatAKIFM013.PNLTY_HASSEI_CD, 					inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.PNLTY_HASSEI_CD));
		// サービス解約年月日
		outMap.set(JBSbatAKIFM013.SVC_DSL_YMD, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SVC_DSL_YMD));
		// サービス解約理由コード
		outMap.set(JBSbatAKIFM013.SVC_DLRE_CD, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SVC_DLRE_CD));
		// サービス休止課金開始年月日
		outMap.set(JBSbatAKIFM013.SVC_PAUSE_CHRG_STA_YMD, 			inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SVC_PAUSE_CHRG_STA_YMD));
		// サービス休止解除年月日
		outMap.set(JBSbatAKIFM013.SVC_PAUSE_RLS_YMD, 				inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.SVC_PAUSE_RLS_YMD));
		// 回復年月日
		outMap.set(JBSbatAKIFM013.KAIHK_YMD, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.KAIHK_YMD));
		// マンションＩＤ
		outMap.set(JBSbatAKIFM013.MANSION_ID, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.MANSION_ID));
		// 提供方式契約番号
		outMap.set(JBSbatAKIFM013.TK_HOSHIKI_KEI_NO, 				inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.TK_HOSHIKI_KEI_NO));
		// 加入契約支払方式コード
		outMap.set(JBSbatAKIFM013.KANYU_KEI_PAY_HOSHIKI_CD, 		inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.KANYU_KEI_PAY_HOSHIKI_CD));
		// 利用年月
		outMap.set(JBSbatAKIFM013.USE_YM, 							inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.USE_YM));
		// 利用開始年月日
		outMap.set(JBSbatAKIFM013.USE_STAYMD, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.USE_STAYMD));
		// 利用終了年月日
		outMap.set(JBSbatAKIFM013.USE_ENDYMD, 						inMap.getString(JBSbatAK_T_SEIKY_PTN_KNSKK.USE_ENDYMD));
		
		outMap.setOutFlg(true);
		
		// 出力処理
		outputInItem.addOutMapList(outMap);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputInfo][outputItem = " + outMap.getMap().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputInfo]");
		return;
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/

	/**
	 * SQLKEY(AK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	コード種別コード
	 *		 	コード適用開始年月日
	 *		 	コード適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_CD_NM_KANRI_AK_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());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_AK_SELECT_002);
	}

	/**
	 * SQLKEY(AK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	料金項目名称種別コード
	 *		 	料金項目出力名称適用開始年月日
	 *		 	料金項目出力名称適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_M_PRC_KMK_OPUT_NM_AK_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());

		// DBアクセスを実行します
		db_CH_M_PRC_KMK_OPUT_NM.selectBySqlDefine(paramList, CH_M_PRC_KMK_OPUT_NM_AK_SELECT_002);
	}

	/**
	 * SQLKEY(AK_SELECT_001)で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_M_PCRS_AK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_M_PCRS.selectBySqlDefine(paramList, KK_M_PCRS_AK_SELECT_001);
	}

	/**
	 * SQLKEY(AK_SELECT_001)で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_M_PPLAN_AK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_M_PPLAN.selectBySqlDefine(paramList, KK_M_PPLAN_AK_SELECT_001);
	}

	/**
	 * SQLKEY(AK_SELECT_001)で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_M_WRIB_SVC_TANKA_AK_SELECT_001(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_M_WRIB_SVC_TANKA.selectBySqlDefine(paramList, KK_M_WRIB_SVC_TANKA_AK_SELECT_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * ファイル出力
	 * 
	 * @param defFileName 定義ファイル名
	 * @param outFilePath 出力ファイルパス
	 * @throws Exception スローされる例外
	 */
	private void outputFile(String defFileName, String outFilePath) throws Exception
	{
		String outFileDefPath = JBSbatAplConst.getAplConstValue(PARAM_OTD) + defFileName;
		
		JBSbatOutputFileUtil dataFile = new JBSbatOutputFileUtil(outFilePath);
		JBSbatDefFileUtil dataFileDef = new JBSbatDefFileUtil(outFileDefPath, dataFile);
		
		// encodeの形式がSHIFT-JISの場合、MS932に変換
		String encode = dataFile.getEncode();
		if (JACStrConst.ENCODE_SJIS.toUpperCase().equals(encode.toUpperCase()))
		{
			encode = JACStrConst.ENCODE_MS932;
		}
		
		// ファイルの生成
		JBSbatBusinessFileUtil fileUtil = JCCBatCommon.createBusinessFileUtil(outFilePath, encode, JACBatCommon.chgKaigyo(dataFile.getLine()), dataFileDef.getDelimiter());
		
		// ファイルに書き込み
		JCCBatCommon.printBusinessFileUtil(fileUtil, super.opeDate);
		
		// ファイルを閉じる
		JCCBatCommon.closeBusinessFileUtil(fileUtil);
	}
}
