/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKKojiWctrlOrderSendCC
*	ソースファイル名：JKKKojiWctrlOrderSendCC.java
*	作成者			：FJ
*	日付			：2012年03月19日
*＜機能概要＞
*	工事視聴制御オーダ送信コモンコンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/03/09	FJ			新規作成
*
**********************************************************************/
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.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.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
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.ejb.cbs.cbsmsg.EWC0011C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EWC0011C020CBSMsg;
import eo.ejb.cbs.cbsmsg.EWC0011D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EWC0011D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EWC0011D010CBSMsg2List;
import eo.ejb.cbs.cbsmsg.EWC0011D010CBSMsg3List;
import eo.ejb.cbs.cbsmsg.EWC0011D010CBSMsg4List;
import eo.ejb.cbs.cbsmsg.EWC0011D010CBSMsg5List;
import eo.ejb.cbs.cbsmsg.EWC0011D010CBSMsg6List;
import eo.ejb.cbs.cbsmsg.EWC0101B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EWC0101B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EWC0151B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EWC0151B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EWCA0010001CBSMsg;
import eo.ejb.cbs.cbsmsg.EWCA0010001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EWCA0010003CBSMsg;

/**
 * 工事視聴制御オーダ送信コモンコンポーネント部品です。
 * @author 富士通
 */
public class JKKKojiWctrlOrderSendCC extends AbstractCommonComponent
{
	/** 業務データ取得用I/F */
	IRequestParameterReadWrite cmnParam = null;
	/** セッションハンドル */
	SessionHandle cmnHandle = new SessionHandle();
	
	/**
	 * テンプレートID(EWC0151B010)局一覧照会
	 */
	public static final String TEMPLATE_ID_EWC0151B010 = "EWC0151B010";
	/**
	 * テンプレートID(EWC0101B010)制御エリア一覧照会
	 */
	public static final String TEMPLATE_ID_EWC0101B010 = "EWC0101B010";
	/**
	 * テンプレートID(EWCA0010001)宅内機器一覧照会
	 */
	public static final String TEMPLATE_ID_EWCA0010001 = "EWCA0010001";
	/**
	 * テンプレートID(EWC0011D010)視聴制御オーダ受付
	 */
	public static final String TEMPLATE_ID_EWC0011D010 = "EWC0011D010";
	/**
	 * テンプレートID(EWC0011C010)視聴制御オーダ送信
	 */
	public static final String TEMPLATE_ID_EWC0011C010 = "EWC0011C010";
	/**
	 * テンプレートID(EWC0011C020)視聴制御オーダ結果登録
	 */
	public static final String TEMPLATE_ID_EWC0011C020 = "EWC0011C020";
	/**
	 * テンプレートID(EWCA0010003)STB情報更新
	 */
	public static final String TEMPLATE_ID_EWCA0010003 = "EWCA0010003";
	/**
	 * 視聴制御オーダステータス(正常)
	 */
	public static final String WCTRL_ORDER_STAT = "000";
	/**
	 * 制御タイプコード(リアル)
	 */
	public static final String CTRL_TYPE_CD = "0";
	/**
	 * 課金フラグ(課金する)
	 */
	public static final String CHRG_FLG = "1";
	/**
	 * 再設定フラグ(登録・更新モード)
	 */
	public static final String RE_SETTE_FLG = "0";
	/**
	 * 制御コマンド発行済フラグ(未発行)
	 */
	public static final String CTRL_CMD_HAKKO_ZUMI_FLG = "1";
	/**
	 * ディレイドフラグ(ディレイド対象外)
	 */
	public static final String DLYD_FLG = "1";
	/**
	 * 視聴制御オーダコード(仮登録（アンリンク）・撤去)
	 */
	public static final String WCTRL_ORDER_CD_02 = "02";
	/**
	 * 制御モードコード(日次日替変更要求)
	 */
	public static final String CTRL_MODE_CD_1 = "1";
	/**
	 * 制御結果受信フラグ(未受信)
	 */
	public static final String RSLT_RCV_FLG = "1";
	/**
	 * C-CAS初期化コマンド発行フラグ(発行しない)
	 */
	public static final String CCAS_SHKKA_CMD_HAK_FLG_1 = "1";
	
	/**
	 * 工事視聴制御オーダ送信サービスを実施します。<br>
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite sendKojiWctrlOrder(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// リクエストパラメータをフィールドの変数に設定
		cmnParam = param;
		// セッションハンドルをフィールドの変数に設定
		cmnHandle = handle;
		
		// IF用領域の作成
		List<CAANMsg> inCaanMsgList = null;
		ArrayList<CAANMsg> inMapArray = null;
		Map<?, ?> rsltMap = null;
		HashMap dataMap = null;
		
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(fixedText);
		if (inMap == null)
		{
			return param;
		}
		
		ArrayList stbTekkyoList = (ArrayList)inMap.get("stbTekkyoList");
		if (stbTekkyoList != null && stbTekkyoList.size() > 0)
		{
			// 作業領域の設定
			Map workMap = new HashMap();
			
			String funcCode = (String)inMap.get(JCMConstants.FUNC_CODE_KEY);
			// SIFの実施
			// 初期準備照会系IFの一括実施
			margeSvcIF(inMap, workMap);
			for (int i = 0; i < stbTekkyoList.size(); i++)
			{
				dataMap = (HashMap)stbTekkyoList.get(i);
				// 宅内機器一覧照会
				inMapArray = new ArrayList();
				inCaanMsgList = editInMsg_EWCA0010001CBS(dataMap);
				inMapArray.add((CAANMsg)inCaanMsgList.get(0));
				// IFの実施
				rsltMap = executeSvcIFCmn(inMapArray);
				// 宅内機器一覧照会の結果取得
				editResultRP_EWCA0010001CBS(rsltMap, workMap);
				// 宅内機器一覧照会の処理結果判定
				jdgErrRslt(rsltMap);
				
				// 視聴制御オーダ受付
				inMapArray = new ArrayList();
				inCaanMsgList = editInMsg_EWC0011D010CBS(inMap, workMap, dataMap);
				inMapArray.add(inCaanMsgList.get(0));
				// IFの実施
				rsltMap = executeSvcIFCmn(inMapArray);
				// 下りマッピング処理
				editResultRP_EWC0011D010CBS(rsltMap, workMap);
				// 視聴制御オーダ受付の処理結果判定
				jdgErrRslt(rsltMap);
				
				if ("1".equals(funcCode))
				{
					// 視聴制御オーダ送信
					inMapArray = new ArrayList();
					inCaanMsgList = editInMsg_EWC0011C010CBS(inMap, workMap, dataMap);
					inMapArray.add(inCaanMsgList.get(0));
					// IFの実施
					rsltMap = executeSvcIFCmn(inMapArray);
					// 下りマッピング処理
					editResultRP_EWC0011C010CBS(rsltMap, workMap);
					// 視聴制御オーダ送信の処理結果判定
					jdgErrRslt(rsltMap);
					
					// 視聴制御オーダ結果登録
					inMapArray = new ArrayList();
					inCaanMsgList = editInMsg_EWC0011C020CBS(workMap);
					inMapArray.add(inCaanMsgList.get(0));
					// IFの実施
					rsltMap = executeSvcIFCmn(inMapArray);
					// 下りマッピング処理
					editResultRP_EWC0011C020CBS(rsltMap, workMap);
					// 視聴制御オーダ結果登録の処理結果判定
					jdgErrRslt(rsltMap);
					
					// STB情報更新
					inMapArray = new ArrayList();
					inCaanMsgList = editInMsg_EWCA0010003CBS(workMap, dataMap);
					inMapArray.add(inCaanMsgList.get(0));
					// IFの実施
					rsltMap = executeSvcIFCmn(inMapArray);
					// 下りマッピング処理
					editResultRP_EWCA0010003CBS(rsltMap, workMap);
					// STB情報更新の処理結果判定
					jdgErrRslt(rsltMap);
				}
			}
		}
		return param;
	}
	
	/**
	 * 局一覧照会、制御エリア一覧照会サービスIFのマッピングと実施処理を呼び出します。<br>
	 * <br>
	 * @param inMap 視聴制御オーダ用コンポーネント
	 * @param workMap 作業項目用コンポーネント
	 * @return サービスIFの結果
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void margeSvcIF(HashMap inMap, Map workMap) throws Throwable
	{
		List<CAANMsg> inCaanMsgList = null;
		ArrayList<CAANMsg> inMapArray = new ArrayList();
		Map<?, ?> rsltMap = null;
		
		/* 局一覧照会 */
		// IFの上りマッピング処理
		inCaanMsgList = editInMsg_EWC0151B010CBS(inMap);
		inMapArray.add(inCaanMsgList.get(0));
		// IFの実施
		rsltMap = executeSvcIFCmn(inMapArray);
		// IFの下りマッピング処理
		// 局一覧照会の結果取得
		editResultRP_EWC0151B010CBS(rsltMap, workMap);
		// 局一覧照会の処理結果判定
		jdgErrRslt(rsltMap);
		
