/*********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom						 *
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JKKKikiAddCC
 *	ソースファイル名：JKKKikiAddCC.java
 *	作成者			：FJ
 *	日付			：2011年11月12日
 *＜機能概要＞
 *	機器登録の共通コンポーネント
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2011/11/12	FJ)古田		新規作成
 *	v3.00.00	2012/03/17	FJ)古田		宅内機器型式IF呼び出し追加
 *	v3.00.01	2012/03/27	FJ)古田		サービス契約内訳一意照会（EKK0161A010）呼び出し追加「割引CC」対応
 *	v3.00.02	2012/05/01	FJ)古田		IT2-2012-0000491反映
 *	v3.00.03	2012/05/25	FJ)古田		ST2-2012-0000996反映
 *	v4.00.00	2012/08/07	FJ)古田		項目削除と【ANK-0398-00-00】住所管理に伴う「例外登録」の管理追加対応
 *	v4.01.00	2012/12/01	FJ)鳩本		【IT1-2012-0002277】障害対応
 *	v4.02.00	2013/02/21	FJ)鳩本		【KT1-2013-0000162】障害対応
 *  v5.00.00    2013/02/23  FJ)辛       【ANK-1439-00-00】機器の「契約日」対応
 *	v4.03.00	2013/02/26	FJ)野口		【ST3-2013-0000040】住所最下層チェックWA対応
 *	v5.00.01	2013/03/04	FJ)古田		【ANK-1438-00-00】案件対応
 *	v5.00.02	2013/03/18	FJ)鳩本		【IT1-2013-0000518】案件対応
 *	v6.00.00	2013/12/20	FJ)中井		【OM-2013-0003981】案件対応
 *	v7.00.00	2014/01/19	FJ)古田		【IT1-2014-0000021】排他エラー
 *	v7.00.01	2014/02/07	FJ)田原		【OM-2014-0000474】
 *	v7.00.02	2014/03/25	FJ)中井		【OM-2014-0001137】
 *	v8.00.00	2014/04/10	FJ)田原		【OM-2014-0001035】
 *  v8.00.01	2014/05/29	FJ)田原	    【OM-2014-0001937】対応
 *  v8.00.02	2014/06/16	FJ)田原		【OM-2014-0002125】
 *  v9.00.00	2014/06/17	FJ)起塚	    【IT2-2014-0000248】対応
 *  v9.00.01	2014/07/09	FJ)田原		【OM-2014-0002198】
 *  v10.00.01	2014/08/09	FJ)小林		【ANK-2138-00-00】対応
 *  v10.00.02	2014/08/13	FJ)高井		【ANK-2138-00-00】対応
 *  v37.00.00	2018/06/29	FJ)吉田		【OM-2018-0000438】対応
 *  v39.00.00	2018/09/18	FJ)謝		【ANK-3488-00-00】４KSTB（ACASチップ）導入対応
 *  v39.00.01	2018/10/15	FJ)麻生		【ANK-3488-00-01】４KSTB（ACASチップ）導入対応
 *  v39.00.02	2018/10/17	FJ)麻生		【ANK-3488-00-02】４KSTB（ACASチップ）導入対応
 *  v52.00.00	2021/02/12	FJ)中原		【ANK-3991-00-00】STB新機種追加(2021年4月〜)
 *  v62.00.00	2022/11/09	FJ)原		【ANK-4335-00-00】ACAS対応新STB導入対応
 **********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.constant.JKKStrConst;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EDK0451A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EDK0451A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B019CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B019CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0121A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0121A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0121C040CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0181C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0181C020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0181D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341C040CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341C230CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0591B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0591B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0771A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0771A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0771B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0771B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1861B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1861B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2101B501CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0011B030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0081B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0081B010CBSMsg1List;
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 909994
 * 
 */
public class JKKKikiAddCC extends AbstractCommonComponent
{
	/**
	 * テンプレートID(EKK0081A010)サービス契約一意照会
	 */
	private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";

	/**
	 * テンプレートID(EKK0321B002)課金先一覧照会（請求契約番号/サービス契約番号）
	 */
	private static final String TEMPLATE_ID_EKK0321B002 = "EKK0321B002";

	/**
	 * テンプレートID(ECK0011A010)お客様一意照会
	 */
	private static final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";

	/**
	 * テンプレートID(EZM0321A010)業務パラメータ管理一意照会
	 */
	private static final String TEMPLATE_ID_EZM0321A010 = "EZM0321A010";

	/**
	 * テンプレートID(EZM0411A010)宅内機器型式一意照会
	 */
	private static final String TEMPLATE_ID_EZM0411A010 = "EZM0411A010";
	/**
	 * テンプレートID(EKK0771B001)機器提供サービス一覧照会
	 */
	private static final String TEMPLATE_ID_EKK0771B001 = "EKK0771B001";

	/**
	 * テンプレートID(EKK0591B003)料金プラン一覧照会
	 */
	private static final String TEMPLATE_ID_EKK0591B003 = "EKK0591B003";

	/**
	 * テンプレートID(EKK0181D010)サービス契約内訳<eo光TV>登録
	 */
	private static final String TEMPLATE_ID_EKK0181D010 = "EKK0181D010";

	/**
	 * テンプレートID(EKK0181C010)サービス契約内訳<eo光TV>照査
	 */
	private static final String TEMPLATE_ID_EKK0181C010 = "EKK0181C010";

	/**
	 * テンプレートID(EKK0251B003)サービス契約回線内訳一覧照会（現在利用中）
	 */
	private static final String TEMPLATE_ID_EKK0251B003 = "EKK0251B003";

	/**
	 * テンプレートID(EDK0451A010)引当棚一意照会
	 */
	private static final String TEMPLATE_ID_EDK0451A010 = "EDK0451A010";

	/**
	 * テンプレートID(EKK0341D010)機器提供サービス契約登録
	 */
	private static final String TEMPLATE_ID_EKK0341D010 = "EKK0341D010";

	/**
	 * テンプレートID(EKK0341C030)機器提供サービス契約照査
	 */
	private static final String TEMPLATE_ID_EKK0341C030 = "EKK0341C030";

	/**
	 * テンプレートID(EKK0121A010)サービス契約<eoモバイル>一意照会
	 */
	private static final String TEMPLATE_ID_EKK0121A010 = "EKK0121A010";

	/**
	 * テンプレートID(EKK0121C040)サービス契約<eoモバイル>情報変更
	 */
	private static final String TEMPLATE_ID_EKK0121C040 = "EKK0121C040";

	/**
	 * テンプレートID(EKK0771A010)機器提供サービス一意照会
	 */
	private static final String TEMPLATE_ID_EKK0771A010 = "EKK0771A010";

	/**
	 * テンプレートID(EKK0341A010)機器提供サービス契約一意照会
	 */
	private static final String TEMPLATE_ID_EKK0341A010 = "EKK0341A010";
	
	/* ++++++++++ v7.00.01 追加開始 ++++++++++ */
	/**
	 * テンプレートID(EKU0011A010)工事案件一意照会
	 */
	private static final String TEMPLATE_ID_EKU0011A010 = "EKU0011A010";
	/**
	 * テンプレートID(EKK0081B019)サービス申込時サービス契約一覧照会
	 */
	private static final String TEMPLATE_ID_EKK0081B019 = "EKK0081B019";
	/**
	 * テンプレートID(EKK2101B501)住所変更中住所変更明細一覧照会２
	 */
	private static final String TEMPLATE_ID_EKK2101B501 = "EKK2101B501";
	/**
	 *  テンプレートID(EKK1681B001)異動予約一覧照会
	 */
	private static final String TEMPLATE_ID_EKK1681B001 = "EKK1681B001";
	/* ++++++++++ v7.00.01 追加終了 ++++++++++ */
	
	/**
	 * テンプレートID(EKK0181C020)サービス契約内訳＜eo光TV＞締結
	 */
	private static final String TEMPLATE_ID_EKK0181C020 = "EKK0181C020";

	/**
	 * テンプレートID(EKK0341C040)機器提供サービス契約締結
	 */
	private static final String TEMPLATE_ID_EKK0341C040 = "EKK0341C040";

	/**
	 * テンプレートID(EKK0161A010)サービス契約内訳一意照会
	 */
	private static final String TEMPLATE_ID_EKK0161A010 = "EKK0161A010";

	/**
	 * テンプレートID(EKK1861B001)サービス別宅内機器型式候補一覧照会
	 */
	private static final String TEMPLATE_ID_EKK1861B001 = "EKK1861B001";

	/**
	 * テンプレートID(EKK0341C230)機器提供サービス契約一意照会
	 */
	private static final String TEMPLATE_ID_EKK0341C230 = "EKK0341C230";
	
	/* ++++++++++ v5.00.01 変更開始 ++++++++++ */
	/**
	 * テンプレートID(EKU0081B010)サービス契約_工事案件一覧照会
	 */
	private static final String TEMPLATE_ID_EKU0081B010 = "EKU0081B010";
	
	/**
	 * テンプレートID(EKK0251A010)サービス契約回線内訳一意照会
	 */
	private static final String TEMPLATE_ID_EKK0251A010 = "EKK0251A010";
	
	/* ++++++++++ v5.00.01 変更完了 ++++++++++ */
	/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
	/** 工事案件一覧照会（複合検索） */
	private static final String TEMPLATE_ID_EKU0011B030 = "EKU0011B030";
	/* ++++++++++ v8.00.00 追加終了 ++++++++++ */
	
	/**
	 * 業務パラメータ管理検索ID （サービス契約内訳の親機器提供サービスコード取得キー）
	 */
	private static final String WORK_PARAM_OYA_SVC_UCWK = "KK_OYA_SKBT_SVC_UCWK";

	/**
	 * 業務パラメータ管理検索ID （サービス契約回線内訳の親機器提供サービスコード取得キー）
	 */
	private static final String WORK_PARAM_OYA_KSN_UCWK = "KK_OYA_SKBT_KSN_UCWK";

	/**
	 * 業務パラメータ管理検索ID （STB機器の機器提供サービスコード取得キー）
	 */
	private static final String WORK_PARAM_STB_KKTK_SVC = "KK_STB_KKTK_SVC_CD";

	/**
	 * 業務パラメータ管理検索ID （B-CAS・C-CAS料金グループコード取得キー）
	 */
	private static final String WORK_PARAM_BCCAS_PRC_GRP_CD = "KK_BCCAS_PRC_GRP_CD";

	/**
	 * 業務パラメータ管理検索ID （B-CAS宅内機器種別コード取得キー）
	 */
	private static final String WORK_PARAM_BCAS_TNK_SBT_CD = "KK_BCAS_TNK_SBT_CD";

	/**
	 * 業務パラメータ管理検索ID （C-CAS宅内機器種別コード取得キー）
	 */
	private static final String WORK_PARAM_CCAS_TNK_SBT_CD = "KK_CCAS_TNK_SBT_CD";
	
	/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
	/**
	 * 業務パラメータ取得KEY_機器追加工事案件種別コード
	 */
	private static final String KK_KIKI_ADD_KJAK_SBT = "KK_KIKI_ADD_KJAK_SBT";
	/* ++++++++++ v8.00.00 追加終了 ++++++++++ */
	
	/**
	 * 作業領域の共通領域より取得するキー
	 * 
	 */
	private static final String WORK_COM = "COMMONWORK";

	/**
	 * 機器登録を行う際に処理する機器情報のパラメータ を取得するキー 
	 * （B-CAS、C-CAS）登録時に画面からのパラーメタを操作して設定 それ以外は画面からのパラメータをそのまま転機
	 */
	private static final String KK_TOROKU_WORK = "KK_TOROKU_WORK";

	/**
	 * サービス契約ステータス（受付済）
	 */
	private static final String SVC_KEI_STAT_UKZUMI = "010";

	/**
	 * サービス契約ステータス（締結済）
	 */
	private static final String SVC_KEI_STAT_TEIZUMI = "030";

	/**
	 * サービス契約ステータス（サービス提供中）
	 */
	private static final String SVC_KEI_STAT_TKCHU = "100";

	/**
	 * 配送作成済フラグ（配送未作成）
	 */
	private static final String HAISO_SAKUSEI_MI = "0";

	/**
	 * 親契約識別コード （サービス契約）
	 */
	private static final String OYA_KEI_SKBT_CD_SVC_KEI = "01";

	/**
	 * 親契約識別コード （サービス契約回線内訳）
	 */
	private static final String OYA_KEI_SKBT_CD_SVC_KSN_UCWK = "02";

	/**
	 * 親契約識別コード （サービス契約内訳）
	 */
	private static final String OYA_KEI_SKBT_CD_SVC_UCWK = "03";

	/**
	 *機器提供サービスコード（B-CAS）
	 */
	private static final String KKTK_SVC_CD_BCAS = "C010";

	/**
	 *機器提供サービスコード（C-CAS）
	 */
	private static final String KKTK_SVC_CD_CCAS = "C011";

	/**
	 *機器登録CC内で使用するサービス契約の更新タイムスタンプ格納キー
	 */
	private static final String KK_COM_SVC_UP_DTM = "KK_COM_SVC_UP_DTM";

	/**
	 * 機能コード（チェック＆登録）
	 */
	private static final String FUNC_CODE_EXEC = "1";

	/**
	 * 工事CC連携用データ格納キー
	 */
	private static final String KOJI_RENKEI_MAP_KEY = "kojifixtext";

	/**
	 * HDD容量コード設定判別用機器提供サービスコード（この配列のサービスコードの場合設定しない。） 「B-CAS、C-CAS」
	 */
	private static final String[] HDD_CAPA_NO_INPUT_SVC_CD =
	{ "C010", "C011" };

	/** 処理対象リスト格納キー */
	private static final String SHORI_LIST_ICHIRAN = "IchiranShoriList";
	/** 更新後リスト（処理対象リスト）格納キー */
	private static final String SHORI_LIST_KIKILIST_AF = "kikiList_af";
	/** 提供種別（持込） */
	private static final String TEIKYO_SBT_MOCHIKOMI = "03";

	/** 管理場所識別コード(倉庫) */
	private static final String KRIPLACE_SKCD_SOKO = "1";
	/** 管理場所識別コード(工事会社) */
	private static final String KRIPLACE_SKCD_KOJI = "2";
	/** 管理場所識別コード(預託先オフィス) */
	private static final String KRIPLACE_SKCD_OFFICE = "3";

	/** 倉庫コードのデフォルト値 */
	private static final String DEFAULT_SOKO_CD = "000001";
	
	/** 照査解約完了コード（照査OK） */
	private static final String SHOSA_DSL_FIN_CD_OK = "1";
	
	/* ++++++++++ v4.01.00 追加開始 ++++++++++ */
	private static final String GET_PPLAN_CD_CC = "JKKKikiPplanCdGetCC";
	
	/** TVコース料金プランコード */
	private static final String TV_PPLAN_CD = "tv_pplan_cd";
	/* ++++++++++ v4.01.00 追加修正 ++++++++++ */
	/* ++++++++++ v7.00.00 変更開始 ++++++++++ */
	/** サービス契約回線内訳更新タイムスタンプ */
	private static final String KIKIADD_SVC_KEI_KAISEN_UCWK_NO_UPD_DTM = "KIKIADD_SVC_KEI_KAISEN_UCWK_NO_UPD_DTM";
	/* ++++++++++ v7.00.00 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.01 追加開始 ++++++++++ */
	/** 異動区分（コース変更） */
	public static final String IDO_DIV_VALUE_00009 = "00009";
	/** 異動区分（住所変更・登録） */
	public static final String IDO_DIV_VALUE_00019 = "00019";
	/** 異動予約詳細コード（解約予約） */
	public static final String IDO_RSV_DTL_CD_VALUE_013 = "013";
	/** 異動予約詳細コード（コース変更） */
	public static final String IDO_RSV_DTL_CD_VALUE_003 = "003";
	/** 異動予約状態コード（未反映）*/
	public static final String IDO_RSV_STAT_CD_VALUE_00 = "00";
	/** 異動予約状態コード（予約手続中）*/
	public static final String IDO_RSV_STAT_CD_VALUE_03 = "03";
	/* ++++++++++ v7.00.01 追加終了 ++++++++++ */
	
	/* ++++++++++ v8.00.02 追加開始 ++++++++++ */
	/** サービス契約ステータス（休止・中断中）*/
	private static final Object SVC_KEI_STAT_KYUSHI = "210";
	/** サービス契約ステータス（停止中）*/
	private static final Object SVC_KEI_STAT_TEISHI = "220";
	/* ++++++++++ v8.00.02 追加終了 ++++++++++ */
	
	/**
	 * 機器情報の登録処理を行います。
	 * 
	 * <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite addKikiInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{

		// データ情報
		Map<String, Object> dataMap = (HashMap<String, Object>)param.getData(fixedText);

		// サービス契約更新前タイムスタンプを共通領域に格納します。
		setInitSvcUpdate(param, dataMap);

		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// サービス契約一意照会
		execEKK0081A010(handle, param, scCall, dataMap);

		// 課金先一覧照会（請求契約番号/サービス契約番号）
		execEKK0321B002(handle, param, scCall, dataMap);

		// お客様一意照会
		execECK0011A010(handle, param, scCall, dataMap);

		// 業務パラメータ管理一意照会
		setGyomuParam(handle, param, scCall, dataMap);

		/* ++++++++++ v5.00.01 削除開始 ++++++++++ */
		// 工事案件番号が入力されている場合
//		if(!"".equals(getNullToStr((String)dataMap.get("kojiak_no"))))
//		{
//			// 工事案件一意照会
//			execEKU0011A010(handle, param, scCall, dataMap);
//		}
		/* ++++++++++ v5.00.01 削除完了 ++++++++++ */

		/* ++++++++++ v5.00.01 変更開始 ++++++++++ */
		//機器単位で工事案件番号が設定されるためループ内に移動
//		// サービス契約回線内訳一覧照会（現在利用中）
//		execEKK0251B003(handle, param, scCall, dataMap);
		/* ++++++++++ v5.00.01 変更完了 ++++++++++ */

		// 機器のリスト取得
		ArrayList<HashMap<String, Object>> kiki_list = (ArrayList)dataMap.get("kiki_list");

		Map<String, Object> parentdata = null;

		for (int i = 0; i < kiki_list.size(); i++)
		{
			// MAPのクリア
			clearWorkData(param);

			parentdata = kiki_list.get(i);

// ANK-3488-00-00 ADD START
			String hddCapaCd = "";
// ANK-3488-00-00 ADD END
			// 宅内機器型式コードが入力されている場合
			if(!"".equals(getNullToStr((String)parentdata.get("taknkiki_model_cd"))))
			{
				// 宅内機器型式一意照会
				execEZM0411A010(handle, param, scCall, dataMap, parentdata);
// ANK-3488-00-00 ADD START
				Map<Object, Object> workMap = param.getMappingWorkArea();
				hddCapaCd = getNullToStr((String)((Map<String, Object>)workMap.get(TEMPLATE_ID_EZM0411A010 + "WORK")).get("hdd_capa_cd"));
// ANK-3488-00-00 ADD END

				// 機器提供サービス一覧照会（機器提供サービスコードを取得）
				execEKK0771B001(handle, param, scCall, dataMap, parentdata);
			}
			else
			{
				// 機器提供サービス一意照会（宅内機器種別コードを取得）
				execEKK0771A010(handle, param, scCall, dataMap, parentdata);

				// 後の処理でTEMPLATE_ID_EZM0411A010より宅内機器種別コードを取得するため
				// TEMPLATE_ID_EKK0771A010よりTEMPLATE_ID_EZM0411A010へ転記します。

				// 作業領域の取得
				Map<Object, Object> workMap = param.getMappingWorkArea();

				// ワーク領域に格納します。
				Map<String, Object> ekk0771a010Work = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0771A010 + "WORK");

				String taknkikiSbtCd = (String)ekk0771a010Work.get(EKK0771A010CBSMsg1List.TAKNKIKI_SBT_CD);

				// 検索結果格納Map
				Map<String, Object> ezm0411a010Map = new HashMap<String, Object>();

				// ワーク領域に格納します。
				workMap.put(TEMPLATE_ID_EZM0411A010 + "WORK", ezm0411a010Map);

				// 宅内機器種別コード
				ezm0411a010Map.put("taknkiki_sbt_cd", taknkikiSbtCd);

			}
			
			/* ++++++++++ v5.00.01 変更開始 ++++++++++ */
			//機器単位で工事案件番号が設定されるためループ内に移動
			// 工事案件番号が設定されている場合、工事を検索しサービス契約回線内訳
			if(!"".equals(getNullToStr((String)parentdata.get("kojiak_no"))))
			{
				// 工事よりサービス契約回線番号を取得します。
				getKaisenUcwkInfo(handle, scCall, param, dataMap, parentdata, fixedText);
			}
			else
			{
				// サービス契約回線内訳一覧照会（現在利用中）
				execEKK0251B003(handle, param, scCall, dataMap);
			}
			/* ++++++++++ v5.00.01 変更完了 ++++++++++ */
			
			/* ++++++++++ v7.00.00 変更開始 ++++++++++ */
			// サービス契約回線内訳の更新タイムスタンプを取得します。
			// 回線に紐づく機器を登録する場合、設定します。
			setSvcKeiKaisenUcwkUpdateTime(handle, scCall, param, dataMap, parentdata, fixedText);
			/* ++++++++++ v7.00.00 変更完了 ++++++++++ */

			// 以降の処理で使用するMapをセットします。
			// （パラメータ指定のデータとB-CAS、C-CASデータを登録する際同じメソッドを使用するためにMap「KK_TOROKU_WORK」に格納）
			setKikisyoriWorkMap(param, dataMap, parentdata);
			
			/* ++++++++++ v7.00.01 追加開始 ++++++++++ */
			// 工事受付契機異動区分を取得します。
			getKojiUkOptntyIdoDiv(handle, scCall, param, dataMap, parentdata, fixedText);
			/* ++++++++++ v7.00.01 追加終了 ++++++++++ */
			
			// STB機器判定
			if(isStbKiki(param))
			{

				execStbKikiShori(handle, param, scCall, dataMap, parentdata);
			}
			else
			{
				execStbOtherShori(handle, param, scCall, dataMap, parentdata);
			}

// // 料金プラン一覧照会
// execEKK0591B003(handle, param, scCall, dataMap, parentdata, PPLAN_EXE_FLG_KK_SVC_KEI);

			Map<Object, Object> workMap = param.getMappingWorkArea();

