/********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************
 *＜プログラム内容＞
 *  システム名      ：eo顧客基幹システム
 *  モジュール名    ：マンション情報取得コンポーネント部品
 *  ソースファイル名：JKKMansInfoCC.java
 *  作成者          ：FJ
 *  日付            ：2012年2月10日
 *＜機能概要＞
 *  マンション情報取得部品クラス。
 *＜修正履歴＞
 *  バージョン  修正日      修正者      修正内容
 *  v1.00.00    2011/11/10  FJ          新規作成
 * v20.00.00	2015/12/25	FJ)星野     【ANK-2651-00-00】 住変時の転居先がマンションの場合のVDSLモデム追加対応
 * v46.00.00	2019/09/16  FJ)澤田	     ANK-3731-00-00 マンション光配線切替対応
 * v51.00.00	2020/09/25  FJ)荒木	     ANK-3885-00-00 光化マンションの自動設計対応
 * v60.00.00	2022/06/16  FJ)原	    【ANK-4244-00-00】【eo定期】MT既設賃貸対応
 * v60.00.01	2022/06/19	FJ)平野	     ANK-4244-00-00_【eo定期】MT既設賃貸対応
 * v60.00.02	2022/08/05	FJ)平野      IT1-2022-0000054 工事スキップのマンションで機器がお客様直送されない
 * v73.00.00	2024/10/04	FJ)柴田		【ANK-4493-00-00】光配線マンションのコースアップ対応
 ********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKMansInfoConstCC;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.sun.enterprise.tools.common.util.StringUtils;

import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0861A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0871B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0881B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0891B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK3251B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0171A010CBSMsg1List;

/**
 * マンション情報取得コンポーネント部品.
 * <br>
 * @author FJ
 */
public class JKKMansInfoCC extends AbstractCommonComponent {

	/** セッションハンドル保持域 */
	private static ThreadLocal<SessionHandle> keepSesHandle = new ThreadLocal<SessionHandle>()
	{
		// 保持域への設定はinitialValue()ではなくset()を使用する為、
		// initialValue()は実装しない
	};

	/**
	 * コンストラクタ.
	 * <br>
	 */
	public JKKMansInfoCC() {
	}

