/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACInsentivePrcCalcYearKaktk
*	ソースファイル名	：JBSbatACInsentivePrcCalcYearKaktk.java
*	作成者				：富士通　
*	作成日				：2018年09月26日
*＜機能概要＞
*　インセンティブ料金計算(年間獲得数))処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v39.00.00	2018/09/26  FJ)原田		新規作成【ANK-3478-00-00】ｅｏ光設備卸対応(サービス開始対応)
*   v39.01.00	2018/10/30  FJ)原田		【IT1-2018-0000188】卸先事業者インセンティブ設定のカレント取得条件の修正
*   v39.02.00	2018/12/06  FJ)原田		【IT1-2018-0000235】年間獲得数の下限値に満たない場合にリストに出力されない
*********************************************************************/
package eo.business.service;


import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatACIFM313;
import eo.business.util.file.JBSbatACIFM318;
import eo.business.util.table.JBSbatCH_M_ORSJGS_INV_SETE;
import eo.common.util.JKKStringUtil;
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;
import eo.framework.util.JBSbatDateUtil;

/**
* インセンティブ料金計算(年間獲得数))処理 <p>
*<BR>
* @author 富士通
*/
public class JBSbatACInsentivePrcCalcYearKaktk extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	
	/** テーブル(卸先事業者インセンティブ設定)*/
	private static final String D_TBL_NAME_CH_M_ORSJGS_INV_SETE = "CH_M_ORSJGS_INV_SETE";
	
	/** テーブル(卸先事業者インセンティブ設定) 初回判定用 */
	private static final String D_TBL_NAME_CH_M_ORSJGS_INV_SETE_SHOKAI_JUDGE = "CH_M_ORSJGS_INV_SETE";
	
	/** テーブルアクセスクラス(卸先事業者インセンティブ設定) */
	private JBSbatSQLAccess db_CH_M_ORSJGS_INV_SETE = null;
	
	/** テーブルアクセスクラス(卸先事業者インセンティブ設定) 初回判定用 */
	private JBSbatSQLAccess db_CH_M_ORSJGS_INV_SETE_SHOKAI_JUDGE = null;
	
	/** 卸先事業者インセンティブ設定初回判定用リスト */
	private ArrayList<HashMap<String,String>> orsjgsInvSeteShokaiJudgeList = new ArrayList<HashMap<String,String>>();
	
	/** 卸先事業者インセンティブ設定リスト */
	private ArrayList<HashMap<String,String>> orsjgsInvSeteList = new ArrayList<HashMap<String,String>>();
	
	/** SQL定義キー(AC_SELECT_005)*/
	private static final String ORSJGS_INV_SETE_AC_SELECT_005 = "AC_SELECT_005";
	
	/** SQL定義キー(AC_SELECT_006)*/
	private static final String ORSJGS_INV_SETE_AC_SELECT_006 = "AC_SELECT_006";
	
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	
	/**
	 * 初期処理
	 * @param commonItem バッチ共通パラメータ電文
	 * @throws Exception 例外処理
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		db_CH_M_ORSJGS_INV_SETE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_ORSJGS_INV_SETE);
		db_CH_M_ORSJGS_INV_SETE_SHOKAI_JUDGE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_ORSJGS_INV_SETE_SHOKAI_JUDGE);
		
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");
		
		// 卸先事業者インセンティブ設定初回判定用リスト作成処理
		orsjgsInvSeteShokaiJudgeList = getOrsjgsInvSeteShokaiJudgeList();
		
		// 卸先事業者インセンティブ設定料金計算用リスト作成処理
		orsjgsInvSeteList = getOrsjgsInvSeteList();
		
		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 JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][inMap=" + inMap.getMap().toString() + "]");
		
		// インセンティブ料金（年間獲得数料金）作成
		JBSbatOutputItem outputInf = this.makeOutputInf(inMap);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		
		return(outputInf);
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception 例外処理
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		
		// DBアクセスクラスをクローズします
		db_CH_M_ORSJGS_INV_SETE.close();
		db_CH_M_ORSJGS_INV_SETE_SHOKAI_JUDGE.close();
		
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * SQLKEY(AC_SELECT_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	バッチ運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeORSJGS_INV_SETE_AC_SELECT_005(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
// v39.01.00 IT1-2018-0000188 ADD STA
		paramList.setValue(param[0].toString());
// v39.01.00 IT1-2018-0000188 ADD END
		
		// DBアクセスを実行します
		db_CH_M_ORSJGS_INV_SETE_SHOKAI_JUDGE.selectBySqlDefine(paramList, ORSJGS_INV_SETE_AC_SELECT_005);
	}
	
	/**
	 * SQLKEY(AC_SELECT_006)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	バッチ運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeORSJGS_INV_SETE_AC_SELECT_006(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
// v39.01.00 IT1-2018-0000188 ADD STA
		paramList.setValue(param[0].toString());
// v39.01.00 IT1-2018-0000188 ADD END
		
		// DBアクセスを実行します
		db_CH_M_ORSJGS_INV_SETE.selectBySqlDefine(paramList, ORSJGS_INV_SETE_AC_SELECT_006);
	}
	
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 出力電文(インセンティブ料金（年間獲得数料金）)を作成します。
	 * 
	 * @param inMap 入力電文
	 * @return JBSbatOutputItem 出力電文
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatOutputItem makeOutputInf(JBSbatServiceInterfaceMap inMap) throws Exception 
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputInf]");
		
		JBSbatOutputItem outputInf = new JBSbatOutputItem();
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		
		String trgtOrsjgsCd = JKKStringUtil.nullToBlank(inMap.getString(JBSbatACIFM313.ORSJGS_CD));					// 卸先事業者コード
		String trgtSvcCd = JKKStringUtil.nullToBlank(inMap.getString(JBSbatACIFM313.SVC_CD));						// サービスコード
		
		if (orsjgsInvSeteShokaiJudgeList != null && orsjgsInvSeteShokaiJudgeList.size() > 0)
		{
			for (int i = 0; orsjgsInvSeteShokaiJudgeList.size() > i; i++)
			{
				HashMap<String, String> orsjgsInvSeteShokaiJudge = new HashMap<String, String>();
				
				orsjgsInvSeteShokaiJudge = orsjgsInvSeteShokaiJudgeList.get(i);
				
				// 判定用卸先事業者コード
				String judgeOrsjgsCd = orsjgsInvSeteShokaiJudge.get("orsjgsCd");
				// 判定用サービスコード
				String judgeSvcCd = orsjgsInvSeteShokaiJudge.get("svcCd");
				// 判定用卸先事業者適用終了年月日
				String judgeFristYearKeiKtkCntCalcYm = orsjgsInvSeteShokaiJudge.get("fristYearKeiKtkCntCalcYm");
				
				if (judgeOrsjgsCd.equals(trgtOrsjgsCd) && judgeSvcCd.equals(trgtSvcCd))
				{
					String opeMonth = super.opeDate.substring(0, 6);
					
					// 卸先事業者インセンティブ設定初回判定用リストと一致するレコードが存在した場合
					// バッチ運用月と初年度年間契約獲得件数計算年月を比較し初回かを判断
					if (judgeFristYearKeiKtkCntCalcYm.compareTo(opeMonth) >= 0)
					{
						// 初年度年間契約獲得件数計算年月 ≧ バッチ運用日の当月 の場合、初年度と判断
						setIncntvPrcMap(inMap, outmap, true);
					}
					else
					{
						// 年間獲得数契約料金が初年度以外の場合
						setIncntvPrcMap(inMap, outmap, false);
					}
					
				}
				
			}
		}
		else
		{
			// 検索結果0件の場合
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOrsIesntivMap]");
			return null;
		}
		
		if (outmap.getMap().size() == 0)
		{
			// outmapの中身がなかった場合、0件ファイルを出力する。
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOrsIesntivMap]");
			return null;
		}
		
		// ファイル出力する
		outmap.setOutFlg(true);
		
		// 出力共通電文に設定
		outputInf.addOutMapList(outmap);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputInf][outmap=" + outmap.getMap().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputInf]");
		
		return(outputInf);
	}
	
	
	/**
	 * 前月末日を取得します。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private String getZngtuLastDay() throws Exception
	{
		String zngtuLastDay = "";
		String zngtuLastYmd = "";
		
		// バッチ処理日の前月を取得（YYYYMMDD形式）
		String zngtu = JBSbatDateUtil.adjustMonth(super.opeDate, -1);
		
		// 前処理で取得した前月（YYYYMMDD形式）から年月を取得し、前月の末日を取得（YYYYMMDD形式）
		zngtuLastDay =  JBSbatDateUtil.getEndOfMonth(zngtu.substring(0, 6));
		zngtuLastYmd = zngtu.substring(0, 6) + zngtuLastDay;
		
		return zngtuLastYmd;
		
	}
	
	/**
	 * 卸先事業者インセンティブ設定初回判定用リストを作成します。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private ArrayList<HashMap<String,String>> getOrsjgsInvSeteShokaiJudgeList() throws Exception
	{
		// 返却用リスト
		ArrayList<HashMap<String, String>> orsjgsInvSeteList = new ArrayList<HashMap<String, String>>();
		
		// バッチ処理日の前月末日を取得
		String zngtuLastDay = getZngtuLastDay();
		
		// 取得レコード
		JBSbatCommonDBInterface selectMap = null;
		
		// 初期値設定
		String orsjgsCd = "";
		String svcCd = "";
		String fristYearKeiKtkCntCalcYm = "";
		HashMap<String, String> workMap = new HashMap<String, String>();
		
		// 検索値設定
		String[] param = new String[1];
		param[0] = zngtuLastDay;
		
		// SQL実行処理
		executeORSJGS_INV_SETE_AC_SELECT_005(param);
		
		// 取得した結果を格納
		while((selectMap = db_CH_M_ORSJGS_INV_SETE_SHOKAI_JUDGE.selectNext()) != null)
		{
			// 初期化
			orsjgsCd = "";
			svcCd = "";
			fristYearKeiKtkCntCalcYm = "";
			workMap = new HashMap<String, String>();
			
			// 卸先事業者コード
			orsjgsCd = JKKStringUtil.nullToBlank(selectMap.getString(JBSbatCH_M_ORSJGS_INV_SETE.ORSJGS_CD));
			// サービスコード
			svcCd = JKKStringUtil.nullToBlank(selectMap.getString(JBSbatCH_M_ORSJGS_INV_SETE.SVC_CD));
			// 初年度年間契約獲得件数計算年月
			fristYearKeiKtkCntCalcYm = JKKStringUtil.nullToBlank(selectMap.getString(JBSbatCH_M_ORSJGS_INV_SETE.SNDO_YEAR_KEKTKCN_CALC_YM));
			
			// 作業用マップ格納処理
			workMap.put("orsjgsCd", orsjgsCd);
			workMap.put("svcCd", svcCd);
			workMap.put("fristYearKeiKtkCntCalcYm", fristYearKeiKtkCntCalcYm);
			
			orsjgsInvSeteList.add(workMap);
		}
		
		return orsjgsInvSeteList;
		
	}
	
	/**
	 * 卸先事業者インセンティブ設定料金計算用リストを作成します。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private ArrayList<HashMap<String,String>> getOrsjgsInvSeteList() throws Exception
	{
		// 返却用リスト
		ArrayList<HashMap<String, String>> orsjgsInvSeteList = new ArrayList<HashMap<String, String>>();
		
		// バッチ処理日の前月末日を取得
		String zngtuLastDay = getZngtuLastDay();
		
		// 取得レコード
		JBSbatCommonDBInterface selectMap = null;
		
		// 初期値設定
		String orsjgsCd = "";
		String svcCd = "";
		String jigyoNendoStaStdardMon = "";
		String firstYearKeiCntLowno = "";
		String firstYearKeiCntUpplno = "";
		String firstYearKeiCntPrc = "";
		String yearKeiKaktkCntLowno = "";
		String yearKeiKaktkCntUpplno = "";
		String yearKeiKaktkCntPrc = "";
		HashMap<String, String> workMap = new HashMap<String, String>();
		
		// 検索値設定
		String[] param = new String[1];
		param[0] = zngtuLastDay;
		
		// SQL実行処理
		executeORSJGS_INV_SETE_AC_SELECT_006(param);
		
		// 取得した結果を格納
		while((selectMap = db_CH_M_ORSJGS_INV_SETE.selectNext()) != null)
		{
			// 初期化
			orsjgsCd = "";
			svcCd = "";
			jigyoNendoStaStdardMon = "";
			firstYearKeiCntLowno = "";
			firstYearKeiCntUpplno = "";
			firstYearKeiCntPrc = "";
			yearKeiKaktkCntLowno = "";
			yearKeiKaktkCntUpplno = "";
			yearKeiKaktkCntPrc = "";
			workMap = new HashMap<String, String>();
			
			// 卸先事業者コード
			orsjgsCd = JKKStringUtil.nullToBlank(selectMap.getString(JBSbatCH_M_ORSJGS_INV_SETE.ORSJGS_CD));
			// サービスコード
			svcCd = JKKStringUtil.nullToBlank(selectMap.getString(JBSbatCH_M_ORSJGS_INV_SETE.SVC_CD));
			// 事業年度開始基準月
			jigyoNendoStaStdardMon = JKKStringUtil.nullToBlank(selectMap.getString(JBSbatCH_M_ORSJGS_INV_SETE.JIGYO_NENDO_STA_STDARD_MON));
			// 初年度年間契約獲得件数下限数
			firstYearKeiCntLowno = JKKStringUtil.nullToBlank(selectMap.getString(JBSbatCH_M_ORSJGS_INV_SETE.SNDO_YEAR_KEKTKCN_LOWLNO));
			// 初年度年間契約獲得件数上限数
			firstYearKeiCntUpplno = JKKStringUtil.nullToBlank(selectMap.getString(JBSbatCH_M_ORSJGS_INV_SETE.SNDO_YEAR_KEKTKCN_UPPLNO));
			// 初年度年間契約獲得件数料金
			firstYearKeiCntPrc = JKKStringUtil.nullToBlank(selectMap.getString(JBSbatCH_M_ORSJGS_INV_SETE.SNDO_YEAR_KEKTKCN_PRC));
			// 年間契約獲得件数下限数
			yearKeiKaktkCntLowno = JKKStringUtil.nullToBlank(selectMap.getString(JBSbatCH_M_ORSJGS_INV_SETE.YEAR_KEI_KAKTK_CNT_LOWLNO));
			// 年間契約獲得件数上限数
			yearKeiKaktkCntUpplno = JKKStringUtil.nullToBlank(selectMap.getString(JBSbatCH_M_ORSJGS_INV_SETE.YEAR_KEI_KAKTK_CNT_UPPLNO));
			// 年間獲得数契約料金
			yearKeiKaktkCntPrc = JKKStringUtil.nullToBlank(selectMap.getString(JBSbatCH_M_ORSJGS_INV_SETE.YEAR_KEI_KAKTK_CNT_PRC));
			
			// 作業用マップ格納処理
			workMap.put("orsjgsCd", orsjgsCd);
			workMap.put("svcCd", svcCd);
			workMap.put("jigyoNendoStaStdardMon", jigyoNendoStaStdardMon);
			workMap.put("firstYearKeiCntLowno", firstYearKeiCntLowno);
			workMap.put("firstYearKeiCntUpplno", firstYearKeiCntUpplno);
			workMap.put("firstYearKeiCntPrc", firstYearKeiCntPrc);
			workMap.put("yearKeiKaktkCntLowno", yearKeiKaktkCntLowno);
			workMap.put("yearKeiKaktkCntUpplno", yearKeiKaktkCntUpplno);
			workMap.put("yearKeiKaktkCntPrc", yearKeiKaktkCntPrc);
			
			orsjgsInvSeteList.add(workMap);
		}
		
		return orsjgsInvSeteList;
		
	}
	
	/**
	 * インセンティブ料金（年間獲得数料）を作成します。（年間獲得数契約料金が初年度の場合）
	 * 
	 * @param inMap 入力ファイル情報
	 * @param outMap 出力ファイル情報
	 * @param firstFlg 初年度の料金計算かを判定するフラグ（true：初年度 false：初年度以外）
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void setIncntvPrcMap(JBSbatServiceInterfaceMap inMap, JBSbatServiceInterfaceMap outMap, Boolean firstFlg) throws Exception
	{
		// 初期処理
		BigDecimal calcPrc = BigDecimal.ZERO;
		// IT1-2018-0000235 MOD START
		//Boolean outputFlg = false;
		// 年間獲得の下限数に満たなくても件数に出力されるように変更
		Boolean outputFlg = true;
		// IT1-2018-0000235 MOD END
		
		// 初期判定用の値を取得
		String trgtOrsjgsCd = JKKStringUtil.nullToBlank(inMap.getString(JBSbatACIFM313.ORSJGS_CD));					// 卸先事業者コード
		String trgtSvcCd = JKKStringUtil.nullToBlank(inMap.getString(JBSbatACIFM313.SVC_CD));						// サービスコード
		BigDecimal trgtChshtCnt = inMap.getBigDecimal(JBSbatACIFM313.CHSHT_CNT);									// 抽出件数
		
		if (firstFlg)
		{
			// ********************
			// 初年度用計算処理開始
			// ********************
			if (orsjgsInvSeteList != null && orsjgsInvSeteList.size() > 0)
			{
				for (int i = 0; orsjgsInvSeteList.size() > i; i++)
				{
					HashMap<String, String> orsjgsInvSete = new HashMap<String, String>();
					
					orsjgsInvSete = orsjgsInvSeteList.get(i);
					
					// 初期化処理
					String calcOrsjgsCd = "";
					String calcSvcCd ="";
					String calcFirstYearKeiCntLowno = "";
					String calcFirstYearKeiCntUpplno ="";
					String calcFirstYearKeiCntPrc ="";
					
					calcOrsjgsCd = orsjgsInvSete.get("orsjgsCd");										// 計算用卸先事業者コード
					calcSvcCd = orsjgsInvSete.get("svcCd");												// 計算用サービスコード
					calcFirstYearKeiCntLowno = orsjgsInvSete.get("firstYearKeiCntLowno");				// 計算用初回年間契約獲得件数下限数
					calcFirstYearKeiCntUpplno = orsjgsInvSete.get("firstYearKeiCntUpplno");				// 計算用初回年間契約獲得件数上限数
					calcFirstYearKeiCntPrc = orsjgsInvSete.get("firstYearKeiCntPrc");					// 計算用初回年間獲得数契約料金
					
					// 数値をStringからBigDecimalへ変換
					BigDecimal bigDecimalCalcFirstYearKeiCntLowno = new BigDecimal(calcFirstYearKeiCntLowno);
					BigDecimal bigDecimalCalcFirstYearKeiCntUpplno = new BigDecimal(calcFirstYearKeiCntUpplno);
					BigDecimal bigDecimalCalcFirstYearKeiCntPrc = new BigDecimal(calcFirstYearKeiCntPrc);
					
					if (trgtOrsjgsCd.equals(calcOrsjgsCd)												// 卸先事業者別集計情報(年間獲得数料金).卸先事業者コード ＝ 卸先事業者インセンティブ設定.卸先事業者コード
							&& trgtSvcCd.equals(calcSvcCd)												// 卸先事業者別集計情報(年間獲得数料金).サービスコード ＝ 卸先事業者インセンティブ設定.サービスコード
							&& trgtChshtCnt.compareTo(bigDecimalCalcFirstYearKeiCntLowno) >= 0			// 卸先事業者別集計情報(年間獲得数料金).抽出件数 ≧ 卸先事業者インセンティブ設定.初年度年間契約獲得件数下限数
							&& trgtChshtCnt.compareTo(bigDecimalCalcFirstYearKeiCntUpplno) <= 0			// 卸先事業者別集計情報(年間獲得数料金).抽出件数 ≦ 卸先事業者インセンティブ設定.初年度年間契約獲得件数上限数
							)
					{
						// 条件を満たす場合、年間獲得数料のインセンティブ料金を計算
						calcPrc = trgtChshtCnt.multiply(bigDecimalCalcFirstYearKeiCntPrc);
						// IT1-2018-0000235 DEL START
						//outputFlg = true;
						// IT1-2018-0000235 DEL END
						
						break;
					}
					
				}
			}
		}
		else
		{
			// ************************
			// 初年度以外用計算処理開始
			// ************************
			if (orsjgsInvSeteList != null && orsjgsInvSeteList.size() > 0)
			{
				for (int i = 0; orsjgsInvSeteList.size() > i; i++)
				{
					HashMap<String, String> orsjgsInvSete = new HashMap<String, String>();
					
					orsjgsInvSete = orsjgsInvSeteList.get(i);
					
					// 初期化処理
					String calcOrsjgsCd = "";
					String calcSvcCd ="";
					String calcYearKeiKaktkCntLowno = "";
					String calcYearKeiKaktkCntUpplno = "";
					String calcYearKeiKaktkCntPrc = "";
					
					calcOrsjgsCd = orsjgsInvSete.get("orsjgsCd");										// 計算用卸先事業者コード
					calcSvcCd = orsjgsInvSete.get("svcCd");												// 計算用サービスコード
					calcYearKeiKaktkCntLowno = orsjgsInvSete.get("yearKeiKaktkCntLowno");				// 計算用年間契約獲得件数下限数
					calcYearKeiKaktkCntUpplno = orsjgsInvSete.get("yearKeiKaktkCntUpplno");				// 計算用年間契約獲得件数上限数
					calcYearKeiKaktkCntPrc = orsjgsInvSete.get("yearKeiKaktkCntPrc");					// 計算用年間獲得数契約料金
					
					// 数値をStringからBigDecimalへ変換
					BigDecimal bigDecimalCalcYearKeiKaktkCntLowno = new BigDecimal(calcYearKeiKaktkCntLowno);
					BigDecimal bigDecimalCalcYearKeiKaktkCntUpplno = new BigDecimal(calcYearKeiKaktkCntUpplno);
					BigDecimal bigDecimalCalcYearKeiKaktkCntPrc = new BigDecimal(calcYearKeiKaktkCntPrc);
					
					if (trgtOrsjgsCd.equals(calcOrsjgsCd)												// 卸先事業者別集計情報(年間獲得数料金).卸先事業者コード ＝ 卸先事業者インセンティブ設定.卸先事業者コード
							&& trgtSvcCd.equals(calcSvcCd)												// 卸先事業者別集計情報(年間獲得数料金).サービスコード ＝ 卸先事業者インセンティブ設定.サービスコード
							&& trgtChshtCnt.compareTo(bigDecimalCalcYearKeiKaktkCntLowno) >= 0					// 卸先事業者別集計情報(年間獲得数料金).抽出件数 ≧ 卸先事業者インセンティブ設定.初年度年間契約獲得件数下限数
							&& trgtChshtCnt.compareTo(bigDecimalCalcYearKeiKaktkCntUpplno) <= 0					// 卸先事業者別集計情報(年間獲得数料金).抽出件数 ≦ 卸先事業者インセンティブ設定.初年度年間契約獲得件数上限数
							)
					{
						// 条件を満たす場合、年間獲得数料のインセンティブ料金を計算
						calcPrc = trgtChshtCnt.multiply(bigDecimalCalcYearKeiKaktkCntPrc);
						// IT1-2018-0000235 DEL START
						//outputFlg = true;
						// IT1-2018-0000235 DEL END
						
						break;
					}
					
				}
			}
		}
		
		
		if (outputFlg)
		{
			outMap.setString(JBSbatACIFM318.ORSJGS_CD, trgtOrsjgsCd);			// 卸先事業者コード
			outMap.setString(JBSbatACIFM318.SVC_CD, trgtSvcCd);					// サービスコード
			outMap.setBigDecimal(JBSbatACIFM318.CHST_CNT, trgtChshtCnt);		// 抽出件数
			outMap.setBigDecimal(JBSbatACIFM318.YEAR_KEI_KAKTK_CNT_PRC, calcPrc);		// 年間獲得数料金
		}
	}
	
}
