/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom, 2011
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKOrsjgsUseStpRlsRunCC
*   ソースファイル名：JKKOrsjgsUseStpRlsRunCC.java
*   作成者          ：富士通
*   日付            ：2018年03月26日
*＜機能概要＞
*   卸先事業者サービス契約利用停止解除実行を行う。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v37.00.00   2018/03/26   FJ）       【ANK-3366-00-00】eo光設備卸対応
*   v37.00.01   2018/08/08   FJ)藤井    【IT1-2018-0000110】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 java.util.List;

import com.fujitsu.futurity.bp.custom.constant.JKKGetSvkeiStatConstCC;
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.EKK0081B526CBSMsg;
//import eo.ejb.cbs.cbsmsg.EKK0081B526CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B546CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B547CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B547CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081C060CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081C061CBSMsg;
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.EKK0161C050CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161C051CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0241B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0241B002CBSMsg1List;
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.EKK0341C130CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341C131CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351C050CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351C051CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0401C050CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401C051CBSMsg;
//import eo.ejb.cbs.cbsmsg.EKK0441A010CBSMsg;
//import eo.ejb.cbs.cbsmsg.EKK0441A010CBSMsg1List;
//import eo.ejb.cbs.cbsmsg.EKK0441B002CBSMsg;
//import eo.ejb.cbs.cbsmsg.EKK0441B002CBSMsg1List;
//import eo.ejb.cbs.cbsmsg.EKK0441C090CBSMsg;
//import eo.ejb.cbs.cbsmsg.EKK0441C091CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0861B002CBSMsg;
//import eo.ejb.cbs.cbsmsg.EKK0861B002CBSMsg1List;
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.EKK2811C090CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2811C100CBSMsg;

/**
 * 
 * 卸先事業者サービス契約利用停止解除実行CCクラス
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JKKOrsjgsUseStpRlsRunCC 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";
	//IT1-2018-0000110_ADD START
	/** サービス契約回線内訳番号 */
	private static final String SVC_KEI_KAISEN_UCWK_NO = "svc_kei_kaisen_ucwk_no";
	//IT1-2018-0000110_ADD END
	/** サービス契約利用停止解除実施フラグ */
	private static final String SVC_KEI_USE_STP_RLS_EXEC_FLG = "svc_kei_use_stp_rls_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_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 = "2202";

	/** 異動区分(利用停止解除) */
	private static final String IDO_DIV_USESTPRLS = "00063";
	
	/** 異動理由コード(その他) */
	private static final String IDO_RSN_CD_USESTP_OTHER = "56";

	/** サービス契約ステータス取得部品用Mapキー */
	private static final String MAP_KEY_GET_SVKEI_STAT = "JKKGetSvkeiStat";

	/** ----- サービス契約ステータスコード値 ----- */
	/** サービス停止解除理由コード：XX(利用停止解除？) */
	private static final String SVC_STP_RSN_CD_USESTPRLS = "01";

	/** ----- 料金グループコード値 ----- */
	/** 料金グループ:eo光テレビ（ＫＣＮ） */
	private static final String PRC_GRP_CD_TV_KCN = "12";

	/** 料金グループ:mineo */
	private static final String PRC_GRP_CD_MINEO = "51";
	
	/** 料金グループ:eo電気 */
	private static final String PRC_GRP_CD_EODENKI = "17";
	
	/** ----- サービス契約ステータス値 ----- */
	/** 受付済 */
	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_KYUS = "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_EKK0321B002 = "EKK0321B002";
	/** 課金先一意照会 **/
	private static final String TEMPLATE_ID_EKK0321A010 = "EKK0321A010";
	/** サービス契約一意照会 **/
	private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";
	/** サービス契約内訳一意照会 **/
	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_EKK0441A010 = "EKK0441A010";
	/** サブオプションサービス契約一意照会 **/
	private static final String TEMPLATE_ID_EKK0401A010 = "EKK0401A010";
	/** 機器提供サービス契約一意照会 **/
	private static final String TEMPLATE_ID_EKK0341A010 = "EKK0341A010";

	/** サービス契約停止解除 **/
	private static final String TEMPLATE_ID_EKK0081C060 = "EKK0081C060";
	/** サービス契約内訳停止解除 **/
	private static final String TEMPLATE_ID_EKK0161C050 = "EKK0161C050";
	/** オプションサービス契約停止解除 **/
	private static final String TEMPLATE_ID_EKK0351C050 = "EKK0351C050";
	/** サブオプションサービス契約停止解除 **/
	private static final String TEMPLATE_ID_EKK0401C050 = "EKK0401C050";
//	/** 請求オプションサービス契約停止解除 **/
//	private static final String TEMPLATE_ID_EKK0441C090 = "EKK0441C090";
	/** 機器提供サービス契約停止解除 **/
	private static final String TEMPLATE_ID_EKK0341C130 = "EKK0341C130";
	/** 休止中サービス契約停止解除 **/
	private static final String TEMPLATE_ID_EKK0081C061 = "EKK0081C061";
	/** 休止中サービス契約内訳停止解除 **/
	private static final String TEMPLATE_ID_EKK0161C051 = "EKK0161C051";
	/** 休止中オプションサービス契約停止解除 **/
	private static final String TEMPLATE_ID_EKK0351C051 = "EKK0351C051";
	/** 休止中サブオプションサービス契約停止解除 **/
	private static final String TEMPLATE_ID_EKK0401C051 = "EKK0401C051";
//	/** 休止中請求オプションサービス契約停止解除 **/
//	private static final String TEMPLATE_ID_EKK0441C091 = "EKK0441C091";
	/** 休止中機器提供サービス契約停止解除 **/
	private static final String TEMPLATE_ID_EKK0341C131 = "EKK0341C131";
	
	/** 進捗登録 **/
	private static final String TEMPLATE_ID_EKK1091D010 = "EKK1091D010";
	/** マンション情報一覧照会（サービス契約番号） **/
	private static final String TEMPLATE_ID_EKK0861B002 = "EKK0861B002";
	
//	/**  */
//	private static final String TEMPLATE_ID_EKK0081B526 = "EKK0081B526";
	/**サービス契約回線内訳一覧照会（サービス契約番号）  */
	private static final String TEMPLATE_ID_EKK0251B001 = "EKK0251B001";
	
	/** 機器提供サービス契約一覧照会 */
	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_EKK2811C090 = "EKK2811C090";
	/** 休止中機器オプションサービス契約停止解除 */
	private static final String TEMPLATE_ID_EKK2811C100 = "EKK2811C100";
	
//	/** 請求オプションサービス契約一覧照会（複合検索）*/
//	private static final String TEMPLATE_ID_EKK0441B002 = "EKK0441B002";
	
	/** 卸先事業者一意照会 */
	private static final String TEMPLATE_ID_ECH0911A010 = "ECH0911A010";

	/** お客様一意照会 */
	private static final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";	
	
	/** 卸先事業者利用停止解除指示書登録情報一覧照会（11お客さまの基本情報） */
	private static final String TEMPLATE_ID_EKK0081B547 = "EKK0081B547";
	
	/** 課金先一覧照会（サービス契約番号） **/
	private static final String TEMPLATE_ID_EKK0321B005 = "EKK0321B005";
	//IT1-2018-0000110_ADD START
	/** 回線対象サービス契約一覧照会 **/
	private static final String TEMPLATE_ID_EKK0241B002 = "EKK0241B002";
	//IT1-2018-0000110_ADD END

//	/** サービスコード：インターネット */
//	private static final String SVC_CD_NET = "01";
	/** サービスコード：電話 */
	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";

	/** イーモバイル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";

	/** String_2 */
	private static final String STRING_2 = "2";

	
	/**
	 * 卸先事業者サービス契約利用停止解除メソッド
	 * @param	handle		セッションハンドル
	 * @param	param		リクエストパラメータ
	 * @param	fixedText	サービスメッセージ
	 * @return				リクエストパラメータ
	 * @throws	Throwable 例外時にスローします
	 */
	public IRequestParameterReadWrite orsjgsRunUseStpRls(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			String fixedText
	) throws Throwable
	{
		// ステータスコード
		int statusCode = 0;

		// 運用日の取得
		oPE_DATE = JCCBPCommon.getOpeDate(null);

		// リクエストパラメータ情報取得
		HashMap<String, Object> use_stp_rls_map = (HashMap<String, Object>)param.getData(fixedText);

		// 利用停止解除不可対象者リスト生成
		ArrayList<HashMap<String, Object>> fukaUseStpRlsTrgtLst = new ArrayList<HashMap<String, Object>>();

		wk_Fuka_flg = false;
		
		try
		{
//IT1-2018-0000110_DEL START
			//if (use_stp_rls_map.containsKey(JKKStrConst.SERVICE_ID)  
					//&& JKKStrConst.SERVICE_ID_WSALE020.equals((String)use_stp_rls_map.get(JKKStrConst.SERVICE_ID)))
			//{

				// 卸先事業者利用停止チェック
				//String checkRslt = this.orsjgsUseStpRlsKanrencheck(handle, param, fixedText);
				//if(!JKKStrConst.CHECK_OK.equals(checkRslt))
				//{
				//	return param;
				//}
			//}
//IT1-2018-0000110_DEL END
			
			HashMap<String, Object> paramHash = new HashMap<String, Object>();
//IT1-2018-0000110_ADD START
			HashMap<String, Object> resultHash = new HashMap<String, Object>();
//IT1-2018-0000110_ADD END
			// サービス契約番号
			paramHash.put(SVC_KEI_NO, use_stp_rls_map.get(JKKStrConst.SVC_KEI_NO));
//IT1-2018-0000110_ADD START
			//サービス契約回線内訳一覧照会（サービス契約番号）
			callEKK0251B001SC(param, handle, paramHash, resultHash);
			
			ArrayList<HashMap<String, Object>> eKK0251B001HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0251B001);
			String svcKeiKaisenUcwkNo = "";

			if(eKK0251B001HashList != null && eKK0251B001HashList.size() > 0)
			{
				// サービス契約回線内訳番号取得
				HashMap<String, Object> eKK0251B001Hash = eKK0251B001HashList.get(0);
				svcKeiKaisenUcwkNo = (String)eKK0251B001Hash.get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
			}
			if(svcKeiKaisenUcwkNo != "")
			{
				//回線対象サービス契約一覧照会
				paramHash.put(SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);
				callEKK0241B002SC(param, handle, paramHash, resultHash);
			}
			ArrayList<HashMap<String, Object>> ekk0241b002HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0241B002);

			//ネット、電話、テレビのサービス契約番号のマップを宣言(キー，値)(svcCd, svcKeiNo)
			HashMap<String, String> pramSvcKeiNo = new HashMap<String, String>();
			//ネット、電話、テレビのサービス契約ステータスのマップを宣言(キー，値)(svcCd, svcStat)
			HashMap<String, String> pramSvcKeiStat = new HashMap<String, String>();
			
			if(ekk0241b002HashList != null && ekk0241b002HashList.size() > 0)
			{
				for (int i = 0; i < ekk0241b002HashList.size(); i++)
				{
					//サービスコード、サービス契約ステータス、サービス契約番号を取得
					HashMap<String, Object> ekk0241b002Hash = ekk0241b002HashList.get(i);
					String svcCd =(String)ekk0241b002Hash.get(EKK0241B002CBSMsg1List.SVC_CD);
					String svcStat =(String)ekk0241b002Hash.get(EKK0241B002CBSMsg1List.SVC_KEI_STAT);
					String svcKeiNo =(String)ekk0241b002Hash.get(EKK0241B002CBSMsg1List.SVC_KEI_NO);
					//ネット、電話、テレビ以外のサービスを除く
					if (JKKStrConst.CD00130_01.equals(svcCd) || (JKKStrConst.CD00130_02.equals(svcCd)) || (JKKStrConst.CD00130_03.equals(svcCd)))
					{	
						//ネット、電話、テレビのサービス契約番号をマップに設定する
						pramSvcKeiNo.put(svcCd, svcKeiNo);
						//ネット、電話、テレビのサービス契約ステータスをマップに設定する
						pramSvcKeiStat.put(svcCd, svcStat);
					}
				}
			}
			//電話、テレビ、ネットを順番に設定する。(卸先事業者利用停止チェックを通過したサービスコードが入っている)
			List<String> pramSvcKeiStList = new ArrayList<String>();
			
			// 卸先事業者利用停止チェック
			String checkRslt = this.orsjgsUseStpRlsKanrencheck(handle, param, fixedText, pramSvcKeiStat, pramSvcKeiStList);
			if(!JKKStrConst.CHECK_OK.equals(checkRslt))
			{
				return param;
			}
			
			//利用停止解除対象のサービス契約番号を設定
			for (int i = 0; i < pramSvcKeiStList.size() ; i++)
			{
				paramHash.clear();
				
				// サービス契約番号
				paramHash.put(SVC_KEI_NO, pramSvcKeiNo.get(pramSvcKeiStList.get(i)));
//IT1-2018-0000110_ADD END
				// メイン処理の実行
				statusCode = executeUseStpRlsMain(handle
										, param
										, paramHash
										, fixedText
										, fukaUseStpRlsTrgtLst);
//IT1-2018-0000110_ADD START
			}
