/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKWribSvTmpPayPrcMatch
*	ソースファイル名	：JBSbatKKWribSvTmpPayPrcMatch.java
*	作成者				：富士通　
*	作成日				：2013年06月18日
*＜機能概要＞
*　従量分サービス契約内訳情報削除
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v5.00.00	2013/06/01	FJ)			新規作成
*   v7.00.00    2013/12/13  FJ)上田     【ANK-1578-00-00】多機能ルーター(機器追加)
*   v27.00.00   2016/11/10  FJ)星野     【OM-2016-0002247】プレクラ多機能RT事務手数料CPが未適用
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.rule.common.JRuleXMLHandler;
import com.fujitsu.futurity.rule.xml.compare.JRuleXMLPattern;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM019;
import eo.business.util.file.JBSbatKKIFM505;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.business.common.JCCBatCommon;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKWribSvTmpPayPrcMatch extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/

	/** 提供方式パターンコード（VDSL1）*/
	private static final String TK_HOSHIKI_PATTERN_CD_31 = "31";
	/** 提供方式パターンコード（VDSL2）*/
	private static final String TK_HOSHIKI_PATTERN_CD_32 = "32";
	/** 提供方式パターンコード（VDSL3）*/
	private static final String TK_HOSHIKI_PATTERN_CD_33 = "33";
	/** 提供方式パターンコード（VDSL4）*/
	private static final String TK_HOSHIKI_PATTERN_CD_34 = "34";
	/** 提供方式パターンコード（VDSL5）*/
	private static final String TK_HOSHIKI_PATTERN_CD_35 = "35";
	/** 提供方式パターンコード（イーサネット）*/
	private static final String TK_HOSHIKI_PATTERN_CD_10 = "10";

	/** 提供料金種別コード（旧VDSL-S方式）*/
	private static final String TK_PRC_SBT_CD_001 = "001";
	/** 提供料金種別コード（VDSL-S方式）*/
	private static final String TK_PRC_SBT_CD_002 = "002";

	/** 異動区分（新規申込）*/
	private static final String IDO_DIV_00001 = "00001";
	/** 申込料金グループコード（マンションタイプeo光ネット）*/
	private static final String MSKM_PRC_GRP_CD_04 = "04";
	/** マンション識別有無（有）*/
	private static final String MANS_SKB_UM_1 = "1";
	/** 提供方式（VDSL）*/
	private static final String TK_HOSHIKI_0 = "0";
	/** 提供方式（イーサネット）*/
	private static final String TK_HOSHIKI_1 = "1";
	/** 提供料金種別コード（VDSL-S）*/
	private static final String TK_PRC_SBT_CD_0 = "0";
	/** 提供料金種別コード（VDSL-S以外）*/
	private static final String TK_PRC_SBT_CD_1 = "1";
	/** モデムレンタル区分（買取）*/

	/** 項目名（異動区分）*/
	private static final String IDO_DIV = "IDO_DIV";
	/** 項目名（申込料金グループコード）*/
	private static final String MSKM_PRC_GRP_CD = "MSKM_PRC_GRP_CD";
	/** 項目名（マンション識別有無）*/
	private static final String MANS_SKB_UM = "MANS_SKB_UM";
	/** 項目名（提供方式）*/
	private static final String TK_HOSHIKI = "TK_HOSHIKI";
	/** 項目名（提供料金種別コード）*/
	private static final String TK_PRC_SBT_CD = "TK_PRC_SBT_CD";
	/** 項目名（モデムレンタル区分）*/
	private static final String MODEM_RENTAL_KBN = "MODEM_RENTAL_KBN";
	/** 項目名（一時支払料金番号）*/
	private static final String TMP_PAY_PRC_NO = "TMP_PAY_PRC_NO";
	/** ルールID（相関チェック）*/
	private static final String RULE_ID = "RULE0059001";
	/** 一時支払料金番号（イーサネット以外）*/
	private static final String NOT_ISA = "010050016011";

	/** 料金グループコード*/
	private static final String PRC_GRP_CD_04 = "04";
	/** 提供方式コード*/
	private static final String TK_HOSHIKI_CD_007 = "007";
	/** 提供方式コード*/
	private static final String TK_HOSHIKI_CD_008 = "008";
	
