/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKKojiakGetKikiInfoCC
*	ソースファイル名：JKKKojiakGetKikiInfoCC.java
*	作成者			：FJ
*	日付			：2013年03月30日
*＜機能概要＞
*	工事案件機器情報取得CCの共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v5.00.00	2012/10/29	FJ			新規作成
*	v5.00.01	2013/03/31	FJ）中井	【IT1-2013-0000579】対応
*	v5.00.02	2013/05/04	FJ）中井	【IT1-2013-0001141】対応
*	v5.00.03	2013/05/24	FJ）中井	【SG1-2013-0000035】対応
*	v5.00.04	2013/06/14	FJ）中井	【IT2-2013-0000523】対応
*	v5.00.05	2013/06/14	FJ）中井	【IT2-2013-0000522】対応
*	v5.00.06	2013/08/02	FJ）中井	【LT-2013-0000676】対応
*	v5.00.07	2013/08/02	FJ）中井	【OM-2013-0000582】対応
*	v5.00.08	2013/10/27	FJ）中井	【OM-2013-0003514】対応
*	v7.00.00	2014/01/12	FJ）中井	【IT2-2013-0000006】対応
*	v7.00.01	2014/01/29	FJ）中井	【OM-2014-0000356】対応
*   v7.00.02	2014/01/29	FJ) 中井	【IT1-2014-0000050】対応
*	v11.00.00	2014/11/17	FJ) 藤田	【OM-2014-0003565】マンション（ネット＋電話）の撤去解約でサービス契約_工事案件が不正
*   v23.00.00	2016/01/04	FJ) 栗秋	【ANK-2612-00-00】 １０Ｇコース導入対応
*	v51.00.00	2020/10/20	FJ) 吉村	【ANK-3949-00-00】Netflix導入対応（STEP1）
*   v73.00.00	2024/10/30	 FJ) 森     【ANK-4493-00-00】【eo定期】 光配線マンションのコースアップ対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.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.EDK0011B080CBSMsg;
import eo.ejb.cbs.cbsmsg.EDK0011B080CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0241B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0241B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0241B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0241B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1651B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1651B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0021A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0021A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0081B020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0081B020CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0141B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0141B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg1List;

/**
 * 
 * @author 909488
 *
 */
public class JKKKojiakGetKikiInfoCC extends AbstractCommonComponent
{

	/** テンプレートID(EKK0251B001)サービス契約回線内訳一覧照会（サービス契約番号）*/
	private static final String TEMPLATE_ID_EKK0251B001 = "EKK0251B001";
	/** テンプレートID(EKK0251A010)サービス契約回線内訳一意照会 */
	private static final String TEMPLATE_ID_EKK0251A010 = "EKK0251A010";
	/** テンプレートID(EKU0011A010)工事案件一意照会 */
	private static final String TEMPLATE_ID_EKU0011A010 = "EKU0011A010";
	/** テンプレートID(EKU0021A010)工事案件＜eo光ネット＞一意照会 */
	private static final String TEMPLATE_ID_EKU0021A010 = "EKU0021A010";
	/** テンプレートID(EKK1651B001)機器自動交換対象型式一覧照会（複合検索） */
	private static final String TEMPLATE_ID_EKK1651B001 = "EKK1651B001";
	/** テンプレートID(EKU0141B010)工事案件対象宅内機器一覧照会 */
	private static final String TEMPLATE_ID_EKU0141B010 = "EKU0141B010";
	/** テンプレートID(EZM0411A010)宅内機器型式一意照会 */
	private static final String TEMPLATE_ID_EZM0411A010 = "EZM0411A010";
	/** 業務パラメータ管理一意照会 */
	private static final String TEMPLATE_ID_EZM0321A010 = "EZM0321A010";
	
	 /** テンプレートID(EKK0241B003)回線対象サービス契約一覧照会（サービス契約番号 */
	private static final String TEMPLATE_ID_EKK0241B003 = "EKK0241B003";
	/** テンプレートID(EKK0241B002)サービス契約_工事案件一覧照会(基本工事取得) */
	private static final String TEMPLATE_ID_EKU0081B020 = "EKU0081B020";
	/** * テンプレートID(EKK0081A010)サービス契約一意照会 */
	private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";
	/* ++++++++++ v5.00.05 追加開始 ++++++++++ */
	 /** テンプレートID(EKK0241B002)回線対象サービス契約一覧照会 */
	private static final String TEMPLATE_ID_EKK0241B002 = "EKK0241B002";
	/* ++++++++++ v5.00.05 追加終了 ++++++++++ */
	/* ++++++++++ v5.00.08 追加開始 ++++++++++ */
	/** 契約機器配送対象物品一覧照会 */
	private static final String TEMPLATE_ID_EDK0011B080 = "EDK0011B080";
	/* ++++++++++ v5.00.08 追加終了 ++++++++++ */

	/** 業務パラメータ（宅内機器種別コードルーター機器機器判定） */
	private static final String KK_KOJIHI_YOKSI = "KK_KOJIHI_YOKSI";
	
	/** 異動区分（E-PON,G-PON） */
	public static final String IDO_DIV_VALUE_00067 = "00067";
	/** 異動区分（撤去（解約）） */
	public static final String IDO_DIV_VALUE_00006 = "00006";
	
	/** 料金コースコード（A03） */
	private static final String PCRS_CD_A03 = "A03";
	/** 料金コースコード（A04） */
	private static final String PCRS_CD_A04 = "A04";
	/** 料金コースコード（A05） */
	private static final String PCRS_CD_A05 = "A05";
	/** 料金コースコード（A06） */
	private static final String PCRS_CD_A06 = "A06";
	/** 料金コースコード（A07） */
	private static final String PCRS_CD_A07 = "A07";
	/** 料金コースコード（A08） */
	private static final String PCRS_CD_A08 = "A08";
	/** 料金コースコード（A09） */
	private static final String PCRS_CD_A09 = "A09";
	/** 料金コースコード（A10） */
	private static final String PCRS_CD_A10 = "A10";
	/** 料金コースコード（A11） */
	private static final String PCRS_CD_A11 = "A11";
	/** 料金コースコード (A47) */
	private static final String PCRS_CD_A47 = "A47";
	/** 料金コースコード (A48) */
	private static final String PCRS_CD_A48 = "A48";
	/** 料金コースコード (A49) */
	private static final String PCRS_CD_A49 = "A49";
	/** 料金コースコード (A50) */
	private static final String PCRS_CD_A50 = "A50";
	/** 料金コースコード (A51) */
	private static final String PCRS_CD_A51 = "A51";
	/** 料金コースコード (A52) */
	private static final String PCRS_CD_A52 = "A52";
	/** 料金コースコード (A53) */
	private static final String PCRS_CD_A53 = "A53";
	/** 料金コースコード (A54) */
	private static final String PCRS_CD_A54 = "A54";
	/** 料金コースコード (A55) */
	private static final String PCRS_CD_A55 = "A55";
	/** 料金コースコード (A56) */
	private static final String PCRS_CD_A56 = "A56";
	/** 料金コースコード (A57) */
	private static final String PCRS_CD_A57 = "A57";
	//ANK-4493-00-00 ADD START
	/** 料金コースコード (A74) */
	private static final String PCRS_CD_A74 = "A74";
	//ANK-4493-00-00 ADD END
	// ANK-2612-00-00 2016/01/04 ADD START
	/** 料金コースコード (A83) */
	private static final String PCRS_CD_A83 = "A83";
	/** 料金コースコード (A84) */
	private static final String PCRS_CD_A84 = "A84";
	// ANK-2612-00-00 2016/01/04 ADD END
	// ANK-3949-00-00 ADD START
	/** 料金コースコード (A91) */
	private static final String PCRS_CD_A91 = "A91";
	/** 料金コースコード (A92) */
	private static final String PCRS_CD_A92 = "A92";
	/** 料金コースコード (A95) */
	private static final String PCRS_CD_A95 = "A95";
	/** 料金コースコード (A96) */
	private static final String PCRS_CD_A96= "A96";
	// ANK-3949-00-00 ADD END
	// v3.0.0 ANK-0025-00-00 ADD START
	/** 料金コースコード (C22:ｅｏ光無線ルーター（１００Ｍ）) */
	private static final String ROUTER_WIFI_100M = "C22";
	/** 料金コースコード (C24:ｅｏ光ベーシックルーター（１００Ｍ）) */
	private static final String ROUTER_BASICI_100M = "C24";
	/** 料金コースコード (C23:ｅｏ光無線ルーター（１Ｇ）) */
	private static final String ROUTER_WIFI_1G = "C23";
	/** 料金コースコード (C25:ｅｏ光ベーシックルーター（１Ｇ）) */
	private static final String ROUTER_BASICI_1G = "C25";
	
	/** 料金コース速度コード（100M） */
	private static final String PCRS_SPEED_CD_100M = "01";
	/** 料金コース速度コード（200M） */
	private static final String PCRS_SPEED_CD_200M = "03";
	/** 料金コース速度コード（1G） */
	private static final String PCRS_SPEED_CD_1G = "04";
	// ANK-2612-00-00 2016/01/04 ADD START
	/** 料金コース速度コード（10G） */
	private static final String PCRS_SPEED_CD_10G = "06";
	// ANK-2612-00-00 2016/01/04 ADD END
	
	/** ルータ速度種別コード（100M超） */
//	private static final String ROUTER_SPEED_CD_OVER_100M = "20";

	/** 工事案件種別コード（新設）*/
//	private static final String KOJIAK_SBT_CD_001 = "001";
	/** 工事案件種別コード（撤去（解約））*/
	private static final String KOJIAK_SBT_CD_002 = "002";
	
	/** 工事案件種別コード（住所変更(新設)）*/
//	private static final String KOJIAK_SBT_CD_003 = "003";
	
	/* ++++++++++ v5.00.02 追加開始 ++++++++++ */
	/** 工事案件対象宅内機器ステータス（なし）*/
	private static final String KOJIAK_TRGT_TAKNKIKI_STAT_NASI = "110";
	/** 設置撤去フラグ（設置)）*/
	private static final String STC_TEKKYO_FLG_STC = "1";
	/** 宅内機器種別コード（ルーター）*/
	private static final String TAKNKIKI_SBT_CD_ROUTER = "F0";
	/* ++++++++++ v5.00.02 追加終了 ++++++++++ */
	/** 料金グループコード(ｅｏ光ネットマンションホームタイプ) */
	private static final String PRC_GRP_CD_02 = "02";
	/** 料金グループコード(ｅｏ光ネットマンションメゾンタイプ) */
	private static final String PRC_GRP_CD_03 = "03";
	/** 料金グループコード(ｅｏ光ネットマンションマンションタイプ) */
	private static final String PRC_GRP_CD_04 = "04";
	/** 料金グループコード(ｅｏ光電話) */
	private static final String PRC_GRP_CD_10 = "10";
	
	/* ++++++++++ v5.00.05 追加開始 ++++++++++ */
	/** サービスコード(ネット) */
	private static final String SVC_CD_NET = "01";
	/** サービスコード(電話) */
	private static final String SVC_CD_TEL = "02";
	/** 電話（単独） */
	private static final String TEL_TEL = "0";
	/** 電話(ネット＋電話) */
	private static final String TEL_NETTEL = "1";
	/* ++++++++++ v5.00.05 追加終了 ++++++++++ */
	/** サービス契約ステータス（解約済）*/
	private static final String SVC_KEI_STAT_DSL = "910";
	/** サービス契約ステータス（キャンセル済済）*/
	private static final String SVC_KEI_STAT_CAN = "920";
	