			// 共通で格納している領域より取得
			Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);
			String kktk_sbt_cd = getNullToStr((String)kkTorokuWork.get("kktk_sbt_cd"));
			// 提供種別コード(持込以外の場合)
			if(!TEIKYO_SBT_MOCHIKOMI.equals(kktk_sbt_cd))
			{
				// 引当棚一意照会
				execEDK0451A010(handle, param, scCall, dataMap, parentdata);
			}
			else
			{
				// ワーク領域に格納します。
				workMap.put(TEMPLATE_ID_EDK0451A010 + "WORK", null);
				// 空白を設定
				parentdata.put("soko_tana_cd", "");
				parentdata.put("soko_tana_nm", "");

			}

			// 以下の処理はこれより前の処理で採番された値を使用するためチェックモードでは呼び出しません。
			// EKK0341D010（エラー：kktk_svc_cd_err=EE）
			if(FUNC_CODE_EXEC.equals(dataMap.get("func_code")))
			{
				// 機器提供サービス契約登録
				execEKK0341D010(handle, param, scCall, dataMap, parentdata);

				// サービス開始時配送状況識別コードがある場合
				if(!"".equals(getNullToStr((String)parentdata.get("svcStaJiHisJokyoSkcd"))))
				{
					// 機器提供サービス契約データ取得
					HashMap<String, String> hashMap = execEKK0341A010_Haiso(handle, param, scCall, dataMap, parentdata);

					// 検索してきた値を更新用のパラメータに格納
					HashMap<String, String> ekk0341c230IN = getInputMap(hashMap, TEMPLATE_ID_EKK0341C230);

					ekk0341c230IN.put(EKK0341C230CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341C230);
					ekk0341c230IN.put(EKK0341C230CBSMsg.FUNC_CODE, (String)dataMap.get("func_code"));
					ekk0341c230IN.put(EKK0341C230CBSMsg.SVC_STA_JI_HIS_JOKYO_SKCD, (String)parentdata.get("svcStaJiHisJokyoSkcd"));
					ekk0341c230IN.put(EKK0341C230CBSMsg.UPD_DTM_BF, getSvcUpDtm(param));

					// 更新用のHashMapを二次元配列に格納
					Object[][] arraysParam = getArraysParam(ekk0341c230IN, EKK0341C230CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341C230);

					CAANMsg ekk0341c230cbsMsg_out = callSC(handle, scCall, param, dataMap, arraysParam);

					// 更新年月日時分秒（サービス契約）
					// 更新日付を共通領域に格納
					setSvcUpDtm(param, ekk0341c230cbsMsg_out.getString(EKK0341C230CBSMsg.UPD_DTM));
				}

				if(!isUketuke(param))
				{
					// 機器提供サービス契約照査(受付済判定 受付済以外の場合)
					execEKK0341C030(handle, param, scCall, dataMap, parentdata);
				}

// // 締結済更新判断
// if(isTeiketuJikko(param,dataMap))
// {
// execEKK0341C040(handle, param, scCall, dataMap, parentdata);
// }

				// 機器提供サービス契約データ取得
				execEKK0341A010(handle, param, scCall, dataMap, parentdata);

				// 機器提供サービス契約番号を「機器提供サービス契約変更画面」のMapへセットします。
				setKktkSvcKeiNo(param);

				// STBの場合、B-CAS・C-CASの登録を行います。
				if(isStbKiki(param))
				{
					// ANK-3488-00-01 ADD START
					// 宅内機器型式コードが入力されていない場合
					if (JKKStringUtil.isNullBlank((String)parentdata.get("taknkiki_model_cd")))
					{
						// ANK-3488-00-02 MOD START
//						List<Map<String, Object>> createList = (List<Map<String, Object>>)dataMap.get("create_list");
//						if (createList != null && createList.size() > 0)
//						{
//							Map<String, Object> ekk0341a010Map = (Map<String, Object>)createList.get(0);
//							if (ekk0341a010Map != null)
//							{
//								// 機器提供サービス契約一意照会の結果からHDD容量コードを設定
//								hddCapaCd = JKKStringUtil.nullToBlank((String)ekk0341a010Map.get(EKK0341A010CBSMsg1List.HDD_CAPA_CD));
//							}
//						}
						hddCapaCd = getHddCapaCd(param);
						// ANK-3488-00-02 MOD END
					}
					// ANK-3488-00-01 ADD END
// ANK-3488-00-00 MOD START
//					execCreateStbFuzokuData(handle, param, scCall, dataMap, parentdata);
					// 4K-STB機器フラグ true:4K-STB機器 false:4K-STB機器以外
					boolean fourKStbKkFlg = false;
					
					// Ｂ−ＣＡＳ不要ＨＤＤ容量コード取得
					List<String> hddCapaBcasnoneList = Arrays.asList(getBuisinessParameter(handle, scCall, param, dataMap, JKKStrConst.KK_HDD_CAPA_BCASNONE).split(","));
					if (hddCapaBcasnoneList.contains(hddCapaCd))
					{
						fourKStbKkFlg = true;
					}
					execCreateStbFuzokuData(handle, param, scCall, dataMap, parentdata, fourKStbKkFlg);
// ANK-3488-00-00 MOD END
				}
			}

		}

		return param;
	}

	/**
	 * サービス契約一意照会サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param outDataMap 検索結果格納Map
	 * @throws Exception
	 */
	private void execEKK0081A010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0081A010(param, dataMap);

		// ◇ SC呼出実行 (サービス契約一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0081A010(result, param, dataMap);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * サービス契約一意照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EKK0081A010(IRequestParameterReadWrite param, Map<String, Object> inMap)
			throws RequestParameterException
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0081A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0081A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081A010);

		template.set(EKK0081A010CBSMsg.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(inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}

		// 運用日付
		template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, (String)inMap.get("stdardymd"));

		// ＫＥＹ＿世代登録年月日時分秒
		template.setNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * サービス契約一意照会検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0081A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap)
			throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		if(workMap == null)
		{
			workMap = new HashMap<Object, Object>();
			param.setMappingWorkArea(workMap);
		}

		// 検索結果格納Map
		Map<String, Object> ekk0081a010Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0081A010 + "WORK", ekk0081a010Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);

		// 検索結果をMapに格納します。
		if(templateArray != null && templateArray.length > 0)
		{

			// サービス契約ステータス
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.SVC_KEI_STAT);

			// SYSID
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.SYSID);

			// ID速報書出力要否
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.ID_SOKHOSHO_OUTPUT_YH);

			// 審査結果コード
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.SKEKKA_CD);

			// 審査結果詳細コード
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.SKEKKA_DTL_CD);

			// 審査結果補記コード
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.SKEKKA_HOKI_CD);

			// 審査結果送信コード
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.SKEKKA_SEND_CD);

			// 支払い方法継続フラグ
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.PAYWAY_KEIZOKU_FLG);

			// 試用加入年月日
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.FTRIAL_KANYU_YMD);

			// 試用期間終了年月日
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.FTRIAL_PRD_ENDYMD);

			// 本加入年月日
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.HONKANYU_YMD);

			// 本加入移行期限年月日
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.HONKANYU_IKO_KIGEN_YMD);

			// レター発送仕分区分
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.LETTER_HASSO_SHIWAKE_DIV);

			// サンキューレター送付先コード
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.THNX_LETTER_SHS_CD);

			// WEBオプション追加不可フラグ
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.WEB_OP_ADD_FAIL_FLG);

			// 違約金発生コード
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.PNLTY_HASSEI_CD);

			// 業務連絡備考
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.WORK_RRK_BIKO);

			// 異動NG状態コード
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.IDO_NG_STAT_CD);

			// 紹介コード
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.INTR_CD);

			// 自動照査処理状態コード
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.AUTO_SHOSA_TRAN_STAT_CD);
			// 整理番号
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.SEIRI_NO);
			// 面開発案件番号
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.MENKAIHAT_ANKEN_NO);

			// 申込明細番号
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.MSKM_DTL_NO);
			
			/* ++++++++++ v4.01.00 追加開始 ++++++++++ */
			// 提供方式契約番号
			setDataMap(ekk0081a010Map, templateArray[0], EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO);
			/* ++++++++++ v4.01.00 追加終了 ++++++++++ */
		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0081A010(param, dataMap, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * サービス契約一意照会エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0081A010(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);
		if(returnCode != 0)
		{
			templateStatus = 9000;
		}

		if(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if(obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if(templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		// ＫＥＹ＿サービス契約番号
		setErrDataMap(inMap, template, EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR);

		// ＫＥＹ＿世代登録年月日時分秒
		setErrDataMap(inMap, template, EKK0081A010CBSMsg.KEY_GENE_ADD_DTM_ERR);

		// ＫＥＹ＿予約適用年月日
		setErrDataMap(inMap, template, EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR);

		return param;
	}

	/**
	 * 課金先一覧照会（請求契約番号/サービス契約番号）サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @throws Exception
	 */
	private void execEKK0321B002(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0321B002(param, dataMap);

		// ◇ SC呼出実行 (サービス契約一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0321B002(result, param, dataMap);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * 課金先一覧照会（請求契約番号/サービス契約番号）のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EKK0321B002(IRequestParameterReadWrite param, Map<String, Object> inMap)
			throws RequestParameterException
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0321B002CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0321B002CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0321B002);

		template.set(EKK0321B002CBSMsg.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(EKK0321B002CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321B002CBSMsg.KEY_SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}

		// ＫＥＹ＿請求契約番号
		template.setNull(EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 課金先一覧照会（請求契約番号/サービス契約番号）検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0321B002(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap)
			throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0321b002Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0321B002 + "WORK", ekk0321b002Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0321B002CBSMsg.EKK0321B002CBSMSG1LIST);

		// 検索結果をMapに格納します。
		if(templateArray != null && templateArray.length > 0)
		{

			// 請求契約番号
			setDataMap(ekk0321b002Map, templateArray[0], EKK0321B002CBSMsg1List.SEIKY_KEI_NO);

		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0321B002(param, dataMap, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * 課金先一覧照会（請求契約番号/サービス契約番号）エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0321B002(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0321B002CBSMsg.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);
		}

		// ＫＥＹ＿サービス契約番号
		setErrDataMap(inMap, template, EKK0321B002CBSMsg.KEY_SVC_KEI_NO_ERR);

		// ＫＥＹ＿請求契約番号
		setErrDataMap(inMap, template, EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO_ERR);

		return param;
	}

	/**
	 * お客様一意照会サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @throws Exception
	 */
	private void execECK0011A010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_ECK0011A010(param, dataMap);

		// ◇ SC呼出実行 (サービス契約一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_ECK0011A010(result, param, dataMap);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * お客様一意照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_ECK0011A010(IRequestParameterReadWrite param, Map<String, Object> inMap)
			throws RequestParameterException
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(ECK0011A010CBSMsg.class.getName());

		// テンプレートID
		template.set(ECK0011A010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0011A010);

		template.set(ECK0011A010CBSMsg.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);

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		Map<String, Object> ekk0081a010Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0081A010 + "WORK");

		// ◇ 業務データの設定
		// ＫＥＹ＿SYSID ← サービス契約一意照会のSYSID
		if(ekk0081a010Map.get("sysid") == null || "".equals(ekk0081a010Map.get("sysid")))
		{
			template.setNull(ECK0011A010CBSMsg.KEY_SYSID);
		}
		else
		{
			template.set(ECK0011A010CBSMsg.KEY_SYSID, (String)ekk0081a010Map.get("sysid"));
		}

		// ＫＥＹ＿世代登録年月日時分秒
		template.setNull(ECK0011A010CBSMsg.KEY_GENE_ADD_DTM);

		// ＫＥＹ＿予約適用年月日
		template.set(ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, (String)inMap.get("stdardymd"));

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * お客様一意照会検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_ECK0011A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap)
			throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> eck0011a010Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_ECK0011A010 + "WORK", eck0011a010Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		CAANMsg[] templateArray = template.getCAANMsgList(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST);

		// 検索結果をMapに格納します。
		if(templateArray != null && templateArray.length > 0)
		{

			// お客様名
			setDataMap(eck0011a010Map, templateArray[0], ECK0011A010CBSMsg1List.CUST_NM);

			// お客様カナ名
			setDataMap(eck0011a010Map, templateArray[0], ECK0011A010CBSMsg1List.CUST_KANA);

		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_ECK0011A010(param, dataMap, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * お客様一意照会エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_ECK0011A010(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(ECK0011A010CBSMsg.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);
		}

		// ＫＥＹ＿SYSID
		setErrDataMap(inMap, template, ECK0011A010CBSMsg.KEY_SYSID_ERR);

		// ＫＥＹ＿世代登録年月日時分秒
		setErrDataMap(inMap, template, ECK0011A010CBSMsg.KEY_GENE_ADD_DTM_ERR);

		// ＫＥＹ＿予約適用年月日
		setErrDataMap(inMap, template, ECK0011A010CBSMsg.KEY_RSV_APLY_YMD_ERR);

		return param;
	}

	/**
	 * 宅内機器型式一意照会サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEZM0411A010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EZM0411A010(param, parentdata);

		// ◇ SC呼出実行 (宅内機器型式一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EZM0411A010(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);

	}

	/**
	 * 宅内機器型式一意照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EZM0411A010(IRequestParameterReadWrite param, Map<String, Object> inMap)
			throws RequestParameterException
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		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(inMap.get("taknkiki_model_cd") == null || "".equals(inMap.get("taknkiki_model_cd")))
		{
			template.setNull(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD);
		}
		else
		{
			template.set(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, (String)inMap.get("taknkiki_model_cd"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 宅内機器型式一意照会検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EZM0411A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ezm0411a010Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EZM0411A010 + "WORK", ezm0411a010Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		CAANMsg[] templateArray = template.getCAANMsgList(EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST);

		// 検索結果をMapに格納します。
		if(templateArray != null && templateArray.length > 0)
		{

			// 宅内機器種別コード
			setDataMap(ezm0411a010Map, templateArray[0], EZM0411A010CBSMsg1List.TAKNKIKI_SBT_CD);
			// HDD容量コード
			setDataMap(ezm0411a010Map, templateArray[0], EZM0411A010CBSMsg1List.HDD_CAPA_CD);

		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EZM0411A010(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * 宅内機器型式一意照会エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EZM0411A010(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);
		}

		// ＫＥＹ＿宅内機器型式コード
		setErrDataMap(inMap, template, EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD_ERR);

		return param;
	}

	/**
	 * 機器提供サービス一覧照会サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0771B001(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0771B001(param, dataMap);

		// ◇ SC呼出実行 (機器提供サービス一覧照会)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0771B001(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * 機器提供サービス一覧照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EKK0771B001(IRequestParameterReadWrite param, Map<String, Object> inMap)
			throws RequestParameterException
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0771B001CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0771B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0771B001);

		template.set(EKK0771B001CBSMsg.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);

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		Map<String, Object> ezm0411a010Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EZM0411A010 + "WORK");

		// ◇ 業務データの設定
		// ＫＥＹ＿宅内機器種別コード
		if(ezm0411a010Map.get("taknkiki_sbt_cd") == null || "".equals(ezm0411a010Map.get("taknkiki_sbt_cd")))
		{
			template.setNull(EKK0771B001CBSMsg.KEY_TAKNKIKI_SBT_CD);
		}
		else
		{
			template.set(EKK0771B001CBSMsg.KEY_TAKNKIKI_SBT_CD, (String)ezm0411a010Map.get("taknkiki_sbt_cd"));
		}

		// ＫＥＹ＿付属品種別コード
		template.setNull(EKK0771B001CBSMsg.KEY_HUZOKUHIN_SBT_CD);

		// ＫＥＹ＿基準年月日
		template.set(EKK0771B001CBSMsg.KEY_BASE_YMD, (String)inMap.get("stdardymd"));

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 機器提供サービス一覧照会検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0771B001(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0771b001Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0771B001 + "WORK", ekk0771b001Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0771B001CBSMsg.EKK0771B001CBSMSG1LIST);

		// 検索結果をMapに格納します。
		if(templateArray != null && templateArray.length > 0)
		{

			// 機器提供サービスコード
			setDataMap(ekk0771b001Map, templateArray[0], EKK0771B001CBSMsg1List.KKTK_SVC_CD);

		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0771B001(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * 機器提供サービス一覧照会エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0771B001(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0771B001CBSMsg.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);
		}

		// ＫＥＹ＿宅内機器種別コード
		setErrDataMap(inMap, template, EKK0771B001CBSMsg.KEY_TAKNKIKI_SBT_CD_ERR);

		// ＫＥＹ＿付属品種別コード
		setErrDataMap(inMap, template, EKK0771B001CBSMsg.KEY_HUZOKUHIN_SBT_CD_ERR);

		// ＫＥＹ＿基準年月日
		setErrDataMap(inMap, template, EKK0771B001CBSMsg.KEY_BASE_YMD_ERR);

		return param;
	}

	/**
	 * STB機器の処理を行います。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Throwable
	 */
	private void execStbKikiShori(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Throwable
	{
		/* ++++++++++ v4.01.00 修正開始 ++++++++++ */
		// 料金プラン一覧
//		execEKK0591B003(handle, param, scCall, dataMap, parentdata);
		
		// 料金プランコード取得CCの呼出
		execGetPlanCd(handle, param, scCall, dataMap);
		/* ++++++++++ v4.01.00 修正完了 ++++++++++ */

		// サービス契約内訳＜eo光TV＞登録
		execEKK0181D010(handle, param, scCall, dataMap, parentdata);

		// 受付済判定
		if(!isUketuke(param))
		{
			// サービス契約内訳＜eo光TV＞照査
			execEKK0181C010(handle, param, scCall, dataMap, parentdata);
		}

		// 締結済更新判断
//		if(isTeiketuJikko(param, dataMap))
//		{
//			execEKK0181C020(handle, param, scCall, dataMap, parentdata);
//		}

		// 以下の処理はこれより前の処理で採番された値を使用するためチェックモードでは呼び出しません。
		if(FUNC_CODE_EXEC.equals(dataMap.get("func_code")))
		{
			// サービス契約内訳一意照会
			execEKK0161A010(handle, param, scCall, dataMap, parentdata);
		}

		// 料金コード取得部品より「料金コースコード」「料金プランコード」を取得します。
		Map<String, Object> pcrsDataMap = getPcraDataMap(handle, param, dataMap);

	}

	/**
	 * 料金プラン一覧サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0591B003(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0591B003(param, dataMap, parentdata);

		// ◇ SC呼出実行 (料金プラン一覧)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0591B003(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * 料金プラン一覧のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @param parentdata リクエストデータの子データ
	 * @return HashMap<String, Object>
	 * @throws Exception
	 */
	private HashMap<String, Object> editInMsg_EKK0591B003(IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> parentdata)
			throws Exception
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0591B003CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0591B003CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0591B003);

		template.set(EKK0591B003CBSMsg.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);

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 共通で格納している領域より取得
		Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);

		// EO光TV用の検索の場合
		String key_pcrs_cd = (String)kkTorokuWork.get("tv_pcrs_cd");

		// ◇ 業務データの設定
		// ＫＥＹ＿料金コースコード
		if("".equals(key_pcrs_cd))
		{
			template.setNull(EKK0591B003CBSMsg.KEY_PCRS_CD);
		}
		else
		{
			template.set(EKK0591B003CBSMsg.KEY_PCRS_CD, key_pcrs_cd);
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 料金プラン一覧検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0591B003(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0591b003Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0591B003 + "WORK", ekk0591b003Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0591B003CBSMsg.EKK0591B003CBSMSG1LIST);

		// 検索結果をMapに格納します。
		if(templateArray != null && templateArray.length > 0)
		{
			// 料金プランコード
			setDataMap(ekk0591b003Map, templateArray[0], EKK0591B003CBSMsg1List.PPLAN_CD);
		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0591B003(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * 料金プラン一覧エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0591B003(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0591B003CBSMsg.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);
		}

		// ＫＥＹ＿料金コースコード
		setErrDataMap(inMap, template, EKK0591B003CBSMsg.KEY_PCRS_CD_ERR);

		return param;
	}
	
	/* ++++++++++ v4.01.00 追加開始 ++++++++++ */
	/**
	 * 料金プランコード取得CCを呼出します。
	 * <br>
	 * @param handle
	 * @param param
	 * @param scCall
	 * @param dataMap
	 * @param parentdata
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execGetPlanCd(SessionHandle handle, 
								IRequestParameterReadWrite param, 
								ServiceComponentRequestInvoker scCall,
								Map<String, Object> dataMap) throws Throwable
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 共通で格納している領域より取得
		// 機器登録情報
		Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);
		
		// 料金プランコードが設定済みの場合はworkMapに設定して処理終了
		String pplan_cd = getNullToStr((String)kkTorokuWork.get("tv_pplan_cd"));
		
		if(!"".equals(pplan_cd))
		{
			// 料金プランコード取得CC入力パラメータの作成
			param.setData(GET_PPLAN_CD_CC, new HashMap<String, Object>());
			
			// パラメタを取得する。
			HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(GET_PPLAN_CD_CC);
			
			outMap.put(TV_PPLAN_CD, pplan_cd);
			
			return;
		}
		
		// 料金プランコード取得CC入力パラメータの作成
		param.setData(GET_PPLAN_CD_CC, new HashMap<String, Object>());
		
		// パラメタを取得する。
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(GET_PPLAN_CD_CC);
		
		// 共通で格納している領域より取得
		// サービス契約一意照会情報
		Map<String, Object> ekk0081a010Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0081A010 + "WORK");
		
		// EO光TV用の検索の場合
		String key_pcrs_cd = (String)kkTorokuWork.get("tv_pcrs_cd");
		
		// 料金コースコード
		outMap.put("pcrs_cd", getNullToStr(key_pcrs_cd));
		// 提供方式契約番号
		outMap.put("tk_hoshiki_kei_no", getNullToStr((String)ekk0081a010Map.get("tk_hoshiki_kei_no")));
		// 基準年月日
		outMap.put("stdardymd", getNullToStr((String)dataMap.get("stdardymd")));
		
		// 共通コンポーネントの実行
		JKKKikiPplanCdGetCC jkkkikipplancdgetcc = new JKKKikiPplanCdGetCC();
		jkkkikipplancdgetcc.execGetPplanCd(handle, param, GET_PPLAN_CD_CC);
	}
	/* ++++++++++ v4.01.00 追加完了 ++++++++++ */
	
	/**
	 * サービス契約内訳<eo光TV>登録サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0181D010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0181D010(param, dataMap, parentdata);

		// ◇ SC呼出実行 (サービス契約内訳<eo光TV>登録)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0181D010(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * サービス契約内訳<eo光TV>登録のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private HashMap<String, Object> editInMsg_EKK0181D010(IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> parentdata)
			throws Exception
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0181D010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0181D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0181D010);

		template.set(EKK0181D010CBSMsg.FUNC_CODE, inMap.get("func_code"));

		// オペレータ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);

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 料金プラン一覧検索結果
		/* ++++++++++ v4.01.00 修正開始 ++++++++++ */
//		Map<String, Object> ekk0591b003Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0591B003 + "WORK");
		Map<String, Object> outMap = (Map<String, Object>)param.getData(GET_PPLAN_CD_CC);
		/* ++++++++++ v4.01.00 修正完了 ++++++++++ */

		Map<String, Object> ekk0321b002Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0321B002 + "WORK");

		// 共通で格納している領域より取得
		Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);

		String updDtm = getSvcUpDtm(param);
		// 更新年月日時分秒
		if("".equals(updDtm))
		{
			template.setNull(EKK0181D010CBSMsg.UPD_DTM_BF);
		}
		else
		{
			template.set(EKK0181D010CBSMsg.UPD_DTM_BF, updDtm);
		}

		// ◇ 業務データの設定
		// サービス契約番号
		if(inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK0181D010CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0181D010CBSMsg.SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}

		String mskmDtlNo = getMskmDtlNo(param, inMap);

		// 申込明細番号
		if("".equals(mskmDtlNo))
		{
			template.setNull(EKK0181D010CBSMsg.MSKM_DTL_NO);
		}
		else
		{
			template.set(EKK0181D010CBSMsg.MSKM_DTL_NO, mskmDtlNo);
		}

		// 料金コースコード
		template.set(EKK0181D010CBSMsg.PCRS_CD, (String)kkTorokuWork.get("tv_pcrs_cd"));

		// 料金プランコード
		/* ++++++++++ v4.01.00 修正開始 ++++++++++ */
//		if(ekk0591b003Map.get("pplan_cd") == null || "".equals(ekk0591b003Map.get("pplan_cd")))
//		{
//			template.setNull(EKK0181D010CBSMsg.PPLAN_CD);
//		}
//		else
//		{
//			template.set(EKK0181D010CBSMsg.PPLAN_CD, (String)ekk0591b003Map.get("pplan_cd"));
//		}
		if(outMap.get("tv_pplan_cd") == null || "".equals(outMap.get("tv_pplan_cd")))
		{
			template.setNull(EKK0181D010CBSMsg.PPLAN_CD);
		}
		else
		{
			template.set(EKK0181D010CBSMsg.PPLAN_CD, (String)outMap.get("tv_pplan_cd"));
		}
		/* ++++++++++ v4.01.00 修正完了 ++++++++++ */
		
		// 提供方式契約番号
		template.setNull(EKK0181D010CBSMsg.TK_HOSHIKI_KEI_NO);
		// 支払い方法継続フラグ
		template.setNull(EKK0181D010CBSMsg.PAYWAY_KEIZOKU_FLG);
		// WEBオプション追加不可フラグ
		template.setNull(EKK0181D010CBSMsg.WEB_OP_ADD_FAIL_FLG);
		// 業務連絡備考
		template.setNull(EKK0181D010CBSMsg.WORK_RRK_BIKO);
		// サービス利用開始希望年月日
		template.setNull(EKK0181D010CBSMsg.SVC_USE_STA_KIBO_YMD);
		// 予約適用開始希望年月日
		template.setNull(EKK0181D010CBSMsg.RSV_TSTA_KIBO_YMD);
		// 試用加入年月日
		template.setNull(EKK0181D010CBSMsg.FTRIAL_KANYU_YMD);
		// 試用期間終了年月日
		template.setNull(EKK0181D010CBSMsg.FTRIAL_PRD_ENDYMD);
		// 本加入年月日
		template.setNull(EKK0181D010CBSMsg.HONKANYU_YMD);
		// 本加入移行期限年月日
		template.setNull(EKK0181D010CBSMsg.HONKANYU_IKO_KIGEN_YMD);
		// 違約金発生コード
		template.setNull(EKK0181D010CBSMsg.PNLTY_HASSEI_CD);
		
		/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
//		// 異動区分
//		if(inMap.get("ido_div") == null || "".equals(inMap.get("ido_div")))
//		{
//			template.setNull(EKK0181D010CBSMsg.IDO_DIV);
//		}
//		else
//		{
//			template.set(EKK0181D010CBSMsg.IDO_DIV, (String)inMap.get("ido_div"));
//		}
		// ワーク領域から工事受付契機異動区分を取得します。
		String kojiUkOptntyIdoDiv = getNullToStr((String)workMap.get("KOJI_UK_OPTNTY_IDO_DIV" + "WORK"));
		
		// 異動区分
		// 工事受付契機異動区分が設定されている場合
		if(!"".equals(kojiUkOptntyIdoDiv))
		{
			// 登録契機契約異動区分
			template.set(EKK0181D010CBSMsg.IDO_DIV, kojiUkOptntyIdoDiv);
		}
		else
		{
			template.set(EKK0181D010CBSMsg.IDO_DIV, getNullToStr((String)inMap.get("ido_div")));
		}
		/* ++++++++++ v7.00.01 変更終了 ++++++++++ */
		
		// 撤去工事希望年月日
		template.setNull(EKK0181D010CBSMsg.TEKKYO_KOJI_KIBO_YMD);
		// アダルトフラグ
		template.setNull(EKK0181D010CBSMsg.ADULT_FLG);
		// 請求契約番号
		if(ekk0321b002Map.get("seiky_kei_no") == null || "".equals(ekk0321b002Map.get("seiky_kei_no")))
		{
			template.setNull(EKK0181D010CBSMsg.SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0181D010CBSMsg.SEIKY_KEI_NO, (String)ekk0321b002Map.get("seiky_kei_no"));
		}

		// 料金項目コード
		template.setNull(EKK0181D010CBSMsg.PRC_KMK_CD);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * サービス契約内訳<eo光TV>登録検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0181D010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0181d010Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0181D010 + "WORK", ekk0181d010Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// サービス契約内訳番号
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.SVC_KEI_UCWK_NO);
		// 世代登録年月日時分秒(サービス契約内訳)
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.KK0161_GENE_ADD_DTM);
		// サービス契約内訳ステータス
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.SVC_KEI_UCWK_STAT);
		// サービス契約番号
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.SVC_KEI_NO);
		// 申込明細番号
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.MSKM_DTL_NO);
		// 料金コースコード
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.PCRS_CD);
		// 料金プランコード
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.PPLAN_CD);
		// 提供方式契約番号
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.TK_HOSHIKI_KEI_NO);
		// 支払い方法継続フラグ
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.PAYWAY_KEIZOKU_FLG);
		// WEBオプション追加不可フラグ
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.WEB_OP_ADD_FAIL_FLG);
		// 業務連絡備考
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.WORK_RRK_BIKO);
		// サービス利用開始希望年月日
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.SVC_USE_STA_KIBO_YMD);
		// 予約適用開始希望年月日
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.RSV_TSTA_KIBO_YMD);
		// 試用加入年月日
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.FTRIAL_KANYU_YMD);
		// 試用期間終了年月日
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.FTRIAL_PRD_ENDYMD);
		// 本加入年月日
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.HONKANYU_YMD);
		// 本加入移行期限年月日
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.HONKANYU_IKO_KIGEN_YMD);
		// 予約適用年月日
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.RSV_APLY_YMD);
		// 予約適用コード
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.RSV_APLY_CD);
		// 違約金発生コード
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.PNLTY_HASSEI_CD);
		// 異動区分
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.IDO_DIV);
		// 世代登録年月日時分秒(サービス契約内訳<eo光TV>)
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.KK0181_GENE_ADD_DTM);
		// 登録年月日時分秒
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.ADD_DTM);
		// 登録オペレータアカウント
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.ADD_OPEACNT);
		// 更新年月日時分秒
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.UPD_DTM);
		// 更新オペレータアカウント
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.UPD_OPEACNT);
		// 無効フラグ
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.MK_FLG);
		// 撤去工事希望年月日
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.TEKKYO_KOJI_KIBO_YMD);
		// アダルトフラグ
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.ADULT_FLG);
		// 課金先番号
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.KAKINS_NO);
		// 請求契約番号
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.SEIKY_KEI_NO);
		// 料金項目コード
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.PRC_KMK_CD);
		// 課金先適用開始年月日
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.KAKINS_TSTAYMD);
		// 課金先適用終了年月日
		setDataMap(ekk0181d010Map, template, EKK0181D010CBSMsg.KAKINS_TENDYMD);

		// 更新年月日時分秒（サービス契約）
		// 更新日付を共通領域に格納
		setSvcUpDtm(param, template.getString(EKK0181D010CBSMsg.UPD_DTM));

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0181D010(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * サービス契約内訳<eo光TV>登録エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0181D010(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0181D010CBSMsg.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);
		}

		// サービス契約番号
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.SVC_KEI_NO_ERR);

		// 申込明細番号
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.MSKM_DTL_NO_ERR);

		// 料金コースコード
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.PCRS_CD_ERR);

		// 料金プランコード
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.PPLAN_CD_ERR);

		// 提供方式契約番号
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.TK_HOSHIKI_KEI_NO_ERR);

		// 支払い方法継続フラグ
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.PAYWAY_KEIZOKU_FLG_ERR);

		// WEBオプション追加不可フラグ
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.WEB_OP_ADD_FAIL_FLG_ERR);

		// 業務連絡備考
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.WORK_RRK_BIKO_ERR);

		// サービス利用開始希望年月日
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.SVC_USE_STA_KIBO_YMD_ERR);

		// 予約適用開始希望年月日
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.RSV_TSTA_KIBO_YMD_ERR);

		// 試用加入年月日
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.FTRIAL_KANYU_YMD_ERR);

		// 試用期間終了年月日
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.FTRIAL_PRD_ENDYMD_ERR);

		// 本加入年月日
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.HONKANYU_YMD_ERR);

		// 本加入移行期限年月日
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.HONKANYU_IKO_KIGEN_YMD_ERR);

		// 違約金発生コード
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.PNLTY_HASSEI_CD_ERR);

		// 異動区分
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.IDO_DIV_ERR);

		// 撤去工事希望年月日
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.TEKKYO_KOJI_KIBO_YMD_ERR);

		// アダルトフラグ
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.ADULT_FLG_ERR);

		// 請求契約番号
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.SEIKY_KEI_NO_ERR);

		// 料金項目コード
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.PRC_KMK_CD_ERR);

		// 更新年月日時分秒(更新前)
		setErrDataMap(inMap, template, EKK0181D010CBSMsg.UPD_DTM_BF_ERR);

		return param;
	}

	/**
	 * サービス契約内訳<eo光TV>照査サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0181C010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0181C010(param, dataMap);

		// ◇ SC呼出実行 (サービス契約内訳<eo光TV>照査)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0181C010(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * サービス契約内訳<eo光TV>照査のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws Exception
	 */
	private HashMap<String, Object> editInMsg_EKK0181C010(IRequestParameterReadWrite param, Map<String, Object> inMap) throws Exception
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0181C010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0181C010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0181C010);

		template.set(EKK0181C010CBSMsg.FUNC_CODE, inMap.get("func_code"));

		// オペレータ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);

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		Map<String, Object> ekk0181d010Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0181D010 + "WORK");

		// ◇ 業務データの設定
		// サービス契約内訳番号
		if(ekk0181d010Map.get("svc_kei_ucwk_no") == null || "".equals(ekk0181d010Map.get("svc_kei_ucwk_no")))
		{
			template.setNull(EKK0181C010CBSMsg.SVC_KEI_UCWK_NO);
		}
		else
		{
			template.set(EKK0181C010CBSMsg.SVC_KEI_UCWK_NO, (String)ekk0181d010Map.get("svc_kei_ucwk_no"));
		}
		
		/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
//		// 異動区分
//		if(inMap.get("ido_div") == null || "".equals(inMap.get("ido_div")))
//		{
//			template.setNull(EKK0181C010CBSMsg.IDO_DIV);
//		}
//		else
//		{
//			template.set(EKK0181C010CBSMsg.IDO_DIV, (String)inMap.get("ido_div"));
//		}
		// ワーク領域から工事受付契機異動区分を取得します。
		String kojiUkOptntyIdoDiv = getNullToStr((String)workMap.get("KOJI_UK_OPTNTY_IDO_DIV" + "WORK"));
		
		// 異動区分
		// 工事受付契機異動区分が設定されている場合
		if(!"".equals(kojiUkOptntyIdoDiv))
		{
			// 登録契機契約異動区分
			template.set(EKK0181C010CBSMsg.IDO_DIV, kojiUkOptntyIdoDiv);
		}
		else
		{
			template.set(EKK0181C010CBSMsg.IDO_DIV, getNullToStr((String)inMap.get("ido_div")));
		}
		/* ++++++++++ v7.00.01 変更終了 ++++++++++ */
		
		
		
		String updDtm = getSvcUpDtm(param);
		// 更新年月日時分秒（eo光TV）
		if("".equals(updDtm))
		{
			template.setNull(EKK0181C010CBSMsg.UPD_DTM_BF);
		}
		else
		{
			template.set(EKK0181C010CBSMsg.UPD_DTM_BF, updDtm);
		}

		// 照査解約完了コード
//		template.setNull(EKK0181C010CBSMsg.SHOSA_DSL_FIN_CD);
		template.set(EKK0181C010CBSMsg.SHOSA_DSL_FIN_CD, SHOSA_DSL_FIN_CD_OK);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * サービス契約内訳<eo光TV>照査検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0181C010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0181c010Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0181C010 + "WORK", ekk0181c010Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// サービス契約内訳番号
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.SVC_KEI_UCWK_NO);
		// 世代登録年月日時分秒(サービス契約内訳)
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.KK0161_GENE_ADD_DTM);
		// サービス契約内訳ステータス
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.SVC_KEI_UCWK_STAT);
		// 照査年月日
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.SHOSA_YMD);
		// 照査取消年月日
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.SHOSA_CL_YMD);
		// 予約適用年月日
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.RSV_APLY_YMD);
		// 予約適用コード
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.RSV_APLY_CD);
		// 異動区分
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.IDO_DIV);
		// 照査解約完了コード
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.SHOSA_DSL_FIN_CD);
		// 登録年月日時分秒
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.ADD_DTM);
		// 登録オペレータアカウント
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.ADD_OPEACNT);
		// 更新年月日時分秒
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.UPD_DTM);
		// 更新オペレータアカウント
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.UPD_OPEACNT);
		// 無効フラグ
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.MK_FLG);
		// 世代登録年月日時分秒(サービス契約内訳<eo光TV>)
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.KK0181_GENE_ADD_DTM);
		// 更新年月日時分秒(更新前)
		setDataMap(ekk0181c010Map, template, EKK0181C010CBSMsg.UPD_DTM_BF);

		// 更新年月日時分秒（サービス契約）
		// 更新日付を共通領域に格納
		setSvcUpDtm(param, template.getString(EKK0181C010CBSMsg.UPD_DTM));

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0181C010(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * サービス契約内訳<eo光TV>照査エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0181C010(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0181C010CBSMsg.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);
		}

		// サービス契約内訳番号
		setErrDataMap(inMap, template, EKK0181C010CBSMsg.SVC_KEI_UCWK_NO_ERR);

		// 異動区分
		setErrDataMap(inMap, template, EKK0181C010CBSMsg.IDO_DIV_ERR);

		// 照査解約完了コード
		setErrDataMap(inMap, template, EKK0181C010CBSMsg.SHOSA_DSL_FIN_CD_ERR);

		// 更新年月日時分秒(更新前)
		setErrDataMap(inMap, template, EKK0181C010CBSMsg.UPD_DTM_BF_ERR);

		return param;
	}

	/**
	 * 機器提供サービス一意照会サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0771A010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0771A010(param, dataMap, parentdata);

		// ◇ SC呼出実行 (機器提供サービス一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0771A010(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * 機器提供サービス一意照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @param parentdata リクエストデータの子データ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EKK0771A010(IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> parentdata)
			throws RequestParameterException
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0771A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0771A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0771A010);

		template.set(EKK0771A010CBSMsg.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(parentdata.get("kktk_svc_cd") == null || "".equals(parentdata.get("kktk_svc_cd")))
		{
			template.setNull(EKK0771A010CBSMsg.KEY_KKTK_SVC_CD);
		}
		else
		{
			template.set(EKK0771A010CBSMsg.KEY_KKTK_SVC_CD, (String)parentdata.get("kktk_svc_cd"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 機器提供サービス一意照会検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0771A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0771A010Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0771A010 + "WORK", ekk0771A010Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0771A010CBSMsg.EKK0771A010CBSMSG1LIST);

		// 検索結果をMapに格納します。
		if(templateArray != null && templateArray.length > 0)
		{

			// 宅内機器種別コード
			setDataMap(ekk0771A010Map, templateArray[0], EKK0771A010CBSMsg1List.TAKNKIKI_SBT_CD);

		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0771A010(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * 機器提供サービス一意照会エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0771A010(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0771A010CBSMsg.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);
		}

		// ＫＥＹ＿機器提供サービスコード
		setErrDataMap(inMap, template, EKK0771A010CBSMsg.KEY_KKTK_SVC_CD_ERR);

		return param;
	}

	/**
	 * 引当棚一意照会サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEDK0451A010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EDK0451A010(param, dataMap);

		// ◇ SC呼出実行 (引当棚一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EDK0451A010(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * 引当棚一意照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EDK0451A010(IRequestParameterReadWrite param, Map<String, Object> inMap)
			throws RequestParameterException
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EDK0451A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EDK0451A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EDK0451A010);

		template.set(EDK0451A010CBSMsg.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);

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 共通で格納している領域より取得
		Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);

		// ◇ 業務データの設定
		// ＫＥＹ＿販売種別コード
		if(kkTorokuWork.get("hambai_sbt_cd") == null || "".equals(kkTorokuWork.get("hambai_sbt_cd")))
		{
// template.setNull(EDK0451A010CBSMsg.KEY_HAMBAI_SBT_CD);
			// 未設定の場合、標準（新品）10を設定
			template.set(EDK0451A010CBSMsg.KEY_HAMBAI_SBT_CD, "10");
		}
		else
		{
			template.set(EDK0451A010CBSMsg.KEY_HAMBAI_SBT_CD, (String)kkTorokuWork.get("hambai_sbt_cd"));
		}

		// ＫＥＹ＿運用日
		template.set(EDK0451A010CBSMsg.KEY_UNYO_YMD, (String)inMap.get("stdardymd"));

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 引当棚一意照会検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EDK0451A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		/* 作業領域データ設定 */
		Map childWorkMap = (HashMap<String, Object>)workMap.get("WORK");

		// 検索結果格納Map
		Map<String, Object> edk0451A010Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EDK0451A010 + "WORK", edk0451A010Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		CAANMsg[] templateArray = template.getCAANMsgList(EDK0451A010CBSMsg.EDK0451A010CBSMSG1LIST);

		// 検索結果をMapに格納します。
		if(templateArray != null && templateArray.length > 0)
		{

			// 棚コード
			setDataMap(edk0451A010Map, templateArray[0], EDK0451A010CBSMsg1List.SHELF_CD);

			if(childWorkMap != null)
			{
				// 棚コード（WORKに格納）
				setDataMap(childWorkMap, templateArray[0], EDK0451A010CBSMsg1List.SHELF_CD);
			}

			// 2012.07.08 ADD 引当棚を返却値に設定
			parentdata.put("soko_tana_cd", getNullToStr(templateArray[0].getString(EDK0451A010CBSMsg1List.SHELF_CD)));
			parentdata.put("soko_tana_nm", getNullToStr(templateArray[0].getString(EDK0451A010CBSMsg1List.SHELF_NM)));
		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EDK0451A010(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * 引当棚一意照会エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EDK0451A010(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EDK0451A010CBSMsg.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);
		}

		// ＫＥＹ＿販売種別コード
		setErrDataMap(inMap, template, EDK0451A010CBSMsg.KEY_HAMBAI_SBT_CD_ERR);

		// ＫＥＹ＿運用日付
		setErrDataMap(inMap, template, EDK0451A010CBSMsg.KEY_UNYO_YMD_ERR);

		return param;
	}
	
	/**
	 * 機器提供サービス契約登録サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0341D010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0341D010(param, dataMap, parentdata);
		
		// ◇ SC呼出実行 (機器提供サービス契約登録)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0341D010(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 機器提供サービス契約登録のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @param parentdata
	 * @return HashMap<String, Object>
	 * @throws Exception
	 */
	private HashMap<String, Object> editInMsg_EKK0341D010(IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> parentdata)
			throws Exception
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0341D010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0341D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341D010);

		template.set(EKK0341D010CBSMsg.FUNC_CODE, inMap.get("func_code"));

		// オペレータ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);

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 画面からの画面からのパラメータ取得
		Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);

		// 共通で使用する項目（料金コースコードなど）取得
		Map<String, Object> workComMap = (Map<String, Object>)workMap.get(WORK_COM);

		// サービス契約回線内訳一覧照会（現在利用中）データ
		Map<String, Object> ekk0251b003Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0251B003 + "WORK");

		// 料金プラン一覧照会データ
		Map<String, Object> ekk0591b003Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0591B003 + "WORK");

		// 宅内機器型式一意照会データ
		Map<String, Object> ezm0411a010Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EZM0411A010 + "WORK");

		// サービス契約内訳<eo光TV>登録データ
		Map<String, Object> ekk0181d010Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0181D010 + "WORK");

		// サービス契約一意照会データ
		Map<String, Object> ekk0081a010Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0081A010 + "WORK");

		// 引当棚一意照会データ
		Map<String, Object> edk0451a010Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EDK0451A010 + "WORK");

		// 課金先一覧照会（請求契約番号/サービス契約番号）
		Map<String, Object> ekk0321b002Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0321B002 + "WORK");

		// お客様一意照会
		Map<String, Object> eck0011a010Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_ECK0011A010 + "WORK");

		// ◇ 業務データの設定
		// 機器提供サービスコード
		if(kkTorokuWork.get("kktk_svc_cd") == null || "".equals(kkTorokuWork.get("kktk_svc_cd")))
		{
			template.setNull(EKK0341D010CBSMsg.KKTK_SVC_CD);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KKTK_SVC_CD, (String)kkTorokuWork.get("kktk_svc_cd"));
		}

		// 料金コースコード
		if(workComMap.get("pcrs_cd") == null || "".equals(workComMap.get("pcrs_cd")))
		{
			template.setNull(EKK0341D010CBSMsg.PCRS_CD);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.PCRS_CD, (String)workComMap.get("pcrs_cd"));
		}

		// 料金プランコード
		if(workComMap.get("pplan_cd") == null || "".equals(workComMap.get("pplan_cd")))
		{
			template.setNull(EKK0341D010CBSMsg.PPLAN_CD);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.PPLAN_CD, (String)workComMap.get("pplan_cd"));
		}

		String kktk_sbt_cd = getNullToStr((String)kkTorokuWork.get("kktk_sbt_cd"));

		// 機器提供種別コード
		if("".equals(kktk_sbt_cd))
