/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0568_KKSV0568OPDBMapper
*	ソースファイル名：KKSV0568_KKSV0568OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年11月21日
*＜機能概要＞
*	BP（申込情報破棄）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/11/12	FJ			新規作成
*   v5.00.00    2013/01/21  FJ) 川島    【KAD-2012-0001108】書面での受付番号の申込イメージの紐付けについて
*   v5.01.00    2013/11/18  FJ）中山    【ANK-1670-00-00】番ポにおけるエイジング処理の削除
*   v6.00.00    2013/11/26  FJ) 中山    【OM-2013-0004488】住変確定後の工事連携までのサービス追加対応
*   v6.01.00    2013/12/24  FJ）中山    【OM-2013-0005251】最終更新年月日の取得漏れの修正
*   v7.00.00    2013/11/06  FJ) 竹中    【ANK-1578-00-00】多機能ルーター(機器追加)
*   v7.01.00    2014/02/05  FJ) 川島    【OM-2014-0000541】機器オプションがキャンセルされない
*   v7.02.00    2014/02/26  FJ) 北浦    【OM-2014-0000846】エイジング削除処理
*   v9.00.00    2014/04/14  FJ）中山    【ANK-2056-00-00】光電話セレクトオプションパック
*   v9.00.00    2014/04/25  FJ) 高橋    【ANK-2054-00-00】スマートリンク端末補償
*   v10.00.00   2014/07/07  FJ) 中山    【ANK-2135-00-00】BSオプションチャンネル「スターチャンネル」とのセット割検討
*   v11.00.00   2014/10/24  FJ) 中山    【ANK-2309-00-00】全販売チャンネル同番移転対応
*   v11.01.00   2014/11/28  FJ) 川島    【OM-2014-0003751】
*   v72.00.00   2024/05/27  FJ) 寺田    【ANK-4494-00-00】【eo定期】 双方向番ポ対応
**********************************************************************/
package eo.web.webview.mapping;

import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.*;

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.constant.JKKStrConst;
import eo.common.util.JKKCommonUtil;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KKW00101SF.KKW00101SFConst;
import eo.web.webview.common.JKKKeiNewCmnLogicUtil;
import eo.web.webview.common.JKKWebCommon;

/**
 * DataBean-BPマッピングをする。
 * @author 富士通
 */
public class KKSV0568_KKSV0568OPDBMapper
{
	/** 内部制御用更新ステータス (キャンセル) */
	private static final int IS_CANCEL    = 0;
	/** 申込キャンセルのマッピングで使用する申込明細の項目 */
	private static final String[][] MSKM_DTL_CANCEL_PARAMS =
	{
		{"KKSV007904CC", "EKK0021B502CBSMsg1List", "kk0021_mskm_dtl_no", "kk0021_mskm_dtl_cancel_rsn_memo", },
		{"KKSV007905CC", "", "kk0021_mskm_dtl_no", "kk0021_mskm_dtl_cancel_rsn_memo" },
		{"KKSV007906CC", "", "kk0021_mskm_dtl_no", "kk0021_mskm_dtl_cancel_rsn_memo" },
		{"KKSV007908CC", "", "mobile_mskm_dtl_no", "mobile_mskm_dtl_cancel_rsn_memo"}
	};
	
	/** eo光電話の更新、キャンセルのマッピングで使用する項目定数 */
	private static final String [][] TEL_ITEM_NAMES = {
		{
		KKW00101SFConst.H_TEL1_BMP_TELNO, KKW00101SFConst.H_TEL1_KOPT_TELNO, KKW00101SFConst.TEL1_AD_SEARCH, KKW00101SFConst.TEL1_BMP_TELNO,
		KKW00101SFConst.TEL1_BMP_USE_PLC, KKW00101SFConst.TEL1_EXCEPTION_INPUT, KKW00101SFConst.TEL1_HOJIN_TELNO_EXIST_FLG,
		KKW00101SFConst.TEL1_HTB_TCHI_UM, KKW00101SFConst.TEL1_KEI_MSKMSHA_SAME,
		KKW00101SFConst.TEL1_KEISHA_INFO_INPUT_HOJO, KKW00101SFConst.TEL1_KOPT_TELNO, KKW00101SFConst.TEL1_KOPT_TELNO_HASHIN,
		KKW00101SFConst.TEL1_NTT_DOBANMOVE_ADD_JOKYO, KKW00101SFConst.TEL1_NTT_DOBANMOVE_ADD_JOKYO_HJ, KKW00101SFConst.TEL1_NTT_DOBANMOVE_KH_CHOSA_REQ,
		KKW00101SFConst.TEL1_NTT_DOBANMOVE_NTT_KH_CSKK, KKW00101SFConst.TEL1_NTT_DOBANMOVE_NTT_KH_CSKK_HJ, KKW00101SFConst.TEL1_NTT_KEISHA_ADRRM,
		KKW00101SFConst.TEL1_NTT_KEISHA_ADRTTM, KKW00101SFConst.TEL1_NTT_KEISHA_AZCHO_NM, KKW00101SFConst.TEL1_NTT_KEISHA_BNCHIGO,
		KKW00101SFConst.TEL1_NTT_KEISHA_CITY_NM, KKW00101SFConst.TEL1_NTT_KEISHA_KANA, KKW00101SFConst.TEL1_NTT_KEISHA_NM,
		KKW00101SFConst.TEL1_NTT_KEISHA_OAZTSU_NM, KKW00101SFConst.TEL1_NTT_KEISHA_PCD_AF, KKW00101SFConst.TEL1_NTT_KEISHA_PCD_BF,
		KKW00101SFConst.TEL1_NTT_KEISHA_STATE_NM, KKW00101SFConst.TEL1_NTT_PLACE_AD_CD, KKW00101SFConst.TEL1_OPT_HTB_TCHI,
		KKW00101SFConst.TEL1_OPT_HTCHI_KYOHI, KKW00101SFConst.TEL1_TELNO_KIND,
		KKW00101SFConst.TEL1_TSJGS_LIST, KKW00101SFConst.TSJGS_CD1_13, KKW00101SFConst.TSJGS_CD1_LIST_13, KKW00101SFConst.TEL1_DOBANMOVE_CL_FLG,
		KKW00101SFConst.TEL1_DOBANMOVE_ADD_FLG, KKW00101SFConst.TEL1_DOBANMOVE_UPD_FLG
		}, {
		KKW00101SFConst.H_TEL2_BMP_TELNO, KKW00101SFConst.H_TEL2_KOPT_TELNO, KKW00101SFConst.TEL2_AD_SEARCH, KKW00101SFConst.TEL2_BMP_TELNO,
		KKW00101SFConst.TEL2_BMP_USE_PLC, KKW00101SFConst.TEL2_EXCEPTION_INPUT, KKW00101SFConst.TEL2_HOJIN_TELNO_EXIST_FLG,
		KKW00101SFConst.TEL2_HTB_TCHI_UM, KKW00101SFConst.TEL2_KEI_MSKMSHA_SAME,
		KKW00101SFConst.TEL2_KEISHA_INFO_INPUT_HOJO, KKW00101SFConst.TEL2_KOPT_TELNO, KKW00101SFConst.TEL2_KOPT_TELNO_HASHIN,
		KKW00101SFConst.TEL2_NTT_DOBANMOVE_ADD_JOKYO, KKW00101SFConst.TEL2_NTT_DOBANMOVE_ADD_JOKYO_HJ, KKW00101SFConst.TEL2_NTT_DOBANMOVE_KH_CHOSA_REQ,
		KKW00101SFConst.TEL2_NTT_DOBANMOVE_NTT_KH_CSKK, KKW00101SFConst.TEL2_NTT_DOBANMOVE_NTT_KH_CSKK_HJ, KKW00101SFConst.TEL2_NTT_KEISHA_ADRRM,
		KKW00101SFConst.TEL2_NTT_KEISHA_ADRTTM, KKW00101SFConst.TEL2_NTT_KEISHA_AZCHO_NM, KKW00101SFConst.TEL2_NTT_KEISHA_BNCHIGO,
		KKW00101SFConst.TEL2_NTT_KEISHA_CITY_NM, KKW00101SFConst.TEL2_NTT_KEISHA_KANA, KKW00101SFConst.TEL2_NTT_KEISHA_NM,
		KKW00101SFConst.TEL2_NTT_KEISHA_OAZTSU_NM, KKW00101SFConst.TEL2_NTT_KEISHA_PCD_AF, KKW00101SFConst.TEL2_NTT_KEISHA_PCD_BF,
		KKW00101SFConst.TEL2_NTT_KEISHA_STATE_NM, KKW00101SFConst.TEL2_NTT_PLACE_AD_CD, KKW00101SFConst.TEL2_OPT_HTB_TCHI,
		KKW00101SFConst.TEL2_OPT_HTCHI_KYOHI, KKW00101SFConst.TEL2_TELNO_KIND,
		KKW00101SFConst.TEL2_TSJGS_LIST, KKW00101SFConst.TSJGS_CD2_14, KKW00101SFConst.TSJGS_CD2_LIST_14, KKW00101SFConst.TEL2_DOBANMOVE_CL_FLG,
		KKW00101SFConst.TEL2_DOBANMOVE_ADD_FLG, KKW00101SFConst.TEL2_DOBANMOVE_UPD_FLG
		}
	};	
	
	/**
	 * コンストラクタ
	 */
	public KKSV0568_KKSV0568OPDBMapper()
	{
	}
	
