/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKOrsjgsUseStpRunCC
*	ソースファイル名：JKKOrsjgsUseStpRunCC.java
*	作成者			：FJ)クウン
*	日付			：2018年03月26日
*＜機能概要＞
*	卸先事業者サービス契約利用停止を実施する。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v37.00.00   2018/03/26   FJ）クウン 【ANK-3366-00-00】eo光設備卸対応
*   v61.00.00   2023/04/11   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.Iterator;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKHakkoSODConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKKeiIdoKhCheckConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKSvcConst;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.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.SCCallException;
import com.fujitsu.futurity.bp.x21.sc.exception.SCException;
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.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.ECH0911A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECH0911A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
//import eo.ejb.cbs.cbsmsg.EKK0081B004CBSMsg;
//import eo.ejb.cbs.cbsmsg.EKK0081B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B009CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B009CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B546CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B546CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081C050CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161B004CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161C040CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321B005CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321B005CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B022CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B022CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341C120CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351C040CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0401C040CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0861B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2811A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2811A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2811B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2811B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2811C080CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0011B018CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0011B018CBSMsg1List;

/**
 * 卸先事業者利用停止を実施する。<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JKKOrsjgsUseStpRunCC extends AbstractCommonComponent
{	
	/*********** クラスフィールド ******************/
	/** 運用日付 */
	private String oPE_DATE = "";
	/** 処理結果フラグ **/
	private boolean wk_Fuka_flg = false;

	/** ----- リクエスト・レスポンス パラメータ ----- **/
	/** 請求契約番号 **/
	private static final String SEIKY_KEI_NO = "seiky_kei_no";
	/** サービス契約番号 */
	private static final String SVC_KEI_NO = "svc_kei_no";
	/** サービス契約利用停止実施フラグ */
	private static final String SVC_KEI_USE_STP_EXEC_FLG = "svc_kei_use_stp_exec_flg";

	/** ----- 利用停止 ----- **/
	/** 利用停止不可サービス契約番号 */
	private static final String FUKA_SVC_KEI_NO = "svc_kei_no";
	/** 利用停止不可サービス名 */
	private static final String FUKA_SVC_KEI_NAME = "svc_kei_name";
	/** 利用停止不可料金グループ名 */
	private static final String FUKA_PRC_GRP_NAME = "prc_grp_name";
	/** 利用停止不可理由 */
	private static final String FUKA_RESON = "fuka_reson";
	/** 利用停止不可理由(依頼取消) */
	private static final String FUKA_RESON_RTN_IRAI_TORI = "01";
	/** 利用停止不可理由(契約手続中) */
	private static final String FUKA_RESON_RTN_KEITK_CHU = "02";
	/** 利用停止不可理由(eo光テレビ（KCN)) */
	private static final String FUKA_RESON_RTN_TV_KCN = "03";

	/** 進捗ステータス(利用停止完了) */
	private static final String PRG_STAT_USESTP_FIN = "2201";
	/** 異動区分(利用停止) */
	private static final String IDO_DIV_USESTP = "00062";
	/** 異動理由コード(その他) */
	private static final String IDO_RSN_CD_USESTP_OTHER = "56";
	/** サービス停止理由コード：XX(利用停止？) */
	private static final String SVC_STP_RSN_CD_USESTP = "01";

	/** ----- サービス契約ステータス値 ----- */
	/** 受付済 */
	private static final String SVC_KEI_STAT_UKE = "010";
	/** 照査済 */
	private static final String SVC_KEI_STAT_SHOSA = "020";
	/** 締結済 */
	private static final String SVC_KEI_STAT_TEIK = "030";
	/** サービス提供中 */
	private static final String SVC_KEI_STAT_TKC = "100";
	/** 休止・中断中 */
	private static final String SVC_KEI_STAT_PAUSE = "210";
	/** 停止中 */
	private static final String SVC_KEI_STAT_STP = "220";
	/** 解約済 */
	private static final String SVC_KEI_STAT_DSL = "910";
	/** キャンセル済 */
	private static final String SVC_KEI_STAT_CNCL = "920";
	
	/** ----- テンプレートID ----- **/
	/** お客様一意照会 */
	private static final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";	
	/** 卸先事業者一意照会 */
	private static final String TEMPLATE_ID_ECH0911A010 = "ECH0911A010";
	/** サービス契約一意照会 */
	private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";
	/** 課金先一覧照会（請求契約番号／サービス契約番号） **/
	private static final String TEMPLATE_ID_EKK0321B002 = "EKK0321B002";

	/** 課金先一覧照会（サービス契約番号） **/
	private static final String TEMPLATE_ID_EKK0321B005 = "EKK0321B005";

	
	/** 課金先一意照会 **/
	private static final String TEMPLATE_ID_EKK0321A010 = "EKK0321A010";
	/** サービス契約内訳一意照会 **/
	private static final String TEMPLATE_ID_EKK0161A010 = "EKK0161A010";
	/** サービス契約内訳一覧照会 **/
	private static final String TEMPLATE_ID_EKK0161B004 = "EKK0161B004";
	/** オプションサービス契約一意照会 **/
	private static final String TEMPLATE_ID_EKK0351A010 = "EKK0351A010";
	/** サブオプションサービス契約一意照会 **/
	private static final String TEMPLATE_ID_EKK0401A010 = "EKK0401A010";
	/** 機器提供サービス契約一意照会 **/
	private static final String TEMPLATE_ID_EKK0341A010 = "EKK0341A010";
	/** サービス契約停止 **/
	private static final String TEMPLATE_ID_EKK0081C050 = "EKK0081C050";
	/** サービス契約内訳停止 **/
	private static final String TEMPLATE_ID_EKK0161C040 = "EKK0161C040";
	/** オプションサービス契約停止 **/
	private static final String TEMPLATE_ID_EKK0351C040 = "EKK0351C040";
	/** サブオプションサービス契約停止 **/
	private static final String TEMPLATE_ID_EKK0401C040 = "EKK0401C040";
	/** 機器提供サービス契約停止 **/
	private static final String TEMPLATE_ID_EKK0341C120 = "EKK0341C120";
	/** 進捗登録 **/
	private static final String TEMPLATE_ID_EKK1091D010 = "EKK1091D010";
	/** マンション情報一覧照会（サービス契約番号） **/
	private static final String TEMPLATE_ID_EKK0861B002 = "EKK0861B002";
	/** 番ポ工事一覧照会（番ポ申込書タイプ） */
	private static final String TEMPLATE_ID_ETU0011B018 = "ETU0011B018";
	/**  */
	private static final String TEMPLATE_ID_EKK0251B001 = "EKK0251B001";
	/**　同一利用場所サービス契約一覧照会 */
	private static final String TEMPLATE_ID_EKK0081B009 = "EKK0081B009";
	/** 機器提供サービス契約一覧照会 */
	private static final String TEMPLATE_ID_EKK0341B022 = "EKK0341B022";
	/** 機器オプションサービス契約一覧照会（機器提供ＳＶ）*/
	private static final String TEMPLATE_ID_EKK2811B010 = "EKK2811B010";
	/** 機器オプションサービス契約一意照会 */
	private static final String TEMPLATE_ID_EKK2811A010 = "EKK2811A010";
	/** 機器オプションサービス契約停止 */
	private static final String TEMPLATE_ID_EKK2811C080 = "EKK2811C080";
//	/** サービス契約一覧照会（SYSID）2 */
//	private static final String TEMPLATE_ID_EKK0081B004 = "EKK0081B004";
	
	/** 卸先事業者利用停止指示書登録情報一覧照会（11お客さまの基本情報） */
	private static final String TEMPLATE_ID_EKK0081B546 = "EKK0081B546";

	/** ----- コード情報 ----- **/
	/** 料金グループ:eo光電話 */
	private static final String PRC_GRP_CD_TEL = "10";
	/** 料金グループ:eo光テレビ（ＫＣＮ） */
	private static final String PRC_GRP_CD_TV_KCN = "12";
	/** 料金グループ:マンション・オーナー */
	private static final String PRC_GRP_CD_MANSION_OYA = "99";
	/** 料金グループ:ｍｉｎｅｏ */
	private static final String PRC_GRP_CD_MINEO = "51";
	/** 料金グループ:ｅｏ電気 */
	private static final String PRC_GRP_CD_EODENKI = "17";
	/** サービスコード：電話 */
	private static final String SVC_CD_TEL = "02";
	/** 親契約識別コード：サービス契約 */
	private static final String OYA_KEI_SKBT_CD_SVC_KEI  = "01";
	/** 親契約識別コード：サービス契約回線内訳 */
	private static final String OYA_KEI_SKBT_CD_KAISEN   = "02";
	/** 親契約識別コード：サービス契約内訳 */
	private static final String OYA_KEI_SKBT_CD_SVC_UCWK = "03";
	/** String_2 */
	private static final String STRING_2 = "2";
	/** イーモバイルSOD発行対象区分：本体＋内訳 */
	private static final int EMOBILE_SOD_KBN_EM_UCWK = 1;
	/** イーモバイルSOD発行対象区分：本体のみ */
	private static final int EMOBILE_SOD_KBN_EM = 2;
	/** イーモバイルSOD発行対象区分：SOD発行なし */
	private static final int EMOBILE_SOD_KBN_NONE = 3;
	/** イーモバイルSOD発行対象区分：内訳のみ */
	private static final int EMOBILE_SOD_KBN_UCWK = 4;
	/** 機器提供サービスコード (多機能ルータ) */
	private static final String KKTK_SVC_CD_MFR = "C024";
	// ANK-4315-00-00 ADD START
	/** 機器提供サービスコード (ホームゲートウェイ) */
	private static final String KKTK_SVC_CD_HGW = "C025";
	// ANK-4315-00-00 ADD END
	/** 料金グループコード（ホーム） */
	private static final String PCRS_GRP_HOME = "02";
	/** 料金グループコード（メゾン） */
	private static final String PCRS_GRP_MAISON = "03";
	/** 料金グループコード（マンション） */
	private static final String PCRS_GRP_MANSION = "04";


	/**
	 * 利用停止メソッド
	 * @param	handle		セッションハンドル
	 * @param	param		リクエストパラメータ
	 * @param	fixedText	サービスメッセージ
	 * @return				リクエストパラメータ
	 * @throws	Throwable	例外時にスローします
	 */
	public IRequestParameterReadWrite orsjgsRunUseStp( SessionHandle handle, 
			IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// ステータスコード
		int statusCode = 0;

		// 運用日の取得
		oPE_DATE = JCCBPCommon.getOpeDate(null);

		// リクエストパラメータ情報取得
		HashMap<String, Object> use_stp_map = (HashMap<String, Object>)param.getData(fixedText);

		// 利用停止不可対象者リスト生成
		ArrayList<HashMap<String, Object>> fukaUseStpTrgtLst = new ArrayList<HashMap<String, Object>>();

		wk_Fuka_flg = false;

		try
		{
			if (use_stp_map.containsKey(JKKStrConst.SERVICE_ID)  
					&& JKKStrConst.SERVICE_ID_WSALE021.equals((String)use_stp_map.get(JKKStrConst.SERVICE_ID)))
			{
				// 卸先事業者利用停止チェック
				String checkRslt = this.orsjgsUseStpKanrencheck(handle, param, fixedText);
				if(!JKKStrConst.CHECK_OK.equals(checkRslt))
				{
					return param;
				}
			}

			// パラメータ
			HashMap<String, Object> paramHash = new HashMap<String, Object>();

			// サービス契約番号
			paramHash.put(SVC_KEI_NO, (String)use_stp_map.get(JKKStrConst.SVC_KEI_NO));

			// メイン処理の実行
			statusCode = runUseStpProc(handle
									, param
									, paramHash
									, fixedText
									, fukaUseStpTrgtLst);

			// リターンコードの設定
			String formatStatus = String.format("%1$04d", statusCode);
			
			// 処理結果設定
			if(wk_Fuka_flg)
			{
				use_stp_map.put(JKKStrConst.SYORI_RESULT, JKKStrConst.SYORI_RESULT_FUKA);
				use_stp_map.put(JKKStrConst.RETURN_CODE, JKKStrConst.RETURN_CD_9000);
				use_stp_map.put(JKKStrConst.RETURN_MESSAGE, JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR);
			}
			else
			{
				use_stp_map.put(JKKStrConst.SYORI_RESULT, JKKStrConst.SYORI_RESULT_OK);
				if(!JKKStrConst.CHECK_OK.equals(formatStatus))
				{
					use_stp_map.put(JKKStrConst.RETURN_CODE, JKKStrConst.RETURN_CD_9000);
					use_stp_map.put(JKKStrConst.RETURN_MESSAGE, JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR);
				}
				else
				{
					use_stp_map.put(JKKStrConst.RETURN_CODE, JKKStrConst.CHECK_OK);
					use_stp_map.put(JKKStrConst.RETURN_MESSAGE, null);
				}
			}
			// 処理結果書き戻し
			param.setData(fixedText, use_stp_map);
		}
		catch(Exception e)
		{
			use_stp_map.put(JKKStrConst.RETURN_CODE, JKKStrConst.RETURN_CD_9000);
			use_stp_map.put(JKKStrConst.RETURN_MESSAGE, JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR);
			param.setData(fixedText, use_stp_map);
		}
		// 処理終了
		return param;
	}
	
	/**
	 * 利用停止メイン処理
	 * @param	handle				セッションマネージャなどを持ったハンドル
	 * @param	param				モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam		リクエストパラメータ
	 * @param	fixedText			ユーザ任意文字列
	 * @param	fukaUseStpTrgtLst	利用停止不可対象リスト
	 * @return						リターンコード
	 * @throws	Throwable
	 */
	private int runUseStpProc(SessionHandle handle
								, IRequestParameterReadWrite param
								, HashMap<String, Object> requestParam
								, String fixedText
								, ArrayList<HashMap<String, Object>> fukaUseStpTrgtLst) throws Throwable
	{
		// ステータスコード
		int statusCode = 0;

		// S-IF結果格納用
		HashMap<String, Object> resultHash =  new HashMap<String, Object>();

		// サービス契約利用停止実施フラグ
		requestParam.put(SVC_KEI_USE_STP_EXEC_FLG, (Boolean)false);

		// ＳＯＤ発行用
		ArrayList<HashMap<String, Object>> hakkoSODDataList = new ArrayList<HashMap<String,Object>>();

		// 利用停止対象サービス契約
		String prm_svc_kei_no = (String)requestParam.get(SVC_KEI_NO);

		// サービス契約一意照会
		statusCode = callEKK0081A010SC(param, handle, requestParam, resultHash, prm_svc_kei_no);
		if(statusCode != 0)
		{
			return statusCode;
		}

		// サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		// 料金グループコード取得
		String prc_grp_cd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);

		// 料金グループコードが「マンション・オーナー」の場合
		// 処理なし
		if (PRC_GRP_CD_MANSION_OYA.equals(prc_grp_cd))
		{
			return 0;
		}

		//  料金グループコードが「ｍｉｎｅｏ」の場合
		// 処理なし
		if(PRC_GRP_CD_MINEO.equals(prc_grp_cd))
		{
			return 0;
		}
		//  料金グループコードが「ｅｏ電気」の場合
		// 処理なし
		if(PRC_GRP_CD_EODENKI.equals(prc_grp_cd))
		{
			return 0;
		}

		// 利用停止可能判定処理（利用停止不可ありの場合、終了）
		if(useStpFukaCheck(fukaUseStpTrgtLst, requestParam, resultHash))
		{
			wk_Fuka_flg = true;
			return 0;
		}

		// マンション情報取得
		statusCode = callEKK0861B002SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}
		
		// 請求契約番号取得
		// 課金先一覧照会（サービス契約番号）
		statusCode = callEKK0321B005SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}
		ArrayList<HashMap<String, Object>> eKK0321B005HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0321B005);
		// 課金先一覧照会結果判定処理
		// 0件の場合、終了
		if(eKK0321B005HashList.size() == 0)
		{
			return 0;
		}
		// サービス契約番号が設定されるため、課金先一覧情報の1件目を取得
		HashMap<String, Object> eKK0321B005Hash = eKK0321B005HashList.get(0);
		// 請求契約番号を取得
		String seikyu_kei_no = (String)eKK0321B005Hash.get(EKK0321B005CBSMsg1List.SEIKY_KEI_NO);
		
		
		// 課金先一覧照会（請求契約番号／サービス契約番号）
		statusCode = callEKK0321B002SC(param, handle, requestParam, resultHash, seikyu_kei_no);
		if(statusCode != 0)
		{
			return statusCode;
		}

		ArrayList<HashMap<String, Object>> eKK0321B002HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0321B002);

		// 課金先一覧照会結果判定処理
		// 0件の場合、終了
		if(eKK0321B002HashList.size() == 0)
		{
			return 0;
		}

		// 課金先の取得分だけループ
		for(int i = 0 ; i < eKK0321B002HashList.size() ; i++)
		{
			HashMap<String, Object> eKK0321B002Hash = eKK0321B002HashList.get(i);

			// 課金先一意照会
			statusCode = callEKK0321A010SC(param, handle, eKK0321B002Hash, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}

			// 課金先一意照会結果取得
			HashMap<String, Object> eKK0321A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0321A010);

			// 課金先一意照会結果が存在しない場合
			if(eKK0321A010Hash == null)
			{
				continue;
			}

			// サービス契約番号
			String svc_kei_no      = (String)eKK0321A010Hash.get(EKK0321A010CBSMsg1List.SVC_KEI_NO);
			// 機器提供サービス契約番号
			String kktk_svc_kei_no = (String)eKK0321A010Hash.get(EKK0321A010CBSMsg1List.KKTK_SVC_KEI_NO);
			// オプションサービス契約番号
			String op_svc_kei_no   = (String)eKK0321A010Hash.get(EKK0321A010CBSMsg1List.OP_SVC_KEI_NO);
			// サブオプションサービス契約番号
			String sbop_svc_kei_no = (String)eKK0321A010Hash.get(EKK0321A010CBSMsg1List.SBOP_SVC_KEI_NO);

			// ***********************************************
			// サービス契約番号有りの場合
			// ***********************************************
			if(svc_kei_no != null && !"".equals(svc_kei_no))
			{
				// サービス契約 利用停止処理
				statusCode = svcKei_UseStp(handle
										, param
										, requestParam
										, resultHash
										, hakkoSODDataList
										, prm_svc_kei_no);

				// 結果確認
				if(statusCode != 0)
				{
					return statusCode;
				}
			}

			// ***********************************************
			// オプションサービス契約番号有りの場合
			// ***********************************************
			if(
					(op_svc_kei_no != null && !"".equals(op_svc_kei_no))
					&& (sbop_svc_kei_no == null || "".equals(sbop_svc_kei_no))
			)
			{
				// オプションサービス契約 利用停止処理
				statusCode = opSvcKei_UseStp(handle
											, param
											, requestParam
											, resultHash
											, prm_svc_kei_no);

				// 結果確認
				if(statusCode != 0)
				{
					return statusCode;
				}
			}

			// ***********************************************
			// サブオプションサービス契約番号有りの場合
			// ***********************************************
			if(sbop_svc_kei_no != null && !"".equals(sbop_svc_kei_no))
			{
				// サブオプションサービス契約 利用停止処理
				statusCode = sbOpSvcKei_UseStp(handle
											, param
											, requestParam
											, resultHash
											, prm_svc_kei_no);

				// 結果確認
				if(statusCode != 0)
				{
					return statusCode;
				}
			}

			// ***********************************************
			// 機器提供サービス契約番号有りの場合
			// ***********************************************
			if(kktk_svc_kei_no != null && !"".equals(kktk_svc_kei_no))
			{
				// 機器提供サービス契約 利用停止処理
				statusCode = kktkSvcKei_UseStp(handle, param, requestParam, resultHash, prm_svc_kei_no, true);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
		}
		
		// サービス契約一意照会結果がNULLでなく、かつ電話サービスの場合
		if (eKK0081A010Hash != null && SVC_CD_TEL.equals(eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD)))
		{
			// eo光ネット側に紐づいているONUもしくはVDSLモデム等を利用停止する
			statusCode = kktkSvcKei_UseStp2(handle, param, requestParam, resultHash, eKK0081A010Hash, prm_svc_kei_no);
			if(statusCode != 0)
			{
				return statusCode;
			}
		}

		// 進捗登録
		statusCode = callEKK1091D010SC(param, handle, requestParam, resultHash, prm_svc_kei_no);
		if(statusCode != 0)
		{
			return statusCode;
		}
		
		// サービス契約利用停止済みの場合
		if((Boolean)requestParam.get(SVC_KEI_USE_STP_EXEC_FLG))
		{
			// サービス制御管理S 利用停止要求処理
			statusCode = svcCtlUseStpReq(handle, param, requestParam, resultHash, hakkoSODDataList, prm_svc_kei_no);
			if(statusCode != 0)
			{
				return statusCode;
			}
			
//			// 実行するサービス契約のSYSIDを取得
//			String sysid = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID);
//			
//			// 会員ISP決済状態コード更新可否フラグ
//			// true = 「実行する」、false = 「実行しない」
//			boolean CtcMikstCdKoshinFlg = true;
//			
//			// 実行中のサービス契約のSYSIDを使用し、サービス契約一覧照会（SYSID2）を実施
//			callEKK0081B004SC(handle, param, sysid, resultHash);
//			
//			// サービス契約一覧照会（SYSID2）の結果を取得
//			ArrayList<HashMap<String, Object>> eKK0081B004HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0081B004);
//			
//			// 結果分だけループ処理を行う
//			if (eKK0081B004HashList != null && eKK0081B004HashList.size() > 0) {
//				for (int i = 0; i < eKK0081B004HashList.size(); i++)
//				{
//					HashMap<String, Object> eKK0081B004Hash = eKK0081B004HashList.get(i);
//				
//					// サービス契約ステータスを取得する
//					String svcKeiStat = (String)eKK0081B004Hash.get(EKK0081B004CBSMsg1List.SVC_KEI_STAT);
//					
//					// カレントのサービス契約ステータスをろ過し、下記ステータスが一件でもあれば、後続の会員ISP決済の更新は行わない
//					//「010：受付済」「020：照査済」「030：締結済」「100：サービス提供中」「210：休止・中断中」
//					if (SVC_KEI_STAT_UKE.equals(svcKeiStat) 
//							|| SVC_KEI_STAT_SHOSA.equals(svcKeiStat) 
//							|| SVC_KEI_STAT_TEIK.equals(svcKeiStat) 
//							|| SVC_KEI_STAT_TKC.equals(svcKeiStat) 
//							|| SVC_KEI_STAT_PAUSE.equals(svcKeiStat) )
//					{
//						// 会員ISP決済状態コード更新可否フラグを「実行しない」に変更
//						CtcMikstCdKoshinFlg = false;
//						// 一個でも有効なサービス契約の存在が認められた場合、ループ処理終了
//						break;
//					}
//				}
//			}
//			
//			// 会員ISP決済状態コード更新可否フラグが「実行する」の場合のみ実施
//			if (CtcMikstCdKoshinFlg) 
//			{
//				/*************************************************************************************/
//				/** 会員ISP決済状態コード更新用部品実行                                            **/
//				/*************************************************************************************/
//				executeCtcMikstCdKoshin(param, handle, requestParam);
//			}
		}
		
		// 指示書登録情報取得
		statusCode = callEKK0081B546SC(param, handle, requestParam, resultHash, prm_svc_kei_no);
		if(statusCode != 0)
		{
			return statusCode;
		}

		ArrayList<HashMap<String, Object>> eKK0081B546HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0081B546);
		if (eKK0081B546HashList != null && eKK0081B546HashList.size() > 0)
		{
			//1件目のデータを取得する。
			HashMap<String, Object> eKK0081B546Hash = eKK0081B546HashList.get(0);
			// 更新有無取得
			String updUm = (String)eKK0081B546Hash.get(EKK0081B546CBSMsg1List.UPD_UM);
			// 更新有無が"1"_有の場合、指示書登録の処理を呼出し
			if ("1".equals(updUm))
			{
				// 卸先事業者利用停止指示書登録
				// SYSID取得
				String sysid = (String)eKK0081B546Hash.get(EKK0081B546CBSMsg1List.SYSID);
				statusCode = orsjgsrunUseStpAddShijisho11(handle, param, requestParam, sysid);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
		}
		
		// 正常
		return 0;
	}

	/**
	 * サービス契約 利用停止処理
	 * @param	handle				セッションマネージャなどを持ったハンドル
	 * @param	param				モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam		リクエストパラメータ
	 * @param	resultHash			結果のハッシュ
	 * @param	hakkoSODDataList	サービスオーダ発行CCの業務パラメータ情報
	 * @param	prm_svc_kei_no		利用停止対象サービス契約番号
	 * @return						リターンコード
	 * @throws	Throwable
	 */
	private int svcKei_UseStp(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			ArrayList<HashMap<String, Object>> hakkoSODDataList,
			String prm_svc_kei_no
	) throws Throwable
	{
		// ステータスコード
		int statusCode = 0;

		// +++++++++++++++++++++++++++++++++++++++
		// 課金先一意照会結果取得
		// +++++++++++++++++++++++++++++++++++++++
		HashMap<String, Object> eKK0321A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0321A010);

		// サービス契約番号取得（ＦＲＯＭ課金先）
		String svc_kei_no = (String)eKK0321A010Hash.get(EKK0321A010CBSMsg1List.SVC_KEI_NO);

		// +++++++++++++++++++++++++++++++++++++++
		// 利用停止対象サービス契約番号か判定する
		// +++++++++++++++++++++++++++++++++++++++
		if (! isSvcKeiTargetData(prm_svc_kei_no, svc_kei_no))
		{
			return statusCode;
		}

		// +++++++++++++++++++++++++++++++++++++++
		// サービス契約一意照会
		// +++++++++++++++++++++++++++++++++++++++
		statusCode = callEKK0081A010SC(param, handle, requestParam, resultHash, svc_kei_no);
		if(statusCode != 0)
		{
			return statusCode;
		}

		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		// 料金グループコード取得
		String prc_grp_cd   = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		// サービス契約ステータス取得
		String svc_kei_stat = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);

		// +++++++++++++++++++++++++++++++++++++++
		// サービス提供中、休止・中断中ではない場合
		// +++++++++++++++++++++++++++++++++++++++
		if(!SVC_KEI_STAT_TKC.equals(svc_kei_stat) && !SVC_KEI_STAT_PAUSE.equals(svc_kei_stat))
		{
			// 処理なし
			return statusCode;
		}

		// 全戸一括／居住者一括のチェックはネットのみ対象とする
