/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCHSeikyKeiSearchCC
*   ソースファイル名：JCHSeikyKeiSearchCC.java
*   作成者          ：富士通
*   日付            ：2011年09月09日
*＜機能概要＞
*   請求契約一意照会CC部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/09	富士通		新規作成
*	v5.00.00	2013/07/14	FJ)文元    【IT1-2013-0001404】督促状況更新画面にて支払履行判定日のみ変更時にExceptionが発生する不具合対応
*	v10.00.00	2014/10/18	FJ)鈴木    【ANK-2273-00-00】CIC案件対応
*	v12.00.00	2015/03/04	FJ)桑島    【OM-2014-0003792】料金対応記録設定対応
*   v13.00.00   2015/03/10  FJ)寺園     ANK-2416-00-00_請求書のハガキ化対応
*	v12.00.00	2015/03/12	FJ)桑島    【OM-2014-0003792】料金対応記録設定対応 修正
*	v12.00.00	2015/03/14	FJ)桑島    【OM-2014-0003792】料金対応記録設定対応 修正
*	v41.00.00	2019/03/07	FJ)原田    【ANK-3396-00-00】利用停止スケジュール変更
*   v44.00.00   2019/06/04	FJ)原田	   【OM-2019-0000588】督促を新規で登録したときに督促異動も登録されてしまう。
*	v46.00.00	2019/10/08	FJ)鈴木    【ANK-3586-00-00】隔月合算請求
*	v52.00.00	2020/10/22	FJ)平野	   【ANK-3838-00-00】窓口払い手数料の顧客負担方式導入
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.model.base.jcc.util.JCCDateUtil;

import eo.common.constant.JACStrConst;


/**
 * 督促状況更新より呼び出される督促状況更新副次処理マッピングCC部品です。<p>
 * <BR>
 * @author 富士通
 */
public class JCHTokusokuHukjiMappingCC extends AbstractCommonComponent {

	/** 利用停止対象抽出マップID */
	private static final String MAP_CC_ID_USE_STP_RUN = "JKKUSESTPRUNCC";

	/** 利用停止解除対象抽出マップID */
	private static final String MAP_CC_ID_USE_STP_RLS_RUN = "JKKUSESTPRLSRUNCC";

	/** 強制解約対象抽出マップID */
	private static final String MAP_CC_ID_KYOSEI_DSL_RUN = "KKSV017201CC";

	/** 強制解約対象者マップID */
	private static final String MAP_CC_ID_KYOSEI_DSL_TG_RUN = "KKSV016701CC";

	/** 料金対応記録一時マップID */
	private static final String MAP_CC_ID_PRC_TAIO_KIROK_TMP = "PRCTAIOKIROKTMP";

	/** 料金対応記録登録マップID */
	private static final String MAP_CC_ID_PRC_TAIO_KIROK_ADD_RUN = "PRCTAIOKIROKADDCC";

	/** 督促移動登録マップID */
	private static final String MAP_CC_ID_TOKUSOKU_IDO_ADD_RUN = "CHSV004602SC";

	/** マップキー(サービス契約番号リスト) */
	private static final String MAP_KEY_SVC_KEI_LIST = "svc_kei_no_list";

	/** マップキー(請求契約番号) */
	private static final String MAP_KEY_SEIKY_KEI_NO = "seiky_kei_no";

	/** マップキー(サービス契約番号) */
	private static final String MAP_KEY_SVC_KEI_NO = "svc_kei_no";

	/** マップキー(申込明細番号) */
	private static final String MAP_KEY_MSKM_DTL_NO = "mskm_dtl_no";

	/** 利用停止実行マップキー(利用停止実行リスト) */
	private static final String MAP_KEY_USE_STP_LST = "use_stp_lst";

	/** 利用停止解除実行マップキー(利用停止解除実行リスト) */
	private static final String MAP_KEY_USE_STP_RLS_LST = "use_stp_rls_lst";

	/** 強制解約実行マップキー(強制解約実行リスト) */
	private static final String MAP_KEY_KAI_TAI_LST = "KAI_TAI_LST";

	/** 強制解約実行マップキー(請求契約番号) */
	private static final String MAP_KEY_KAI_TAI_SEIKY_KEI_NO = "SEIKY_KEI_NO";

	/** 強制解約実行マップキー(サービス契約番号) */
	private static final String MAP_KEY_KAI_TAI_SVC_KEI_NO = "SVC_KEI_NO";
	
	/** 強制解約実行マップキー(依頼年月日) */
	private static final String MAP_KEY_KAI_TAI_REQYMD = "REQYMD";
	
	/** 強制解約実行マップキー(サービス課金終了年月日) */
	private static final String MAP_KEY_KAI_TAI_SVC_CHRG_ENDYMD = "SVC_CHRG_ENDYMD";

	/** 料金対応記録登録マップキー(料金対応記録登録リスト) */
	private static final String MAP_KEY_PRC_TAIO_KIROK_LIST = "prc_taio_kirok_list";

	
	/**
	 * 利用停止対象抽出マップに指定されたリストを基に利用停止実行マップ形成を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception 例外が発生した場合
	 */
	public IRequestParameterReadWrite useStpRunMapping(SessionHandle handle, 
			IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		ArrayList<HashMap<String, Object>> useStpList = new ArrayList<HashMap<String, Object>>();
		ArrayList<HashMap<String, Object>> svcKeiList = null;
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		HashMap<String, Object> svcKeiNoInfo = new HashMap<String, Object>();

		// 利用停止対象抽出マップからサービス契約番号リスト取得
		svcKeiList = this.getMapListItem(param,MAP_CC_ID_USE_STP_RUN, MAP_KEY_SVC_KEI_LIST);

		if(svcKeiList != null && svcKeiList.size() > 0)
		{
			for(int i = 0; i < svcKeiList.size(); i++)
			{
				svcKeiNoInfo = (HashMap<String, Object>)svcKeiList.get(i);
				HashMap<String, Object> childMap = null;

				if(useStpList.size() -1 >= i)
				{
					childMap = (HashMap<String, Object>)useStpList.get(i);
				}
				else
				{
					childMap = new HashMap<String, Object>();
				}

				// 利用停止対象抽出マップ.サービス契約番号リスト.請求契約番号 → 利用停止実行マップ.請求契約番号
				if(svcKeiNoInfo != null)
				{
					childMap.put(MAP_KEY_SEIKY_KEI_NO, svcKeiNoInfo.get(MAP_KEY_SEIKY_KEI_NO));
				}
				// 利用停止対象抽出マップ.サービス契約番号リスト.サービス契約番号 → 利用停止実行マップ.サービス契約番号
				if(svcKeiNoInfo != null)
				{
					childMap.put(MAP_KEY_SVC_KEI_NO, svcKeiNoInfo.get(MAP_KEY_SVC_KEI_NO));
				}

				useStpList.add(childMap);
			}
		}
		// 利用停止実行リスト格納
		parentMap.put(MAP_KEY_USE_STP_LST, useStpList);

		param.setData(MAP_CC_ID_USE_STP_RUN, parentMap);
		

		return param;
	}

