/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom, 2011
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKDslsimpleSendMailMapperCC
*   ソースファイル名：JKKDslsimpleSendMailMapperCC.java
*   作成者          ：富士通
*   日付            ：2024年10月04日
*＜機能概要＞
*   シンプルプラン解約受付メール送信CCで使用するマッパークラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2024/10/04   FJ）        新規作成
*   v74.00.00   2025/02/17   FJ)藤井    【ANK-4656-00-00】eo光シンプルプラン提供(STEP3)
*   v74.00.01   2025/03/27   FJ)藤井    【IT1-2025-0000028】メール情報登録ＳＩＦのマッピングを修正
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

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.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.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.*;



public class JKKDslSimpleSendMailMapperCC
{

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約一意照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param inMap 業務情報を保持するマップ
	 * @param fixedText ユーザ任意文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> editInMsgEKK0081A010(IRequestParameterReadOnly param, HashMap inMap, String fixedText)
	throws Throwable 
	{
		CAANMsg template = new CAANMsg(EKK0081A010CBSMsg.class.getName());

		String funcCode = "2";

		// nullを設定
		fillCAANMSGNullMapping(template, new EKK0081A010CBSMsg().getContents());

		// テンプレートID
		template.set(EKK0081A010CBSMsg.TEMPLATEID, "EKK0081A010");

		// 機能コード（デフォルト：１）
		template.set(EKK0081A010CBSMsg.FUNC_CODE, funcCode);

		// 共通情報設定処理
		editCommonInfo(param, template);

		String operateDate = JCCBPCommon.getOpeDate(null);
		
		// 機能コード
		template.set(EKK0081A010CBSMsg.FUNC_CODE, funcCode);

		// リクエストパラメータ.サービス契約番号 → ＫＥＹ＿サービス契約番号
		if (inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, (String) inMap.get("svc_kei_no"));
		}