//		if (
//				JKKSvcConst.PRC_GRP_CD_NET_HM.equals(prc_grp_cd)
//				|| JKKSvcConst.PRC_GRP_CD_NET_MT.equals(prc_grp_cd)
//				|| JKKSvcConst.PRC_GRP_CD_NET_MZ.equals(prc_grp_cd)
//		)
//		{
//			// +++++++++++++++++++++++++++++++++++++++
//			// マンション情報一覧照会（サービス契約番号）結果取得
//			// +++++++++++++++++++++++++++++++++++++++
//			HashMap<String, Object> eKK0861B002Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0861B002);
//
//			// 全戸一括 OR 居住者一括の場合は処理しない
//			if(eKK0861B002Hash != null)
//			{
//				// 支払い方式コード取得
//				String payHoshikiCd = (String)eKK0861B002Hash.get(EKK0861B002CBSMsg1List.KANYU_KEI_PAY_HOSHIKI_CD);
//			}
//		}

		// +++++++++++++++++++++++++++++++++++++++
		// サービス契約停止
		// +++++++++++++++++++++++++++++++++++++++
		statusCode = callEKK0081C050SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		// サービス契約利用停止実施フラグ
		requestParam.put(SVC_KEI_USE_STP_EXEC_FLG, (Boolean)true);

		// +++++++++++++++++++++++++++++++++++++++
		// サービス契約内訳一覧照会
		// +++++++++++++++++++++++++++++++++++++++
		statusCode = callEKK0161B004SC(param, handle, requestParam, resultHash, svc_kei_no);
		if(statusCode != 0)
		{
			return statusCode;
		}

		ArrayList<HashMap<String, Object>> eKK0161B004HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0161B004);

		if (eKK0161B004HashList.size() > 0)
		{
			// サービス契約内訳一覧の取得分だけループ
			for(int idx_su = 0 ; idx_su < eKK0161B004HashList.size() ; idx_su++)
			{
				HashMap<String, Object> eKK0161B004Hash = eKK0161B004HashList.get(idx_su);

				// サービス契約内訳番号取得
				String svc_kei_ucwk_no   = (String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
				// サービス契約内訳ステータス取得
				String svc_kei_ucwk_stat = (String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);

				// サービス提供中、休止・中断中の場合
				if(SVC_KEI_STAT_TKC.equals(svc_kei_ucwk_stat) || SVC_KEI_STAT_PAUSE.equals(svc_kei_ucwk_stat))
				{
					// +++++++++++++++++++++++++++++++++++++++
					// サービス契約内訳一意照会
					// +++++++++++++++++++++++++++++++++++++++
					callEKK0161A010SC(param, handle, svc_kei_ucwk_no, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}

					HashMap<String, Object> eKK0161A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0161A010);

					// +++++++++++++++++++++++++++++++++++++++
					// サービス契約内訳停止
					// +++++++++++++++++++++++++++++++++++++++
					statusCode = callEKK0161C040SC(param, handle, eKK0161A010Hash, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}

					// サービス契約内訳停止結果取得
					HashMap<String, Object> eKK0161C040Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0161C040);

					int eMobileSodKbn = 0;
					if (JKKSvcConst.PRC_GRP_CD_MOB_EM.equals(prc_grp_cd))
					{
						eMobileSodKbn = getEMobileSodKbn(svc_kei_stat, svc_kei_ucwk_stat);
					}
					// ＳＯＤ発行判定を行う
					if (judgeHakkoSod(param, handle, requestParam, resultHash, svc_kei_ucwk_no, prc_grp_cd, eMobileSodKbn))
					{
						// サービスオーダ発行CC用の情報を設定
						HashMap<String, Object> SODData = new HashMap<String, Object>();
						SODData.put(JKKHakkoSODConstCC.INFO_SYSID,                          eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID));
						SODData.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO,                     eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
						// イーモバイル以外の契約、またはイーモバイルで内訳のSODを発行する場合
						if (0 == eMobileSodKbn || EMOBILE_SOD_KBN_EM_UCWK == eMobileSodKbn || EMOBILE_SOD_KBN_UCWK == eMobileSodKbn)
						{
							SODData.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO,                eKK0161C040Hash.get(EKK0161C040CBSMsg.SVC_KEI_UCWK_NO));
							SODData.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, eKK0161C040Hash.get(EKK0161C040CBSMsg.GENE_ADD_DTM));
						}
						hakkoSODDataList.add(SODData);
					}
				// ネットのコース変更中利用停止に対応
				// サービスが"ネット"かつ締結済みの場合
				else if (SVC_KEI_STAT_TEIK.equals(svc_kei_ucwk_stat)
						&& (JKKSvcConst.PRC_GRP_CD_NET_HM.equals(prc_grp_cd)
						 || JKKSvcConst.PRC_GRP_CD_NET_MT.equals(prc_grp_cd)
						 || JKKSvcConst.PRC_GRP_CD_NET_MZ.equals(prc_grp_cd)))
				{
					// サービスオーダ発行CC用の情報を設定
					HashMap<String, Object> SODData = new HashMap<String, Object>();
					SODData.put(JKKHakkoSODConstCC.INFO_SYSID,                          eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID));
					SODData.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO,                     eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
					SODData.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO,                eKK0161B004Hash.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO));
					SODData.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, eKK0161B004Hash.get(EKK0161B004CBSMsg1List.GENE_ADD_DTM));
					hakkoSODDataList.add(SODData);
				}
				else
				{
					// 締結済の番号変更中の場合にはＳＯＤ発行を行う場合有り
					hakkoSodUcwk(
							param, 
							handle, 
							requestParam, 
							resultHash, 
							eKK0161B004Hash, 
							prc_grp_cd, 
							hakkoSODDataList
					);
				}
			}
		}
		}
		else
		{
			// 休止・中断中でない場合
			if (!SVC_KEI_STAT_PAUSE.equals(svc_kei_stat))
			{
				// サービスオーダ発行CC用の情報を設定
				HashMap<String, Object> SODData = new HashMap<String, Object>();
				SODData.put(JKKHakkoSODConstCC.INFO_SYSID,      eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID));
				SODData.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
				hakkoSODDataList.add(SODData);
			}
		}
		return 0;
	}

	/**
	 * イーモバイルのSOD発行対象を判定する区分を返します。
	 * 
	 * @param svcKeiStat サービス契約ステータス
	 * @param svcKeiUcwkStat サービス契約内訳ステータス
	 * @return イーモバイルSOD発行対象区分
	 */
	private int getEMobileSodKbn(String svcKeiStat, String svcKeiUcwkStat)
	{
		int eMobileSodKbn = EMOBILE_SOD_KBN_NONE;

		// サービス契約ステータスが「サービス提供中」の場合
		if (SVC_KEI_STAT_TKC.equals(svcKeiStat))
		{
			// サービス契約内訳ステータスが「サービス提供中」の場合
			if (SVC_KEI_STAT_TKC.equals(svcKeiUcwkStat))
			{
				eMobileSodKbn = EMOBILE_SOD_KBN_EM_UCWK ;
			}
			// サービス契約内訳ステータス「休止・中断中」の場合
			else
			{
				eMobileSodKbn = EMOBILE_SOD_KBN_EM;
			}
		}
		// サービス契約ステータスが「休止・中断中」の場合
		else
		{
			// サービス契約内訳ステータスが「サービス提供中」の場合
			if (SVC_KEI_STAT_TKC.equals(svcKeiUcwkStat))
			{
				eMobileSodKbn = EMOBILE_SOD_KBN_UCWK;
			}
			// サービス契約内訳ステータスが「休止・中断中」の場合
			else
			{
				eMobileSodKbn = EMOBILE_SOD_KBN_NONE;
			}
		}

		return eMobileSodKbn;
	}

	/**
	 * 番号切替を行っている場合は締結済のままＳＯＤ発行を実施
	 * @param param
	 * @param handle
	 * @param requestParam
	 * @param resultHash
	 * @param svc_kei_ucwk_no
	 * @param prc_grp_cd
	 * @param hakkoSODDataList
	 * @throws Exception
	 */
	private void hakkoSodUcwk(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			HashMap<String, Object> eKK0161B004Hash,
			String prc_grp_cd,
			ArrayList<HashMap<String, Object>> hakkoSODDataList) throws Throwable
	{
		
		boolean hakkoSod = false;
		// 電話以外の場合は関係なし
		if (!PRC_GRP_CD_TEL.equals(prc_grp_cd))
		{
			return;
		}
		
		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
		// サービス契約番号
		String svc_kei_no = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);
		// サービス契約内訳番号
		String svc_kei_ucwk_no = (String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
		// サービス契約内訳ステータス
		String svc_kei_ucwk_stat = (String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);
		// 継続後契約変更中フラグ
		String kzkAfKeiChgFlg = (String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.KEIZK_AF_KEI_CHGECHU_FLG);
		
		// 締結済以外は対象外
		if (!JKKSvcConst.SVC_KEI_STAT_030.equals(svc_kei_ucwk_stat))
		{
			return;
		}
		
		// 番号変更中でない場合は対象外
		if (!JKKSvcConst.KEIZK_AF_KEI_FLG_1.equals(kzkAfKeiChgFlg))
		{
			return;
		}
		
		// 番ポ工事一覧照会
		callETU0011B018SC
		(
				param, 
				handle, 
				svc_kei_no, 
				JKKSvcConst.BMP_IRAI_NAIYO_CD_ITEN + "," + JKKSvcConst.BMP_IRAI_NAIYO_CD_UPD,
				resultHash
		);
		
		ArrayList<HashMap<String, Object>> eTU0011B018HashList = null;
		eTU0011B018HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_ETU0011B018);
		if (eTU0011B018HashList != null && !eTU0011B018HashList.isEmpty())
		{
			HashMap<String, Object> bmpHash = getSvcKeiUcwkInfo(svc_kei_ucwk_no, eTU0011B018HashList, ETU0011B018CBSMsg1List.SVC_KEI_UCWK_NO);
			if (null != bmpHash)
			{
				String bmpKojiStat = (String)bmpHash.get(ETU0011B018CBSMsg1List.BMP_KOJI_STAT);
				// 番ポ工事チェック
				// 番ポ工事ステータスが「040：SOD発行済み」以上、「090：番ポ工事取消」未満の場合はSOD発行を実施
				if (JKKSvcConst.BMP_KOJI_STAT_SOD_HAKKOZM.compareTo(bmpKojiStat) <= 0
						&& JKKSvcConst.BMP_KOJI_STAT_KOJICL.compareTo(bmpKojiStat) > 0)
				{
					hakkoSod = true;
				}
			}
		}
		
		// ＳＯＤ発行判定
		if (hakkoSod)
		{
			//サービスオーダ発行CC用の情報を設定
			HashMap<String, Object> SODData = new HashMap<String, Object>();
			SODData.put(JKKHakkoSODConstCC.INFO_SYSID, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID));
			SODData.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
			SODData.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, eKK0161B004Hash.get(EKK0161C040CBSMsg.SVC_KEI_UCWK_NO));
			SODData.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, eKK0161B004Hash.get(EKK0161C040CBSMsg.GENE_ADD_DTM));
			hakkoSODDataList.add(SODData);
		}
	}
	/**
	 * ＳＯＤを発行するかの判定を行う
	 * @param param
	 * @param handle
	 * @param requestParam
	 * @param resultHash
	 * @param svc_kei_ucwk_no
	 * @param prc_grp_cd
	 * @param eMobileSodKbn 
	 * @return
	 * @throws Throwable 
	 * @throws Exception 
	 * @throws RequestParameterException 
	 */
	private boolean judgeHakkoSod(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String svc_kei_ucwk_no,
			String prc_grp_cd,
			int eMobileSodKbn) throws Throwable
	{
		ArrayList<HashMap<String, Object>> eKK0161B004HashList = null;
		eKK0161B004HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0161B004);

		// イーモバイルの判定
		if (eMobileSodKbn != 0)
		{
			if (EMOBILE_SOD_KBN_NONE == eMobileSodKbn)
			{
				// SODを発行しない
				return false;
			}
			else
			{
				// SODを発行する
				return true;
			}
		}
		
		boolean checkBmpKoji = false;
		// チェック区分
		int checkKbn = 0;
		// サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
		
		String svcKeiNo = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);
		
		String bmpSvcKeiUcwkNo = "";
		
		// サービス契約内訳一覧の取得分だけループ
		HashMap<String, Object> eKK0161B004Hash = null;
		eKK0161B004Hash = getSvcKeiUcwkInfo(svc_kei_ucwk_no, eKK0161B004HashList, EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
		// サービス契約内訳番号
		String tmpSvcKeiUcwk = (String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
		// 継続後契約変更中フラグ
		String kzkAfKeiFlg = (String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.KEIZK_AF_KEI_CHGECHU_FLG);
//		String kzkmtSvcKeuUcwkNo = (String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.KEIZK_MT_SVC_KEI_UCWK_NO);
		
		if (svc_kei_ucwk_no.equals(tmpSvcKeiUcwk))
		{
			String svcKeiUcwkStat = (String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);
			// 休止・中断中の場合
			if (SVC_KEI_STAT_PAUSE.equals(svcKeiUcwkStat))
			{
				// 休止・中断時に停止オーダが発行済のためSOD発行は行わない
				return false;
			}
			else if (!PRC_GRP_CD_TEL.equals(prc_grp_cd))
			{
				// 電話以外で休止・中断中でない場合はSOD発行を行う
				return true;
			}

			// ■利用停止対象
			// 番号変更中でない
			if (!JKKSvcConst.KEIZK_AF_KEI_FLG_1.equals(kzkAfKeiFlg))
			{
				HashMap<String, Object> map = getSvcKeiUcwkInfo(svc_kei_ucwk_no, eKK0161B004HashList, EKK0161B004CBSMsg1List.KEIZK_MT_SVC_KEI_UCWK_NO);
				
				// 自身が番号変更中の旧電話の場合
				if (checkKzkAfKeiChgFlg(map))
				{
					checkBmpKoji = true;
					checkKbn = 1;
					// 継続元サービス契約内訳番号で番ポ工事チェックを実施
					bmpSvcKeiUcwkNo = (String)map.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
				}
			}
			// 番号変更中である
			else if (JKKSvcConst.KEIZK_AF_KEI_FLG_1.equals(kzkAfKeiFlg))
			{
				checkBmpKoji = true;
				checkKbn = 2;
				// サービス契約内訳番号で番ポ工事チェックを実施
				bmpSvcKeiUcwkNo = tmpSvcKeiUcwk;
			}
		}
		
		// 番ポ工事チェックを行う場合
		if (checkBmpKoji)
		{
			// 番ポ工事
			callETU0011B018SC
			(
					param, 
					handle, 
					svcKeiNo, 
					JKKSvcConst.BMP_IRAI_NAIYO_CD_ITEN + "," + JKKSvcConst.BMP_IRAI_NAIYO_CD_UPD,
					resultHash
			);
			
			ArrayList<HashMap<String, Object>> eTU0011B018HashList = null;
			eTU0011B018HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_ETU0011B018);
			if (eTU0011B018HashList != null && eTU0011B018HashList.size() > 0)
			{
				HashMap<String, Object> bmpHash = getSvcKeiUcwkInfo(bmpSvcKeiUcwkNo, eTU0011B018HashList, ETU0011B018CBSMsg1List.SVC_KEI_UCWK_NO);
				
				if (bmpHash != null)
				{
					String bmpKojiStat = (String)bmpHash.get(ETU0011B018CBSMsg1List.BMP_KOJI_STAT);
					// 番ポ工事チェック
					// 継続元の番ポ工事ステータスが040なら新番号でSODを発行する為、処理しない
					if (checkKbn == 1)
					{
						// 番ポ工事ステータスが「040：SOD発行済み」以上、「090：番ポ工事取消」未満の場合はSOD発行しない
						if (JKKSvcConst.BMP_KOJI_STAT_SOD_HAKKOZM.compareTo(bmpKojiStat) <= 0
								&& JKKSvcConst.BMP_KOJI_STAT_KOJICL.compareTo(bmpKojiStat) > 0)
						{
							return false;
						}
						else
						{
							return true;
						}
					}
					// 番号変更中の場合
					else if (checkKbn == 2)
					{
						// 番ポ工事ステータスが「040：SOD発行済み」以上、「090：番ポ工事取消」未満の場合はSOD発行する
						if (JKKSvcConst.BMP_KOJI_STAT_SOD_HAKKOZM.compareTo(bmpKojiStat) <= 0
								&& JKKSvcConst.BMP_KOJI_STAT_KOJICL.compareTo(bmpKojiStat) > 0)
						{
							return true;
						}
						else
						{
							return false;
						}
					}
				}

			}
		}
		
		return true;
	}
	
	/**
	 * 変更手続き中チェック
	 * @param eKK0161B004Hash
	 * @return 
	 */
	private boolean checkKzkAfKeiChgFlg(HashMap<String, Object> eKK0161B004Hash)
	{
		if (eKK0161B004Hash == null)
		{
			return false;
		}
		
		return JKKSvcConst.KEIZK_AF_KEI_FLG_1.equals((String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.KEIZK_AF_KEI_CHGECHU_FLG));
	}
	
	/**
	 * argsと一致する情報を取得
	 * @param svcKeiUcwkNo
	 * @param list
	 * @return
	 */
	private HashMap<String, Object> getSvcKeiUcwkInfo(String args, ArrayList<HashMap<String, Object>> list, String key)
	{
		// 一覧の取得分だけループ
		for(int i = 0 ; i < list.size(); i++)
		{
			HashMap<String, Object> outHash = null;
			outHash = list.get(i);
			
			// 一致する情報を返却する
			if (args.equals((String)outHash.get(key)))
			{
				return outHash;
			}
		}
		return null;
	}
	
	/**
	 * オプションサービス契約 利用停止処理
	 * @param	handle			セッションマネージャなどを持ったハンドル
	 * @param	param			モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam	リクエストパラメータ
	 * @param	resultHash		結果のハッシュ
	 * @param	prm_svc_kei_no	利用停止対象サービス契約番号
	 * @return					リターンコード
	 * @throws	Throwable
	 */
	private int opSvcKei_UseStp(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String prm_svc_kei_no
	) throws Throwable
	{
		// ステータスコード
		int statusCode = 0;

		// +++++++++++++++++++++++++++++++++++++++
		// 課金先一意照会結果取得
		// +++++++++++++++++++++++++++++++++++++++
		HashMap<String, Object> eKK0321A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0321A010);

		// +++++++++++++++++++++++++++++++++++++++
		// オプションサービス契約一意照会
		// +++++++++++++++++++++++++++++++++++++++
		statusCode = callEKK0351A010SC(param, handle, eKK0321A010Hash, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		// オプションサービス契約データ取得
		HashMap<String, Object> eKK0351A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0351A010);

		// +++++++++++++++++++++++++++++++++++++++
		// 利用停止対象サービス契約番号か判定する
		// +++++++++++++++++++++++++++++++++++++++
		if (! isOpSvcKeiTargetData(param, handle, resultHash, prm_svc_kei_no, eKK0351A010Hash))
		{
			return statusCode;
		}

		// オプションサービス契約ステータス
		String op_svc_kei_stat = (String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);

		// サービス提供中、休止・中断中の場合
		if(SVC_KEI_STAT_TKC.equals(op_svc_kei_stat) || SVC_KEI_STAT_PAUSE.equals(op_svc_kei_stat))
		{
			// +++++++++++++++++++++++++++++++++++++++
			// オプションサービス契約停止
			// +++++++++++++++++++++++++++++++++++++++
			statusCode = callEKK0351C040SC(param, handle, requestParam, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}
		}

		return 0;
	}

	/**
	 * サブオプションサービス契約 利用停止処理
	 * @param	handle			セッションマネージャなどを持ったハンドル
	 * @param	param			モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam	リクエストパラメータ
	 * @param	resultHash		結果のハッシュ
	 * @param	prm_svc_kei_no	利用停止対象サービス契約番号
	 * @return					リターンコード
	 * @throws	Throwable
	 */
	private int sbOpSvcKei_UseStp(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String prm_svc_kei_no
	) throws Throwable
	{
		// ステータスコード
		int statusCode = 0;

		// +++++++++++++++++++++++++++++++++++++++
		// 課金先一意照会結果取得
		// +++++++++++++++++++++++++++++++++++++++
		HashMap<String, Object> eKK0321A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0321A010);

		// +++++++++++++++++++++++++++++++++++++++
		// サブオプションサービス契約一意照会
		// +++++++++++++++++++++++++++++++++++++++
		statusCode = callEKK0401A010SC(param, handle, eKK0321A010Hash, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		// サブオプションサービス契約データ取得
		HashMap<String, Object> eKK0401A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0401A010);

		// +++++++++++++++++++++++++++++++++++++++
		// 利用停止対象サービス契約番号か判定する
		// +++++++++++++++++++++++++++++++++++++++
		if (! isSbOpSvcKeiTargetData(param, handle, resultHash, prm_svc_kei_no, eKK0321A010Hash))
		{
			return statusCode;
		}

		// サブオプションサービス契約ステータス
		String sbop_svc_kei_stat = (String)eKK0401A010Hash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);

		// サービス提供中、休止・中断中の場合
		if(SVC_KEI_STAT_TKC.equals(sbop_svc_kei_stat) || SVC_KEI_STAT_PAUSE.equals(sbop_svc_kei_stat))
		{
			// +++++++++++++++++++++++++++++++++++++++
			// サブオプションサービス契約停止
			// +++++++++++++++++++++++++++++++++++++++
			statusCode = callEKK0401C040SC(param, handle, eKK0401A010Hash, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}
		}
		
		return 0;
	}


	/**
	 * 機器提供サービス契約 利用停止処理　パート２
	 * eo光電話について、eo光ネットに紐づいているONUやVDSLモデムをここで利用停止します
	 * 
	 * @param	handle			
	 * @param	param			
	 * @param	requestParam	
	 * @param	resultHash		
	 * @param	ekk0081a010Map	
	 * @return					
	 * @throws	Throwable 
	 */
	private int kktkSvcKei_UseStp2(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			HashMap<String, Object> ekk0081a010Map,
			String prm_svc_kei_no
	) throws Throwable
	{
		// ステータスコード
		int statusCode = 0;

		// サービス契約番号
		String svcKeiNo = (String) ekk0081a010Map.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);

		// 機器提供サービス契約一覧照会
		statusCode = callEKK0341B022SC(param, handle, svcKeiNo, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		ArrayList<HashMap<?, ?>> ekk0341b022List = (ArrayList<HashMap<?, ?>>)resultHash.get(TEMPLATE_ID_EKK0341B022);

		for (HashMap<?, ?> ekk0341b022Map : ekk0341b022List)
		{
			// 機器提供サービス契約番号
			String kktkSvcKeiNo = (String) ekk0341b022Map.get(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);
			// 機器提供サービスコード
			String kktkSvcCd    = (String) ekk0341b022Map.get(EKK0341B022CBSMsg1List.KKTK_SVC_CD);

			if (
					JKKSvcConst.KKTK_SVC_CD_ONU.equals(kktkSvcCd)				// ＯＮＵ
					||	JKKSvcConst.KKTK_SVC_CD_MODEM.equals(kktkSvcCd)			// VDSLモデム
					||	JKKSvcConst.KKTK_SVC_CD_SPLIT.equals(kktkSvcCd)			// スプリッタ
					||	JKKSvcConst.KKTK_SVC_CD_IFILTER.equals(kktkSvcCd)		// インラインフィルタ
					||	KKTK_SVC_CD_MFR.equals(kktkSvcCd)						// 多機能ルータ
					// ANK-4315-00-00 ADD START
					||	KKTK_SVC_CD_HGW.equals(kktkSvcCd)						// ホームゲートウェイ
					// ANK-4315-00-00 ADD END

			)
			{
				// 課金先一意照会結果を作成（機器提供サービス契約一意照会の動作のため）
				HashMap<String, Object> dummyKK0321 = new HashMap<String, Object>();
				dummyKK0321.put(EKK0321A010CBSMsg1List.KKTK_SVC_KEI_NO, kktkSvcKeiNo);
				resultHash.put(TEMPLATE_ID_EKK0321A010, dummyKK0321);

				// 機器提供サービス契約 利用停止処理
				statusCode = kktkSvcKei_UseStp(handle, param, requestParam, resultHash, prm_svc_kei_no, false);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
		}

		return 0;
	}



	/**
	 * 機器提供サービス契約 利用停止処理
	 * @param	handle			セッションマネージャなどを持ったハンドル
	 * @param	param			モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam	リクエストパラメータ
	 * @param	resultHash		結果のハッシュ
	 * @return					リターンコード
	 * @throws	Throwable
	 */
	private int kktkSvcKei_UseStp(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String prm_svc_kei_no,
			boolean chkTarget
	) throws Throwable
	{
		int statusCode = 0;

		// +++++++++++++++++++++++++++++++++++++++
		// 機器提供サービス契約一意照会
		// +++++++++++++++++++++++++++++++++++++++
		statusCode = callEKK0341A010SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		HashMap<String, Object> eKK0341A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341A010);

		// +++++++++++++++++++++++++++++++++++++++
		// 利用停止対象サービス契約番号か判定する
		// +++++++++++++++++++++++++++++++++++++++
		if (chkTarget)
		{
			if (! isKktkSvcKeiTargetData(param, handle, requestParam, resultHash, prm_svc_kei_no, eKK0341A010Hash))
			{
				return statusCode;
			}
		}

		// 機器提供サービス契約ステータス
		String kktk_svc_kei_stat = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT);
		// 機器提供サービスコード
		String kktk_svc_cd       = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD);
		// 親契約識別コード
		String oya_kei_skbt_cd   = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.OYA_KEI_SKBT_CD);

		// 親契約識別コード=02（サービス契約回線内訳に紐づく機器）の場合
		if (OYA_KEI_SKBT_CD_KAISEN.equals(oya_kei_skbt_cd))
		{
			// サービス契約一覧照会結果よりサービスコードを取得
			HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

			// サービス契約番号
			String svc_kei_no = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);
			// サービスコード
			String svc_cd     = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD);
			// 料金グループコード
			String prc_grp_cd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);

			// eo光ネット，eo光電話でＶ−ＯＮＵの場合、eo光ＴＶでＶ−ＯＮＵ以外の場合、スルー
			if (
					(
						JKKSvcConst.KKTK_SVC_CD_VONU.equals(kktk_svc_cd)
						&& (JKKSvcConst.SVC_CD_NET.equals(svc_cd) || JKKSvcConst.SVC_CD_TEL.equals(svc_cd))
					)
					|| (
							!JKKSvcConst.KKTK_SVC_CD_VONU.equals(kktk_svc_cd) && JKKSvcConst.SVC_CD_TV.equals(svc_cd)
					)
			)
			{
				return 0;
			}
			// 機器提供サービスコードが多機能ルータ(C024)又は、ホームゲートウェイ(C025)かつ、
			// サービスコードがeo光ネット(01)かつ、料金グループコードがホーム(02)、メゾン(03)、マンションのいずれかである場合、
			// または、機器提供サービスコードが多機能ルータ(C024)又は、ホームゲートウェイ(C025)かつ、サービスコードがeo光電話(02)である場合
			// ANK-4315-00-00 MOD START