		inMapArray = new ArrayList();
		/* 制御エリア一覧照会 */
		// IFの上りマッピング処理
		inCaanMsgList = editInMsg_EWC0101B010CBS(inMap, workMap);
		inMapArray.add(inCaanMsgList.get(0));
		// IFの実施
		rsltMap = executeSvcIFCmn(inMapArray);
		// 制御エリア一覧照会の結果取得
		editResultRP_EWC0101B010CBS(rsltMap, workMap);
		// 制御エリア一覧照会の処理結果判定
		jdgErrRslt(rsltMap);
	}
	
	/**
	 * 局一覧照会用に CAANMsgに必要なデータをマッピングします。<br>
	 * <br>
	 * @param inMap 視聴制御オーダ用コンポーネント
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	private List<CAANMsg> editInMsg_EWC0151B010CBS(HashMap inMap) throws RequestParameterException
	{
		// CAANMsg格納用ArrayList
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		// サービスIF共通の設定処理を実施する
		CAANMsg template = editInMsg(EWC0151B010CBSMsg.class.getName(), TEMPLATE_ID_EWC0151B010, "1");
		
		// 局一覧照会マップ.ＫＥＹ＿局コード → ＫＥＹ＿局コード
		if (inMap == null || inMap.get("wc0151_Key_kyoku_cd") == null || "".equals(inMap.get("wc0151_Key_kyoku_cd")))
		{
			template.setNull(EWC0151B010CBSMsg.KEY_KYOKU_CD);
		}
		else
		{
			template.set(EWC0151B010CBSMsg.KEY_KYOKU_CD, (String)inMap.get("wc0151_Key_kyoku_cd"));
		}
		templateList.add(template);
		return templateList;
	}
	
	/**
	 *局一覧照会の結果をマッピングします。<br>
	 *<br>
	 * @param msgList (I) CAANMsgクラス
	 * @param workMap 作業用項目リスト
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void editResultRP_EWC0151B010CBS(Map<?, ?> msgList, Map workMap) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;
		
		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;
		
		// 作業領域データ設定
		dataMap = (HashMap)workMap.get("WORK");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			workMap.put("WORK", dataMap);
		}
		templateArray = parentTemplate.getCAANMsgList(EWC0151B010CBSMsg.EWC0151B010CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EWC0011D010CBSMsg6List");
		
		if (dataList == null)
		{
			dataList = new ArrayList();
		}
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);
				// 作業項目リスト.局コード明細.局コード ← 局一覧照会明細.局コード
				if (childTemplate.isNull(EWC0151B010CBSMsg1List.KYOKU_CD))
				{
					childMap.put("kyoku_cd", new String());
				}
				else
				{
					childMap.put("kyoku_cd", childTemplate.getString(EWC0151B010CBSMsg1List.KYOKU_CD));
				}
			}
		}
		dataMap.put("EWC0011D010CBSMsg6List", dataList);
		
		// エラー情報の設定
		editErrorInfo_EWC0151B010CBS(templates, (Integer)return_code);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)cmnParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		cmnParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
	}
	
	/**
	 * 局一覧照会のエラー情報をマッピングします。<br>
	 * <br>
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void editErrorInfo_EWC0151B010CBS(CAANMsg[] templates, int returnCode)
	throws Throwable
	{
		CAANMsg template = templates[0];
		//CAANMsg[] templateArray = null;
		int templateStatus = template.getInt(EWC0151B010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap errMap = null;
		
		// ユーザデータ情報
		errMap = (HashMap)cmnParam.getData("KojiWctrlOrderSendMap");
		if (errMap == null)
		{
			errMap = new HashMap();
			cmnParam.setData("KojiWctrlOrderSendMap", errMap);
		}
		// 局一覧照会マップ.ＫＥＹ＿局コード → ＫＥＹ＿局コード のエラー情報返却
		if (!template.isNull(EWC0151B010CBSMsg.KEY_KYOKU_CD_ERR))
		{
			if (!errMap.containsKey("key_kyoku_cd_err"))
			{
				errMap.put("key_kyoku_cd_err", template.getString(EWC0151B010CBSMsg.KEY_KYOKU_CD_ERR));
			}
		}
	}
	
	/**
	 * 制御エリア一覧照会用に CAANMsgに必要なデータをマッピングします。<br>
	 * <br>
	 * @param inMap 視聴制御オーダ用コンポーネント
	 * @param workMap 作業項目用コンポーネント
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	private List<CAANMsg> editInMsg_EWC0101B010CBS(HashMap inMap, Map workMap) throws RequestParameterException
	{
		// CAANMsg格納用ArrayList
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		// サービスIF共通の設定処理を実施する
		CAANMsg template = editInMsg(EWC0101B010CBSMsg.class.getName(), TEMPLATE_ID_EWC0101B010, "1");
		
		// 制御エリア一覧照会マップ.ＫＥＹ＿制御エリアコード → ＫＥＹ＿制御エリアコード
		if (inMap == null || inMap.get("wc0101_key_ctrl_area_cd") == null || "".equals(inMap.get("wc0101_key_ctrl_area_cd")))
		{
			template.setNull(EWC0101B010CBSMsg.KEY_CTRL_AREA_CD);
		}
		else
		{
			template.set(EWC0101B010CBSMsg.KEY_CTRL_AREA_CD, (String)inMap.get("wc0101_key_ctrl_area_cd"));
		}
		// 作業項目情報
		HashMap winMap = null;
		// 作業項目情報設定 
		if (workMap != null)
		{
			winMap = (HashMap)workMap.get("WORK");
		}
		ArrayList winList = null;
		
		// 作業項目リスト.局コード → ＫＥＹ＿局コード
		winList = (ArrayList)winMap.get("EWC0011D010CBSMsg6List");
		if (winList.size() == 0)
		{
			template.setNull(EWC0101B010CBSMsg.KEY_KYOKU_CD);
		}
		else
		{
			HashMap childMap = (HashMap)((ArrayList)(winMap.get("EWC0011D010CBSMsg6List"))).get(0);
			if (childMap == null || childMap.get("kyoku_cd") == null || "".equals(childMap.get("kyoku_cd")))
			{
				template.setNull(EWC0101B010CBSMsg.KEY_KYOKU_CD);
			}
			else
			{
				template.set(EWC0101B010CBSMsg.KEY_KYOKU_CD, (String)childMap.get("kyoku_cd"));
			}
		}
		templateList.add(template);
		return templateList;
	}
	
	/**
	 *制御エリア一覧照会の結果をマッピングします。<br>
	 *<br>
	 * @param msgList (I) CAANMsgクラス 
	 * @param workMap 作業項目用コンポーネント
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void editResultRP_EWC0101B010CBS(Map<?, ?> msgList, Map workMap) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;
		
		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;
		
		// 作業領域データ設定
		dataMap = (HashMap)workMap.get("WORK");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			workMap.put("WORK", dataMap);
		}
		templateArray = parentTemplate.getCAANMsgList(EWC0101B010CBSMsg.EWC0101B010CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EWC0011D010CBSMsg7List");
		
		if (dataList == null)
		{
			dataList = new ArrayList();
		}
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);
				// 作業項目リスト.制御エリア明細.制御エリア ← 制御エリア一覧照会明細.制御エリアコード
				if (childTemplate.isNull(EWC0101B010CBSMsg1List.CTRL_AREA_CD))
				{
					childMap.put("ctrl_area_cd", new String());
				}
				else
				{
					childMap.put("ctrl_area_cd", childTemplate.getString(EWC0101B010CBSMsg1List.CTRL_AREA_CD));
				}
			}
		}
		dataMap.put("EWC0011D010CBSMsg7List", dataList);
		
		// エラー情報の設定
		editErrorInfo_EWC0101B010CBS(templates, (Integer)return_code);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)cmnParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		cmnParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
	}
	
	/**
	 * 制御エリア一覧照会のエラー情報をマッピングします。<br>
	 * <br>
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void editErrorInfo_EWC0101B010CBS(CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EWC0101B010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		int bpStatus = 0;
		Object obj = cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		HashMap errMap = null;
		// ユーザデータ情報
		errMap = (HashMap)cmnParam.getData("KojiWctrlOrderSendMap");
		if (errMap == null)
		{
			errMap = new HashMap();
			cmnParam.setData("KojiWctrlOrderSendMap", errMap);
		}
		// 制御エリア一覧照会マップ.ＫＥＹ＿制御エリアコード → ＫＥＹ＿制御エリアコード のエラー情報返却
		if (!template.isNull(EWC0101B010CBSMsg.KEY_CTRL_AREA_CD_ERR))
		{
			if (!errMap.containsKey("key_ctrl_area_cd_err"))
			{
				errMap.put("key_ctrl_area_cd_err", template.getString(EWC0101B010CBSMsg.KEY_CTRL_AREA_CD_ERR));
			}
		}
		// 制御エリア一覧照会マップ.ＫＥＹ＿局コード → ＫＥＹ＿局コード のエラー情報返却
		if (!template.isNull(EWC0101B010CBSMsg.KEY_KYOKU_CD_ERR))
		{
			if (!errMap.containsKey("key_kyoku_cd_err"))
			{
				errMap.put("key_kyoku_cd_err", template.getString(EWC0101B010CBSMsg.KEY_KYOKU_CD_ERR));
			}
		}
	}
	
	/**
	 * 宅内機器一覧照会用に CAANMsgに必要なデータをマッピングします。<br>
	 * <br>
	 * @param inMap 視聴制御オーダ用コンポーネント
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	private List<CAANMsg> editInMsg_EWCA0010001CBS(HashMap inMap) throws RequestParameterException
	{
		// CAANMsg格納用ArrayList
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		// サービスIF共通の設定処理を実施する
		CAANMsg template = editInMsg(EWCA0010001CBSMsg.class.getName(), TEMPLATE_ID_EWCA0010001, "1");
		
		// 宅内機器一覧照会マップ.ＫＥＹ＿宅内機器型式コード → ＫＥＹ＿宅内機器型式コード
		if (inMap == null || inMap.get("key_tk_mdl_cd") == null || "".equals(inMap.get("key_tk_mdl_cd")))
		{
			template.setNull(EWCA0010001CBSMsg.KEY_TK_MDL_CD);
		}
		else
		{
			template.set(EWCA0010001CBSMsg.KEY_TK_MDL_CD, (String)inMap.get("key_tk_mdl_cd"));
		}
		// 宅内機器一覧照会マップ.ＫＥＹ＿機器製造番号 → ＫＥＹ＿機器製造番号
		if (inMap == null || inMap.get("key_kk_seizo_no") == null || "".equals(inMap.get("key_kk_seizo_no")))
		{
			template.setNull(EWCA0010001CBSMsg.KEY_KK_SEIZO_NO);
		}
		else
		{
			template.set(EWCA0010001CBSMsg.KEY_KK_SEIZO_NO, (String)inMap.get("key_kk_seizo_no"));
		}
		// 宅内機器一覧照会マップ.ＫＥＹ＿STBID → ＫＥＹ＿ＳＴＢＩＤ
		if (inMap == null || inMap.get("key_stbid") == null || "".equals(inMap.get("key_stbid")))
		{
			template.setNull(EWCA0010001CBSMsg.KEY_STBID);
		}
		else
		{
			template.set(EWCA0010001CBSMsg.KEY_STBID, (String)inMap.get("key_stbid"));
		}
		// 宅内機器一覧照会マップ.ＫＥＹ＿宅内機器種別コード → ＫＥＹ＿宅内機器種別コード
		if (inMap == null || inMap.get("key_tk_sbt_cd") == null || "".equals(inMap.get("key_tk_sbt_cd")))
		{
			template.setNull(EWCA0010001CBSMsg.KEY_TK_SBT_CD);
		}
		else
		{
			template.set(EWCA0010001CBSMsg.KEY_TK_SBT_CD, (String)inMap.get("key_tk_sbt_cd"));
		}
		templateList.add(template);
		return templateList;
	}
	
	/**
	 *宅内機器一覧照会の結果をマッピングします。<br>
	 *<br>
	 * @param msgList (I) CAANMsgクラス
	 * @param workMap 作業項目用コンポーネント
	 * @param cnt マッピング位置
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void editResultRP_EWCA0010001CBS(Map<?, ?> msgList, Map workMap) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;
		
		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = new ArrayList();
		
		// 作業領域データ設定
		dataMap = (HashMap)workMap.get("WORK");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			workMap.put("WORK", dataMap);
		}
		templateArray = parentTemplate.getCAANMsgList(EWCA0010001CBSMsg.EWCA0010001CBSMSG1LIST);
		
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);
		        
				// 作業項目リスト.宅内機器一覧照会明細.宅内機器型式コード ← 宅内機器一覧照会明細.ＳＴＢ宅内機器型式コード
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.STB_TK_MDL_CD))
				{
					childMap.put("stb_tk_mdl_cd", new String());
				}
				else
				{
					childMap.put("stb_tk_mdl_cd", childTemplate.getString(EWCA0010001CBSMsg1List.STB_TK_MDL_CD));
				}
				// 作業項目リスト.宅内機器一覧照会明細.機器製造番号 ← 宅内機器一覧照会明細.ＳＴＢ機器製造番号
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.STB_KK_SEIZO_NO))
				{
					childMap.put("stb_kk_seizo_no", new String());
				}
				else
				{
					childMap.put("stb_kk_seizo_no", childTemplate.getString(EWCA0010001CBSMsg1List.STB_KK_SEIZO_NO));
				}
				// 作業項目リスト.宅内機器一覧照会明細.STBID ← 宅内機器一覧照会明細.ＳＴＢＩＤ
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.STBID))
				{
					childMap.put("stbid", new String());
				}
				else
				{
					childMap.put("stbid", childTemplate.getString(EWCA0010001CBSMsg1List.STBID));
				}
				// 作業項目リスト.宅内機器一覧照会明細.STBCAS内臓フラグ ← 宅内機器一覧照会明細.ＳＴＢ内蔵ＣＡＳコード
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.STB_NAIZOCAS_CD))
				{
					childMap.put("stb_naizocas_cd", new String());
				}
				else
				{
					childMap.put("stb_naizocas_cd", childTemplate.getString(EWCA0010001CBSMsg1List.STB_NAIZOCAS_CD));
				}
				// 作業項目リスト.宅内機器一覧照会明細.STBグループID1 ← ＳＴＢ松下用グループＩＤ1
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.STB_MATSU_YO_GRPID1))
				{
					childMap.put("stb_matsu_yo_grpid1", new String());
				}
				else
				{
					childMap.put("stb_matsu_yo_grpid1", childTemplate.getString(EWCA0010001CBSMsg1List.STB_MATSU_YO_GRPID1));
				}
				// 作業項目リスト.宅内機器一覧照会明細.STBグループID2 ← ＳＴＢ松下用グループＩＤ2
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.STB_MATSU_YO_GRPID2))
				{
					childMap.put("stb_matsu_yo_grpid2", new String());
				}
				else
				{
					childMap.put("stb_matsu_yo_grpid2", childTemplate.getString(EWCA0010001CBSMsg1List.STB_MATSU_YO_GRPID2));
				}
				// 作業項目リスト.宅内機器一覧照会明細.STBグループID3 ← ＳＴＢ松下用グループＩＤ3
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.STB_MATSU_YO_GRPID3))
				{
					childMap.put("stb_matsu_yo_grpid3", new String());
				}
				else
				{
					childMap.put("stb_matsu_yo_grpid3", childTemplate.getString(EWCA0010001CBSMsg1List.STB_MATSU_YO_GRPID3));
				}
				// 作業項目リスト.宅内機器一覧照会明細.STBグループID4 ← ＳＴＢ松下用グループＩＤ4
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.STB_MATSU_YO_GRPID4))
				{
					childMap.put("stb_matsu_yo_grpid4", new String());
				}
				else
				{
					childMap.put("stb_matsu_yo_grpid4", childTemplate.getString(EWCA0010001CBSMsg1List.STB_MATSU_YO_GRPID4));
				}
				// 作業項目リスト.宅内機器一覧照会明細.STBグループID5 ← ＳＴＢ松下用グループＩＤ5
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.STB_MATSU_YO_GRPID5))
				{
					childMap.put("stb_matsu_yo_grpid5", new String());
				}
				else
				{
					childMap.put("stb_matsu_yo_grpid5", childTemplate.getString(EWCA0010001CBSMsg1List.STB_MATSU_YO_GRPID5));
				}
				// 作業項目リスト.宅内機器一覧照会明細.STBグループID6 ← ＳＴＢ松下用グループＩＤ6
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.STB_MATSU_YO_GRPID6))
				{
					childMap.put("stb_matsu_yo_grpid6", new String());
				}
				else
				{
					childMap.put("stb_matsu_yo_grpid6", childTemplate.getString(EWCA0010001CBSMsg1List.STB_MATSU_YO_GRPID6));
				}
				// 作業項目リスト.宅内機器一覧照会明細.制御エリアコード ← 宅内機器一覧照会明細.制御エリアコード
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.CTL_AREA_CD))
				{
					childMap.put("ctl_area_cd", new String());
				}
				else
				{
					childMap.put("ctl_area_cd", childTemplate.getString(EWCA0010001CBSMsg1List.CTL_AREA_CD));
				}
				// 作業項目リスト.STB制御用機種コード ← 宅内機器一覧照会明細.ＳＴＢメーカ固有制御機種コード
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.STB_MAKER_KOYU_CTL_MDL_CD))
				{
					childMap.put("stb_maker_koyu_ctl_mdl_cd", new String());
				}
				else
				{
					childMap.put("stb_maker_koyu_ctl_mdl_cd", childTemplate.getString(EWCA0010001CBSMsg1List.STB_MAKER_KOYU_CTL_MDL_CD));
				}
				
				
				// 作業項目リスト.宅内機器一覧照会明細.ＳＴＢ宅内機器更新日付 ← 宅内機器一覧照会明細.ＳＴＢ宅内機器更新日付
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.STB_UPD_DTTM))
				{
					childMap.put("stb_upd_dttm", new String());
				}
				else
				{
					childMap.put("stb_upd_dttm", childTemplate.getString(EWCA0010001CBSMsg1List.STB_UPD_DTTM));
				}
				// 作業項目リスト.宅内機器一覧照会明細.Ｃ−ＣＡＳ宅内機器更新日付 ← 宅内機器一覧照会明細.Ｃ−ＣＡＳ宅内機器更新日付
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.CCAS_CAST_UPD_DTTM))
				{
					childMap.put("ccas_upd_dttm", new String());
				}
				else
				{
					childMap.put("ccas_upd_dttm", childTemplate.getString(EWCA0010001CBSMsg1List.CCAS_CAST_UPD_DTTM));
				}
				// 作業項目リスト.宅内機器一覧照会明細.ＳＴＢステータスコード ← 宅内機器一覧照会明細.ＳＴＢステータスコード
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.STB_STAT_CD))
				{
					childMap.put("stb_stat_cd", new String());
				}
				else
				{
					childMap.put("stb_stat_cd", childTemplate.getString(EWCA0010001CBSMsg1List.STB_STAT_CD));
				}
				// 作業項目リスト.宅内機器一覧照会明細.Ｃ−ＣＡＳカードステータスコード ← 宅内機器一覧照会明細.Ｃ−ＣＡＳカードステータスコード
				if (childTemplate.isNull(EWCA0010001CBSMsg1List.CCAS_CARD_STAT_CD))
				{
					childMap.put("ccas_card_stat_cd", new String());
				}
				else
				{
					childMap.put("ccas_card_stat_cd", childTemplate.getString(EWCA0010001CBSMsg1List.CCAS_CARD_STAT_CD));
				}
			}
		}
		dataMap.put("EWC0011D010CBSMsg8List", dataList);
		dataMap.put("EWCA0010003CBSMsgList", dataList);
		
		// エラー情報の設定
		editErrorInfo_EWCA0010001CBS(templates, (Integer)return_code);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)cmnParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		cmnParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
	}
	
	/**
	 * 宅内機器一覧照会のエラー情報をマッピングします。<br>
	 * <br>
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param cnt マッピング位置
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void editErrorInfo_EWCA0010001CBS(CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EWCA0010001CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		int bpStatus = 0;
		Object obj = cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		HashMap errMap = null;
		// ユーザデータ情報
		errMap = (HashMap)cmnParam.getData("KojiWctrlOrderSendMap");
		if (errMap == null)
		{
			errMap = new HashMap();
			cmnParam.setData("KojiWctrlOrderSendMap", errMap);
		}
		// 宅内機器一覧照会マップ.ＫＥＹ＿宅内機器型式コード → ＫＥＹ＿宅内機器型式コードエラー のエラー情報返却
		if (!template.isNull(EWCA0010001CBSMsg.KEY_TK_MDL_CD_ERR))
		{
			if (!errMap.containsKey("key_tk_mdl_cd_err"))
			{
				errMap.put("key_tk_mdl_cd_err", template.getString(EWCA0010001CBSMsg.KEY_TK_MDL_CD_ERR));
			}
		}
		// 宅内機器一覧照会マップ.ＫＥＹ＿機器製造番号 → ＫＥＹ＿機器製造番号エラー のエラー情報返却
		if (!template.isNull(EWCA0010001CBSMsg.KEY_KK_SEIZO_NO_ERR))
		{
			if (!errMap.containsKey("key_kk_seizo_no_err"))
			{
				errMap.put("key_kk_seizo_no_err", template.getString(EWCA0010001CBSMsg.KEY_KK_SEIZO_NO_ERR));
			}
		}
		// 宅内機器一覧照会マップ.ＫＥＹ＿ＳＴＢＩＤ → ＫＥＹ＿ＳＴＢＩＤエラー のエラー情報返却
		if (!template.isNull(EWCA0010001CBSMsg.KEY_STBID_ERR))
		{
			if (!errMap.containsKey("key_stbid_err"))
			{
				errMap.put("key_stbid_err", template.getString(EWCA0010001CBSMsg.KEY_STBID_ERR));
			}
		}
		// 宅内機器一覧照会マップ.ＫＥＹ＿宅内機器種別コード → ＫＥＹ＿宅内機器種別コードエラー のエラー情報返却
		if (!template.isNull(EWCA0010001CBSMsg.KEY_TK_SBT_CD_ERR))
		{
			if (!errMap.containsKey("key_tk_sbt_cd_err"))
			{
				errMap.put("key_tk_sbt_cd_err", template.getString(EWCA0010001CBSMsg.KEY_TK_SBT_CD_ERR));
			}
		}
	}
	
	/**
	 * 視聴制御オーダ受付用に CAANMsgに必要なデータをマッピングします。<br>
	 * <br>
	 * @param inMap 視聴制御オーダ用コンポーネント
	 * @param workMap 作業項目用コンポーネント
	 * @param dataMap
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	private List<CAANMsg> editInMsg_EWC0011D010CBS(HashMap inMap, Map workMap, HashMap dataMap) throws RequestParameterException
	{
		// CAANMsg格納用ArrayList
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		// サービスIF共通の設定処理を実施する
		CAANMsg template = editInMsg(EWC0011D010CBSMsg.class.getName(), TEMPLATE_ID_EWC0011D010, (String)inMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 視聴制御オーダ受付マップ.視聴制御オーダステータス → 視聴制御オーダステータス
		template.set(EWC0011D010CBSMsg.WCTRL_ORDER_STAT, WCTRL_ORDER_STAT);
		// 視聴制御オーダ受付マップ.視聴制御オーダコード → 視聴制御オーダコード
		template.set(EWC0011D010CBSMsg.WCTRL_ORDER_CD, WCTRL_ORDER_CD_02);
		// 視聴制御オーダ受付マップ.視聴制御依頼処理コード → 視聴制御依頼処理コード
		if (inMap == null || inMap.get("wctrl_req_trn_cd") == null || "".equals(inMap.get("wctrl_req_trn_cd")))
		{
			template.setNull(EWC0011D010CBSMsg.WCTRL_REQ_TRN_CD);
		}
		else
		{
			template.set(EWC0011D010CBSMsg.WCTRL_REQ_TRN_CD, (String)inMap.get("wctrl_req_trn_cd"));
		}
		// 視聴制御オーダ受付マップ.SYSID → ＳＹＳＩＤ
		if (inMap == null || inMap.get("sysid") == null || "".equals(inMap.get("sysid")))
		{
			template.setNull(EWC0011D010CBSMsg.SYSID);
		}
		else
		{
			template.set(EWC0011D010CBSMsg.SYSID, (String)inMap.get("sysid"));
		}
		// 視聴制御オーダ受付マップ.サービス契約番号 → サービス契約番号
		if (inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EWC0011D010CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EWC0011D010CBSMsg.SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}
		// 視聴制御オーダ受付マップ.サービス契約内訳番号 → サービス契約内訳番号
		if (dataMap == null || dataMap.get("svc_kei_ucwk_no") == null || "".equals(dataMap.get("svc_kei_ucwk_no")))
		{
			template.setNull(EWC0011D010CBSMsg.SVC_KEI_UCWK_NO);
		}
		else
		{
			template.set(EWC0011D010CBSMsg.SVC_KEI_UCWK_NO, (String)dataMap.get("svc_kei_ucwk_no"));
		}
		// 視聴制御オーダ受付マップ.制御タイプコード → 制御タイプコード
		template.set(EWC0011D010CBSMsg.CTRL_TYPE_CD, CTRL_TYPE_CD);
		// 視聴制御オーダ受付マップ.制御モードコード → 制御モードコード
		template.set(EWC0011D010CBSMsg.CTRL_MODE_CD, CTRL_MODE_CD_1);
		// 視聴制御オーダ受付マップ.CCASカード番号 → Ｃ−ＣＡＳカード番号
		if (dataMap == null || dataMap.get("ccas_card_no") == null || "".equals(dataMap.get("ccas_card_no")))
		{
			template.setNull(EWC0011D010CBSMsg.CCAS_CARD_NO);
		}
		else
		{
			template.set(EWC0011D010CBSMsg.CCAS_CARD_NO, (String)dataMap.get("ccas_card_no"));
		}
		// 視聴制御オーダ受付マップ.BCASカード番号 → Ｂ−ＣＡＳカード番号
		if (dataMap == null || dataMap.get("bcas_card_no") == null || "".equals(dataMap.get("bcas_card_no")))
		{
			template.setNull(EWC0011D010CBSMsg.BCAS_CARD_NO);
		}
		else
		{
			template.set(EWC0011D010CBSMsg.BCAS_CARD_NO, (String)dataMap.get("bcas_card_no"));
		}
		// 視聴制御オーダ受付マップ.課金フラグ → 課金フラグ
		template.set(EWC0011D010CBSMsg.CHRG_FLG, CHRG_FLG);
		// 視聴制御オーダ受付マップ.STBグループID7 → ＳＴＢグループＩＤ７
		if (inMap == null || inMap.get("wc0011d_stb_grp_id_7") == null || "".equals(inMap.get("wc0011d_stb_grp_id_7")))
		{
			template.setNull(EWC0011D010CBSMsg.STB_GRP_ID_7);
		}
		else
		{
			template.set(EWC0011D010CBSMsg.STB_GRP_ID_7, (String)inMap.get("wc0011d_stb_grp_id_7"));
		}
		// 視聴制御オーダ受付マップ.再設定フラグ → 再設定フラグ
		template.set(EWC0011D010CBSMsg.RE_SETTE_FLG, RE_SETTE_FLG);
		// 視聴制御オーダ受付マップ.実行結果コード → 実行結果コード
		if (inMap == null || inMap.get("wc0011d_run_rslt_cd") == null || "".equals(inMap.get("wc0011d_run_rslt_cd")))
		{
			template.setNull(EWC0011D010CBSMsg.RUN_RSLT_CD);
		}
		else
		{
			template.set(EWC0011D010CBSMsg.RUN_RSLT_CD, (String)inMap.get("wc0011d_run_rslt_cd"));
		}
		// 視聴制御オーダ受付マップ.オーダ受付年月日時分秒 → オーダ受付年月日時分秒
		if (inMap == null || inMap.get("wc0011d_order_rcv_dtm") == null || "".equals(inMap.get("wc0011d_order_rcv_dtm")))
		{
			template.setNull(EWC0011D010CBSMsg.ORDER_UK_DTM);
		}
		else
		{
			template.set(EWC0011D010CBSMsg.ORDER_UK_DTM, (String)inMap.get("wc0011d_order_rcv_dtm"));
		}
		// 視聴制御オーダ受付マップ.制御コマンド発行済フラグ → 制御コマンド発行済フラグ
		template.set(EWC0011D010CBSMsg.CTRL_CMD_HAKKO_ZUMI_FLG, CTRL_CMD_HAKKO_ZUMI_FLG);
		// 視聴制御オーダ受付マップ.制御結果受信フラグ → 制御結果受信フラグ
		template.set(EWC0011D010CBSMsg.RSLT_RCV_FLG, RSLT_RCV_FLG);
		// 視聴制御オーダ受付マップ.ディレイドフラグ → ディレイドフラグ
		template.set(EWC0011D010CBSMsg.DLYD_FLG, DLYD_FLG);
		// 視聴制御オーダ受付マップ.CCAS初期化コマンド発行フラグ → Ｃ−ＣＡＳ初期化コマンド発行フラグ
		template.set(EWC0011D010CBSMsg.CCAS_SHKKA_CMD_HAK_FLG, CCAS_SHKKA_CMD_HAK_FLG_1);
		
		// 作業項目情報
		HashMap winMap = null;
		// 作業項目情報設定 
		if (workMap != null)
		{
			winMap = (HashMap)workMap.get("WORK");
		}
		ArrayList winList = null;
		
		// 作業項目リスト.局コード → 局コード
		winList = (ArrayList)winMap.get("EWC0011D010CBSMsg6List");
		if (winList.size() == 0)
		{
			template.setNull(EWC0011D010CBSMsg.KYOKU_CD);
		}
		else
		{
			HashMap childMap = (HashMap)((ArrayList)(winMap.get("EWC0011D010CBSMsg6List"))).get(0);
			if (childMap == null || childMap.get("kyoku_cd") == null || "".equals(childMap.get("kyoku_cd")))
			{
				template.setNull(EWC0011D010CBSMsg.KYOKU_CD);
			}
			else
			{
				template.set(EWC0011D010CBSMsg.KYOKU_CD, (String)childMap.get("kyoku_cd"));
			}
		}
		// 作業項目リスト.制御エリア → 制御エリアコード
		winList = (ArrayList)winMap.get("EWC0011D010CBSMsg7List");
		if (winList.size() == 0)
		{
			template.setNull(EWC0011D010CBSMsg.CTRL_AREA_CD);
		}
		else
		{
			HashMap childMap = (HashMap)((ArrayList)(winMap.get("EWC0011D010CBSMsg7List"))).get(0);
			if (childMap == null || childMap.get("ctrl_area_cd") == null || "".equals(childMap.get("ctrl_area_cd")))
			{
				template.setNull(EWC0011D010CBSMsg.CTRL_AREA_CD);
			}
			else
			{
				template.set(EWC0011D010CBSMsg.CTRL_AREA_CD, (String)childMap.get("ctrl_area_cd"));
			}
		}
		// 宅内機器情報の設定
		winList = (ArrayList)winMap.get("EWC0011D010CBSMsg8List");
		if (winList.size() == 0)
		{
			template.setNull(EWC0011D010CBSMsg.STB_TAKNKIKI_MODEL_CD);
			template.setNull(EWC0011D010CBSMsg.STB_KIKI_SEIZO_NO);
			template.setNull(EWC0011D010CBSMsg.STB_ID);
			template.setNull(EWC0011D010CBSMsg.STB_CTRL_MODEL_CD);
			template.setNull(EWC0011D010CBSMsg.STB_CAS_NAIZO_FLG);
			template.setNull(EWC0011D010CBSMsg.STB_GRP_ID_1);
			template.setNull(EWC0011D010CBSMsg.STB_GRP_ID_2);
			template.setNull(EWC0011D010CBSMsg.STB_GRP_ID_3);
			template.setNull(EWC0011D010CBSMsg.STB_GRP_ID_4);
			template.setNull(EWC0011D010CBSMsg.STB_GRP_ID_5);
			template.setNull(EWC0011D010CBSMsg.STB_GRP_ID_6);
		}
		else
		{
			HashMap childMap = (HashMap)((ArrayList)(winMap.get("EWC0011D010CBSMsg8List"))).get(0);
			// 作業項目リスト.STB宅内機器型式コード → ＳＴＢ宅内機器型式コード
			if (childMap == null || childMap.get("stb_taknkiki_model_cd") == null || "".equals(childMap.get("stb_taknkiki_model_cd")))
			{
				template.setNull(EWC0011D010CBSMsg.STB_TAKNKIKI_MODEL_CD);
			}
			else
			{
				template.set(EWC0011D010CBSMsg.STB_TAKNKIKI_MODEL_CD, (String)childMap.get("stb_taknkiki_model_cd"));
			}
			// 作業項目リスト.STB機器製造番号 → ＳＴＢ機器製造番号
			if (childMap == null || childMap.get("stb_kiki_seizo_no") == null || "".equals(childMap.get("stb_kiki_seizo_no")))
			{
				template.setNull(EWC0011D010CBSMsg.STB_KIKI_SEIZO_NO);
			}
			else
			{
				template.set(EWC0011D010CBSMsg.STB_KIKI_SEIZO_NO, (String)childMap.get("stb_kiki_seizo_no"));
			}
			// 作業項目リスト.STB制御用機種コード → ＳＴＢ制御用機種コード
			if (childMap == null || childMap.get("stb_maker_koyu_ctl_mdl_cd") == null || "".equals(childMap.get("stb_maker_koyu_ctl_mdl_cd")))
			{
				template.setNull(EWC0011D010CBSMsg.STB_CTRL_MODEL_CD);
			}
			else
			{
				template.set(EWC0011D010CBSMsg.STB_CTRL_MODEL_CD, (String)childMap.get("stb_maker_koyu_ctl_mdl_cd"));
			}
			// 作業項目リスト.STBID → ＳＴＢＩＤ
			if (childMap == null || childMap.get("stbid") == null || "".equals(childMap.get("stbid")))
			{
				template.setNull(EWC0011D010CBSMsg.STB_ID);
			}
			else
			{
				template.set(EWC0011D010CBSMsg.STB_ID, (String)childMap.get("stbid"));
			}
			// 作業項目リスト.STBCAS内蔵フラグ → ＳＴＢＣＡＳ内蔵フラグ
			if (childMap == null || childMap.get("stb_naizocas_cd") == null || "".equals(childMap.get("stb_naizocas_cd")))
			{
				template.setNull(EWC0011D010CBSMsg.STB_CAS_NAIZO_FLG);
			}
			else
			{
				template.set(EWC0011D010CBSMsg.STB_CAS_NAIZO_FLG, (String)childMap.get("stb_naizocas_cd"));
			}
			// 作業項目リスト.STBグループID1 → ＳＴＢグループＩＤ１
			if (childMap == null || childMap.get("stb_matsu_yo_grpid1") == null || "".equals(childMap.get("stb_matsu_yo_grpid1")))
			{
				template.setNull(EWC0011D010CBSMsg.STB_GRP_ID_1);
			}
			else
			{
				template.set(EWC0011D010CBSMsg.STB_GRP_ID_1, (String)childMap.get("stb_matsu_yo_grpid1"));
			}
			// 作業項目リスト.STBグループID2 → ＳＴＢグループＩＤ２
			if (childMap == null || childMap.get("stb_matsu_yo_grpid2") == null || "".equals(childMap.get("stb_matsu_yo_grpid2")))
			{
				template.setNull(EWC0011D010CBSMsg.STB_GRP_ID_2);
			}
			else
			{
				template.set(EWC0011D010CBSMsg.STB_GRP_ID_2, (String)childMap.get("stb_matsu_yo_grpid2"));
			}
			// 作業項目リスト.STBグループID3 → ＳＴＢグループＩＤ３
			if (childMap == null || childMap.get("stb_matsu_yo_grpid3") == null || "".equals(childMap.get("stb_matsu_yo_grpid3")))
			{
				template.setNull(EWC0011D010CBSMsg.STB_GRP_ID_3);
			}
			else
			{
				template.set(EWC0011D010CBSMsg.STB_GRP_ID_3, (String)childMap.get("stb_matsu_yo_grpid3"));
			}
			// 作業項目リスト.STBグループID4 → ＳＴＢグループＩＤ４
			if (childMap == null || childMap.get("stb_matsu_yo_grpid4") == null || "".equals(childMap.get("stb_matsu_yo_grpid4")))
			{
				template.setNull(EWC0011D010CBSMsg.STB_GRP_ID_4);
			}
			else
			{
				template.set(EWC0011D010CBSMsg.STB_GRP_ID_4, (String)childMap.get("stb_matsu_yo_grpid4"));
			}
			// 作業項目リスト.STBグループID5 → ＳＴＢグループＩＤ５
			if (childMap == null || childMap.get("stb_matsu_yo_grpid5") == null || "".equals(childMap.get("stb_matsu_yo_grpid5")))
			{
				template.setNull(EWC0011D010CBSMsg.STB_GRP_ID_5);
			}
			else
			{
				template.set(EWC0011D010CBSMsg.STB_GRP_ID_5, (String)childMap.get("stb_matsu_yo_grpid5"));
			}
			// 作業項目リスト.STBグループID6 → ＳＴＢグループＩＤ６
			if (childMap == null || childMap.get("stb_matsu_yo_grpid6") == null || "".equals(childMap.get("stb_matsu_yo_grpid6")))
			{
				template.setNull(EWC0011D010CBSMsg.STB_GRP_ID_6);
			}
			else
			{
				template.set(EWC0011D010CBSMsg.STB_GRP_ID_6, (String)childMap.get("stb_matsu_yo_grpid6"));
			}
		}
		templateList.add(template);
		return templateList;
	}
	
	/**
	 *視聴制御オーダ受付の結果をマッピングします。<br>
	 *<br>
	 * @param msgList (I) CAANMsgクラス
	 * @param workMap 作業項目リスト
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void editResultRP_EWC0011D010CBS(Map<?, ?> msgList,  Map workMap) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		
		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 作業領域データ設定
		HashMap dataMap = (HashMap)workMap.get("WORK");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			workMap.put("WORK", dataMap);
		}
		// 作業項目リスト.視聴制御オーダ番号 ← 視聴制御オーダ番号
		if (parentTemplate.isNull(EWC0011D010CBSMsg.WCTRL_ORDER_NO))
		{
			dataMap.put("wctrl_order_no", new String());
		}
		else
		{
			dataMap.put("wctrl_order_no", parentTemplate.getString(EWC0011D010CBSMsg.WCTRL_ORDER_NO));
		}
		// 作業項目リスト.制御要求キー ← 制御要求キー
		if (parentTemplate.isNull(EWC0011D010CBSMsg.CTRL_YOKYU_KEY))
		{
			dataMap.put("ctrl_yokyu_key", new String());
		}
		else
		{
			dataMap.put("ctrl_yokyu_key", parentTemplate.getString(EWC0011D010CBSMsg.CTRL_YOKYU_KEY));
		}
		// 視聴制御オーダ受付マップ.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EWC0011D010CBSMsg.UPD_DTM))
		{
			dataMap.put("upd_dtm", new String());
		}
		else
		{
			dataMap.put("upd_dtm", parentTemplate.getString(EWC0011D010CBSMsg.UPD_DTM));
		}
		// エラー情報の設定
		editErrorInfo_EWC0011D010CBS(templates, (Integer)return_code, workMap);
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)cmnParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		cmnParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
	}
	
	/**
	 * 視聴制御オーダ受付のエラー情報をマッピングします。<br>
	 * <br>
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param workMap 作業項目用コンポーネント
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void editErrorInfo_EWC0011D010CBS(CAANMsg[] templates, int returnCode, Map workMap) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EWC0011D010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		int bpStatus = 0;
		Object obj = cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		HashMap errMap = null;
		// ユーザデータ情報
		errMap = (HashMap)cmnParam.getData("KojiWctrlOrderSendMap");
		if (errMap == null)
		{
			errMap = new HashMap();
			cmnParam.setData("KojiWctrlOrderSendMap", errMap);
		}
		// 視聴制御オーダ受付マップ.視聴制御オーダステータス → 視聴制御オーダステータス のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.WCTRL_ORDER_STAT_ERR))
		{
			if (!errMap.containsKey("wctrl_order_stat_err"))
			{
				errMap.put("wctrl_order_stat_err", template.getString(EWC0011D010CBSMsg.WCTRL_ORDER_STAT_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.視聴制御オーダコード → 視聴制御オーダコード のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.WCTRL_ORDER_CD_ERR))
		{
			if (!errMap.containsKey("wctrl_order_cd_err"))
			{
				errMap.put("wctrl_order_cd_err", template.getString(EWC0011D010CBSMsg.WCTRL_ORDER_CD_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.視聴制御依頼処理コード → 視聴制御依頼処理コード のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.WCTRL_REQ_TRN_CD_ERR))
		{
			if (!errMap.containsKey("wctrl_req_trn_cd_err"))
			{
				errMap.put("wctrl_req_trn_cd_err", template.getString(EWC0011D010CBSMsg.WCTRL_REQ_TRN_CD_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.SYSID → ＳＹＳＩＤ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.SYSID_ERR))
		{
			if (!errMap.containsKey("sysid_err"))
			{
				errMap.put("sysid_err", template.getString(EWC0011D010CBSMsg.SYSID_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.サービス契約番号 → サービス契約番号 のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.SVC_KEI_NO_ERR))
		{
			if (!errMap.containsKey("svc_kei_no_err"))
			{
				errMap.put("svc_kei_no_err", template.getString(EWC0011D010CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.SVC_KEI_UCWK_NO_ERR))
		{
			if (!errMap.containsKey("svc_kei_ucwk_no_err"))
			{
				errMap.put("svc_kei_ucwk_no_err", template.getString(EWC0011D010CBSMsg.SVC_KEI_UCWK_NO_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.制御タイプコード → 制御タイプコード のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.CTRL_TYPE_CD_ERR))
		{
			if (!errMap.containsKey("ctrl_type_cd_err"))
			{
				errMap.put("ctrl_type_cd_err", template.getString(EWC0011D010CBSMsg.CTRL_TYPE_CD_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.制御モードコード → 制御モードコード のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.CTRL_MODE_CD_ERR))
		{
			if (!errMap.containsKey("ctrl_mode_cd_err"))
			{
				errMap.put("ctrl_mode_cd_err", template.getString(EWC0011D010CBSMsg.CTRL_MODE_CD_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.CCASカード番号 → Ｃ−ＣＡＳカード番号 のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.CCAS_CARD_NO_ERR))
		{
			if (!errMap.containsKey("ccas_card_no_err"))
			{
				errMap.put("ccas_card_no_err", template.getString(EWC0011D010CBSMsg.CCAS_CARD_NO_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.BCASカード番号 → Ｂ−ＣＡＳカード番号 のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.BCAS_CARD_NO_ERR))
		{
			if (!errMap.containsKey("bcas_card_no_err"))
			{
				errMap.put("bcas_card_no_err", template.getString(EWC0011D010CBSMsg.BCAS_CARD_NO_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.課金フラグ → 課金フラグ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.CHRG_FLG_ERR))
		{
			if (!errMap.containsKey("chrg_flg_err"))
			{
				errMap.put("chrg_flg_err", template.getString(EWC0011D010CBSMsg.CHRG_FLG_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.STBグループID7 → ＳＴＢグループＩＤ７ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.STB_GRP_ID_7_ERR))
		{
			if (!errMap.containsKey("stb_grp_id_7_err"))
			{
				errMap.put("stb_grp_id_7_err", template.getString(EWC0011D010CBSMsg.STB_GRP_ID_7_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.再設定フラグ → 再設定フラグ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.RE_SETTE_FLG_ERR))
		{
			if (!errMap.containsKey("re_sette_flg_err"))
			{
				errMap.put("re_sette_flg_err", template.getString(EWC0011D010CBSMsg.RE_SETTE_FLG_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.実行結果コード → 実行結果コード のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.RUN_RSLT_CD_ERR))
		{
			if (!errMap.containsKey("run_rslt_cd_err"))
			{
				errMap.put("run_rslt_cd_err", template.getString(EWC0011D010CBSMsg.RUN_RSLT_CD_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.オーダ受付年月日時分秒 → オーダ受付年月日時分秒 のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.ORDER_UK_DTM_ERR))
		{
			if (!errMap.containsKey("order_rcv_dtm_err"))
			{
				errMap.put("order_rcv_dtm_err", template.getString(EWC0011D010CBSMsg.ORDER_UK_DTM_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.制御コマンド発行済フラグ → 制御コマンド発行済フラグ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.CTRL_CMD_HAKKO_ZUMI_FLG_ERR))
		{
			if (!errMap.containsKey("ctrl_cmd_hakko_zumi_flg_err"))
			{
				errMap.put("ctrl_cmd_hakko_zumi_flg_err", template.getString(EWC0011D010CBSMsg.CTRL_CMD_HAKKO_ZUMI_FLG_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.制御結果受信フラグ → 制御結果受信フラグ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.RSLT_RCV_FLG_ERR))
		{
			if (!errMap.containsKey("rslt_rcv_flg_err"))
			{
				errMap.put("rslt_rcv_flg_err", template.getString(EWC0011D010CBSMsg.RSLT_RCV_FLG_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.ディレイドフラグ → ディレイドフラグ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.DLYD_FLG_ERR))
		{
			if (!errMap.containsKey("dlyd_flg_err"))
			{
				errMap.put("dlyd_flg_err", template.getString(EWC0011D010CBSMsg.DLYD_FLG_ERR));
			}
		}
		// 視聴制御オーダ受付マップ.CCAS初期化コマンド発行フラグ → Ｃ−ＣＡＳ初期化コマンド発行フラグ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.CCAS_SHKKA_CMD_HAK_FLG_ERR))
		{
			if (!errMap.containsKey("ccas_shkka_cmd_hak_flg_err"))
			{
				errMap.put("ccas_shkka_cmd_hak_flg_err", template.getString(EWC0011D010CBSMsg.CCAS_SHKKA_CMD_HAK_FLG_ERR));
			}
		}
		// 作業項目リスト.局コード → 局コード のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.KYOKU_CD_ERR))
		{
			if (!errMap.containsKey("kyoku_cd_err"))
			{
				errMap.put("kyoku_cd_err", template.getString(EWC0011D010CBSMsg.KYOKU_CD_ERR));
			}
		}
		// 作業項目リスト.制御エリア → 制御エリアコード のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.CTRL_AREA_CD_ERR))
		{
			if (!errMap.containsKey("ctrl_area_cd_err"))
			{
				errMap.put("ctrl_area_cd_err", template.getString(EWC0011D010CBSMsg.CTRL_AREA_CD_ERR));
			}
		}
		// 作業項目リスト.STB宅内機器型式コード → ＳＴＢ宅内機器型式コード のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.STB_TAKNKIKI_MODEL_CD_ERR))
		{
			if (!errMap.containsKey("stb_taknkiki_model_cd_err"))
			{
				errMap.put("stb_taknkiki_model_cd_err", template.getString(EWC0011D010CBSMsg.STB_TAKNKIKI_MODEL_CD_ERR));
			}
		}
		// 作業項目リスト.STB機器製造番号 → ＳＴＢ機器製造番号 のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.STB_KIKI_SEIZO_NO_ERR))
		{
			if (!errMap.containsKey("stb_kiki_seizo_no_err"))
			{
				errMap.put("stb_kiki_seizo_no_err", template.getString(EWC0011D010CBSMsg.STB_KIKI_SEIZO_NO_ERR));
			}
		}
		// 作業項目リスト.STB制御用機種コード → ＳＴＢ制御用機種コード のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.STB_CTRL_MODEL_CD_ERR))
		{
			if (!errMap.containsKey("stb_ctrl_model_cd_err"))
			{
				errMap.put("stb_ctrl_model_cd_err", template.getString(EWC0011D010CBSMsg.STB_CTRL_MODEL_CD_ERR));
			}
		}
		// 作業項目リスト.STBID → ＳＴＢＩＤ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.STB_ID_ERR))
		{
			if (!errMap.containsKey("stb_id_err"))
			{
				errMap.put("stb_id_err", template.getString(EWC0011D010CBSMsg.STB_ID_ERR));
			}
		}
		// 作業項目リスト.STBCAS内蔵フラグ → ＳＴＢＣＡＳ内蔵フラグ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.STB_CAS_NAIZO_FLG_ERR))
		{
			if (!errMap.containsKey("stb_cas_naizo_flg_err"))
			{
				errMap.put("stb_cas_naizo_flg_err", template.getString(EWC0011D010CBSMsg.STB_CAS_NAIZO_FLG_ERR));
			}
		}
		// 作業項目リスト.STBグループID1 → ＳＴＢグループＩＤ１ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.STB_GRP_ID_1_ERR))
		{
			if (!errMap.containsKey("stb_grp_id_1_err"))
			{
				errMap.put("stb_grp_id_1_err", template.getString(EWC0011D010CBSMsg.STB_GRP_ID_1_ERR));
			}
		}
		// 作業項目リスト.STBグループID2 → ＳＴＢグループＩＤ２ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.STB_GRP_ID_2_ERR))
		{
			if (!errMap.containsKey("stb_grp_id_2_err"))
			{
				errMap.put("stb_grp_id_2_err", template.getString(EWC0011D010CBSMsg.STB_GRP_ID_2_ERR));
			}
		}
		// 作業項目リスト.STBグループID3 → ＳＴＢグループＩＤ３ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.STB_GRP_ID_3_ERR))
		{
			if (!errMap.containsKey("stb_grp_id_3_err"))
			{
				errMap.put("stb_grp_id_3_err", template.getString(EWC0011D010CBSMsg.STB_GRP_ID_3_ERR));
			}
		}
		// 作業項目リスト.STBグループID4 → ＳＴＢグループＩＤ４ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.STB_GRP_ID_4_ERR))
		{
			if (!errMap.containsKey("stb_grp_id_4_err"))
			{
				errMap.put("stb_grp_id_4_err", template.getString(EWC0011D010CBSMsg.STB_GRP_ID_4_ERR));
			}
		}
		// 作業項目リスト.STBグループID5 → ＳＴＢグループＩＤ５ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.STB_GRP_ID_5_ERR))
		{
			if (!errMap.containsKey("stb_grp_id_5_err"))
			{
				errMap.put("stb_grp_id_5_err", template.getString(EWC0011D010CBSMsg.STB_GRP_ID_5_ERR));
			}
		}
		// 作業項目リスト.STBグループID6 → ＳＴＢグループＩＤ６ のエラー情報返却
		if (!template.isNull(EWC0011D010CBSMsg.STB_GRP_ID_6_ERR))
		{
			if (!errMap.containsKey("stb_grp_id_6_err"))
			{
				errMap.put("stb_grp_id_6_err", template.getString(EWC0011D010CBSMsg.STB_GRP_ID_6_ERR));
			}
		}
	}
	
	/**
	 * 視聴制御オーダ送信用に CAANMsgに必要なデータをマッピングします。<br>
	 * <br>
	 * @param inMap 視聴制御オーダ用コンポーネント
	 * @param workMap 作業項目用コンポーネント
	 * @param dataMap
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	private List<CAANMsg> editInMsg_EWC0011C010CBS(HashMap inMap, Map workMap, HashMap dataMap) throws RequestParameterException
	{
		// CAANMsg格納用ArrayList
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		// サービスIF共通の設定処理を実施する
		CAANMsg template = editInMsg(EWC0011C010CBSMsg.class.getName(), TEMPLATE_ID_EWC0011C010, "1");
		
		// 視聴制御オーダ送信マップ.視聴制御オーダコード → 視聴制御オーダコード
		template.set(EWC0011C010CBSMsg.WCTRL_ORDER_CD, WCTRL_ORDER_CD_02);
		// 視聴制御オーダ送信マップ.制御タイプ → 制御タイプ
		template.set(EWC0011C010CBSMsg.CTRL_TYPE_CD, CTRL_TYPE_CD);
		// 視聴制御オーダ送信マップ.制御モード → 制御モード
		template.set(EWC0011C010CBSMsg.CTRL_MODE_CD, CTRL_MODE_CD_1);
		// 視聴制御オーダ送信マップ.CCASID → Ｃ−ＣＡＳ　ＩＤ
		if (dataMap == null || dataMap.get("ccas_card_no") == null || "".equals(dataMap.get("ccas_card_no")))
		{
			template.setNull(EWC0011C010CBSMsg.CCAS_CARD_NO);
		}
		else
		{
			template.set(EWC0011C010CBSMsg.CCAS_CARD_NO, (String)dataMap.get("ccas_card_no"));
		}
		// 視聴制御オーダ送信マップ.BCASID → Ｂ−ＣＡＳ　ＩＤ
		if (dataMap == null || dataMap.get("bcas_card_no") == null || "".equals(dataMap.get("bcas_card_no")))
		{
			template.setNull(EWC0011C010CBSMsg.BCAS_CARD_NO);
		}
		else
		{
			template.set(EWC0011C010CBSMsg.BCAS_CARD_NO, (String)dataMap.get("bcas_card_no"));
		}
		// 視聴制御オーダ送信マップ.課金フラグ → 課金フラグ
		template.set(EWC0011C010CBSMsg.CHRG_FLG, CHRG_FLG);
		// 視聴制御オーダ送信マップ.グループＩＤ明細 → グループＩＤ明細
		template.setNull(EWC0011C010CBSMsg.EWC0011D010CBSMSG6LIST);
		// 視聴制御オーダ送信マップ.CCAS初期化コマンド発行有無 → Ｃ−ＣＡＳ初期化コマンド発行有無
		template.set(EWC0011C010CBSMsg.CCAS_SHKKA_CMD_HAK_FLG, CCAS_SHKKA_CMD_HAK_FLG_1);
		// 視聴制御オーダ送信マップ.再設定フラグ → 再設定フラグ
		template.set(EWC0011C010CBSMsg.RE_SETTE_FLG, RE_SETTE_FLG);
		
		// 作業項目情報
		HashMap winMap = null;
		// 作業項目情報を設定
		if (workMap != null)
		{
			winMap = (HashMap)workMap.get("WORK");
		}
		ArrayList winList = null;
		
		// 作業項目リスト.局コード → 局コード
		winList = (ArrayList)winMap.get("EWC0011D010CBSMsg6List");
		if (winList.size() == 0)
		{
			template.setNull(EWC0011C010CBSMsg.KYOKU_CD);
		}
		else
		{
			HashMap childMap = (HashMap)((ArrayList)(winMap.get("EWC0011D010CBSMsg6List"))).get(0);
			if (childMap == null || childMap.get("kyoku_cd") == null || "".equals(childMap.get("kyoku_cd")))
			{
				template.setNull(EWC0011C010CBSMsg.KYOKU_CD);
			}
			else
			{
				template.set(EWC0011C010CBSMsg.KYOKU_CD, (String)childMap.get("kyoku_cd"));
			}
		}
		// 作業項目リスト.制御エリア → 制御エリアコード
		winList = (ArrayList)winMap.get("EWC0011D010CBSMsg7List");
		if (winList.size() == 0)
		{
			template.setNull(EWC0011C010CBSMsg.CTRL_AREA_CD);
		}
		else
		{
			HashMap childMap = (HashMap)((ArrayList)(winMap.get("EWC0011D010CBSMsg7List"))).get(0);
			if (childMap == null || childMap.get("ctrl_area_cd") == null || "".equals(childMap.get("ctrl_area_cd")))
			{
				template.setNull(EWC0011C010CBSMsg.CTRL_AREA_CD);
			}
			else
			{
				template.set(EWC0011C010CBSMsg.CTRL_AREA_CD, (String)childMap.get("ctrl_area_cd"));
			}
		}
		// 作業項目リスト.制御要求キー → 制御要求キー
		if (winMap == null || winMap.get("ctrl_yokyu_key") == null || "".equals(winMap.get("ctrl_yokyu_key")))
		{
			template.setNull(EWC0011C010CBSMsg.CTRL_YOKYU_KEY);
		}
		else
		{
			template.set(EWC0011C010CBSMsg.CTRL_YOKYU_KEY, (String)winMap.get("ctrl_yokyu_key"));
		}
		// 宅内機器情報の設定
		winList = (ArrayList)winMap.get("EWC0011D010CBSMsg8List");
		if (winList.size() == 0)
		{
			template.setNull(EWC0011C010CBSMsg.STB_ID);
			template.setNull(EWC0011C010CBSMsg.STB_KIKI_SEIZO_NO);
			template.setNull(EWC0011C010CBSMsg.STB_CTRL_MODEL_CD);
			template.setNull(EWC0011C010CBSMsg.STB_CAS_NAIZO_FLG);
		}
		else
		{
			HashMap childMap = (HashMap)((ArrayList)(winMap.get("EWC0011D010CBSMsg8List"))).get(0);
			// 作業項目リスト.STBID → ＳＴＢＩＤ
			if (childMap == null || childMap.get("stbid") == null || "".equals(childMap.get("stbid")))
			{
				template.setNull(EWC0011C010CBSMsg.STB_ID);
			}
			else
			{
				template.set(EWC0011C010CBSMsg.STB_ID, (String)childMap.get("stbid"));
			}
			// 作業項目リスト.STB機器製造番号 → 機器製造番号
			if (childMap == null || childMap.get("stb_kiki_seizo_no") == null || "".equals(childMap.get("stb_kiki_seizo_no")))
			{
				template.setNull(EWC0011C010CBSMsg.STB_KIKI_SEIZO_NO);
			}
			else
			{
				template.set(EWC0011C010CBSMsg.STB_KIKI_SEIZO_NO, (String)childMap.get("stb_kiki_seizo_no"));
			}
			// 作業項目リスト.STB制御用機種コード → 制御用機種コード
			if (childMap == null || childMap.get("stb_maker_koyu_ctl_mdl_cd") == null || "".equals(childMap.get("stb_maker_koyu_ctl_mdl_cd")))
			{
				template.setNull(EWC0011C010CBSMsg.STB_CTRL_MODEL_CD);
			}
			else
			{
				template.set(EWC0011C010CBSMsg.STB_CTRL_MODEL_CD, (String)childMap.get("stb_maker_koyu_ctl_mdl_cd"));
			}
			// 作業項目リスト.STBCAS内蔵フラグ → ＳＴＢＣＡＳ内蔵フラグ
			if (childMap == null || childMap.get("stb_naizocas_cd") == null || "".equals(childMap.get("stb_naizocas_cd")))
			{
				template.setNull(EWC0011C010CBSMsg.STB_CAS_NAIZO_FLG);
			}
			else
			{
				template.set(EWC0011C010CBSMsg.STB_CAS_NAIZO_FLG, (String)childMap.get("stb_naizocas_cd"));
			}
		}
		// 作業項目リスト.デジタルティア（Remux）明細 → デジタルティア（Remux）明細
		template.setNull(EWC0011C010CBSMsg.EWC0011D010CBSMSG1LIST);
		// 作業項目リスト.デジタルティア（TM）領域０明細 → デジタルティア（TM）領域０明細
		template.setNull(EWC0011C010CBSMsg.EWC0011D010CBSMSG2LIST);
		// 作業項目リスト.デジタルティア（TM）領域１明細 → デジタルティア（TM）領域１明細
		template.setNull(EWC0011C010CBSMsg.EWC0011D010CBSMSG3LIST);
		// 作業項目リスト.デジタルティア（TM）領域２明細 → デジタルティア（TM）領域２明細
		template.setNull(EWC0011C010CBSMsg.EWC0011D010CBSMSG4LIST);
		// 作業項目リスト.デジタルティア（TM）領域３明細 → デジタルティア（TM）領域３明細
		template.setNull(EWC0011C010CBSMsg.EWC0011D010CBSMSG5LIST);
		templateList.add(template);
		return templateList;
	}
	
	/**
	 *視聴制御オーダ送信の結果をマッピングします。<br>
	 *<br>
	 * @param msgList (I) CAANMsgクラス
	 * @param workMap 作業項目用コンポーネント
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void editResultRP_EWC0011C010CBS(Map<?, ?> msgList, Map workMap) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		
		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		
		// 作業領域データ設定
		dataMap = (HashMap)workMap.get("WORK");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			workMap.put("WORK", dataMap);
		}
		// 作業項目リスト.視聴制御オーダステータス ← 視聴制御オーダステータス
		if (parentTemplate.isNull(EWC0011C010CBSMsg.WCTRL_ORDER_STAT))
		{
			dataMap.put("wctrl_order_stat", new String());
		}
		else
		{
			dataMap.put("wctrl_order_stat", parentTemplate.getString(EWC0011C010CBSMsg.WCTRL_ORDER_STAT));
		}
		// 作業項目リスト.オーダ送信年月日時分秒 ← オーダ送信年月日時分秒
		if (parentTemplate.isNull(EWC0011C010CBSMsg.ORDER_SEND_DTM))
		{
			dataMap.put("order_send_dtm", new String());
		}
		else
		{
			dataMap.put("order_send_dtm", parentTemplate.getString(EWC0011C010CBSMsg.ORDER_SEND_DTM));
		}
		// 作業項目リスト.制御コマンド発行済フラグ ← 制御コマンド発行済フラグ
		if (parentTemplate.isNull(EWC0011C010CBSMsg.CTRL_CMD_HAKKO_ZUMI_FLG))
		{
			dataMap.put("ctrl_cmd_hakko_zumi_flg", new String());
		}
		else
		{
			dataMap.put("ctrl_cmd_hakko_zumi_flg", parentTemplate.getString(EWC0011C010CBSMsg.CTRL_CMD_HAKKO_ZUMI_FLG));
		}
		// エラー情報の設定
		editErrorInfo_EWC0011C010CBS(templates, (Integer)return_code, workMap);
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)cmnParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		cmnParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
	}
	
	/**
	 * 視聴制御オーダ送信のエラー情報をマッピングします。<br>
	 * <br>
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param workMap 作業項目リスト
	 * @throws Throwable
	 * @return 業務データ取得・書込用I/F
	 */
	@SuppressWarnings("unchecked")
	public void editErrorInfo_EWC0011C010CBS(CAANMsg[] templates, int returnCode, Map workMap) throws Throwable
	{
		CAANMsg template = templates[0];
		CAANMsg[] templateArray = null;
		int templateStatus = template.getInt(EWC0011C010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		int bpStatus = 0;
		Object obj = cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		HashMap errMap = null;
		ArrayList errList = null;
		// ユーザデータ情報
		errMap = (HashMap)cmnParam.getData("KojiWctrlOrderSendMap");
		if (errMap == null)
		{
			errMap = new HashMap();
			cmnParam.setData("KojiWctrlOrderSendMap", errMap);
		}
		// 視聴制御オーダ送信マップ.視聴制御オーダコード → 視聴制御オーダコード のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.WCTRL_ORDER_CD_ERR))
		{
			if (!errMap.containsKey("wctrl_order_cd_err"))
			{
				errMap.put("wctrl_order_cd_err", template.getString(EWC0011C010CBSMsg.WCTRL_ORDER_CD_ERR));
			}
		}
		// 視聴制御オーダ送信マップ.再設定フラグ → 再設定フラグ のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.RE_SETTE_FLG_ERR))
		{
			if (!errMap.containsKey("re_sette_flg_err"))
			{
				errMap.put("re_sette_flg_err", template.getString(EWC0011C010CBSMsg.RE_SETTE_FLG_ERR));
			}
		}
		// 視聴制御オーダ送信マップ.制御タイプ → 制御タイプ のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.CTRL_TYPE_CD_ERR))
		{
			if (!errMap.containsKey("ctrl_type_cd_err"))
			{
				errMap.put("ctrl_type_cd_err", template.getString(EWC0011C010CBSMsg.CTRL_TYPE_CD_ERR));
			}
		}
		// 視聴制御オーダ送信マップ.制御モード → 制御モード のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.CTRL_MODE_CD_ERR))
		{
			if (!errMap.containsKey("ctrl_mode_cd_err"))
			{
				errMap.put("ctrl_mode_cd_err", template.getString(EWC0011C010CBSMsg.CTRL_MODE_CD_ERR));
			}
		}
		// 視聴制御オーダ送信マップ.CCASID → Ｃ−ＣＡＳ　ＩＤ のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.CCAS_CARD_NO_ERR))
		{
			if (!errMap.containsKey("ccas_card_no_err"))
			{
				errMap.put("ccas_card_no_err", template.getString(EWC0011C010CBSMsg.CCAS_CARD_NO_ERR));
			}
		}
		// 視聴制御オーダ送信マップ.BCASID → Ｂ−ＣＡＳ　ＩＤ のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.BCAS_CARD_NO_ERR))
		{
			if (!errMap.containsKey("bcas_card_no_err"))
			{
				errMap.put("bcas_card_no_err", template.getString(EWC0011C010CBSMsg.BCAS_CARD_NO_ERR));
			}
		}
		// 視聴制御オーダ送信マップ.課金フラグ → 課金フラグ のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.CHRG_FLG_ERR))
		{
			if (!errMap.containsKey("chrg_flg_err"))
			{
				errMap.put("chrg_flg_err", template.getString(EWC0011C010CBSMsg.CHRG_FLG_ERR));
			}
		}
		errList = (ArrayList)errMap.get("EWC0011D010CBSMsg6List");
		if (errList == null)
		{
			errList = new ArrayList();
			errMap.put("EWC0011D010CBSMsg6List", errList);
		}
		templateArray = template.getCAANMsgList(EWC0011C010CBSMsg.EWC0011D010CBSMSG6LIST);
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				if (i >= errList.size())
				{
					errList.add(new HashMap());
				}
				HashMap childMap = (HashMap)errList.get(i);
				CAANMsg childTemplate = templateArray[i];
				// 視聴制御オーダ送信.グループID明細.グループID → グループID明細.グループID のエラー情報返却
				if (!childTemplate.isNull(EWC0011D010CBSMsg6List.GRP_ID_ERR))
				{
					if (!childMap.containsKey("grp_id_err"))
					{
						childMap.put("grp_id_err", childTemplate.getString(EWC0011D010CBSMsg6List.GRP_ID_ERR));
					}
				}
			}
		}
		if (!template.isNull(EWC0011C010CBSMsg.EWC0011D010CBSMSG6LIST_ERR))
		{
			if (!errMap.containsKey("EWC0011D010CBSMsg6List_err"))
			{
				errMap.put("EWC0011D010CBSMsg6List_err", template.getString(EWC0011C010CBSMsg.EWC0011D010CBSMSG6LIST_ERR));
			}
		}
		// 視聴制御オーダ送信マップ.CCAS初期化コマンド発行有無 → Ｃ−ＣＡＳ初期化コマンド発行有無 のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.CCAS_SHKKA_CMD_HAK_FLG_ERR))
		{
			if (!errMap.containsKey("ccas_shkka_cmd_hak_flg_err"))
			{
				errMap.put("ccas_shkka_cmd_hak_flg_err", template.getString(EWC0011C010CBSMsg.CCAS_SHKKA_CMD_HAK_FLG_ERR));
			}
		}
		// 作業項目リスト.局コード → 局コード のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.KYOKU_CD_ERR))
		{
			if (!errMap.containsKey("kyoku_cd_err"))
			{
				errMap.put("kyoku_cd_err", template.getString(EWC0011C010CBSMsg.KYOKU_CD_ERR));
			}
		}
		// 作業項目リスト.制御エリア → 制御エリア のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.CTRL_AREA_CD_ERR))
		{
			if (!errMap.containsKey("ctrl_area_cd_err"))
			{
				errMap.put("ctrl_area_cd_err", template.getString(EWC0011C010CBSMsg.CTRL_AREA_CD_ERR));
			}
		}
		// 作業項目リスト.制御要求キー → 制御要求キー のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.CTRL_YOKYU_KEY_ERR))
		{
			if (!errMap.containsKey("ctrl_yokyu_key_err"))
			{
				errMap.put("ctrl_yokyu_key_err", template.getString(EWC0011C010CBSMsg.CTRL_YOKYU_KEY_ERR));
			}
		}
		// 作業項目リスト.STBID → ＳＴＢ　ＩＤ のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.STB_ID_ERR))
		{
			if (!errMap.containsKey("stb_id_err"))
			{
				errMap.put("stb_id_err", template.getString(EWC0011C010CBSMsg.STB_ID_ERR));
			}
		}
		// 作業項目リスト.STB機器製造番号 → 製造番号 のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.STB_KIKI_SEIZO_NO_ERR))
		{
			if (!errMap.containsKey("stb_kiki_seizo_no_err"))
			{
				errMap.put("stb_kiki_seizo_no_err", template.getString(EWC0011C010CBSMsg.STB_KIKI_SEIZO_NO_ERR));
			}
		}
		// 作業項目リスト.STB制御用機種コード → 制御用機種コード　　　 のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.STB_CTRL_MODEL_CD_ERR))
		{
			if (!errMap.containsKey("stb_ctrl_model_cd_err"))
			{
				errMap.put("stb_ctrl_model_cd_err", template.getString(EWC0011C010CBSMsg.STB_CTRL_MODEL_CD_ERR));
			}
		}
		// 作業項目リスト.STBCAS内蔵フラグ → Ｃ−ＣＡＳ内蔵タイプＳＴＢ のエラー情報返却
		if (!template.isNull(EWC0011C010CBSMsg.STB_CAS_NAIZO_FLG_ERR))
		{
			if (!errMap.containsKey("stb_cas_naizo_flg_err"))
			{
				errMap.put("stb_cas_naizo_flg_err", template.getString(EWC0011C010CBSMsg.STB_CAS_NAIZO_FLG_ERR));
			}
		}
		errList = (ArrayList)errMap.get("EWC0011D010CBSMsg1List");
		if (errList == null)
		{
			errList = new ArrayList();
			errMap.put("EWC0011D010CBSMsg1List", errList);
		}
		templateArray = template.getCAANMsgList(EWC0011C010CBSMsg.EWC0011D010CBSMSG1LIST);
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				if (i >= errList.size())
				{
					errList.add(new HashMap());
				}
				
				HashMap childMap = (HashMap)errList.get(i);
				CAANMsg childTemplate = templateArray[i];
				
				// 作業項目リスト.デジタルティア（Remux）明細.デジタルティア（Remux）→ デジタルティア（Remux）明細.デジタルティア（Remux） のエラー情報返却
				if (!childTemplate.isNull(EWC0011D010CBSMsg1List.DGTIA_CD1_ERR))
				{
					if (!childMap.containsKey("dgtia_cd1_err"))
					{
						childMap.put("dgtia_cd1_err", childTemplate.getString(EWC0011D010CBSMsg1List.DGTIA_CD1_ERR));
					}
				}
			}
		}
		if (!template.isNull(EWC0011C010CBSMsg.EWC0011D010CBSMSG1LIST_ERR))
		{
			if (!errMap.containsKey("EWC0011D010CBSMsg1List_err"))
			{
				errMap.put("EWC0011D010CBSMsg1List_err", template.getString(EWC0011C010CBSMsg.EWC0011D010CBSMSG1LIST_ERR));
			}
		}
		errList = (ArrayList)errMap.get("EWC0011D010CBSMsg2List");
		if (errList == null)
		{
			errList = new ArrayList();
			errMap.put("EWC0011D010CBSMsg2List", errList);
		}
		templateArray = template.getCAANMsgList(EWC0011C010CBSMsg.EWC0011D010CBSMSG2LIST);
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				if (i >= errList.size())
				{
					errList.add(new HashMap());
				}
				HashMap childMap = (HashMap)errList.get(i);
				CAANMsg childTemplate = templateArray[i];
				
				// 作業項目リスト.デジタルティア（TM）領域０明細.デジタルティア（TM）領域０
				// → デジタルティア（ＴＭ）領域０明細.デジタルティア（ＴＭ）領域０ のエラー情報返却
				if (!childTemplate.isNull(EWC0011D010CBSMsg2List.DGTIA_CD2_ERR))
				{
					if (!childMap.containsKey("dgtia_cd2_err"))
					{
						childMap.put("dgtia_cd2_err", childTemplate.getString(EWC0011D010CBSMsg2List.DGTIA_CD2_ERR));
					}
				}
			}
		}
		if (!template.isNull(EWC0011C010CBSMsg.EWC0011D010CBSMSG2LIST_ERR))
		{
			if (!errMap.containsKey("EWC0011D010CBSMsg2List_err"))
			{
				errMap.put("EWC0011D010CBSMsg2List_err", template.getString(EWC0011C010CBSMsg.EWC0011D010CBSMSG2LIST_ERR));
			}
		}
		errList = (ArrayList)errMap.get("EWC0011D010CBSMsg3List");
		if (errList == null)
		{
			errList = new ArrayList();
			errMap.put("EWC0011D010CBSMsg3List", errList);
		}
		templateArray = template.getCAANMsgList(EWC0011C010CBSMsg.EWC0011D010CBSMSG3LIST);
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				if (i >= errList.size())
				{
					errList.add(new HashMap());
				}
				HashMap childMap = (HashMap)errList.get(i);
				CAANMsg childTemplate = templateArray[i];
				// 作業項目リスト.デジタルティア（TM）領域１明細.デジタルティア（TM）領域１
				// → デジタルティア（ＴＭ）領域１明細.デジタルティア（ＴＭ）領域１ のエラー情報返却
				if (!childTemplate.isNull(EWC0011D010CBSMsg3List.DGTIA_CD3_ERR))
				{
					if (!childMap.containsKey("dgtia_cd3_err"))
					{
						childMap.put("dgtia_cd3_err", childTemplate.getString(EWC0011D010CBSMsg3List.DGTIA_CD3_ERR));
					}
				}
			}
		}
		if (!template.isNull(EWC0011C010CBSMsg.EWC0011D010CBSMSG3LIST_ERR))
		{
			if (!errMap.containsKey("EWC0011D010CBSMsg3List_err"))
			{
				errMap.put("EWC0011D010CBSMsg3List_err", template.getString(EWC0011C010CBSMsg.EWC0011D010CBSMSG3LIST_ERR));
			}
		}
		errList = (ArrayList)errMap.get("EWC0011D010CBSMsg4List");
		if (errList == null)
		{
			errList = new ArrayList();
			errMap.put("EWC0011D010CBSMsg4List", errList);
		}
		templateArray = template.getCAANMsgList(EWC0011C010CBSMsg.EWC0011D010CBSMSG4LIST);
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				if (i >= errList.size())
				{
					errList.add(new HashMap());
				}
				HashMap childMap = (HashMap)errList.get(i);
				CAANMsg childTemplate = templateArray[i];
				// 作業項目リスト.デジタルティア（TM）領域２明細.デジタルティア（TM）領域２
				// → デジタルティア（ＴＭ）領域２明細.デジタルティア（ＴＭ）領域２ のエラー情報返却
				if (!childTemplate.isNull(EWC0011D010CBSMsg4List.DGTIA_CD4_ERR))
				{
					if (!childMap.containsKey("dgtia_cd4_err"))
					{
						childMap.put("dgtia_cd4_err", childTemplate.getString(EWC0011D010CBSMsg4List.DGTIA_CD4_ERR));
					}
				}
			}
		}
		if (!template.isNull(EWC0011C010CBSMsg.EWC0011D010CBSMSG4LIST_ERR))
		{
			if (!errMap.containsKey("EWC0011D010CBSMsg4List_err"))
			{
				errMap.put("EWC0011D010CBSMsg4List_err", template.getString(EWC0011C010CBSMsg.EWC0011D010CBSMSG4LIST_ERR));
			}
		}
		errList = (ArrayList)errMap.get("EWC0011D010CBSMsg5List");
		if (errList == null)
		{
			errList = new ArrayList();
			errMap.put("EWC0011D010CBSMsg5List", errList);
		}
		templateArray = template.getCAANMsgList(EWC0011C010CBSMsg.EWC0011D010CBSMSG5LIST);
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				if (i >= errList.size())
				{
					errList.add(new HashMap());
				}
				HashMap childMap = (HashMap)errList.get(i);
				CAANMsg childTemplate = templateArray[i];
				
				// 作業項目リスト.デジタルティア（TM）領域３明細.デジタルティア（TM）領域３
				// → デジタルティア（ＴＭ）領域３明細.デジタルティア（ＴＭ）領域３ のエラー情報返却
				if (!childTemplate.isNull(EWC0011D010CBSMsg5List.DGTIA_CD5_ERR))
				{
					if (!childMap.containsKey("dgtia_cd5_err"))
					{
						childMap.put("dgtia_cd5_err", childTemplate.getString(EWC0011D010CBSMsg5List.DGTIA_CD5_ERR));
					}
				}
			}
		}
		if (!template.isNull(EWC0011C010CBSMsg.EWC0011D010CBSMSG5LIST_ERR))
		{
			if (!errMap.containsKey("EWC0011D010CBSMsg5List_err"))
			{
				errMap.put("EWC0011D010CBSMsg5List_err", template.getString(EWC0011C010CBSMsg.EWC0011D010CBSMSG5LIST_ERR));
			}
		}
	}
	
	/**
	 * 視聴制御オーダ結果登録用に CAANMsgに必要なデータをマッピングします。<br>
	 * <br>
	 * @param workMap 作業用項目リスト
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	private List<CAANMsg> editInMsg_EWC0011C020CBS(Map workMap) throws RequestParameterException
	{
		// CAANMsg格納用ArrayList
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		// サービスIF共通の設定処理を実施する
		CAANMsg template = editInMsg(EWC0011C020CBSMsg.class.getName(), TEMPLATE_ID_EWC0011C020, "1");
		
		// 作業項目情報
		HashMap winMap = null;
		// 作業項目情報の設定
		if (workMap != null)
		{
			winMap = (HashMap)workMap.get("WORK");
		}
		
		// 作業項目リスト.視聴制御オーダ番号 → 視聴制御オーダ番号
		if (winMap == null || winMap.get("wctrl_order_no") == null || "".equals(winMap.get("wctrl_order_no")))
		{
			template.setNull(EWC0011C020CBSMsg.WCTRL_ORDER_NO);
		}
		else
		{
			template.set(EWC0011C020CBSMsg.WCTRL_ORDER_NO, (String)winMap.get("wctrl_order_no"));
		}
		
		// 作業項目リスト.視聴制御オーダステータス → 視聴制御オーダステータス
		if (winMap == null || winMap.get("wctrl_order_stat") == null || "".equals(winMap.get("wctrl_order_stat")))
		{
			template.setNull(EWC0011C020CBSMsg.WCTRL_ORDER_STAT);
		}
		else
		{
			template.set(EWC0011C020CBSMsg.WCTRL_ORDER_STAT, (String)winMap.get("wctrl_order_stat"));
		}
		
		// 作業項目リスト.オーダ送信年月日時分秒 → オーダ送信年月日時分秒
		if (winMap == null || winMap.get("order_send_dtm") == null || "".equals(winMap.get("order_send_dtm")))
		{
			template.setNull(EWC0011C020CBSMsg.ORDER_SEND_DTM);
		}
		else
		{
			template.set(EWC0011C020CBSMsg.ORDER_SEND_DTM, (String)winMap.get("order_send_dtm"));
		}
		
		// 作業項目リスト.制御コマンド発行済フラグ → 制御コマンド発行済フラグ
		if (winMap == null || winMap.get("ctrl_cmd_hakko_zumi_flg") == null || "".equals(winMap.get("ctrl_cmd_hakko_zumi_flg")))
		{
			template.setNull(EWC0011C020CBSMsg.CTRL_CMD_HAKKO_ZUMI_FLG);
		}
		else
		{
			template.set(EWC0011C020CBSMsg.CTRL_CMD_HAKKO_ZUMI_FLG, (String)winMap.get("ctrl_cmd_hakko_zumi_flg"));
		}
		
		// 作業項目リスト.更新年月日時分秒 → 更新前最終年月日時分秒
		if (winMap == null || winMap.get("upd_dtm") == null || "".equals(winMap.get("upd_dtm")))
		{
			template.setNull(EWC0011C020CBSMsg.LAST_UPD_DTM_BF);
		}
		else
		{
			template.set(EWC0011C020CBSMsg.LAST_UPD_DTM_BF, (String)winMap.get("upd_dtm"));
		}
		templateList.add(template);
		return templateList;
	}
	
	/**
	 *視聴制御オーダ結果登録の結果をマッピングします。<br>
	 *<br>
	 * @param msgList (I) CAANMsgクラス
	 * @param workMap 作業項目用コンポーネント
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void editResultRP_EWC0011C020CBS(Map<?, ?> msgList, Map workMap) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		// エラー情報の設定
		editErrorInfo_EWC0011C020CBS(templates, (Integer)return_code, workMap);
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)cmnParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		cmnParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
	}
	
	/**
	 * 視聴制御オーダ結果登録のエラー情報をマッピングします。<br>
	 * <br>
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param workMap 作業項目リスト
	 * @throws Throwable
	 * @return 業務データ取得・書込用I/F
	 */
	@SuppressWarnings("unchecked")
	public void editErrorInfo_EWC0011C020CBS(CAANMsg[] templates, int returnCode, Map workMap)	 throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EWC0011C020CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		int bpStatus = 0;
		Object obj = cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		HashMap errMap = null;
		// ユーザデータ情報
		errMap = (HashMap)cmnParam.getData("KojiWctrlOrderSendMap");
		if (errMap == null)
		{
			errMap = new HashMap();
			cmnParam.setData("KojiWctrlOrderSendMap", errMap);
		}
		// 作業項目リスト.視聴制御オーダ番号 → 視聴制御オーダ番号 のエラー情報返却
		if (!template.isNull(EWC0011C020CBSMsg.WCTRL_ORDER_NO_ERR))
		{
			if (!errMap.containsKey("wctrl_order_no_err"))
			{
				errMap.put("wctrl_order_no_err", template.getString(EWC0011C020CBSMsg.WCTRL_ORDER_NO_ERR));
			}
		}
		// 作業項目リスト.視聴制御オーダステータス → 視聴制御オーダステータス のエラー情報返却
		if (!template.isNull(EWC0011C020CBSMsg.WCTRL_ORDER_STAT_ERR))
		{
			if (!errMap.containsKey("wctrl_order_stat_err"))
			{
				errMap.put("wctrl_order_stat_err", template.getString(EWC0011C020CBSMsg.WCTRL_ORDER_STAT_ERR));
			}
		}
		// 作業項目リスト.オーダ送信年月日時分秒 → オーダ送信年月日時分秒 のエラー情報返却
		if (!template.isNull(EWC0011C020CBSMsg.ORDER_SEND_DTM_ERR))
		{
			if (!errMap.containsKey("order_send_dtm_err"))
			{
				errMap.put("order_send_dtm_err", template.getString(EWC0011C020CBSMsg.ORDER_SEND_DTM_ERR));
			}
		}
		// 作業項目リスト.制御コマンド発行済フラグ → 制御コマンド発行済フラグ のエラー情報返却
		if (!template.isNull(EWC0011C020CBSMsg.CTRL_CMD_HAKKO_ZUMI_FLG_ERR))
		{
			if (!errMap.containsKey("ctrl_cmd_hakko_zumi_flg_err"))
			{
				errMap.put("ctrl_cmd_hakko_zumi_flg_err", template.getString(EWC0011C020CBSMsg.CTRL_CMD_HAKKO_ZUMI_FLG_ERR));
			}
		}
		// 作業項目リスト.更新前最終年月日時分秒 → 更新前最終年月日時分秒 のエラー情報返却
		if (!template.isNull(EWC0011C020CBSMsg.LAST_UPD_DTM_BF_ERR))
		{
			if (!errMap.containsKey("last_upd_dtm_bf_err"))
			{
				errMap.put("last_upd_dtm_bf_err", template.getString(EWC0011C020CBSMsg.LAST_UPD_DTM_BF_ERR));
			}
		}
	}
	
	/**
	 * STB情報更新用に CAANMsgに必要なデータをマッピングします。<br>
	 * <br>
	 * @param workMap 作業用項目リスト
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	private List<CAANMsg> editInMsg_EWCA0010003CBS(Map workMap, Map dataMap) throws RequestParameterException
	{
		// CAANMsg格納用ArrayList
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		// サービスIF共通の設定処理を実施する
		CAANMsg template = editInMsg(EWCA0010003CBSMsg.class.getName(), TEMPLATE_ID_EWCA0010003, "1");
		
		// 作業項目情報
		HashMap winMap = null;
		// 作業項目情報の設定
		if (workMap != null)
		{
			winMap = (HashMap)workMap.get("WORK");
		}
		ArrayList winList = (ArrayList)winMap.get("EWCA0010003CBSMsgList");
		if (winList.size() != 0)
		{
			HashMap childMap = (HashMap)((ArrayList)(winMap.get("EWCA0010003CBSMsgList"))).get(0);
			// 作業項目リスト.STB宅内機器型式コード → STB宅内機器型式コード
			if (childMap == null || childMap.get("stb_tk_mdl_cd") == null || "".equals(childMap.get("stb_tk_mdl_cd")))
			{
				template.setNull(EWCA0010003CBSMsg.STB_TK_MDL_CD);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.STB_TK_MDL_CD, (String)childMap.get("stb_tk_mdl_cd"));
			}
			
			// 作業項目リスト.STB機器製造番号 → STB機器製造番号
			if (childMap == null || childMap.get("stb_kk_seizo_no") == null || "".equals(childMap.get("stb_kk_seizo_no")))
			{
				template.setNull(EWCA0010003CBSMsg.STB_KK_SEIZO_NO);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.STB_KK_SEIZO_NO, (String)childMap.get("stb_kk_seizo_no"));
			}
			
			// 作業項目リスト.STB宅内機器種別コード → STB宅内機器種別コード
			if (dataMap == null || dataMap.get("stb_tk_sbt_cd") == null || "".equals(dataMap.get("stb_tk_sbt_cd")))
			{
				template.setNull(EWCA0010003CBSMsg.STB_TK_SBT_CD);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.STB_TK_SBT_CD, (String)dataMap.get("stb_tk_sbt_cd"));
			}
			// 作業項目リスト.STB宅内機器更新日付 → STB宅内機器更新日付
			if (childMap == null || childMap.get("stb_upd_dttm") == null || "".equals(childMap.get("stb_upd_dttm")))
			{
				template.setNull(EWCA0010003CBSMsg.STB_UPD_DTTM);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.STB_UPD_DTTM, (String)childMap.get("stb_upd_dttm"));
			}
			// 作業項目リスト.C-CAS宅内機器更新日時 → C-CAS宅内機器更新日時
			if (childMap == null || childMap.get("ccas_upd_dttm") == null || "".equals(childMap.get("ccas_upd_dttm")))
			{
				template.setNull(EWCA0010003CBSMsg.CCAS_UPD_DTTM);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.CCAS_UPD_DTTM, (String)childMap.get("ccas_upd_dttm"));
			}
			// 作業項目リスト.STBステータスコード → STBステータスコード
			if (childMap == null || childMap.get("stb_stat_cd") == null || "".equals(childMap.get("stb_stat_cd")))
			{
				template.setNull(EWCA0010003CBSMsg.STB_STAT_CD);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.STB_STAT_CD, (String)childMap.get("stb_stat_cd"));
			}
			// 作業項目リスト.STB松下用グループID1 → STB松下用グループID1
			if (childMap == null || childMap.get("stb_matsu_yo_grpid1") == null || "".equals(childMap.get("stb_matsu_yo_grpid1")))
			{
				template.setNull(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID1);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID1, (String)childMap.get("stb_matsu_yo_grpid1"));
			}
			// 作業項目リスト.STB松下用グループID2 → STB松下用グループID2
			if (childMap == null || childMap.get("stb_matsu_yo_grpid2") == null || "".equals(childMap.get("stb_matsu_yo_grpid2")))
			{
				template.setNull(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID2);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID2, (String)childMap.get("stb_matsu_yo_grpid2"));
			}
			// 作業項目リスト.STB松下用グループID3 → STB松下用グループID3
			if (childMap == null || childMap.get("stb_matsu_yo_grpid3") == null || "".equals(childMap.get("stb_matsu_yo_grpid3")))
			{
				template.setNull(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID3);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID3, (String)childMap.get("stb_matsu_yo_grpid3"));
			}
			// 作業項目リスト.STB松下用グループID4 → STB松下用グループID4
			if (childMap == null || childMap.get("stb_matsu_yo_grpid4") == null || "".equals(childMap.get("stb_matsu_yo_grpid4")))
			{
				template.setNull(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID4);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID4, (String)childMap.get("stb_matsu_yo_grpid4"));
			}
			// 作業項目リスト.STB松下用グループID5 → STB松下用グループID5
			if (childMap == null || childMap.get("stb_matsu_yo_grpid5") == null || "".equals(childMap.get("stb_matsu_yo_grpid5")))
			{
				template.setNull(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID5);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID5, (String)childMap.get("stb_matsu_yo_grpid5"));
			}
			// 作業項目リスト.STB松下用グループID6 → STB松下用グループID6
			if (childMap == null || childMap.get("stb_matsu_yo_grpid6") == null || "".equals(childMap.get("stb_matsu_yo_grpid6")))
			{
				template.setNull(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID6);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID6, (String)childMap.get("stb_matsu_yo_grpid6"));
			}
			// 作業項目リスト.制御エリアコード → 制御エリアコード
			if (childMap == null || childMap.get("ctl_area_cd") == null || "".equals(childMap.get("ctl_area_cd")))
			{
				template.setNull(EWCA0010003CBSMsg.CTL_AREA_CD);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.CTL_AREA_CD, (String)childMap.get("ctl_area_cd"));
			}
			// 作業項目リスト.C-CASカードステータスコード → C-CASカードステータスコード
			if (childMap == null || childMap.get("ccas_card_stat_cd") == null || "".equals(childMap.get("ccas_card_stat_cd")))
			{
				template.setNull(EWCA0010003CBSMsg.CCAS_CARD_STAT_CD);
			}
			else
			{
				template.set(EWCA0010003CBSMsg.CCAS_CARD_STAT_CD, (String)childMap.get("ccas_card_stat_cd"));
			}
		}
		templateList.add(template);
		return templateList;
	}
	
	/**
	 * STB情報更新の結果をマッピングします。<br>
	 * <br>
	 * @param msgList (I) CAANMsgクラス
	 * @param workMap 作業項目用コンポーネント
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void editResultRP_EWCA0010003CBS(Map<?, ?> msgList, Map workMap) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		/* 業務データ設定 */
		HashMap dataMap = (HashMap)cmnParam.getData("KojiWctrlOrderSendMap");
		if (dataMap == null) {
			dataMap = new HashMap();
			cmnParam.setData("KojiWctrlOrderSendMap", dataMap);
		}
		// ＳＴＢ情報更新マップ.エラーレベル ← エラーレベル
		if (parentTemplate.isNull(EWCA0010003CBSMsg.ERROR_LEVEL)) {
			dataMap.put("error_level", new String());
		} else {
			dataMap.put("error_level", parentTemplate.getString(EWCA0010003CBSMsg.ERROR_LEVEL));
		}
		// ＳＴＢ情報更新マップ.リターンコード ← リターンコード
		if (parentTemplate.isNull(EWCA0010003CBSMsg.RETURN_CD)) {
			dataMap.put("return_Cd", new String());
		} else {
			dataMap.put("return_Cd", parentTemplate.getString(EWCA0010003CBSMsg.RETURN_CD));
		}
		// ＳＴＢ情報更新マップ.リターンメッセージ ← リターンメッセージ
		if (parentTemplate.isNull(EWCA0010003CBSMsg.RETURN_MESSAGE)) {
			dataMap.put("return_Message", new String());
		} else {
			dataMap.put("return_Message", parentTemplate.getString(EWCA0010003CBSMsg.RETURN_MESSAGE));
		}
		
		// エラー情報の設定
		editErrorInfo_EWCA0010003CBS(templates, (Integer)return_code, workMap);
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)cmnParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		cmnParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
	}
	
	/**
	 * STB情報更新のエラー情報をマッピングします。<br>
	 * <br>
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param workMap 作業項目リスト
	 * @throws Throwable
	 * @return 業務データ取得・書込用I/F
	 */
	@SuppressWarnings("unchecked")
	public void editErrorInfo_EWCA0010003CBS(CAANMsg[] templates, int returnCode, Map workMap)	 throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EWCA0010003CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		int bpStatus = 0;
		Object obj = cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)cmnParam.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			cmnParam.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		HashMap errMap = null;
		// ユーザデータ情報
		errMap = (HashMap)cmnParam.getData("KojiWctrlOrderSendMap");
		if (errMap == null)
		{
			errMap = new HashMap();
			cmnParam.setData("KojiWctrlOrderSendMap", errMap);
		}
		// 作業項目リスト.STB宅内機器型式コード → STB宅内機器型式コード のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.STB_TK_MDL_CD_ERR))
		{
			if (!errMap.containsKey("stb_tk_mdl_cd_err"))
			{
				errMap.put("stb_tk_mdl_cd_err", template.getString(EWCA0010003CBSMsg.STB_TK_MDL_CD_ERR));
			}
		}
		// 作業項目リスト.STB機器製造番号 → STB機器製造番号 のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.STB_KK_SEIZO_NO_ERR))
		{
			if (!errMap.containsKey("stb_kk_seizo_no_err"))
			{
				errMap.put("stb_kk_seizo_no_err", template.getString(EWCA0010003CBSMsg.STB_KK_SEIZO_NO_ERR));
			}
		}
		// 作業項目リスト.STB宅内機器種別コード → STB宅内機器種別コード のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.STB_TK_SBT_CD_ERR))
		{
			if (!errMap.containsKey("stb_tk_sbt_cd_err"))
			{
				errMap.put("stb_tk_sbt_cd_err", template.getString(EWCA0010003CBSMsg.STB_TK_SBT_CD_ERR));
			}
		}
		// 作業項目リスト.STB宅内機器更新日付 → STB宅内機器更新日付 のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.STB_UPD_DTTM_ERR))
		{
			if (!errMap.containsKey("stb_upd_dttm_err"))
			{
				errMap.put("stb_upd_dttm_err", template.getString(EWCA0010003CBSMsg.STB_UPD_DTTM_ERR));
			}
		}
		// 作業項目リスト.C-CAS宅内機器更新日時 → C-CAS宅内機器更新日時 のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.CCAS_UPD_DTTM_ERR))
		{
			if (!errMap.containsKey("ccas_upd_dttm_err"))
			{
				errMap.put("ccas_upd_dttm_err", template.getString(EWCA0010003CBSMsg.CCAS_UPD_DTTM_ERR));
			}
		}
		// 作業項目リスト.STBステータスコード → STBステータスコード のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.STB_STAT_CD_ERR))
		{
			if (!errMap.containsKey("stb_stat_cd_err"))
			{
				errMap.put("stb_stat_cd_err", template.getString(EWCA0010003CBSMsg.STB_STAT_CD_ERR));
			}
		}
		// 作業項目リスト.STB松下用グループID1 → STB松下用グループID1 のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID1_ERR))
		{
			if (!errMap.containsKey("stb_matsu_yo_grpid1_err"))
			{
				errMap.put("stb_matsu_yo_grpid1_err", template.getString(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID1_ERR));
			}
		}
		// 作業項目リスト.STB松下用グループID2 → STB松下用グループID2 のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID2_ERR))
		{
			if (!errMap.containsKey("stb_matsu_yo_grpid2_err"))
			{
				errMap.put("stb_matsu_yo_grpid2_err", template.getString(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID2_ERR));
			}
		}
		// 作業項目リスト.STB松下用グループID3 → STB松下用グループID3 のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID3_ERR))
		{
			if (!errMap.containsKey("stb_matsu_yo_grpid3_err"))
			{
				errMap.put("stb_matsu_yo_grpid3_err", template.getString(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID3_ERR));
			}
		}
		// 作業項目リスト.STB松下用グループID4 → STB松下用グループID4 のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID4_ERR))
		{
			if (!errMap.containsKey("stb_matsu_yo_grpid4_err"))
			{
				errMap.put("stb_matsu_yo_grpid4_err", template.getString(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID4_ERR));
			}
		}
		// 作業項目リスト.STB松下用グループID5 → STB松下用グループID5 のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID5_ERR))
		{
			if (!errMap.containsKey("stb_matsu_yo_grpid5_err"))
			{
				errMap.put("stb_matsu_yo_grpid5_err", template.getString(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID5_ERR));
			}
		}
		// 作業項目リスト.STB松下用グループID6 → STB松下用グループID6 のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID6_ERR))
		{
			if (!errMap.containsKey("stb_matsu_yo_grpid6_err"))
			{
				errMap.put("stb_matsu_yo_grpid6_err", template.getString(EWCA0010003CBSMsg.STB_MATSU_YO_GRPID6_ERR));
			}
		}
		// 作業項目リスト.制御エリアコード → 制御エリアコード のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.CTL_AREA_CD_ERR))
		{
			if (!errMap.containsKey("ctl_area_cd_err"))
			{
				errMap.put("ctl_area_cd_err", template.getString(EWCA0010003CBSMsg.CTL_AREA_CD_ERR));
			}
		}
		// 作業項目リスト.C-CASカードステータスコード → C-CASカードステータスコード のエラー情報返却
		if (!template.isNull(EWCA0010003CBSMsg.CCAS_CARD_STAT_CD_ERR))
		{
			if (!errMap.containsKey("ccas_card_stat_cd_err"))
			{
				errMap.put("ccas_card_stat_cd_err", template.getString(EWCA0010003CBSMsg.CCAS_CARD_STAT_CD_ERR));
			}
		}
	}
	
	/**
	 * IFの戻り値を判定し、結果が異常の場合、SCCallExceptionを発生させます。
	 * @param result CAANMsgクラス
	 * @throws Throwable
	 */
	private void jdgErrRslt(Map<?, ?> result) throws Throwable
	{
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[0];
		
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = result.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = msg.getInt(JCMConstants.STATUS_INT_KEY);
		Integer zero = 0;
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if (!("0".equals(rtnCode) && zero.equals(status)))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
	}
	
	/**
	 * サービスIFを呼び出し、その結果を取得します。
	 * @param caanList サービスIFリスト
	 * @return templateList 結果が格納されたリスト
	 * @throws Throwable 
	 */
	private Map<?, ?> executeSvcIFCmn(ArrayList<CAANMsg> caanList) throws Throwable
	{ 
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		CAANMsg[] caan = new CAANMsg[caanList.size()];
		int count = 0;
		for(CAANMsg template : caanList)
		{
			caan[count++] = template;
		}
		
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, cmnParam.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, cmnParam.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, cmnParam.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, cmnParam.getCallType());
		
		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, cmnParam.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, cmnParam.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, cmnParam.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, cmnParam.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, caan);
		
		// SC呼出実行
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> rsltMap = scCall.run(paramMap, cmnHandle);
		return rsltMap;
	}
	
	/**
	 * 共通の設定項目を設定します。<br>
	 * <br>
	 * @param schemaClassNm スキーマクラス名
	 * @param templateID テンプレートID
	 * @param funcCd 機能ID
	 * @return CAANMsgクラス
	 * @throws RequestParameterException 
	 */
	private CAANMsg editInMsg(String schemaClassNm, String templateID, String funcCd) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(schemaClassNm);
		// テンプレートID
		template.set(JCMConstants.TEMPLATE_ID_KEY, templateID);
		// 機能コード
		template.set(JCMConstants.FUNC_CODE_KEY, funcCd);
		// オペレータID
		Object operatorId = cmnParam.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = cmnParam.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = cmnParam.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		return template;
	}
	
	/**
	 * 視聴制御CC処理チェック処理です。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます。
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	throws RequestParameterException
	{
		// リクエストパラメータをフィールドの変数に設定
		cmnParam = param;
		// セッションハンドルをフィールドの変数に設定
		cmnHandle = handle;
		
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = (CAANMsg)templateList.get(0);
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングします。（共通用）
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @exception RequestParameterExceptionがスローされます。
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)
	throws RequestParameterException
	{
		return param;
	}
}