// if(kkTorokuWork.get("kktk_sbt_cd") == null || "".equals(kkTorokuWork.get("kktk_sbt_cd")))
		{
// template.setNull(EKK0341D010CBSMsg.KKTK_SBT_CD);
			// 設定されていない場合、レンタル（02）
			template.set(EKK0341D010CBSMsg.KKTK_SBT_CD, "02");
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KKTK_SBT_CD, (String)kkTorokuWork.get("kktk_sbt_cd"));
		}

		// HDD容量コード取得
		String hdd_capa_cd = getHddCapaCd(param);

		// HDD容量コード
		if("".equals(hdd_capa_cd))
		{
			template.setNull(EKK0341D010CBSMsg.HDD_CAPA_CD);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.HDD_CAPA_CD, hdd_capa_cd);
		}

		// サービス利用開始希望年月日
		template.setNull(EKK0341D010CBSMsg.SVC_USE_STA_KIBO_YMD);

		// 予約適用開始希望年月日
		template.setNull(EKK0341D010CBSMsg.RSV_TSTA_KIBO_YMD);

		// 希望メーカーコード
		template.setNull(EKK0341D010CBSMsg.KIBO_MAKER_CD);

		// 提供種別コード(持込の場合)
		if(TEIKYO_SBT_MOCHIKOMI.equals(kktk_sbt_cd))
		{
			template.setNull(EKK0341D010CBSMsg.HAMBAI_SBT_CD);
		}
		else
		{
			if(kkTorokuWork.get("hambai_sbt_cd") == null || "".equals(kkTorokuWork.get("hambai_sbt_cd")))
			{
// template.setNull(EKK0341D010CBSMsg.HAMBAI_SBT_CD);
				// 設定されていない場合、（標準（新品））10を設定
				template.set(EKK0341D010CBSMsg.HAMBAI_SBT_CD, "10");
			}
			else
			{
				template.set(EKK0341D010CBSMsg.HAMBAI_SBT_CD, (String)kkTorokuWork.get("hambai_sbt_cd"));
			}
		}

		// 通信機器セットコード
		template.setNull(EKK0341D010CBSMsg.TSUSHIN_KIKI_SET_CD);

		// 宅内機器種別コード
		if(ezm0411a010Map.get("taknkiki_sbt_cd") == null || "".equals(ezm0411a010Map.get("taknkiki_sbt_cd")))
		{
			template.setNull(EKK0341D010CBSMsg.TAKNKIKI_SBT_CD);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.TAKNKIKI_SBT_CD, (String)ezm0411a010Map.get("taknkiki_sbt_cd"));
		}

		// STBの機器型式が入っていない場合は、B-CAS,C-CASの型式もセットしません。
		String taknkikiModelCd = getNullToStr((String)parentdata.get("taknkiki_model_cd"));
		if("".equals(taknkikiModelCd))
		{
			template.setNull(EKK0341D010CBSMsg.TAKNKIKI_MODEL_CD);
		}
		else
		{
			// 宅内機器型式コード
			taknkikiModelCd = getTaknkikiModelCd(param);

			if("".equals(taknkikiModelCd))
			{
				template.setNull(EKK0341D010CBSMsg.TAKNKIKI_MODEL_CD);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.TAKNKIKI_MODEL_CD, taknkikiModelCd);
			}
		}

		// 宅内機器セット品型コード
		template.setNull(EKK0341D010CBSMsg.TAKNKIKI_SETHIN_MODEL_CD);

		// 付属品種別コード
		template.setNull(EKK0341D010CBSMsg.HUZOKUHIN_SBT_CD);

		// 機器設置先場所番号
		if(ekk0251b003Map.get("kaisen_place_no") == null || "".equals(ekk0251b003Map.get("kaisen_place_no")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_STC_SAKI_PLACE_NO);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_STC_SAKI_PLACE_NO, (String)ekk0251b003Map.get("kaisen_place_no"));
		}

		// 親契約識別コード取得
		String oya_kei_skbt_cd = getOyaKeiyakuSkbtCd(param);

		// 親契約識別コード
		if("".equals(oya_kei_skbt_cd))
		{
			template.setNull(EKK0341D010CBSMsg.OYA_KEI_SKBT_CD);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.OYA_KEI_SKBT_CD, oya_kei_skbt_cd);
		}

		// 親契約識別コードがサービス契約回線内訳（02）以外の場合、設定します。
		if(!OYA_KEI_SKBT_CD_SVC_KSN_UCWK.equals(oya_kei_skbt_cd))
		{
			// サービス契約番号
			if(inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
			{
				template.setNull(EKK0341D010CBSMsg.SVC_KEI_NO);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
			}
		}
		else
		{
			template.setNull(EKK0341D010CBSMsg.SVC_KEI_NO);
		}

		// 親契約識別コードがサービス契約内訳（03）の場合、設定します。
		if(OYA_KEI_SKBT_CD_SVC_UCWK.equals(oya_kei_skbt_cd))
		{
			// サービス契約内訳番号
			if(ekk0181d010Map.get("svc_kei_ucwk_no") == null || "".equals(ekk0181d010Map.get("svc_kei_ucwk_no")))
			{
				template.setNull(EKK0341D010CBSMsg.SVC_KEI_UCWK_NO);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.SVC_KEI_UCWK_NO, (String)ekk0181d010Map.get("svc_kei_ucwk_no"));
			}
		}
		else
		{
			template.setNull(EKK0341D010CBSMsg.SVC_KEI_UCWK_NO);
		}
		// 親契約識別コードがサービス契約回線内訳（02）の場合、設定します。
		if(OYA_KEI_SKBT_CD_SVC_KSN_UCWK.equals(oya_kei_skbt_cd))
		{
			// サービス契約回線内訳番号
			if(ekk0251b003Map.get("svc_kei_kaisen_ucwk_no") == null || "".equals(ekk0251b003Map.get("svc_kei_kaisen_ucwk_no")))
			{
				template.setNull(EKK0341D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, (String)ekk0251b003Map.get("svc_kei_kaisen_ucwk_no"));
				
				/* ++++++++++ v7.00.00 変更開始 ++++++++++ */
				String kaisenUpdDtm = (String)workMap.get(KIKIADD_SVC_KEI_KAISEN_UCWK_NO_UPD_DTM);
				// 更新日付を共通領域に格納
				setSvcUpDtm(param, kaisenUpdDtm);
				/* ++++++++++ v7.00.00 変更完了 ++++++++++ */
			}
		}
		else
		{
			template.setNull(EKK0341D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO);
		}

		// オプションサービス契約番号
		template.setNull(EKK0341D010CBSMsg.OP_SVC_KEI_NO);

		// SYSID
		if(ekk0081a010Map.get("sysid") == null || "".equals(ekk0081a010Map.get("sysid")))
		{
			template.setNull(EKK0341D010CBSMsg.SYSID);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.SYSID, (String)ekk0081a010Map.get("sysid"));
		}

		// リンクSTBフラグ
		template.setNull(EKK0341D010CBSMsg.LINK_STB_FLG);

		// 管理場所識別コード、各倉庫コード、各棚コードを設定
		setKanriBasho(template, kkTorokuWork, edk0451a010Map, kktk_sbt_cd);

		// 機器送料有無
		if(kkTorokuWork.get("kiki_soryo_um") == null || "".equals(kkTorokuWork.get("kiki_soryo_um")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_SORYO_UM);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_SORYO_UM, (String)kkTorokuWork.get("kiki_soryo_um"));
		}

		// 機器送料作成年月日
		template.setNull(EKK0341D010CBSMsg.KIKI_SORYO_SAKSEI_YMD);

		// 機器送付先名
		String kiki_sohus_nm = getNullToStr((String)kkTorokuWork.get("kiki_sohus_nm"));

		if("".equals(kiki_sohus_nm))
		{
			kiki_sohus_nm = getNullToStr((String)eck0011a010Map.get("cust_nm"));
		}

		if("".equals(kkTorokuWork.get(kiki_sohus_nm)))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_NM);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_SOHUS_NM, kiki_sohus_nm);
		}

		// 機器送付先カナ名
		String kiki_sohus_kana = getNullToStr((String)kkTorokuWork.get("kiki_sohus_kana"));

		if("".equals(kiki_sohus_kana))
		{
			kiki_sohus_kana = getNullToStr((String)eck0011a010Map.get("cust_kana"));
		}

		if("".equals(kiki_sohus_kana))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_KANA);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_SOHUS_KANA, kiki_sohus_kana);
		}

		// 工事情報登録画面は機器送付先情報を持っていないため「サービス契約回線内訳一覧照会（現在利用中）」のデータを格納します。
		if(kkTorokuWork.get("kiki_sohus_ad_cd") == null || "".equals(kkTorokuWork.get("kiki_sohus_ad_cd")))
		{
			// 機器送付先住所コード
			if(ekk0251b003Map.get("kaisen_place_ad_cd") == null || "".equals(ekk0251b003Map.get("kaisen_place_ad_cd")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_AD_CD);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_AD_CD, (String)ekk0251b003Map.get("kaisen_place_ad_cd"));
			}

			// 機器送付先郵便番号
			if(ekk0251b003Map.get("kaisen_place_pcd") == null || "".equals(ekk0251b003Map.get("kaisen_place_pcd")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_PCD);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_PCD, (String)ekk0251b003Map.get("kaisen_place_pcd"));
			}

			// 機器送付先都道府県名
			if(ekk0251b003Map.get("kaisen_place_state_nm") == null || "".equals(ekk0251b003Map.get("kaisen_place_state_nm")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_STATE_NM);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_STATE_NM, (String)ekk0251b003Map.get("kaisen_place_state_nm"));
			}

			// 機器送付先市区町村名
			if(ekk0251b003Map.get("kaisen_place_city_nm") == null || "".equals(ekk0251b003Map.get("kaisen_place_city_nm")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_CITY_NM);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_CITY_NM, (String)ekk0251b003Map.get("kaisen_place_city_nm"));
			}

			// 機器送付先大字通称名
			if(ekk0251b003Map.get("kaisen_place_oaztsu_nm") == null || "".equals(ekk0251b003Map.get("kaisen_place_oaztsu_nm")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_OAZTSU_NM);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_OAZTSU_NM, (String)ekk0251b003Map.get("kaisen_place_oaztsu_nm"));
			}

			// 機器送付先字丁目名
			if(ekk0251b003Map.get("kaisen_place_azcho_nm") == null || "".equals(ekk0251b003Map.get("kaisen_place_azcho_nm")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_AZCHO_NM);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_AZCHO_NM, (String)ekk0251b003Map.get("kaisen_place_azcho_nm"));
			}

			// 機器送付先番地号
			if(ekk0251b003Map.get("kaisen_place_bnchigo") == null || "".equals(ekk0251b003Map.get("kaisen_place_bnchigo")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_BNCHIGO);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_BNCHIGO, (String)ekk0251b003Map.get("kaisen_place_bnchigo"));
			}

			// 機器送付先住所補記・建物名
			if(ekk0251b003Map.get("kaisen_place_adrttm") == null || "".equals(ekk0251b003Map.get("kaisen_place_adrttm")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_ADRTTM);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_ADRTTM, (String)ekk0251b003Map.get("kaisen_place_adrttm"));
			}

			// 機器送付先住所補記・部屋番号
			if(ekk0251b003Map.get("kaisen_place_adrrm") == null || "".equals(ekk0251b003Map.get("kaisen_place_adrrm")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_ADRRM);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_ADRRM, (String)ekk0251b003Map.get("kaisen_place_adrrm"));
			}

			// 機器送付先電話番号
			if(ekk0251b003Map.get("kaisen_place_telno") == null || "".equals(ekk0251b003Map.get("kaisen_place_telno")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_TELNO);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_TELNO, (String)ekk0251b003Map.get("kaisen_place_telno"));
			}

			// 機器送付先住所手動入力フラグ
			template.set(EKK0341D010CBSMsg.KIKI_SHS_AD_MAN_INPUT_FLG, "0");
			// 機器送付先住所チェックレベル
			template.set(EKK0341D010CBSMsg.KIKI_SOHUS_AD_CHK_LV, "1");
		}
		else
		{
			// 機器送付先住所コード
			if(kkTorokuWork.get("kiki_sohus_ad_cd") == null || "".equals(kkTorokuWork.get("kiki_sohus_ad_cd")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_AD_CD);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_AD_CD, (String)kkTorokuWork.get("kiki_sohus_ad_cd"));
			}

			// 機器送付先郵便番号
			if(kkTorokuWork.get("kiki_sohus_pcd") == null || "".equals(kkTorokuWork.get("kiki_sohus_pcd")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_PCD);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_PCD, (String)kkTorokuWork.get("kiki_sohus_pcd"));
			}

			// 機器送付先都道府県名
			if(kkTorokuWork.get("kiki_sohus_state_nm") == null || "".equals(kkTorokuWork.get("kiki_sohus_state_nm")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_STATE_NM);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_STATE_NM, (String)kkTorokuWork.get("kiki_sohus_state_nm"));
			}

			// 機器送付先市区町村名
			if(kkTorokuWork.get("kiki_sohus_city_nm") == null || "".equals(kkTorokuWork.get("kiki_sohus_city_nm")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_CITY_NM);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_CITY_NM, (String)kkTorokuWork.get("kiki_sohus_city_nm"));
			}

			// 機器送付先大字通称名
			if(kkTorokuWork.get("kiki_sohus_oaztsu_nm") == null || "".equals(kkTorokuWork.get("kiki_sohus_oaztsu_nm")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_OAZTSU_NM);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_OAZTSU_NM, (String)kkTorokuWork.get("kiki_sohus_oaztsu_nm"));
			}

			// 機器送付先字丁目名
			if(kkTorokuWork.get("kiki_sohus_azcho_nm") == null || "".equals(kkTorokuWork.get("kiki_sohus_azcho_nm")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_AZCHO_NM);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_AZCHO_NM, (String)kkTorokuWork.get("kiki_sohus_azcho_nm"));
			}

			// 機器送付先番地号
			if(kkTorokuWork.get("kiki_sohus_bnchigo") == null || "".equals(kkTorokuWork.get("kiki_sohus_bnchigo")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_BNCHIGO);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_BNCHIGO, (String)kkTorokuWork.get("kiki_sohus_bnchigo"));
			}

			// 機器送付先住所補記・建物名
			if(kkTorokuWork.get("kiki_sohus_adrttm") == null || "".equals(kkTorokuWork.get("kiki_sohus_adrttm")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_ADRTTM);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_ADRTTM, (String)kkTorokuWork.get("kiki_sohus_adrttm"));
			}

			// 機器送付先住所補記・部屋番号
			if(kkTorokuWork.get("kiki_sohus_adrrm") == null || "".equals(kkTorokuWork.get("kiki_sohus_adrrm")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_ADRRM);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_ADRRM, (String)kkTorokuWork.get("kiki_sohus_adrrm"));
			}

			// 機器送付先電話番号
			if(kkTorokuWork.get("kiki_sohus_telno") == null || "".equals(kkTorokuWork.get("kiki_sohus_telno")))
			{
				template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_TELNO);
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_TELNO, (String)kkTorokuWork.get("kiki_sohus_telno"));
			}

			// 機器送付先住所手動入力フラグ
			// 画面からは0または1が設定されるため未入力はありえないはず
			if(kkTorokuWork.get("kiki_shs_ad_man_input_flg") == null || "".equals(kkTorokuWork.get("kiki_shs_ad_man_input_flg")))
			{
				template.set(EKK0341D010CBSMsg.KIKI_SHS_AD_MAN_INPUT_FLG, "0");
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SHS_AD_MAN_INPUT_FLG, (String)kkTorokuWork.get("kiki_shs_ad_man_input_flg"));
			}

			// 機器送付先住所チェックレベル
			if("0".equals(template.getString(EKK0341D010CBSMsg.KIKI_SHS_AD_MAN_INPUT_FLG)))
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_AD_CHK_LV, "1");
			}
			else
			{
				template.set(EKK0341D010CBSMsg.KIKI_SOHUS_AD_CHK_LV, "0");
			}
		}

		// マンション物件番号
		template.setNull(EKK0341D010CBSMsg.MANSION_BUKKEN_NO);

		// 機器送付先_契約者住所差異フラグ
		template.setNull(EKK0341D010CBSMsg.KIKI_SOHUS_KSH_AD_SAI_FLG);

// // 機器送付先住所確定後変更可否
// template.setNull(EKK0341D010CBSMsg.KIKI_SHS_AD_FIX_AF_CHGE_KH);

		// 機器送付先個別指定フラグ
		String kiki_shs_kbt_shitei_flg = getKikiShsKbtShiteiFlg(param);
		if("".equals(kiki_shs_kbt_shitei_flg))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_SHS_KBT_SHITEI_FLG);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_SHS_KBT_SHITEI_FLG, kiki_shs_kbt_shitei_flg);
		}

		// 機器送付先補足コード1
		template.setNull(EKK0341D010CBSMsg.KIKI_SHS_HSK_CD_1);

		// 機器送付先補足コード2
		template.setNull(EKK0341D010CBSMsg.KIKI_SHS_HSK_CD_2);

		// 機器送付先補足メモ
		template.setNull(EKK0341D010CBSMsg.KIKI_SHS_HSK_MEMO);

		// 機器設置先名
		template.setNull(EKK0341D010CBSMsg.KIKI_STC_SAKI_NM);

		// 機器設置先カナ名
		template.setNull(EKK0341D010CBSMsg.KIKI_STC_SAKI_KANA);

		// 機器設置先住所コード
		if(ekk0251b003Map.get("kaisen_place_ad_cd") == null || "".equals(ekk0251b003Map.get("kaisen_place_ad_cd")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_STC_SAKI_AD_CD);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_STC_SAKI_AD_CD, (String)ekk0251b003Map.get("kaisen_place_ad_cd"));
		}

		// 機器設置先郵便番号
		if(ekk0251b003Map.get("kaisen_place_pcd") == null || "".equals(ekk0251b003Map.get("kaisen_place_pcd")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_STC_SAKI_PCD);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_STC_SAKI_PCD, (String)ekk0251b003Map.get("kaisen_place_pcd"));
		}

		// 機器設置先都道府県名
		if(ekk0251b003Map.get("kaisen_place_state_nm") == null || "".equals(ekk0251b003Map.get("kaisen_place_state_nm")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_STC_SAKI_STATE_NM);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_STC_SAKI_STATE_NM, (String)ekk0251b003Map.get("kaisen_place_state_nm"));
		}

		// 機器設置先市区町村名
		if(ekk0251b003Map.get("kaisen_place_city_nm") == null || "".equals(ekk0251b003Map.get("kaisen_place_city_nm")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_STC_SAKI_CITY_NM);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_STC_SAKI_CITY_NM, (String)ekk0251b003Map.get("kaisen_place_city_nm"));
		}

		// 機器設置先大字通称名
		if(ekk0251b003Map.get("kaisen_place_oaztsu_nm") == null || "".equals(ekk0251b003Map.get("kaisen_place_oaztsu_nm")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_STC_SAKI_OAZTSU_NM);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_STC_SAKI_OAZTSU_NM, (String)ekk0251b003Map.get("kaisen_place_oaztsu_nm"));
		}

		// 機器設置先字丁目名
		if(ekk0251b003Map.get("kaisen_place_azcho_nm") == null || "".equals(ekk0251b003Map.get("kaisen_place_azcho_nm")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_STC_SAKI_AZCHO_NM);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_STC_SAKI_AZCHO_NM, (String)ekk0251b003Map.get("kaisen_place_azcho_nm"));
		}

		// 機器設置先番地号
		if(ekk0251b003Map.get("kaisen_place_bnchigo") == null || "".equals(ekk0251b003Map.get("kaisen_place_bnchigo")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_STC_SAKI_BNCHIGO);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_STC_SAKI_BNCHIGO, (String)ekk0251b003Map.get("kaisen_place_bnchigo"));
		}

		// 機器設置先住所補記・建物名
		if(ekk0251b003Map.get("kaisen_place_adrttm") == null || "".equals(ekk0251b003Map.get("kaisen_place_adrttm")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRTTM);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRTTM, (String)ekk0251b003Map.get("kaisen_place_adrttm"));
		}

		// 機器設置先住所補記・部屋番号
		if(ekk0251b003Map.get("kaisen_place_adrrm") == null || "".equals(ekk0251b003Map.get("kaisen_place_adrrm")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRRM);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRRM, (String)ekk0251b003Map.get("kaisen_place_adrrm"));
		}

		// 機器設置先_契約者住所差異フラグ
		if(ekk0251b003Map.get("kaisen_plc_ksh_ad_sai_flg") == null || "".equals(ekk0251b003Map.get("kaisen_plc_ksh_ad_sai_flg")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_STC_SK_KSH_AD_SAI_FLG);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_STC_SK_KSH_AD_SAI_FLG, (String)ekk0251b003Map.get("kaisen_plc_ksh_ad_sai_flg"));
		}

		// 機器設置先電話番号
		if(ekk0251b003Map.get("kaisen_place_telno") == null || "".equals(ekk0251b003Map.get("kaisen_place_telno")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_STC_SK_TELNO);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_STC_SK_TELNO, (String)ekk0251b003Map.get("kaisen_place_telno"));
		}

// // 機器設置先住所確定後変更可否
// template.setNull(EKK0341D010CBSMsg.KIKI_STS_AD_FIX_AF_CHGE_KH);

		// 機器設置先区画整理中フラグ
		if(ekk0251b003Map.get("kisn_plc_kkk_seiri_chu_flg") == null || "".equals(ekk0251b003Map.get("kisn_plc_kkk_seiri_chu_flg")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_STS_KKK_SEIRI_CHU_FLG);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_STS_KKK_SEIRI_CHU_FLG, (String)ekk0251b003Map.get("kisn_plc_kkk_seiri_chu_flg"));
		}

		// 住所未確定フラグ
		if(ekk0251b003Map.get(EKK0251B003CBSMsg1List.KISN_PLC_AD_MI_FIX_FLG) == null
				|| "".equals(ekk0251b003Map.get(EKK0251B003CBSMsg1List.KISN_PLC_AD_MI_FIX_FLG)))
		{
			template.setNull(EKK0341D010CBSMsg.AD_MI_FIX_FLG);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.AD_MI_FIX_FLG, (String)ekk0251b003Map.get(EKK0251B003CBSMsg1List.KISN_PLC_AD_MI_FIX_FLG));
		}

		// 機器設置先補足コード1
		template.setNull(EKK0341D010CBSMsg.KIKI_STS_HSK_CD_1);

		// 機器設置先補足コード2
		template.setNull(EKK0341D010CBSMsg.KIKI_STS_HSK_CD_2);

		// 機器設置先補足メモ
		template.setNull(EKK0341D010CBSMsg.KIKI_STS_HSK_MEMO);

		// 配送区分
		if(kkTorokuWork.get("haiso_div") == null || "".equals(kkTorokuWork.get("haiso_div")))
		{
			// 設定されていない場合、固定値（直送：00）
// template.setNull(EKK0341D010CBSMsg.HAISO_DIV);
			template.set(EKK0341D010CBSMsg.HAISO_DIV, "00");
		}
		else
		{
			template.set(EKK0341D010CBSMsg.HAISO_DIV, (String)kkTorokuWork.get("haiso_div"));
		}

		// 試用加入年月日
		template.setNull(EKK0341D010CBSMsg.FTRIAL_KANYU_YMD);

		// 試用期間終了年月日
		template.setNull(EKK0341D010CBSMsg.FTRIAL_PRD_ENDYMD);

		// 本加入年月日
		template.setNull(EKK0341D010CBSMsg.HONKANYU_YMD);

		// 本加入移行期限年月日
		template.setNull(EKK0341D010CBSMsg.HONKANYU_IKO_KIGEN_YMD);

		// 保証コード
		template.setNull(EKK0341D010CBSMsg.HOSHO_CD);

		// 保証開始年月日
		template.setNull(EKK0341D010CBSMsg.HOSHO_STAYMD);

		// 違約金発生コード
		template.setNull(EKK0341D010CBSMsg.PNLTY_HASSEI_CD);

		
		/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