//			else if (KKTK_SVC_CD_MFR.equals(kktk_svc_cd)
			else if ((KKTK_SVC_CD_MFR.equals(kktk_svc_cd) || KKTK_SVC_CD_HGW.equals(kktk_svc_cd))
			// ANK-4315-00-00 MOD END
					&& (
							(
								JKKSvcConst.SVC_CD_NET.equals(svc_cd)
								&&
								(
										(PCRS_GRP_HOME.equals(prc_grp_cd)
										|| PCRS_GRP_MAISON.equals(prc_grp_cd)
										|| PCRS_GRP_MANSION.equals(prc_grp_cd))
								)
							)
							||
							JKKSvcConst.SVC_CD_TEL.equals(svc_cd)
						)
					)
			{
				// 機器オプション利用機器契約更新CC用のマップキーをセット
				String workKkopSvcUseKeiUpdDataKey = "JKKKkopSvcUseKeiUpdCC";
				createUserData(param, workKkopSvcUseKeiUpdDataKey);

				HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(workKkopSvcUseKeiUpdDataKey);
				ArrayList<HashMap<String, Object>> trgtDataList = new ArrayList<HashMap<String, Object>>();
				HashMap<String, Object> kkopKeiUpdInfo = new HashMap<String, Object>();

				// サービス契約番号
				kkopKeiUpdInfo.put(JKKKkopSvcUseKeiUpdCC.KEY_SVC_KEI_NO, svc_kei_no);
				// 機器提供サービス契約番号
				kkopKeiUpdInfo.put(JKKKkopSvcUseKeiUpdCC.KEY_KKTK_SVC_KEI_NO, (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
				// 異動区分(利用停止)
				kkopKeiUpdInfo.put(JKKKkopSvcUseKeiUpdCC.KEY_IDO_DIV, IDO_DIV_USESTP);
				// サービス停止年月日(運用日)
				kkopKeiUpdInfo.put(JKKKkopSvcUseKeiUpdCC.KEY_SVC_STP_YMD, oPE_DATE);
				// 最終更新年月日時分秒(更新前)
				kkopKeiUpdInfo.put(JKKKkopSvcUseKeiUpdCC.KEY_UPD_DTM_BF, (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.LAST_UPD_DTM));

				trgtDataList.add(kkopKeiUpdInfo);
				outMap.put(JKKKkopSvcUseKeiUpdCC.KEY_TRGT_DATA_LIST, trgtDataList);

				// 機器オプションサービス利用機器契約更新CCメイン処理をコール
				JKKKkopSvcUseKeiUpdCC kkopSvcUseKeiUpdCC = new JKKKkopSvcUseKeiUpdCC();
				kkopSvcUseKeiUpdCC.updateKkopSvcKeiTran(handle, param, workKkopSvcUseKeiUpdDataKey);
				return 0;
			}

			// 同一場所サービス契約一覧照会
			statusCode = callEKK0081B009SC(param, handle, svc_kei_no, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}

			ArrayList<HashMap<?, ?>> ekk0081b009List = (ArrayList<HashMap<?, ?>>)resultHash.get(TEMPLATE_ID_EKK0081B009);

			// 対象の機器をセットの他の契約が使用中ならスルー
			if (isAnotherSvckeiUsing(kktk_svc_cd, prc_grp_cd, svc_kei_no, ekk0081b009List))
			{
				return 0;
			}
		}

		// サービス提供中、休止・中断中の場合
		if(SVC_KEI_STAT_TKC.equals(kktk_svc_kei_stat) || SVC_KEI_STAT_PAUSE.equals(kktk_svc_kei_stat))
		{
			// +++++++++++++++++++++++++++++++++++++++
			// 機器提供サービス契約停止
			// +++++++++++++++++++++++++++++++++++++++
			statusCode = callEKK0341C120SC(param, handle, requestParam, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}
			
			// 機器オプションサービス契約利用停止
			kkopSvcKei_UseStp(handle, param, requestParam, resultHash, prm_svc_kei_no, (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
		}

		return 0;
	}

	/**
	 * ユーザ定義文字列がユーザ情報になければデータを作成します。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @param workMapKey 業務データのマップキー
	 * @return true：作成した　False：存在していたため作成不要
	 * @throws RequestParameterException 
	 * @since 2013.12.12
	 */
	private boolean createUserData(IRequestParameterReadWrite param, String workMapKey) 
	throws RequestParameterException
	{
		if (param.getData(workMapKey) == null)
		{
			param.setData(workMapKey, new HashMap<String, Object>());
			return true;
		}
		
		return false;
	}

	/**
	 * 他の契約から利用されていない機器かどうかをチェックします
	 * 
	 * @param	kktk_svc_cd		機器提供サービスコード
	 * @param	prc_grp_cd		料金グループコード
	 * @param	svc_kei_no		サービス契約番号
	 * @param	ekk0081b009List	同一利用場所サービス契約一覧照会結果
	 * @return					true：他の契約が使っている機器である false：停止して問題ない機器
	 * @since 2013-07-07 巻３LT-2013-0000242（eo光ネットの利用停止でＶ−ＯＮＵまで停止してしまう）
	 */
	private boolean isAnotherSvckeiUsing(
			String kktk_svc_cd,
			String prc_grp_cd,
			String svc_kei_no,
			ArrayList<HashMap<?, ?>> ekk0081b009List
	)
	{
		boolean ret = false;

		// チェック対象の機器以外はスルー
		if (
				!JKKSvcConst.KKTK_SVC_CD_ONU.equals(kktk_svc_cd)			// ONU
				&& !JKKSvcConst.KKTK_SVC_CD_MODEM.equals(kktk_svc_cd)		// VDSLモデム
				&& !JKKSvcConst.KKTK_SVC_CD_SPLIT.equals(kktk_svc_cd)		// スプリッタ
				&& !JKKSvcConst.KKTK_SVC_CD_IFILTER.equals(kktk_svc_cd)		// インラインフィルタ
				// ANK-4315-00-00 ADD START
				&& !KKTK_SVC_CD_HGW.equals(kktk_svc_cd)						// ホームゲートウェイ
				// ANK-4315-00-00 ADD END
		)
		{
			return false;
		}

		// ネットサービス
		boolean iamEohnet = (JKKSvcConst.PRC_GRP_CD_NET_HM.equals(prc_grp_cd) || JKKSvcConst.PRC_GRP_CD_NET_MT.equals(prc_grp_cd) || JKKSvcConst.PRC_GRP_CD_NET_MZ.equals(prc_grp_cd));

		// eo光ネット・eo光電話以外はスルー
		if (
				!iamEohnet
				&& !JKKSvcConst.PRC_GRP_CD_TEL.equals(prc_grp_cd)
		)
		{
			return false;
		}

		for (HashMap<?, ?> ekk0081b009Map : ekk0081b009List)
		{
			String tgtSvcKeiNo   = (String) ekk0081b009Map.get(EKK0081B009CBSMsg1List.SVC_KEI_NO);
			String tgtSvcKeiStat = (String) ekk0081b009Map.get(EKK0081B009CBSMsg1List.SVC_KEI_STAT);
			String tgtPrcGrpCd   = (String) ekk0081b009Map.get(EKK0081B009CBSMsg1List.PRC_GRP_CD);

			// 自契約はスルー
			if (svc_kei_no.equals(tgtSvcKeiNo))
			{
				continue;
			}

			// ネットサービス
			boolean itIsEohnet = (JKKSvcConst.PRC_GRP_CD_NET_HM.equals(tgtPrcGrpCd) || JKKSvcConst.PRC_GRP_CD_NET_MT.equals(tgtPrcGrpCd) || JKKSvcConst.PRC_GRP_CD_NET_MZ.equals(tgtPrcGrpCd));

			// 自契約がeo光ネット／eo光電話で、セットのeo光電話／eo光ネットがある場合
			if (
					(iamEohnet && JKKSvcConst.PRC_GRP_CD_TEL.equals(tgtPrcGrpCd))
					|| (JKKSvcConst.PRC_GRP_CD_TEL.equals(prc_grp_cd) && itIsEohnet)
			)
			{
				// 他契約が、照査済、締結済、サービス提供中、中断中の場合、利用停止できない
				if (JKKSvcConst.SVC_KEI_STAT_020.compareTo(tgtSvcKeiStat) <= 0 && JKKSvcConst.SVC_KEI_STAT_210.compareTo(tgtSvcKeiStat) >= 0)
				{
					ret = true;
					break;
				}
			}
		}

		return ret;
	}
	
	/**
	 * サービス制御管理S 停止要求処理
	 * @param	handle				セッションマネージャなどを持ったハンドル
	 * @param	param				モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam		リクエストパラメータ
	 * @param	resultHash			パラメータ
	 * @param	hakkoSODDataList	サービスオーダ発行CCの業務パラメータ情報
	 * @return						リターンコード
	 * @throws	Throwable
	 */
	private int svcCtlUseStpReq(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			ArrayList<HashMap<String, Object>> hakkoSODDataList,
			String prm_svc_kei_no
	) throws Throwable
	{
		// サービスオーダ発行CC
		JKKHakkoSODCC hakkoSODCC = new JKKHakkoSODCC();
		String hakkoSODDataKey = "HakkoSODCC";
		mappingHakkoSODCC(
				param,
				hakkoSODDataKey,
				hakkoSODDataList,
				resultHash
		);
		hakkoSODCC.hakkoSOD(handle, param, hakkoSODDataKey);

		// 正常
		return 0;
	}
	
	/**
	 * 利用停止可能判定処理
	 * @param	fukaUseStpTrgtLst	利用停止不可対象リスト
	 * @param	requestParam		パラメータ
	 * @param	resultHash			結果のハッシュ
	 * @return						利用停止可否(可:false, 不可:true)
	 */
	private boolean useStpFukaCheck(
			ArrayList<HashMap<String, Object>> fukaUseStpTrgtLst,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash
	)
	{
		HashMap<String, Object> fukaTaiHash =  new HashMap<String, Object>();
		boolean fuka_flg = false;

		// サービス契約情報
		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		// 料金グループコード
		String prc_grp_cd   = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		// サービス契約ステータス
		String svc_kei_stat = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);

		// eo光テレビ(KCN)の場合
		if(PRC_GRP_CD_TV_KCN.equals(prc_grp_cd))
		{
			fukaTaiHash.put(FUKA_RESON, FUKA_RESON_RTN_TV_KCN);
			fuka_flg = true;
		}
		// 受付済 or 照査済 or 締結済
		else if(
				SVC_KEI_STAT_UKE.equals(svc_kei_stat)
				|| SVC_KEI_STAT_SHOSA.equals(svc_kei_stat)
				|| SVC_KEI_STAT_TEIK.equals(svc_kei_stat)
		)
		{
			// 利用停止不可理由：契約手続中
			fukaTaiHash.put(FUKA_RESON, FUKA_RESON_RTN_KEITK_CHU);
			fuka_flg = true;
		}
		// 停止中 or 解約済 or キャンセル済
		else if(
				SVC_KEI_STAT_STP.equals(svc_kei_stat)
				|| SVC_KEI_STAT_DSL.equals(svc_kei_stat)
				|| SVC_KEI_STAT_CNCL.equals(svc_kei_stat)
		)
		{
			// 利用停止不可理由：依頼取消
			fukaTaiHash.put(FUKA_RESON, FUKA_RESON_RTN_IRAI_TORI);
			fuka_flg = true;
		}

		// 停止不可の場合
		if(fuka_flg)
		{
			fukaTaiHash.put(FUKA_SVC_KEI_NO,   eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
			fukaTaiHash.put(FUKA_SVC_KEI_NAME, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD_NM));
			fukaTaiHash.put(FUKA_PRC_GRP_NAME, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD_NM));
			// 停止不可対象者リスト追加
			fukaUseStpTrgtLst.add(fukaTaiHash);
		}
		return fuka_flg;
	}
	
	
	
	/**
	 * 課金先一覧照会（請求契約番号／サービス契約番号）サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0321B002SC(
									IRequestParameterReadWrite param
									, SessionHandle handle
									, HashMap<String, Object> inHash
									, HashMap<String, Object> resultHash
									, String seikyu_kei_no) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0321B002への呼び出しパラメータ設定
		template = new CAANMsg(EKK0321B002CBSMsg.class.getName());
		mappingEKK0321B002InMsg(template, inHash, seikyu_kei_no);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0321B002, mappingEKK0321B002SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0861B002の結果をHashとして抽出する
	 * @param resultMsgs EKK0861B002のテンプレートリスト
	 * @return EKK0861B002の結果部分
	 */
	private HashMap<String, Object> mappingEKK0861B002SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0861B002CBSMsg.EKK0861B002CBSMSG1LIST);
		if(msgList == null || msgList.length == 0)
		{
			retHash = null;
		}
		else
		{
			retHash = msgList[0].getMsgData();
		}
		
		return retHash;
	}

	/**
	 * EKK0321B002の結果をHashとして抽出する
	 * @param resultMsgs EKK0321B002のテンプレートリスト
	 * @return EKK0321B002の結果部分
	 */
	private ArrayList<HashMap<String, Object>> mappingEKK0321B002SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		ArrayList<HashMap<String, Object>> retHashList = null;
		CAANMsg[] msgs = null;
		
		//結果の抽出
		retHashList = new ArrayList<HashMap<String, Object>>();
		msgs = resultMsgs[0].getCAANMsgList(EKK0321B002CBSMsg.EKK0321B002CBSMSG1LIST);
		for(int i = 0 ; i < msgs.length ; i++)
		{
			retHashList.add(msgs[i].getMsgData());
		}
		
		return retHashList;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:マンション情報一覧照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 * @since 2011.06.07
	 */
	private void mappingEKK0861B002InMsg(
			CAANMsg template, 
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash)
			throws RequestParameterException, SCException
	{
		
		HashMap<String, Object> eKK0081A010Hash = null;

		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0861B002CBSMsg().getContents());
		
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		// テンプレートID
		template.set(EKK0861B002CBSMsg.TEMPLATEID, "EKK0861B002");

		// 機能コード（デフォルト：１）
		template.set(EKK0861B002CBSMsg.FUNC_CODE, "2");

		// サービス契約番号の設定
		template.set(EKK0861B002CBSMsg.KEY_SVC_KEI_NO, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
		
		// 予約適用年月日の設定
		template.set(EKK0861B002CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
		
	}

	
	/**
	 * templateに対してEKK0321B002の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0321B002InMsg(CAANMsg template, HashMap<String, Object> inHash, String seikyu_kei_no)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0321B002CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0321B002CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0321B002);

		//機能コード--課金先一覧照会
		template.set(EKK0321B002CBSMsg.FUNC_CODE, "2");

		//ＫＥＹ＿請求契約番号
		template.set(EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO, seikyu_kei_no);
	}
	
	
	
	/**
	 * 課金先一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0321A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0321A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0321A010CBSMsg.class.getName());
		mappingEKK0321A010InMsg(template, inHash, resultHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0321A010, mappingEKK0321A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0321A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0321A010のテンプレートリスト
	 * @return EKK0321A010の結果部分
	 */
	private HashMap<String, Object> mappingEKK0321A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0321A010CBSMsg.EKK0321A010CBSMSG1LIST);
		retHash = msgList[0].getMsgData();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0321A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void mappingEKK0321A010InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0321A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0321A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0321A010);

		//機能コード--課金先一意照会
		template.set(EKK0321A010CBSMsg.FUNC_CODE, "1");

		
		//ＫＥＹ＿課金先番号
		template.set(EKK0321A010CBSMsg.KEY_KAKINS_NO, inHash.get(EKK0321B002CBSMsg1List.KAKINS_NO));
	}
	
	/**
	 * サービス契約一意照会SIFを呼び出し
	 * @param	param		リクエストパラメータ	
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	結果のハッシュ
	 * @param	svcKeiNo	サービス契約番号
	 * @return				サービスインターフェースのリターンコード
	 * @throws	RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0081A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String svcKeiNo
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0081A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081A010CBSMsg.class.getName());
		mappingEKK0081A010InMsg(template, inHash, svcKeiNo);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0081A010, mappingEKK0081A010SCOutMsg(resultMsgs));
		}

		return status;
		
	}
	
	/**
	 * EKK0081A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0081A010の結果部分
	 */
	private HashMap<String, Object> mappingEKK0081A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		retHash = msgList[0].getMsgData();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0081A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param svcKeiNo サービス契約番号
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0081A010InMsg(CAANMsg template, HashMap<String, Object> inHash, String svcKeiNo)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0081A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0081A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081A010);

		//機能コード--サービス契約一意照会(ここだけはカレント)
		template.set(EKK0081A010CBSMsg.FUNC_CODE, "2");

		//ＫＥＹ＿サービス契約番号
		template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		
		//ＫＥＹ＿予約適用年月日
		template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, oPE_DATE);
		
		//ＫＥＹ＿世代登録年月日時分（形だけの設定）