	/**
	 * 割引情報キャンセルの上りマッピングを行います。
	 * <br>
	 * @param bean      [0]：申込新規登録画面
	 * @param outputMap 出力先マップ
	 * @param func_code 機能コード
	 * @param mskmInfoMap 申込情報マップ
	 * @param opeDate   運用年月日
	 * @return 出力先マップ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV056801CC(
			X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, HashMap mskmInfoMap, String opeDate) throws Exception
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		HashMap preMap = (HashMap)mskmInfoMap.get("KKSV007911CC");
		if (preMap == null)
		{
			return null;
		}
		
		HashMap kksv007902CCMap = (HashMap)mskmInfoMap.get("KKSV007902CC");
		if (kksv007902CCMap == null)
		{
			return null;
		}
		
		ArrayList<HashMap> wribSvcCdList = (ArrayList<HashMap>)preMap.get("EKK0451B507CBSMsg1List");
		ArrayList<HashMap> hanyoCdList = (ArrayList<HashMap>)preMap.get("EKK1391B501CBSMsg1List");
		int index = 0;
		
		// サービス契約番号、最終更新年月日
		HashMap<String, String> seachJisho = new HashMap <String, String>();
				
		// ネットの最終更新年月日取得
		HashMap netMap = (HashMap)mskmInfoMap.get("KKSV007904CC");
		if(netMap != null)
		{
			// 申込明細＜ｅｏ光ネット＞一覧照会明細
			ArrayList<HashMap<String, Object>> netList = (ArrayList<HashMap<String, Object>>)netMap.get("EKK0021B502CBSMsg1List");
			HashMap<String, Object> netMeisaiMap = netList.get(0);
			// ネットのサービス契約番号、最終更新年月日
			seachJisho.put((String)netMeisaiMap.get("kk0081_svc_kei_no"), (String)netMeisaiMap.get("kk0081_last_upd_dtm"));
		}
		
		// テレビの最終更新年月日取得
		HashMap tvMap = (HashMap)mskmInfoMap.get("KKSV007906CC");
		if (preMap != null)
		{
			// テレビのサービス契約番号、最終更新年月日
			seachJisho.put((String)tvMap.get("kk0081_svc_kei_no"), (String)tvMap.get("kk0101_last_upd_dtm"));
		}
		
		// 電話の最終更新年月日取得
		HashMap telMap =  (HashMap)mskmInfoMap.get("KKSV007905CC");
		if (telMap != null)
		{
			// 電話のサービス契約番号、最終更新年月日
			seachJisho.put((String)telMap.get("kk0081_svc_kei_no"), (String)telMap.get("kk0111_last_upd_dtm"));
		}
		
		// モバイルの最終更新年月日取得
		HashMap mobaMap =  (HashMap)mskmInfoMap.get("KKSV007908CC");
		if (mobaMap != null)
		{
			// モバイルのサービス契約番号、最終更新年月日
			seachJisho.put((String)mobaMap.get("mobile_svc_kei_no"), (String)mobaMap.get("kk0081_last_upd_dtm"));
		}

		// 割引コード
		ArrayList<Object> wribSvcCdCancelList = new ArrayList <Object>();
		if (wribSvcCdList != null && wribSvcCdList.size() > 0)
		{
			for (HashMap<String, Object> wribSvcCdMap : wribSvcCdList)
			{
				HashMap<String, Object> dataList = new HashMap <String, Object>();

				// サービス契約番号
				dataList.put("svc_kei_no", (String)wribSvcCdMap.get("svc_kei_no"));
				// 割引サービス契約番号
				dataList.put("wrib_svc_kei_no", (String)wribSvcCdMap.get("wrib_svc_kei_no"));
				// 申込明細番号
				dataList.put("mskm_dtl_no", (String)wribSvcCdMap.get("mskm_dtl_no"));
				// サービスキャンセル理由コード
				dataList.put("svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
				// 異動区分
				dataList.put("ido_div", (String)wribSvcCdMap.get("ido_div"));
				// 割引解約キャンセル契機コード
				dataList.put("wrib_dsl_cncl_opty_cd", ADD_OPTY_CD_MANUAL);
				// 更新年月日時分秒（更新前）
				//dataList.put("upd_dtm_bf", (String)wribSvcCdMap.get("upd_dtm_bf"));
				dataList.put("upd_dtm_bf", seachJisho.get((String)wribSvcCdMap.get("svc_kei_no")));
				
				// リスト番号 ← リスト番号
				dataList.put("list_no", Integer.toString(index));
				index++;
				wribSvcCdCancelList.add(dataList);
			}
		}
		parentMap.put("wribSvcCdList", wribSvcCdCancelList);
		

		index = 0;
		// 汎用コード
		ArrayList<Object> hanyoCdCancelList = new ArrayList <Object>();
		
		if (hanyoCdList != null && hanyoCdList.size() > 0)
		{		
			for (HashMap<String, Object>  hanyoCdMap : hanyoCdList)
			{
				HashMap<String, Object> dataList = new HashMap <String, Object>();
				
				// サービス契約番号
				dataList.put("svc_kei_no", (String)hanyoCdMap.get("svc_kei_no"));
				// データ抽出項目設定番号
				dataList.put("dchskmst_no", (String)hanyoCdMap.get("dchskmst_no"));
				// データ抽出項目設定完了種別コード
				dataList.put("dchskmst_fin_sbt_cd", JKKStrConst.CD00809_060);
				// 異動区分
				dataList.put("ido_div", (String)hanyoCdMap.get("ido_div"));
				// データ抽出項目設定完了契機コード
				dataList.put("dchskmst_fin_opty_cd", ADD_OPTY_CD_MANUAL);
				// 更新年月日時分秒（更新前）
				//dataList.put("upd_dtm_bf", (String)hanyoCdMap.get("upd_dtm_bf"));
				dataList.put("upd_dtm_bf", seachJisho.get((String)hanyoCdMap.get("svc_kei_no")));
				
				// リスト番号 ← リスト番号
				dataList.put("list_no", Integer.toString(index));
				index++;
	
				hanyoCdCancelList.add(dataList);
			}
		}
		parentMap.put("hanyoCdList", hanyoCdCancelList);
		
		outputMap.put("KKSV056801CC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする（利用場所情報キャンセル）
	 * @param bean [0]：申込新規登録画面
	 * @param outputMap データ出力先マップ
	 * @param func_code 機能コード
	 * @param mskmMap KKSV0079_申込新規登録初期表示の検索結果
	 * @return データ格納マップ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV056802CC(
			X31SDataBeanAccess[] bean,
			HashMap outputMap,
			String func_code,
			HashMap mskmMap) throws Exception
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		HashMap preMap = (HashMap)mskmMap.get("KKSV007907CC");
		if (preMap == null)
		{
			return null;
		}
		
		HashMap kksv007902CCMap = (HashMap)mskmMap.get("KKSV007902CC");
		if (kksv007902CCMap == null)
		{
			return null;
		}
		HashMap kksv007901CCMap = (HashMap)mskmMap.get("KKSV007901CC");
		
		// サービス契約回線内訳
		ArrayList kk007901childList = (ArrayList)kksv007901CCMap.get("mskm_svc_kei_ucwk_list");
		HashMap childMap = (kk007901childList != null) && (kk007901childList.size() > 0) ? (HashMap)kk007901childList.get(0) : null;
		if (childMap != null)
		{
			// 申込番号 → 申込変更マップ.申込番号
			parentMap.put("mskm_no", childMap.get("mskm_no"));
		}


		// --------------------------
		// 同一利用場所サービス契約一覧照会
		// --------------------------
		ArrayList childList = null;
		childList = (ArrayList)preMap.get("mskm_svc_kei_ucwk_list");
		childMap = (HashMap)childList.get(0);

		// サービス契約回線内訳番号
		parentMap.put("svc_kei_kaisen_ucwk_no", (String)childMap.get("kk0251_svc_kei_kaisen_ucwk_no"));
		
		HashMap<String, Object> ck0011Map
		= (HashMap<String, Object>)((ArrayList<HashMap<String, Object>>)kksv007902CCMap.get("ECK0011A010CBSMsg1List")).get(0);
		
		// SYSID
		String sysid = String.valueOf(ck0011Map.get("ck0011_sysid"));
		parentMap.put("kk0081_sysid", sysid);
		
		
		// --------------------------
		// 機器提供サービス契約キャンセル（ONU、多機能ルーターなど）
		// --------------------------
		ArrayList<HashMap> kk0341B504_childList = (ArrayList<HashMap>)preMap.get(KAISEN_KIKI_LIST);
		
		// 機器キャンセル
		ArrayList<HashMap> dataList = new ArrayList();

		if (kk0341B504_childList != null && kk0341B504_childList.size() > 0)
		{	
			for (HashMap preDataMap: kk0341B504_childList)
			{			
				if(null == preDataMap.get("kk0341_kktk_svc_kei_no"))
				{
					continue;
				}
				
				HashMap<String, Object> dataMap = new HashMap <String, Object>();
				// 機器提供サービスコード
				dataMap.put("kk0341_kktk_svc_cd", (String)preDataMap.get("kk0341_kktk_svc_cd"));
				// 機器提供サービス契約ステータス
				dataMap.put("kk0341_kktk_svc_kei_stat", (String)preDataMap.get("kk0341_kktk_svc_kei_stat"));
				// 機器提供サービス契約番号
				dataMap.put("kk0341_kktk_svc_kei_no", (String)preDataMap.get("kk0341_kktk_svc_kei_no"));
				// 申込明細番号
				dataMap.put("kk0341_mskm_dtl_no", (String)preDataMap.get("kk0341_mskm_dtl_no"));
				// サービスキャンセル理由コード
				dataMap.put("kk0341_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
				// 異動区分
				dataMap.put("kk0341_ido_div", (String)preDataMap.get("kk0341_ido_div"));
				// 更新年月日時分秒(更新前)
				dataMap.put("kk0341_upd_dtm_bf", (String)preDataMap.get("kk0341_last_upd_dtm"));
				
				dataList.add(dataMap);
			}
		}
		
		// --------------------------
		// 機器提供サービス契約キャンセル（ＶＡ、ルーターなど）
		// --------------------------
		ArrayList<HashMap> kk0341B508_childList = (ArrayList<HashMap>)preMap.get("kk0341_EKK0341B508CBSMsg1List");

		if (kk0341B508_childList != null && kk0341B508_childList.size() > 0)
		{	
			for (HashMap kktkCancelMap: kk0341B508_childList)
			{			
				if(null == kktkCancelMap.get("kk0341_kktk_svc_kei_no"))
				{
					continue;
				}
				String kktkSvcKeiStat = (String)kktkCancelMap.get("kk0341_kktk_svc_kei_stat");
				// 機器提供サービス契約ステータスが照査済以上の場合、次の処理へ
				if (JKKStrConst.CD00056_STAT_SHOSAZUMI.compareTo(kktkSvcKeiStat) <= 0)
				{
					continue;
				}
				
				HashMap<String, Object> dataMap = new HashMap <String, Object>();
				// 機器提供サービスコード
				dataMap.put("kk0341_kktk_svc_cd", kktkCancelMap.get("kk0341_kktk_svc_cd"));
				// 機器提供サービス契約ステータス
				dataMap.put("kk0341_kktk_svc_kei_stat", kktkCancelMap.get("kk0341_kktk_svc_kei_stat"));
				// 機器提供サービス契約番号（機器提供サービス契約）
				dataMap.put("kk0341_kktk_svc_kei_no", kktkCancelMap.get("kk0341_kktk_svc_kei_no"));
				// 申込明細番号（機器提供サービス契約）
				dataMap.put("kk0341_mskm_dtl_no", kktkCancelMap.get("kk0341_mskm_dtl_no"));
				// サービスキャンセル理由コード（機器提供サービス契約）
				dataMap.put("kk0341_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
				// 異動区分（機器提供サービス契約）
				dataMap.put("kk0341_ido_div", kktkCancelMap.get("kk0341_ido_div"));
				// 更新年月日時分秒（更新前）（機器提供サービス契約）
				dataMap.put("kk0341_upd_dtm_bf", kktkCancelMap.get("kk0341_last_upd_dtm"));

				dataList.add(dataMap);
			}
		}
		parentMap.put("kktsvkei_cancel_list", dataList);
		
		// --------------------------
		// サービス契約回線内訳キャンセル
		// --------------------------
		ArrayList<HashMap> svcKeiUcwkList = (ArrayList<HashMap>)preMap.get("mskm_svc_kei_ucwk_list");

		if (svcKeiUcwkList != null && svcKeiUcwkList.size() > 0)	
		{
			HashMap<String, Object> svcKeiUcwkMap = svcKeiUcwkList.get(0);
				
			// サービス契約回線内訳ステータス
			parentMap.put("kk0251_svc_kei_kaisen_ucwk_stat", (String)svcKeiUcwkMap.get("kk0251_svc_kei_kaisen_ucwk_stat"));
			// サービス契約回線内訳番号
			parentMap.put("kk0251_svc_kei_kaisen_ucwk_no", (String)svcKeiUcwkMap.get("kk0251_svc_kei_kaisen_ucwk_no"));
			// 申込明細番号
			parentMap.put("kk0251_mskm_dtl_no", (String)svcKeiUcwkMap.get("kk0251_mskm_dtl_no"));
			// サービスキャンセル理由コード
			parentMap.put("kk0251_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
			// 更新年月日時分秒(更新前)
			parentMap.put("kk0251_upd_dtm_bf", (String)svcKeiUcwkMap.get("kk0251_last_upd_dtm"));
		}
		
		// --------------------------
		// 機器オプションサービス契約キャンセル
		// --------------------------
		ArrayList<HashMap> kk2811_childList = (ArrayList<HashMap>)preMap.get("EKK2811B502CBSMsg1List");
		dataList =  new ArrayList();
		

		String mskmFlg = bean[0].sendMessageString(KKW00101SFConst.MSKM_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		// 異動区分
		String idoDiv = "";
		if ("1".equals(mskmFlg))
		{
			// 00001（新規契約）
			idoDiv = "00001";
		}
		else
		{
			// 00002（サービス追加）
			idoDiv = "00002";
		}
		
		HashMap<String, Object> svcKeiMap = null;
		HashMap<String, Object> sameKisnMap = (HashMap)mskmMap.get("KKSV007905SC");

		if (kk2811_childList != null && kk2811_childList.size() > 0)
		{	
			for (HashMap kkOpCancelMap: kk2811_childList)
			{			
				if(null == kkOpCancelMap.get("kk2811_kkop_svc_kei_no"))
				{
					continue;
				}
				
				HashMap<String, Object> dataMap = new HashMap <String, Object>();
				
				// 機器オプションサービス契約番号
				dataMap.put("kk2811_kkop_svc_kei_no", kkOpCancelMap.get("kk2811_kkop_svc_kei_no"));
				
				// 申込明細番号
				dataMap.put("kk2811_mskm_dtl_no", kkOpCancelMap.get("kk2811_mskm_dtl_no"));
				
				// 更新年月日時分秒(更新前)
				dataMap.put("kk2811_upd_dtm_bf", kkOpCancelMap.get("kk2811_last_upd_dtm"));
				
				// 異動区分
				dataMap.put("kk2811_ido_div", idoDiv);
				
				// サービスキャンセル理由コード
				dataMap.put("kk2811_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
				
				// 機器オプションサービスコード
				dataMap.put("kk2811_kkop_svc_cd", kkOpCancelMap.get("kk2811_kkop_svc_cd"));
				
				// 機器オプションサービス契約ステータス
				dataMap.put("kk2811_kkop_svc_kei_stat", kkOpCancelMap.get("kk2811_kkop_svc_kei_stat"));
				
				// 機器オプションサービスコード
				String kkopSvcCd = (String)kkOpCancelMap.get("kk2811_kkop_svc_cd");
				dataMap.put("kk2811_kkop_svc_cd", kkopSvcCd);
				
				// ルーター機能の場合、eo光ネットのサービス契約番号を設定する。
				if(JKKStrConst.KKOP_SVC_CD_ROUTER.equals(kkopSvcCd))
				{
					svcKeiMap = JKKWebCommon.getSvcKeiMapFromSameKisnShokai(SVC_KEI_TYPE_NET, sameKisnMap, JKKStrConst.CD00037_DSL_ZM);
					
					if(!JKKCommonUtil.isNull(svcKeiMap))
					{
						dataMap.put("kk2811_svc_kei_no",  (String)svcKeiMap.get("svc_kei_no"));
					}
				}
				// 電話アダプター機能の場合、eo光電話のサービス契約番号を設定する。
				else if(JKKStrConst.KKOP_SVC_CD_TEL_ADAPT.equals(kkopSvcCd))
				{
					svcKeiMap = JKKWebCommon.getSvcKeiMapFromSameKisnShokai(SVC_KEI_TYPE_TEL, sameKisnMap, JKKStrConst.CD00037_DSL_ZM);
					
					if(!JKKCommonUtil.isNull(svcKeiMap))
					{
						dataMap.put("kk2811_svc_kei_no",  (String)svcKeiMap.get("svc_kei_no"));
					}
				}
				
				dataList.add(dataMap);
			}
		}
		
		parentMap.put("kktk_op_cancel_list", dataList);
		
		//  eo光電話１、２キャンセル
		parentMap.put("tel_cancel_flg", bean[0].sendMessageBoolean(HDN_EOH_TEL_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		// eo光ネットキャンセル
		parentMap.put("net_cancel_flg", bean[0].sendMessageBoolean(HDN_EOH_NET_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV056802CC", parentMap);

		return outputMap;
	}	
	
	
	/**
	 * eoモバイルキャンセルの上りマッピングを行います。
	 * @param bean [0]：申込新規登録画面
	 * @param outputMap データ出力先マップ
	 * @param func_code 機能コード
	 * @param opeDate 運用年月日(8桁)
	 * @param mskmMap KKSV0079_申込新規登録初期表示の検索結果
	 * @param opeDateTimeStamp 運用年月日時分秒(17桁)
	 * @return データ格納マップ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV056803CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate, HashMap mskmMap,
			String opeDateTimeStamp) throws Exception
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		HashMap mobileMap = (HashMap)mskmMap.get("KKSV007908CC");

		//*-----------------------------------------------*

		// 申込明細番号
		String mskmDtlNo = (String)mobileMap.get("mobile_mskm_dtl_no");

		ArrayList mobile_optionList = (ArrayList)mobileMap.get("mobile_optionList");

		ArrayList sbopSvcKeiCancelList = new ArrayList();
		parentMap.put("subop_svc_kei_list", sbopSvcKeiCancelList);

		ArrayList opSvcKeiCancelList = new ArrayList();
		parentMap.put("op_svc_kei_list", opSvcKeiCancelList);

		if (mobile_optionList != null && mobile_optionList.size() > 0)
		{
			for (int i = 0; i < mobile_optionList.size(); i++)
			{
				HashMap childMap = (HashMap)mobile_optionList.get(i);

				String opSvcKeiNo = (String)childMap.get("kk0361_op_svc_kei_no");
				String sbopSvcKeiNo = (String)childMap.get("kk0411_sbop_svc_kei_no");

				if (sbopSvcKeiNo != null && !"".equals(sbopSvcKeiNo))
				{
					/*-----------------------------------------------
					 * サブオプションサービス契約キャンセル
					 *-----------------------------------------------*/
					HashMap sbopSvcKeiCancelMap = new HashMap();
					sbopSvcKeiCancelList.add(sbopSvcKeiCancelMap);

					// オプションサービス契約番号
					sbopSvcKeiCancelMap.put("kk0401_op_svc_kei_no", opSvcKeiNo);
					// サブオプションサービス契約番号
					sbopSvcKeiCancelMap.put("kk0401_sbop_svc_kei_no", sbopSvcKeiNo);
					// 申込明細番号
					sbopSvcKeiCancelMap.put("kk0401_mskm_dtl_no", mskmDtlNo);
					// サービスキャンセル理由コード
					sbopSvcKeiCancelMap.put("kk0401_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
					// 異動区分
					sbopSvcKeiCancelMap.put("kk0401_ido_div", childMap.get("kk0401_ido_div"));
					// 更新年月日時分秒(更新前)
					sbopSvcKeiCancelMap.put("kk0401_upd_dtm_bf", childMap.get("kk0401_last_upd_dtm"));
				}

