/********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************
 *＜プログラム内容＞
 *  システム名      ：eo顧客基幹システム
 *  モジュール名    ：住所変更時同番移転登録コンポーネント部品クラス
 *  ソースファイル名：JKKAdchgDobanitenAddCC.java
 *  作成者          ：FJ
 *  日付            ：2012年8月20日
 *＜機能概要＞
 *  住所変更に伴うeo光電話の
 *	変更区分の判定を行う部品クラス。
 *＜修正履歴＞
 *  バージョン  修正日      修正者      修正内容
 *  v1.00.00    2011/11/10  FJ          新規作成
 *  v3.00.00    2012/04/12  FJ          巻取り@案件対応
 *
 ********************************************************************/
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.JKKAdInfChgConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKAdchgConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKSvcConst;
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.sun.enterprise.tools.common.util.StringUtils;

import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1951B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2011B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ETU0021A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ETU0021C010CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0021D011CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0091A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0301A010CBSMsg1List;

public class JKKAdchgDobanitenAddCC extends AbstractCommonComponent {

	/** セッションハンドル保持域 */
	private static ThreadLocal<SessionHandle> keepSesHandle = new ThreadLocal<SessionHandle>()
	{
		// 保持域への設定はinitialValue()ではなくset()を使用する為、
		// initialValue()は実装しない
	};

	/**
	 * コンストラクタ.
	 * <br>
	 */
	public JKKAdchgDobanitenAddCC() {
	}

	/**
	 * 住所変更時同番移転登録.
	 * <br>
	 * @param   handle     セッションマネージャなどを持ったハンドル情報
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Throwable  例外が発生した場合
	 * @return  リクエストパラメータ(param)に戻り値を追加して返却する
	 */
	public IRequestParameterReadWrite adchgDobanitenAdd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable {

		try {

			/** 事前準備 */
			HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);
			HashMap<String, String> condMap;
			HashMap<String, Object> reqMap;
			Map<?, ?> resMap;
			
			// 住所変更登録コモンコンポーネントマッピングクラスインスタンスを取得
			JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

			// SCリクエストInvokerを取得
			ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

			// 同番移転登録用マップ
			HashMap<String, Object> tu0021_d011_map = new HashMap<String, Object>();

			/** リソース保持 */
			// セッションハンドルをローカル変数に保持
			keepSesHandle.set(handle);

			/** 一意照会 */
//			// ・EKK0081A010  サービス契約一意照会
			condMap = new HashMap<String, String>();
//			condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_SVC_KEI_NO));
//			condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_OPE_DATE));
//			reqMap = mapper.setEKK0081A010(param, fixedText, condMap);
//			resMap = scCall.run(reqMap, keepSesHandle.get());
//			HashMap<String, Object> kk0081_a010_map = mapper.getEKK0081A010(param, fixedText, resMap);
//			mapper.scResultCheck(param);
//			
//			// ・EKK0191A010  サービス契約内訳＜eo光電話＞一意照会
//			condMap = new HashMap<String, String>();
//			condMap.put( JKKAdchgMapperCC.COND_KEY_SVC_KEI_UCWK_NO, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_SVC_KEI_UCWK_NO));
//			condMap.put( JKKAdchgMapperCC.COND_KEY_OPEDATE, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_OPE_DATE ) );
//			reqMap = mapper.setEKK0191A010( param, fixedText, condMap );
//			resMap = scCall.run( reqMap, keepSesHandle.get() );
//			HashMap<String, Object> kk0191_a010_map = mapper.getEKK0191A010( param, fixedText, resMap );
//			mapper.scResultCheck( param );
//			
			// ・ECK0011A010  お客様一意照会
			condMap.clear();
			condMap.put(JKKAdInfChgConstCC.COND_KEY_SYSID, (String)paramMap.get(JKKAdInfChgConstCC.PARAM_KEY_SYSID));
			condMap.put(JKKAdInfChgConstCC.COND_KEY_OPEDATE, (String)paramMap.get(JKKAdInfChgConstCC.PARAM_KEY_OPE_DATE));
			reqMap = mapper.setECK0011A010(param, fixedText, condMap);
			resMap = scCall.run(reqMap, keepSesHandle.get());
			HashMap<String, Object> ck0011_a010_map = mapper.getECK0011A010(param, fixedText, resMap);
			mapper.scResultCheck(param);
			
			// ・EZM0081A010  住所一意照会
			String plase_ck = null;
			condMap.clear();
			condMap.put(JKKAdchgMapperCC.COND_KEY_AD_CD, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_CD));
			reqMap = mapper.setEZM0081A010(param, fixedText, condMap);
			resMap = scCall.run(reqMap, keepSesHandle.get());
			HashMap<String, Object> zm0081_a010_map = mapper.getEZM0081A010(param, fixedText, resMap);
			mapper.scResultCheck(param);
			//設置場所住所確認コードの判定
			if (!zm0081_a010_map.containsKey(EZM0081A010CBSMsg1List.AD_CD )){
				plase_ck = JKKAdchgConstCC.SETPLACE_CK_CD_1;
			} else {
				String pcd = (String)zm0081_a010_map.get(EZM0081A010CBSMsg1List.PCD);
				String state = (String)zm0081_a010_map.get(EZM0081A010CBSMsg1List.STATE_NM);
				String city = (String)zm0081_a010_map.get(EZM0081A010CBSMsg1List.CITY_NM);
				String oaztsu = (String)zm0081_a010_map.get(EZM0081A010CBSMsg1List.OAZTSU_NM);
				String azcho = (String)zm0081_a010_map.get(EZM0081A010CBSMsg1List.AZCHO_NM);
				
				if (((String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_PCD)).equals(pcd) ||
						((String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_STATE)).equals(state) ||
						((String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_CITY)).equals(city) ||
						((String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_OAZTSU)).equals(oaztsu) ||
						((String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_AZCHO)).equals(azcho)){
					plase_ck = JKKAdchgConstCC.SETPLACE_CK_CD_0;
				} else {
					plase_ck = JKKAdchgConstCC.SETPLACE_CK_CD_2;
				}
			}
			
