/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom, 2011
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JCKSV905401CC
 *   ソースファイル名：JCKSV905401CC.java
 *   作成者          ：FJ)舩橋
 *   日付            ：2015年01月09日
 *＜機能概要＞
 *   ＩＤＰＷ初期化・再振・再発行（MVNO用SOAP）実行CCの共通コンポーネントd
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v12.00.00   2015/01/09   FJ)舩橋     【ANK-2381-00-00】eoIDなしの新規申込対応
 *   v15.00.00   2015/07/13   FJ)窪田     ST-2015-0000032対応
 *   v41.00.00   2018/02/15   FJ)河邊     【OM-2018-0001294】eoIDエイジングステータス不正
 *   v47.00.00   2019/12/19   FJ)三原     【ANK-3706-00-00】ｅｏＩＤログインのセキュリティ強化対応
 *   v50.00.00   2020/01/30   FJ)澤田     【OM-2020-0000139】契約者電話番号のレスポンス削除
 *   v48.00.00   2020/02/17   FJ)美濃原   【ANK-3814-00-00】eoIDログインセキュリティ強化フォロー対応
 **********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.callECK0011B120;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.callECK0151D010Map;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.getSecurityRenkeiTelno;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.getResultMsgList;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.getResultString;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.isError;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.isSuccess;
import static eo.common.constant.JCKStrConst.*;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.CKSV9001_CKSV9001OP_CKSV900101CC;
import com.fujitsu.futurity.bp.custom.constant.CKSV9024_CKSV9024OP_CKSV902401CC;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.bp.x21.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.JCKStrConst;
import eo.common.constant.JKKStrConst;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011B050CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011B120CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011B120CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011C012CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C013CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C020CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0021C010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0031C010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0111B002CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0111C011CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0111C012CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0151D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021C060CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B004CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161B004CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0171A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0171C013CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0171C014CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191C013CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B022CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0361A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0361C050CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0361C111CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0361C112CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1021C011CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1021D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0111B050CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0111B050CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0111C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0111C030CBSMsg;

/**
 * ＩＤＰＷ初期化・再振・再発行実行部品です。
 * <p>
 * <br>
 * 
 * @author FJ
 */
@SuppressWarnings({"unchecked"})
public class JCKSV905401CC extends AbstractCommonComponent
{
	/*****************************************************************/
	/** 呼び出しサービスIF                                          **/
	/*****************************************************************/
	/** お客様一意照会 */
	private static final String ECK0011A010 = "ECK0011A010";
	/** 初期eoID再振出 */
	private static final String ECK0011C012 = "ECK0011C012";
	/** 初期eoIDパスワード再振出 */
	private static final String ECK0011C013 = "ECK0011C013";
	/** eoID/パスワード初期化 */
	private static final String ECK0011C020 = "ECK0011C020";
	/** お客様＜個人＞内容変更 */
	private static final String ECK0021C010 = "ECK0021C010";
	/** お客様＜法人＞内容変更 */
	private static final String ECK0031C010 = "ECK0031C010";
	/** ファミリー会員グループ一覧照会（SYSID） */
	private static final String ECK0111B002 = "ECK0111B002";
	/** グループ入会コード再振出 */
	private static final String ECK0111C011 = "ECK0111C011";
	/** グループ入会コードパスワード再振出 */
	private static final String ECK0111C012 = "ECK0111C012";
	/** 申込内容承認登録 */
	private static final String EKK0011D020 = "EKK0011D020";
	/** 申込明細一意照会 */
	private static final String EKK0021A010 = "EKK0021A010";
	/** 申込明細照査・後続業務依頼 */
	private static final String EKK0021C060 = "EKK0021C060";
	/** サービス契約一意照会 */
	private static final String EKK0081A010 = "EKK0081A010";
	/** サービス契約内訳一覧照会 */
	private static final String EKK0161B004 = "EKK0161B004";
	/** サービス契約内訳＜eo光ネット＞一意照会 */
	private static final String EKK0171A010 = "EKK0171A010";
	/** ISP認証IDパスワード初期化 */
	private static final String EKK0171C013 = "EKK0171C013";
	/** ISP認証IDパスワード再振出 */
	private static final String EKK0171C014 = "EKK0171C014";
	/** サービス契約内訳＜eo光電話＞一意照会 */
	private static final String EKK0191A010 = "EKK0191A010";
	/** 電話設定リモート操作用パスワード初期化 */
	private static final String EKK0191C013 = "EKK0191C013";
	/** 機器提供サービス契約一覧照会（サービス契約番号） */
	private static final String EKK0341B002 = "EKK0341B002";
	/** オプションサービス契約＜ISP＞一意照会 */
	private static final String EKK0361A010 = "EKK0361A010";
	/** オプションサービス契約<ISP>情報変更 */
	private static final String EKK0361C050 = "EKK0361C050";
	/** POPパスワード再振出 */
	private static final String EKK0361C111 = "EKK0361C111";
	/** WEBIDパスワード再振出 */
	private static final String EKK0361C112 = "EKK0361C112";
	/** 事務手数料判定結果取得 */
	private static final String EKK1021C011 = "EKK1021C011";
	/** 一時金設定登録 */
	private static final String EKK1021D010 = "EKK1021D010";
	/** 進捗登録 */
	private static final String EKK1091D010 = "EKK1091D010";
	/** サービス契約一覧照会（SYSID）2 */
	private static final String EKK0081B004 = "EKK0081B004";
	/** サービス対象機器提供サービス契約一覧照会 */
	private static final String EKK0341B022 = "EKK0341B022";
// OM-2018-0001294 2019/02/15 ADD START
	/** エイジング一覧照会 */
	private static final String EZM0111B050 = "EZM0111B050";
	/** エイジング対象使用終了 */
	private static final String EZM0111C010 = "EZM0111C010";
	/** 回復可能期間終了 */
	private static final String EZM0111C030 = "EZM0111C030";
// OM-2018-0001294 2019/02/15 ADD END

	/*****************************************************************/
	/*****************************************************************/
	/** 機能コード；１ */
	private static final String FUNC_CD_1 = "1";
	/** 機能コード：２ */
	private static final String FUNC_CD_2 = "2";

	/*****************************************************************/
	/*****************************************************************/
	/** 申込種別コード：00032(お客さまＩＤパスワード初期化・再発行申込) */
	private static final String MSKM_SBT_CD_00032 = "00032";

	/*****************************************************************/
	/*****************************************************************/
	/** 定義キー */
	private String fText = null;
	
	/** お客様情報最終更新年月日時分秒 */
	private String cust_Upd_dtm = null;

	/** 申込明細番号 */
	private String mskmDtlNo = null;

	/** サービス契約番号 */
	private String svcKeiNo = null;
	
	/** OPERATOR-ID */
	private static final String OPE_MNV1 = "MVN1";
	private static final String OPE_MNV2 = "MVN2";
	private static final String OPE_MNV3 = "MVN3";

	// ANK-3814-00-00 ADD START
	// 連携電話番号（契約者電話番号、コンテンツ電話番号等）
	private static final String OUT_RENKEI_TELNO = "outRenkeiTelno";
	// ANK-3814-00-00 ADD END