//	/** 一時支払料金番号（ＶＤＳＬ）*/
//	private String WK_TMP_PAY_PRC_AMNT = "";
	/** 一時支払料金番号 */
	private String WK_TMP_PAY_PRC_AMNT_1 = "";
	private String WK_TMP_PAY_PRC_AMNT_2 = "";
	/** 一時支払料金番号（コース変更）*/
	private String WK_TMP_PAY_PRC_COSE_1 = "";
	private String WK_TMP_PAY_PRC_COSE_2 = "";
	private String WK_TMP_PAY_PRC_COSE_3 = "";
	/** 一時支払料金番号（お客様情報変更）*/
	private String WK_TMP_PAY_PRC_OKAK = "";
	// ++++++++++ v27.00.00 追加開始 ++++++++++ //
	/** 一時支払料金番号（キャンペーン適用判定用ダミー値）*/
	private List<String> wkTmpPayPrcDummyList = new ArrayList<String>();
	// ++++++++++ v27.00.00 追加終了 ++++++++++ //
	
	/** 異動区分（コース変更）*/
	private static final String IDO_DIV_00009 = "00009";
	/** 工事有無（なし）*/
	private static final String KOJI_UM_0 = "0";
	/** 工事有無（あり）*/
	private static final String KOJI_UM_1 = "1";
	/** 項目名（工事有無）*/
	private static final String KOJI_UM = "KOJI_UM";
	
	/** 異動区分（お客様情報変更）*/
	private static final String IDO_DIV_00012 = "00012";
	
	// ++++++++++ v27.00.00 追加開始 ++++++++++ //
	/** 異動区分（キャンペーン適用判定用ダミー値）*/
	private static final String IDO_DIV_99999 = "99999";
	// ++++++++++ v27.00.00 追加終了 ++++++++++ //

	/** 異動理由（契約譲渡（有料））*/
	private static final String IDO_RSN_CD_N0 = "N0";
	/** 項目名（異動理由）*/
	private static final String IDO_RSN_CD = "IDO_RSN_CD";
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
	
		// 事務手数料判定ルールより一時支払料金番号を取得（コース変更）
		this.set_TMPPAYNO_COSE();
		
		// 事務手数料判定ルールより一時支払料金番号を取得（お客様情報変更）
		this.set_TMPPAYNO_OKAK();
		
		// ++++++++++ v27.00.00 追加開始 ++++++++++ //
		// 事務手数料判定ルールより一時支払料金番号を取得（キャンペーン適用判定用ダミー値）
		this.set_TMPPAYNO_DUMMY();
		// ++++++++++ v27.00.00 追加終了 ++++++++++ //
		
		/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}
	
	 /* 一時支払料金番号を取得（コース変更）
	 * 
	 * @throws Exception 
	 */
	private void set_TMPPAYNO_COSE() throws Exception
	{
		// 工事有無（なし）
		// 相関ルール用マップを生成
		HashMap<String, Object> map1 = new HashMap<String, Object>();
		map1.put(IDO_DIV, IDO_DIV_00009);
		map1.put(MSKM_PRC_GRP_CD, MSKM_PRC_GRP_CD_04);
		map1.put(KOJI_UM, KOJI_UM_0);
		
		super.logPrint.printDebugLog("map1      =" + map1);
		
		// 相関ルールハンドラを生成
		JRuleXMLHandler xmlHandler1 = JCCBatCommon.createSokanRuleEngine(RULE_ID, JRuleXMLPattern.MULTI_MODE_TYPE);
		// 相関ルールから一時金支払料金番号を取得
		ArrayList<ArrayList<HashMap<String, Object>>> checkList1 = JCCBatCommon.getCheckResultArray(xmlHandler1, map1);
		if (checkList1.get(0) != null)
		{
			// 一時支払料金番号を設定
			WK_TMP_PAY_PRC_COSE_1 = (String)checkList1.get(0).get(0).get(TMP_PAY_PRC_NO);
			super.logPrint.printDebugLog("WK_TMP_PAY_PRC_COSE_1=" + WK_TMP_PAY_PRC_COSE_1);
		}
		
		// 工事有無（あり）
		// 相関ルール用マップを生成
		HashMap<String, Object> map2 = new HashMap<String, Object>();
		map2.put(IDO_DIV, IDO_DIV_00009);
		map2.put(MSKM_PRC_GRP_CD, MSKM_PRC_GRP_CD_04);
		map2.put(KOJI_UM, KOJI_UM_1);
		
		super.logPrint.printDebugLog("map2      =" + map2);
		
		// 相関ルールハンドラを生成
		JRuleXMLHandler xmlHandler2 = JCCBatCommon.createSokanRuleEngine(RULE_ID, JRuleXMLPattern.MULTI_MODE_TYPE);
		// 相関ルールから一時金支払料金番号を取得
		ArrayList<ArrayList<HashMap<String, Object>>> checkList2 = JCCBatCommon.getCheckResultArray(xmlHandler2, map2);
		if (checkList2.get(0) != null)
		{
			// 一時支払料金番号を設定
			WK_TMP_PAY_PRC_COSE_2 = (String)checkList2.get(0).get(0).get(TMP_PAY_PRC_NO);
			super.logPrint.printDebugLog("WK_TMP_PAY_PRC_COSE_2=" + WK_TMP_PAY_PRC_COSE_2);
		}
		
		// 工事有無（その他）
		// 相関ルール用マップを生成
		HashMap<String, Object> map3 = new HashMap<String, Object>();
		map3.put(IDO_DIV, IDO_DIV_00009);
		map3.put(MSKM_PRC_GRP_CD, MSKM_PRC_GRP_CD_04);
		
		super.logPrint.printDebugLog("map3      =" + map3);
		
		// 相関ルールハンドラを生成
		JRuleXMLHandler xmlHandler3 = JCCBatCommon.createSokanRuleEngine(RULE_ID, JRuleXMLPattern.MULTI_MODE_TYPE);
		// 相関ルールから一時金支払料金番号を取得
		ArrayList<ArrayList<HashMap<String, Object>>> checkList3 = JCCBatCommon.getCheckResultArray(xmlHandler3, map3);
		if (checkList3.get(0) != null)
		{
			// 一時支払料金番号を設定
			WK_TMP_PAY_PRC_COSE_3 = (String)checkList3.get(0).get(0).get(TMP_PAY_PRC_NO);
			super.logPrint.printDebugLog("WK_TMP_PAY_PRC_COSE_3=" + WK_TMP_PAY_PRC_COSE_3);
		}
		
	}

	 /* 一時支払料金番号を取得（お客様情報変更）
	 * 
	 * @throws Exception 
	 */
	private void set_TMPPAYNO_OKAK() throws Exception
	{
		
		// 相関ルール用マップを生成
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put(IDO_DIV, IDO_DIV_00012);
		map.put(MSKM_PRC_GRP_CD, MSKM_PRC_GRP_CD_04);
		map.put(IDO_RSN_CD, IDO_RSN_CD_N0);
		
		
		super.logPrint.printDebugLog("map       =" + map);
		
		// 相関ルールハンドラを生成
		JRuleXMLHandler xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID, JRuleXMLPattern.MULTI_MODE_TYPE);
		// 相関ルールから一時金支払料金番号を取得
		ArrayList<ArrayList<HashMap<String, Object>>> checkList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
		if (checkList.get(0) != null)
		{
			// 一時支払料金番号を設定
			WK_TMP_PAY_PRC_OKAK = (String)checkList.get(0).get(0).get(TMP_PAY_PRC_NO);
			super.logPrint.printDebugLog("WK_TMP_PAY_PRC_OKAK=" + WK_TMP_PAY_PRC_OKAK);
			
		}
		
	}
	
	// ++++++++++ v27.00.00 追加開始 ++++++++++ //
	 /** 一時支払料金番号を取得（キャンペーン適用判定用ダミー値）
	 * 
	 * @throws Exception 
	 */
	private void set_TMPPAYNO_DUMMY() throws Exception
	{
		
		// 相関ルール用マップを生成
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put(IDO_DIV, IDO_DIV_99999);
		map.put(MSKM_PRC_GRP_CD, MSKM_PRC_GRP_CD_04);
		
		
		super.logPrint.printDebugLog("map       =" + map);
		
		// 相関ルールハンドラを生成
		JRuleXMLHandler xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID, JRuleXMLPattern.MULTI_MODE_TYPE);
		// 相関ルールから一時金支払料金番号を取得
		ArrayList<ArrayList<HashMap<String, Object>>> checkList = JCCBatCommon.getCheckResultArray(xmlHandler, map);

		ArrayList<HashMap<String, Object>> resultList = checkList.get(0);
		if (resultList != null)
		{
			for(HashMap<String, Object> result : resultList)
			{
				String wkTmpPayPrcNoDummy = (String)result.get(TMP_PAY_PRC_NO);

				// 一時支払料金番号を設定
				wkTmpPayPrcDummyList.add( wkTmpPayPrcNoDummy );
				super.logPrint.printDebugLog("WK_TMP_PAY_PRC_DUMMY=" + wkTmpPayPrcNoDummy);
			}
		}
	}
	// ++++++++++ v27.00.00 追加終了 ++++++++++ //

	
	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		// 入力ファイルに異常があった場合
		if(inMap.isInputErrorFlg())
		{
			return null;
		}
		
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
		String tmp_pay_no = inMap.getString(JBSbatKKIFM505.TMP_PAY_PRC_AMNT);
		
		if(rulechk(inMap))
		{
			// 事務手数料判定が対象外の場合、無条件で出力
			JBSbatServiceInterfaceMap outmap = setOutputData(inMap);
			outmap.setOutFlg(true);
			outputItem.addOutMapList(outmap);
			return outputItem;
		}
		
		// 事務手数料判定ルールより一時支払料金番号を取得（新規申込）
		this.set_TMPPAYNO(inMap, tmp_pay_no);
		
		// 提供方式パターンコード（イーサネットの場合）