			// ・EZM0301A010  局番一意照会
			String kyokuNo = (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_TEL_NO);
			condMap.clear();
			condMap.put(JKKAdchgMapperCC.COND_KEY_KYOKU_NO, kyokuNo.substring(0,6));
			reqMap = mapper.setEZM0301A010(param, fixedText, condMap);
			resMap = scCall.run(reqMap, keepSesHandle.get());
			HashMap<String, Object> zm0301_a010_map = mapper.getEZM0301A010(param, fixedText, resMap);
			mapper.scResultCheck(param);
			
			// ・EZM0091A010  住所対象番号区画一意照会
			condMap.clear();
			condMap.put(JKKAdchgMapperCC.COND_KEY_AD_CD, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_CD));
			condMap.put(JKKAdchgMapperCC.COND_KEY_NO_KUKAKU_CD, (String)zm0301_a010_map.get(EZM0301A010CBSMsg1List.NO_KUKAKU_CD));
			reqMap = mapper.setEZM0091A010(param, fixedText, condMap);
			resMap = scCall.run(reqMap, keepSesHandle.get());
			HashMap<String, Object> zm0091_a010_map = mapper.getEZM0091A010(param, fixedText, resMap);
			mapper.scResultCheck(param);

			/** 同番移転登録内容設定 */
			// サービス契約内訳番号を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.SVC_KEI_UCWK_NO, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_SVC_KEI_UCWK_NO));