				if (opSvcKeiNo != null && !"".equals(opSvcKeiNo))
				{
					/*-----------------------------------------------
					 * オプションサービス契約キャンセル
					 *-----------------------------------------------*/
					HashMap opSvcKeiCancelMap = new HashMap();
					opSvcKeiCancelList.add(opSvcKeiCancelMap);

					// オプションサービス契約番号
					opSvcKeiCancelMap.put("kk0351_op_svc_kei_no", opSvcKeiNo);
					// 申込明細番号
					opSvcKeiCancelMap.put("kk0351_mskm_dtl_no", mskmDtlNo);
					// サービスキャンセル理由コード
					opSvcKeiCancelMap.put("kk0351_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
					// 異動区分
					opSvcKeiCancelMap.put("kk0351_ido_div", childMap.get("kk0351_ido_div"));
					// 更新年月日時分秒(更新前)
					opSvcKeiCancelMap.put("kk0351_upd_dtm_bf", childMap.get("kk0351_last_upd_dtm"));
				}
			}
		}

		/*-----------------------------------------------
		 * サービス契約内訳キャンセル
		 *-----------------------------------------------*/
		ArrayList mobile_svcKeiUcwkList = (ArrayList)mobileMap.get("mobile_EKK0201A010CBSMsg1List");

		ArrayList svcKeiUcwkCancelList = new ArrayList();
		parentMap.put("svc_kei_ucwk_list", svcKeiUcwkCancelList);

		if (mobile_svcKeiUcwkList != null && mobile_svcKeiUcwkList.size() > 0)
		{
			for (int i = 0; i < mobile_svcKeiUcwkList.size(); i++)
			{
				HashMap childMap = (HashMap)mobile_svcKeiUcwkList.get(i);

				String svcKeiUcwkNo = (String)childMap.get("kk0201_svc_kei_ucwk_no");

				if (svcKeiUcwkNo != null && !"".equals(svcKeiUcwkNo))
				{
					HashMap svcKeiUcwkCancelMap = new HashMap();
					svcKeiUcwkCancelList.add(svcKeiUcwkCancelMap);

					// サービス契約内訳番号
					svcKeiUcwkCancelMap.put("kk0161_svc_kei_ucwk_no", svcKeiUcwkNo);
					// 申込明細番号
					svcKeiUcwkCancelMap.put("kk0161_mskm_dtl_no", mskmDtlNo);
					// サービスキャンセル理由コード
					svcKeiUcwkCancelMap.put("kk0161_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
					// 異動区分
					svcKeiUcwkCancelMap.put("kk0161_ido_div", childMap.get("kk0161_ido_div"));
					// 更新年月日時分秒(更新前)
					svcKeiUcwkCancelMap.put("kk0161_upd_dtm_bf", childMap.get("kk0201_last_upd_dtm"));
				}
			}
		}

		/*-----------------------------------------------
		 * サービス契約回線内訳キャンセル
		 *-----------------------------------------------*/
		ArrayList mobile_svcKeiKaisenUcwkList = (ArrayList)mobileMap.get("mobile_EKK0251B001CBSMsg1List");

		if (mobile_svcKeiKaisenUcwkList != null && mobile_svcKeiKaisenUcwkList.size() > 0)
		{
			HashMap childMap = (HashMap)mobile_svcKeiKaisenUcwkList.get(0);

			String svcKeiKaisenUcwkNo = (String)childMap.get("svc_kei_kaisen_ucwk_no");
			if (svcKeiKaisenUcwkNo != null && !"".equals(svcKeiKaisenUcwkNo))
			{
				// サービス契約内訳番号
				parentMap.put("kk0251_svc_kei_kaisen_ucwk_no", childMap.get("svc_kei_kaisen_ucwk_no"));
				// 申込明細番号
				parentMap.put("kk0251_mskm_dtl_no", mskmDtlNo);
				// サービスキャンセル理由コード
				parentMap.put("kk0251_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
				// 更新年月日時分秒(更新前)
				parentMap.put("kk0251_upd_dtm_bf", childMap.get("last_upd_dtm"));
			}
		}

		/*-----------------------------------------------
		 * 機器提供サービス契約キャンセル
		 *-----------------------------------------------*/
		ArrayList mobile_KikiList = (ArrayList)mobileMap.get("mobile_EKK0341B508CBSMsg1List");
		ArrayList kikiCancelList = new ArrayList();
		

		if (mobile_KikiList != null && mobile_KikiList.size() > 0)
		{
			parentMap.put("Kiki_Cancel_list", kikiCancelList);
			
			for (int i = 0; i < mobile_KikiList.size(); i++)
			{
				HashMap childMap = (HashMap)mobile_KikiList.get(i);

				String kktkSvcKeiNo = (String)childMap.get("mobile_kktk_svc_kei_no");

				if (kktkSvcKeiNo != null && !"".equals(kktkSvcKeiNo))
				{
					HashMap kikiCancelMap = new HashMap();
					
					// 機器提供サービス契約番号
					kikiCancelMap.put("kk0341_kktk_svc_kei_no", kktkSvcKeiNo);
					// 申込明細番号
					kikiCancelMap.put("kk0341_mskm_dtl_no", mskmDtlNo);
					// サービスキャンセル理由コード
					kikiCancelMap.put("kk0341_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
					// 異動区分
					kikiCancelMap.put("kk0341_ido_div", childMap.get("mobile_ido_div"));
					// 更新年月日時分秒(更新前)
					kikiCancelMap.put("kk0341_upd_dtm_bf", childMap.get("mobile_last_upd_dtm"));
					// 機能コード
					kikiCancelMap.put("func_code", func_code);
					
					kikiCancelList.add(kikiCancelMap);
				}
			}
		}

		/*-----------------------------------------------
		 * サービス契約キャンセル
		 *-----------------------------------------------*/
		String svcKeiNo = (String)mobileMap.get("mobile_svc_kei_no");
		if (svcKeiNo != null && !"".equals(svcKeiNo))
		{
			// サービス契約番号
			parentMap.put("kk0081_svc_kei_no", svcKeiNo);
			// 申込明細番号
			parentMap.put("kk0081_mskm_dtl_no", mskmDtlNo);
			// サービスキャンセル理由コード
			parentMap.put("kk0081_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
			// 異動区分
			parentMap.put("kk0081_ido_div", mobileMap.get("kk0081_ido_div"));
			// 更新年月日時分秒(更新前)
			parentMap.put("kk0081_upd_dtm_bf", mobileMap.get("kk0081_last_upd_dtm"));
		}

		outputMap.put("KKSV056803CC", parentMap);

		return outputMap;
	}
	
	/**
	 * 上りマッピングをする（eo光TVキャンセル）
	 * @param bean [0]：申込新規登録画面
	 * @param outputMap データ出力先マップ
	 * @param func_code 機能コード
	 * @param mskmMap KKSV0079_申込新規登録初期表示の検索結果
	 * @param opeDate 運用年月日
	 * @return データ格納マップ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV056804CC(
			X31SDataBeanAccess[] bean,
			HashMap outputMap,
			String func_code,
			HashMap mskmMap,
			String opeDate) throws Exception
	{
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		HashMap kksv007906CCMap = (HashMap)mskmMap.get("KKSV007906CC");

		// 異動区分
		String idoDiv = getIdoDiv(bean[0].sendMessageString(KKW00101SFConst.MSKM_FLG, X31CWebConst.DATABEAN_GET_VALUE));

		//////////////////
		// サービス契約 //
		//////////////////
		// サービス契約番号(サービス契約キャンセル)
		parentMap.put("kk0081_svc_kei_no", kksv007906CCMap.get("kk0081_svc_kei_no"));
		// 申込明細番号(サービス契約キャンセル)
		parentMap.put("kk0081_mskm_dtl_no", kksv007906CCMap.get("kk0081_mskm_dtl_no"));
		// サービスキャンセル理由コード(サービス契約キャンセル)
		parentMap.put("kk0081_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
		// 異動区分(サービス契約キャンセル)
		parentMap.put("kk0081_ido_div", kksv007906CCMap.get("kk0081_ido_div"));
		// 更新年月日時分秒(更新前)(サービス契約キャンセル)
		parentMap.put("kk0081_upd_dtm_bf", kksv007906CCMap.get("kk0081_last_upd_dtm"));

		////////////////////////////
		// オプションサービス契約 //
		////////////////////////////
		// オプションサービス契約番号（オプションサービス契約）
		parentMap.put("kk0351_op_svc_kei_no", kksv007906CCMap.get("kk0351_op_svc_kei_no"));
		// 申込明細番号（オプションサービス契約）
		parentMap.put("kk0351_mskm_dtl_no", kksv007906CCMap.get("kk0351_mskm_dtl_no"));
		// サービスキャンセル理由コード（オプションサービス契約）
		parentMap.put("kk0351_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
		// 異動区分（オプションサービス契約）
		parentMap.put("kk0351_ido_div", kksv007906CCMap.get("kk0351_ido_div"));
		// 更新年月日時分秒（更新前）（オプションサービス契約）
		parentMap.put("kk0351_upd_dtm_bf", kksv007906CCMap.get("kk0351_last_upd_dtm"));

		//////////////////////
		// サービス契約内訳 //
		//////////////////////
		ArrayList kk0161_childList = new ArrayList();
		kk0161_childList = (ArrayList)kksv007906CCMap.get("svc_kei_ucwk_list");
		HashMap childMap = new HashMap();

		if (kk0161_childList != null)
		{
			ArrayList svc_kei_ucwk_list = new ArrayList();

			for (int i = 0; i < kk0161_childList.size(); i++)
			{
				HashMap svcKeiUcwkMap = new HashMap();
				childMap = (HashMap)kk0161_childList.get(i);

				// サービス契約内訳番号（サービス契約内訳）
				svcKeiUcwkMap.put("kk0161_svc_kei_ucwk_no", childMap.get("kk0161_svc_kei_ucwk_no"));
				// 申込明細番号(サービス契約内訳)
				svcKeiUcwkMap.put("kk0161_mskm_dtl_no", childMap.get("kk0161_mskm_dtl_no"));
				// サービスキャンセル理由コード（サービス契約内訳）
				svcKeiUcwkMap.put("kk0161_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
				// 異動区分（サービス契約内訳）
				svcKeiUcwkMap.put("kk0161_ido_div", childMap.get("kk0161_ido_div"));
				// 更新年月日時分秒（更新前）（サービス契約内訳）
				svcKeiUcwkMap.put("kk0161_upd_dtm_bf", childMap.get("kk0161_last_upd_dtm"));

				svc_kei_ucwk_list.add(svcKeiUcwkMap);
			}

			parentMap.put("svc_kei_ucwk_list", svc_kei_ucwk_list);
		}

		//////////////////////////
		// 機器提供サービス契約 //
		//////////////////////////
		ArrayList<HashMap<String, Object>> kk0341_childList = new ArrayList<HashMap<String, Object>>();
		ArrayList<HashMap<String, Object>> kktkSvcKeiCancelList = null;
		
		// STB
		kk0341_childList = (ArrayList<HashMap<String, Object>>)kksv007906CCMap.get("kktk_svc_kei_list");
		if (kk0341_childList != null)
		{
			kktkSvcKeiCancelList = setTvkikiData(kk0341_childList);
		}
		parentMap.put("kktk_svc_kei_cancel_list", kktkSvcKeiCancelList);
		
		// B-CAS
		kk0341_childList = (ArrayList<HashMap<String, Object>>)kksv007906CCMap.get("bcas_kktk_svc_kei_list");
		if (kk0341_childList != null)
		{
			kktkSvcKeiCancelList = setTvkikiData(kk0341_childList);
		}
		parentMap.put("bcas_kktk_svc_kei_cancel_list", kktkSvcKeiCancelList);
		
		// C-CAS
		kk0341_childList = (ArrayList<HashMap<String, Object>>)kksv007906CCMap.get("ccas_kktk_svc_kei_list");
		if (kk0341_childList != null)
		{
			kktkSvcKeiCancelList = setTvkikiData(kk0341_childList);
		}
		parentMap.put("ccas_kktk_svc_kei_cancel_list", kktkSvcKeiCancelList);
		
		// スターチャンネルセット
		HashMap<String, Object> starChannelSetMap = KKSV0080_KKSV0080OPDBMapper.getStarChannelSetMap(kksv007906CCMap);
		if (null != starChannelSetMap)
		{
			HashMap<String, Object> dataMap = new HashMap<String, Object>();
			
			// SYSID
			dataMap.put("sysid", bean[0].sendMessageString(KKW00101SFConst.PARAM_SYSID,
					X31CWebConst.DATABEAN_GET_VALUE));
			// サービス契約番号
			dataMap.put("svc_kei_no", kksv007906CCMap.get("kk0081_svc_kei_no"));
			// 申込明細番号
			dataMap.put("mskm_dtl_no", kksv007906CCMap.get("kk0021_mskm_dtl_no"));
			// サービスキャンセル理由コード
			dataMap.put("svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
			// 起算日
			dataMap.put("kisan_ymd", opeDate);
			// 異動区分
			dataMap.put("ido_div", idoDiv);
			// 最終更新年月日時分秒（更新前）
			dataMap.put("kk0081_upd_dtm", starChannelSetMap.get("kk0451_last_upd_dtm"));
			
			parentMap.put("cnclStarChannelSetMap", dataMap);
		}
		
		// 申込時登録不可契約予約変更
		if (null != starChannelSetMap)
		{
			ArrayList<HashMap<String, Object>> updMkjAddfKeiRvList = new ArrayList<HashMap<String, Object>>();
			
			ArrayList<HashMap<String, Object>> mkjAddfKeiRvList = (ArrayList<HashMap<String, Object>>)kksv007906CCMap.get("kk2931_EKK2931B501CBSMsg1List");
			if (null != mkjAddfKeiRvList)
			{
				for (HashMap<String, Object> mkjAddfKeiRvMap : mkjAddfKeiRvList)
				{
					if (!JKKStrConst.OP_SVC_CD_STCH_BSPT.equals(mkjAddfKeiRvMap.get("kk2931_op_svc_cd")))
					{
						continue;
					}
					
					HashMap<String, Object> dataMap = new HashMap<String, Object>();
					
					// 申込時登録不可契約予約番号
					dataMap.put("kk2931_mkj_addf_kei_rv_no", mkjAddfKeiRvMap.get("kk2931_mkj_addf_kei_rv_no"));
					// 予約契約数
					dataMap.put("kk2931_rsv_kei_cnt", mkjAddfKeiRvMap.get("kk2931_rsv_kei_cnt"));
					// 申込時登録不可契約予約反映年月日
					dataMap.put("kk2931_mkj_addf_kei_rv_hanei_ymd", mkjAddfKeiRvMap.get("kk2931_mkj_addf_kei_rv_hanei_ymd"));
					// 申込時登録不可契約予約取消年月日
					dataMap.put("kk2931_mkj_addf_kei_rv_cl_ymd", opeDate);
					// 更新年月日時分秒(更新前)
					dataMap.put("kk2931_upd_dtm_bf", mkjAddfKeiRvMap.get("kk2931_last_upd_dtm"));
					
					updMkjAddfKeiRvList.add(dataMap);
				}
			}
			
			parentMap.put("updMkjAddfKeiRvList", updMkjAddfKeiRvList);
		}

		outputMap.put("KKSV056804CC", parentMap);

		return outputMap;
	}
	
	/**
	 * テレビキャンセルの機器提供サービス契約共通マッピング
	 * <p>テレビキャンセルの機器提供サービス契約で設定する項目のマッピングを行う</p>
	 * @param kk0341_childList
	 * @return 機器のキャンセルリスト
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> setTvkikiData(ArrayList<HashMap<String, Object>> kk0341_childList)
	{
		HashMap kikiSvcMap = null;
		ArrayList<HashMap<String, Object>> kikiDataList = new ArrayList<HashMap<String, Object>>();
		
		for (HashMap<String, Object> childMap : kk0341_childList)
		{
			kikiSvcMap = new HashMap<String, Object>();

			// 機器提供サービス契約番号（機器提供サービス契約）
			kikiSvcMap.put("kk0341_kktk_svc_kei_no", childMap.get("kk0341_kktk_svc_kei_no"));
			// 申込明細番号（機器提供サービス契約）
			kikiSvcMap.put("kk0341_mskm_dtl_no", childMap.get("kk0341_mskm_dtl_no"));
			// サービスキャンセル理由コード（機器提供サービス契約）
			kikiSvcMap.put("kk0341_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
			// 異動区分（機器提供サービス契約）
			kikiSvcMap.put("kk0341_ido_div", childMap.get("kk0341_ido_div"));
			// 更新年月日時分秒（更新前）（機器提供サービス契約）
			kikiSvcMap.put("kk0341_upd_dtm_bf", childMap.get("kk0341_last_upd_dtm"));
			
			kikiDataList.add(kikiSvcMap);
		}
		
		return kikiDataList;
	}
	
	
	/**
	 * eo光電話1キャンセルの上りマッピングを行います。
	 * <br>
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap 出力先マップ
	 * @param func_code 機能コード
	 * @param preMap 申込情報マップ
	 * @param opeDate 運用日付
	 * @param opeDateTimeStamp 運用日付時分秒
	 * @param mansionMap マンション情報マップ
	 * @param svcKeiUpdFlgs サービス契約視点での登録更新フラグ
	 * @return 出力先マップ
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV056805CC(
			X31SDataBeanAccess[] bean,
			HashMap outputMap,
			String func_code,
			HashMap preMap,
			String opeDate,
			String opeDateTimeStamp,
			HashMap mansionMap,
			HashMap<String, Boolean> svcKeiUpdFlgs) throws Exception
	{
		// 電話Bean項目の１⇔２番号対応辞書
		HashMap<String, Integer> telItemDic = new HashMap<String, Integer>();
		for (int i = 0; i < TEL_ITEM_NAMES[0].length; i++)
		{
			// 電話項目の件数は１番号目を基準にする
			for (int j = 0; j < TEL_ITEM_NAMES.length; j++)
			{
				telItemDic.put(TEL_ITEM_NAMES[j][i], i); // 電話１，２のBean名称より電話１，２共通のindexが得られる
			}
		}
		
		HashMap<String, Object> parentMap      = null;
		HashMap                 svcKeiMap      = null;
		
		/*--------------------* 
		 * データビーンを取得   
		 *--------------------*/
		if ((null == bean) || (1 != bean.length))
		{
			return null;
		}

		/*--------------------------------------------* 
		 * 照会時情報から電話のサービス契約内訳を取得   
		 *--------------------------------------------*/
		svcKeiMap = (HashMap)preMap.get("KKSV007905CC");
		if (svcKeiMap == null)
		{
			return null;
		}

		parentMap = new HashMap<String, Object>();

		/*----------------------* 
		 * 共通情報のマッピング   
		 *----------------------*/
		// parentMap.put("func_code", func_code);

		/*----------------------------* 
		 * キャンセル情報のマッピング   
		 *----------------------------*/
		String telCancelNumFlg = bean[0].sendMessageString(HDN_EOH_TEL_NUM_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 異動区分
		String idoDiv = getIdoDiv(bean[0].sendMessageString(KKW00101SFConst.MSKM_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		
		// SYSIDを取得
		String sysid = bean[0].sendMessageString(KKW00101SFConst.PARAM_SYSID, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 番ポエイジング、電話番号マスタ削除
		// 電話１
		setCancelBmpAgingMap(bean, parentMap, svcKeiMap, func_code, TEL_ONE); 
		// 電話２
		setCancelBmpAgingMap(bean, parentMap, svcKeiMap, func_code, TEL_TWO); 
		
// ANK-4494-00-00 DEL START
//		// 同番移転キャンセル判定
//		getDobanCancel(bean, svcKeiMap, telItemDic, TEL_ONE); // 電話１
//		setDobanItenMap(bean, parentMap, svcKeiMap, KKW00101SFConst.TEL1_DOBANMOVE_CL_FLG, telItemDic, TEL_ONE, opeDate, func_code);
//		getDobanCancel(bean, svcKeiMap, telItemDic, TEL_TWO); // 電話２
//		setDobanItenMap(bean, parentMap, svcKeiMap, KKW00101SFConst.TEL2_DOBANMOVE_CL_FLG, telItemDic, TEL_TWO, opeDate, func_code);
// ANK-4494-00-00 DEL END

		// サブオプションサービス契約
		ArrayList<HashMap<String, Object>> cancelSbopSvcKeiList = new ArrayList<HashMap<String, Object>>();
		parentMap.put("CANCEL_SBOP_SVC_KEI", cancelSbopSvcKeiList);
		
		cancelSbopSvcKeiList.addAll(KKSV0080_KKSV0080OPDBMapper.getEohTelCancelSbopSvcKeiList(TEL_ONE,
				KKSV0080_KKSV0080OPDBMapper.getAllEohtlSbopSvcCdList(TEL_ONE, svcKeiMap), func_code, svcKeiMap, idoDiv, JKKStrConst.CD01254_10));
		cancelSbopSvcKeiList.addAll(KKSV0080_KKSV0080OPDBMapper.getEohTelCancelSbopSvcKeiList(TEL_TWO,
				KKSV0080_KKSV0080OPDBMapper.getAllEohtlSbopSvcCdList(TEL_TWO, svcKeiMap), func_code, svcKeiMap, idoDiv, JKKStrConst.CD01254_10));

		// オプションサービス契約
		ArrayList<HashMap<String, Object>> cancelOpSvcKeiList = new ArrayList<HashMap<String, Object>>();
		parentMap.put("CANCEL_OP_SVC_KEI", cancelOpSvcKeiList);

		cancelOpSvcKeiList.addAll(KKSV0080_KKSV0080OPDBMapper.getEohTelCancelOpSvcKeiList(TEL_ONE,
				KKSV0080_KKSV0080OPDBMapper.getAllEohtlOpSvcCdList(TEL_ONE, svcKeiMap), func_code, svcKeiMap, idoDiv, JKKStrConst.CD01254_10));
		cancelOpSvcKeiList.addAll(KKSV0080_KKSV0080OPDBMapper.getEohTelCancelOpSvcKeiList(TEL_TWO,
				KKSV0080_KKSV0080OPDBMapper.getAllEohtlOpSvcCdList(TEL_TWO, svcKeiMap), func_code, svcKeiMap, idoDiv, JKKStrConst.CD01254_10));
		
		// サービス契約内訳
		if (TEL_ONE.equals(telCancelNumFlg) || TEL_TWO.equals(telCancelNumFlg))
		{
			setTelSvckeiUcwkMap(bean, parentMap, svcKeiMap, mansionMap, IS_CANCEL, func_code, telItemDic, TEL_ONE);
		}
		if (TEL_TWO.equals(telCancelNumFlg))
		{
			setTelSvckeiUcwkMap(bean, parentMap, svcKeiMap, mansionMap, IS_CANCEL, func_code, telItemDic, TEL_TWO);
		}
		
		// 電話のサービス契約キャンセル
		setCancelTelSvcKeiMap(bean, parentMap, svcKeiMap, func_code);
		
		// ｅｏ光電話パックキャンセル
		ArrayList<HashMap<String, Object>> cnclEohtlPackList = new ArrayList<HashMap<String, Object>>();
		
		cnclEohtlPackList.addAll(KKSV0080_KKSV0080OPDBMapper.getCancelEohtlPackList(TEL_ONE,
				KKSV0080_KKSV0080OPDBMapper.getAllEohtlPackCdList(TEL_ONE, svcKeiMap), svcKeiMap, idoDiv, sysid, opeDate, JKKStrConst.CD01254_10));
		cnclEohtlPackList.addAll(KKSV0080_KKSV0080OPDBMapper.getCancelEohtlPackList(TEL_TWO,
				KKSV0080_KKSV0080OPDBMapper.getAllEohtlPackCdList(TEL_TWO, svcKeiMap), svcKeiMap, idoDiv, sysid, opeDate, JKKStrConst.CD01254_10));
		
		parentMap.put("cncl_eohtl_pack_list", cnclEohtlPackList);

		outputMap.put("KKSV056805CC", parentMap);
		return outputMap;
	}
	
	/**
	 * 電話のサービス契約内訳登録更新キャンセルの上りマッピングを行います。
	 * <br>
	 * @param bean [0]：申込新規登録画面
	 * @param parentMap   申込情報マップ
	 * @param svcKeiMap   電話照会時情報
	 * @param mansionMap  マンション情報マップ
	 * @param mappingMode 内部制御用更新ステータス
	 * @param func_code   機能コード
	 * @param telItemDic  電話番号項目辞書
	 * @param tel_idx     電話番号目("1" or "2")
	 */
	@SuppressWarnings("unchecked")
	private void setTelSvckeiUcwkMap(X31SDataBeanAccess[] bean, HashMap<String, Object> parentMap, HashMap svcKeiMap,
			HashMap mansionMap, int mappingMode, String func_code, HashMap<String, Integer> telItemDic, String tel_idx)
	{
		// 指定された番号目の照会時サービス契約内訳を取得する
		ArrayList<HashMap>      svcKeiUcwkList     = (ArrayList<HashMap>)svcKeiMap.get("svc_kei_ucwk_tel_list");
		HashMap<String, Object> svcKeiUcwkMap      = null;
		String mapListName = "";
		String prefix = "";

		for (HashMap tmpMap : svcKeiUcwkList)
		{
			if (tel_idx.equals(tmpMap.get("kk0191_telno_jun")))
			{
				svcKeiUcwkMap = tmpMap;
				break;
			}
		}

		mapListName = "CANCEL_SVC_KEI_UCWK";
		prefix = "kk0161_";

		// サービス契約内訳の登録マッピング配列を取得する（無ければ作る）
		ArrayList telMapList = (ArrayList)parentMap.get(mapListName);
		
		if (null == telMapList)
		{
			telMapList = new ArrayList();
			parentMap.put(mapListName, telMapList);
		
		}
		
		HashMap telMap = new HashMap();
		
		telMap.put("func_code", func_code);
		telMap.put("telno_jun", tel_idx);
			
		// 異動区分
		String mskmFlg = bean[0].sendMessageString(KKW00101SFConst.MSKM_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		String ido_div      = (MSKM_SBT_CD_SHINKI.equals(mskmFlg))?(IDO_DIV_NEW):(IDO_DIV_ADD);

		/*--------------------------------*
		 *  照会時情報の引継ぎマッピング  *
		 *--------------------------------*/

		telMap.put(prefix + "svc_kei_ucwk_no", 		(String)svcKeiUcwkMap.get("kk0191_svc_kei_ucwk_no")); 		// サービス契約内訳番号
		telMap.put(prefix + "mskm_dtl_no", 			(String)svcKeiMap.get("kk0081_mskm_dtl_no")); 				// 申込明細番号
		// 更新年月日時分秒(更新前) は 必須項目のため更新系は全て渡す（ただし IS_PLUS/MINUS_BMP 時は動的更新日付が使われる）
		telMap.put(prefix + "upd_dtm_bf", 			(String)svcKeiUcwkMap.get("kk0191_last_upd_dtm")); 		// 更新年月日時分秒(更新前)

		/*------------------------*
		 *  電話情報のマッピング  *
		 *------------------------*/
		//提供方式契約番号			tk_hoshiki_kei_no
		//番ポ同時工事希望有無		bmp_doji_koji_kibo_um
		//NTT番号案内有無			ntt_no_guide_um
		//ハローページ掲載有無		hellopage_keisai_um
		//通話明細公開要否			tuwa_dtl_kokai_yh
		//事務手数料自動適用要否	rule0059_auto_aply
		//電話番号順番				telno_jun
		//VAポート番号				va_port_no
		//異動区分					ido_div
		//通信事業者コード			tsjgs_cd
		//番ポ有無					bmp_um
		//電話番号					telno
		//同番移転申込有無			dobaniten_mskm_um
		//同番移転依頼制御コード	dobaniten_req_ctrl_cd
		//同番移転判定コード		dobaniten_jdg_cd

		// サービスキャンセル理由コード
		telMap.put(prefix + "svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
		// 異動区分
		telMap.put(prefix + "ido_div", ido_div);
		
		// 照会値が新番号の時
		if (UMU_NASI.equals((String)svcKeiUcwkMap.get("kk0191_bmp_um")))
		{
			// エイジング削除処理
			ArrayList<HashMap> agingList = (ArrayList<HashMap>)svcKeiMap.get("aging_list");
			if (null != agingList)
			{
				ArrayList dataList_del_aiging = (ArrayList)parentMap.get("DEL_AIGING_LIST");
				if (null == dataList_del_aiging)
				{
					dataList_del_aiging = new ArrayList();
				}	
				
				parentMap.put("DEL_AIGING_LIST", dataList_del_aiging);
				
				HashMap childMap_aiging = new HashMap();
				
				// エイジング種別コード
				childMap_aiging.put("zm0111_aging_sbt_cd", JKKStrConst.CD00412_TELNO);
				// エイジング対象値
				childMap_aiging.put("zm0111_aging_tg_value", (String)svcKeiUcwkMap.get("kk0191_telno"));
				
				for (HashMap tmpMap : agingList)
				{
					// 削除対象の更新年月日時分秒を取得
					if(tmpMap.get("zm0111_aging_tg_value").equals(svcKeiUcwkMap.get("kk0191_telno")))
					{
						// 更新前最終年月日時分秒
						childMap_aiging.put("zm0111_last_upd_dtm_bf", (String)tmpMap.get("zm0111_add_dtm"));
						break;
					}
				}
				dataList_del_aiging.add(childMap_aiging);
			}
			
		}

		if (telMap.containsKey(prefix + "bmp_um"))
		{
			telMap.remove(prefix + "bmp_um");
		}

		telMapList.add(telMap);
	}
	
// ANK-4494-00-00 DEL START
//	/**
//	 * 任意番号目の電話について同番移転のキャンセルを行うかどうか判定します。
//	 * <br>
//	 * @param bean        X31SDataBeanAccess[]
//	 * @param svcKeiMap   HashMap 電話の照会時情報
//	 * @param telItemDic  電話番号辞書
//	 * @param tel_idx     電話番号目
//	 * @return なし
//	 */
//	@SuppressWarnings("unchecked")
//	private void getDobanCancel(X31SDataBeanAccess[] bean, HashMap svcKeiMap, HashMap<String, Integer> telItemDic, String tel_idx)
//	{
//		ArrayList<HashMap>      svcKeiUcwkList  = null;
//		HashMap<String, Object> svcKeiUcwkMap   = null;
//		ArrayList<HashMap>      dobanItenList   = null;
//		String                  bf_doban_stat   = null;
//		
//		boolean isMansion = isMskmType(bean[0], IS_JDG_YO_MSKM_TYPE_MANSION, null);
//
//		//##############################
//		// 照会時のサービス契約内訳情報
//		//##############################
//		svcKeiUcwkList  = (ArrayList<HashMap>)svcKeiMap.get("svc_kei_ucwk_tel_list");
//		for (HashMap tmpMap : svcKeiUcwkList)
//		{
//			if (tel_idx.equals(tmpMap.get("kk0191_telno_jun")))
//			{
//				svcKeiUcwkMap = tmpMap;
//				break;
//			}
//		}
//		
//		//######################################
//		// 照会時の同番移転情報とそのステータス
//		//######################################
//		dobanItenList = (ArrayList<HashMap>)svcKeiMap.get("dobaniten_list");
//		if ((null != dobanItenList) && (null != svcKeiUcwkMap))
//		{
//			for (int i = 0; i < dobanItenList.size(); i++)
//			{
//				if ((null != dobanItenList.get(i)) && !((dobanItenList.get(i)).isEmpty()))
//				{
//					if (((String)svcKeiUcwkMap.get("kk0191_svc_kei_ucwk_no")).equals(
//							dobanItenList.get(i).get("tu0021_svc_kei_ucwk_no")))
//					{
//						bf_doban_stat = ((String)(dobanItenList.get(i).get("tu0021_dobaniten_stat")));
//						break;
//					}
//				}
//			}
//		}
//		
//		//####################
//		// 判定用のフラグ作成
//		//####################
//		
//		// 照会時情報の送信待ち判定(純粋に照会時のステータスが送信待ちであるか)
//		boolean is_soshinmachi = JKKStrConst.CD00432_DOBAN_STAT_NTTSENDSTAY.equals(bf_doban_stat);
//		
//		//=-=-=-=-=-=-=
//		// 判定の開始
//		//=-=-=-=-=-=-=
//		
//		// サービス削除の場合、単純に照会時の同番移転ステータス＝021:NTT送信待ちであれば同番移転スキーマの取消処理を行う。
//		
//		if (isMansion && is_soshinmachi)
//		{
//			// 照会時が番ポ、かつ引越し先で利用する
//			if (JKKStrConst.CD_DIV_UM_ARI.equals(svcKeiUcwkMap.get("kk0191_bmp_um"))
//					&& JKKStrConst.CD_DIV_UM_ARI.equals(svcKeiUcwkMap.get("kk0191_dobaniten_mskm_um")))
//			{
//				// 同番登録をキャンセルする
//				bean[0].sendMessageBoolean(getTelBeanName(telItemDic, KKW00101SFConst.TEL1_DOBANMOVE_CL_FLG, tel_idx),
//						X31CWebConst.DATABEAN_SET_VALUE, true);
//			}
//		}
//	}
//	
//	/**
//	 * 任意番号目の電話について同番移転の登録、更新、キャンセルのマッピングを行います。
//	 * <br>
//	 * @param bean        X31SDataBeanAccess[]
//	 * @param parentMap   HashMap 電話のマッピング情報格納先
//	 * @param svcKeiMap   HashMap 電話の照会時情報
//	 * @param flg_name    取消、登録、更新フラグのBean名称
//	 * @param telItemDic  電話項目辞書
//	 * @param tel_idx     電話番号目
//	 * @param opeDate     運用日付
//	 * @param func_code   機能コード
//	 * @return なし
//	 */
//	@SuppressWarnings("unchecked")
//	private void setDobanItenMap(X31SDataBeanAccess[] bean, HashMap<String, Object> parentMap, HashMap svcKeiMap, String flg_name,
//			HashMap<String, Integer> telItemDic, String tel_idx, String opeDate, String func_code)
//	{
//		ArrayList<HashMap>      dobanitenMapList  = null;
//		HashMap<String, Object> dobanMap          = null; 
//		ArrayList<HashMap>      svcKeiUcwkPreList = null;
//		HashMap<String, Object> svcKeiUcwkPreMap  = null;
//		ArrayList<HashMap>      dobanItenPreList  = null;
//		HashMap<String, Object> dobanPreMap       = null;
//		
//		// 対象のモード（取消／登録／更新）が flag == true でなければ何もしないで戻る
//		if (!bean[0].sendMessageBoolean(flg_name, X31CWebConst.DATABEAN_GET_VALUE))
//		{
//			return;
//		}
//
//		//##############################
//		// 照会時のサービス契約内訳情報
//		//##############################
//		svcKeiUcwkPreList = (ArrayList<HashMap>)svcKeiMap.get("svc_kei_ucwk_tel_list");
//		
//		for (HashMap tmpMap : svcKeiUcwkPreList)
//		{
//			if (tel_idx.equals(tmpMap.get("kk0191_telno_jun")))
//			{
//				svcKeiUcwkPreMap = tmpMap;
//				break;
//			}
//		}
//
//		//######################
//		// 照会時の同番移転情報
//		//######################
//		dobanItenPreList = (ArrayList<HashMap>)svcKeiMap.get("dobaniten_list");
//		
//		if ((null != dobanItenPreList) && (null != svcKeiUcwkPreMap))
//		{
//			for (int i = 0; i < dobanItenPreList.size(); i++)
//			{
//				if ((null != dobanItenPreList.get(i)) && (!(dobanItenPreList.get(i).isEmpty())) &&
//					(((String)(svcKeiUcwkPreMap.get("kk0191_svc_kei_ucwk_no")))
//							.equals(dobanItenPreList.get(i).get("tu0021_svc_kei_ucwk_no"))))
//				{
//					dobanPreMap  = dobanItenPreList.get(i);
//					break;
//				}
//			}
//		}
//		
//		//###################################################
//		// 同番移転のマッピング配列を取得する（無ければ作る）
//		//###################################################
//		String cmp_name = getTelBeanName(telItemDic, flg_name, TEL_ONE); // 判定単純化のためにフラグ名を電話１のものに変換
//		String mapping_name =
//			(KKW00101SFConst.TEL1_DOBANMOVE_CL_FLG.equals(cmp_name)?("CANCEL_DOBANITEN"):
//			(KKW00101SFConst.TEL1_DOBANMOVE_ADD_FLG.equals(cmp_name)?("ADD_DOBANITEN"):
//			(KKW00101SFConst.TEL1_DOBANMOVE_UPD_FLG.equals(cmp_name)?("UPD_DOBANITEN_NAIYO"):(""))));
//
//		dobanitenMapList = (ArrayList)parentMap.get(mapping_name);
//		
//		if (null == dobanitenMapList)
//		{
//			dobanitenMapList = new ArrayList();
//			parentMap.put(mapping_name, dobanitenMapList);
//		}
//		
//		dobanMap = new HashMap();
//		
//		// 機能コード
//		dobanMap.put("func_code", func_code);
//		// 番号目
//		dobanMap.put("telno_jun", tel_idx);
//		
//		/*--------------------------* 
//		 * 取消更新共通のマッピング   
//		 *--------------------------*/
//		if (bean[0].sendMessageBoolean(getTelBeanName(telItemDic, KKW00101SFConst.TEL1_DOBANMOVE_CL_FLG, tel_idx), X31CWebConst.DATABEAN_GET_VALUE))
//		{
//			// 同番移転取消マップ.同番移転番号
//			dobanMap.put("tu0021_dobaniten_no", (String)dobanPreMap.get("tu0021_dobaniten_no"));
//			// 同番移転取消マップ.世代登録年月日
//			dobanMap.put("tu0021_gene_add_dtm", (String)dobanPreMap.get("tu0021_gene_add_dtm"));
//			// 同番移転取消マップ.更新前更新年月日時分秒
//			dobanMap.put("tu0021_upd_dtm_bf", (String)dobanPreMap.get("tu0021_upd_dtm"));
//			
//		}
//		
//		dobanitenMapList.add(dobanMap);
//		
//	}
//
//	/**
//	 * とある電話のBean項目名を任意の電話番号目項目に変換する
//	 * <br>
//	 * @param telItemDic  電話項目辞書
//	 * @param keyItemName とある電話項目名（１，２番号問わず）
//	 * @param tel_idx     変換したい番号目
//	 * @return tel_idx番号目の項目名
//	 */
//	private String getTelBeanName(HashMap<String, Integer> telItemDic, String keyItemName, String tel_idx)
//	{
//		int telno_jun = Integer.parseInt(tel_idx);
//		
//		return TEL_ITEM_NAMES[telno_jun - 1][telItemDic.get(keyItemName).intValue()];
//	}
// ANK-4494-00-00 DEL END

	/**
	* 番ポエイジングと番ポ電話番号の削除用上りマッピングを行います。
	* <br>
	* @param bean           [0]：照査前登録画面
	* @param parentMap           申込情報マップ
	* @param svcKeiMap           HashMap 電話の照会時情報
	* @param func_code           機能コード
	* @param tel_idx             電話番号目
	*/
	@SuppressWarnings("unchecked")
	private void setCancelBmpAgingMap(X31SDataBeanAccess[] bean, HashMap<String, Object> parentMap, HashMap svcKeiMap, String func_code, String tel_idx)
	{
		//##############
		//### 初期化 ###
		//##############
		ArrayList telNoAgingMapList = null;
		String telNoKind_1 = "";
		String telNoKind_2 = "";
		String telNo_1     = "";
		String telNo_2     = "";
		
		//################
		//### 情報取得 ###
		//################
		// サービス契約内訳＜eo光電話＞
		ArrayList<HashMap> svcKeiUcwkList = (ArrayList<HashMap>)svcKeiMap.get("svc_kei_ucwk_tel_list");

		// 照会時の電話１、２の情報を取得する。
		for (int i = 0; i < svcKeiUcwkList.size(); i++)
		{
			HashMap svcKeiUcwkMap = (HashMap)svcKeiUcwkList.get(i);
			if (i == 0)
			{
				//電話１ 番ポ有無を判断する。
				if (UMU_ARI.equals((String)svcKeiUcwkMap.get("kk0191_bmp_um")))
				{
					telNoKind_1 = "2";
					telNo_1     = (String)svcKeiUcwkMap.get("kk0191_telno");
				}
			}
			else
			{
				//電話２ 番ポ有無を判断する。
				if (UMU_ARI.equals((String)svcKeiUcwkMap.get("kk0191_bmp_um")))
				{
					telNoKind_2 = "2";
					telNo_2     =  (String)svcKeiUcwkMap.get("kk0191_telno");
				}
			}
		}

		//############
		//### 判定 ###
		//############
		// 電話１
		if (tel_idx.equals(TEL_ONE))
		{
			// 電話１の照会時番ポ番号が空文字列の場合、変更前が番ポではないと判断し、処理を抜ける。
			if((null == telNo_1) || ("".equals(telNo_1)))
			{
				return;
			}
			// 電話１の照会時＜電話番号の種類＞が"2"以外なら、処理を抜ける。
			if (!TELNO_KIND_BMP.equals(telNoKind_1))
			{
				return;
			}
		}
		// 電話２
		else
		{
			// 電話２の照会時番ポ番号が空文字列の場合、変更前が番ポではないと判断し、処理を抜ける。
			if((null == telNo_2) || ("".equals(telNo_2)))
			{
				return;
			}
			// 電話２の照会時＜電話番号の種類＞が"2"以外なら、処理を抜ける。
			if (!TELNO_KIND_BMP.equals(telNoKind_2))
			{
				return;
			}
		}
		
		//##################
		//### マッピング ###
		//##################
		// エイジングのマッピング配列を取得する（無ければ作る）
		telNoAgingMapList = (ArrayList)parentMap.get("DEL_BMP_AGING");

		if (null == telNoAgingMapList)
		{
			telNoAgingMapList = new ArrayList();
			parentMap.put("DEL_BMP_AGING", telNoAgingMapList);
		}
		HashMap telNoAgingMap = new HashMap();
		
		telNoAgingMap.put("func_code", func_code);

		if (tel_idx.equals(TEL_ONE))
		{
			telNoAgingMap.put("zm0121_key_telno", telNo_1);			
		}
		else
		{
			telNoAgingMap.put("zm0121_key_telno", telNo_2);			
		}
		telNoAgingMapList.add(telNoAgingMap);
	}
	
	/**
	 * 電話のサービス契約キャンセルの上りマッピングを行います。
	 * <br>
	 * @param bean [0]：申込新規登録画面
	 * @param parentMap 申込情報マップ
	 * @param svcKeiMap 電話照会時情報
	 * @param func_code 機能コード
	 */
	@SuppressWarnings("unchecked")
	private void setCancelTelSvcKeiMap(X31SDataBeanAccess[] bean, HashMap<String, Object> parentMap, HashMap svcKeiMap, String func_code)
	{
		// サービス契約のマッピング配列を取得する（無ければ作る）
		ArrayList svcKeiTelMapList = (ArrayList)parentMap.get("CANCEL_SVC_KEI");
		
		if (null == svcKeiTelMapList)
		{
			svcKeiTelMapList = new ArrayList();
			parentMap.put("CANCEL_SVC_KEI", svcKeiTelMapList);
		
		}
		
		HashMap svcKeiTelMap = new HashMap();
		
		svcKeiTelMap.put("func_code", func_code);
		
		/*----------------------* 
		 * キャンセル情報の転記   
		 *----------------------*/

		//サービス契約番号				svc_kei_no
		//申込明細番号					mskm_dtl_no
		//サービスキャンセル理由コード	svc_cancel_rsn_cd
		//異動区分						ido_div
		//更新年月日時分秒(更新前)		upd_dtm_bf
		
		parentMap.put("kk0111_svc_kei_no", (String)svcKeiMap.get("kk0081_svc_kei_no")); // サービス契約番号（排他制御のキーとして必要）
		svcKeiTelMap.put("kk0081_svc_kei_no",	(String)svcKeiMap.get("kk0081_svc_kei_no"));	// サービス契約番号
		svcKeiTelMap.put("kk0081_mskm_dtl_no",	(String)svcKeiMap.get("kk0081_mskm_dtl_no"));	// 申込明細番号
		svcKeiTelMap.put("kk0081_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);							// サービスキャンセル理由コード
		svcKeiTelMap.put("kk0081_ido_div",		(String)svcKeiMap.get("kk0081_ido_div"));		// 異動区分
		svcKeiTelMap.put("kk0081_upd_dtm_bf",	(String)svcKeiMap.get("kk0081_last_upd_dtm"));	// 更新年月日時分秒(更新前)
		
		svcKeiTelMapList.add(svcKeiTelMap);
		
	}
	
	/**
	 * 上りマッピングをする（ｅｏ光ネットキャンセル）
	 * @param bean [0]：申込新規登録画面、[1]：共通
	 * @param outputMap データ出力先マップ
	 * @param func_code 機能コード
	 * @param mskmMap KKSV0079_申込新規登録初期表示の検索結果
	 * @return データ格納マップ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV056806CC(
			X31SDataBeanAccess[] bean,
			HashMap outputMap,
			String func_code,
			HashMap mskmMap) throws Exception
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		HashMap kksv007904CCMap = (HashMap)mskmMap.get("KKSV007904CC");

		HashMap childMap = new HashMap();
		//////////////////////////////////////
		// 割賦契約キャンセルリスト         //
		//////////////////////////////////////
		ArrayList kk2541_childList = new ArrayList();
		kk2541_childList = (ArrayList)kksv007904CCMap.get("kk2541_EKK2541B502CBSMsg1List");

		ArrayList kap_cancel_list = new ArrayList();

		if (kk2541_childList != null)
		{

			for (int i = 0; i < kk2541_childList.size(); i++)
			{
				HashMap kapCancelMap = new HashMap();
				childMap = (HashMap)kk2541_childList.get(i);

				// 割賦契約番号
				kapCancelMap.put("kk2541_kap_kei_no", (String)childMap.get("kk2541_kap_kei_no"));
				// 申込明細番号
				kapCancelMap.put("kk2541_mskm_dtl_no", (String)childMap.get("kk2541_mskm_dtl_no"));
				// 異動区分
				kapCancelMap.put("kk2541_ido_div", (String)childMap.get("kk2541_ido_div"));
				// 更新年月日時分秒(更新前)
				kapCancelMap.put("kk2541_upd_dtm_bf", (String)childMap.get("kk2541_last_upd_dtm"));

				kap_cancel_list.add(kapCancelMap);
			}
		}
		parentMap.put("kap_cancel_list", kap_cancel_list);

		//////////////////////////////////////
		// 割引サービス契約キャンセルリスト //
		//////////////////////////////////////
		ArrayList kk0451_childList = new ArrayList();
		kk0451_childList = (ArrayList)kksv007904CCMap.get("kk0451_EKK0451B030CBSMsg1List");

		ArrayList wrib_cancel_list = new ArrayList();
		if (kk0451_childList != null)
		{
			for (int i = 0; i < kk0451_childList.size(); i++)
			{
				HashMap wribCancelMap = new HashMap();
				childMap = (HashMap)kk0451_childList.get(i);

				if (childMap.get("kk0451_wrib_svc_kei_no") == null)
				{
					continue;
				}
				
				// 割引サービス契約番号
				wribCancelMap.put("kk0451_wrib_svc_kei_no", childMap.get("kk0451_wrib_svc_kei_no"));
				// 申込明細番号
				wribCancelMap.put("kk0451_mskm_dtl_no", childMap.get("kk0451_mskm_dtl_no"));
				// サービスキャンセル理由コード
				wribCancelMap.put("kk0451_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
				// 異動区分
				wribCancelMap.put("kk0451_ido_div", childMap.get("kk0451_ido_div"));
				// 割引解約キャンセル契機コード
				wribCancelMap.put("kk0451_wrib_dsl_cncl_opty_cd", ADD_OPTY_CD_MANUAL);
				// 更新年月日時分秒(更新前)
				wribCancelMap.put("kk0451_upd_dtm_bf", childMap.get("kk0451_last_upd_dtm"));

				wrib_cancel_list.add(wribCancelMap);
			}
		}

		parentMap.put("wrib_cancel_list", wrib_cancel_list);

		////////////////////////////////////////////////
		// 機器オプションサービス契約キャンセルリスト //
		////////////////////////////////////////////////
		ArrayList kk2811ChildList = new ArrayList();
		kk2811ChildList = (ArrayList)kksv007904CCMap.get("kk2811_EKK2811B502CBSMsg1List");
		
		ArrayList kkopCancelList = new ArrayList();

		if (kk2811ChildList != null)
		{
			for (int i = 0; i < kk2811ChildList.size(); i++)
			{
				HashMap kkopCancelMap = new HashMap();
				childMap = (HashMap)kk2811ChildList.get(i);
				
				// 機器オプションサービス契約番号
				kkopCancelMap.put("kk2811_kkop_svc_kei_no", childMap.get("kk2811_kkop_svc_kei_no"));
				// 申込明細番号
				kkopCancelMap.put("kk2811_mskm_dtl_no", childMap.get("kk2811_mskm_dtl_no"));
				// サービスキャンセル理由コード
				kkopCancelMap.put("kk2811_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
				// 異動区分
				kkopCancelMap.put("kk2811_ido_div", getIdoDiv(bean[0].sendMessageString(KKW00101SFConst.MSKM_FLG, X31CWebConst.DATABEAN_GET_VALUE)));
				// 更新年月日時分秒(更新前)
				kkopCancelMap.put("kk2811_upd_dtm_bf", childMap.get("kk2811_last_upd_dtm"));
				
				kkopCancelList.add(kkopCancelMap);
			}
		}

		parentMap.put("kkop_cancel_list", kkopCancelList);
		
		//////////////////////////
		// 機器キャンセルリスト //
		//////////////////////////
		ArrayList kk0341_childList = new ArrayList();
		kk0341_childList = (ArrayList)kksv007904CCMap.get("kk0341_EKK0341B508CBSMsg1List");

		ArrayList kktk_cancel_list = new ArrayList();

		if (kk0341_childList != null)
		{

			for (int i = 0; i < kk0341_childList.size(); i++)
			{
				HashMap kktkCancelMap = new HashMap();
				childMap = (HashMap)kk0341_childList.get(i);

				// 機器提供サービス契約番号（機器提供サービス契約）
				kktkCancelMap.put("kk0341_kktk_svc_kei_no", childMap.get("kk0341_kktk_svc_kei_no"));
				// 申込明細番号（機器提供サービス契約）
				kktkCancelMap.put("kk0341_mskm_dtl_no", childMap.get("kk0341_mskm_dtl_no"));
				// サービスキャンセル理由コード（機器提供サービス契約）
				kktkCancelMap.put("kk0341_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
				// 異動区分（機器提供サービス契約）
				kktkCancelMap.put("kk0341_ido_div", childMap.get("kk0341_ido_div"));
				// 更新年月日時分秒（更新前）（機器提供サービス契約）
				kktkCancelMap.put("kk0341_upd_dtm_bf", childMap.get("kk0341_last_upd_dtm"));

				kktk_cancel_list.add(kktkCancelMap);
			}
		}

		parentMap.put("kktk_cancel_list", kktk_cancel_list);

		////////////////////////////////
		// サブオプションサービス契約 //
		////////////////////////////////
		////////////////////////////
		// オプションサービス契約 //
		////////////////////////////
		ArrayList kk0401_childList = new ArrayList();
		kk0401_childList = (ArrayList)kksv007904CCMap.get("EKK0351B512CBSMsg1List");

		ArrayList op_cancel_list = new ArrayList();

		if (kk0401_childList != null)
		{
			// サブオプションサービス契約
			ArrayList<HashMap<String, String>> sbop_svc_kei_cancel_list = new ArrayList();
			for (int i = 0; i < kk0401_childList.size(); i++)
			{
				childMap = (HashMap)kk0401_childList.get(i);
				
				String kk0401OpSvcKeiNo = (String)childMap.get("kk0401_op_svc_kei_no");
				if (kk0401OpSvcKeiNo != null && !"".equals(kk0401OpSvcKeiNo))
				{
					HashMap sbopSvcKeiCancelMap = new HashMap();

					// オプションサービス契約番号
					sbopSvcKeiCancelMap.put("kk0401_op_svc_kei_no", childMap.get("kk0401_op_svc_kei_no"));
					// サブオプションサービス契約番号
					sbopSvcKeiCancelMap.put("kk0401_sbop_svc_kei_no", childMap.get("kk0401_sbop_svc_kei_no"));
					// 申込明細番号
					sbopSvcKeiCancelMap.put("kk0401_mskm_dtl_no", childMap.get("kk0401_mskm_dtl_no"));
					// サービスキャンセル理由コード
					sbopSvcKeiCancelMap.put("kk0401_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
					// 異動区分
					sbopSvcKeiCancelMap.put("kk0401_ido_div", childMap.get("kk0401_ido_div"));
					// 更新年月日時分秒(更新前)
					sbopSvcKeiCancelMap.put("kk0401_upd_dtm_bf", childMap.get("kk0401_last_upd_dtm"));
					sbop_svc_kei_cancel_list.add(sbopSvcKeiCancelMap);
				}
			}

			// オプションサービス契約
			String kk0351OpSvcKeiNo = "";
			for (int i = 0; i < kk0401_childList.size(); i++)
			{
				childMap = (HashMap)kk0401_childList.get(i);
				if (kk0351OpSvcKeiNo.equals((String)childMap.get("kk0351_op_svc_kei_no")))
				{
					continue;
				}
				
				HashMap opCancelMap = new HashMap();
				ArrayList sbop_cancel_list = new ArrayList();
				
				// オプションサービス契約番号（オプションサービス契約）
				kk0351OpSvcKeiNo = (String)childMap.get("kk0351_op_svc_kei_no");
				opCancelMap.put("kk0351_op_svc_kei_no", kk0351OpSvcKeiNo);
				// 申込明細番号（オプションサービス契約）
				opCancelMap.put("kk0351_mskm_dtl_no", childMap.get("kk0351_mskm_dtl_no"));
				// サービスキャンセル理由コード（オプションサービス契約）
				opCancelMap.put("kk0351_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
				// 異動区分（オプションサービス契約）
				opCancelMap.put("kk0351_ido_div", childMap.get("kk0351_ido_div"));
				// 更新年月日時分秒（更新前）（オプションサービス契約）
				opCancelMap.put("kk0351_upd_dtm_bf", childMap.get("kk0351_last_upd_dtm"));
				
				// サブオプション契約キャンセル明細
				for (HashMap<String, String> mp : sbop_svc_kei_cancel_list)
				{
					if (kk0351OpSvcKeiNo.equals((String)mp.get("kk0401_op_svc_kei_no")))
					{
						sbop_cancel_list.add(mp);
					}
				}
				opCancelMap.put("sbop_cancel_list", sbop_cancel_list);
				
				op_cancel_list.add(opCancelMap);
			}
		}
		parentMap.put("op_cancel_list", op_cancel_list);

		ArrayList ekk0021B502_childList = new ArrayList();
		ekk0021B502_childList = (ArrayList)kksv007904CCMap.get("EKK0021B502CBSMsg1List");
		childMap.clear();

		if (ekk0021B502_childList != null)
		{
			childMap = (HashMap)ekk0021B502_childList.get(0);
		}

		////////////////////////////////
		// サービス契約内訳キャンセル //
		////////////////////////////////
		// サービス契約内訳番号
		parentMap.put("kk0161_svc_kei_ucwk_no", childMap.get("kk0161_svc_kei_ucwk_no"));
		// 申込明細番号
		parentMap.put("kk0161_mskm_dtl_no", childMap.get("kk0161_mskm_dtl_no"));
		// サービスキャンセル理由コード
		parentMap.put("kk0161_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
		// 異動区分
		parentMap.put("kk0161_ido_div", childMap.get("kk0161_ido_div"));
		// 更新年月日時分秒(更新前)
		parentMap.put("kk0161_upd_dtm_bf", childMap.get("kk0161_last_upd_dtm"));

		//////////////////
		// サービス契約 //
		//////////////////
		// サービス契約番号
		parentMap.put("kk0081_svc_kei_no", childMap.get("kk0081_svc_kei_no"));
		// 申込明細番号
		parentMap.put("kk0081_mskm_dtl_no", childMap.get("kk0081_mskm_dtl_no"));
		// サービスキャンセル理由コード
		parentMap.put("kk0081_svc_cancel_rsn_cd", JKKStrConst.CD01254_10);
		// 異動区分
		parentMap.put("kk0081_ido_div", childMap.get("kk0081_ido_div"));
		// 更新年月日時分秒(更新前)
		parentMap.put("kk0081_upd_dtm_bf", childMap.get("kk0081_last_upd_dtm"));

		outputMap.put("KKSV056806CC", parentMap);

		return outputMap;
	}
	
	/**
	 * 一時金設定キャンセルの上りマッピングを行います
	 * @param bean              [0]：申込新規登録画面、[1]：共通
	 * @param outputMap 上りマップ
	 * @param func_code 機能コード
	 * @param mskmInfoMap 照会マップ
	 * @return 上りマップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV056807CC(
			X31SDataBeanAccess[] bean,
			HashMap outputMap,
			String func_code,
			HashMap mskmInfoMap)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		ArrayList<Object> icjknCancelList = new ArrayList <Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		Boolean netCancelFlg = bean[0].sendMessageBoolean(HDN_EOH_NET_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		Boolean telCancelFlg = bean[0].sendMessageBoolean(HDN_EOH_TEL_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		Boolean tvCancelFlg = bean[0].sendMessageBoolean(HDN_EOH_TV_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		Boolean mobaCancelFlg = bean[0].sendMessageBoolean(HDN_EOMOBA_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 各サービス単位(ネット、電話、テレビ、モバイル)でマッピングを呼び出す
		setSubKKSV056807CC(icjknCancelList, mskmInfoMap, netCancelFlg, "KKSV007913CC");
		setSubKKSV056807CC(icjknCancelList, mskmInfoMap, telCancelFlg, "KKSV007914CC");
		setSubKKSV056807CC(icjknCancelList, mskmInfoMap, tvCancelFlg, "KKSV007915CC");
		setSubKKSV056807CC(icjknCancelList, mskmInfoMap, mobaCancelFlg, "KKSV007916CC");

		parentMap.put("icjkn_sette_cancel_list", icjknCancelList);

		outputMap.put("KKSV056807CC", parentMap);

		return outputMap;
	}
	
	/**
	 * 一時金一括キャンセルの上りマッピングサブルーチン（サービス単位）。
	 * <br>
	 * @param icjknCancelList   一時金設定キャンセルリスト
	 * @param mskmInfoMap       申込情報セッションマップ
	 * @param cancelFlg    キャンセルフラグ
	 * @param mapKey            一時金設定照会マップのキー
	 * @return 一時金設定キャンセルリスト
	 */
	@SuppressWarnings("unchecked")
	private void setSubKKSV056807CC(ArrayList icjknCancelList, HashMap mskmInfoMap,
			Boolean cancelFlg, String mapKey)
	{		
		// 一時金キャンセルフラグが true の場合に処理する
		if (!cancelFlg)
		{
			return;
		}
		
		// 照会時の一時金情報を取得します。
		HashMap<String, Object> icjknMap = (HashMap<String, Object>)mskmInfoMap.get(mapKey);
		if (icjknMap == null)
		{
			return;
		}
		ArrayList<HashMap> icjknDtlList = (ArrayList<HashMap>)icjknMap.get("EKK1021B501CBSMsg1List");
		if (icjknDtlList == null || icjknDtlList.size() < 1)
		{
			return;
		}
		
		for (HashMap<String, Object> icjkn_sette : icjknDtlList)
		{
			// 一時金設定キャンセル
			HashMap<String, Object> icjknCancelMap = new HashMap <String, Object>();
			
			// 一時金設定番号
			// 更新年月日時分秒(更新前)
			icjknCancelMap.put("icjkn_sette_no", (String)icjkn_sette.get("icjkn_sette_no"));
			icjknCancelMap.put("upd_dtm_bf",     (String)icjkn_sette.get("upd_dtm"));
			
			icjknCancelList.add(icjknCancelMap);
		}
		
		return;
	}
	
	/**
	 * 請求オプションサービス契約適用の上りマッピングを行います。
	 * <br>
	 * @param bean 申込新規登録画面
	 * @param outputMap 出力先マップ
	 * @param func_code 機能コード
	 * @param mskmMap KKSV0079_申込新規登録初期表示の検索結果
	 * @return 出力先マップ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV056808CC(
			X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, HashMap mskmMap) throws Exception
	{

		HashMap preMap = (HashMap)mskmMap.get("KKSV007903CC");

		// 請求契約番号
		String seikyKeiNo = "";

		if (preMap == null)
		{
			preMap = new HashMap();
		}
		else
		{
			seikyKeiNo = getSeikyKeiNo(mskmMap);
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 異動区分
		String idoDiv = "";
		String mskmFlg = bean[0].sendMessageString(KKW00101SFConst.MSKM_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		if ("1".equals(mskmFlg))
		{
			// 新規申込の場合

			idoDiv = IDO_DIV_NEW;
		}
		else
		{
			// 新規申込以外の場合

			idoDiv = IDO_DIV_ADD;
		}

		boolean isSohus = (MSKM_FORM_CD_SHOMEN.equals(bean[0].sendMessageString(KKW00101SFConst.MSKM_FORM_CD, X31CWebConst.DATABEAN_GET_VALUE)) 
				&& PAYWAY_ARIV_CD_ARIV.equals(bean[0].sendMessageString(KKW00101SFConst.PAYWAY_ARIV, X31CWebConst.DATABEAN_GET_VALUE)))
			|| isMskmType(bean[0], IS_JDG_YO_MSKM_TYPE_ADSL, IS_JDG_YO_MSKM_FORM_SYO)
			|| isMskmType(bean[0], IS_JDG_YO_SKM_TYPE_MBL, IS_JDG_YO_MSKM_FORM_SYO);

		// 支払方法継続利用を取得
		String paywayKeizokuUse = bean[0].sendMessageString(KKW00101SFConst.PAYWAY_KEIZOKU_USE, X31CWebConst.DATABEAN_GET_VALUE);

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 支払タブが表示されている場合
		if (isSohus)
		{
			// 請求書発行要否
			String seikyusHakkoYhCd = JKKWebCommon.convertCode(bean[0], KKW00101SFConst.SEIKYUS_HAKKO_YH, KKW00101SFConst.SEIKYUS_HAKKO_YH_CD_29,
					KKW00101SFConst.SEIKYUS_HAKKO_YH_CD_LIST_29);
			parentMap.put("seikyus_hakko_yh", seikyusHakkoYhCd);
		}
		// 追加申込 かつ 継続 の場合
		else if (MSKM_FLG_TSUIKA.equals(mskmFlg) && PAYWAY_KEIZOKU_USE.equals(paywayKeizokuUse))
		{
			// 請求書発行要否
			String seikyusHakkoYhCd = JKKWebCommon.convertCode(bean[0], KKW00101SFConst.SEIKYUS_HAKKO_YH, KKW00101SFConst.SEIKYUS_HAKKO_YH_CD_29,
					KKW00101SFConst.SEIKYUS_HAKKO_YH_CD_LIST_29);
			parentMap.put("seikyus_hakko_yh", seikyusHakkoYhCd);
		}
		else
		{
			// 請求書発行要否
			parentMap.put("seikyus_hakko_yh", JKKStrConst.CD00001_0);
		}

		// ＫＥＹ＿請求契約番号
		parentMap.put("kk044101_key_seiky_kei_no", seikyKeiNo);
		// ＫＥＹ＿請求契約番号
		parentMap.put("KK0081_key_seiky_kei_no", seikyKeiNo);
		// 請求契約番号
		parentMap.put("kk044102_seiky_kei_no", seikyKeiNo);
		// SYSID
		parentMap.put("kk044102_sysid", bean[0].sendMessageString(KKW00101SFConst.PARAM_SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		// 請求オプションサービスコード
		parentMap.put("kk044102_seiopsvc_cd", SEIOPSVC_CD_SKS_HAK_CMS);
		// 料金コースコード
		parentMap.put("kk044102_pcrs_cd", PORS_CD_SKS_HAK_CMS);
		// 料金プランコード
		parentMap.put("kk044102_pplan_cd", PPLAN_CD_SKS_HAK_CMS);
		// 異動区分
		parentMap.put("kk044102_ido_div", idoDiv);
		// 料金コースコード
		parentMap.put("kk044102_pcrs_cd", PORS_CD_SKS_HAK_CMS);
		// サービスキャンセル理由コード
		parentMap.put("kk044103_svc_cancel_rsn_cd", SVC_CANCEL_RSN_CD_MSKM_ABDMNT);
		// 異動区分
		parentMap.put("kk044103_ido_div", idoDiv);

		outputMap.put("KKSV056808CC", parentMap);

		return outputMap;
	}
	
	/**
	 * 他事業者割引契約申込適用の上りマッピングを行います。
	 * <br>
	 * @param bean 申込新規登録画面
	 * @param outputMap 出力先マップ
	 * @param func_code 機能コード
	 * @param mskmMap KKSV0079_申込新規登録初期表示の検索結果
	 * @return 出力先マップ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV056809CC(
			X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, HashMap mskmMap) throws Exception
	{

		HashMap preMap = (HashMap)mskmMap.get("KKSV007910CC");

		if (preMap == null)
		{
			preMap = new HashMap();
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// バリューコード（照会情報）
		String kddiValCdBf = (String)preMap.get("kddi_val_cd");

		// 照会時のネットサービス有無
		Boolean netCancelFlg = bean[0].sendMessageBoolean(HDN_EOH_NET_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		// 照会時の電話サービス有無
		Boolean telCancelFlg = bean[0].sendMessageBoolean(HDN_EOH_TEL_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		// キャンセル条件
		Boolean delFlg = kddiValCdBf != null && !"".equals(kddiValCdBf) && ((netCancelFlg || telCancelFlg));

		// 削除マッピング
		if(delFlg)
		{
			// 他事業者割引契約番号（削除用）
			parentMap.put("del_tajgs_wrib_kei_no", preMap.get("tajgs_wrib_kei_no"));
			// 更新年月日時分秒（更新前）
			parentMap.put("upd_dtm_bf", preMap.get("last_upd_dtm"));
		}
		
		outputMap.put("KKSV056809CC", parentMap);

		return outputMap;
	}
	
	/**
	 * 申込キャンセルの上りマッピングを行います。 
	 * @param bean             [0]：申込新規登録画面、[1]：共通
	 * @param outputMap        出力先マップ
	 * @param func_code        機能コード
	 * @param mskmMap          KKSV0079_申込新規登録初期表示の検索結果
	 * @return                 出力先マップ
	 * @throws Exception
	 */


	@SuppressWarnings("unchecked")
	public HashMap setKKSV056810CC(
			X31SDataBeanAccess[] bean,
			HashMap outputMap,
			String func_code,
			HashMap mskmMap) throws Exception
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		HashMap kksv007901CCMap = (HashMap)mskmMap.get("KKSV007901CC");
		
		// サービス契約回線内訳
		ArrayList childList = (ArrayList)kksv007901CCMap.get("mskm_svc_kei_ucwk_list");
		HashMap childMap = (childList != null) && (childList.size() > 0) ? (HashMap)childList.get(0) : null;
		if (childMap == null)
		{
			return null;
		}
		
		/////////////////////
		// 申込情報キャンセル
		/////////////////////
		
		// 申込番号 → 申込変更マップ.申込番号
		parentMap.put("kk0011_mskm_no", childMap.get("mskm_no"));
		// サービスキャンセル理由コード
		parentMap.put("kk0011_mskm_cancel_rsn_cd", JKKStrConst.CD01254_10);
		// コンシューマ営業用申込状態識別コード
		parentMap.put("kk0011_consmbsn_mskm_stat_skbt_cd", JKKStrConst.CD00760_05);
		// 更新年月日時分秒(更新前)(申込)
		parentMap.put("kk0011_kk0011_upd_dtm_bf", childMap.get("last_upd_dtm"));

		ArrayList<HashMap<String, Object>> mskmDtlList = new ArrayList<HashMap<String, Object>>();

		// 各サービス単位(ネット、電話、テレビ、モバイル)でマッピングを呼び出す
		setSubKKSV056810CC(mskmDtlList, mskmMap, MSKM_DTL_CANCEL_PARAMS[0], bean[0].sendMessageBoolean(HDN_EOH_NET_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		setSubKKSV056810CC(mskmDtlList, mskmMap, MSKM_DTL_CANCEL_PARAMS[1], bean[0].sendMessageBoolean(HDN_EOH_TEL_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		setSubKKSV056810CC(mskmDtlList, mskmMap, MSKM_DTL_CANCEL_PARAMS[2], bean[0].sendMessageBoolean(HDN_EOH_TV_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		setSubKKSV056810CC(mskmDtlList, mskmMap, MSKM_DTL_CANCEL_PARAMS[3], bean[0].sendMessageBoolean(HDN_EOMOBA_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 申込明細キャンセルリスト
		parentMap.put("EKK0011C060CBSMsg1List", mskmDtlList);

		outputMap.put("KKSV056810CC", parentMap);

		return outputMap;
	}
	
	/**
	 * 申込キャンセルの上りマッピングサブルーチン（サービス単位）。 
	 * 	@SuppressWarnings("unchecked")
	 * @param mskmDtlList
	 * @param mskmInfoMap
	 * @param svcParams
	 * @param svcFlg
	 */
	@SuppressWarnings("unchecked")
	private void setSubKKSV056810CC(ArrayList mskmDtlList, 
			HashMap mskmInfoMap, 
			String[] svcParams, 
			Boolean svcFlg)
	{		
		// 照会フラグが true の場合に処理する
		if (!svcFlg)
		{
			return;
		}
		
		// 照会時の一時金情報を取得します。
		HashMap<String, Object> svcMap = (HashMap<String, Object>)mskmInfoMap.get(svcParams[0]);
		if (svcMap == null)
		{
			return;
		}
		
		// ネットの場合
		if(!"".equals(svcParams[1]))
		{
			ArrayList ekk0021B502_childList = new ArrayList();
			ekk0021B502_childList = (ArrayList)svcMap.get(svcParams[1]);
			if (ekk0021B502_childList != null)
			{
				svcMap = (HashMap)ekk0021B502_childList.get(0);
			}
		}
		
		HashMap<String, Object> mskmMeisaiiMap = new HashMap<String, Object>();
		
		// 申込明細番号
		mskmMeisaiiMap.put("kk0011_mskm_dtl_no", svcMap.get(svcParams[2]));
		// 申込明細キャンセル理由コード
		mskmMeisaiiMap.put("kk0011_mskm_dtl_cancel_rsn_cd", JKKStrConst.CD01254_10);
		// 申込明細キャンセル理由メモ	
		mskmMeisaiiMap.put("kk0011_mskm_dtl_cancel_rsn_memo", svcMap.get(svcParams[3]));
		
		mskmDtlList.add(mskmMeisaiiMap);
		
		return;
	}
	
	
	/**
	 * 対応履歴に対する上りマッピングを行う。
	 * @param bean
	 * @param outputMap
	 * @param funcCode
	 * @param mskmMap
	 * @param opeDateTimeStamp
	 * @param svcKeiUpdFlgs
	 * @return outputMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV056811CC(X31SDataBeanAccess[] bean, HashMap outputMap, String funcCode, HashMap<String, Object> mskmMap, 
			String opeDateTimeStamp, HashMap<String, Boolean> svcKeiUpdFlgs) throws Exception
	{
		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}
		
		//運用年月日時分秒の取得
		String opeDateTime = opeDateTimeStamp.substring(0, 14);
		//運用年月日の取得
		String opeDate = opeDateTimeStamp.substring(0, 8);

		ArrayList<HashMap<String, Object>> parentList = new ArrayList<HashMap<String, Object>>();

// ANK-4494-00-00 DEL START
//		//同番移転取消時（電話１）
//		if(bean[0].sendMessageBoolean(KKW00101SFConst.TEL1_DOBANMOVE_CL_FLG , X31CWebConst.DATABEAN_GET_VALUE))
//		{
//			//電話１　同番移転受付番号
//			String tel1NttUkNo = getDobanitenNttUkNo(mskmMap, 0);
//
//			parentList.add(setJKKAddTaiorrki(bean, opeDateTime, opeDate, funcCode, DOBANITEN_CANCEL, svcKeiUpdFlgs, tel1NttUkNo, mskmMap));
//		}
//
//		//同番移転取消時（電話２）
//		if(bean[0].sendMessageBoolean(KKW00101SFConst.TEL2_DOBANMOVE_CL_FLG , X31CWebConst.DATABEAN_GET_VALUE))
//		{
//			//電話２　同番移転受付番号
//			String tel2NttUkNo = getDobanitenNttUkNo(mskmMap, 1);
//
//			parentList.add(setJKKAddTaiorrki(bean, opeDateTime, opeDate, funcCode, DOBANITEN_CANCEL, svcKeiUpdFlgs, tel2NttUkNo, mskmMap));
//		}
// ANK-4494-00-00 DEL END

		outputMap.put("KKSV056811CC", parentList);

		return outputMap;
	}
	
	
	/**
	 * 対応履歴上りマッピング
	 * @param bean
	 * @param opeDateTime
	 * @param opeDate
	 * @param funcCode
	 * @param sksiSbt
	 * @param svcKeiUpdFlgs
	 * @param nttUkNo
	 * @param mskmMap
	 * @return returnMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> setJKKAddTaiorrki(X31SDataBeanAccess[] bean, String opeDateTime,
			String opeDate, String funcCode,  String sksiSbt, HashMap<String, Boolean> svcKeiUpdFlgs, 
			String nttUkNo, HashMap<String, Object> mskmMap) throws Exception
	{
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		
		// 共通フォームBeanから権限リストを取得
		X31SDataBeanAccessArray kggrpCdList = bean[1].getDataBeanArray(CommonInfoCFConst.KGGRP_CD_LIST);
		// 共通フォームBeanからユーザーIDを取得
		String userId = bean[1].sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);
		// 共通フォームBeanからユーザー名を取得
		String userNm = bean[1].sendMessageString(CommonInfoCFConst.USER_NM, X31CWebConst.DATABEAN_GET_VALUE);

		// 権限リストの2レコード目を取得
		X31SDataBeanAccess beanKggrpCdList2 = kggrpCdList.getDataBean(1);

		// 権限リストの2レコード目から組織CDを取得
		String wkkbtOrgCd = beanKggrpCdList2.sendMessageString(CommonInfoCFConst.ORG_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		wkkbtOrgCd = shiteiSizeUmkm(wkkbtOrgCd, "0", 10);
		// 権限リストの2レコード目から組織名を取得
		String wkkbtOrgNm = beanKggrpCdList2.sendMessageString(CommonInfoCFConst.ORG_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		HashMap<String, Object> queBoxB020Map = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", funcCode);
		/********************************************************/
		/** キューBOXMYBOX現在格納数                            */
		/********************************************************/
		//ユーザID
		queBoxB020Map.put("key_user_id", userId);
		parentMap.put("getQueBoxB020Map", queBoxB020Map);
		
		/********************************************************/
		/** 対応登録                                            */
		/********************************************************/
		HashMap<String, Object> addTaioKirokD010Map = new HashMap<String, Object>();
		//対応ユーザーＩＤ
		addTaioKirokD010Map.put("taio_user_id", userId);
		//光電話
		HashMap<String, Object> telMap = (HashMap)mskmMap.get("KKSV007905CC");
		
		//サービス契約番号
		addTaioKirokD010Map.put("svc_kei_no", (String)telMap.get("kk0081_svc_kei_no"));
		//問合せ客番号
		addTaioKirokD010Map.put("proscst_no", "");
		//ＭＹＢＯＸ番号
		addTaioKirokD010Map.put("mybox_no", "");
		//ＭＹＢＯＸ格納年月日時分秒
		addTaioKirokD010Map.put("mybox_kakno_dtm", opeDateTime);
		//対応開始年月日時分秒
		addTaioKirokD010Map.put("taio_sta_dtm", opeDateTime);
		//問合せ受付種別コード
		addTaioKirokD010Map.put("toiawase_uk_sbt_cd", TORK_TOIAWASE_UK_SBT_CD_OTHER);
		//簡易メモ
		addTaioKirokD010Map.put("easy_memo", "");
		//タイトル
		addTaioKirokD010Map.put("title", JKKWebCommon.getTorkTitle(bean[0], svcKeiUpdFlgs, sksiSbt, opeDate, nttUkNo));
		// 受付年月日時分秒
		addTaioKirokD010Map.put("uk_dtm", opeDateTime);
		// 一時保存有無
		addTaioKirokD010Map.put("tmp_save_um", TORK_TMP_SAVE_UM);
		// コールバック希望年月日
		addTaioKirokD010Map.put("callbk_kibo_ymd", "");
		// コールバック希望時間
		addTaioKirokD010Map.put("callbk_kibo_time", "");
		// コールバック時間指定タイプコード
		addTaioKirokD010Map.put("callbk_shitei_type_cd", "");
		// ログインユーザーID
		addTaioKirokD010Map.put("login_user_id", userId);
		// ログインユーザー名
		addTaioKirokD010Map.put("login_user_nm", userNm);
		// 業務個別設定組織コード
		addTaioKirokD010Map.put("wkkbt_org_cd", wkkbtOrgCd);
		// 業務個別設定組織名
		addTaioKirokD010Map.put("wkkbt_org_nm", wkkbtOrgNm);
		
		parentMap.put("addTaioKirokD010Map", addTaioKirokD010Map);
		
		/********************************************************/
		/** 対応記録明細登録用                                  */
		/********************************************************/
		HashMap<String, Object> addTaioKirokDtlD010Map = new HashMap<String, Object>();
		//対応記録番号
		addTaioKirokDtlD010Map.put("taio_kirok_no", "");
		// アクション開始年月日時分秒
		addTaioKirokDtlD010Map.put("action_sta_dtm", opeDateTime);
		// アクション完了年月日時分秒
		addTaioKirokDtlD010Map.put("action_fin_dtm", opeDateTime);
		// 対応ユーザーID
		addTaioKirokDtlD010Map.put("taio_user_id", userId);
		// クローズ不可コード
		addTaioKirokDtlD010Map.put("close_fail_cd", TORK_CLOSE_FAIL_CD_FAIL);
		// ログインユーザーID
		addTaioKirokDtlD010Map.put("login_user_id", userId);
		// ログインユーザー名
		addTaioKirokDtlD010Map.put("login_user_nm", userNm);
		// 業務個別設定組織コード
		addTaioKirokDtlD010Map.put("wkkbt_org_cd", wkkbtOrgCd);
		// 業務個別設定組織名
		addTaioKirokDtlD010Map.put("wkkbt_org_nm", wkkbtOrgNm);
		
		parentMap.put("addTaioKirokDtlD010Map", addTaioKirokDtlD010Map);
		
		/********************************************************/
		/** 対応記録明細登録(コール）用                         */
		/********************************************************/
		HashMap<String, Object> addTaioKirokDtlD020Map = new HashMap<String, Object>();
		//対応記録
		addTaioKirokDtlD020Map.put("taio_kirok_no", "");
		//アクション開始年月日時分秒
		addTaioKirokDtlD020Map.put("action_sta_dtm", opeDateTime);
		//アクション完了年月日時分秒
		addTaioKirokDtlD020Map.put("action_fin_dtm", opeDateTime);
		//対応ユーザーＩＤ
		addTaioKirokDtlD020Map.put("taio_user_id", userId);
		//問合せ元名
		addTaioKirokDtlD020Map.put("toiawase_moto_nm", "");
		//問合せ内容
		addTaioKirokDtlD020Map.put("toiawase_naiyo", getTawsNyo(bean[0], sksiSbt, opeDate, mskmMap));
		//回答内容
		addTaioKirokDtlD020Map.put("ans_naiyo", "");
		//コンタクト先コード
		addTaioKirokDtlD020Map.put("contact_saki_cd", "");
		//編集状態フラグ
		addTaioKirokDtlD020Map.put("henshu_stat_flg", "0");
		// ログインユーザーID
		addTaioKirokDtlD020Map.put("login_user_id", userId);
		// ログインユーザー名
		addTaioKirokDtlD020Map.put("login_user_nm", userNm);
		// 業務個別設定組織コード
		addTaioKirokDtlD020Map.put("wkkbt_org_cd", wkkbtOrgCd);
		// 業務個別設定組織名
		addTaioKirokDtlD020Map.put("wkkbt_org_nm", wkkbtOrgNm);
		
		parentMap.put("addTaioKirokDtlD020Map", addTaioKirokDtlD020Map);
		
		/********************************************************/
		/** ホットボイス                                        */
		/********************************************************/
		HashMap<String, Object> jkkAddHotVoicUtil = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> uwCtgrnList = new ArrayList<HashMap<String, Object>>();
		ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> rspCtgrMap = new HashMap<String, Object>();
		
		// 対応記録内訳番号
		jkkAddHotVoicUtil.put("taio_kirok_ucwk_no", TORK_TAIO_KIROK_UCWK_NO);
		// 問合せ応対区分
		jkkAddHotVoicUtil.put("toiawase_rsp_div", TORK_TOIAWASE_RSP_DIV_TOIAWASE);
		// お客様の声
		jkkAddHotVoicUtil.put("cust_koe", "");
		// ＣＳＲの声
		jkkAddHotVoicUtil.put("csr_koe", "");
		// 表示順序
		jkkAddHotVoicUtil.put("dsp_jun", TORK_DSP_JUN);
		// 対応記録内訳抽出ワーク作成区分
		jkkAddHotVoicUtil.put("tiokr_uw_cst_wk_add_div", TORK_TIOKR_UW_CST_WK_DIV_TAIO);
		// 編集状態フラグ
		jkkAddHotVoicUtil.put("henshu_stat_flg", TORK_HENSHU_STAT_FLG_FIN);
		
		//対応履歴登録ケース別のカテゴリをリストを取得
		String[][] ctgrList = JKKWebCommon.getTorkCtglList(sksiSbt);

		for (int j = 0; j < ctgrList.length; j++)
		{
			
			HashMap<String, Object> uwCtgrnMap = new HashMap<String, Object>();
			
			// 対応記録内訳番号
			uwCtgrnMap.put("taio_kirok_ucwk_no", TORK_TAIO_KIROK_UCWK_NO);
			// 対応記録内訳カテゴリー → 対応記録ホットボイスマップ.応対区分リスト.カテゴリーＮレベル
			uwCtgrnMap.put("taiokrk_uw_ctgr_lv", ctgrList[j][0]);
			
			// 上位連結カテゴリー名
			if (TORK_TAIOKRK_UW_CTGR_LV1.equals(ctgrList[j][0]))
			{
				// レベル１の場合、業務個別設定組織コードを設定
				uwCtgrnMap.put("joi_rnkt_ctgr_nm", wkkbtOrgCd);
			}
			else
			{
				// レベル１以外の場合、前空白埋めで160バイトの固定長で上位のカテゴリー名を設定
				uwCtgrnMap.put("joi_rnkt_ctgr_nm", shiteiSizeUmkm(ctgrList[j - 1][1], " ", 160));
			}
			
			// 下位のカテゴリーが存在するか
			if (SINSEI.equals(sksiSbt) && TORK_TAIOKRK_UW_CTGR_LV2.equals(ctgrList[j][0]))
			{
				// レベル４の場合、下位カテゴリーは存在しない
				uwCtgrnMap.put("kai_ctgr_um", COPE_HISTORY_KAI_CTGR_UM_OFF);
			}
			else if((DOBANITEN_ADD.equals(sksiSbt) ||
					DOBANITEN_CANCEL.equals(sksiSbt)) && TORK_TAIOKRK_UW_CTGR_LV4.equals(ctgrList[j][0]))
			{
				// レベル４の場合、下位カテゴリーは存在しない
				uwCtgrnMap.put("kai_ctgr_um", COPE_HISTORY_KAI_CTGR_UM_OFF);
			}
			else
			{
				// 下位カテゴリーが存在する。
				uwCtgrnMap.put("kai_ctgr_um", COPE_HISTORY_KAI_CTGR_UM_ON);
			}
			
			// 対応記録内訳カテゴリー名
			uwCtgrnMap.put("taiokrk_uw_ctgr_nm", ctgrList[j][1]);
			// クローズ不可コード
			uwCtgrnMap.put("close_fail_cd", TORK_CLOSE_FAIL_CD_FAIL);
			// 編集状態フラグ
			uwCtgrnMap.put("henshu_stat_flg", TORK_HENSHU_STAT_FLG_FIN);
			// ログインユーザーID
			uwCtgrnMap.put("login_user_id", userId);
			// ログインユーザー名
			uwCtgrnMap.put("login_user_nm", userNm);
			// 業務個別設定組織コード
			uwCtgrnMap.put("wkkbt_org_cd", wkkbtOrgCd);
			// 業務個別設定組織名
			uwCtgrnMap.put("wkkbt_org_nm", wkkbtOrgNm);
			// 処理済フラグ
			uwCtgrnMap.put("syrzm_flg", COPE_HISTORY_SYRZM_FLG_MI_TRN);
			
			uwCtgrnList.add(uwCtgrnMap);
		}
		
		jkkAddHotVoicUtil.put("UW_CTGRN_List", uwCtgrnList);
		
		list.add(jkkAddHotVoicUtil);
		
		rspCtgrMap.put("RSP_CTGR_List", list);
		
		rspCtgrMap.put("func_code", funcCode);
		
		parentMap.put("JKKAddHotVoicUtil", rspCtgrMap);
		
		/**************************************************************************/
		/**対応記録クローズ更新用マップ（同番移転登録・同番移転キャンセル時）     */
		/**************************************************************************/
		if(DOBANITEN_ADD.equals(sksiSbt) || DOBANITEN_CANCEL.equals(sksiSbt))
		{
			HashMap<String, Object> chgTaioKirokC080Map = new HashMap<String, Object>();
			
			//対応記録番号
			chgTaioKirokC080Map.put("taio_kirok_no", "");
			//対応完了年月日時分秒
			chgTaioKirokC080Map.put("taio_fin_dtm", opeDateTime);
			//対応クローズ年月日時分秒
			chgTaioKirokC080Map.put("last_end_dtm", opeDateTime);
			//アクション開始年月日時分秒
			chgTaioKirokC080Map.put("action_sta_dtm", opeDateTime);
			//アクション完了年月日時分秒
			chgTaioKirokC080Map.put("action_fin_dtm", opeDateTime);
			//対応ユーザーID
			chgTaioKirokC080Map.put("taio_user_id", userId);
			//更新前更新年月日時分秒
			chgTaioKirokC080Map.put("upd_dtm_bf", "");
			//業務個別設定組織コード
			chgTaioKirokC080Map.put("wkkbt_org_cd", wkkbtOrgCd);
			//業務個別設定組織名
			chgTaioKirokC080Map.put("wkkbt_org_nm", wkkbtOrgNm);
			//ログインユーザー名
			chgTaioKirokC080Map.put("login_user_nm", userNm);
			//ＰＡＲ＿対応ユーザーID
			chgTaioKirokC080Map.put("par_taio_user_id", userId);
			//対応開始年月日時分秒
			chgTaioKirokC080Map.put("taio_sta_dtm", opeDateTime);
			
			parentMap.put("chgTaioKirokC080Map", chgTaioKirokC080Map);
		}
		// 申込書番号
		// 更新時にタイトルに使用するため修正
		parentMap.put("mskmsho_no", bean[0].sendMessageString(KKW00101SFConst.MSKMSHO_NO, X31CWebConst.DATABEAN_GET_VALUE));
		
		return parentMap;
	}
	
	/**
	 * 対応履歴項目（問い合わせ内容）を返却する。
	 * @param bean
	 * @param sbtCd
	 * @param opeDate
	 * @param mskmMap
	 * @return 問い合わせ内容
	 */
	@SuppressWarnings("unchecked")
	private String getTawsNyo(X31SDataBeanAccess bean, String sbtCd, String opeDate, HashMap<String, Object> mskmMap)
	{		
		String custNm = "";
		HashMap childMap = new HashMap();
		ArrayList childList = null;
		childMap = null;
		
		if (!mskmMap.containsKey("KKSV007902CC"))
		{
			return null;
		}
		HashMap<String, Object> preMap = (HashMap<String, Object>)mskmMap.get("KKSV007902CC");

		childList = (ArrayList)preMap.get("ECK0011A010CBSMsg1List");
		childMap = (HashMap)childList.get(0);
	
		//契約種別
		String keishaType = (String)childMap.get("ck0011_keisha_type_cd");
		
		if(JKKStrConst.KEISHA_TYPE_CD_KOJIN.equals(keishaType))
		{
			// 契約者情報-氏名
			custNm = (String)childMap.get("ck0011_cust_nm") + "様の";
		}
		else
		{
			childList = (ArrayList)preMap.get("ECK0031A010CBSMsg1List");
			childMap = (HashMap)childList.get(0);

			// 法人格前後指定
			String hojinZengoCd = (String)childMap.get("ck0031_hojin_zengo_shitei_cd");
			// 法人格種別
			String hojinSbtNm = (String)childMap.get("ck0031_hojin_sbt_cd_nm");
			// 法人名
			String hojinNm = (String)childMap.get("ck0031_comp_nm");

			if(JKKStrConst.HOJIN_ZENGO_SHITEI_CD_BF.equals(hojinZengoCd))
			{
				custNm = hojinSbtNm + "　" + hojinNm + "様の";
			}
			else if(JKKStrConst.HOJIN_ZENGO_SHITEI_CD_AF.equals(hojinZengoCd))
			{
				custNm = hojinNm + "　" + hojinSbtNm + "様の";
			}
			else
			{
				custNm = hojinNm + "様の";
			}
		}
		
		return opeDate + JKKStrConst.LINE_SEPARATOR + custNm + JKKStrConst.LINE_SEPARATOR + JKKStrConst.MSG_DOBANITEN_CANCEL_EASY_MEMO;

	}
	
	/**
	 * 申込情報マップから請求契約番号を取得します。
	 * @param mskmInfoMap JKKGetMskmSvcKeiUcwkListCCで取得した申込情報マップ
	 * @return 請求契約番号
	 */
	@SuppressWarnings("unchecked")
	private String getSeikyKeiNo(HashMap<String, Object> mskmInfoMap)
	{
		HashMap paywayMap = (HashMap)mskmInfoMap.get("KKSV007903CC");
		if (paywayMap == null)
		{
			return null;
		}

		return (String)paywayMap.get("seiky_kei_no"); // 請求契約番号
	}	

	/**
	 * 申込情報マップから同番移転リストのＮＴＴ受付番号を取得する。
	 * @param mskmMap
	 * @param telNo
	 * @return String
	 */
	@SuppressWarnings("unchecked")
	private String getDobanitenNttUkNo(HashMap<String, Object> mskmMap, int telNo)
	{
		if (!mskmMap.containsKey("KKSV007905CC"))
		{
			return null;
		}
		HashMap<String, Object> parentMap = (HashMap<String, Object>)mskmMap.get("KKSV007905CC");

		if(!parentMap.containsKey("dobaniten_list"))
		{
			return null;
		}
		
		ArrayList<HashMap<String, Object>> dobanitenList = (ArrayList<HashMap<String, Object>>)parentMap.get("dobaniten_list");
		
		if(dobanitenList.get(telNo).containsKey("tu0021_dobaniten_ntt_uk_no"))
		{
			return (String)dobanitenList.get(telNo).get("tu0021_dobaniten_ntt_uk_no");
		}
		
		return null;
		
	}

	/**
	 * 指定されたサイズまで埋め込みを行う。
	 * <br>
	 * @param val　埋め込みを行う文字列
	 * @param umkmMozi 埋め込み文字
	 * @param byteSu　バイト数
	 * @return 出力先マップ
	 * @throws Exception
	 */
	private String shiteiSizeUmkm(String val, String umkmMozi, int byteSu) throws Exception
	{
		byte[] paraByte = null;

		String rslt = val;
		String thisUmkmMozi = umkmMozi;

		if (rslt == null)
		{
			rslt = "";
		}

		// 埋め込み文字のデフォルトは半角スペースを設定
		if (thisUmkmMozi == null
				|| "".equals(thisUmkmMozi))
		{
			thisUmkmMozi = " ";
		}

		paraByte = rslt.getBytes();

		int paraByteSize = paraByte.length;

		for (int i = paraByteSize; i < byteSu; i++)
		{
			rslt = thisUmkmMozi + rslt;
		}
		return rslt;
	}
	
	
	/**
	 * 割引サービス自動適用入力情報取得ＣＣの上りマッピングをする
	 * @param bean [0]
	 * @param outputMap 出力先マップ
	 * @param func_code 機能コード
	 * @param mskmInfoMap 申込情報マップ
	 * @param opeDate 運用日付
	 * @return 出力先マップ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV056812CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code
			, HashMap mskmInfoMap, String opeDate) throws Exception
	{
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		Boolean netCancelFlg = bean[0].sendMessageBoolean(HDN_EOH_NET_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		Boolean telCancelFlg = bean[0].sendMessageBoolean(HDN_EOH_TEL_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		Boolean tvCancelFlg = bean[0].sendMessageBoolean(HDN_EOH_TV_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		Boolean mobaCancelFlg = bean[0].sendMessageBoolean(HDN_EOMOBA_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		// ＳＹＳＩＤ
		parentMap.put("sysid", bean[0].sendMessageString(KKW00101SFConst.PARAM_SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 申込番号
		parentMap.put("mskm_no", bean[0].sendMessageString(KKW00101SFConst.MSKM_NO, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 申込種別コード
		if (JKKKeiNewCmnLogicUtil.MSKM_FLG_SHINKI.equals(bean[0].sendMessageString(KKW00101SFConst.MSKM_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			parentMap.put("mskm_sbt_cd", JKKStrConst.MSKM_SBT_CD_NEW_KEI);
		}
		else
		{
			parentMap.put("mskm_sbt_cd", JKKStrConst.MSKM_SBT_CD_SVC_ADD);
		}
		
		// 異動区分
		String idoDiv = "";
		String mskmFlg = bean[0].sendMessageString(KKW00101SFConst.MSKM_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		if ("1".equals(mskmFlg))
		{
			// 新規申込の場合

			idoDiv = "00001";
		}
		else
		{
			// 新規申込以外の場合

			idoDiv = "00002";
		}
		parentMap.put("ido_div", idoDiv);
		
		// 機能コード
		parentMap.put("func_code", "1");  // 1:チェック＆登録
		
		// サービスキャンセル理由コード
		parentMap.put("svc_cancel_rsn_cd", JKKStrConst.CD01254_20);
		
		ArrayList<Object> cclList = new ArrayList<Object>();
		
		if (netCancelFlg)
		{
			HashMap<String, Object> tmpMap = new HashMap <String, Object>();
			HashMap svcKeiMap = getPresetNetSvcKeiMap(mskmInfoMap);
			// サービス契約番号
			tmpMap.put("svc_kei_no", (String)svcKeiMap.get("kk0081_svc_kei_no"));
			cclList.add(tmpMap);
		}
		if (telCancelFlg)
		{
			HashMap<String, Object> tmpMap = new HashMap <String, Object>();
			HashMap svcKeiMap = getPresetTelSvcKeiMap(mskmInfoMap);
			// サービス契約番号
			tmpMap.put("svc_kei_no", (String)svcKeiMap.get("kk0081_svc_kei_no"));
			cclList.add(tmpMap);
		}
		if (tvCancelFlg)
		{
			HashMap<String, Object> tmpMap = new HashMap <String, Object>();
			HashMap svcKeiMap = getPresetTvSvcKeiMap(mskmInfoMap);
			// サービス契約番号
			tmpMap.put("svc_kei_no", (String)svcKeiMap.get("kk0081_svc_kei_no"));
			cclList.add(tmpMap);
		}
		if (mobaCancelFlg)
		{
			HashMap<String, Object> tmpMap = new HashMap <String, Object>();
			HashMap svcKeiMap = getPresetMobileSvcKeiMap(mskmInfoMap);
			// サービス契約番号
			tmpMap.put("svc_kei_no", (String)svcKeiMap.get("mobile_svc_kei_no"));
			cclList.add(tmpMap);
		}		
		parentMap.put("cancel_inf_list", cclList);
		
		parentMap.put("key_rsv_aply_ymd", opeDate);
		outputMap.put("KKSV056812CC", parentMap);
		
		return outputMap;
	}	

	/**
	 * eo光ネットサービスの登録済みサービス契約情報を取得します。
	 * <br/>
	 * @param mskmInfoMap 申込情報マップ
	 * @return サービス契約情報マップ
	 */
	@SuppressWarnings("unchecked")
	private HashMap getPresetNetSvcKeiMap(HashMap mskmInfoMap)
	{
		return (HashMap)((ArrayList)((HashMap)mskmInfoMap.get("KKSV007904CC")).get("EKK0021B502CBSMsg1List")).get(0);
	}

	/**
	 * eo光電話サービスの登録済みサービス契約情報を取得します。
	 * <br/>
	 * @param mskmInfoMap 申込情報マップ
	 * @return サービス契約情報マップ
	 */
	@SuppressWarnings("unchecked")
	private HashMap getPresetTelSvcKeiMap(HashMap mskmInfoMap)
	{
		return (HashMap)mskmInfoMap.get("KKSV007905CC");
	}

	/**
	 * eo光テレビサービスの登録済みサービス契約情報を取得します。
	 * <br/>
	 * @param mskmInfoMap 申込情報マップ
	 * @return サービス契約情報マップ
	 */
	@SuppressWarnings("unchecked")
	private HashMap getPresetTvSvcKeiMap(HashMap mskmInfoMap)
	{
		return (HashMap)mskmInfoMap.get("KKSV007906CC");
	}

	/**
	 * eoモバイルサービスの登録済みサービス契約情報を取得します。
	 * <br/>
	 * @param mskmInfoMap 申込情報マップ
	 * @return サービス契約情報マップ
	 */
	@SuppressWarnings("unchecked")
	private HashMap getPresetMobileSvcKeiMap(HashMap mskmInfoMap)
	{
		return (HashMap)mskmInfoMap.get("KKSV007908CC");
	}
}