//		template.set(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, oPE_DATE + "000000000");
		//カレント検索なので setNull にすべし
		template.setNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM);
	}
	
	
	
	/**
	 * サービス契約内訳一覧照会サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param svcKeiNo サービス契約番号
	 * @param resultHash 結果のハッシュ
	 * 
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0161B004SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String svcKeiNo
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0161B004への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161B004CBSMsg.class.getName());
		mappingEKK0161B004InMsg(template, inHash, svcKeiNo);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0161B004, mappingEKK0161B004SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0161B004の結果をHashとして抽出する
	 * @param resultMsgs EKK0161B004のテンプレートリスト
	 * @return EKK0161B004の結果部分
	 */
	private ArrayList<HashMap<String, Object>> mappingEKK0161B004SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		ArrayList<HashMap<String, Object>> retHashList = null;
		CAANMsg[] msgs = null;
		
		//結果の抽出
		retHashList = new ArrayList<HashMap<String, Object>>();
		msgs = resultMsgs[0].getCAANMsgList(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST);
		for(int i = 0 ; i < msgs.length ; i++)
		{
			retHashList.add(msgs[i].getMsgData());
		}
		
		return retHashList;
	}
	
	/**
	 * templateに対してEKK0161B004の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param svcKeiNo サービス契約番号
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0161B004InMsg(CAANMsg template, HashMap<String, Object> inHash, String svcKeiNo)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0161B004CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0161B004CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161B004);

		//機能コード--サービス契約内訳一覧照会
//		template.set(EKK0161B004CBSMsg.FUNC_CODE, "1");
		template.set(EKK0161B004CBSMsg.FUNC_CODE, "3");

		//ＫＥＹ＿サービス契約番号
		template.set(EKK0161B004CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}
	
	/**
	 * マンション情報一覧照会（サービス契約番号）の結果を取得
	 * @param param
	 * @param userDataIndex
	 * @return
	 * @throws RequestParameterException
	 */
	private int callEKK0861B002SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// 上りマッピング
		template = new CAANMsg(EKK0861B002CBSMsg.class.getName());
		mappingEKK0861B002InMsg(template, inHash, resultHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0861B002, mappingEKK0861B002SCOutMsg(resultMsgs));
		}

		return status;
		
	}
	
	/**
	 * サービス契約内訳一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0161A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiUcwkNo,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0161A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161A010CBSMsg.class.getName());
		mappingEKK0161A010InMsg(template, svcKeiUcwkNo);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0161A010, mappingEKK0161A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0161A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0161A010のテンプレートリスト
	 * @return EKK0161A010の結果部分
	 */
	private HashMap<String, Object> mappingEKK0161A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST);
		retHash = msgList[0].getMsgData();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0161A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0161A010InMsg(CAANMsg template, String svcKeiUcwkNo)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0161A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0161A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161A010);

		//機能コード--サービス契約内訳一意照会(カレント)
		template.set(EKK0161A010CBSMsg.FUNC_CODE, "2");

		//ＫＥＹ＿サービス契約内訳番号
		template.set(EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);
		
		//ＫＥＹ＿予約適用年月日
		template.set(EKK0161A010CBSMsg.KEY_RSV_APLY_YMD, oPE_DATE);
		
		//ＫＥＹ＿世代登録年月日時分（形だけの設定）
		template.set(EKK0161A010CBSMsg.KEY_GENE_ADD_DTM, oPE_DATE + "000000000");
	}
	
	/**
	 * オプションサービス契約一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0351A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0351A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351A010CBSMsg.class.getName());
		mappingEKK0351A010InMsg(template, inHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0351A010, mappingEKK0351A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0351A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0351A010のテンプレートリスト
	 * @return EKK0351A010の結果部分
	 */
	private HashMap<String, Object> mappingEKK0351A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0351A010CBSMsg.EKK0351A010CBSMSG1LIST);
		retHash = msgList[0].getMsgData();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0351A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0351A010InMsg(CAANMsg template, HashMap<String, Object> inHash)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0351A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0351A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0351A010);

		//機能コード--オプションサービス契約一意照会(ここだけはカレント)
		template.set(EKK0351A010CBSMsg.FUNC_CODE, "2");
		
		//ＫＥＹ＿オプションサービス契約番号
		template.set(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO, inHash.get(EKK0321A010CBSMsg1List.OP_SVC_KEI_NO));
		
		//ＫＥＹ＿予約適用年月日
		template.set(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD, oPE_DATE);
		
		//ＫＥＹ＿世代登録年月日時分（形だけの設定）
		template.set(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM, oPE_DATE + "000000000");
	}
	
	/**
	 * サブオプションサービス契約一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0401A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0401A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401A010CBSMsg.class.getName());
		mappingEKK0401A010InMsg(template, inHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0401A010, mappingEKK0401A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0401A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0401A010のテンプレートリスト
	 * @return EKK0401A010の結果部分
	 */
	private HashMap<String, Object> mappingEKK0401A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0401A010CBSMsg.EKK0401A010CBSMSG1LIST);
		retHash = msgList[0].getMsgData();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0401A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0401A010InMsg(CAANMsg template, HashMap<String, Object> inHash)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0401A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0401A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0401A010);

		//機能コード--サブオプションサービス契約一意照会(カレント)
		template.set(EKK0401A010CBSMsg.FUNC_CODE, "2");

		//ＫＥＹ＿オプションサービス契約番号
		template.set(EKK0401A010CBSMsg.KEY_OP_SVC_KEI_NO, inHash.get(EKK0401A010CBSMsg1List.OP_SVC_KEI_NO));
		
		//ＫＥＹ＿サブオプションサービス契約番号
		template.set(EKK0401A010CBSMsg.KEY_SBOP_SVC_KEI_NO, inHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_NO));
		
		//ＫＥＹ＿予約適用年月日
		template.set(EKK0401A010CBSMsg.KEY_RSV_APLY_YMD, oPE_DATE);
		
		//ＫＥＹ＿世代登録年月日時分（形だけの設定）
		template.set(EKK0401A010CBSMsg.KEY_GENE_ADD_DTM, oPE_DATE + "000000000");
	}
	
	
	