	private void setCust_Upd_dtm(HashMap<String, Object> custMap)
	{
		this.cust_Upd_dtm = (String)custMap.get("upd_dtm");
	}

	/**
	 * 初期化・再振出実行処理です。
	 * 
	 * @param	handle		セッションマネージャなどを持ったハンドル
	 * @param	param		モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	fixedText	ユーザ任意文字列
	 * @throws	Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite executeMain(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		fText = fixedText;
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fText);

		// eoIDを設定
		ccMsg.put("eoid", "");
		
		// eoIDパスワードを設定
		ccMsg.put("eoid_pw", "");
		
		// リターンコードを設定
		ccMsg.put("return_code", JCKStrConst.PMP_NORMAL_END);

		// 入力パラメータの確認
		if ("".equals(ccMsg.get("sysid")) || "".equals(ccMsg.get("ck_upd_dtm")) || "".equals(ccMsg.get("kk_upd_dtm"))) {
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_SYSTEM);
			return param;
		}

        // ANK-3814-00-00 DEL START
		// 初期化・再振出実行処理
		//if (runShkkaSaifuri(handle, param, ccMsg)) {
        // ANK-3814-00-00 DEL END

        // ANK-3814-00-00 ADD START
		// モジュール内作業マップ
		HashMap<String, String> mdlWkMap = new HashMap<String, String>();
		// 初期化・再振出実行処理
		if (runShkkaSaifuri(handle, param, ccMsg, mdlWkMap)) {
        // ANK-3814-00-00 ADD END
			// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
			ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

			// AxM会員情報更新依頼CC呼び出し処理
			execjcksv900101Call(handle, scCall, param, fixedText, ccMsg);
		}
		// ST-2015-0000032 ADD START
		// SOAPのレスポンスデータに反映される為、不要なマップを削除
		param.removeData("returnCode");
		param.removeData("errorLevel");
		// ST-2015-0000032 ADD END
		// ANK-3814-00-00 DEL ADD
		// OM-2020-0000139 ADD START
		//ccMsg.remove("keisha_telno");
		// OM-2020-0000139 ADD END
		// ANK-3814-00-00 DEL START
		return param;
	}
	
	/**
	 * 初期化・再振出実行処理です。
	 * 
	 * @param	handle		セッションマネージャなどを持ったハンドル
	 * @param	param		モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param mdlWkMap モジュール内作業マップ
	 * @throws	Throwable
	 */
	// ANK-3814-00-00 DEL START
	//private boolean runShkkaSaifuri(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> ccMsg) throws Throwable
	//{
	//	// ********************************************** //
	//	// eoID情報の再振出・初期化処理                   //
	//	// ********************************************** //
	//	if (eoIdShkkaSaifuri(param, handle, ccMsg) != 0) {
	// ANK-3814-00-00 DEL END

	// ANK-3814-00-00 ADD START
	private boolean runShkkaSaifuri(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> ccMsg, HashMap<String, String> mdlWkMap) throws Throwable
	{
		// ********************************************** //
		// eoID情報の再振出・初期化処理                   //
		// ********************************************** //
		if (eoIdShkkaSaifuri(param, handle, ccMsg, mdlWkMap) != 0) {
	// ANK-3814-00-00 ADD END
			// ST-2015-0000032 MOD START
			//String errMsg = "eoID情報の再振出・初期化処理でエラーが発生しました(リターンコード：99)";
			String errMsg = "eoID情報の再振出・初期化処理でエラーが発生しました(リターンコード：" + ccMsg.get("return_code") + ")";
			// ST-2015-0000032 MOD END
			throw new CCException(errMsg, new Exception(errMsg));
		}

		// ********************************************** //
		// 申込・申込明細登録処理                         //
		// ********************************************** //
		if (addMskm(param, handle, ccMsg) != 0){
			// ST-2015-0000032 MOD START
			//String errMsg = "申込・申込明細登録処理でエラーが発生しました(リターンコード：99)";
			String errMsg = "申込・申込明細登録処理でエラーが発生しました(リターンコード：" + ccMsg.get("return_code") + ")";
			// ST-2015-0000032 MOD END
			throw new CCException(errMsg, new Exception(errMsg));
		}

		// ********************************************** //
		// 指示書登録ＣＣ                                 //
		// ********************************************** //
        // ANK-3814-00-00 DEL START
        //	if (sjishoRenkei(handle, param, ccMsg) != 0) {
        // ANK-3814-00-00 DEL END

		// ANK-3814-00-00 ADD START
		if (sjishoRenkei(handle, param, ccMsg, mdlWkMap) != 0) {
		// ANK-3814-00-00 ADD END
			// ST-2015-0000032 MOD START
			//String errMsg = "指示書登録処理でエラーが発生しました(リターンコード：99)";
			String errMsg = "指示書登録処理でエラーが発生しました(リターンコード：" + ccMsg.get("return_code") + ")";
			// ST-2015-0000032 MOD END
			throw new CCException(errMsg, new Exception(errMsg));
		}

		// ********************************************** //
		// 進捗登録                                       //
		// ********************************************** //
		if (addPrg(param, handle, ccMsg) != 0) {
			// ST-2015-0000032 MOD START
			//String errMsg = "進捗登録処理でエラーが発生しました(リターンコード：99)";
			String errMsg = "進捗登録処理でエラーが発生しました(リターンコード：" + ccMsg.get("return_code") + ")";
			// ST-2015-0000032 MOD END
			throw new CCException(errMsg, new Exception(errMsg));
		}

		return true;
	}

	/**
	 * eoID情報の再振出・初期化処理
	 * @param param
	 * @param handle
	 * @param ccMsg
	 * @param mdlWkMap モジュール内作業マップ
	 * @return int
	 * @throws Throwable
	 */
// ANK-3814-00-00 DEL START
//	private int eoIdShkkaSaifuri(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> ccMsg) throws Throwable
//	{
// ANK-3814-00-00 DEL END

// ANK-3814-00-00 ADD START
	private int eoIdShkkaSaifuri(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> ccMsg, HashMap<String, String> mdlWkMap) throws Throwable
	{
// ANK-3814-00-00 ADD END
		int status = 0;

		HashMap<String, Object> eCK0011A010Hash = new HashMap<String, Object>();
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fText);
		
		// SYSID
		inMap.put(CKSV9024_CKSV9024OP_CKSV902401CC.SYSID, ccMsg.get("sysid"));

		// ********************************************** //
		// お客様一意照会                                 //
		// ********************************************** //
		status = callECK0011A010SC(
						param,
						handle,
						inMap,
						eCK0011A010Hash
		);
		if (status != 0) {
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_NODATA);

