/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：契約管理
*	モジュール名	：JKKTkkkSvKeiNoUpdCC
*	ソースファイル名：JKKTkkkSvKeiNoUpdCC.java
*	作成者			：FJ
*	日付			：2012年07月23日
*＜機能概要＞
*	宅内機器サービス契約番号更新共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v13.00.00	2015/04/17	FJ) 森脇	【OM-2015-0000746】対応
*   v25.00.00   2016/06/09  FJ)中山		【OM-2016-0001136】回復時の宅内機器ステータス更新不備対応
*   v28.00.00   2017/01/31  FJ)江藤     【OM-2016-0001720】買取機器情報送信（ディレイド用）バッチ廃止
*   v61.00.00	2023/07/12	 FJ)西窪	 【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
*
**********************************************************************/
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.JKKSvcConst;
import com.fujitsu.futurity.bp.custom.constant.KKSV0167_KKSV0167OP;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.constant.JDKStrConst;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKCommonUtil;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.EDK0301B060CBSMsg;
import eo.ejb.cbs.cbsmsg.EDK0301B060CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B009CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B009CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0241B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0241B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B504CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B504CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0020003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0020003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0020003CBSMsg2List;
import eo.ejb.cbs.cbsmsg.EKKA0020006CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0020006CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg1List;

/**
 * 宅内Sにサービス契約番号を連携する部品。
 * 
 * @author 富士通
 *
 */
public class JKKTkkkSvKeiNoUpdCC extends AbstractCommonComponent {

	/** テンプレートID(サービス契約回線内訳一覧照会) */
	private static final String TEMPLATE_EKK0241B001 = "EKK0241B001";
	/** テンプレートID(機器提供サービス契約一覧照会(サービス契約回線内訳)) */
	private static final String TEMPLATE_EKK0341B504 = "EKK0341B504";
	/** テンプレートID(同一場所サービス契約情報照会) */
	private static final String TEMPLATE_EKK0081B009 = "EKK0081B009";
	/** テンプレートID(サービス契約番号更新) */
	private static final String TEMPLATE_EKKA0020006 = "EKKA0020006";
	// ST1-2012-0000212 2012/07/31 start
    /** テンプレートID(宅内機器一意照会（４）) */
	private static final String TEMPLATE_EKKA0020003 = "EKKA0020003";
	// ST1-2012-0000212 2012/07/31 end
	
// IT1-2012-0001677 2012-11-14 ADD_START
	/** テンプレートID(宅内機器型式一意照会) */
	private static final String TEMPLATE_EZM0411A010 = "EZM0411A010";
// IT1-2012-0001677 2012-11-14 ADD_END

// OM-2016-0001720 買取機器情報送信（ディレイド用）バッチ廃止に伴い不要な処理を削除 2017/01/31 DEL START
//	// OM-2013-0003018 強制解約されたネットの回復時に宅内連携処理でシステムエラー 2013/10/22 START
//	/** テンプレートID(ディレイド処理依頼登録) */
//	private static final String TEMPLATE_ECC0111D010 = "ECC0111D010";
//	// OM-2013-0003018 強制解約されたネットの回復時に宅内連携処理でシステムエラー 2013/10/22 END
// OM-2016-0001720 買取機器情報送信（ディレイド用）バッチ廃止に伴い不要な処理を削除 2017/01/31 DEL END

	// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携された 2013/11/26 START
	/** テンプレートID(返品機器取消一覧照会) */
	private static final String TEMPLATE_EDK0301B060 = "EDK0301B060";
	// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携された 2013/11/26 END
	
	/** IN項目:サービス契約番号 */
	public static final String IN_PARAM_SVC_KEI_NO = "svc_kei_no";
	/** IN項目:処理区分　1:ネット有効化系　2:ネット無効化系 3:電話有効化系*/
	public static final String IN_PARAM_SYORI_KBN = "syori_kbn";
	/** 処理区分 ネット有効化系（照査・回復）*/
	public static final String SYORI_KBN_1 = "1";
	/** 処理区分 ネット無効化系（解約・キャンセル）*/
	public static final String SYORI_KBN_2 = "2";
	
	// OM-2016-0001720 処理区分を追加 2017/01/31 ADD START
	/** 処理区分 電話有効化系（照査・回復）*/
	public static final String SYORI_KBN_3 = "3";
	// OM-2016-0001720 処理区分を追加 2017/01/31 ADD END
	
//↓↓↓2013-05-09追加　巻３IKK-2013-0001055（ＰＴバグ：誤って未使用のＯＮＵを回復する）↓↓↓
	/** IN項目:異動区分 */
	public static final String IN_PARAM_IDO_DIV = "ido_div";
//↑↑↑2013-05-09追加　巻３IKK-2013-0001055（ＰＴバグ：誤って未使用のＯＮＵを回復する）↑↑↑

	// OM-2016-0001720 買取機器情報送信（ディレイド用）バッチ廃止に伴い不要な処理を削除 2017/01/31 DEL START
////OM-2016-0001136 ADD START
//	/** IN項目:サービスコード */
//	public static final String IN_PARAM_SVC_CD = "svc_cd";
////OM-2016-0001136 ADD END
	// OM-2016-0001720 買取機器情報送信（ディレイド用）バッチ廃止に伴い不要な処理を削除 2017/01/31 DEL END

//	/** 正常終了 */
//	private static final int STAT_NORMAL = 0;
	
	/** エラーメッセージ */
	private static final String ERR_MSG = "INVALID_RETURN_MESSAGE";
	
	/** 宅内機器種別コード：ONU */
	private static final String TAKNKIKI_SBT_ONU = "D0";

	// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 START
	/** 宅内機器種別コード：多機能ルーター */
	private static final String TAKNKIKI_SBT_CD_TAKINORT = "R0";
	
	// ANK-4315-00-00 ADD START
	/** 宅内機器種別コード：ＨＧＷ */
	private static final String TAKNKIKI_SBT_CD_HGW = "S0";
	// ANK-4315-00-00 ADD END

	/** 連携対象となる宅内機器種別コードのリスト */
	private static final String[] TRGT_TAKNKIKI_SBT_CD_LIST =
	{
		TAKNKIKI_SBT_CD_TAKINORT,
		TAKNKIKI_SBT_ONU,
		// ANK-4315-00-00 ADD START
		TAKNKIKI_SBT_CD_HGW
		// ANK-4315-00-00 ADD END
	};
	// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 END
	


	// OM-2016-0001720 JKKStrConstの定数を使用するよう変更したため削除 2017/01/31 DEL START
//	/** サービスコード：電話サービス */
//	private static final String SVC_CD_TEL = "02";
	// OM-2016-0001720 JKKStrConstの定数を使用するよう変更したため削除 2017/01/31 DEL END
	
	// IT1-2012-0000928 2012/08/03 start
	/** ユーザ任意文字列 */
	private String fixedText = null;
	// IT1-2012-0000928 2012/08/03 end
	
	// OM-2016-0001720 不要なため削除 2017/01/31 DEL START
//	// 2012-08-03 [ANK-0342-00-00] add start
//	/** 根元の要素(解約) **/
//	private static final String KKSV044601CC = "KKSV044601CC";
//
//	/** 宅内機器型式コード */
//	private static final String ZUIJI_TAKNKIKI_MODEL_CD = "ZUIJI_TAKNKIKI_MODEL_CD";
//	/** 機器製造番号 */
//	private static final String ZUIJI_KIKI_SEIZO_NO = "ZUIJI_KIKI_SEIZO_NO";
//	/** サービス契約番号 */
//	private static final String ZUIJI_SVC_KEI_NO = "ZUIJI_SVC_KEI_NO";
//// 2012-08-03 [ANK-0342-00-00] add end
	// OM-2016-0001720 不要なため削除 2017/01/31 DEL END
	
	// ST1-2012-0000875 2012/11/18 start
	/** 起動元コード − 画面 */
	public static final String KIDO_CD_ON = "01";
	// OM-2016-0001720 起動コードバッチ追加 2017/01/31 AND START
	/** 起動元コード − バッチ */
	public static final String KIDO_CD_BAT = "02";
	// OM-2016-0001720 起動コードバッチ追加 2017/01/31 AND END
	/** 宅内サービス契約番号更新情報リスト */
	private static final String NET_KAI_SVKEI_LIST = "NET_KAI_SVKEI_LIST";
	// ST1-2012-0000875 2012/11/18 end

	// OM-2016-0001720 不要になった定数削除 2017/01/31 DEL START
//	// OM-2013-0003438 ONUが倉庫に存在する場合にネットを解約すると宅内連携処理でシステムエラー 2013/11/05 START
//	/** 宅内機器管理システム　宅内機器ステータス：保管 */
//	private static final String TKNI_TAKNKIKI_STAT_HOKAN = "11";
//
//	/** 宅内機器管理システム　宅内機器ステータス：買取 */
//	private static final String TKNI_TAKNKIKI_STAT_KAITORI = "54";
//
//	/** 宅内機器管理システム　宅内機器ステータス：破棄 */
//	private static final String TKNI_TAKNKIKI_STAT_ABDMNT = "91";
//	// OM-2013-0003438 ONUが倉庫に存在する場合にネットを解約すると宅内連携処理でシステムエラー 2013/11/05 END
//
//	// OM-2013-0003018 強制解約されたネットの回復時に宅内連携処理でシステムエラー 2013/10/22 START
//	/** 宅内機器管理システム　宅内機器ステータス：残置 */
//	private static final String TKNI_TAKNKIKI_STAT_ZANCHI = "53";
//
//	/** ジョブID：買取機器宅内機器送信処理(ディレイドバッチ) */
//	private static final String JOB_ID_KAITORI_KIKI_SEND_DLYD = "EO2B40220J0";
//
//	/** KKIFE187_買取機器宅内機器ステータス更新ファイル　解約・回復コード：回復 */
//	private static final String DSL_KAIHK_CD_KAIHK = "02";
//	// OM-2013-0003018 強制解約されたネットの回復時に宅内連携処理でシステムエラー 2013/10/22 END
//
//	// OM-2015-0000746 2015/04/14 ADD START
//	/** 宅内機器管理システム　宅内機器ステータス：強制解約残置 */
//	private static final String TKNI_TAKNKIKI_STAT_KYOKAIZANCHI = "55";
//	// OM-2015-0000746 2015/04/14 ADD END
	// OM-2016-0001720 不要になった定数削除 2017/01/31 DEL END
	// OM-2016-0001720 OUT項目追加 2017/01/31 ADD START
	/** OUT項目:宅内サービス契約番号更新情報リスト */
	public static final String OUT_PARAM_TAKNI_SVC_KEI_NO_UPD_INFO_LIST = "takni_svc_kei_no_upd_info_list";

	/** 宅内サービス契約番号更新情報 宅内機器型式コード */
	public static final String TAKNI_SVC_KEI_NO_UPD_INFO_TAKNKIKI_MODEL_CD = "taknkiki_model_cd";
	
	/** 宅内サービス契約番号更新情報 機器製造番号 */
	public static final String TAKNI_SVC_KEI_NO_UPD_INFO_KIKI_SEIZO_NO = "kiki_seizo_no";
	
	/** 宅内サービス契約番号更新情報 サービス契約番号 */
	public static final String TAKNI_SVC_KEI_NO_UPD_INFO_SVC_KEI_NO = "svc_kei_no";	
	// OM-2016-0001720 OUT項目追加 2017/01/31 ADD END
	
	/**
	 * 宅内Sにサービス契約番号を連携する。
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return IRequestParameterReadWrite モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @throws Exception
	 */
	public IRequestParameterReadWrite updTkkkSvKeiNo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable {
		String kidoCd = KIDO_CD_ON;//画面起動
		return updTkkkSvKeiNo(handle, param, fixedText, kidoCd);
	}