//	/**
//	 * 請求オプションサービス契約一意照会SIFを呼び出し
//	 * @param	param			リクエストパラメータ	
//	 * @param	handle			セッションハンドル
//	 * @param	inHash			条件用Hash
//	 * @param	resultHash		結果のハッシュ
//	 * @param	seiOpSvcKeiNo	
//	 * @return					サービスインターフェースのリターンコード
//	 * @throws	RequestParameterException, SCException 例外時にスローされます
//	 */
//	private int callEKK0441A010SC(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> inHash,
//			HashMap<String, Object> resultHash,
//			String seiOpSvcKeiNo
//	) throws Throwable
//	{
//		HashMap<String, Object> sIFRequest = null;
//		CAANMsg[] resultMsgs = null;
//		CAANMsg template = null;
//		ServiceComponentRequestInvoker scCall = null;
//		Map<?, ?> sIFResult = null;
//		int status = 0;
//
//		// サービスIF共通の情報を設定
//		sIFRequest = editInMsgCmn(param);
//
//		// EKK0441A010への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0441A010CBSMsg.class.getName());
//		mappingEKK0441A010InMsg(template, inHash, resultHash, seiOpSvcKeiNo);
//		editBasicCmn(param, template);
//
//		// リクエスト用クラスの設定
//		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
//
//		// SC呼び出しクラスの生成
//		scCall = new ServiceComponentRequestInvoker();
//
//		// SIFの呼び出し
//		sIFResult = scCall.run(sIFRequest, handle);
//
//		// エラーマッピング処理
//		editResultRP(sIFResult, param);
//
//		// エラーチェック
//		errChk(sIFResult);
//
//		// 結果の取得
//		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
//
//		// ステータスコードの取得
//		status = template.getInt(JCMConstants.STATUS_INT_KEY);
//
//		// ステータスが0以外はエラーとなっている
//		if(status == 0)
//		{
//			resultHash.put(TEMPLATE_ID_EKK0441A010, mappingEKK0441A010SCOutMsg(resultMsgs));
//		}
//
//		return status;
//	}
	
//	/**
//	 * EKK0441A010の結果をHashとして抽出する
//	 * @param resultMsgs EKK0441A010のテンプレートリスト
//	 * @return EKK0441A010の結果部分
//	 */
//	private HashMap<String, Object> mappingEKK0441A010SCOutMsg(CAANMsg[] resultMsgs)
//	{
//		
//		HashMap<String, Object> retHash = null;
//		CAANMsg msg = null;
//		CAANMsg[] msgList = null;
//		
//		//結果の抽出
//		msg = resultMsgs[0];
//		
//		//結果の取得
//		msgList = 
//			(CAANMsg[])msg.getMsgData().get(EKK0441A010CBSMsg.EKK0441A010CBSMSG1LIST);
//		retHash = msgList[0].getMsgData();
//		
//		return retHash;
//	}
	
//	/**
//	 * templateに対してEKK0441A010の条件に関する部分を設定する
//	 * @param	template		条件の設定先
//	 * @param	inHash			設定条件
//	 * @param	resultHash		アプリ固有のパラメータ
//	 * @param	seiOpSvcKeiNo
//	 */
//	private void mappingEKK0441A010InMsg(
//			CAANMsg template,
//			HashMap<String, Object> inHash,
//			HashMap<String, Object> resultHash,
//			String seiOpSvcKeiNo
//	)
//	{
//		// まずは全条件のNullマッピング
//		fillCAANMSGNullMapping(template, new EKK0441A010CBSMsg().getContents());
//
//		// テンプレートID(SIFのID)
//		template.set(EKK0441A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441A010);
//
//		// 機能コード--請求オプションサービス契約一意照会(カレント)
//		template.set(EKK0441A010CBSMsg.FUNC_CODE, "2");
//
//		// ＫＥＹ＿請求オプションサービス契約番号
//		template.set(EKK0441A010CBSMsg.KEY_SEIOPSVC_KEI_NO, seiOpSvcKeiNo);
//
//		// ＫＥＹ＿予約適用年月日
//		template.set(EKK0441A010CBSMsg.KEY_RSV_APLY_YMD, oPE_DATE);
//
//		// ＫＥＹ＿世代登録年月日時分（形だけの設定）
//		template.set(EKK0441A010CBSMsg.KEY_GENE_ADD_DTM, oPE_DATE + "000000000");
//	}
	
	
	
	/**
	 * 機器提供サービス契約一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0341A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0341A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341A010CBSMsg.class.getName());
		mappingEKK0341A010InMsg(template, inHash, resultHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0341A010, mappingEKK0341A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0341A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0341A010のテンプレートリスト
	 * @return EKK0341A010の結果部分
	 */
	private HashMap<String, Object> mappingEKK0341A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST);
		retHash = msgList[0].getMsgData();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0341A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void mappingEKK0341A010InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0341A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0341A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341A010);

		//機能コード--機器提供サービス契約一意照会(ここだけはカレント)
		template.set(EKK0341A010CBSMsg.FUNC_CODE, "2");

		//課金先一意照会の結果取得
		HashMap<String, Object> eKK0321A010Hash = null;
		eKK0321A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0321A010);

		//ＫＥＹ＿機器提供サービス契約番号
		template.set(EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, eKK0321A010Hash.get(EKK0321A010CBSMsg1List.KKTK_SVC_KEI_NO));
		
		//ＫＥＹ＿予約適用年月日
		template.set(EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, oPE_DATE);
		
		//ＫＥＹ＿世代登録年月日時分（形だけの設定）
		template.set(EKK0341A010CBSMsg.KEY_GENE_ADD_DTM, oPE_DATE + "000000000");
	}
	
	
	
	/**
	 * サービス契約停止SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0081C050SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0081C050への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081C050CBSMsg.class.getName());
		mappingEKK0081C050InMsg(template, inHash, resultHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0081C050, mappingEKK0081C050SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0081C050の結果をHashとして抽出する
	 * @param resultMsgs EKK0081C050のテンプレートリスト
	 * @return EKK0081C050の結果部分
	 */
	private HashMap<String, Object> mappingEKK0081C050SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0081C050の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void mappingEKK0081C050InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0081C050CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0081C050CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081C050);

		//機能コード--チェック＆登録
		template.set(EKK0081C050CBSMsg.FUNC_CODE, "1");
		
		
		//サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		//サービス契約番号
		template.set(EKK0081C050CBSMsg.SVC_KEI_NO, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
		
		//サービス停止年月日
		template.set(EKK0081C050CBSMsg.SVC_STP_YMD, oPE_DATE);
		
		//サービス停止理由コード
		template.set(EKK0081C050CBSMsg.SVC_STP_RSN_CD, SVC_STP_RSN_CD_USESTP);
		
		//異動区分(利用停止)固定
		template.set(EKK0081C050CBSMsg.IDO_DIV, IDO_DIV_USESTP);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0081C050CBSMsg.UPD_DTM_BF, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.LAST_UPD_DTM));
	}
	
	
	
	/**
	 * サービス契約内訳停止SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0161C040SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0161C040への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161C040CBSMsg.class.getName());
		mappingEKK0161C040InMsg(template, inHash, resultHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0161C040, mappingEKK0161C040SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0161C040の結果をHashとして抽出する
	 * @param resultMsgs EKK0161C040のテンプレートリスト
	 * @return EKK0161C040の結果部分
	 */
	private HashMap<String, Object> mappingEKK0161C040SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0161C040の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void mappingEKK0161C040InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0161C040CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0161C040CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161C040);

		//機能コード--チェック＆登録
		template.set(EKK0161C040CBSMsg.FUNC_CODE, "1");
		
		//サービス契約内訳番号
		template.set(EKK0161C040CBSMsg.SVC_KEI_UCWK_NO, inHash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO));
		
		//サービス停止年月日
		template.set(EKK0161C040CBSMsg.SVC_STP_YMD, oPE_DATE);

		//サービス停止理由コード
		template.set(EKK0161C040CBSMsg.SVC_STP_RSN_CD, SVC_STP_RSN_CD_USESTP);

		//異動区分(利用停止)固定
		template.set(EKK0161C040CBSMsg.IDO_DIV, IDO_DIV_USESTP);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0161C040CBSMsg.UPD_DTM_BF, inHash.get(EKK0161A010CBSMsg1List.LAST_UPD_DTM));
	}
	
	
	
	/**
	 * オプションサービス契約停止SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0351C040SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0351C040への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351C040CBSMsg.class.getName());
		mappingEKK0351C040InMsg(template, inHash, resultHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0351C040, mappingEKK0351C040SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0351C040の結果をHashとして抽出する
	 * @param resultMsgs EKK0351C040のテンプレートリスト
	 * @return EKK0351C040の結果部分
	 */
	private HashMap<String, Object> mappingEKK0351C040SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0351C040の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void mappingEKK0351C040InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0351C040CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0351C040CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0351C040);

		//機能コード--チェック＆登録
		template.set(EKK0351C040CBSMsg.FUNC_CODE, "1");
		
		//オプションサービス契約一意照会の結果取得
		HashMap<String, Object> eKK0351A010Hash = null;
		eKK0351A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0351A010);

		//オプションサービス契約番号
		template.set(EKK0351C040CBSMsg.OP_SVC_KEI_NO, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
		
		//サービス停止年月日
		template.set(EKK0351C040CBSMsg.SVC_STP_YMD, oPE_DATE);
		
		//サービス停止理由コード
		template.set(EKK0351C040CBSMsg.SVC_STP_RSN_CD, SVC_STP_RSN_CD_USESTP);

		//異動区分(利用停止)固定
		template.set(EKK0351C040CBSMsg.IDO_DIV, IDO_DIV_USESTP);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0351C040CBSMsg.UPD_DTM_BF, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.LAST_UPD_DTM));
	}
	
	
	
	/**
	 * サブオプションサービス契約停止SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0401C040SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0401C040への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401C040CBSMsg.class.getName());
		mappingEKK0401C040InMsg(template, inHash, resultHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0401C040, mappingEKK0401C040SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0401C040の結果をHashとして抽出する
	 * @param resultMsgs EKK0401C040のテンプレートリスト
	 * @return EKK0401C040の結果部分
	 */
	private HashMap<String, Object> mappingEKK0401C040SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0401C040の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void mappingEKK0401C040InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0401C040CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0401C040CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0401C040);

		//機能コード--チェック＆登録
		template.set(EKK0401C040CBSMsg.FUNC_CODE, "1");
		
		//オプションサービス契約番号
		template.set(EKK0401C040CBSMsg.OP_SVC_KEI_NO, inHash.get(EKK0401A010CBSMsg1List.OP_SVC_KEI_NO));
		
		//サブオプションサービス契約番号
		template.set(EKK0401C040CBSMsg.SBOP_SVC_KEI_NO, inHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_NO));
		
		//サービス停止年月日
		template.set(EKK0401C040CBSMsg.SVC_STP_YMD, oPE_DATE);
		
		//サービス停止理由コード
		template.set(EKK0401C040CBSMsg.SVC_STP_RSN_CD, SVC_STP_RSN_CD_USESTP);

		//異動区分(利用停止)固定
		template.set(EKK0401C040CBSMsg.IDO_DIV, IDO_DIV_USESTP);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0401C040CBSMsg.UPD_DTM_BF, inHash.get(EKK0401A010CBSMsg1List.LAST_UPD_DTM));
	}
	
	
	
	/**
//	 * 請求オプションサービス契約停止SIFを呼び出し
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param inHash 条件用Hash
//	 * @param resultHash 結果のハッシュ
//	 * @return サービスインターフェースのリターンコード
//	 * @throws RequestParameterException, SCException 例外時にスローされます
//	 */
//	private int callEKK0441C080SC(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> inHash,
//			HashMap<String, Object> resultHash
//	) throws Throwable
//	{
//		HashMap<String, Object> sIFRequest = null;
//		CAANMsg[] resultMsgs = null;
//		CAANMsg template = null;
//		ServiceComponentRequestInvoker scCall = null;
//		Map<?, ?> sIFResult = null;
//		int status = 0;
//
//		// サービスIF共通の情報を設定
//		sIFRequest = editInMsgCmn(param);
//
//		// EKK0441C080への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0441C080CBSMsg.class.getName());
//		mappingEKK0441C080InMsg(template, inHash, resultHash);
//		editBasicCmn(param, template);
//
//		// リクエスト用クラスの設定
//		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
//
//		// SC呼び出しクラスの生成
//		scCall = new ServiceComponentRequestInvoker();
//
//		// SIFの呼び出し
//		sIFResult = scCall.run(sIFRequest, handle);
//
//		// エラーマッピング処理
//		editResultRP(sIFResult, param);
//
//		// エラーチェック
//		errChk(sIFResult);
//
//		// 結果の取得
//		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
//
//		// ステータスコードの取得
//		status = template.getInt(JCMConstants.STATUS_INT_KEY);
//
//		// ステータスが0以外はエラーとなっている
//		if(status == 0)
//		{
//			resultHash.put(TEMPLATE_ID_EKK0441C080, mappingEKK0441C080SCOutMsg(resultMsgs));
//		}
//
//		return status;
//	}
	