	/**
	 * 利用停止解除対象抽出マップに指定されたリストを基に利用停止解除実行マップ形成を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception 例外が発生した場合
	 */
	public IRequestParameterReadWrite useStpRlsRunMapping(SessionHandle handle, 
			IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		ArrayList<HashMap<String, Object>> useStpRlsList = new ArrayList<HashMap<String, Object>>();
		ArrayList<HashMap<String, Object>> svcKeiList = null;
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		HashMap<String, Object> svcKeiNoInfo = new HashMap<String, Object>();

		// 利用停止解除対象抽出マップからサービス契約番号リスト取得
		svcKeiList = this.getMapListItem(param,MAP_CC_ID_USE_STP_RLS_RUN, MAP_KEY_SVC_KEI_LIST);

		if(svcKeiList != null && svcKeiList.size() > 0)
		{
			for(int i = 0; i < svcKeiList.size(); i++)
			{
				svcKeiNoInfo = (HashMap<String, Object>)svcKeiList.get(i);
				HashMap<String, Object> childMap = null;

				if(useStpRlsList.size() -1 >= i)
				{
					childMap = (HashMap<String, Object>)useStpRlsList.get(i);
				}
				else
				{
					childMap = new HashMap<String, Object>();
				}

				// 利用停止解除対象抽出マップ.サービス契約番号リスト.請求契約番号 → 利用停止解除実行マップ.請求契約番号
				if(svcKeiNoInfo != null)
				{
					childMap.put(MAP_KEY_SEIKY_KEI_NO, svcKeiNoInfo.get(MAP_KEY_SEIKY_KEI_NO));
				}
				// 利用停止解除対象抽出マップ.サービス契約番号リスト.サービス契約番号 → 利用停止解除実行マップ.サービス契約番号
				if(svcKeiNoInfo != null)
				{
					childMap.put(MAP_KEY_SVC_KEI_NO, svcKeiNoInfo.get(MAP_KEY_SVC_KEI_NO));
				}

				useStpRlsList.add(childMap);
			}
		}
		// 利用停止解除実行リスト格納
		parentMap.put(MAP_KEY_USE_STP_RLS_LST, useStpRlsList);

		param.setData(MAP_CC_ID_USE_STP_RLS_RUN, parentMap);
		
		//OM-2014-0003792 DEL START
		//利用停止解除情報作成
		// 利用停止解除実行リスト格納
//		prcTaioList = this.riyoteiKaijoInfo(param, svcKeiList, prcTaioList);
//		param = this.riyoteiKaijoInfo(param, useStpRlsList);
		//OM-2014-0003792 DEL START
		

		return param;
	}

	/**
	 * 強制解約対象抽出マップに指定されたリストを基に強制解約実行マップ形成を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception 例外が発生した場合
	 */
	public IRequestParameterReadWrite kyoseiDslRunMapping(SessionHandle handle, 
			IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		ArrayList<HashMap<String, Object>> kaiTaiList = new ArrayList<HashMap<String, Object>>();
		ArrayList<HashMap<String, Object>> svcKeiList = null;
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		HashMap<String, Object> svcKeiNoInfo = new HashMap<String, Object>();

		// 強制解約対象抽出マップからサービス契約番号リスト取得
		svcKeiList = this.getMapListItem(param,MAP_CC_ID_KYOSEI_DSL_RUN, MAP_KEY_SVC_KEI_LIST);

		if(svcKeiList != null && svcKeiList.size() > 0)
		{
			for(int i = 0; i < svcKeiList.size(); i++)
			{
				svcKeiNoInfo = (HashMap<String, Object>)svcKeiList.get(i);
				HashMap<String, Object> childMap = null;

				if(kaiTaiList.size() -1 >= i)
				{
					childMap = (HashMap<String, Object>)kaiTaiList.get(i);
				}
				else
				{
					childMap = new HashMap<String, Object>();
				}

				// 強制解約対象抽出マップ.サービス契約番号リスト.請求契約番号 → 強制解約実行マップ.請求契約番号
				if(svcKeiNoInfo != null)
				{
					childMap.put(MAP_KEY_KAI_TAI_SEIKY_KEI_NO, svcKeiNoInfo.get(MAP_KEY_SEIKY_KEI_NO));
				}
				// 強制解約対象抽出マップ.サービス契約番号リスト.サービス契約番号 → 強制解約実行マップ.サービス契約番号
				if(svcKeiNoInfo != null)
				{
					childMap.put(MAP_KEY_KAI_TAI_SVC_KEI_NO, svcKeiNoInfo.get(MAP_KEY_SVC_KEI_NO));
				}

				ArrayList<HashMap<String, Object>> EKK0011D020CBSMsg1List = (ArrayList<HashMap<String, Object>>)svcKeiNoInfo.get("EKK0011D020CBSMsg1List");
				if(EKK0011D020CBSMsg1List != null && EKK0011D020CBSMsg1List.size() > 0)
				{
					HashMap<String, Object> tmpMap = (HashMap<String, Object>)EKK0011D020CBSMsg1List.get(0);
					// 強制解約対象抽出マップ.サービス契約番号リスト.申込内容承認登録リスト.申込明細番号 → 強制解約実行マップ.申込明細番号
					if(tmpMap != null)
					{
						childMap.put(MAP_KEY_MSKM_DTL_NO, tmpMap.get(MAP_KEY_MSKM_DTL_NO));
					}
				}

				// 運用日付の取得
				String OpeDate = JCCBPCommon.getOpeDate(JACStrConst.SYS_CD_CH);

				// 運用日付 → 強制解約実行マップ.依頼年月日
				childMap.put(MAP_KEY_KAI_TAI_REQYMD, OpeDate);
				// 運用日付 -1 日→ 強制解約実行マップ.サービス課金終了年月日
				childMap.put(MAP_KEY_KAI_TAI_SVC_CHRG_ENDYMD, JCCDateUtil.addDay(OpeDate, -1));

				kaiTaiList.add(childMap);
			}
		}
		// 強制解約実行リスト格納
		parentMap.put(MAP_KEY_KAI_TAI_LST, kaiTaiList);

		param.setData(MAP_CC_ID_KYOSEI_DSL_TG_RUN, parentMap);

		return param;
	}

