/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUEoMusenRTMskmShokaiCC
*   ソースファイル名：JFUEoMusenRTMskmShokaiCC.java
*   作成者          ：富士通
*   日付            ：2021年10月06日
*＜機能概要＞
*   eo光無線ルーター申込照会コンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*  v55.00.00    2021/10/06   FJ) 西川  新規作成【ANK-4146-00-00】【eo定期】多機能ルーター枯渇対応 STEP2
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.printDebugLog;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.Map.Entry;

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.exception.SCCallException;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JFUCommonUtil;
import eo.common.util.JPCDateUtil;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B520CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B520CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B535CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B535CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0241B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0241B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B029CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B029CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B512CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0591A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0591B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0591B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0601B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0721A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0791A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0791A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0801A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0891A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0891A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0891B502CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0891B502CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1621A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1621A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1681B502CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1681B502CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1861B501CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2091B501CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2101B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2101B501CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2101B501CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2811B503CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2811B503CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0011B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011B090CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011B090CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0141B020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0141B020CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg;

/**
 * eo光無線ルーター申込照会コンポーネント部品
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUEoMusenRtMskmShokaiCC extends JFUBaseCC
{
	/* ■□ コース変更情報 ■□ */
	/** テンプレートID(コース変更情報) */
	private static final String TEMP_ID_EKK1681B502 = "EKK1681B502";
	/** テンプレートID(コース変更情報明細) */
	private static final String TEMP_DTL_EKK1681B502 = EKK1681B502CBSMsg.EKK1681B502CBSMSG1LIST;
	/** IN項目リスト(コース変更情報) */
	private static final List<String> IN_COLUMN_LIST_EKK1681B502 = Arrays.asList(EKK1681B502CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目 */
	private static final String ERR_COL_EKK1681B502 = EKK1681B502CBSMsg.KEY_SVC_KEI_NO_ERR;

	/* ■□ 住所変更情報 ■□ */
	/** テンプレートID(住所変更情報) */
	private static final String TEMP_ID_EKK0081B535 = "EKK0081B535";
	/** テンプレートID(コース変更情報明細) */
	private static final String TEMP_DTL_EKK0081B535 = EKK0081B535CBSMsg.EKK0081B535CBSMSG1LIST;
	/** IN項目リスト(住所変更情報) */
	private static final List<String> IN_COLUMN_LIST_EKK0081B535 = Arrays.asList(EKK0081B535CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目 */
	private static final String ERR_COL_EKK0081B535 = EKK0081B535CBSMsg.KEY_SVC_KEI_NO_ERR;

	/* ■□ 工事案件一覧照会(サービス契約番号) ■□ */
	/** テンプレートID(工事案件一覧照会(サービス契約番号)) */
	private static final String TEMP_ID_EKU0011B090 = "EKU0011B090";
	/** テンプレートID(工事案件一覧照会(サービス契約番号)) */
	private static final String TEMP_DTL_EKU0011B090 = EKU0011B090CBSMsg.EKU0011B090CBSMSG1LIST;
	/** IN項目リスト(工事案件一覧照会(サービス契約番号)) */
	private static final List<String> IN_COLUMN_LIST_EKU0011B090 = Arrays.asList(EKU0011B090CBSMsg.KEY_SVC_KEI_NO, EKU0011B090CBSMsg.KEY_KOJIAK_SBT_CD);
	/** 関連チェックエラー項目 */
	private static final String ERR_COL_EKU0011B090 = EKU0011B090CBSMsg.KEY_SVC_KEI_NO_ERR;

	/* ■□ 工事案件対象宅内機器一覧照会２ ■□ */
	/** テンプレートID(工事案件一意照会) */
	private static final String TEMPLATE_ID_EKU0141B020 = "EKU0141B020";
	/** テンプレートID(工事案件一意照会明細) */
	private static final String TEMPLATE_ID_EKU0141B020_DETAIL = EKU0141B020CBSMsg.EKU0141B020CBSMSG1LIST;
	/** IN項目リスト(工事案件一意照会) */
	private static final List<String> IN_COLUMN_LIST_EKU0141B020 =
			Arrays.asList(EKU0141B020CBSMsg.KEY_KOJIAK_NO, EKU0141B020CBSMsg.SEARCH_TYPE, EKU0141B020CBSMsg.MAX_SEARCH_NUM, EKU0141B020CBSMsg.TOTAL_PAGE_NUM);
	/** 関連チェックエラー項目(工事案件一意照会) */
	private static final String ERROR_COLUMN_EKU0141B020 = EKU0141B020CBSMsg.KEY_KOJIAK_NO_ERR;
	/** SC実行結果取得キー(工事案件一意照会) */
	private static final String TEMP_TEMPLATE_KEY_EKU0141B020 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKU0141B020 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 機器提供サービス契約一覧照会（機器変更番号）SC ■□ */
	/** テンプレートID(機器提供サービス契約一覧照会（機器変更番号）) */
	private static final String TEMPLATE_ID_EKK0341B029 = "EKK0341B029";
	/** テンプレートID(機器提供サービス契約一覧照会（機器変更番号）明細) */
	private static final String TEMPLATE_ID_EKK0341B029_DETAIL = EKK0341B029CBSMsg.EKK0341B029CBSMSG1LIST;
	/** IN項目リスト(機器提供サービス契約一覧照会（機器変更番号）) */
	private static final List<String> IN_COLUMN_LIST_EKK0341B029 = Arrays.asList(EKK0341B029CBSMsg.KEY_KKTK_SVC_KEI_NO, EKK0341B029CBSMsg.KEY_KIKI_CHG_NO);
	/** 関連チェックエラー項目(機器提供サービス契約一覧照会（機器変更番号）) */
	private static final String ERROR_COLUMN_EKK0341B029 = EKK0341B029CBSMsg.KEY_KKTK_SVC_KEI_NO;
	/** SC実行結果取得キー(機器提供サービス契約一覧照会（機器変更番号）) */
	private static final String TEMP_TEMPLATE_KEY_EKK0341B029 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0341B029 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 機器提供サービス契約一覧照会（各種通信機器情報取得）SC ■□ */
	/** テンプレートID(機器提供サービス契約一覧照会（各種通信機器情報取得）) */
	private static final String TEMPLATE_ID_KKTK_SVKEI_LIST_SHOKAI = "EKK0341B512";
	/** テンプレートID(明細)(機器提供サービス契約一覧照会（各種通信機器情報取得）) */
	private static final String TEMPLATE_ID_DETAIL_KKTK_SVKEI_LIST_SHOKAI = "EKK0341B512CBSMsg1List";
	/** IN項目リスト(機器提供サービス契約一覧照会（各種通信機器情報取得）) */
	private static final List<String> IN_COLUMN_LIST_KKTK_SVKEI_LIST_SHOKAI =
			Arrays.asList(EKK0341B512CBSMsg.KEY_SVC_KEI_NO, EKK0341B512CBSMsg.MAX_SEARCH_NUM, EKK0341B512CBSMsg.DISPLAY_NUM, EKK0341B512CBSMsg.DISPLAY_PAGE_NUM, EKK0341B512CBSMsg.SEARCH_TYPE,
					EKK0341B512CBSMsg.TOTAL_PAGE_NUM);

	/* ■□ 工事案件一覧照会SC ■□ */
	/** テンプレートID(工事案件一覧照会) */
	private static final String TEMPLATE_ID_KJAK_LIST_SHOKAI = "EKU0011B010";
	/** テンプレートID(明細)(工事案件一覧照会) */
	private static final String TEMPLATE_ID_DETAIL_KJAK_LIST_SHOKAI = "EKU0011B010CBSMsg1List";
	/** IN項目リスト(工事案件一覧照会) */
	private static final List<String> IN_COLUMN_LIST_KJAK_LIST_SHOKAI =
			Arrays.asList(EKU0011B010CBSMsg.KEY_KOJIAK_NO_SVC_KEI_NO, EKU0011B010CBSMsg.MAX_SEARCH_NUM, EKU0011B010CBSMsg.DISPLAY_NUM, EKU0011B010CBSMsg.DISPLAY_PAGE_NUM,
					EKU0011B010CBSMsg.SEARCH_TYPE, EKU0011B010CBSMsg.TOTAL_PAGE_NUM);

	/* ■□ 住所変更中住所変更明細一覧照会２SC ■□ */
	/** テンプレートID(住所変更中住所変更明細一覧照会２) */
	private static final String TEMPLATE_ID_ADCHG_NOW_ADCHG_LIST_SHOKAI = "EKK2101B501";
	/** テンプレートID(明細)(住所変更中住所変更明細一覧照会２) */
	private static final String TEMPLATE_ID_DETAIL_ADCHG_NOW_ADCHG_LIST_SHOKAI = "EKK2101B501CBSMsg1List";
	/** IN項目リスト(住所変更中住所変更明細一覧照会２) */
	private static final List<String> IN_COLUMN_LIST_ADCHG_NOW_ADCHG_LIST_SHOKAI =
			Arrays.asList(EKK2101B501CBSMsg.KEY_SVC_KEI_NO, EKK2101B501CBSMsg.MAX_SEARCH_NUM, EKK2101B501CBSMsg.DISPLAY_NUM, EKK2101B501CBSMsg.DISPLAY_PAGE_NUM, EKK2101B501CBSMsg.SEARCH_TYPE,
					EKK2091B501CBSMsg.TOTAL_PAGE_NUM);
	/** SC実行結果取得キー(住所変更中住所変更明細一覧照会２) */
	private static final String TEMP_TEMPLATE_KEY_EKK2101B501 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_ADCHG_NOW_ADCHG_LIST_SHOKAI + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 住所変更明細一覧照会SC ■□ */
	/** テンプレートID(住所変更明細一覧照会SC) */
	private static final String TEMPLATE_ID_ADCHG_DTL_LIST_SHOKAI = "EKK2101B001";
	/** テンプレートID(明細)(住所変更明細一覧照会SC) */
	private static final String TEMPLATE_ID_DETAIL_ADCHG_DTL_LIST_SHOKAI = "EKK2101B001CBSMsg1List";
	/** IN項目リスト(住所変更明細一覧照会SC) */
	private static final List<String> IN_COLUMN_LIST_ADCHG_DTL_LIST_SHOKAI =
			Arrays.asList(EKK2101B001CBSMsg.KEY_ADCHG_NO, EKK2101B001CBSMsg.KEY_ADCHG_DTL_SBT_CD, EKK2101B001CBSMsg.MAX_SEARCH_NUM, EKK2101B001CBSMsg.DISPLAY_NUM, EKK2101B001CBSMsg.DISPLAY_PAGE_NUM,
					EKK2101B001CBSMsg.SEARCH_TYPE, EKK2101B001CBSMsg.TOTAL_PAGE_NUM);

	/* ■□ サービス契約一覧照会（各種通信機器情報取得）SC ■□ */
	/** テンプレートID(サービス契約一覧照会（各種通信機器情報取得）) */
	private static final String TEMPLATE_ID_SVKEI_LIST_SHOKAI = "EKK0081B520";
	/** テンプレートID(明細)(サービス契約一覧照会（各種通信機器情報取得）) */
	private static final String TEMPLATE_ID_DETAIL_SVKEI_LIST_SHOKAI = "EKK0081B520CBSMsg1List";
	/** IN項目リスト(サービス契約一覧照会（各種通信機器情報取得）) */
	private static final List<String> IN_COLUMN_LIST_SVKEI_LIST_SHOKAI =
			Arrays.asList(EKK0081B520CBSMsg.KEY_SVC_KEI_NO, EKK0081B520CBSMsg.MAX_SEARCH_NUM, EKK0081B520CBSMsg.DISPLAY_NUM, EKK0081B520CBSMsg.DISPLAY_PAGE_NUM, EKK0081B520CBSMsg.SEARCH_TYPE,
					EKK0081B520CBSMsg.TOTAL_PAGE_NUM);

	/* ■□ 提供方式契約一意照会SC ■□ */
	/** テンプレートID(提供方式契約一意照会) */
	private static final String TEMPLATE_ID_TK_HOSHIKI_KEI = "EKK0891A010";
	/** テンプレートID(提供方式契約一意照会明細) */
	private static final String TEMPLATE_ID_TK_HOSHIKI_KEI_DETAIL = EKK0891A010CBSMsg.EKK0891A010CBSMSG1LIST;
	/** IN項目リスト(提供方式契約一意照会) */
	private static final List<String> IN_COLUMN_LIST_TK_HOSHIKI_KEI = Arrays.asList(EKK0891A010CBSMsg.KEY_TK_HOSHIKI_KEI_NO);
	/** 関連チェックエラー項目(提供方式契約一意照会) */
	private static final String ERROR_COLUMN_TK_HOSHIKI_KEI = EKK0891A010CBSMsg.KEY_TK_HOSHIKI_KEI_NO_ERR;
	/** SC実行結果取得キー(提供方式契約一意照会) */
	private static final String TEMP_TEMPLATE_KEY_TK_HOSHIKI_KEI = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_TK_HOSHIKI_KEI + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 宅内機器型式／付属品型式一覧照会（宅内機器型式一意照会）SC ■□ */
	/** テンプレートID(宅内機器型式／付属品型式一覧照会（宅内機器型式一意照会）) */
	private static final String TEMPLATE_ID_TKKIKI_HUZOKUHIN_MDL_LIST_SHOKAI = "EZM0411A010";
	/** テンプレートID(明細)(宅内機器型式／付属品型式一覧照会（宅内機器型式一意照会）) */
	private static final String TEMPLATE_ID_DETAIL_TKKIKI_HUZOKUHIN_MDL_LIST_SHOKAI = "EZM0411A010CBSMsg1List";
	/** IN項目リスト(宅内機器型式／付属品型式一覧照会（宅内機器型式一意照会）) */
	private static final List<String> IN_COLUMN_LIST_TKKIKI_HUZOKUHIN_MDL_LIST_SHOKAI = Arrays.asList(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD);

	/* ■□ 機器型式対象料金コース一意照会SC ■□ */
	/** テンプレートID(機器型式対象料金コース一意照会) */
	private static final String TEMPLATE_ID_KIKIMDL_TG_PCRS_SHOKAI = "EKK1621A010";
	/** テンプレートID(明細)(機器型式対象料金コース一意照会) */
	private static final String TEMPLATE_ID_DETAIL_KIKIMDL_TG_PCRS_SHOKAI = "EKK1621A010CBSMsg1List";
	/** IN項目リスト(機器型式対象料金コース一意照会) */
	private static final List<String> IN_COLUMN_LIST_KIKIMDL_TG_PCRS_SHOKAI =
			Arrays.asList(EKK1621A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, EKK1621A010CBSMsg.KEY_KKTK_SBT_CD, EKK1621A010CBSMsg.KEY_HAMBAI_SBT_CD);

	/* ■□ 料金プラン一覧照会SC ■□ */
	/** テンプレートID(料金プラン一覧照会) */
	private static final String TEMPLATE_ID_PPLAN_LIST_SHOKAI = "EKK0591B003";
	/** テンプレートID(明細)(料金プラン一覧照会) */
	private static final String TEMPLATE_ID_DETAIL_PPLAN_LIST_SHOKAI = "EKK0591B003CBSMsg1List";
	/** IN項目リスト(料金プラン一覧照会) */
	private static final List<String> IN_COLUMN_LIST_PPLAN_LIST_SHOKAI = Arrays.asList(EKK0591B003CBSMsg.KEY_PCRS_CD);

	/* ■□ 料金プラン固定単価（オプション申込料金）一覧照会SC ■□ */
	/** テンプレートID(料金プラン固定単価（オプション申込料金）一覧照会) */
	private static final String TEMPLATE_ID_PPLAN_KTTANKA_OP_LIST_SHOKAI = "EKK0601B001";
	/** テンプレートID(明細)(料金プラン固定単価（オプション申込料金）一覧照会) */
	private static final String TEMPLATE_ID_DETAIL_PPLAN_KTTANKA_OP_LIST_SHOKAI = "EKK0601B001CBSMsg1List";
	/** IN項目リスト(料金プラン固定単価（オプション申込料金）一覧照会) */
	private static final List<String> IN_COLUMN_LIST_PPLAN_KTTANKA_OP_LIST_SHOKAI =
			Arrays.asList(EKK0601B001CBSMsg.KEY_PCRS_CD, EKK0601B001CBSMsg.KEY_PPLAN_CD, EKK0601B001CBSMsg.MAX_SEARCH_NUM, EKK0601B001CBSMsg.DISPLAY_NUM, EKK0601B001CBSMsg.DISPLAY_PAGE_NUM,
					EKK0601B001CBSMsg.SEARCH_TYPE, EKK0601B001CBSMsg.TOTAL_PAGE_NUM);

	/* ■□ 料金コース一意照会SC ■□ */
	/** テンプレートID(料金コース一意照会) */
	private static final String TEMPLATE_ID_PCRS_SHOKAI = "EKK0791A010";
	/** テンプレートID(明細)(料金コース一意照会) */
	private static final String TEMPLATE_ID_DETAIL_PCRS_SHOKAI = "EKK0791A010CBSMsg1List";
	/** IN項目リスト(料金コース一意照会) */
	private static final List<String> IN_COLUMN_LIST_PCRS_SHOKAI = Arrays.asList(EKK0791A010CBSMsg.KEY_PCRS_CD, EKK0791A010CBSMsg.KEY_GENE_ADD_DTM, EKK0791A010CBSMsg.KEY_RSV_APLY_YMD);

	/* ■□ 料金コース_機器提供サービス一意照会SC ■□ マスタ */
	/** テンプレートID(料金コース_機器提供サービス一意照会) */
	private static final String TEMPLATE_ID_PCRS_KKTK_SVC_SHOKAI = "EKK0801A010";
	/** テンプレートID(明細)(料金コース_機器提供サービス一意照会) */
	private static final String TEMPLATE_ID_DETAIL_PCRS_KKTK_SVC_SHOKAI = "EKK0801A010CBSMsg1List";
	/** IN項目リスト(料金コース_機器提供サービス一意照会) */
	private static final List<String> IN_COLUMN_LIST_PCRS_KKTK_SVC_SHOKAI =
			Arrays.asList(EKK0801A010CBSMsg.KEY_PCRS_CD, EKK0801A010CBSMsg.KEY_KKTK_SVC_CD, EKK0801A010CBSMsg.KEY_GENE_ADD_DTM, EKK0801A010CBSMsg.KEY_RSV_APLY_YMD);

	/* ■□ 提供方式契約一覧照会(サービス契約番号) ■□ */
	/** テンプレートID(提供方式契約一覧照会(サービス契約番号)) */
	private static final String TEMPLATE_ID_TK_HSK_KEI = "EKK0891B502";
	/** テンプレートID(提供方式契約一覧照会(サービス契約番号)明細) */
	private static final String TEMPLATE_ID_TK_HSK_KEI_DETAIL = EKK0891B502CBSMsg.EKK0891B502CBSMSG1LIST;
	/** IN項目リスト(提供方式契約一覧照会(サービス契約番号)) */
	private static final List<String> IN_COLUMN_LIST_TK_HSK_KEI = Arrays.asList(EKK0891B502CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目(提供方式契約一覧照会(サービス契約番号)) */
	private static final String ERROR_COLUMN_TK_HSK_KEI = EKK0891B502CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(提供方式契約一覧照会(サービス契約番号)) */
	private static final String TEMP_TEMPLATE_KEY_TK_HSK_KEI = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_TK_HSK_KEI + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 機器オプションサービス契約一覧照会（フロント）SC ■□ */
	/** テンプレートID(機器オプションサービス契約一覧照会（フロント）) */
	private static final String TEMPLATE_ID_KKOP_SVKEI_LIST_SHOKAI = "EKK2811B503";
	/** テンプレートID(明細)(機器オプションサービス契約一覧照会（フロント）) */
	private static final String TEMPLATE_ID_DETAIL_KKOP_SVKEI_LIST_SHOKAI = EKK2811B503CBSMsg.EKK2811B503CBSMSG1LIST;
	/** IN項目リスト(機器オプションサービス契約一覧照会（フロント）) */
	private static final List<String> IN_COLUMN_LIST_KKOP_SVKEI_LIST_SHOKAI =
			Arrays.asList(EKK2811B503CBSMsg.KEY_SYSID, EKK2811B503CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, EKK2811B503CBSMsg.KEY_TAKNKIKI_SBT_CD);
	/** 関連チェックエラー項目(機器オプションサービス契約一覧照会（フロント）) */
	private static final String ERROR_COLUMN_KKOP_SVKEI_LIST_SHOKAI = EKK2811B503CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR;
	/** SC実行結果取得キー(機器オプションサービス契約一覧照会（フロント）) */
	private static final String TEMP_TEMPLATE_KEY_KKOP_SVKEI_LIST_SHOKAI = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_KKOP_SVKEI_LIST_SHOKAI + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0341B002_機器提供サービス契約一覧照会（サービス契約番号）SC ■□ */
	/** テンプレートID(機器提供サービス契約一覧照会（サービス契約番号）) */
	private static final String TEMPLATE_ID_EKK0341B002 = "EKK0341B002";
	/** テンプレートID(機器提供サービス契約一覧照会（サービス契約番号）明細) */
	private static final String TEMPLATE_ID_EKK0341B002_DETAIL = EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST;
	/** IN項目リスト(機器提供サービス契約一覧照会（サービス契約番号）) */
	private static final List<String> ITEM_NM_LIST_EKK0341B002 =
			Arrays.asList(EKK0341B002CBSMsg.KEY_SVC_KEI_NO, EKK0341B002CBSMsg.KEY_KKTK_SVC_CD, EKK0341B002CBSMsg.KEY_KKTK_SVC_KEI_NO, EKK0341B002CBSMsg.KEY_SORT_KBN);
	/** 関連チェックエラー項目(機器提供サービス契約一覧照会（サービス契約番号）) */
	private static final String ERROR_COLUMN_EKK0341B002 = EKK0341B002CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(機器提供サービス契約一覧照会（サービス契約番号）) */
	private static final String TEMP_TEMPLATE_KEY_EKK0341B002 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0341B002 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ サービス契約一意照会SC ■□ */
	/** テンプレートID(サービス契約一意照会) */
	private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";
	/** テンプレートID(サービス契約一意照会明細) */
	private static final String TEMPLATE_ID_EKK0081A010_DETAIL = EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST;
	/** IN項目リスト(サービス契約一意照会) */
	private static final List<String> IN_COLUMN_LIST_EKK0081A010 = Arrays.asList(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, EKK0081A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(サービス契約一意照会) */
	private static final String ERROR_COLUMN_EKK0081A010 = EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(サービス契約一意照会) */
	private static final String TEMP_TEMPLATE_KEY_EKK0081A010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0081A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0721A010_一時支払料金一意照会SC ■□ */
	/** テンプレートID(宅内機器型式一意照会) */
	private static final String TEMPLATE_ID_EKK0721A010 = "EKK0721A010";
	/** テンプレートID(宅内機器型式一意照会明細) */
	private static final String TEMPLATE_ID_EKK0721A010_DETAIL = EKK0721A010CBSMsg.EKK0721A010CBSMSG1LIST;
	/** IN項目リスト(宅内機器型式一意照会) */
	private static final List<String> ITEM_NM_LIST_EKK0721A010 = Arrays.asList(EKK0721A010CBSMsg.KEY_TMP_PAY_PRC_NO);

	/* ■□ EKK0241B001_サービス契約回線内訳一覧照会SC ■□ */
	/** テンプレートID(EKK0241B001_サービス契約回線内訳一覧照会)) */
	private static final String TEMPLATE_ID_EKK0241B001 = "EKK0241B001";
	/** テンプレートID(明細)(EKK0241B001_サービス契約回線内訳一覧照会)) */
	private static final String TEMPLATE_ID_DETAIL_EKK0241B001 = EKK0241B001CBSMsg.EKK0241B001CBSMSG1LIST;
	/** IN項目リスト(EKK0241B001_サービス契約回線内訳一覧照会)) */
	private static final List<String> IN_COLUMN_LIST_EKK0241B001 = Arrays.asList(EKK0241B001CBSMsg.KEY_SVC_KEI_NO);
	/** SC実行結果取得キー(EKK0241B001_サービス契約回線内訳一覧照会)) */
	private static final String TEMP_TEMPLATE_KEY_EKK0241B001 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0241B001 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 機器オプションサービス契約一覧照会（フロント）SC ■□ */
	/** テンプレートID(機器オプションサービス契約一覧照会（フロント）) */
	private static final String TEMPLATE_ID_EKK2811B503 = "EKK2811B503";
	/** テンプレートID(明細)(機器オプションサービス契約一覧照会（フロント）) */
	private static final String TEMPLATE_ID_DETAIL_EKK2811B503 = EKK2811B503CBSMsg.EKK2811B503CBSMSG1LIST;
	/** IN項目リスト(機器オプションサービス契約一覧照会（フロント）) */
	private static final List<String> IN_COLUMN_LIST_EKK2811B503 = Arrays.asList(EKK2811B503CBSMsg.KEY_SYSID, EKK2811B503CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, EKK2811B503CBSMsg.KEY_TAKNKIKI_SBT_CD);
	/** SC実行結果取得キー(機器オプションサービス契約一覧照会（フロント）) */
	private static final String TEMP_TEMPLATE_KEY_EKK2811B503 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK2811B503 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	// ■OUT項目ID
	/** OUT項目ID：事務手数料判定結果 0:無、1:有 */
	private static final String OUT_JMTE_UM = "jmte_um";
	/** OUT項目ID：工事案件番号 */
	private static final String OUT_KOJIAK_NO = "kojiak_no";
	/** OUT項目ID：工事案件種別コード */
	private static final String OUT_KOJIAK_SBT_CD = "kojiak_sbt_cd";
	/** OUT項目ID：工事受付契機異動区分 */
	private static final String OUT_KOJI_UK_OPTNTY_IDO_DIV = "koji_uk_optnty_ido_div";
	/** OUT項目ID：工事案件ステータス */
	private static final String OUT_KOJIAK_STAT = "kojiak_stat";
	/** OUT項目ID：配送作成済フラグ */
	private static final String OUT_HAISO_SAKSEI_ZUMI_FLG = "haiso_saksei_zumi_flg";
	/** OUT項目ID：配送方法コード */
	private static final String OUT_HAISO_WAY_CD = "haiso_way_cd";

	/** なし "0" */
	private static final String FLG_OFF = "0";

	/** 工事案件種別 (001：新設) */
	private static final List<String> KOJI_SINSETSU = Arrays.asList(JFUStrConst.CD00577_001);

	/** 工事案件種別 (新設以外) */
	private static final List<String> KOJI_SONOTA = Arrays.asList(JFUStrConst.CD00577_003, JFUStrConst.CD00577_009, JFUStrConst.CD00577_012);

	/** 工事案件ステータス (130：受付済、140：依頼済、150：宅内調査完了済) */
	private static final List<String> KOJI_STA_KOJIHAISO = Arrays.asList(JFUStrConst.CD00474_130, JFUStrConst.CD00474_140, JFUStrConst.CD00474_150);

	/** 工事受付契機異動区分 (00001：新規申込、00002：サービス追加、00019：住所変更・登録) */
	private static final List<String> KOJI_UK_OPTNTY_IDO = Arrays.asList(JFUStrConst.KU0011_KJ_OP_IDO_DIV_00001, JFUStrConst.KU0011_KJ_OP_IDO_DIV_00002, JFUStrConst.KU0011_KJ_OP_IDO_DIV_00019);

	/** 保有ルーターコード */
	private static final String MAP_KEY_HOYU_ROUTER_CD = "hoyu_router_cd";
	/** 宅内機器種別コード */
	private static final String MAP_KEY_TAKNKIKI_SBT_CD = "taknkiki_sbt_cd";
	/** 料金コースコード */
	private static final String MAP_KEY_PCRS_CD = "pcrs_cd";
	/** 料金グループコード */
	private static final String MAP_KEY_KEY_PRC_GRP_CD = "key_prc_grp_cd";
	/** 一時支払料金番号（事務手数料（eo光無線ルーター（新無線ルーター10ギガ））） */
	private static final String MAP_KEY_TMP_PAY_PRC_NO = "key_tmp_pay_prc_no";
	/** SYSID */
	private static final String MAP_KEY_SYSID = "sys_id";
	/** サービス契約回線内訳番号 */
	private static final String MAP_KEY_SVC_KEI_KAISEN_UCWK_NO = "svc_kei_kaisen_ucwk_no";

	/** 提供方式契約番号 */
	private static final String MAP_TK_HOSHIKI_KEI_NO = "tk_hoshiki_kei_no";
	/** 提供方式コード */
	private static final String MAP_TK_HOSHIKI_CD = "tk_hoshiki_cd";
	/** 提供方式パターンコード */
	private static final String MAP_TK_HOSHIKI_PATTERN_CD = "tk_hoshiki_pattern_cd";
	/** 棟内速度コード */
	private static final String MAP_TONAI_SPEED_CD = "tonai_speed_cd";

	/** 宅内型式コード */
	private static final String MAP_KEY_TAKNKIKI_MODEL_CD = "key_taknkiki_model_cd";

	/** エラーメッセージ：■ */
	private static final String ERR_MSG_SQUARE = " ■■■";
	/** エラーメッセージ4 */
	private static final String ERR_MSG_4 = "■■■ マンションの詳細チェックエラー マンション通信設備コード:";
	/** エラーメッセージ(IP払出コード) */
	private static final String ERR_MSG_IP_HRADSI_CD = " IP払出コード:";
	/** エラー項目キー(利用サービスエラー) */
	private static final String ENABLED_SVC_ERR = JFUStrConst.RELATION_CHECK_ITEM_SVC_KEI + "_err";

	/** ＫＥＹ＿サービス契約番号 */
	protected static final String MAP_KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** ＫＥＹ＿宅内機器型式コード */
	protected static final String TAKNKIKI_MODEL_CD = "key_taknkiki_model_cd";

	/** 機器提供種別コード */
	protected static final String KKTK_SBT_CD = "key_kktk_sbt_cd";

	/** 料金プラン固定単価（オプション申込料金）一覧明細 */
	protected static final String PPLAN_KTTANKA_LIST = "pplan_kttanka_list";
	/** 料金コース_機器提供サービス一意照会明細 */
	protected static final String PCRS_KKTKSVC_LIST = "pcrs_kktksvc_list";

	/** 標準型式フラグ 1:標準*/
	protected static final String STDARD_MODEL_FLG_1 = "1";

	/** 宅内機器型式抽出条件種別コード 料金グループ*/
	protected static final String TKMDL_CHSHT_JOKEN_SBT_CD_10 = "10";

	/** 宅内機器型式抽出条件種別コード 料金コース*/
	protected static final String TKMDL_CHSHT_JOKEN_SBT_CD_20 = "20";

	/** リスト先頭*/
	protected static final int LIST_TOP = 0;

	/** 無効な機器提供サービス契約ステータス */
	private static final List<String> KKTK_SVC_KEI_STAT_MUKO = Arrays.asList(JFUStrConst.CD00056_910, JFUStrConst.CD00056_920);

	/** チェック用パラメータ */
	private static final String WK_CHECK = "WK_JFUEoMusenRtMskmShokaiCC";

	/**
	 * eo光無線ルーター申込照会コモンコンポーネント部品実行処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite getEoMueseRtMskmShokai(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{

		try
		{

			HashMap inMap = (HashMap)param.getData(fixedText);
			inMap.put(PPLAN_KTTANKA_LIST, new ArrayList());
			inMap.put(PCRS_KKTKSVC_LIST, new ArrayList());
			inMap.put("kktk_pplan_betu_kiki_mdl_list", new ArrayList());
			inMap.put("tkkiki_mdl_list", new ArrayList());
			inMap.put("pplan_list", new ArrayList());
			inMap.put("pplan_kttanka_tkn_list", new ArrayList());

			// ＫＥＹ＿サービス契約番号 
			String keySvcKeiNo = (String)inMap.get(MAP_KEY_SVC_KEI_NO);
			// ＫＥＹ＿料金グループコード
			String keyPrcGrpCd = (String)inMap.get(MAP_KEY_KEY_PRC_GRP_CD);

			// 提供方式契約番号
			String inMaptkHoshikiKeiNo = (String)inMap.get(MAP_TK_HOSHIKI_KEI_NO);

			// 宅内機器型式コード
			String inMapKeyTaknkikiModelCd = (String)inMap.get(MAP_KEY_TAKNKIKI_MODEL_CD);

			// ※チェック用パラメータ
			HashMap wkMap = (HashMap)param.getData(WK_CHECK);
			if (wkMap == null)
			{
				wkMap = new HashMap();
				param.setData(WK_CHECK, wkMap); //作業用エリア初期化
			}
			wkMap.put(MAP_KEY_SYSID, (String)inMap.get(MAP_KEY_SYSID));
			wkMap.put(MAP_KEY_SVC_KEI_NO, (String)inMap.get(MAP_KEY_SVC_KEI_NO));
			wkMap.put(MAP_KEY_SVC_KEI_KAISEN_UCWK_NO, (String)inMap.get(MAP_KEY_SVC_KEI_KAISEN_UCWK_NO));

			// マンション、且つ、ルーター申込の場合
			if (JFUStrConst.CD00133_04.equals(keyPrcGrpCd))
			{
				// ●提供方式契約一覧照会(サービス契約番号)
				// 上りマッピング
				setInMapTkHoshikiKei(param, fixedText, keySvcKeiNo);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_TK_HSK_KEI, TEMPLATE_ID_TK_HSK_KEI_DETAIL, IN_COLUMN_LIST_TK_HSK_KEI, ERROR_COLUMN_TK_HSK_KEI);

				// 提供方式契約一覧照会結果の明細取得
				HashMap<String, String> tkHoshikiKeiMap = getTemplateListMap((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_TK_HSK_KEI, TEMPLATE_ID_TK_HSK_KEI_DETAIL, JFUStrConst.I_ZERO);
				// マンション通信設備コード
				String mansTushinEquipCd = tkHoshikiKeiMap.get(EKK0891B502CBSMsg1List.MANS_TUSHIN_EQUIP_CD);
				// IP払出コード
				String ipHradsiCd = tkHoshikiKeiMap.get(EKK0891B502CBSMsg1List.IP_HRADSI_CD);

				// 光配線以外の場合
				if (!JFUStrConst.CD01265_03.equals(mansTushinEquipCd))
				{
					// プライベートの場合
					if (JFUStrConst.CD01264_01.equals(ipHradsiCd))
					{
						JFUBPCommon.printBpDebugLog(this.getClass(), ERR_MSG_4 + mansTushinEquipCd + ERR_MSG_IP_HRADSI_CD + ipHradsiCd + ERR_MSG_SQUARE);
						setRelationErrorInfo(param, JFUStrConst.RELATION_CHECK_TEMPLATE_ID_SVC_KEI, ENABLED_SVC_ERR, fixedText);
						throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
					}
				}
			}

			// ●提供方式契約一意照会
			if (!JFUBPCommon.isNull(inMaptkHoshikiKeiNo))
			{
				initData(param, fixedText, IN_COLUMN_LIST_TK_HOSHIKI_KEI);
				// 上りマッピング
				setInMapKaisenUseKeiNoSearch(param, fixedText, inMaptkHoshikiKeiNo);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_TK_HOSHIKI_KEI, TEMPLATE_ID_TK_HOSHIKI_KEI_DETAIL, IN_COLUMN_LIST_TK_HOSHIKI_KEI, ERROR_COLUMN_TK_HOSHIKI_KEI);
				// 提供方式コード
				String tkHoshikiCd = getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_TK_HOSHIKI_KEI, TEMPLATE_ID_TK_HOSHIKI_KEI_DETAIL, EKK0891A010CBSMsg1List.TK_HOSHIKI_CD, 0);
				// 提供方式パターンコード
				String tkHoshikiPatternCd = getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_TK_HOSHIKI_KEI, TEMPLATE_ID_TK_HOSHIKI_KEI_DETAIL, EKK0891A010CBSMsg1List.TK_HOSHIKI_PATTERN_CD, 0);
				// 棟内速度コード
				String tonaiSpeedCd = getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_TK_HOSHIKI_KEI, TEMPLATE_ID_TK_HOSHIKI_KEI_DETAIL, EKK0891A010CBSMsg1List.TONAI_SPEED_CD, 0);
				// 出力マップ設定
				setOutTkHoshikiKeiNo(param, fixedText, tkHoshikiCd, tkHoshikiPatternCd, tonaiSpeedCd);
			}

			// ●機器提供サービス契約一覧照会（各種通信機器情報取得）ルーター  ※サービス契約回線内訳番号に紐づくＯＮＵ機器、多機能ルーターを除く。
			// 上りマッピング
			setInKktkSvkeiListShokai(param, fixedText, keySvcKeiNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_KKTK_SVKEI_LIST_SHOKAI, TEMPLATE_ID_DETAIL_KKTK_SVKEI_LIST_SHOKAI, IN_COLUMN_LIST_KKTK_SVKEI_LIST_SHOKAI, JFUStrConst.EMPTY);

			// ●工事案件一覧照会
			// 上りマッピング
			setInKjakListShokai(param, fixedText, keySvcKeiNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_KJAK_LIST_SHOKAI, TEMPLATE_ID_DETAIL_KJAK_LIST_SHOKAI, IN_COLUMN_LIST_KJAK_LIST_SHOKAI, JFUStrConst.EMPTY);

			// ●住所変更中住所変更明細一覧照会２
			setInAdchgNowAdchgListShokai(param, fixedText, keySvcKeiNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_ADCHG_NOW_ADCHG_LIST_SHOKAI, TEMPLATE_ID_DETAIL_ADCHG_NOW_ADCHG_LIST_SHOKAI, IN_COLUMN_LIST_ADCHG_NOW_ADCHG_LIST_SHOKAI, JFUStrConst.EMPTY);

			// 住変中の住所変更番号を取得
			String adchgNo = JFUStrConst.EMPTY;

			List<HashMap> adchgDtlList = getTemplateList(inMap, TEMP_TEMPLATE_KEY_EKK2101B501, TEMPLATE_ID_DETAIL_ADCHG_NOW_ADCHG_LIST_SHOKAI);

			if (adchgDtlList != null && adchgDtlList.size() > 0)
			{
				HashMap adchgDtlMap = adchgDtlList.get(0);
				adchgNo = (String)adchgDtlMap.get(EKK2101B501CBSMsg1List.ADCHG_NO);
				if (adchgNo != null && !JFUStrConst.EMPTY.equals(adchgNo))
				{
					// ●住所変更明細一覧照会
					setInAdchgDtlListShokai(param, fixedText, adchgNo, JFUStrConst.CD01241_06);
					//検索エラーなし設定
					ignoreSearchError(param, fixedText);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMPLATE_ID_ADCHG_DTL_LIST_SHOKAI, TEMPLATE_ID_DETAIL_ADCHG_DTL_LIST_SHOKAI, IN_COLUMN_LIST_ADCHG_DTL_LIST_SHOKAI, JFUStrConst.EMPTY);
				}
			}

			// ○サービス契約に紐づくサービス契約状態（異動予約：コース変更、機器情報、機器送料）を取得する
			// ●サービス契約一覧照会（各種通信機器情報取得）
			// 上りマッピング
			setInSvkeiListShokai(param, fixedText, keySvcKeiNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_SVKEI_LIST_SHOKAI, TEMPLATE_ID_DETAIL_SVKEI_LIST_SHOKAI, IN_COLUMN_LIST_SVKEI_LIST_SHOKAI, JFUStrConst.EMPTY);

			// 保有ルーター情報を取得して存在する場合は、関連チェックエラーとする。
			getHouyuRouterData(handle, param, fixedText);

			// ○宅内機器型式コードが未決定の場合（ルーター）
			// ●宅内機器型式取得 EKK1861B501 サービス別宅内機器型式候補一覧照会（抽出条件種別）
			// 上りマッピング
			setInSvbetuTkkikimdlListShokai(param, fixedText);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);

			List<HashMap> resultlist = JFUBPCommon.getTaknkiki(handle, param, fixedText);

			// 下りマッピング
			setOutSvbetuTkkikimdlListShokai(param, fixedText, resultlist);

			// ●宅内機器型式／付属品型式一覧照会（宅内機器型式一意照会）
			// 上りマッピング
			setInTkkikiHuzokuhinMdlListShokai(param, fixedText, inMapKeyTaknkikiModelCd);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_TKKIKI_HUZOKUHIN_MDL_LIST_SHOKAI, TEMPLATE_ID_DETAIL_TKKIKI_HUZOKUHIN_MDL_LIST_SHOKAI, IN_COLUMN_LIST_TKKIKI_HUZOKUHIN_MDL_LIST_SHOKAI,
					JFUStrConst.EMPTY);
			// 下りマッピング
			setOutTkkikiHuzokuhinMdlListShokai(param, fixedText);

			// ●機器型式対象料金コース一意照会
			// 上りマッピング
			setInKikimdlTgPcrsShokai(param, fixedText, inMapKeyTaknkikiModelCd);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_KIKIMDL_TG_PCRS_SHOKAI, TEMPLATE_ID_DETAIL_KIKIMDL_TG_PCRS_SHOKAI, IN_COLUMN_LIST_KIKIMDL_TG_PCRS_SHOKAI, JFUStrConst.EMPTY);
			// 下りマッピング
			setOutKikimdlTgPcrsShokai(param, fixedText);

			// ●料金プラン一覧照会
			// 上りマッピング
			setInPplanListShokai(param, fixedText);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_PPLAN_LIST_SHOKAI, TEMPLATE_ID_DETAIL_PPLAN_LIST_SHOKAI, IN_COLUMN_LIST_PPLAN_LIST_SHOKAI, JFUStrConst.EMPTY);
			// 下りマッピング
			setOutPplanListShokai(param, fixedText);

			// ●料金プラン固定単価（オプション申込料金）一覧照会
			// 上りマッピング
			setInPplanKttankaOpListShokai(param, fixedText);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_PPLAN_KTTANKA_OP_LIST_SHOKAI, TEMPLATE_ID_DETAIL_PPLAN_KTTANKA_OP_LIST_SHOKAI, IN_COLUMN_LIST_PPLAN_KTTANKA_OP_LIST_SHOKAI,
					JFUStrConst.EMPTY);
			// 下りマッピング
			setOutPplanKttankaOpListShokai(param, fixedText, inMapKeyTaknkikiModelCd);

			// ●料金コース一意照会
			// 上りマッピング
			setInPcrsShokai(param, fixedText);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_PCRS_SHOKAI, TEMPLATE_ID_DETAIL_PCRS_SHOKAI, IN_COLUMN_LIST_PCRS_SHOKAI, JFUStrConst.EMPTY);

			// ●料金コース_機器提供サービス一意照会
			// 上りマッピング
			setInPcrsKktkSvcShokai(param, fixedText);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_PCRS_KKTK_SVC_SHOKAI, TEMPLATE_ID_DETAIL_PCRS_KKTK_SVC_SHOKAI, IN_COLUMN_LIST_PCRS_KKTK_SVC_SHOKAI, JFUStrConst.EMPTY);
			// 下りマッピング
			setOutPcrsKktkSvcShokai(param, fixedText, inMapKeyTaknkikiModelCd);

			// ●宅内機器型式コードをリストに設定
			ArrayList<Object> workLst_PplanKttankaList = (ArrayList<Object>)inMap.get(PPLAN_KTTANKA_LIST);
			ArrayList<Object> workLst_PcrsKktksvcList = (ArrayList<Object>)inMap.get(PCRS_KKTKSVC_LIST);

			for (int i = 0; i < workLst_PplanKttankaList.size(); i++)
			{
				HashMap<String, Object> PplanKttankaList = (HashMap<String, Object>)workLst_PplanKttankaList.get(i);
				HashMap<String, Object> PcrsKktksvcList = (HashMap<String, Object>)workLst_PcrsKktksvcList.get(i);

				PplanKttankaList.put("taknkiki_model_cd", inMapKeyTaknkikiModelCd);
				PcrsKktksvcList.put("taknkiki_model_cd", inMapKeyTaknkikiModelCd);
			}

			// 返却値初期設定(事務手数料有：1)
			String jmteUm = JFUStrConst.CD00002_1;
			boolean judgeResult = false;

			// ■EKU0011B090_工事案件一覧照会(サービス契約番号)
			ArrayList eKU0011B090List = getEKU0011B090List(handle, param, fixedText, keySvcKeiNo);
			setResultSet(handle, param, fixedText, eKU0011B090List, inMap);

			if (isKojiHaiso(inMap))
			{
				// 工事会社配送
				judgeResult = false;
			}
			else
			{
				// ■コース変更事務手数料判定
				judgeResult = judgeChgCourseJmte(handle, param, fixedText, inMap, keySvcKeiNo);
			}
			// 有料の場合は住所変更を確認する。無料の場合は住所判定不要。
			if (judgeResult)
			{
				// 住所変更事務手数料判定
				judgeResult = judgeChgAddJmte(handle, param, fixedText, inMap, keySvcKeiNo);
			}

			// ●判定結果を結果マップに格納
			if (judgeResult)
			{
				// 事務手数料：有
				jmteUm = JFUStrConst.CD00002_1;
			}
			else
			{
				// 事務手数料：無
				jmteUm = JFUStrConst.CD00002_0;
			}

			inMap.put(OUT_JMTE_UM, jmteUm);
			String debugMsg = JFUBPCommon.mapDebug(JFUStrConst.EMPTY, inMap, JFUStrConst.EMPTY);
			outDebugLog("■■■【JFUJdgJmteCC（setResultSet）】事務手数料返却値 ■■■ サービス契約番号=[" + keySvcKeiNo + "]\r\n" + debugMsg);

		}
		finally
		{
			this.deleteTempArea(param, fixedText);
		}

		return param;
	}

	/**
	 * 出力マップ設定項目設定(提供方式契約コード)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param tkHoshikiKeiCd 提供方式契約番号
	 * @param tkHoshikiPatternCd 提供方式パターンコード
	 * @param tonaiSpeedCd 棟内速度コード
	 * @throws RequestParameterException
	 */
	private void setOutTkHoshikiKeiNo(IRequestParameterReadWrite param, String fixedText, String tkHoshikiKeiCd, String tkHoshikiPatternCd, String tonaiSpeedCd) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		inMap.put(MAP_TK_HOSHIKI_CD, tkHoshikiKeiCd);
		inMap.put(MAP_TK_HOSHIKI_PATTERN_CD, tkHoshikiPatternCd);
		inMap.put(MAP_TONAI_SPEED_CD, tonaiSpeedCd);
	}

	/**
	 * 上りマッピング項目設定(提供方式契約一意照会）
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param tkHoshikiKeiNo 提供方式契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapKaisenUseKeiNoSearch(IRequestParameterReadWrite param, String fixedText, String inMaptkHoshikiKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1:提供方式契約一意照会)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿提供方式契約番号
		inMap.put(EKK0891A010CBSMsg.KEY_TK_HOSHIKI_KEI_NO, inMaptkHoshikiKeiNo);
	}

	/**
	 * 保有ルーター（多機能／旧有線／旧無線／新無線）判定処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	private void getHouyuRouterData(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号 
		String keySvcKeiNo = (String)inMap.get(MAP_KEY_SVC_KEI_NO);

		// ●機器オプションサービス契約一覧照会（フロント）
		initData(param, fixedText, IN_COLUMN_LIST_KKOP_SVKEI_LIST_SHOKAI);
		// 上りマッピング
		setInKkopSvkeiListShokai(param, fixedText);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_KKOP_SVKEI_LIST_SHOKAI, TEMPLATE_ID_DETAIL_KKOP_SVKEI_LIST_SHOKAI, IN_COLUMN_LIST_KKOP_SVKEI_LIST_SHOKAI, JFUStrConst.EMPTY);
		// 〇保有多機能ルーター機能種別の返却

		for (HashMap dataMap : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_KKOP_SVKEI_LIST_SHOKAI), TEMPLATE_ID_DETAIL_KKOP_SVKEI_LIST_SHOKAI))
		{
			String kktkSvcKeiStat = (String)dataMap.get(EKK2811B503CBSMsg1List.KKTK_SVC_KEI_STAT);
			String kktk_svc_kei_no = (String)dataMap.get(EKK2811B503CBSMsg1List.KKTK_SVC_KEI_NO);

			if (KKTK_SVC_KEI_STAT_MUKO.contains(kktkSvcKeiStat))
			{
				// 無効な機器提供サービス契約ステータス（サービス契約ステータス＝"910"（解約）、"920"（キャンセル）以外）の場合スキップ
				continue;
			}
			else
			{
				debugLog("■■■ 多機能ルーター保有エラー ■■■" + "機器提供サービス契約番号[" + kktk_svc_kei_no + "] 機器提供サービス契約ステータス[" + kktkSvcKeiStat + "] ■■■■■");
				setRelationErrorInfo(param, TEMPLATE_ID_KKOP_SVKEI_LIST_SHOKAI, ERROR_COLUMN_KKOP_SVKEI_LIST_SHOKAI, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}
		}

		// ■現在有効な回線以外で、多機能が申込中の場合はエラー（例：自回線ではなく引越先の他回線で、サービス契約番号が同じもの。）
		if (isTakinoTakaisenErr(handle, param, WK_CHECK))
		{
			debugLog("■■■ 他回線多機能申込中エラー ■■■");
			setRelationErrorInfo(param, TEMPLATE_ID_KKOP_SVKEI_LIST_SHOKAI, ERROR_COLUMN_KKOP_SVKEI_LIST_SHOKAI, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
		}

		// ● EKK0341B002_機器提供サービス契約一覧照会（サービス契約番号）※ルーター取得用
		// 上りマッピング
		setInMapEKK0341B002(param, fixedText, keySvcKeiNo, JFUStrConst.KK0771_KKTK_SVC_CD_C014);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0341B002, TEMPLATE_ID_EKK0341B002_DETAIL, ITEM_NM_LIST_EKK0341B002, JFUStrConst.EMPTY);

		for (HashMap dataMap : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0341B002), TEMPLATE_ID_EKK0341B002_DETAIL))
		{
			// 機器提供サービス契約ステータス
			String kktkSvcKeiStat = (String)dataMap.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT);
			String kktk_svc_kei_no = (String)dataMap.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO);

			if (KKTK_SVC_KEI_STAT_MUKO.contains(kktkSvcKeiStat))
			{
				// 無効な機器提供サービス契約ステータス（サービス契約ステータス＝"910"（解約）、"920"（キャンセル）以外）の場合スキップ
				continue;
			}
			else
			{
				debugLog("■■■ ルーター(多機能以外)保有エラー ■■■" + "機器提供サービス契約番号[" + kktk_svc_kei_no + "] 機器提供サービス契約ステータス[" + kktkSvcKeiStat + "] ■■■■■");
				setRelationErrorInfo(param, TEMPLATE_ID_EKK0341B002, ERROR_COLUMN_EKK0341B002, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}
		}

		// ■手数料を取得する（多機能ルーターの出荷＋サービス開始日の翌々日以降の場合）

		// ●サービス契約一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0081A010);
		// 上りマッピング
		setInMapSvcKeiUniqueSearch(param, fixedText, keySvcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0081A010, TEMPLATE_ID_EKK0081A010_DETAIL, IN_COLUMN_LIST_EKK0081A010, ERROR_COLUMN_EKK0081A010);
		// サービス開始年月日
		String svcStaYmd =
				getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0081A010), TEMPLATE_ID_EKK0081A010_DETAIL, EKK0081A010CBSMsg1List.SVC_STA_YMD, JFUStrConst.I_ZERO);
		// ●判定
		String kikiSoryoUm = getKikiSoryoUm(svcStaYmd);

		// ●機器送料有無＝"1"有の場合に、一時支払料金マスターから契約事務手数料を取得する。
		if (JFUStrConst.CD00002_1.equals(kikiSoryoUm))
		{
			// ● EKK0721A010_一時支払料金一意照会
			// 上りマッピング
			setInMapEKK0721A010(param, fixedText, (String)inMap.get(MAP_KEY_TMP_PAY_PRC_NO));
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0721A010, TEMPLATE_ID_EKK0721A010_DETAIL, ITEM_NM_LIST_EKK0721A010, JFUStrConst.EMPTY);
		}
		inMap.put("kikiSoryoUm", kikiSoryoUm);
	}

	/**
	 * 機器送料有無判定
	 * 
	 * <br>
	 * @param svcStaYmd サービス開始年月日
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	private String getKikiSoryoUm(String svcStaYmd) throws Exception
	{
		// 機器送料有無
		String kikiSoryoUm = JFUStrConst.CD00002_0; // "0"：無

		// サービス開始年月日がＮＵＬＬの場合は機器送料は無料。
		if (JFUBPCommon.isNull(svcStaYmd))
		{
			return kikiSoryoUm;
		}

		// ２ヶ月後を取得(無料期間の最終日）
		String svcStaYmdYukoEnd = JFUBPCommon.addMonth(svcStaYmd, 2);
		// 月末日を取得する
		svcStaYmdYukoEnd = svcStaYmdYukoEnd.substring(0, 6) + JPCDateUtil.getEndOfMonth(svcStaYmdYukoEnd);

		// 運用日付取得
		String opeDate = JFUBPCommon.getOpeDate(null);

		// 運用日が無料期間内であれば機器送料は無料。
		if (Integer.parseInt(svcStaYmd) <= Integer.parseInt(opeDate) && Integer.parseInt(opeDate) <= Integer.parseInt(svcStaYmdYukoEnd))
		{
			kikiSoryoUm = JFUStrConst.CD00002_0; // "0"：無
		}
		else
		{
			kikiSoryoUm = JFUStrConst.CD00002_1; // "1"：有
		}

		return kikiSoryoUm;
	}

	/**
	 * 上りマッピング項目設定(サービス契約一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapSvcKeiUniqueSearch(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));

	}

	/**
	 * 上りマッピング項目設定(機器提供サービス契約一覧照会（各種通信機器情報取得）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNoNet ネットのサービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInKktkSvkeiListShokai(IRequestParameterReadWrite param, String fixedText, String svcKeiNoNet) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// 機能コード設定(1:抽出条件に一致するレコードの一覧照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0341B512CBSMsg.KEY_SVC_KEI_NO, svcKeiNoNet);

		// 最大検索件数
		inMap.put(EKK0341B512CBSMsg.MAX_SEARCH_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 表示件数
		inMap.put(EKK0341B512CBSMsg.DISPLAY_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 表示ページ番号
		inMap.put(EKK0341B512CBSMsg.DISPLAY_PAGE_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 検索処理パターン
		inMap.put(EKK0341B512CBSMsg.SEARCH_TYPE, SEARCH_TYPE_IKT);
		// 総ページ数
		inMap.put(EKK0341B512CBSMsg.TOTAL_PAGE_NUM, JFUStrConst.MAX_SEARCH_NUM);
	}

	/**
	 * 上りマッピング項目設定(工事案件一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param keySvcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInKjakListShokai(IRequestParameterReadWrite param, String fixedText, String keySvcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1:サービス契約番号)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// ＫＥＹ＿工事案件番号サービス契約番号
		inMap.put(EKU0011B010CBSMsg.KEY_KOJIAK_NO_SVC_KEI_NO, keySvcKeiNo);
		// 最大検索件数
		inMap.put(EKU0011B010CBSMsg.MAX_SEARCH_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 表示件数
		inMap.put(EKU0011B010CBSMsg.DISPLAY_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 表示ページ番号
		inMap.put(EKU0011B010CBSMsg.DISPLAY_PAGE_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 検索処理パターン
		inMap.put(EKU0011B010CBSMsg.SEARCH_TYPE, SEARCH_TYPE_IKT);
		// 総ページ数
		inMap.put(EKU0011B010CBSMsg.TOTAL_PAGE_NUM, JFUStrConst.MAX_SEARCH_NUM);

	}

	/**
	 * 上りマッピング項目設定(サービス契約一覧照会（各種通信機器情報取得）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param keySvcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInSvkeiListShokai(IRequestParameterReadWrite param, String fixedText, String keySvcKeiNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// 機能コード設定(1:抽出条件に一致するレコードの一覧照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0081B520CBSMsg.KEY_SVC_KEI_NO, keySvcKeiNo);
		// 最大検索件数
		inMap.put(EKK0081B520CBSMsg.MAX_SEARCH_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 表示件数
		inMap.put(EKK0081B520CBSMsg.DISPLAY_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 表示ページ番号
		inMap.put(EKK0081B520CBSMsg.DISPLAY_PAGE_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 検索処理パターン
		inMap.put(EKK0081B520CBSMsg.SEARCH_TYPE, SEARCH_TYPE_IKT);
		// 総ページ数
		inMap.put(EKK0081B520CBSMsg.TOTAL_PAGE_NUM, JFUStrConst.MAX_SEARCH_NUM);

	}

	/**
	 * 上りマッピング項目設定(サービス別宅内機器型式候補一覧照会（抽出条件種別）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInSvbetuTkkikimdlListShokai(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:抽出条件に一致するレコードの一覧照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		ArrayList<Object> workLst_EKK0081B520 = (ArrayList<Object>)inMap.get("EKK0081B520CBSMsg1List");
		HashMap<String, Object> workMap_EKK0081B520 = (HashMap<String, Object>)workLst_EKK0081B520.get(LIST_TOP);

		// ＫＥＹ＿料金コースコード <-- サービス契約.料金コースコード
		inMap.put(MAP_KEY_PCRS_CD, workMap_EKK0081B520.get(EKK0081B520CBSMsg1List.PCRS_CD));
		// ＫＥＹ＿宅内機器種別コード <-- 宅内機器種別コード ルーター
		inMap.put(MAP_KEY_TAKNKIKI_SBT_CD, JFUStrConst.CD01262_F0);
		// ＫＥＹ＿保有ルーターコード <-- 保有ルーターコード 新無線10ギガ
		inMap.put(MAP_KEY_HOYU_ROUTER_CD, JFUStrConst.CD01313_06);

	}

	/**
	 * 下りマッピング項目設定(サービス別宅内機器型式候補一覧照会（抽出条件種別）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param resultlist EKK1861B501 サービス別宅内機器型式候補一覧照会（抽出条件種別）
	 * @throws RequestParameterException
	 */
	private void setOutSvbetuTkkikimdlListShokai(IRequestParameterReadWrite param, String fixedText, List<HashMap> resultlist) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		HashMap<String, Object> eKK1861B501OutMap = (HashMap<String, Object>)resultlist.get(LIST_TOP);

		// 宅内機器型式コード(返却値は１件のみ)
		inMap.put(TAKNKIKI_MODEL_CD, eKK1861B501OutMap.get(EKK1861B501CBSMsg1List.TAKNKIKI_MODEL_CD));

	}

	/**
	 * 上りマッピング項目設定(宅内機器型式／付属品型式一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param keyTaknikikiModelCd 宅内機器型式コード
	 * @throws RequestParameterException
	 */
	private void setInTkkikiHuzokuhinMdlListShokai(IRequestParameterReadWrite param, String fixedText, String keyTaknikikiModelCd) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 機能コード設定(1:抽出条件に一致するレコードの一覧照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿宅内機器セット品型コード
		inMap.put(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, keyTaknikikiModelCd);

	}

	/**
	 * 下りマッピング項目設定(宅内機器型式／付属品型式一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setOutTkkikiHuzokuhinMdlListShokai(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		ArrayList<Object> workLst_EZM0411A010 = (ArrayList<Object>)inMap.get(TEMPLATE_ID_DETAIL_TKKIKI_HUZOKUHIN_MDL_LIST_SHOKAI);
		HashMap<String, Object> workMap_EZM0411A010 = (HashMap<String, Object>)workLst_EZM0411A010.get(LIST_TOP);

		ArrayList<Object> tkkiki_mdl_list = (ArrayList<Object>)inMap.get("tkkiki_mdl_list");
		tkkiki_mdl_list.add(workMap_EZM0411A010);

	}

	/**
	 * 上りマッピング項目設定(機器型式対象料金コース一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param keyTaknikikiModelCd 宅内機器型式コード
	 * @throws RequestParameterException
	 */
	private void setInKikimdlTgPcrsShokai(IRequestParameterReadWrite param, String fixedText, String keyTaknikikiModelCd) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 機能コード設定(1:PK指定でレコードの照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿宅内機器型式コード
		inMap.put(EKK1621A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, keyTaknikikiModelCd);
		// ＫＥＹ＿機器提供種別コード
		inMap.put(EKK1621A010CBSMsg.KEY_KKTK_SBT_CD, inMap.get(KKTK_SBT_CD));
		// ＫＥＹ＿販売種別コード
		inMap.put(EKK1621A010CBSMsg.KEY_HAMBAI_SBT_CD, JFUStrConst.CD00348_10);
	}

	/**
	 * 下りマッピング項目設定(機器型式対象料金コース一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setOutKikimdlTgPcrsShokai(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		ArrayList<Object> workLst_EKK1621A010 = (ArrayList<Object>)inMap.get(TEMPLATE_ID_DETAIL_KIKIMDL_TG_PCRS_SHOKAI);
		HashMap<String, Object> workMap_EKK1621A010 = (HashMap<String, Object>)workLst_EKK1621A010.get(LIST_TOP);

		ArrayList<Object> kktk_pplan_betu_kiki_mdl_list = (ArrayList<Object>)inMap.get("kktk_pplan_betu_kiki_mdl_list");
		kktk_pplan_betu_kiki_mdl_list.add(workMap_EKK1621A010);

	}

	/**
	 * 上りマッピング項目設定(料金プラン一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInPplanListShokai(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		ArrayList<Object> workLst_EKK1621A010 = (ArrayList<Object>)inMap.get("EKK1621A010CBSMsg1List");
		HashMap<String, Object> workMap_EKK1621A010 = (HashMap<String, Object>)workLst_EKK1621A010.get(LIST_TOP);

		// 機能コード設定(1:抽出条件に一致するレコードの一覧照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿料金コースコード
		inMap.put(EKK0591A010CBSMsg.KEY_PCRS_CD, workMap_EKK1621A010.get(EKK1621A010CBSMsg1List.PCRS_CD));

	}

	/**
	* 下りマッピング項目設定(料金プラン一覧照会)
	* 
	* <br>
	* @param param リクエストパラメータ
	* @param fixedText サービスメッセージ
	* @throws RequestParameterException
	*/
	private void setOutPplanListShokai(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		ArrayList<Object> workLst_EKK0591B003 = (ArrayList<Object>)inMap.get(TEMPLATE_ID_DETAIL_PPLAN_LIST_SHOKAI);
		HashMap<String, Object> workMap_EKK0591B003 = (HashMap<String, Object>)workLst_EKK0591B003.get(LIST_TOP);

		ArrayList<Object> pplan_list = (ArrayList<Object>)inMap.get("pplan_list");
		pplan_list.add(workMap_EKK0591B003);

	}

	/**
	 * 上りマッピング項目設定(料金プラン固定単価（オプション申込料金）一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInPplanKttankaOpListShokai(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		ArrayList<Object> workLst_EKK0591B003 = (ArrayList<Object>)inMap.get("EKK0591B003CBSMsg1List");
		HashMap<String, Object> workMap_EKK0591B003 = (HashMap<String, Object>)workLst_EKK0591B003.get(LIST_TOP);

		// 機能コード設定(1:抽出条件に一致するレコードの一覧照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿料金コースコード
		inMap.put(EKK0601B001CBSMsg.KEY_PCRS_CD, workMap_EKK0591B003.get(EKK0591B003CBSMsg1List.PCRS_CD));
		// ＫＥＹ＿料金プランコード
		inMap.put(EKK0601B001CBSMsg.KEY_PPLAN_CD, workMap_EKK0591B003.get(EKK0591B003CBSMsg1List.PPLAN_CD));

		// 最大検索件数
		inMap.put(EKK0601B001CBSMsg.MAX_SEARCH_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 表示件数
		inMap.put(EKK0601B001CBSMsg.DISPLAY_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 表示ページ番号
		inMap.put(EKK0601B001CBSMsg.DISPLAY_PAGE_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 検索処理パターン
		inMap.put(EKK0601B001CBSMsg.SEARCH_TYPE, SEARCH_TYPE_IKT);
		// 総ページ数
		inMap.put(EKK0601B001CBSMsg.TOTAL_PAGE_NUM, JFUStrConst.MAX_SEARCH_NUM);

	}

	/**
	 * 下りマッピング項目設定(料金プラン固定単価（オプション申込料金）一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param keyTaknikikiModelCd 宅内機器型式コード
	 * @throws RequestParameterException
	 */
	private void setOutPplanKttankaOpListShokai(IRequestParameterReadWrite param, String fixedText, String keyTaknikikiModelCd) throws RequestParameterException
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		ArrayList<Object> workLst_EKK0601B001 = (ArrayList<Object>)inMap.get(TEMPLATE_ID_DETAIL_PPLAN_KTTANKA_OP_LIST_SHOKAI);
		HashMap<String, Object> workMap_EKK0601B001 = (HashMap<String, Object>)workLst_EKK0601B001.get(LIST_TOP);

		ArrayList<Object> pplan_kttanka_list = (ArrayList<Object>)inMap.get(PPLAN_KTTANKA_LIST);
		pplan_kttanka_list.add(workMap_EKK0601B001);

	}

	/**
	 * 上りマッピング項目設定(料金コース一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInPcrsShokai(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ユーザデータ取得
		ArrayList<Object> workLst_EKK0591B003 = (ArrayList<Object>)inMap.get("EKK0591B003CBSMsg1List");
		HashMap<String, Object> workMap_EKK0591B003 = (HashMap<String, Object>)workLst_EKK0591B003.get(LIST_TOP);

		// 機能コード設定(2:カレントレコードの照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ＫＥＹ＿料金コースコード
		inMap.put(EKK0791A010CBSMsg.KEY_PCRS_CD, workMap_EKK0591B003.get(EKK0591B003CBSMsg1List.PCRS_CD));
		// ＫＥＹ＿世代登録年月日時分秒
		inMap.put(EKK0791A010CBSMsg.KEY_GENE_ADD_DTM, JFUStrConst.EMPTY);
		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK0791A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));

	}

	/**
	 * 上りマッピング項目設定(料金コース_機器提供サービス一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param cnt カウント
	 * @throws RequestParameterException
	 */
	private void setInPcrsKktkSvcShokai(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ユーザデータ取得
		ArrayList<Object> workLst_EKK0791A010 = (ArrayList<Object>)inMap.get(TEMPLATE_ID_DETAIL_PCRS_SHOKAI);
		HashMap<String, Object> workMap_EKK0791A010 = (HashMap<String, Object>)workLst_EKK0791A010.get(LIST_TOP);

		ArrayList<Object> workLst_EKK0081B520 = (ArrayList<Object>)inMap.get(TEMPLATE_ID_DETAIL_SVKEI_LIST_SHOKAI);
		HashMap<String, Object> workMap_EKK0081B520 = (HashMap<String, Object>)workLst_EKK0081B520.get(LIST_TOP);

		// 機能コード設定(2:カレントレコードの照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ＫＥＹ＿料金コースコード
		inMap.put(EKK0801A010CBSMsg.KEY_PCRS_CD, workMap_EKK0081B520.get(EKK0081B520CBSMsg1List.PCRS_CD));
		// ＫＥＹ＿機器提供サービスコード
		inMap.put(EKK0801A010CBSMsg.KEY_KKTK_SVC_CD, workMap_EKK0791A010.get(EKK0791A010CBSMsg1List.KKTK_SVC_CD));
		// ＫＥＹ＿世代登録年月日時分秒
		inMap.put(EKK0801A010CBSMsg.KEY_GENE_ADD_DTM, JFUStrConst.EMPTY);
		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK0801A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));
	}

	/**
	 * 下りマッピング項目設定(料金コース_機器提供サービス一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param i カウント
	 * @param keyTaknikikiModelCd 宅内機器型式コード
	 * @throws RequestParameterException
	 */
	private void setOutPcrsKktkSvcShokai(IRequestParameterReadWrite param, String fixedText, String keyTaknikikiModelCd) throws RequestParameterException
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		ArrayList<Object> workLst_EKK0801A010 = (ArrayList<Object>)inMap.get(TEMPLATE_ID_DETAIL_PCRS_KKTK_SVC_SHOKAI);
		HashMap<String, Object> workMap_EKK0801A010 = (HashMap<String, Object>)workLst_EKK0801A010.get(LIST_TOP);

		ArrayList<Object> pcrs_kktksvc_list = (ArrayList<Object>)inMap.get(PCRS_KKTKSVC_LIST);
		pcrs_kktksvc_list.add(workMap_EKK0801A010);
	}

	/**
	 * 上りマッピング項目設定(提供方式契約一覧照会(サービス契約番号))
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapTkHoshikiKei(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1:提供方式契約一覧照会(サービス契約番号))
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// SYSID
		inMap.put(EKK0891B502CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * 上りマッピング項目設定(機器オプションサービス契約一覧照会（フロント）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInKkopSvkeiListShokai(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// 機能コード設定(1:抽出条件に一致するレコードの一覧照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿SYSID
		inMap.put(EKK2811B503CBSMsg.KEY_SYSID, inMap.get("sys_id"));
		// ＫＥＹ＿サービス契約回線内訳番号
		inMap.put(EKK2811B503CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, inMap.get("svc_kei_kaisen_ucwk_no"));
		// ＫＥＹ＿宅内機器種別コード
		inMap.put(EKK2811B503CBSMsg.KEY_TAKNKIKI_SBT_CD, JFUStrConst.CD01262_R0); // R0：多機能ルーター

	}

	/**
	 * 上りマッピング項目設定(EKK0341B002_機器提供サービス契約一覧照会（サービス契約番号）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @param kktkSvcCd 機器提供サービスコード
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0341B002(IRequestParameterReadWrite param, String fixedText, String svcKeiNo, String kktkSvcCd) throws RequestParameterException
	{
		// ●機能コード設定
		setFuncCode(param, fixedText, "13"); // "13"(サービス契約番号)

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		// KEY_サービス契約番号
		inMap.put(EKK0341B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// KEY_機器提供サービスコード
		inMap.put(EKK0341B002CBSMsg.KEY_KKTK_SVC_CD, kktkSvcCd);
		// ソート区分（2：世代登録年月日時分秒の昇順）
		inMap.put(EKK0341B002CBSMsg.KEY_SORT_KBN, "2");
		
	}

	/**
	 * 上りマッピング項目設定(EKK0721A010_一時支払料金一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param tmpPayPrcNo 一時支払料金番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0721A010(IRequestParameterReadWrite param, String fixedText, String tmpPayPrcNo) throws RequestParameterException
	{
		// ●機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1); // "1"

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		// KEY_一時支払料金番号
		inMap.put(EKK0721A010CBSMsg.KEY_TMP_PAY_PRC_NO, tmpPayPrcNo);
	}

	/**
	 * 上りマッピング項目設定(住所変更中住所変更明細一覧照会２)
	 * 
	 * @param param
	 * @param fixedText
	 * @param svcKeiNo
	 */
	private void setInAdchgNowAdchgListShokai(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿SYSID
		inMap.put(EKK2101B501CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * 上りマッピング項目設定(住所変更明細一覧照会SC)
	 * 
	 * @param param
	 * @param fixedText
	 * @param svcKeiNo
	 */
	private void setInAdchgDtlListShokai(IRequestParameterReadWrite param, String fixedText, String adchgNo, String adchgDtlSbtCd) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿SYSID
		inMap.put(EKK2101B001CBSMsg.KEY_ADCHG_NO, adchgNo);
		// ＫＥＹ＿住所変更明細種別コード
		inMap.put(EKK2101B001CBSMsg.KEY_ADCHG_DTL_SBT_CD, adchgDtlSbtCd);
	}

	/**
	 * デバッグログ
	 * 
	 * <br>
	 * @param inMsg メッセージ
	 */
	private void debugLog(String inMsg)
	{
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), inMsg, null, null, null);
	}

	/**
	 * 同一サービス契約番号の他回線の多機能存在チェック。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return true:「自回線多機能なし」かつ「他回線多機能あり」のステータスエラー
	 * @throws Exception
	 */
	private boolean isTakinoTakaisenErr(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap inMap = (HashMap)param.getData(fixedText);
		String svc_kei_no = (String)inMap.get(MAP_KEY_SVC_KEI_NO);
		String in_svc_kei_kaisen_ucwk_no = (String)inMap.get(MAP_KEY_SVC_KEI_KAISEN_UCWK_NO);

		// ●EKK0241B001_サービス契約回線内訳一覧照会
		initData(param, fixedText, IN_COLUMN_LIST_EKK0241B001);
		// 上りマッピング
		setInMapEKK0241B001(param, fixedText, svc_kei_no);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0241B001, TEMPLATE_ID_DETAIL_EKK0241B001, IN_COLUMN_LIST_EKK0241B001, JFUStrConst.EMPTY);

		// ■同一サービス契約番号で回線が異なる場合
		for (HashMap dataMap : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0241B001), TEMPLATE_ID_DETAIL_EKK0241B001))
		{
			String svc_kei_kaisen_ucwk_no = (String)dataMap.get(EKK0241B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
			if (in_svc_kei_kaisen_ucwk_no.contains(svc_kei_kaisen_ucwk_no))
			{
				// 自回線は読み飛ばし
				continue;
			}

			// ●機器オプションサービス契約一覧照会（フロント）
			initData(param, fixedText, IN_COLUMN_LIST_EKK2811B503);
			// 上りマッピング
			setInEKK2811B503(param, fixedText, svc_kei_kaisen_ucwk_no);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_EKK2811B503, TEMPLATE_ID_DETAIL_EKK2811B503, IN_COLUMN_LIST_EKK2811B503, JFUStrConst.EMPTY);

			for (HashMap kikiMap : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK2811B503), TEMPLATE_ID_DETAIL_EKK2811B503))
			{
				String kktk_svc_cd = (String)kikiMap.get(EKK2811B503CBSMsg1List.KKTK_SVC_CD);
				String kktk_svc_kei_stat = (String)kikiMap.get(EKK2811B503CBSMsg1List.KKTK_SVC_KEI_STAT);

				if (JFUStrConst.CD00132_C024.equals(kktk_svc_cd))
				{
					if (KKTK_SVC_KEI_STAT_MUKO.contains(kktk_svc_kei_stat))
					{
						continue;
					}
					else
					{
						return true;
					}
				}
			}
		}
		return false;

	}

	/**
	 * 上りマッピング項目設定(EKK2811B503_機器オプションサービス契約一覧照会（フロント）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svc_kei_kaisen_ucwk_no サービス契約回線内訳番号
	 * @throws RequestParameterException
	 */
	private void setInEKK2811B503(IRequestParameterReadWrite param, String fixedText, String svc_kei_kaisen_ucwk_no) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// 機能コード設定(1:抽出条件に一致するレコードの一覧照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿SYSID
		inMap.put(EKK2811B503CBSMsg.KEY_SYSID, inMap.get(MAP_KEY_SYSID));
		// ＫＥＹ＿サービス契約回線内訳番号
		inMap.put(EKK2811B503CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, svc_kei_kaisen_ucwk_no);
		// ＫＥＹ＿宅内機器種別コード
		inMap.put(EKK2811B503CBSMsg.KEY_TAKNKIKI_SBT_CD, JFUStrConst.CD01262_R0); // R0：多機能ルーター

	}

	/**
	 * 上りマッピング項目設定(EKK0241B001_サービス契約回線内訳一覧照会))
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0241B001(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// ●機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_3);

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0241B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);

	}

	/**
	 * コース変更事務手数料判定
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param resultMap
	 * @param svcKeiNo
	 * @return 判定結果
	 * @throws Exception
	 */
	private boolean judgeChgCourseJmte(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> resultMap, String svcKeiNo) throws Exception
	{
		// リクエストパラメータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		//■コース変更情報一覧照会
		// 初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK1681B502);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// 上りマッピング
		setEKK1681B502(param, fixedText, svcKeiNo);

		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK1681B502, TEMP_DTL_EKK1681B502, IN_COLUMN_LIST_EKK1681B502, ERR_COL_EKK1681B502);

		// 明細取得
		ArrayList eKK1681B502List = (ArrayList)dataMap.get(TEMP_DTL_EKK1681B502);

		// サービス契約内訳の取得
		if (eKK1681B502List == null || eKK1681B502List.size() == 0)
		{
			return true;
		}

		// 直近を取得（コース変更情報一覧照会）
		HashMap map = (HashMap)eKK1681B502List.get(0);

		// 申込日を取得する。
		String mskmYmd = (String)map.get(EKK1681B502CBSMsg1List.MSKM_YMD);

		// 申込日が取得できなければコース変更なしと判断する。
		if (isNullForAnyType(mskmYmd) || JFUStrConst.EMPTY.equals(mskmYmd))
		{
			return true;
		}

		// 工事案件種別コードの取得
		String kojiakSbtCd = (String)map.get(EKK1681B502CBSMsg1List.KOJIAK_SBT_CD);

		// 無料期間
		String judgeDate = JFUStrConst.EMPTY;

		// 工事案件種別コードが取得できない場合または、工事種別コードが"010"(プラン変更（工事なし）)の場合は
		// 申込の翌月1日をコース変更日とする。
		if (isNullForAnyType(kojiakSbtCd) || JFUStrConst.EMPTY.equals(kojiakSbtCd) || JFUStrConst.CD00577_010.equals(kojiakSbtCd))
		{
			// 料金コース変更日を基準日とする
			judgeDate = mskmYmd;
		}

		// 工事案件種別コードが"009"(プラン変更（収容替）)の場合は
		// 工事案件実施年月日をコース変更日とする。
		if (JFUStrConst.CD00577_009.equals(kojiakSbtCd))
		{
			// 無料期間（工事案件実施年月日）を取得する
			judgeDate = (String)map.get(EKK1681B502CBSMsg1List.KOJIAK_JSSI_YMD);

			// "009"(プラン変更（収容替）)で工事案件実施年月日が取得できない場合は、
			// コース変更中と判断する。
			if (isNullForAnyType(judgeDate) || JFUStrConst.EMPTY.equals(judgeDate))
			{
				return false;
			}
		}

		// 無料期間が取得できていなければコース変更なしと判断する。
		if (isNullForAnyType(judgeDate) || JFUStrConst.EMPTY.equals(judgeDate))
		{
			return true;
		}

		try
		{
			// +2ヶ月を取得する
			judgeDate = JPCDateUtil.addMonth(judgeDate, 2);
		}
		catch (ParseException e)
		{
			return true;
		}
		// 月末日を取得する
		judgeDate = judgeDate.substring(0, 6) + JPCDateUtil.getEndOfMonth(judgeDate);
		// オンライン運用日付
		String opeDate = JFUBPCommon.getOpeDate(null);

		// 申込日 <= オンライン運用 <= 無料期間
		if (mskmYmd.compareTo(opeDate) <= 0 && opeDate.compareTo(judgeDate) <= 0)
		{
			return false;
		}
		else
		{
			return true;
		}
	}

	/**
	 * 住所変更事務手数料判定
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param resultMap
	 * @param svcKeiNo
	 * @return 判定結果
	 * @throws Exception
	 */
	private boolean judgeChgAddJmte(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> resultMap, String svcKeiNo) throws Exception
	{
		// リクエストパラメータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// 初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0081B535);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// 上りマッピング
		setEKK0081B535(param, fixedText, svcKeiNo);

		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0081B535, TEMP_DTL_EKK0081B535, IN_COLUMN_LIST_EKK0081B535, ERR_COL_EKK0081B535);

		// 明細取得
		ArrayList eKK0081B535List = (ArrayList)dataMap.get(TEMP_DTL_EKK0081B535);

		// サービス契約を取得
		if (eKK0081B535List == null || eKK0081B535List.size() == 0)
		{
			return true;
		}

		// 直近を取得
		HashMap map = (HashMap)eKK0081B535List.get(0);

		// サービス契約ステータスの取得
		String svcKeiStat = (String)map.get(EKK0081B535CBSMsg1List.SVC_KEI_STAT);

		// サービス契約ステータスが取得できない場合または、"910"(解約済)の場合または、"920"(キャンセル済)の場合は
		// コース変更なしと判断する。（ログインできないはず。。。）
		if (isNullForAnyType(svcKeiStat) || JFUStrConst.EMPTY.equals(svcKeiStat) || JFUStrConst.CD00037_910.equals(svcKeiStat) || JFUStrConst.CD00037_920.equals(svcKeiStat))
		{
			return true;
		}

		// 移転元住所変更ステータの取得
		String itnmAdchgStat = (String)map.get(EKK0081B535CBSMsg1List.ITNM_ADCHG_STAT);

		// 移転元住所変更ステータが"003"(完了済)以外が設定されている場合は住所変更中と判断する。
		// 移転先住所変更ステータが取得できない場合は移転先住所変更ステータスを確認する。
		if (JFUStrConst.CD01240_001.equals(itnmAdchgStat) || JFUStrConst.CD01240_002.equals(itnmAdchgStat))
		{
			return false;
		}

		// 移転先住所変更ステータの取得
		String itensAdchgStat = (String)map.get(EKK0081B535CBSMsg1List.ITENS_ADCHG_STAT);

		// 移転先住所変更ステータが取得できない場合は住所変更なしと判断する。
		if (isNullForAnyType(itensAdchgStat) || JFUStrConst.EMPTY.equals(itensAdchgStat))
		{
			return true;
		}

		// 移転先住所変更ステータが"001"(登録済)または"002"(切替済)場合は住所変更中と判断する。
		if (JFUStrConst.CD01240_001.equals(itensAdchgStat) || JFUStrConst.CD01240_002.equals(itensAdchgStat))
		{
			return false;
		}

		// 申込日を取得する。
		String mskmYmd = (String)map.get(EKK0081B535CBSMsg1List.MSKM_YMD);

		// 申込日が取得できない場合は住所変更なしと判断する。
		if (isNullForAnyType(mskmYmd) || JFUStrConst.EMPTY.equals(mskmYmd))
		{
			return true;
		}

		// 料金プランコードを取得する
		String pplanCode = (String)map.get(EKK0081B535CBSMsg1List.PPLAN_CD);

		// 無料期間
		String judgeDate = JFUStrConst.EMPTY;

		// イーサを含む料金プランコードか判定する
		if (JFUStrConst.EMPTY.equals(pplanCode) || JFUStrConst.CD00565_PA4901.equals(pplanCode) || JFUStrConst.CD00565_PA5401.equals(pplanCode) || JFUStrConst.CD00565_PA5501.equals(pplanCode)
				|| JFUStrConst.CD00565_PA6801.equals(pplanCode) || JFUStrConst.CD00565_PA7001.equals(pplanCode))
		{
			// イーサの場合はプラン開始年月日を判定日にする
			judgeDate = (String)map.get(EKK0081B535CBSMsg1List.PLAN_STAYMD);

		}
		else
		{
			// イーサ以外の場合は住所変更明細の変更後識別番号（住所変更明細種別コードが"08"(住所変更切替日)）を判定日にする。
			judgeDate = (String)map.get(EKK0081B535CBSMsg1List.CHAF_SKBT_NO);
		}

		// 無料期間が判定できなければ住所変更なしと判断する。
		if (isNullForAnyType(judgeDate) || JFUStrConst.EMPTY.equals(judgeDate))
		{
			return true;
		}

		try
		{
			// +2ヶ月を取得する
			judgeDate = JPCDateUtil.addMonth(judgeDate, 2);
		}
		catch (ParseException e)
		{
			return true;
		}
		// ANK-3529-00-00 ADD START
		// 月末日を取得する
		judgeDate = judgeDate.substring(0, 6) + JPCDateUtil.getEndOfMonth(judgeDate);
		// ANK-3529-00-00 ADD END
		// オンライン運用日付
		String opeDate = JFUBPCommon.getOpeDate(null);

		// 申込日 <= オンライン運用 <= 無料期間
		if (mskmYmd.compareTo(opeDate) <= 0 && opeDate.compareTo(judgeDate) <= 0)
		{
			return false;
		}
		else
		{
			return true;
		}
	}

	/**
	 * 上りマッピング項目設定(コース変更情報)
	 * 
	 * <br>
	 * @param param
	 * @param fixedText
	 * @param svcKeiNo
	 * @throws RequestParameterException
	 */
	private void setEKK1681B502(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// リクエストパラメータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// 機能コード
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿サービス契約番号
		dataMap.put(EKK1681B502CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * 上りマッピング項目設定(住所変更情報)
	 * 
	 * <br>
	 * @param param
	 * @param fixedText
	 * @param svcKeiNo
	 * @throws RequestParameterException
	 */
	private void setEKK0081B535(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// リクエストパラメータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// 機能コード
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿サービス契約番号
		dataMap.put(EKK0081B535CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * ログ出力処理です。
	 * 
	 * <br>
	 * @param obj 出力オブジェクト
	 */
	private void outDebugLog(Object obj)
	{
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), obj, null, null, null);
	}

	/**
	 * 様々な型のNULLチェックを行います。
	 * 
	 * <br>
	 * @param obj チェック対象
	 * @return チェック結果
	 */
	private boolean isNullForAnyType(Object obj)
	{
		boolean result = false;

		if (obj == null)
		{
			// 引数がNULL
			result = true;
		}
		else if (obj instanceof ArrayList)
		{
			// ArrayList型
			result = obj == null || ((ArrayList)obj).size() == 0;
		}
		else if (obj instanceof HashMap)
		{
			// HashMap型
			result = obj == null || ((HashMap)obj).size() == 0;
		}

		return result;
	}

	/**
	 * EKU0011B090_工事案件一覧照会(サービス契約番号)
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @return 工事案件一覧照会明細
	 * @throws Exception
	 */
	private ArrayList getEKU0011B090List(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws Exception
	{

		// リクエストパラメータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		//■EKU0011B090_工事案件一覧照会(サービス契約番号)
		// 初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKU0011B090);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setEKU0011B090(param, fixedText, svcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKU0011B090, TEMP_DTL_EKU0011B090, IN_COLUMN_LIST_EKU0011B090, ERR_COL_EKU0011B090);
		// 明細取得
		ArrayList eKU0011B090List = (ArrayList)dataMap.get(TEMP_DTL_EKU0011B090);

		return eKU0011B090List;

	}

	/**
	 * 上りマッピング項目設定(工事案件一覧照会(サービス契約番号))
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setEKU0011B090(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// リクエストパラメータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// 機能コード
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿サービス契約番号
		dataMap.put(EKU0011B090CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);

	}

	/**
	 * 判定結果の設定
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param eKU0011B090List 工事案件一覧照会(サービス契約番号)
	 * @param resultMap 返却情報
	 * @return 返却情報
	 * @throws Exception 
	 */
	private HashMap<String, Object> setResultSet(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, ArrayList eKU0011B090List, HashMap<String, Object> resultMap)
			throws Exception
	{

		resultMap.put(OUT_HAISO_WAY_CD, JFUStrConst.CD01148_1);
		if (eKU0011B090List == null || eKU0011B090List.size() == 0)
		{
			return resultMap;
		}

		// ■工事会社配送
		// サービス契約番号をKEYに検索。ネットの新設は最大１件の取得。
		for (int idx = 0; idx < eKU0011B090List.size(); idx++)
		{
			HashMap childMap = (HashMap)eKU0011B090List.get(idx);

			String kojiak_no = (String)childMap.get(EKU0011B090CBSMsg1List.KOJIAK_NO);
			String kojiakSbtCd = (String)childMap.get(EKU0011B090CBSMsg1List.KOJIAK_SBT_CD);
			String kojiakStat = (String)childMap.get(EKU0011B090CBSMsg1List.KOJIAK_STAT);
			String kojiUkOptntyIdoDiv = (String)childMap.get(EKU0011B090CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV);
			String haisoSakseiZumiFlg = (String)childMap.get(EKU0011B090CBSMsg1List.HAISO_SAKSEI_ZUMI_FLG);
			if (KOJI_SONOTA.contains(kojiakSbtCd) && JFUStrConst.CD00474_130.equals(kojiakStat))
			{
				continue;
			}
			if (!KOJI_SINSETSU.contains(kojiakSbtCd))
			{
				continue;
			}
			if (!KOJI_STA_KOJIHAISO.contains(kojiakStat))
			{
				continue;
			}
			if (!KOJI_UK_OPTNTY_IDO.contains(kojiUkOptntyIdoDiv))
			{
				continue;
			}
			if (!FLG_OFF.contains(haisoSakseiZumiFlg))
			{
				continue;
			}
			resultMap.put(OUT_KOJIAK_NO, (String)childMap.get(EKU0011B090CBSMsg1List.KOJIAK_NO));
			resultMap.put(OUT_KOJIAK_SBT_CD, (String)childMap.get(EKU0011B090CBSMsg1List.KOJIAK_SBT_CD));
			resultMap.put(OUT_KOJI_UK_OPTNTY_IDO_DIV, (String)childMap.get(EKU0011B090CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV));
			resultMap.put(OUT_KOJIAK_STAT, (String)childMap.get(EKU0011B090CBSMsg1List.KOJIAK_STAT));
			resultMap.put(OUT_HAISO_SAKSEI_ZUMI_FLG, (String)childMap.get(EKU0011B090CBSMsg1List.HAISO_SAKSEI_ZUMI_FLG));
			resultMap.put(OUT_HAISO_WAY_CD, (String)JFUStrConst.CD01148_2);

			// ■工事会社配送用の住所を取得する。
			// ※既存の工事案件から、工事案件番号に該当する機器の情報を取得する。
			HashMap<String, HashMap<String, String>> kojiKikiMap = getYukoKojiRenkeiData(handle, param, fixedText, kojiak_no);
			getKojiHaisoJyusho(handle, param, fixedText, kojiKikiMap, resultMap);
			printDebugLog("■■■ 工事会社配送の送付先住所 ■■■\r\n" + JFUBPCommon.mapDebug(JFUStrConst.EMPTY, kojiKikiMap, JFUStrConst.EMPTY));

		}

		return resultMap;
	}

	/**
	 * 既存の機器提供サービス契約から、工事会社配送時の住所を取得する。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kojiKikiMap 工事案件対象宅内機器に登録されている機器のKEY情報（新設のみ）
	 * @param resultMap 返却情報
	 * @return 返却情報
	 * @throws Exception 
	 */
	private HashMap<String, Object> getKojiHaisoJyusho(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, HashMap<String, String>> kojiKikiMap,
			HashMap<String, Object> resultMap) throws Exception
	{

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 既存工事で有効なデータを取得
		if (kojiKikiMap == null || kojiKikiMap.size() == 0)
		{
			return resultMap;
		}

		Set<Entry<String, HashMap<String, String>>> kojiKikiMapSet = kojiKikiMap.entrySet();
		String updDtm = JFUStrConst.EMPTY;
		// ■工事案件対象宅内機器に登録されている機器のKEY情報を元に、検索処理を行う。

		for (Iterator iterator = kojiKikiMapSet.iterator(); iterator.hasNext();)
		{
			Entry<String, HashMap<String, String>> entry = (Entry<String, HashMap<String, String>>)iterator.next();

			HashMap<String, String> keyMap = entry.getValue();
			String kikiChgNo = convNull(keyMap, "chge_kiki_chg_no");
			String kktkSvcKeiNo = convNull(keyMap, "kktk_svc_kei_no");

			// ■機器提供サービス契約一覧照会(接続機器情報)
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_EKK0341B029);
			// 上りマッピング
			setInMapEKK0341B029(param, fixedText, kktkSvcKeiNo, kikiChgNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行「機器提供サービス契約一覧照会(接続機器情報)) 」
			executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0341B029, TEMPLATE_ID_EKK0341B029_DETAIL, IN_COLUMN_LIST_EKK0341B029, ERROR_COLUMN_EKK0341B029);
			List<HashMap> kikiList = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0341B029), TEMPLATE_ID_EKK0341B029_DETAIL);

			if (kikiList == null || kikiList.size() == 0)
			{
				continue;
			}
			for (HashMap kikiMap : kikiList)
			{
				String currentUpdDtm = convNull(kikiMap, EKK0341B029CBSMsg1List.UPD_DTM);
				// 更新年月日が最新のものを取得する。
				if (updDtm.compareTo(currentUpdDtm) > 0)
				{
					continue;
				}
				String pcd = convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SOHUS_PCD);
				// 住所は必ず設定されているはず
				if (JFUBPCommon.isNull(pcd))
				{
					continue;
				}
				updDtm = currentUpdDtm;
				// 工事会社配送の情報を取得する
				resultMap.put(EKK0341B029CBSMsg1List.KKTK_SVC_KEI_NO, convNull(kikiMap, EKK0341B029CBSMsg1List.KKTK_SVC_KEI_NO)); //機器提供サービス契約番号
				resultMap.put(EKK0341B029CBSMsg1List.GENE_ADD_DTM, convNull(kikiMap, EKK0341B029CBSMsg1List.GENE_ADD_DTM)); //世代登録年月日時分秒
				resultMap.put(EKK0341B029CBSMsg1List.KKTK_SVC_KEI_STAT, convNull(kikiMap, EKK0341B029CBSMsg1List.KKTK_SVC_KEI_STAT)); //機器提供サービス契約ステータス
				resultMap.put(EKK0341B029CBSMsg1List.KKTK_SVC_CD, convNull(kikiMap, EKK0341B029CBSMsg1List.KKTK_SVC_CD)); //機器提供サービスコード
				resultMap.put(EKK0341B029CBSMsg1List.UPD_DTM, updDtm); //更新年月日時分秒

				resultMap.put(EKK0341B029CBSMsg1List.KIKI_SOHUS_NM, convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SOHUS_NM)); //機器送付先名
				resultMap.put(EKK0341B029CBSMsg1List.KIKI_SOHUS_KANA, convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SOHUS_KANA)); //機器送付先カナ名
				resultMap.put(EKK0341B029CBSMsg1List.KIKI_SOHUS_AD_CD, convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SOHUS_AD_CD)); //機器送付先住所コード
				resultMap.put(EKK0341B029CBSMsg1List.KIKI_SOHUS_PCD, convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SOHUS_PCD)); //機器送付先郵便番号
				resultMap.put(EKK0341B029CBSMsg1List.KIKI_SOHUS_STATE_NM, convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SOHUS_STATE_NM)); //機器送付先都道府県名
				resultMap.put(EKK0341B029CBSMsg1List.KIKI_SOHUS_CITY_NM, convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SOHUS_CITY_NM)); //機器送付先市区町村名
				resultMap.put(EKK0341B029CBSMsg1List.KIKI_SOHUS_OAZTSU_NM, convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SOHUS_OAZTSU_NM)); //機器送付先大字通称名
				resultMap.put(EKK0341B029CBSMsg1List.KIKI_SOHUS_AZCHO_NM, convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SOHUS_AZCHO_NM)); //機器送付先字丁目名
				resultMap.put(EKK0341B029CBSMsg1List.KIKI_SOHUS_BNCHIGO, convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SOHUS_BNCHIGO)); //機器送付先番地号
				resultMap.put(EKK0341B029CBSMsg1List.KIKI_SOHUS_ADRTTM, convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SOHUS_ADRTTM)); //機器送付先住所補記・建物名
				resultMap.put(EKK0341B029CBSMsg1List.KIKI_SOHUS_ADRRM, convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SOHUS_ADRRM)); //機器送付先住所補記・部屋番号
				resultMap.put(EKK0341B029CBSMsg1List.KIKI_SHS_AD_MAN_INPUT_FLG, convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SHS_AD_MAN_INPUT_FLG)); //機器送付先住所手動入力フラグ
				resultMap.put(EKK0341B029CBSMsg1List.KIKI_SOHUS_TELNO, convNull(kikiMap, EKK0341B029CBSMsg1List.KIKI_SOHUS_TELNO)); //機器送付先電話番号
			}

		}
		
		return resultMap;
	}

	/**
	 * EKK0341B029_機器提供サービス契約一覧照会（機器変更番号）の上りマッピング処理です。
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param kikiChgNo 機器変更番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0341B029(IRequestParameterReadWrite param, String fixedText, String kktkSvcKeiNo, String kikiChgNo) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿機器提供サービス契約番号
		inMap.put(EKK0341B029CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
		// ＫＥＹ＿機器変更番号
		inMap.put(EKK0341B029CBSMsg.KEY_KIKI_CHG_NO, kikiChgNo);
	}

	/**
	 * 工事会社配送か判定
	 * 
	 * <br>
	 * @param judgeMap 判定結果情報
	 * @return true：工事会社配送、false：お客様直送
	 * @throws RequestParameterException
	 */
	private boolean isKojiHaiso(HashMap<String, Object> judgeMap) throws RequestParameterException
	{

		String haisoWayCd = (String)judgeMap.get(OUT_HAISO_WAY_CD);
		if (JFUStrConst.CD01148_2.equals(haisoWayCd))
		{
			// 工事会社配送
			return true;
		}
		return false;
	}

	/**
	 * 既存の工事連携情報を取得
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kojiAkNoAf 工事案件番号
	 * @return 工事連携情報
	 * @throws Exception 
	 */
	private HashMap<String, HashMap<String, String>> getYukoKojiRenkeiData(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String kojiAkNoAf) throws Exception
	{
		// 変更番号で一意になるのでキーとしてデータを保持します。
		HashMap<String, HashMap<String, String>> maxHoji = new HashMap<String, HashMap<String, String>>();

		String kikiChgNo = JFUStrConst.EMPTY;
		String wkKkojiakTrgtTaknkikiNo = JFUStrConst.EMPTY;
		// 設置撤去フラグ取得
		String stcTekkyoFlg = JFUStrConst.EMPTY;
		// 工事案件対象宅内機器ステータス
		String kojiakTrgtTaknkikiStat = JFUStrConst.EMPTY;
		// 工事案件番号
		String kojiak_no = JFUStrConst.EMPTY;
		// 工事案件対象宅内機器番号
		String kojiak_trgt_taknkiki_no = JFUStrConst.EMPTY;
		// 機器提供サービス契約番号
		String kktk_svc_kei_no = JFUStrConst.EMPTY;

		// ■EKU0141B020：工事案件対象宅内機器一覧照会２
		List<HashMap> eku0141b020cbsMsg1list = execEKU0141B020(handle, param, fixedText, kojiAkNoAf);

		// 工事案件対象宅内機器一覧照会2から機器情報を取得します。
		if (eku0141b020cbsMsg1list != null && 0 < eku0141b020cbsMsg1list.size())
		{
			for (HashMap eku0141b020cbsMsg : eku0141b020cbsMsg1list)
			{
				// 設置撤去フラグ取得
				stcTekkyoFlg = convNull(eku0141b020cbsMsg, EKU0141B020CBSMsg1List.STC_TEKKYO_FLG);

				// 工事案件対象宅内機器ステータス
				kojiakTrgtTaknkikiStat = convNull(eku0141b020cbsMsg, EKU0141B020CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_STAT);

				// 工事案件番号
				kojiak_no = convNull(eku0141b020cbsMsg, EKU0141B020CBSMsg1List.KOJIAK_NO);

				// 工事案件対象宅内機器番号
				kojiak_trgt_taknkiki_no = convNull(eku0141b020cbsMsg, EKU0141B020CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_NO);

				// 機器提供サービス契約番号
				kktk_svc_kei_no = convNull(eku0141b020cbsMsg, EKU0141B020CBSMsg1List.KKTK_SVC_KEI_NO);

				// （なし）110または撤去（9）は連携されていないため読み飛ばします。
				if ("110".equals(kojiakTrgtTaknkikiStat) || "9".equals(stcTekkyoFlg))
				{
					continue;
				}
				// 工事対象宅内機器に連携されている機器変更番号を取得します。
				kikiChgNo = getKikiChgNo(eku0141b020cbsMsg);

				if (JFUStrConst.EMPTY.equals(kikiChgNo))
				{
					continue;
				}

				if (maxHoji.containsKey(kikiChgNo))
				{
					HashMap<String, String> workmap = maxHoji.get(kikiChgNo);

					// 格納されている工事案件対象宅内機器番号
					if (workmap != null)
					{
						wkKkojiakTrgtTaknkikiNo = getNullToStr(workmap.get(EKU0141B020CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_NO));
					}

					// 工事案件対象宅内機器番号の大きいほうを最新とします。
					// ワークより大きい場合入れ替えます。
					if (kojiak_trgt_taknkiki_no.compareTo(wkKkojiakTrgtTaknkikiNo) > 0)
					{
						HashMap<String, String> kikiMap = new HashMap<String, String>();
						kikiMap.put(EKU0141B020CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_NO, kojiak_trgt_taknkiki_no);
						kikiMap.put(EKU0141B020CBSMsg1List.KOJIAK_NO, kojiak_no);
						kikiMap.put(EKU0141B020CBSMsg1List.KKTK_SVC_KEI_NO, kktk_svc_kei_no);
						kikiMap.put(EKU0141B020CBSMsg1List.CHGE_KIKI_CHG_NO, kikiChgNo);
						maxHoji.put(kikiChgNo, kikiMap);
					}
				}
				else
				{
					HashMap<String, String> kikiMap = new HashMap<String, String>();
					kikiMap.put(EKU0141B020CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_NO, kojiak_trgt_taknkiki_no);
					kikiMap.put(EKU0141B020CBSMsg1List.KOJIAK_NO, kojiak_no);
					kikiMap.put(EKU0141B020CBSMsg1List.KKTK_SVC_KEI_NO, kktk_svc_kei_no);
					kikiMap.put(EKU0141B020CBSMsg1List.CHGE_KIKI_CHG_NO, kikiChgNo);
					maxHoji.put(kikiChgNo, kikiMap);
				}
			}
		}

		return maxHoji;
	}

	/**
	 * 工事対象宅内機器連携機器変更番号取得
	 * 変更機器変更番号に設定されている場合、そのまま返却
	 * 変更機器変更番号に設定されていない場合、予定機器変更番号を返却
	 * 
	 * @param eku0141b020cbsMsg EKU0141B020：工事案件対象宅内機器一覧照会２の明細
	 * @return 機器変更番号
	 */
	private String getKikiChgNo(HashMap eku0141b020cbsMsg)
	{
		String kikiChgNo = JFUStrConst.EMPTY;

		// 変更機器変更番号を取得
		kikiChgNo = convNull(eku0141b020cbsMsg, EKU0141B020CBSMsg1List.CHGE_KIKI_CHG_NO);

		if (!JFUStrConst.EMPTY.equals(kikiChgNo))
		{
			return kikiChgNo;
		}

		// 予定機器変更番号を取得
		kikiChgNo = convNull(eku0141b020cbsMsg, EKU0141B020CBSMsg1List.RSV_KIKI_CHG_NO);

		return kikiChgNo;
	}

	/**
	 * null値を空文字に変換
	 * 
	 * <br>
	 * @param dataMap データマップ
	 * @param itemName 項目名
	 * @return 項目値
	 */
	private String convNull(HashMap dataMap, String itemName)
	{
		String strWk = (String)dataMap.get(itemName);
		return JFUCommonUtil.nvl(strWk, JFUStrConst.EMPTY);
	}

	/**
	 * 工事案件対象宅内機器一覧照会２を取得。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param inKojiakNo 工事案件番号
	 * @return 工事案件対象宅内機器一覧照会明細
	 * @throws Exception
	 */
	private List<HashMap> execEKU0141B020(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String inKojiakNo) throws Exception
	{
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKU0141B020);
		// 上りマッピング
		setEKU0141B020(param, fixedText, inKojiakNo);

		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKU0141B020, TEMPLATE_ID_EKU0141B020_DETAIL, IN_COLUMN_LIST_EKU0141B020, ERROR_COLUMN_EKU0141B020);
		List<HashMap> resultList = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKU0141B020), TEMPLATE_ID_EKU0141B020_DETAIL);

		return resultList;
	}

	/**
	 * 上りマッピング項目設定(工事案件対象宅内機器一覧照会２)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param inKojiakNo 工事案件番号
	 * @throws Exception 例外
	 */
	private void setEKU0141B020(IRequestParameterReadWrite param, String fixedText, String inKojiakNo) throws Exception
	{
		// リクエストデータ
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// 機能コード
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// 機器オプションサービス契約番号
		dataMap.put(EKU0141B020CBSMsg.KEY_KOJIAK_NO, inKojiakNo);

		dataMap.put(EKU0141B020CBSMsg.SEARCH_TYPE, "1");
		dataMap.put(EKU0141B020CBSMsg.MAX_SEARCH_NUM, "10000");
		dataMap.put(EKU0141B020CBSMsg.TOTAL_PAGE_NUM, "1");

	}

	/**
	 * null値を空文字に変換
	 * 
	 * <br>
	 * @param strWk
	 * @return 値
	 */
	private String getNullToStr(String strWk)
	{
		return JFUCommonUtil.nvl(strWk, JFUStrConst.EMPTY);
	}

	/**
	 * チェック処理
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}
}
