/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：KKSV1059_KKSV1059OPDBMapper
 *	ソースファイル名：KKSV1059_KKSV1059OPDBMapper.java
 *	作成者			：FJ) 寺田
 *	日付			：2025年05月14日
 *＜機能概要＞
 *	BP（STB撤去年月日登録確認画面_登録OP）へのＤ−Ｂマッピングクラスです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v75.00.00	 2025/05/14	  FJ) 寺田	  新規作成_【ANK-4673-00-03】テレビ新コース（スカパー用）導入対応　2025年6月フォロー案件
**********************************************************************/
package eo.web.webview.mapping;


import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.util.JPCDateUtil;
import eo.web.webview.KKW00405SF.KKW00405SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;

/**
 * DataBean-BPマッピングをする。
 * 
 * @author 富士通
 */
public class KKSV1059_KKSV1059OPDBMapper
{

	/**
	 * コンストラクタ
	 */
	public KKSV1059_KKSV1059OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：STB撤去年月日登録情報
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV105901SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if (bean == null)
		{
			return null;
		}
		
		if (bean.length != 1)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// STB撤去年月
		String stb_tekkyo_ym = new StringBuffer()
									.append(bean[0].sendMessageString(KKW00405SFConst.STB_TEKKYO_YEAR, X31CWebConst.DATABEAN_GET_VALUE))
									.append(bean[0].sendMessageString(KKW00405SFConst.STB_TEKKYO_MON, X31CWebConst.DATABEAN_GET_VALUE))
									.toString();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		// ＫＥＹ＿イベントコード
		parentMap.put("key_event_cd", JKKCommonConst.EVENT_CD_PRC_CALC_DAY);
		// ＫＥＹ＿請求年月
		parentMap.put("key_seiky_ym", stb_tekkyo_ym);