//		String tkhoshikipatcd = inMap.getString(JBSbatKKIFM505.TK_HOSHIKI_PATTERN_CD);
//		if(tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_10))
//		{
			if(tmp_pay_no.equals(WK_TMP_PAY_PRC_AMNT_1) || tmp_pay_no.equals(WK_TMP_PAY_PRC_AMNT_2) ||
				tmp_pay_no.equals(WK_TMP_PAY_PRC_COSE_1) || tmp_pay_no.equals(WK_TMP_PAY_PRC_COSE_2) ||
				tmp_pay_no.equals(WK_TMP_PAY_PRC_COSE_3) || tmp_pay_no.equals(WK_TMP_PAY_PRC_OKAK)
				// ++++++++++ v27.00.00 追加開始 ++++++++++ //
				|| wkTmpPayPrcDummyList.contains(tmp_pay_no)
				// ++++++++++ v27.00.00 追加終了 ++++++++++ //
			){
				// 一時支払料金番号がマッチした場合は、データを出力する。以外はＯＭＩＴ
				JBSbatServiceInterfaceMap outmap = setOutputData(inMap);
				outmap.setOutFlg(true);
				outputItem.addOutMapList(outmap);
			}
//		}
//		else
//		{
//			if(tmp_pay_no.equals(WK_TMP_PAY_PRC_AMNT) || 
//				tmp_pay_no.equals(WK_TMP_PAY_PRC_COSE_1) || tmp_pay_no.equals(WK_TMP_PAY_PRC_COSE_2) ||
//				tmp_pay_no.equals(WK_TMP_PAY_PRC_COSE_3) || tmp_pay_no.equals(WK_TMP_PAY_PRC_OKAK))
//			{
//				// 一時支払料金番号がマッチした場合は、データを出力する。以外はＯＭＩＴ
//				JBSbatServiceInterfaceMap outmap = setOutputData(inMap);
//				outmap.setOutFlg(true);
//				outputItem.addOutMapList(outmap);
//			}
//		}
		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
	
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 出力用インターフェイスマップ設定処理
	 * 
	 * @oaram ouMap 出力対象の出力データ
	 * @param outputItem 出力データ格納クラス
	 */
	private JBSbatServiceInterfaceMap setOutputData(JBSbatServiceInterfaceMap inMap)
	throws Exception
	{
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		outmap.setString(JBSbatKKIFM019.CHSHT_KEI_DIV, inMap.getString(JBSbatKKIFM505.CHSHT_KEI_DIV));        // 抽出契約区分
		outmap.setString(JBSbatKKIFM019.SVC_KEI_NO, inMap.getString(JBSbatKKIFM505.SVC_KEI_NO));              // サービス契約番号
		outmap.setString(JBSbatKKIFM019.SVC_CD, inMap.getString(JBSbatKKIFM505.SVC_CD));                      // サービスコード
		outmap.setString(JBSbatKKIFM019.PRC_GRP_CD, inMap.getString(JBSbatKKIFM505.PRC_GRP_CD));              // 料金グループコード
		outmap.setString(JBSbatKKIFM019.PCRS_CD, inMap.getString(JBSbatKKIFM505.PCRS_CD));                    // 料金コースコード
		outmap.setString(JBSbatKKIFM019.PPLAN_CD, inMap.getString(JBSbatKKIFM505.PPLAN_CD));                  // 料金プランコード
		outmap.setString(JBSbatKKIFM019.TRGT_KEI_SVC_CD, inMap.getString(JBSbatKKIFM505.TRGT_KEI_SVC_CD));    // 対象契約サービスコード
		outmap.setString(JBSbatKKIFM019.SVC_KEI_UCWK_NO, inMap.getString(JBSbatKKIFM505.SVC_KEI_UCWK_NO));    // サービス契約内訳番号
		outmap.setString(JBSbatKKIFM019.KKTK_SVC_KEI_NO, inMap.getString(JBSbatKKIFM505.KKTK_SVC_KEI_NO));    // 機器提供サービス契約番号
		outmap.setString(JBSbatKKIFM019.OP_SVC_KEI_NO, inMap.getString(JBSbatKKIFM505.OP_SVC_KEI_NO));        // オプションサービス契約番号
		outmap.setString(JBSbatKKIFM019.SEIOPSVC_KEI_NO, inMap.getString(JBSbatKKIFM505.SEIOPSVC_KEI_NO));    // 請求オプションサービス契約番号
		outmap.setString(JBSbatKKIFM019.SBOP_SVC_KEI_NO, inMap.getString(JBSbatKKIFM505.SBOP_SVC_KEI_NO));    // サブオプションサービス契約番号
		outmap.setString(JBSbatKKIFM019.WRIB_SVC_KEI_NO, inMap.getString(JBSbatKKIFM505.WRIB_SVC_KEI_NO));    // 割引サービス契約番号
		outmap.setString(JBSbatKKIFM019.WRIB_SVC_TRGT_KEI_NO, inMap.getString(JBSbatKKIFM505.WRIB_SVC_TRGT_KEI_NO));    // 割引サービス対象契約番号
		outmap.setString(JBSbatKKIFM019.WRIB_SVC_TANKA_NO, inMap.getString(JBSbatKKIFM505.WRIB_SVC_TANKA_NO));          // 割引サービス単価番号
		outmap.setString(JBSbatKKIFM019.OWNR_KEI_NO, inMap.getString(JBSbatKKIFM505.OWNR_KEI_NO));                      // オーナー契約番号
		outmap.setString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO, inMap.getString(JBSbatKKIFM505.TK_HOSHIKI_KEI_NO));          // 提供方式契約番号
		outmap.setString(JBSbatKKIFM019.SEIKY_KEI_NO, inMap.getString(JBSbatKKIFM505.SEIKY_KEI_NO));                    // 請求契約番号
		outmap.setString(JBSbatKKIFM019.SVC_STAYMD, inMap.getString(JBSbatKKIFM505.SVC_STAYMD));                        // サービス開始年月日
		outmap.setString(JBSbatKKIFM019.SVC_CHRG_STAYMD, inMap.getString(JBSbatKKIFM505.SVC_CHRG_STAYMD));              // サービス課金開始年月日
		outmap.setString(JBSbatKKIFM019.PLAN_STAYMD, inMap.getString(JBSbatKKIFM505.PLAN_STAYMD));                      // プラン課金開始年月日
		outmap.setString(JBSbatKKIFM019.PLAN_ENDYMD, inMap.getString(JBSbatKKIFM505.PLAN_ENDYMD));                      // プラン課金終了年月日
		outmap.setString(JBSbatKKIFM019.SVC_DSL_YMD, inMap.getString(JBSbatKKIFM505.SVC_DSL_YMD));                      // サービス解約年月日
		outmap.setString(JBSbatKKIFM019.SVC_DLRE_CD, inMap.getString(JBSbatKKIFM505.SVC_DLRE_CD));                      // サービス解約理由
		outmap.setString(JBSbatKKIFM019.PNLTY_HASSEI_CD, inMap.getString(JBSbatKKIFM505.PNLTY_HASSEI_CD));              // 違約金発生コード
		outmap.setString(JBSbatKKIFM019.PLAN_END_SBT_CD, inMap.getString(JBSbatKKIFM505.PLAN_END_SBT_CD));              // プラン終了種別コード
		outmap.setString(JBSbatKKIFM019.KAIHK_YMD, inMap.getString(JBSbatKKIFM505.KAIHK_YMD));                          // サービス回復年月日
		outmap.setString(JBSbatKKIFM019.PAUSE_STP_CD, inMap.getString(JBSbatKKIFM505.PAUSE_STP_CD));                    // 休止中断コード
		outmap.setString(JBSbatKKIFM019.SVC_PAUSE_YMD, inMap.getString(JBSbatKKIFM505.SVC_PAUSE_YMD));                  // サービス休止年月日
		outmap.setString(JBSbatKKIFM019.SVC_PAUSE_PRC_TSTAYMD, inMap.getString(JBSbatKKIFM505.SVC_PAUSE_PRC_TSTAYMD));  // サービス休止料金適用開始年月日
		outmap.setString(JBSbatKKIFM019.SVC_PAUSE_RLS_YMD, inMap.getString(JBSbatKKIFM505.SVC_PAUSE_RLS_YMD));          // サービス休止解除年月日
		outmap.setString(JBSbatKKIFM019.SVC_CANCEL_YMD, inMap.getString(JBSbatKKIFM505.SVC_CANCEL_YMD));                // サービスキャンセル年月日
		outmap.setString(JBSbatKKIFM019.SVC_ENDYMD, inMap.getString(JBSbatKKIFM505.SVC_ENDYMD));                        // サービス終了年月日
		outmap.setString(JBSbatKKIFM019.SVC_CHRG_ENDYMD, inMap.getString(JBSbatKKIFM505.SVC_CHRG_ENDYMD));              // サービス課金終了年月日
		outmap.setString(JBSbatKKIFM019.IDO_DIV, inMap.getString(JBSbatKKIFM505.IDO_DIV));                              // 異動区分
		outmap.setString(JBSbatKKIFM019.TELNO, inMap.getString(JBSbatKKIFM505.TELNO));                                  // 電話番号
		outmap.setString(JBSbatKKIFM019.JIGYOSHA_KEI_ID, inMap.getString(JBSbatKKIFM505.JIGYOSHA_KEI_ID));              // 事業者用契約ＩＤ
		outmap.setString(JBSbatKKIFM019.KEI_CNT, inMap.getBigDecimal(JBSbatKKIFM505.KEI_CNT));                              // 契約数
		outmap.setString(JBSbatKKIFM019.CAPA, inMap.getString(JBSbatKKIFM505.CAPA));                                    // 容量
		outmap.setString(JBSbatKKIFM019.TEIZO_KMK_DIV, inMap.getString(JBSbatKKIFM505.TEIZO_KMK_DIV));                  // 逓増料金項目区分
		outmap.setString(JBSbatKKIFM019.MON_MAX_KEI_CNT, inMap.getBigDecimal(JBSbatKKIFM505.MON_MAX_KEI_CNT));              // 月中最大契約数
		outmap.setString(JBSbatKKIFM019.GUN_CD, inMap.getString(JBSbatKKIFM505.GUN_CD));                                // 群コード
		outmap.setString(JBSbatKKIFM019.USE_FAIL_STAYMD, inMap.getString(JBSbatKKIFM505.USE_FAIL_STAYMD));              // 利用不可開始年月日
		outmap.setString(JBSbatKKIFM019.USE_FAIL_ENDYMD, inMap.getString(JBSbatKKIFM505.USE_FAIL_ENDYMD));              // 利用不可終了年月日
		outmap.setString(JBSbatKKIFM019.SEIRI_NO, inMap.getString(JBSbatKKIFM505.SEIRI_NO));                            // 整理番号
		outmap.setString(JBSbatKKIFM019.UPD_UNYO_YMD, inMap.getString(JBSbatKKIFM505.UPD_UNYO_YMD));                    // 更新運用年月日
		outmap.setString(JBSbatKKIFM019.GENE_ADD_DTM, inMap.getString(JBSbatKKIFM505.GENE_ADD_DTM));                    // 世代登録年月日時分秒
		outmap.setString(JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD, inMap.getString(JBSbatKKIFM505.SVCKEI_SVC_CHRG_STAYMD));    // サービス契約・サービス課金開始年月日
		outmap.setString(JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD, inMap.getString(JBSbatKKIFM505.SVCKEI_SVC_CHRG_ENDYMD));    // サービス契約・サービス課金終了年月日
		outmap.setString(JBSbatKKIFM019.OYA_KEI_SKBT_CD, inMap.getString(JBSbatKKIFM505.OYA_KEI_SKBT_CD));                  // 親契約識別コード
		// ++++++++++ v7.00.00 追加開始 ++++++++++ //
		outmap.setString(JBSbatKKIFM019.KKOP_SVC_KEI_NO, inMap.getString(JBSbatKKIFM505.KKOP_SVC_KEI_NO));                  // 機器オプションサービス契約番号
		// ++++++++++ v7.00.00 追加終了 ++++++++++ //
		return outmap;
	}
	
	/**
	 * <dd>メソッド名	：事務手数料判定
	 * <dd>メソッド説明	：1.入力ファイルより判定データを取得します。
	 *                    2.事務手数料判定が不要な場合、判定対象外としてtrueを返却します。
	 * @param inMap データ取得情報Map
	 * @return boolean チェック結果 (判定対象：false 判定対象外：true)
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean rulechk(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 戻り値
		boolean rtnFlg = false; 
		
		// 料金グループコード（マンションタイプeo光ネット以外）
		String prcgrpcd = inMap.getString(JBSbatKKIFM505.PRC_GRP_CD);
		
		if(!prcgrpcd.equals(PRC_GRP_CD_04))
		{
			// 判定対象外（inmapそのまま出力）
			return true;
		}
		
		// 提供方式コード（光配線の場合）
		String tkhoshikicd = inMap.getString(JBSbatKKIFM505.TK_HOSHIKI_CD);
		
		if(tkhoshikicd.equals(TK_HOSHIKI_CD_008))
		{
			// 判定対象外（inmapそのまま出力）
			return true;
		}
		
		// 提供方式パターンコード（ONUの場合）
		String tkhoshikipatcd = inMap.getString(JBSbatKKIFM505.TK_HOSHIKI_PATTERN_CD);
		
		if(!tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_31) && 
			!tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_32) &&
			!tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_33) &&
			!tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_34) &&
			!tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_35) &&
			!tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_10)) 
		{
			// 判定対象外（inmapそのまま出力）
			return true;
		}
		
		// 一時支払料金番号が未設定の場合、そのまま出力
		String tmp_pay_no_ck = inMap.getString(JBSbatKKIFM505.TMP_PAY_PRC_AMNT);
		if(tmp_pay_no_ck == null || "".equals(tmp_pay_no_ck))
		{
			// 判定対象外（inmapそのまま出力）
			return true;
		}
		
		return rtnFlg;
	}
	
	/**
	 * 一時支払料金番号を取得
	 * 
	 * @param inMap 入力レコード
	 * @throws Exception 各種エラー
	 */
	private void set_TMPPAYNO(JBSbatServiceInterfaceMap inMap, String tmp_pay_no) throws Exception
	{
//		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		super.logPrint.printDebugLog("tmp_pay_no=" + tmp_pay_no);
		
		// 相関ルール用マップを生成
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put(IDO_DIV, IDO_DIV_00001);
		map.put(MSKM_PRC_GRP_CD, MSKM_PRC_GRP_CD_04);
		map.put(MANS_SKB_UM, MANS_SKB_UM_1);
		
		// 提供方式パターンコード（VDSLの場合）
		String tkhoshikipatcd = inMap.getString(JBSbatKKIFM505.TK_HOSHIKI_PATTERN_CD);
		
		if(tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_31) || 
			tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_32) ||
			tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_33) ||
			tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_34) ||
			tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_35))
		{
			map.put("TK_HOSHIKI", TK_HOSHIKI_0);
			
			// 提供料金種別コード（旧VDSL-S方式 or VDSL-S方式の場合）
			String tkprcsbtcd = inMap.getString(JBSbatKKIFM505.TK_PRC_SBT_CD);
			if(tkprcsbtcd.equals(TK_PRC_SBT_CD_001) || tkprcsbtcd.equals(TK_PRC_SBT_CD_002))
			{
				map.put(TK_PRC_SBT_CD, TK_PRC_SBT_CD_0);
			}
			else
			{
				map.put(TK_PRC_SBT_CD, TK_PRC_SBT_CD_1);
			}
			
			// 機器提供種別コード
			String kktksbtcd = inMap.getString(JBSbatKKIFM505.KKTK_SBT_CD);
			map.put(MODEM_RENTAL_KBN, kktksbtcd);
		}
		
		// 提供方式パターンコード（イーサネットの場合）
		if(tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_10))
		{
			map.put(TK_HOSHIKI, TK_HOSHIKI_1);
		}
		
		super.logPrint.printDebugLog("SVC_KEI_NO=" + inMap.getString(JBSbatKKIFM505.SVC_KEI_NO));
		super.logPrint.printDebugLog("map       =" + map);
		
		WK_TMP_PAY_PRC_AMNT_1 = "";
		WK_TMP_PAY_PRC_AMNT_2 = "";

		// 相関ルールハンドラを生成
		JRuleXMLHandler xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID, JRuleXMLPattern.MULTI_MODE_TYPE);
		// 相関ルールから一時金支払料金番号を取得
		ArrayList<ArrayList<HashMap<String, Object>>> checkList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
		if (checkList.get(0) != null)
		{
			for (int i = 0; i < checkList.get(0).size(); i++)
			{
				super.logPrint.printDebugLog("size=" + checkList.get(0).size());
				// 一時支払料金番号を設定
				String WK_TMP_PAY_PRC_AMNT = (String)checkList.get(0).get(i).get(TMP_PAY_PRC_NO);
				super.logPrint.printDebugLog("TMP_PAY_PRC_NO=" + WK_TMP_PAY_PRC_AMNT);
				
//				if (NOT_ISA.equals(WK_TMP_PAY_PRC_AMNT))
//				{
//					// イーサネット以外、読み飛ばしを行う。
//					WK_TMP_PAY_PRC_AMNT = null;
//				}
//				else
//				{
//					if(tkhoshikipatcd.equals(TK_HOSHIKI_PATTERN_CD_10))
//					{
						if (i == 0)
						{
							WK_TMP_PAY_PRC_AMNT_1 = WK_TMP_PAY_PRC_AMNT;
							super.logPrint.printDebugLog("WK_TMP_PAY_PRC_AMNT_1=" + WK_TMP_PAY_PRC_AMNT_1);
						}
						else
						{
							WK_TMP_PAY_PRC_AMNT_2 = WK_TMP_PAY_PRC_AMNT;
							super.logPrint.printDebugLog("WK_TMP_PAY_PRC_AMNT_2=" + WK_TMP_PAY_PRC_AMNT_2);
							i = 99;
						}
//					}
//					else
//					{
//						i = 99;
//					}
//				}
			}
		}
		
	}

}