	// ST1-2012-0000875 2012/11/18 start
	/**
	 * 宅内Sにサービス契約番号を連携する。強制解約後の宅内サービス契約番号更新情報リストを処理する。
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param kidoCd 画面起動orバッチ起動
	 * @return IRequestParameterReadWrite モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite updTkkkSvKeiNoAfKyoseiDsl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable {
		HashMap<String, Object> kksv016701CC = (HashMap<String, Object>) param.getData(KKSV0167_KKSV0167OP.KKSV016701CC);
		//強制解約CCの結果　宅内サービス契約番号更新情報(月次)リスト
		ArrayList<HashMap<String, String>> netKaiSvkeiList = (ArrayList)kksv016701CC.get(NET_KAI_SVKEI_LIST);  // ST1-2012-0001075 2012/12/14
		
		for(int i=0; i < netKaiSvkeiList.size(); i++)
		{
			HashMap<String, String> ccMap = new HashMap<String, String>();
			ccMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_SVC_KEI_NO, (String)(netKaiSvkeiList.get(i).get(EKK0081A010CBSMsg1List.SVC_KEI_NO)));  // ST1-2012-0001075 2012/12/14
			ccMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_SYORI_KBN, JKKTkkkSvKeiNoUpdCC.SYORI_KBN_2);
			param.setData("JKKTkkkSvKeiNoUpdCCWORK", ccMap);
			
			updTkkkSvKeiNo(handle, param, "JKKTkkkSvKeiNoUpdCCWORK", KIDO_CD_ON);
		}
		
		
		return param;
	}
	// ST1-2012-0000875 2012/11/18 end

	// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 START
	/**
	 * 宅内Sにサービス契約番号を連携する。
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param kidoCd 画面起動orバッチ起動
	 * @return IRequestParameterReadWrite モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite updTkkkSvKeiNo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,String kidoCd) throws Throwable 
	{
		// 連携対象となる機器ごとにサービス契約番号更新を行う
		for (String trgtTaknkikiSbtCd : TRGT_TAKNKIKI_SBT_CD_LIST)
		{
			updTkkkSvKeiNoEachKiki(handle, param, fixedText, kidoCd, trgtTaknkikiSbtCd);
		}

		return param;
	}
	// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 END

	/**
	 * 機器ごとに宅内Sにサービス契約番号を連携する。
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param kidoCd 画面起動orバッチ起動
	 * @param trgtTaknkikiSbtCd 連携対象となる機器の宅内機器種別コード
	 * @return IRequestParameterReadWrite モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @throws Throwable 
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 START
//	public IRequestParameterReadWrite updTkkkSvKeiNo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,String kidoCd) throws Throwable
	private IRequestParameterReadWrite updTkkkSvKeiNoEachKiki(SessionHandle handle, IRequestParameterReadWrite param,
			String fixedText, String kidoCd, String trgtTaknkikiSbtCd) throws Throwable
	// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 END
	{
		// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 START
//		//ST-2014-0000023 20140123 START
//		//暫定対応です！！ST-2014-0000023の対応としてこれだけでは不足しています！！
//		updTkkkSvKeiNo2(handle, param, fixedText, kidoCd);
//		//ST-2014-0000023 20140123 END
		// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 END
		
		//ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		this.fixedText = fixedText;   // IT1-2012-0000928 2012/08/03 add
		
		// IN項目:サービス契約番号
		String inParamSvcKeiNo = (String)(inMap).get(IN_PARAM_SVC_KEI_NO);
		// IN項目:処理区分
		String inParamSyoriKbn = (String)(inMap).get(IN_PARAM_SYORI_KBN);
//↓↓↓2013-05-09追加　巻３IKK-2013-0001055（ＰＴバグ：誤って未使用のＯＮＵを回復する）↓↓↓
		// IN項目:異動区分
		String inParamIdoDiv = (String)(inMap).get(IN_PARAM_IDO_DIV);
//↑↑↑2013-05-09追加　巻３IKK-2013-0001055（ＰＴバグ：誤って未使用のＯＮＵを回復する）↑↑↑
		
		// OM-2016-0001720 デバッグログ追加 2017/01/31 ADD START
		JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】START サービス契約番号:" + inParamSvcKeiNo + " 処理区分:" + inParamSyoriKbn + " 異動区分:" + inParamIdoDiv);
		// OM-2016-0001720 デバッグログ追加 2017/01/31 ADD END
		
		//ネットに対応する回線内訳　→　機器の検索
		ArrayList<HashMap<String,Object>> eKK0241B001ResultList = new ArrayList<HashMap<String,Object>>();
		callEKK0241B001SC(param, handle, inParamSvcKeiNo, eKK0241B001ResultList);
		
		// 対象機器の製造番号があるか
		String onuSeizoNo = null;
		String onuModelCd = null;
		// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 START
		String kktkSvcKeiNo = null;
		String kikiChgNo = null;
		// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 END
		for(int j=0; j<eKK0241B001ResultList.size(); j++)
		{
			String svcKeiKaisenUcwkNo = (String)eKK0241B001ResultList.get(j).get(EKK0241B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
			ArrayList<HashMap<String,Object>> eKK0341B504ResultList = new ArrayList<HashMap<String,Object>>();
			callEKK0341B504SC(param, handle, svcKeiKaisenUcwkNo, eKK0341B504ResultList);

			HashMap<String, Object> eKK0341B504ResultListElement;
			for(int i = 0 ; i < eKK0341B504ResultList.size() ; i++)
			{
				eKK0341B504ResultListElement = eKK0341B504ResultList.get(i);
//↓↓↓2013-05-09追加　巻３IKK-2013-0001055（誤って解約済ＯＮＵを特定して宅内Ｓに連携してしまう）↓↓↓
				//未使用の機器提供サービス契約は空送りする
				String kktkSvcKeiStat = (null != eKK0341B504ResultListElement ?
						(String)eKK0341B504ResultListElement.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_STAT) :
						JKKSvcConst.SVC_KEI_STAT_910);
				if (JKKSvcConst.SVC_KEI_STAT_910.equals(kktkSvcKeiStat) || JKKSvcConst.SVC_KEI_STAT_920.equals(kktkSvcKeiStat))
				{
					continue;
				}
//↑↑↑2013-05-09追加　巻３IKK-2013-0001055（誤って解約済ＯＮＵを特定して宅内Ｓに連携してしまう）↑↑↑
				// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 START
//				if(//eKK0341B504ResultListElement != null &&
//					TAKNKIKI_SBT_ONU.equals(eKK0341B504ResultListElement.get(EKK0341B504CBSMsg1List.TAKNKIKI_SBT_CD)))
				String taknkikiSbtCd = (String)eKK0341B504ResultListElement.get(EKK0341B504CBSMsg1List.TAKNKIKI_SBT_CD);
				if (null != trgtTaknkikiSbtCd && trgtTaknkikiSbtCd.equals(taknkikiSbtCd))
				// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 END
				{
					onuSeizoNo = (String)eKK0341B504ResultListElement.get(EKK0341B504CBSMsg1List.KIKI_SEIZO_NO);
					onuModelCd = (String)eKK0341B504ResultListElement.get(EKK0341B504CBSMsg1List.TAKNKIKI_MODEL_CD);
					// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 START
					kktkSvcKeiNo = (String)eKK0341B504ResultListElement.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_NO);
					kikiChgNo = (String)eKK0341B504ResultListElement.get(EKK0341B504CBSMsg1List.KIKI_CHG_NO);
					// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 END
					break;
				}
			}
			if(onuSeizoNo != null)
			{
				break;
			}
		}
		
		if(onuSeizoNo == null || "".equals(onuSeizoNo))
		{
			// OM-2016-0001720 デバッグログ追加 2017/01/31 ADD START
			JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】END 製番なし");
			// OM-2016-0001720 デバッグログ追加 2017/01/31 ADD END
			//製造番号が無いので処理終了（サービス契約番号の更新なし）
//			param.setControlMapData(SCControlMapKeys.RETURN_CODE, STAT_NORMAL);
			return param;
		}
		
// 2012-11-14 IT1-2012-0001692 ADD_START
		// 宅内機器型式コードで宅内機器型式より製造番号有無を取得する
		ArrayList<HashMap<String,Object>> eZM0411A010ResultList = new ArrayList<HashMap<String,Object>>();
		callEZM0411A010SC(param, handle, onuModelCd, eZM0411A010ResultList);
		
		HashMap<String,Object> eZM0411A010Result = new HashMap<String, Object>();
		
		String seizoNoUm = "";
		
		// 取得できた場合は製造番号有無を取得
		if (eZM0411A010ResultList != null && eZM0411A010ResultList.size() > 0)
		{
			eZM0411A010Result = eZM0411A010ResultList.get(0);
			
			if (eZM0411A010Result != null)
			{
				// 製造番号有無
				seizoNoUm = (String)eZM0411A010Result.get(EZM0411A010CBSMsg1List.SEIZO_NO_UM);
			}
		}
		
		// 製造番号有無が空白、または、製造番号有無が「0：無」の場合は処理終了
		if (JKKCommonUtil.isNull(seizoNoUm) || JKKSvcConst.UM_NASI.equals(seizoNoUm))
		{
			// OM-2016-0001720 デバッグログ追加 2017/01/31 ADD START
			JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】END 製造番号有無が有以外:" + seizoNoUm);
			// OM-2016-0001720 デバッグログ追加 2017/01/31 ADD END
			return param;
		}
// 2012-11-14 IT1-2012-0001692 ADD_END
		
		// OM-2016-0001720 デバッグログ追加 2017/01/31 ADD START
		JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】機器提供サービス契約番号:" + kktkSvcKeiNo + " 機器変更番号:" + kikiChgNo + " 型式:" + onuModelCd + " 製番:" + onuSeizoNo);
		// OM-2016-0001720 デバッグログ追加 2017/01/31 ADD END

		//同一場所のサービスの検索
		ArrayList<HashMap<String,Object>> eKK0081B009ResultList = new ArrayList<HashMap<String,Object>>();
		callEKK0081B009SC(param, handle, inParamSvcKeiNo, eKK0081B009ResultList);
		// OM-2016-0001720 障害事象とは関係ないが電話契約の特定方法誤り（サービス契約番号の昇順で取得しファーストヒットは誤り）の修正 2017/01/31 DEL START
//		//同一場所の電話サービスがあるか
//		String telSvcKeiNo = null;
//		String telSvcKeiStat = null;
//		HashMap<String, Object> eKK0081B009ResultListElement;
//		for(int i = 0 ; i < eKK0081B009ResultList.size() ; i++)
//		{
//			eKK0081B009ResultListElement = eKK0081B009ResultList.get(i);
//			if(eKK0081B009ResultListElement != null 
//					&& SVC_CD_TEL.equals(eKK0081B009ResultListElement.get(EKK0081B009CBSMsg1List.SVC_CD)))
//			{
//				telSvcKeiNo = (String)eKK0081B009ResultListElement.get(EKK0081B009CBSMsg1List.SVC_KEI_NO);
//				telSvcKeiStat = (String)eKK0081B009ResultListElement.get(EKK0081B009CBSMsg1List.SVC_KEI_STAT);
//				break;
//			}
//		}
//		
//		if(telSvcKeiNo == null || null == telSvcKeiStat
//				|| JKKSvcConst.SVC_KEI_STAT_010.equals(telSvcKeiStat)
////↓↓↓2013-05-09変更　巻３IKK-2013-0001055（セットのeo光電話が解約済でもeo光ネットが回復されたら宅内連携すべし）↓↓↓
////				|| JKKSvcConst.SVC_KEI_STAT_910.equals(telSvcKeiStat)
////				|| JKKSvcConst.SVC_KEI_STAT_920.equals(telSvcKeiStat)
//				|| ((JKKSvcConst.SVC_KEI_STAT_910.equals(telSvcKeiStat) || JKKSvcConst.SVC_KEI_STAT_920.equals(telSvcKeiStat))
//					&& !JKKSvcConst.IDO_DIV_KAIHK.equals(inParamIdoDiv))
//		)
////↑↑↑2013-05-09変更　巻３IKK-2013-0001055（セットのeo光電話が解約済でもeo光ネットが回復されたら宅内連携すべし）↑↑↑
//		{
//			//同一場所の電話サービスが無いので処理終了（サービス契約番号の更新なし）
////			param.setControlMapData(SCControlMapKeys.RETURN_CODE, STAT_NORMAL);
//			return param;
//		}
		// OM-2016-0001720 障害事象とは関係ないが電話契約の特定方法誤り（サービス契約番号の昇順で取得しファーストヒットは誤り）の修正 2017/01/31 DEL END
		
		// OM-2016-0001720 連携するサービス契約番号を取得する処理を新規作成 2017/01/31 ADD START
		// 宅内へ連携するサービス契約番号を取得
		String renkeiSvcKeiNo = getRenkeiSvcKeiNo(inParamSyoriKbn, inParamSvcKeiNo, eKK0081B009ResultList);
		
		if (JKKStringUtil.isNullBlank(renkeiSvcKeiNo))
		{
			// 連携不要な場合は、処理終了
			JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】END 連携サービス契約番号なし");
			return param;
		}
		// OM-2016-0001720 連携するサービス契約番号を取得処理を追加 2017/01/31 ADD END
		
		// OM-2016-0001720 eo内でチェックできることは先に行うため、チェックタイミングを下から移動 2017/01/31 ADD START
		// 返品機器に存在する場合（受付済・取消済以外）
		if (existsHmpinKiki(handle, param, kktkSvcKeiNo, kikiChgNo))
		{
			JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】END 返品機器が存在する");
			return param;
		}
		// OM-2016-0001720 eo内でチェックできることは先に行うため、チェックタイミングを下から移動 2017/01/31 ADD END
		
		// ST1-2012-0000212 2012/07/31 start
		//宅内機器基本Ｔ更新日付を取得する
		ArrayList<HashMap<String,Object>> eKKA0020003ResultList = new ArrayList<HashMap<String,Object>>();
		callEKKA0020003SC(param, handle, onuModelCd, onuSeizoNo, eKKA0020003ResultList);
		if (eKKA0020003ResultList == null || eKKA0020003ResultList.size() == 0)
		{ // レコードが存在しない場合例外をスロー
			throw new CCException("宅内機器基本Ｔ更新日付を取得できなかった", new Exception());
		}
		String kihontUpdDttm = (String)((HashMap<String, Object>)eKKA0020003ResultList.get(0)).get(EKKA0020003CBSMsg2List.KIHONT_UPD_DTTM);
		// ST1-2012-0000212 2012/07/31 end
		
		// OM-2013-0003438 ONUが倉庫に存在する場合にネットを解約すると宅内連携処理でシステムエラー 2013/11/05 START
		String taknkikiStat = (String)((HashMap<String, Object>)eKKA0020003ResultList.get(0)).get(EKKA0020003CBSMsg2List.TAKNKIKI_STAT);
		
		// OM-2016-0001720 宅内機器ステータスの見直し 2017/01/31 MOD START
		// 宅内機器ステータスが保管、残置、買取、破棄のいずれかの場合
//		if (TKNI_TAKNKIKI_STAT_HOKAN.equals(taknkikiStat) || TKNI_TAKNKIKI_STAT_ZANCHI.equals(taknkikiStat)
//			|| TKNI_TAKNKIKI_STAT_KAITORI.equals(taknkikiStat) || TKNI_TAKNKIKI_STAT_ABDMNT.equals(taknkikiStat))
//		{
//			// サービス契約番号更新は行わない
//			return param;
//		}
		// 更新対象外の宅内機器ステータスの場合、サービス契約番号更新は行わない
		JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】宅内機器ステータス:" + taknkikiStat);
		if (!isTrgtTaknkikiStat(taknkikiStat))
		{
			JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】END 更新対象外の宅内機器ステータス");
			return param;
		}
		// OM-2016-0001720 宅内機器ステータスの見直し 2017/01/31 MOD END
		
		// OM-2013-0003438 ONUが倉庫に存在する場合にネットを解約すると宅内連携処理でシステムエラー 2013/11/05 END
		// OM-2016-0001720 eo内でチェックできることは先に行うため、チェックタイミングを上に移動 2017/01/31 DEL START
//		// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 START
//		// 返品機器に存在する場合（受付済・取消済以外）
//		if (existsHmpinKiki(handle, param, kktkSvcKeiNo, kikiChgNo))
//		{
//			// サービス契約番号更新は行わない
//			return param;
//		}
//		// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 END
		// OM-2016-0001720 eo内でチェックできることは先に行うため、チェックタイミングを上に移動 2017/01/31 DEL END

		// OM-2016-0001720 連携するサービス契約番号を取得処理を上に追加したため削除 2017/01/31 DEL START
//		//宅内機器のサービス契約番号更新
//		String renkeiSvcKeiNo;
//		if(SYORI_KBN_1.equals(inParamSyoriKbn))
//		{
//			renkeiSvcKeiNo = inParamSvcKeiNo;
//		}
//		else
//		{
//			renkeiSvcKeiNo = telSvcKeiNo;
//		}
		// OM-2016-0001720 連携するサービス契約番号を取得処理を上に追加したため削除 2017/01/31 DEL END
		
		// ANK-0342-00-00 2012/08/03 start
		if(JKKDslRun.KIDO_CD_ON.equals(kidoCd))
		{//画面起動時の処理
		// ANK-0342-00-00 2012/08/03 end
			// OM-2016-0001720 デバッグログ追加 2017/01/31 ADD START
			JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】END サービス契約番号更新SIF呼出 型式:" + onuModelCd + " 製番:" + onuSeizoNo + " 連携サービス契約番号:" + renkeiSvcKeiNo);
			// OM-2016-0001720 デバッグログ追加 2017/01/31 ADD END
			callEKKA0020006SC(param, handle, onuModelCd, onuSeizoNo, renkeiSvcKeiNo, kihontUpdDttm);
		
		// ANK-0342-00-00 2012/08/03 start
		}
		else
		{//バッチ起動のときの処理
			// OM-2016-0001720 もともとここはデッドロジックだったが、強制解約バッチから新たに呼び出すようにしたため、このルートが動くようにする 2017/01/31 MOD START
//			// ST-2014-0000057 強制解約バッチ実行時に多機能ルーターが宅内連携できていない 2014/02/24 START
//			// 宅内サービス契約番号更新情報に設定された内容は、異動予約反映バッチでファイル出力しているが、
//			// 現状、異動予約反映からの解約は画面起動時として処理されており、以下のロジックに入ることはないため、
//			// 多機能ルーターの連携対応は行わないこととする。
//			// ST-2014-0000057 強制解約バッチ実行時に多機能ルーターが宅内連携できていない 2014/02/24 END
//			HashMap<String, Object> kksv044601CC = null;
//			kksv044601CC = (HashMap<String, Object>)param.getData(KKSV044601CC);
//
//			kksv044601CC.put(ZUIJI_TAKNKIKI_MODEL_CD, onuModelCd);
//			kksv044601CC.put(ZUIJI_KIKI_SEIZO_NO, onuSeizoNo);
//			kksv044601CC.put(ZUIJI_SVC_KEI_NO, renkeiSvcKeiNo);
//			//宅内サービス契約番号更新情報(月次)追加
//			param.setData(KKSV044601CC, kksv044601CC);
			JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】END リスト出力 型式:" + onuModelCd + " 製番:" + onuSeizoNo + " 連携サービス契約番号:" + renkeiSvcKeiNo);
			
			// 宅内サービス契約番号更新情報リスト出力
			ArrayList<HashMap<String, Object>> takniSvcKeiNoUpdInfoList = (ArrayList)inMap.get(OUT_PARAM_TAKNI_SVC_KEI_NO_UPD_INFO_LIST);
			
			if (null == takniSvcKeiNoUpdInfoList)
			{
				takniSvcKeiNoUpdInfoList =  new ArrayList<HashMap<String,Object>>();
				inMap.put(OUT_PARAM_TAKNI_SVC_KEI_NO_UPD_INFO_LIST, takniSvcKeiNoUpdInfoList);
			}
			
			HashMap<String, Object> takniSvcKeiNoUpdInfo = new HashMap<String, Object>();
			
			takniSvcKeiNoUpdInfo.put(TAKNI_SVC_KEI_NO_UPD_INFO_TAKNKIKI_MODEL_CD, onuModelCd);
			takniSvcKeiNoUpdInfo.put(TAKNI_SVC_KEI_NO_UPD_INFO_KIKI_SEIZO_NO, onuSeizoNo);
			takniSvcKeiNoUpdInfo.put(TAKNI_SVC_KEI_NO_UPD_INFO_SVC_KEI_NO, renkeiSvcKeiNo);
			
			takniSvcKeiNoUpdInfoList.add(takniSvcKeiNoUpdInfo);
			// OM-2016-0001720 もともとここはデッドロジックだったが、強制解約バッチから新たに呼び出すようにしたため、このルートが動くようにする 2017/01/31 MOD END
		}
		// ANK-0342-00-00 2012/08/03 end
		
//		param.setControlMapData(SCControlMapKeys.RETURN_CODE, STAT_NORMAL);
		return param;
	}

// OM-2016-0001720 買取機器情報送信（ディレイド用）バッチ廃止に伴いupdTkkkAfKaihkメソッドを廃止しupdTkkkSvKeiNoメソッドに共通化 2017/01/31 DEL START
//	// OM-2013-0003018 強制解約されたネットの回復時に宅内連携処理でシステムエラー 2013/10/22 START
//	/**
//	 * サービス契約回復後の宅内S連携を行います。
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param fixedText ユーザ任意文字列
//	 * @return IRequestParameterReadWrite モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @throws Throwable 例外が発生した場合
//	 */
//	@SuppressWarnings("unchecked")
//	public IRequestParameterReadWrite updTkkkAfKaihk(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
//	throws Throwable
//	{
//		// ユーザデータ取得
//		HashMap inMap = (HashMap)param.getData(fixedText);
//		this.fixedText = fixedText;
//
//		// サービス契約番号
//		String svcKeiNo = (String)inMap.get(IN_PARAM_SVC_KEI_NO);
//
//		// 宅内機器ステータス
//		String taknkikiStat = "";
//		// 宅内連携対象の機器情報取得
//		// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 START
////		HashMap<String, Object> eKK0341B504Result = getKaisenKiKi(handle, param, svcKeiNo);
//		ArrayList<HashMap<String,Object>> eKK0341B504ResultList = getKaisenKiKi(handle, param, svcKeiNo);
//		for (HashMap<String, Object> eKK0341B504Result : eKK0341B504ResultList)
//		{
//		// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 END
//			if (null != eKK0341B504Result)
//			{
//				String taknkikiModelCd = (String)eKK0341B504Result.get(EKK0341B504CBSMsg1List.TAKNKIKI_MODEL_CD);
//				String kikiSeizoNo = (String)eKK0341B504Result.get(EKK0341B504CBSMsg1List.KIKI_SEIZO_NO);
//				// 宅内機器一意照会
//				HashMap<String,Object> eKKA0020003Result = getTkniTkkk(handle, param, taknkikiModelCd, kikiSeizoNo);
//				if (null != eKKA0020003Result)
//				{
//					// 宅内機器ステータス取得
//					taknkikiStat = (String)eKKA0020003Result.get(EKKA0020003CBSMsg2List.TAKNKIKI_STAT);
//				}
//			}
//	
//			// 宅内機器ステータスが残置の場合
//			// OM-2015-0000746 2015/04/14 MOD START
////			if (TKNI_TAKNKIKI_STAT_ZANCHI.equals(taknkikiStat))
//			if (TKNI_TAKNKIKI_STAT_ZANCHI.equals(taknkikiStat) || TKNI_TAKNKIKI_STAT_KYOKAIZANCHI.equals(taknkikiStat))
//			// OM-2015-0000746 2015/04/14 MOD START
//			{
//				// 宅内機器ステータス更新
//				updTkkkStat(handle, param, eKK0341B504Result, svcKeiNo);
//			}
////OM-2016-0001136 MOD START
////			else
//			else if (JKKStrConst.CD00130_01.equals(inMap.get(IN_PARAM_SVC_CD))
//					|| null == inMap.get(IN_PARAM_SVC_CD))
////OM-2016-0001136 MOD END
//			{
//				// サービス契約番号更新
//				// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 START
////				updTkkkSvKeiNo(handle, param, fixedText);
//				String taknkikiSbtCd = (String)eKK0341B504Result.get(EKK0341B504CBSMsg1List.TAKNKIKI_SBT_CD);
//				updTkkkSvKeiNoEachKiki(handle, param, fixedText, KIDO_CD_ON, taknkikiSbtCd);
//				// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 END
//			}
//		// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 START
//		}
//		// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 END
//
//		return param;
//	}
//	// OM-2013-0003018 強制解約されたネットの回復時に宅内連携処理でシステムエラー 2013/10/22 END
// OM-2016-0001720 買取機器情報送信（ディレイド用）バッチ廃止に伴いupdTkkkAfKaihkメソッドを廃止しupdTkkkSvKeiNoメソッドに共通化 2017/01/31 DEL END