		// 予約適用年月日
		template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, operateDate);

		return editInMsgCmn(param, template);
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約一意照会
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0081A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_"
				+ String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String) param
					.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_"
					+ formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// リクエストパラメータ.サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_no_err"))
			{
				inMap.put("svc_kei_no_err", template
						.getString(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil
				.getErrorInfo(msgList, errList));

		return param;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:お客様情報照会（PMP連携用）
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param inMap 業務情報を保持するマップ
	 * @param fixedText ユーザ任意文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> editInMsgECK0011B050(IRequestParameterReadOnly param, HashMap inMap, String fixedText)
	throws Throwable 
	{
		CAANMsg template = new CAANMsg(ECK0011B050CBSMsg.class.getName());

		String funcCode = "1";

		// nullを設定
		fillCAANMSGNullMapping(template, new ECK0011B050CBSMsg().getContents());

		// テンプレートID
		template.set(ECK0011B050CBSMsg.TEMPLATEID, "ECK0011B050");

		// 機能コード（デフォルト：１）
		template.set(ECK0011B050CBSMsg.FUNC_CODE, funcCode);

		// 共通情報設定処理
		editCommonInfo(param, template);

		// 機能コード
		template.set(ECK0011B050CBSMsg.FUNC_CODE, funcCode);

		// リクエストパラメータ.SYSID → ＫＥＹ＿SYSID
		if (inMap == null || inMap.get("sysid") == null	|| "".equals(inMap.get("sysid")))
		{
			template.setNull(ECK0011B050CBSMsg.KEY_SYSID);
		}
		else
		{
			template.set(ECK0011B050CBSMsg.KEY_SYSID, (String) inMap.get("sysid"));
		}

		return editInMsgCmn(param, template);
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:お客様情報照会（PMP連携用）
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPECK0011B050(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(ECK0011B050CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_"
				+ String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String) param
					.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_"
					+ formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// リクエストパラメータ.SYSID → ＫＥＹ＿SYSID のエラー情報返却
		if (!template.isNull(ECK0011B050CBSMsg.KEY_SYSID_ERR))
		{
			if (!inMap.containsKey("sysid_err"))
			{
				inMap.put("sysid_err", template
						.getString(ECK0011B050CBSMsg.KEY_SYSID_ERR));
			}
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil
				.getErrorInfo(msgList, errList));

		return param;
	}
	
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約回線内訳一覧照会(現在利用中)
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param inMap 業務情報を保持するマップ
	 * @param fixedText ユーザ任意文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> editInMsgEKK0251B003(IRequestParameterReadOnly param, HashMap inMap, String fixedText)
	throws Throwable 
	{
		CAANMsg template = new CAANMsg(EKK0251B003CBSMsg.class.getName());

		String funcCode = "1";

		// nullを設定
		fillCAANMSGNullMapping(template, new EKK0251B003CBSMsg().getContents());

		// テンプレートID
		template.set(EKK0251B003CBSMsg.TEMPLATEID, "EKK0251B003");

		// 機能コード（デフォルト：１）
		template.set(EKK0251B003CBSMsg.FUNC_CODE, funcCode);

		// 共通情報設定処理
		editCommonInfo(param, template);

		// 機能コード
		template.set(EKK0251B003CBSMsg.FUNC_CODE, funcCode);

		// リクエストパラメータ.サービス契約番号 → ＫＥＹ＿サービス契約番号
		if (inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK0251B003CBSMsg.KEY_SVC_KEI_NO);
		} 
		else
		{
			template.set(EKK0251B003CBSMsg.KEY_SVC_KEI_NO, (String) inMap.get("svc_kei_no"));
		}

		return editInMsgCmn(param, template);
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約回線内訳一覧照会(現在利用中)
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0251B003(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK0251B003CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_"
				+ String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String) param
					.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_"
					+ formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// リクエストパラメータ.サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0251B003CBSMsg.KEY_SVC_KEI_NO))
		{
			if (!inMap.containsKey("svc_kei_no_err"))
			{
				inMap.put("svc_kei_no_err", template.getString(EKK0251B003CBSMsg.KEY_SVC_KEI_NO));
			}
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil
				.getErrorInfo(msgList, errList));

		return param;
	}

	
	/**
	 * サービスI/F実行用の共通部を設定します<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param msg データ登録内容
	 * @return オプションサービス契約作成数
	 * @throws RequestParameterException
	 * @exception RequestParameterExceptionがスローされます。
	 */
	private HashMap<String, Object> editInMsgCmn(IRequestParameterReadOnly param, CAANMsg msg)
	throws RequestParameterException 
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = msg;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;

	}
	
	/**
	 * 持ちうるフィールドに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);

		}
	}
	
	/**
	 * S/IF呼出時の共通情報を設定する
	 * @param param 業務データ取得用I/F
	 * @param template 条件の設定先
	 * @throws RequestParameterException
	 */
	private void editCommonInfo(
			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);
	}
	
	// ANK-4656-00-00 ADD START
	/**
	 *<DL>
	 *<DT>処理概要:メール情報登録 上りマッピング
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param inMap 業務情報を保持するマップ
	 * @param fixedText ユーザ任意文字列
	 * @param mailId メールID
	 * @param contentsMlad コンテンツ連絡先メールアドレス
	 * @param DSL_MAIL_CD メールコード（解約受付）
	 * @param msgECK0011B050List お客様情報照会（PMP連携用）実行結果
	 * @param sendMailInfo メール情報登録呼び出し結果
	 * @return サービスコンポーネント実行用CAANMsg
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> editInMsgEKK1121D010(
			IRequestParameterReadOnly param, 
			HashMap inMap,
			String fixedText, 
			String mailId,
			String contentsMlad,
			String DSL_MAIL_CD, 
			CAANMsg[] msgECK0011B050List,
			HashMap<String, Object> sendMailInfo)
	throws Throwable 
	{
		CAANMsg template = new CAANMsg(EKK1121D010CBSMsg.class.getName());

		// nullを設定
		fillCAANMSGNullMapping(template, new EKK1121D010CBSMsg().getContents());

		// テンプレートID
		template.set(EKK1121D010CBSMsg.TEMPLATEID, "EKK1121D010");

		// 機能コード（デフォルト：１）
		template.set(EKK1121D010CBSMsg.FUNC_CODE, "1");

		// 共通情報設定処理
		editCommonInfo(param, template);
		
		// メールID
		template.set(EKK1121D010CBSMsg.MAIL_ID, mailId);
		
		// メール送信番号
		if (sendMailInfo == null || sendMailInfo.get("mail_send_no") == null || "".equals(sendMailInfo.get("mail_send_no")))
		{
			template.setNull(EKK1121D010CBSMsg.MAIL_SEND_NO);
		}
		else
		{
			template.set(EKK1121D010CBSMsg.MAIL_SEND_NO, (String)sendMailInfo.get("mail_send_no"));
		}
		
		// SYSID
		if (inMap == null || inMap.get("sysid") == null || "".equals(inMap.get("sysid")))
		{
			template.setNull(EKK1121D010CBSMsg.SYSID);
		}
		else
		{
			template.set(EKK1121D010CBSMsg.SYSID, (String)inMap.get("sysid"));
		}
		
		// メール送信年月日時分秒
		template.set(EKK1121D010CBSMsg.MAIL_SEND_DTM, (String)sendMailInfo.get("add_dtm"));
		
		// メール送信ステータスを取得
		String mailSndStat = (String)sendMailInfo.get("mail_send_stat");
		
		// メール送信ステータスを元にメール送信状態コードを設定
		if ("".equals(mailSndStat))
		{
			template.setNull(EKK1121D010CBSMsg.MAIL_SEND_STAT_CD);
		}
		else if ("001".equals(mailSndStat))
		{
			template.set(EKK1121D010CBSMsg.MAIL_SEND_STAT_CD, "0");
		}
		else if ("002".equals(mailSndStat))
		{
			template.set(EKK1121D010CBSMsg.MAIL_SEND_STAT_CD, "1");
		}
		else if ("003".equals(mailSndStat) || "004".equals(mailSndStat))
		{
			template.set(EKK1121D010CBSMsg.MAIL_SEND_STAT_CD, "2");
		}
		
		// 送信先メールアドレス
		template.set(EKK1121D010CBSMsg.SENDS_MLAD, contentsMlad);
		
		// メールタイトル
		if (sendMailInfo == null || sendMailInfo.get("mail_title") == null || "".equals(sendMailInfo.get("mail_title")))
		{
			template.setNull(EKK1121D010CBSMsg.MAIL_TITLE);
		}
		else
		{
			template.set(EKK1121D010CBSMsg.MAIL_TITLE, (String)sendMailInfo.get("mail_title"));
		}
		
		// メール本文
		if (sendMailInfo == null || sendMailInfo.get("mail_text") == null || "".equals(sendMailInfo.get("mail_text")))
		{
			template.setNull(EKK1121D010CBSMsg.MAIL_TEXT);
		}
		else
		{
			template.set(EKK1121D010CBSMsg.MAIL_TEXT, (String)sendMailInfo.get("mail_text"));
		}
		
		// メールコード
		template.set(EKK1121D010CBSMsg.MAIL_CD, DSL_MAIL_CD);
		
		// eoID
		if (inMap == null || inMap.get("eoid") == null || "".equals(inMap.get("eoid")))
		{
			template.setNull(EKK1121D010CBSMsg.EOID);
		}
		else
		{
			template.set(EKK1121D010CBSMsg.EOID, (String)inMap.get("eoid"));
		}
		// IT1-2025-0000028 MOD START
//		// メールアドレスと紐づく契約者名を取得
//		String custKana = getCustKana(contentsMlad, msgECK0011B050List);
//		
//		// 送信先契約者カナ名
//		if (JKKStringUtil.isNullBlank(custKana))
//		{
//			template.setNull(EKK1121D010CBSMsg.SENDS_KSH_KANA);
//		}
//		else
//		{
//			template.set(EKK1121D010CBSMsg.SENDS_KSH_KANA, custKana);
//		}
		// お客様カナ名
		template.setNull(EKK1121D010CBSMsg.SENDS_KSH_KANA);
		// IT1-2025-0000028 MOD END	
		// コンテンツサービスコード
		template.setNull(EKK1121D010CBSMsg.CONT_SVC_CD);


		return editInMsgCmn(param, template);
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:メール情報登録 実行結果取得
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK1121D010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK1121D010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_"
				+ String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String) param
					.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_"
					+ formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// メールIDエラー
		if (!template.isNull(EKK1121D010CBSMsg.MAIL_ID_ERR))
		{
			if (!inMap.containsKey("mail_id_err"))
			{
				inMap.put("mail_id_err", template.getString(EKK1121D010CBSMsg.MAIL_ID_ERR));
			}
		}
		
		// メール送信番号エラー
		if (!template.isNull(EKK1121D010CBSMsg.MAIL_SEND_NO_ERR))
		{
			if (!inMap.containsKey("mail_send_no_err"))
			{
				inMap.put("mail_send_no_err", template.getString(EKK1121D010CBSMsg.MAIL_SEND_NO_ERR));
			}
		}
		
		// SYSIDエラー
		if (!template.isNull(EKK1121D010CBSMsg.SYSID_ERR))
		{
			if (!inMap.containsKey("sysid_err"))
			{
				inMap.put("sysid_err", template.getString(EKK1121D010CBSMsg.SYSID_ERR));
			}
		}
		
		// メール送信年月日時分秒エラー
		if (!template.isNull(EKK1121D010CBSMsg.MAIL_SEND_DTM_ERR))
		{
			if (!inMap.containsKey("mail_send_dtm_err"))
			{
				inMap.put("mail_send_dtm_err", template.getString(EKK1121D010CBSMsg.MAIL_SEND_DTM_ERR));
			}
		}
		
		// メール送信状態コードエラー
		if (!template.isNull(EKK1121D010CBSMsg.MAIL_SEND_STAT_CD_ERR))
		{
			if (!inMap.containsKey("mail_send_stat_cd_err"))
			{
				inMap.put("mail_send_stat_cd_err", template.getString(EKK1121D010CBSMsg.MAIL_SEND_STAT_CD_ERR));
			}
		}
		
		// 送信先メールアドレスエラー
		if (!template.isNull(EKK1121D010CBSMsg.SENDS_MLAD_ERR))
		{
			if (!inMap.containsKey("sends_mlad_err"))
			{
				inMap.put("sends_mlad_err", template.getString(EKK1121D010CBSMsg.SENDS_MLAD_ERR));
			}
		}
		
		// メールタイトルエラー
		if (!template.isNull(EKK1121D010CBSMsg.MAIL_TITLE_ERR))
		{
			if (!inMap.containsKey("mail_title_err"))
			{
				inMap.put("mail_title_err", template.getString(EKK1121D010CBSMsg.MAIL_TITLE_ERR));
			}
		}
		
		// メール本文エラー
		if (!template.isNull(EKK1121D010CBSMsg.MAIL_TEXT_ERR))
		{
			if (!inMap.containsKey("mail_text_err"))
			{
				inMap.put("mail_text_err", template.getString(EKK1121D010CBSMsg.MAIL_TEXT_ERR));
			}
		}
		
		// メールコードエラー
		if (!template.isNull(EKK1121D010CBSMsg.MAIL_CD_ERR))
		{
			if (!inMap.containsKey("mail_cd_err"))
			{
				inMap.put("mail_cd_err", template.getString(EKK1121D010CBSMsg.MAIL_CD_ERR));
			}
		}
		
		// eoIDエラー
		if (!template.isNull(EKK1121D010CBSMsg.EOID_ERR))
		{
			if (!inMap.containsKey("eoid_err"))
			{
				inMap.put("eoid_err", template.getString(EKK1121D010CBSMsg.EOID_ERR));
			}
		}
		
		// 送信先契約者カナ名エラー
		if (!template.isNull(EKK1121D010CBSMsg.SENDS_KSH_KANA_ERR))
		{
			if (!inMap.containsKey("sends_ksh_kana_err"))
			{
				inMap.put("sends_ksh_kana_err", template.getString(EKK1121D010CBSMsg.SENDS_KSH_KANA_ERR));
			}
		}
		
		// コンテンツサービスコードエラー
		if (!template.isNull(EKK1121D010CBSMsg.CONT_SVC_CD_ERR))
		{
			if (!inMap.containsKey("cont_svc_cd_err"))
			{
				inMap.put("cont_svc_cd_err", template.getString(EKK1121D010CBSMsg.CONT_SVC_CD_ERR));
			}
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:メールID採番 上りマッピング
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param inMap 業務情報を保持するマップ
	 * @param fixedText ユーザ任意文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> editInMsgEKK1121C011(IRequestParameterReadOnly param, HashMap inMap, String fixedText)
	throws Throwable 
	{
		CAANMsg template = new CAANMsg(EKK1121C011CBSMsg.class.getName());
		
		// nullを設定
		fillCAANMSGNullMapping(template, new EKK1121C011CBSMsg().getContents());
		
		// テンプレートID
		template.set(EKK1121C011CBSMsg.TEMPLATEID, "EKK1121C011");
		
		// 機能コード
		template.set(EKK1121C011CBSMsg.FUNC_CODE, "1");
		
		// 共通情報設定処理
		editCommonInfo(param, template);

		// メールID採番区分（eo顧客基幹システム）
		template.set(EKK1121C011CBSMsg.MAIL_ID_KBN, "1");

		return editInMsgCmn(param, template);
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:メールID採番 実行結果取得
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK1121C011(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK1121C011CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_"
				+ String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String) param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_"
					+ formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// リクエストパラメータ.メールID採番区分 → メールID採番区分 のエラー情報返却
		if (!template.isNull(EKK1121C011CBSMsg.MAIL_ID_KBN_ERR))
		{
			if (!inMap.containsKey("mail_id_kbn_err"))
			{
				inMap.put("mail_id_kbn_err", template.getString(EKK1121C011CBSMsg.MAIL_ID_KBN_ERR));
			}
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}
	
	// IT1-2025-0000028 DEL START
//	/**
//	 *<DL>
//	 *<DT>処理概要:お客様名取得
//	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
//	 *<DT>入力パラメータ説明:
//	 *<DD>特になし
//	 *<DT>入力パラメータ説明：
//	 *<DD>特になし
//	 *<DT>出力パラメータ説明:
//	 *<DD>特になし
//	 *</DL>
//	 * 
//	 * @param contentsMlad メールアドレス
//	 * @param msgECK0011B050List CAANMsgクラス
//	 * @return String
//	 */
//	private String getCustKana(String contentsMlad, CAANMsg[] msgECK0011B050List)
//	{
//		
//		if (JKKStringUtil.isNullBlank(contentsMlad) || msgECK0011B050List == null || msgECK0011B050List.length == 0)
//		{
//			return "";
//		}
//		
//		// お客様名
//		String custkana = "";
//		// コンテンツお客様名
//		String contCustkana = "";
//		
//		// メールアドレスと紐づくお客様カナ名、コンテンツお客様カナ名を取得
//		for (CAANMsg msgECK0011B050 : msgECK0011B050List)
//		{
//			String tempMlad = msgECK0011B050.getString(ECK0011B050CBSMsg1List.MLAD);
//			if (contentsMlad.equals(tempMlad))
//			{
//				custkana = msgECK0011B050.getString(ECK0011B050CBSMsg1List.CUST_KANA);
//				contCustkana = msgECK0011B050.getString(ECK0011B050CBSMsg1List.CONT_CUST_KANA);
//				break;
//			}
//			
//			
//		}
//		
//		if (!JKKStringUtil.isNullBlank(contCustkana))
//		{
//			// コンテンツお客様名が取得できた場合、コンテンツお客様名を返却
//			return contCustkana;
//		}
//		else
//		{
//			// それ以外の場合、お客様名を返却
//			return custkana;
//		}
//	}
	// IT1-2025-0000028 DEL END
	// ANK-4656-00-00 ADD END

}