// IT2-2012-0001877対応 星野 DEL START
//			// 法人eo読替サービス契約番号を設定
//			String eoHojinNo = (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.CHSK_HJIN_EO_YKAE_SVKEI_NO);
//			// 変更先の法人eo読替サービス契約番号がない場合は変更もとの契約番号を設定
//			if (eoHojinNo != null && !StringUtils.isEmpty(eoHojinNo)){
//				tu0021_d011_map.put(ETU0021D011CBSMsg.HJIN_EO_YKAE_SVKEI_NO, eoHojinNo);
//			} else {
//				tu0021_d011_map.put(ETU0021D011CBSMsg.HJIN_EO_YKAE_SVKEI_NO, (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.CHMT_HJIN_EO_YKAE_SVKEI_NO));
//			}
// IT2-2012-0001877対応 星野 DEL END
			// 法人個人コードを設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.HOJIN_KOJIN_CD, (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.KEISHA_TYPE_CD));
			// 同番移転申込年月日を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.DOBANITEN_MSKM_YMD, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_MSKM_YMD));
			// 同番移転種別コード
			String banpoUm = (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_BMP_KOJI_UM);
			tu0021_d011_map.put(ETU0021D011CBSMsg.DOBANITEN_SBT_CD, banpoUm);
			// 同番移転希望年月日を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.DOBANITEN_KIBO_YMD, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_SVC_USE_STA_KIBO_YMD));
			// NTT電話番号を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.NTT_TELNO, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_TEL_NO));
			// NTT契約者名を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.NTT_KEISHA_NM, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_KSH_NM));
			// NTT契約者名(カナ)を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.NTT_KSH_KANA, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_KSH_KANA));
			// 連絡先名を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.RRKS_NM, (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.CUST_NM));
			// 連絡先電話番号を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.RRKS_TELNO, (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.KEISHA_TELNO));
			// 設置場所住所コードを設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_AD_CD, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_CD));
			// 設置場所郵便番号を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_PCD, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_PCD));
			// 設置場所都道府県名を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_STATE_NM, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_STATE));
			// 設置場所市区町村名を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_CITY_NM, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_CITY));
			// 設置場所大字通称名を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_OAZTSU_NM, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_OAZTSU));
			// 設置場所字丁目名を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_AZCHO_NM, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_AZCHO));
			// 設置場所番地号を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_BNCHIGO, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_BNCHIGO));
			// 設置場所住所補記・建物名を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_ADRTTM, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_ADRTTM));
			// 設置場所住所補記・部屋番号を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_ADRRM, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_DOBANITEN_AD_ADRRM));
			// 設置場所住所確認コードを設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_AD_CFM_CD, plase_ck);
			// 設置場所種別コードを設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_SBT_CD, "1"); //現状マンション物件コード等を持たず、画面に入力項目もないので戸建のみ(8/1 FUKUNAGA)
			// 設置場所種別その他補記を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_SBT_OTR_HOKI, null);
			// 番ポ申込時通信事業者コードを設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.MSKM_JI_BMP_JIGYOSHA_CD, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_BMP_MSKM_JI_TSJGS_CD));
			// 申込事業所番号を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.MSKM_JIGSHO_NO, (String)zm0091_a010_map.get(EZM0091A010CBSMsg1List.MSKM_JIGSHO_NO));
			// 申込事業者記事欄１を設定
// IT1-2013-0000157 2013.01.28 MOD-Start
//			tu0021_d011_map.put(ETU0021D011CBSMsg.MSKMJIG_KIJIRAN_1, null);
			tu0021_d011_map.put(ETU0021D011CBSMsg.MSKMJIG_KIJIRAN_1, paramMap.get("dobaniten_kijiran_1"));
// IT1-2013-0000157 2013.01.28 MOD-End
			// 申込事業者記事欄２を設定
			tu0021_d011_map.put(ETU0021D011CBSMsg.MSKMJIG_KIJIRAN_2, null);
			// 設置場所住所手動入力フラグ
// IT1-2013-0000157 2013.01.28 MOD-Start
//			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_AD_MAN_INPUT_FLG, "0");
			tu0021_d011_map.put(ETU0021D011CBSMsg.SETPLACE_AD_MAN_INPUT_FLG, paramMap.get("dobaniten_sk_ad_manipt_flg"));