	/**
	 * 料金対応履歴登録マップ形成を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception 例外が発生した場合
	 */
	public IRequestParameterReadWrite taioRirekiMapping(SessionHandle handle, 
			IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> taioKirokTmpMap = (HashMap<String, Object>)param.getData(MAP_CC_ID_PRC_TAIO_KIROK_TMP);
		HashMap<String, Object> tokusokuIdoAddRslt = (HashMap<String, Object>)param.getData(MAP_CC_ID_TOKUSOKU_IDO_ADD_RUN);
		

		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> prcTaioList = new ArrayList<HashMap<String, Object>>();
		// OM-2019-0000588 MOD START
		//String tokusokuIdoNo = (String)tokusokuIdoAddRslt.get("tokusoku_ido_no");
		String tokusokuIdoNo = "";
		if (tokusokuIdoAddRslt != null && tokusokuIdoAddRslt.containsKey("tokusoku_ido_no"))
		{
			tokusokuIdoNo = (String)tokusokuIdoAddRslt.get("tokusoku_ido_no");
		}
		// OM-2019-0000588 MOD END

		// 共通情報のマッピング詰め替え
		parentMap.put("func_code", taioKirokTmpMap.get("func_code"));

		// 支払約束日判定結果に応じた料金対応記録登録リスト形成
		prcTaioList = this.payYakusokuJdg(taioKirokTmpMap, prcTaioList, tokusokuIdoNo);

		// 督促ステータス判定結果に応じた料金対応記録登録リスト形成
		prcTaioList = this.tokusokuStatJdg(taioKirokTmpMap, prcTaioList, tokusokuIdoNo);

		// 請求抑止判定結果に応じた料金対応記録登録リスト形成
		prcTaioList = this.seikyYoksiJdg(taioKirokTmpMap, prcTaioList, tokusokuIdoNo);

		// 督促副次判定（利用停止、利用停止解除、強制解約）結果に応じた料金対応記録登録リスト形成
		// 【OT-2013-0000632】コメントアウト(督促更新からは上記履歴を登録しない)
		//prcTaioList = this.tokusokuHukjiJdg(taioKirokTmpMap, prcTaioList, tokusokuIdoNo);
		
		//OM-2014-0003792 ADD START
		
		HashMap<String, Object> prcTaioKirokTmpMap = (HashMap<String, Object>) param.getData("PRCTAIOKIROKTMP");
		
		if(prcTaioKirokTmpMap != null)
		{
			String screenName = JACStrConst.KARA_MOJI;
		
			if(prcTaioKirokTmpMap.containsKey("title")){
				screenName = (String)prcTaioKirokTmpMap.get("title");
			}
			
			if(screenName != null && !JACStrConst.KARA_MOJI.equals(screenName))
			{
				//OM-2014-0003792 MOD START
				//if(screenName != null && "督促状況更新".equals(screenName))
				if(screenName != null && JACStrConst.SCREEN_NAME_CHW01302.equals(screenName))
				{
					// 督促副次判定（利用停止実施、強制解約実施）結果に応じた料金対応記録登録リスト形成
					prcTaioList = this.tokusokuHukjiJdgStDl(taioKirokTmpMap, prcTaioList, tokusokuIdoNo);
				}
				//OM-2014-0003792 MOD END
			}
		}

		//OM-2014-0003792 ADD END

// 2014.10.18 ANK-2273-00-00 add start
		// CIC連携内容コード判定結果に応じた料金対応記録登録リスト形成
		prcTaioList = this.cicNaiyoCdJdg(taioKirokTmpMap, prcTaioList, tokusokuIdoNo);
// 2014.10.18 ANK-2273-00-00 add end

		// 料金対応記録登録リスト格納
		parentMap.put(MAP_KEY_PRC_TAIO_KIROK_LIST, prcTaioList);

		param.setData(MAP_CC_ID_PRC_TAIO_KIROK_ADD_RUN, parentMap);

		return param;
	}