//		// 異動区分
//		if(inMap.get("ido_div") == null || "".equals(inMap.get("ido_div")))
//		{
//			template.setNull(EKK0341D010CBSMsg.IDO_DIV);
//		}
//		else
//		{
//			template.set(EKK0341D010CBSMsg.IDO_DIV, (String)inMap.get("ido_div"));
//		}
		// ワーク領域から工事受付契機異動区分を取得します。
		String kojiUkOptntyIdoDiv = getNullToStr((String)workMap.get("KOJI_UK_OPTNTY_IDO_DIV" + "WORK"));
		
		// 異動区分
		// 工事受付契機異動区分が設定されている場合
		if(!"".equals(kojiUkOptntyIdoDiv))
		{
			// 登録契機契約異動区分
			template.set(EKK0341D010CBSMsg.IDO_DIV, kojiUkOptntyIdoDiv);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.IDO_DIV, getNullToStr((String)inMap.get("ido_div")));
		}
		/* ++++++++++ v7.00.01 変更終了 ++++++++++ */
		
		// 宅内機器異動コード
		if(kkTorokuWork.get("taknkiki_ido_cd") == null || "".equals(kkTorokuWork.get("taknkiki_ido_cd")))
		{
			// 引数に設定されていない場合、追加（01）固定
			template.set(EKK0341D010CBSMsg.TAKNKIKI_IDO_CD, "01");
		}
		else
		{
			template.set(EKK0341D010CBSMsg.TAKNKIKI_IDO_CD, (String)kkTorokuWork.get("taknkiki_ido_cd"));
		}

		// CASカード使用許諾年月日
		template.setNull(EKK0341D010CBSMsg.CAS_CARD_USE_KYODAK_YMD);

		// 機器付加情報コード
		if(kkTorokuWork.get("kiki_huka_info_cd") == null || "".equals(kkTorokuWork.get("kiki_huka_info_cd")))
		{
			/* ++++++++++ v4.02.00 修正開始 ++++++++++ */
//			template.set(EKK0341D010CBSMsg.KIKI_HUKA_INFO_CD, "000");
			template.setNull(EKK0341D010CBSMsg.KIKI_HUKA_INFO_CD);
			/* ++++++++++ v4.02.00 修正完了 ++++++++++ */
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_HUKA_INFO_CD, (String)kkTorokuWork.get("kiki_huka_info_cd"));
		}

		// 配送方法コード
		if(kkTorokuWork.get("haiso_way_cd") == null || "".equals(kkTorokuWork.get("haiso_way_cd")))
		{
			template.setNull(EKK0341D010CBSMsg.HAISO_WAY_CD);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.HAISO_WAY_CD, (String)kkTorokuWork.get("haiso_way_cd"));
		}

		// 課金先番号
		template.setNull(EKK0341D010CBSMsg.KAKINS_NO);

		// 請求契約番号
		if(ekk0321b002Map.get("seiky_kei_no") == null || "".equals(ekk0321b002Map.get("seiky_kei_no")))
		{
			template.setNull(EKK0341D010CBSMsg.SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.SEIKY_KEI_NO, (String)ekk0321b002Map.get("seiky_kei_no"));
		}

		// 機器製造番号
		if(kkTorokuWork.get("kiki_seizo_no") == null || "".equals(kkTorokuWork.get("kiki_seizo_no")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_SEIZO_NO);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_SEIZO_NO, (String)kkTorokuWork.get("kiki_seizo_no"));
		}

		// 料金項目コード
		template.setNull(EKK0341D010CBSMsg.PRC_KMK_CD);

		String updDtm = getSvcUpDtm(param);

		template.set(EKK0341D010CBSMsg.UPD_DTM_BF, updDtm);

		// 申込明細番号
		String mskmDtlNo = getMskmDtlNo(param, inMap);

		if("".equals(mskmDtlNo))
		{
			template.setNull(EKK0341D010CBSMsg.MSKM_DTL_NO);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.MSKM_DTL_NO, mskmDtlNo);
		}

		// 配送依頼指定年月日
		if(kkTorokuWork.get("haiso_req_shitei_ymd") == null || "".equals(kkTorokuWork.get("haiso_req_shitei_ymd")))
		{
			template.setNull(EKK0341D010CBSMsg.HAISO_REQ_SHITEI_YMD);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.HAISO_REQ_SHITEI_YMD, (String)kkTorokuWork.get("haiso_req_shitei_ymd"));
		}

		// 機器移転先移動実施者識別コード
		if(kkTorokuWork.get("kiki_itens_mv_jssis_skcd") == null || "".equals(kkTorokuWork.get("kiki_itens_mv_jssis_skcd")))
		{
			template.setNull(EKK0341D010CBSMsg.KIKI_ITENS_MV_JSSIS_SKCD);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.KIKI_ITENS_MV_JSSIS_SKCD, (String)kkTorokuWork.get("kiki_itens_mv_jssis_skcd"));
		}
		
		/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
		// サービス開始起算年月日
		if((String)parentdata.get("svc_sta_kisan_ymd") == null || "".equals((String)parentdata.get("svc_sta_kisan_ymd")))
		{
			template.setNull(EKK0341D010CBSMsg.SVC_STA_KISAN_YMD);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.SVC_STA_KISAN_YMD, (String)parentdata.get("svc_sta_kisan_ymd"));
		}
		/* ++++++++++ v5.00.00 追加終了 ++++++++++ */
		
		/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
		// 予約適用年月日（入力）
		String inputRsvAplyYmd = getNullToStr((String)parentdata.get("input_rsv_aply_ymd"));
		if (!"".equals(inputRsvAplyYmd))
		{
			template.set(EKK0341D010CBSMsg.RSV_APLY_YMD_I, inputRsvAplyYmd);
		}
		else
		{
			template.setNull(EKK0341D010CBSMsg.RSV_APLY_YMD_I);
		}
		/* ++++++++++ v9.00.00 追加終了 ++++++++++ */
		
		/* ++++++++++ v10.00.00 追加開始 ++++++++++ */
		// 出荷完了時処理済フラグ
		String shkaFinJiSyrzmFlg = getNullToStr((String)parentdata.get("shka_fin_ji_syrzm_flg"));
		if (!"".equals(shkaFinJiSyrzmFlg))
		{
			template.set(EKK0341D010CBSMsg.SHKA_FIN_JI_SYRZM_FLG, shkaFinJiSyrzmFlg);
		}
		else
		{
			template.setNull(EKK0341D010CBSMsg.SHKA_FIN_JI_SYRZM_FLG);
		}
		/* ++++++++++ v10.00.00 追加終了 ++++++++++ */
		/* ++++++++++ v10.00.02 追加開始 ++++++++++ */
		// 保証・補償期間開始日算出基準年月日
		String hcprd_Stad_Snststd_Ymd = getNullToStr((String)parentdata.get("hcprd_stad_snststd_ymd"));
		if (!"".equals(hcprd_Stad_Snststd_Ymd))
		{
			template.set(EKK0341D010CBSMsg.HCPRD_STAD_SNSTSTD_YMD, hcprd_Stad_Snststd_Ymd);
		}
		else
		{
			template.setNull(EKK0341D010CBSMsg.HCPRD_STAD_SNSTSTD_YMD);
		}
		// 保証・補償期間開始日算出基準年月日識別コード
		String hcprdStadSnststdYmdScd = getNullToStr((String)parentdata.get("hcprd_stad_snststd_ymd_scd"));
		if (!"".equals(hcprdStadSnststdYmdScd))
		{
			template.set(EKK0341D010CBSMsg.HCPRD_STAD_SNSTSTD_YMD_SCD, hcprdStadSnststdYmdScd);
		}
		else
		{
			template.setNull(EKK0341D010CBSMsg.HCPRD_STAD_SNSTSTD_YMD_SCD);
		}
		/* ++++++++++ v10.00.02 追加終了 ++++++++++ */
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 管理場所識別コード、各倉庫コード、各棚コードを設定する
	 * 
	 * @param template
	 * @param kkTorokuWork インターフェース
	 * @param edk0451a010Map
	 * @param tkSbtCd 提供種別コード
	 */
	private void setKanriBasho(CAANMsg template, Map<String, Object> kkTorokuWork, 
			Map<String, Object> edk0451a010Map, String tkSbtCd)
	{
		// 管理場所識別コードを取得
		String kariBashoSbtCd = getNullToStr((String)kkTorokuWork.get("kriplace_skcd"));

		// 提供種別コードが「持込」の場合
		if(TEIKYO_SBT_MOCHIKOMI.equals(tkSbtCd))
		{
			// 全て空を設定
			// 機器提供サービス契約登録.機器指定時管理場所識別コード
			template.setNull(EKK0341D010CBSMsg.KIKI_STI_JI_KRIPLACE_SKCD);

			// 機器提供サービス契約登録.機器引当指定倉庫コード
			template.setNull(EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD);
			// 機器提供サービス契約登録.機器引当指定倉庫棚コード
			template.setNull(EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD);

			// 機器提供サービス契約登録.機器指定時工事会社コード
			template.setNull(EKK0341D010CBSMsg.KIKI_STI_JI_KOCOMP_CD);
			// 機器提供サービス契約登録.機器指定時工事会社棚コード
			template.setNull(EKK0341D010CBSMsg.KIKI_STI_JI_KOCOMP_SLF_CD);

			// 機器提供サービス契約登録.機器指定時預託先オフィスコード
			template.setNull(EKK0341D010CBSMsg.KIKI_STI_JI_YTKSKOF_CD);
			// 機器提供サービス契約登録.機器指定時預託先オフィス棚コード
			template.setNull(EKK0341D010CBSMsg.KIKI_STI_JI_YTKSKOF_SLF_CD);
		}
		// 提供種別コードが「持込」以外の場合
		else
		{
			// 倉庫コード取得
			String sokoCode = getSokoCode(kkTorokuWork);
			// 棚コード取得
			String tanaCode = getSokoDanaCode(edk0451a010Map);

			// 倉庫の場合
			if("".equals(kariBashoSbtCd) || KRIPLACE_SKCD_SOKO.equals(kariBashoSbtCd))
			{
				// 機器提供サービス契約登録.機器指定時管理場所識別コード
				template.setNull(EKK0341D010CBSMsg.KIKI_STI_JI_KRIPLACE_SKCD);
				// 機器提供サービス契約登録.機器引当指定倉庫コード
				template.set(EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD, sokoCode);
				// 機器提供サービス契約登録.機器引当指定倉庫棚コード
				if("".equals(tanaCode))
				{
					template.setNull(EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD);
				}
				else
				{
					template.set(EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD, tanaCode);
				}
			}
			else
			{
				// 機器提供サービス契約登録.機器指定時管理場所識別コード
				template.set(EKK0341D010CBSMsg.KIKI_STI_JI_KRIPLACE_SKCD, kariBashoSbtCd);
				// 機器提供サービス契約登録.機器引当指定倉庫コード
				template.setNull(EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD);
				// 機器提供サービス契約登録.機器引当指定倉庫棚コード
				template.setNull(EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD);
			}

			// 工事会社の場合
			if(KRIPLACE_SKCD_KOJI.equals(kariBashoSbtCd))
			{
				// 機器提供サービス契約登録.機器指定時工事会社コード
				template.set(EKK0341D010CBSMsg.KIKI_STI_JI_KOCOMP_CD, sokoCode);
				// 機器提供サービス契約登録.機器指定時工事会社棚コード
				if("".equals(tanaCode))
				{
					template.setNull(EKK0341D010CBSMsg.KIKI_STI_JI_KOCOMP_SLF_CD);
				}
				else
				{
					template.set(EKK0341D010CBSMsg.KIKI_STI_JI_KOCOMP_SLF_CD, tanaCode);
				}
			}
			else
			{
				// 機器提供サービス契約登録.機器指定時工事会社コード
				template.setNull(EKK0341D010CBSMsg.KIKI_STI_JI_KOCOMP_CD);
				// 機器提供サービス契約登録.機器指定時工事会社棚コード
				template.setNull(EKK0341D010CBSMsg.KIKI_STI_JI_KOCOMP_SLF_CD);
			}

			// 預託オフィスの場合
			if(KRIPLACE_SKCD_OFFICE.equals(kariBashoSbtCd))
			{
				// 機器提供サービス契約登録.機器指定時預託先オフィスコード
				template.set(EKK0341D010CBSMsg.KIKI_STI_JI_YTKSKOF_CD, sokoCode);
				// 機器提供サービス契約登録.機器指定時預託先オフィス棚コード
				if("".equals(tanaCode))
				{
					template.setNull(EKK0341D010CBSMsg.KIKI_STI_JI_YTKSKOF_SLF_CD);
				}
				else
				{
					template.set(EKK0341D010CBSMsg.KIKI_STI_JI_YTKSKOF_SLF_CD, tanaCode);
				}
			}
			else
			{
				// 機器提供サービス契約登録.機器指定時預託先オフィスコード
				template.setNull(EKK0341D010CBSMsg.KIKI_STI_JI_YTKSKOF_CD);
				// 機器提供サービス契約登録.機器指定時預託先オフィス棚コード
				template.setNull(EKK0341D010CBSMsg.KIKI_STI_JI_YTKSKOF_SLF_CD);
			}
		}
	}

	/**
	 * 倉庫コードを取得。<br>
	 * データが存在しない場合、デフォルト値を設定する。<br>
	 * 
	 * @param kkTorokuWork
	 * @return 倉庫コード
	 */
	private String getSokoCode(Map<String, Object> kkTorokuWork)
	{
		String sokoCd = getNullToStr((String)kkTorokuWork.get("soko_cd"));
		if("".equals(sokoCd))
		{
			// 未設定の場合、0000001を指定
			return DEFAULT_SOKO_CD;
		}
		return sokoCd;
	}

	/**
	 * 棚コードを取得。<br>
	 * 棚コードが存在していない場合、空("")を返却。<br>
	 * 
	 * @param edk0451a010Map
	 * @return 棚コード
	 */
	private String getSokoDanaCode(Map<String, Object> edk0451a010Map)
	{
		String sokoDanaCd = "";
		if(edk0451a010Map == null)
		{
			return "";
		}
		else
		{
			// 機器引当指定倉庫棚コード
			sokoDanaCd = getNullToStr((String)edk0451a010Map.get("shelf_cd"));
			if("".equals(sokoDanaCd))
			{
				return "";
			}
		}
		return sokoDanaCd;
	}

	/**
	 * 機器提供サービス契約登録検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0341D010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0341d010Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0341D010 + "WORK", ekk0341d010Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 検索結果をMapに格納します。
		// 機器提供サービス契約番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KKTK_SVC_KEI_NO);
		// 世代登録年月日時分秒
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.GENE_ADD_DTM);
		// 機器提供サービス契約ステータス
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KKTK_SVC_KEI_STAT);
		// 機器提供サービスコード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KKTK_SVC_CD);
		// 料金コースコード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.PCRS_CD);
		// 料金プランコード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.PPLAN_CD);
		// 機器提供種別コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KKTK_SBT_CD);
		// HDD容量コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.HDD_CAPA_CD);
		// サービス利用開始希望年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.SVC_USE_STA_KIBO_YMD);
		// 予約適用開始希望年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.RSV_TSTA_KIBO_YMD);
		// 希望メーカーコード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIBO_MAKER_CD);
		// 販売種別コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.HAMBAI_SBT_CD);
		// 通信機器セットコード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.TSUSHIN_KIKI_SET_CD);
		// 宅内機器種別コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.TAKNKIKI_SBT_CD);
		// 宅内機器型式コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.TAKNKIKI_MODEL_CD);
		// 宅内機器セット品型コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.TAKNKIKI_SETHIN_MODEL_CD);
		// 付属品種別コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.HUZOKUHIN_SBT_CD);
		// 機器設置先場所番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_PLACE_NO);
		// 親契約識別コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.OYA_KEI_SKBT_CD);
		// サービス契約番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.SVC_KEI_NO);
		// サービス契約内訳番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.SVC_KEI_UCWK_NO);
		// サービス契約回線内訳番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO);
		// オプションサービス契約番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.OP_SVC_KEI_NO);
		// SYSID
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.SYSID);
		// 申込明細番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.MSKM_DTL_NO);
		// リンクSTBフラグ
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.LINK_STB_FLG);
		// 機器引当指定倉庫コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD);
		// 機器引当指定倉庫棚コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD);
		// 機器送料有無
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SORYO_UM);
		// 機器送料作成年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SORYO_SAKSEI_YMD);
		// 機器送付先名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SOHUS_NM);
		// 機器送付先カナ名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SOHUS_KANA);
		// 機器送付先住所コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SOHUS_AD_CD);
		// 機器送付先郵便番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SOHUS_PCD);
		// 機器送付先都道府県名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SOHUS_STATE_NM);
		// 機器送付先市区町村名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SOHUS_CITY_NM);
		// 機器送付先大字通称名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SOHUS_OAZTSU_NM);
		// 機器送付先字丁目名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SOHUS_AZCHO_NM);
		// 機器送付先番地号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SOHUS_BNCHIGO);
		// 機器送付先住所補記・建物名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SOHUS_ADRTTM);
		// 機器送付先住所補記・部屋番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SOHUS_ADRRM);
		// 機器送付先電話番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SOHUS_TELNO);
		// マンション物件番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.MANSION_BUKKEN_NO);
		// 機器送付先_契約者住所差異フラグ
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SOHUS_KSH_AD_SAI_FLG);
// // 機器送付先住所確定後変更可否
// setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SHS_AD_FIX_AF_CHGE_KH);
		// 機器送付先個別指定フラグ
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SHS_KBT_SHITEI_FLG);
		// 機器送付先補足コード1
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SHS_HSK_CD_1);
		// 機器送付先補足コード2
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SHS_HSK_CD_2);
		// 機器送付先補足メモ
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SHS_HSK_MEMO);
		// 機器設置先名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_NM);
		// 機器設置先カナ名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_KANA);
		// 機器設置先住所コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_AD_CD);
		// 機器設置先郵便番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_PCD);
		// 機器設置先都道府県名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_STATE_NM);
		// 機器設置先市区町村名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_CITY_NM);
		// 機器設置先大字通称名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_OAZTSU_NM);
		// 機器設置先字丁目名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_AZCHO_NM);
		// 機器設置先番地号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_BNCHIGO);
		// 機器設置先住所補記・建物名
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRTTM);
		// 機器設置先住所補記・部屋番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRRM);
		// 機器設置先_契約者住所差異フラグ
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SK_KSH_AD_SAI_FLG);
		// 機器設置先電話番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STC_SK_TELNO);
// // 機器設置先住所確定後変更可否
// setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STS_AD_FIX_AF_CHGE_KH);
		// 機器設置先区画整理中フラグ
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STS_KKK_SEIRI_CHU_FLG);
		// 住所未確定フラグ
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.AD_MI_FIX_FLG);
		// 機器設置先補足コード1
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STS_HSK_CD_1);
		// 機器設置先補足コード2
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STS_HSK_CD_2);
		// 機器設置先補足メモ
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_STS_HSK_MEMO);
		// 配送区分
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.HAISO_DIV);
		// 試用加入年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.FTRIAL_KANYU_YMD);
		// 試用期間終了年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.FTRIAL_PRD_ENDYMD);
		// 本加入年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.HONKANYU_YMD);
		// 本加入移行期限年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.HONKANYU_IKO_KIGEN_YMD);
		// 保証コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.HOSHO_CD);
		// 保証開始年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.HOSHO_STAYMD);
		// 保証終了年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.HOSHO_END_YMD);
		// 予約適用年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.RSV_APLY_YMD);
		// 予約適用コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.RSV_APLY_CD);
		// 違約金発生コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.PNLTY_HASSEI_CD);
		// 異動区分
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.IDO_DIV);
		// 宅内機器異動コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.TAKNKIKI_IDO_CD);
		// CASカード使用許諾年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.CAS_CARD_USE_KYODAK_YMD);
		// 機器付加情報コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_HUKA_INFO_CD);
		// 配送方法コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.HAISO_WAY_CD);
		// 課金先番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KAKINS_NO);
		// 請求契約番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.SEIKY_KEI_NO);
		// 料金項目コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.PRC_KMK_CD);
		// 課金先適用開始年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KAKINS_TSTAYMD);
		// 課金先適用終了年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KAKINS_TENDYMD);
		// 登録年月日時分秒
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.ADD_DTM);
		// 登録オペレータアカウント
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.ADD_OPEACNT);
		// 更新年月日時分秒
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.UPD_DTM);
		// 更新オペレータアカウント
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.UPD_OPEACNT);
		// 無効フラグ
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.MK_FLG);
		// 機器製造番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_SEIZO_NO);
		// 機器移転先移動実施者識別コード
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_ITENS_MV_JSSIS_SKCD);
		// 配送依頼指定年月日
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.HAISO_REQ_SHITEI_YMD);
		// 機器変更番号
		setDataMap(ekk0341d010Map, template, EKK0341D010CBSMsg.KIKI_CHG_NO);

		// 更新年月日時分秒（サービス契約）
		// 更新日付を共通領域に格納
		setSvcUpDtm(param, template.getString(EKK0341D010CBSMsg.UPD_DTM));

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0341D010(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * 機器提供サービス契約登録エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0341D010(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0341D010CBSMsg.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);
		}

		// 機器提供サービスコード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KKTK_SVC_CD_ERR);
		// 料金コースコード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.PCRS_CD_ERR);
		// 料金プランコード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.PPLAN_CD_ERR);
		// 機器提供種別コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KKTK_SBT_CD_ERR);
		// HDD容量コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.HDD_CAPA_CD_ERR);
		// サービス利用開始希望年月日
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.SVC_USE_STA_KIBO_YMD_ERR);
		// 予約適用開始希望年月日
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.RSV_TSTA_KIBO_YMD_ERR);
		// 希望メーカーコード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIBO_MAKER_CD_ERR);
		// 販売種別コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.HAMBAI_SBT_CD_ERR);
		// 通信機器セットコード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.TSUSHIN_KIKI_SET_CD_ERR);
		// 宅内機器種別コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.TAKNKIKI_SBT_CD_ERR);
		// 宅内機器型式コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.TAKNKIKI_MODEL_CD_ERR);
		// 宅内機器セット品型コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.TAKNKIKI_SETHIN_MODEL_CD_ERR);
		// 付属品種別コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.HUZOKUHIN_SBT_CD_ERR);
		// 機器設置先場所番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_PLACE_NO_ERR);
		// 親契約識別コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.OYA_KEI_SKBT_CD_ERR);
		// サービス契約番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.SVC_KEI_NO_ERR);
		// サービス契約内訳番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.SVC_KEI_UCWK_NO_ERR);
		// サービス契約回線内訳番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO_ERR);
		// オプションサービス契約番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.OP_SVC_KEI_NO_ERR);
		// SYSID
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.SYSID_ERR);
		// 申込明細番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.MSKM_DTL_NO_ERR);
		// リンクSTBフラグ
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.LINK_STB_FLG_ERR);
		// 機器引当指定倉庫コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD_ERR);
		// 機器引当指定倉庫棚コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD_ERR);
		// 機器送料有無
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SORYO_UM_ERR);
		// 機器送料作成年月日
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SORYO_SAKSEI_YMD_ERR);
		// 機器送付先名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SOHUS_NM_ERR);
		// 機器送付先カナ名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SOHUS_KANA_ERR);
		// 機器送付先住所コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SOHUS_AD_CD_ERR);
		// 機器送付先郵便番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SOHUS_PCD_ERR);
		// 機器送付先都道府県名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SOHUS_STATE_NM_ERR);
		// 機器送付先市区町村名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SOHUS_CITY_NM_ERR);
		// 機器送付先大字通称名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SOHUS_OAZTSU_NM_ERR);
		// 機器送付先字丁目名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SOHUS_AZCHO_NM_ERR);
		// 機器送付先番地号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SOHUS_BNCHIGO_ERR);
		// 機器送付先住所補記・建物名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SOHUS_ADRTTM_ERR);
		// 機器送付先住所補記・部屋番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SOHUS_ADRRM_ERR);
		// 機器送付先電話番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SOHUS_TELNO_ERR);
		// マンション物件番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.MANSION_BUKKEN_NO_ERR);
		// 機器送付先_契約者住所差異フラグ
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SOHUS_KSH_AD_SAI_FLG_ERR);
// // 機器送付先住所確定後変更可否
// setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SHS_AD_FIX_AF_CHGE_KH_ERR);
		// 機器送付先個別指定フラグ
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SHS_KBT_SHITEI_FLG_ERR);
		// 機器送付先補足コード1
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SHS_HSK_CD_1_ERR);
		// 機器送付先補足コード2
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SHS_HSK_CD_2_ERR);
		// 機器送付先補足メモ
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SHS_HSK_MEMO_ERR);
		// 機器設置先名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_NM_ERR);
		// 機器設置先カナ名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_KANA_ERR);
		// 機器設置先住所コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_AD_CD_ERR);
		// 機器設置先郵便番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_PCD_ERR);
		// 機器設置先都道府県名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_STATE_NM_ERR);
		// 機器設置先市区町村名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_CITY_NM_ERR);
		// 機器設置先大字通称名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_OAZTSU_NM_ERR);
		// 機器設置先字丁目名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_AZCHO_NM_ERR);
		// 機器設置先番地号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_BNCHIGO_ERR);
		// 機器設置先住所補記・建物名
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRTTM_ERR);
		// 機器設置先住所補記・部屋番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRRM_ERR);
		// 機器設置先_契約者住所差異フラグ
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SK_KSH_AD_SAI_FLG_ERR);
		// 機器設置先電話番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STC_SK_TELNO_ERR);
// // 機器設置先住所確定後変更可否
// setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STS_AD_FIX_AF_CHGE_KH_ERR);
		// 機器設置先区画整理中フラグ
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STS_KKK_SEIRI_CHU_FLG_ERR);
		// 住所未確定フラグ
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.AD_MI_FIX_FLG_ERR);
		// 機器設置先補足コード1
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STS_HSK_CD_1_ERR);
		// 機器設置先補足コード2
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STS_HSK_CD_2_ERR);
		// 機器設置先補足メモ
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_STS_HSK_MEMO_ERR);
		// 配送区分
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.HAISO_DIV_ERR);
		// 試用加入年月日
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.FTRIAL_KANYU_YMD_ERR);
		// 試用期間終了年月日
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.FTRIAL_PRD_ENDYMD_ERR);
		// 本加入年月日
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.HONKANYU_YMD_ERR);
		// 本加入移行期限年月日
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.HONKANYU_IKO_KIGEN_YMD_ERR);
		// 保証コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.HOSHO_CD_ERR);
		// 保証開始年月日
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.HOSHO_STAYMD_ERR);
		// 違約金発生コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.PNLTY_HASSEI_CD_ERR);
		// 異動区分
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.IDO_DIV_ERR);
		// 宅内機器異動コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.TAKNKIKI_IDO_CD_ERR);
		// CASカード使用許諾年月日
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.CAS_CARD_USE_KYODAK_YMD_ERR);
		// 機器付加情報コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_HUKA_INFO_CD_ERR);
		// 配送方法コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.HAISO_WAY_CD_ERR);
		// 請求契約番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.SEIKY_KEI_NO_ERR);
		// 料金項目コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.PRC_KMK_CD_ERR);
		// 機器製造番号
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_SEIZO_NO_ERR);
		// 配送依頼指定年月日
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.HAISO_REQ_SHITEI_YMD_ERR);
		// 機器移転先移動実施者識別コード
		setErrDataMap(inMap, template, EKK0341D010CBSMsg.KIKI_ITENS_MV_JSSIS_SKCD_ERR);

		return param;
	}

	/**
	 * 機器提供サービス契約照査サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0341C030(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0341C030(param, dataMap);

		// ◇ SC呼出実行 (機器提供サービス契約照査)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0341C030(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * 機器提供サービス契約照査のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws Exception
	 */
	private HashMap<String, Object> editInMsg_EKK0341C030(IRequestParameterReadWrite param, Map<String, Object> inMap) throws Exception
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0341C030CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0341C030CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341C030);

		template.set(EKK0341C030CBSMsg.FUNC_CODE, inMap.get("func_code"));

		// オペレータ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);

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		Map<String, Object> ekk0341d010 = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0341D010 + "WORK");

		// 画面からの画面からのパラメータ取得
		Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);

		// ◇ 業務データの設定
		// 機器提供サービス契約番号
		if(ekk0341d010.get("kktk_svc_kei_no") == null || "".equals(ekk0341d010.get("kktk_svc_kei_no")))
		{
			template.setNull(EKK0341C030CBSMsg.KKTK_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0341C030CBSMsg.KKTK_SVC_KEI_NO, (String)ekk0341d010.get("kktk_svc_kei_no"));
		}

		// 更新年月日時分秒(更新前)
		String updDtm = getSvcUpDtm(param);
		// 更新年月日時分秒
		if("".equals(updDtm))
		{
			template.setNull(EKK0341C030CBSMsg.UPD_DTM_BF);
		}
		else
		{
			template.set(EKK0341C030CBSMsg.UPD_DTM_BF, updDtm);
		}
		
		// 異動区分
		if(inMap.get("ido_div") == null || "".equals(inMap.get("ido_div")))
		{
			template.setNull(EKK0341C030CBSMsg.IDO_DIV);
		}
		else
		{
			template.set(EKK0341C030CBSMsg.IDO_DIV, (String)inMap.get("ido_div"));
		}
	
		/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
//		// 異動区分
//		if(inMap.get("ido_div") == null || "".equals(inMap.get("ido_div")))
//		{
//			template.setNull(EKK0341C030CBSMsg.IDO_DIV);
//		}
//		else
//		{
//			template.set(EKK0341C030CBSMsg.IDO_DIV, (String)inMap.get("ido_div"));
//		}
		
		// ワーク領域から工事受付契機異動区分を取得します。
		String kojiUkOptntyIdoDiv = getNullToStr((String)workMap.get("KOJI_UK_OPTNTY_IDO_DIV" + "WORK"));
		
		// 異動区分
		// 工事受付契機異動区分が設定されている場合
		if(!"".equals(kojiUkOptntyIdoDiv))
		{
			// 登録契機契約異動区分
			template.set(EKK0341D010CBSMsg.IDO_DIV, kojiUkOptntyIdoDiv);
		}
		else
		{
			template.set(EKK0341D010CBSMsg.IDO_DIV, getNullToStr((String)inMap.get("ido_div")));
		}
		/* ++++++++++ v7.00.01 変更終了 ++++++++++ */
		
		// 機器認証ID
		template.setNull(EKK0341C030CBSMsg.KIKI_NINSHO_ID);

		// 機器認証IDパスワード
		template.setNull(EKK0341C030CBSMsg.KIKI_NINSHO_ID_PWD);
		// 照査解約完了コード