// IT1-2013-0000157 2013.01.28 MOD-End
			
// IT2-2012-0001877対応 星野 ADD START
			// SYSID
			String sysid = (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_SYSID);
			tu0021_d011_map.put(ETU0021D011CBSMsg.SYSID, sysid);
			// 住所変更申込一時保存番号
			String adchm_tppv_no = getAdchmTppvNo(handle, param, fixedText, sysid, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TPPV_SVC_KEI_KAISEN_UCWK_NO));
			tu0021_d011_map.put(ETU0021D011CBSMsg.ADCHM_TPPV_NO, adchm_tppv_no);
			// 住所変更申込電話番号一時保存番号
			String adchm_tln_tppv_no = getAdchmTlnTppvNo(handle, param, fixedText, sysid, adchm_tppv_no, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_TLN_TPPV_TELNO));
			tu0021_d011_map.put(ETU0021D011CBSMsg.ADCHM_TLN_TPPV_NO, adchm_tln_tppv_no);
// IT2-2012-0001877対応 星野 ADD END
			
// IT1-2013-0000157 2013.01.28 ADD-Start
			String tln_tppv_dobaniten_no = (String)paramMap.get("tln_tppv_dobaniten_no");
			// 同番移転登録を呼び出す
			if (StringUtils.isEmpty(tln_tppv_dobaniten_no))
			{
// IT1-2013-0000157 2013.01.28 ADD-End
				
				/** 同番移転登録 */
				// ・ETU0021D011  同番移転登録
				reqMap = mapper.setETU0021D011(param, fixedText, tu0021_d011_map);
				resMap = scCall.run(reqMap, keepSesHandle.get());
				mapper.getETU0021D011( param, fixedText, resMap);
				mapper.scResultCheck(param);
				
// IT1-2013-0000157 2013.01.28 ADD-Start
			}
			// 同番移転内容変更を呼び出す
			else
			{
				String gene_add_dtm = (String) paramMap.get("gene_add_dtm");
				
				/** 同番移転一意照会 */
				HashMap<String, Object> etu0021A010map = exeETU0021A010(handle, param, fixedText, tln_tppv_dobaniten_no, gene_add_dtm);
				
				// 画面項目に変更がある場合は変更処理実施
				if (isChgDobanitenInfo(tu0021_d011_map, etu0021A010map))
				{
					tu0021_d011_map.put(ETU0021C010CBSMsg.DOBANITEN_NO, tln_tppv_dobaniten_no);
					tu0021_d011_map.put(ETU0021C010CBSMsg.GENE_ADD_DTM, gene_add_dtm);
					tu0021_d011_map.put(ETU0021C010CBSMsg.UPD_DTM_BF, paramMap.get("upd_dtm_bf"));
					
					/** 同番移転内容変更 */
					// ・ETU0021C010  同番移転内容変更
					reqMap = mapper.setETU0021C010(param, fixedText, tu0021_d011_map);
					resMap = scCall.run(reqMap, keepSesHandle.get());
					mapper.getETU0021D011( param, fixedText, resMap);
					mapper.scResultCheck(param);
				}
			}
// IT1-2013-0000157 2013.01.28 ADD-End

			} finally {

			// ・セッションハンドル保持域
			if(keepSesHandle.get() != null){
				keepSesHandle.remove();
			}
		}

		return param;
	}