	/**
	 * マンション情報取得処理.
	 * <br>
	 * @param   handle     セッションマネージャなどを持ったハンドル情報
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Throwable  例外が発生した場合
	 * @return  リクエストパラメータ(param)に戻り値を追加して返却する
	 */
	public IRequestParameterReadWrite getMansInfo( SessionHandle handle, IRequestParameterReadWrite param, String fixedText ) throws Throwable {

		try {
			/** 事前準備 */
			HashMap<String, String> condMap;
			HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);
			HashMap<String, Object> reqMap;
			Map<?, ?> resMap;

			// SCリクエストInvokerを取得
			ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

			/** リソース保持 */
			// セッションハンドルをローカル変数に保持
			keepSesHandle.set( handle );

			// マンション情報取得コモンコンポーネントマッピングクラスインスタンスを取得
			JKKMansInfoMapperCC mapper = JKKMansInfoMapperCC.getInstance();

			/** オーナー契約情報 取得 */
			// EKK0871B001  オーナー契約一覧照会
			condMap = new HashMap<String, String>();
			condMap.put( JKKMansInfoMapperCC.COND_KEY_PID, (String)paramMap.get( JKKMansInfoConstCC.P_ID ) );
			reqMap = mapper.setEKK0871B001( param, fixedText, condMap );
			resMap = scCall.run( reqMap, keepSesHandle.get() );
			ArrayList<HashMap<String, Object>> kk0871_b001_map_list = mapper.getEKK0871B001( param, fixedText, resMap );
			mapper.scResultCheck( param );

			if(kk0871_b001_map_list == null || 0 == kk0871_b001_map_list.size())
			{
				return param;
			}
			
			HashMap<String, Object> kk0871_b001_map = kk0871_b001_map_list.get(0);
			// オーナー契約番号
			paramMap.put(JKKMansInfoConstCC.OWNR_KEI_NO, kk0871_b001_map.get(EKK0871B001CBSMsg1List.OWNR_KEI_NO));
			// マンションサービスメニューコード
			paramMap.put(JKKMansInfoConstCC.MANSION_SVC_MENU_CD, kk0871_b001_map.get(EKK0871B001CBSMsg1List.MANSION_SVC_MENU_CD));
			// マンションサービスメニューコード名称
			paramMap.put(JKKMansInfoConstCC.MANSION_SVC_MENU_CD_NM, kk0871_b001_map.get(EKK0871B001CBSMsg1List.MANSION_SVC_MENU_CD_NM));
// IT2-2013-0001111 203.05.01 T.TORIKAI DEL START（障害票とは別件対応：住所変更障害 507）
//			// 支払方式コード
//			paramMap.put(JKKMansInfoConstCC.PAY_HOSHIKI_CD, kk0871_b001_map.get(EKK0871B001CBSMsg1List.PAY_HOSHIKI_CD));
// IT2-2013-0001111 203.05.01 T.TORIKAI DEL END
			// マンション物件番号
			paramMap.put(JKKMansInfoConstCC.MANSION_BUKKEN_NO, kk0871_b001_map.get(EKK0871B001CBSMsg1List.MANSION_BUKKEN_NO));

			/** マンション物件情報情報 取得 */
			// EKK0861A010  マンション物件一意照会
			condMap = new HashMap<String, String>();
			condMap.put( JKKMansInfoMapperCC.COND_KEY_MANSION_BUKKEN_NO, (String)kk0871_b001_map_list.get(0).get( EKK0871B001CBSMsg1List.MANSION_BUKKEN_NO ) );
			reqMap = mapper.setEKK0861A010( param, fixedText, condMap );
			resMap = scCall.run( reqMap, keepSesHandle.get() );
			HashMap<String, Object> kk0861_a010_map = mapper.getEKK0861A010( param, fixedText, resMap );
			mapper.scResultCheck( param );

			// マンション物件コード
			String mansionBukkenCd = (String)kk0861_a010_map.get(EKK0861A010CBSMsg1List.MANSION_BUKKEN_CD);
			paramMap.put(JKKMansInfoConstCC.MANSION_BUKKEN_CD, mansionBukkenCd);

			// マンション物件コードがマンションの場合
			if(JKKMansInfoConstCC.CD01228_MANS.equals(mansionBukkenCd))
			{
				String mansId = (String)paramMap.get( JKKMansInfoConstCC.MANS_ID );
				// マンションIDが設定ありの場合
				if(mansId != null && !"".equals(mansId))
				{
					setKaisenUseInfo(param, fixedText, JKKMansInfoConstCC.CD00130_NET, kk0871_b001_map_list);
				}

				String catId = (String)paramMap.get( JKKMansInfoConstCC.CAT_ID );
				// CAT-IDが設定なしの場合
				if(catId != null && !"".equals(catId))
				{
					setKaisenUseInfo(param, fixedText, JKKMansInfoConstCC.CD00130_TV, kk0871_b001_map_list);
				}
			}
			// マンション物件コードがメゾンの場合
			else if(JKKMansInfoConstCC.CD01228_MEZON.equals(mansionBukkenCd))
			{
				setKaisenUseInfo(param, fixedText, "", kk0871_b001_map_list);
			}
			
		} finally {

			// スレッドローカル変数のリソース解放
			if( keepSesHandle.get() != null ){
				keepSesHandle.remove();
			}
		}