	/**
	 * 支払約束日判定を行い、結果を料金対応履歴登録リストに追加して返却する。
	 * <br>
	 * @param taioKirokTmpMap 料金対応履歴一時マップ
	 * @param prcTaioList 料金対応履歴登録リスト
	 * @param tokusokuIdoNo 督促異動番号
	 * @return 料金対応履歴登録リスト
	 * @throws Exception 例外が発生した場合
	 */
	private ArrayList<HashMap<String, Object>> payYakusokuJdg(HashMap<String, Object> taioKirokTmpMap, 
			ArrayList<HashMap<String, Object>> prcTaioList, String tokusokuIdoNo) throws Exception
	{
		HashMap<String, Object> childMap = new HashMap<String, Object>();

		String payYakusokuYmdBf = (String)taioKirokTmpMap.get("pay_yakusoku_ymd");
		String payYakusokuYmdAf = (String)taioKirokTmpMap.get("pay_yakusoku_ymd_af");
		String payYakusokuRikoYmdBf = (String)taioKirokTmpMap.get("pay_yakusoku_riko_ymd");
		String payYakusokuRikoYmdAf = (String)taioKirokTmpMap.get("pay_yakusoku_riko_ymd_af");

		if (((payYakusokuYmdBf != null && !payYakusokuYmdBf.equals(payYakusokuYmdAf))
				|| (payYakusokuYmdAf != null && !payYakusokuYmdAf.equals(payYakusokuYmdBf))) || 
			((payYakusokuRikoYmdBf != null && !payYakusokuRikoYmdBf.equals(payYakusokuRikoYmdAf))
				|| (payYakusokuRikoYmdAf != null && !payYakusokuRikoYmdAf.equals(payYakusokuRikoYmdBf))))
		{
			if (JACStrConst.KARA_MOJI.equals(payYakusokuYmdBf))
			{
				// ◇支払約束日登録として料金対応記録リストに追加
				// 料金対応記録種別詳細コード（：支払約束日登録） → 料金対応記録明細リスト.料金対応記録種別詳細コード
				childMap.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.TKRK_SBTD_PAY_YAKSOK_DAY_ADD);
				// 変更支払約束日 → 料金対応記録明細リスト.変更後年月日
				childMap.put("chg_af_ymd", payYakusokuYmdAf);
			}
			else if (JACStrConst.KARA_MOJI.equals(payYakusokuYmdAf))
			{
				// ◇支払約束日削除として料金対応記録リストに追加
				// 料金対応記録種別詳細コード（：支払約束日削除） → 料金対応記録明細リスト.料金対応記録種別詳細コード
				childMap.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.TKRK_SBTD_PAY_YAKSOK_DAY_DEL);
				// 支払約束日 → 料金対応記録明細リスト.変更前年月日
				childMap.put("chg_bf_ymd", payYakusokuYmdBf);
			}
			else
			{
				// ◇支払約束日変更として料金対応記録リストに追加
				// 料金対応記録種別詳細コード（：支払約束日変更） → 料金対応記録明細リスト.料金対応記録種別詳細コード
				childMap.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.TKRK_SBTD_PAY_YAKSOK_DAY_CHG);
				// 支払約束日 → 料金対応記録明細リスト.変更前年月日
				childMap.put("chg_bf_ymd", payYakusokuYmdBf);
				// 変更支払約束日 → 料金対応記録明細リスト.変更後年月日
				childMap.put("chg_af_ymd", payYakusokuYmdAf);
			}

			// ◇支払約束日に関する料金対応記録共通項目の設定
			// 料金対応ユーザＩＤ → 料金対応記録明細リスト.料金対応ユーザＩＤ
			childMap.put("prc_taio_user_id", (String)taioKirokTmpMap.get("prc_taio_user_id"));
			// 請求契約番号 → 料金対応記録明細リスト.請求契約番号
			childMap.put("seiky_kei_no", (String)taioKirokTmpMap.get("seiky_kei_no"));
			// 料金対応記録種別コード（：督促状況更新） → 料金対応記録明細リスト.料金対応記録種別コード
			childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_TOKUSOKU_STAT_UPD);
			// タイトル → 料金対応記録明細リスト.タイトル
			childMap.put("title", (String)taioKirokTmpMap.get("title"));
			// 記事 → 料金対応記録明細リスト.記事
			childMap.put("kiji", (String)taioKirokTmpMap.get("kiji"));
			// 空文字 → 料金対応記録明細リスト.記録対象年月
			childMap.put("kirok_tg_ym", JACStrConst.KARA_MOJI);
			// 督促番号 → 料金対応記録明細リスト.督促番号
			childMap.put("tokusoku_no", (String)taioKirokTmpMap.get("tokusoku_no"));
			// 督促異動番号 → 料金対応記録明細リスト.督促異動番号
			childMap.put("tokusoku_ido_no", tokusokuIdoNo);
			// 対応履歴表示連動対象フラグ → 料金対応記録明細リスト.対応履歴表示連動対象フラグ
			childMap.put("taiorrki_rendo_tg_flg", (String)taioKirokTmpMap.get("taiorrki_rendo_tg_flg"));

			// 料金対応記録明細リストに追加
			prcTaioList.add(childMap);

		}

		return prcTaioList;
	}

	/**
	 * 督促ステータス判定を行い、結果を料金対応履歴登録リストに追加して返却する。
	 * <br>
	 * @param taioKirokTmpMap 料金対応履歴一時マップ
	 * @param prcTaioList 料金対応履歴登録リスト
	 * @param tokusokuIdoNo 督促異動番号
	 * @return 料金対応履歴登録リスト
	 * @throws Exception 例外が発生した場合
	 */
	private ArrayList<HashMap<String, Object>> tokusokuStatJdg(HashMap<String, Object> taioKirokTmpMap, 
			ArrayList<HashMap<String, Object>> prcTaioList, String tokusokuIdoNo) throws Exception
	{
		HashMap<String, Object> childMap = new HashMap<String, Object>();

		String tokusokuStatBf = (String)taioKirokTmpMap.get("tokusoku_stat_bf");
		String tokusokuStatAf = (String)taioKirokTmpMap.get("tokusoku_stat_af");
		// ANK-3396-00-00 ADD START
		// 督促データ新規登録フラグを取得（JBSbatCHTokusokuStatIktUpdにて設定）
		String tokusokuNewAddFlg = (String)taioKirokTmpMap.get("prc_taiokrk_tokusoku_new_add_flg");
		// ANK-3396-00-00 ADD END

		if(tokusokuStatBf != null && !JACStrConst.KARA_MOJI.equals(tokusokuStatBf)
			&& tokusokuStatAf != null && !JACStrConst.KARA_MOJI.equals(tokusokuStatAf)
			&& !tokusokuStatBf.equals(tokusokuStatAf))
		{
			
			// 料金対応ユーザＩＤ → 料金対応記録明細リスト.料金対応ユーザＩＤ
			childMap.put("prc_taio_user_id", (String)taioKirokTmpMap.get("prc_taio_user_id"));
			// 請求契約番号 → 料金対応記録明細リスト.請求契約番号
			childMap.put("seiky_kei_no", (String)taioKirokTmpMap.get("seiky_kei_no"));
			// 料金対応記録種別コード（：督促状況更新） → 料金対応記録明細リスト.料金対応記録種別コード
			childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_TOKUSOKU_STAT_UPD);
			// 料金対応記録種別詳細コード（：督促ステータス変更） → 料金対応記録明細リスト.料金対応記録種別詳細コード
			childMap.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.TKRK_SBTD_TOKUSOKU_ST_CHG);
			// ANK-3396-00-00 ADD START
			if (tokusokuNewAddFlg != null && !JACStrConst.KARA_MOJI.equals(tokusokuNewAddFlg))
			{
				// 督促データ新規登録フラグが"1（新規登録）"の場合のみ"【早期利用停止】督促ステータス変更"となる値で上書き
				if ("1".equals(tokusokuNewAddFlg))
				{
					// 料金対応記録種別詳細コード（：【早期利用停止】督促ステータス変更） → 料金対応記録明細リスト.料金対応記録種別詳細コード
					childMap.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.PRC_TAIO_KIROK_SBT_DTL_EARLY_USE_STP_TKSK_STAT_CHG);
				}
			}
			// ANK-3396-00-00 ADD END
			
			// タイトル → 料金対応記録明細リスト.タイトル
			childMap.put("title", (String)taioKirokTmpMap.get("title"));
			// 記事 → 料金対応記録明細リスト.記事
			childMap.put("kiji", (String)taioKirokTmpMap.get("kiji"));
			// 空文字 → 料金対応記録明細リスト.記録対象年月
			childMap.put("kirok_tg_ym", JACStrConst.KARA_MOJI);
			// 督促番号 → 料金対応記録明細リスト.督促番号
			childMap.put("tokusoku_no", (String)taioKirokTmpMap.get("tokusoku_no"));
			// 督促異動番号 → 料金対応記録明細リスト.督促異動番号
			childMap.put("tokusoku_ido_no", tokusokuIdoNo);
			// 対応履歴表示連動対象フラグ → 料金対応記録明細リスト.対応履歴表示連動対象フラグ
			childMap.put("taiorrki_rendo_tg_flg", (String)taioKirokTmpMap.get("taiorrki_rendo_tg_flg"));
			// 変更前コード種別コード → 料金対応記録明細リスト.変更前コード種別コード
			childMap.put("chg_bf_cd_sbt_cd", "CD00184");
			// 変更前コード区分 → 料金対応記録明細リスト.変更前コード区分
			childMap.put("chg_bf_cd_div", tokusokuStatBf);
			// 変更後コード種別コード → 料金対応記録明細リスト.変更後コード種別コード
			childMap.put("chg_af_cd_sbt_cd", "CD00184");
			// 変更後コード区分 → 料金対応記録明細リスト.変更後コード区分
			childMap.put("chg_af_cd_div", tokusokuStatAf);

			// 料金対応記録明細リストに追加
			prcTaioList.add(childMap);
		}

		return prcTaioList;
	}

	/**
	 * 請求抑止判定を行い、結果を料金対応履歴登録リストに追加して返却する。
	 * <br>
	 * @param taioKirokTmpMap 料金対応履歴一時マップ
	 * @param prcTaioList 料金対応履歴登録リスト
	 * @param tokusokuIdoNo 督促異動番号
	 * @return 料金対応履歴登録リスト
	 * @throws Exception 例外が発生した場合
	 */
	private ArrayList<HashMap<String, Object>> seikyYoksiJdg(HashMap<String, Object> taioKirokTmpMap, 
			ArrayList<HashMap<String, Object>> prcTaioList, String tokusokuIdoNo) throws Exception
	{
		ArrayList<HashMap<String, Object>> seikyYoksiList = new ArrayList<HashMap<String, Object>>();
		seikyYoksiList = (ArrayList<HashMap<String, Object>>)taioKirokTmpMap.get("seikyYoksiList");
		HashMap<String, Object> seikyYoksiInfo = new HashMap<String, Object>();

		if(seikyYoksiList != null && seikyYoksiList.size() > 0)
		{
			// 請求抑止マップ形成
			HashMap<String, Object> yoksiMap = this.getYoksiMap();
			// 請求抑止解除マップ形成
			HashMap<String, Object> yoksiRlsMap = this.getYoksiRlsMap();

			for(int i = 0; i < seikyYoksiList.size(); i++)
			{
				seikyYoksiInfo = (HashMap<String, Object>)seikyYoksiList.get(i);
				HashMap<String, Object> childMap = new HashMap<String, Object>();

				String yoksiFlgBf = (String)seikyYoksiInfo.get("henko_mae_yoksi_flg");
				String yoksiFlgAf = (String)seikyYoksiInfo.get("seiky_yoksi_flg");
				String seikyYoksiCd = (String)seikyYoksiInfo.get("seiky_yoksi_cd");

				if(!yoksiFlgBf.equals(yoksiFlgAf))
				{
					if(JACStrConst.YOKSI_FLG_ARI.equals(yoksiFlgAf))
					{
						// ◇請求抑止設定に伴う料金対応記録の形成
						// 料金対応記録種別詳細コード（請求抑止情報に紐付くコード） → 料金対応記録明細リスト.料金対応記録種別詳細コード
						childMap.put("prc_taio_kirok_sbt_dtl_cd", (String)yoksiMap.get(seikyYoksiCd));
					}
					else
					{
						// ◇請求抑止解除設定に伴う料金対応記録の形成
						// 料金対応記録種別詳細コード（請求抑止情報に紐付くコード） → 料金対応記録明細リスト.料金対応記録種別詳細コード
						childMap.put("prc_taio_kirok_sbt_dtl_cd", (String)yoksiRlsMap.get(seikyYoksiCd));
					}

					// 料金対応ユーザＩＤ → 料金対応記録明細リスト.料金対応ユーザＩＤ
					childMap.put("prc_taio_user_id", (String)taioKirokTmpMap.get("prc_taio_user_id"));
					// 請求契約番号 → 料金対応記録明細リスト.請求契約番号
					childMap.put("seiky_kei_no", (String)taioKirokTmpMap.get("seiky_kei_no"));
					// 料金対応記録種別コード（：督促状況更新） → 料金対応記録明細リスト.料金対応記録種別コード
					childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_TOKUSOKU_STAT_UPD);
					// タイトル → 料金対応記録明細リスト.タイトル
					childMap.put("title", (String)taioKirokTmpMap.get("title"));
					// 記事 → 料金対応記録明細リスト.記事
					childMap.put("kiji", (String)taioKirokTmpMap.get("kiji"));
					// 空文字 → 料金対応記録明細リスト.記録対象年月
					childMap.put("kirok_tg_ym", JACStrConst.KARA_MOJI);
					// 督促番号 → 料金対応記録明細リスト.督促番号
					childMap.put("tokusoku_no", (String)taioKirokTmpMap.get("tokusoku_no"));
					// 督促異動番号 → 料金対応記録明細リスト.督促異動番号
					childMap.put("tokusoku_ido_no", tokusokuIdoNo);
					// 対応履歴表示連動対象フラグ → 料金対応記録明細リスト.対応履歴表示連動対象フラグ
					childMap.put("taiorrki_rendo_tg_flg", (String)taioKirokTmpMap.get("taiorrki_rendo_tg_flg"));

					// 料金対応記録明細リストに追加
					prcTaioList.add(childMap);
				}
			}
		}

		return prcTaioList;
	}

	/**
	 * 督促副次判定を行い、結果を料金対応履歴登録リストに追加して返却する。
	 * <br>
	 * @param taioKirokTmpMap 料金対応履歴一時マップ
	 * @param prcTaioList 料金対応履歴登録リスト
	 * @param tokusokuIdoNo 督促異動番号
	 * @return 料金対応履歴登録リスト
	 * @throws Exception 例外が発生した場合
	 */
	private ArrayList<HashMap<String, Object>> tokusokuHukjiJdg(HashMap<String, Object> taioKirokTmpMap, 
			ArrayList<HashMap<String, Object>> prcTaioList, String tokusokuIdoNo) throws Exception
	{
		String useStpTgFlg = (String)taioKirokTmpMap.get("use_stp_tg_flg");
		String useStpRlsTgFlg = (String)taioKirokTmpMap.get("use_stp_rls_tg_flg");
		String ksiDslTgFlg = (String)taioKirokTmpMap.get("ksi_dsl_tg_flg");

		// ◇利用停止実施時
		if(JACStrConst.USE_STP_TG_FLG_ON.equals(useStpTgFlg))
		{

			// ◇利用停止実施に伴う料金対応記録の形成
			HashMap<String, Object> childMap1 = new HashMap<String, Object>();

			// 料金対応ユーザＩＤ → 料金対応記録明細リスト.料金対応ユーザＩＤ
			childMap1.put("prc_taio_user_id", (String)taioKirokTmpMap.get("prc_taio_user_id"));
			// 請求契約番号 → 料金対応記録明細リスト.請求契約番号
			childMap1.put("seiky_kei_no", (String)taioKirokTmpMap.get("seiky_kei_no"));
			// 料金対応記録種別コード（：督促状況更新） → 料金対応記録明細リスト.料金対応記録種別コード
			childMap1.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_TOKUSOKU_STAT_UPD);
			// 料金対応記録種別詳細コード（：利用停止実施） → 料金対応記録明細リスト.料金対応記録種別詳細コード
			childMap1.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.TKRK_SBTD_USE_STP_JSSI);
			// タイトル → 料金対応記録明細リスト.タイトル
			childMap1.put("title", (String)taioKirokTmpMap.get("title"));
			// 記事 → 料金対応記録明細リスト.記事
			childMap1.put("kiji", (String)taioKirokTmpMap.get("kiji"));
			// 空文字 → 料金対応記録明細リスト.記録対象年月
			childMap1.put("kirok_tg_ym", JACStrConst.KARA_MOJI);
			// 督促番号 → 料金対応記録明細リスト.督促番号
			childMap1.put("tokusoku_no", (String)taioKirokTmpMap.get("tokusoku_no"));
			// 督促異動番号 → 料金対応記録明細リスト.督促異動番号
			childMap1.put("tokusoku_ido_no", tokusokuIdoNo);
			// 対応履歴表示連動対象フラグ → 料金対応記録明細リスト.対応履歴表示連動対象フラグ
			childMap1.put("taiorrki_rendo_tg_flg", (String)taioKirokTmpMap.get("taiorrki_rendo_tg_flg"));

			// 料金対応記録明細リストに追加
			prcTaioList.add(childMap1);
		}

		// ◇利用停止解除実施時
		if(JACStrConst.USE_STP_TG_RLS_FLG_ON.equals(useStpRlsTgFlg))
		{
			// ◇利用停止解除実施に伴う料金対応記録の形成
			HashMap<String, Object> childMap2 = new HashMap<String, Object>();

			// 料金対応ユーザＩＤ → 料金対応記録明細リスト.料金対応ユーザＩＤ
			childMap2.put("prc_taio_user_id", (String)taioKirokTmpMap.get("prc_taio_user_id"));
			// 請求契約番号 → 料金対応記録明細リスト.請求契約番号
			childMap2.put("seiky_kei_no", (String)taioKirokTmpMap.get("seiky_kei_no"));
			// 料金対応記録種別コード（：督促状況更新） → 料金対応記録明細リスト.料金対応記録種別コード
			childMap2.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_TOKUSOKU_STAT_UPD);
			// 料金対応記録種別詳細コード（：利用停止解除実施） → 料金対応記録明細リスト.料金対応記録種別詳細コード
			childMap2.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.TKRK_SBTD_USE_STP_CL);
			// タイトル → 料金対応記録明細リスト.タイトル
			childMap2.put("title", (String)taioKirokTmpMap.get("title"));
			// 記事 → 料金対応記録明細リスト.記事
			childMap2.put("kiji", (String)taioKirokTmpMap.get("kiji"));
			// 空文字 → 料金対応記録明細リスト.記録対象年月
			childMap2.put("kirok_tg_ym", JACStrConst.KARA_MOJI);
			// 督促番号 → 料金対応記録明細リスト.督促番号
			childMap2.put("tokusoku_no", (String)taioKirokTmpMap.get("tokusoku_no"));
			// 督促異動番号 → 料金対応記録明細リスト.督促異動番号
			childMap2.put("tokusoku_ido_no", tokusokuIdoNo);
			// 対応履歴表示連動対象フラグ → 料金対応記録明細リスト.対応履歴表示連動対象フラグ
			childMap2.put("taiorrki_rendo_tg_flg", (String)taioKirokTmpMap.get("taiorrki_rendo_tg_flg"));

			// 料金対応記録明細リストに追加
			prcTaioList.add(childMap2);
		}

		// ◇強制解約実施時
		if(JACStrConst.KSI_DSL_TG_FLG_ON.equals(ksiDslTgFlg))
		{
			// ◇強制解約実施に伴う料金対応記録の形成
			HashMap<String, Object> childMap3 = new HashMap<String, Object>();

			// 料金対応ユーザＩＤ → 料金対応記録明細リスト.料金対応ユーザＩＤ
			childMap3.put("prc_taio_user_id", (String)taioKirokTmpMap.get("prc_taio_user_id"));
			// 請求契約番号 → 料金対応記録明細リスト.請求契約番号
			childMap3.put("seiky_kei_no", (String)taioKirokTmpMap.get("seiky_kei_no"));
			// 料金対応記録種別コード（：督促状況更新） → 料金対応記録明細リスト.料金対応記録種別コード
			childMap3.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_TOKUSOKU_STAT_UPD);
			// 料金対応記録種別詳細コード（：強制解約実施） → 料金対応記録明細リスト.料金対応記録種別詳細コード
			childMap3.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.TKRK_SBTD_KYOSEI_DSL_JSSI);
			// タイトル → 料金対応記録明細リスト.タイトル
			childMap3.put("title", (String)taioKirokTmpMap.get("title"));
			// 記事 → 料金対応記録明細リスト.記事
			childMap3.put("kiji", (String)taioKirokTmpMap.get("kiji"));
			// 空文字 → 料金対応記録明細リスト.記録対象年月
			childMap3.put("kirok_tg_ym", JACStrConst.KARA_MOJI);
			// 督促番号 → 料金対応記録明細リスト.督促番号
			childMap3.put("tokusoku_no", (String)taioKirokTmpMap.get("tokusoku_no"));
			// 督促異動番号 → 料金対応記録明細リスト.督促異動番号
			childMap3.put("tokusoku_ido_no", tokusokuIdoNo);
			// 対応履歴表示連動対象フラグ → 料金対応記録明細リスト.対応履歴表示連動対象フラグ
			childMap3.put("taiorrki_rendo_tg_flg", (String)taioKirokTmpMap.get("taiorrki_rendo_tg_flg"));

			// 料金対応記録明細リストに追加
			prcTaioList.add(childMap3);
		}

		return prcTaioList;
	}

	/**
	 * 請求抑止マップ（請求抑止コード：料金対応記録種別詳細）を返却する。
	 * <br>
	 * @return 請求抑止マップ
	 * @throws Exception 例外が発生した場合
	 */
	private HashMap<String, Object> getYoksiMap() throws Exception
	{
		HashMap<String, Object> yoksiMap = new HashMap<String, Object>();

		// 請求抑止コード（請求書等発行抑止）： 料金対応記録種別詳細（請求書等発行抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SKS_YOKSI, JACStrConst.TKRK_SBTD_YKSI_SKS);
		// 請求抑止コード（請求書等内訳発行抑止）： 料金対応記録種別詳細（請求書等内訳発行抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SEIKYUS_TOU, JACStrConst.TKRK_SBTD_YKSI_SKSUW);
		// 請求抑止コード（口座番号発行抑止）： 料金対応記録種別詳細（口座番号表示抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KOZANO_YOKSI, JACStrConst.TKRK_SBTD_YKSI_KOZA);
		// 請求抑止コード（合算請求抑止）： 料金対応記録種別詳細（合算請求抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_GSN_SEIKY, JACStrConst.TKRK_SBTD_YKSI_GSN_SEIKY);
		// 請求抑止コード（ＷＥＢ請求情報公開要否）： 料金対応記録種別詳細（ＷＥＢ公開抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_WEB, JACStrConst.TKRK_SBTD_YKSI_WEB);
		// 請求抑止コード（請求書発行手数料抑止(課金)）： 料金対応記録種別詳細（請求書発行手数料抑止（課金））
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_HAK_CMS_YOKSI, JACStrConst.TKRK_SBTD_YKSI_SKS_CMS);
		// 請求抑止コード（強制窓口抑止）： 料金対応記録種別詳細（強制窓口抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KYOSEI_MDGC, JACStrConst.TKRK_SBTD_YKSI_KYOSEI_MDGC);
		// 請求抑止コード（督促抑止）： 料金対応記録種別詳細（督促抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_TKSK, JACStrConst.TKRK_SBTD_YKSI_TOKUSOKU);
		// 請求抑止コード（債権回収委託抑止）： 料金対応記録種別詳細（債権回収委託抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SKN_ITK, JACStrConst.TKRK_SBTD_YKSI_SKNKSITK);
		// 請求抑止コード（加入者情報交換抑止）： 料金対応記録種別詳細（加入者情報交換抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KNYSHA_INFO_KOKAN, JACStrConst.TKRK_SBTD_YKSI_KNYSHA);
		// 請求抑止コード（督促メール抑止）： 料金対応記録種別詳細（督促メール抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_TKSK_MAIL, JACStrConst.TKRK_SBTD_YKSI_TOKUSOKU_ML);
		// 2015.03.10 ANK-2416-00-00 add start
		// 請求抑止コード（請求書ハガキ化抑止）： 料金対応記録種別詳細（請求書ハガキ化抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SKS_HAGAKI, JACStrConst.TKRK_SBTD_YKSI_SKS_HAGAKI);
		// 2015.03.10 ANK-2416-00-00 add end
		// ANK-3586-00-00 add start
		// 請求抑止コード（隔月請求抑止）： 料金対応記録種別詳細（隔月請求抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KAKGT_SEIKY_SKIP, JACStrConst.TKRK_SBTD_YKSI_KAKGT_SKIP);
		// ANK-3586-00-00 add end
		// ANK-3838-00-00 ADD START
		// 請求抑止コード（企業負担抑止）： 料金対応記録種別詳細（振込手数料企業負担抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KI_FTN, JACStrConst.TKRK_SBTD_YKSI_KIFTN);
		// 請求抑止コード（顧客負担抑止）： 料金対応記録種別詳細（振込手数料顧客負担抑止）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KO_FTN, JACStrConst.TKRK_SBTD_YKSI_KOFTN);
		// ANK-3838-00-00 ADD END
		return yoksiMap;
	}

	/**
	 * 請求抑止解除マップ（請求抑止コード：料金対応記録種別詳細）を返却する。
	 * <br>
	 * @return 請求抑止解除マップ
	 * @throws Exception 例外が発生した場合
	 */
	private HashMap<String, Object> getYoksiRlsMap() throws Exception
	{
		HashMap<String, Object> yoksiMap = new HashMap<String, Object>();

		// 請求抑止コード（請求書等発行抑止）： 料金対応記録種別詳細（請求書等発行抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SKS_YOKSI, JACStrConst.TKRK_SBTD_YKSCL_SKS);
		// 請求抑止コード（請求書等内訳発行抑止）： 料金対応記録種別詳細（請求書等内訳発行抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SEIKYUS_TOU, JACStrConst.TKRK_SBTD_YKSCL_SKSUW);
		// 請求抑止コード（口座番号発行抑止）： 料金対応記録種別詳細（口座番号表示抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KOZANO_YOKSI, JACStrConst.TKRK_SBTD_YKSCL_KOZA);
		// 請求抑止コード（合算請求抑止）： 料金対応記録種別詳細（合算請求抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_GSN_SEIKY, JACStrConst.TKRK_SBTD_YKSCL_GSN_SEIKY);
		// 請求抑止コード（ＷＥＢ請求情報公開要否）： 料金対応記録種別詳細（ＷＥＢ公開抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_WEB, JACStrConst.TKRK_SBTD_YKSCL_WEB);
		// 請求抑止コード（請求書発行手数料抑止(課金)）： 料金対応記録種別詳細（請求書発行手数料抑止（課金）解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_HAK_CMS_YOKSI, JACStrConst.TKRK_SBTD_YKSCL_SKS_CMS);
		// 請求抑止コード（強制窓口抑止）： 料金対応記録種別詳細（強制窓口抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KYOSEI_MDGC, JACStrConst.TKRK_SBTD_YKSCL_KYOSEI_MDGC);
		// 請求抑止コード（督促抑止）： 料金対応記録種別詳細（督促抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_TKSK, JACStrConst.TKRK_SBTD_YKSCL_TOKUSOKU);
		// 請求抑止コード（債権回収委託抑止）： 料金対応記録種別詳細（債権回収委託抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SKN_ITK, JACStrConst.TKRK_SBTD_YKSCL_SKNKSITK);
		// 請求抑止コード（加入者情報交換抑止）： 料金対応記録種別詳細（加入者情報交換抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KNYSHA_INFO_KOKAN, JACStrConst.TKRK_SBTD_YKSCL_KNYSHA);
		// 請求抑止コード（督促メール抑止）： 料金対応記録種別詳細（督促メール抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_TKSK_MAIL, JACStrConst.TKRK_SBTD_YKSCL_TOKUSOKU_ML);
		// 2015.03.10 ANK-2416-00-00 add start
		// 請求抑止コード（請求書ハガキ化抑止）： 料金対応記録種別詳細（請求書ハガキ化抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_SKS_HAGAKI, JACStrConst.TKRK_SBTD_YKSCL_SKS_HAGAKI);
		// 2015.03.10 ANK-2416-00-00 add end
		// ANK-3586-00-00 add start
		// 請求抑止コード（隔月請求抑止）： 料金対応記録種別詳細（隔月請求抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KAKGT_SEIKY_SKIP, JACStrConst.TKRK_SBTD_YKSCL_KAKGT_SKIP);
		// ANK-3586-00-00 add end
		// ANK-3838-00-00 ADD START
		// 請求抑止コード（企業負担抑止）： 料金対応記録種別詳細（振込手数料企業負担抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KI_FTN, JACStrConst.TKRK_SBTD_YKSCL_KIFTN);
		// 請求抑止コード（顧客負担抑止）： 料金対応記録種別詳細（振込手数料顧客負担抑止解除）
		yoksiMap.put(JACStrConst.SEIKY_YOKSI_CD_KO_FTN, JACStrConst.TKRK_SBTD_YKSCL_KOFTN);
		// ANK-3838-00-00 ADD END
		return yoksiMap;
	}

	// ▼▼ クラス内共通処理 ▼▼
	/**
	 * マップから指定されたリスト項目名の値を取得します。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param key リスト項目名
	 * @return マップ項目値
	 * @throws RequestParameterException パラメータ取得で例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> getMapListItem(IRequestParameterReadWrite param, String mapCcId, String key) throws RequestParameterException
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(mapCcId);
		return (ArrayList<HashMap<String, Object>>)inMap.get(key);
	}
	// ▲▲ クラス内共通処理 ▲▲
	
// 2014.10.18 ANK-2273-00-00 add start
	/**
	 * CIC連携内容コードの判定を行い、結果を料金対応履歴登録リストに追加して返却する。
	 * <br>
	 * @param taioKirokTmpMap 料金対応履歴一時マップ
	 * @param prcTaioList 料金対応履歴登録リスト
	 * @param tokusokuIdoNo 督促異動番号
	 * @return 料金対応履歴登録リスト
	 * @throws Exception 例外が発生した場合
	 */
	private ArrayList<HashMap<String, Object>> cicNaiyoCdJdg(HashMap<String, Object> taioKirokTmpMap, 
			ArrayList<HashMap<String, Object>> prcTaioList, String tokusokuIdoNo) throws Exception
	{
		HashMap<String, Object> childMap = new HashMap<String, Object>();

		String cicRnkiNaiyoCdBf = (String)taioKirokTmpMap.get("cic_rnki_naiyo_cd_bf");
		String cicRnkiNaiyoCdAf = (String)taioKirokTmpMap.get("cic_rnki_naiyo_cd_af");

		// 画面でCIC連携内容コードを変更していないときはcicRnkiNaiyoCdBf==null , cicRnkiNaiyoCdAf==null で渡される。
		// 変更しているときは、!= nullで、かつ、変更前 != 変更後 になっている。
		// 変更されているときだけ料金対応記録に登録する。
		if(cicRnkiNaiyoCdBf != null && !JACStrConst.KARA_MOJI.equals(cicRnkiNaiyoCdBf)
			&& cicRnkiNaiyoCdAf != null && !JACStrConst.KARA_MOJI.equals(cicRnkiNaiyoCdAf)
			&& !cicRnkiNaiyoCdBf.equals(cicRnkiNaiyoCdAf))
		{
			
			// 料金対応ユーザＩＤ → 料金対応記録明細リスト.料金対応ユーザＩＤ
			childMap.put("prc_taio_user_id", (String)taioKirokTmpMap.get("prc_taio_user_id"));
			// 請求契約番号 → 料金対応記録明細リスト.請求契約番号
			childMap.put("seiky_kei_no", (String)taioKirokTmpMap.get("seiky_kei_no"));
			
			// 料金対応記録種別コード（：督促状況更新） → 料金対応記録明細リスト.料金対応記録種別コード
			childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_TOKUSOKU_STAT_UPD);
			
			// 料金対応記録種別詳細コード（：ＣＩＣ連携制御フラグ変更） → 料金対応記録明細リスト.料金対応記録種別詳細コード
			childMap.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.PRC_TAIO_KIROK_SBT_DTL_CIC_RNKI_FLG);
			// タイトル → 料金対応記録明細リスト.タイトル
			childMap.put("title", (String)taioKirokTmpMap.get("title"));
			// 記事 → 料金対応記録明細リスト.記事
			childMap.put("kiji", (String)taioKirokTmpMap.get("kiji"));
			// 空文字 → 料金対応記録明細リスト.記録対象年月
			childMap.put("kirok_tg_ym", JACStrConst.KARA_MOJI);
			// 督促番号 → 料金対応記録明細リスト.督促番号
			childMap.put("tokusoku_no", (String)taioKirokTmpMap.get("tokusoku_no"));
			// 督促異動番号 → 料金対応記録明細リスト.督促異動番号
			childMap.put("tokusoku_ido_no", tokusokuIdoNo);
			// 対応履歴表示連動対象フラグ → 料金対応記録明細リスト.対応履歴表示連動対象フラグ
			childMap.put("taiorrki_rendo_tg_flg", (String)taioKirokTmpMap.get("taiorrki_rendo_tg_flg"));
			// 変更前コード種別コード → 料金対応記録明細リスト.変更前コード種別コード
			childMap.put("chg_bf_cd_sbt_cd", "CD01666");
			// 変更前コード区分 → 料金対応記録明細リスト.変更前コード区分
			childMap.put("chg_bf_cd_div", cicRnkiNaiyoCdBf);
			// 変更後コード種別コード → 料金対応記録明細リスト.変更後コード種別コード
			childMap.put("chg_af_cd_sbt_cd", "CD01666");
			// 変更後コード区分 → 料金対応記録明細リスト.変更後コード区分
			childMap.put("chg_af_cd_div", cicRnkiNaiyoCdAf);

			// 料金対応記録明細リストに追加
			prcTaioList.add(childMap);
		}

		return prcTaioList;
	}