// IT2-2012-0001877対応 星野 ADD START
	/**
	 * 住所変更申込一時保存番号の取得
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param sysid
	 * @param svcKeiKaisenUcwkNo
	 * @return
	 * @throws Exception
	 */
	private String getAdchmTppvNo(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			String fixedText, 
			String sysid, 
			String svcKeiKaisenUcwkNo 
	) throws Exception {
		
		/** 事前準備 */
		HashMap<String, String> condMap;
		HashMap<String, Object> requestMap;
		Map<?, ?> resultMap;
		
		// 住所変更登録コモンコンポーネントマッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		
		// EKK2011B001 住所変更申込一時保存一覧照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SYSID, sysid);
		condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_KAIS_UCWK_NO, svcKeiKaisenUcwkNo);
		requestMap = mapper.setEKK2011B001(param, fixedText, condMap);
		resultMap  = scCall.run( requestMap, handle );
		ArrayList<HashMap<String, Object>> kk2011b001List = mapper.getEKK2011B001( param, fixedText, resultMap );
		mapper.scResultCheck( param );
		
		// 住所変更申込一時保存より情報が取得できない場合
		if(kk2011b001List == null || kk2011b001List.size() == 0)
		{
			return "";
		}
		
		// 住所変更申込一時保存番号を返却
		HashMap childKk2011b001Map = (HashMap)kk2011b001List.get(0);
		return (String)childKk2011b001Map.get(EKK2011B001CBSMsg1List.ADCHM_TPPV_NO);
	}
	
	
	private String getAdchmTlnTppvNo(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			String fixedText, 
			String sysid, 
			String adchmTppvNo, 
			String telno
	) throws Exception {
		
		/** 事前準備 */
		HashMap<String, String> condMap;
		HashMap<String, Object> requestMap;
		Map<?, ?> resultMap;
		
		// 住所変更登録コモンコンポーネントマッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		
		// EKK1951B001 住所変更申込電話番号一時保存一覧照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SYSID, sysid);
		condMap.put(JKKAdchgMapperCC.COND_KEY_ADCHM_TPPV_NO, adchmTppvNo);
		requestMap = mapper.setEKK1951B001(param, fixedText, condMap);
		resultMap  = scCall.run( requestMap, handle );
		ArrayList<HashMap<String, Object>> kk1951b001List = mapper.getEKK1951B001( param, fixedText, resultMap );
		mapper.scResultCheck( param );
		
		// 住所変更申込電話番号一時保存より情報が取得できない場合
		if(kk1951b001List == null || kk1951b001List.size() == 0)
		{
			return "";
		}
		
		// 住所変更申込電話番号一時保存一覧照会明細
		for ( int i = 0; i < kk1951b001List.size(); i ++ ) {
			
			HashMap childKk1951b001Map = (HashMap)kk1951b001List.get(i);
			// 電話番号
			String tppvTelno = (String)childKk1951b001Map.get(EKK1951B001CBSMsg1List.TELNO);
			
			if( tppvTelno.equals(telno) ){
				// 住所変更申込電話番号一時保存番号
				return (String)childKk1951b001Map.get(EKK1951B001CBSMsg1List.ADCHM_TLN_TPPV_NO);
			}
		}
		
		return "";

	}
// IT2-2012-0001877対応 星野 ADD END

// IT1-2013-0000157 2013.01.28 ADD-Start
	/**
	 * 同番移転一意照会実施
	 * 
	 * @param   handle     セッションマネージャなどを持ったハンドル情報
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 * @return  tu0021a010Map 同番移転一意照会結果マップ
	 */
	private HashMap<String, Object> exeETU0021A010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String tln_tppv_dobaniten_no, String gene_add_dtm) throws Exception
	{
		HashMap<String, String> condMap = new HashMap<String, String>();
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ETU0021B018.同番移転番号 ⇒ ETU0021A010.同番移転番号
		condMap.put( JKKAdchgMapperCC.COND_KEY_DOBANITEN_NO, tln_tppv_dobaniten_no);
		// ETU0021B018.世代登録年月日時分秒 ⇒ ETU0021A010.世代登録年月日時分秒
		condMap.put( JKKAdchgMapperCC.COND_KEY_GENE_ADD_DTM, gene_add_dtm);
		/** ETU0021A010 同番移転一意照会 */
		HashMap<String, Object> requestMap = mapper.setETU0021A010(param, fixedText, condMap);
		Map<?, ?> resMap  = scCall.run( requestMap, keepSesHandle.get() );
		HashMap<String, Object> tu0021a010Map = mapper.getETU0021A010( param, fixedText, resMap );
		mapper.scResultCheck( param );
		return tu0021a010Map;
	}