		return param;
	}

	/**
	 * 回線使用情報取得
	 * <br>
	 * @param   handle     セッションマネージャなどを持ったハンドル情報
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Throwable  例外が発生した場合
	 * @return  リクエストパラメータ(param)に戻り値を追加して返却する
	 */
	private void setKaisenUseInfo(IRequestParameterReadWrite param, String fixedText, String svcCd, 
			ArrayList<HashMap<String, Object>> kk0871_b001_map_list) throws Throwable {

		/** 事前準備 */
		HashMap<String, String> condMap;
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// マンション情報取得コモンコンポーネントマッピングクラスインスタンスを取得
		JKKMansInfoMapperCC mapper = JKKMansInfoMapperCC.getInstance();

		/** 回線使用契約情報 取得 */
		// EKK0881B001  回線使用契約一覧照会
		condMap = new HashMap<String, String>();

		// オーナー契約番号を設定
		condMap.put(JKKMansInfoMapperCC.COND_KEY_OWNR_KEI_NO, (String)kk0871_b001_map_list.get(0).get(EKK0871B001CBSMsg1List.OWNR_KEI_NO));
		
// ST1-2013-0000144対応 20130117 星野 ADD START
		// 機能コード
		String funcCd;
// ST1-2013-0000144対応 20130117 星野 ADD END
		if(JKKMansInfoConstCC.CD00130_NET.equals(svcCd))
		{
			// マンションＩＤを設定
			condMap.put(JKKMansInfoMapperCC.COND_KEY_MANSION_ID, (String)paramMap.get( JKKMansInfoConstCC.MANS_ID ));
// ST1-2013-0000144対応 20130117 星野 ADD START
			// 機能コード（１）
			funcCd = JPCModelConstant.FUNC_CD_1;
// ST1-2013-0000144対応 20130117 星野 ADD END
		}
		else if(JKKMansInfoConstCC.CD00130_TV.equals(svcCd))
		{
			// Ｐ−ＩＤを設定
			condMap.put(JKKMansInfoMapperCC.COND_KEY_CATID, (String)paramMap.get( JKKMansInfoConstCC.CAT_ID ));
// ST1-2013-0000144対応 20130117 星野 ADD START
			// 機能コード（２）
			funcCd = JPCModelConstant.FUNC_CD_2;
// ST1-2013-0000144対応 20130117 星野 ADD END

// ST1-2013-0000144追加対応 20130117 星野 ADD START
		}else{
			// メゾンの場合はここを通る
			// 機能コード（１）
			funcCd = JPCModelConstant.FUNC_CD_1;
// ST1-2013-0000144追加対応 20130117 星野 ADD END
		}

// ST1-2013-0000144対応 20130117 星野 MOD START
//		reqMap = mapper.setEKK0881B001( param, fixedText, condMap );
		reqMap = mapper.setEKK0881B001( param, fixedText, condMap, funcCd );
// ST1-2013-0000144対応 20130117 星野 MOD END
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		ArrayList<HashMap<String, Object>> kk0881_b001_map_list = mapper.getEKK0881B001( param, fixedText, resMap );
		mapper.scResultCheck( param );

		paramMap.get(JKKMansInfoConstCC.KAISEN_USE_KEI_LIST);
		ArrayList<HashMap<String, Object>> kaisenUseKeiList = (ArrayList<HashMap<String, Object>>)paramMap.get(JKKMansInfoConstCC.KAISEN_USE_KEI_LIST);
		if(kaisenUseKeiList == null)
		{
			kaisenUseKeiList = new ArrayList<HashMap<String, Object>>();
		}
		if(kk0881_b001_map_list != null && 0 < kk0881_b001_map_list.size())
		{
			for(int n = 0; n < kk0881_b001_map_list.size(); n++)
			{
				HashMap<String, Object> kk0881_b001_map = kk0881_b001_map_list.get(n);
				HashMap<String, Object> kaisenUseKeiInfo = new HashMap<String, Object>();
				// マンションコースコード
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.MANSION_COURSE_CD, kk0881_b001_map.get(EKK0881B001CBSMsg1List.MANSION_COURSE_CD));
				// マンションコースコード名称
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.MANSION_COURSE_CD_NM, kk0881_b001_map.get(EKK0881B001CBSMsg1List.MANSION_COURSE_CD_NM));
				// 光電話提供コード
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.HIKARI_TEL_TK_CD, kk0881_b001_map.get(EKK0881B001CBSMsg1List.HIKARI_TEL_TK_CD));
// ANK-1392-00-00 2012.12.19 Y.MORIMOTO DEL START
//				// 物件管理番号
//				kaisenUseKeiInfo.put(JKKMansInfoConstCC.BKN_KNRI_NO, kk0881_b001_map.get(EKK0881B001CBSMsg1List.BKN_KNRI_NO));
// ANK-1392-00-00 2012.12.19 Y.MORIMOTO DEL END
//>>> 住所変更リファクタリング UI課題対応9 S.IWASAKI ADD START 2012.10.15 -------------------------------
				// 加入契約ネット1G申込可否
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.KNYKEI_NET_1G_MSKM_KH, kk0881_b001_map.get(EKK0881B001CBSMsg1List.KNYKEI_NET_1G_MSKM_KH));
				// 加入契約ネット200M申込可否
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.KNYKEI_NET_200M_MSKM_KH, kk0881_b001_map.get(EKK0881B001CBSMsg1List.KNYKEI_NET_200M_MSKM_KH));
				// 加入契約ネット100M申込可否
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.KNYKEI_NET_100M_MSKM_KH, kk0881_b001_map.get(EKK0881B001CBSMsg1List.KNYKEI_NET_100M_MSKM_KH));
				// 光テレビ提供状況コード
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.HIKARI_TV_TK_JOKYO_CD, kk0881_b001_map.get(EKK0881B001CBSMsg1List.HIKARI_TV_TK_JOKYO_CD));
				// メゾン光テレビ提供コード
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.MAISON_HIKARI_TV_TK_CD, kk0881_b001_map.get(EKK0881B001CBSMsg1List.MAISON_HIKARI_TV_TK_CD));
				// ペアID
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.PAIRID, kk0881_b001_map.get(EKK0881B001CBSMsg1List.PAIRID));
//<<< 住所変更リファクタリング UI課題対応9 S.IWASAKI ADD END   2012.10.15 -------------------------------
				if(!"".equals(svcCd))
				{
					kaisenUseKeiInfo.put(JKKMansInfoConstCC.SVC_CD, svcCd);
				}
				else
				{
					String catId = (String)kk0881_b001_map.get(EKK0881B001CBSMsg1List.CATID);
					if(catId == null || "".equals(catId))
					{
						kaisenUseKeiInfo.put(JKKMansInfoConstCC.SVC_CD, JKKMansInfoConstCC.CD00130_NET);
					}
					else
					{
						kaisenUseKeiInfo.put(JKKMansInfoConstCC.SVC_CD, JKKMansInfoConstCC.CD00130_TV);
					}
				}
				
				//ANK-3731-00-00 ADD START
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.HHS_1GONLY_FLG, kk0881_b001_map.get(EKK0881B001CBSMsg1List.HHS_1GONLY_FLG));
				//ANK-3731-00-00 ADD END
				//ANK-4493-00-00 ADD START
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.KNYKEI_NET_1G_MKM_KH_MANS, kk0881_b001_map.get(EKK0881B001CBSMsg1List.KNYKEI_NET_1G_MKM_KH_MANS));
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.KNYKEI_NET_10G_MKM_KH_MANS, kk0881_b001_map.get(EKK0881B001CBSMsg1List.KNYKEI_NET_10G_MKM_KH_MANS));
				//ANK-4493-00-00 ADD END

				/** 提供方式契約情報 取得 */
				// EKK0891B002  提供方式契約一覧照会
				condMap = new HashMap<String, String>();

				// 回線使用契約番号を設定
				condMap.put(JKKMansInfoMapperCC.COND_KEY_KAISEN_USE_KEI_NO, (String)kk0881_b001_map.get(EKK0881B001CBSMsg1List.KAISEN_USE_KEI_NO));
				reqMap = mapper.setEKK0891B002( param, fixedText, condMap );
				resMap = scCall.run( reqMap, keepSesHandle.get() );
				ArrayList<HashMap<String, Object>> kk0891_b002_map_list = mapper.getEKK0891B002( param, fixedText, resMap );
				mapper.scResultCheck( param );

				// 提供方式契約番号
				String setTkHoshikiKeiNo = "";
				// 提供方式コード
				String setTkHoshikiCd = "";
				// 提供方式パターンコード
				String setTkHoshikiPtnCd = "";