			return status;
		}

		CAANMsg[] eCK0011A010CBSMSG1list = (CAANMsg[])eCK0011A010Hash.get(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST);
		if (!(eCK0011A010CBSMSG1list.length > 0)) {
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_NODATA);

			return -1;
		}
		HashMap<String, Object> eCK0011A010 = eCK0011A010CBSMSG1list[0].getMsgData();
		if (!("010".equals((String)eCK0011A010.get("cust_stat"))) && !("100".equals((String)eCK0011A010.get("cust_stat")))) {
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_NODATA);

			return -1;
		}
		if (!("0".equals((String)eCK0011A010.get("cust_ntaikai_cd")))) {
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_NODATA);

			return -1;
		}
		// ST-2015-0000032 MOD START
		//if (!("010".equals((String)eCK0011A010.get("member_sbt_cd"))) && !("020".equals((String)eCK0011A010.get("member_sbt_cd")))) {
		if (!("10".equals((String)eCK0011A010.get("member_sbt_cd"))) && !("20".equals((String)eCK0011A010.get("member_sbt_cd")))) {
		// ST-2015-0000032 MOD END
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_NODATA);

			return -1;
		}

		//***************************************************
		// 更新日照会
		//***************************************************
		Map result = callECK0011B120(handle, param, (String)ccMsg.get("sysid"));
		if (isSuccess(result))
		{
			CAANMsg[] dataList = getResultMsgList(result, ECK0011B120CBSMsg.ECK0011B120CBSMSG1LIST);
			if ((dataList == null) || (dataList.length == 0))
			{
				// リターンコードを設定
				ccMsg.put("return_code", JCKStrConst.PMP_ERR_NODATA);

				return -1;
			}
			else
			{
				String mapKeyPre = ECK0011B120CBSMsg.ECK0011B120CBSMSG1LIST + "[0].";
				if (("".equals(getResultString(result, mapKeyPre + ECK0011B120CBSMsg1List.CK_UPD_DTM))) ||
					("".equals(getResultString(result, mapKeyPre + ECK0011B120CBSMsg1List.KK_UPD_DTM)))) {
						// リターンコードを設定
						ccMsg.put("return_code", JCKStrConst.PMP_ERR_NODATA);

						return -1;
					}
				else if (!(ccMsg.get("ck_upd_dtm").equals(getResultString(result, mapKeyPre + ECK0011B120CBSMsg1List.CK_UPD_DTM))) ||
						!(ccMsg.get("kk_upd_dtm").equals(getResultString(result, mapKeyPre + ECK0011B120CBSMsg1List.KK_UPD_DTM)))) {
					// リターンコードを設定
					ccMsg.put("return_code", JCKStrConst.PMP_ERR_EXCLUSION);

					return -1;
				}
			}
		}

		// 更新年月日時分秒（お客様）を設定
		cust_Upd_dtm = (String)ccMsg.get("ck_upd_dtm");

		// ********************************************** //
		// eoID初期化                                     //
		// ********************************************** //
		status = callECK0011C020SC(
						param,
						handle,
						eCK0011A010,
						"1",
						eCK0011A010Hash
		);
		if (status != 0) {
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_SYSTEM);

			return status;
		}

		// 更新日時分秒（お客様）を再設定
		setCust_Upd_dtm(eCK0011A010Hash);

		// ********************************************** //
		// eoIDPW初期化                                   //
		// ********************************************** //
		status = callECK0011C020SC(
						param,
						handle,
						eCK0011A010,
						"2",
						eCK0011A010Hash
		);
		if (status != 0) {
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_SYSTEM);

			return status;
		}
// OM-2018-0001294 2019/02/15 ADD START
		String eoid = (String)eCK0011A010.get(ECK0011A010CBSMsg1List.EOID);
		
		//EOIDが「51」始まりの12桁数値の場合はエイジング終了処理を実施しない
		if (checkEoidChangeMoji(eoid))
		{
			HashMap<String, Object> eZM0111B050Hash = new HashMap<String, Object>();
			// **********************************************
			// エイジング一覧照会
			// **********************************************
			status = callEZM0111B050SC(
					param,
					handle,
					eCK0011A010,
					eZM0111B050Hash,
					FUNC_CD_1
			);
			if (status != 0) {
				// リターンコードを設定
				ccMsg.put("return_code", JCKStrConst.PMP_ERR_SYSTEM);

				return status;
			}
			
			CAANMsg[] eZM0111B050CBSMSG1list = (CAANMsg[])eZM0111B050Hash.get(EZM0111B050CBSMsg.EZM0111B050CBSMSG1LIST);
			
			HashMap<String, Object> eZM0111C010Hash = new HashMap<String, Object>();
			
			if (eZM0111B050CBSMSG1list.length != 0)
			{
				// ********************************************** //
				// エイジング対象使用終了                         //
				// ********************************************** //
				HashMap<String, Object> eZM0111B050 = eZM0111B050CBSMSG1list[0].getMsgData();
				
				status = callEZM0111C010SC(
						param,
						handle,
						eZM0111B050,
						eZM0111C010Hash,
						FUNC_CD_1
				);
				if (status != 0) {
					// リターンコードを設定
					ccMsg.put("return_code", JCKStrConst.PMP_ERR_SYSTEM);

					return status;
				}
				
				// ********************************************** //
				// 回復可能期間終了                               //
				// ********************************************** //
				status = callEZM0111C030SC(
						param,
						handle,
						eZM0111C010Hash,
						eCK0011A010Hash,
						FUNC_CD_1
				);
				if (status != 0) {
					// リターンコードを設定
					ccMsg.put("return_code", JCKStrConst.PMP_ERR_SYSTEM);
	
					return status;
				}
			}
		}
// OM-2018-0001294 2019/02/15 ADD END

		// eoIDを設定
		ccMsg.put("eoid", (String)eCK0011A010.get("shk_eoid"));

		// eoIDパスワードを設定
		ccMsg.put("eoid_pw", (String)eCK0011A010.get("shk_eoid_pwd"));

// ANK-3814-00-00 DEL ADD
//		// ANK-3706-00-00 ADD START
//		// 契約者電話番号を設定
//		ccMsg.put("keisha_telno", (String)eCK0011A010.get("keisha_telno"));
//		// ANK-3706-00-00 ADD END
// ANK-3814-00-00 DEL START

// ANK-3814-00-00 ADD START
		// お客様一意照会から取得した内容を退避
		String wkTelno = (String)eCK0011A010.get("keisha_telno");
		String memberSbtCd = (String)eCK0011A010.get("member_sbt_cd");
		String outRenkeiTelno = getSecurityRenkeiTelno(handle, param, (String)ccMsg.get("sysid"), memberSbtCd, wkTelno);
		mdlWkMap.put(OUT_RENKEI_TELNO, outRenkeiTelno);