		outputMap.put("KKSV105901SC", parentMap);
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：STB撤去年月日登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV105902SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		X31SDataBeanAccess svcKei = bean[0].getDataBeanArray(KKW00405SFConst.EKK0081A010_LIST).getDataBean(0);
		X31SDataBeanAccess idoRsvInf = bean[0].getDataBeanArray(KKW00405SFConst.IDO_RSV_INF_LIST).getDataBean(0);

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 部品呼び出し → サービス契約料金プラン変更中止マップ.サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString(KKW00405SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// サービス契約情報 更新年月日時分秒 → サービス契約料金プラン変更中止マップ.更新年月日時分秒（更新前）
		parentMap.put("upd_dtm_bf", svcKei.sendMessageString(KKW00405SFConst.UPD_DTM_05, X31CWebConst.DATABEAN_GET_VALUE));

		// 異動予約情報リスト 申込明細番号
		parentMap.put("mskm_dtl_no", String.valueOf(idoRsvInf.sendMessageString(KKW00405SFConst.MSKM_DTL_NO_04, X31CWebConst.DATABEAN_GET_VALUE)));

		outputMap.put("KKSV105902SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：STB撤去年月日登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV105903CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		X31SDataBeanAccess idoRsvInf = bean[0].getDataBeanArray(KKW00405SFConst.IDO_RSV_INF_LIST).getDataBean(0);
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		// サービス契約情報.サービス契約番号 → サービス契約＜eo光TV＞料金プラン変更マップ.サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString(KKW00405SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 料金グループコード → サービス契約＜eo光TV＞料金プラン変更マップ.料金グループコード
		parentMap.put("prc_grp_cd", String.valueOf(idoRsvInf.sendMessageString(KKW00405SFConst.NEW_PRC_GRP_CD_04, X31CWebConst.DATABEAN_GET_VALUE)));

		// 料金コース.コードタイプコード → サービス契約＜eo光TV＞料金プラン変更マップ.料金コースコード
		parentMap.put("pcrs_cd", String.valueOf(idoRsvInf.sendMessageString(KKW00405SFConst.NEW_PCRS_CD_04, X31CWebConst.DATABEAN_GET_VALUE)));

		// サービス契約情報.提供方式契約番号 → サービス契約＜eo光TV＞料金プラン変更マップ.提供方式契約番号
		parentMap.put("tk_hoshiki_kei_no", String.valueOf(idoRsvInf.sendMessageString(KKW00405SFConst.NEW_TK_HOSHIKI_KEI_NO_04, X31CWebConst.DATABEAN_GET_VALUE)));

		// サービス契約情報.予約適用年月日 → サービス契約＜eo光TV＞料金プラン変更マップ.予約適用年月日
		parentMap.put("rsv_aply_ymd", bean[0].sendMessageString(KKW00405SFConst.RSV_APLY_YMD, X31CWebConst.DATABEAN_GET_VALUE));

		// 違約金発生コード
		parentMap.put("pnlty_hassei_cd", String.valueOf(idoRsvInf.sendMessageString(KKW00405SFConst.PNLTY_HASSEI_CD_04, X31CWebConst.DATABEAN_GET_VALUE)));

		// 異動区分 コース変更として登録する
		parentMap.put("ido_div", JKKCommonConst.IDO_DIV_VALUE_00009);

		// 電波障害案件番号 → サービス契約＜eo光TV＞料金プラン変更マップ.電波障害案件番号
		parentMap.put("dmps_anken_no", String.valueOf(idoRsvInf.sendMessageString(KKW00405SFConst.NEW_DMPS_ANKEN_NO_04, X31CWebConst.DATABEAN_GET_VALUE)));

		// 空 異動予約取り消し(KKSV105902SC)により、変わるためサービス層で設定する → サービス契約＜eo光TV＞料金プラン変更マップ.更新年月日時分秒（更新前）
		parentMap.put("upd_dtm_bf", "");

		// ＳＴＢ撤去（ヤマト撤去）用フラグ
		parentMap.put("stb_tekkyo_flg", "1");
		parentMap.put("stb_tekkyo_ymd", bean[0].sendMessageString(KKW00405SFConst.STB_TEKKYO_YMD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV105903CC", parentMap);

		HashMap<String, Object> paramWorkMap = new HashMap<String, Object>();
		// 元々異動予約に積んでいる申込明細番号で再度異動予約を積む
		paramWorkMap.put("mskm_dtl_no", idoRsvInf.sendMessageString(KKW00405SFConst.MSKM_DTL_NO_04, X31CWebConst.DATABEAN_GET_VALUE));
		outputMap.put("ParamWORK", paramWorkMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：STB撤去年月日登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV105904SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// サービス契約情報.サービス契約番号 → サービス契約内訳一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString(KKW00405SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV105904SC", parentMap);
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：STB撤去年月日登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV105905CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		X31SDataBeanAccess svcKei = bean[0].getDataBeanArray(KKW00405SFConst.EKK0081A010_LIST).getDataBean(0);
		X31SDataBeanAccess idoRsvInf = bean[0].getDataBeanArray(KKW00405SFConst.IDO_RSV_INF_LIST).getDataBean(0);
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		HashMap<String, Object> workMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		// 基準日（STB撤去チェックが入っていない場合、"20991231"で終了日の予約を登録）_KKSV0312の設定に合わせる
		parentMap.put("key_stdardymd", "20991231");
		// 異動区分 コース変更として登録する
		parentMap.put("ido_div", JKKCommonConst.IDO_DIV_VALUE_00009);

		// 違約金発生コード
		parentMap.put("pnlty_hassei_cd", String.valueOf(idoRsvInf.sendMessageString(KKW00405SFConst.PNLTY_HASSEI_CD_04, X31CWebConst.DATABEAN_GET_VALUE)));

		// STB撤去年月日
		parentMap.put("stb_tekkyo_ymd", bean[0].sendMessageString(KKW00405SFConst.STB_TEKKYO_YMD, X31CWebConst.DATABEAN_GET_VALUE));

		// ＳＴＢ撤去（ヤマト撤去）
		parentMap.put("stb_tekkyo_flg", "1");

		// サービス契約情報.最終更新年月日時分秒 → サービス契約審査結果送信情報変更マップ.ワーク更新年月日時分秒
		workMap.put("work_upd_dtm", svcKei.sendMessageString(KKW00405SFConst.UPD_DTM_05, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV105905CC", parentMap);
		outputMap.put("WORK", workMap);
		return outputMap;
	}
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：STB撤去年月日登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV105906SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// サービス契約情報.サービス契約番号 → サービス契約内訳一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString(KKW00405SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV105906SC", parentMap);

		return outputMap;
	}
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：STB撤去年月日登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV105907CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		X31SDataBeanAccess idoRsvInf = bean[0].getDataBeanArray(KKW00405SFConst.IDO_RSV_INF_LIST).getDataBean(0);
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		// 基準日（STB撤去チェックが入っていない場合、"20991231"で終了日の予約を登録）_KKSV0312の設定に合わせる
		parentMap.put("key_stdardymd", "20991231");

		// 違約金発生コード
		parentMap.put("pnlty_hassei_cd", String.valueOf(idoRsvInf.sendMessageString(KKW00405SFConst.PNLTY_HASSEI_CD_04, X31CWebConst.DATABEAN_GET_VALUE)));

		// 異動区分 コース変更として登録する
		parentMap.put("ido_div", JKKCommonConst.IDO_DIV_VALUE_00009);

		// STB撤去年月日
		parentMap.put("stb_tekkyo_ymd", bean[0].sendMessageString(KKW00405SFConst.STB_TEKKYO_YMD, X31CWebConst.DATABEAN_GET_VALUE));

		// ＳＴＢ撤去（ヤマト撤去）
		parentMap.put("stb_tekkyo_flg", "1");

		// 運用日→ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString(KKW00405SFConst.STDARDYMD, X31CWebConst.DATABEAN_GET_VALUE));

		// 連絡先名　画面入力項目として存在しないため空を設定
		parentMap.put("rrks_nm", "");

		// 機器回収備考1　画面入力項目として存在しないため空を設定
		parentMap.put("kiki_kaishu_biko_1", "");

		// 機器回収備考2　画面入力項目として存在しないため空を設定
		parentMap.put("kiki_kaishu_biko_2", "");

		outputMap.put("KKSV105907CC", parentMap);
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：STB撤去年月日登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV105909CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		X31SDataBeanAccess idoRsvInf = bean[0].getDataBeanArray(KKW00405SFConst.IDO_RSV_INF_LIST).getDataBean(0);
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		// 基準日（STB撤去チェックが入っていない場合、"20991231"で終了日の予約を登録）
		parentMap.put("key_stdardymd", "20991231");

		// 違約金発生コード
		parentMap.put("pnlty_hassei_cd", String.valueOf(idoRsvInf.sendMessageString(KKW00405SFConst.PNLTY_HASSEI_CD_04, X31CWebConst.DATABEAN_GET_VALUE)));

		// 異動区分 コース変更として登録する
		parentMap.put("ido_div", JKKCommonConst.IDO_DIV_VALUE_00009);

		// STB撤去年月日
		parentMap.put("stb_tekkyo_ymd", bean[0].sendMessageString(KKW00405SFConst.STB_TEKKYO_YMD, X31CWebConst.DATABEAN_GET_VALUE));

		// ＳＴＢ撤去（ヤマト撤去）
		parentMap.put("stb_tekkyo_flg", "1");

		outputMap.put("KKSV105909CC", parentMap);
		return outputMap;
	}
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：STB撤去年月日登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV105910CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		ArrayList ichijikinList = new ArrayList();

		// STB撤去費用
		X31SDataBeanAccess subbean01 = bean[0].getDataBeanArray(KKW00405SFConst.STB_TEKKYO_HIYO).getDataBean(0);

		String stb_tekkyo_hiyo = subbean01.sendMessageString(KKW00405SFConst.CD_DIV_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("stb_tekkyo_hiyo", stb_tekkyo_hiyo);

		// STB撤去費用が有の場合
		if (JKKCommonConst.UM_U.equals(stb_tekkyo_hiyo))
		{
			// ＳＴＢ変更申込情報リスト
			X31SDataBeanAccessArray stbCgifList = bean[0].getDataBeanArray(KKW00405SFConst.STB_CGIF_LIST);
			X31SDataBeanAccess stbbean = null;
			HashMap<String, Object> childMap = null;
			for (int i = 0; i < stbCgifList.getCount(); i++)
			{
				stbbean = stbCgifList.getDataBean(i);
				// ＳＴＢ異動区分が一部撤去前提
				childMap = new HashMap<String, Object>();
				// 共通項目
				childMap.put("func_code", func_code);
				// 一時支払料金番号
				childMap.put("tmp_pay_prc_no", bean[0].sendMessageString(KKW00405SFConst.TMP_PAY_PRC_NO, X31CWebConst.DATABEAN_GET_VALUE));
				// サービス契約番号
				childMap.put("svc_kei_no", bean[0].sendMessageString(KKW00405SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
				// サービス契約内訳番号
				childMap.put("svc_kei_ucwk_no", stbbean.sendMessageString(KKW00405SFConst.SVC_KEI_UCWK_NO_02, X31CWebConst.DATABEAN_GET_VALUE));
				// 機器提供サービス契約番号
				childMap.put("kktk_svc_kei_no", stbbean.sendMessageString(KKW00405SFConst.KKTK_SVC_KEI_NO_02, X31CWebConst.DATABEAN_GET_VALUE));
				ichijikinList.add(childMap);
			}
		}
		parentMap.put("ichijikinList", ichijikinList);
		outputMap.put("ichijikinMap", parentMap);
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：STB撤去年月日登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV105912SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		HashMap<String, Object> parMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		parMap.put("func_code", func_code);

		// 顧客契約引継情報.サービス契約番号 → 進捗登録マップ.サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString(KKW00405SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		parMap.put("svc_kei_no", bean[0].sendMessageString(KKW00405SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 回線対象サービス契約一覧情報.サービス契約回線内訳番号 → 進捗登録マップ.サービス契約回線内訳番号
		parentMap.put("svc_kei_kaisen_ucwk_no", bean[0].sendMessageString(KKW00405SFConst.SVC_KEI_KAISEN_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));
		parMap.put("svc_kei_kaisen_ucwk_no", bean[0].sendMessageString(KKW00405SFConst.SVC_KEI_KAISEN_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 異動区分 → 進捗登録マップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString(KKW00405SFConst.IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE));
		parMap.put("ido_div", JKKCommonConst.IDO_DIV_VALUE_00009);

		// システム日付 → 進捗登録マップ.異動年月日時分秒
		String sysDate = JCCWebCommon.getSysDateTimeStamp();
		parentMap.put("ido_dtm", sysDate);
		parMap.put("ido_dtm", sysDate);

		// 進捗登録マップ.進捗ステータス
		parentMap.put("prg_stat", JKKCommonConst.PRG_STAT_CD_K001);
		parMap.put("prg_stat", JKKCommonConst.PRG_STAT_CD_1421);

		ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
		X31SDataBeanAccessArray subbeanArray = bean[0].getDataBeanArray(KKW00405SFConst.KTGI_CUST_KEI_HKTGI_LIST);
		for (int i = 0; i < subbeanArray.getCount(); i++)
		{
			X31SDataBeanAccess subbean = subbeanArray.getDataBean(i);
			Integer count = (Integer) subbean.sendMessage(KKW00405SFConst.HKTGI_IDO_RSN_CD_03, X31CWebConst.DATABEAN_GET_COUNT);
			for (int j = 0; j < count.intValue(); j++)
			{
				HashMap<String, Object> childMap = new HashMap<String, Object>();
				// 顧客契約引継リスト.異動理由コード → 進捗登録マップ.異動理由明細.異動理由コード
				childMap.put("ido_rsn_cd", subbean.sendMessageString(KKW00405SFConst.HKTGI_IDO_RSN_CD_03, X31CWebConst.DATABEAN_GET_VALUE, j));
				list.add(childMap);
			}
		}

		// ------------ STB撤去年月日登録_進捗特記事項編集 --------------
		StringBuilder prgTkjk_01 = new StringBuilder();

		// STB撤去年月日 yyyy/mm/dd
		String stb_tekkyo_ymd_msg = getAddSlashYmd(bean[0].sendMessageString(KKW00405SFConst.STB_TEKKYO_YMD, X31CWebConst.DATABEAN_GET_VALUE));

		// STB撤去費用MSG
		String stb_tekkyo_hiyo_msg = "無";

		// STB撤去費用が有の場合
		X31SDataBeanAccess subbean01 = bean[0].getDataBeanArray(KKW00405SFConst.STB_TEKKYO_HIYO).getDataBean(0);
		String stb_tekkyo_hiyo = subbean01.sendMessageString(KKW00405SFConst.CD_DIV_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

		if (JKKCommonConst.UM_U.equals(stb_tekkyo_hiyo))
		{
			stb_tekkyo_hiyo_msg = "有";
		}

		prgTkjk_01.append("STB撤去年月日：" + stb_tekkyo_ymd_msg + "　STB撤去費用：" + stb_tekkyo_hiyo_msg);

		if (prgTkjk_01.length() < 129)
		{
			parentMap.put("prg_tkjk_1", prgTkjk_01.toString());
			parentMap.put("prg_tkjk_2", "");
		}
		else if (prgTkjk_01.length() < 257)
		{
			parentMap.put("prg_tkjk_1", prgTkjk_01.substring(0, 128));
			parentMap.put("prg_tkjk_2", prgTkjk_01.substring(128));
		}
		else
		{
			parentMap.put("prg_tkjk_1", prgTkjk_01.substring(0, 128));
			parentMap.put("prg_tkjk_2", prgTkjk_01.substring(128, 256));
		}
		// ------------ STB撤去年月日登録_進捗特記事項編集 --------------

		// ------------ コース変更予約_進捗特記事項編集 --------------
		StringBuilder prgTkjk_02 = new StringBuilder();

		String rsvAplyYmd_msg = "";
		try
		{
			// STB撤去年月日→登録する予約適用年月日の求め方を念のためJKKTvSvcKeiCourceChgCCから模倣する
			// JKKTvSvcKeiCourceChgCC→JKKBpCommon.getChrgEndYmd→JKKKikiIchiranCancelCC.getChrgEndYmd
			// 予約適用年月日に機器課金終了日の翌月1日を設定
			String chrgEndYmd = getChrgEndYmd(bean[0].sendMessageString(KKW00405SFConst.STB_TEKKYO_YMD, X31CWebConst.DATABEAN_GET_VALUE));
			String rsvAplyYmd = JPCDateUtil.addMonth(chrgEndYmd.substring(0, 6) + "01", 1);

			rsvAplyYmd_msg = getAddSlashYmd(rsvAplyYmd);
		}
		catch (Exception e1)
		{
			// parseエラー 万が一エラーとなった場合は、STB撤去年月日yyyy/mm/ddを設定
			rsvAplyYmd_msg = stb_tekkyo_ymd_msg;
		}

		prgTkjk_02.append("予約適用年月日：" + rsvAplyYmd_msg);

		if (prgTkjk_02.length() < 129)
		{
			parMap.put("prg_tkjk_1", prgTkjk_02.toString());
			parMap.put("prg_tkjk_2", "");
		}
		else if (prgTkjk_02.length() < 257)
		{
			parMap.put("prg_tkjk_1", prgTkjk_02.substring(0, 128));
			parMap.put("prg_tkjk_2", prgTkjk_02.substring(128));
		}
		else
		{
			parMap.put("prg_tkjk_1", prgTkjk_02.substring(0, 128));
			parMap.put("prg_tkjk_2", prgTkjk_02.substring(128, 256));
		}
		// ------------ コース変更予約_進捗特記事項編集 --------------

		parentMap.put("EKK1091D010CBSMsg1List", list);
		parMap.put("EKK1091D010CBSMsg1List", list);

		outputMap.put("KKSV105912SC", parentMap);
		outputMap.put("KKSV105913SC", parMap);
		return outputMap;
	}
	
	/**
	 * 日付に/(スラッシュ)を入れる
	 * @param ymd 日付(YYYYMMDD)
	 * @return String 日付(YYYY/MM/DD)
	 */
	private String getAddSlashYmd(String ymd)
	{

		if (ymd == null)
		{
			return "";
		}

		if (ymd.length() == 8)
		{
			return ymd.substring(0, 4) + "/" + ymd.substring(4, 6) + "/" + ymd.substring(6, 8);
		}

		return ymd;
	}

	/**
	 * 指定日付(前月または当月の月末日)取得処理
	 * 
	 * @param date
	 * @return String
	 * @throws Exception
	 */
	private String getChrgEndYmd(String date) throws Exception
	{
		if (isNullOrSpace(date))
		{
			return "";
		}

		String firstdate = "01";
		String day = date.substring(6, 8);
		String yearMonth = date.substring(0, 6);
		String chrgEndYmd = "";
		// 日付が「01」の場合
		if (firstdate.equals(day))
		{
			// 前月日取得
			String zngtuDate = JPCDateUtil.addMonth(date, -1);
			// 前月の末日取得
			String lastDate = JPCDateUtil.getEndOfMonth(zngtuDate);
			// 前月末日年月日取得
			chrgEndYmd = zngtuDate.substring(0, 6) + lastDate;
		}
		else
		{
			// 当月末日年月日取得
			chrgEndYmd = yearMonth + JPCDateUtil.getEndOfMonth(date);
		}
		return chrgEndYmd;
	}
	
	/**
	 * 入力内容の空白またはnullチェック
	 * @param target
	 * @return true:入力内容なし false 入力内容あり
	 */
	private boolean isNullOrSpace(String target)
	{
		if (target == null || "".equals(target))
		{
			return true;
		}
		return false;
	}

}