//		template.setNull(EKK0341C030CBSMsg.SHOSA_DSL_FIN_CD);
		template.set(EKK0341C030CBSMsg.SHOSA_DSL_FIN_CD, SHOSA_DSL_FIN_CD_OK);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 機器提供サービス契約照査検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0341C030(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0341c030Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0341C030 + "WORK", ekk0341c030Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 機器提供サービス契約番号
		setDataMap(ekk0341c030Map, template, EKK0341C030CBSMsg.KKTK_SVC_KEI_NO);
		// 世代登録年月日時分秒
		setDataMap(ekk0341c030Map, template, EKK0341C030CBSMsg.GENE_ADD_DTM);
		// 機器提供サービス契約ステータス
		setDataMap(ekk0341c030Map, template, EKK0341C030CBSMsg.KKTK_SVC_KEI_STAT);
		// 照査年月日
		setDataMap(ekk0341c030Map, template, EKK0341C030CBSMsg.SHOSA_YMD);
		// 照査取消年月日
		setDataMap(ekk0341c030Map, template, EKK0341C030CBSMsg.SHOSA_CL_YMD);
		// 予約適用年月日
		setDataMap(ekk0341c030Map, template, EKK0341C030CBSMsg.RSV_APLY_YMD);
		// 予約適用コード
		setDataMap(ekk0341c030Map, template, EKK0341C030CBSMsg.RSV_APLY_CD);
		// 登録年月日時分秒
		setDataMap(ekk0341c030Map, template, EKK0341C030CBSMsg.ADD_DTM);
		// 登録オペレータアカウント
		setDataMap(ekk0341c030Map, template, EKK0341C030CBSMsg.ADD_OPEACNT);
		// 更新年月日時分秒
		setDataMap(ekk0341c030Map, template, EKK0341C030CBSMsg.UPD_DTM);
		// 更新オペレータアカウント
		setDataMap(ekk0341c030Map, template, EKK0341C030CBSMsg.UPD_OPEACNT);
		// 無効フラグ
		setDataMap(ekk0341c030Map, template, EKK0341C030CBSMsg.MK_FLG);

		// 更新年月日時分秒（サービス契約）
		// 更新日付を共通領域に格納
		setSvcUpDtm(param, template.getString(EKK0341C030CBSMsg.UPD_DTM));

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0341C030(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * 機器提供サービス契約照査エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0341C030(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0341C030CBSMsg.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);
		}

		// 機器提供サービス契約番号
		setErrDataMap(inMap, template, EKK0341C030CBSMsg.KKTK_SVC_KEI_NO_ERR);

		// 機器認証ID
		setErrDataMap(inMap, template, EKK0341C030CBSMsg.KIKI_NINSHO_ID_ERR);

		// 機器認証IDパスワード
		setErrDataMap(inMap, template, EKK0341C030CBSMsg.KIKI_NINSHO_ID_PWD_ERR);

		// 異動区分
		setErrDataMap(inMap, template, EKK0341C030CBSMsg.IDO_DIV_ERR);

		// 更新年月日時分秒(更新前)
		setErrDataMap(inMap, template, EKK0341C030CBSMsg.UPD_DTM_BF_ERR);

		return param;
	}

	/**
	 * STB機器以外の処理を行います。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Throwable
	 */
	private void execStbOtherShori(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Throwable
	{
		// eoモバイル判定（macアドレスが設定されている場合）
		if(isEoMobile(param))
		{
			// サービス契約＜eoモバイル＞一意照会
			execEKK0121A010(handle, param, scCall, dataMap, parentdata);

			// サービス契約＜eoモバイル＞変更
			execEKK0121C040(handle, param, scCall, dataMap, parentdata);
		}

		// 料金コード取得部品より「料金コースコード」「料金プランコード」を取得します。
		Map<String, Object> pcrsDataMap = getPcraDataMap(handle, param, dataMap);

	}

	/**
	 * サービス契約＜eoモバイル＞一意照会サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0121A010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0121A010(param, dataMap);

		// ◇ SC呼出実行 (サービス契約＜eoモバイル＞一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0121A010(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * サービス契約＜eoモバイル＞一意照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EKK0121A010(IRequestParameterReadWrite param, Map<String, Object> inMap)
			throws RequestParameterException
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0121A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0121A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0121A010);

		template.set(EKK0121A010CBSMsg.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);

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// ◇ 業務データの設定
		// ＫＥＹ＿サービス契約番号
		if(inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK0121A010CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0121A010CBSMsg.KEY_SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}

		// ＫＥＹ＿世代登録年月日時分秒
		template.setNull(EKK0121A010CBSMsg.KEY_GENE_ADD_DTM);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * サービス契約＜eoモバイル＞一意照会検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0121A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0771b001Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0121A010 + "WORK", ekk0771b001Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0121A010CBSMsg.EKK0121A010CBSMSG1LIST);

		// 検索結果をMapに格納します。
		if(templateArray != null && templateArray.length > 0)
		{

			// 事業者用契約ID
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.JIGYOSHA_KEI_ID);
			// 事業者解約情報連携年月日
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.JGS_DSL_INFO_RNKI_YMD);
			// 事業者解約情報連携受付年月日
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.JGS_DSL_INFO_RNKI_UK_YMD);
			// 事業者利用停止連携年月日
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.JGS_USE_STP_RNKI_YMD);
			// 事業者利用停止受付年月日
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.JGS_USE_STP_UK_YMD);
			// 事業者利用停止解除連携年月日
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.JGS_USE_STP_RLS_RNKI_YMD);
			// 事業者利用停止解除受付年月日
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.JGS_USE_STP_RLS_UK_YMD);
			// 事業者中断電話連絡年月日
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.JGS_STP_TEL_RRK_YMD);
			// 事業者中断再開電話連絡年月日
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.JGS_STP_SKAI_TEL_RRK_YMD);
			// 事業者解約電話連絡年月日
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.JGS_DSL_TEL_RRK_YMD);
			// コース変更NG状態コード
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.COURSECHG_NG_STAT_CD);
			// 事業者コース変更連携年月日
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.JGS_COURSECHG_RNK_YMD);
			// コース変更通知メール作成年月日
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.COURSECHG_TCH_ML_SKSI_YMD);
			// USIM返却年月日(KOPT)
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.USIM_RTN_YMD_KOPT);
			// USIM返却年月日(モバイル事業者)
			setDataMap(ekk0771b001Map, templateArray[0], EKK0121A010CBSMsg1List.USIM_RTN_YMD_MBL_JGS);
		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0121A010(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * サービス契約＜eoモバイル＞一意照会エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0121A010(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0121A010CBSMsg.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);
		}

		// ＫＥＹ＿サービス契約番号
		setErrDataMap(inMap, template, EKK0121A010CBSMsg.KEY_SVC_KEI_NO_ERR);

		// ＫＥＹ＿世代登録年月日時分秒
		setErrDataMap(inMap, template, EKK0121A010CBSMsg.KEY_GENE_ADD_DTM_ERR);

		return param;
	}

	/**
	 * サービス契約<eoモバイル>情報変更サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0121C040(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0121C040(param, dataMap);

		// ◇ SC呼出実行 (サービス契約<eoモバイル>情報変更)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0121C040(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * サービス契約<eoモバイル>情報変更のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws Exception
	 */
	private HashMap<String, Object> editInMsg_EKK0121C040(IRequestParameterReadWrite param, Map<String, Object> inMap) throws Exception
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0121C040CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0121C040CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0121C040);

		template.set(EKK0121C040CBSMsg.FUNC_CODE, inMap.get("func_code"));

		// オペレータ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);

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 共通で格納している領域より取得
		Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);

		// ◇ 業務データの設定
		// サービス契約番号
		if(inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK0121C040CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}

		// 申込明細番号
		String mskmDtlNo = getMskmDtlNo(param, inMap);

		if("".equals(mskmDtlNo))
		{
			template.setNull(EKK0121C040CBSMsg.MSKM_DTL_NO);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.MSKM_DTL_NO, mskmDtlNo);
		}

		// 異動区分
		if(inMap.get("ido_div") == null || "".equals(inMap.get("ido_div")))
		{
			template.setNull(EKK0121C040CBSMsg.IDO_DIV);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.IDO_DIV, (String)inMap.get("ido_div"));
		}

		String updDtm = getSvcUpDtm(param);

		// 更新年月日時分秒（サービス契約）
		if("".equals(updDtm))
		{
			template.setNull(EKK0121C040CBSMsg.UPD_DTM_BF);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.UPD_DTM_BF, updDtm);
		}

		// MACアドレス
		if(kkTorokuWork.get("macad") == null || "".equals(kkTorokuWork.get("macad")))
		{
			template.setNull(EKK0121C040CBSMsg.MACAD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.MACAD, (String)kkTorokuWork.get("macad"));
		}

		// 共通で格納しているサービス契約一意照会を取得
		Map<String, Object> svcKeiMap = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0081A010 + "WORK");

		// ID速報書出力要否
		if(svcKeiMap.get("id_sokhosho_output_yh") == null || "".equals(svcKeiMap.get("id_sokhosho_output_yh")))
		{
			template.setNull(EKK0121C040CBSMsg.ID_SOKHOSHO_OUTPUT_YH);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.ID_SOKHOSHO_OUTPUT_YH, (String)svcKeiMap.get("id_sokhosho_output_yh"));
		}

		// 審査結果コード
		if(svcKeiMap.get("skekka_cd") == null || "".equals(svcKeiMap.get("skekka_cd")))
		{
			template.setNull(EKK0121C040CBSMsg.SKEKKA_CD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.SKEKKA_CD, (String)svcKeiMap.get("skekka_cd"));
		}

		// 審査結果詳細コード
		if(svcKeiMap.get("skekka_dtl_cd") == null || "".equals(svcKeiMap.get("skekka_dtl_cd")))
		{
			template.setNull(EKK0121C040CBSMsg.SKEKKA_DTL_CD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.SKEKKA_DTL_CD, (String)svcKeiMap.get("skekka_dtl_cd"));
		}

		// 審査結果補記コード
		if(svcKeiMap.get("skekka_hoki_cd") == null || "".equals(svcKeiMap.get("skekka_hoki_cd")))
		{
			template.setNull(EKK0121C040CBSMsg.SKEKKA_HOKI_CD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.SKEKKA_HOKI_CD, (String)svcKeiMap.get("skekka_hoki_cd"));
		}

		// 審査結果送信コード
		if(svcKeiMap.get("skekka_send_cd") == null || "".equals(svcKeiMap.get("skekka_send_cd")))
		{
			template.setNull(EKK0121C040CBSMsg.SKEKKA_SEND_CD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.SKEKKA_SEND_CD, (String)svcKeiMap.get("skekka_send_cd"));
		}

		// 支払い方法継続フラグ
		if(svcKeiMap.get("payway_keizoku_flg") == null || "".equals(svcKeiMap.get("payway_keizoku_flg")))
		{
			template.setNull(EKK0121C040CBSMsg.PAYWAY_KEIZOKU_FLG);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.PAYWAY_KEIZOKU_FLG, (String)svcKeiMap.get("payway_keizoku_flg"));
		}

		// 試用加入年月日
		if(svcKeiMap.get("ftrial_kanyu_ymd") == null || "".equals(svcKeiMap.get("ftrial_kanyu_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.FTRIAL_KANYU_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.FTRIAL_KANYU_YMD, (String)svcKeiMap.get("ftrial_kanyu_ymd"));
		}

		// 試用期間終了年月日
		if(svcKeiMap.get("ftrial_prd_endymd") == null || "".equals(svcKeiMap.get("ftrial_prd_endymd")))
		{
			template.setNull(EKK0121C040CBSMsg.FTRIAL_PRD_ENDYMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.FTRIAL_PRD_ENDYMD, (String)svcKeiMap.get("ftrial_prd_endymd"));
		}

		// 本加入年月日
		if(svcKeiMap.get("honkanyu_ymd") == null || "".equals(svcKeiMap.get("honkanyu_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.HONKANYU_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.HONKANYU_YMD, (String)svcKeiMap.get("honkanyu_ymd"));
		}

		// 本加入移行期限年月日
		if(svcKeiMap.get("honkanyu_iko_kigen_ymd") == null || "".equals(svcKeiMap.get("honkanyu_iko_kigen_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.HONKANYU_IKO_KIGEN_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.HONKANYU_IKO_KIGEN_YMD, (String)svcKeiMap.get("honkanyu_iko_kigen_ymd"));
		}

		// レター発送仕分区分
		if(svcKeiMap.get("letter_hasso_shiwake_div") == null || "".equals(svcKeiMap.get("letter_hasso_shiwake_div")))
		{
			template.setNull(EKK0121C040CBSMsg.LETTER_HASSO_SHIWAKE_DIV);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.LETTER_HASSO_SHIWAKE_DIV, (String)svcKeiMap.get("letter_hasso_shiwake_div"));
		}

		// サンキューレター送付先コード
		if(svcKeiMap.get("thnx_letter_shs_cd") == null || "".equals(svcKeiMap.get("thnx_letter_shs_cd")))
		{
			template.setNull(EKK0121C040CBSMsg.THNX_LETTER_SHS_CD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.THNX_LETTER_SHS_CD, (String)svcKeiMap.get("thnx_letter_shs_cd"));
		}

		// WEBオプション追加不可フラグ
		if(svcKeiMap.get("web_op_add_fail_flg") == null || "".equals(svcKeiMap.get("web_op_add_fail_flg")))
		{
			template.setNull(EKK0121C040CBSMsg.WEB_OP_ADD_FAIL_FLG);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.WEB_OP_ADD_FAIL_FLG, (String)svcKeiMap.get("web_op_add_fail_flg"));
		}

		// 違約金発生コード
		if(svcKeiMap.get("pnlty_hassei_cd") == null || "".equals(svcKeiMap.get("pnlty_hassei_cd")))
		{
			template.setNull(EKK0121C040CBSMsg.PNLTY_HASSEI_CD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.PNLTY_HASSEI_CD, (String)svcKeiMap.get("pnlty_hassei_cd"));
		}

		// 業務連絡備考
		if(svcKeiMap.get("work_rrk_biko") == null || "".equals(svcKeiMap.get("work_rrk_biko")))
		{
			template.setNull(EKK0121C040CBSMsg.WORK_RRK_BIKO);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.WORK_RRK_BIKO, (String)svcKeiMap.get("work_rrk_biko"));
		}

		// 整理番号
		if(svcKeiMap.get("seiri_no") == null || "".equals(svcKeiMap.get("seiri_no")))
		{
			template.setNull(EKK0121C040CBSMsg.SEIRI_NO);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.SEIRI_NO, (String)svcKeiMap.get("seiri_no"));
		}
		// 面開発案件番号
		if(svcKeiMap.get("menkaihat_anken_no") == null || "".equals(svcKeiMap.get("menkaihat_anken_no")))
		{
			template.setNull(EKK0121C040CBSMsg.MENKAIHAT_ANKEN_NO);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.MENKAIHAT_ANKEN_NO, (String)svcKeiMap.get("menkaihat_anken_no"));
		}
		// 異動NG状態コード
		if(svcKeiMap.get("ido_ng_stat_cd") == null || "".equals(svcKeiMap.get("ido_ng_stat_cd")))
		{
			template.setNull(EKK0121C040CBSMsg.IDO_NG_STAT_CD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.IDO_NG_STAT_CD, (String)svcKeiMap.get("ido_ng_stat_cd"));
		}

		// 紹介コード
		if(svcKeiMap.get("intr_cd") == null || "".equals(svcKeiMap.get("intr_cd")))
		{
			template.setNull(EKK0121C040CBSMsg.INTR_CD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.INTR_CD, (String)svcKeiMap.get("intr_cd"));
		}

		// 自動照査処理状態コード
		if(svcKeiMap.get("auto_shosa_tran_stat_cd") == null || "".equals(svcKeiMap.get("auto_shosa_tran_stat_cd")))
		{
			template.setNull(EKK0121C040CBSMsg.AUTO_SHOSA_TRAN_STAT_CD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.AUTO_SHOSA_TRAN_STAT_CD, (String)svcKeiMap.get("auto_shosa_tran_stat_cd"));
		}

		// サービス契約<eoモバイル>一意照会データ取得
		Map<String, Object> svcKeiMobileMap = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0121A010 + "WORK");

		// 事業者用契約ID
		if(svcKeiMobileMap.get("jigyosha_kei_id") == null || "".equals(svcKeiMobileMap.get("jigyosha_kei_id")))
		{
			template.setNull(EKK0121C040CBSMsg.JIGYOSHA_KEI_ID);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.JIGYOSHA_KEI_ID, (String)svcKeiMobileMap.get("jigyosha_kei_id"));
		}

		// 事業者解約情報連携年月日
		if(svcKeiMobileMap.get("jgs_dsl_info_rnki_ymd") == null || "".equals(svcKeiMobileMap.get("jgs_dsl_info_rnki_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.JGS_DSL_INFO_RNKI_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.JGS_DSL_INFO_RNKI_YMD, (String)svcKeiMobileMap.get("jgs_dsl_info_rnki_ymd"));
		}

		// 事業者解約情報連携受付年月日
		if(svcKeiMobileMap.get("jgs_dsl_info_rnki_uk_ymd") == null || "".equals(svcKeiMobileMap.get("jgs_dsl_info_rnki_uk_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.JGS_DSL_INFO_RNKI_UK_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.JGS_DSL_INFO_RNKI_UK_YMD, (String)svcKeiMobileMap.get("jgs_dsl_info_rnki_uk_ymd"));
		}
		// 事業者利用停止連携年月日
		if(svcKeiMobileMap.get("jgs_use_stp_rnki_ymd") == null || "".equals(svcKeiMobileMap.get("jgs_use_stp_rnki_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.JGS_USE_STP_RNKI_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.JGS_USE_STP_RNKI_YMD, (String)svcKeiMobileMap.get("jgs_use_stp_rnki_ymd"));
		}
		// 事業者利用停止受付年月日
		if(svcKeiMobileMap.get("jgs_use_stp_uk_ymd") == null || "".equals(svcKeiMobileMap.get("jgs_use_stp_uk_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.JGS_USE_STP_UK_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.JGS_USE_STP_UK_YMD, (String)svcKeiMobileMap.get("jgs_use_stp_uk_ymd"));
		}
		// 事業者利用停止解除連携年月日
		if(svcKeiMobileMap.get("jgs_use_stp_rls_rnki_ymd") == null || "".equals(svcKeiMobileMap.get("jgs_use_stp_rls_rnki_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.JGS_USE_STP_RLS_RNKI_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.JGS_USE_STP_RLS_RNKI_YMD, (String)svcKeiMobileMap.get("jgs_use_stp_rls_rnki_ymd"));
		}
		// 事業者利用停止解除受付年月日
		if(svcKeiMobileMap.get("jgs_use_stp_rls_uk_ymd") == null || "".equals(svcKeiMobileMap.get("jgs_use_stp_rls_uk_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.JGS_USE_STP_RLS_UK_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.JGS_USE_STP_RLS_UK_YMD, (String)svcKeiMobileMap.get("jgs_use_stp_rls_uk_ymd"));
		}
		// 事業者中断電話連絡年月日
		if(svcKeiMobileMap.get("jgs_stp_tel_rrk_ymd") == null || "".equals(svcKeiMobileMap.get("jgs_stp_tel_rrk_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.JGS_STP_TEL_RRK_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.JGS_STP_TEL_RRK_YMD, (String)svcKeiMobileMap.get("jgs_stp_tel_rrk_ymd"));
		}
		// 事業者中断再開電話連絡年月日
		if(svcKeiMobileMap.get("jgs_stp_skai_tel_rrk_ymd") == null || "".equals(svcKeiMobileMap.get("jgs_stp_skai_tel_rrk_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.JGS_STP_SKAI_TEL_RRK_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.JGS_STP_SKAI_TEL_RRK_YMD, (String)svcKeiMobileMap.get("jgs_stp_skai_tel_rrk_ymd"));
		}
		// 事業者解約電話連絡年月日
		if(svcKeiMobileMap.get("jgs_dsl_tel_rrk_ymd") == null || "".equals(svcKeiMobileMap.get("jgs_dsl_tel_rrk_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.JGS_DSL_TEL_RRK_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.JGS_DSL_TEL_RRK_YMD, (String)svcKeiMobileMap.get("jgs_dsl_tel_rrk_ymd"));
		}
		// コース変更NG状態コード
		if(svcKeiMobileMap.get("coursechg_ng_stat_cd") == null || "".equals(svcKeiMobileMap.get("coursechg_ng_stat_cd")))
		{
			template.setNull(EKK0121C040CBSMsg.COURSECHG_NG_STAT_CD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.COURSECHG_NG_STAT_CD, (String)svcKeiMobileMap.get("coursechg_ng_stat_cd"));
		}
		// 事業者コース変更連携年月日
		if(svcKeiMobileMap.get("jgs_coursechg_rnk_ymd") == null || "".equals(svcKeiMobileMap.get("jgs_coursechg_rnk_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.JGS_COURSECHG_RNK_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.JGS_COURSECHG_RNK_YMD, (String)svcKeiMobileMap.get("jgs_coursechg_rnk_ymd"));
		}
		// コース変更通知メール作成年月日
		if(svcKeiMobileMap.get("coursechg_tch_ml_sksi_ymd") == null || "".equals(svcKeiMobileMap.get("coursechg_tch_ml_sksi_ymd")))
		{
			template.setNull(EKK0121C040CBSMsg.COURSECHG_TCH_ML_SKSI_YMD);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.COURSECHG_TCH_ML_SKSI_YMD, (String)svcKeiMobileMap.get("coursechg_tch_ml_sksi_ymd"));
		}
		// USIM返却年月日(KOPT)
		if(svcKeiMobileMap.get("usim_rtn_ymd_kopt") == null || "".equals(svcKeiMobileMap.get("usim_rtn_ymd_kopt")))
		{
			template.setNull(EKK0121C040CBSMsg.USIM_RTN_YMD_KOPT);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.USIM_RTN_YMD_KOPT, (String)svcKeiMobileMap.get("usim_rtn_ymd_kopt"));
		}
		// USIM返却年月日(モバイル事業者)
		if(svcKeiMobileMap.get("usim_rtn_ymd_mbl_jgs") == null || "".equals(svcKeiMobileMap.get("usim_rtn_ymd_mbl_jgs")))
		{
			template.setNull(EKK0121C040CBSMsg.USIM_RTN_YMD_MBL_JGS);
		}
		else
		{
			template.set(EKK0121C040CBSMsg.USIM_RTN_YMD_MBL_JGS, (String)svcKeiMobileMap.get("usim_rtn_ymd_mbl_jgs"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * サービス契約<eoモバイル>情報変更検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0121C040(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0121c040Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0121C040 + "WORK", ekk0121c040Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// サービス契約番号
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.SVC_KEI_NO);
		// 世代登録年月日時分秒(サービス契約)
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.KK0081_GENE_ADD_DTM);
		// 申込明細番号
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.MSKM_DTL_NO);
		// ID速報書出力要否
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.ID_SOKHOSHO_OUTPUT_YH);
		// 審査結果コード
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.SKEKKA_CD);
		// 審査結果詳細コード
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.SKEKKA_DTL_CD);
		// 審査結果補記コード
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.SKEKKA_HOKI_CD);
		// 審査結果送信コード
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.SKEKKA_SEND_CD);
		// 支払い方法継続フラグ
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.PAYWAY_KEIZOKU_FLG);
		// 試用加入年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.FTRIAL_KANYU_YMD);
		// 試用期間終了年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.FTRIAL_PRD_ENDYMD);
		// 本加入年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.HONKANYU_YMD);
		// 本加入移行期限年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.HONKANYU_IKO_KIGEN_YMD);
		// 予約適用年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.RSV_APLY_YMD);
		// 予約適用コード
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.RSV_APLY_CD);
		// レター発送仕分区分
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.LETTER_HASSO_SHIWAKE_DIV);
		// サンキューレター送付先コード
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.THNX_LETTER_SHS_CD);
		// WEBオプション追加不可フラグ
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.WEB_OP_ADD_FAIL_FLG);
		// 違約金発生コード
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.PNLTY_HASSEI_CD);
		// 異動区分
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.IDO_DIV);
		// 業務連絡備考
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.WORK_RRK_BIKO);
		// 登録年月日時分秒
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.ADD_DTM);
		// 登録オペレータアカウント
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.ADD_OPEACNT);
		// 更新年月日時分秒
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.UPD_DTM);
		// 更新オペレータアカウント
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.UPD_OPEACNT);
		// 無効フラグ
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.MK_FLG);
		// 更新年月日時分秒(更新前)
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.UPD_DTM_BF);
		// 世代登録年月日時分秒(サービス契約<eoモバイル>)
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.KK0121_GENE_ADD_DTM);
		// MACアドレス
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.MACAD);
		// 事業者用契約ID
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.JIGYOSHA_KEI_ID);
		// 異動NG状態コード
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.IDO_NG_STAT_CD);
		// 紹介コード
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.INTR_CD);
		// 自動照査処理状態コード
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.AUTO_SHOSA_TRAN_STAT_CD);
		// 整理番号
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.SEIRI_NO);
		// 面開発案件番号
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.MENKAIHAT_ANKEN_NO);
		// 事業者解約情報連携年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.JGS_DSL_INFO_RNKI_YMD);
		// 事業者解約情報連携受付年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.JGS_DSL_INFO_RNKI_UK_YMD);
		// 事業者利用停止連携年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.JGS_USE_STP_RNKI_YMD);
		// 事業者利用停止受付年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.JGS_USE_STP_UK_YMD);
		// 事業者利用停止解除連携年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.JGS_USE_STP_RLS_RNKI_YMD);
		// 事業者利用停止解除受付年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.JGS_USE_STP_RLS_UK_YMD);
		// 事業者中断電話連絡年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.JGS_STP_TEL_RRK_YMD);
		// 事業者中断再開電話連絡年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.JGS_STP_SKAI_TEL_RRK_YMD);
		// 事業者解約電話連絡年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.JGS_DSL_TEL_RRK_YMD);
		// コース変更NG状態コード
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.COURSECHG_NG_STAT_CD);
		// 事業者コース変更連携年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.JGS_COURSECHG_RNK_YMD);
		// コース変更通知メール作成年月日
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.COURSECHG_TCH_ML_SKSI_YMD);
		// USIM返却年月日(KOPT)
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.USIM_RTN_YMD_KOPT);
		// USIM返却年月日(モバイル事業者)
		setDataMap(ekk0121c040Map, template, EKK0121C040CBSMsg.USIM_RTN_YMD_MBL_JGS);

		// 更新年月日時分秒（サービス契約）
		// 更新日付を共通領域に格納
		setSvcUpDtm(param, template.getString(EKK0121C040CBSMsg.UPD_DTM));

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0121C040(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * サービス契約<eoモバイル>情報変更エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0121C040(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0121C040CBSMsg.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);
		}

		// サービス契約番号
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.SVC_KEI_NO_ERR);
		// 申込明細番号
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.MSKM_DTL_NO_ERR);
		// ID速報書出力要否
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.ID_SOKHOSHO_OUTPUT_YH_ERR);
		// 審査結果コード
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.SKEKKA_CD_ERR);
		// 審査結果詳細コード
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.SKEKKA_DTL_CD_ERR);
		// 審査結果補記コード
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.SKEKKA_HOKI_CD_ERR);
		// 審査結果送信コード
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.SKEKKA_SEND_CD_ERR);
		// 支払い方法継続フラグ
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.PAYWAY_KEIZOKU_FLG_ERR);
		// 試用加入年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.FTRIAL_KANYU_YMD_ERR);
		// 試用期間終了年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.FTRIAL_PRD_ENDYMD_ERR);
		// 本加入年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.HONKANYU_YMD_ERR);
		// 本加入移行期限年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.HONKANYU_IKO_KIGEN_YMD_ERR);
		// レター発送仕分区分
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.LETTER_HASSO_SHIWAKE_DIV_ERR);
		// サンキューレター送付先コード
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.THNX_LETTER_SHS_CD_ERR);
		// WEBオプション追加不可フラグ
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.WEB_OP_ADD_FAIL_FLG_ERR);
		// 違約金発生コード
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.PNLTY_HASSEI_CD_ERR);
		// 異動区分
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.IDO_DIV_ERR);
		// 業務連絡備考
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.WORK_RRK_BIKO_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.UPD_DTM_BF_ERR);
		// MACアドレス
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.MACAD_ERR);
		// 事業者用契約ID
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.JIGYOSHA_KEI_ID_ERR);
		// 異動NG状態コード
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.IDO_NG_STAT_CD_ERR);
		// 紹介コード
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.INTR_CD_ERR);
		// 自動照査処理状態コード
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.AUTO_SHOSA_TRAN_STAT_CD_ERR);
		// 整理番号
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.SEIRI_NO_ERR);
		// 面開発案件番号
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.MENKAIHAT_ANKEN_NO_ERR);
		// 事業者解約情報連携年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.JGS_DSL_INFO_RNKI_YMD_ERR);
		// 事業者解約情報連携受付年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.JGS_DSL_INFO_RNKI_UK_YMD_ERR);
		// 事業者利用停止連携年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.JGS_USE_STP_RNKI_YMD_ERR);
		// 事業者利用停止受付年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.JGS_USE_STP_UK_YMD_ERR);
		// 事業者利用停止解除連携年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.JGS_USE_STP_RLS_RNKI_YMD_ERR);
		// 事業者利用停止解除受付年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.JGS_USE_STP_RLS_UK_YMD_ERR);
		// 事業者中断電話連絡年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.JGS_STP_TEL_RRK_YMD_ERR);
		// 事業者中断再開電話連絡年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.JGS_STP_SKAI_TEL_RRK_YMD_ERR);
		// 事業者解約電話連絡年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.JGS_DSL_TEL_RRK_YMD_ERR);
		// コース変更NG状態コード
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.COURSECHG_NG_STAT_CD_ERR);
		// 事業者コース変更連携年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.JGS_COURSECHG_RNK_YMD_ERR);
		// コース変更通知メール作成年月日
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.COURSECHG_TCH_ML_SKSI_YMD_ERR);
		// USIM返却年月日(KOPT)
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.USIM_RTN_YMD_KOPT_ERR);
		// USIM返却年月日(モバイル事業者)
		setErrDataMap(inMap, template, EKK0121C040CBSMsg.USIM_RTN_YMD_MBL_JGS_ERR);

		return param;
	}

	/**
	 * サービス契約回線内訳一覧照会（現在利用中）サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0251B003(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0251B003(param, dataMap);

		// ◇ SC呼出実行 (サービス契約回線内訳一覧照会（現在利用中）)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0251B003(result, param, dataMap);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * サービス契約回線内訳一覧照会（現在利用中）のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EKK0251B003(IRequestParameterReadWrite param, Map<String, Object> inMap)
			throws RequestParameterException
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0251B003CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0251B003CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251B003);

		template.set(EKK0251B003CBSMsg.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(EKK0251B003CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0251B003CBSMsg.KEY_SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * サービス契約回線内訳一覧照会（現在利用中）検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0251B003(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap)
			throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0251b003Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0251B003 + "WORK", ekk0251b003Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST);

		// 検索結果をMapに格納します。
		if(templateArray != null && templateArray.length > 0)
		{
			/* ++++++++++ v5.00.01 変更開始 ++++++++++ */