// ANK-4244-00-00 ADD START
				// 棟内速度コード
				String setTonaiSpeedCd = "";
// ANK-4244-00-00 ADD END
// ANK-1392-00-00 2012.12.19 Y.MORIMOTO ADD START
				// マンション営業管理対象物件名
				String setBknNm = "";
				// マンション営業管理対象物件形態コード
				String setBknFormCd = "";
				// マンション営業管理対象物件住所コード
				String setBknAdCd = "";
				// マンション営業管理対象物件郵便番号
				String setBknPcd = "";
				// マンション営業管理対象物件都道府県名
				String setBknStateNm = "";
				// マンション営業管理対象物件市区町村名
				String setBknCityNm = "";
				// マンション営業管理対象物件大字通称名
				String setBknOaztsuNm = "";
				// マンション営業管理対象物件字丁目名
				String setBknAzchoNm = "";
				// マンション営業管理対象物件番地号
				String setBknBnchigo = "";
// ANK-1392-00-00 2012.12.19 Y.MORIMOTO ADD END
// IT2-2013-0001111 203.05.01 T.TORIKAI ADD START（障害票とは別件対応：住所変更障害 507）
				// 加入契約支払方式コード
				String setKanyuKeiPayHoshikiCd = "";
// IT2-2013-0001111 203.05.01 T.TORIKAI ADD END

				if(kk0891_b002_map_list != null && 0 < kk0891_b002_map_list.size())
				{
					for(int i = 0 ; i < kk0891_b002_map_list.size() ; i++ )
					{
						HashMap<String, Object> kk0891_b002_map = kk0891_b002_map_list.get(i);
						String tkHoshikiCd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.TK_HOSHIKI_CD);
						if(JKKMansInfoConstCC.CD00590_TK_HOSHIKI_VDSL5.equals(tkHoshikiCd))
						{
							setTkHoshikiKeiNo = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.TK_HOSHIKI_KEI_NO);
							setTkHoshikiCd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.TK_HOSHIKI_CD);
							setTkHoshikiPtnCd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.TK_HOSHIKI_PATTERN_CD);
// ANK-4244-00-00 ADD START
							setTonaiSpeedCd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.TONAI_SPEED_CD);