// 2014.10.18 ANK-2273-00-00 add end
	
	//OM-2014-0003792 ADD START	
	/**
	 * 督促副次判定を行い、結果を料金対応履歴登録リストに追加して返却する。
	 * <br>
	 * @param taioKirokTmpMap 料金対応履歴一時マップ
	 * @param prcTaioList 料金対応履歴登録リスト
	 * @param tokusokuIdoNo 督促異動番号
	 * @return 料金対応履歴登録リスト
	 * @throws Exception 例外が発生した場合
	 */
	private ArrayList<HashMap<String, Object>> tokusokuHukjiJdgStDl(HashMap<String, Object> taioKirokTmpMap, 
			ArrayList<HashMap<String, Object>> prcTaioList, String tokusokuIdoNo) throws Exception
	{
		String useStpTgFlg = (String)taioKirokTmpMap.get("use_stp_tg_flg");
		String useStpRlsTgFlg = (String)taioKirokTmpMap.get("use_stp_rls_tg_flg");
		String ksiDslTgFlg = (String)taioKirokTmpMap.get("ksi_dsl_tg_flg");

		// ◇利用停止実施時
		if(JACStrConst.USE_STP_TG_FLG_ON.equals(useStpTgFlg))
		{

			// ◇利用停止実施に伴う料金対応記録の形成
			HashMap<String, Object> childMap1 = new HashMap<String, Object>();

			// 料金対応ユーザＩＤ → 料金対応記録明細リスト.料金対応ユーザＩＤ
			childMap1.put("prc_taio_user_id", (String)taioKirokTmpMap.get("prc_taio_user_id"));
			// 請求契約番号 → 料金対応記録明細リスト.請求契約番号
			childMap1.put("seiky_kei_no", (String)taioKirokTmpMap.get("seiky_kei_no"));
			// 料金対応記録種別コード（：督促状況更新） → 料金対応記録明細リスト.料金対応記録種別コード
			childMap1.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_TOKUSOKU_STAT_UPD);
			// 料金対応記録種別詳細コード（：利用停止実施） → 料金対応記録明細リスト.料金対応記録種別詳細コード
			childMap1.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.TKRK_SBTD_USE_STP_JSSI);
			// タイトル → 料金対応記録明細リスト.タイトル
			childMap1.put("title", JACStrConst.USE_STP_JSSI);
			// 記事 → 料金対応記録明細リスト.記事
			childMap1.put("kiji", (String)taioKirokTmpMap.get("kiji"));
			// 空文字 → 料金対応記録明細リスト.記録対象年月
			childMap1.put("kirok_tg_ym", JACStrConst.KARA_MOJI);
			// 対応履歴表示連動対象フラグ → 料金対応記録明細リスト.対応履歴表示連動対象フラグ
			childMap1.put("taiorrki_rendo_tg_flg", (String)taioKirokTmpMap.get("taiorrki_rendo_tg_flg"));

			// 料金対応記録明細リストに追加
			prcTaioList.add(childMap1);
		}

		// ◇強制解約実施時
		if(JACStrConst.KSI_DSL_TG_FLG_ON.equals(ksiDslTgFlg))
		{
			// ◇強制解約実施に伴う料金対応記録の形成
			HashMap<String, Object> childMap3 = new HashMap<String, Object>();

			// 料金対応ユーザＩＤ → 料金対応記録明細リスト.料金対応ユーザＩＤ
			childMap3.put("prc_taio_user_id", (String)taioKirokTmpMap.get("prc_taio_user_id"));
			// 請求契約番号 → 料金対応記録明細リスト.請求契約番号
			childMap3.put("seiky_kei_no", (String)taioKirokTmpMap.get("seiky_kei_no"));
			// 料金対応記録種別コード（：督促状況更新） → 料金対応記録明細リスト.料金対応記録種別コード
			childMap3.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_TOKUSOKU_STAT_UPD);
			// 料金対応記録種別詳細コード（：強制解約実施） → 料金対応記録明細リスト.料金対応記録種別詳細コード
			childMap3.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.TKRK_SBTD_KYOSEI_DSL_JSSI);
			// タイトル → 料金対応記録明細リスト.タイトル
			childMap3.put("title", JACStrConst.KYOSEI_DSL_JSSI);
			// 記事 → 料金対応記録明細リスト.記事
			childMap3.put("kiji", (String)taioKirokTmpMap.get("kiji"));
			// 空文字 → 料金対応記録明細リスト.記録対象年月
			childMap3.put("kirok_tg_ym", JACStrConst.KARA_MOJI);
			// 対応履歴表示連動対象フラグ → 料金対応記録明細リスト.対応履歴表示連動対象フラグ
			childMap3.put("taiorrki_rendo_tg_flg", (String)taioKirokTmpMap.get("taiorrki_rendo_tg_flg"));

			// 料金対応記録明細リストに追加
			prcTaioList.add(childMap3);
		}
		
		return prcTaioList;
	}
	//OM-2014-0003792 ADD END
	//OM-2014-0003792 DEL START
