/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0175_KKSV0175OPDBMapper
*	ソースファイル名：KKSV0175_KKSV0175OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2011年08月25日
*＜機能概要＞
*	BP（eoTV機器設置情報更新処理）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/25	Fujitsu		新規作成
*	v2.00.00	2011/12/07	Fujitsu		SUB修正
*	v3.00.00	2012/04/24	Fujitsu		巻@修正
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0175_KKSV0175OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0175_KKSV0175OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏＴＶ機器設置訂正対象一覧
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV017501CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}

		X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray("接続機器情報");
		ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		for(int i = 0; i < arraybean.getCount(); i++)
		{
			
			X31SDataBeanAccess subbean = arraybean.getDataBean(i);
			
			HashMap<String, Object> childMap = null;

			/***STB-IDの更新値は宅内のもので更新する****/
			/***変更されている項目ごとにchildMapをlistにaddする****/

			String scode = subbean.sendMessageString("ＴＶコースコード", X31CWebConst.DATABEAN_GET_VALUE);
			String scodeBk = subbean.sendMessageString("ＴＶコースコード＿ＢＫ", X31CWebConst.DATABEAN_GET_VALUE);
			
			// TVコースが変更されていた場合
			if(!scode.equals(scodeBk) && !"".equals(scodeBk))
			{
				// EKK0161C110編集
				childMap = new HashMap<String, Object>();
				
				childMap.put("func_code", func_code);
				
				// 処理区分
				childMap.put("syori_kbn", "tv_cose");
				// サービス契約内訳番号
				childMap.put("svc_kei_ucwk_no", subbean.sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_GET_VALUE));
				// 料金コースコード
				childMap.put("pcrs_cd", scode);
				// 料金プランコード
				childMap.put("pplan_cd", subbean.sendMessageString("料金プランコード", X31CWebConst.DATABEAN_GET_VALUE));
				// 提供方式契約番号
				childMap.put("tk_hoshiki_kei_no", subbean.sendMessageString("提供方式契約番号ＳＴＢ", X31CWebConst.DATABEAN_GET_VALUE));
				// 予約適用年月日
				childMap.put("rsv_aply_ymd", bean[0].sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));
				// 違約金発生コード ← "0"（無）
				childMap.put("pnlty_hassei_cd", "0");
				// 異動区分 ← "00036"（機器情報訂正）
				childMap.put("ido_div", "00036");
				// 更新年月日時分秒（サービス契約内訳）
				childMap.put("upd_dtm_bf", subbean.sendMessageString("更新年月日時分秒ＳＴＢ（サービス契約内訳）", X31CWebConst.DATABEAN_GET_VALUE));
				
				list.add(childMap);
				
				
				// EKK0161C120編集
				childMap = new HashMap<String, Object>();
				
				childMap.put("func_code", func_code);
				
				// 処理区分
				childMap.put("syori_kbn", "tv_cose_kakutei");
				// サービス契約内訳番号
				childMap.put("svc_kei_ucwk_no", subbean.sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_GET_VALUE));
				// 予約適用年月日
				childMap.put("rsv_aply_ymd", bean[0].sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));
				// 機器出荷有無 ← "0"（無）
				childMap.put("kkshka_um", "0");
				// 工事有無 ← "0"（無）
				childMap.put("koji_um", "0");
				
				list.add(childMap);
				
			}
			
			String stbId = subbean.sendMessageString("ＳＴＢ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
			String stbIdBk = subbean.sendMessageString("ＳＴＢ−ＩＤ＿ＢＫ", X31CWebConst.DATABEAN_GET_VALUE);
			
			// STB-IDが入力されている場合
			if(!"".equals(stbId) && !"".equals(stbIdBk))
			{
				// EKK0341C230,EKK0341C231編集
				childMap = new HashMap<String, Object>();
				
				childMap.put("func_code", func_code);
				
				// 処理区分
				childMap.put("syori_kbn", "stb");
				// 機器提供サービス契約番号
				childMap.put("kktk_svc_kei_no", subbean.sendMessageString("機器提供サービス契約番号ＳＴＢ", X31CWebConst.DATABEAN_GET_VALUE));
				// 通信機器セットコード
				childMap.put("tsushin_kiki_set_cd", subbean.sendMessageString("通信機器セットコードＳＴＢ", X31CWebConst.DATABEAN_GET_VALUE));
				// ＳＴＢＩＤ（宅内Ｓから取得した情報とマッチングするためのキー）
				childMap.put("stb_id", stbId);
				// 機器製造番号（宅内Ｓから取得した機器製造番号で更新する）
				childMap.put("kiki_seizo_no", subbean.sendMessageString("ＳＴＢ−機器製造番号", X31CWebConst.DATABEAN_GET_VALUE));
				// 宅内機器型式コード
				childMap.put("taknkiki_model_cd", subbean.sendMessageString("宅内機器型式コードＳＴＢ", X31CWebConst.DATABEAN_GET_VALUE));
				// 宅内機器セット品型コード
				childMap.put("taknkiki_sethin_model_cd", subbean.sendMessageString("宅内機器セット品型コードＳＴＢ", X31CWebConst.DATABEAN_GET_VALUE));
				// 付属品型式コード
				childMap.put("huzokuhin_model_cd", subbean.sendMessageString("付属品型式コードＳＴＢ", X31CWebConst.DATABEAN_GET_VALUE));
				// 異動区分 ← "00036"（機器情報訂正）
				childMap.put("ido_div", "00036");
				// eoTV機器設置承認状態コード ← "1"（承認済み）
				childMap.put("eo_tv_kkst_snn_stat_cd", "1");
				// 機器設置承認年月日
				childMap.put("kkst_snn_ymd", bean[0].sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));
				// 更新年月日時分秒（機器提供サービス契約）
				childMap.put("upd_dtm_bf", subbean.sendMessageString("更新年月日時分秒ＳＴＢ（機器提供サービス契約）", X31CWebConst.DATABEAN_GET_VALUE));
				// 機器提供サービス契約ステータス
				childMap.put("kktk_svc_kei_stat", subbean.sendMessageString("機器提供サービス契約ステータスＳＴＢ", X31CWebConst.DATABEAN_GET_VALUE));
				// 世代登録年月日時分秒
				childMap.put("gene_add_dtm", subbean.sendMessageString("世代登録年月日時分秒ＳＴＢ", X31CWebConst.DATABEAN_GET_VALUE));
				
				list.add(childMap);
			}
			
			String bcasId = subbean.sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
			String bcasIdBk = subbean.sendMessageString("ＢＣＡＳ−ＩＤ＿ＢＫ", X31CWebConst.DATABEAN_GET_VALUE);
			
			// BCAS-IDが入力されている場合
			if(!"".equals(bcasId) && !"".equals(bcasIdBk))
			{
				// EKK0341C230,EKK0341C231編集
				childMap = new HashMap<String, Object>();
				
				childMap.put("func_code", func_code);
				
				// 処理区分
				childMap.put("syori_kbn", "bcas");
				// 機器提供サービス契約番号
				childMap.put("kktk_svc_kei_no", subbean.sendMessageString("機器提供サービス契約番号ＢＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				// 通信機器セットコード
				childMap.put("tsushin_kiki_set_cd", subbean.sendMessageString("通信機器セットコードＢＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				// 機器製造番号
				childMap.put("kiki_seizo_no", bcasId);
				// 宅内機器型式コード
				childMap.put("taknkiki_model_cd", subbean.sendMessageString("宅内機器型式コードＢＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				// 宅内機器セット品型コード
				childMap.put("taknkiki_sethin_model_cd", subbean.sendMessageString("宅内機器セット品型コードＢＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				// 付属品型式コード
				childMap.put("huzokuhin_model_cd", subbean.sendMessageString("付属品型式コードＢＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				// 異動区分 ← "00036"（機器情報訂正）
				childMap.put("ido_div", "00036");
				// eoTV機器設置承認状態コード ← "1"（承認済み）
				childMap.put("eo_tv_kkst_snn_stat_cd", "1");
				// 機器設置承認年月日
				childMap.put("kkst_snn_ymd", bean[0].sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));
				// 更新年月日時分秒（機器提供サービス契約）
				childMap.put("upd_dtm_bf", subbean.sendMessageString("更新年月日時分秒ＢＣＡＳ（機器提供サービス契約）", X31CWebConst.DATABEAN_GET_VALUE));
				// 機器提供サービス契約ステータス
				childMap.put("kktk_svc_kei_stat", subbean.sendMessageString("機器提供サービス契約ステータスＢＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				// 世代登録年月日時分秒
				childMap.put("gene_add_dtm", subbean.sendMessageString("世代登録年月日時分秒ＢＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				
				list.add(childMap);
			}
			
			String ccasId = subbean.sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
			String ccasIdBk = subbean.sendMessageString("ＣＣＡＳ−ＩＤ＿ＢＫ", X31CWebConst.DATABEAN_GET_VALUE);
			
			// CCAS-IDが入力されている場合
			if(!"".equals(ccasId) && !"".equals(ccasIdBk))
			{
				// EKK0341C230,EKK0341C231編集
				childMap = new HashMap<String, Object>();
				
				childMap.put("func_code", func_code);
				
				// 処理区分
				childMap.put("syori_kbn", "ccas");
				// 機器提供サービス契約番号
				childMap.put("kktk_svc_kei_no", subbean.sendMessageString("機器提供サービス契約番号ＣＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				// 通信機器セットコード
				childMap.put("tsushin_kiki_set_cd", subbean.sendMessageString("通信機器セットコードＣＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				// 機器製造番号
				childMap.put("kiki_seizo_no", ccasId);
				// 宅内機器型式コード
				childMap.put("taknkiki_model_cd", subbean.sendMessageString("宅内機器型式コードＣＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				// 宅内機器セット品型コード
				childMap.put("taknkiki_sethin_model_cd", subbean.sendMessageString("宅内機器セット品型コードＣＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				// 付属品型式コード
				childMap.put("huzokuhin_model_cd", subbean.sendMessageString("付属品型式コードＣＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				// 異動区分 ← "00036"（機器情報訂正）
				childMap.put("ido_div", "00036");
				// eoTV機器設置承認状態コード ← "1"（承認済み）
				childMap.put("eo_tv_kkst_snn_stat_cd", "1");
				// 機器設置承認年月日
				childMap.put("kkst_snn_ymd", bean[0].sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));
				// 更新年月日時分秒（機器提供サービス契約）
				childMap.put("upd_dtm_bf", subbean.sendMessageString("更新年月日時分秒ＣＣＡＳ（機器提供サービス契約）", X31CWebConst.DATABEAN_GET_VALUE));
				// 機器提供サービス契約ステータス
				childMap.put("kktk_svc_kei_stat", subbean.sendMessageString("機器提供サービス契約ステータスＣＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				// 世代登録年月日時分秒
				childMap.put("gene_add_dtm", subbean.sendMessageString("世代登録年月日時分秒ＣＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
				
				list.add(childMap);
			}
			
		}
		
		parentMap.put("connect_kiki_list", list);
		outputMap.put("KKSV0175CC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏＴＶ機器設置情報変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV017504SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// サービス契約番号選択 → サービス契約一意照会SCマップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号選択", X31CWebConst.DATABEAN_GET_VALUE));
		// 運用年月日 → サービス契約一意照会SCマップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV017504SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏＴＶ機器設置情報変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV017505SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 申込種別コード ← "00022"（機器契約変更申込）
		parentMap.put("mskm_sbt_cd", "00022");
		// 運用年月日時分秒 → 申込内容承認登録SCマップ.申込受付年月日時分秒
		parentMap.put("mskm_uk_dtm", bean[0].sendMessageString("運用年月日時分秒", X31CWebConst.DATABEAN_GET_VALUE));
		// 運用年月日 → 申込内容承認登録SCマップ.申込年月日
		parentMap.put("mskm_ymd", bean[0].sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));
		// コンシューマ営業用申込状態識別コード ← "04"（承認済）
		parentMap.put("consmbsn_mskm_stat_skbt_cd", "04");

		outputMap.put("KKSV017505SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏＴＶ機器設置情報変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV017506SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 運用年月日 → 申込明細照査・後続業務依頼SCマップ.後続業務依頼年月日
		parentMap.put("kzkwrk_reqymd", bean[0].sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV017506SC", parentMap);
						
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏＴＶ機器設置情報変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV017507SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);


		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("接続機器情報");
		if(parentMap.containsKey("ECRA0010001ConditionList")){
			list = (ArrayList)parentMap.get("ECRA0010001ConditionList");
		}else{
			list = new ArrayList();
		}
		if(arraybean != null && arraybean.getCount() > 0){
			
			for(int i = 0; i < arraybean.getCount(); i++){
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				
				String stbId = subbean.sendMessageString("ＳＴＢ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
				String stbIdBk = subbean.sendMessageString("ＳＴＢ−ＩＤ＿ＢＫ", X31CWebConst.DATABEAN_GET_VALUE);
				
				HashMap childMap = null;
				
				// 接続機器情報.ＳＴＢ−ＩＤが入力されている場合
				if(!"".equals(stbId) && !"".equals(stbIdBk))
				{
					childMap = new HashMap();

					// 接続機器情報.宅内機器型式コードＳＴＢ → 宅内機器一意照会SCマップ.宅内機器一意照会条件明細.ＫＥＹ＿宅内機器型式コード
					childMap.put("key_tk_mdl_cd", subbean.sendMessageString("宅内機器型式コードＳＴＢ", X31CWebConst.DATABEAN_GET_VALUE));
					// 接続機器情報.ＳＴＢ−ＩＤ → 宅内機器一意照会SCマップ.宅内機器一意照会条件明細.ＫＥＹ＿STBID
					childMap.put("key_stbid", stbId);
					// "2"（ＫＥＹ＿STBIDでの検索） → 宅内機器一意照会SCマップ.宅内機器一意照会条件明細.ＫＥＹ＿宅内機器照会種別コード
					childMap.put("key_tk_shokai_sbt_cd", String.valueOf("2"));

					list.add(childMap);
				}
				
			}
		}
		parentMap.put("ECRA0010001ConditionList", list);

		outputMap.put("KKSV017507SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏＴＶ機器設置情報変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV017508SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);


		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("接続機器情報");
		if(parentMap.containsKey("EKKA0020003CBSMsg1List")){
			list = (ArrayList)parentMap.get("EKKA0020003CBSMsg1List");
		}else{
			list = new ArrayList();
		}
		if(arraybean != null && arraybean.getCount() > 0){
			for(int i = 0; i < arraybean.getCount(); i++){
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				
				String bcasId = subbean.sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
				String bcasIdBk = subbean.sendMessageString("ＢＣＡＳ−ＩＤ＿ＢＫ", X31CWebConst.DATABEAN_GET_VALUE);
				String ccasId = subbean.sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
				String ccasIdBk = subbean.sendMessageString("ＣＣＡＳ−ＩＤ＿ＢＫ", X31CWebConst.DATABEAN_GET_VALUE);
				
				HashMap childMap = null;
				
				// 接続機器情報.ＢＣＡＳ−ＩＤが入力されている場合
				if(!"".equals(bcasId) && !"".equals(bcasIdBk))
				{
					childMap = new HashMap();

					// 接続機器情報.宅内機器型式コードＢＣＡＳ → 宅内機器一意照会（４）SCマップ.宅内機器一意照会（４）条件明細.ＫＥＹ＿宅内機器型式コード
					childMap.put("key_tk_mdl_cd", subbean.sendMessageString("宅内機器型式コードＢＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
					// 接続機器情報.ＢＣＡＳ−ＩＤ → 宅内機器一意照会（４）SCマップ.宅内機器一意照会（４）条件明細.ＫＥＹ＿機器製造番号
					childMap.put("key_kk_seizo_no", bcasId);

					list.add(childMap);
				}
				
				// 接続機器情報.ＣＣＡＳ−ＩＤが入力されている場合
				if(!"".equals(ccasId) && !"".equals(ccasIdBk))
				{
					childMap = new HashMap();

					// 接続機器情報.宅内機器型式コードＣＣＡＳ → 宅内機器一意照会（４）SCマップ.宅内機器一意照会（４）条件明細.ＫＥＹ＿宅内機器型式コード
					childMap.put("key_tk_mdl_cd", subbean.sendMessageString("宅内機器型式コードＣＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
					// 接続機器情報.ＣＣＡＳ−ＩＤ → 宅内機器一意照会（４）SCマップ.宅内機器一意照会（４）条件明細.ＫＥＹ＿機器製造番号
					childMap.put("key_kk_seizo_no", ccasId);

					list.add(childMap);
				}
			}
		}
		parentMap.put("EKKA0020003CBSMsg1List", list);

		outputMap.put("KKSV017508SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏＴＶ機器設置情報変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV017509CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);


		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("接続機器情報");
		if(parentMap.containsKey("connect_kiki_list")){
			list = (ArrayList)parentMap.get("connect_kiki_list");
		}else{
			list = new ArrayList();
		}
		if(arraybean != null && arraybean.getCount() > 0){
			for(int i = 0; i < arraybean.getCount(); i++){
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				
				String stbId = subbean.sendMessageString("ＳＴＢ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
				String stbIdBk = subbean.sendMessageString("ＳＴＢ−ＩＤ＿ＢＫ", X31CWebConst.DATABEAN_GET_VALUE);

				String bcasId = subbean.sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
				String bcasIdBk = subbean.sendMessageString("ＢＣＡＳ−ＩＤ＿ＢＫ", X31CWebConst.DATABEAN_GET_VALUE);

				String ccasId = subbean.sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
				String ccasIdBk = subbean.sendMessageString("ＣＣＡＳ−ＩＤ＿ＢＫ", X31CWebConst.DATABEAN_GET_VALUE);
				
				HashMap childMap = null;

				// STB-IDが変更されていた場合
				if(!stbId.equals(stbIdBk) && !"".equals(stbIdBk))
				{
					childMap = new HashMap<String, Object>();
					
					childMap.put("func_code", func_code);
					
					// 接続機器情報.ＳＴＢ−ＩＤ → eoTV機器設置訂正対象チェックCCマップ.機器接続リスト.ＫＥＹ＿STBID
					childMap.put("key_stbid", stbId);
					// 機器製造番号（宅内Ｓから取得した機器製造番号で更新する）
					childMap.put("key_kiki_seizo_no", subbean.sendMessageString("ＳＴＢ−機器製造番号", X31CWebConst.DATABEAN_GET_VALUE));
					// 接続機器情報.宅内機器型式コードＳＴＢ → eoTV機器設置訂正対象チェックCCマップ.機器接続リスト.ＫＥＹ＿宅内機器型式コード
					childMap.put("key_tk_mdl_cd", subbean.sendMessageString("宅内機器型式コードＳＴＢ", X31CWebConst.DATABEAN_GET_VALUE));
					// 運用年月日 → eoTV機器設置訂正対象チェックCCマップ.機器接続リスト.ＫＥＹ＿予約適用年月日
					childMap.put("key_rsv_aply_ymd", beanTemp.sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));
					
					list.add(childMap);
				}
				
				// BCAS-IDが変更されていた場合
				if(!bcasId.equals(bcasIdBk) && !"".equals(bcasIdBk))
				{
					childMap = new HashMap<String, Object>();
					
					childMap.put("func_code", func_code);
					
					// 接続機器情報.ＢＣＡＳ−ＩＤ → eoTV機器設置訂正対象チェックCCマップ.機器接続リスト.ＫＥＹ＿機器製造番号
					childMap.put("key_kiki_seizo_no", bcasId);
					// 接続機器情報.宅内機器型式コードＢＣＡＳ → eoTV機器設置訂正対象チェックCCマップ.機器接続リスト.ＫＥＹ＿宅内機器型式コード
					childMap.put("key_tk_mdl_cd", subbean.sendMessageString("宅内機器型式コードＢＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
					// 運用年月日 → eoTV機器設置訂正対象チェックCCマップ.機器接続リスト.ＫＥＹ＿予約適用年月日
					childMap.put("key_rsv_aply_ymd", beanTemp.sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));
					
					list.add(childMap);
				}
				
				// CCAS-IDが変更されていた場合
				if(!ccasId.equals(ccasIdBk) && !"".equals(ccasIdBk))
				{
					childMap = new HashMap<String, Object>();
					
					childMap.put("func_code", func_code);
					
					// 接続機器情報.ＣＣＡＳ−ＩＤ → eoTV機器設置訂正対象チェックCCマップ.機器接続リスト.ＫＥＹ＿機器製造番号
					childMap.put("key_kiki_seizo_no", ccasId);
					// 接続機器情報.宅内機器型式コードＣＣＡＳ → eoTV機器設置訂正対象チェックCCマップ.機器接続リスト.ＫＥＹ＿宅内機器型式コード
					childMap.put("key_tk_mdl_cd", subbean.sendMessageString("宅内機器型式コードＣＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE));
					// 運用年月日 → eoTV機器設置訂正対象チェックCCマップ.機器接続リスト.ＫＥＹ＿予約適用年月日
					childMap.put("key_rsv_aply_ymd", beanTemp.sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));
					
					list.add(childMap);
				}
				
			}
		}
		parentMap.put("connect_kiki_list", list);

		outputMap.put("KKSV017509CC", parentMap);
						
		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：ｅｏＴＶ機器設置情報変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV017507SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV017507SC")){
			parentMap = (HashMap)outputMap.get("KKSV017507SC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV017507SC_connect_kiki_info_ECRA0010001CBSMsg1List = bean[0].getDataBeanArray("接続機器情報");
		childList = null;
		if(listKKSV017507SC_connect_kiki_info_ECRA0010001CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECRA0010001CBSMsg1List")){
			childList = (ArrayList)parentMap.get("ECRA0010001CBSMsg1List");

			String connectKikiStbId = "";
			for(int i = 0; i < listKKSV017507SC_connect_kiki_info_ECRA0010001CBSMsg1List.getCount(); i++)
			{
				X31SDataBeanAccess subbean = null;
				subbean = listKKSV017507SC_connect_kiki_info_ECRA0010001CBSMsg1List.getDataBean(i);
				connectKikiStbId = subbean.sendMessageString("ＳＴＢ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
				
				for(int j = 0; j < childList.size(); j++)
				{
					HashMap childMap = (HashMap)childList.get(j);
					if(connectKikiStbId.equals((String)childMap.get("stbid")))
					{
						// 宅内機器一意照会SCマップ.宅内機器一意照会明細.明細エラーフラグに値が設定されていた場合、宅内機器型式コードと機器製造番号のマッピングを行わない
						if(!"".equals((String)childMap.get("meisai_err_flg")) && childMap.get("meisai_err_flg") != null)
						{
							subbean.sendMessageString("ＳＴＢエラーフラグ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("meisai_err_flg"));
							break;
						}
						// 接続機器情報.宅内機器型式コードＳＴＢ ← 宅内機器一意照会SCマップ.宅内機器一意照会明細.宅内機器型式コード
						subbean.sendMessageString("宅内機器型式コードＳＴＢ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tk_mdl_cd"));
						// 接続機器情報.ＳＴＢ−機器製造番号 ← 宅内機器一意照会SCマップ.宅内機器一意照会明細.機器製造番号
						subbean.sendMessageString("ＳＴＢ−機器製造番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kk_seizo_no"));
						break;
					}
				}
			}
		}


		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：ｅｏＴＶ機器設置情報変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV017508SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV017508SC")){
			parentMap = (HashMap)outputMap.get("KKSV017508SC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV017508SC_connect_kiki_info_EKKA0020003CBSMsg2List = bean[0].getDataBeanArray("接続機器情報");
		childList = null;
		if(listKKSV017508SC_connect_kiki_info_EKKA0020003CBSMsg2List != null && parentMap != null && parentMap.containsKey("EKKA0020003CBSMsg2List")){
			childList = (ArrayList)parentMap.get("EKKA0020003CBSMsg2List");

			String connectKikiModelCdBcas = "";
			String connectKikiBcasId = "";
			String connectKikiModelCdCcas = "";
			String connectKikiCcasId = "";
			for(int i = 0; i < listKKSV017508SC_connect_kiki_info_EKKA0020003CBSMsg2List.getCount(); i++)
			{
				X31SDataBeanAccess subbean = null;
				subbean = listKKSV017508SC_connect_kiki_info_EKKA0020003CBSMsg2List.getDataBean(i);
				connectKikiModelCdBcas = subbean.sendMessageString("宅内機器型式コードＢＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE);
				connectKikiBcasId = subbean.sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
				connectKikiModelCdCcas = subbean.sendMessageString("宅内機器型式コードＣＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE);
				connectKikiCcasId = subbean.sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
				
				for(int j = 0; j < childList.size(); j++)
				{
					HashMap childMap = (HashMap)childList.get(j);
					if(connectKikiModelCdBcas.equals((String)childMap.get("tk_mdl_cd")) && connectKikiBcasId.equals((String)childMap.get("kk_seizo_no")))
					{
						// 宅内機器一意照会（４）SCマップ.宅内機器一意照会（４）明細.明細エラーフラグに値が設定されていた場合、宅内機器基本Ｔ更新日付のマッピングを行わない
						if(!"".equals((String)childMap.get("meisai_err_flg")) && childMap.get("meisai_err_flg") != null)
						{
							subbean.sendMessageString("ＢＣＡＳエラーフラグ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("meisai_err_flg"));
						}
						else
						{
							// 接続機器情報.宅内機器基本Ｔ更新日付ＢＣＡＳ ← 宅内機器一意照会（４）SCマップ.宅内機器一意照会（４）明細.宅内機器基本Ｔ更新日付
							subbean.sendMessageString("宅内機器基本Ｔ更新日付ＢＣＡＳ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kihont_upd_dttm"));
						}
					}
					
					if(connectKikiModelCdCcas.equals((String)childMap.get("tk_mdl_cd")) && connectKikiCcasId.equals((String)childMap.get("kk_seizo_no")))
					{
						// 宅内機器一意照会（４）SCマップ.宅内機器一意照会（４）明細.明細エラーフラグに値が設定されていた場合、宅内機器基本Ｔ更新日付のマッピングを行わない
						if(!"".equals((String)childMap.get("meisai_err_flg")) && childMap.get("meisai_err_flg") != null)
						{
							subbean.sendMessageString("ＣＣＡＳエラーフラグ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("meisai_err_flg"));
						}
						else
						{
							// 接続機器情報.宅内機器基本Ｔ更新日付ＣＣＡＳ ← 宅内機器一意照会（４）SCマップ.宅内機器一意照会（４）明細.宅内機器基本Ｔ更新日付
							subbean.sendMessageString("宅内機器基本Ｔ更新日付ＣＣＡＳ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kihont_upd_dttm"));
						}
					}
				}
			}
		}


		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：ｅｏＴＶ機器設置情報変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV017509CC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV017509CC")){
			parentMap = (HashMap)outputMap.get("KKSV017509CC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV017509CC_connect_kiki_info_EKK0341B001CBSMsg1List = bean[0].getDataBeanArray("接続機器情報");
		childList = null;
		if(listKKSV017509CC_connect_kiki_info_EKK0341B001CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0341B001CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0341B001CBSMsg1List");

			String connectKikiModelCdStb = "";
			String connectKikiSeizoNoStb = "";
			String connectKikiStbId = "";
			String connectKikiStbIdBk = "";
			String connectKikiModelCdBcas = "";
			String connectKikiBcasId = "";
			String connectKikiBcasIdBk = "";
			String connectKikiModelCdCcas = "";
			String connectKikiCcasId = "";
			String connectKikiCcasIdBk = "";
			for(int i = 0; i < listKKSV017509CC_connect_kiki_info_EKK0341B001CBSMsg1List.getCount(); i++)
			{
				X31SDataBeanAccess subbean = null;
				subbean = listKKSV017509CC_connect_kiki_info_EKK0341B001CBSMsg1List.getDataBean(i);
				connectKikiModelCdStb = subbean.sendMessageString("宅内機器型式コードＳＴＢ", X31CWebConst.DATABEAN_GET_VALUE);
				connectKikiSeizoNoStb = subbean.sendMessageString("ＳＴＢ−機器製造番号", X31CWebConst.DATABEAN_GET_VALUE);
				connectKikiStbId = subbean.sendMessageString("ＳＴＢ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
				connectKikiStbIdBk = subbean.sendMessageString("ＳＴＢ−ＩＤ＿ＢＫ", X31CWebConst.DATABEAN_GET_VALUE);
				connectKikiModelCdBcas = subbean.sendMessageString("宅内機器型式コードＢＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE);
				connectKikiBcasId = subbean.sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
				connectKikiBcasIdBk = subbean.sendMessageString("ＢＣＡＳ−ＩＤ＿ＢＫ", X31CWebConst.DATABEAN_GET_VALUE);
				connectKikiModelCdCcas = subbean.sendMessageString("宅内機器型式コードＣＣＡＳ", X31CWebConst.DATABEAN_GET_VALUE);
				connectKikiCcasId = subbean.sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_GET_VALUE);
				connectKikiCcasIdBk = subbean.sendMessageString("ＣＣＡＳ−ＩＤ＿ＢＫ", X31CWebConst.DATABEAN_GET_VALUE);
				
				for(int j = 0; j < childList.size(); j++)
				{
					HashMap childMap = (HashMap)childList.get(j);
					
					// 変更されたIDに紐づく宅内機器型式コード、機器製造番号の組み合わせがすでに機器提供サービス契約が存在し
					// かつそれぞれのエラーフラグが設定されていない場合、機器提供サービス契約登録チェックエラーのフラグを設定する
					if(connectKikiModelCdStb.equals((String)childMap.get("taknkiki_model_cd")) && connectKikiSeizoNoStb.equals((String)childMap.get("kiki_seizo_no"))
							&& !connectKikiStbId.equals(connectKikiStbIdBk) && "".equals(subbean.sendMessageString("ＳＴＢエラーフラグ", X31CWebConst.DATABEAN_GET_VALUE)))
					{
						// 接続機器情報.ＳＴＢエラーフラグ ← "kktkErr"（機器提供サービス契約登録チェックエラー）
						subbean.sendMessageString("ＳＴＢエラーフラグ", X31CWebConst.DATABEAN_SET_VALUE, "kktkErr");
					}
					
					if(connectKikiModelCdBcas.equals((String)childMap.get("taknkiki_model_cd")) && connectKikiBcasId.equals((String)childMap.get("kiki_seizo_no"))
							&& !connectKikiBcasId.equals(connectKikiBcasIdBk) && "".equals(subbean.sendMessageString("ＢＣＡＳエラーフラグ", X31CWebConst.DATABEAN_GET_VALUE)))
					{
						// 接続機器情報.ＢＣＡＳエラーフラグ ← "kktkErr"（機器提供サービス契約登録チェックエラー）
						subbean.sendMessageString("ＢＣＡＳエラーフラグ", X31CWebConst.DATABEAN_SET_VALUE, "kktkErr");
					}
					
					if(connectKikiModelCdCcas.equals((String)childMap.get("taknkiki_model_cd")) && connectKikiCcasId.equals((String)childMap.get("kiki_seizo_no"))
							&& !connectKikiCcasId.equals(connectKikiCcasIdBk) && "".equals(subbean.sendMessageString("ＣＣＡＳエラーフラグ", X31CWebConst.DATABEAN_GET_VALUE)))
					{
						// 接続機器情報.ＣＣＡＳエラーフラグ ← "kktkErr"（機器提供サービス契約登録チェックエラー）
						subbean.sendMessageString("ＣＣＡＳエラーフラグ", X31CWebConst.DATABEAN_SET_VALUE, "kktkErr");
					}
				}
			}
		}


		return bean;
	}

}