// IT1-2013-0000157 2013.01.28 ADD-End
	
// IT1-2013-0000157 2013.01.28 ADD-Start
	/**
	 * 同番移転情報が変更されているかを判定する
	 * 
	 * @param trgtData 対象データ
	 * @param outMapETU0021A010 同番移転一意照会結果
	 * @return 判定結果
	 */
	private boolean isChgDobanitenInfo(
			HashMap<String, Object> trgtData,
			HashMap<String, Object> outMapETU0021A010)
	{
		// 電話番号
		if (!convNullToBlank((String)trgtData.get("ntt_telno")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.NTT_TELNO))))
		{
			return true;
		}
		// ＮＴＴ契約者名
		else if (!convNullToBlank((String)trgtData.get("ntt_keisha_nm")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.NTT_KEISHA_NM))))
		{
			return true;
		}
		// ＮＴＴ契約者カナ名
		else if (!convNullToBlank((String)trgtData.get("ntt_ksh_kana")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.NTT_KSH_KANA))))
		{
			return true;
		}
		// 設置場所住所手動入力フラグ
		else if (!convNullToBlank((String)trgtData.get("setplace_ad_man_input_flg")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.SETPLACE_AD_MAN_INPUT_FLG))))
		{
			return true;
		}
		// 設置場所住所コード
		else if (!convNullToBlank((String)trgtData.get("setplace_ad_cd")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.SETPLACE_AD_CD))))
		{
			return true;
		}
		// 設置場所郵便番号
		else if (!convNullToBlank((String)trgtData.get("setplace_pcd")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.SETPLACE_PCD))))
		{
			return true;
		}
		// 設置場所都道府県名
		else if (!convNullToBlank((String)trgtData.get("setplace_state_nm")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.SETPLACE_STATE_NM))))
		{
			return true;
		}
		// 設置場所市区町村名
		else if (!convNullToBlank((String)trgtData.get("setplace_city_nm")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.SETPLACE_CITY_NM))))
		{
			return true;
		}
		// 設置場所大字通称名
		else if (!convNullToBlank((String)trgtData.get("setplace_oaztsu_nm")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.SETPLACE_OAZTSU_NM))))
		{
			return true;
		}
		// 設置場所字丁目名
		else if (!convNullToBlank((String)trgtData.get("setplace_azcho_nm")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.SETPLACE_AZCHO_NM))))
		{
			return true;
		}
		// 設置場所番地号
		else if (!convNullToBlank((String)trgtData.get("setplace_bnchigo")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.SETPLACE_BNCHIGO))))
		{
			return true;
		}
		// 設置場所住所補記・建物名
		else if (!convNullToBlank((String)trgtData.get("setplace_adrttm")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.SETPLACE_ADRTTM))))
		{
			return true;
		}
		// 設置場所住所補記・部屋番号
		else if (!convNullToBlank((String)trgtData.get("setplace_adrrm")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.SETPLACE_ADRRM))))
		{
			return true;
		}
		// 申込事業者記事欄1
		else if (!convNullToBlank((String)trgtData.get("mskmjig_kijiran_1")).equals(
				convNullToBlank((String)outMapETU0021A010.get(ETU0021A010CBSMsg1List.MSKMJIG_KIJIRAN_1))))
		{
			return true;
		}
		
		return false;
	}
// IT1-2013-0000157 2013.01.28 ADD-End
	
// IT1-2013-0000157 2013.01.28 ADD-Start
	/**
	 * 文字列がnullなら空文字に変換する
	 * 
	 * @param value 判定する文字列
	 * @return 変換後文字列
	 */
	private String convNullToBlank(String value)
	{
		return value == null ? JKKSvcConst.STRING_BLANK : value;
	}
// IT1-2013-0000157 2013.01.28 ADD-End
}