/** ***************************************************************************
/* KKSV0118OPOperation.java All Rights reserved,Copyright (c) K-Opticom
/*****************************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKSvkeiShosaNGChkConstCC;
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.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0091C013CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0101C013CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0111C013CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0121C013CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0141C013CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2441B003CBSMsg;


/**
 * サービス契約照査NGチェックで使用するマッパーです。<p>
 * <BR>
 * @ author FJ
 */
public class JKKSvkeiShosaChkShosaNgChkMapperCC {
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約一意照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0081A010(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK0081A010CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		
		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0081A010CBSMsg().getContents());

		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaNGChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaNGChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		// テンプレートID
		template.set(EKK0081A010CBSMsg.TEMPLATEID, "EKK0081A010");

		// 機能コード（デフォルト：１）
		template.set(EKK0081A010CBSMsg.FUNC_CODE, JKKSvkeiShosaNGChkConstCC.FUNC_CODE_EKK0081A010);

		// 共通情報設定処理
		editCommonInfo(param, template);

		String operateDate = JCCBPCommon.getOpeDate(null);
		
		// 機能コード
		template.set(EKK0081A010CBSMsg.FUNC_CODE, JKKSvkeiShosaNGChkConstCC.FUNC_CODE_EKK0081A010);

		// サービス契約一意照会.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO))) {
			template.setNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO);
		} else {
			template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, (String) svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO));
		}
			
		template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, operateDate);

		templateList.add(template);

		return templateList;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eo光ネット＞照査NGチェック
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0091C013(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK0091C013CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0091C013CBSMsg().getContents());
		
		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaNGChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaNGChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		String funcCode = (String)userMap.get(JCMConstants.FUNC_CODE_KEY);
		if (null == funcCode)
		{
			funcCode = JKKSvkeiShosaNGChkConstCC.FUNC_CODE_SHOSA;
		}

		// テンプレートID
		template.set(EKK0091C013CBSMsg.TEMPLATEID, "EKK0091C013");

		// 機能コード（デフォルト：１）
		template.set(EKK0091C013CBSMsg.FUNC_CODE, funcCode);

		// 共通情報設定処理
		editCommonInfo(param, template);

		// 機能コード
		template.set(EKK0091C013CBSMsg.FUNC_CODE, funcCode);

		// サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO)))
		{
			template.setNull(EKK0091C013CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0091C013CBSMsg.SVC_KEI_NO, svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO));
		}

		// 起動元コード
		if ("".equals(svkeiData.get(JKKSvkeiShosaNGChkConstCC.KIDO_CD)))
		{
			template.setNull(EKK0091C013CBSMsg.KIDO_CD);
		}
		else
		{
			template.set(EKK0091C013CBSMsg.KIDO_CD, svkeiData.get(JKKSvkeiShosaNGChkConstCC.KIDO_CD));
		}

		templateList.add(template);

		return templateList;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eo光TV＞照査NGチェック
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0101C013(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK0101C013CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0101C013CBSMsg().getContents());
		
		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaNGChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaNGChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		String funcCode = (String)userMap.get(JCMConstants.FUNC_CODE_KEY);
		if (null == funcCode)
		{
			funcCode = JKKSvkeiShosaNGChkConstCC.FUNC_CODE_SHOSA;
		}

		// テンプレートID
		template.set(EKK0101C013CBSMsg.TEMPLATEID, "EKK0101C013");

		// 機能コード（デフォルト：１）
		template.set(EKK0101C013CBSMsg.FUNC_CODE, funcCode);

		// 共通情報設定処理
		editCommonInfo(param, template);

		// 機能コード
		template.set(EKK0101C013CBSMsg.FUNC_CODE, funcCode);

		// サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO)))
		{
			template.setNull(EKK0101C013CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0101C013CBSMsg.SVC_KEI_NO, svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO));
		}

		// 起動元コード
		if ("".equals(svkeiData.get(JKKSvkeiShosaNGChkConstCC.KIDO_CD)))
		{
			template.setNull(EKK0101C013CBSMsg.KIDO_CD);
		}
		else
		{
			template.set(EKK0101C013CBSMsg.KIDO_CD, svkeiData.get(JKKSvkeiShosaNGChkConstCC.KIDO_CD));
		}

		templateList.add(template);

		return templateList;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eo光電話＞照査NGチェック
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0111C013(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK0111C013CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0111C013CBSMsg().getContents());
		
		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaNGChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaNGChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		String funcCode = (String)userMap.get(JCMConstants.FUNC_CODE_KEY);
		if (null == funcCode)
		{
			funcCode = JKKSvkeiShosaNGChkConstCC.FUNC_CODE_SHOSA;
		}

		// テンプレートID
		template.set(EKK0111C013CBSMsg.TEMPLATEID, "EKK0111C013");

		// 機能コード（デフォルト：１）
		template.set(EKK0111C013CBSMsg.FUNC_CODE, funcCode);

		// 共通情報設定処理
		editCommonInfo(param, template);

		// 機能コード
		template.set(EKK0111C013CBSMsg.FUNC_CODE, funcCode);

		// サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO)))
		{
			template.setNull(EKK0111C013CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0111C013CBSMsg.SVC_KEI_NO, svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO));
		}

		// 起動元コード
		if ("".equals(svkeiData.get(JKKSvkeiShosaNGChkConstCC.KIDO_CD)))
		{
			template.setNull(EKK0111C013CBSMsg.KIDO_CD);
		}
		else
		{
			template.set(EKK0111C013CBSMsg.KIDO_CD, svkeiData.get(JKKSvkeiShosaNGChkConstCC.KIDO_CD));
		}

		templateList.add(template);

		return templateList;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eoモバイル＞照査チェック
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0121C013(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK0121C013CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0121C013CBSMsg().getContents());
		
		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaNGChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaNGChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		String funcCode = (String)userMap.get(JCMConstants.FUNC_CODE_KEY);
		if (null == funcCode)
		{
			funcCode = JKKSvkeiShosaNGChkConstCC.FUNC_CODE_SHOSA;
		}

		// テンプレートID
		template.set(EKK0121C013CBSMsg.TEMPLATEID, "EKK0121C013");

		// 機能コード（デフォルト：１）
		template.set(EKK0121C013CBSMsg.FUNC_CODE, funcCode);

		// 共通情報設定処理
		editCommonInfo(param, template);

		// 機能コード
		template.set(EKK0121C013CBSMsg.FUNC_CODE, funcCode);

		// サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO)))
		{
			template.setNull(EKK0121C013CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0121C013CBSMsg.SVC_KEI_NO, svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO));
		}

		// 起動元コード
		if ("".equals(svkeiData.get(JKKSvkeiShosaNGChkConstCC.KIDO_CD)))
		{
			template.setNull(EKK0121C013CBSMsg.KIDO_CD);
		}
		else
		{
			template.set(EKK0121C013CBSMsg.KIDO_CD, svkeiData.get(JKKSvkeiShosaNGChkConstCC.KIDO_CD));
		}

		templateList.add(template);

		return templateList;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eoADSL＞照査チェック
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0141C013(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK0141C013CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0121C013CBSMsg().getContents());
		
		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaNGChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaNGChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		String funcCode = (String)userMap.get(JCMConstants.FUNC_CODE_KEY);
		if (null == funcCode)
		{
			funcCode = JKKSvkeiShosaNGChkConstCC.FUNC_CODE_SHOSA;
		}
		// テンプレートID
		template.set(EKK0141C013CBSMsg.TEMPLATEID, "EKK0141C013");

		// 機能コード（デフォルト：１）
		template.set(EKK0141C013CBSMsg.FUNC_CODE, funcCode);

		// 共通情報設定処理
		editCommonInfo(param, template);

		// 機能コード
		template.set(EKK0141C013CBSMsg.FUNC_CODE, funcCode);

		// サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO)))
		{
			template.setNull(EKK0141C013CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0141C013CBSMsg.SVC_KEI_NO, svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO));
		}

		// 起動元コード
		if ("".equals(svkeiData.get(JKKSvkeiShosaNGChkConstCC.KIDO_CD)))
		{
			template.setNull(EKK0141C013CBSMsg.KIDO_CD);
		}
		else
		{
			template.set(EKK0141C013CBSMsg.KIDO_CD, svkeiData.get(JKKSvkeiShosaNGChkConstCC.KIDO_CD));
		}

		templateList.add(template);

		return templateList;
	}

	// ANK-1272-00-00 【スマートバリュー】フォロー対応 2013/01/22 START
	/**
	 *<DL>
	 *<DT>処理概要:他事業者割引契約一覧照会（サービス契約番号）
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException リクエストパラメータの取得に失敗した場合
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK2441B003(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException
	{
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK2441B003CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0121C013CBSMsg().getContents());
		
		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaNGChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaNGChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		// テンプレートID
		template.set(EKK2441B003CBSMsg.TEMPLATEID, "EKK2441B003");

		// 共通情報設定処理
		editCommonInfo(param, template);

		// 機能コード
		template.set(EKK2441B003CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO)))
		{
			template.setNull(EKK2441B003CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK2441B003CBSMsg.KEY_SVC_KEI_NO, svkeiData.get(JKKSvkeiShosaNGChkConstCC.SVC_KEI_NO));
		}

		templateList.add(template);

		return templateList;
	}
	// ANK-1272-00-00 【スマートバリュー】フォロー対応 2013/01/22 END

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eo光ネット＞照査NGチェック
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList 照査マップリスト
	 * @param param 業務データ取得・書込用I/F
	 * @return エラー情報
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<Object> editResultRPEKK0091C013(Map<?, ?> msgList, IRequestParameterReadWrite param)
	throws Exception {
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errorList = new ArrayList();
		
		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK0091C013CBSMsg.STATUS);
		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 = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(JKKSvkeiShosaNGChkConstCC.TEMPLATE_ID);

		// サービス契約番号エラー
		if (!template.isNull(EKK0091C013CBSMsg.SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template.getString(EKK0091C013CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// 起動元コードエラー
		if (!template.isNull(EKK0091C013CBSMsg.KIDO_CD_ERR)) {
			if (!inMap.containsKey("kido_cd_err")) {
				inMap.put("kido_cd_err", template.getString(EKK0091C013CBSMsg.KIDO_CD_ERR));
			}
		}
		
		// コントロールマップに設定するエラーデータを生成
		TemplateErrorUtil.getErrorInfo(msgList, errorList);

		return errorList;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eo光TV＞照査NGチェック
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList 照査マップリスト
	 * @param param 業務データ取得・書込用I/F
	 * @return エラー情報
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<Object> editResultRPEKK0101C013(Map<?, ?> msgList, IRequestParameterReadWrite param)
	throws Exception {
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errorList = new ArrayList();
		
		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK0101C013CBSMsg.STATUS);
		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 = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(JKKSvkeiShosaNGChkConstCC.TEMPLATE_ID);

		// サービス契約番号エラー
		if (!template.isNull(EKK0101C013CBSMsg.SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template.getString(EKK0101C013CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// 起動元コードエラー
		if (!template.isNull(EKK0101C013CBSMsg.KIDO_CD_ERR)) {
			if (!inMap.containsKey("kido_cd_err")) {
				inMap.put("kido_cd_err", template.getString(EKK0101C013CBSMsg.KIDO_CD_ERR));
			}
		}
		
		// コントロールマップに設定するエラーデータを生成
		TemplateErrorUtil.getErrorInfo(msgList, errorList);

		return errorList;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eo光電話＞照査NGチェック
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList 照査マップリスト
	 * @param param 業務データ取得・書込用I/F
	 * @return エラー情報
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<Object> editResultRPEKK0111C013(Map<?, ?> msgList, IRequestParameterReadWrite param)
	throws Exception {
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errorList = new ArrayList();
		
		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK0111C013CBSMsg.STATUS);
		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 = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(JKKSvkeiShosaNGChkConstCC.TEMPLATE_ID);

		// サービス契約番号エラー
		if (!template.isNull(EKK0111C013CBSMsg.SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template.getString(EKK0111C013CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// 起動元コードエラー
		if (!template.isNull(EKK0111C013CBSMsg.KIDO_CD_ERR)) {
			if (!inMap.containsKey("kido_cd_err")) {
				inMap.put("kido_cd_err", template.getString(EKK0111C013CBSMsg.KIDO_CD_ERR));
			}
		}
		
		// コントロールマップに設定するエラーデータを生成
		TemplateErrorUtil.getErrorInfo(msgList, errorList);

		return errorList;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eoモバイル＞照査NGチェック
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList 照査NGマップリスト
	 * @param param 業務データ取得・書込用I/F
	 * @return エラー情報
	 * @since 2011.06.07
	 * @version 2011-12-29
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<Object> editResultRPEKK0121C013(Map<?, ?> msgList, IRequestParameterReadWrite param)
	throws Exception {
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errorList = new ArrayList();
		
		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK0121C013CBSMsg.STATUS);
		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 = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(JKKSvkeiShosaNGChkConstCC.TEMPLATE_ID);

		// サービス契約番号エラー
		if (!template.isNull(EKK0121C013CBSMsg.SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template.getString(EKK0121C013CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// 起動元コードエラー
		if (!template.isNull(EKK0121C013CBSMsg.KIDO_CD_ERR)) {
			if (!inMap.containsKey("kido_cd_err")) {
				inMap.put("kido_cd_err", template.getString(EKK0121C013CBSMsg.KIDO_CD_ERR));
			}
		}
		
		// コントロールマップに設定するエラーデータを生成
		TemplateErrorUtil.getErrorInfo(msgList, errorList);

		return errorList;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eoADSL＞照査チェック
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList 照査NGマップリスト
	 * @param param 業務データ取得・書込用I/F
	 * @return エラー情報
	 * @since 2011.06.07
	 * @version 2011-12-29
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<Object> editResultRPEKK0141C013(Map<?, ?> msgList, IRequestParameterReadWrite param)
	throws Exception {
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errorList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK0141C013CBSMsg.STATUS);
		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 = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(JKKSvkeiShosaNGChkConstCC.TEMPLATE_ID);

		// サービス契約番号エラー
		if (!template.isNull(EKK0141C013CBSMsg.SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template.getString(EKK0141C013CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// 起動元コードエラー
		if (!template.isNull(EKK0141C013CBSMsg.KIDO_CD_ERR)) {
			if (!inMap.containsKey("kido_cd_err")) {
				inMap.put("kido_cd_err", template.getString(EKK0141C013CBSMsg.KIDO_CD_ERR));
			}
		}
		
		// コントロールマップに設定するエラーデータを生成
		TemplateErrorUtil.getErrorInfo(msgList, errorList);

		return errorList;
	}

	// ANK-1272-00-00 【スマートバリュー】フォロー対応 2013/01/22 START
	/**
	 *<DL>
	 *<DT>処理概要:他事業者割引契約一覧照会（サービス契約番号）
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList 他事業者割引契約一覧照会（サービス契約番号）結果
	 * @param param 業務データ取得・書込用I/F
	 * @return エラー情報
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<Object> editResultRPEKK2441B003(Map<?, ?> msgList, IRequestParameterReadWrite param)
	throws Exception {
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errorList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK2441B003CBSMsg.STATUS);
		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 = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(JKKSvkeiShosaNGChkConstCC.TEMPLATE_ID);

		// サービス契約番号エラー
		if (!template.isNull(EKK2441B003CBSMsg.KEY_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("key_svc_kei_no_err")) {
				inMap.put("key_svc_kei_no_err", template.getString(EKK2441B003CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}
		
		// コントロールマップに設定するエラーデータを生成
		TemplateErrorUtil.getErrorInfo(msgList, errorList);

		return errorList;
	}
	// ANK-1272-00-00 【スマートバリュー】フォロー対応 2013/01/22 END

	/**
	 * 持ちうるフィールドに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);
	}
	
}