// ANK-3814-00-00 ADD END

		return status;
	}

	/**
	 * 申込・申込明細登録処理
	 * @param param
	 * @param handle
	 * @param ccMsg
	 * @return int
	 * @throws Throwable
	 */
	private int addMskm(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> ccMsg) throws Throwable
	{
		int status = 0;

		// **********************************
		// 申込内容承認登録
		// **********************************
		HashMap<String, Object> eKK0011D020Hash = new HashMap<String, Object>();

		status = callEKK0011D020SC(
				param, 
				handle, 
				ccMsg, 
				eKK0011D020Hash
		);
		if (status != 0) {
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_SYSTEM);

			return status;
		}

		CAANMsg[] eKK0011D020CBSMSG1list = (CAANMsg[])eKK0011D020Hash.get(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST);
		HashMap<String, Object> eKK0011D020 = eKK0011D020CBSMSG1list[0].getMsgData();

		// 申込明細番号を取得
		mskmDtlNo = (String)eKK0011D020.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO);

		// **********************************
		// 申込明細一意照会実行処理
		// **********************************
		HashMap<String, Object> eKK0021A010Hash = new HashMap<String, Object>();

		status = callEKK0021A010SC(
				param, 
				handle, 
				mskmDtlNo, 
				eKK0021A010Hash
		);
		if (status != 0) {
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_SYSTEM);

			return status;
		}

		CAANMsg[] eKK0021A010CBSMSG1list = (CAANMsg[])eKK0021A010Hash.get(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST);
		HashMap<String, Object> eKK0021A010 = eKK0021A010CBSMSG1list[0].getMsgData();

		// **********************************
		// 申込明細照査・後続業務依頼
		// **********************************
		HashMap<String, Object> eKK0021C060Hash = new HashMap<String, Object>();

		status = callEKK0021C060SC(
				param, 
				handle, 
				eKK0021A010, 
				ccMsg, 
				eKK0021C060Hash
		);
		if (status != 0) {
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_SYSTEM);

			return status;
		}

		return status;
	}

	/**
	 * 指示書連携リスト生成
	 * @param	handle
	 * @param	param
	 * @param	ccMsg
	 * @param mdlWkMap モジュール内作業マップ
	 * @return int
	 * @throws	Throwable
	 */
// ANK-3814-00-00 DEL START
//	private int sjishoRenkei(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> ccMsg) throws Throwable
//	{
//		// AdminAPI部分更新用の指示書パラメータ作成
//		// ANK-3706-00-00 MOD START
//		//Map sjishoMap = createShijishoParamAdminApiUpd((String)ccMsg.get("sysid"), (String)ccMsg.get("eoid"), (String)ccMsg.get("eoid_pw"));
//		Map sjishoMap = createShijishoParamAdminApiUpd((String)ccMsg.get("sysid"), (String)ccMsg.get("eoid"), (String)ccMsg.get("eoid_pw"), (String)ccMsg.get("keisha_telno"));
//		// ANK-3706-00-00 MOD END
// ANK-3814-00-00 DEL END