	/**
	 * チェック処理用のサービスインターフェイスを作成し返却する。
	 * @param handle 
	 * @param param
	 * @param fixedText
	 * @return
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle,IRequestParameterReadWrite param, String fixedText,
			String template_id, String func_cd) throws RequestParameterException {
		
		String ccName = this.getClass().getSimpleName();
		HashMap<String, Object> bpCheckParam = null;
		Map<String, Object> ccParam = (Map<String, Object>)param.getData(ccName);
		if (ccParam == null)
		{
			return JKKBpCommon.createBpNotCheckParam();
		}

		String funcCd = (String)ccParam.get(JCMConstants.FUNC_CODE_KEY);
		if ("2".equals(funcCd))
		{
			// 「2:チェックのみ」の場合はBPチェックをスキップ(0件のCAANMsg配列を返却)
			bpCheckParam = JKKBpCommon.createBpNotCheckParam();
		}
		else
		{
			// 登録時にBPチェックを行う場合はここを編集して下さい。
			bpCheckParam = JKKBpCommon.createBpNotCheckParam();
		}
		return bpCheckParam;
	}


	/**
	 * サービスインターフェイスのエラー情報をマッピングする。
	 * @param param 
	 * @param templates
	 * @param returnCode
	 * @return
	 * @throws RequestParameterException
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode) throws Throwable {
		return JKKBpCommon.editErrorInfo(param, templates, returnCode);
	}

	/**
	 * 機器提供サービス契約一覧照会（回線内訳）サービスＩＦを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiKaiUcwkNo サービス契約回線内訳番号
	 * @param resultHash サービスOUT結果のハッシュ
	 * @throws Throwable 例外時にスローされます。
	 */
	@SuppressWarnings("unchecked")
	private void callEKK0241B001SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiNo,
			ArrayList<HashMap<String, Object>> resultHashList)
			throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// リクエストパラメータ
		HashMap<String, Object> sIFRequest = null;
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;
		// 結果情報域
		Map<?, ?> sIFResult = null;

		// 上りデータマッピング情報の作成
		//リクエストパラメータにメッセージ共通部を設定
		sIFRequest = editInMsgCmn(param);
		
		//templateとしてEKK0241B001形式のクラスを生成
		template = new CAANMsg(EKK0241B001CBSMsg.class.getName());
		
		//テンプレート共通部のID,機能コード、検索条件を設定
		mappingEKK0241B001SCInMsg(template, param, svcKeiNo);
		
		//テンプレート共通部の固定的な項目を設定
		editBasicCmn(param, template);

		//条件を詰めたテンプレートクラスの配列を生成し、リクエストパラメータに設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// IT1-2012-0000928 2012/08/03 start
		// SCからの戻り値からCAANMsgを取得する。
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// リターンコード取得
		Object return_code = sIFResult.get(JCMConstants.RET_CD_INT_KEY);
		
		// エラー情報の設定
		param = editErrorInfoEKK0241B001(param, resultMsgs, (Integer)return_code, fixedText);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));
		
		errChk(sIFResult);
		// IT1-2012-0000928 2012/08/03 end
		
		//結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0241B001CBSMsg.EKK0241B001CBSMSG1LIST,resultMsgs));
		
	}
	
	/**
	 * templateに対してEKK0241B001SCの条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param svcKeiKaiUcwkNo サービス契約回線内訳番号
	 * @throws RequestParameterException 
	 */
	private void mappingEKK0241B001SCInMsg(
			CAANMsg template,
			IRequestParameterReadWrite param,
			String svcKeiNo) throws RequestParameterException
	{
		
		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0241B001CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0241B001CBSMsg.TEMPLATEID, TEMPLATE_EKK0241B001);

		//機能コード--サービスIFDBアクセス部品
		template.set(EKK0241B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		//ＫＥＹ＿サービス契約回線内訳番号
		template.set(EKK0241B001CBSMsg.KEY_SVC_KEI_NO,svcKeiNo);
		
	}
	
	/**
	 * 機器提供サービス契約一覧照会（回線内訳）サービスＩＦを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiKaiUcwkNo サービス契約回線内訳番号
	 * @param resultHash サービスOUT結果のハッシュ
	 * @throws Throwable 例外時にスローされます。
	 */
	@SuppressWarnings("unchecked")
	private void callEKK0341B504SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiKaiUcwkNo,
			ArrayList<HashMap<String, Object>> resultHashList)
			throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// リクエストパラメータ
		HashMap<String, Object> sIFRequest = null;
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;
		// 結果情報域
		Map<?, ?> sIFResult = null;

		// 上りデータマッピング情報の作成
		//リクエストパラメータにメッセージ共通部を設定
		sIFRequest = editInMsgCmn(param);
		
		//templateとしてEKK0341B504形式のクラスを生成
		template = new CAANMsg(EKK0341B504CBSMsg.class.getName());
		
		//テンプレート共通部のID,機能コード、検索条件を設定
		mappingEKK0341B504SCInMsg(template, param, svcKeiKaiUcwkNo);
		
		//テンプレート共通部の固定的な項目を設定
		editBasicCmn(param, template);

		//条件を詰めたテンプレートクラスの配列を生成し、リクエストパラメータに設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// IT1-2012-0000928 2012/08/03 start
		// SCからの戻り値からCAANMsgを取得する。
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// リターンコード取得
		Object return_code = sIFResult.get(JCMConstants.RET_CD_INT_KEY);
		
		// エラー情報の設定
		param = editErrorInfoEKK0341B504(param, resultMsgs, (Integer)return_code, fixedText);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));
		
		errChk(sIFResult);
		// IT1-2012-0000928 2012/08/03 end
		
		//結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0341B504CBSMsg.EKK0341B504CBSMSG1LIST,resultMsgs));
		
	}
	
	/**
	 * templateに対してEKK0341B504SCの条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param svcKeiKaiUcwkNo サービス契約回線内訳番号
	 * @throws RequestParameterException 
	 */
	private void mappingEKK0341B504SCInMsg(
			CAANMsg template,
			IRequestParameterReadWrite param,
			String svcKeiKaiUcwkNo) throws RequestParameterException
	{
		
		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0341B504CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0341B504CBSMsg.TEMPLATEID, TEMPLATE_EKK0341B504);

		//機能コード--サービスIFDBアクセス部品
		template.set(EKK0341B504CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		//ＫＥＹ＿サービス契約回線内訳番号
		template.set(EKK0341B504CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO,svcKeiKaiUcwkNo);
		
	}
	
	/**
	 * 同一場所サービス契約情報照会サービスＩＦを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiNo サービス契約番号
	 * @param resultHash サービスOUT結果のハッシュ
	 * @throws Throwable 例外時にスローされます。
	 */
	@SuppressWarnings("unchecked")
	private void callEKK0081B009SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiNo,
			ArrayList<HashMap<String, Object>> resultHashList)
			throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// リクエストパラメータ
		HashMap<String, Object> sIFRequest = null;
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;
		// 結果情報域
		Map<?, ?> sIFResult = null;

		// 上りデータマッピング情報の作成
		//リクエストパラメータにメッセージ共通部を設定
		sIFRequest = editInMsgCmn(param);
		
		//templateとしてEKK0081B009形式のクラスを生成
		template = new CAANMsg(EKK0081B009CBSMsg.class.getName());
		
		//テンプレート共通部のID,機能コード、検索条件を設定
		mappingEKK0081B009SCInMsg(template, param, svcKeiNo);
		
		//テンプレート共通部の固定的な項目を設定
		editBasicCmn(param, template);

		//条件を詰めたテンプレートクラスの配列を生成し、リクエストパラメータに設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// IT1-2012-0000928 2012/08/03 start
		// SCからの戻り値からCAANMsgを取得する。
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// リターンコード取得
		Object return_code = sIFResult.get(JCMConstants.RET_CD_INT_KEY);
		
		// エラー情報の設定
		param = editErrorInfoEKK0081B009(param, resultMsgs, (Integer)return_code, fixedText);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));
		// IT1-2012-0000928 2012/08/03 end
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0081B009CBSMsg.EKK0081B009CBSMSG1LIST,resultMsgs));
		
	}
	
	/**
	 * templateに対してEKK0081B009SCの条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException 
	 */
	private void mappingEKK0081B009SCInMsg(
			CAANMsg template,
			IRequestParameterReadWrite param,
			String svcKeiNo) throws RequestParameterException
	{
		
		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0081B009CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0081B009CBSMsg.TEMPLATEID, TEMPLATE_EKK0081B009);

		//機能コード--サービスIFDBアクセス部品
		template.set(EKK0081B009CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		//ＫＥＹ＿サービス契約番号
		template.set(EKK0081B009CBSMsg.KEY_SVC_KEI_NO,svcKeiNo);
		
	}
	
	/**
	 * サービス契約番号更新ＩＦを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiNo サービス契約番号
	 * @param resultHash サービスOUT結果のハッシュ
	 * @throws Throwable 例外時にスローされます。
	 */
	@SuppressWarnings("unchecked")
	private void callEKKA0020006SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String kikiModelCd,
			String kikiSeizoNo,
			String svcKeiNo,
			String kihontUpdDttm)  // ST1-2012-0000212 2012/07/31 add
			throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// リクエストパラメータ
		HashMap<String, Object> sIFRequest = null;
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;
		// 結果情報域
		Map<?, ?> sIFResult = null;

		// 上りデータマッピング情報の作成
		//リクエストパラメータにメッセージ共通部を設定
		sIFRequest = editInMsgCmn(param);
		
		//templateとしてEKKA0020006形式のクラスを生成
		template = new CAANMsg(EKKA0020006CBSMsg.class.getName());
		
		//テンプレート共通部のID,機能コード、検索条件を設定
		mappingEKKA0020006SCInMsg(template, param, kikiModelCd, kikiSeizoNo, svcKeiNo, kihontUpdDttm);
		
		//テンプレート共通部の固定的な項目を設定
		editBasicCmn(param, template);

		//条件を詰めたテンプレートクラスの配列を生成し、リクエストパラメータに設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// IT1-2012-0000928 2012/08/03 start
		// SCからの戻り値からCAANMsgを取得する。
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// リターンコード取得
		Object return_code = sIFResult.get(JCMConstants.RET_CD_INT_KEY);
		
		// エラー情報の設定
		param = editErrorInfoEKKA0020006(param, resultMsgs, (Integer)return_code, fixedText);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));
		// IT1-2012-0000928 2012/08/03 end
		
		errChk(sIFResult);
		
	}
	
	/**
	 * templateに対してEKKA0020006SCの条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException 
	 */
	private void mappingEKKA0020006SCInMsg(
			CAANMsg template,
			IRequestParameterReadWrite param,
			String kikiModelCd,
			String kikiSeizoNo,
			String svcKeiNo,
			String kihontUpdDttm)   // ST1-2012-0000212 2012/07/31 add
	throws RequestParameterException
	{
		
		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKKA0020006CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKKA0020006CBSMsg.TEMPLATEID, TEMPLATE_EKKA0020006);

		//機能コード--サービスIFDBアクセス部品
		template.set(EKKA0020006CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		CAANMsg[] templateArray = template.getCAANMsgList(EKKA0020006CBSMsg.EKKA0020006CBSMSG1LIST);
		if (templateArray == null) {
			templateArray = new CAANMsg[1];
		}
		
		CAANMsg childTemplate = templateArray[0];
		if (childTemplate == null) {
			childTemplate = new CAANMsg(EKKA0020006CBSMsg1List.class.getName());
		}
		
		//ＫＥＹ＿宅内機器型式コード
		childTemplate.set(EKKA0020006CBSMsg1List.KEY_TK_MDL_CD, kikiModelCd);
		//ＫＥＹ＿機器製造番号
		childTemplate.set(EKKA0020006CBSMsg1List.KEY_KK_SEIZO_NO, kikiSeizoNo);
		//ＫＥＹ＿宅内機器基本Ｔ更新日付
		childTemplate.set(EKKA0020006CBSMsg1List.KEY_KIHON_UPD_DTTM, kihontUpdDttm);
		//サービス契約番号
		childTemplate.set(EKKA0020006CBSMsg1List.SVC_KEI_NO, svcKeiNo);
		
		templateArray[0] = childTemplate;
		template.set(EKKA0020006CBSMsg.EKKA0020006CBSMSG1LIST, templateArray);
		
	}
	
	/**
	 * サービスI/F実行用の共通部を設定します<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param msg データ登録内容
	 * @return オプションサービス契約作成数
	 * @throws RequestParameterException
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	private HashMap<String, Object> editInMsgCmn(IRequestParameterReadOnly param) 
	throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		//電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		
		//ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		
		//オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		
		//サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		
		//依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		
		//依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		
		//依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		
		//オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
				
		return paramMap;
		
	}
	
	/**
	 * 条件部の共通する項目の設定
	 * @param param リクエストパラメータ
	 * @param template template 条件の設定先
	 * @throws RequestParameterException
	 */
	private void editBasicCmn(IRequestParameterReadOnly param, CAANMsg template)
	throws RequestParameterException
	{
		
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
	}
	
	/**
	 * エラーチェック処理
	 * 
	 * @param msgList サービスインタフェース実行結果
	 * return void
	 * @throws SCCallException 
	 */
	private void errChk(Map<?, ?> msgList) 
	throws SCCallException
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		int returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// ステータス
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		if ((0 != returnCode) || (0 != templateStatus))
		{
			throw new SCCallException(ERR_MSG, String.valueOf(returnCode), templateStatus);
		}
	}
	
	/**
	 * CAANMsg[]の結果をHashとして抽出する（一覧照会用）
	 * @param workMapKey テンプレートリストのマップキー
	 * @param resultMsgs テンプレートリスト
	 * @return サービスＩＦ実行の結果部分(ArrayListのハッシュマップ)
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> mappingCAANOutMsg(String workMapKey,CAANMsg[] resultMsgs)
	{
		
		ArrayList<HashMap<String, Object>> retHashList = null;
		CAANMsg[] msgs = null;
		
		//結果の抽出
		retHashList = new ArrayList<HashMap<String, Object>>();
		msgs = resultMsgs[0].getCAANMsgList(workMapKey);

		if(msgs != null)
		{
			for(int i = 0 ; i < msgs.length ; i++)
			{
				retHashList.add(msgs[i].getMsgData());
			}
		}

		return retHashList;
		
	}

	/**
	 * 持ちうるフィールドにNullマッピングで埋める
	 * @param msg 対象クラス
	 * @param contents 対応クラスのフィールド列挙
	 */
	private void fillCAANMSGNullMapping(CAANMsg msg, Object[][] contents)
	{
		
		//要素ごとのループ
		for(int i = 0 ; i < contents.length ; i++)
		{
			
			Object element = null;
			
			//キーに該当する箇所の取得
			element = contents[i][0];

			//Nullでマッピング
			msg.setNull((String)element);
			
		}
		
	}
	
	// ST1-2012-0000212 2012/07/31 start
	/**
	 * 宅内機器一意照会（４）ＩＦを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiNo サービス契約番号
	 * @param resultHash サービスOUT結果のハッシュ
	 * @throws Throwable 例外時にスローされます。
	 */
	@SuppressWarnings("unchecked")
	private void callEKKA0020003SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String kikiModelCd,
			String kikiSeizoNo,
			ArrayList<HashMap<String, Object>> resultHashList)
			throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// リクエストパラメータ
		HashMap<String, Object> sIFRequest = null;
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;
		// 結果情報域
		Map<?, ?> sIFResult = null;

		// 上りデータマッピング情報の作成
		//リクエストパラメータにメッセージ共通部を設定
		sIFRequest = editInMsgCmn(param);
		
		//templateとしてEKKA0020003形式のクラスを生成
		template = new CAANMsg(EKKA0020003CBSMsg.class.getName());
		
		//テンプレート共通部のID,機能コード、検索条件を設定
		mappingEKKA0020003SCInMsg(template, param, kikiModelCd, kikiSeizoNo);
		
		//テンプレート共通部の固定的な項目を設定
		editBasicCmn(param, template);

		//条件を詰めたテンプレートクラスの配列を生成し、リクエストパラメータに設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// IT1-2012-0000928 2012/08/03 start
		// SCからの戻り値からCAANMsgを取得する。
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// リターンコード取得
		Object return_code = sIFResult.get(JCMConstants.RET_CD_INT_KEY);
		
		// エラー情報の設定
		param = editErrorInfoEKKA0020003(param, resultMsgs, (Integer)return_code, fixedText);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));
		
		errChk(sIFResult);
		// IT1-2012-0000928 2012/08/03 end
		
		//結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKKA0020003CBSMsg.EKKA0020003CBSMSG2LIST,resultMsgs));
		
	}
	
	/**
	 * templateに対してEKKA0020003SCの条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException 
	 */
	private void mappingEKKA0020003SCInMsg(
			CAANMsg template,
			IRequestParameterReadWrite param,
			String kikiModelCd,
			String kikiSeizoNo)
	throws RequestParameterException
	{
		
		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKKA0020003CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKKA0020003CBSMsg.TEMPLATEID, TEMPLATE_EKKA0020003);

		//機能コード--サービスIFDBアクセス部品
		template.set(EKKA0020003CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		CAANMsg[] templateArray = template.getCAANMsgList(EKKA0020003CBSMsg.EKKA0020003CBSMSG1LIST);
		if (templateArray == null) {
			templateArray = new CAANMsg[1];
		}
		
		CAANMsg childTemplate = templateArray[0];
		if (childTemplate == null) {
			childTemplate = new CAANMsg(EKKA0020003CBSMsg1List.class.getName());
		}
		
		//ＫＥＹ＿宅内機器型式コード
		childTemplate.set(EKKA0020003CBSMsg1List.KEY_TK_MDL_CD, kikiModelCd);
		//ＫＥＹ＿機器製造番号
		childTemplate.set(EKKA0020003CBSMsg1List.KEY_KK_SEIZO_NO, kikiSeizoNo);
		
		templateArray[0] = childTemplate;
		template.set(EKKA0020003CBSMsg.EKKA0020003CBSMSG1LIST, templateArray);
		
	}
	// ST1-2012-0000212 2012/07/31 end
	
	// IT1-2012-0000928 2012/08/03 start
	/**
	 *<DL>
	 *<DT>処理概要:EKK0241B001_サービス契約回線内訳一覧照会
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 * @since 2011.12.23
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEKK0241B001(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0241B001CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		
		// 作業項目領域
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}

		// 対象データ.ＫＥＹ＿ＫＥＹ＿サービス契約番号 → ＫＥＹ＿ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0241B001CBSMsg.KEY_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("key_svc_kei_no_err"))
			{
				inMap.put("key_svc_kei_no_err", template.getString(EKK0241B001CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}
		return param;
	}
	
// IT1-2012-0001677 2012-11-14 ADD_START
	/**
	 * 宅内機器型式一意照会サービスＩＦを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param taknkikiModelCd 宅内機器型式コード
	 * @param resultHash サービスOUT結果のハッシュ
	 * @throws Throwable 例外時にスローされます。
	 */
	@SuppressWarnings("unchecked")
	private void callEZM0411A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String taknkikiModelCd,
			ArrayList<HashMap<String, Object>> resultHashList)
			throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// リクエストパラメータ
		HashMap<String, Object> sIFRequest = null;
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;
		// 結果情報域
		Map<?, ?> sIFResult = null;

		// 上りデータマッピング情報の作成
		//リクエストパラメータにメッセージ共通部を設定
		sIFRequest = editInMsgCmn(param);
		
		//templateとしてEZM0411A010形式のクラスを生成
		template = new CAANMsg(EZM0411A010CBSMsg.class.getName());
		
		//テンプレート共通部のID,機能コード、検索条件を設定
		mappingEZM0411A010SCInMsg(template, param, taknkikiModelCd);
		
		//テンプレート共通部の固定的な項目を設定
		editBasicCmn(param, template);

		//条件を詰めたテンプレートクラスの配列を生成し、リクエストパラメータに設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// SCからの戻り値からCAANMsgを取得する。
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// リターンコード取得
		Object return_code = sIFResult.get(JCMConstants.RET_CD_INT_KEY);
		
		// エラー情報の設定
		param = editErrorInfoEZM0411A010(param, resultMsgs, (Integer)return_code, fixedText);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST,resultMsgs));
		
	}
	
	/**
	 * templateに対してEZM0411A010SCの条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param taknkikiModelCd 宅内機器型式コード
	 * @throws RequestParameterException 
	 */
	private void mappingEZM0411A010SCInMsg(
			CAANMsg template,
			IRequestParameterReadWrite param,
			String taknkikiModelCd) throws RequestParameterException
	{
		
		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EZM0411A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EZM0411A010CBSMsg.TEMPLATEID, TEMPLATE_EZM0411A010);

		//機能コード--サービスIFDBアクセス部品
		template.set(EZM0411A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		//ＫＥＹ＿サービス契約番号
		template.set(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, taknkikiModelCd);
		
	}
	/**
	 *<DL>
	 *<DT>処理概要:EZM0411A010_機器提供サービス契約一覧照会(サービス契約回線内訳)
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 * @since 2011.11.08
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEZM0411A010(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EZM0411A010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		
		// 作業項目領域
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}

		// 対象データ.ＫＥＹ＿サービス契約回線内訳番号 → ＫＥＹ＿サービス契約回線内訳番号 のエラー情報返却
		if (!template.isNull(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD_ERR))
		{
			if (!inMap.containsKey("key_taknkiki_model_cd_err"))
			{
				inMap.put("key_taknkiki_model_cd_err", template.getString(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD_ERR));
			}
		}
		return param;
	}
// IT1-2012-0001677 2012-11-14 ADD_END
	
	/**
	 *<DL>
	 *<DT>処理概要:EKK0341B504_機器提供サービス契約一覧照会(サービス契約回線内訳)
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 * @since 2011.11.08
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEKK0341B504(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0341B504CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		
		// 作業項目領域
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}

		// 対象データ.ＫＥＹ＿サービス契約回線内訳番号 → ＫＥＹ＿サービス契約回線内訳番号 のエラー情報返却
		if (!template.isNull(EKK0341B504CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR))
		{
			if (!inMap.containsKey("key_svc_kei_kaisen_ucwk_no_err"))
			{
				inMap.put("key_svc_kei_kaisen_ucwk_no_err", template.getString(EKK0341B504CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR));
			}
		}
		return param;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:EKK0081B009_同一場所サービス契約情報照会
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 * @since 2011.11.08
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEKK0081B009(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0081B009CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		
		// 作業項目領域
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}

		// 同一場所サービス契約情報照会ＳＣ.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0081B009CBSMsg.KEY_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("key_svc_kei_no_err")) {
				inMap.put("key_svc_kei_no_err", template.getString(EKK0081B009CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}
		return param;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:EKKA0020006_サービス契約番号更新
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 * @since 2011.11.08
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEKKA0020006(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKKA0020006CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		
		// 作業項目領域
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}

		ArrayList inList = (ArrayList)inMap.get("EKKA0020006CBSMsg1List");
		if (inList == null) 
		{
			inList = new ArrayList();
			inMap.put("EKKA0020006CBSMsg1List", inList);
		}
		CAANMsg[] templateArray = template.getCAANMsgList(EKKA0020006CBSMsg.EKKA0020006CBSMSG1LIST);

		if (templateArray != null) 
		{
			for (int i = 0; i < templateArray.length; i++) 
			{
				if (i >= inList.size()) 
				{
					inList.add(new HashMap());
				}
			
				HashMap childMap = (HashMap)inList.get(i);
				CAANMsg childTemplate = templateArray[i];

				// ＫＥＹ＿宅内機器型式コード のエラー情報返却
				if (!childTemplate.isNull(EKKA0020006CBSMsg1List.KEY_TK_MDL_CD_ERR)) 
				{
					if (!childMap.containsKey("key_tk_mdl_cd_err")) 
					{
						childMap.put("key_tk_mdl_cd_err", childTemplate.getString(EKKA0020006CBSMsg1List.KEY_TK_MDL_CD_ERR));
					}
				}
				// ＫＥＹ＿機器製造番号 のエラー情報返却
				if (!childTemplate.isNull(EKKA0020006CBSMsg1List.KEY_KK_SEIZO_NO_ERR)) 
				{
					if (!childMap.containsKey("key_kk_seizo_no_err")) 
					{
						childMap.put("key_kk_seizo_no_err", childTemplate.getString(EKKA0020006CBSMsg1List.KEY_KK_SEIZO_NO_ERR));
					}
				}
				// ＫＥＹ＿宅内機器基本Ｔ更新日付 のエラー情報返却
				if (!childTemplate.isNull(EKKA0020006CBSMsg1List.KEY_KIHON_UPD_DTTM_ERR)) 
				{
					if (!childMap.containsKey("key_kihon_upd_dttm_err")) 
					{
						childMap.put("key_kihon_upd_dttm_err", childTemplate.getString(EKKA0020006CBSMsg1List.KEY_KIHON_UPD_DTTM_ERR));
					}
				}
				// サービス契約番号 のエラー情報返却
				if (!childTemplate.isNull(EKKA0020006CBSMsg1List.SVC_KEI_NO_ERR)) 
				{
					if (!childMap.containsKey("svc_kei_no_err")) 
					{
						childMap.put("svc_kei_no_err", childTemplate.getString(EKKA0020006CBSMsg1List.SVC_KEI_NO_ERR));
					}
				}
			}
		}
		if (!template.isNull(EKKA0020006CBSMsg.EKKA0020006CBSMSG1LIST_ERR)) 
		{
			if (!inMap.containsKey("EKKA0020006CBSMsg1List_err")) 
			{
				inMap.put("EKKA0020006CBSMsg1List_err", template.getString(EKKA0020006CBSMsg.EKKA0020006CBSMSG1LIST_ERR));
			}
		}
		
		return param;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:EKKA0020003_宅内機器一意照会（４）
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 * @since 2011.11.08
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEKKA0020003(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKKA0020003CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		
		// 作業項目領域
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}

		ArrayList inList = (ArrayList)inMap.get("EKKA0020003CBSMsg1List");
		if (inList == null) 
		{
			inList = new ArrayList();
			inMap.put("EKKA0020003CBSMsg1List", inList);
		}
		CAANMsg[] templateArray = template.getCAANMsgList(EKKA0020003CBSMsg.EKKA0020003CBSMSG1LIST);

		if (templateArray != null) 
		{
			for (int i = 0; i < templateArray.length; i++) 
			{
				if (i >= inList.size()) 
				{
					inList.add(new HashMap());
				}
			
				HashMap childMap = (HashMap)inList.get(i);
				CAANMsg childTemplate = templateArray[i];

				// 宅内機器一意照会（４）条件明細.ＫＥＹ＿宅内機器型式コード のエラー情報返却
				if (!childTemplate.isNull(EKKA0020003CBSMsg1List.KEY_TK_MDL_CD_ERR)) 
				{
					if (!childMap.containsKey("key_tk_mdl_cd_err")) 
					{
						childMap.put("key_tk_mdl_cd_err", childTemplate.getString(EKKA0020003CBSMsg1List.KEY_TK_MDL_CD_ERR));
					}
				}
				// 宅内機器一意照会（４）条件明細.ＫＥＹ＿機器製造番号 のエラー情報返却
				if (!childTemplate.isNull(EKKA0020003CBSMsg1List.KEY_KK_SEIZO_NO_ERR)) 
				{
					if (!childMap.containsKey("key_kk_seizo_no_err")) 
					{
						childMap.put("key_kk_seizo_no_err", childTemplate.getString(EKKA0020003CBSMsg1List.KEY_KK_SEIZO_NO_ERR));
					}
				}
			}
		}
		if (!template.isNull(EKKA0020003CBSMsg.EKKA0020003CBSMSG1LIST_ERR)) 
		{
			if (!inMap.containsKey("EKKA0020003CBSMsg1List_err")) 
			{
				inMap.put("EKKA0020003CBSMsg1List_err", template.getString(EKKA0020003CBSMsg.EKKA0020003CBSMSG1LIST_ERR));
			}
		}
		return param;
	}
	// IT1-2012-0000928 2012/08/03 end

// OM-2016-0001720 買取機器情報送信（ディレイド用）バッチ廃止に伴い不要な処理を削除 2017/01/31 DEL START
//	// OM-2013-0003018 強制解約されたネットの回復時に宅内連携処理でシステムエラー 2013/10/22 START
//	/**
//	 * 宅内機器管理システム連携対象となる機器（回線に紐付く機器）を取得します。
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param svcKeiNo サービス契約番号
//	 * @return 機器情報のリスト
//	 * @throws Throwable 例外が発生した場合
//	 */
//	// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 START
////	private HashMap<String, Object> getKaisenKiKi(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo)
//	private ArrayList<HashMap<String,Object>> getKaisenKiKi(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo)
//	// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 END
//	throws Throwable 
//	{
//		// サービス契約回線内訳一覧照会
//		ArrayList<HashMap<String,Object>> eKK0241B001ResultList = new ArrayList<HashMap<String,Object>>();
//		callEKK0241B001SC(param, handle, svcKeiNo, eKK0241B001ResultList);
//
//		// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 START
////		HashMap<String, Object> eKK0341B504Result = null;
//		ArrayList<HashMap<String,Object>> trgtEKK0341B504ResultList = new ArrayList<HashMap<String,Object>>();
//		// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 END
//		for (int i = 0; i < eKK0241B001ResultList.size(); i++)
//		{
//			String svcKeiKaisenUcwkNo = (String)eKK0241B001ResultList.get(i).get(EKK0241B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
//			// 機器提供サービス契約一覧照会(サービス契約回線内訳)
//			ArrayList<HashMap<String,Object>> eKK0341B504ResultList = new ArrayList<HashMap<String,Object>>();
//			callEKK0341B504SC(param, handle, svcKeiKaisenUcwkNo, eKK0341B504ResultList);
//
//			for(int j = 0 ; j < eKK0341B504ResultList.size(); j++)
//			{
//				String kktkSvcKeiStat = (String)eKK0341B504ResultList.get(j).get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_STAT);
//				String taknkikiSbtCd = (String)eKK0341B504ResultList.get(j).get(EKK0341B504CBSMsg1List.TAKNKIKI_SBT_CD);
//				
//				// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 START
//				// 解約済・キャンセル済でないONUの場合
////				if (TAKNKIKI_SBT_ONU.equals(taknkikiSbtCd)
////					&& !JKKSvcConst.SVC_KEI_STAT_910.equals(kktkSvcKeiStat)
////					&& !JKKSvcConst.SVC_KEI_STAT_920.equals(kktkSvcKeiStat))
////				{
////					eKK0341B504Result = eKK0341B504ResultList.get(j);
////					break;
////				}
//				if (Arrays.asList(TRGT_TAKNKIKI_SBT_CD_LIST).contains(taknkikiSbtCd)
//					&& !JKKSvcConst.SVC_KEI_STAT_910.equals(kktkSvcKeiStat)
//					&& !JKKSvcConst.SVC_KEI_STAT_920.equals(kktkSvcKeiStat))
//				{
//					trgtEKK0341B504ResultList.add(eKK0341B504ResultList.get(j));
//				}
//				// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 END
//			}
//		}
//
//		return trgtEKK0341B504ResultList;
//	}
//
//	/**
//	 * 宅内機器管理システムの宅内機器情報を取得します。
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param kikiModelCd 宅内機器型式コード
//	 * @param kikiSeizoNo 機器製造番号
//	 * @return 宅内機器管理システムの宅内機器情報
//	 * @throws Throwable 例外が発生した場合
//	 */
//	private HashMap<String, Object> getTkniTkkk(SessionHandle handle, IRequestParameterReadWrite param,
//			String kikiModelCd, String kikiSeizoNo)
//	throws Throwable 
//	{
//		HashMap<String,Object> eKKA0020003Result = null;
//
//		if (isNull(kikiModelCd) || isNull(kikiSeizoNo))
//		{
//			return eKKA0020003Result;
//		}
//
//		// 宅内機器一意照会（４）
//		ArrayList<HashMap<String,Object>> eKKA0020003ResultList = new ArrayList<HashMap<String,Object>>();
//		callEKKA0020003SC(param, handle, kikiModelCd, kikiSeizoNo, eKKA0020003ResultList);
//		if (null != eKKA0020003ResultList && 0 < eKKA0020003ResultList.size())
//		{
//			eKKA0020003Result = (HashMap<String, Object>)eKKA0020003ResultList.get(0);
//		}
//
//		return eKKA0020003Result;
//	}
//
//	/**
//	 * 宅内機器管理システムの宅内機器ステータスを更新します。<br>
//	 * 更新処理自体はディレイド処理で行うため、ディレイド処理依頼にジョブを登録します。
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param eKK0341B504Result 機器提供サービス契約一覧照会結果
//	 * @param svcKeiNo サービス契約番号
//	 * @throws Throwable 例外が発生した場合
//	 */
//	private void updTkkkStat(SessionHandle handle, IRequestParameterReadWrite param,
//			HashMap<String, Object> eKK0341B504Result, String svcKeiNo)
//	throws Throwable 
//	{
//		// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 START
//		String kktkSvcKeiNo = (String)eKK0341B504Result.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_NO);
//		String kikiChgNo = (String)eKK0341B504Result.get(EKK0341B504CBSMsg1List.KIKI_CHG_NO);
//		// 返品機器に存在する場合（受付済・取消済以外）
//		if (existsHmpinKiki(handle, param, kktkSvcKeiNo, kikiChgNo))
//		{
//			// 宅内機器ステータス更新は行わない
//			return;
//		}
//		// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 END
//
//		// ディレイド処理の入力ファイル（宅内Sへの連携ファイル）データとなる文字列を作成
//		String efile = createEfile(eKK0341B504Result, svcKeiNo);
//
//		// ディレイド処理依頼登録
//		callECC0111D010SC(param, handle, efile.getBytes(JKKStrConst.ENCODE_SJIS));
//	}
//
//	/**
//	 * ディレイド処理依頼の入力ファイルデータを作成して返します。
//	 * <br>
//	 * @param eKK0341B504Result 機器提供サービス契約一覧照会結果
//	 * @param svcKeiNo サービス契約番号
//	 * @return ディレイド処理依頼の入力ファイルデータ
//	 * @throws Throwable 例外が発生した場合
//	 */
//	private String createEfile(HashMap<String, Object> eKK0341B504Result, String svcKeiNo)
//	{
//		// KKIFE187_買取機器宅内機器ステータス更新ファイル
//		String[] colList = new String[]
//		{
//			// サービス契約番号
//			svcKeiNo,
//			// 機器提供サービス契約番号
//			(String)eKK0341B504Result.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_NO),
//			// 宅内機器型式コード
//			(String)eKK0341B504Result.get(EKK0341B504CBSMsg1List.TAKNKIKI_MODEL_CD),
//			// 機器製造番号
//			(String)eKK0341B504Result.get(EKK0341B504CBSMsg1List.KIKI_SEIZO_NO),
//			// 解約・回復コード
//			DSL_KAIHK_CD_KAIHK,
//			// 機器提供種別コード
//			(String)eKK0341B504Result.get(EKK0341B504CBSMsg1List.KKTK_SBT_CD),
//			// 解約日
//			""
//		};
//
//		return editCsv(colList);
//	}
//
//	/**
//	 * 項目リストをダブルクォーテーション囲みのカンマ区切りに編集して返します。
//	 * <br>
//	 * @param colList 項目リスト
//	 * @return 編集結果
//	 * @throws Throwable 例外が発生した場合
//	 */
//	private String editCsv(String[] colList)
//	{
//		StringBuilder sb = new StringBuilder();
//
//		for (int i = 0; i < colList.length; i++)
//		{
//			if (0 < i)
//			{
//				sb.append(",");
//			}
//			sb.append("\"").append(colList[i]).append("\"");
//		}
//
//		return sb.toString();
//	}
//
//	/**
//	 * ディレイド処理依頼登録S-IFを呼び出します。
//	 * <br>
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param efile 電子ファイル
//	 * @throws Throwable 例外が発生した場合
//	 */
//	@SuppressWarnings("unchecked")
//	private void callECC0111D010SC(IRequestParameterReadWrite param, SessionHandle handle, byte[] efile)
//	throws Throwable
//	{
//		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
//
//		// リクエストパラメータ
//		HashMap<String, Object> sIFRequest = null;
//		// SIFの実行結果から取得したCAANMsg[]
//		CAANMsg[] resultMsgs = null;
//		// テンプレート情報部（入力時の情報）
//		CAANMsg template = null;
//		// 結果情報域
//		Map<?, ?> sIFResult = null;
//
//		// 上りデータマッピング情報の作成
//		//リクエストパラメータにメッセージ共通部を設定
//		sIFRequest = editInMsgCmn(param);
//
//		template = new CAANMsg(ECC0111D010CBSMsg.class.getName());
//
//		//テンプレート共通部のID,機能コード、検索条件を設定
//		mappingECC0111D010SCInMsg(template, param, efile);
//
//		//テンプレート共通部の固定的な項目を設定
//		editBasicCmn(param, template);
//
//		//条件を詰めたテンプレートクラスの配列を生成し、リクエストパラメータに設定
//		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
//
//		//SIFの呼び出し
//		sIFResult = scCall.run(sIFRequest, handle);
//
//		// SCからの戻り値からCAANMsgを取得する。
//		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
//
//		// リターンコード取得
//		Object return_code = sIFResult.get(JCMConstants.RET_CD_INT_KEY);
//
//		// エラー情報の設定
//		param = editErrorInfoECC0111D010(param, resultMsgs, (Integer)return_code, fixedText);
//
//		//エラー情報のマップを取得
//		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
//		if(errList == null)
//		{
//			errList = new ArrayList<Object>();
//		}
//		// コントロールマップに設定
//		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));
//
//		errChk(sIFResult);
//	}
//
//	/**
//	 * templateに対してECC0111D010SCの条件に関する部分を設定する
//	 * @param template 条件の設定先
//	 * @param param リクエストパラメータ
//	 * @param efile 電子ファイル
//	 * @throws RequestParameterException 
//	 */
//	private void mappingECC0111D010SCInMsg(
//			CAANMsg template,
//			IRequestParameterReadWrite param,
//			byte[] efile)
//	throws RequestParameterException
//	{
//		
//		//まずは全条件のNullマッピング
//		fillCAANMSGNullMapping(template, new ECC0111D010CBSMsg().getContents());
//		
//		//テンプレートID(SIFのID)
//		template.set(ECC0111D010CBSMsg.TEMPLATEID, TEMPLATE_ECC0111D010);
//
//		//機能コード
//		template.set(ECC0111D010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);
//
//		// ディレイド処理実施運用年月日時分秒
//		template.setNull(ECC0111D010CBSMsg.DLYD_TRN_JSSI_UNYO_DTM);		// NULL指定（即時実行）
//
//		// 依頼ジョブＩＤ
//		template.set(ECC0111D010CBSMsg.REQ_JOB_ID, JOB_ID_KAITORI_KIKI_SEND_DLYD);
//
//		// ディレイド処理依頼種別コード
//		template.setNull(ECC0111D010CBSMsg.DLYD_TRN_REQ_SBT_CD);
//
//		// ファイルコード
//		template.setNull(ECC0111D010CBSMsg.FILE_CD);
//
//		// 電子ファイル
//		template.set(ECC0111D010CBSMsg.EFILE, efile);
//
//		// ファイル削除年月日
//		template.set(ECC0111D010CBSMsg.FILE_DEL_YMD, JPCDateUtil.addDay(JPCBPCommon.getOpeDate(null), 1));
//	}
//
//	/**
//	 *<DL>
//	 *<DT>処理概要:ECC0111D010_ディレイド処理依頼登録
//	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
//	 *<DT>入力パラメータ説明:
//	 *<DD>特になし
//	 *<DT>入力パラメータ説明：
//	 *<DD>特になし
//	 *<DT>出力パラメータ説明:
//	 *<DD>特になし
//	 *</DL>
//	 * @param param (I) 業務データ取得・書込用I/F
//	 * @param templates (I) CAANMsgクラス配列
//	 * @param returnCode (I) リターンコード
//	 * @param fixedText (I) ユーザ任意文字列
//	 * @return 業務データ取得・書込用I/F
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private IRequestParameterReadWrite editErrorInfoECC0111D010(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
//	throws Throwable
//	{
//		CAANMsg template = templates[0];
//		int templateStatus = template.getInt(EKKA0020006CBSMsg.STATUS);
//		if (returnCode != 0)
//		{
//			templateStatus = 9000;
//		}
//		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
//		{
//			templateStatus = 0;
//		}
//		
//		int bpStatus = 0;
//		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
//		if (obj == null)
//		{
//			bpStatus = -1;
//		}
//		else
//		{
//			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
//		}
//
//		if (templateStatus > bpStatus)
//		{
//			// BPにサービスコンポーネントのステータスを設定する。
//			String formatStatus = String.format("%1$04d", templateStatus);
//			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
//			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
//			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
//		}
//		
//		HashMap inMap = null;
//		
//		// 作業項目領域
//		Map workMap = param.getMappingWorkArea();
//		if (workMap == null)
//		{
//			workMap = new HashMap();
//			param.setMappingWorkArea(workMap);
//		}
//		
//		/* ユーザデータ情報 */
//		inMap = (HashMap)param.getData(fixedText);
//		if (inMap == null)
//		{
//			inMap = new HashMap();
//			param.setData(fixedText, inMap);
//		}
//
//		// ディレイド処理実施運用年月日時分秒 のエラー情報返却
//		if (!template.isNull(ECC0111D010CBSMsg.DLYD_TRN_JSSI_UNYO_DTM_ERR)) {
//			if (!inMap.containsKey("dlyd_trn_jssi_unyo_dtm_err")) {
//				inMap.put("dlyd_trn_jssi_unyo_dtm_err", template.getString(ECC0111D010CBSMsg.DLYD_TRN_JSSI_UNYO_DTM_ERR));
//			}
//		}
//
//		// 依頼ジョブID のエラー情報返却
//		if (!template.isNull(ECC0111D010CBSMsg.REQ_JOB_ID_ERR)) {
//			if (!inMap.containsKey("req_job_id_err")) {
//				inMap.put("req_job_id_err", template.getString(ECC0111D010CBSMsg.REQ_JOB_ID_ERR));
//			}
//		}
//
//		// ディレイド処理依頼種別コード のエラー情報返却
//		if (!template.isNull(ECC0111D010CBSMsg.DLYD_TRN_REQ_SBT_CD_ERR)) {
//			if (!inMap.containsKey("dlyd_trn_req_sbt_cd_err")) {
//				inMap.put("dlyd_trn_req_sbt_cd_err", template.getString(ECC0111D010CBSMsg.DLYD_TRN_REQ_SBT_CD_ERR));
//			}
//		}
//
//		// ファイルコード のエラー情報返却
//		if (!template.isNull(ECC0111D010CBSMsg.FILE_CD_ERR)) {
//			if (!inMap.containsKey("file_cd_err")) {
//				inMap.put("file_cd_err", template.getString(ECC0111D010CBSMsg.FILE_CD_ERR));
//			}
//		}
//
//		// 電子ファイル のエラー情報返却
//		if (!template.isNull(ECC0111D010CBSMsg.EFILE_ERR)) {
//			if (!inMap.containsKey("efile_err")) {
//				inMap.put("efile_err", template.getString(ECC0111D010CBSMsg.EFILE_ERR));
//			}
//		}
//
//		// ファイル削除年月日 のエラー情報返却
//		if (!template.isNull(ECC0111D010CBSMsg.FILE_DEL_YMD_ERR)) {
//			if (!inMap.containsKey("file_del_ymd_err")) {
//				inMap.put("file_del_ymd_err", template.getString(ECC0111D010CBSMsg.FILE_DEL_YMD_ERR));
//			}
//		}
//
//		return param;
//	}
//
//	/**
//	 * オブジェクトに値が設定されているか判定します。
//	 * <br>
//	 * @param arg0 判定するオブジェクト
//	 * @return オブジェクトに値が設定されていない場合はtrue
//	 */
//	private boolean isNull(Object arg0) 
//	{
//		if (arg0 == null) 
//		{
//			return true;
//		}
//
//		return 0 == arg0.toString().length();
//	}
//	// OM-2013-0003018 強制解約されたネットの回復時に宅内連携処理でシステムエラー 2013/10/22 END
// OM-2016-0001720 買取機器情報送信（ディレイド用）バッチ廃止に伴い不要な処理を削除 2017/01/31 DEL END

	// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 START
	/**
	 * 機器提供サービス契約番号の機器が返品機器に存在するかどうか（受付済・取消済以外）を返します。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param kikiChgNo 機器変更番号
	 * @return 返品機器に存在する場合（受付済・取消済以外）はtrue、そうでない場合はfalse
	 * @throws Throwable 例外が発生した場合
	 */
	private boolean existsHmpinKiki(SessionHandle handle, IRequestParameterReadWrite param, String kktkSvcKeiNo, String kikiChgNo)
	throws Throwable
	{
		boolean existsHmpinKiki = false;

		// 返品機器取消一覧照会
		ArrayList<HashMap<String,Object>> eDK0301B060ResultList = new ArrayList<HashMap<String,Object>>();
		callEDK0301B060SC(param, handle, kktkSvcKeiNo, eDK0301B060ResultList);

		if (null != eDK0301B060ResultList)
		{
			// 返品機器番号の昇順なので最後から取得する
			for (int i = eDK0301B060ResultList.size() - 1; i >= 0; i--)
			{
				String hmpinKikiChgNo = (String)eDK0301B060ResultList.get(i).get(EDK0301B060CBSMsg1List.KIKI_CHG_NO);
				// 機器変更番号が一致する場合
				if (null != kikiChgNo && kikiChgNo.equals(hmpinKikiChgNo))
				{
					String hmpinKikiStat = (String)eDK0301B060ResultList.get(i).get(EDK0301B060CBSMsg1List.HMPIN_KIKI_STAT);
					// 返品機器ステータスが受付済、取消済のいずれでもない場合
					if (!JDKStrConst.HMPIN_KIKI_STAT_UKETSUKE.equals(hmpinKikiStat)
						&& !JDKStrConst.HMPIN_KIKI_STAT_TORIKESHI.equals(hmpinKikiStat))
					{
						existsHmpinKiki = true;
					}
					break;
				}
			}
		}

		return existsHmpinKiki;
	}

	/**
	 * 返品機器取消一覧照会サービスＩＦを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param resultHashList 返品機器取消一覧照会結果
	 * @throws Throwable 例外時にスローされます。
	 */
	@SuppressWarnings("unchecked")
	private void callEDK0301B060SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String kktkSvcKeiNo,
			ArrayList<HashMap<String, Object>> resultHashList)
			throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// リクエストパラメータ
		HashMap<String, Object> sIFRequest = null;
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;
		// 結果情報域
		Map<?, ?> sIFResult = null;

		// 上りデータマッピング情報の作成
		//リクエストパラメータにメッセージ共通部を設定
		sIFRequest = editInMsgCmn(param);

		// templateとしてEDK0301B060形式のクラスを生成
		template = new CAANMsg(EDK0301B060CBSMsg.class.getName());

		// テンプレート共通部のID,機能コード、検索条件を設定
		mappingEDK0301B060SCInMsg(template, param, kktkSvcKeiNo);

		// テンプレート共通部の固定的な項目を設定
		editBasicCmn(param, template);

		// 条件を詰めたテンプレートクラスの配列を生成し、リクエストパラメータに設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// SCからの戻り値からCAANMsgを取得する。
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// リターンコード取得
		Object return_code = sIFResult.get(JCMConstants.RET_CD_INT_KEY);

		// エラー情報の設定
		param = editErrorInfoEDK0301B060(param, resultMsgs, (Integer)return_code, fixedText);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));

		errChk(sIFResult);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EDK0301B060CBSMsg.EDK0301B060CBSMSG1LIST,resultMsgs));
	}

	/**
	 * templateに対してEDK0301B060SCの条件に関する部分を設定する
	 * <br>
	 * @param template 条件の設定先
	 * @param param リクエストパラメータ
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @throws RequestParameterException 
	 */
	private void mappingEDK0301B060SCInMsg(
			CAANMsg template,
			IRequestParameterReadWrite param,
			String kktkSvcKeiNo)
	throws RequestParameterException
	{
		// まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EDK0301B060CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EDK0301B060CBSMsg.TEMPLATEID, TEMPLATE_EDK0301B060);

		// 機能コード--サービスIFDBアクセス部品
		template.set(EDK0301B060CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿機器提供サービス契約番号
		template.set(EDK0301B060CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
	}

	/**
	 *<DL>
	 *<DT>処理概要:EDK0301B060_返品機器取消一覧照会サービス
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEDK0301B060(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EDK0301B060CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap inMap = null;

		// 作業項目領域
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}

		// ＫＥＹ＿機器提供サービス契約番号 のエラー情報返却
		if (!template.isNull(EDK0301B060CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("key_kktk_svc_kei_no_err"))
			{
				inMap.put("key_kktk_svc_kei_no_err", template.getString(EDK0301B060CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR));
			}
		}

		// ＫＥＹ＿返品機器ステータス のエラー情報返却
		if (!template.isNull(EDK0301B060CBSMsg.KEY_HMPIN_KIKI_STAT_ERR))
		{
			if (!inMap.containsKey("key_hmpin_kiki_stat_err"))
			{
				inMap.put("key_hmpin_kiki_stat_err", template.getString(EDK0301B060CBSMsg.KEY_HMPIN_KIKI_STAT_ERR));
			}
		}

		// ＫＥＹ＿機器変更番号 のエラー情報返却
		if (!template.isNull(EDK0301B060CBSMsg.KEY_KIKI_CHG_NO_ERR))
		{
			if (!inMap.containsKey("key_kiki_chg_no_err"))
			{
				inMap.put("key_kiki_chg_no_err", template.getString(EDK0301B060CBSMsg.KEY_KIKI_CHG_NO_ERR));
			}
		}

		return param;
	}
	// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 END
	

	// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 START
////ST-2014-0000023 20140123 START
//	
////暫定対応です！！宅内Sにサービス契約番号を連携する処理は他にも存在します！！
//
//	/**
//	 * 宅内Sにサービス契約番号を連携する。
//	 * 
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param fixedText ユーザ任意文字列
//	 * @param kidoCd 画面起動orバッチ起動
//	 * @return IRequestParameterReadWrite モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @throws Exception
//	 */
//	@SuppressWarnings("unchecked")
//	private IRequestParameterReadWrite updTkkkSvKeiNo2(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,String kidoCd) throws Throwable 
//	{
//		//ユーザデータ取得
//		HashMap inMap = (HashMap)param.getData(fixedText);
//		this.fixedText = fixedText;   // IT1-2012-0000928 2012/08/03 add
//		
//		// IN項目:サービス契約番号
//		String inParamSvcKeiNo = (String)(inMap).get(IN_PARAM_SVC_KEI_NO);
//		// IN項目:処理区分
//		String inParamSyoriKbn = (String)(inMap).get(IN_PARAM_SYORI_KBN);
////↓↓↓2013-05-09追加　巻３IKK-2013-0001055（ＰＴバグ：誤って未使用のＯＮＵを回復する）↓↓↓
//		// IN項目:異動区分
//		String inParamIdoDiv = (String)(inMap).get(IN_PARAM_IDO_DIV);
////↑↑↑2013-05-09追加　巻３IKK-2013-0001055（ＰＴバグ：誤って未使用のＯＮＵを回復する）↑↑↑
//		
//		
//		//ネットに対応する回線内訳　→　ONU機器の検索
//		ArrayList<HashMap<String,Object>> eKK0241B001ResultList = new ArrayList<HashMap<String,Object>>();
//		callEKK0241B001SC(param, handle, inParamSvcKeiNo, eKK0241B001ResultList);
//		
//		//ONUの製造番号があるか
//		String onuSeizoNo = null;
//		String onuModelCd = null;
//		// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 START
//		String kktkSvcKeiNo = null;
//		String kikiChgNo = null;
//		// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 END
//		for(int j=0; j<eKK0241B001ResultList.size(); j++)
//		{
//			String svcKeiKaisenUcwkNo = (String)eKK0241B001ResultList.get(j).get(EKK0241B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
//			ArrayList<HashMap<String,Object>> eKK0341B504ResultList = new ArrayList<HashMap<String,Object>>();
//			callEKK0341B504SC(param, handle, svcKeiKaisenUcwkNo, eKK0341B504ResultList);
//
//			HashMap<String, Object> eKK0341B504ResultListElement;
//			for(int i = 0 ; i < eKK0341B504ResultList.size() ; i++)
//			{
//				eKK0341B504ResultListElement = eKK0341B504ResultList.get(i);
////↓↓↓2013-05-09追加　巻３IKK-2013-0001055（誤って解約済ＯＮＵを特定して宅内Ｓに連携してしまう）↓↓↓
//				//未使用の機器提供サービス契約は空送りする
//				String kktkSvcKeiStat = (null != eKK0341B504ResultListElement ?
//						(String)eKK0341B504ResultListElement.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_STAT) :
//						JKKSvcConst.SVC_KEI_STAT_910);
//				if (JKKSvcConst.SVC_KEI_STAT_910.equals(kktkSvcKeiStat) || JKKSvcConst.SVC_KEI_STAT_920.equals(kktkSvcKeiStat))
//				{
//					continue;
//				}
////↑↑↑2013-05-09追加　巻３IKK-2013-0001055（誤って解約済ＯＮＵを特定して宅内Ｓに連携してしまう）↑↑↑
//				if(//eKK0341B504ResultListElement != null &&
//					"R0".equals(eKK0341B504ResultListElement.get(EKK0341B504CBSMsg1List.TAKNKIKI_SBT_CD)))
//				{
//					onuSeizoNo = (String)eKK0341B504ResultListElement.get(EKK0341B504CBSMsg1List.KIKI_SEIZO_NO);
//					onuModelCd = (String)eKK0341B504ResultListElement.get(EKK0341B504CBSMsg1List.TAKNKIKI_MODEL_CD);
//					// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 START
//					kktkSvcKeiNo = (String)eKK0341B504ResultListElement.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_NO);
//					kikiChgNo = (String)eKK0341B504ResultListElement.get(EKK0341B504CBSMsg1List.KIKI_CHG_NO);
//					// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 END
//					break;
//				}
//			}
//			if(onuSeizoNo != null)
//			{
//				break;
//			}
//		}
//		
//		if(onuSeizoNo == null || "".equals(onuSeizoNo))
//		{
//			//製造番号が無いので処理終了（サービス契約番号の更新なし）
////			param.setControlMapData(SCControlMapKeys.RETURN_CODE, STAT_NORMAL);
//			return param;
//		}
//		
//// 2012-11-14 IT1-2012-0001692 ADD_START
//		// 宅内機器型式コードで宅内機器型式より製造番号有無を取得する
//		ArrayList<HashMap<String,Object>> eZM0411A010ResultList = new ArrayList<HashMap<String,Object>>();
//		callEZM0411A010SC(param, handle, onuModelCd, eZM0411A010ResultList);
//		
//		HashMap<String,Object> eZM0411A010Result = new HashMap<String, Object>();
//		
//		String seizoNoUm = "";
//		
//		// 取得できた場合は製造番号有無を取得
//		if (eZM0411A010ResultList != null && eZM0411A010ResultList.size() > 0)
//		{
//			eZM0411A010Result = eZM0411A010ResultList.get(0);
//			
//			if (eZM0411A010Result != null)
//			{
//				// 製造番号有無
//				seizoNoUm = (String)eZM0411A010Result.get(EZM0411A010CBSMsg1List.SEIZO_NO_UM);
//			}
//		}
//		
//		// 製造番号有無が空白、または、製造番号有無が「0：無」の場合は処理終了
//		if (JKKCommonUtil.isNull(seizoNoUm) || JKKSvcConst.UM_NASI.equals(seizoNoUm))
//		{
//			return param;
//		}
//// 2012-11-14 IT1-2012-0001692 ADD_END
//		
//		//同一場所のサービスの検索
//		ArrayList<HashMap<String,Object>> eKK0081B009ResultList = new ArrayList<HashMap<String,Object>>();
//		callEKK0081B009SC(param, handle, inParamSvcKeiNo, eKK0081B009ResultList);
//		
//		//同一場所の電話サービスがあるか
//		String telSvcKeiNo = null;
//		String telSvcKeiStat = null;
//		HashMap<String, Object> eKK0081B009ResultListElement;
//		for(int i = 0 ; i < eKK0081B009ResultList.size() ; i++)
//		{
//			eKK0081B009ResultListElement = eKK0081B009ResultList.get(i);
//			if(eKK0081B009ResultListElement != null 
//					&& SVC_CD_TEL.equals(eKK0081B009ResultListElement.get(EKK0081B009CBSMsg1List.SVC_CD)))
//			{
//				telSvcKeiNo = (String)eKK0081B009ResultListElement.get(EKK0081B009CBSMsg1List.SVC_KEI_NO);
//				telSvcKeiStat = (String)eKK0081B009ResultListElement.get(EKK0081B009CBSMsg1List.SVC_KEI_STAT);
//				break;
//			}
//		}
//		
//		if(telSvcKeiNo == null || null == telSvcKeiStat
//				|| JKKSvcConst.SVC_KEI_STAT_010.equals(telSvcKeiStat)
////↓↓↓2013-05-09変更　巻３IKK-2013-0001055（セットのeo光電話が解約済でもeo光ネットが回復されたら宅内連携すべし）↓↓↓
////				|| JKKSvcConst.SVC_KEI_STAT_910.equals(telSvcKeiStat)
////				|| JKKSvcConst.SVC_KEI_STAT_920.equals(telSvcKeiStat)
//				|| ((JKKSvcConst.SVC_KEI_STAT_910.equals(telSvcKeiStat) || JKKSvcConst.SVC_KEI_STAT_920.equals(telSvcKeiStat))
//					&& !JKKSvcConst.IDO_DIV_KAIHK.equals(inParamIdoDiv))
//		)
////↑↑↑2013-05-09変更　巻３IKK-2013-0001055（セットのeo光電話が解約済でもeo光ネットが回復されたら宅内連携すべし）↑↑↑
//		{
//			//同一場所の電話サービスが無いので処理終了（サービス契約番号の更新なし）
////			param.setControlMapData(SCControlMapKeys.RETURN_CODE, STAT_NORMAL);
//			return param;
//		}
//		
//		// ST1-2012-0000212 2012/07/31 start
//		//宅内機器基本Ｔ更新日付を取得する
//		ArrayList<HashMap<String,Object>> eKKA0020003ResultList = new ArrayList<HashMap<String,Object>>();
//		callEKKA0020003SC(param, handle, onuModelCd, onuSeizoNo, eKKA0020003ResultList);
//		if (eKKA0020003ResultList == null || eKKA0020003ResultList.size() == 0)
//		{ // レコードが存在しない場合例外をスロー
//			throw new CCException("宅内機器基本Ｔ更新日付を取得できなかった", new Exception());
//		}
//		String kihontUpdDttm = (String)((HashMap<String, Object>)eKKA0020003ResultList.get(0)).get(EKKA0020003CBSMsg2List.KIHONT_UPD_DTTM);
//		// ST1-2012-0000212 2012/07/31 end
//		
//		// OM-2013-0003438 ONUが倉庫に存在する場合にネットを解約すると宅内連携処理でシステムエラー 2013/11/05 START
//		String taknkikiStat = (String)((HashMap<String, Object>)eKKA0020003ResultList.get(0)).get(EKKA0020003CBSMsg2List.TAKNKIKI_STAT);
//		// 宅内機器ステータスが保管、残置、買取、破棄のいずれかの場合
//		if (TKNI_TAKNKIKI_STAT_HOKAN.equals(taknkikiStat) || TKNI_TAKNKIKI_STAT_ZANCHI.equals(taknkikiStat)
//			|| TKNI_TAKNKIKI_STAT_KAITORI.equals(taknkikiStat) || TKNI_TAKNKIKI_STAT_ABDMNT.equals(taknkikiStat))
//		{
//			// サービス契約番号更新は行わない
//			return param;
//		}
//		// OM-2013-0003438 ONUが倉庫に存在する場合にネットを解約すると宅内連携処理でシステムエラー 2013/11/05 END
//		// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 START
//		// 返品機器に存在する場合（受付済・取消済以外）
//		if (existsHmpinKiki(handle, param, kktkSvcKeiNo, kikiChgNo))
//		{
//			// サービス契約番号更新は行わない
//			return param;
//		}
//		// OM-2013-0004263 倉庫返却済のONUに対して宅内機器ステータス更新「回復」が連携される 2013/11/26 END
//
//		//宅内機器のサービス契約番号更新
//		String renkeiSvcKeiNo;
//		if(SYORI_KBN_1.equals(inParamSyoriKbn))
//		{
//			renkeiSvcKeiNo = inParamSvcKeiNo;
//		}
//		else
//		{
//			renkeiSvcKeiNo = telSvcKeiNo;
//		}
//		
//		// ANK-0342-00-00 2012/08/03 start
//		if(JKKDslRun.KIDO_CD_ON.equals(kidoCd))
//		{//画面起動時の処理
//		// ANK-0342-00-00 2012/08/03 end
//			callEKKA0020006SC(param, handle, onuModelCd, onuSeizoNo, renkeiSvcKeiNo, kihontUpdDttm);
//		
//		// ANK-0342-00-00 2012/08/03 start
//		}
//		else
//		{//バッチ起動のときの処理
//			HashMap<String, Object> kksv044601CC = null;
//			kksv044601CC = (HashMap<String, Object>)param.getData(KKSV044601CC);
//
//			kksv044601CC.put(ZUIJI_TAKNKIKI_MODEL_CD, onuModelCd);
//			kksv044601CC.put(ZUIJI_KIKI_SEIZO_NO, onuSeizoNo);
//			kksv044601CC.put(ZUIJI_SVC_KEI_NO, renkeiSvcKeiNo);
//			//宅内サービス契約番号更新情報(月次)追加
//			param.setData(KKSV044601CC, kksv044601CC);
//		}
//		// ANK-0342-00-00 2012/08/03 end
//		
////		param.setControlMapData(SCControlMapKeys.RETURN_CODE, STAT_NORMAL);
//		return param;
//	}
////ST-2014-0000023 20140123 END
	// IT1-2014-0000046 回復時に多機能ルーターが宅内連携できていない 2014/01/29 END
	// OM-2016-0001720 2017/01/31 ADD START
	/**
	 * 宅内へ連携するサービス契約番号を取得します。<BR>
	 * 
	 * @param shoriKbn 入力パラメータの処理区分
	 * @param svcKeiNo 入力パラメータのサービス契約番号
	 * @param eKK0081B009ResultList 同一場所サービス契約情報照会結果
	 * @return 宅内に連携するサービス契約番号。連携が不要な場合はnullを返します。
	 * @throws Throwable 例外が発生した場合 
	 */
	private String getRenkeiSvcKeiNo(
			String shoriKbn
			,String svcKeiNo
			,ArrayList<HashMap<String,Object>> eKK0081B009ResultList
			
	) throws Throwable
	{
		JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】getRenkeiSvcKeiNo START 処理区分:" + shoriKbn + " サービス契約番号" + svcKeiNo);
		
		// 宅内に連携するサービス契約番号（戻り値）
		String renkeiSvckeiNo = null;
		
		// 同一回線の別契約（ネットの異動時は電話、電話の異動時はネット）が存在する場合は true
		boolean otherSvcKeiExists = false;
		
		// 同一回線の別契約の有効なステータスのサービス契約番号
		String otherSvcKeiNo = null;
		
		// 同一回線の別契約の料金グループ
		ArrayList<String> otherPrcGrpCdList = new ArrayList<String>();
		
		if (SYORI_KBN_1.equals(shoriKbn) || SYORI_KBN_2.equals(shoriKbn))
		{
			// ネットの異動の場合、電話の料金グループを設定
			otherPrcGrpCdList.add(JKKStrConst.CD00133_10);
		}
		else if (SYORI_KBN_3.equals(shoriKbn))
		{
			// 電話の異動の場合、ネットの料金グループを設定
			otherPrcGrpCdList.add(JKKStrConst.CD00133_02);
			otherPrcGrpCdList.add(JKKStrConst.CD00133_03);
			otherPrcGrpCdList.add(JKKStrConst.CD00133_04);
		}
		
		if (null != eKK0081B009ResultList)
		{
			for (HashMap<String, Object> eKK0081B009ResultListElement : eKK0081B009ResultList)
			{
				if (null != eKK0081B009ResultListElement
						&& otherPrcGrpCdList.contains(eKK0081B009ResultListElement.get(EKK0081B009CBSMsg1List.PRC_GRP_CD)))
				{
					// 別契約が存在したらtrue
					otherSvcKeiExists = true;
					
					String otherSvcKeiStat = (String)eKK0081B009ResultListElement.get(EKK0081B009CBSMsg1List.SVC_KEI_STAT);
					
					// 照査済 ≦ サービス契約ステータス ＜ 解約済
					if (JKKStrConst.CD00037_SHOSA_ZUMI.compareTo(otherSvcKeiStat) <= 0
							&& 0 < JKKStrConst.CD00037_DSL_ZM.compareTo(otherSvcKeiStat))
					{
						otherSvcKeiNo = (String)eKK0081B009ResultListElement.get(EKK0081B009CBSMsg1List.SVC_KEI_NO);
						break;
					}
				}
			}
		}
		
		JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】getRenkeiSvcKeiNo 同一回線の別契約が存在:" + otherSvcKeiExists);
		JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】getRenkeiSvcKeiNo 同一回線の有効な別サービス契約:" + otherSvcKeiNo);

		// 同一回線の別契約が存在する場合
		if (otherSvcKeiExists)
		{
			// ネット有効系の場合
			if(SYORI_KBN_1.equals(shoriKbn))
			{
				// 無条件でネットのサービス契約番号を連携
				renkeiSvckeiNo = svcKeiNo;
			}
			// ネット無効系の場合
			else if (SYORI_KBN_2.equals(shoriKbn))
			{
				// 有効なステータスの電話契約が存在する場合、電話のサービス契約番号を連携
				if (!JKKStringUtil.isNullBlank(otherSvcKeiNo))
				{
					renkeiSvckeiNo = otherSvcKeiNo;
				}
			}
			// 電話有効系の場合
			else if (SYORI_KBN_3.equals(shoriKbn))
			{
				// 有効なステータスのネット契約が存在しない場合、電話のサービス契約番号を連携
				if (JKKStringUtil.isNullBlank(otherSvcKeiNo))
				{
					renkeiSvckeiNo = svcKeiNo;
				}
			}
		}
		
		JKKBpCommon.printBpDebugLog(this.getClass(), "【宅内機器サービス契約番号更新CC】getRenkeiSvcKeiNo END 連携サービス契約番号(戻り値):" + renkeiSvckeiNo);
		
		return renkeiSvckeiNo;
	}
	
	/**
	 * サービス契約番号更新が可能な宅内機器ステータスか判定を行います。
	 * <br>
	 * @param taknkikiStat 宅内機器ステータス
	 * @return 更新可能な場合は true、そうでない場合は false
	 */
	public static boolean isTrgtTaknkikiStat(String taknkikiStat)
	{
		// 更新対象の宅内機器ステータスを判定します
		if (
				JKKStrConst.CD01704_HAISO_CHU.equals(taknkikiStat)					// 配送中
				|| JKKStrConst.CD01704_YOTAKU.equals(taknkikiStat)					// 預託
				|| JKKStrConst.CD01704_STC.equals(taknkikiStat)						// 設置
				|| JKKStrConst.CD01704_CUST_AZKRI.equals(taknkikiStat)				// お客様預り
				|| JKKStrConst.CD01704_HENSO_CHU.equals(taknkikiStat)				// 返送中
				|| JKKStrConst.CD01704_HMPIN_YOTAKU.equals(taknkikiStat)			// 返品預託
			)
		{
			return true;
		}
		
		return false;
	}
	// OM-2016-0001720 2017/01/31 ADD END
}