//			// サービス契約回線内訳番号
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
//
//			// 回線場所住所未確定フラグ
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KISN_PLC_AD_MI_FIX_FLG);
//
//			// 回線場所電話番号
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KAISEN_PLACE_TELNO);
//
//			// 回線場所住所コード
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KAISEN_PLACE_AD_CD);
//
//			// 回線場所郵便番号
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KAISEN_PLACE_PCD);
//
//			// 回線場所都道府県名
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KAISEN_PLACE_STATE_NM);
//
//			// 回線場所市区町村名
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KAISEN_PLACE_CITY_NM);
//
//			// 回線場所大字通称名
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KAISEN_PLACE_OAZTSU_NM);
//
//			// 回線場所字丁目名
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KAISEN_PLACE_AZCHO_NM);
//
//			// 回線場所番地号
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KAISEN_PLACE_BNCHIGO);
//
//			// 回線場所住所補記・建物名
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KAISEN_PLACE_ADRTTM);
//
//			// 回線場所住所補記・部屋番号
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KAISEN_PLACE_ADRRM);
//
//			// 回線場所番号
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KAISEN_PLACE_NO);
//
//			// 回線場所区画整理中フラグ
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KISN_PLC_KKK_SEIRI_CHU_FLG);
//			// 回線場所_契約者住所差異フラグ
//			setDataMap(ekk0251b003Map, templateArray[0], EKK0251B003CBSMsg1List.KAISEN_PLC_KSH_AD_SAI_FLG);
//			
			setKaisenInfo(ekk0251b003Map, templateArray[0]);
			/* ++++++++++ v5.00.01 変更完了 ++++++++++ */
		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0251B003(param, dataMap, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * サービス契約回線内訳一覧照会（現在利用中）エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0251B003(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0251B003CBSMsg.STATUS);
		if(returnCode != 0)
		{
			templateStatus = 9000;
		}

		if(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if(obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if(templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		// ＫＥＹ＿サービス契約番号
		setErrDataMap(inMap, template, EKK0251B003CBSMsg.KEY_SVC_KEI_NO_ERR);

		return param;
	}

	/**
	 * パラメータ設定
	 * 
	 * @param param リクエストパラメータ
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void setKikisyoriWorkMap(IRequestParameterReadWrite param, Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// パラメータ格納Map
		Map<String, Object> kikisyoriWorkMap = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(KK_TOROKU_WORK, kikisyoriWorkMap);

		Iterator<String> it = parentdata.keySet().iterator();
		while (it.hasNext())
		{
			String mapkey = it.next();
			kikisyoriWorkMap.put(mapkey, parentdata.get(mapkey));
		}

		// 機器提供サービスコード
		String kktk_svc_cd = getNullToStr((String)parentdata.get("kktk_svc_cd"));
		if("".equals(kktk_svc_cd))
		{
			Map<String, Object> ekk0771b001Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0771B001 + "WORK");

			kktk_svc_cd = getNullToStr((String)ekk0771b001Map.get("kktk_svc_cd"));
		}

		kikisyoriWorkMap.put("kktk_svc_cd", kktk_svc_cd);

	}

	/**
	 * B-CAS、C-CASのデータ登録を行います。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @param fourKStbKkFlg 4K-STB機器フラグ
	 * @throws Throwable
	 */
	private void execCreateStbFuzokuData(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
// ANK-3488-00-00 MOD START
//			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Throwable
			Map<String, Object> dataMap, Map<String, Object> parentdata, boolean fourKStbKkFlg) throws Throwable
// ANK-3488-00-00 MOD END
	{

		// B-CAS・C-CASの宅内機器型式コードを取得します。
// ANK-3488-00-00 MOD START
//		HashMap<String, String> bcasCcasMdlMap = getBcasCcasTknMdlCd(handle, param, scCall, dataMap, parentdata);
		HashMap<String, String> bcasCcasMdlMap = getBcasCcasTknMdlCd(handle, param, scCall, dataMap, parentdata, fourKStbKkFlg);
// ANK-3488-00-00 MOD END

// ANK-3488-00-00 ADD START
		// 4K-STB機器以外の場合
		if (!fourKStbKkFlg)
		{
// ANK-3488-00-00 ADD END
			// B-CASの登録
			execCreateBcasCcas(handle, param, scCall, dataMap, parentdata, KKTK_SVC_CD_BCAS, bcasCcasMdlMap);

			// 機器提供サービス契約（ B-CASの登録）データ取得
			execEKK0341A010(handle, param, scCall, dataMap, parentdata);
// ANK-3488-00-00 ADD START
		}
// ANK-3488-00-00 ADD END

		// C-CASの登録
		execCreateBcasCcas(handle, param, scCall, dataMap, parentdata, KKTK_SVC_CD_CCAS, bcasCcasMdlMap);

		// 機器提供サービス契約（C-CASの登録）データ取得
		execEKK0341A010(handle, param, scCall, dataMap, parentdata);

	}

	/**
	 * B-CAS、C-CASのデータ登録を行います。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @param kktkSvcCd 機器提供サービスコード
	 * @param bcasCcasMdlMap
	 * @throws Throwable
	 */
	private void execCreateBcasCcas(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata, String kktkSvcCd, HashMap<String, String> bcasCcasMdlMap) throws Throwable
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// パラメータ格納Map
		Map<String, Object> kikisyoriWorkMap = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(KK_TOROKU_WORK, kikisyoriWorkMap);

		String taknkiki_model_cd = bcasCcasMdlMap.get(kktkSvcCd);

		// パラメータをセットします。
		Iterator<String> it = parentdata.keySet().iterator();
		while (it.hasNext())
		{
			String mapkey = it.next();
			kikisyoriWorkMap.put(mapkey, parentdata.get(mapkey));
		}

		// （設定不要なものは"" 機器提供サービスコード、宅内機器型式コード、機器付加情報コードは編集）
		// 機器提供サービスコード
		kikisyoriWorkMap.put("kktk_svc_cd", kktkSvcCd);
		// 設置ルータコード
		kikisyoriWorkMap.put("sechi_ruta_cd", "");
		// 宅内機器型式コード
		kikisyoriWorkMap.put("taknkiki_model_cd", taknkiki_model_cd);
		// 機器製造番号
		kikisyoriWorkMap.put("kiki_seizo_no", "");
		// STB種別コード
		kikisyoriWorkMap.put("stb_sbt_cd", "");
		// HDD容量コード
		kikisyoriWorkMap.put("hdd_capa_cd", "");
		// 機器送料有無
		kikisyoriWorkMap.put("kiki_soryo_um", "");
// // 宅内機器異動コード
// kikisyoriWorkMap.put("taknkiki_ido_cd", "");
		// 機器付加情報コード
		/* ++++++++++ v5.00.02 修正開始 ++++++++++ */
//		kikisyoriWorkMap.put("kiki_huka_info_cd", "000");
		kikisyoriWorkMap.put("kiki_huka_info_cd", "");
		/* ++++++++++ v5.00.02 修正完了 ++++++++++ */
		// MACアドレス
		kikisyoriWorkMap.put("macad", "");
		// TVコース
		kikisyoriWorkMap.put("tv_pcrs_cd", "");
		// 更新年月日時分秒（サービス契約）
		kikisyoriWorkMap.put("upd_dtm_svc_kei", "");

		// サービスの実行
		execStbOtherShori(handle, param, scCall, dataMap, parentdata);

		// 宅内機器型式一意照会
		execEZM0411A010(handle, param, scCall, dataMap, kikisyoriWorkMap);

		// 料金プラン一覧照会
// execEKK0591B003(handle, param, scCall, dataMap, parentdata, PPLAN_EXE_FLG_KK_SVC_KEI);

		// 引当棚一意照会
// execEDK0451A010(handle, param, scCall, dataMap, parentdata);

		// 機器提供サービス契約登録
		execEKK0341D010(handle, param, scCall, dataMap, parentdata);

		if(!isUketuke(param))
		{
			// 機器提供サービス契約照査(受付済判定 受付済以外の場合)
			execEKK0341C030(handle, param, scCall, dataMap, parentdata);
		}

// // 締結済更新判断
// if(isTeiketuJikko(param,dataMap))
// {
// execEKK0341C040(handle, param, scCall, dataMap, parentdata);
// }

	}

	/**
	 * MACアドレスが入力されているか判断します。
	 * 
	 * @param param リクエストパラメータ
	 * @return boolean true:入力されている false:入力されていない
	 * @throws Exception
	 */
	private boolean isEoMobile(IRequestParameterReadWrite param) throws Exception
	{

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 共通で格納している領域より取得
		Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);

		if("".equals(getNullToStr((String)kkTorokuWork.get("macad"))))
		{
			return false;
		}

		return true;
	}

	/**
	 * HDD容量コードが入力されているか判断します。
	 * 
	 * @param param リクエストパラメータ
	 * @return boolean true:入力されている false:入力されていない
	 * @throws Exception
	 */
	private boolean isHDDCapaCd(IRequestParameterReadWrite param) throws Exception
	{

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 共通で格納している領域より取得
		Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);

		if("".equals(getNullToStr((String)kkTorokuWork.get("hdd_capa_cd"))))
		{
			return false;
		}

		return true;
	}

	/**
	 * 機器送付先個別指定フラグを取得します。
	 * 
	 * @param param リクエストパラメータ
	 * @return String 住所が違う場合：1 住所が同じ場合：0
	 * @throws Exception
	 */
	private String getKikiShsKbtShiteiFlg(IRequestParameterReadWrite param) throws Exception
	{

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 画面からの画面からのパラメータ取得
		Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);

		// 工事情報登録画面は機器送付先情報を持っていないため「サービス契約回線内訳一覧照会（現在利用中）」のデータを格納しするため0を返却。
		if(kkTorokuWork.get("kiki_sohus_ad_cd") == null || "".equals(kkTorokuWork.get("kiki_sohus_ad_cd")))
		{
			return "0";
		}

		// サービス契約回線内訳一覧照会（現在利用中）データ
		Map<String, Object> ekk0251b003Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0251B003 + "WORK");

		// 機器送付先と機器設置先を比較します。
		if(!getNullToStr((String)kkTorokuWork.get("kiki_sohus_ad_cd")).equals((String)ekk0251b003Map.get("kaisen_place_ad_cd")))
		{
			return "1";
		}

		if(!getNullToStr((String)kkTorokuWork.get("kiki_sohus_pcd")).equals((String)ekk0251b003Map.get("kaisen_place_pcd")))
		{
			return "1";
		}

		if(!getNullToStr((String)kkTorokuWork.get("kiki_sohus_state_nm")).equals((String)ekk0251b003Map.get("kaisen_place_state_nm")))
		{
			return "1";
		}

		if(!getNullToStr((String)kkTorokuWork.get("kiki_sohus_city_nm")).equals((String)ekk0251b003Map.get("kaisen_place_city_nm")))
		{
			return "1";
		}

		if(!getNullToStr((String)kkTorokuWork.get("kiki_sohus_oaztsu_nm")).equals((String)ekk0251b003Map.get("kaisen_place_oaztsu_nm")))
		{
			return "1";
		}

		if(!getNullToStr((String)kkTorokuWork.get("kiki_sohus_azcho_nm")).equals((String)ekk0251b003Map.get("kaisen_place_azcho_nm")))
		{
			return "1";
		}

		if(!getNullToStr((String)kkTorokuWork.get("kiki_sohus_bnchigo")).equals((String)ekk0251b003Map.get("kaisen_place_bnchigo")))
		{
			return "1";
		}

		if(!getNullToStr((String)kkTorokuWork.get("kiki_sohus_adrttm")).equals((String)ekk0251b003Map.get("kaisen_place_adrttm")))
		{
			return "1";
		}

		if(!getNullToStr((String)kkTorokuWork.get("kiki_sohus_adrrm")).equals((String)ekk0251b003Map.get("kaisen_place_adrrm")))
		{
			return "1";
		}
		if(!getNullToStr((String)kkTorokuWork.get("kiki_sohus_telno")).equals((String)ekk0251b003Map.get("kaisen_place_telno")))
		{
			return "1";
		}

		return "0";
	}

	/**
	 * HDD容量コードを取得します。
	 * 
	 * @param param リクエストパラメータ
	 * @return String HDD容量コード
	 * @throws Exception
	 */
	private String getHddCapaCd(IRequestParameterReadWrite param) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 共通で格納している領域より取得
		Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);

		// サービスコードを取得
		String kktkSvcCd = getNullToStr((String)kkTorokuWork.get("kktk_svc_cd"));

		// 設定非対称データの場合、空白を返却します。
		for (int i = 0; i < HDD_CAPA_NO_INPUT_SVC_CD.length; i++)
		{
			if(HDD_CAPA_NO_INPUT_SVC_CD[i].equals(kktkSvcCd))
			{
				return "";
			}
		}

		String hdd_capa_cd = getNullToStr((String)kkTorokuWork.get("hdd_capa_cd"));

		if("".equals(hdd_capa_cd))
		{
			hdd_capa_cd = getNullToStr((String)((Map<String, Object>)workMap.get(TEMPLATE_ID_EZM0411A010 + "WORK")).get("hdd_capa_cd"));
		}

		return hdd_capa_cd;
	}

	/**
	 * 親契約識別コードを取得します。
	 * 
	 * @param param リクエストパラメータ
	 * @return String 親契約識別コード（親がサービス契約内訳：03　親がサービス契約回線内訳：02　それ以外：01）
	 * @throws Exception
	 */
	private String getOyaKeiyakuSkbtCd(IRequestParameterReadWrite param) throws Exception
	{
		String oyaKeiyakuSkbtCd = OYA_KEI_SKBT_CD_SVC_KEI;

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 機器提供サービスコードを取得します。
		String kktkSvcCd = getKktkSvcCd(param);

		// 業務パラメータを取得
		Map<Object, Object> ezm0321a010Map = (Map<Object, Object>)workMap.get(TEMPLATE_ID_EZM0321A010 + "WORK");

		// サービス契約内訳の親機器提供サービスコード取得
		String[] svcUcwkOyaCd = ((String)ezm0321a010Map.get(WORK_PARAM_OYA_SVC_UCWK)).split(",");

		// サービス契約回線内訳の親機器提供サービスコード取得
		String[] ksnUcwkOyaCd = ((String)ezm0321a010Map.get(WORK_PARAM_OYA_KSN_UCWK)).split(",");

		// サービス契約内訳に属するか判別
		for (int i = 0; i < svcUcwkOyaCd.length; i++)
		{
			if(kktkSvcCd.equals(svcUcwkOyaCd[i]))
			{
				return OYA_KEI_SKBT_CD_SVC_UCWK;
			}
		}

		// サービス契約回線内訳に属するか判別
		for (int i = 0; i < ksnUcwkOyaCd.length; i++)
		{
			if(kktkSvcCd.equals(ksnUcwkOyaCd[i]))
			{
				return OYA_KEI_SKBT_CD_SVC_KSN_UCWK;
			}
		}

		return oyaKeiyakuSkbtCd;
	}

	/**
	 * 受付済か判断します。
	 * 
	 * @param param リクエストパラメータ
	 * @return boolean true:受付済 false:受付済以外
	 * @throws Exception
	 */
	private boolean isUketuke(IRequestParameterReadWrite param) throws Exception
	{

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// サービス契約一意照会データ取得
		Map<String, Object> ekk0771b001Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0081A010 + "WORK");

		String svc_kei_stat = (String)ekk0771b001Map.get("svc_kei_stat");

		if(SVC_KEI_STAT_UKZUMI.equals(svc_kei_stat))
		{
			return true;
		}

		return false;
	}

	/**
	 * 対象データがSTB機器か判断します。
	 * 
	 * @param param リクエストパラメータ
	 * @return STB機器の場合:true STB機器以外の場合：false
	 * @throws Exception
	 */
	private boolean isStbKiki(IRequestParameterReadWrite param) throws Exception
	{
		// 機器提供サービスコードを取得します。
		String kktkSvcCd = getKktkSvcCd(param);

		// 業務パラメータより取得したSTB機器判別コードを取得します。
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		Map<Object, Object> ezm0321a010Map = (Map<Object, Object>)workMap.get(TEMPLATE_ID_EZM0321A010 + "WORK");

		String[] stbKktkSvcCd = ((String)ezm0321a010Map.get(WORK_PARAM_STB_KKTK_SVC)).split(",");

		for (int i = 0; i < stbKktkSvcCd.length; i++)
		{

			if(kktkSvcCd.equals(stbKktkSvcCd[i]))
			{
				return true;
			}
		}

		return false;
	}

	/**
	 * 機器提供サービスコードを取得します。
	 * 
	 * @param param リクエストパラメータ
	 * @return String 機器提供サービスコード
	 * @throws RequestParameterException
	 */
	private String getKktkSvcCd(IRequestParameterReadWrite param) throws RequestParameterException
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// ワーク領域に格納します。
		Map<Object, Object> kikisyoriWorkMap = (Map<Object, Object>)workMap.get(KK_TOROKU_WORK);

		return (String)kikisyoriWorkMap.get("kktk_svc_cd");
	}

	/**
	 * 業務パラメータの取得サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @throws Exception
	 */
	private void setGyomuParam(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap) throws Exception
	{

		// 機器提供サービス契約親契約識別コード判定（サービス契約内訳）「KK_OYA_SKBT_SVC_UCWK」の取得
		dataMap.put("key_work_param_id", WORK_PARAM_OYA_SVC_UCWK);
		execEZM0321A010(handle, param, scCall, dataMap);

		// 機器提供サービス契約親契約識別コード判定（サービス契約回線内訳）「KK_OYA_SKBT_KSN_UCWK」の取得
		dataMap.put("key_work_param_id", WORK_PARAM_OYA_KSN_UCWK);
		execEZM0321A010(handle, param, scCall, dataMap);

		// 機器提供サービスコードSTB判定「KK_STB_KKTK_SVC_CD」
		dataMap.put("key_work_param_id", WORK_PARAM_STB_KKTK_SVC);
		execEZM0321A010(handle, param, scCall, dataMap);

	}

	/**
	 * 業務パラメータサービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @throws Exception
	 */
	private void execEZM0321A010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EZM0321A010(param, dataMap);

		// ◇ SC呼出実行 (サービス契約一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EZM0321A010(result, param, dataMap);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * 業務パラメータのメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EZM0321A010(IRequestParameterReadWrite param, Map<String, Object> inMap)
			throws RequestParameterException
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EZM0321A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EZM0321A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0321A010);

		template.set(EZM0321A010CBSMsg.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);

		// ◇ 業務データの設定
		// ＫＥＹ＿業務パラメータID
		if(inMap.get("key_work_param_id") == null || "".equals(inMap.get("key_work_param_id")))
		{
			template.setNull(EZM0321A010CBSMsg.KEY_WORK_PARAM_ID);
		}
		else
		{
			template.set(EZM0321A010CBSMsg.KEY_WORK_PARAM_ID, (String)inMap.get("key_work_param_id"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 業務パラメータ検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param outDataMap 検索結果格納Map
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EZM0321A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap)
			throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		Map<String, Object> ezm00321a010Map = null;

		if(workMap.containsKey(TEMPLATE_ID_EZM0321A010 + "WORK"))
		{
			ezm00321a010Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EZM0321A010 + "WORK");
		}
		else
		{
			// 検索結果格納Map
			ezm00321a010Map = new HashMap<String, Object>();
			workMap.put(TEMPLATE_ID_EZM0321A010 + "WORK", ezm00321a010Map);
		}

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		CAANMsg[] templateArray = template.getCAANMsgList(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST);

		// 検索結果をMapに格納します。
		if(templateArray != null && templateArray.length > 0)
		{

			// 業務パラメータ設定値
			// 検索データ格納キー（検索時のキーで値を格納します。）
			// KK_OYA_SKBT_SVC_UCWKまたはKK_OYA_SKBT_KSN_UCWKまたはKK_STB_KKTK_SVC_CD
			String serchMapKey = (String)dataMap.get("key_work_param_id");

			if(templateArray[0].isNull(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE))
			{
				ezm00321a010Map.put(serchMapKey, "");
			}
			else
			{
				ezm00321a010Map.put(serchMapKey, templateArray[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE));
			}

		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EZM0321A010(param, dataMap, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * 業務パラメータエラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EZM0321A010(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EZM0321A010CBSMsg.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);
		}

		// ＫＥＹ＿業務パラメータID
		setErrDataMap(inMap, template, EZM0321A010CBSMsg.KEY_WORK_PARAM_ID_ERR);

		return param;
	}

	/**
	 * 共通項目の設定
	 * 
	 * @param param
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		return paramMap;
	}

	/**
	 * @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;
	}

	/**
	 * Mapに検索データを格納します。
	 * 
	 * @param outDataMap データ格納Map
	 * @param searchMsg CAANMsgクラス
	 * @param mapKey 取得と格納するキー
	 */
	private void setDataMap(Map<String, Object> outDataMap, CAANMsg searchMsg, String mapKey)
	{
		if(searchMsg.isNull(mapKey))
		{
			outDataMap.put(mapKey, "");
		}
		else
		{
			outDataMap.put(mapKey, searchMsg.getString(mapKey));
		}
	}

	/**
	 * Mapにエラーデータを格納します。
	 * 
	 * @param inMap データ格納Map
	 * @param template CAANMsgクラス
	 * @param mapKey 取得と格納するキー
	 */
	private void setErrDataMap(Map<String, Object> inMap, CAANMsg template, String mapKey)
	{
		if(!template.isNull(mapKey))
		{
			if(!inMap.containsKey(mapKey))
			{
				inMap.put(mapKey, template.getString(mapKey));
			}
		}
	}

	/**
	 * IFの戻り値を判定し、結果が異常の場合、SCCallExceptionを発生させます。
	 * 
	 * @param result CAANMsgクラス
	 * @param cnt CAANMsgの対象位置
	 * @throws Exception
	 */
	private void jdgErrRslt(Map<?, ?> result, int cnt) throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[cnt];

		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = result.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = msg.getInt(JCMConstants.STATUS_INT_KEY);
		Integer zero = 0;

		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && zero.equals(status)))
		{
			/* ++++++++++ v4.03.00 追加開始 ++++++++++ */
			// 警告の場合、例外をスローしない
			if(!("0".equals(rtnCode) && 4 == status))
			{
			/* ++++++++++ v4.03.00 追加終了 ++++++++++ */
				SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
				throw scCallEx;
			/* ++++++++++ v4.03.00 追加開始 ++++++++++ */
			}
			/* ++++++++++ v4.03.00 追加終了 ++++++++++ */
		}
	}

	/**
	 * パラメタがNullの場合空白を返却します。
	 * 
	 * @param str 文字列
	 * @return str
	 */
	private String getNullToStr(String str)
	{
		if(str == null || "".equals(str.trim()))
		{
			return "";
		}

		return str;
	}

	/**
	 * ワークデータをクリアします。
	 * 
	 * @param param リクエストパラメータ
	 * @throws Exception
	 */
	private void clearWorkData(IRequestParameterReadWrite param) throws Exception
	{

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 機器提供サービス契約登録
		workMap.remove(TEMPLATE_ID_EKK0341D010 + "WORK");
		// 機器提供サービス契約照査
		workMap.remove(TEMPLATE_ID_EKK0341C030 + "WORK");
		// 機器提供サービス契約締結
		workMap.remove(TEMPLATE_ID_EKK0341C040 + "WORK");
		// サービス契約内訳<eo光TV>登録
		workMap.remove(TEMPLATE_ID_EKK0181D010 + "WORK");
		// サービス契約内訳<eo光TV>照査
		workMap.remove(TEMPLATE_ID_EKK0181C010 + "WORK");
		// サービス契約内訳＜eo光TV＞締結
		workMap.remove(TEMPLATE_ID_EKK0181C020 + "WORK");
	}

	/**
	 * 機器提供サービス契約一意照会サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0341A010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0341A010(param, dataMap);

		// ◇ SC呼出実行 (機器提供サービス契約一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0341A010(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * 機器提供サービス契約一意照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws Exception
	 */
	private HashMap<String, Object> editInMsg_EKK0341A010(IRequestParameterReadWrite param, Map<String, Object> inMap) throws Exception
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0341A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0341A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341A010);

		template.set(EKK0341A010CBSMsg.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);

		// 検索キーデータを取得します。
		Map<String, Object> searchMap = getSearchEKK0341D010Data(param);

		// ◇ 業務データの設定
		// ＫＥＹ＿機器提供サービス契約番号
		if(searchMap.get("kktk_svc_kei_no") == null || "".equals(searchMap.get("kktk_svc_kei_no")))
		{
			template.setNull(EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, (String)searchMap.get("kktk_svc_kei_no"));
		}

		// ＫＥＹ＿世代登録年月日時分秒
		if(searchMap.get("gene_add_dtm") == null || "".equals(searchMap.get("gene_add_dtm")))
		{
			template.setNull(EKK0341A010CBSMsg.KEY_GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0341A010CBSMsg.KEY_GENE_ADD_DTM, (String)searchMap.get("gene_add_dtm"));
		}

		template.setNull(EKK0341A010CBSMsg.KEY_RSV_APLY_YMD);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 機器提供サービス契約一意照会検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutMsg_EKK0341A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		/* 作業領域データ設定 */
		Map childWorkMap = (HashMap)workMap.get("WORK");

		// 登録データ格納Listを取得します。
		ArrayList<Map<String, Object>> createList = (ArrayList<Map<String, Object>>)dataMap.get("create_list");

		if(createList == null)
		{
			createList = new ArrayList<Map<String, Object>>();
			dataMap.put("create_list", createList);
		}
		// OUTパラメータ
		Map<String, Object> createDataMap = new HashMap<String, Object>();

		createList.add(createDataMap);

		// 工事連携データ格納用Mapキー
		String kojiRenkeiMapKey = (String)dataMap.get(KOJI_RENKEI_MAP_KEY);

		// 工事連携CCで使用するMap
		HashMap kktkSvcOutMap = (HashMap)param.getData(kojiRenkeiMapKey);

		if(kktkSvcOutMap == null)
		{
			kktkSvcOutMap = new HashMap();
			param.setData(kojiRenkeiMapKey, kktkSvcOutMap);
		}

		ArrayList<Map<String, Object>> kktkSvcOutList = (ArrayList<Map<String, Object>>)kktkSvcOutMap.get("kktkSvcOutList");
		if(kktkSvcOutList == null)
		{
			kktkSvcOutList = new ArrayList<Map<String, Object>>();
			kktkSvcOutMap.put("kktkSvcOutList", kktkSvcOutList);
		}

		// OUTパラメータ
		Map<String, Object> kktkSvcOutKojiData = new HashMap<String, Object>();

		kktkSvcOutList.add(kktkSvcOutKojiData);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST);

		// 検索結果をMapに格納します。
		if(templateArray != null && templateArray.length > 0)
		{

			// OUTマップに格納
			setKktkSvcKeiMap(param, createDataMap, templateArray[0]);

			// 工事連携CC用のMapに格納
			setKktkSvcKeiMap(param, kktkSvcOutKojiData, templateArray[0]);

			if(childWorkMap != null)
			{
				// 個別ワークエリア格納
				setWorkMap(childWorkMap, templateArray[0]);
			}

			// 画面設定ワークエリア格納
			setScrnDataMap(param, templateArray[0]);

			// 機器一覧一括より呼び出された場合ワークのIchiranShoriListに検索データを格納します。
			setKikiIchiranIkkatsuList(param, dataMap, parentdata, templateArray[0]);

		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0341A010(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * 機器提供サービス契約一意照会エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0341A010(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0341A010CBSMsg.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);
		}

		// ＫＥＹ＿機器提供サービス契約番号
		setErrDataMap(inMap, template, EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR);
		// ＫＥＹ＿世代登録年月日時分秒
		setErrDataMap(inMap, template, EKK0341A010CBSMsg.KEY_GENE_ADD_DTM_ERR);
		// ＫＥＹ＿予約適用年月日
		setErrDataMap(inMap, template, EKK0341A010CBSMsg.KEY_RSV_APLY_YMD_ERR);

		return param;
	}

	/**
	 * 機器提供サービス契約データセットメソッド
	 * 
	 * @param param
	 * @param outMap
	 * @param template
	 * @throws Exception
	 */
	private void setKktkSvcKeiMap(IRequestParameterReadWrite param, Map<String, Object> outMap, CAANMsg template) throws Exception
	{

		// 機器提供サービス契約番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);
		// 世代登録年月日時分秒
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.GENE_ADD_DTM);
		// 機器提供サービス契約ステータス
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT);
		// 機器提供サービス契約ステータス名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT_NM);
		// 機器提供サービスコード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KKTK_SVC_CD);
		// 機器提供サービスコード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KKTK_SVC_CD_NM);
		// 料金コースコード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.PCRS_CD);
		// 料金コースコード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.PCRS_CD_NM);
		// 料金プランコード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.PPLAN_CD);
		// 料金プランコード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.PPLAN_CD_NM);
		// 機器提供種別コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KKTK_SBT_CD);
		// 機器提供種別コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KKTK_SBT_CD_NM);
		// HDD容量コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HDD_CAPA_CD);
		// HDD容量コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HDD_CAPA_CD_NM);
		// サービス利用開始希望年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_USE_STA_KIBO_YMD);
		// 予約適用開始希望年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.RSV_TSTA_KIBO_YMD);
		// 希望メーカーコード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIBO_MAKER_CD);
		// 販売種別コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HAMBAI_SBT_CD);
		// 販売種別コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HAMBAI_SBT_CD_NM);
		// 通信機器セットコード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.TSUSHIN_KIKI_SET_CD);
		// 機器指定種別コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SHITEI_SBT_CD);
		// 宅内機器種別コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD);
		// 機器製造番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);
		// 機器変更番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_CHG_NO);
		// 宅内機器型式コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
		// 宅内機器セット品型コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD);
		// 付属品種別コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HUZOKUHIN_SBT_CD);
		// 付属品型式コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HUZOKUHIN_MODEL_CD);
		// 機器設置先場所番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SAKI_PLACE_NO);
		// 親契約識別コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.OYA_KEI_SKBT_CD);
		// 親契約識別コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.OYA_KEI_SKBT_CD_NM);
		// サービス契約番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_KEI_NO);
		// サービス契約内訳番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO);
		// サービス契約回線内訳番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
		// オプションサービス契約番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.OP_SVC_KEI_NO);
		// SYSID
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SYSID);
		// SYSID名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SYSID_NM);
		// 申込明細番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.MSKM_DTL_NO);
		// リンクSTBフラグ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.LINK_STB_FLG);
		// 機器引当指定倉庫コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SOKO_CD);
		// 機器引当指定倉庫棚コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SKDN_CD);
		// 機器提供サービス契約引継発生年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KKTK_SVC_KEI_HKHASYMD);
		// 機器送料有無
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SORYO_UM);
		// 機器送料有無名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SORYO_UM_NM);
		// 機器送料作成年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SORYO_SAKSEI_YMD);
		// 機器送付先名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SOHUS_NM);
		// 機器送付先カナ名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SOHUS_KANA);
		// 機器送付先住所コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SOHUS_AD_CD);
		// 機器送付先郵便番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SOHUS_PCD);
		// 機器送付先都道府県名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SOHUS_STATE_NM);
		// 機器送付先市区町村名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SOHUS_CITY_NM);
		// 機器送付先大字通称名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SOHUS_OAZTSU_NM);
		// 機器送付先字丁目名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SOHUS_AZCHO_NM);
		// 機器送付先番地号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SOHUS_BNCHIGO);
		// 機器送付先住所補記・建物名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SOHUS_ADRTTM);
		// 機器送付先住所補記・部屋番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SOHUS_ADRRM);
		// 機器送付先電話番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SOHUS_TELNO);
		// マンション物件番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.MANSION_BUKKEN_NO);
		// 機器送付先_契約者住所差異フラグ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SOHUS_KSH_AD_SAI_FLG);
// // 機器送付先住所確定後変更可否
// setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SHS_AD_FIX_AF_CHGE_KH);
// // 機器送付先住所確定後変更可否名称
// setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SHS_AD_FIX_AF_CHGE_KH_NM);
		// 機器送付先個別指定フラグ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SHS_KBT_SHITEI_FLG);
		// 機器送付先補足コード1
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SHS_HSK_CD_1);
		// 機器送付先補足コード2
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SHS_HSK_CD_2);
		// 機器送付先補足メモ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SHS_HSK_MEMO);
		// 機器設置先名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SAKI_NM);
		// 機器設置先カナ名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SAKI_KANA);
		// 機器設置先住所コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SAKI_AD_CD);
		// 機器設置先郵便番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SAKI_PCD);
		// 機器設置先都道府県名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SAKI_STATE_NM);
		// 機器設置先市区町村名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SAKI_CITY_NM);
		// 機器設置先大字通称名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SAKI_OAZTSU_NM);
		// 機器設置先字丁目名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SAKI_AZCHO_NM);
		// 機器設置先番地号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SAKI_BNCHIGO);
		// 機器設置先住所補記・建物名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SAKI_ADRTTM);
		// 機器設置先住所補記・部屋番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SAKI_ADRRM);
		// 機器設置先_契約者住所差異フラグ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SK_KSH_AD_SAI_FLG);
		// 機器設置先電話番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STC_SK_TELNO);
// // 機器設置先住所確定後変更可否
// setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STS_AD_FIX_AF_CHGE_KH);
// // 機器設置先住所確定後変更可否名称
// setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STS_AD_FIX_AF_CHGE_KH_NM);
		// 機器送付先住所手動入力フラグ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SHS_AD_MAN_INPUT_FLG);
		// 機器送付先住所手動入力フラグ名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SHS_AD_MAN_INPUT_FLG_NM);
		// 出荷完了時処理済フラグ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SHKA_FIN_JI_SYRZM_FLG);
		// 出荷完了時処理済フラグ名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SHKA_FIN_JI_SYRZM_FLG_NM);
		// サービス開始時配送状況識別コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_STA_JI_HIS_JOKYO_SKCD);
		// サービス開始時配送状況識別コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_STA_JI_HIS_JOKYO_SKCD_NM);

		// 機器設置先区画整理中フラグ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STS_KKK_SEIRI_CHU_FLG);
		// 住所未確定フラグ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.AD_MI_FIX_FLG);
		// 住所未確定フラグ名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.AD_MI_FIX_FLG_NM);
		// 自動登録コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.AUTO_ADD_CD);
		// 住所未確定解除年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.AD_MI_FIX_RLS_YMD);
		// 課金開始年月日補正有無
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.CHRG_STA_YMD_HOSEI_UM);
		// 課金開始年月日補正有無名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.CHRG_STA_YMD_HOSEI_UM_NM);
		// 機器設置先補足コード1
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STS_HSK_CD_1);
		// 機器設置先補足コード2
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STS_HSK_CD_2);
		// 機器設置先補足メモ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STS_HSK_MEMO);
		// 機器提供サービス契約後続業務依頼年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KKTK_SVC_KEI_KZKWRK_REQYMD);
		// 照査年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SHOSA_YMD);
		// 照査取消年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SHOSA_CL_YMD);
		// 配送区分
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HAISO_DIV);
		// 配送区分名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HAISO_DIV_NM);
		// 配送期限年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HAISO_KIGEN_YMD);
		// 配送到着指定年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HAISO_ARIV_SHITEI_YMD);
		// 試用加入年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.FTRIAL_KANYU_YMD);
		// 試用期間終了年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.FTRIAL_PRD_ENDYMD);
		// 本加入年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HONKANYU_YMD);
		// 本加入移行期限年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HONKANYU_IKO_KIGEN_YMD);
		// 契約締結年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KEI_CNC_YMD);
		// JCCC加入書記入年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.JCCC_KANYU_BUNSHO_YMD);
		// 保証コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HOSHO_CD);
		// 保証コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HOSHO_CD_NM);
		// 機器提供サービス契約補記
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KKTK_SVKEI_HOKI);
		// 保証開始年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HOSHO_STAYMD);
		// 保証終了年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HOSHO_END_YMD);
		// 予約適用年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.RSV_APLY_YMD);
		// 予約取消年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.RSV_CL_YMD);
		// 予約適用コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.RSV_APLY_CD);
		// 予約適用コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.RSV_APLY_CD_NM);
		// 機器変更年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_CHG_YMD);
		// プラン開始年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.PLAN_STAYMD);
		// プラン終了年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.PLAN_ENDYMD);
		// プラン課金開始年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.PLAN_CHRG_STAYMD);
		// プラン課金終了年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.PLAN_CHRG_ENDYMD);
		// プラン終了種別コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.PLAN_END_SBT_CD);
		// プラン終了種別コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.PLAN_END_SBT_CD_NM);
		// サービスキャンセル年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_CANCEL_YMD);
		// サービスキャンセル理由コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_CANCEL_RSN_CD);
		// サービス開始年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_STA_YMD);
		// サービス課金開始年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_CHRG_STAYMD);
		// サービス停止年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_STP_YMD);
		// サービス提供中使用不可種別コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVCTK_CHU_USE_FAIL_SBT_CD);
		// サービス停止理由コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_STP_RSN_CD);
		// サービス停止解除年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_STP_RLS_YMD);
		// サービス停止解除理由コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_STP_RLS_RSN_CD);
		// 休止中断コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.PAUSE_STP_CD);
		// 休止中断コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.PAUSE_STP_CD_NM);
		// サービス休止年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_PAUSE_YMD);
		// サービス休止理由コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_PAUSE_RSN_CD);
		// サービス休止理由メモ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_PAUSE_RSN_MEMO);
		// サービス休止解除年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_PAUSE_RLS_YMD);
		// サービス休止解除理由コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_PAUSE_RLS_RSN_CD);
		// サービス休止解除理由メモ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_PAUSE_RLS_RSN_MEMO);
		// サービス終了年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_ENDYMD);
		// サービス課金終了年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_CHRG_ENDYMD);
		// サービス解約年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_DSL_YMD);
		// サービス解約理由コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_DLRE_CD);
		// サービス解約理由コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_DLRE_CD_NM);
		// サービス解約理由メモ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_DLRE_MEMO);
		// 残置フラグ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.ZANCHI_FLG);
		// サービス解約手続完了フラグ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_DSL_TTDKI_FIN_FLG);
		// 回復年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KAIHK_YMD);
		// サービスキャンセル取消年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_CANCEL_CL_YMD);
		// サービス解約取消年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_DSL_CL_YMD);
		// 審査結果送信コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SKEKKA_SEND_CD);
		// 審査結果送信コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SKEKKA_SEND_CD_NM);
		// サービス休止課金開始年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_PAUSE_CHRG_STA_YMD);
		// 違約金発生コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.PNLTY_HASSEI_CD);
		// 機器認証ID
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_NINSHO_ID);
		// 機器認証IDパスワード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_NINSHO_ID_PWD);
		// 異動区分
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.IDO_DIV);
		// 異動区分名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.IDO_DIV_NM);
		// 機器設置実績受付年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KKST_JSEKI_UK_YMD);
		// eoTV機器設置承認状態コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.EO_TV_KKST_SNN_STAT_CD);
		// eoTV機器設置承認状態コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.EO_TV_KKST_SNN_STAT_CD_NM);
		// 機器設置承認年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KKST_SNN_YMD);
		// 宅内機器異動コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.TAKNKIKI_IDO_CD);
		// CASカード使用許諾年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.CAS_CARD_USE_KYODAK_YMD);
		// 機器付加情報コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_HUKA_INFO_CD);
		// 機器付加情報コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_HUKA_INFO_CD_NM);
		// 照査解約完了コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SHOSA_DSL_FIN_CD);
		// 照査解約完了コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SHOSA_DSL_FIN_CD_NM);
		// ルーター解約予約処理状態コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.ROUTER_DSL_RSV_TRN_STAT_CD);
		// ルーター解約予約処理状態コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.ROUTER_DSL_RSV_TRN_STAT_CD_NM);
		// ルーター解約予約処理結果コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.ROUTER_DSL_RSV_TRN_RSLT_CD);
		// ルーター解約予約処理結果コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.ROUTER_DSL_RSV_TRN_RSLT_CD_NM);
		// 登録年月日時分秒
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.ADD_DTM);
		// 登録オペレータアカウント
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.ADD_OPEACNT);
		// 更新年月日時分秒
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.UPD_DTM);
		// 更新オペレータアカウント
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.UPD_OPEACNT);
		// 削除年月日時分秒
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.DEL_DTM);
		// 削除オペレータアカウント
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.DEL_OPEACNT);
		// 無効フラグ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.MK_FLG);
		// 無効フラグ名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.MK_FLG_NM);
		// 最終更新年月日時分秒
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.LAST_UPD_DTM);
		// 提供方式契約番号
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.TK_HOSHIKI_KEI_NO);
		// 機器変更理由コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_CHG_RSN_CD);
		// 機器変更理由コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_CHG_RSN_CD_NM);
		// 配送方法コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HAISO_WAY_CD);
		// 配送方法コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HAISO_WAY_CD_NM);
		// TVコースコードを設定（工事連携CCで使用）
		if(!KKTK_SVC_CD_BCAS.equals(template.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD))
				&& !KKTK_SVC_CD_CCAS.equals(template.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD)))
		{
			outMap.put("stb_kei_tv_course_cd", getTvPcrsCd(param));
		}

		// 配送依頼指定年月日
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.HAISO_REQ_SHITEI_YMD);
		// 回収機器有無
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KAISHU_KIKI_UM);
		// 回収機器有無名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KAISHU_KIKI_UM_NM);
		// 機器移転先移動実施者識別コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_ITENS_MV_JSSIS_SKCD);
		// 機器移転先移動実施者識別コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_ITENS_MV_JSSIS_SKCD_NM);

		// 機器送付先住所手動入力フラグ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SHS_AD_MAN_INPUT_FLG);
		// 機器送付先住所手動入力フラグ名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_SHS_AD_MAN_INPUT_FLG_NM);
		// 出荷完了時処理済フラグ
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SHKA_FIN_JI_SYRZM_FLG);
		// 出荷完了時処理済フラグ名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SHKA_FIN_JI_SYRZM_FLG_NM);
		// サービス開始時配送状況識別コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_STA_JI_HIS_JOKYO_SKCD);
		// サービス開始時配送状況識別コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.SVC_STA_JI_HIS_JOKYO_SKCD_NM);
		// 機器指定時管理場所識別コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD);
		// 機器指定時管理場所識別コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD_NM);
		// 機器指定時工事会社コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_CD);
		// 機器指定時工事会社棚コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_SLF_CD);
		// 機器指定時工事会社棚コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_SLF_CD_NM);
		// 工事会社棚名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KOJI_COMP_SLF_NM);
		// 機器指定時預託先オフィスコード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_CD);
		// 機器指定時預託先オフィス棚コード
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_SLF_CD);
		// 機器指定時預託先オフィス棚コード名称
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_SLF_CD_NM);
		// 預託先オフィス棚名
		setDataMap(outMap, template, EKK0341A010CBSMsg1List.YOTAKU_SAKI_OFFC_SLF_NM);
	}

	/**
	 * 機器提供サービス契約データワーク領域セットメソッド
	 * 
	 * @param workMap
	 * @param template
	 */
	private void setWorkMap(Map<String, Object> workMap, CAANMsg template)
	{
		// 宅内機器セット品型コード
		setDataMap(workMap, template, EKK0341A010CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD);

		// 機器送付先個別指定フラグ（配送先個別指定フラグ）
		if(template.isNull(EKK0341A010CBSMsg1List.KIKI_SHS_KBT_SHITEI_FLG))
		{
			workMap.put("hisos_ksitei_flg", "");
		}
		else
		{
			workMap.put("hisos_ksitei_flg", template.getString(EKK0341A010CBSMsg1List.KIKI_SHS_KBT_SHITEI_FLG));
		}
		// 機器設置先場所番号（場所番号）
		if(template.isNull(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_PLACE_NO))
		{
			workMap.put("place_no", "");
		}
		else
		{
			workMap.put("place_no", template.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_PLACE_NO));
		}

		// 機器引当指定倉庫棚コード（棚コード）
		if(template.isNull(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SKDN_CD))
		{
			workMap.put("shelf_cd", "");
		}
		else
		{
			workMap.put("shelf_cd", template.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SKDN_CD));
		}

		// 住所未確定フラグ
		if(template.isNull(EKK0341A010CBSMsg1List.AD_MI_FIX_FLG))
		{
			workMap.put(EKK0341A010CBSMsg1List.AD_MI_FIX_FLG, "");
		}
		else
		{
			workMap.put(EKK0341A010CBSMsg1List.AD_MI_FIX_FLG, template.getString(EKK0341A010CBSMsg1List.AD_MI_FIX_FLG));
		}
	}

	/**
	 * 機器提供サービス契約データスクリーンデータ領域セットメソッド
	 * 
	 * @param param
	 * @param template
	 * @throws Exception
	 */
	private void setScrnDataMap(IRequestParameterReadWrite param, CAANMsg template) throws Exception
	{
		// データ情報（KKW10801よりセットされるデータ）
		Map<String, Object> kkw10801DatMap = (HashMap<String, Object>)param.getData("SCRNDATA");

		if(kkw10801DatMap != null)
		{
			// 更新年月日時分秒（サービス契約）
			if(template.isNull(EKK0341A010CBSMsg1List.UPD_DTM))
			{
// kkw10801DatMap.put("upd_dtm_svc_kei", "");
			}
			else
			{
				kkw10801DatMap.put("upd_dtm_svc_kei", template.getString(EKK0341A010CBSMsg1List.UPD_DTM));
			}
		}
	}

	/* ++++++++++ v5.00.01 削除開始 ++++++++++ */