// ANK-3814-00-00 ADD START
	private int sjishoRenkei(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> ccMsg, HashMap<String, String> mdlWkMap) throws Throwable
	{
		Map sjishoMap = createShijishoParamAdminApiUpd((String)ccMsg.get("sysid"), (String)ccMsg.get("eoid"), (String)ccMsg.get("eoid_pw"), 
						(String)mdlWkMap.get(OUT_RENKEI_TELNO));
// ANK-3814-00-00 ADD END
		Map result = callECK0151D010Map(handle, param, sjishoMap);
		if (isError(result))
		{
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_SYSTEM);
			return -1;
		}
		return 0;
	}

	/**
	 * AdminAPI部分更新用の指示書パラメータ作成
	 * @param sysid SYSID
	 * @param eoid eoID
	 * @param eoid_pw eoIDパスワード
	 * @param keishaTelno 連携電話番号（契約者電話番号、コンテンツ電話番号等）
	 * @return 指示書登録用パラメータ
	 */
	// ANK-3706-00-00 MOD START
	//private Map<String, Object> createShijishoParamAdminApiUpd(String sysid, String eoid, String eoid_pw)
	private Map<String, Object> createShijishoParamAdminApiUpd(String sysid, String eoid, String eoid_pw, String keishaTelno)
	// ANK-3706-00-00 MOD END
	{
		Map<String, Object> inMap = new HashMap<String, Object>();

		inMap.put(ECK0151D010CBSMsg.TRN_CD, SJISHO_TRN_CD_ADMIN_API);
		inMap.put(ECK0151D010CBSMsg.TRGT_TABLE_ID, "");
		inMap.put(ECK0151D010CBSMsg.ERR_CNT, "0");
		inMap.put(ECK0151D010CBSMsg.TRAN_TRGT_SYSID, sysid);
		inMap.put(ECK0151D010CBSMsg.RSLT_FLG, "0");
		// ANK-3706-00-00 MOD START
		//inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "19");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "22");
		// ANK-3706-00-00 MOD END
		inMap.put(ECK0151D010CBSMsg.PARAMETER_1, ADMIN_SJISHO_PARAM1_UPD_PART);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_2, eoid);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_4, eoid_pw);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_19, JCCBPCommon.getSysDateTime());
		// ANK-3706-00-00 ADD START
		// 契約者電話番号
		inMap.put(ECK0151D010CBSMsg.PARAMETER_20, keishaTelno);
		// ログイン認証レベル
		inMap.put(ECK0151D010CBSMsg.PARAMETER_21, "");
		// ワンストップキー送付先区分
		inMap.put(ECK0151D010CBSMsg.PARAMETER_22, "");
		// ANK-3706-00-00 ADD END

		return inMap;
	}

	/**
	 * 進捗登録<br>
	 * <br>
	 * @param	param				
	 * @param	handle				
	 * @param	ccMsg				
	 * @return	int					
	 * @throws	Throwable
	 */
	private int addPrg(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> ccMsg) throws Throwable
	{
		int status = 0;

		HashMap<String, Object> eKK0081B004Hash = new HashMap<String, Object>();

		// ********************************************** //
		// サービス契約一覧照会（SYSID）2
		// ※サービス契約一覧照会（SYSID）はプラン開始年月日、プラン終了年月日が設定されていないと取得しない
		// ********************************************** //
		status = callEKK0081B004SC(param, handle, ccMsg, eKK0081B004Hash);
		if (status != 0) {
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_SYSTEM);

			return status;
		}

		CAANMsg[] eKK0081B004CBSMSG1list = (CAANMsg[])eKK0081B004Hash.get(EKK0081B004CBSMsg.EKK0081B004CBSMSG1LIST);
		if (eKK0081B004CBSMSG1list.length > 0) {
			HashMap<String, Object> eKK0081B004 = eKK0081B004CBSMSG1list[0].getMsgData();

			// サービス契約番号取得
			svcKeiNo = (String)eKK0081B004.get(EKK0081B004CBSMsg1List.SVC_KEI_NO);
		}
		else {
			return status;
		}

		// ********************************************** //
		// サービス契約一意照会                           //
		// ********************************************** //
		// 結果Map
		HashMap<String, Object> resultHash = new HashMap<String, Object>();

		status = callEKK0081A010SC(param, handle, resultHash);
		if (status != 0) {
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_SYSTEM);

			return status;
		}

		// ********************************************** //
		// 進捗登録                                       //
		// ********************************************** //
		HashMap<String, Object> eKK1091D010Hash = new HashMap<String, Object>();
		status = callEKK1091D010SC(param, handle, eKK1091D010Hash);
		if (status != 0) {
			// リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_SYSTEM);

			return status;
		}

		return status;
	}
	
	/**
	 * AxM会員情報更新依頼CC呼び出し処理<br>
	 * 
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void execjcksv900101Call(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param,
										String dataMapKey,
										HashMap<String, Object> ccMsg) throws Throwable
	{
		String fixedText = "CKSV900101CC";
		param.setData(fixedText, new HashMap<String, Object>());
		
		
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		
		// UPD_TRGT_SYSID
		inMap.put(CKSV9001_CKSV9001OP_CKSV900101CC.UPD_TRGT_SYSID, ccMsg.get("sysid"));
		
		// AxM会員情報更新依頼CCを実行
		JCKSV900101CC jcksv900101CC = new JCKSV900101CC();
		jcksv900101CC.executeMain(handle, param, fixedText);
		
		// エラー時リターンコードを設定
		if ("1".equals(inMap.get("err_flg")))
		{
			// エラー時リターンコードを設定
			ccMsg.put("return_code", JCKStrConst.PMP_ERR_AXM);
		}
		
	}
	
	//************************************************************
	//                      S/IF呼出
	//***********************START********************************
	
	/**
	 * お客様一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callECK0011A010SC(IRequestParameterReadWrite param, SessionHandle handle,
			HashMap<String, Object> inHash, HashMap<String, Object> resultHash) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// ECK0011A010への呼び出しパラメータ設定
		template = new CAANMsg(ECK0011A010CBSMsg.class.getName());
		mappingECK0011A010InMsg(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);

		// SIFの実行結果を設定
		resultHash.putAll(getWorkCAANMsg(sIFResult));

		// リターンコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	
	/**
	 * eoID/パスワード初期化SIF呼び出し
	 * 
	 * @param param
	 * @param handle
	 * @param paramMap
	 * @param sysid
	 * @param resultHash
	 * @return
	 * @throws RequestParameterException
	 * @throws SCException
	 */
	private int callECK0011C020SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap eCK0011A010, String initSbtCd,
			HashMap<String, Object> resultHash) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// ECK0011C020への呼び出しパラメータ設定
		template = new CAANMsg(ECK0011C020CBSMsg.class.getName());
		mappingECK0011C020InMsg(template, eCK0011A010, "1", initSbtCd);
		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);

		// SIFの実行結果を設定
		resultHash.putAll(getWorkCAANMsg(sIFResult));

		// リターンコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	
	/**
	 * 申込内容承認登録SIFを呼び出し
	 * 
	 * @param param
	 * @param handle
	 * @param inHash
	 * @param resultHash
	 * @return
	 * @throws RequestParameterException
	 * @throws SCException
	 */
	private int callEKK0011D020SC(IRequestParameterReadWrite param, SessionHandle handle,
			HashMap<String, Object> inHash, HashMap<String, Object> resultHash) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0011D020への呼び出しパラメータ設定
		template = new CAANMsg(EKK0011D020CBSMsg.class.getName());
		mappingEKK0011D020InMsg(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);

		// SIFの実行結果を設定
		resultHash.putAll(getWorkCAANMsg(sIFResult));

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	
	/**
	 * 申込明細一意照会SIFを呼び出し
	 * 
	 * @param param
	 * @param handle
	 * @param inHash
	 * @param resultHash
	 * @return
	 * @throws RequestParameterException
	 * @throws SCException
	 */
	private int callEKK0021A010SC(IRequestParameterReadWrite param, SessionHandle handle, String mskmDtlNo,
			HashMap<String, Object> resultHash) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0021A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0021A010CBSMsg.class.getName());
		mappingEKK0021A010InMsg(template, mskmDtlNo);
		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);

		// SIFの実行結果を設定
		resultHash.putAll(getWorkCAANMsg(sIFResult));

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	
	/**
	 * 申込明細照査・後続業務依頼SIFを呼び出し
	 * 
	 * @param param
	 * @param handle
	 * @param inHash
	 * @param resultHash
	 * @return
	 * @throws RequestParameterException
	 * @throws SCException
	 */
	private int callEKK0021C060SC(IRequestParameterReadWrite param, SessionHandle handle,
			HashMap<String, Object> inHash, HashMap<String, Object> work, HashMap<String, Object> resultHash)
			throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0021C060への呼び出しパラメータ設定
		template = new CAANMsg(EKK0021C060CBSMsg.class.getName());
		mappingEKK0021C060InMsg(template, inHash, work);
		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);

		// SIFの実行結果を設定
		resultHash.putAll(getWorkCAANMsg(sIFResult));

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	
	/**
	 * 進捗登録SIF呼び出し
	 * @param	param
	 * @param	handle
	 * @param	resultHash
	 * @param	work
	 * @param	prgStat
	 * @param	cdDivNm
	 * @param	idoDtm
	 * @return
	 * @throws Throwable
	 */
	private int callEKK1091D010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK1091D010への呼び出しパラメータ設定
		template = new CAANMsg(EKK1091D010CBSMsg.class.getName());
		mappingEKK1091D010InMsg(template);
		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);

		// SIFの実行結果を設定
		resultHash.putAll(getWorkCAANMsg(sIFResult));

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}

	/**
	 * サービス契約一覧照会（SYSID）2
	 * 
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param inHash 設定条件
	 * @param resultHash SIF実行結果格納用
	 * @throws Throwable 例外が発生した場合
	 */
	private int callEKK0081B004SC(IRequestParameterReadWrite param, SessionHandle handle,
			HashMap<String, Object> inHash, HashMap<String, Object> resultHash) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0081B004への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081B004CBSMsg.class.getName());
		mappingEKK0081B004InMsg(template, 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);

		// SIFの実行結果を設定
		resultHash.putAll(getWorkCAANMsg(sIFResult));

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	
	/**
	 * サービス契約一意照会SIF呼び出し
	 * @param param
	 * @param handle
	 * @param resultHash
	 * @return int
	 * @throws Throwable
	 */
	private int callEKK0081A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> resultHash) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0081A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081A010CBSMsg.class.getName());
		mappingEKK0081A010InMsg(template);
		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);

		// SIFの実行結果を設定
		resultHash.putAll(getWorkCAANMsg(sIFResult));

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}

	//**********************************************************
	//                      S/IF呼出
	//***********************END********************************
	
	//************************************************************
	//                  S/IF 項目マッピング
	//***********************START********************************
	/**
	 * templateに対してECK0011A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingECK0011A010InMsg(CAANMsg template, HashMap<String, Object> inHash)
	{
		// 全条件のNullマッピング
		fillCAANMSGNullMapping(template, new ECK0011A010CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(ECK0011A010CBSMsg.TEMPLATEID, ECK0011A010);

		// 機能コード--お客様一意照会
		template.set(ECK0011A010CBSMsg.FUNC_CODE, FUNC_CD_2);

		// ＫＥＹ＿ＳＹＳＩＤ
		template.set(ECK0011A010CBSMsg.KEY_SYSID, inHash.get("sysid"));

		// ＫＥＹ＿予約適用年月日
		template.set(ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
	}
	
	/**
	 * templateに対してECK0011C020の条件に関する部分を設定する
	 * 
	 * @param template
	 * @param inHash
	 */
	private void mappingECK0011C020InMsg(CAANMsg template, HashMap inHash, String funcCd, String initSbtCd)
	{
		// 全条件のNullマッピング
		fillCAANMSGNullMapping(template, new ECK0011C020CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(ECK0011C020CBSMsg.TEMPLATEID, ECK0011C020);

		// 機能コード--eoID/パスワード初期化
		template.set(ECK0011C020CBSMsg.FUNC_CODE, funcCd);

		// ＳＹＳＩＤ
		template.set(ECK0011C020CBSMsg.SYSID, inHash.get("sysid"));
		// 更新年月日時分秒(更新前)
		template.set(ECK0011C020CBSMsg.UPD_DTM_BF, cust_Upd_dtm);
		// 初期化種別コード
		template.set(ECK0011C020CBSMsg.SHKKA_SBT_CD, initSbtCd);
	}
	
	/**
	 * templateに対してEKK0011D020の条件に関する部分を設定する
	 * 
	 * @param template
	 * @param inHash
	 */
	private void mappingEKK0011D020InMsg(CAANMsg template, HashMap<String, Object> inHash)
	{
		// 全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0011D020CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EKK0011D020CBSMsg.TEMPLATEID, EKK0011D020);

		// 機能コード--申込内容承認登録
		template.set(EKK0011D020CBSMsg.FUNC_CODE, "1");

		// SYSID
		template.set(EKK0011D020CBSMsg.SYSID, (String)inHash.get("sysid"));

		// 申込種別コード（お客さまＩＤパスワード初期化・再発行申込）
		template.set(EKK0011D020CBSMsg.MSKM_SBT_CD, MSKM_SBT_CD_00032);

		// 申込受付年月日時分秒
		template.set(EKK0011D020CBSMsg.MSKM_UK_DTM, JCCBPCommon.getOpeDateTimeStamp(null));

		// 申込年月日
		template.set(EKK0011D020CBSMsg.MSKM_YMD, JCCBPCommon.getOpeDate(null));

		// コンシューマ営業用申込状態識別コード(04:承認済)
		template.set(EKK0011D020CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD, "04");

		// 申込内容承認登録明細の枠を作成
		CAANMsg[] eKK0011D020CBSMSG1LIST = null;
		CAANMsg eKK0011D020CBSMSG1 = null;
		eKK0011D020CBSMSG1 = new CAANMsg(EKK0011D020CBSMsg1List.class.getName());
		fillCAANMSGNullMapping(eKK0011D020CBSMSG1, new EKK0011D020CBSMsg1List().getContents());
		eKK0011D020CBSMSG1LIST = new CAANMsg[]
		{
			eKK0011D020CBSMSG1
		};

		template.set(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST, eKK0011D020CBSMSG1LIST);
	}

	/**
	 * templateに対してEKK0021A010の条件に関する部分を設定する
	 * 
	 * @param template
	 * @param inHash
	 */
	private void mappingEKK0021A010InMsg(CAANMsg template, String mskmDtlNo)
	{
		// 全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0021A010CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EKK0021A010CBSMsg.TEMPLATEID, EKK0021A010);

		// 機能コード--申込明細一意照会
		template.set(EKK0021A010CBSMsg.FUNC_CODE, FUNC_CD_2);

		// ＫＥＹ＿申込明細番号
		template.set(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, mskmDtlNo);

	}

	/**
	 * templateに対してEKK0021C060の条件に関する部分を設定する
	 * 
	 * @param template
	 * @param inHash
	 */
	private void mappingEKK0021C060InMsg(CAANMsg template, HashMap<String, Object> inHash, HashMap<String, Object> work)
	{
		// 全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0021C060CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EKK0021C060CBSMsg.TEMPLATEID, EKK0021C060);

		// 機能コード--申込明細照査・後続業務依頼
		template.set(EKK0021C060CBSMsg.FUNC_CODE, "1");

		// 申込明細番号
		template.set(EKK0021C060CBSMsg.MSKM_DTL_NO, mskmDtlNo);

		// 後続業務依頼年月日
		template.set(EKK0021C060CBSMsg.KZKWRK_REQYMD, JCCBPCommon.getOpeDate(null));

		// リクエストパラメータ.運用日時 → 連絡事項登録年月日時分秒
		template.set(EKK0021C060CBSMsg.RRK_JIKO_ADD_DTM, JCCBPCommon.getOpeDateTimeStamp(null));

		// 異動区分
		template.set(EKK0021C060CBSMsg.IDO_DIV, "00012");

		// 更新年月日時分秒(更新前)
		template.set(EKK0021C060CBSMsg.UPD_DTM_BF, inHash.get("last_upd_dtm"));
	}

	/**
	 * templateに対してEKK1091D010の条件に関する部分を設定する
	 * 
	 * @param template
	 * @param inHash
	 */
	private void mappingEKK1091D010InMsg(CAANMsg template)
	{
		// 全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK1091D010CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EKK1091D010CBSMsg.TEMPLATEID, EKK1091D010);

		// 機能コード--進捗登録
		template.set(EKK1091D010CBSMsg.FUNC_CODE, "1");

		// 申込詳細番号
		template.set(EKK1091D010CBSMsg.MSKM_DTL_NO, mskmDtlNo);

		// サービス契約番号
		template.set(EKK1091D010CBSMsg.SVC_KEI_NO, svcKeiNo);

		// 異動区分
		template.set(EKK1091D010CBSMsg.IDO_DIV, "00052");

		// 異動年月日時分秒
		template.set(EKK1091D010CBSMsg.IDO_DTM, JCCBPCommon.getOpeDateTimeStamp(null));

		// 進捗ステータス
		template.set(EKK1091D010CBSMsg.PRG_STAT, "5302");

		// 進捗メモ
		template.set(EKK1091D010CBSMsg.PRG_MEMO, "");

		// 進捗特記事項1
		template.set(EKK1091D010CBSMsg.PRG_TKJK_1, "eoID、eoIDパスワード");

		// 異動理由明細の枠を作成
		CAANMsg[] eKK1091D010CBSMSG1LIST = null;
		CAANMsg  eKK1091D010CBSMSG1 = new CAANMsg(EKK1091D010CBSMsg1List.class.getName());
		eKK1091D010CBSMSG1.set(EKK1091D010CBSMsg1List.IDO_RSN_CD, "56");
		eKK1091D010CBSMSG1.setNull(EKK1091D010CBSMsg1List.IDO_RSN_MEMO);
		eKK1091D010CBSMSG1LIST = new CAANMsg[]
		{
				eKK1091D010CBSMSG1
		};

			// UI残65_異動理由の要否について 2012/05/14 ariyoshi end
		template.set(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST, eKK1091D010CBSMSG1LIST);
	}

	/**
	 * templateに対してEKK0081B004の条件に関する部分を設定する
	 * 
	 * @param template
	 * @param inHash
	 */
	private void mappingEKK0081B004InMsg(CAANMsg template, HashMap inHash)
	{
		// 全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0081B004CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EKK0081B004CBSMsg.TEMPLATEID, EKK0081B004);

		// 機能コード-- サービス契約一覧照会（SYSID）2
		template.set(EKK0081B004CBSMsg.FUNC_CODE, FUNC_CD_1);

		// ※表示用ではないので全件取得できるような値を設定
		// 表示件数
		template.set(EKK0081B004CBSMsg.DISPLAY_NUM, "100");

		// 表示ページ数
		template.set(EKK0081B004CBSMsg.DISPLAY_PAGE_NUM, "1");

		// 最大取得件数
		template.set(EKK0081B004CBSMsg.MAX_SEARCH_NUM, "100");

		//サービスＩＦ個別部設定
		// ＫＥＹ＿SYSID
		template.set(EKK0081B004CBSMsg.KEY_SYSID, (String)inHash.get("sysid"));
	}

	/**
	 * templateに対してEKK0081A010の条件に関する部分を設定する
	 * 
	 * @param template
	 * @param inHash
	 */
	private void mappingEKK0081A010InMsg(CAANMsg template)
	{
		// 全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0081A010CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EKK0081A010CBSMsg.TEMPLATEID, EKK0081A010);

		// 機能コード--サービス契約一意照会
		template.set(EKK0081A010CBSMsg.FUNC_CODE, "2");

		// ＫＥＹ＿サービス契約番号
		template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);

		// ＫＥＹ＿予約適用年月日
		template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
	}


	//**********************************************************
	//                  S/IFマッピング
	//***********************END********************************
	
	/**
	 * 業務データの取得処理です。
	 * 
	 * @param rslt SVIFの実行結果データ
	 * @return 業務データ
	 */
	private HashMap<String, Object> getWorkCAANMsg(Map<?, ?> rslt)
	{
		CAANMsg[] templates = (CAANMsg[])rslt.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		return parentTemplate.getMsgData();
	}

	/**
	 * Nullマッピングで埋める
	 * 
	 * @param msg 対象クラス
	 * @param contents 対応クラスのフィールド列挙
	 */
	private void fillCAANMSGNullMapping(CAANMsg msg, Object[][] contents)
	{
		// 要素ごとのループ
		for (int i = 0; i < contents.length; i++)
		{
			Object element = null;

			// キーに該当する箇所の取得
			element = contents[i][0];

			// Nullでマッピング
			msg.setNull((String)element);
		}
	}

	/**
	 * 条件部の共通する項目の設定
	 * 
	 * @param param リクエストパラメータ
	 * @param template  template 条件の設定先
	 * @throws RequestParameterException
	 */
	public void editBasicCmn(IRequestParameterReadOnly param, CAANMsg template) throws RequestParameterException
	{
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
	}

	/**
	 * サービスI/F実行用の共通部を設定します<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param msg データ登録内容
	 * @return オプションサービス契約作成数
	 * @throws RequestParameterException
	 * @exception RequestParameterExceptionがスローされます。
	 */
	private HashMap<String, Object> editInMsgCmn(IRequestParameterReadOnly param) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());

		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());

		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());

		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));

		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));

		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));

		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		return paramMap;
	}
	

	/**
	 * <pre>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 * 
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite 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、ステータス取得
		String templateId = template.getString(JCMConstants.TEMPLATE_ID_KEY);
		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);
		}

		/* ユーザデータ情報 */
		HashMap inMap = (HashMap)param.getData(fText);

		// ユーザデータ情報にエラー情報をマッピング
		Object[][] contents = null;
		if (EKK0011D020.equals(templateId))
		{
			contents = new EKK0011D020CBSMsg().getContents();
		}
		else if (ECK0021C010.equals(templateId))
		{
			contents = new ECK0021C010CBSMsg().getContents();
		}
		else if (ECK0031C010.equals(templateId))
		{
			contents = new ECK0031C010CBSMsg().getContents();
		}
		else if (ECK0011C012.equals(templateId))
		{
			contents = new ECK0011C012CBSMsg().getContents();
		}
		else if (ECK0011C013.equals(templateId))
		{
			contents = new ECK0011C013CBSMsg().getContents();
		}
		else if (ECK0011C020.equals(templateId))
		{
			contents = new ECK0011C020CBSMsg().getContents();
		}
		else if (ECK0111C011.equals(templateId))
		{
			contents = new ECK0111C011CBSMsg().getContents();
		}
		else if (ECK0111C012.equals(templateId))
		{
			contents = new ECK0111C012CBSMsg().getContents();
		}
		else if (EKK0171C013.equals(templateId))
		{
			contents = new EKK0171C013CBSMsg().getContents();
		}
		else if (EKK0171C014.equals(templateId))
		{
			contents = new EKK0171C014CBSMsg().getContents();
		}
		else if (EKK0191C013.equals(templateId))
		{
			contents = new EKK0191C013CBSMsg().getContents();
		}
		else if (EKK0341B002.equals(templateId))
		{
			contents = new EKK0341B002CBSMsg().getContents();
		}
		else if (EKK0361C050.equals(templateId))
		{
			contents = new EKK0361C050CBSMsg().getContents();
		}
		else if (EKK0361C111.equals(templateId))
		{
			contents = new EKK0361C111CBSMsg().getContents();
		}
		else if (EKK0361C112.equals(templateId))
		{
			contents = new EKK0361C112CBSMsg().getContents();
		}
		else if (EKK1021C011.equals(templateId))
		{
			contents = new EKK1021C011CBSMsg().getContents();
		}
		else if (EKK0021A010.equals(templateId))
		{
			contents = new EKK0021A010CBSMsg().getContents();
		}
		else if (EKK1021D010.equals(templateId))
		{
			contents = new EKK1021D010CBSMsg().getContents();
		}
		else if (ECK0011A010.equals(templateId))
		{
			contents = new ECK0011A010CBSMsg().getContents();
		}
		else if (ECK0111B002.equals(templateId))
		{
			contents = new ECK0111B002CBSMsg().getContents();
		}
		else if (EKK0081A010.equals(templateId))
		{
			contents = new EKK0081A010CBSMsg().getContents();
		}
		else if (EKK0161B004.equals(templateId))
		{
			contents = new EKK0161B004CBSMsg().getContents();
		}
		else if (EKK0171A010.equals(templateId))
		{
			contents = new EKK0171A010CBSMsg().getContents();
		}
		else if (EKK0361A010.equals(templateId))
		{
			contents = new EKK0361A010CBSMsg().getContents();
		}
		else if (EKK0191A010.equals(templateId))
		{
			contents = new EKK0191A010CBSMsg().getContents();
		}
		else if (EKK0021C060.equals(templateId))
		{
			contents = new EKK0021C060CBSMsg().getContents();
		}
		else if (EKK1091D010.equals(templateId))
		{
			contents = new EKK1091D010CBSMsg().getContents();

			ArrayList inList = (ArrayList)inMap.get("EKK1091D010CBSMsg1List");
			if (inList == null)
			{
				inList = new ArrayList();
				inMap.put("EKK1091D010CBSMsg1List", inList);
			}

			CAANMsg[] templateArray = template.getCAANMsgList(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST);

			if (templateArray != null)
			{
				for (int i = 0; i < templateArray.length; i++)
				{
					if (i >= inList.size())
					{
						inList.add(new HashMap());
					}

					HashMap childMap = (HashMap)inList.get(i);
					CAANMsg childTemplate = templateArray[i];

					// 対象データ.異動理由明細.異動理由コード → 異動理由明細.異動理由コード のエラー情報返却
					if (!childTemplate.isNull(EKK1091D010CBSMsg1List.IDO_RSN_CD_ERR))
					{
						if (!childMap.containsKey("ido_rsn_cd_err"))
						{
							childMap.put("ido_rsn_cd_err", childTemplate
									.getString(EKK1091D010CBSMsg1List.IDO_RSN_CD_ERR));
						}
					}
					// 対象データ.異動理由明細.異動理由メモ → 異動理由明細.異動理由メモ のエラー情報返却
					if (!childTemplate.isNull(EKK1091D010CBSMsg1List.IDO_RSN_MEMO_ERR))
					{
						if (!childMap.containsKey("ido_rsn_memo_err"))
						{
							childMap.put("ido_rsn_memo_err", childTemplate
									.getString(EKK1091D010CBSMsg1List.IDO_RSN_MEMO_ERR));
						}
					}
				}
			}
		}
		else if (EKK0081B004.equals(templateId))
		{
			contents = new EKK0081B004CBSMsg().getContents();
		}
		else if (EKK0341B022.equals(templateId))
		{
			contents = new EKK0341B022CBSMsg().getContents();
		}