//	/**
//	 * EKK0441C080の結果をHashとして抽出する
//	 * @param resultMsgs EKK0441C080のテンプレートリスト
//	 * @return EKK0441C080の結果部分
//	 */
//	private HashMap<String, Object> mappingEKK0441C080SCOutMsg(CAANMsg[] resultMsgs)
//	{
//		
//		HashMap<String, Object> retHash = null;
//		CAANMsg msg = null;
//		
//		//結果の抽出
//		msg = resultMsgs[0];
//		
//		//結果の取得
//		retHash = msg.getHashMap();
//		
//		return retHash;
//	}
	
//	/**
//	 * templateに対してEKK0441C080の条件に関する部分を設定する
//	 * @param template 条件の設定先
//	 * @param inHash 設定条件
//	 * @param resultHash アプリ固有のパラメータ
//	 */
//	private void mappingEKK0441C080InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
//	{
//
//		//まずは全条件のNullマッピング
//		fillCAANMSGNullMapping(template, new EKK0441C080CBSMsg().getContents());
//		
//		//テンプレートID(SIFのID)
//		template.set(EKK0441C080CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441C080);
//
//		//機能コード--チェック＆登録
//		template.set(EKK0441C080CBSMsg.FUNC_CODE, "1");
//		
//		//請求オプションサービス契約一意照会の結果取得
//		HashMap<String, Object> eKK0441A010Hash = null;
//		eKK0441A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0441A010);
//
//		//請求オプションサービス契約番号
//		template.set(EKK0441C080CBSMsg.SEIOPSVC_KEI_NO, eKK0441A010Hash.get(EKK0441A010CBSMsg1List.SEIOPSVC_KEI_NO));
//		
//		//サービス停止年月日
//		template.set(EKK0441C080CBSMsg.SVC_STP_YMD, oPE_DATE);
//		
//		//サービス停止理由コード
//		template.set(EKK0441C080CBSMsg.SVC_STP_RSN_CD, SVC_STP_RSN_CD_USESTP);
//
//		//異動区分(利用停止)固定
//		template.set(EKK0441C080CBSMsg.IDO_DIV, IDO_DIV_USESTP);
//		
//		//更新年月日時分秒(更新前)
//		template.set(EKK0441C080CBSMsg.UPD_DTM_BF, eKK0441A010Hash.get(EKK0441A010CBSMsg1List.LAST_UPD_DTM));
//	}
	
	
	
	/**
	 * 機器提供サービス契約停止SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0341C120SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0341C120への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341C120CBSMsg.class.getName());
		mappingEKK0341C120InMsg(template, inHash, resultHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0341C120, mappingEKK0341C120SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0341C120の結果をHashとして抽出する
	 * @param resultMsgs EKK0341C120のテンプレートリスト
	 * @return EKK0341C120の結果部分
	 */
	private HashMap<String, Object> mappingEKK0341C120SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0341C120の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void mappingEKK0341C120InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0341C120CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0341C120CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341C120);

		//機能コード--チェック＆登録
		template.set(EKK0341C120CBSMsg.FUNC_CODE, "1");
		
		//機器提供サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0341A010Hash = null;
		eKK0341A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341A010);

		//機器提供サービス契約番号
		template.set(EKK0341C120CBSMsg.KKTK_SVC_KEI_NO, eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
		
		//サービス停止年月日
		template.set(EKK0341C120CBSMsg.SVC_STP_YMD, oPE_DATE);
		
		//サービス停止理由コード
		template.set(EKK0341C120CBSMsg.SVC_STP_RSN_CD, SVC_STP_RSN_CD_USESTP);

		//異動区分(利用停止)固定
		template.set(EKK0341C120CBSMsg.IDO_DIV, IDO_DIV_USESTP);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0341C120CBSMsg.UPD_DTM_BF, eKK0341A010Hash.get(EKK0341A010CBSMsg1List.LAST_UPD_DTM));
	}
	
	
	
	/**
	 * 進捗登録SIFを呼び出し
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	結果のハッシュ
	 * @return				サービスインターフェースのリターンコード
	 * @throws	RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK1091D010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String svc_kei_no
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK1091D010への呼び出しパラメータ設定
		template = new CAANMsg(EKK1091D010CBSMsg.class.getName());
		mappingEKK1091D010SCInMsg(template, inHash, svc_kei_no);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK1091D010, mappingEKK1091D010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK1091D010の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK1091D010の結果部分
	 */
	private HashMap<String, Object> mappingEKK1091D010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST);
		retHash = msgList[0].getMsgData();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK1091D010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK1091D010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String svc_kei_no)
	{
		// まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK1091D010CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EKK1091D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1091D010);

		// 機能コード
		template.set(EKK1091D010CBSMsg.FUNC_CODE, "1");

		// 請求契約番号
		template.set(EKK1091D010CBSMsg.SEIKY_KEI_NO, inHash.get(SEIKY_KEI_NO));

		// サービス契約番号
		template.set(EKK1091D010CBSMsg.SVC_KEI_NO, svc_kei_no);

		// 異動区分(利用停止)
		template.set(EKK1091D010CBSMsg.IDO_DIV, IDO_DIV_USESTP);

		// 異動年月日時分秒(システム日時)
		template.set(EKK1091D010CBSMsg.IDO_DTM, JCCBPCommon.getSysDateTimeStamp());

		// 進捗ステータス(利用停止完了)
		template.set(EKK1091D010CBSMsg.PRG_STAT, PRG_STAT_USESTP_FIN);

		// 異動理由コード(請求料金滞納)
		CAANMsg idoRsnTemp = new CAANMsg(EKK1091D010CBSMsg1List.class.getName());
		idoRsnTemp.set(EKK1091D010CBSMsg1List.IDO_RSN_CD, IDO_RSN_CD_USESTP_OTHER);
		// 異動理由メモ
		idoRsnTemp.setNull(EKK1091D010CBSMsg1List.IDO_RSN_MEMO);

		// 異動理由明細
		CAANMsg[] list = new CAANMsg[1];
		list[0] = idoRsnTemp;
		template.set(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST, list);
	}
	
	/**
	 * サービスオーダ発行CCのマッピング処理
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param hakkoSODDataKey サービスオーダ発行CCの業務パラメータキー
	 * @param hakkoSODDataList サービスオーダ発行CCの業務パラメータ情報
	 * @param resultHash 照会結果
	 * @throws RequestParameterException
	 */
	private void mappingHakkoSODCC(
			IRequestParameterReadWrite param,
			String hakkoSODDataKey,
			ArrayList<HashMap<String, Object>> hakkoSODDataList,
			HashMap<String, Object> resultHash)
	throws RequestParameterException
	{
		// 対象データマップ
		HashMap<String, Object> sodTrgtData = (HashMap<String, Object>)param.getData(hakkoSODDataKey);
		if (sodTrgtData == null)
		{
			sodTrgtData = new HashMap<String, Object>();
			param.setData(hakkoSODDataKey, sodTrgtData);
		}
		
		// サービスオーダ発行処理の引数を生成
		// 対象データリスト
		ArrayList<HashMap<String, Object>> trgtDataList = new ArrayList<HashMap<String, Object>>();
		sodTrgtData.put(JKKHakkoSODConstCC.TRGT_DATA_LIST, trgtDataList);
		for (HashMap<String, Object> hakkoSODData: hakkoSODDataList)
		{
			// SODマップ
			HashMap<String, Object> sodMap = new HashMap<String, Object>();
			trgtDataList.add(sodMap);
			// SOD基本情報
			HashMap<String, Object> sodKihonInfo = new HashMap<String, Object>();
			sodKihonInfo.put(JKKHakkoSODConstCC.INFO_SYSID, (String)hakkoSODData.get(JKKHakkoSODConstCC.INFO_SYSID));
			sodKihonInfo.put(JKKHakkoSODConstCC.INFO_IDO_DIV, IDO_DIV_USESTP);
			sodMap.put(JKKHakkoSODConstCC.SOD_KIHON_INFO, sodKihonInfo);
			// サービス契約情報
			HashMap<String, Object> svcKeiInfo = new HashMap<String, Object>();
			svcKeiInfo.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, (String)hakkoSODData.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO));

			// サービス契約情報
			HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
			// 料金グループコード取得
			String prcGrpCd   = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
			// サービス契約ステータス取得
			String svcKeiStat = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
			// 中断中のイーモバイルでない場合 ※中断中のイーモバイルは既に本体の一時停止オーダが発行済のため、利用停止時には発行しない
			if (!(JKKSvcConst.PRC_GRP_CD_MOB_EM.equals(prcGrpCd) && SVC_KEI_STAT_PAUSE.equals(svcKeiStat)))
			{
				svcKeiInfo.put(JKKHakkoSODConstCC.INFO_SAKI_SVC_KEI_NO, (String)hakkoSODData.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO));
			}

			sodMap.put(JKKHakkoSODConstCC.SVC_KEI_INFO, svcKeiInfo);
			// サービス契約内訳情報
			HashMap<String, Object> svcKeiUcwkInfo = new HashMap<String, Object>();
			String svcKeiUcwkNo = (String)hakkoSODData.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);
			if (null != svcKeiUcwkNo && !svcKeiUcwkNo.isEmpty())
			{
				svcKeiUcwkInfo.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, (String)hakkoSODData.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO));
				svcKeiUcwkInfo.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, (String)hakkoSODData.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM));
			}
			sodMap.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO, svcKeiUcwkInfo);
			// オプションサービス契約情報
			sodMap.put(JKKHakkoSODConstCC.OPSVKEI_INFO, new HashMap<String, Object>());
			// 機器提供サービス契約情報
			HashMap<String, Object> kktsvkeiInfo = new HashMap<String, Object>();
			sodMap.put(JKKHakkoSODConstCC.KKTSVKEI_INFO, kktsvkeiInfo);
		}
		// 機能コード
		sodTrgtData.put(JCMConstants.FUNC_CODE_KEY, JPCModelConstant.FUNC_CD_1);
	}
	

	/**
	 * 番ポ工事一覧照会（番ポ申込書タイプ）サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callETU0011B018SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiNo,
			String bmpMskmshoTypeCd,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// ETU0011B018への呼び出しパラメータ設定
		template = new CAANMsg(ETU0011B018CBSMsg.class.getName());
		mappingETU0011B018InMsg(template, svcKeiNo, bmpMskmshoTypeCd);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_ETU0011B018, mappingETU0011B018SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * ETU0011B018の結果をHashとして抽出する
	 * @param resultMsgs ETU0011B018のテンプレートリスト
	 * @return ETU0011B018の結果部分
	 */
	private ArrayList<HashMap<String, Object>> mappingETU0011B018SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		ArrayList<HashMap<String, Object>> retHashList = null;
		CAANMsg[] msgs = null;
		
		//結果の抽出
		retHashList = new ArrayList<HashMap<String, Object>>();
		msgs = resultMsgs[0].getCAANMsgList(ETU0011B018CBSMsg.ETU0011B018CBSMSG1LIST);
		for(int i = 0 ; i < msgs.length ; i++)
		{
			retHashList.add(msgs[i].getMsgData());
		}
		
		return retHashList;
	}
	
	/**
	 * templateに対してETU0011B018の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingETU0011B018InMsg(CAANMsg template, String svcKeiNo, String bmpMskmshoTypeCd)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new ETU0011B018CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(ETU0011B018CBSMsg.TEMPLATEID, TEMPLATE_ID_ETU0011B018);

		//機能コード-- 番ポ工事一覧照会（番ポ申込書タイプ）
		template.set(ETU0011B018CBSMsg.FUNC_CODE, "1");

		//ＫＥＹ＿サービス契約番号
		template.set(ETU0011B018CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿番ポ申込書タイプコード
		template.set(ETU0011B018CBSMsg.KEY_BMP_MSKMSHO_TYPE_CD, bmpMskmshoTypeCd);
	}
	
// IT1-2013-0000847 2013-04-16 ADD_END


	/**
	 * 同一利用場所サービス契約一覧照会S-IF
	 * 
	 * @param param リクエストパラメータ
	 * @param handle ｾｯｼｮﾝハンドル
	 * @param svcKeiNo 検索キーのサービス契約番号
	 * @param resultHash 照会結果バッファ
	 * @return S-IFステータス
	 * @throws Throwable 任意の例外
	 * @since 2013-07-07 巻３LT-2013-0000242（eo光ネットの利用停止でＶ−ＯＮＵまで停止してしまう）
	 */
	private int callEKK0081B009SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiNo,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0081B009への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081B009CBSMsg.class.getName());
		mappingEKK0081B009InMsg(template, svcKeiNo);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0081B009, mappingEKK0081B009SCOutMsg(resultMsgs));
		}

		return status;
	}


	/**
	 * EKK0081B009の結果をHashとして抽出する
	 * 
	 * @param resultMsgs EKK0081B009のテンプレートリスト
	 * @return EKK0081B009の結果部分
	 * @since 2013-07-12 巻３IT2-2013-0000620(LT-2013-0000242)（eo光ネットの利用停止でＶ−ＯＮＵまで停止してしまう）
	 */
	private ArrayList<HashMap<String, Object>> mappingEKK0081B009SCOutMsg(CAANMsg[] resultMsgs)
	{
		//結果の抽出
		ArrayList<HashMap<String, Object>> retHashList = new ArrayList<HashMap<String, Object>>();
		
		CAANMsg[] msgs = resultMsgs[0].getCAANMsgList(EKK0081B009CBSMsg.EKK0081B009CBSMSG1LIST);
		
		for(int i = 0 ; i < msgs.length ; i++)
		{
			retHashList.add(msgs[i].getMsgData());
		}
		
		return retHashList;
	}
	
	
	/**
	 * templateに対してEKK0081B009の条件に関する部分を設定する
	 * 
	 * @param template 条件の設定先
	 * @param svcKeiNo サービス契約番号
	 * @param sysid ＳＹＳＩＤ
	 * @since 2013-07-12 巻３IT2-2013-0000620(LT-2013-0000242)（eo光ネットの利用停止でＶ−ＯＮＵまで停止してしまう）
	 */
	private void mappingEKK0081B009InMsg(CAANMsg template, String svcKeiNo)
	{
		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0081B009CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0081B009CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B009);

		//機能コード
		template.set(EKK0081B009CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		//ＫＥＹ＿サービス契約番号
		template.set(EKK0081B009CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}


	/**
	 * サービス対象機器提供サービス契約一覧照会S-IF
	 * 
	 * @param param
	 * @param handle
	 * @param svcKeiNo
	 * @param resultHash
	 * @return
	 * @throws Throwable 
	 * @since 2013-07-12 巻３IT2-2013-0000615（他契約と同請求のeo光ＴＶのV-ONUが利用停止にならない）
	 */
	private int callEKK0341B022SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiNo,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0341B022への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341B022CBSMsg.class.getName());
		mappingEKK0341B022InMsg(template, svcKeiNo);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0341B022, mappingEKK0341B022SCOutMsg(resultMsgs));
		}

		return status;
	}


	/**
	 * EKK0341B022の結果をHashとして抽出する
	 * 
	 * @param resultMsgs EKK0341B022のテンプレートリスト
	 * @return EKK0341B022の結果部分
	 * @since 2013-07-12 巻３IT2-2013-0000615（他契約と同請求のeo光ＴＶのV-ONUが利用停止にならない）
	 */
	private ArrayList<HashMap<String, Object>> mappingEKK0341B022SCOutMsg(CAANMsg[] resultMsgs)
	{
		//結果の抽出
		ArrayList<HashMap<String, Object>> retHashList = new ArrayList<HashMap<String, Object>>();
		
		CAANMsg[] msgs = resultMsgs[0].getCAANMsgList(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST);
		
		for(int i = 0 ; i < msgs.length ; i++)
		{
			retHashList.add(msgs[i].getMsgData());
		}
		
		return retHashList;
	}


	/**
	 * templateに対してEKK0341B022の条件に関する部分を設定する
	 * 
	 * @param template 条件の設定先
	 * @param svcKeiNo サービス契約番号
	 * @param sysid ＳＹＳＩＤ
	 * @since 2013-07-12 巻３IT2-2013-0000615（他契約と同請求のeo光ＴＶのV-ONUが利用停止にならない）
	 */
	private void mappingEKK0341B022InMsg(CAANMsg template, String svcKeiNo)
	{
		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0341B022CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0341B022CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341B022);

		//機能コード
		template.set(EKK0341B022CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		//ＫＥＹ＿サービス契約番号
		template.set(EKK0341B022CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		
		//ＫＥＹ＿機器提供サービス契約ステータス
		template.setNull(EKK0341B022CBSMsg.KEY_KKTK_SVC_KEI_STAT);
	}

	/**
	 * 持ちうるフィールドに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);
			
		}
	}
	
	/**
	 * 条件部の共通する項目の設定
	 * @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);
		
	}
	
	/**
	 * サービス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;
	}

	
	/**
	 * 利用停止対象サービス契約番号か判定する<br>
	 * <br>
	 * @param targetSvcKeiNo 対象サービス契約番号
	 * @param svcKeiNo サービス契約番号
	 * @return ret
	 */
	private boolean isSvcKeiTargetData(String targetSvcKeiNo, String svcKeiNo)
	{
		boolean ret = false;

		// 課金先のサービス契約番号と比較し、一致する場合
		if (targetSvcKeiNo.equals(svcKeiNo))
		{
			// 利用停止を実施する
			ret = true;
		}
		return ret;
	}

	/**
	 * サービスI/F実行用の共通部を設定します<br>
	 * <br>
	 * 
	 * @param param リクエストパラメータ
	 * @param handle ｾｯｼｮﾝハンドル
	 * @param resultHash 照会結果バッファ
	 * @param targetSvcKeiNo 対象サービス契約番号
	 * @param eKK0351A010Hash SSI/F
	 * @return ret
	 * @throws Throwable 任意の例外
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	private boolean isOpSvcKeiTargetData(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> resultHash,
			String targetSvcKeiNo,
			HashMap<String, Object> eKK0351A010Hash
	) throws Throwable
	{
		boolean ret = false;

		// サービス契約番号取得
		String svcKeiNo = (String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.SVC_KEI_NO);

		// サービス契約番号取得できない場合
		if (svcKeiNo == null || "".equals(svcKeiNo))
		{
			// サービス契約内訳番号取得
			String svcKeiUcwkNo = (String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.SVC_KEI_UCWK_NO);

			// +++++++++++++++++++++++++++++++++++++++
			// サービス契約内訳一意照会
			// +++++++++++++++++++++++++++++++++++++++
			callEKK0161A010SC(param, handle, svcKeiUcwkNo, resultHash);

			HashMap<String, Object> eKK0161A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0161A010);

			// サービス契約番号取得
			svcKeiNo = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_NO);
		}

		// 課金先のサービス契約番号と比較し、一致する場合
		if (targetSvcKeiNo.equals(svcKeiNo))
		{
			// 利用停止を実施する
			ret = true;
		}

		return ret;
	}

	/**
	 * サービスI/F実行用の共通部を設定します<br>
	 * <br>
	 * 
	 * @param param リクエストパラメータ
	 * @param handle ｾｯｼｮﾝハンドル
	 * @param resultHash 照会結果バッファ
	 * @param targetSvcKeiNo 対象サービス契約番号
	 * @param eKK0321A010Hash SSI/F
	 * @return ret
	 * @throws Throwable 任意の例外
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	private boolean isSbOpSvcKeiTargetData(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> resultHash,
			String targetSvcKeiNo,
			HashMap<String, Object> eKK0321A010Hash
	) throws Throwable
	{
		boolean ret = false;

		// +++++++++++++++++++++++++++++++++++++++
		// オプションサービス契約一意照会
		// +++++++++++++++++++++++++++++++++++++++
		callEKK0351A010SC(param, handle, eKK0321A010Hash, resultHash);

		HashMap<String, Object> eKK0351A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0351A010);

		// サービス契約番号取得
		String svcKeiNo = (String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.SVC_KEI_NO);

		// サービス契約番号取得できない場合
		if (svcKeiNo == null || "".equals(svcKeiNo))
		{
			// サービス契約内訳番号取得
			String svcKeiUcwkNo = (String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.SVC_KEI_UCWK_NO);

			// +++++++++++++++++++++++++++++++++++++++
			// サービス契約内訳一意照会
			// +++++++++++++++++++++++++++++++++++++++
			callEKK0161A010SC(param, handle, svcKeiUcwkNo, resultHash);

			HashMap<String, Object> eKK0161A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0161A010);

			// サービス契約番号取得
			svcKeiNo = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_NO);
		}

		// 課金先のサービス契約番号と比較し、一致する場合
		if (targetSvcKeiNo.equals(svcKeiNo))
		{
			// 利用停止を実施する
			ret = true;
		}

		return ret;
	}

	/**
	 * サービスI/F実行用の共通部を設定します<br>
	 * <br>
	 * 
	 * @param param リクエストパラメータ
	 * @param handle ｾｯｼｮﾝハンドル
	 * @param resultHash 照会結果バッファ
	 * @param targetSvcKeiNo 対象サービス契約番号
	 * @param eKK0341A010Hash SSI/F
	 * @return ret
	 * @throws Throwable 任意の例外
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	private boolean isKktkSvcKeiTargetData(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String targetSvcKeiNo,
			HashMap<String, Object> eKK0341A010Hash
	) throws Throwable
	{
		boolean ret = false;

		// 親契約識別コード
		String oyaKeiSkbtCd = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.OYA_KEI_SKBT_CD);

		String svcKeiNo = "";

		if (OYA_KEI_SKBT_CD_SVC_KEI.equals(oyaKeiSkbtCd))
		{
			// サービス契約番号
			svcKeiNo = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.SVC_KEI_NO);

			if (targetSvcKeiNo.equals(svcKeiNo))
			{
				ret = true;
			}
		}
		else if (OYA_KEI_SKBT_CD_KAISEN.equals(oyaKeiSkbtCd))
		{
			// サービス契約回線内訳番号取得
			String svcKeiKaisenUcwkNo = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);

			// 今見ているサービス契約番号に対応するサービス契約回線内訳番号を検索
			callEKK0251B001SC(param, handle, requestParam, resultHash);

			ArrayList<HashMap<String, Object>> eKK0251B001HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0251B001);

			for (int i = 0; i < eKK0251B001HashList.size(); i++)
			{
				HashMap<String, Object> eKK0251B001Hash = eKK0251B001HashList.get(i);

				if (svcKeiKaisenUcwkNo.equals(eKK0251B001Hash.get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)))
				{
					ret = true;
					break;
				}
			}
		}
		else if (OYA_KEI_SKBT_CD_SVC_UCWK.equals(oyaKeiSkbtCd))
		{
			// サービス契約内訳番号取得
			String svcKeiUcwkNo = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO);

			// +++++++++++++++++++++++++++++++++++++++
			// サービス契約内訳一意照会
			// +++++++++++++++++++++++++++++++++++++++
			callEKK0161A010SC(param, handle, svcKeiUcwkNo, resultHash);

			HashMap<String, Object> eKK0161A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0161A010);

			// サービス契約番号取得
			svcKeiNo = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_NO);

			if (targetSvcKeiNo.equals(svcKeiNo))
			{
				ret = true;
			}
		}

		return ret;
	}

	/**
	 * サービス契約回線内訳一覧照会（サービス契約番号）SIFを呼び出し
	 * @param	param			リクエストパラメータ	
	 * @param	handle			セッションハンドル
	 * @param	requestParam	条件用Hash
	 * @param	resultHash		結果のハッシュ
	 * @return					サービスインターフェースのリターンコード
	 * @throws	RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0251B001SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0251B001への呼び出しパラメータ設定
		template = new CAANMsg(EKK0251B001CBSMsg.class.getName());
		mappingEKK0251B001InMsg(template, requestParam);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0251B001, mappingEKK0251B001SCOutMsg(resultMsgs));
		}

		return status;
	}

	/**
	 * templateに対してEKK0251B001の条件に関する部分を設定する
	 * @param	template		条件の設定先
	 * @param	requestParam	アプリ固有のパラメータ
	 */
	private void mappingEKK0251B001InMsg(CAANMsg template, HashMap<String, Object> requestParam)
	{
		// まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0251B001CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EKK0251B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251B001);

		// 機能コード--課金先一覧照会
		template.set(EKK0251B001CBSMsg.FUNC_CODE, "1");

		// ＫＥＹ＿サービス契約番号
		template.set(EKK0251B001CBSMsg.KEY_SVC_KEI_NO, requestParam.get(SVC_KEI_NO));
	}
	
//	/**
//	 * サービス契約一覧照会（SYSID）2サービスIFを呼び出し
//	 * @param	param			リクエストパラメータ
//	 * @param	handle			セッションハンドル
//	 * @param	requestParam	条件用Hash
//	 * @param	resultHash		結果のハッシュ
//	 * @return					サービスインターフェースのリターンコード
//	 * @throws	RequestParameterException, SCException 例外時にスローされます
//	 */
//	private int callEKK0081B004SC(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String SYSID,
//			HashMap<String, Object> resultHash
//	) throws Throwable
//	{
//		HashMap<String, Object> sIFRequest = null;
//		CAANMsg[] resultMsgs = null;
//		CAANMsg template = null;
//		ServiceComponentRequestInvoker scCall = null;
//		Map<?, ?> sIFResult = null;
//		int status = 0;
//
//		// サービスIF共通の情報を設定
//		sIFRequest = editInMsgCmn(param);
//
//		// EKK0081B004への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0081B004CBSMsg.class.getName());
//		mappingEKK0081B004InMsg(template, SYSID);
//		editBasicCmn(param, template);
//
//		// リクエスト用クラスの設定
//		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
//
//		// SC呼び出しクラスの生成
//		scCall = new ServiceComponentRequestInvoker();
//
//		// SIFの呼び出し
//		sIFResult = scCall.run(sIFRequest, handle);
//
//		// エラーマッピング処理
//		editResultRP(sIFResult, param);
//
//		// エラーチェック
//		errChk(sIFResult);
//
//		// 結果の取得
//		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
//
//		// ステータスコードの取得
//		status = template.getInt(JCMConstants.STATUS_INT_KEY);
//
//		// ステータスが0以外はエラーとなっている
//		if(status == 0)
//		{
//			resultHash.put(TEMPLATE_ID_EKK0081B004, mappingEKK0081B004SCOutMsg(resultMsgs));
//		}
//
//		return status;
//	}


	/**
	 * EKK0251B001の結果をHashとして抽出する
	 * @param	resultMsgs	EKK0081B526のテンプレートリスト
	 * @return				EKK0081B526の結果部分
	 */
	private ArrayList<HashMap<String, Object>> mappingEKK0251B001SCOutMsg(CAANMsg[] resultMsgs)
	{
		ArrayList<HashMap<String, Object>> retHashList = null;
		CAANMsg[] msgs = null;

		// 結果の抽出
		retHashList = new ArrayList<HashMap<String, Object>>();
		msgs = resultMsgs[0].getCAANMsgList(EKK0251B001CBSMsg.EKK0251B001CBSMSG1LIST);
		for(int i = 0 ; i < msgs.length ; i++)
		{
			retHashList.add(msgs[i].getMsgData());
		}

		return retHashList;
		
	}

//	/**
//	 * templateに対してEKK0081B004の条件に関する部分を設定する
//	 * @param	template		条件の設定先
//	 * @param	requestParam	設定条件
//	 */
//	private void mappingEKK0081B004InMsg(CAANMsg template, String SYSID)
//	{
//		// まずは全条件のNullマッピング
//		fillCAANMSGNullMapping(template, new EKK0081B004CBSMsg().getContents());
//
//		// テンプレートID
//		template.set(EKK0081B004CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B004);
//
//		// 機能コード（デフォルト：１）
//		template.set(EKK0081B004CBSMsg.FUNC_CODE, "1");
//
//		// SYSIDの設定
//		template.set(EKK0081B004CBSMsg.KEY_SYSID, (String)SYSID);
//		
//		// 表示件数
//		template.set(EKK0081B004CBSMsg.DISPLAY_NUM , "10000");
//
//		// 表示ページ数
//		template.set(EKK0081B004CBSMsg.DISPLAY_PAGE_NUM , "1");
//
//		// 最大取得件数
//		template.set(EKK0081B004CBSMsg.MAX_SEARCH_NUM , "10000");
//
//	}

//	/**
//	 * EKK0081B526の結果をHashとして抽出する
//	 * @param	resultMsgs	EKK0081B526のテンプレートリスト
//	 * @return				EKK0081B526の結果部分
//	 */
//	private ArrayList<HashMap<String, Object>> mappingEKK0081B004SCOutMsg(CAANMsg[] resultMsgs)
//	{
//		ArrayList<HashMap<String, Object>> retHashList = null;
//		CAANMsg[] msgs = null;
//
//		// 結果の抽出
//		retHashList = new ArrayList<HashMap<String, Object>>();
//		msgs = resultMsgs[0].getCAANMsgList(EKK0081B004CBSMsg.EKK0081B004CBSMSG1LIST);
//		for(int i = 0 ; i < msgs.length ; i++)
//		{
//			retHashList.add(msgs[i].getMsgData());
//		}
//
//		return retHashList;
//	}



	/**
	 * <pre>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 * 
	 * </pre>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	private void editResultRP(Map<?, ?> msgList, IRequestParameterReadWrite param) throws Throwable 
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		// テンプレートID、ステータス取得
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if (returnCode.intValue() != 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);
		}

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
	}

	/**
	 * エラーチェック処理です。
	 * <br>
	 * @param msgList サービスインタフェース実行結果
	 * @return void
	 * @throws SCCallException 
	 */
	private static void errChk(Map<?, ?> msgList) 
	throws SCCallException
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		// ステータス
		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);

		if ((0 != returnCode.intValue()) || (0 != templateStatus))
		{
			String errMsg = "INVALID_RETURN_MESSAGE";
			throw new SCCallException(errMsg, String.valueOf(returnCode), templateStatus);
		}
	}
	