//IT1-2018-0000110_ADD END		
			// リターンコードの設定
			String formatStatus = String.format("%1$04d", statusCode);

			// 処理結果設定
			if(wk_Fuka_flg)
			{
				use_stp_rls_map.put(JKKStrConst.SYORI_RESULT, JKKStrConst.SYORI_RESULT_FUKA);
				use_stp_rls_map.put(JKKStrConst.RETURN_CODE, JKKStrConst.RETURN_CD_9000);
				use_stp_rls_map.put(JKKStrConst.RETURN_MESSAGE, JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR);
			}
			else
			{
				use_stp_rls_map.put(JKKStrConst.SYORI_RESULT, JKKStrConst.SYORI_RESULT_OK);
				if(!JKKStrConst.CHECK_OK.equals(formatStatus))
				{
					use_stp_rls_map.put(JKKStrConst.RETURN_CODE, JKKStrConst.RETURN_CD_9000);
					use_stp_rls_map.put(JKKStrConst.RETURN_MESSAGE, JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR);
				}
				else
				{
					use_stp_rls_map.put(JKKStrConst.RETURN_CODE, JKKStrConst.CHECK_OK);
					use_stp_rls_map.put(JKKStrConst.RETURN_MESSAGE, null);
				}
			}
			// 処理結果書き戻し
			param.setData(fixedText, use_stp_rls_map);
		}
		catch(Exception e)
		{
			use_stp_rls_map.put(JKKStrConst.RETURN_CODE, JKKStrConst.RETURN_CD_9000);
			use_stp_rls_map.put(JKKStrConst.RETURN_MESSAGE, JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR);
			param.setData(fixedText, use_stp_rls_map);
		}

		// 処理終了
		return param;
	}
	
	/**
	 * 利用停止解除メイン処理
	 * @param	handle					セッションマネージャなどを持ったハンドル
	 * @param	param					モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam			リクエストパラメータ
	 * @param	fixedText				ユーザ任意文字列
	 * @param	fukaUseStpRlsTrgtLst	利用停止解除不可対象リスト
	 * @return							リターンコード
	 * @throws	Throwable
	 */
	private int executeUseStpRlsMain(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			String fixedText,
			ArrayList<HashMap<String, Object>> fukaUseStpRlsTrgtLst
	) throws Throwable
	{
		// ステータスコード
		int statusCode = 0;

		// S-IF結果格納用
		HashMap<String, Object> resultHash =  new HashMap<String, Object>();

		// サービス契約利用停止解除実施フラグ
		requestParam.put(SVC_KEI_USE_STP_RLS_EXEC_FLG, (Boolean)false);

		// ＳＯＤ発行用
		ArrayList<HashMap<String, Object>> hakkoSODDataList = new ArrayList<HashMap<String,Object>>();

//		// 請求オプションサービス契約番号
//		ArrayList<String> seiOpSvcKeiNoList = new ArrayList<String>();

		// 利用停止解除対象サービス契約番号
		String prm_svc_kei_no = (String)requestParam.get(SVC_KEI_NO);

		// サービス契約一意照会
		statusCode = getEKK0081A010SC(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);

		//  料金グループコードが「mineo」の場合
		// 処理なし
		if(PRC_GRP_CD_MINEO.equals(prc_grp_cd))
		{
			return 0;
		}
		//  料金グループコードが「eo電気」の場合
		// 処理なし
		if(PRC_GRP_CD_EODENKI.equals(prc_grp_cd))
		{
			return 0;
		}
		
		// マンション情報取得
		statusCode = getEKK0861B002SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		// 利用停止解除可能判定処理（利用停止解除不可ありの場合、終了）
		if(isUseStpFukaCheck(fukaUseStpRlsTrgtLst, requestParam, resultHash))
		{
			wk_Fuka_flg = true;
			return 0;
		}

		// 請求契約番号取得
		// 課金先一覧照会（サービス契約番号）
		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 = getEKK0321B002SC(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;
		}

		// 利用停止の一世代前のサービス契約ステータスを取得
		resultHash.put(MAP_KEY_GET_SVKEI_STAT, getUseStpBfSvcKeiStat(handle, param, prm_svc_kei_no, null));

		// 課金先の取得分だけループ
		for(int i = 0 ; i < eKK0321B002HashList.size() ; i++)
		{
			HashMap<String, Object> eKK0321B002Hash = eKK0321B002HashList.get(i);

			// 課金先一意照会
			statusCode = getEKK0321A010SC(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 = executeSvcKei_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 = executeOpSvcKei_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 = executeSbOpSvcKei_UseStp(
						handle,
						param,
						requestParam,
						resultHash,
						prm_svc_kei_no
				);

				// 結果確認
				if(statusCode != 0)
				{
					return statusCode;
				}
			}

//			// ***********************************************
//			// 請求オプションサービス契約番号有りの場合
//			// ***********************************************
//			if(seiopsvc_kei_no != null && !"".equals(seiopsvc_kei_no))
//			{
//				// 請求オプションサービス契約番号格納
//				seiOpSvcKeiNoList.add(seiopsvc_kei_no);
//			}

			// ***********************************************
			// 機器提供サービス契約番号有りの場合
			// ***********************************************
			if(kktk_svc_kei_no != null && !"".equals(kktk_svc_kei_no))
			{
				// 機器提供サービス契約 利用停止解除処理
				statusCode = executeKktkSvcKei_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 = executeKktkSvcKei_UseStp2(handle, param, requestParam, resultHash, eKK0081A010Hash, prm_svc_kei_no);
			if(statusCode != 0)
			{
				return statusCode;
			}
		}

//		// ***********************************************
//		// 請求オプションサービス契約 利用停止解除処理
//		// ***********************************************
//		// サービスコード取得
//		String svc_cd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD);
//
//		// サービスが「ネット」の場合
//		if (SVC_CD_NET.equals(svc_cd))
//		{
//			callEKK0081B526SC(handle, param, requestParam, resultHash);
//
//			// サービス契約一覧照会の結果取得
//			ArrayList<HashMap<String, Object>> eKK0081B526HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0081B526);
//
//			// 請求契約内の１つだけサービス契約が利用停止解除されているか判断
//			int isSeikySvcUseStpRlsCnt = 0;
//			for (int i = 0; i < eKK0081B526HashList.size(); i++)
//			{
//				HashMap<String, Object> eKK0081B526Hash = eKK0081B526HashList.get(i);
//
//				// サービス契約ステータス
//				String svcKeiStat = (String)eKK0081B526Hash.get(EKK0081B526CBSMsg1List.SVC_KEI_STAT);
//
//				// サービス提供中、休止・中断中のサービス契約をカウント
//				if (SVC_KEI_STAT_TKC.equals(svcKeiStat) || SVC_KEI_STAT_KYUS.equals(svcKeiStat))
//				{
//					isSeikySvcUseStpRlsCnt++;
//				}
//			}
//
//			// 請求契約内の１つだけサービス契約が利用停止解除されている場合
//			if (isSeikySvcUseStpRlsCnt == 1)
//			{
//				for (int i = 0; i < seiOpSvcKeiNoList.size(); i++)
//				{
//					// 請求オプションサービス契約 利用停止処理
//					statusCode = executeSeiOpSvcKei_UseStp(handle, param, requestParam, resultHash, seiOpSvcKeiNoList.get(i));
//					if(statusCode != 0)
//					{
//						return statusCode;
//					}
//				}
//			}
//		}

		// 進捗登録
		statusCode = getEKK1091D010SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}
		
		// サービス契約利用停止解除済みの場合
		if((Boolean)requestParam.get(SVC_KEI_USE_STP_RLS_EXEC_FLG))
		{
			// サービス制御管理S 利用停止解除要求処理
			statusCode = executeSvcCtlUseStpReq(handle, param, requestParam, resultHash, hakkoSODDataList);
			if(statusCode != 0)
			{
				return statusCode;
			}
//			/*************************************************************************************/
//			/** 会員ISP決済状態コード更新用部品実行                                            **/
//			/*************************************************************************************/
//			executeCtcMikstCdKoshin(param, handle, requestParam);
		}

		// 指示書登録情報取得
		statusCode = callEKK0081B547SC(param, handle, requestParam, resultHash, prm_svc_kei_no);
		if(statusCode != 0)
		{
			return statusCode;
		}

		ArrayList<HashMap<String, Object>> eKK0081B547HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0081B547);
		if (eKK0081B547HashList != null && eKK0081B547HashList.size() > 0)
		{
			//1件目のデータを取得する。
			HashMap<String, Object> eKK0081B547Hash = eKK0081B547HashList.get(0);
			// 更新有無取得
			String updUm = (String)eKK0081B547Hash.get(EKK0081B546CBSMsg1List.UPD_UM);
			// 更新有無が"1"_有の場合、指示書登録の処理を呼出し
			if ("1".equals(updUm))
			{
				// 卸先事業者利用停止指示書登録
				// SYSID取得
				String sysid = (String)eKK0081B547Hash.get(EKK0081B547CBSMsg1List.SYSID);
				statusCode = orsjgsrunUseStpKaijoAddShijisho(handle, param, requestParam, sysid);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
		}

		// 正常
		return 0;
	}
	
	
	
	/**
	 * サービス契約 利用停止解除処理
	 * @param	handle				セッションマネージャなどを持ったハンドル
	 * @param	param				モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam		リクエストパラメータ
	 * @param	resultHash			結果のハッシュ
	 * @param	hakkoSODDataList	サービスオーダ発行CCの業務パラメータ情報
	 * @return						リターンコード
	 * @throws	Throwable
	 */
	private int executeSvcKei_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;
		}
		// ▲▲▲▲▲ 2013/07/19 ADD E N D ▲▲▲▲▲

		// +++++++++++++++++++++++++++++++++++++++
		// サービス契約一意照会
		// +++++++++++++++++++++++++++++++++++++++
		statusCode = getEKK0081A010SC(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_STP.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);