// OM-2018-0001294 2019/02/15 ADD START
		else if (EZM0111B050.equals(templateId))
		{
			contents = new EZM0111B050CBSMsg().getContents();
		}
		else if (EZM0111C010.equals(templateId))
		{
			contents = new EZM0111C010CBSMsg().getContents();
		}
		else if (EZM0111C030.equals(templateId))
		{
			contents = new EZM0111C030CBSMsg().getContents();
		}
// OM-2018-0001294 2019/02/15 ADD END

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		for (int i = 0; contents != null && i < contents.length; i++)
		{
			String element = null;
			element = (String)contents[i][0];
			if (element.indexOf("_err") > 0)
			{
				if (!template.isNull(element))
				{
					if (!inMap.containsKey(element))
					{
						inMap.put(element, template.getString(element));
					}
				}
			}
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}
// OM-2018-0001294 2019/02/15 ADD START
	/**
	 * eoID変更チェック<br />
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param eoID eoid
	 * @return チェック結果(true:eoID変更、false:eoID変更以外)
	 */
	public static boolean checkEoidChangeMoji(String eoid)
	{
		// 51で始まる12桁の数値以外どうかをチェックする
		if (eoid != null && !eoid.matches("51[0-9]{10}"))
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * エイジング一覧照会SIF呼び出し
	 * 
	 * @param param
	 * @param handle
	 * @param paramMap
	 * @param eCK0011A010
	 * @param eZM0111B050Hash
	 * @return
	 * @throws RequestParameterException
	 * @throws SCException
	 */
	private int callEZM0111B050SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap eCK0011A010,
			HashMap<String, Object> eZM0111B050Hash, String funcCd) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EZM0111B050への呼び出しパラメータ設定
		template = new CAANMsg(EZM0111B050CBSMsg.class.getName());
		mappingEZM0111B050InMsg(template, eCK0011A010, funcCd);
		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);

		// SIFの実行結果を設定
		eZM0111B050Hash.putAll(getWorkCAANMsg(sIFResult));

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	
	/**
	 * templateに対してEZM0111B050の条件に関する部分を設定する
	 * 
	 * @param template
	 * @param inHash
	 */
	private void mappingEZM0111B050InMsg(CAANMsg template, HashMap inHash, String funcCd)
	{
		// 全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EZM0111B050CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EZM0111B050CBSMsg.TEMPLATEID, EZM0111B050);

		// 機能コード--エイジング一覧照会
		template.set(EZM0111B050CBSMsg.FUNC_CODE, funcCd);
		
		// ＫＥＹ＿エイジング種別コード
		template.set(EZM0111B050CBSMsg.KEY_AGING_SBT_CD, JKKStrConst.CD00412_EOID);
		
		// ＫＥＹ＿エイジングステータス
		template.set(EZM0111B050CBSMsg.KEY_AGING_STAT, JKKStrConst.CD00063_USING);
		
		// ＫＥＹ＿エイジング対象値
		template.set(EZM0111B050CBSMsg.KEY_AGING_TG_VALUE, inHash.get(ECK0011A010CBSMsg1List.EOID));
	}
	
	/**
	 * エイジング対象使用終了SIF呼び出し
	 * 
	 * @param param
	 * @param handle
	 * @param paramMap
	 * @param eZM0111B050
	 * @param eZM0111C010Hash
	 * @return
	 * @throws RequestParameterException
	 * @throws SCException
	 */
	private int callEZM0111C010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap eZM0111B050,
			HashMap<String, Object> resultHash, String funcCd) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EZM0111C010への呼び出しパラメータ設定
		template = new CAANMsg(EZM0111C010CBSMsg.class.getName());
		mappingEZM0111C010InMsg(template, eZM0111B050, funcCd);
		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);

		// SIFの実行結果を設定
		resultHash.putAll(getWorkCAANMsg(sIFResult));

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	
	/**
	 * templateに対してEZM0111C010の条件に関する部分を設定する
	 * 
	 * @param template
	 * @param inHash
	 */
	private void mappingEZM0111C010InMsg(CAANMsg template, HashMap inHash, String funcCd)
	{
		// 全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EZM0111C010CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EZM0111C010CBSMsg.TEMPLATEID, EZM0111C010);

		// 機能コード--エイジング一覧照会
		template.set(EZM0111C010CBSMsg.FUNC_CODE, funcCd);
		
		// エイジング種別コード
		template.set(EZM0111C010CBSMsg.AGING_SBT_CD, JKKStrConst.CD00412_EOID);
		
		// エイジング対象値
		template.set(EZM0111C010CBSMsg.AGING_TG_VALUE, inHash.get(EZM0111B050CBSMsg1List.AGING_TG_VALUE));
		
		// 更新前最終年月日時分秒
		template.set(EZM0111C010CBSMsg.LAST_UPD_DTM_BF, inHash.get(EZM0111B050CBSMsg1List.UPD_DTM));
	}
	
	/**
	 * 回復可能期間終了SIF呼び出し
	 * 
	 * @param param
	 * @param handle
	 * @param paramMap
	 * @param eZM0111C010
	 * @param resultHash
	 * @return
	 * @throws RequestParameterException
	 * @throws SCException
	 */
	private int callEZM0111C030SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap eZM0111C010,
			HashMap<String, Object> resultHash, String funcCd) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EZM0111C030への呼び出しパラメータ設定
		template = new CAANMsg(EZM0111C030CBSMsg.class.getName());
		mappingEZM0111C030InMsg(template, eZM0111C010, funcCd);
		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);

		// SIFの実行結果を設定
		resultHash.putAll(getWorkCAANMsg(sIFResult));

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	
	/**
	 * templateに対してEZM0111C030の条件に関する部分を設定する
	 * 
	 * @param template
	 * @param inHash
	 */
	private void mappingEZM0111C030InMsg(CAANMsg template, HashMap inHash, String funcCd)
	{
		// 全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EZM0111C030CBSMsg().getContents());

		// テンプレートID(SIFのID)
		template.set(EZM0111C030CBSMsg.TEMPLATEID, EZM0111C030);

		// 機能コード--エイジング一覧照会
		template.set(EZM0111C030CBSMsg.FUNC_CODE, funcCd);
		
		// エイジング種別コード
		template.set(EZM0111C030CBSMsg.AGING_SBT_CD, JKKStrConst.CD00412_EOID);
		
		// エイジング対象値
		template.set(EZM0111C030CBSMsg.AGING_TG_VALUE, inHash.get(EZM0111C010CBSMsg.AGING_TG_VALUE));
		
		// 更新前最終年月日時分秒
		template.set(EZM0111C030CBSMsg.LAST_UPD_DTM_BF, inHash.get(EZM0111C010CBSMsg.UPD_DTM));
	}
// OM-2018-0001294 2019/02/15 ADD END
}