// ANK-4244-00-00 ADD END
// ANK-1392-00-00 2012.12.19 Y.MORIMOTO ADD START
							setBknNm = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_NM);
							setBknFormCd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_FORM_CD);
							setBknAdCd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_AD_CD);
							setBknPcd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_PCD);
							setBknStateNm = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_STATE_NM);
							setBknCityNm = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_CITY_NM);
							setBknOaztsuNm = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_OAZTSU_NM);
							setBknAzchoNm = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_AZCHO_NM);
							setBknBnchigo = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_BNCHIGO);
// ANK-1392-00-00 2012.12.19 Y.MORIMOTO ADD END
// IT2-2013-0001111 203.05.01 T.TORIKAI ADD START（障害票とは別件対応：住所変更障害 507）
							setKanyuKeiPayHoshikiCd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.KANYU_KEI_PAY_HOSHIKI_CD);
// IT2-2013-0001111 203.05.01 T.TORIKAI ADD END
						}
					}

					if("".equals(setTkHoshikiKeiNo))
					{
// ANK-1392-00-00 2012.12.19 Y.MORIMOTO MOD START
						HashMap<String, Object> kk0891_b002_map = kk0891_b002_map_list.get(0);
//						setTkHoshikiKeiNo = (String)kk0891_b002_map_list.get(0).get(EKK0891B002CBSMsg1List.TK_HOSHIKI_KEI_NO);
//						setTkHoshikiCd = (String)kk0891_b002_map_list.get(0).get(EKK0891B002CBSMsg1List.TK_HOSHIKI_CD);
//						setTkHoshikiPtnCd = (String)kk0891_b002_map_list.get(0).get(EKK0891B002CBSMsg1List.TK_HOSHIKI_PATTERN_CD);
						setTkHoshikiKeiNo = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.TK_HOSHIKI_KEI_NO);
						setTkHoshikiCd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.TK_HOSHIKI_CD);
						setTkHoshikiPtnCd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.TK_HOSHIKI_PATTERN_CD);
// ANK-4244-00-00 ADD START
						setTonaiSpeedCd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.TONAI_SPEED_CD);
// ANK-4244-00-00 ADD END
						setBknNm = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_NM);
						setBknFormCd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_FORM_CD);
						setBknAdCd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_AD_CD);
						setBknPcd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_PCD);
						setBknStateNm = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_STATE_NM);
						setBknCityNm = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_CITY_NM);
						setBknOaztsuNm = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_OAZTSU_NM);
						setBknAzchoNm = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_AZCHO_NM);
						setBknBnchigo = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.MSBSN_KRTG_BKN_BNCHIGO);
// ANK-1392-00-00 2012.12.19 Y.MORIMOTO MOD END
// IT2-2013-0001111 203.05.01 T.TORIKAI ADD START（障害票とは別件対応：住所変更障害 507）
						String wkKanyuKeiPayHoshikiCd = (String)kk0891_b002_map.get(EKK0891B002CBSMsg1List.KANYU_KEI_PAY_HOSHIKI_CD);
						 if ("".equals(wkKanyuKeiPayHoshikiCd)) {
							if (!"".equals(paramMap.get(JKKMansInfoConstCC.PAY_HOSHIKI_CD))) {
								setKanyuKeiPayHoshikiCd = (String)paramMap.get(JKKMansInfoConstCC.PAY_HOSHIKI_CD);
							}
						 } else {
							setKanyuKeiPayHoshikiCd = wkKanyuKeiPayHoshikiCd;
						 }
// IT2-2013-0001111 203.05.01 T.TORIKAI ADD END
					}
				}

				// 提供方式契約番号
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.TK_HOSHIKI_KEI_NO, setTkHoshikiKeiNo);
				// 提供方式コード
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.TK_HOSHIKI_CD, setTkHoshikiCd);
				// 提供方式パターンコード
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.TK_HOSHIKI_PTN_CD, setTkHoshikiPtnCd);
// ANK-4244-00-00 ADD START
				// 棟内速度コード
				kaisenUseKeiInfo.put(JKKMansInfoConstCC.TONAI_SPEED_CD, setTonaiSpeedCd);
// ANK-4244-00-00 ADD END
// IT1-2022-0000054 ADD START
				// 加入契約支払方式コード(移転先）
				// サービスコードがネットの場合に設定
				if("01".equals(svcCd))
				{
					kaisenUseKeiInfo.put(JKKMansInfoConstCC.KANYU_KEI_PAY_HOSHIKI_CD, setKanyuKeiPayHoshikiCd);
				}
// IT1-2022-0000054 ADD END
//>>> 巻2 ANK-1224-00-00 Y.MORIMOTO MOD START 2012.11.21 ------------------------
				
				// オーナ機器所有フラグの設定
				
				/* ++++++++++ v20.00.00 DEL START ++++++++++ */