	/* ++++++++++ v5.00.08 追加開始 ++++++++++ */
	/** 配送作成済フラグ 配送作成済	 */
	private static final String HAISO_SAKSEI_ZUMI_FLG_SUMI = "1";
	/** 配送作成済フラグ 緊急出荷登録済	 */
	private static final String HAISO_SAKSEI_ZUMI_FLG_KNKY = "2";
	/* ++++++++++ v5.00.08 追加終了 ++++++++++ */

	
	/**
	 * 工事案件機器情報取得CCを呼出し、
	 * 工事案件機器情報取得を行う。
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite getKikiInfo(SessionHandle handle,
													IRequestParameterReadWrite param,
													String fixedText) throws Throwable
	{
		Map<?, ?> result = null;
		CAANMsg template = null;
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// データ情報
		Map<String, Object> dataMap = (HashMap<String, Object>)param.getData(fixedText);
		//cc内ワーク
		Map<String, Object> ccMap = new HashMap<String, Object>();
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		/* ++++++++++ v5.00.08 追加開始 ++++++++++ */
		// ***** EDK0011B090（配送情報ステータス一覧照会明細）*****
		Object[][] EDK0011B080IN = {
				{EDK0011B080CBSMsg.TEMPLATEID,    TEMPLATE_ID_EDK0011B080},
				{EDK0011B080CBSMsg.FUNC_CODE,     "1"},
//				{EDK0011B080CBSMsg.MAX_SEARCH_NUM, "200"},
				{EDK0011B080CBSMsg.KEY_HAISO_STAT, "001"},
				{EDK0011B080CBSMsg.KEY_SVC_KEI_NO, (String)dataMap.get("svc_kei_no")},
			};
		CAANMsg[] EDK0011B080outList = callSC(handle, scCall, param, fixedText, EDK0011B080IN).getCAANMsgList(EDK0011B080CBSMsg.EDK0011B080CBSMSG1LIST);
		if(workMap.get("work_kojiak_no") != null && !"".equals(workMap.get("work_kojiak_no")))
		{
			if(hasHaisoKojiak(EDK0011B080outList, (String)workMap.get("work_kojiak_no")))
			{
				dataMap.put("tbl_haiso_saksei_zumi_flg", HAISO_SAKSEI_ZUMI_FLG_SUMI);
			}
		}
		if(workMap.get("work_kojiak_no_shinsetsu") != null && !"".equals(workMap.get("work_kojiak_no_shinsetsu")))
		{
			if(!workMap.get("work_kojiak_no_shinsetsu").equals(workMap.get("work_kojiak_no")))
			{
				if(hasHaisoKojiak(EDK0011B080outList, (String)workMap.get("work_kojiak_no_shinsetsu")))
				{
					dataMap.put("tbl_haiso_saksei_zumi_flg_shinsetsu", HAISO_SAKSEI_ZUMI_FLG_SUMI);
				}
			}
			else
			{
				dataMap.put("tbl_haiso_saksei_zumi_flg_shinsetsu", workMap.get("work_haiso_saksei_zumi_flg"));
			}
		}
		if(workMap.get("work_kojiak_no_tekkyo") != null && !"".equals(workMap.get("work_kojiak_no_tekkyo")))
		{
			if(!workMap.get("work_kojiak_no_tekkyo").equals(workMap.get("work_kojiak_no")))
			{
				if(hasHaisoKojiak(EDK0011B080outList, (String)workMap.get("work_kojiak_no_tekkyo")))
				{
					dataMap.put("tbl_haiso_saksei_zumi_flg_tekkyo", HAISO_SAKSEI_ZUMI_FLG_SUMI);
				}
			}
			else
			{
				dataMap.put("tbl_haiso_saksei_zumi_flg_tekkyo", workMap.get("work_haiso_saksei_zumi_flg"));
			}
		}
		/* ++++++++++ v5.00.08 追加終了 ++++++++++ */
		// メッセージ情報
		ArrayList<HashMap<String, Object>> messageInfo = new ArrayList<HashMap<String, Object>>();
		// メッセージコードリスト
		dataMap.put("message_list", messageInfo);
		/* ++++++++++ v5.00.04 追加開始 ++++++++++ */
		//工事案件番号
		String kojiak_no_shinsetsu = (String) workMap.get("work_kojiak_no_shinsetsu");
		String kojiak_no_tekkyo = (String) workMap.get("work_kojiak_no_tekkyo");
		dataMap.put("kojiak_no_shinsetu", kojiak_no_shinsetsu);
		dataMap.put("kojiak_no_tekkyo", kojiak_no_tekkyo);
		//工事案件番号
		String svc_kei_no_pon = (String) workMap.get("work_svc_kei_no_pon");
		/* ++++++++++ v5.00.04 追加終了 ++++++++++ */

		// 異動区分
		String idoDiv = (String) dataMap.get("ido_div");
		/* ++++++++++ v5.00.04 追加開始 ++++++++++ */
		//工事案件
		//（E-PON,GE-PON）の場合に新規側工事のPON種別を取得
		dataMap.put("pon_sbt_cd_nm_ponnew", "");
		if (workMap.containsKey("work_ad_chg_newesta_kjak_no"))
		{
			String ad_chg_newesta_kjak_no = (String) workMap.get("work_ad_chg_newesta_kjak_no");
			if(ad_chg_newesta_kjak_no != null && !"".equals(ad_chg_newesta_kjak_no))
			{
				template = editInMsgEKU0011A010(param, dataMap, ccMap, ad_chg_newesta_kjak_no);
				// ◇ SC呼出実行
				result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
				// ◇ 下りマッピング処理
				editOutMsgEKU0011A010(result, param, dataMap, ccMap, "EKU0011A010CBSMsg1List", workMap);
			}
		}
		else if(workMap.containsKey("work_kojiak_no"))
		{
			String work_kojiak_no = (String) workMap.get("work_kojiak_no");
			if(work_kojiak_no != null && !"".equals(work_kojiak_no))
			{
				template = editInMsgEKU0011A010(param, dataMap, ccMap, work_kojiak_no);
				// ◇ SC呼出実行
				result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
				// ◇ 下りマッピング処理
				editOutMsgEKU0011A010(result, param, dataMap, ccMap, "EKU0011A010CBSMsg1List", workMap);
			}
		}
		/* ++++++++++ v5.00.04 追加終了 ++++++++++ */
		
		/* ++++++++++ v5.00.04 修正開始 ++++++++++ */
		//PON種別を取得->543行目あたりに移動
//		if(IDO_DIV_VALUE_00067.equals(idoDiv)){
//		if(svc_kei_no_pon != null && !"".equals(svc_kei_no_pon))
//		{
//			// サービス契約回線内訳一覧照会（サービス契約番号）
//			template = editInMsgEKK0251B001(param, dataMap, ccMap, svc_kei_no_pon);
//			// ◇ SC呼出実行
//			result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
//			// ◇ 下りマッピング処理
//			editOutMsgEKK0251B001(result, param, dataMap, ccMap);
//			ArrayList<HashMap<String, Object>> ekk0251B001List = null;
//			ekk0251B001List = (ArrayList<HashMap<String, Object>>) ccMap.get("EKK0251B001CBSMsg1List");
//			if(ekk0251B001List != null && ekk0251B001List.size() >0)
//			{
//				HashMap ekk0251b001Map = null;
//				ekk0251b001Map = (HashMap)ekk0251B001List.get(0);
//				if(ekk0251b001Map.get("svc_kei_kaisen_ucwk_no") != null && !"".equals(ekk0251b001Map.get("svc_kei_kaisen_ucwk_no")))
//				{
//	
//					// サービス契約回線内訳一意照会
//					ccMap.put("key_svc_kei_kaisen_ucwk_no", ekk0251b001Map.get("svc_kei_kaisen_ucwk_no"));
//					template = editInMsgEKK0251A010(param, dataMap, ccMap);
//					// ◇ SC呼出実行
//					result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
//					// ◇ 下りマッピング処理
//					editOutMsgEKK0251A010(result, param, dataMap, ccMap, "_pon");
//				}
//			}
//		}
			
//		if(kojiak_no != null && !"".equals(kojiak_no))
		if(kojiak_no_tekkyo != null && !"".equals(kojiak_no_tekkyo))
		{
//			// 工事案件一意照会（住変(新設)、住変(撤去)、住変(新設)+住変(撤去の判断を行う）
//			ccMap.put("key_kojiak_no", kojiak_no);
//			
//			template = editInMsgEKU0011A010(param, dataMap, ccMap);
//			// ◇ SC呼出実行
//			result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
//			// ◇ 下りマッピング処理
//			editOutMsgEKU0011A010(result, param, dataMap, ccMap, "EKU0011A010CBSMsg1List", workMap);
//
//			ArrayList<HashMap<String, Object>> eku0011a010List = null;
//			HashMap eku0011a010Map = null;
//			eku0011a010List = (ArrayList<HashMap<String, Object>>) dataMap.get("EKU0011A010CBSMsg1List");
//			if(eku0011a010List != null && eku0011a010List.size() >0)
//			{
//				eku0011a010Map = (HashMap)eku0011a010List.get(0);
//				
//
//				String kojiak_sbt_cd = (String) eku0011a010Map.get("kojiak_sbt_cd");
//				String ad_chg_newsta_kjak_no = (String) eku0011a010Map.get("ad_chg_newsta_kjak_no");
//				String ad_chg_tekkyo_kjak_no = (String) eku0011a010Map.get("ad_chg_tekkyo_kjak_no");
//				
//				if(KOJIAK_SBT_CD_003.equals(kojiak_sbt_cd) || KOJIAK_SBT_CD_001.equals(kojiak_sbt_cd))
//				{
//					dataMap.put("kojiak_no_shinsetu", kojiak_no);
//					dataMap.put("kojiak_no_tekkyo", ad_chg_tekkyo_kjak_no);
//				}
//				else
//				{
//					dataMap.put("kojiak_no_shinsetu", ad_chg_newsta_kjak_no);
//					dataMap.put("kojiak_no_tekkyo", kojiak_no);
//				}
				ccMap.put("key_kojiak_no", (String)dataMap.get("kojiak_no_tekkyo"));
				// 工事案件＜eo光ネット＞一意照会
				template = editInMsgEKU0021A010(param, dataMap, ccMap);
				// ◇ SC呼出実行
				result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
				// ◇ 下りマッピング処理
				editOutMsgEKU0021A010(result, param, dataMap, ccMap);
//			}
		}
		/* ++++++++++ v5.00.04 修正終了 ++++++++++ */
		/* ++++++++++ v5.00.01 追加開始 ++++++++++ */
		//収容替設置ルータ情報取得
		String newPcrsCd = (String)workMap.get("work_pcrs_cd");
		String oldPcrsCd = (String) workMap.get("work_pcrs_cd_old");
		if(!"".equals(newPcrsCd) && (oldPcrsCd == null || "".equals(oldPcrsCd)))
		{
			oldPcrsCd = newPcrsCd;
		}
		else if((newPcrsCd == null || "".equals(newPcrsCd)) && !"".equals(oldPcrsCd))
		{
			newPcrsCd = oldPcrsCd;
		}
		if(newPcrsCd != null && !"".equals(newPcrsCd) && oldPcrsCd != null && !"".equals(oldPcrsCd))
		{
		
			String newPcrsSpdCd = judgePcrsSpeedCd(newPcrsCd);
			String oldPcrsSpdCd = judgePcrsSpeedCd(oldPcrsCd);
			
			ccMap.put("new_pcrs_speed_cd", newPcrsSpdCd);
			ccMap.put("old_pcrs_speed_cd", oldPcrsSpdCd);
			dataMap.put("new_pcrs_speed_cd", newPcrsSpdCd);
			dataMap.put("old_pcrs_speed_cd", oldPcrsSpdCd);
			
			if(PCRS_SPEED_CD_100M.equals(newPcrsSpdCd))
			{
				ccMap.put("kktsv_pcrs_cd", ROUTER_BASICI_100M);
				dataMap.put("new_kktsv_pcrs_cd_basic", ROUTER_BASICI_100M);
			}
			else
			{
				ccMap.put("kktsv_pcrs_cd", ROUTER_BASICI_1G);
				dataMap.put("new_kktsv_pcrs_cd_basic", ROUTER_BASICI_1G);
			}
			template = editInMsgEKK1651B001(param, dataMap, ccMap);
			// ◇ SC呼出実行
			result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
			// ◇ 下りマッピング処理
			editOutMsgEKK1651B001(result, param, dataMap, ccMap, "_BASIC");
			
			if(PCRS_SPEED_CD_100M.equals(newPcrsSpdCd))
			{
				ccMap.put("kktsv_pcrs_cd", ROUTER_WIFI_100M);
				dataMap.put("new_kktsv_pcrs_cd_wifi", ROUTER_WIFI_100M);
			}
			else
			{
				ccMap.put("kktsv_pcrs_cd", ROUTER_WIFI_1G);
				dataMap.put("new_kktsv_pcrs_cd_wifi", ROUTER_WIFI_1G);
			}
			template = editInMsgEKK1651B001(param, dataMap, ccMap);
			// ◇ SC呼出実行
			result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
			// ◇ 下りマッピング処理
			editOutMsgEKK1651B001(result, param, dataMap, ccMap, "_WIFI");
			
			
		}
		/* ++++++++++ v5.00.01 追加終了 ++++++++++ */
		
		
		/* ++++++++++ v5.00.02 追加開始 ++++++++++ */
		//工事案件種別が「プラン変更（収容替）」の場合
		//設置機器のルーター種別を判断する
		dataMap.put("hoyu_router_cd", "");
		if(workMap.get("work_kojiak_no") != null && !"".equals(workMap.get("work_kojiak_no")))
		{
			template = editInMsgEKU0141B010(param, dataMap, workMap);
			// ◇ SC呼出実行
			result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
			// ◇ 下りマッピング処理
			editOutMsgEKU0141B010(result, param, dataMap, ccMap);
			ArrayList<HashMap<String, Object>> eku0141b010Lst = (ArrayList<HashMap<String, Object>>)dataMap.get("EKU0141B010CBSMsg1List");
			for(HashMap<String, Object> eku0141b010Map :eku0141b010Lst)
			{
				if(!KOJIAK_TRGT_TAKNKIKI_STAT_NASI.equals(eku0141b010Map.get("kojiak_trgt_taknkiki_stat"))
						&& STC_TEKKYO_FLG_STC.equals(eku0141b010Map.get("stc_tekkyo_flg"))
						&& TAKNKIKI_SBT_CD_ROUTER.equals(eku0141b010Map.get("taknkiki_sbt_cd")))
				{
					ccMap.put("rsv_taknkiki_model_cd", eku0141b010Map.get("rsv_taknkiki_model_cd"));
					template = editInMsgEZM0411A010(param, dataMap, ccMap);
					// ◇ SC呼出実行
					result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
					// ◇ 下りマッピング処理
					editOutMsgEZM0411A010(result, param, dataMap, ccMap);
					break;
				}
	
			}
		}
		/* ++++++++++ v5.00.02 追加終了 ++++++++++ */
		// 業務パラメータを取得します。（宅内機器種別コードルーター機器機器判定）
		String kk_kojihi_yoksi = getBuisinessParameter(handle, scCall, param, fixedText, KK_KOJIHI_YOKSI);
		dataMap.put("kk_kojihi_yoksi", kk_kojihi_yoksi);
		workMap.put("work_kk_kojihi_yoksi", kk_kojihi_yoksi);
		