//	/**
//	 * 会員ISP決済状態コード更新用部品実行処理
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param trgt_data ターゲットデータ
//	 * @throws Throwable
//	 */
//	private void executeCtcMikstCdKoshin(
//			IRequestParameterReadWrite param,
//			SessionHandle handle, 
//			HashMap<String, Object> requestParam
//	) throws Throwable
//	{
//		//会員ISP決済状態コード更新用部品呼び出し
//		String workFixedText = "CtcMikstCdKoshin";
//		
//		HashMap<String, Object> trgt_data = new HashMap<String, Object>();
//		
//		// 更新対象のサービス契約番号
//		trgt_data.put(JKKCtcMikstCdKoshin.SVC_KEI_NO, (String)requestParam.get(SVC_KEI_NO));
//		
//		//会員ISP決済状態コード「１：すべてのISP決済先が利用停止中」に更新処理を呼出
//		JKKBpCommon.mikstCdKoshinStop(handle, param, trgt_data, workFixedText);
//
//	}
	
	/**
	 * 機器提供オプションサービス契約 利用停止処理
	 * @param	handle			セッションマネージャなどを持ったハンドル
	 * @param	param			モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam	リクエストパラメータ
	 * @param	resultHash		結果のハッシュ
	 * @param	prm_svc_kei_no	入力パラメータのサービス契約番号
	 * @param	kkopSvcKeiNo	機器オプションサービス契約番号
	 * @return					リターンコード(未使用なので固定値：正常とする)
	 * @throws	Throwable
	 */
	private int kkopSvcKei_UseStp(
			SessionHandle handle 
			,IRequestParameterReadWrite param
			,HashMap<String, Object> requestParam
			,HashMap<String, Object> resultHash
			,String prm_svc_kei_no
			,String kktkSvcKeiNo
	) throws Throwable
	{

		// 機器オプションサービス契約一覧照会（機器提供ＳＶ）
		callEKK2811B010SC(param, handle, requestParam, kktkSvcKeiNo, null, resultHash);
		
		ArrayList<HashMap<String, Object>> eKK2811B010HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK2811B010);
		
		if (eKK2811B010HashList != null && eKK2811B010HashList.size() > 0)
		{
			for (HashMap<String, Object> eKK0251B010HashListElement : eKK2811B010HashList)
			{
				// ■機器オプションサービス契約異動可否判定処理を呼出し、無条件で状態遷移可能な機器オプションか否かを判定します
				HashMap<String, Object> checkKkopIdoKhInputdata = new HashMap<String, Object>();
				
				// 機器オプションサービスコード
				checkKkopIdoKhInputdata.put(JKKKeiIdoKhCheckConstCC.KKOP_SVC_CD, (String)eKK0251B010HashListElement.get(EKK2811B010CBSMsg1List.KKOP_SVC_CD));
				
				// 異動区分
				checkKkopIdoKhInputdata.put(JKKKeiIdoKhCheckConstCC.IDO_DIV, IDO_DIV_USESTP);
				
				String checkKkopIdoKhFixedText ="checkKkopIdoKh";  
				
				param.setData(checkKkopIdoKhFixedText, checkKkopIdoKhInputdata);

				if (JKKBpCommon.checkKkopIdoKh(handle, param, checkKkopIdoKhInputdata, checkKkopIdoKhFixedText))
				{
					// ■機器オプションサービス契約のステータスに従い、利用停止を実行
					// 機器オプションサービス契約ステータス
					String kkopSvcKeiStat = (String)eKK0251B010HashListElement.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_STAT);
					
					if(SVC_KEI_STAT_TKC.equals(kkopSvcKeiStat) || SVC_KEI_STAT_PAUSE.equals(kkopSvcKeiStat))
					{
						// 機器オプションサービス契約一意照会
						callEKK2811A010SC(param, handle, (String)eKK0251B010HashListElement.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO), resultHash);
						
						HashMap<String, Object> eKK2811A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK2811A010);
						
						// 機器オプションサービス契約停止
						callEKK2811C080SC(param, handle, eKK2811A010Hash, resultHash);
						
					}
					else
					{
						// 契約状態が利用停止対象外のため、処理なし
					}
				}
				else
				{
					// 異動対象外の機器オプションのため、処理なし
				}
			}
		}
		else
		{
			// 機器オプションばないため、処理なし
		}

		return 0;
	}
	
	/**
	 * 機器オプションサービス契約一覧照会（機器提供ＳＶ）SIFを呼び出し
	 * 
	 * @param	param			モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	handle			セッションマネージャなどを持ったハンドル
	 * @param	kkopSvcKeiNo	機器オプションサービス契約番号
	 * @param	kktkSvcCd		機器提供サービスコード
	 * @param	resultHash
	 * @return
	 * @throws Throwable 
	 */
	private int callEKK2811B010SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,HashMap<String, Object> requestParam
			,String kktkSvcKeiNo
			,String kktkSvcCd
			,HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK2811B010への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811B010CBSMsg.class.getName());
		mappingEKK2811B010InMsg(template, kktkSvcKeiNo, kktkSvcCd);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK2811B010, mappingEKK2811B010SCOutMsg(resultMsgs));
		}

		return status;
	}

	/**
	 * templateに対してEKK2811B010の条件に関する部分を設定する
	 * 
	 * @param template 条件の設定先
	 * @param svcKeiNo サービス契約番号
	 * @param sysid ＳＹＳＩＤ
	 */
	private void mappingEKK2811B010InMsg(
			CAANMsg template
			,String kktkSvcKeiNo
			,String kkopSvcCd
	)
	{
		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK2811B010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK2811B010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2811B010);

		//機能コード
		template.set(EKK2811B010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿機器提供サービス契約番号
		template.set(EKK2811B010CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
		
		// ＫＥＹ＿機器オプションコード
		template.set(EKK2811B010CBSMsg.KEY_KKOP_SVC_CD, kkopSvcCd);
	}

	/**
	 * EKK2811B010の結果をHashとして抽出する
	 * 
	 * @param resultMsgs EKK2811B010のテンプレートリスト
	 * @return EKK2811B010の結果部分
	 */
	private ArrayList<HashMap<String, Object>> mappingEKK2811B010SCOutMsg(CAANMsg[] resultMsgs)
	{
		//結果の抽出
		ArrayList<HashMap<String, Object>> retHashList = new ArrayList<HashMap<String, Object>>();
		
		CAANMsg[] msgs = resultMsgs[0].getCAANMsgList(EKK2811B010CBSMsg.EKK2811B010CBSMSG1LIST);
		
		for(int i = 0 ; i < msgs.length ; i++)
		{
			retHashList.add(msgs[i].getMsgData());
		}
		
		return retHashList;
	}
	
	/**
	 * 機器オプションサービス契約一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param kkopSvcKeiNo 機器オプションサービス契約番号
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK2811A010SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,String kkopSvcKeiNo
			,HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK2811A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811A010CBSMsg.class.getName());
		mappingEKK2811A010InMsg(template, kkopSvcKeiNo, resultHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK2811A010, mappingEKK2811A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK2811A010の結果をHashとして抽出する
	 * @param resultMsgs EKK2811A010のテンプレートリスト
	 * @return EKK2811A010の結果部分
	 */
	private HashMap<String, Object> mappingEKK2811A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST);
		retHash = msgList[0].getMsgData();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK2811A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param kkopSvcKeiNo 機器オプションサービス契約番号
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void mappingEKK2811A010InMsg(
			CAANMsg template
			, String kkopSvcKeiNo
			, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK2811A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK2811A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2811A010);

		//機能コード
		template.set(EKK0341A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2);

		//ＫＥＹ＿機器オプションサービス契約番号
		template.set(EKK2811A010CBSMsg.KEY_KKOP_SVC_KEI_NO, kkopSvcKeiNo);

		//ＫＥＹ＿運用年月日
		template.set(EKK2811A010CBSMsg.KEY_RSV_APLY_YMD, oPE_DATE);
		
		
	}

	/**
	 * 機器オプションサービス契約停止SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK2811C080SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,HashMap<String, Object> inHash
			,HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK2811C080への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811C080CBSMsg.class.getName());
		mappingEKK2811C080InMsg(template, inHash, resultHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK2811C080, mappingEKK2811C080SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK2811C080の結果をHashとして抽出する
	 * @param resultMsgs EKK0341C120のテンプレートリスト
	 * @return EKK0341C120の結果部分
	 */
	private HashMap<String, Object> mappingEKK2811C080SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK2811C080の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 機器オプションサービス契約一意照会結果
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void mappingEKK2811C080InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK2811C080CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK2811C080CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2811C080);

		//機能コード--チェック＆登録
		template.set(EKK2811C080CBSMsg.FUNC_CODE, "1");
		
		//機器提供サービス契約番号
		template.set(EKK2811C080CBSMsg.KKOP_SVC_KEI_NO, inHash.get(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_NO));
		
		//サービス停止年月日
		template.set(EKK2811C080CBSMsg.SVC_STP_YMD, oPE_DATE);
		
		//サービス停止理由コード
		template.set(EKK2811C080CBSMsg.SVC_STP_RSN_CD, SVC_STP_RSN_CD_USESTP);

		//異動区分
		template.set(EKK2811C080CBSMsg.IDO_DIV, IDO_DIV_USESTP);
		
		//更新年月日時分秒(更新前)
		template.set(EKK2811C080CBSMsg.UPD_DTM_BF, inHash.get(EKK2811A010CBSMsg1List.LAST_UPD_DTM));
	}
	
	
	/**
	 * EKK0081B546 卸先事業者利用停止指示書登録情報一覧照会SIFを呼び出し
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	結果のハッシュ
	 * @return				サービスインターフェースのリターンコード
	 * @throws	RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0081B546SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String svc_kei_no
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0081B546への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081B546CBSMsg.class.getName());
		mappingEKK0081B546SCInMsg(template, inHash, svc_kei_no);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0081B546, mappingEKK0081B546SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	
	/**
	 * templateに対してEKK0081B546の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0081B546SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String svc_kei_no)
	{
		// まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0081B546CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EKK0081B546CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B546);

		// 機能コード
		template.set(EKK0081B546CBSMsg.FUNC_CODE, "1");

		// サービス契約番号
		template.set(EKK0081B546CBSMsg.KEY_SVC_KEI_NO, svc_kei_no);

	}
	
	/**
	 * EKK0081B546の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK1091D010の結果部分
	 */
	private ArrayList<HashMap<String, Object>> mappingEKK0081B546SCOutMsg(CAANMsg[] resultMsgs)
	{
		ArrayList<HashMap<String, Object>> retHashList = null;
		CAANMsg[] msgs = null;
		
		//結果の抽出
		retHashList = new ArrayList<HashMap<String, Object>>();
		msgs = resultMsgs[0].getCAANMsgList(EKK0081B546CBSMsg.EKK0081B546CBSMSG1LIST);
		for(int i = 0 ; i < msgs.length ; i++)
		{
			retHashList.add(msgs[i].getMsgData());
		}
		
		return retHashList;
	}
	
	/**
	 * 卸先事業者利用停止チェックを実施する。
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws Throwable
	 */
	private String orsjgsUseStpKanrencheck(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// 共通キー（サービス契約番号）を取得する。
		String svcKeiNo = (String)ccMsg.get(JKKStrConst.SVC_KEI_NO);

		// 依頼元区分_卸先事業者コード
		String orsjgsCd = (String)ccMsg.get(JKKStrConst.IRAIMOTO_KBN);
		
		//運用年月日を取得する。
		String unyoYMD = JPCBPCommon.getOpeDate(null);
		
		// ****************************** 関連チェック ****************************** //
		// ********** EKK0081A010 サービス契約一意照会情報取得
		Object[][] ekk0081a010 = editInMsgEKK0081A010(svcKeiNo, unyoYMD);
		CAANMsg[] ekk0081a010Out = callSC(handle, scCall, param, fixedText, ekk0081a010).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		
		// *************** 契約存在チェック *************** //
		if (ekk0081a010Out.length == 0)
		{
			// リターンコード：1100
			ccMsg.put(JKKStrConst.RETURN_CODE, JKKStrConst.RETURN_CD_1100);
			// リターンメッセージ：契約存在チェックエラー
			ccMsg.put(JKKStrConst.RETURN_MESSAGE, JKKStrConst.RETURN_MESSAGE_KEI_EXISTS_CHECK_ERROR);
			param.setData(fixedText, ccMsg);
			return JKKStrConst.RETURN_CD_1100;
		}

		// ****************************** 卸先事業者チェック ****************************** //
		// SYSIDを取得する。
		String sysid = ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.SYSID);
		
		// ********** ECK0011A010（お客様一意照会）情報取得
		Object[][] eck0011a010In = editInMsgECK0011A010(sysid, unyoYMD);
		CAANMsg[] eck0011a010Out = callSC(handle, scCall, param, fixedText, eck0011a010In).getCAANMsgList(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST);
		
		if (eck0011a010Out != null && eck0011a010Out.length > 0)
		{
			// 卸先事業者コード取得
			String orsjgsCdEk0011a010 = eck0011a010Out[0].getString(ECK0011A010CBSMsg1List.ORSJGS_CD);
			// 依頼元区分と卸先事業者コードが一致しない
			if ((JKKStringUtil.isNullBlank(orsjgsCdEk0011a010)
					|| !orsjgsCd.equals(orsjgsCdEk0011a010)))
			{
				// リターンコード：1101
				ccMsg.put(JKKStrConst.RETURN_CODE, JKKStrConst.RETURN_CD_1101);
				// リターンメッセージ：卸先事業者チェックエラー
				ccMsg.put(JKKStrConst.RETURN_MESSAGE, JKKStrConst.RETURN_MESSAGE_ORSJIGS_CHECK_ERROR);
				param.setData(fixedText, ccMsg);
				return JKKStrConst.RETURN_CD_1101;
			}
			
			// ECH0911A010 卸先事業者一意照会情報取得
			Object[][] ech0911a010In = editInMsgECH0911A010(orsjgsCdEk0011a010, unyoYMD);
			CAANMsg[] ech0911a010Out = callSC(handle, scCall, param, fixedText, ech0911a010In).getCAANMsgList(ECH0911A010CBSMsg.ECH0911A010CBSMSG1LIST);
			if (ech0911a010Out != null && ech0911a010Out.length > 0)
			{
				if (!(ech0911a010Out[0].getString(ECH0911A010CBSMsg1List.ORSJGS_TSTAYMD).compareTo(unyoYMD) <= 0 
						&& ech0911a010Out[0].getString(ECH0911A010CBSMsg1List.ORSJGS_TENDYMD).compareTo(unyoYMD) >= 0))
				{
					// リターンコード：1101
					ccMsg.put(JKKStrConst.RETURN_CODE, JKKStrConst.RETURN_CD_1101);
					// リターンメッセージ：卸先事業者チェックエラー
					ccMsg.put(JKKStrConst.RETURN_MESSAGE, JKKStrConst.RETURN_MESSAGE_ORSJIGS_CHECK_ERROR);
					param.setData(fixedText, ccMsg);
					return JKKStrConst.RETURN_CD_1101;
				}
			}
		}
		
		// ****************************** 契約状態チェック ****************************** //
		// サービス契約ステータスが100_サービス提供中以外の場合
		// サービス契約ステータス取得
		String svcKeiStat = ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
		if (!JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStat))
		{
			// リターンコード：1102
			ccMsg.put(JKKStrConst.RETURN_CODE, JKKStrConst.RETURN_CD_1102);
			// リターンメッセージ：契約状態チェックエラー
			ccMsg.put(JKKStrConst.RETURN_MESSAGE, JKKStrConst.RETURN_MESSAGE_KEI_STAT_CHECK_ERROR);
			param.setData(fixedText, ccMsg);
			return JKKStrConst.RETURN_CD_1102;
		}

		// ****************************** 契約サービスチェック ****************************** //
		String svcCd = ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.SVC_CD);
		if (!(JKKStrConst.CD00130_01.equals(svcCd) 
			|| JKKStrConst.CD00130_02.equals(svcCd) 
			|| JKKStrConst.CD00130_03.equals(svcCd)))
		{
			// リターンコード：1103
			ccMsg.put(JKKStrConst.RETURN_CODE, JKKStrConst.RETURN_CD_1103);
			// リターンメッセージ：契約サービスチェックエラー
			ccMsg.put(JKKStrConst.RETURN_MESSAGE, JKKStrConst.RETURN_MESSAGE_KEI_SVC_CHECK_ERROR);
			param.setData(fixedText, ccMsg);
			return JKKStrConst.RETURN_CD_1103;
		}
		return JKKStrConst.CHECK_OK;
	}

	/**サービス契約一意照会情報を取得
	 * @param svcKeiNo サービス契約番号
	 * @param unyoYMD  運用適用日
	 * 
	 * @return Object[][]
	 */
	private Object[][] editInMsgEKK0081A010(String svcKeiNo, String unyoYMD)
	{
		Object[][] ekk0081a010 = 
		{
			{EKK0081A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0081A010},
			{EKK0081A010CBSMsg.FUNC_CODE,        STRING_2},
			{EKK0081A010CBSMsg.KEY_SVC_KEI_NO,   svcKeiNo},
			{EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, unyoYMD},
		};
		return ekk0081a010;
	}	

	/**お客様一意照会情報を取得
	 * @param sysid SYSID
	 * @param unyoYMD 運用適用日
	 * 
	 * @return Object[][]
	 */
	private Object[][] editInMsgECK0011A010(String sysid, String unyoYMD)
	{
		Object[][] eck0011a010In = 
		{
			{ECK0011A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_ECK0011A010},
			{ECK0011A010CBSMsg.FUNC_CODE,        STRING_2},
			{ECK0011A010CBSMsg.KEY_SYSID,        sysid},
			{ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, unyoYMD},
		};
		return eck0011a010In;
	}

	/**卸先事業者一意照会情報を取得
	 * @param orsjgsCdEk0011a010 卸先事業者コード
	 * 
	 * @return Object[][]
	 */
	private Object[][] editInMsgECH0911A010(String orsjgsCdEk0011a010, String unyoYMD)
	{
		Object[][] ech0911a010In = 
		{	
			{ECH0911A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_ECH0911A010},
			{ECH0911A010CBSMsg.FUNC_CODE,        STRING_2},
			{ECH0911A010CBSMsg.KEY_ORSJGS_CD,    orsjgsCdEk0011a010},
		};
		return ech0911a010In;
	}
	
	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param mappingData
	 * @return CAANMsg
	 * @throws Exception
	 */
	private CAANMsg callSC(SessionHandle handle,
							ServiceComponentRequestInvoker scCall,
							IRequestParameterReadWrite param,
							String dataMapKey,
							Object[][] mappingData) throws Exception
	{
		HashMap<String, Object> paramMap = editInMsg(param, mappingData);
		
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[0];
		
		// リターンコード取得
		int returnCode = (Integer)result.get(JCMConstants.RET_CD_INT_KEY);
		
		int templateStatus = msg.getInt(ECK0011A010CBSMsg.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);
		}
		
		setErrorInf(msg, (HashMap<String, Object>)param.getData(dataMapKey));
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		/* ◇処理結果の判定*/
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = result.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = msg.getInt(JCMConstants.STATUS_INT_KEY);
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status.intValue()))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
		return msg;
	}	

	/**
	 * @param param
	 * @param mappingData
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param,
												Object[][] mappingData) 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));
		
		String svcIf = (String)mappingData[0][1];
		
		CAANMsg template = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg", svcIf));
		
		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));
		
		for (int i = 0; i < mappingData.length; i++)
		{
			if ("".equals(mappingData[i][1]))
			{
				template.setNull((String)mappingData[i][0]);
			}
			else
			{
				template.set((String)mappingData[i][0], mappingData[i][1]);
			}
		}
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		return paramMap;
	}

	/**
	 * エラー情報を設定します。
	 * 
	 * @param msg
	 * @param map
	 * 
	 */
	private void setErrorInf(CAANMsg msg, HashMap<String, Object> map)
	{
		Iterator<String> msgKey = msg.getSchema().getSchemaKeySet().iterator();
		
		while (msgKey.hasNext())
		{
			String key = msgKey.next();
			
			if (key.endsWith("_err"))
			{
				if (!msg.isNull(key))
				{
					if (!map.containsKey(key))
					{
						map.put(key, msg.getString(key));
					}
				}
			}
		}
	}
	
	/**
	 * 指示書登録
	 * @param	handle				セッションマネージャなどを持ったハンドル
	 * @param	param				モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam		リクエストパラメータ
	 * @return						リターンコード
	 * @throws	Throwable
	 */
	private int orsjgsrunUseStpAddShijisho11(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			String sysid
	) throws Throwable
	{
		// サービスオーダ発行CC
		JKKUseStpAddShijishoCC useStpAddShijishoCC = new JKKUseStpAddShijishoCC();
		String useStpAddShijishoDataKey = "UseStpAddShijishoCC";
		// 対象データマップ
		HashMap<String, Object> useStpAddShijishoData = (HashMap<String, Object>)param.getData(useStpAddShijishoDataKey);
		if (useStpAddShijishoData == null)
		{
			useStpAddShijishoData = new HashMap<String, Object>();
			param.setData(useStpAddShijishoDataKey, useStpAddShijishoData);
		}
		
		// 対象SYSID
		useStpAddShijishoData.put("use_stp_sysid", sysid);

		// 機能コード
		useStpAddShijishoData.put("func_cd", JPCModelConstant.FUNC_CD_1);
		
		useStpAddShijishoCC.runUseStpAddShijisho11(handle, param, useStpAddShijishoDataKey);

		// 正常
		return 0;
	}

	/**
	 * 課金先一覧照会（サービス契約番号）サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0321B005SC(IRequestParameterReadWrite param
									, SessionHandle handle
									, HashMap<String, Object> inHash
									, HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0321B005への呼び出しパラメータ設定
		template = new CAANMsg(EKK0321B005CBSMsg.class.getName());
		mappingEKK0321B005InMsg(template, inHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK0321B005, mappingEKK0321B005SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * templateに対してEKK0321B005の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0321B005InMsg(CAANMsg template, HashMap<String, Object> inHash)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0321B005CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0321B005CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0321B005);

		//機能コード--課金先一覧照会
		template.set(EKK0321B005CBSMsg.FUNC_CODE, "1");

		//ＫＥＹ＿サービス契約番号
		template.set(EKK0321B005CBSMsg.KEY_SVC_KEI_NO, inHash.get(SVC_KEI_NO));
		
	}

	/**
	 * EKK0321B005の結果をHashとして抽出する
	 * @param resultMsgs EKK0321B005のテンプレートリスト
	 * @return EKK0321B005の結果部分
	 */
	private ArrayList<HashMap<String, Object>> mappingEKK0321B005SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		ArrayList<HashMap<String, Object>> retHashList = null;
		CAANMsg[] msgs = null;
		
		//結果の抽出
		retHashList = new ArrayList<HashMap<String, Object>>();
		msgs = resultMsgs[0].getCAANMsgList(EKK0321B005CBSMsg.EKK0321B005CBSMSG1LIST);
		for(int i = 0 ; i < msgs.length ; i++)
		{
			retHashList.add(msgs[i].getMsgData());
		}
		
		return retHashList;
	}
}