//				String mansion_Pid_Pid;
				/* ++++++++++ v20.00.00 DEL END   ++++++++++ */
				
				// 移転先住所マンションID・P-ID
				/* ++++++++++ v20.00.00 DEL START ++++++++++ */
//				String pId = (String)paramMap.get( JKKMansInfoConstCC.P_ID );
				/* ++++++++++ v20.00.00 DEL END   ++++++++++ */
				String mId = (String)paramMap.get( JKKMansInfoConstCC.MANS_ID );
				
				/* ++++++++++ v20.00.00 DEL START ++++++++++ */
//				if(!StringUtils.isEmpty(pId)){
//					mansion_Pid_Pid = pId;
//				} else {
//					mansion_Pid_Pid = mId;
//				}
				/* ++++++++++ v20.00.00 DEL END ++++++++++ */
				
				/* ++++++++++ v20.00.00 ADD START ++++++++++ */
				if(StringUtils.isEmpty(mId)){
					kaisenUseKeiInfo.put(JKKMansInfoConstCC.OWNR_KIKI_FLG, JKKMansInfoConstCC.CD00002_NASHI);
				}else{
				/* ++++++++++ v20.00.00 ADD END   ++++++++++ */
					
					// コード区分から親機器対応マンションコードか判定
					condMap = new HashMap<String, String>();
					condMap.put( JKKMansInfoMapperCC.COND_KEY_CD_SBT_CD, JKKMansInfoConstCC.CD01532);
					/* ++++++++++ v20.00.00 MOD START ++++++++++ */
//					condMap.put( JKKMansInfoMapperCC.COND_KEY_CD_DIV, mansion_Pid_Pid );
					condMap.put( JKKMansInfoMapperCC.COND_KEY_CD_DIV, mId );
					/* ++++++++++ v20.00.00 MOD END   ++++++++++ */
					reqMap = mapper.setEZM0171A010( param, fixedText, condMap );
					resMap = scCall.run( reqMap, keepSesHandle.get() );
					HashMap<String, Object> zm0171_a010 = mapper.getEZM0171A010( param, fixedText, resMap );
					mapper.scResultCheck( param );
					
					// 判定結果をマップに設定
					if(zm0171_a010 == null || zm0171_a010.size() == 0){
						kaisenUseKeiInfo.put(JKKMansInfoConstCC.OWNR_KIKI_FLG, JKKMansInfoConstCC.CD00002_NASHI);
					}else{
						kaisenUseKeiInfo.put(JKKMansInfoConstCC.OWNR_KIKI_FLG, JKKMansInfoConstCC.CD00002_ARI);
					}
				
				/* ++++++++++ v20.00.00 ADD START ++++++++++ */
				}
				/* ++++++++++ v20.00.00 ADD END   ++++++++++ */
				
				
				// VDSL方式の場合
				if(isTkHoshikiVDSL(setTkHoshikiCd) && !StringUtils.isEmpty((String)kk0881_b001_map.get(EKK0881B001CBSMsg1List.MCNTKK_CD))) {
					condMap = new HashMap<String, String>();
					// EZM0171A010 コード名称管理一覧照会
					condMap.put( JKKMansInfoMapperCC.COND_KEY_CD_SBT_CD, JKKMansInfoConstCC.CD01463);
					condMap.put( JKKMansInfoMapperCC.COND_KEY_CD_DIV, (String)kk0881_b001_map.get(EKK0881B001CBSMsg1List.MCNTKK_CD) );
					reqMap = mapper.setEZM0171A010( param, fixedText, condMap );
					resMap = scCall.run( reqMap, keepSesHandle.get() );
					HashMap<String, Object> zm0171_a010_v = mapper.getEZM0171A010( param, fixedText, resMap );
					mapper.scResultCheck( param );
					//型式を設定
					kaisenUseKeiInfo.put(JKKMansInfoConstCC.KATASHIKI_NM, (String)zm0171_a010_v.get(EZM0171A010CBSMsg1List.CD_DIV_NM));
				}
//>>> 巻2 ANK-1224-00-00 Y.MORIMOTO MOD END   2012.11.21 ------------------------

				kaisenUseKeiList.add(kaisenUseKeiInfo);