		/* ++++++++++ v5.00.03 追加開始 ++++++++++ */
		// データ情報
		dataMap.put("err_msg", "");
		Map<String, Object> curChgMap = (HashMap<String, Object>)param.getData("KKSV014820SC");
		Map<String, Object> curChgMap2 = (HashMap<String, Object>)param.getData("KKSV014815SC");
		String kojiakSbtCd = "";
		String rnkiSvcKeiNo = "";
		/* ++++++++++ v5.00.05 追加開始 ++++++++++ */
		String svcKeiNo = "";
		svcKeiNo = (String)dataMap.get("svc_kei_no");
		/* ++++++++++ v5.00.05 追加終了 ++++++++++ */
		String prcGrpCd = "";
		if (curChgMap.containsKey("EKU0011A010CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)curChgMap.get("EKU0011A010CBSMsg1List");
			if (0 < childList.size())
			{
				HashMap childMap = (HashMap)childList.get(0);
				kojiakSbtCd = (String)childMap.get("kojiak_sbt_cd");
				/* ++++++++++ v5.00.05 追加開始 ++++++++++ */
				rnkiSvcKeiNo = (String)childMap.get("rnki_svc_kei_no");
				/* ++++++++++ v5.00.05 追加終了 ++++++++++ */
			}
		}
		if (curChgMap2.containsKey("EKK0081A010CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)curChgMap2.get("EKK0081A010CBSMsg1List");
			if (0 < childList.size())
			{
				HashMap childMap = (HashMap)childList.get(0);
				prcGrpCd = (String)childMap.get("prc_grp_cd");
			}
		}
			//ネット、電話の場合
		if (PRC_GRP_CD_10.equals(prcGrpCd) || PRC_GRP_CD_02.equals(prcGrpCd)
			|| PRC_GRP_CD_03.equals(prcGrpCd) || PRC_GRP_CD_04.equals(prcGrpCd))
		{
			// 回線対象サービス契約一覧照会（サービス契約番号）
			Object[][] ekk0241b003IN = {
					{EKK0241B003CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0241B003},
					{EKK0241B003CBSMsg.FUNC_CODE,     "1"},
					{EKK0241B003CBSMsg.KEY_SVC_KEI_NO, (String)dataMap.get("svc_kei_no")},
				};
			CAANMsg[] ekk0241b003Out = callSC(handle, scCall, param, fixedText, ekk0241b003IN).getCAANMsgList(EKK0241B003CBSMsg.EKK0241B003CBSMSG1LIST);
			CAANMsg[] ekk0241b002Out = null;
			if (ekk0241b003Out != null && ekk0241b003Out.length > 0)
			{
				// 回線対象サービス契約一覧照会
				Object[][] ekk0241b002IN = {
						{EKK0241B002CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0241B002},
						{EKK0241B002CBSMsg.FUNC_CODE,     "1"},
						{EKK0241B002CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, (String)ekk0241b003Out[0].getString(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)},
					};
				ekk0241b002Out = callSC(handle, scCall, param, fixedText, ekk0241b002IN).getCAANMsgList(EKK0241B002CBSMsg.EKK0241B002CBSMSG1LIST);
			}
			/* ++++++++++ v5.00.05 修正開始 ++++++++++ */
			//電話の場合、ネット＋電話か電話単独かを判断する。
			dataMap.put("tel_net_tel", TEL_TEL);
			if (PRC_GRP_CD_10.equals(prcGrpCd))
			{
				if(svcKeiNo != null && svcKeiNo.equals(rnkiSvcKeiNo))
				{
					//電話のサービス契約番号と同じサービス契約番号で工事案件が作られている場合同一回線をチェックする。
					if (ekk0241b002Out != null && ekk0241b002Out.length > 0)
					{
						for(CAANMsg ekk0241b002Map :ekk0241b002Out)
						{
							if(SVC_CD_NET.equals(ekk0241b002Map.getString(EKK0241B002CBSMsg1List.SVC_CD)))
							{
								//同一回線にネットがある場合
								dataMap.put("tel_net_tel", TEL_NETTEL);
								break;
							}
						}
					}

				}
				else if(svcKeiNo != null && !svcKeiNo.equals(rnkiSvcKeiNo))
				{
					//電話のサービス契約番号と異なるサービス契約番号で工事案件が作られている場合はネットがある。
					dataMap.put("tel_net_tel", TEL_NETTEL);
				}
			}
				
			//PON種別取得
			ArrayList<String> ponSvcKeiNoLst = new ArrayList<String>();
			if(svc_kei_no_pon != null && !"".equals(svc_kei_no_pon))
			{
				ponSvcKeiNoLst.add(svc_kei_no_pon);
			}
//			if (ekk0241b002Out != null && ekk0241b002Out.length > 0)
//			{
//				for(CAANMsg ekk0241b002Map :ekk0241b002Out)
//				{
//						ponSvcKeiNoLst.add((String)ekk0241b002Map.getString(EKK0241B002CBSMsg1List.SVC_KEI_NO));
//				}
//			}
			for(String ponSvcKeiNo:ponSvcKeiNoLst)
			{
				// サービス契約回線内訳一覧照会（サービス契約番号）
				template = editInMsgEKK0251B001(param, dataMap, ccMap, ponSvcKeiNo);
				// ◇ SC呼出実行
				result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
				// ◇ 下りマッピング処理
				editOutMsgEKK0251B001(result, param, dataMap, ccMap);
				ArrayList<HashMap<String, Object>> ekk0251B001List = null;
				ekk0251B001List = (ArrayList<HashMap<String, Object>>) ccMap.get("EKK0251B001CBSMsg1List");
				if(ekk0251B001List != null && ekk0251B001List.size() >0)
				{
					HashMap ekk0251b001Map = null;
					ekk0251b001Map = (HashMap)ekk0251B001List.get(0);
					if(ekk0251b001Map.get("svc_kei_kaisen_ucwk_no") != null && !"".equals(ekk0251b001Map.get("svc_kei_kaisen_ucwk_no")))
					{
		
						// サービス契約回線内訳一意照会
						ccMap.put("key_svc_kei_kaisen_ucwk_no", ekk0251b001Map.get("svc_kei_kaisen_ucwk_no"));
						template = editInMsgEKK0251A010(param, dataMap, ccMap);
						// ◇ SC呼出実行
						result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
						// ◇ 下りマッピング処理
						editOutMsgEKK0251A010(result, param, dataMap, ccMap, "_pon");
					}
				}
				
				if(dataMap.get("pon_sbt_cd_nm") != null && !"".equals(dataMap.get("pon_sbt_cd_nm")))
				{
					break;
				}

			}
			/* ++++++++++ v5.00.05 修正終了 ++++++++++ */
			/* ++++++++++ v5.00.07 修正開始 ++++++++++ */
			//撤去（解約）の場合メッセージを作成する。
			if (IDO_DIV_VALUE_00006.equals(idoDiv) || KOJIAK_SBT_CD_002.equals(kojiakSbtCd))
			{
				CAANMsg[] ekk0081a010Out3 = null;
				String svcKeiNoKsn = "";
				
				// サービス契約_工事案件一覧照会(基本工事取得)
				Object[][] eku0081b020IN = {
						{EKU0081B020CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKU0081B020},
						// OM-2014-0003565 マンション（ネット＋電話）の撤去解約でサービス契約_工事案件が不正 2014/11/17 藤田 MOD START
//						{EKU0081B020CBSMsg.FUNC_CODE,     "2"},
						{EKU0081B020CBSMsg.FUNC_CODE,     "4"},
						// OM-2014-0003565 マンション（ネット＋電話）の撤去解約でサービス契約_工事案件が不正 2014/11/17 藤田 MOD END
						{EKU0081B020CBSMsg.KEY_SVC_KEI_NO, (String)dataMap.get("svc_kei_no")},
						{EKU0081B020CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, (String)workMap.get("work_svc_kei_kaisen_ucwk_no")},
					};
				CAANMsg[] eku0081b020Out = callSC(handle, scCall, param, fixedText, eku0081b020IN).getCAANMsgList(EKU0081B020CBSMsg.EKU0081B020CBSMSG1LIST);
				if (eku0081b020Out != null && eku0081b020Out.length > 0 )
				{
					// ***** EKU0011A010 工事案件一意照会 *****
					Object[][] eku0011a010IN = {
						{EKU0011A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKU0011A010},
						{EKU0011A010CBSMsg.FUNC_CODE,     "1"},
						{EKU0011A010CBSMsg.KEY_KOJIAK_NO, eku0081b020Out[0].getString(EKU0081B020CBSMsg1List.KOJIAK_NO)},
					};
					CAANMsg[] eku0011a010Out = callSC(handle, scCall, param, fixedText, eku0011a010IN).getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);
					if (eku0011a010Out != null && eku0011a010Out.length > 0)
					{
						Object[][] ekk0081a010IN = {
								{EKK0081A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0081A010},
								{EKK0081A010CBSMsg.FUNC_CODE,     "2"},
								{EKK0081A010CBSMsg.KEY_SVC_KEI_NO, (String)dataMap.get("svc_kei_no")},
								{EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JPCBPCommon.getOpeDate(null)},
							};
							CAANMsg[] ekk0081a010Out = callSC(handle, scCall, param, fixedText, ekk0081a010IN).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
						Object[][] ekk0081a010IN2 = {
								{EKK0081A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0081A010},
								{EKK0081A010CBSMsg.FUNC_CODE,     "2"},
								{EKK0081A010CBSMsg.KEY_SVC_KEI_NO, eku0011a010Out[0].getString(EKU0011A010CBSMsg1List.RNKI_SVC_KEI_NO)},
								{EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JPCBPCommon.getOpeDate(null)},
							};
						CAANMsg[] ekk0081a010Out2 = callSC(handle, scCall, param, fixedText, ekk0081a010IN2).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
						
						String svcKeiStatKsn = ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
						
						String svcKeiStatKsn2 = null;
						if(ekk0081a010Out2 != null && ekk0081a010Out2.length > 0)
						{
							svcKeiStatKsn2 = ekk0081a010Out2[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
						}
						/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
						//他に同一回線のサービスがあるか確認する
						// 回線対象サービス契約一覧照会
						Object[][] ekk0241b002IN = {
								{EKK0241B002CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0241B002},
								{EKK0241B002CBSMsg.FUNC_CODE,     "1"},
								{EKK0241B002CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, (String)workMap.get("work_svc_kei_kaisen_ucwk_no")},
							};
						ekk0241b002Out = callSC(handle, scCall, param, fixedText, ekk0241b002IN).getCAANMsgList(EKK0241B002CBSMsg.EKK0241B002CBSMSG1LIST);
						/* ++++++++++ v7.00.02 追加開始 ++++++++++ */
						String svcStartYmdDel = "";
						String svcStartYmdDel2 = "";
						/* ++++++++++ v7.00.02 追加終了 ++++++++++ */
						for(CAANMsg ekk0241b002Map :ekk0241b002Out)
						{
							svcKeiNoKsn = ekk0241b002Map.getString(EKK0241B002CBSMsg1List.SVC_KEI_NO);
							if(!svcKeiNoKsn.equals((String)dataMap.get("svc_kei_no"))
								&&(SVC_CD_NET.equals(ekk0241b002Map.getString(EKK0241B002CBSMsg1List.SVC_CD)) || SVC_CD_TEL.equals(ekk0241b002Map.getString(EKK0241B002CBSMsg1List.SVC_CD))))
							{
								Object[][] ekk0081a010IN3 = {
										{EKK0081A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0081A010},
										{EKK0081A010CBSMsg.FUNC_CODE,     "2"},
										{EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNoKsn},
										{EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JPCBPCommon.getOpeDate(null)},
									};
								ekk0081a010Out3 = callSC(handle, scCall, param, fixedText, ekk0081a010IN3).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
								break;
							}
						}
							/* ++++++++++ v7.00.02 修正開始 ++++++++++ */
						if(ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.SVC_STA_YMD) != null)
						{
							svcStartYmdDel = ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.SVC_STA_YMD);
						}
						if(ekk0081a010Out3 != null && ekk0081a010Out3.length > 0)
						{
							/* ++++++++++ v7.00.01 修正開始 ++++++++++ */
							if(ekk0081a010Out3[0].getString(EKK0081A010CBSMsg1List.SVC_STA_YMD) != null)
							{
								svcStartYmdDel2 = ekk0081a010Out3[0].getString(EKK0081A010CBSMsg1List.SVC_STA_YMD);
							}

							if( !"".equals(svcStartYmdDel)  && !"".equals(svcStartYmdDel2) &&  svcStartYmdDel.compareTo(svcStartYmdDel2) < 0 )
							{
								svcStartYmdDel = svcStartYmdDel2;
							}
							else if( "".equals(svcStartYmdDel) &&  !"".equals(svcStartYmdDel2))
							{
								svcStartYmdDel = svcStartYmdDel2;
							}
							/* ++++++++++ v7.00.02 修正終了 ++++++++++ */
							/* ++++++++++ v7.00.01 修正終了 ++++++++++ */
						}
						dataMap.put("svc_start_ymd_del", svcStartYmdDel);
						if (IDO_DIV_VALUE_00006.equals(idoDiv))
						{
						/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
							// 連携サービス契約番号と遷移サービス契約番号が異なる場合
							if (dataMap.get("svc_kei_no") != null && !"".equals(dataMap.get("svc_kei_no")) 
									&& !((String)dataMap.get("svc_kei_no")).equals(eku0011a010Out[0].getString(EKU0011A010CBSMsg1List.RNKI_SVC_KEI_NO)))
							{
								// エラーメッセージを設定 連携サービス契約番号のサービス契約が解約済みかつもう一方のサービス契約が解約済みで無い場合はメッセージを出さない
								if (svcKeiStatKsn2 != null && svcKeiStatKsn != null &&
										!((SVC_KEI_STAT_DSL.equals(svcKeiStatKsn2) || SVC_KEI_STAT_CAN.equals(svcKeiStatKsn2))
											&& !SVC_KEI_STAT_DSL.equals(svcKeiStatKsn) && !SVC_KEI_STAT_CAN.equals(svcKeiStatKsn)))
								{
									if (ekk0081a010Out != null && ekk0081a010Out.length > 0 && ekk0081a010Out2 != null && ekk0081a010Out2.length > 0)
									{
											StringBuilder msg = new StringBuilder();
											msg.append("お客さまＩＤ（");
											msg.append(ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO) + ":" + ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD_NM) +"");
											msg.append("）ではなく、前画面で（");
											msg.append(ekk0081a010Out2[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO) + ":" + ekk0081a010Out2[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD_NM) +")");
											msg.append(",選択しなおしてから撤去（解約）を処理");
											dataMap.put("err_msg", msg.toString());
									}
								}
							}
							// 連携サービス契約番号と遷移サービス契約番号が同じ場合
							else if (dataMap.get("svc_kei_no") != null && !"".equals(dataMap.get("svc_kei_no")) 
									&& ((String)dataMap.get("svc_kei_no")).equals(eku0011a010Out[0].getString(EKU0011A010CBSMsg1List.RNKI_SVC_KEI_NO)))
							{
								/* ++++++++++ v7.00.00 削除開始 ++++++++++ */
//								//他に同一回線のサービスがあるか確認する
//								// 回線対象サービス契約一覧照会
//								Object[][] ekk0241b002IN = {
//										{EKK0241B002CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0241B002},
//										{EKK0241B002CBSMsg.FUNC_CODE,     "1"},
//										{EKK0241B002CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, (String)workMap.get("work_svc_kei_kaisen_ucwk_no")},
//									};
//								ekk0241b002Out = callSC(handle, scCall, param, fixedText, ekk0241b002IN).getCAANMsgList(EKK0241B002CBSMsg.EKK0241B002CBSMSG1LIST);
//								for(CAANMsg ekk0241b002Map :ekk0241b002Out)
//								{
//									if(SVC_CD_NET.equals(ekk0241b002Map.getString(EKK0241B002CBSMsg1List.SVC_CD)) || SVC_CD_TEL.equals(ekk0241b002Map.getString(EKK0241B002CBSMsg1List.SVC_CD)))
//									{
//										String svcKeiNoKsn = ekk0241b002Map.getString(EKK0241B002CBSMsg1List.SVC_KEI_NO);
//										Object[][] ekk0081a010IN3 = {
//												{EKK0081A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0081A010},
//												{EKK0081A010CBSMsg.FUNC_CODE,     "2"},
//												{EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNoKsn},
//												{EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JPCBPCommon.getOpeDate(null)},
//											};
//										CAANMsg[] ekk0081a010Out3 = callSC(handle, scCall, param, fixedText, ekk0081a010IN3).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
								/* ++++++++++ v7.00.00 削除終了 ++++++++++ */
										//電話かネットで同一回線上に遷移したサービス以外のサービスがある場合
										if (svcKeiNoKsn != null && !"".equals(svcKeiNoKsn) && !svcKeiNoKsn.equals((String)dataMap.get("svc_kei_no")))
										{
											if (ekk0081a010Out != null && ekk0081a010Out.length > 0 && ekk0081a010Out3 != null && ekk0081a010Out3.length > 0)
											{
												//遷移したサービスとは別のサービス契約
												String svcKeiStatKsn3 = ekk0081a010Out3[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
												//遷移したサービスが解約済みでもう一方が解約済みで無い場合
												if (svcKeiStatKsn3 != null && svcKeiStatKsn != null &&
														(SVC_KEI_STAT_DSL.equals(svcKeiStatKsn) || SVC_KEI_STAT_CAN.equals(svcKeiStatKsn))
														&& !SVC_KEI_STAT_DSL.equals(svcKeiStatKsn3) && !SVC_KEI_STAT_CAN.equals(svcKeiStatKsn3))
												{
													StringBuilder msg = new StringBuilder();
													msg.append("お客さまＩＤ（");
													msg.append(ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO) + ":" + ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD_NM) +")");
													msg.append("）ではなく、前画面で（");
													msg.append(ekk0081a010Out3[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO) + ":" + ekk0081a010Out3[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD_NM) +"");
													msg.append(",選択しなおしてから撤去（解約）を処理");
													dataMap.put("err_msg", msg.toString());
												}
											}
										}
									}
//								}
//								
//							}
						/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
						}
						/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
					}
				}
			}
		}
		/* ++++++++++ v5.00.07 修正終了 ++++++++++ */
		/* ++++++++++ v5.00.03 追加終了 ++++++++++ */
		/* ++++++++++ v5.00.06 追加開始 ++++++++++ */
		
		// サービス契約回線内訳一覧照会（サービス契約番号）
		if(dataMap.get("svc_kei_no") != null && !"".equals(dataMap.get("svc_kei_no")))
		{
			template = editInMsgEKK0251B001(param, dataMap, ccMap, (String)dataMap.get("svc_kei_no"));
			// ◇ SC呼出実行
			result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
			// ◇ 下りマッピング処理
			editOutMsgEKK0251B001(result, param, dataMap, ccMap);
			ArrayList<HashMap<String, Object>> ekk0251B001List = null;
			ekk0251B001List = (ArrayList<HashMap<String, Object>>) ccMap.get("EKK0251B001CBSMsg1List");
			if(ekk0251B001List != null && ekk0251B001List.size() >0)
			{
				HashMap ekk0251b001Map = null;
				ekk0251b001Map = (HashMap)ekk0251B001List.get(0);
				if(ekk0251b001Map.get("svc_kei_kaisen_ucwk_no") != null && !"".equals(ekk0251b001Map.get("svc_kei_kaisen_ucwk_no")))
				{

					// サービス契約回線内訳一意照会
					ccMap.put("key_svc_kei_kaisen_ucwk_no", ekk0251b001Map.get("svc_kei_kaisen_ucwk_no"));
					template = editInMsgEKK0251A010(param, dataMap, ccMap);
					// ◇ SC呼出実行
					result = scCall.run(getParamMsg(param, new CAANMsg[]{template}), handle);
					// ◇ 下りマッピング処理
					editOutMsgEKK0251A010(result, param, dataMap, ccMap, "_kaisen");
				}
			}
		}
		/* ++++++++++ v5.00.06 追加終了 ++++++++++ */

		
		return param;
	}

	/**
	 * サービス契約回線内訳一覧照会（サービス契約番号）のマッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInMsgEKK0251B001(IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> ccMap, String svc_kei_no_pon) throws RequestParameterException
	{
		// サービス契約回線内訳一覧照会（サービス契約番号）サービスインターフェイスを作成
		CAANMsg template = new CAANMsg(EKK0251B001CBSMsg.class.getName());
		// テンプレートID
		template.set(EKK0251B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251B001);
		// 機能コード
		template.set(EKK0251B001CBSMsg.FUNC_CODE, "1");
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
		// ◇ 業務データの設定
		// 機器提供サービス契約番号
//		if(inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
//		{
//			template.setNull(EKK0251B001CBSMsg.KEY_SVC_KEI_NO);
//		}
//		else
//		{
//			template.set(EKK0251B001CBSMsg.KEY_SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
//		}
		template.set(EKK0251B001CBSMsg.KEY_SVC_KEI_NO, svc_kei_no_pon);
		
		return template;
	}

	/**
	 * サービス契約回線内訳一覧照会（サービス契約番号）の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @param inMap
	 * @param ccMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editOutMsgEKK0251B001(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> ccMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;
		
		templateArray = parentTemplate.getCAANMsgList(EKK0251B001CBSMsg.EKK0251B001CBSMSG1LIST);
		// 結果を詰めるマップを取得
		ArrayList<HashMap<String, Object>> dataList = null;
		
		dataList = (ArrayList)ccMap.get("EKK0251B001CBSMsg1List");
		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(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)) {
					childMap.put("svc_kei_kaisen_ucwk_no", new String());
				} else {
					childMap.put("svc_kei_kaisen_ucwk_no", childTemplate.getString(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
				}
			}
		}
		
			ccMap.put("EKK0251B001CBSMsg1List", dataList);
		// リターンコード取得
		int returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);
		// エラー情報の設定
		editErrorInfoEKK0251B001(param, inMap, templates, returnCode);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = msgList.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status.intValue()))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
	}

	/**
	 * サービス契約回線内訳一覧照会（サービス契約番号）のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfoEKK0251B001(IRequestParameterReadWrite param, Map<String, Object> inMap,
																CAANMsg[] templates, int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0251B001CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		if (!template.isNull(EKK0251B001CBSMsg.KEY_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey(EKK0251B001CBSMsg.KEY_SVC_KEI_NO_ERR))
			{
				inMap.put(EKK0251B001CBSMsg.KEY_SVC_KEI_NO_ERR, template.getString(EKK0251B001CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}
		return param;
	}


	/**
	 * サービス契約回線内訳一意照会のマッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInMsgEKK0251A010(IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> ccMap) throws RequestParameterException
	{
		// サービス契約回線内訳一意照会サービスインターフェイスを作成
		CAANMsg template = new CAANMsg(EKK0251A010CBSMsg.class.getName());
		// テンプレートID
		template.set(EKK0251A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251A010);
		// 機能コード
		template.set(EKK0251A010CBSMsg.FUNC_CODE, "2");
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
		// ◇ 業務データの設定
		// 機器提供サービス契約番号
		if(ccMap.get("key_svc_kei_kaisen_ucwk_no") == null || "".equals(ccMap.get("key_svc_kei_kaisen_ucwk_no")))
		{
			template.setNull(EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO);
		}
		else
		{
			template.set(EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, (String)ccMap.get("key_svc_kei_kaisen_ucwk_no"));
		}
		
		return template;
	}

	/**
	 * サービス契約回線内訳一意照会の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @param inMap
	 * @param ccMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editOutMsgEKK0251A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> ccMap, String lstName) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;
		// 結果を詰めるマップを取得
		ArrayList<HashMap<String, Object>> dataList = null;
		
		templateArray = parentTemplate.getCAANMsgList(EKK0251A010CBSMsg.EKK0251A010CBSMSG1LIST);
		dataList = (ArrayList)inMap.get("EKK0251A010CBSMsg1List" + lstName);
		if (dataList == null)
		{
			dataList = new ArrayList();
		}
		
		
		if (templateArray != null && templateArray.length > 0)
		{

			CAANMsg childTemplate = templateArray[0];
			dataList.add(new HashMap());
			HashMap childMap = (HashMap)dataList.get(0);
			
			//PON種別コード名称
			if (childTemplate.isNull(EKK0251A010CBSMsg1List.PON_SBT_CD_NM)) {
				childMap.put("pon_sbt_cd_nm", new String());
				inMap.put("pon_sbt_cd_nm", new String());
			} else {
				childMap.put("pon_sbt_cd_nm", childTemplate.getString(EKK0251A010CBSMsg1List.PON_SBT_CD_NM));
				inMap.put("pon_sbt_cd_nm", childTemplate.getString(EKK0251A010CBSMsg1List.PON_SBT_CD_NM));
			}
			/* ++++++++++ v5.00.06 追加開始 ++++++++++ */
			//工事諸変更回線情報変える用
			if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_TELNO)) {
				childMap.put("kaisen_place_telno", new String());
			} else {
				childMap.put("kaisen_place_telno", childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_TELNO));
			}
			if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_AD_CD)) {
				childMap.put("kaisen_place_ad_cd", new String());
			} else {
				childMap.put("kaisen_place_ad_cd", childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_AD_CD));
			}
			if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_PCD)) {
				childMap.put("kaisen_place_pcd", new String());
			} else {
				childMap.put("kaisen_place_pcd", childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_PCD));
			}
			if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_STATE_NM)) {
				childMap.put("kaisen_place_state_nm", new String());
			} else {
				childMap.put("kaisen_place_state_nm", childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_STATE_NM));
			}
			if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_CITY_NM)) {
				childMap.put("kaisen_place_city_nm", new String());
			} else {
				childMap.put("kaisen_place_city_nm", childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_CITY_NM));
			}
			if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_OAZTSU_NM)) {
				childMap.put("kaisen_place_oaztsu_nm", new String());
			} else {
				childMap.put("kaisen_place_oaztsu_nm", childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_OAZTSU_NM));
			}
			if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_AZCHO_NM)) {
				childMap.put("kaisen_place_azcho_nm", new String());
			} else {
				childMap.put("kaisen_place_azcho_nm", childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_AZCHO_NM));
			}
			if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_BNCHIGO)) {
				childMap.put("kaisen_place_bnchigo", new String());
			} else {
				childMap.put("kaisen_place_bnchigo", childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_BNCHIGO));
			}
			if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRTTM)) {
				childMap.put("kaisen_place_adrttm", new String());
			} else {
				childMap.put("kaisen_place_adrttm", childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRTTM));
			}
			if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRRM)) {
				childMap.put("kaisen_place_adrrm", new String());
			} else {
				childMap.put("kaisen_place_adrrm", childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRRM));
			}
			/* ++++++++++ v5.00.06 追加終了 ++++++++++ */

		}
	
		inMap.put("EKK0251A010CBSMsg1List" + lstName, dataList);
		
		
		// リターンコード取得
		int returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);
		// エラー情報の設定
		editErrorInfoEKK0251A010(param, inMap, templates, returnCode);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = msgList.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status.intValue()))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
	}

	/**
	 * サービス契約回線内訳一意照会のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfoEKK0251A010(IRequestParameterReadWrite param, Map<String, Object> inMap,
																CAANMsg[] templates, int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0251A010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		if (!template.isNull(EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR))
		{
			if (!inMap.containsKey(EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR))
			{
				inMap.put(EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR, template.getString(EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR));
			}
		}
		return param;
	}
	/**
	 * 工事案件一意照会のマッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInMsgEKU0011A010(IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> ccMap, String kjak_no) throws RequestParameterException
	{
		// 工事案件一意照会サービスインターフェイスを作成
		CAANMsg template = new CAANMsg(EKU0011A010CBSMsg.class.getName());
		// テンプレートID
		template.set(EKU0011A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0011A010);
		// 機能コード
		template.set(EKU0011A010CBSMsg.FUNC_CODE, "1");
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
		// ◇ 業務データの設定
		// 機器提供サービス契約番号
//		if(ccMap.get("key_kojiak_no") == null || "".equals(ccMap.get("key_kojiak_no")))
//		{
//			template.setNull(EKU0011A010CBSMsg.KEY_KOJIAK_NO);
//		}
//		else
//		{
//			template.set(EKU0011A010CBSMsg.KEY_KOJIAK_NO, (String)ccMap.get("key_kojiak_no"));
//		}
		template.set(EKU0011A010CBSMsg.KEY_KOJIAK_NO, kjak_no);
		
		return template;
	}

	/**
	 * 工事案件一意照会の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @param inMap
	 * @param ccMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editOutMsgEKU0011A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> inMap
			, Map<String, Object> ccMap, String msglstNm, Map<String, Object> workMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// 結果を詰めるマップを取得。
		ArrayList dataList = null;
		
		templateArray = parentTemplate.getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);
		dataList = (ArrayList)inMap.get(msglstNm);
		  
		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(EKU0011A010CBSMsg1List.KOJIAK_NO)) {
					childMap.put("kojiak_no", new String());
				} else {
					childMap.put("kojiak_no", childTemplate.getString(EKU0011A010CBSMsg1List.KOJIAK_NO));
				}
				
				// 工事案件一意照会マップ.工事案件一意照会明細.工事案件種別コード ← 工事案件一意照会明細.工事案件種別コード
				if (childTemplate.isNull(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD)) {
					childMap.put("kojiak_sbt_cd", new String());
				} else {
					childMap.put("kojiak_sbt_cd", childTemplate.getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD));
				}
				// 工事案件一意照会マップ.工事案件一意照会明細.住所変更新設工事案件番号 ← 工事案件一意照会明細.住所変更新設工事案件番号
				if (childTemplate.isNull(EKU0011A010CBSMsg1List.AD_CHG_NEWESTA_KJAK_NO)) {
					childMap.put("ad_chg_newsta_kjak_no", new String());
				} else {
					childMap.put("ad_chg_newsta_kjak_no", childTemplate.getString(EKU0011A010CBSMsg1List.AD_CHG_NEWESTA_KJAK_NO));
				}
				// 工事案件一意照会マップ.工事案件一意照会明細.住所変更撤去工事案件番号 ← 工事案件一意照会明細.住所変更撤去工事案件番号
				if (childTemplate.isNull(EKU0011A010CBSMsg1List.AD_CHG_TEKKYO_KJAK_NO)) {
					childMap.put("ad_chg_tekkyo_kjak_no", new String());
				} else {
					childMap.put("ad_chg_tekkyo_kjak_no", childTemplate.getString(EKU0011A010CBSMsg1List.AD_CHG_TEKKYO_KJAK_NO));
				}
				// 工事案件一意照会マップ.工事案件一意照会明細.住所変更撤去工事案件番号 ← 工事案件一意照会明細.住所変更撤去工事案件番号
				if (childTemplate.isNull(EKU0011A010CBSMsg1List.PON_SBT_NM)) {
					childMap.put("pon_sbt_nm", new String());
				} else {
					childMap.put("pon_sbt_nm", childTemplate.getString(EKU0011A010CBSMsg1List.PON_SBT_NM));
					inMap.put("pon_sbt_cd_nm_ponnew", childTemplate.getString(EKU0011A010CBSMsg1List.PON_SBT_NM));
				}
			}
		}
		inMap.put(msglstNm, dataList);

		
		
		// リターンコード取得
		int returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);
		// エラー情報の設定
		editErrorInfoEKU0011A010(param, inMap, templates, returnCode);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = msgList.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status.intValue()))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
	}

	/**
	 * 工事案件一意照会のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfoEKU0011A010(IRequestParameterReadWrite param, Map<String, Object> inMap,
																CAANMsg[] templates, int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKU0011A010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		if (!template.isNull(EKU0011A010CBSMsg.KEY_KOJIAK_NO_ERR))
		{
			if (!inMap.containsKey(EKU0011A010CBSMsg.KEY_KOJIAK_NO_ERR))
			{
				inMap.put(EKU0011A010CBSMsg.KEY_KOJIAK_NO_ERR, template.getString(EKU0011A010CBSMsg.KEY_KOJIAK_NO_ERR));
			}
		}
		return param;
	}

	/**
	 * 工事案件＜eo光ネット＞一意照会のマッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInMsgEKU0021A010(IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> ccMap) throws RequestParameterException
	{
		// 工事案件＜eo光ネット＞一意照会サービスインターフェイスを作成
		CAANMsg template = new CAANMsg(EKU0021A010CBSMsg.class.getName());
		// テンプレートID
		template.set(EKU0021A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0021A010);
		// 機能コード
		template.set(EKU0021A010CBSMsg.FUNC_CODE, "1");
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
		// ◇ 業務データの設定
		// 機器提供サービス契約番号
		if(ccMap.get("key_kojiak_no") == null || "".equals(ccMap.get("key_kojiak_no")))
		{
			template.setNull(EKU0021A010CBSMsg.KEY_KOJIAK_NO);
		}
		else
		{
			template.set(EKU0021A010CBSMsg.KEY_KOJIAK_NO, (String)ccMap.get("key_kojiak_no"));
		}
		
		return template;
	}

	/**
	 * 工事案件＜eo光ネット＞一意照会の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @param inMap
	 * @param ccMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editOutMsgEKU0021A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> ccMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;
		// 結果を詰めるマップを取得
		ArrayList<HashMap<String, Object>> dataList = null;
		
		templateArray = parentTemplate.getCAANMsgList(EKU0021A010CBSMsg.EKU0021A010CBSMSG1LIST);
		dataList = (ArrayList)inMap.get("EKU0021A010CBSMsg1List");
		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 (templateArray != null) {
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.工事案件番号 ← 工事案件＜ｅｏ光ネット＞一意照会明細.工事案件番号
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.KOJIAK_NO)) {
						childMap.put("kojiak_no", new String());
					} else {
						childMap.put("kojiak_no", childTemplate.getString(EKU0021A010CBSMsg1List.KOJIAK_NO));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.工事範囲コード ← 工事案件＜ｅｏ光ネット＞一意照会明細.工事範囲コード
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.KOJI_SCOPE_CD)) {
						childMap.put("koji_scope_cd", new String());
					} else {
						childMap.put("koji_scope_cd", childTemplate.getString(EKU0021A010CBSMsg1List.KOJI_SCOPE_CD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.工事範囲名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.工事範囲名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.KOJI_SCOPE_NM)) {
						childMap.put("koji_scope_nm", new String());
					} else {
						childMap.put("koji_scope_nm", childTemplate.getString(EKU0021A010CBSMsg1List.KOJI_SCOPE_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.強制解約指示年月日 ← 工事案件＜ｅｏ光ネット＞一意照会明細.強制解約指示年月日
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.KYOSEI_DSL_SJI_YMD)) {
						childMap.put("kyosei_dsl_sji_ymd", new String());
					} else {
						childMap.put("kyosei_dsl_sji_ymd", childTemplate.getString(EKU0021A010CBSMsg1List.KYOSEI_DSL_SJI_YMD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.PCセットアップ有無 ← 工事案件＜ｅｏ光ネット＞一意照会明細.PCセットアップ有無
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.PC_SETUP_UM)) {
						childMap.put("pc_setup_um", new String());
					} else {
						childMap.put("pc_setup_um", childTemplate.getString(EKU0021A010CBSMsg1List.PC_SETUP_UM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.PCセットアップ有無名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.PCセットアップ有無名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.PC_SETUP_UM_NM)) {
						childMap.put("pc_setup_um_nm", new String());
					} else {
						childMap.put("pc_setup_um_nm", childTemplate.getString(EKU0021A010CBSMsg1List.PC_SETUP_UM_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話宅内工事有無 ← 工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話宅内工事有無
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.EOH_TEL_TAKNIKJ_UM)) {
						childMap.put("eoh_tel_taknikj_um", new String());
					} else {
						childMap.put("eoh_tel_taknikj_um", childTemplate.getString(EKU0021A010CBSMsg1List.EOH_TEL_TAKNIKJ_UM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話宅内工事有無名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話宅内工事有無名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.EOH_TEL_TAKNIKJ_UM_NM)) {
						childMap.put("eoh_tel_taknikj_um_nm", new String());
					} else {
						childMap.put("eoh_tel_taknikj_um_nm", childTemplate.getString(EKU0021A010CBSMsg1List.EOH_TEL_TAKNIKJ_UM_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.ファミリーパック契約有無 ← 工事案件＜ｅｏ光ネット＞一意照会明細.ファミリーパック契約有無
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.FAMIPA_KEI_UM)) {
						childMap.put("famipa_kei_um", new String());
					} else {
						childMap.put("famipa_kei_um", childTemplate.getString(EKU0021A010CBSMsg1List.FAMIPA_KEI_UM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.ファミリーパック契約有無名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.ファミリーパック契約有無名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.FAMIPA_KEI_UM_NM)) {
						childMap.put("famipa_kei_um_nm", new String());
					} else {
						childMap.put("famipa_kei_um_nm", childTemplate.getString(EKU0021A010CBSMsg1List.FAMIPA_KEI_UM_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.お客様SOS利用有無 ← 工事案件＜ｅｏ光ネット＞一意照会明細.お客様SOS利用有無
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.CUST_SOS_USE_UM)) {
						childMap.put("cust_sos_use_um", new String());
					} else {
						childMap.put("cust_sos_use_um", childTemplate.getString(EKU0021A010CBSMsg1List.CUST_SOS_USE_UM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.お客様SOS利用有無名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.お客様SOS利用有無名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.CUST_SOS_USE_UM_NM)) {
						childMap.put("cust_sos_use_um_nm", new String());
					} else {
						childMap.put("cust_sos_use_um_nm", childTemplate.getString(EKU0021A010CBSMsg1List.CUST_SOS_USE_UM_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.復活案件フラグ ← 工事案件＜ｅｏ光ネット＞一意照会明細.復活案件フラグ
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.HUKKAT_ANKEN_FLG)) {
						childMap.put("hukkat_anken_flg", new String());
					} else {
						childMap.put("hukkat_anken_flg", childTemplate.getString(EKU0021A010CBSMsg1List.HUKKAT_ANKEN_FLG));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.復活案件フラグ名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.復活案件フラグ名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.HUKKAT_ANKEN_FLG_NM)) {
						childMap.put("hukkat_anken_flg_nm", new String());
					} else {
						childMap.put("hukkat_anken_flg_nm", childTemplate.getString(EKU0021A010CBSMsg1List.HUKKAT_ANKEN_FLG_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.同一設備再申込コード ← 工事案件＜ｅｏ光ネット＞一意照会明細.同一設備再申込コード
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.SAME_EQUIP_RE_MSKM_CD)) {
						childMap.put("same_equip_re_mskm_cd", new String());
					} else {
						childMap.put("same_equip_re_mskm_cd", childTemplate.getString(EKU0021A010CBSMsg1List.SAME_EQUIP_RE_MSKM_CD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.同一設備再申込名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.同一設備再申込名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.SAME_EQUIP_RE_MSKM_NM)) {
						childMap.put("same_equip_re_mskm_nm", new String());
					} else {
						childMap.put("same_equip_re_mskm_nm", childTemplate.getString(EKU0021A010CBSMsg1List.SAME_EQUIP_RE_MSKM_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.工事予定カプラー方式コード ← 工事案件＜ｅｏ光ネット＞一意照会明細.工事予定カプラー方式コード
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.KOJI_RSV_COUPLER_HSK_CD)) {
						childMap.put("koji_rsv_coupler_hsk_cd", new String());
					} else {
						childMap.put("koji_rsv_coupler_hsk_cd", childTemplate.getString(EKU0021A010CBSMsg1List.KOJI_RSV_COUPLER_HSK_CD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.工事予定カプラー方式名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.工事予定カプラー方式名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.KOJI_RSV_COUPLER_HSK_NM)) {
						childMap.put("koji_rsv_coupler_hsk_nm", new String());
					} else {
						childMap.put("koji_rsv_coupler_hsk_nm", childTemplate.getString(EKU0021A010CBSMsg1List.KOJI_RSV_COUPLER_HSK_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.工事予定親PONメーカーコード ← 工事案件＜ｅｏ光ネット＞一意照会明細.工事予定親PONメーカーコード
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.KOJI_RSV_OYA_PON_MAKER_CD)) {
						childMap.put("koji_rsv_oya_pon_maker_cd", new String());
					} else {
						childMap.put("koji_rsv_oya_pon_maker_cd", childTemplate.getString(EKU0021A010CBSMsg1List.KOJI_RSV_OYA_PON_MAKER_CD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.工事予定親PONメーカー名 ← 工事案件＜ｅｏ光ネット＞一意照会明細.工事予定親PONメーカー名
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.KOJI_RSV_OYA_PON_MAKER_NM)) {
						childMap.put("koji_rsv_oya_pon_maker_nm", new String());
					} else {
						childMap.put("koji_rsv_oya_pon_maker_nm", childTemplate.getString(EKU0021A010CBSMsg1List.KOJI_RSV_OYA_PON_MAKER_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.工事予定VAメーカーコード ← 工事案件＜ｅｏ光ネット＞一意照会明細.工事予定VAメーカーコード
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.KOJI_RSV_VA_MAKER_CD)) {
						childMap.put("koji_rsv_va_maker_cd", new String());
					} else {
						childMap.put("koji_rsv_va_maker_cd", childTemplate.getString(EKU0021A010CBSMsg1List.KOJI_RSV_VA_MAKER_CD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.工事予定VAメーカー名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.工事予定VAメーカー名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.KOJI_RSV_VA_MAKER_NM)) {
						childMap.put("koji_rsv_va_maker_nm", new String());
					} else {
						childMap.put("koji_rsv_va_maker_nm", childTemplate.getString(EKU0021A010CBSMsg1List.KOJI_RSV_VA_MAKER_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.工事予定IP工事案件種別コード ← 工事案件＜ｅｏ光ネット＞一意照会明細.工事予定IP工事案件種別コード
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.KOJI_RSV_IP_KOJIAK_SBT_CD)) {
						childMap.put("koji_rsv_ip_kojiak_sbt_cd", new String());
					} else {
						childMap.put("koji_rsv_ip_kojiak_sbt_cd", childTemplate.getString(EKU0021A010CBSMsg1List.KOJI_RSV_IP_KOJIAK_SBT_CD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.工事予定IP工事案件種別名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.工事予定IP工事案件種別名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.KOJI_RSV_IP_KOJIAK_SBT_NM)) {
						childMap.put("koji_rsv_ip_kojiak_sbt_nm", new String());
					} else {
						childMap.put("koji_rsv_ip_kojiak_sbt_nm", childTemplate.getString(EKU0021A010CBSMsg1List.KOJI_RSV_IP_KOJIAK_SBT_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.解約希望年月日 ← 工事案件＜ｅｏ光ネット＞一意照会明細.解約希望年月日
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.DSL_KIBO_YMD)) {
						childMap.put("dsl_kibo_ymd", new String());
					} else {
						childMap.put("dsl_kibo_ymd", childTemplate.getString(EKU0021A010CBSMsg1List.DSL_KIBO_YMD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話番号1 ← 工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話番号1
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.EOH_TELNO_1)) {
						childMap.put("eoh_telno_1", new String());
					} else {
						childMap.put("eoh_telno_1", childTemplate.getString(EKU0021A010CBSMsg1List.EOH_TELNO_1));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無1 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無1
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_UM_1)) {
						childMap.put("bmp_um_1", new String());
					} else {
						childMap.put("bmp_um_1", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_UM_1));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無1名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無1名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_UM_1_NM)) {
						childMap.put("bmp_um_1_nm", new String());
					} else {
						childMap.put("bmp_um_1_nm", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_UM_1_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ予定年月日1 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ予定年月日1
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_RSV_YMD_1)) {
						childMap.put("bmp_rsv_ymd_1", new String());
					} else {
						childMap.put("bmp_rsv_ymd_1", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_RSV_YMD_1));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者コード1 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者コード1
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_CD_1)) {
						childMap.put("bmp_moto_tushin_jgs_cd_1", new String());
					} else {
						childMap.put("bmp_moto_tushin_jgs_cd_1", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_CD_1));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者名称1 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者名称1
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_NM_1)) {
						childMap.put("bmp_moto_tushin_jgs_nm_1", new String());
					} else {
						childMap.put("bmp_moto_tushin_jgs_nm_1", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_NM_1));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話番号2 ← 工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話番号2
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.EOH_TELNO_2)) {
						childMap.put("eoh_telno_2", new String());
					} else {
						childMap.put("eoh_telno_2", childTemplate.getString(EKU0021A010CBSMsg1List.EOH_TELNO_2));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無2 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無2
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_UM_2)) {
						childMap.put("bmp_um_2", new String());
					} else {
						childMap.put("bmp_um_2", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_UM_2));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無2名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無2名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_UM_2_NM)) {
						childMap.put("bmp_um_2_nm", new String());
					} else {
						childMap.put("bmp_um_2_nm", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_UM_2_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ予定年月日2 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ予定年月日2
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_RSV_YMD_2)) {
						childMap.put("bmp_rsv_ymd_2", new String());
					} else {
						childMap.put("bmp_rsv_ymd_2", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_RSV_YMD_2));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者コード2 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者コード2
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_CD_2)) {
						childMap.put("bmp_moto_tushin_jgs_cd_2", new String());
					} else {
						childMap.put("bmp_moto_tushin_jgs_cd_2", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_CD_2));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者名称2 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者名称2
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_NM_2)) {
						childMap.put("bmp_moto_tushin_jgs_nm_2", new String());
					} else {
						childMap.put("bmp_moto_tushin_jgs_nm_2", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_NM_2));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話番号3 ← 工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話番号3
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.EOH_TELNO_3)) {
						childMap.put("eoh_telno_3", new String());
					} else {
						childMap.put("eoh_telno_3", childTemplate.getString(EKU0021A010CBSMsg1List.EOH_TELNO_3));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無3 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無3
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_UM_3)) {
						childMap.put("bmp_um_3", new String());
					} else {
						childMap.put("bmp_um_3", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_UM_3));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無3名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無3名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_UM_3_NM)) {
						childMap.put("bmp_um_3_nm", new String());
					} else {
						childMap.put("bmp_um_3_nm", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_UM_3_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ予定年月日3 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ予定年月日3
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_RSV_YMD_3)) {
						childMap.put("bmp_rsv_ymd_3", new String());
					} else {
						childMap.put("bmp_rsv_ymd_3", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_RSV_YMD_3));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者コード3 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者コード3
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_CD_3)) {
						childMap.put("bmp_moto_tushin_jgs_cd_3", new String());
					} else {
						childMap.put("bmp_moto_tushin_jgs_cd_3", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_CD_3));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者名称3 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者名称3
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_NM_3)) {
						childMap.put("bmp_moto_tushin_jgs_nm_3", new String());
					} else {
						childMap.put("bmp_moto_tushin_jgs_nm_3", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_NM_3));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話番号4 ← 工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話番号4
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.EOH_TELNO_4)) {
						childMap.put("eoh_telno_4", new String());
					} else {
						childMap.put("eoh_telno_4", childTemplate.getString(EKU0021A010CBSMsg1List.EOH_TELNO_4));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無4 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無4
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_UM_4)) {
						childMap.put("bmp_um_4", new String());
					} else {
						childMap.put("bmp_um_4", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_UM_4));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無4名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無4名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_UM_4_NM)) {
						childMap.put("bmp_um_4_nm", new String());
					} else {
						childMap.put("bmp_um_4_nm", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_UM_4_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ予定年月日4 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ予定年月日4
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_RSV_YMD_4)) {
						childMap.put("bmp_rsv_ymd_4", new String());
					} else {
						childMap.put("bmp_rsv_ymd_4", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_RSV_YMD_4));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者コード4 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者コード4
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_CD_4)) {
						childMap.put("bmp_moto_tushin_jgs_cd_4", new String());
					} else {
						childMap.put("bmp_moto_tushin_jgs_cd_4", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_CD_4));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者名称4 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者名称4
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_NM_4)) {
						childMap.put("bmp_moto_tushin_jgs_nm_4", new String());
					} else {
						childMap.put("bmp_moto_tushin_jgs_nm_4", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_NM_4));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話番号5 ← 工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話番号5
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.EOH_TELNO_5)) {
						childMap.put("eoh_telno_5", new String());
					} else {
						childMap.put("eoh_telno_5", childTemplate.getString(EKU0021A010CBSMsg1List.EOH_TELNO_5));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無5 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無5
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_UM_5)) {
						childMap.put("bmp_um_5", new String());
					} else {
						childMap.put("bmp_um_5", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_UM_5));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無5名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ有無5名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_UM_5_NM)) {
						childMap.put("bmp_um_5_nm", new String());
					} else {
						childMap.put("bmp_um_5_nm", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_UM_5_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ予定年月日5 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ予定年月日5
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_RSV_YMD_5)) {
						childMap.put("bmp_rsv_ymd_5", new String());
					} else {
						childMap.put("bmp_rsv_ymd_5", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_RSV_YMD_5));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者コード5 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者コード5
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_CD_5)) {
						childMap.put("bmp_moto_tushin_jgs_cd_5", new String());
					} else {
						childMap.put("bmp_moto_tushin_jgs_cd_5", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_CD_5));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者名称5 ← 工事案件＜ｅｏ光ネット＞一意照会明細.番ポ元通信事業者名称5
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_NM_5)) {
						childMap.put("bmp_moto_tushin_jgs_nm_5", new String());
					} else {
						childMap.put("bmp_moto_tushin_jgs_nm_5", childTemplate.getString(EKU0021A010CBSMsg1List.BMP_MOTO_TUSHIN_JGS_NM_5));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.PLCモデムレンタル台数 ← 工事案件＜ｅｏ光ネット＞一意照会明細.PLCモデムレンタル台数
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.PLC_MODEM_RENT_CNT)) {
						childMap.put("plc_modem_rent_cnt", new String());
					} else {
						childMap.put("plc_modem_rent_cnt", childTemplate.getString(EKU0021A010CBSMsg1List.PLC_MODEM_RENT_CNT));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.PLCモデム買取台数 ← 工事案件＜ｅｏ光ネット＞一意照会明細.PLCモデム買取台数
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.PLC_MODEM_KAITORI_CNT)) {
						childMap.put("plc_modem_kaitori_cnt", new String());
					} else {
						childMap.put("plc_modem_kaitori_cnt", childTemplate.getString(EKU0021A010CBSMsg1List.PLC_MODEM_KAITORI_CNT));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話台数 ← 工事案件＜ｅｏ光ネット＞一意照会明細.eo光電話台数
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.EOH_TEL_CNT)) {
						childMap.put("eoh_tel_cnt", new String());
					} else {
						childMap.put("eoh_tel_cnt", childTemplate.getString(EKU0021A010CBSMsg1List.EOH_TEL_CNT));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.移設コード ← 工事案件＜ｅｏ光ネット＞一意照会明細.移設コード
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.ISETSU_CD)) {
						childMap.put("isetsu_cd", new String());
					} else {
						childMap.put("isetsu_cd", childTemplate.getString(EKU0021A010CBSMsg1List.ISETSU_CD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.移設名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.移設名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.ISETSU_NM)) {
						childMap.put("isetsu_nm", new String());
					} else {
						childMap.put("isetsu_nm", childTemplate.getString(EKU0021A010CBSMsg1List.ISETSU_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.旧料金コースコード ← 工事案件＜ｅｏ光ネット＞一意照会明細.旧料金コースコード
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.OLD_PCRS_CD)) {
						childMap.put("old_pcrs_cd", new String());
					} else {
						childMap.put("old_pcrs_cd", childTemplate.getString(EKU0021A010CBSMsg1List.OLD_PCRS_CD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.旧料金コース名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.旧料金コース名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.OLD_PCRS_NM)) {
						childMap.put("old_pcrs_nm", new String());
					} else {
						childMap.put("old_pcrs_nm", childTemplate.getString(EKU0021A010CBSMsg1List.OLD_PCRS_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.旧料金プランコード ← 工事案件＜ｅｏ光ネット＞一意照会明細.旧料金プランコード
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.OLD_PPLAN_CD)) {
						childMap.put("old_pplan_cd", new String());
					} else {
						childMap.put("old_pplan_cd", childTemplate.getString(EKU0021A010CBSMsg1List.OLD_PPLAN_CD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.旧料金プラン名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.旧料金プラン名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.OLD_PPLAN_NM)) {
						childMap.put("old_pplan_nm", new String());
					} else {
						childMap.put("old_pplan_nm", childTemplate.getString(EKU0021A010CBSMsg1List.OLD_PPLAN_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.旧割引タイプコード ← 工事案件＜ｅｏ光ネット＞一意照会明細.旧割引タイプコード
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.OLD_WRIB_TYPE_CD)) {
						childMap.put("old_wrib_type_cd", new String());
					} else {
						childMap.put("old_wrib_type_cd", childTemplate.getString(EKU0021A010CBSMsg1List.OLD_WRIB_TYPE_CD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.旧割引タイプ名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.旧割引タイプ名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.OLD_WRIB_TYPE_NM)) {
						childMap.put("old_wrib_type_nm", new String());
					} else {
						childMap.put("old_wrib_type_nm", childTemplate.getString(EKU0021A010CBSMsg1List.OLD_WRIB_TYPE_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.追加元サービス契約番号 ← 工事案件＜ｅｏ光ネット＞一意照会明細.追加元サービス契約番号
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.ADD_MOTO_SVC_KEI_NO)) {
						childMap.put("add_moto_svc_kei_no", new String());
					} else {
						childMap.put("add_moto_svc_kei_no", childTemplate.getString(EKU0021A010CBSMsg1List.ADD_MOTO_SVC_KEI_NO));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.面開発案件番号 ← 工事案件＜ｅｏ光ネット＞一意照会明細.面開発案件番号
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.MENKAIHAT_ANKEN_NO)) {
						childMap.put("menkaihat_anken_no", new String());
					} else {
						childMap.put("menkaihat_anken_no", childTemplate.getString(EKU0021A010CBSMsg1List.MENKAIHAT_ANKEN_NO));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.面開発工事コード ← 工事案件＜ｅｏ光ネット＞一意照会明細.面開発工事コード
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.MNKHT_KOJI_CD)) {
						childMap.put("mnkht_koji_cd", new String());
					} else {
						childMap.put("mnkht_koji_cd", childTemplate.getString(EKU0021A010CBSMsg1List.MNKHT_KOJI_CD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.面開発工事名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.面開発工事名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.MNKHT_KOJI_NM)) {
						childMap.put("mnkht_koji_nm", new String());
					} else {
						childMap.put("mnkht_koji_nm", childTemplate.getString(EKU0021A010CBSMsg1List.MNKHT_KOJI_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.電波障害案件番号 ← 工事案件＜ｅｏ光ネット＞一意照会明細.電波障害案件番号
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.DMPS_ANKEN_NO)) {
						childMap.put("dmps_anken_no", new String());
					} else {
						childMap.put("dmps_anken_no", childTemplate.getString(EKU0021A010CBSMsg1List.DMPS_ANKEN_NO));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.電波障害案件種別コード ← 工事案件＜ｅｏ光ネット＞一意照会明細.電波障害案件種別コード
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.DMPSANK_SBT_CD)) {
						childMap.put("dmpsank_sbt_cd", new String());
					} else {
						childMap.put("dmpsank_sbt_cd", childTemplate.getString(EKU0021A010CBSMsg1List.DMPSANK_SBT_CD));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.電波障害案件種別名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.電波障害案件種別名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.DMPSANK_SBT_NM)) {
						childMap.put("dmpsank_sbt_nm", new String());
					} else {
						childMap.put("dmpsank_sbt_nm", childTemplate.getString(EKU0021A010CBSMsg1List.DMPSANK_SBT_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.登録年月日時分秒 ← 工事案件＜ｅｏ光ネット＞一意照会明細.登録年月日時分秒
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.ADD_DTM)) {
						childMap.put("add_dtm", new String());
					} else {
						childMap.put("add_dtm", childTemplate.getString(EKU0021A010CBSMsg1List.ADD_DTM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.登録オペレータアカウント ← 工事案件＜ｅｏ光ネット＞一意照会明細.登録オペレータアカウント
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.ADD_OPEACNT)) {
						childMap.put("add_opeacnt", new String());
					} else {
						childMap.put("add_opeacnt", childTemplate.getString(EKU0021A010CBSMsg1List.ADD_OPEACNT));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.登録オペレータアカウント名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.登録オペレータアカウント名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.ADD_OPEACNT_NM)) {
						childMap.put("add_opeacnt_nm", new String());
					} else {
						childMap.put("add_opeacnt_nm", childTemplate.getString(EKU0021A010CBSMsg1List.ADD_OPEACNT_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.更新年月日時分秒 ← 工事案件＜ｅｏ光ネット＞一意照会明細.更新年月日時分秒
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.UPD_DTM)) {
						childMap.put("upd_dtm", new String());
					} else {
						childMap.put("upd_dtm", childTemplate.getString(EKU0021A010CBSMsg1List.UPD_DTM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.更新オペレータアカウント ← 工事案件＜ｅｏ光ネット＞一意照会明細.更新オペレータアカウント
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.UPD_OPEACNT)) {
						childMap.put("upd_opeacnt", new String());
					} else {
						childMap.put("upd_opeacnt", childTemplate.getString(EKU0021A010CBSMsg1List.UPD_OPEACNT));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.更新オペレータアカウント名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.更新オペレータアカウント名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.UPD_OPEACNT_NM)) {
						childMap.put("upd_opeacnt_nm", new String());
					} else {
						childMap.put("upd_opeacnt_nm", childTemplate.getString(EKU0021A010CBSMsg1List.UPD_OPEACNT_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.削除年月日時分秒 ← 工事案件＜ｅｏ光ネット＞一意照会明細.削除年月日時分秒
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.DEL_DTM)) {
						childMap.put("del_dtm", new String());
					} else {
						childMap.put("del_dtm", childTemplate.getString(EKU0021A010CBSMsg1List.DEL_DTM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.削除オペレータアカウント ← 工事案件＜ｅｏ光ネット＞一意照会明細.削除オペレータアカウント
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.DEL_OPEACNT)) {
						childMap.put("del_opeacnt", new String());
					} else {
						childMap.put("del_opeacnt", childTemplate.getString(EKU0021A010CBSMsg1List.DEL_OPEACNT));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.削除オペレータアカウント名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.削除オペレータアカウント名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.DEL_OPEACNT_NM)) {
						childMap.put("del_opeacnt_nm", new String());
					} else {
						childMap.put("del_opeacnt_nm", childTemplate.getString(EKU0021A010CBSMsg1List.DEL_OPEACNT_NM));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.無効フラグ ← 工事案件＜ｅｏ光ネット＞一意照会明細.無効フラグ
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.MK_FLG)) {
						childMap.put("mk_flg", new String());
					} else {
						childMap.put("mk_flg", childTemplate.getString(EKU0021A010CBSMsg1List.MK_FLG));
					}
					
					// 工事案件＜ｅｏ光ネット＞一意照会マップ.工事案件＜ｅｏ光ネット＞一意照会明細.無効フラグ名称 ← 工事案件＜ｅｏ光ネット＞一意照会明細.無効フラグ名称
					if (childTemplate.isNull(EKU0021A010CBSMsg1List.MK_FLG_NM)) {
						childMap.put("mk_flg_nm", new String());
					} else {
						childMap.put("mk_flg_nm", childTemplate.getString(EKU0021A010CBSMsg1List.MK_FLG_NM));
					}
				}
			}
		}
	
		inMap.put("EKU0021A010CBSMsg1List", dataList);
		
		
		// リターンコード取得
		int returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);
		// エラー情報の設定
		editErrorInfoEKU0021A010(param, inMap, templates, returnCode);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = msgList.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status.intValue()))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
	}

	/**
	 * 工事案件＜eo光ネット＞一意照会のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfoEKU0021A010(IRequestParameterReadWrite param, Map<String, Object> inMap,
																CAANMsg[] templates, int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKU0021A010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		if (!template.isNull(EKU0021A010CBSMsg.KEY_KOJIAK_NO_ERR))
		{
			if (!inMap.containsKey(EKU0021A010CBSMsg.KEY_KOJIAK_NO_ERR))
			{
				inMap.put(EKU0021A010CBSMsg.KEY_KOJIAK_NO_ERR, template.getString(EKU0021A010CBSMsg.KEY_KOJIAK_NO_ERR));
			}
		}
		return param;
	}


	/**
	 * SCインプット共通データ設定処理を行います。
	 * <br>
	 * @param param
	 * @param templates
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> getParamMsg(IRequestParameterReadWrite param, CAANMsg[] templates) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		/* SCインプット共通データ */
		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		
		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		
		// テンプレートリスト
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		
		return paramMap;
	}
	
	/* ++++++++++ v5.00.01 追加開始 ++++++++++ */
	/**
	 * 機器自動交換対象型式一覧照会（複合検索）のマッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInMsgEKK1651B001(IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> ccMap) throws RequestParameterException
	{
		// 機器自動交換対象型式一覧照会（複合検索）サービスインターフェイスを作成
		CAANMsg template = new CAANMsg(EKK1651B001CBSMsg.class.getName());
		// テンプレートID
		template.set(EKK1651B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1651B001);
		// 機能コード
		template.set(EKK1651B001CBSMsg.FUNC_CODE, "1");
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
		// ◇ 業務データの設定
		template.set(EKK1651B001CBSMsg.KEY_OPE_YMD, operateDate);
		
		if(ccMap.get("kktsv_pcrs_cd") == null || "".equals(ccMap.get("kktsv_pcrs_cd")))
		{
			template.setNull(EKK1651B001CBSMsg.KEY_KKTSV_PCRS_CD);
		}
		else
		{
			template.set(EKK1651B001CBSMsg.KEY_KKTSV_PCRS_CD, (String)ccMap.get("kktsv_pcrs_cd"));
		}
		if(ccMap.get("new_pcrs_speed_cd") == null || "".equals(ccMap.get("new_pcrs_speed_cd")))
		{
			template.setNull(EKK1651B001CBSMsg.KEY_CHAF_KIKI_SPEC_CD);
		}
		else
		{
			template.set(EKK1651B001CBSMsg.KEY_CHAF_KIKI_SPEC_CD, (String)ccMap.get("new_pcrs_speed_cd"));
		}
		if(ccMap.get("old_pcrs_speed_cd") == null || "".equals(ccMap.get("old_pcrs_speed_cd")))
		{
			template.setNull(EKK1651B001CBSMsg.KEY_CHBF_KIKI_SPEC_CD);
		}
		else
		{
			template.set(EKK1651B001CBSMsg.KEY_CHBF_KIKI_SPEC_CD, (String)ccMap.get("old_pcrs_speed_cd"));
		}
		return template;
	}

	/**
	 * 機器自動交換対象型式一覧照会（複合検索）の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @param inMap
	 * @param ccMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editOutMsgEKK1651B001(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> ccMap, String lstName) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;
		
		templateArray = parentTemplate.getCAANMsgList(EKK1651B001CBSMsg.EKK1651B001CBSMSG1LIST);
		// 結果を詰めるマップを取得
		ArrayList<HashMap<String, Object>> dataList = null;
		
		dataList = (ArrayList)inMap.get("EKK1651B001CBSMsg1List" + lstName);
		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		if (templateArray != null )
		{
			int cnt = 0;
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				String atkn_sbt_cd = "";
				String kktk_svc_cd = "";
				if (!childTemplate.isNull(EKK1651B001CBSMsg1List.ATKN_SBT_CD)) {
					atkn_sbt_cd = childTemplate.getString(EKK1651B001CBSMsg1List.ATKN_SBT_CD);
				}
				if (!childTemplate.isNull(EKK1651B001CBSMsg1List.KKTK_SVC_CD)) {
					kktk_svc_cd = childTemplate.getString(EKK1651B001CBSMsg1List.KKTK_SVC_CD);
				}
				if(!"001".equals(atkn_sbt_cd) || !"C014".equals(kktk_svc_cd))
				{
					continue;
				}
				
				
				if ( cnt >= dataList.size()) {
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(cnt);
				
				// 
				if (childTemplate.isNull(EKK1651B001CBSMsg1List.KKTSV_PCRS_CD)) {
					childMap.put("kktsv_pcrs_cd", new String());
				} else {
					childMap.put("kktsv_pcrs_cd", childTemplate.getString(EKK1651B001CBSMsg1List.KKTSV_PCRS_CD));
				}
				if (childTemplate.isNull(EKK1651B001CBSMsg1List.KKTSV_PPLAN_CD)) {
					childMap.put("kktsv_pplan_cd", new String());
				} else {
					childMap.put("kktsv_pplan_cd", childTemplate.getString(EKK1651B001CBSMsg1List.KKTSV_PPLAN_CD));
				}
				if (childTemplate.isNull(EKK1651B001CBSMsg1List.CHBF_TAKNKIKI_MODEL_CD)) {
					childMap.put("chbf_taknkiki_model_cd", new String());
				} else {
					childMap.put("chbf_taknkiki_model_cd", childTemplate.getString(EKK1651B001CBSMsg1List.CHBF_TAKNKIKI_MODEL_CD));
				}
				if (childTemplate.isNull(EKK1651B001CBSMsg1List.KOKAN_AF_TAKNKIKI_MODEL_CD)) {
					childMap.put("kokan_af_taknkiki_model_cd", new String());
				} else {
					childMap.put("kokan_af_taknkiki_model_cd", childTemplate.getString(EKK1651B001CBSMsg1List.KOKAN_AF_TAKNKIKI_MODEL_CD));
				}
				cnt++;
			}
		}
		
		inMap.put("EKK1651B001CBSMsg1List" + lstName, dataList);
		// リターンコード取得
		int returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);
		// エラー情報の設定
		editErrorInfoEKK1651B001(param, inMap, templates, returnCode);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = msgList.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status.intValue()))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
	}

	/**
	 * 機器自動交換対象型式一覧照会（複合検索）のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfoEKK1651B001(IRequestParameterReadWrite param, Map<String, Object> inMap,
																CAANMsg[] templates, int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK1651B001CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		if (!template.isNull(EKK1651B001CBSMsg.KEY_KKTSV_PCRS_CD_ERR))
		{
			if (!inMap.containsKey(EKK1651B001CBSMsg.KEY_KKTSV_PCRS_CD_ERR))
			{
				inMap.put(EKK1651B001CBSMsg.KEY_KKTSV_PCRS_CD_ERR, template.getString(EKK1651B001CBSMsg.KEY_KKTSV_PCRS_CD_ERR));
			}
		}
		if (!template.isNull(EKK1651B001CBSMsg.KEY_OPE_YMD_ERR))
		{
			if (!inMap.containsKey(EKK1651B001CBSMsg.KEY_OPE_YMD_ERR))
			{
				inMap.put(EKK1651B001CBSMsg.KEY_OPE_YMD_ERR, template.getString(EKK1651B001CBSMsg.KEY_OPE_YMD_ERR));
			}
		}
		if (!template.isNull(EKK1651B001CBSMsg.KEY_CHAF_KIKI_SPEC_CD))
		{
			if (!inMap.containsKey(EKK1651B001CBSMsg.KEY_CHAF_KIKI_SPEC_CD))
			{
				inMap.put(EKK1651B001CBSMsg.KEY_CHAF_KIKI_SPEC_CD, template.getString(EKK1651B001CBSMsg.KEY_CHAF_KIKI_SPEC_CD));
			}
		}
		if (!template.isNull(EKK1651B001CBSMsg.KEY_CHBF_KIKI_SPEC_CD))
		{
			if (!inMap.containsKey(EKK1651B001CBSMsg.KEY_CHBF_KIKI_SPEC_CD))
			{
				inMap.put(EKK1651B001CBSMsg.KEY_CHBF_KIKI_SPEC_CD, template.getString(EKK1651B001CBSMsg.KEY_CHBF_KIKI_SPEC_CD));
			}
		}
		return param;
	}
	
	/**
	 * 料金コース速度コード判定処理
	 * 
	 * @param pcrsCd 料金コースコード
	 * @return 料金コース速度コード
	 */
	private String judgePcrsSpeedCd(String pcrsCd)
	{
		String pcrsSpeedCd = "";
		boolean is100M = PCRS_CD_A03.equals(pcrsCd)
						|| PCRS_CD_A04.equals(pcrsCd)
						|| PCRS_CD_A06.equals(pcrsCd)
						|| PCRS_CD_A08.equals(pcrsCd)
						|| PCRS_CD_A09.equals(pcrsCd)
						|| PCRS_CD_A47.equals(pcrsCd)
						|| PCRS_CD_A48.equals(pcrsCd)
						|| PCRS_CD_A49.equals(pcrsCd)
						|| PCRS_CD_A50.equals(pcrsCd)
						|| PCRS_CD_A51.equals(pcrsCd)
						|| PCRS_CD_A52.equals(pcrsCd)
						|| PCRS_CD_A53.equals(pcrsCd)
						|| PCRS_CD_A54.equals(pcrsCd)
						|| PCRS_CD_A56.equals(pcrsCd);
		
		if (is100M)
		{
			pcrsSpeedCd = PCRS_SPEED_CD_100M;
		}
		else if (PCRS_CD_A07.equals(pcrsCd)
				|| PCRS_CD_A11.equals(pcrsCd))
		{
			pcrsSpeedCd = PCRS_SPEED_CD_200M;
		}
		else 
			if (PCRS_CD_A05.equals(pcrsCd)
				|| PCRS_CD_A10.equals(pcrsCd)
				|| PCRS_CD_A55.equals(pcrsCd)
				// ANK-3949-00-00 MOD START
			//	|| PCRS_CD_A57.equals(pcrsCd))
				|| PCRS_CD_A57.equals(pcrsCd)
				|| PCRS_CD_A91.equals(pcrsCd)
				|| PCRS_CD_A92.equals(pcrsCd))
				// ANK-3949-00-00 MOD END
		{
			pcrsSpeedCd = PCRS_SPEED_CD_1G;
		}
		// ANK-2612-00-00 2016/01/04 ADD START
		//ANK-4493-00-00 MOD START
		//else if (PCRS_CD_A83.equals(pcrsCd)
		else if (PCRS_CD_A74.equals(pcrsCd)
				||PCRS_CD_A83.equals(pcrsCd)
		//ANK-4493-00-00 MOD END
				// ANK-3949-00-00 MOD START
			//	|| PCRS_CD_A84.equals(pcrsCd))
				|| PCRS_CD_A84.equals(pcrsCd)
				|| PCRS_CD_A95.equals(pcrsCd)
				|| PCRS_CD_A96.equals(pcrsCd))
				// ANK-3949-00-00 MOD END
		{
			pcrsSpeedCd = PCRS_SPEED_CD_10G;
		}
		// ANK-2612-00-00 2016/01/04 ADD END
		return pcrsSpeedCd;
	}
	/* ++++++++++ v5.00.01 追加終了 ++++++++++ */
	/* ++++++++++ v5.00.02 追加開始 ++++++++++ */
	/**
	 * 工事案件対象宅内機器一覧照会のマッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInMsgEKU0141B010(IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> workMap) throws RequestParameterException
	{
		// 工事案件対象宅内機器一覧照会サービスインターフェイスを作成
		CAANMsg template = new CAANMsg(EKU0141B010CBSMsg.class.getName());
		// テンプレートID
		template.set(EKU0141B010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0141B010);
		// 機能コード
		template.set(EKU0141B010CBSMsg.FUNC_CODE, "1");
		//検索処理パターン
		template.set(EZM0411A010CBSMsg.SEARCH_TYPE, "1");
		//最大検索件数
		template.set(EZM0411A010CBSMsg.MAX_SEARCH_NUM, "999999");
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
		// ◇ 業務データの設定
		// 機器提供サービス契約番号
		if(workMap.get("work_kojiak_no") == null || "".equals(workMap.get("work_kojiak_no")))
		{
			template.setNull(EKU0141B010CBSMsg.KEY_KOJIAK_NO);
		}
		else
		{
			template.set(EKU0141B010CBSMsg.KEY_KOJIAK_NO, (String) workMap.get("work_kojiak_no"));
		}
		
		return template;
	}

	/**
	 * 工事案件対象宅内機器一覧照会の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @param inMap
	 * @param ccMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editOutMsgEKU0141B010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> ccMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;
		
		templateArray = parentTemplate.getCAANMsgList(EKU0141B010CBSMsg.EKU0141B010CBSMSG1LIST);
		// 結果を詰めるマップを取得
		ArrayList<HashMap<String, Object>> dataList = null;
		
		dataList = (ArrayList)inMap.get("EKU0141B010CBSMsg1List");
		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(EKU0141B010CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_STAT)) {
					childMap.put("kojiak_trgt_taknkiki_stat", new String());
				} else {
					childMap.put("kojiak_trgt_taknkiki_stat", childTemplate.getString(EKU0141B010CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_STAT));
				}
				if (childTemplate.isNull(EKU0141B010CBSMsg1List.STC_TEKKYO_FLG)) {
					childMap.put("stc_tekkyo_flg", new String());
				} else {
					childMap.put("stc_tekkyo_flg", childTemplate.getString(EKU0141B010CBSMsg1List.STC_TEKKYO_FLG));
				}
				if (childTemplate.isNull(EKU0141B010CBSMsg1List.TAKNKIKI_SBT_CD)) {
					childMap.put("taknkiki_sbt_cd", new String());
				} else {
					childMap.put("taknkiki_sbt_cd", childTemplate.getString(EKU0141B010CBSMsg1List.TAKNKIKI_SBT_CD));
				}
				if (childTemplate.isNull(EKU0141B010CBSMsg1List.RSV_TAKNKIKI_MODEL_CD)) {
					childMap.put("rsv_taknkiki_model_cd", new String());
				} else {
					childMap.put("rsv_taknkiki_model_cd", childTemplate.getString(EKU0141B010CBSMsg1List.RSV_TAKNKIKI_MODEL_CD));
				}
				if (childTemplate.isNull(EKU0141B010CBSMsg1List.KKTK_SVC_KEI_NO)) {
					childMap.put("kktk_svc_kei_no", new String());
				} else {
					childMap.put("kktk_svc_kei_no", childTemplate.getString(EKU0141B010CBSMsg1List.KKTK_SVC_KEI_NO));
				}
			}
		}
		
		inMap.put("EKU0141B010CBSMsg1List", dataList);

		// リターンコード取得
		int returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);
		// エラー情報の設定
		editErrorInfoEKU0141B010(param, inMap, templates, returnCode);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = msgList.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status.intValue()))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
	}

	/**
	 * 工事案件対象宅内機器一覧照会のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfoEKU0141B010(IRequestParameterReadWrite param, Map<String, Object> inMap,
																CAANMsg[] templates, int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKU0141B010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		if (!template.isNull(EKU0141B010CBSMsg.KEY_KOJIAK_NO_ERR))
		{
			if (!inMap.containsKey(EKU0141B010CBSMsg.KEY_KOJIAK_NO_ERR))
			{
				inMap.put(EKU0141B010CBSMsg.KEY_KOJIAK_NO_ERR, template.getString(EKU0141B010CBSMsg.KEY_KOJIAK_NO_ERR));
			}
		}
		return param;
	}
	/**
	 * 宅内機器型式一意照会のマッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInMsgEZM0411A010(IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> ccMap) throws RequestParameterException
	{
		// 宅内機器型式一意照会サービスインターフェイスを作成
		CAANMsg template = new CAANMsg(EZM0411A010CBSMsg.class.getName());
		// テンプレートID
		template.set(EZM0411A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0411A010);
		// 機能コード
		template.set(EZM0411A010CBSMsg.FUNC_CODE, "1");
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
		// ◇ 業務データの設定
		// 機器提供サービス契約番号

		if(ccMap.get("rsv_taknkiki_model_cd") == null || "".equals(ccMap.get("rsv_taknkiki_model_cd")))
		{
			template.setNull(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD);
		}
		else
		{
			template.set(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, (String) ccMap.get("rsv_taknkiki_model_cd"));
		}
		
		return template;
	}

	/**
	 * 宅内機器型式一意照会の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @param inMap
	 * @param ccMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editOutMsgEZM0411A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> ccMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;
		
		templateArray = parentTemplate.getCAANMsgList(EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST);
		// 結果を詰めるマップを取得
		ArrayList<HashMap<String, Object>> dataList = null;
		
		dataList = (ArrayList)ccMap.get("EZM0411A010CBSMsg1List");
		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(EZM0411A010CBSMsg1List.TAKNKIKI_MODEL_CD))
				{
					childMap.put("taknkiki_model_cd", "");
					inMap.put("taknkiki_model_cd", "");
				}
				else
				{
					childMap.put("taknkiki_model_cd", childTemplate.getString(EZM0411A010CBSMsg1List.TAKNKIKI_MODEL_CD));
					inMap.put("taknkiki_model_cd", childTemplate.getString(EZM0411A010CBSMsg1List.TAKNKIKI_MODEL_CD));
				}
				// 保有ルータコード
				if (childTemplate.isNull(EZM0411A010CBSMsg1List.HOYU_ROUTER_CD))
				{
					childMap.put("hoyu_router_cd", "");
					inMap.put("hoyu_router_cd", "");
				}
				else
				{
					childMap.put("hoyu_router_cd", childTemplate.getString(EZM0411A010CBSMsg1List.HOYU_ROUTER_CD));
					inMap.put("hoyu_router_cd", childTemplate.getString(EZM0411A010CBSMsg1List.HOYU_ROUTER_CD));
				}
				// ルータ速度種別コード
				if (childTemplate.isNull(EZM0411A010CBSMsg1List.ROUTER_SPEED_SBT_CD))
				{
					childMap.put("router_speed_sbt_cd", "");
					inMap.put("router_speed_sbt_cd", "");
				}
				else
				{
					childMap.put("router_speed_sbt_cd", childTemplate.getString(EZM0411A010CBSMsg1List.ROUTER_SPEED_SBT_CD));
					inMap.put("router_speed_sbt_cd", childTemplate.getString(EZM0411A010CBSMsg1List.ROUTER_SPEED_SBT_CD));
				}
				// 有料無料コード
				if (childTemplate.isNull(EZM0411A010CBSMsg1List.YRYO_MRYO_CD))
				{
					childMap.put("yryo_mryo_cd", "");
				}
				else
				{
					childMap.put("yryo_mryo_cd", childTemplate.getString(EZM0411A010CBSMsg1List.YRYO_MRYO_CD));
				}
				// ＯＰＭＳルーター種類コード
				if (childTemplate.isNull(EZM0411A010CBSMsg1List.OPMS_ROUTER_KIND_CD))
				{
					childMap.put("opms_router_kind_cd", "");
					inMap.put("opms_router_kind_cd", "");
				}
				else
				{
					childMap.put("opms_router_kind_cd", childTemplate.getString(EZM0411A010CBSMsg1List.OPMS_ROUTER_KIND_CD));
					inMap.put("opms_router_kind_cd", childTemplate.getString(EZM0411A010CBSMsg1List.OPMS_ROUTER_KIND_CD));
				}
			}
		}
		
		ccMap.put("EZM0411A010CBSMsg1List", dataList);
		// リターンコード取得
		int returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);
		// エラー情報の設定
		editErrorInfoEZM0411A010(param, inMap, templates, returnCode);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = msgList.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status.intValue()))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
	}
	/* ++++++++++ v5.00.02 追加終了 ++++++++++ */

	/**
	 * 宅内機器型式一意照会のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfoEZM0411A010(IRequestParameterReadWrite param, Map<String, Object> inMap,
																CAANMsg[] templates, int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EZM0411A010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		if (!template.isNull(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD_ERR))
		{
			if (!inMap.containsKey(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD_ERR))
			{
				inMap.put(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD_ERR, template.getString(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD_ERR));
			}
		}
		return param;
	}
	/**
	 * 業務パラメータを取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param keyword
	 * @return String
	 * @throws Exception
	 */
	private String getBuisinessParameter(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String keyword) throws Exception
	{
		// ***** EZM0321A010（業務パラメータ管理一意照会）*****
		Object[][] ezm0321a010IN = { { EZM0321A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0321A010 }
									, { EZM0321A010CBSMsg.FUNC_CODE, "1" }
									, { EZM0321A010CBSMsg.KEY_WORK_PARAM_ID, keyword } };

		CAANMsg[] ezm0321a010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ezm0321a010IN).getCAANMsgList(
				EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST);

		return ezm0321a010cbsMsg1list[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
	}
	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param mappingData
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callSC(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			Object[][] mappingData) throws Exception
	{
		HashMap<String, Object> paramMap = editInMsg(param, mappingData);

		Map<?, ?> result = scCall.run(paramMap, handle);

		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[0];

		// リターンコード取得
		Object return_code = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = msg.getInt(JCMConstants.STATUS_INT_KEY);

		editErrorInfoCom(param, templates, (Integer)return_code, dataMapKey, mappingData);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));

		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(return_code.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", return_code.toString(), status);
		}
		return msg;
	}
	/**
	 * @param param
	 * @param mappingData
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param, Object[][] mappingData) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		String svcIf = (String)mappingData[0][1];

		CAANMsg template = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg", svcIf));

		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));

		for (int i = 0; i < mappingData.length; i++)
		{
			if("".equals(mappingData[i][1]))
			{
				template.setNull((String)mappingData[i][0]);
			}
			else
			{
				template.set((String)mappingData[i][0], mappingData[i][1]);
			}
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @param dataMapKey
	 * @param mappingData
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoCom(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String dataMapKey,
			Object[][] mappingData) throws RequestParameterException
	{
		// 本来はサービスインターフェイス分の処理が必要
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if(returnCode != 0)
		{
			templateStatus = 9000;
		}

		if(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if(obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if(templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap<String, String> inMap = null;

		// ユーザデータ情報
		inMap = (HashMap<String, String>)param.getData(dataMapKey);

		for (int i = 0; i < mappingData.length; i++)
		{
			if(!template.isNull(mappingData[i][0] + "_err"))
			{
				if(!inMap.containsKey(mappingData[i][0] + "_err"))
				{
					inMap.put(mappingData[i][0] + "_err", template.getString(mappingData[i][0] + "_err"));
				}
			}
		}
		return param;
	}
	/* ++++++++++ v5.00.08 追加開始 ++++++++++ */
	/**
	 * 工事案件をチェック
	 * 
	 * @param EDK0011B080outList
	 * @param kojiakNo
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean hasHaisoKojiak(CAANMsg[] EDK0011B080outList, String kojiakNo)  throws Exception 
	{
		// データ情報		
		for (CAANMsg edk0011b080out : EDK0011B080outList)
		{
			if(kojiakNo != null && !"".equals(kojiakNo) && kojiakNo.equals(edk0011b080out.getString(EDK0011B080CBSMsg1List.KOJIAK_NO)))
			{
				return true;
			}
		}
		return false;
	}
	/* ++++++++++ v5.00.08 追加終了 ++++++++++ */

}