//	/**
//	 * 工事案件一意照会サービスを実行し値を取得します。
//	 * 
//	 * @param handle セッションハンドル
//	 * @param param リクエストパラメータ
//	 * @param scCall
//	 * @param dataMap リクエストデータ
//	 * @param parentdata リクエストデータの子データ
//	 * @throws Exception
//	 */
//	private void execEKU0011A010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
//			Map<String, Object> dataMap) throws Exception
//	{
//		// ◇ 上りマッピング処理
//		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
//		HashMap<String, Object> paramMap = editInMsg_EKU0011A010(param, dataMap);
//
//		// ◇ SC呼出実行 (工事案件一意照会)
//		Map<?, ?> result = scCall.run(paramMap, handle);
//
//		editOutMsg_EKU0011A010(result, param, dataMap);
//
//		// 処理結果判定
//		jdgErrRslt(result, 0);
//	}
//
//	/**
//	 * 工事案件一意照会のメッセージを作成します。
//	 * 
//	 * @param param
//	 * @param inMap
//	 * @return HashMap<String, Object>
//	 * @throws RequestParameterException
//	 */
//	private HashMap<String, Object> editInMsg_EKU0011A010(IRequestParameterReadWrite param, Map<String, Object> inMap)
//			throws RequestParameterException
//	{
//
//		// 共通領域の設定
//		HashMap<String, Object> paramMap = editInMsg(param);
//
//		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(inMap.get("kojiak_no") == null || "".equals(inMap.get("kojiak_no")))
//		{
//			template.setNull(EKU0011A010CBSMsg.KEY_KOJIAK_NO);
//		}
//		else
//		{
//			template.set(EKU0011A010CBSMsg.KEY_KOJIAK_NO, (String)inMap.get("kojiak_no"));
//		}
//
//		CAANMsg[] templates = new CAANMsg[1];
//		templates[0] = template;
//		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
//
//		return paramMap;
//	}
//
//	/**
//	 * 工事案件一意照会検索結果格納メソッド
//	 * 
//	 * @param msgList 検索結果
//	 * @param param リクエストパラメータ
//	 * @param dataMap パラメータ
//	 * @return IRequestParameterReadWrite
//	 * @throws Exception
//	 */
//	private IRequestParameterReadWrite editOutMsg_EKU0011A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap)
//			throws Exception
//
//	{
//		// SCからの戻り値からCAANMsgを取得する
//		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
//		CAANMsg template = templates[0];
//
//		// 作業領域の取得
//		Map<Object, Object> workMap = param.getMappingWorkArea();
//
//		// 検索結果格納Map
//		Map<String, Object> eku0011A010Map = new HashMap<String, Object>();
//
//		// ワーク領域に格納します。
//		workMap.put(TEMPLATE_ID_EKU0011A010 + "WORK", eku0011A010Map);
//
//		// リターンコード取得
//		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
//
//		CAANMsg[] templateArray = template.getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);
//
//		// 検索結果をMapに格納します。
//		if(templateArray != null && templateArray.length > 0)
//		{
//			// 工事案件番号
//			setDataMap(eku0011A010Map, templateArray[0], EKU0011A010CBSMsg1List.KOJIAK_NO);
//			// 配送作成済フラグ
//			setDataMap(eku0011A010Map, templateArray[0], EKU0011A010CBSMsg1List.HAISO_SAKSEI_ZUMI_FLG);
//		}
//
//		// エラー情報の設定
//		IRequestParameterReadWrite retParam = this.editErrorInfo_EKU0011A010(param, dataMap, templates, (Integer)return_code);
//
//		// エラー情報のマップを取得
//		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
//		if(errList == null)
//		{
//			errList = new ArrayList<Object>();
//		}
//
//		// コントロールマップに設定
//		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
//
//		return retParam;
//	}
//
//	/**
//	 * 工事案件一意照会エラー処理メソッド
//	 * 
//	 * @param param
//	 * @param inMap
//	 * @param templates
//	 * @param returnCode
//	 * @return IRequestParameterReadWrite
//	 * @throws RequestParameterException
//	 */
//	private IRequestParameterReadWrite editErrorInfo_EKU0011A010(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);
//		}
//
//		// ＫＥＹ＿工事案件番号
//		setErrDataMap(inMap, template, EKU0011A010CBSMsg.KEY_KOJIAK_NO_ERR);
//
//		return param;
//	}
	/* ++++++++++ v5.00.01 削除完了 ++++++++++ */

	/**
	 * サービス契約内訳＜eo光TV＞締結サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0181C020(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0181C020(param, dataMap, parentdata);

		// ◇ SC呼出実行 (サービス契約内訳＜eo光TV＞締結)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0181C020(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * サービス契約内訳＜eo光TV＞締結のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @param parentdata
	 * @return HashMap<String, Object>
	 * @throws Exception
	 */
	private HashMap<String, Object> editInMsg_EKK0181C020(IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> parentdata)
			throws Exception
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0181C020CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0181C020CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0181C020);

		template.set(EKK0181C020CBSMsg.FUNC_CODE, inMap.get("func_code"));

		// オペレータ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);

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0181c010Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0181C010 + "WORK");

		// ◇ 業務データの設定
		// サービス契約内訳番号
		if(ekk0181c010Map.get(EKK0181C010CBSMsg.SVC_KEI_UCWK_NO) == null || "".equals(ekk0181c010Map.get(EKK0181C010CBSMsg.SVC_KEI_UCWK_NO)))
		{
			template.setNull(EKK0181C020CBSMsg.SVC_KEI_UCWK_NO);
		}
		else
		{
			template.set(EKK0181C020CBSMsg.SVC_KEI_UCWK_NO, (String)ekk0181c010Map.get(EKK0181C010CBSMsg.SVC_KEI_UCWK_NO));
		}

		// 異動区分
		if(inMap.get("ido_div") == null || "".equals(inMap.get("ido_div")))
		{
			template.setNull(EKK0181C020CBSMsg.IDO_DIV);
		}
		else
		{
			template.set(EKK0181C020CBSMsg.IDO_DIV, (String)inMap.get("ido_div"));
		}

		String updDtm = getSvcUpDtm(param);
		// 更新年月日時分秒（eo光TV）
		if("".equals(updDtm))
		{
			template.setNull(EKK0181C020CBSMsg.UPD_DTM_BF);
		}
		else
		{
			template.set(EKK0181C020CBSMsg.UPD_DTM_BF, updDtm);
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * サービス契約内訳＜eo光TV＞締結検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0181C020(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0181C020Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0181C020 + "WORK", ekk0181C020Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// サービス契約内訳番号
		setDataMap(ekk0181C020Map, template, EKK0181C020CBSMsg.SVC_KEI_UCWK_NO);

		// 世代登録年月日時分秒(サービス契約内訳)
		setDataMap(ekk0181C020Map, template, EKK0181C020CBSMsg.KK0161_GENE_ADD_DTM);

		// サービス契約内訳ステータス
		setDataMap(ekk0181C020Map, template, EKK0181C020CBSMsg.SVC_KEI_UCWK_STAT);

		// 契約締結年月日
		setDataMap(ekk0181C020Map, template, EKK0181C020CBSMsg.KEI_CNC_YMD);

		// 予約適用年月日
		setDataMap(ekk0181C020Map, template, EKK0181C020CBSMsg.RSV_APLY_YMD);

		// 予約適用コード
		setDataMap(ekk0181C020Map, template, EKK0181C020CBSMsg.RSV_APLY_CD);

		// 世代登録年月日時分秒(サービス契約内訳<eo光TV>)
		setDataMap(ekk0181C020Map, template, EKK0181C020CBSMsg.KK0181_GENE_ADD_DTM);

		// 登録年月日時分秒
		setDataMap(ekk0181C020Map, template, EKK0181C020CBSMsg.ADD_DTM);

		// 登録オペレータアカウント
		setDataMap(ekk0181C020Map, template, EKK0181C020CBSMsg.ADD_OPEACNT);

		// 更新年月日時分秒
		setDataMap(ekk0181C020Map, template, EKK0181C020CBSMsg.UPD_DTM);

		// 更新オペレータアカウント
		setDataMap(ekk0181C020Map, template, EKK0181C020CBSMsg.UPD_OPEACNT);
		// 無効フラグ
		setDataMap(ekk0181C020Map, template, EKK0181C020CBSMsg.MK_FLG);

		// 更新年月日時分秒（サービス契約）
		// 更新日付を共通領域に格納
		setSvcUpDtm(param, template.getString(EKK0181C020CBSMsg.UPD_DTM));

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0181C020(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * サービス契約内訳＜eo光TV＞締結エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0181C020(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0181C020CBSMsg.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);
		}

		// サービス契約内訳番号
		setErrDataMap(inMap, template, EKK0181C020CBSMsg.SVC_KEI_UCWK_NO_ERR);

		// 異動区分
		setErrDataMap(inMap, template, EKK0181C020CBSMsg.IDO_DIV_ERR);

		// 更新年月日時分秒(更新前)
		setErrDataMap(inMap, template, EKK0181C020CBSMsg.UPD_DTM_BF_ERR);

		return param;
	}

	/**
	 * 機器提供サービス契約締結サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0341C040(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0341C040(param, dataMap, parentdata);

		// ◇ SC呼出実行 (機器提供サービス契約締結)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0341C040(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * 機器提供サービス契約締結のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @param parentdata
	 * @return HashMap<String, Object>
	 * @throws Exception
	 */
	private HashMap<String, Object> editInMsg_EKK0341C040(IRequestParameterReadWrite param, Map<String, Object> inMap, Map<String, Object> parentdata)
			throws Exception
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0341C040CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0341C040CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341C040);

		template.set(EKK0341C040CBSMsg.FUNC_CODE, inMap.get("func_code"));

		// オペレータ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);

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0341c030Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0341C030 + "WORK");

		// ◇ 業務データの設定
		// 機器提供サービス契約番号
		if(ekk0341c030Map.get(EKK0341C030CBSMsg.KKTK_SVC_KEI_NO) == null || "".equals(ekk0341c030Map.get(EKK0341C030CBSMsg.KKTK_SVC_KEI_NO)))
		{
			template.setNull(EKK0341C040CBSMsg.KKTK_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0341C040CBSMsg.KKTK_SVC_KEI_NO, (String)ekk0341c030Map.get(EKK0341C030CBSMsg.KKTK_SVC_KEI_NO));
		}

		// 異動区分
		if(inMap.get("ido_div") == null || "".equals(inMap.get("ido_div")))
		{
			template.setNull(EKK0341C040CBSMsg.IDO_DIV);
		}
		else
		{
			template.set(EKK0341C040CBSMsg.IDO_DIV, (String)inMap.get("ido_div"));
		}

		String updDtm = getSvcUpDtm(param);

		// 更新年月日時分秒(更新前)
		if("".equals(updDtm))
		{
			template.setNull(EKK0341C040CBSMsg.UPD_DTM_BF);
		}
		else
		{
			template.set(EKK0341C040CBSMsg.UPD_DTM_BF, updDtm);
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 機器提供サービス契約締結検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editOutMsg_EKK0341C040(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 検索結果格納Map
		Map<String, Object> ekk0341C040Map = new HashMap<String, Object>();

		// ワーク領域に格納します。
		workMap.put(TEMPLATE_ID_EKK0341C040 + "WORK", ekk0341C040Map);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 機器提供サービス契約番号
		setDataMap(ekk0341C040Map, template, EKK0341C040CBSMsg.KKTK_SVC_KEI_NO);

		// 世代登録年月日時分秒
		setDataMap(ekk0341C040Map, template, EKK0341C040CBSMsg.GENE_ADD_DTM);

		// 機器提供サービス契約ステータス
		setDataMap(ekk0341C040Map, template, EKK0341C040CBSMsg.KKTK_SVC_KEI_STAT);

		// 契約締結年月日
		setDataMap(ekk0341C040Map, template, EKK0341C040CBSMsg.KEI_CNC_YMD);

		// 予約適用年月日
		setDataMap(ekk0341C040Map, template, EKK0341C040CBSMsg.RSV_APLY_YMD);

		// 予約適用コード
		setDataMap(ekk0341C040Map, template, EKK0341C040CBSMsg.RSV_APLY_CD);

		// 登録年月日時分秒
		setDataMap(ekk0341C040Map, template, EKK0341C040CBSMsg.ADD_DTM);

		// 登録オペレータアカウント
		setDataMap(ekk0341C040Map, template, EKK0341C040CBSMsg.ADD_OPEACNT);

		// 更新年月日時分秒
		setDataMap(ekk0341C040Map, template, EKK0341C040CBSMsg.UPD_DTM);

		// 更新オペレータアカウント
		setDataMap(ekk0341C040Map, template, EKK0341C040CBSMsg.UPD_OPEACNT);
		// 無効フラグ
		setDataMap(ekk0341C040Map, template, EKK0341C040CBSMsg.MK_FLG);

		// 更新年月日時分秒（サービス契約）
		// 更新日付を共通領域に格納
		setSvcUpDtm(param, template.getString(EKK0341C040CBSMsg.UPD_DTM));

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0341C040(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * 機器提供サービス契約締結エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0341C040(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0341C040CBSMsg.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);
		}

		// 機器提供サービス契約番号
		setErrDataMap(inMap, template, EKK0341C040CBSMsg.KKTK_SVC_KEI_NO_ERR);

		// 異動区分
		setErrDataMap(inMap, template, EKK0341C040CBSMsg.IDO_DIV_ERR);

		// 更新年月日時分秒(更新前)
		setErrDataMap(inMap, template, EKK0341C040CBSMsg.UPD_DTM_BF_ERR);

		return param;
	}
	/* ++++++++++ v5.00.01 削除開始 ++++++++++ */
//	/**
//	 * 締結処理を実行するか判断します。
//	 * 
//	 * @param param リクエストパラメータ
//	 * @param dataMap
//	 * @return 締結実行の場合:true 締結実行以外の場合：false
//	 * @throws Exception
//	 */
//	private boolean isTeiketuJikko(IRequestParameterReadWrite param, Map<String, Object> dataMap) throws Exception
//	{
//
//		// 作業領域の取得
//		Map<Object, Object> workMap = param.getMappingWorkArea();
//
//		// サービス契約情報を取得
//		Map<Object, Object> ekk0081a010Map = (Map<Object, Object>)workMap.get(TEMPLATE_ID_EKK0081A010 + "WORK");
//
//		// 工事案件一意照会
//		Map<Object, Object> eku0011a010Map = (Map<Object, Object>)workMap.get(TEMPLATE_ID_EKU0011A010 + "WORK");
//
//		// データが存在しない場合、工事連携データ意外と判断します。
//		if(ekk0081a010Map == null || eku0011a010Map == null)
//		{
//			return false;
//		}
//
//		// 工事案件番号
//		String kojiakNo = getNullToStr((String)dataMap.get("kojiak_no"));
//
//		// サービス契約ステータスを取得
//		String svcKeiStat = (String)ekk0081a010Map.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
//
//		// 配送作成済フラグを取得（工事案件一意照会）
//		String haisoSakuZumiFlg = getHaisoZumiFlg((String)eku0011a010Map.get(EKU0011A010CBSMsg1List.HAISO_SAKSEI_ZUMI_FLG));
//
//		// 締結済かつ工事案件番号が設定されている場合
//		if(SVC_KEI_STAT_TEIZUMI.equals(svcKeiStat) && !"".equals(kojiakNo))
//		{
//			return true;
//		} // サービス提供中かつ工事案件の配送作成済フラグが配送未作成以外
//		else if(SVC_KEI_STAT_TKCHU.equals(svcKeiStat) && !HAISO_SAKUSEI_MI.equals(haisoSakuZumiFlg))
//		{
//			return true;
//		}
//
//		return false;
//	}
	/* ++++++++++ v5.00.01 削除完了 ++++++++++ */

	/**
	 * 配送作成済フラグ。（空白の場合0を返却）
	 * 
	 * @param zumiFlg 配送作成済フラグ。
	 * @return zumiFlg 配送作成済フラグ。
	 */
	private String getHaisoZumiFlg(String zumiFlg)
	{

		if(zumiFlg == null || "".equals(zumiFlg))
		{
			return "0";
		}
		else
		{
			return zumiFlg;
		}
	}

	/**
	 * サービス契約の更新タイムスタンプを格納します。
	 * 
	 * @param param リクエストパラメータ
	 * @param inMap
	 * @throws Exception
	 */
	private void setInitSvcUpdate(IRequestParameterReadWrite param, Map<String, Object> inMap) throws Exception
	{

		// データ情報（KKW10801よりセットされるデータ）
		Map<String, Object> kkw10801DatMap = (HashMap<String, Object>)param.getData("SCRNDATA");

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		String updDtm = "";

		if(kkw10801DatMap != null)
		{
			updDtm = (String)kkw10801DatMap.get("upd_dtm_svc_kei");
		}
		else if(workMap != null && workMap.containsKey(KK_COM_SVC_UP_DTM))
		{
			updDtm = (String)workMap.get(KK_COM_SVC_UP_DTM);
		}
		else
		{
			updDtm = (String)inMap.get("upd_dtm_svc_kei");
		}

		workMap.put(KK_COM_SVC_UP_DTM, updDtm);

	}

	/**
	 * サービス契約の更新タイムスタンプを取得します。
	 * 
	 * @param param リクエストパラメータ
	 * @return UpDtm 更新時間
	 * @throws Exception
	 */
	private String getSvcUpDtm(IRequestParameterReadWrite param) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		return (String)workMap.get(KK_COM_SVC_UP_DTM);

	}

	/**
	 * サービス契約の更新タイムスタンプを取得します。
	 * 
	 * @param param リクエストパラメータ
	 * @param updDtm 更新時間
	 * @throws Exception
	 */
	private void setSvcUpDtm(IRequestParameterReadWrite param, String updDtm) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		if(updDtm != null && !"".equals(updDtm))
		{
			workMap.put(KK_COM_SVC_UP_DTM, updDtm);
		}

	}

	/**
	 * 機器提供サービス契約番号をセットします。
	 * 
	 * @param param リクエストパラメータ
	 * @throws Exception
	 */
	private void setKktkSvcKeiNo(IRequestParameterReadWrite param) throws Exception
	{
		// データ情報（KKW10801よりセットされるデータ）
		Map<String, Object> kkw10801DatMap = (HashMap<String, Object>)param.getData("SCRNDATA");

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		// ワーク領域より取得します。
		Map<Object, Object> ekk0341D010Map = (Map<Object, Object>)workMap.get(TEMPLATE_ID_EKK0341D010 + "WORK");

		if(kkw10801DatMap != null)
		{
			kkw10801DatMap.put("kktk_svc_kei_no", ekk0341D010Map.get((EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO)));
		}
	}

	/**
	 * 機器提供サービス契約の検索キーを取得します。
	 * 
	 * @param param リクエストパラメータ
	 * @return Map<String, Object>
	 * @throws Exception
	 */
	private Map<String, Object> getSearchEKK0341D010Data(IRequestParameterReadWrite param) throws Exception
	{

		Map<String, Object> retMap = new HashMap<String, Object>();

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		// ワーク領域より機器提供サービス契約登録データを取得します。
		Map<Object, Object> ekk0341d010Map = (Map<Object, Object>)workMap.get(TEMPLATE_ID_EKK0341D010 + "WORK");

		// ワーク領域より機器提供サービス契約照査データを取得します。
		Map<Object, Object> ekk0341c030Map = (Map<Object, Object>)workMap.get(TEMPLATE_ID_EKK0341C030 + "WORK");

		// ワーク領域より機器提供サービス契約締結データを取得します。
		Map<Object, Object> ekk0341c040Map = (Map<Object, Object>)workMap.get(TEMPLATE_ID_EKK0341C040 + "WORK");

		if(ekk0341c040Map != null)
		{
			retMap.put("kktk_svc_kei_no", ekk0341c040Map.get(EKK0341C040CBSMsg.KKTK_SVC_KEI_NO));
			retMap.put("gene_add_dtm", ekk0341c040Map.get(EKK0341C040CBSMsg.GENE_ADD_DTM));
		}
		else if(ekk0341c030Map != null)
		{
			retMap.put("kktk_svc_kei_no", ekk0341c030Map.get(EKK0341C030CBSMsg.KKTK_SVC_KEI_NO));
			retMap.put("gene_add_dtm", ekk0341c030Map.get(EKK0341C030CBSMsg.GENE_ADD_DTM));
		}
		else if(ekk0341d010Map != null)
		{
			retMap.put("kktk_svc_kei_no", ekk0341d010Map.get(EKK0341D010CBSMsg.KKTK_SVC_KEI_NO));
			retMap.put("gene_add_dtm", ekk0341d010Map.get(EKK0341D010CBSMsg.GENE_ADD_DTM));
		}

		return retMap;

	}

	/**
	 * 申込明細番号を取得します。
	 * 
	 * @param param リクエストパラメータ
	 * @param inMap
	 * @return 申込明細番号
	 * @throws Exception
	 */
	private String getMskmDtlNo(IRequestParameterReadWrite param, Map<String, Object> inMap) throws Exception
	{
		String mskmDtlNo = "";
		
		/* ++++++++++ v9.00.01 追加開始 ++++++++++ */
		// 住所変更中申込明細番号
		String adchg_mskm_dtl_no = getNullToStr((String)inMap.get("adchg_mskm_dtl_no"));
		
		// 住所変更中申込明細番号がある場合、返却します。
		if(!"".equals(adchg_mskm_dtl_no))
		{
			return adchg_mskm_dtl_no;
		}
		/* ++++++++++ v9.00.01 追加終了 ++++++++++ */
		
		// データ情報（KKW10801よりセットされるデータ）
		Map<String, Object> kkw10801DatMap = (HashMap<String, Object>)param.getData("SCRNDATA");

		Map<Object, Object> workMap = param.getMappingWorkArea();
		String mskmDtlNoWork = (String)workMap.get("mskm_dtl_no");

		if(kkw10801DatMap != null)
		{
			mskmDtlNo = (String)kkw10801DatMap.get("mskm_dtl_no");
		}
		else if(mskmDtlNoWork != null)
		{
			mskmDtlNo = mskmDtlNoWork;
		}
		else
		{
			mskmDtlNo = (String)inMap.get("mskm_dtl_no");
		}

		if(mskmDtlNo == null || "".equals(mskmDtlNo))
		{
			// ワーク領域に格納します。
			Map<String, Object> ekk0081a010Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0081A010 + "WORK");

			mskmDtlNo = (String)ekk0081a010Map.get(EKK0081A010CBSMsg1List.MSKM_DTL_NO);

		}
		return mskmDtlNo;
	}

	/**
	 * 宅内機器型式コードを取得します。
	 * 
	 * @param param リクエストパラメータ
	 * @return taknkikiModelCd
	 * @throws Exception
	 */
	private String getTaknkikiModelCd(IRequestParameterReadWrite param) throws Exception
	{

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 画面からの画面からのパラメータ取得
		Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);

		String taknkikiModelCd = getNullToStr((String)kkTorokuWork.get("taknkiki_model_cd"));

		return taknkikiModelCd;

	}

	/**
	 * 料金コード取得部品を実行します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param dataMap
	 * @return 料金コード情報
	 * @throws Throwable
	 */
	private Map<String, Object> getPcraDataMap(SessionHandle handle, IRequestParameterReadWrite param, Map<String, Object> dataMap) throws Throwable
	{

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// 画面からの画面からのパラメータ取得
		Map<String, Object> kkTorokuWork = (Map<String, Object>)workMap.get(KK_TOROKU_WORK);

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		paramMap.put("func_code", dataMap.get("func_code"));

		// 宅内機器型式コード
		String taknkikiModelCd = getTaknkikiModelCd(param);
		// 宅内機器型式コード
		paramMap.put("taknkiki_model_cd", taknkikiModelCd);
		/* ++++++++++ v6.00.00 修正開始 ++++++++++ */
//		// 機器提供種別コード
//		paramMap.put("kktk_sbt_cd", kkTorokuWork.get("kktk_sbt_cd"));
//		// 販売種別コード
//		paramMap.put("hambai_sbt_cd", kkTorokuWork.get("hambai_sbt_cd"));
		// 機器提供種別コード
		String kktk_sbt_cd = getNullToStr((String)kkTorokuWork.get("kktk_sbt_cd"));
		if("".equals(kktk_sbt_cd))
		{
			// 設定されていない場合、レンタル（02）
			paramMap.put("kktk_sbt_cd", "02");
		}
		else
		{
			paramMap.put("kktk_sbt_cd", kkTorokuWork.get("kktk_sbt_cd"));
		}
		// 販売種別コード
			// 提供種別コード(持込の場合)
		if(TEIKYO_SBT_MOCHIKOMI.equals(kktk_sbt_cd))
		{
			paramMap.put("hambai_sbt_cd", "");
		}
		else
		{
			if(kkTorokuWork.get("hambai_sbt_cd") == null || "".equals(kkTorokuWork.get("hambai_sbt_cd")))
			{
				// 設定されていない場合、（標準（新品））10を設定
				paramMap.put("hambai_sbt_cd", "10");
			}
			else
			{
				paramMap.put("hambai_sbt_cd", kkTorokuWork.get("hambai_sbt_cd"));
			}
		}
		/* ++++++++++ v6.00.00 修正終了 ++++++++++ */

		// 機器提供サービスコード
		paramMap.put("kktk_svc_cd", kkTorokuWork.get("kktk_svc_cd"));
		// HDD容量コード
		paramMap.put("hdd_capa_cd_in", kkTorokuWork.get("hdd_capa_cd"));
		// STB種別コード
		paramMap.put("stb_sbt_cd", kkTorokuWork.get("stb_sbt_cd"));

		// 基準日
		paramMap.put("stdardymd", (String)dataMap.get("stdardymd"));

		Map<String, Object> jkkpcrDataMap = JKKBpCommon.getPcrsData(handle, param, paramMap);
		// ANK-3991-00-00 ADD START
		if ( ( taknkikiModelCd == null ||  "".equals(taknkikiModelCd) ) &&
				jkkpcrDataMap.get("hdd_capa_cd") != null && JKKStrConst.CD00557_STB_HDD_CD_4KSTB_NO.equals(jkkpcrDataMap.get("hdd_capa_cd")) )
		{
			// 料金コース
			jkkpcrDataMap.put("pcrs_cd", JKKStrConst.CD00134_4KSTB_HDD_NON_NEW);
			// 料金プラン
			jkkpcrDataMap.put("pplan_cd", JKKStrConst.CD00565_4KSTB_HDD_NON_NEW);
		}
		else if ( ( taknkikiModelCd == null ||  "".equals(taknkikiModelCd) ) &&
				jkkpcrDataMap.get("hdd_capa_cd") != null && JKKStrConst.CD00557_STB_HDD_CD_4KSTB_2TB_HDD.equals(jkkpcrDataMap.get("hdd_capa_cd")) )
		{
			// 料金コース
			jkkpcrDataMap.put("pcrs_cd", JKKStrConst.CD00134_4KSTB_HDD_2TB_NEW);
			// 料金プラン
			jkkpcrDataMap.put("pplan_cd", JKKStrConst.CD00565_4KSTB_HDD_2TB_NEW);
		}
		// ANK-3991-00-00 ADD END
		// ANK-4335-00-00 ADD START
		else if ( ( taknkikiModelCd == null ||  "".equals(taknkikiModelCd) ) &&
				jkkpcrDataMap.get("hdd_capa_cd") != null && JKKStrConst.CD00557_STB_HDD_CD_4KSTB_NO_OLD.equals(jkkpcrDataMap.get("hdd_capa_cd")) )
		{
			// 料金コース
			jkkpcrDataMap.put("pcrs_cd", JKKStrConst.CD00134_4KSTB_HDD_NON_OLD);
			// 料金プラン
			jkkpcrDataMap.put("pplan_cd", JKKStrConst.CD00565_4KSTB_HDD_NON_OLD);
		}
		// ANK-4335-00-00 ADD END

		workMap.put(WORK_COM, jkkpcrDataMap);

		return jkkpcrDataMap;

	}

	/**
	 * TV料金コード取得
	 * 
	 * @param param リクエストパラメータ
	 * @return TV料金コード
	 * @throws Exception
	 */
	private String getTvPcrsCd(IRequestParameterReadWrite param) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// ワーク領域に格納します。
		Map<Object, Object> ekk0181D010Map = (Map<Object, Object>)workMap.get(TEMPLATE_ID_EKK0181D010 + "WORK");

		if(ekk0181D010Map != null)
		{
			return (String)ekk0181D010Map.get(EKK0181D010CBSMsg.PCRS_CD);
		}

		return "";

	}

	/**
	 * サービス契約内訳一意照会サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @throws Exception
	 */
	private void execEKK0161A010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0161A010(param, dataMap);

		// ◇ SC呼出実行 (サービス契約内訳一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);

		editOutMsg_EKK0161A010(result, param, dataMap, parentdata);

		// 処理結果判定
		jdgErrRslt(result, 0);
	}

	/**
	 * サービス契約内訳一意照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws Exception
	 */
	private HashMap<String, Object> editInMsg_EKK0161A010(IRequestParameterReadWrite param, Map<String, Object> inMap) throws Exception
	{

		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0161A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0161A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161A010);

		template.set(EKK0161A010CBSMsg.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);

		// 検索キーデータを取得します。
		Map<String, Object> searchMap = getSearchEKK0161A010Data(param);

		// ◇ 業務データの設定
		// ＫＥＹ＿サービス契約内訳番号
		if(searchMap.get("svc_kei_ucwk_no") == null || "".equals(searchMap.get("svc_kei_ucwk_no")))
		{
			template.setNull(EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO);
		}
		else
		{
			template.set(EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO, (String)searchMap.get("svc_kei_ucwk_no"));
		}

		// ＫＥＹ＿世代登録年月日時分秒
		if(searchMap.get("gene_add_dtm") == null || "".equals(searchMap.get("gene_add_dtm")))
		{
			template.setNull(EKK0161A010CBSMsg.KEY_GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0161A010CBSMsg.KEY_GENE_ADD_DTM, (String)searchMap.get("gene_add_dtm"));
		}

		template.setNull(EKK0161A010CBSMsg.KEY_RSV_APLY_YMD);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * サービス契約内訳一意照会検索結果格納メソッド
	 * 
	 * @param msgList 検索結果
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutMsg_EKK0161A010(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap,
			Map<String, Object> parentdata) throws Exception

	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// サービス契約内訳登録データ格納Listを取得します。
		ArrayList<Map<String, Object>> createList = (ArrayList<Map<String, Object>>)dataMap.get("svc_kei_ucwk_list");

		if(createList == null)
		{
			createList = new ArrayList<Map<String, Object>>();
			dataMap.put("svc_kei_ucwk_list", createList);
		}
		// OUTパラメータ
		Map<String, Object> createDataMap = new HashMap<String, Object>();

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST);

		// 検索結果をMapに格納します。
		if(templateArray != null && templateArray.length > 0)
		{
			createList.add(createDataMap);
			// OUTマップに格納
			setSvcKeiUcwkMap(param, createDataMap, templateArray[0]);
		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = this.editErrorInfo_EKK0161A010(param, parentdata, templates, (Integer)return_code);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return retParam;
	}

	/**
	 * 機器提供サービス契約一意照会エラー処理メソッド
	 * 
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0161A010(IRequestParameterReadWrite param, Map<String, Object> inMap, CAANMsg[] templates,
			int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0161A010CBSMsg.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);
		}

		// ＫＥＹ＿サービス契約内訳番号
		setErrDataMap(inMap, template, EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR);
		// ＫＥＹ＿世代登録年月日時分秒
		setErrDataMap(inMap, template, EKK0161A010CBSMsg.KEY_GENE_ADD_DTM_ERR);
		// ＫＥＹ＿予約適用年月日
		setErrDataMap(inMap, template, EKK0161A010CBSMsg.KEY_RSV_APLY_YMD_ERR);

		return param;
	}

	/**
	 * 機器提供サービス契約の検索キーを取得します。
	 * 
	 * @param param リクエストパラメータ
	 * @return 機器提供サービス契約の検索キー
	 * @throws Exception
	 */
	private Map<String, Object> getSearchEKK0161A010Data(IRequestParameterReadWrite param) throws Exception
	{

		Map<String, Object> retMap = new HashMap<String, Object>();

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		// ワーク領域よりサービス契約内訳登録データを取得します。
		Map<Object, Object> ekk0181d010Map = (Map<Object, Object>)workMap.get(TEMPLATE_ID_EKK0181D010 + "WORK");

		// ワーク領域よりサービス契約内訳照査データを取得します。
		Map<Object, Object> ekk0181c010Map = (Map<Object, Object>)workMap.get(TEMPLATE_ID_EKK0181C010 + "WORK");

		// ワーク領域よりサービス契約内訳締結データを取得します。
		Map<Object, Object> ekk0181c020Map = (Map<Object, Object>)workMap.get(TEMPLATE_ID_EKK0181C020 + "WORK");

		if(ekk0181c020Map != null)
		{
			retMap.put("svc_kei_ucwk_no", ekk0181c020Map.get(EKK0181C020CBSMsg.SVC_KEI_UCWK_NO));
			retMap.put("gene_add_dtm", ekk0181c020Map.get(EKK0181C020CBSMsg.KK0161_GENE_ADD_DTM));
		}
		else if(ekk0181c010Map != null)
		{
			retMap.put("svc_kei_ucwk_no", ekk0181c010Map.get(EKK0181C010CBSMsg.SVC_KEI_UCWK_NO));
			retMap.put("gene_add_dtm", ekk0181c010Map.get(EKK0181C010CBSMsg.KK0161_GENE_ADD_DTM));
		}
		else if(ekk0181d010Map != null)
		{
			retMap.put("svc_kei_ucwk_no", ekk0181d010Map.get(EKK0181D010CBSMsg.SVC_KEI_UCWK_NO));
			retMap.put("gene_add_dtm", ekk0181d010Map.get(EKK0181D010CBSMsg.KK0161_GENE_ADD_DTM));
		}

		return retMap;

	}

	/**
	 * サービス契約内訳データセットメソッド
	 * 
	 * @param param
	 * @param outMap
	 * @param template
	 * @throws Exception
	 */
	private void setSvcKeiUcwkMap(IRequestParameterReadWrite param, Map<String, Object> outMap, CAANMsg template) throws Exception
	{

		// サービス契約内訳番号
		setDataMap(outMap, template, EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO);
		// サービス契約内訳ステータス
		setDataMap(outMap, template, EKK0161A010CBSMsg1List.SVC_KEI_UCWK_STAT);
		// 料金コースコード
		setDataMap(outMap, template, EKK0161A010CBSMsg1List.PCRS_CD);
		// 料金プランコード
		setDataMap(outMap, template, EKK0161A010CBSMsg1List.PPLAN_CD);
	}

	/**
	 * B-CAS・C-CAS宅内機器型式コード取得メソッド
	 * 
	 * @param handle
	 * @param param
	 * @param scCall
	 * @param dataMap
	 * @param parentdata
	 * @param fourKStbKkFlg
	 * @return HashMap<String, String>
	 * @throws Exception
	 */
	private HashMap<String, String> getBcasCcasTknMdlCd(SessionHandle handle, IRequestParameterReadWrite param,
// ANK-3488-00-00 MOD START
//			ServiceComponentRequestInvoker scCall, Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
			ServiceComponentRequestInvoker scCall, Map<String, Object> dataMap, Map<String, Object> parentdata, boolean fourKStbKkFlg) throws Exception