//			}
//		}

		HashMap<String, Object> svkeiStatMap = (HashMap<String, Object>)resultHash.get(MAP_KEY_GET_SVKEI_STAT);
		String useStpBfSvcKeiStat = (String)svkeiStatMap.get(JKKGetSvkeiStatConstCC.LAST_KK0081_STAT);
		// 利用停止前が休止・中断中だった場合
		if (SVC_KEI_STAT_KYUS.equals(useStpBfSvcKeiStat))
		{
			// +++++++++++++++++++++++++++++++++++++++
			// 休止中サービス契約停止解除
			// +++++++++++++++++++++++++++++++++++++++
			statusCode = getEKK0081C061SC(param, handle, requestParam, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}
		}
		// 休止・中断中以外はサービス提供中とする
		else
		{
			// +++++++++++++++++++++++++++++++++++++++
			// サービス契約停止解除
			// +++++++++++++++++++++++++++++++++++++++
			statusCode = getEKK0081C060SC(param, handle, requestParam, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}
		}

		// サービス契約利用停止実施フラグ
		requestParam.put(SVC_KEI_USE_STP_RLS_EXEC_FLG, (Boolean)true);

		// +++++++++++++++++++++++++++++++++++++++
		// サービス契約内訳一覧照会
		// +++++++++++++++++++++++++++++++++++++++
		statusCode = getEKK0161B004SC(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_STP.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);

					// サービス契約内訳停止解除結果取得
					HashMap<String, Object> eKK0161C05XHash;
					// 利用停止の一世代前のサービス契約内訳ステータスを取得
					svkeiStatMap = getUseStpBfSvcKeiStat(handle, param, prm_svc_kei_no, svc_kei_ucwk_no);
					String useStpBfSvcKeiUcwkStat = (String)svkeiStatMap.get(JKKGetSvkeiStatConstCC.LAST_KK0161_STAT);
					// 利用停止前が休止・中断中だった場合
					if (SVC_KEI_STAT_KYUS.equals(useStpBfSvcKeiUcwkStat))
					{
						// +++++++++++++++++++++++++++++++++++++++
						// 休止中サービス契約内訳停止解除
						// +++++++++++++++++++++++++++++++++++++++
						statusCode = getEKK0161C051SC(param, handle, eKK0161A010Hash, resultHash);
						if(statusCode != 0)
						{
							return statusCode;
						}
						// サービス契約内訳停止解除結果取得
						eKK0161C05XHash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0161C051);
					}
					// 休止・中断中以外はサービス提供中とする
					else
					{
						// +++++++++++++++++++++++++++++++++++++++
						// サービス契約内訳停止解除
						// +++++++++++++++++++++++++++++++++++++++
						statusCode = getEKK0161C050SC(param, handle, eKK0161A010Hash, resultHash);
						if(statusCode != 0)
						{
							return statusCode;
						}
						// サービス契約内訳停止解除結果取得
						eKK0161C05XHash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0161C050);
					}
					
					boolean isHakkoSod = true;
					int eMobileSodKbn = 0;
					if (JKKSvcConst.PRC_GRP_CD_MOB_EM.equals(prc_grp_cd))
					{
						eMobileSodKbn = getEMobileSodKbn(useStpBfSvcKeiStat, useStpBfSvcKeiUcwkStat);
						if (EMOBILE_SOD_KBN_NONE == eMobileSodKbn)
						{
							isHakkoSod = false;
						}
					}
					else
					{
						if (SVC_KEI_STAT_KYUS.equals(useStpBfSvcKeiUcwkStat))
						{
							isHakkoSod = false;
						}
					}

					if (isHakkoSod)
					{
						// サービスオーダ発行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,                eKK0161C05XHash.get(EKK0161C050CBSMsg.SVC_KEI_UCWK_NO));
							SODData.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, eKK0161C05XHash.get(EKK0161C050CBSMsg.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
				{
					continue;
				}
			}
		}
		else
		{
			// サービスオーダ発行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	handle			セッションマネージャなどを持ったハンドル
	 * @param	param			モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam	リクエストパラメータ
	 * @param	resultHash		結果のハッシュ
	 * @return					リターンコード
	 * @throws	Throwable
	 */
	private int executeOpSvcKei_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_STP.equals(op_svc_kei_stat))
		{
			HashMap<String, Object> svkeiStatMap = (HashMap<String, Object>)resultHash.get(MAP_KEY_GET_SVKEI_STAT);
			String useStpBfSvcKeiStat = (String)svkeiStatMap.get(JKKGetSvkeiStatConstCC.LAST_KK0081_STAT);
			// 利用停止前が休止・中断中だった場合
			if (SVC_KEI_STAT_KYUS.equals(useStpBfSvcKeiStat))
			{
				// +++++++++++++++++++++++++++++++++++++++
				// 休止中オプションサービス契約停止解除
				// +++++++++++++++++++++++++++++++++++++++
				statusCode = getEKK0351C051SC(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
			// 休止・中断中以外はサービス提供中とする
			else
			{
				// +++++++++++++++++++++++++++++++++++++++
				// オプションサービス契約停止解除
				// +++++++++++++++++++++++++++++++++++++++
				statusCode = getEKK0351C050SC(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
		}

		return 0;
	}

	/**
	 * サブオプションサービス契約 利用停止解除処理
	 * @param	handle			セッションマネージャなどを持ったハンドル
	 * @param	param			モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam	リクエストパラメータ
	 * @param	resultHash		結果のハッシュ
	 * @return					リターンコード
	 * @throws	Throwable
	 */
	private int executeSbOpSvcKei_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 = getEKK0401A010SC(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_STP.equals(sbop_svc_kei_stat))
		{
			HashMap<String, Object> svkeiStatMap = (HashMap<String, Object>)resultHash.get(MAP_KEY_GET_SVKEI_STAT);
			String useStpBfSvcKeiStat = (String)svkeiStatMap.get(JKKGetSvkeiStatConstCC.LAST_KK0081_STAT);
			// 利用停止前が休止・中断中だった場合
			if (SVC_KEI_STAT_KYUS.equals(useStpBfSvcKeiStat))
			{
				// 休止中サブオプションサービス契約停止解除
				statusCode = getEKK0401C051SC(param, handle, eKK0401A010Hash, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
			// 休止・中断中以外はサービス提供中とする
			else
			{
				// サブオプションサービス契約停止解除
				statusCode = getEKK0401C050SC(param, handle, eKK0401A010Hash, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
		}

		return 0;
	}
	
	/**
	 * 機器提供サービス契約 利用停止解除処理
	 * @param	handle			セッションマネージャなどを持ったハンドル
	 * @param	param			モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam	リクエストパラメータ
	 * @param	resultHash		結果のハッシュ
	 * @return					リターンコード
	 * @throws	Throwable
	 */
	private int executeKktkSvcKei_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 = getEKK0341A010SC(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_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, (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.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_USESTPRLS);
				// サービス停止解除年月日(運用日)
				kkopKeiUpdInfo.put(JKKKkopSvcUseKeiUpdCC.KEY_SVC_STP_RLS_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;
			}
		}

		// 停止中の場合
		if(SVC_KEI_STAT_STP.equals(kktk_svc_kei_stat))
		{
			HashMap<String, Object> svkeiStatMap = (HashMap<String, Object>)resultHash.get(MAP_KEY_GET_SVKEI_STAT);
			String useStpBfSvcKeiStat = (String)svkeiStatMap.get(JKKGetSvkeiStatConstCC.LAST_KK0081_STAT);
			// 利用停止前が休止・中断中だった場合
			if (SVC_KEI_STAT_KYUS.equals(useStpBfSvcKeiStat))
			{
				// 休止中機器提供サービス契約停止解除
				statusCode = getEKK0341C131SC(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
			// 休止・中断中以外はサービス提供中とする
			else
			{
				// 機器提供サービス契約停止解除
				statusCode = getEKK0341C130SC(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
			// 機器オプションサービス契約利用停止解除
			executeKkopSvcKei_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.13
	 */
	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;
	}

	/**
	 * 機器提供サービス契約 利用停止解除処理　パート２
	 * eo光電話について、eo光ネットに紐づいているONUやVDSLモデムをここで利用停止します
	 * 
	 * @param	handle			
	 * @param	param			
	 * @param	requestParam	
	 * @param	resultHash		
	 * @param	ekk0081a010Map	
	 * @return					
	 * @throws	Throwable 
	 */
	private int executeKktkSvcKei_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 = executeKktkSvcKei_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 executeSeiOpSvcKei_UseStp(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			HashMap<String, Object> requestParam,
//			HashMap<String, Object> resultHash,
//			String seiOpSvcKeiNo
//	) throws Throwable
//	{
//		// ステータスコード
//		int statusCode = 0;
//
//		// 請求オプションサービス契約一意照会
//		statusCode = getEKK0441A010SC(param, handle, requestParam, resultHash, seiOpSvcKeiNo);
//		if(statusCode != 0)
//		{
//			return statusCode;
//		}
//
//		// 請求オプションサービス契約データ取得
//		HashMap<String, Object> eKK0441A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0441A010);
//
//		// 請求オプションサービス契約ステータス
//		String seiopsvc_kei_stat = (String)eKK0441A010Hash.get(EKK0441A010CBSMsg1List.SEIOPSVC_KEI_STAT);
//
//		String seiopsvc_gene_add_dtm = (String)eKK0441A010Hash.get(EKK0441A010CBSMsg1List.GENE_ADD_DTM);
//		
//		// 停止中の場合
//		if(SVC_KEI_STAT_STP.equals(seiopsvc_kei_stat))
//		{
//			// 利用停止解除時に停止中の場合サービス契約の状態に関係なく、請求オプションサービス契約自体を
//			// 元の状態に戻す。
//			
//			// 請求オプションサービス契約履歴照会
//			statusCode = getEKK0441B002SC(param, handle, requestParam, resultHash, seiOpSvcKeiNo);
//			
//			if(statusCode != 0)
//			{
//				return statusCode;
//			}
//			
//			// 取得できた結果は世代登録年月日の降順となっているので実質2レコード目のみを参照すればOK
//			ArrayList<HashMap<String, Object>> eKK0441B002HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0441B002);
//
//			if (eKK0441B002HashList.size() > 0)
//			{
//				// 請求オプションサービス契約履歴照会の取得分だけループ
//				for(int idx_su = 0 ; idx_su < eKK0441B002HashList.size() ; idx_su++)
//				{
//					HashMap<String, Object> eKK0441B002Hash = eKK0441B002HashList.get(idx_su);
//
//					// 世代登録年月日の取得
//					String gene_add_dtm   = (String)eKK0441B002Hash.get(EKK0441B002CBSMsg1List.GENE_ADD_DTM);
//
//					// 世代登録年月日の比較
//					if(seiopsvc_gene_add_dtm.equals(gene_add_dtm))
//					{
//						// カレント検索した世代登録年月日と履歴一覧で取得した世代登録年月日が一致する場合、次レコードを参照
//						continue;
//					}
//					else
//					{
//						// カレント検索した世代登録年月日と履歴一覧で取得した世代登録年月日が一致「しない」場合、請求オプションサービス契約ステータスを取得
//						String seiOpSvcKeiStatRireki   = (String)eKK0441B002Hash.get(EKK0441B002CBSMsg1List.SEIOPSVC_KEI_STAT);
//
//						// カレント検索した請求オプションサービス契約ステータスと1世代前のステータスが一致している場合
//						if(seiopsvc_kei_stat.equals(seiOpSvcKeiStatRireki))
//						{
//							// 一致している場合、さらに前の世代レコードを参照
//							continue;
//						}
//						else
//						{
//							// 一致していない場合、そのステータスによって振舞を振り分ける
//							if("210".equals(seiOpSvcKeiStatRireki))
//							{
//								// 休止中断中の場合
//								// 休止中請求オプションサービス契約停止解除
//								statusCode = getEKK0441C091SC(param, handle, requestParam, resultHash);
//								if(statusCode != 0)
//								{
//									return statusCode;
//								}
//								else
//								{
//									// 処理した場合はループを抜ける
//									break;
//								}
//							}
//							else
//							{
//								// 休止中断中以外の場合
//								// 請求オプションサービス契約停止解除
//								statusCode = getEKK0441C090SC(param, handle, requestParam, resultHash);
//								if(statusCode != 0)
//								{
//									return statusCode;
//								}
//								else
//								{
//									// 処理した場合はループを抜ける
//									break;
//								}
//							}
//						}
//					}
//				}
//			}
//			else
//			{
//				// 1件も取得できていない場合は何もしない
//			}
//		}
//
//		return 0;
//	}
	
	/**
	 * サービス制御管理S 利用停止解除要求処理
	 * @param	handle			セッションマネージャなどを持ったハンドル
	 * @param	param			モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam	リクエストパラメータ
	 * @param	resultHash		パラメータ
	 * @return					リターンコード
	 * @throws	Throwable
	 */
	private int executeSvcCtlUseStpReq(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			ArrayList<HashMap<String, Object>> hakkoSODDataList
	) throws Throwable
	{
		// サービスオーダ発行CC
		JKKHakkoSODCC hakkoSODCC = new JKKHakkoSODCC();
		String hakkoSODDataKey = "HakkoSODCC";
		mappingHakkoSODCC(
				param,
				hakkoSODDataKey,
				hakkoSODDataList,
				resultHash
		);
		hakkoSODCC.hakkoSOD(handle, param, hakkoSODDataKey);

		// 正常
		return 0;
	}
	
	/**
	 * 利用停止解除可能判定処理
	 * @param	fukaUseStpRlsTrgtLst	利用停止解除不可対象リスト
	 * @param	requestParam			パラメータ
	 * @param	resultHash				結果のハッシュ
	 * @return							利用停止解除可否(可:false, 不可:true)
	 */
	private boolean isUseStpFukaCheck(
			ArrayList<HashMap<String, Object>> fukaUseStpRlsTrgtLst,
			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);

//		// マンション情報一覧照会（サービス契約番号）の結果取得
//		HashMap<String, Object> eKK0861B002Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0861B002);

		boolean isMansBukken = false;

//		// 全戸一括 OR 居住者一括(個別）の場合は処理しない
//		if(eKK0861B002Hash != null)
//		{
//			String payHoshikiCd = (String)eKK0861B002Hash.get(EKK0861B002CBSMsg1List.KANYU_KEI_PAY_HOSHIKI_CD);
//		}

		// 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 解約済 or キャンセル済
		else if(
				SVC_KEI_STAT_TKC.equals(svc_kei_stat)
				|| SVC_KEI_STAT_KYUS.equals(svc_kei_stat)
				|| SVC_KEI_STAT_DSL.equals(svc_kei_stat)
				|| SVC_KEI_STAT_CNCL.equals(svc_kei_stat)
		)
		{
			if(!isMansBukken)
			{
				// 利用停止解除不可理由：依頼取消
				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));
			// 停止不可対象者リスト追加
			fukaUseStpRlsTrgtLst.add(fukaTaiHash);
		}
		return(fuka_flg);
	}

	/**
	 * 利用停止の一世代前のサービス契約ステータスを取得します。<br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param svcKeiNo リクエストパラメータのサービス契約番号
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @return 一世代前サービス契約ステータス
	 * @throws Throwable 例外が発生した場合
	 */
	private HashMap<String, Object> getUseStpBfSvcKeiStat(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo, String svcKeiUcwkNo) throws Throwable
	{
		HashMap<String, Object> svkeiStatMap = new HashMap<String, Object>();
		svkeiStatMap.put(JKKGetSvkeiStatConstCC.IDO_DIV, IDO_DIV_USESTPRLS);
		svkeiStatMap.put(JKKGetSvkeiStatConstCC.KEY_SVC_KEI_NO, svcKeiNo);
		if (null != svcKeiUcwkNo && !svcKeiUcwkNo.isEmpty())
		{
			svkeiStatMap.put(JKKGetSvkeiStatConstCC.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);
		}
		param.setData(MAP_KEY_GET_SVKEI_STAT, svkeiStatMap);

		// 一世代前のサービス契約ステータスを取得する
		JKKGetSvkeiStat.getLastSvcKeiStat(handle, param, MAP_KEY_GET_SVKEI_STAT);

		return svkeiStatMap;
	}
	
	/**
	 * 課金先一覧照会（請求契約番号／サービス契約番号）サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 
	 */
	private int getEKK0321B002SC(
								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 = setEditInMsgCmn(param);
		
		//EKK0321B002への呼び出しパラメータ設定
		template = new CAANMsg(EKK0321B002CBSMsg.class.getName());
		setMappingEKK0321B002InMsg(template, inHash, seikyu_kei_no);
		setEditBasicCmn(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, 
					setMappingEKK0321B002SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0321B002の結果をHashとして抽出する
	 * @param resultMsgs EKK0321B002のテンプレートリスト
	 * @return EKK0321B002の結果部分
	 */
	private ArrayList<HashMap<String, Object>> setMappingEKK0321B002SCOutMsg(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;
	}
	
	/**
	 * templateに対してEKK0321B002の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void setMappingEKK0321B002InMsg(CAANMsg template, HashMap<String, Object> inHash, String seikyu_kei_no)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK0321B002CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0321B002CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0321B002);

		//機能コード--課金先一覧照会
		template.set(EKK0321B002CBSMsg.FUNC_CODE, "1");

		//ＫＥＹ＿サービス契約番号
		template.set(EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO, seikyu_kei_no);
	}
	
	/**
	 * 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;
	}
	
	/**
	 *<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を設定
		setFillCAANMSGNullMapping(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));
		
	}

	/**
	 * 課金先一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	private int getEKK0321A010SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0321A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0321A010CBSMsg.class.getName());
		setMappingEKK0321A010InMsg(template, inHash, resultHash);
		setEditBasicCmn(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, 
					setMappingEKK0321A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0321A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0321A010のテンプレートリスト
	 * @return EKK0321A010の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0321A010SCOutMsg(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 setMappingEKK0321A010InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(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 Throwable 例外が発生した場合
	 */
	private int getEKK0081A010SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0081A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081A010CBSMsg.class.getName());
		setMappingEKK0081A010InMsg(template, svcKeiNo);
		setEditBasicCmn(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, 
					setMappingEKK0081A010SCOutMsg(resultMsgs));
		}

		return status;
		
	}
	
	/**
	 * EKK0081A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0081A010の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0081A010SCOutMsg(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 svcKeiNo サービス契約番号
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void setMappingEKK0081A010InMsg(CAANMsg template, String svcKeiNo)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(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");
	}
	
	/**
	 * マンション情報一覧照会（サービス契約番号）の結果を取得
	 * @param param
	 * @param userDataIndex
	 * @return
	 * @throws Throwable 例外が発生した場合
	 */
	private int getEKK0861B002SC(
			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 = setEditInMsgCmn(param);

		// 上りマッピング
		template = new CAANMsg(EKK0861B002CBSMsg.class.getName());
		mappingEKK0861B002InMsg(template, inHash, resultHash);
		setEditBasicCmn(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;
		
	}
	
	/**
	 * サービス契約内訳一覧照会サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @param svcKeiNo サービス契約番号
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	private int getEKK0161B004SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0161B004への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161B004CBSMsg.class.getName());
		setMappingEKK0161B004InMsg(template, inHash, svcKeiNo);
		setEditBasicCmn(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, 
					setMappingEKK0161B004SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0161B004の結果をHashとして抽出する
	 * @param resultMsgs EKK0161B004のテンプレートリスト
	 * @return EKK0161B004の結果部分
	 */
	private ArrayList<HashMap<String, Object>> setMappingEKK0161B004SCOutMsg(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 requestParam アプリ固有のパラメータ
	 * @param svcKeiNo サービス契約番号
	 */
	private void setMappingEKK0161B004InMsg(CAANMsg template, HashMap<String, Object> inHash, String svcKeiNo)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK0161B004CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0161B004CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161B004);

		//機能コード--サービス契約内訳一覧照会
		template.set(EKK0161B004CBSMsg.FUNC_CODE, "1");

		//ＫＥＹ＿サービス契約番号
		template.set(EKK0161B004CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}
	
	
	
	/**
	 * サービス契約内訳一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	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 = setEditInMsgCmn(param);

		// EKK0161A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161A010CBSMsg.class.getName());
		setMappingEKK0161A010InMsg(template, svcKeiUcwkNo);
		setEditBasicCmn(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, setMappingEKK0161A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0161A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0161A010のテンプレートリスト
	 * @return EKK0161A010の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0161A010SCOutMsg(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 setMappingEKK0161A010InMsg(CAANMsg template, String svcKeiUcwkNo)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(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 Throwable 例外が発生した場合
	 */
	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 = setEditInMsgCmn(param);

		// EKK0351A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351A010CBSMsg.class.getName());
		setMappingEKK0351A010InMsg(template, inHash);
		setEditBasicCmn(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, setMappingEKK0351A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0351A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0351A010のテンプレートリスト
	 * @return EKK0351A010の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0351A010SCOutMsg(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 setMappingEKK0351A010InMsg(CAANMsg template, HashMap<String, Object> inHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(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 Throwable 例外が発生した場合
	 */
	private int getEKK0401A010SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0401A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401A010CBSMsg.class.getName());
		setMappingEKK0401A010InMsg(template, inHash);
		setEditBasicCmn(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, 
					setMappingEKK0401A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0401A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0401A010のテンプレートリスト
	 * @return EKK0401A010の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0401A010SCOutMsg(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 setMappingEKK0401A010InMsg(CAANMsg template, HashMap<String, Object> inHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(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	結果のハッシュ
//	 * @return				サービスインターフェースのリターンコード
//	 * @throws Throwable 例外が発生した場合
//	 */
//	private int getEKK0441A010SC(
//			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 = setEditInMsgCmn(param);
//
//		// EKK0441A010への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0441A010CBSMsg.class.getName());
//		setMappingEKK0441A010InMsg(template, inHash, resultHash, seiOpSvcKeiNo);
//		setEditBasicCmn(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, setMappingEKK0441A010SCOutMsg(resultMsgs));
//		}
//
//		return status;
//	}
	
//	/**
//	 * EKK0441A010の結果をHashとして抽出する
//	 * @param resultMsgs EKK0441A010のテンプレートリスト
//	 * @return EKK0441A010の結果部分
//	 */
//	private HashMap<String, Object> setMappingEKK0441A010SCOutMsg(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 アプリ固有のパラメータ
//	 */
//	private void setMappingEKK0441A010InMsg(
//			CAANMsg template,
//			HashMap<String, Object> inHash,
//			HashMap<String, Object> resultHash,
//			String seiOpSvcKeiNo
//	)
//	{
//		// まずは全条件のNullマッピング
//		setFillCAANMSGNullMapping(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 Throwable 例外が発生した場合
	 */
	private int getEKK0341A010SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0341A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341A010CBSMsg.class.getName());
		setMappingEKK0341A010InMsg(template, inHash, resultHash);
		setEditBasicCmn(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, 
					setMappingEKK0341A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0341A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0341A010のテンプレートリスト
	 * @return EKK0341A010の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0341A010SCOutMsg(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 setMappingEKK0341A010InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(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 Throwable 例外が発生した場合
	 */
	private int getEKK0081C060SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0081C060への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081C060CBSMsg.class.getName());
		setMappingEKK0081C060InMsg(template, inHash, resultHash);
		setEditBasicCmn(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_EKK0081C060, 
					setMappingEKK0081C060SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0081C060の結果をHashとして抽出する
	 * @param resultMsgs EKK0081C060のテンプレートリスト
	 * @return EKK0081C060の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0081C060SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0081C060の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void setMappingEKK0081C060InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK0081C060CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0081C060CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081C060);

		//機能コード--チェック＆登録
		template.set(EKK0081C060CBSMsg.FUNC_CODE, "1");
		
		
		//サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		//サービス契約番号
		template.set(EKK0081C060CBSMsg.SVC_KEI_NO, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
		
		//サービス停止解除年月日
		template.set(EKK0081C060CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
		
		//サービス停止解除理由コード
		template.set(EKK0081C060CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);
		
		//異動区分(利用停止解除)固定
		template.set(EKK0081C060CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0081C060CBSMsg.UPD_DTM_BF, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.LAST_UPD_DTM));
	}

	/**
	 * 休止中サービス契約停止解除SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	private int getEKK0081C061SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0081C061への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081C061CBSMsg.class.getName());
		setMappingEKK0081C061InMsg(template, inHash, resultHash);
		setEditBasicCmn(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_EKK0081C061, 
					setMappingEKK0081C061SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0081C061の結果をHashとして抽出する
	 * @param resultMsgs EKK0081C061のテンプレートリスト
	 * @return EKK0081C061の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0081C061SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0081C061の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void setMappingEKK0081C061InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK0081C061CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0081C061CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081C061);

		//機能コード--チェック＆登録
		template.set(EKK0081C061CBSMsg.FUNC_CODE, "1");
		
		
		//サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		//サービス契約番号
		template.set(EKK0081C061CBSMsg.SVC_KEI_NO, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
		
		//サービス停止解除年月日
		template.set(EKK0081C061CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
		
		//サービス停止解除理由コード
		template.set(EKK0081C061CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);
		
		//異動区分(利用停止解除)固定
		template.set(EKK0081C061CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0081C061CBSMsg.UPD_DTM_BF, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.LAST_UPD_DTM));
	}
	
	/**
	 * サービス契約内訳停止解除SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	private int getEKK0161C050SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0161C050への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161C050CBSMsg.class.getName());
		setMappingEKK0161C050InMsg(template, inHash, resultHash);
		setEditBasicCmn(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_EKK0161C050, 
					setMappingEKK0161C050SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0161C050の結果をHashとして抽出する
	 * @param resultMsgs EKK0161C050のテンプレートリスト
	 * @return EKK0161C050の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0161C050SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0161C050の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void setMappingEKK0161C050InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK0161C050CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0161C050CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161C050);

		//機能コード--チェック＆登録
		template.set(EKK0161C050CBSMsg.FUNC_CODE, "1");
		

		//サービス契約内訳番号
		template.set(EKK0161C050CBSMsg.SVC_KEI_UCWK_NO, inHash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO));
		
		//サービス停止解除年月日
		template.set(EKK0161C050CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
		
		//サービス停止解除理由コード
		template.set(EKK0161C050CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);

		//異動区分(利用停止解除)固定
		template.set(EKK0161C050CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0161C050CBSMsg.UPD_DTM_BF, inHash.get(EKK0161A010CBSMsg1List.LAST_UPD_DTM));
	}

	/**
	 * 休止中サービス契約内訳停止解除SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	private int getEKK0161C051SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0161C051への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161C051CBSMsg.class.getName());
		setMappingEKK0161C051InMsg(template, inHash, resultHash);
		setEditBasicCmn(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_EKK0161C051, 
					setMappingEKK0161C051SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0161C051の結果をHashとして抽出する
	 * @param resultMsgs EKK0161C050のテンプレートリスト
	 * @return EKK0161C050の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0161C051SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0161C051の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void setMappingEKK0161C051InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK0161C051CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0161C051CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161C051);

		//機能コード--チェック＆登録
		template.set(EKK0161C051CBSMsg.FUNC_CODE, "1");
		

		//サービス契約内訳番号
		template.set(EKK0161C051CBSMsg.SVC_KEI_UCWK_NO, inHash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO));
		
		//サービス停止解除年月日
		template.set(EKK0161C051CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
		
		//サービス停止解除理由コード
		template.set(EKK0161C051CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);

		//異動区分(利用停止解除)固定
		template.set(EKK0161C051CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0161C051CBSMsg.UPD_DTM_BF, inHash.get(EKK0161A010CBSMsg1List.LAST_UPD_DTM));
	}
	
	
	/**
	 * オプションサービス契約停止解除SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	private int getEKK0351C050SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0351C050への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351C050CBSMsg.class.getName());
		setMappingEKK0351C050InMsg(template, inHash, resultHash);
		setEditBasicCmn(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_EKK0351C050, 
					setMappingEKK0351C050SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0351C050の結果をHashとして抽出する
	 * @param resultMsgs EKK0351C050のテンプレートリスト
	 * @return EKK0351C050の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0351C050SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0351C050の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void setMappingEKK0351C050InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK0351C050CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0351C050CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0351C050);

		//機能コード--チェック＆登録
		template.set(EKK0351C050CBSMsg.FUNC_CODE, "1");
		
		//オプションサービス契約一意照会の結果取得
		HashMap<String, Object> eKK0351A010Hash = null;
		eKK0351A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0351A010);

		//オプションサービス契約番号
		template.set(EKK0351C050CBSMsg.OP_SVC_KEI_NO, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
		
		//サービス停止解除年月日
		template.set(EKK0351C050CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
		
		//サービス停止解除理由コード
		template.set(EKK0351C050CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);

		//異動区分(利用停止解除)固定
		template.set(EKK0351C050CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0351C050CBSMsg.UPD_DTM_BF, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.LAST_UPD_DTM));
	}

	/**
	 * 休止中オプションサービス契約停止解除SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	private int getEKK0351C051SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0351C051への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351C051CBSMsg.class.getName());
		setMappingEKK0351C051InMsg(template, inHash, resultHash);
		setEditBasicCmn(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_EKK0351C051, 
					setMappingEKK0351C051SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0351C051の結果をHashとして抽出する
	 * @param resultMsgs EKK0351C050のテンプレートリスト
	 * @return EKK0351C050の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0351C051SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0351C051の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void setMappingEKK0351C051InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK0351C050CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0351C051CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0351C051);

		//機能コード--チェック＆登録
		template.set(EKK0351C051CBSMsg.FUNC_CODE, "1");
		
		//オプションサービス契約一意照会の結果取得
		HashMap<String, Object> eKK0351A010Hash = null;
		eKK0351A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0351A010);

		//オプションサービス契約番号
		template.set(EKK0351C051CBSMsg.OP_SVC_KEI_NO, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
		
		//サービス停止解除年月日
		template.set(EKK0351C051CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
		
		//サービス停止解除理由コード
		template.set(EKK0351C051CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);

		//異動区分(利用停止解除)固定
		template.set(EKK0351C051CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0351C051CBSMsg.UPD_DTM_BF, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.LAST_UPD_DTM));
	}
	
	
	/**
	 * サブオプションサービス契約停止解除SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	private int getEKK0401C050SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0401C050への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401C050CBSMsg.class.getName());
		setMappingEKK0401C050InMsg(template, inHash, resultHash);
		setEditBasicCmn(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_EKK0401C050, 
					setMappingEKK0401C050SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0401C050の結果をHashとして抽出する
	 * @param resultMsgs EKK0401C050のテンプレートリスト
	 * @return EKK0401C050の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0401C050SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0401C050の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void setMappingEKK0401C050InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK0401C050CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0401C050CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0401C050);

		//機能コード--チェック＆登録
		template.set(EKK0401C050CBSMsg.FUNC_CODE, "1");

		//オプションサービス契約番号
		template.set(EKK0401C050CBSMsg.OP_SVC_KEI_NO, inHash.get(EKK0401A010CBSMsg1List.OP_SVC_KEI_NO));
		
		//サブオプションサービス契約番号
		template.set(EKK0401C050CBSMsg.SBOP_SVC_KEI_NO, inHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_NO));
		
		//サービス停止解除年月日
		template.set(EKK0401C050CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
		
		//サービス停止解除理由コード
		template.set(EKK0401C050CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);

		//異動区分(利用停止解除)固定
		template.set(EKK0401C050CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0401C050CBSMsg.UPD_DTM_BF, inHash.get(EKK0401A010CBSMsg1List.LAST_UPD_DTM));
	}

	/**
	 * 休止中サブオプションサービス契約停止解除SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	private int getEKK0401C051SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0401C051への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401C051CBSMsg.class.getName());
		setMappingEKK0401C051InMsg(template, inHash, resultHash);
		setEditBasicCmn(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_EKK0401C051, 
					setMappingEKK0401C051SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0401C051の結果をHashとして抽出する
	 * @param resultMsgs EKK0401C051のテンプレートリスト
	 * @return EKK0401C051の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0401C051SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0401C051の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void setMappingEKK0401C051InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK0401C051CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0401C051CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0401C051);

		//機能コード--チェック＆登録
		template.set(EKK0401C051CBSMsg.FUNC_CODE, "1");

		//オプションサービス契約番号
		template.set(EKK0401C051CBSMsg.OP_SVC_KEI_NO, inHash.get(EKK0401A010CBSMsg1List.OP_SVC_KEI_NO));
		
		//サブオプションサービス契約番号
		template.set(EKK0401C051CBSMsg.SBOP_SVC_KEI_NO, inHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_NO));
		
		//サービス停止解除年月日
		template.set(EKK0401C051CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
		
		//サービス停止解除理由コード
		template.set(EKK0401C051CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);

		//異動区分(利用停止解除)固定
		template.set(EKK0401C051CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0401C051CBSMsg.UPD_DTM_BF, inHash.get(EKK0401A010CBSMsg1List.LAST_UPD_DTM));
	}
	
//	/**
//	 * 請求オプションサービス契約停止解除SIFを呼び出し
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param inHash 条件用Hash
//	 * @param resultHash 結果のハッシュ
//	 * @return サービスインターフェースのリターンコード
//	 * @throws Throwable 例外が発生した場合
//	 */
//	private int getEKK0441C090SC(
//			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 = setEditInMsgCmn(param);
//		
//		//EKK0441C090への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0441C090CBSMsg.class.getName());
//		setMappingEKK0441C090InMsg(template, inHash, resultHash);
//		setEditBasicCmn(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_EKK0441C090, 
//					setMappingEKK0441C090SCOutMsg(resultMsgs));
//		}
//
//		return status;
//	}
	
//	/**
//	 * EKK0441C090の結果をHashとして抽出する
//	 * @param resultMsgs EKK0441C090のテンプレートリスト
//	 * @return EKK0441C090の結果部分
//	 */
//	private HashMap<String, Object> setMappingEKK0441C090SCOutMsg(CAANMsg[] resultMsgs)
//	{
//		
//		HashMap<String, Object> retHash = null;
//		CAANMsg msg = null;
//		
//		//結果の抽出
//		msg = resultMsgs[0];
//		
//		//結果の取得
//		retHash = msg.getHashMap();
//		
//		return retHash;
//	}
	
//	/**
//	 * templateに対してEKK0441C090の条件に関する部分を設定する
//	 * @param template 条件の設定先
//	 * @param inHash 設定条件
//	 * @param resultHash アプリ固有のパラメータ
//	 */
//	private void setMappingEKK0441C090InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
//	{
//
//		//まずは全条件のNullマッピング
//		setFillCAANMSGNullMapping(template, new EKK0441C090CBSMsg().getContents());
//		
//		//テンプレートID(SIFのID)
//		template.set(EKK0441C090CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441C090);
//
//		//機能コード--チェック＆登録
//		template.set(EKK0441C090CBSMsg.FUNC_CODE, "1");
//		
//		//請求オプションサービス契約一意照会の結果取得
//		HashMap<String, Object> eKK0441A010Hash = null;
//		eKK0441A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0441A010);
//
//		//請求オプションサービス契約番号
//		template.set(EKK0441C090CBSMsg.SEIOPSVC_KEI_NO, eKK0441A010Hash.get(EKK0441A010CBSMsg1List.SEIOPSVC_KEI_NO));
//		
//		//サービス停止解除年月日
//		template.set(EKK0441C090CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
//		
//		//サービス停止解除理由コード
//		template.set(EKK0441C090CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);
//
//		//異動区分(利用停止解除)固定
//		template.set(EKK0441C090CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
//		
//		//更新年月日時分秒(更新前)
//		template.set(EKK0441C090CBSMsg.UPD_DTM_BF, eKK0441A010Hash.get(EKK0441A010CBSMsg1List.LAST_UPD_DTM));
//	}

//	/**
//	 * 休止中請求オプションサービス契約停止解除SIFを呼び出し
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param inHash 条件用Hash
//	 * @param resultHash 結果のハッシュ
//	 * @return サービスインターフェースのリターンコード
//	 * @throws Throwable 例外が発生した場合
//	 */
//	private int getEKK0441C091SC(
//			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 = setEditInMsgCmn(param);
//		
//		//EKK0441C090への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0441C091CBSMsg.class.getName());
//		setMappingEKK0441C091InMsg(template, inHash, resultHash);
//		setEditBasicCmn(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_EKK0441C091, 
//					setMappingEKK0441C091SCOutMsg(resultMsgs));
//		}
//
//		return status;
//	}
	
//	/**
//	 * EKK0441C091の結果をHashとして抽出する
//	 * @param resultMsgs EKK0441C091のテンプレートリスト
//	 * @return EKK0441C091の結果部分
//	 */
//	private HashMap<String, Object> setMappingEKK0441C091SCOutMsg(CAANMsg[] resultMsgs)
//	{
//		
//		HashMap<String, Object> retHash = null;
//		CAANMsg msg = null;
//		
//		//結果の抽出
//		msg = resultMsgs[0];
//		
//		//結果の取得
//		retHash = msg.getHashMap();
//		
//		return retHash;
//	}
	
//	/**
//	 * templateに対してEKK0441C091の条件に関する部分を設定する
//	 * @param template 条件の設定先
//	 * @param inHash 設定条件
//	 * @param resultHash アプリ固有のパラメータ
//	 */
//	private void setMappingEKK0441C091InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
//	{
//
//		//まずは全条件のNullマッピング
//		setFillCAANMSGNullMapping(template, new EKK0441C091CBSMsg().getContents());
//		
//		//テンプレートID(SIFのID)
//		template.set(EKK0441C091CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441C091);
//
//		//機能コード--チェック＆登録
//		template.set(EKK0441C091CBSMsg.FUNC_CODE, "1");
//		
//		//請求オプションサービス契約一意照会の結果取得
//		HashMap<String, Object> eKK0441A010Hash = null;
//		eKK0441A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0441A010);
//
//		//請求オプションサービス契約番号
//		template.set(EKK0441C091CBSMsg.SEIOPSVC_KEI_NO, eKK0441A010Hash.get(EKK0441A010CBSMsg1List.SEIOPSVC_KEI_NO));
//		
//		//サービス停止解除年月日
//		template.set(EKK0441C091CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
//		
//		//サービス停止解除理由コード
//		template.set(EKK0441C091CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);
//
//		//異動区分(利用停止解除)固定
//		template.set(EKK0441C091CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
//		
//		//更新年月日時分秒(更新前)
//		template.set(EKK0441C091CBSMsg.UPD_DTM_BF, eKK0441A010Hash.get(EKK0441A010CBSMsg1List.LAST_UPD_DTM));
//	}
	
	
	/**
	 * 機器提供サービス契約停止解除SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	private int getEKK0341C130SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0341C130への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341C130CBSMsg.class.getName());
		setMappingEKK0341C130InMsg(template, inHash, resultHash);
		setEditBasicCmn(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_EKK0341C130, 
					setMappingEKK0341C130SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0341C130の結果をHashとして抽出する
	 * @param resultMsgs EKK0341C130のテンプレートリスト
	 * @return EKK0341C130の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0341C130SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0341C130の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void setMappingEKK0341C130InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK0341C130CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0341C130CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341C130);

		//機能コード--チェック＆登録
		template.set(EKK0341C130CBSMsg.FUNC_CODE, "1");
		
		//機器提供サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0341A010Hash = null;
		eKK0341A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341A010);

		//機器提供サービス契約番号
		template.set(EKK0341C130CBSMsg.KKTK_SVC_KEI_NO, eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
		
		//サービス停止解除年月日
		template.set(EKK0341C130CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
		
		//サービス停止解除理由コード
		template.set(EKK0341C130CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);

		//異動区分(利用停止解除)固定
		template.set(EKK0341C130CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0341C130CBSMsg.UPD_DTM_BF, eKK0341A010Hash.get(EKK0341A010CBSMsg1List.LAST_UPD_DTM));
	}

	/**
	 * 休止中機器提供サービス契約停止解除SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	private int getEKK0341C131SC(
			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 = setEditInMsgCmn(param);
		
		//EKK0341C131への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341C131CBSMsg.class.getName());
		setMappingEKK0341C131InMsg(template, inHash, resultHash);
		setEditBasicCmn(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_EKK0341C131, 
					setMappingEKK0341C131SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK0341C131の結果をHashとして抽出する
	 * @param resultMsgs EKK0341C131のテンプレートリスト
	 * @return EKK0341C131の結果部分
	 */
	private HashMap<String, Object> setMappingEKK0341C131SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK0341C131の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void setMappingEKK0341C131InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK0341C131CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0341C131CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341C131);

		//機能コード--チェック＆登録
		template.set(EKK0341C131CBSMsg.FUNC_CODE, "1");
		
		//機器提供サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0341A010Hash = null;
		eKK0341A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341A010);

		//機器提供サービス契約番号
		template.set(EKK0341C131CBSMsg.KKTK_SVC_KEI_NO, eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
		
		//サービス停止解除年月日
		template.set(EKK0341C131CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
		
		//サービス停止解除理由コード
		template.set(EKK0341C131CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);

		//異動区分(利用停止解除)固定
		template.set(EKK0341C131CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
		
		//更新年月日時分秒(更新前)
		template.set(EKK0341C131CBSMsg.UPD_DTM_BF, eKK0341A010Hash.get(EKK0341A010CBSMsg1List.LAST_UPD_DTM));
	}
	
	/**
	 * 進捗登録SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	private int getEKK1091D010SC(
			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 = setEditInMsgCmn(param);
		
		//EKK1091D010への呼び出しパラメータ設定
		template = new CAANMsg(EKK1091D010CBSMsg.class.getName());
		setMappingEKK1091D010SCInMsg(template, inHash);
		setEditBasicCmn(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, 
					setMappingEKK1091D010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK1091D010の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK1091D010の結果部分
	 */
	private HashMap<String, Object> setMappingEKK1091D010SCOutMsg(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 setMappingEKK1091D010SCInMsg(CAANMsg template, HashMap<String, Object> inHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(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, inHash.get(SVC_KEI_NO));
		
		//異動区分(利用停止解除)
		template.set(EKK1091D010CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
		
		//異動年月日時分秒(システム日時)
		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_USESTPRLS);
			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);
			// 利用停止前のサービス契約ステータス
			HashMap<String, Object> svkeiStatMap = (HashMap<String, Object>)resultHash.get(MAP_KEY_GET_SVKEI_STAT);
			String useStpBfSvcKeiStat = (String)svkeiStatMap.get(JKKGetSvkeiStatConstCC.LAST_KK0081_STAT);
			// 利用停止前が中断中のイーモバイルでない場合 ※中断中のイーモバイルの場合は本体の一時停止解除オーダを発行しない
			if (!(JKKSvcConst.PRC_GRP_CD_MOB_EM.equals(prcGrpCd) && SVC_KEI_STAT_KYUS.equals(useStpBfSvcKeiStat)))
			{
				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);
	}
	
	/**
	 * 持ちうるフィールドにNullマッピングで埋める
	 * @param msg 対象クラス
	 * @param contents 対応クラスのフィールド列挙
	 */
	private void setFillCAANMSGNullMapping(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 setEditBasicCmn(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> setEditInMsgCmn(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;
	}

	/**
	 * 
	 */
	private boolean isSvcKeiTargetData(String targetSvcKeiNo, String svcKeiNo)
	{
		boolean ret = false;

		// 課金先のサービス契約番号と比較し、一致する場合
		if (targetSvcKeiNo.equals(svcKeiNo))
		{
			// 利用停止を実施する
			ret = true;
		}
		return ret;
	}

	/**
	 * 
	 */
	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;
	}

	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;
	}

	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;
	}

//	/**
//	 * インターネットサービス一覧照会（請求契約番号）サービスIFを呼び出し
//	 * @param	param			リクエストパラメータ
//	 * @param	handle			セッションハンドル
//	 * @param	requestParam	条件用Hash
//	 * @param	resultHash		結果のハッシュ
//	 * @return					サービスインターフェースのリターンコード
//	 * @throws Throwable 例外が発生した場合
//	 */
//	private int callEKK0081B526SC(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			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 = setEditInMsgCmn(param);
//
//		// EKK0081B526への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0081B526CBSMsg.class.getName());
//		mappingEKK0081B526InMsg(template, requestParam);
//		setEditBasicCmn(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_EKK0081B526, mappingEKK0081B526SCOutMsg(resultMsgs));
//		}
//
//		return status;
//	}

//	/**
//	 * templateに対してEKK0081B526の条件に関する部分を設定する
//	 * @param	template		条件の設定先
//	 * @param	requestParam	設定条件
//	 */
//	private void mappingEKK0081B526InMsg(CAANMsg template, HashMap<String, Object> requestParam)
//	{
//		// まずは全条件のNullマッピング
//		setFillCAANMSGNullMapping(template, new EKK0081B526CBSMsg().getContents());
//
//		// テンプレートID
//		template.set(EKK0081B526CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B526);
//
//		// 機能コード（デフォルト：１）
//		template.set(EKK0081B526CBSMsg.FUNC_CODE, "1");
//
//		// 請求契約番号の設定
//		template.set(EKK0081B526CBSMsg.KEY_SEIKY_KEI_NO, requestParam.get(SEIKY_KEI_NO));
//	}

//	/**
//	 * EKK0081B526の結果をHashとして抽出する
//	 * @param	resultMsgs	EKK0081B526のテンプレートリスト
//	 * @return				EKK0081B526の結果部分
//	 */
//	private ArrayList<HashMap<String, Object>> mappingEKK0081B526SCOutMsg(CAANMsg[] resultMsgs)
//	{
//		ArrayList<HashMap<String, Object>> retHashList = null;
//		CAANMsg[] msgs = null;
//
//		// 結果の抽出
//		retHashList = new ArrayList<HashMap<String, Object>>();
//		msgs = resultMsgs[0].getCAANMsgList(EKK0081B526CBSMsg.EKK0081B526CBSMSG1LIST);
//		for(int i = 0 ; i < msgs.length ; i++)
//		{
//			retHashList.add(msgs[i].getMsgData());
//		}
//
//		return retHashList;
//	}

	/**
	 * サービス契約回線内訳一覧照会（サービス契約番号）SIFを呼び出し
	 * @param	param			リクエストパラメータ	
	 * @param	handle			セッションハンドル
	 * @param	requestParam	条件用Hash
	 * @param	resultHash		結果のハッシュ
	 * @return					サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	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 = setEditInMsgCmn(param);

		// EKK0251B001への呼び出しパラメータ設定
		template = new CAANMsg(EKK0251B001CBSMsg.class.getName());
		mappingEKK0251B001InMsg(template, requestParam);
		setEditBasicCmn(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;
	}
	//IT1-2018-0000110_ADD START
	/**
	 * 回線対象サービス契約一覧照会SIFを呼び出し
	 * @param	param			リクエストパラメータ	
	 * @param	handle			セッションハンドル
	 * @param	requestParam	条件用Hash
	 * @param	resultHash		結果のハッシュ
	 * @return					サービスインターフェースのリターンコード
	 * @throws Throwable 例外が発生した場合
	 */
	private int callEKK0241B002SC(
			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 = setEditInMsgCmn(param);

		// EKK0241B002への呼び出しパラメータ設定
		template = new CAANMsg(EKK0241B002CBSMsg.class.getName());
		mappingEKK0241B002InMsg(template, requestParam);
		setEditBasicCmn(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_EKK0241B002, mappingEKK0241B002SCOutMsg(resultMsgs));
		}

		return status;
	}
	/**
	 * templateに対してEKK0241B002の条件に関する部分を設定する
	 * @param	template		条件の設定先
	 * @param	requestParam	アプリ固有のパラメータ
	 */
	private void mappingEKK0241B002InMsg(CAANMsg template, HashMap<String, Object> requestParam)
	{
		// まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK0241B002CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EKK0241B002CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0241B002);

		// 機能コード--課金先一覧照会
		template.set(EKK0241B002CBSMsg.FUNC_CODE, "1");

		// ＫＥＹ＿サービス契約回線内訳番号
		template.set(EKK0241B002CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, requestParam.get(SVC_KEI_KAISEN_UCWK_NO));
	}

	/**
	 * EKK0241B002の結果をHashとして抽出する
	 * @param	resultMsgs	EKK0081B526のテンプレートリスト
	 * @return				EKK0081B526の結果部分
	 */
	private ArrayList<HashMap<String, Object>> mappingEKK0241B002SCOutMsg(CAANMsg[] resultMsgs)
	{
		ArrayList<HashMap<String, Object>> retHashList = null;
		CAANMsg[] msgs = null;

		// 結果の抽出
		retHashList = new ArrayList<HashMap<String, Object>>();
		msgs = resultMsgs[0].getCAANMsgList(EKK0241B002CBSMsg.EKK0241B002CBSMSG1LIST);
		for(int i = 0 ; i < msgs.length ; i++)
		{
			retHashList.add(msgs[i].getMsgData());
		}

		return retHashList;
	}
	//IT1-2018-0000110_ADD END
	
	/**
	 * templateに対してEKK0251B001の条件に関する部分を設定する
	 * @param	template		条件の設定先
	 * @param	requestParam	アプリ固有のパラメータ
	 */
	private void mappingEKK0251B001InMsg(CAANMsg template, HashMap<String, Object> requestParam)
	{
		// まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(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));
	}

	/**
	 * 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;
	}

	/**
	 * サービス対象機器提供サービス契約一覧照会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 = setEditInMsgCmn(param);

		// EKK0341B022への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341B022CBSMsg.class.getName());
		mappingEKK0341B022InMsg(template, svcKeiNo);
		setEditBasicCmn(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;
	}

	/**
	 * templateに対してEKK0341B022の条件に関する部分を設定する
	 * 
	 * @param	template	条件の設定先
	 * @param	svcKeiNo	サービス契約番号
	 * @since 2013-07-12 巻３IT2-2013-0000615（他契約と同請求のeo光ＴＶのV-ONUが利用停止にならない）
	 */
	private void mappingEKK0341B022InMsg(CAANMsg template, String svcKeiNo)
	{
		// まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(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);
	}

	/**
	 * 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;
	}
	// ▲▲▲▲▲ 2013/07/19 ADD E N D ▲▲▲▲▲

	/**
	 * <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 サービスインタフェース実行結果
	 * @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決済状態コード「０：通常」に更新処理を呼出
//		JKKBpCommon.mikstCdKoshin(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 executeKkopSvcKei_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, SVC_STP_RSN_CD_USESTPRLS);
				
				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_STP.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);
						
						// 親サービス契約の利用停止前のステータスを取得
						HashMap<String, Object> svkeiStatMap = (HashMap<String, Object>)resultHash.get(MAP_KEY_GET_SVKEI_STAT);
						String useStpBfSvcKeiStat = (String)svkeiStatMap.get(JKKGetSvkeiStatConstCC.LAST_KK0081_STAT);
						
						// 利用停止前が休止・中断中だった場合
						if (SVC_KEI_STAT_KYUS.equals(useStpBfSvcKeiStat))
						{
							// 休止中機器オプションサービス契約停止
							callEKK2811C100SC(param, handle, eKK2811A010Hash, resultHash);
							
						}
						// 利用停止前がサービス提供中だった場合
						else
						{
							// 機器オプションサービス契約停止解除
							callEKK2811C090SC(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 = setEditInMsgCmn(param);

		// EKK2811B010への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811B010CBSMsg.class.getName());
		mappingEKK2811B010InMsg(template, kktkSvcKeiNo, kktkSvcCd);
		setEditBasicCmn(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 kktkSvcKeiNo 機器提供サービス契約番号
	 * @param kkopSvcCd 機器オプションサービスコード
	 */
	private void mappingEKK2811B010InMsg(
			CAANMsg template
			, String kktkSvcKeiNo
			, String kkopSvcCd
	)
	{
		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(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 Throwable 例外時にスローされます
	 */
	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 = setEditInMsgCmn(param);

		// EKK2811A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811A010CBSMsg.class.getName());
		mappingEKK2811A010InMsg(template, kkopSvcKeiNo, resultHash);
		setEditBasicCmn(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マッピング
		setFillCAANMSGNullMapping(template, new EKK2811A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK2811A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2811A010);

		//機能コード
		template.set(EKK2811A010CBSMsg.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 Throwable 例外時にスローされます
	 */
	private int callEKK2811C090SC(
			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 = setEditInMsgCmn(param);

		// EKK2811C090への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811C090CBSMsg.class.getName());
		mappingEKK2811C090InMsg(template, inHash, resultHash);
		setEditBasicCmn(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_EKK2811C090, mappingEKK2811C090SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK2811C090の結果をHashとして抽出する
	 * @param resultMsgs EKK2811C090のテンプレートリスト
	 * @return EKK2811C090の結果部分
	 */
	private HashMap<String, Object> mappingEKK2811C090SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK2811C090の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 機器オプションサービス契約一意照会結果
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void mappingEKK2811C090InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK2811C090CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK2811C090CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2811C090);

		//機能コード--チェック＆登録
		template.set(EKK2811C090CBSMsg.FUNC_CODE, "1");
		
		//機器オプションサービス契約番号
		template.set(EKK2811C090CBSMsg.KKOP_SVC_KEI_NO, inHash.get(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_NO));
		
		//サービス停止解除年月日
		template.set(EKK2811C090CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
		
		//サービス停止解除理由コード
		template.set(EKK2811C090CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);

		//異動区分
		template.set(EKK2811C090CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
		
		//更新年月日時分秒(更新前)
		template.set(EKK2811C090CBSMsg.UPD_DTM_BF, inHash.get(EKK2811A010CBSMsg1List.LAST_UPD_DTM));
	}
	
	/**
	 * 休止中機器オプションサービス契約停止解除SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK2811C100SC(
			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 = setEditInMsgCmn(param);

		// EKK2811C100への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811C100CBSMsg.class.getName());
		mappingEKK2811C100InMsg(template, inHash, resultHash);
		setEditBasicCmn(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_EKK2811C100, mappingEKK2811C100SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * EKK2811C100の結果をHashとして抽出する
	 * @param resultMsgs EKK2811C100のテンプレートリスト
	 * @return EKK2811C100の結果部分
	 */
	private HashMap<String, Object> mappingEKK2811C100SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * templateに対してEKK2811C100の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 機器オプションサービス契約一意照会結果
	 * @param resultHash アプリ固有のパラメータ
	 */
	private void mappingEKK2811C100InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)
	{

		//まずは全条件のNullマッピング
		setFillCAANMSGNullMapping(template, new EKK2811C100CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK2811C100CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2811C100);

		//機能コード--チェック＆登録
		template.set(EKK2811C100CBSMsg.FUNC_CODE, "1");
		
		//機器オプションサービス契約番号
		template.set(EKK2811C100CBSMsg.KKOP_SVC_KEI_NO, inHash.get(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_NO));
		
		//サービス停止解除年月日
		template.set(EKK2811C100CBSMsg.SVC_STP_RLS_YMD, oPE_DATE);
		
		//サービス停止解除理由コード
		template.set(EKK2811C100CBSMsg.SVC_STP_RLS_RSN_CD, SVC_STP_RSN_CD_USESTPRLS);

		//異動区分
		template.set(EKK2811C100CBSMsg.IDO_DIV, IDO_DIV_USESTPRLS);
		
		//更新年月日時分秒(更新前)
		template.set(EKK2811C100CBSMsg.UPD_DTM_BF, inHash.get(EKK2811A010CBSMsg1List.LAST_UPD_DTM));
	}

//	/**
//	 * 請求オプションサービス契約一覧照会（複合検索）サービスIFを呼び出し
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param inHash 条件用Hash
//	 * @param resultHash 結果のハッシュ
//	 * @param seiOpsvc_kei_no 請求オプションサービス契約番号
//	 * @return サービスインターフェースのリターンコード
//	 * @throws Throwable 例外が発生した場合
//	 */
//	private int getEKK0441B002SC(
//			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 = setEditInMsgCmn(param);
//		
//		//EKK0441B002への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0441B002CBSMsg.class.getName());
//		setMappingEKK0441B002InMsg(template, inHash, seiOpSvcKeiNo);
//		setEditBasicCmn(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_EKK0441B002, 
//					setMappingEKK0441B002SCOutMsg(resultMsgs));
//		}
//
//		return status;
//	}

//	/**
//	 * templateに対してEKK0441B002の条件に関する部分を設定する
//	 * @param template 条件の設定先
//	 * @param inHash 設定条件
//	 * @param requestParam アプリ固有のパラメータ
//	 * @param seiOpSvcKeiNo 請求オプションサービス契約番号
//	 */
//	private void setMappingEKK0441B002InMsg(CAANMsg template, HashMap<String, Object> inHash, String seiOpSvcKeiNo)
//	{
//
//		//まずは全条件のNullマッピング
//		setFillCAANMSGNullMapping(template, new EKK0441B002CBSMsg().getContents());
//		
//		//テンプレートID(SIFのID)
//		template.set(EKK0441B002CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441B002);
//
//		//機能コード--_請求オプションサービス契約一覧照会（複合検索）
//		template.set(EKK0441B002CBSMsg.FUNC_CODE, "2");
//
//		//ＫＥＹ＿請求オプションサービス契約番号
//		template.set(EKK0441B002CBSMsg.KEY_SEIOPSVC_KEI_NO, seiOpSvcKeiNo);
//	}
	
//	/**
//	 * EKK0441B002の結果をHashとして抽出する
//	 * @param resultMsgs EKK0441B002のテンプレートリスト
//	 * @return EKK0441B002の結果部分
//	 */
//	private ArrayList<HashMap<String, Object>> setMappingEKK0441B002SCOutMsg(CAANMsg[] resultMsgs)
//	{
//		
//		ArrayList<HashMap<String, Object>> retHashList = null;
//		CAANMsg[] msgs = null;
//		
//		//結果の抽出
//		retHashList = new ArrayList<HashMap<String, Object>>();
//		msgs = resultMsgs[0].getCAANMsgList(EKK0441B002CBSMsg.EKK0441B002CBSMSG1LIST);
//		for(int i = 0 ; i < msgs.length ; i++)
//		{
//			retHashList.add(msgs[i].getMsgData());
//		}
//		
//		return retHashList;
//	}
	
	
	/**
	 * EKK0081B547 卸先事業者利用停止指示書登録情報一覧照会SIFを呼び出し
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	結果のハッシュ
	 * @param	svc_kei_no	サービス契約番号
	 * @return				サービスインターフェースのリターンコード
	 * @throws	Throwable 例外時にスローされます
	 */
	private int callEKK0081B547SC(
			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);

		// EKK0081B547への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081B547CBSMsg.class.getName());
		mappingEKK0081B547SCInMsg(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_EKK0081B547, mappingEKK0081B547SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サービスI/F実行用の共通部を設定します<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param msg データ登録内容
	 * @return オプションサービス契約作成数
	 * @throws RequestParameterException
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	private HashMap<String, Object> editInMsgCmn(IRequestParameterReadOnly param) 
	throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		//電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		
		//ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		
		//オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		
		//サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		
		//依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		
		//依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		
		//依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		
		//オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		
		return paramMap;
	}
	
	/**
	 * 条件部の共通する項目の設定
	 * @param param リクエストパラメータ
	 * @param template template 条件の設定先
	 * @throws RequestParameterException
	 */
	private void editBasicCmn(IRequestParameterReadOnly param, CAANMsg template)
	throws RequestParameterException
	{
		
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
	}

	
	/**
	 * templateに対してEKK0081B547の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param svc_kei_no サービス契約番号
	 */
	private void mappingEKK0081B547SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String svc_kei_no)
	{
		// まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0081B547CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EKK0081B547CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B547);

		// 機能コード
		template.set(EKK0081B547CBSMsg.FUNC_CODE, "1");

		// サービス契約番号
		template.set(EKK0081B547CBSMsg.KEY_SVC_KEI_NO, svc_kei_no);

	}
	
	/**
	 * 持ちうるフィールドに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);
			
		}
	}
	
	/**
	 * EKK0081B547の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK1091D010の結果部分
	 */
	private ArrayList<HashMap<String, Object>> mappingEKK0081B547SCOutMsg(CAANMsg[] resultMsgs)
	{
		ArrayList<HashMap<String, Object>> retHashList = null;
		CAANMsg[] msgs = null;
		
		//結果の抽出
		retHashList = new ArrayList<HashMap<String, Object>>();
		msgs = resultMsgs[0].getCAANMsgList(EKK0081B547CBSMsg.EKK0081B547CBSMSG1LIST);
		for(int i = 0 ; i < msgs.length ; i++)
		{
			retHashList.add(msgs[i].getMsgData());
		}
		
		return retHashList;
	}

	/**
	 * 卸先事業者利用停止解除チェックを実施する。
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param pramSvcKeiStList 
	 * @param pramSvcKeiStat 
	 * @return IRequestParameterReadWrite
	 * @throws Throwable
	 */
	
	 //IT1-2018-0000110_MOD START
	//private String orsjgsUseStpRlsKanrencheck(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	private String orsjgsUseStpRlsKanrencheck(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, 
			HashMap<String, String> pramSvcKeiStat, List<String> pramSvcKeiStList) throws Throwable
	 //IT1-2018-0000110_MOD END
	{
		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;
		}
		//IT1-2018-0000110_ADD START
		// ****************************** サービスコードチェック ****************************** //
		// サービスコードが01_ネット以外の場合
		String svcCd = ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.SVC_CD);
		if (!JKKStrConst.CD00130_01.equals(svcCd))
		{
			// リターンコード：1103
			ccMsg.put(JKKStrConst.RETURN_CODE, JKKStrConst.RETURN_CD_1103);
			// リターンメッセージ：サービスコードチェックエラー
			ccMsg.put(JKKStrConst.RETURN_MESSAGE, JKKStrConst.RETURN_MESSAGE_SVC_CD_CHECK_ERROR);
			param.setData(fixedText, ccMsg);
			return JKKStrConst.RETURN_CD_1103;
		}
		//IT1-2018-0000110_ADD END

		// ****************************** 卸先事業者チェック ****************************** //
		// 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;
				}
			}
		}
		
		// ****************************** 契約状態チェック ****************************** //
		//IT1-2018-0000110_MOD START
		// リクエストされたネットのサービス契約番号と同一回線上に利用停止中のサービス契約が1つもない場合はエラー
		// サービス契約ステータスが220_利用停止中以外の場合
		// 卸先事業者コード取得
		//String svcKeiStat = ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
		//if (!JKKStrConst.CD00037_STAT_STP.equals(svcKeiStat))
		//{
		//サービス契約ステータスをチェックする
		pramSvcKeiStList.clear();
		if (pramSvcKeiStat.size() > 0)
		{
			
			//電話、テレビ、ネットの順でチェックする。(ネットの利用停止解除を最後にする為)
			if (!JKKStringUtil.isNullBlank(pramSvcKeiStat.get(JKKStrConst.CD00130_02))
					&& pramSvcKeiStat.containsKey(JKKStrConst.CD00130_02))
				
			{
				if (JKKStrConst.CD00037_STAT_STP.equals(pramSvcKeiStat.get(JKKStrConst.CD00130_02)))
				{
					pramSvcKeiStList.add(JKKStrConst.CD00130_02);
				}
			}
				
			if (!JKKStringUtil.isNullBlank(pramSvcKeiStat.get(JKKStrConst.CD00130_03))
					&& pramSvcKeiStat.containsKey(JKKStrConst.CD00130_03))
			{
				if (JKKStrConst.CD00037_STAT_STP.equals(pramSvcKeiStat.get(JKKStrConst.CD00130_03)))
				{
					pramSvcKeiStList.add(JKKStrConst.CD00130_03);
				}
			}
			if (!JKKStringUtil.isNullBlank(pramSvcKeiStat.get(JKKStrConst.CD00130_01))
					&& pramSvcKeiStat.containsKey(JKKStrConst.CD00130_01))
			{
				if (JKKStrConst.CD00037_STAT_STP.equals(pramSvcKeiStat.get(JKKStrConst.CD00130_01)))
				{
					pramSvcKeiStList.add(JKKStrConst.CD00130_01);
				}
				
			}
		}
		//利用停止のものがひとつもないとき
		if(pramSvcKeiStList.size() == 0)
		{
		//IT1-2018-0000110_MOD END
			// リターンコード：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;
		}
		
		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 卸先事業者コード
	 * @param unyoYMD 運用年月日
	 * 
	 * @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 orsjgsrunUseStpKaijoAddShijisho(
			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.runUseStpKaijoAddShijisho(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;
	}
}