// ANK-1392-00-00 2012.12.19 Y.MORIMOTO MOD START
//				/** 回線使用物件情報 取得 */
//				// EKK2121A010  回線使用物件一意照会
//				condMap = new HashMap<String, String>();
//				condMap.put( JKKMansInfoMapperCC.COND_KEY_BKN_KNRI_NO, (String)kk0881_b001_map.get( EKK0881B001CBSMsg1List.BKN_KNRI_NO ) );
//				reqMap = mapper.setEKK2121A010( param, fixedText, condMap );
//				resMap = scCall.run( reqMap, keepSesHandle.get() );
//				HashMap<String, Object> kk0861_a010_map = mapper.getEKK2121A010( param, fixedText, resMap );
//				mapper.scResultCheck( param );
//
//				// 回線使用契約物件名
//				paramMap.put(JKKMansInfoConstCC.KISNUSEKEI_BKN_NM, kk0861_a010_map.get(EKK2121A010CBSMsg1List.KISNUSEKEI_BKN_NM));
//				// 回線使用契約物件形態コード
//				paramMap.put(JKKMansInfoConstCC.KISNUSEKEI_BKN_FORM_CD, kk0861_a010_map.get(EKK2121A010CBSMsg1List.KISNUSEKEI_BKN_FORM_CD));
//				// 回線使用契約物件住所コード
//				paramMap.put(JKKMansInfoConstCC.KISNUSEKEI_BKN_AD_CD, kk0861_a010_map.get(EKK2121A010CBSMsg1List.KISNUSEKEI_BKN_AD_CD));
//				// 回線使用契約物件郵便番号
//				paramMap.put(JKKMansInfoConstCC.KISNUSEKEI_BKN_PCD, kk0861_a010_map.get(EKK2121A010CBSMsg1List.KISNUSEKEI_BKN_PCD));
//				// 回線使用契約物件都道府県名
//				paramMap.put(JKKMansInfoConstCC.KISNUSEKEI_BKN_STATE_NM, kk0861_a010_map.get(EKK2121A010CBSMsg1List.KISNUSEKEI_BKN_STATE_NM));
//				// 回線使用契約物件市区町村名
//				paramMap.put(JKKMansInfoConstCC.KISNUSEKEI_BKN_CITY_NM, kk0861_a010_map.get(EKK2121A010CBSMsg1List.KISNUSEKEI_BKN_CITY_NM));
//				// 回線使用契約物件大字通称名
//				paramMap.put(JKKMansInfoConstCC.KISNUSEKEI_BKN_OAZTSU_NM, kk0861_a010_map.get(EKK2121A010CBSMsg1List.KISNUSEKEI_BKN_OAZTSU_NM));
//				// 回線使用契約物件字丁目名
//				paramMap.put(JKKMansInfoConstCC.KISNUSEKEI_BKN_AZCHO_NM, kk0861_a010_map.get(EKK2121A010CBSMsg1List.KISNUSEKEI_BKN_AZCHO_NM));
//				// 回線使用契約物件番地号
//				paramMap.put(JKKMansInfoConstCC.KISNUSEKEI_BKN_BNCHIGO, kk0861_a010_map.get(EKK2121A010CBSMsg1List.KISNUSEKEI_BKN_BNCHIGO));
				// マンション営業管理対象物件名
				paramMap.put(JKKMansInfoConstCC.MSBSN_KRTG_BKN_NM, setBknNm);
				// マンション営業管理対象物件形態コード
				paramMap.put(JKKMansInfoConstCC.MSBSN_KRTG_BKN_FORM_CD, setBknFormCd);
				// マンション営業管理対象物件住所コード
				paramMap.put(JKKMansInfoConstCC.MSBSN_KRTG_BKN_AD_CD, setBknAdCd);
				// マンション営業管理対象物件郵便番号
				paramMap.put(JKKMansInfoConstCC.MSBSN_KRTG_BKN_PCD, setBknPcd);
				// マンション営業管理対象物件都道府県名
				paramMap.put(JKKMansInfoConstCC.MSBSN_KRTG_BKN_STATE_NM, setBknStateNm);
				// マンション営業管理対象物件市区町村名
				paramMap.put(JKKMansInfoConstCC.MSBSN_KRTG_BKN_CITY_NM, setBknCityNm);
				// マンション営業管理対象物件大字通称名
				paramMap.put(JKKMansInfoConstCC.MSBSN_KRTG_BKN_OAZTSU_NM, setBknOaztsuNm);
				// マンション営業管理対象物件字丁目名
				paramMap.put(JKKMansInfoConstCC.MSBSN_KRTG_BKN_AZCHO_NM, setBknAzchoNm);
				// マンション営業管理対象物件番地号
				paramMap.put(JKKMansInfoConstCC.MSBSN_KRTG_BKN_BNCHIGO, setBknBnchigo);