// ANK-3488-00-00 MOD END
	{
		HashMap<String, String> retMap = new HashMap<String, String>();

		// B-CAS・C-CAS料金グループコード取得
		String prcGrpCd = getBuisinessParameter(handle, scCall, param, dataMap, WORK_PARAM_BCCAS_PRC_GRP_CD);

// ANK-3488-00-00 MOD START
//		// B-CAS宅内機器種別コード取得
//		String bcasTknSbtCd = getBuisinessParameter(handle, scCall, param, dataMap, WORK_PARAM_BCAS_TNK_SBT_CD);
		// B-CAS宅内機器種別コード
		String bcasTknSbtCd = "";
		// 4K-STB機器以外の場合
		if (!fourKStbKkFlg)
		{
			// B-CAS宅内機器種別コード取得
			bcasTknSbtCd = getBuisinessParameter(handle, scCall, param, dataMap, WORK_PARAM_BCAS_TNK_SBT_CD);
		}
// ANK-3488-00-00 MOD END

		// C-CAS宅内機器種別コード取得
		String ccasTknSbtCd = getBuisinessParameter(handle, scCall, param, dataMap, WORK_PARAM_CCAS_TNK_SBT_CD);

		// 
		// ***** EKK1861B001（サービス別宅内機器型式候補一覧照会）*****
		Object[][] ekk1861b001IN =
		{
		{ EKK1861B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1861B001 },
		{ EKK1861B001CBSMsg.FUNC_CODE, "1" },
		{ EKK1861B001CBSMsg.KEY_TKMDL_CHSHT_JOKEN_SBT_CD, "10" },
		{ EKK1861B001CBSMsg.KEY_PRC_GRP_CD, prcGrpCd },
		{ EKK1861B001CBSMsg.KEY_PCRS_CD, "" },
		{ EKK1861B001CBSMsg.KEY_TAKNKIKI_MODEL_CD, "" },
		{ EKK1861B001CBSMsg.KEY_ADD_KH, "1" },
		{ EKK1861B001CBSMsg.KEY_MDL_CHG_KH, "" },
		{ EKK1861B001CBSMsg.KEY_SHURI_KOKAN_KH, "" },
		{ EKK1861B001CBSMsg.KEY_BASE_YMD, (String)dataMap.get("stdardymd") },
		{ EKK1861B001CBSMsg.KEY_STDARD_MODEL_FLG, "1" } };

		CAANMsg[] ekk1861B001cbsMsg1list = callSC(handle, scCall, param, dataMap, ekk1861b001IN).getCAANMsgList(
				EKK1861B001CBSMsg.EKK1861B001CBSMSG1LIST);

// ANK-3488-00-00 ADD START
		// 4K-STB機器以外の場合
		if (!fourKStbKkFlg)
		{
// ANK-3488-00-00 ADD END
			// B-CASの宅内機器型式コードを格納
			retMap.put(KKTK_SVC_CD_BCAS, getTknKikiModel(ekk1861B001cbsMsg1list, bcasTknSbtCd));
// ANK-3488-00-00 ADD START
		}
// ANK-3488-00-00 ADD END
		// C-CASの宅内機器型式コードを格納
		retMap.put(KKTK_SVC_CD_CCAS, getTknKikiModel(ekk1861B001cbsMsg1list, ccasTknSbtCd));

		return retMap;
	}

	/**
	 * 宅内機器型式コード取得メソッド
	 * 
	 * @param ekk1861b001CBSMsg1list
	 * @param tkSbtCd B-CASまたはC-CASの宅内機器種別コード
	 * @return 宅内機器型式コード
	 */
	private String getTknKikiModel(CAANMsg[] ekk1861b001CBSMsg1list, String tkSbtCd)
	{
		String retStr = "";

		for (int i = 0; i < ekk1861b001CBSMsg1list.length; i++)
		{
			// 対象の宅内機器種別コードで判別し、宅内機器型式コードを取得します。
			if(tkSbtCd.equals(ekk1861b001CBSMsg1list[i].getString(EKK1861B001CBSMsg1List.TAKNKIKI_SBT_CD)))
			{
				retStr = ekk1861b001CBSMsg1list[i].getString(EKK1861B001CBSMsg1List.TAKNKIKI_MODEL_CD);
				break;
			}
		}

		return retStr;
	}

	/**
	 * 業務パラメータを取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param keyword
	 * @return String
	 * @throws Exception
	 */
	private String getBuisinessParameter(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			Map<String, Object> dataMap, 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, dataMap, 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,
			Map<String, Object> dataMap, 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, dataMap, 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))
		{
			/* ++++++++++ v4.03.00 追加開始 ++++++++++ */
			// 警告の場合、例外をスローしない
			if(!("0".equals(return_code.toString()) && 4 == status))
			{
			/* ++++++++++ v4.03.00 追加終了 ++++++++++ */
				throw new SCCallException("戻り値不正", return_code.toString(), status);
			/* ++++++++++ v4.03.00 追加開始 ++++++++++ */
			}
			/* ++++++++++ v4.03.00 追加終了 ++++++++++ */
		}
		return msg;
	}

	/**
	 * 
	 * @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,
			Map<String, Object> dataMap, 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);
		}

		for (int i = 0; i < mappingData.length; i++)
		{
// if (((String)mappingData[i][0]).startsWith("key_"))
// {
			if(!template.isNull(mappingData[i][0] + "_err"))
			{
				if(!dataMap.containsKey(mappingData[i][0] + "_err"))
				{
					dataMap.put(mappingData[i][0] + "_err", template.getString(mappingData[i][0] + "_err"));
				}
// }
			}
		}
		return param;
	}

	/**
	 * 機器一覧一括処理データ格納メソッド
	 * 
	 * @param param リクエストパラメータ
	 * @param dataMap パラメータ
	 * @param parentdata リクエストデータの子データ
	 * @param searchMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void setKikiIchiranIkkatsuList(IRequestParameterReadWrite param, Map<String, Object> dataMap, Map<String, Object> parentdata,
			CAANMsg searchMsg) throws Exception
	{

		String ichiranIndex = getNullToStr((String)dataMap.get("ichiranIndex"));

		if("".equals(ichiranIndex))
		{
			return;
		}

		int index = Integer.parseInt(ichiranIndex);

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		// ワーク領域より処理一覧を取得
		ArrayList<HashMap<String, Object>> ichiranShoriList = (ArrayList<HashMap<String, Object>>)workMap.get(SHORI_LIST_ICHIRAN);

		// 一覧処理マップ(格納するIndexのMapを取り出します。)
		HashMap<String, Object> ichiranShoriMap = ichiranShoriList.get(index);

		ArrayList<CAANMsg> shoriListKiki_af = null;

		// 更新後データが格納されている場合、リストを取得して格納（B-CAS,C-CASなど）
		if(ichiranShoriMap.containsKey(SHORI_LIST_KIKILIST_AF))
		{
			shoriListKiki_af = (ArrayList<CAANMsg>)ichiranShoriMap.get(SHORI_LIST_KIKILIST_AF);

			shoriListKiki_af.add(searchMsg);
		}
		else
		{
			shoriListKiki_af = new ArrayList<CAANMsg>();

			shoriListKiki_af.add(searchMsg);

			ichiranShoriMap.put(SHORI_LIST_KIKILIST_AF, shoriListKiki_af);
		}

	}

	/**
	 * 機器提供サービス契約一意照会サービスを実行し値を取得します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall
	 * @param dataMap リクエストデータ
	 * @param parentdata リクエストデータの子データ
	 * @return HashMap
	 * @throws Exception
	 */
	private HashMap execEKK0341A010_Haiso(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall,
			Map<String, Object> dataMap, Map<String, Object> parentdata) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0341A010(param, dataMap);

		// ◇ SC呼出実行 (機器提供サービス契約一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);

		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		HashMap templateMap = template.getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)[0].getHashMap();
		return templateMap;
	}

	/**
	 * 検索してきた項目を更新用の項目に格納します。
	 * 
	 * @param custMap
	 * @param svcIf
	 * @return HashMap<String, String>
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, String> getInputMap(HashMap<String, String> custMap, String svcIf)
	{
		CAANMsg inMsg = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg", svcIf));
		HashMap<String, String> map = new HashMap<String, String>();

		Iterator<String> ite = inMsg.getSchema().getSchemaKeySet().iterator();
		while (ite.hasNext())
		{
			String key = (String)ite.next();
			if(key.endsWith("_err"))
			{
				String tmpKey = key.substring(0, key.length() - 4);
				if(custMap.containsKey(tmpKey))
				{
					map.put(tmpKey, custMap.get(tmpKey));
				}
			}
		}
		return map;
	}

	/**
	 * 更新用のHashMapを二次元配列に格納します。
	 * 
	 * @param map
	 * @param paramKey
	 * @param templateId
	 * @return Object[][]
	 */
	@SuppressWarnings("unchecked")
	private Object[][] getArraysParam(HashMap<String, String> map, String paramKey, String templateId)
	{

		// 先頭の要素にはTemplateIDを格納するため要素をひとつ多く生成しておく。
		Object[][] arraysParam = new Object[map.size() + 1][2];

		// TemplateIDを格納
		arraysParam[0][0] = paramKey;
		arraysParam[0][1] = templateId;

		// 更新用のHashMapを二次元配列に格納
		Iterator iter = map.keySet().iterator();
		int i = 1;
		while (iter.hasNext())
		{
			String key = (String)iter.next();

			arraysParam[i][0] = key;
			arraysParam[i][1] = map.get(key);

			i++;

		}
		return arraysParam;
	}
	
	/* ++++++++++ v5.00.01 変更開始 ++++++++++ */
	/**
	 * サービス契約回線内訳情報を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param parentdata
	 * @param fixedText
	 * @throws Exception
	 */
	private void getKaisenUcwkInfo(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			Map<String, Object> dataMap, Map<String, Object> parentdata, String fixedText) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// サービス契約_工事案件一覧照会を取得
		CAANMsg[] eku0081b010cbsMsg1list = execEKU0081B010(handle, scCall, param, dataMap, parentdata, fixedText);
		
		if(eku0081b010cbsMsg1list != null && eku0081b010cbsMsg1list.length > 0)
		{
			// サービス契約回線内訳一意照会
			CAANMsg[] ekk0251a010cbsMsg1list = execEKK0251A010(handle, scCall, param, dataMap
								, parentdata, fixedText, eku0081b010cbsMsg1list[0].getString(EKU0081B010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));

			// データが取得できた場合、ワーク領域に値を格納します。
			if(ekk0251a010cbsMsg1list != null && ekk0251a010cbsMsg1list.length > 0)
			{
				// 検索結果格納Map
				Map<String, Object> kaisennInfoMap = new HashMap<String, Object>();

				// ワーク領域に格納します。
				workMap.put(TEMPLATE_ID_EKK0251B003 + "WORK", kaisennInfoMap);
				
				setKaisenInfo(kaisennInfoMap, ekk0251a010cbsMsg1list[0]);

				return;
			}
			
		}
		// 取得できなかった場合、以下の処理で回線データを取得します。
		// サービス契約回線内訳一覧照会（現在利用中）
		execEKK0251B003(handle, param, scCall, dataMap);
	}
	
	/**
	 * サービス契約回線内訳一意照会を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param parentdata
	 * @param fixedText
	 * @param svcKeiUcwkNo
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0251A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			Map<String, Object> dataMap, Map<String, Object> parentdata, String fixedText, String svcKeiUcwkNo) throws Exception
	{
		// ***** EKK0251A010（サービス契約回線内訳一意照会）*****
		Object[][] ekk0251a010IN = {
		{ EKK0251A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251A010 },
		{ EKK0251A010CBSMsg.FUNC_CODE, "2" },
		{ EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, svcKeiUcwkNo } };

		CAANMsg[] ekk0251a010cbsMsg1list = callSC(handle, scCall, param, dataMap, ekk0251a010IN).getCAANMsgList(EKK0251A010CBSMsg.EKK0251A010CBSMSG1LIST);

		return ekk0251a010cbsMsg1list;
	}

	/**
	 * サービス契約_工事案件一覧照会を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param parentdata
	 * @param fixedText
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKU0081B010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			Map<String, Object> dataMap, Map<String, Object> parentdata, String fixedText) throws Exception
	{
		// ***** EKU0081B010（サービス契約_工事案件一覧照会）*****
		Object[][] eku0081b010IN = {
		{ EKU0081B010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0081B010 },
		{ EKU0081B010CBSMsg.FUNC_CODE, "2" },
		{ EKU0081B010CBSMsg.KEY_KOJIAK_NO, getNullToStr((String)parentdata.get("kojiak_no")) } };

		CAANMsg[] eku0081b010cbsMsg1list = callSC(handle, scCall, param, dataMap, eku0081b010IN).getCAANMsgList(EKU0081B010CBSMsg.EKU0081B010CBSMSG1LIST);

		return eku0081b010cbsMsg1list;
	}
	
	/**
	 * サービス契約_工事案件一覧照会を取得。
	 * 
	 * @param kaisennInfoMap
	 * @param searchMsg
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private void setKaisenInfo(Map<String, Object> kaisennInfoMap, CAANMsg searchMsg) throws Exception
	{
		// サービス契約回線内訳番号
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
	
		// 回線場所住所未確定フラグ
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KISN_PLC_AD_MI_FIX_FLG);
	
		// 回線場所電話番号
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KAISEN_PLACE_TELNO);
	
		// 回線場所住所コード
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KAISEN_PLACE_AD_CD);
	
		// 回線場所郵便番号
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KAISEN_PLACE_PCD);
	
		// 回線場所都道府県名
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KAISEN_PLACE_STATE_NM);
	
		// 回線場所市区町村名
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KAISEN_PLACE_CITY_NM);
	
		// 回線場所大字通称名
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KAISEN_PLACE_OAZTSU_NM);
	
		// 回線場所字丁目名
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KAISEN_PLACE_AZCHO_NM);
	
		// 回線場所番地号
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KAISEN_PLACE_BNCHIGO);
	
		// 回線場所住所補記・建物名
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRTTM);
	
		// 回線場所住所補記・部屋番号
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRRM);
	
		// 回線場所番号
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KAISEN_PLACE_NO);
	
		// 回線場所区画整理中フラグ
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KISN_PLC_KKK_SEIRI_CHU_FLG);
		// 回線場所_契約者住所差異フラグ
		setDataMap(kaisennInfoMap, searchMsg, EKK0251A010CBSMsg1List.KAISEN_PLC_KSH_AD_SAI_FLG);
	}

	/* ++++++++++ v5.00.01 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.00 変更開始 ++++++++++ */
	/**
	 * サービス契約回線内訳更新タイムスタンプ取得
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private void setSvcKeiKaisenUcwkUpdateTime(SessionHandle handle, 
													ServiceComponentRequestInvoker scCall, 
													IRequestParameterReadWrite param,
													Map<String, Object> dataMap, 
													Map<String, Object> parentdata, 
													String fixedText) throws Exception
	{
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		workMap.put(KIKIADD_SVC_KEI_KAISEN_UCWK_NO_UPD_DTM, "");
		
		// サービス契約回線内訳一覧照会（現在利用中）データ
		Map<String, Object> ekk0251b003Map = (Map<String, Object>)workMap.get(TEMPLATE_ID_EKK0251B003 + "WORK");
		
		if(ekk0251b003Map == null)
		{
			return;
		}
		
		String svc_kei_kaisen_ucwk_no = getNullToStr((String)ekk0251b003Map.get("svc_kei_kaisen_ucwk_no"));
		
		if("".equals(svc_kei_kaisen_ucwk_no))
		{
			return;
		}
		
		// サービス契約回線内訳一意照会
		CAANMsg[] ekk0251a010cbsMsg1list = execEKK0251A010(handle, scCall, param, dataMap, parentdata, fixedText, svc_kei_kaisen_ucwk_no);
		
		if(ekk0251a010cbsMsg1list == null || ekk0251a010cbsMsg1list.length == 0)
		{
			return;
		}
		
		String timeStump = getNullToStr(ekk0251a010cbsMsg1list[0].getString(EKK0251A010CBSMsg1List.LAST_UPD_DTM));

		workMap.put(KIKIADD_SVC_KEI_KAISEN_UCWK_NO_UPD_DTM, timeStump);
		
	}
	/* ++++++++++ v7.00.00 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.01 追加開始 ++++++++++ */
	/**
	 * 工事受付契機異動区分を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param parentdata
	 * @param fixedText
	 * @throws Exception
	 */
	private void getKojiUkOptntyIdoDiv(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			Map<String, Object> dataMap, Map<String, Object> parentdata, String fixedText) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		String kojiUkOptntyIdoDiv = "";
		/* ++++++++++ v7.00.02 追加開始 ++++++++++ */
		String idoDiv = "";
		if(dataMap.get("ido_div") != null && !"".equals(dataMap.get("ido_div")))
		{
			idoDiv = (String)dataMap.get("ido_div");
			if(IDO_DIV_VALUE_00019.equals(idoDiv))
			{
				// ▼▼▼▼▼OM-2018-0000438 2018/06/29 ADD START▼▼▼▼▼
				workMap.put("KOJI_UK_OPTNTY_IDO_DIV" + "WORK", idoDiv);
				// ▲▲▲▲▲OM-2018-0000438 2018/06/29 ADD END▲▲▲▲▲
				return;
			}
		}
		/* ++++++++++ v7.00.02 追加終了 ++++++++++ */
		
		// 工事案件番号がある場合
		if(!"".equals(getNullToStr((String)parentdata.get("kojiak_no"))))
		{
			// 工事案件一意照会を取得
			CAANMsg[] eku0011a010cbsMsg1list = execEKU0011A010(handle, scCall, param, dataMap, parentdata, fixedText);
			
			if(eku0011a010cbsMsg1list != null && eku0011a010cbsMsg1list.length > 0)
			{
				kojiUkOptntyIdoDiv = eku0011a010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV);
			}
		}
		else
		{
			
			/* ++++++++++ v8.00.00 追加終了 ++++++++++ */
			if(isUnderConstruction2(handle, scCall, param, dataMap, parentdata, fixedText))
			{
				return;
			}
			/* ++++++++++ v8.00.00 追加終了 ++++++++++ */
			
			// サービス契約情報を取得
			Map<Object, Object> ekk0081a010Map = (Map<Object, Object>)workMap.get(TEMPLATE_ID_EKK0081A010 + "WORK");
			
			// サービス契約番号
			String svcKeiNo = (String)dataMap.get("svc_kei_no");
			
			// サービス契約ステータス
			String svcKeiStat = (String)ekk0081a010Map.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
			
			/* ++++++++++ v8.00.02 変更開始 ++++++++++ */
//			// サービス契約ステータスがサービス提供中「100」以外の場合
//			if(!SVC_KEI_STAT_TKCHU.equals(svcKeiStat))
//			{
			// サービス契約ステータスがサービス提供中「100」、休止・中断中「210」または停止中「210」以外の場合
			if(!SVC_KEI_STAT_TKCHU.equals(svcKeiStat) && !SVC_KEI_STAT_KYUSHI.equals(svcKeiStat) && !SVC_KEI_STAT_TEISHI.equals(svcKeiStat))
			{
			/* ++++++++++ v8.00.02 変更終了 ++++++++++ */
				String geneAddDtm = "";
				
				// サービス申込時サービス契約一覧照会を取得
				CAANMsg[] ekk0081a019cbsMsg1list = execEKK0081B019(handle, scCall, param, dataMap, parentdata, fixedText, svcKeiNo);
				
				if(ekk0081a019cbsMsg1list != null && ekk0081a019cbsMsg1list.length > 0)
				{
					geneAddDtm = getNullToStr(ekk0081a019cbsMsg1list[0].getString(EKK0081B019CBSMsg1List.GENE_ADD_DTM));
					
					// サービス申込時サービス契約一覧照会を取得
					CAANMsg[] ekk0081a010cbsMsg1list = execEKK0081A010(handle, scCall, param, dataMap, parentdata, fixedText, svcKeiNo, geneAddDtm);
					
					if(ekk0081a010cbsMsg1list != null && ekk0081a010cbsMsg1list.length > 0)
					{
						kojiUkOptntyIdoDiv =  getNullToStr(ekk0081a010cbsMsg1list[0].getString(EKK0081A010CBSMsg1List.IDO_DIV));
					}
				}
			}
			else
			{
				// 住所変更中住所変更明細一覧照会２を取得
				CAANMsg[] EKK2101B501cbsMsg1list = execEKK2101B501(handle, scCall, param, dataMap, parentdata, fixedText, svcKeiNo);
				
				// 結果がある場合、住所変更中として異動区分「00019」を設定する。
				if(EKK2101B501cbsMsg1list != null && EKK2101B501cbsMsg1list.length > 0)
				{
					kojiUkOptntyIdoDiv =  IDO_DIV_VALUE_00019;
				}
				else
				{
					// 異動予約一覧照会
					CAANMsg[] ekk1681b001cbsMsg1list = execEKK1681B001(handle, scCall, param, dataMap, parentdata, fixedText, svcKeiNo, IDO_RSV_DTL_CD_VALUE_003);
					/* ++++++++++ v7.00.02 修正開始 ++++++++++ */
					boolean isJuhen = false;
					for(CAANMsg ekk1681b001cbsMsg:ekk1681b001cbsMsg1list)
					{
						if(IDO_DIV_VALUE_00019.equals(ekk1681b001cbsMsg.getString(EKK1681B001CBSMsg1List.IDO_DIV)))
						{
							isJuhen = true;
							break;
						}
					}
					// 結果がある場合、コース変更予約として異動区分「00009」を設定する。
//					if(ekk1681b001cbsMsg1list != null && ekk1681b001cbsMsg1list.length > 0)
					if(isJuhen)
					{
						kojiUkOptntyIdoDiv =  IDO_DIV_VALUE_00019;
					}
					else if (ekk1681b001cbsMsg1list != null && ekk1681b001cbsMsg1list.length > 0)
					{
						kojiUkOptntyIdoDiv = IDO_DIV_VALUE_00009;
					}
					/* ++++++++++ v7.00.02 修正終了 ++++++++++ */
				}
			}
		}
			
		// ワーク領域に格納します。
		workMap.put("KOJI_UK_OPTNTY_IDO_DIV" + "WORK", kojiUkOptntyIdoDiv);
	}
	
	/**
	 * 工事案件一意照会を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param parentdata
	 * @param fixedText
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKU0011A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			Map<String, Object> dataMap, Map<String, Object> parentdata, String fixedText) throws Exception
	{
		// ***** EKU0011A010（工事案件一意照会）*****
		Object[][] eku0011a010IN = {
			{ EKU0081B010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0011A010 },
			{ EKU0081B010CBSMsg.FUNC_CODE, "1" },
			{ EKU0081B010CBSMsg.KEY_KOJIAK_NO, getNullToStr((String)parentdata.get("kojiak_no")) }
		};

		CAANMsg[] eku0011a010cbsMsg1list = callSC(handle, scCall, param, dataMap, eku0011a010IN).getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);

		return eku0011a010cbsMsg1list;
	}
	
	/**
	 * サービス申込時サービス契約一覧照会を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param parentdata
	 * @param fixedText
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0081B019(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			Map<String, Object> dataMap, Map<String, Object> parentdata, String fixedText, String svcKeiNo) throws Exception
	{
		// ***** EKK0081B019（サービス申込時サービス契約一覧照会）*****
		Object[][] ekk0081b019IN = {
			{ EKK0081B019CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B019 },
			{ EKK0081B019CBSMsg.FUNC_CODE, "1" },
			{ EKK0081B019CBSMsg.KEY_SVC_KEI_NO, svcKeiNo }
		};

		CAANMsg[] ekk0081b019cbsMsg1list = callSC(handle, scCall, param, dataMap, ekk0081b019IN).getCAANMsgList(EKK0081B019CBSMsg.EKK0081B019CBSMSG1LIST);

		return ekk0081b019cbsMsg1list;
	}
	
	/**
	 * サービス契約一意照会を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param parentdata
	 * @param fixedText
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0081A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			Map<String, Object> dataMap, Map<String, Object> parentdata, String fixedText, String svcKeiNo, String geneAddDtm) throws Exception
	{
		// ***** EKK0081A010（サービス契約一意照会）*****
		Object[][] ekk0081a010IN = {
			{EKK0081A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0081A010},
			{EKK0081A010CBSMsg.FUNC_CODE,        "1"},
			{EKK0081A010CBSMsg.KEY_SVC_KEI_NO,   svcKeiNo},
			{EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, geneAddDtm},
		};
		
		CAANMsg[] ekk0081a010cbsMsg1list = callSC(handle, scCall, param, dataMap, ekk0081a010IN).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		return ekk0081a010cbsMsg1list;
	}
	
	/**
	 * 住所変更中住所変更明細一覧照会２を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param parentdata
	 * @param fixedText
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK2101B501(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			Map<String, Object> dataMap, Map<String, Object> parentdata, String fixedText, String svcKeiNo) throws Exception
	{
		// ***** EKK2101B501（住所変更中住所変更明細一覧照会２）*****
		Object[][] EKK2101B501IN = {
			{ EKK2101B501CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2101B501 },
			{ EKK2101B501CBSMsg.FUNC_CODE, "1" },
			{ EKK2101B501CBSMsg.KEY_SVC_KEI_NO, svcKeiNo }
		};

		CAANMsg[] EKK2101B501cbsMsg1list = callSC(handle, scCall, param, dataMap, EKK2101B501IN).getCAANMsgList(EKK2101B501CBSMsg.EKK2101B501CBSMSG1LIST);

		return EKK2101B501cbsMsg1list;
	}
	
	/**
	 * 異動予約一覧照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK1681B001(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			Map<String, Object> dataMap, Map<String, Object> parentdata, String fixedText, String svcKeiNo, String idoRsvDtlCd) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);

		// ***** EKK1681B001（異動予約一覧照会）******
		Object[][] ekk1681b001IN = {
				{ EKK1681B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1681B001 },
				{ EKK1681B001CBSMsg.FUNC_CODE, "1" }, // "1"固定
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, idoRsvDtlCd }, // コース変更
				{ EKK1681B001CBSMsg.KEY_RSV_APLY_YMD, (String)ccMsg.get("stdardymd") },
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, IDO_RSV_STAT_CD_VALUE_00 + "," + IDO_RSV_STAT_CD_VALUE_03 }, // 未反映、予約手続中
				{ EKK1681B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo } };

		// 異動予約一覧照会サービスインターフェイスの実行
		CAANMsg[] ekk1681b001cbsMsg1list = callSC(handle, scCall, param, dataMap, ekk1681b001IN).getCAANMsgList(EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
		
		return ekk1681b001cbsMsg1list;
	}
	/* ++++++++++ v7.00.01 追加開始 ++++++++++ */
	
	/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
	/* ++++++++++ v8.00.01 変更開始 ++++++++++ */
//	/**
//	 * 工事中判断メソッド(機器追加)<br>
//	 * <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param temporaryData
//	 * @return boolean true:工事中あり false:工事中なし
//	 * @throws Exception
//	 */
//	private boolean isUnderConstruction2(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
//			Map<String, Object> dataMap, Map<String, Object> parentdata, String fixedText) throws Exception
//	{
//		
//		/** 工事中工事案件ステータス（受付済（130）依頼済（140）宅内調査完了済（150）
//		 工事会社決定済（160）宅内機器予定登録済（170）仮鍵開発行依頼済（180））*/
//		String KOJICHU_KOJIAK_STAT = "130,140,150,160,170,180";
//		
//		// 工事案件一覧照会（複合検索）の取得
//		CAANMsg[] eku0011b030cbsMsg1list = execEKU0011B030(handle, scCall, param, dataMap, fixedText, KOJICHU_KOJIAK_STAT, "");
//
//		// 工事案件一覧照会（複合検索）実行結果がない場合、工事中なしにします。
//		if(eku0011b030cbsMsg1list == null || eku0011b030cbsMsg1list.length == 0)
//		{
//			return false;
//		}
//		
//		// 機器画面で工事連携できる工事案件種別コードを取得します。
//		List<String> kikiAddKjakSbtList = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMap, KK_KIKI_ADD_KJAK_SBT)).split(","));
//		
//		// 工事案件種別コードが001,009,012,013,003の場合のみ処理します。
//		if(!kikiAddKjakSbtList.contains(getNullToStr(eku0011b030cbsMsg1list[0].getString(EKU0011B030CBSMsg1List.KOJIAK_SBT_CD))))
//		{
//			return false;
//		}
//		
//		return true;
//	}
	/**
	 * 工事中判断メソッド(機器追加)<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean true:工事中あり false:工事中なし
	 * @throws Exception
	 */
	private boolean isUnderConstruction2(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			Map<String, Object> dataMap, Map<String, Object> parentdata, String fixedText) throws Exception
	{
		
		/** 工事中工事案件ステータス（受付済（130）依頼済（140）宅内調査完了済（150）
		 工事会社決定済（160）宅内機器予定登録済（170）仮鍵開発行依頼済（180））*/
		String KOJICHU_KOJIAK_STAT = "130,140,150,160,170,180";
		
		String KOJIAK_SBT_CD = getBuisinessParameter(handle, scCall, param, dataMap, KK_KIKI_ADD_KJAK_SBT);
		
		// 工事案件一覧照会（複合検索）の取得
		CAANMsg[] eku0011b030cbsMsg1list = execEKU0011B030(handle, scCall, param, dataMap, fixedText, KOJICHU_KOJIAK_STAT, KOJIAK_SBT_CD);

		// 工事案件一覧照会（複合検索）実行結果がない場合、工事中なしにします。
		if(eku0011b030cbsMsg1list == null || eku0011b030cbsMsg1list.length == 0)
		{
			return false;
		}
		
		return true;
	}
	/* ++++++++++ v8.00.01 変更終了 ++++++++++ */
	
	/**
	 * 工事案件一覧照会（複合検索）メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kojiakStat
	 * @param kojiakSbtCd
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKU0011B030(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			Map<String, Object> dataMap, String fixedText, String kojiakStat, String kojiakSbtCd) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);

		// ***** EKU0011B030（工事案件一覧照会（複合検索））******
		Object[][] eku0011b030IN = {
				{ EKU0011B030CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0011B030 },
				{ EKU0011B030CBSMsg.FUNC_CODE, "1" },
				{ EKU0011B030CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") },
				{ EKU0011B030CBSMsg.KEY_KOJIAK_STAT, kojiakStat },
				{ EKU0011B030CBSMsg.KEY_KOJIAK_SBT_CD, kojiakSbtCd }
		};

		// 工事案件一覧照会（複合検索）サービスインターフェイスの実行
		CAANMsg[] eku0011b030cbsMsg1list = callSC(handle, scCall, param, dataMap, eku0011b030IN).getCAANMsgList(EKU0011B030CBSMsg.EKU0011B030CBSMSG1LIST);

		return eku0011b030cbsMsg1list;
	}
	/* ++++++++++ v8.00.00 追加終了 ++++++++++ */
}