//	/**
//	 * 利用停止解除情報の設定を行います。 <br>
//	 * 
//	 * @param param リクエストパラメータ
//	 * @return param リクエストパラメータ
//	 * @throws Exception 例外が発生した場合
//	 */
//	@SuppressWarnings("unchecked")
//	public IRequestParameterReadWrite riyoteiKaijoInfo(IRequestParameterReadWrite param, ArrayList<HashMap<String, Object>> useStpRlsList) throws Exception
//	{
//		HashMap<String, Object> prcTaioKirokTmpMap = (HashMap<String, Object>) param.getData(JACStrConst.PRCTAIOKIROKADDCC_MAP_ID);
//		
//		if(prcTaioKirokTmpMap != null)
//		{
//			ArrayList<HashMap<String, Object>> prcTaioList_nyukin = null;
//			if(prcTaioKirokTmpMap.containsKey("prc_taio_kirok_list")){
//				prcTaioList_nyukin = (ArrayList)prcTaioKirokTmpMap.get("prc_taio_kirok_list");
//			}
//			
//			if(prcTaioList_nyukin != null && prcTaioList_nyukin.size() > 0)
//			{
//				HashMap prcTaioKirokMap = prcTaioList_nyukin.get(0);
//				
//				if(prcTaioKirokMap != null)
//				{
//					String screenName = (String)prcTaioKirokMap.get("title");
//					
//					if(screenName != null && JACStrConst.SCREEN_NAME_CHW00801.equals(screenName))
//					{
//						if(useStpRlsList != null && useStpRlsList.size() > 0)
//						{
//							HashMap<String, Object> childMap = new HashMap<String, Object>();
//							
//							// 料金対応ユーザＩＤ → 料金対応記録明細リスト.料金対応ユーザＩＤ
//							childMap.put("prc_taio_user_id", (String)prcTaioKirokMap.get("prc_taio_user_id"));
//							// 請求契約番号 → 料金対応記録明細リスト.請求契約番号
//							childMap.put("seiky_kei_no", (String)prcTaioKirokMap.get("seiky_kei_no"));
//							// 料金対応記録種別コード（：督促状況更新） → 料金対応記録明細リスト.料金対応記録種別コード
//							childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.PRC_TAIO_KIROK_SBT_PRC_ADD);
//							// 料金対応記録種別詳細コード（：利用停止解除実施） → 料金対応記録明細リスト.料金対応記録種別詳細コード
//							childMap.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.TKRK_SBTD_USE_STP_CL);
//							// タイトル → 料金対応記録明細リスト.タイトル
//							childMap.put("title", JACStrConst.USE_STP_CL);
//							// 記事 → 料金対応記録明細リスト.記事
//							childMap.put("kiji", (String)prcTaioKirokMap.get("kiji"));
//							// 空文字 → 料金対応記録明細リスト.記録対象年月
//							childMap.put("kirok_tg_ym", JACStrConst.KARA_MOJI);
//							// 対応履歴表示連動対象フラグ → 料金対応記録明細リスト.対応履歴表示連動対象フラグ
//							childMap.put("taiorrki_rendo_tg_flg", (String)prcTaioKirokMap.get("taiorrki_rendo_tg_flg"));
//							
//							// 料金対応記録明細リストに追加
//							prcTaioList_nyukin.add(childMap);
//							
//						}
//						
//					}
//				}
//			}
//		}
//		
//		return param;
//	}
	//OM-2014-0003792 DEL END

}