// ANK-1392-00-00 2012.12.19 Y.MORIMOTO MOD END
// IT2-2013-0001111 203.05.01 T.TORIKAI MOD START（障害票とは別件対応：住所変更障害 507）
				// 加入契約支払方式コード
				paramMap.put(JKKMansInfoConstCC.PAY_HOSHIKI_CD, setKanyuKeiPayHoshikiCd);
// IT2-2013-0001111 203.05.01 T.TORIKAI MOD END
// ANK-3885-00-00 ADD START
// ANK-4244-00-00 DEL START
//				// 光化マンションの場合、棟内空き状況情報一覧照会を実行する
//				 HashMap<String, Object> JKKGetMansionSearchCCMap = (HashMap<String, Object>) param.getData(fixedText);
//				 if(JKKGetMansionSearchCCMap != null)
//				 {
//					String hhs_1gonly_flg = "";
//					hhs_1gonly_flg = (String) kk0881_b001_map.get(EKK0881B001CBSMsg1List.HHS_1GONLY_FLG);
//					if("1".equals(hhs_1gonly_flg) && "50".equals(setTkHoshikiPtnCd))
//					{
//						// 棟内空き状況情報一覧照会
//						condMap.put( JKKMansInfoMapperCC.COND_KEY_PID, (String)kk0871_b001_map_list.get(0).get(EKK0871B001CBSMsg1List.PID) );
//						reqMap = mapper.setEKK3251B010( param, fixedText, condMap );
//						resMap = scCall.run( reqMap, keepSesHandle.get() );
//						ArrayList<HashMap<String, Object>> kk3251_b010_map_list = mapper.getEKK3251B010( param, fixedText, resMap );
//						mapper.scResultCheck( param );
//						paramMap.put(EKK3251B010CBSMsg.EKK3251B010CBSMSG1LIST, kk3251_b010_map_list);
//					}
//				 }
// ANK-4244-00-00 DEL END
// ANK-3885-00-00 ADD END
			}
		}
		paramMap.put(JKKMansInfoConstCC.KAISEN_USE_KEI_LIST, kaisenUseKeiList);
	}

	/**
	 * チェック処理.
	 * <br>
	 * @param   handle     セッションマネージャなどを持ったハンドル情報
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 * @return  リクエストパラメータ(param)に戻り値を追加して返却する
	 */
	public HashMap<String, Object> getInvokeCBS( SessionHandle handle, IRequestParameterReadWrite param, String fixedText ) throws Exception {

		/** 事前準備 */
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);

		// 住所変更登録コモンコンポーネントマッピングクラスインスタンスを取得
		JKKMansInfoMapperCC mapper = JKKMansInfoMapperCC.getInstance();


		/** オーナー契約情報 取得 */
		// EKK0871B001  オーナー契約一覧照会
		HashMap<String, String> condMap = new HashMap<String, String>();
		condMap = new HashMap<String, String>();
		condMap.put( JKKMansInfoMapperCC.COND_KEY_PID, (String)paramMap.get( JKKMansInfoConstCC.P_ID ) );
		HashMap<String, Object> reqMap = mapper.setEKK0871B001( param, fixedText, condMap );
		return reqMap;
	}

	/**
	 * 処理結果(エラー情報)取得処理.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   templates  テンプレート情報一覧
	 * @param   returnCd   リターンコード
	 * @throws  Exception  例外が発生した場合
	 * @return  リクエストパラメータ(param)に戻り値を追加して返却する
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode) {

		return param;
	}
//>>> 巻2 ANK-1224-00-00 Y.MORIMOTO ADD START 2012.11.21 ------------------------
	/**
	 * 提供方式コードがVDSL方式かどうかを判定する。
	 * <br>
	 * @param	tk_hoshiki_cd 提供方式コード
	 * @return	VDSL方式の場合、trueを返却。それ以外はfalse。
	 */
	private boolean isTkHoshikiVDSL(String tk_hoshiki_cd) {
		return JKKMansInfoConstCC.CD00590_TK_HOSHIKI_VDSL1.equals(tk_hoshiki_cd) || 
				JKKMansInfoConstCC.CD00590_TK_HOSHIKI_VDSL2.equals(tk_hoshiki_cd) ||
				JKKMansInfoConstCC.CD00590_TK_HOSHIKI_VDSL3.equals(tk_hoshiki_cd) ||
				JKKMansInfoConstCC.CD00590_TK_HOSHIKI_VDSL4.equals(tk_hoshiki_cd) ||
				JKKMansInfoConstCC.CD00590_TK_HOSHIKI_VDSL5.equals(tk_hoshiki_cd) ;
	}
//>>> 巻2 ANK-1224-00-00 Y.MORIMOTO ADD END   2012.11.21 ------------------------
}
