/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUSmartLinAdd2CC
*   ソースファイル名：JFUSmartLinAdd2CC.java
*   作成者          ：富士通
*   日付            ：2012年09月13日
*＜機能概要＞
*  eoスマートリンク登録コモンコンポーネント部品です。(新規・追加登録用)
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00       2012/09/13   FJ）大塚    新規作成
*   v4.00       2012/10/18   FJ）齋藤   【IT1-2012-0001299】割賦契約登録障害対応
*   v4.01       2012/10/23   FJ）齋藤   【IT1-2012-0001250】機器提供サービス．機器付加情報コード設定値障害対応
*   v4.02       2013/01/07   FJ）齋藤   【障害対応:No.31】機器提供サービス契約.宅内機器型式コード登録障害対応
*   v4.03       2013/01/28   FJ）大塚   【障害対応:No.239】機器提供サービス契約.機器設置先登録障害対応
*   v4.04       2013/04/26   FJ）大塚   【IT1-2013-00001074】受付担当者名取得先変更対応
*   v6.00       2013/10/09   FJ) 近藤   【ANK-1580-00-00】複数端末・割賦(36回)追加対応
*   v9.00       2014/04/30   FJ) 岡井   【ANK-2054-00-00】スマートリンク端末補償
*   v9.00       2014/05/15   FJ) 川瀬   【ANK-2054-00-00】スマートリンク端末補償
*   v33.00.00   2017/08/02   FJ) 謝     【ANK-3217-00-00】GHサービス開始対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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 eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0341D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0361D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2331B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2331B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2541D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2811D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg1List;

/**
 * eoスマートリンク登録コモンコンポーネント部品です。
 * 
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUSmartLinAdd2CC extends JFUBaseCC
{
	// IT1-2013-00001074 2013/04/26 Otsuka start
	/* ■□ 業務パラメータ管理一意照会 ■□ */
	/** テンプレートID(業務パラメータ管理一意照会) */
	private static final String TEMPLATE_ID_EZM0321A010 = "EZM0321A010";

	/** テンプレートID(業務パラメータ管理一意照会明細) */
	private static final String TEMPLATE_ID_DETAIL_EZM0321A010 = "EZM0321A010CBSMsg1List";

	/** IN項目リスト(業務パラメータ管理一意照会) */
	private static final List<String> IN_COLUMN_LIST_EZM0321A010 = Arrays.asList(EZM0321A010CBSMsg.KEY_WORK_PARAM_ID);

	/** 関連チェックエラー項目(業務パラメータ管理一意照会) */
	private static final String ERROR_COLUMN_EZM0321A010 = EZM0321A010CBSMsg.KEY_WORK_PARAM_ID_ERR;
	/** SC実行結果取得キー(業務パラメータ管理一意照会) */
	private static final String TEMP_TEMPLATE_KEY_EZM0321A010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EZM0321A010 + TEMP_TEMPLATE_PRIFIX_SEP + "1";
	// IT1-2013-00001074 2013/04/26 Otsuka end

	/* ■□ オプションサービス契約<ISP>登録 ■□ */
	/** テンプレートID(オプションサービス契約＜ISP＞登録) */
	private static final String TEMPLATE_ID_EKK0361D010 = "EKK0361D010";

	/** IN項目リスト(オプションサービス契約＜ISP＞登録) */
	private static final List<String> IN_COLUMN_LIST_EKK0361D010 =
			Arrays.asList(EKK0361D010CBSMsg.OP_SVC_CD, EKK0361D010CBSMsg.PCRS_CD, EKK0361D010CBSMsg.PPLAN_CD, EKK0361D010CBSMsg.OYA_KEI_SKBT_CD,
					EKK0361D010CBSMsg.SVC_KEI_NO, EKK0361D010CBSMsg.SYSID, EKK0361D010CBSMsg.MSKM_DTL_NO, EKK0361D010CBSMsg.IDO_DIV,
					EKK0361D010CBSMsg.SEIKY_KEI_NO, EKK0361D010CBSMsg.UPD_DTM_BF);

	/** SC実行結果取得キー(オプションサービス契約＜ISP＞登録) */
	private static final String TEMP_TEMPLATE_KEY_KK0361D010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0361D010 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 機器提供サービス登録 ■□ */
	/** テンプレートID(機器提供サービス登録) */
	private static final String TEMPLATE_ID_EKK0341D010 = "EKK0341D010";
	/** テンプレートID(機器提供サービス登録) */
	private static final String EKK0341D010_SML = "EKK0341D010Sml";

	/** IN項目リスト(機器提供サービス登録) */
	private static final List<String> IN_COLUMN_LIST_EKK0341D010 =
			Arrays.asList(EKK0341D010CBSMsg.KKTK_SVC_CD, EKK0341D010CBSMsg.PCRS_CD, EKK0341D010CBSMsg.PPLAN_CD, EKK0341D010CBSMsg.KKTK_SBT_CD,
					EKK0341D010CBSMsg.HAMBAI_SBT_CD, EKK0341D010CBSMsg.TAKNKIKI_SBT_CD, EKK0341D010CBSMsg.TAKNKIKI_MODEL_CD,
					EKK0341D010CBSMsg.OYA_KEI_SKBT_CD, EKK0341D010CBSMsg.SVC_KEI_NO, EKK0341D010CBSMsg.OP_SVC_KEI_NO, EKK0341D010CBSMsg.SYSID,
					EKK0341D010CBSMsg.MSKM_DTL_NO, EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD, EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD,
					EKK0341D010CBSMsg.KIKI_SOHUS_NM, EKK0341D010CBSMsg.KIKI_SOHUS_KANA, EKK0341D010CBSMsg.KIKI_SOHUS_AD_CD,
					EKK0341D010CBSMsg.KIKI_SOHUS_PCD, EKK0341D010CBSMsg.KIKI_SOHUS_STATE_NM, EKK0341D010CBSMsg.KIKI_SOHUS_CITY_NM,
					EKK0341D010CBSMsg.KIKI_SOHUS_OAZTSU_NM, EKK0341D010CBSMsg.KIKI_SOHUS_AZCHO_NM, EKK0341D010CBSMsg.KIKI_SOHUS_BNCHIGO,
					EKK0341D010CBSMsg.KIKI_SOHUS_ADRTTM, EKK0341D010CBSMsg.KIKI_SOHUS_ADRRM, EKK0341D010CBSMsg.KIKI_SOHUS_TELNO,
					EKK0341D010CBSMsg.MANSION_BUKKEN_NO, EKK0341D010CBSMsg.KIKI_SOHUS_KSH_AD_SAI_FLG, EKK0341D010CBSMsg.KIKI_SHS_KBT_SHITEI_FLG,
					EKK0341D010CBSMsg.KIKI_STC_SAKI_AD_CD, EKK0341D010CBSMsg.KIKI_STC_SAKI_PCD, EKK0341D010CBSMsg.KIKI_STC_SAKI_STATE_NM,
					EKK0341D010CBSMsg.KIKI_STC_SAKI_CITY_NM, EKK0341D010CBSMsg.KIKI_STC_SAKI_OAZTSU_NM, EKK0341D010CBSMsg.KIKI_STC_SAKI_AZCHO_NM,
					EKK0341D010CBSMsg.KIKI_STC_SAKI_BNCHIGO, EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRTTM, EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRRM,
					EKK0341D010CBSMsg.KIKI_STC_SK_KSH_AD_SAI_FLG, EKK0341D010CBSMsg.KIKI_STC_SK_TELNO, EKK0341D010CBSMsg.AD_MI_FIX_FLG,
					EKK0341D010CBSMsg.HAISO_DIV, EKK0341D010CBSMsg.IDO_DIV, EKK0341D010CBSMsg.KIKI_HUKA_INFO_CD,
					EKK0341D010CBSMsg.KIKI_SHS_AD_MAN_INPUT_FLG, EKK0341D010CBSMsg.SEIKY_KEI_NO, EKK0341D010CBSMsg.UPD_DTM_BF);

	/** 機器提供サービス契約リスト名 */
	private static final String EKK0341D010SML_LIST = "EKK0341D010SmlList";

	/** SC実行結果取得キー(機器提供サービス登録) */
	private static final String TEMP_TEMPLATE_KEY_EKK0341D010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0341D010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 割賦契約登録 ■□ */
	/** テンプレートID(割賦契約登録) */
	private static final String TEMPLATE_ID_EKK2541D010 = "EKK2541D010";

	/** IN項目リスト(割賦契約登録) */
	private static final List<String> IN_COLUMN_LIST_EKK02541D010 =
			Arrays.asList(EKK2541D010CBSMsg.KAP_PLAN_CD, EKK2541D010CBSMsg.KKTK_SVC_KEI_NO, EKK2541D010CBSMsg.ADD_JI_KIKI_CHG_NO,
					EKK2541D010CBSMsg.MSKM_DTL_NO, EKK2541D010CBSMsg.IDO_DIV, EKK2541D010CBSMsg.KAP_PAY_ZAN_CNT,
					EKK2541D010CBSMsg.TNMT_BUY_TCHISHO_OPUT_SKCD, EKK2541D010CBSMsg.PRMOP_REKEIJI_WRBHIAPL_FLG,
					EKK2541D010CBSMsg.TNMT_BUY_UK_TNTSHA_NM);

	/* 2013/01/07 Y.Saitou ADD-START */
	/* ■□ サービス別機器型式構成条件一覧照会SC ■□ */
	/** テンプレートID(サービス別機器型式構成条件一覧照会) */
	private static final String TEMPLATE_ID_EKK2331B001 = "EKK2331B001";
	/** テンプレートID(サービス別機器型式構成条件一覧照会明細) */
	private static final String TEMPLATE_ID_EKK2331B001_DETAIL = EKK2331B001CBSMsg.EKK2331B001CBSMSG1LIST;
	/** IN項目リスト(サービス別機器型式構成条件一覧照会) */
	private static final List<String> IN_COLUMN_LIST_EKK2331B001 =
			Arrays.asList(EKK2331B001CBSMsg.KEY_SVCB_KKMDST_JKN_SBT_CD, EKK2331B001CBSMsg.KEY_JKN_SETTE_TANI_CD, EKK2331B001CBSMsg.KEY_PRC_GRP_CD,
					EKK2331B001CBSMsg.KEY_PCRS_CD, EKK2331B001CBSMsg.KEY_JKN_JDG_MKM_KIND_SKBT_CD, EKK2331B001CBSMsg.KEY_TAKNKIKI_MODEL_CD_1,
					EKK2331B001CBSMsg.KEY_TAKNKIKI_MODEL_CD_2);
	/** 関連チェックエラー項目(サービス別機器型式構成条件一覧照会) */
	private static final String ERROR_COLUMN_EKK2331B001 = EKK2331B001CBSMsg.KEY_SVCB_KKMDST_JKN_SBT_CD;
	/** SC実行結果取得キー(サービス別機器型式構成条件一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_EKK2331B001 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK2331B001 + TEMP_TEMPLATE_PRIFIX_SEP + "1";
	/* 2013/01/07 Y.Saitou ADD-END */

	/* ■□ 機器オプションサービス契約登録SC ■□ */
	/** テンプレートID(機器オプションサービス契約登録) */
	private static final String TEMPLATE_ID_EKK2811D010 = "EKK2811D010";
	/** テンプレートID(機器オプションサービス契約登録明細) */
	private static final String TEMPLATE_ID_EKK2811D010_DTL = null;
	/** IN項目リスト(機器オプションサービス契約登録) */
	private static final List<String> IN_COLUMN_LIST_EKK2811D010 =
			Arrays.asList(EKK2811D010CBSMsg.KKOP_SVC_CD, EKK2811D010CBSMsg.PCRS_CD, EKK2811D010CBSMsg.PPLAN_CD, EKK2811D010CBSMsg.KKTK_SVC_KEI_NO,
					EKK2811D010CBSMsg.SYSID, EKK2811D010CBSMsg.MSKM_DTL_NO, EKK2811D010CBSMsg.RSV_APLY_YMD, EKK2811D010CBSMsg.SEIKY_KEI_NO,
					EKK2811D010CBSMsg.IDO_DIV, EKK2811D010CBSMsg.UPD_DTM_BF);
	/** 関連チェックエラー項目(機器オプションサービス契約登録) */
	private static final String ERROR_COLUMN_EKK2811D010 = null;

	// ■項目ID
	/** タブレット端末 端末補償 */
	private static final String TABLET_TANMT_COMPS = "tablet_tanmt_comps";
	/** タブレット端末 端末補償料金プランコード */
	private static final String TABLET_TANMT_COMPS_PPLAN_CD = "tablet_tanmt_comps_pplan_cd";

	/** 作業マップ名 */
	/** JFUAddSkkSCWork */
	private static final String CC_WORK_AREA_NAME_SKK = "JFUAddSkkSCWork";
	/** JFUAddMskmSCWork */
	private static final String CC_WORK_AREA_NAME_MSKM = "JFUAddMskmSCWork";
	/** JFUAddKeishaServiceCCWork */
	private static final String CC_WORK_AREA_NAME_KEISHA = "JFUAddKeishaServiceCCWork";
	/** JFUAddSvcKeiNetCCWork */
	private static final String CC_WORK_AREA_NAME_NET = "JFUAddSvcKeiNetCCWork";

// ANK-3217-00-00 ADD START
	/** eoスマートリンク登録2CC */
	private static final String JFU_SMART_LIN_ADD2_CC = "JFUSmartLinAdd2CC";
	
	/** ＧＨ端末 */
	private static final String GH_TANMT = "gh_tanmt";
// ANK-3217-00-00 ADD END

	/**
	 * eoスマートリンク申込み登録処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception
	 */
	public IRequestParameterReadWrite addSmartLinkMskm(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 機能コードが設定されている場合、且つ、機能コードが"2"(チェックのみ)の場合は、登録・更新処理を実行しない。
		String funcCd = getFuncCode(param, TEMPLATE_ID_EKK0361D010);

		if (null != funcCd && JPCModelConstant.FUNC_CD_2.equals(funcCd))
		{
			return param;
		}

		// ユーザデータ取得

		// オプションサービス契約＜ISP＞登録
		HashMap<String, Object> opSvcKeiMap = (HashMap<String, Object>)param.getData(TEMPLATE_ID_EKK0361D010);

		// 機器提供サービス登録
		HashMap<String, Object> kktkSvcMap = (HashMap<String, Object>)param.getData(EKK0341D010_SML);

		// 割賦契約登録
		HashMap<String, Object> kapKeiMap = (HashMap<String, Object>)param.getData(TEMPLATE_ID_EKK2541D010);

		// --------------------------------------
		// ユーザデータ存在チェック
		// --------------------------------------
		if (!mapChk(opSvcKeiMap, kktkSvcMap, kapKeiMap)) // IT1-2013-00001074 2013/04/26 Otsuka
		{
			return param;
		}

		Boolean iktFlg = false; // true:一括 false:一括でない
		// 一括登録用に値を取得する。
		HashMap<String, String> iktMap = new HashMap<String, String>();

		// サービス契約番号が設定されていない場合
		if ("".equals(opSvcKeiMap.get(EKK0361D010CBSMsg.SVC_KEI_NO)) || opSvcKeiMap.get(EKK0361D010CBSMsg.SVC_KEI_NO) == null)
		{
			// 一括フラグをtrue(一括登録である)
			iktFlg = true;

			// ---sysid---
			if (getWorkMapValue(param, "sysid", CC_WORK_AREA_NAME_KEISHA) != null)
			{
				iktMap.put("sysid", getWorkMapValue(param, "sysid", CC_WORK_AREA_NAME_KEISHA));
			}

			// ---請求契約番号---
			if (getWorkMapValue(param, "seiky_kei_no", CC_WORK_AREA_NAME_SKK) != null)
			{
				iktMap.put("seiky_kei_no", getWorkMapValue(param, "seiky_kei_no", CC_WORK_AREA_NAME_SKK));
			}

			// ---申込明細番号---
			if (getWorkMapValue(param, "ekk0091_mskm_dtl_no", CC_WORK_AREA_NAME_MSKM) != null)

			{
				iktMap.put("mskm_dtl_no", getWorkMapValue(param, "ekk0091_mskm_dtl_no", CC_WORK_AREA_NAME_MSKM));
			}

			// ---サービス契約番号---
			if (getWorkMapValue(param, "svc_kei_no", CC_WORK_AREA_NAME_NET) != null)
			{
				iktMap.put("svc_kei_no", getWorkMapValue(param, "svc_kei_no", CC_WORK_AREA_NAME_NET));
			}
		}

		// IT1-2013-00001074 2013/04/26 Otsuka start
		// ●業務パラメータ管理一意照会
		String tnmt_buy_uk_tntsha_nm = "";

		// 上りマッピング
		setInMapWorkParam(param, TEMPLATE_ID_EZM0321A010);

		// サービスIF実行
		executeSC(handle, param, TEMPLATE_ID_EZM0321A010, TEMPLATE_ID_EZM0321A010, TEMPLATE_ID_DETAIL_EZM0321A010, IN_COLUMN_LIST_EZM0321A010,
				ERROR_COLUMN_EZM0321A010);

		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(TEMPLATE_ID_EZM0321A010);

		// 結果取得
		if (isExistsTemplateDetail(inMap, TEMP_TEMPLATE_KEY_EZM0321A010, TEMPLATE_ID_DETAIL_EZM0321A010))
		{
			// 端末購入受付担当者名
			tnmt_buy_uk_tntsha_nm =
					getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_EZM0321A010, TEMPLATE_ID_DETAIL_EZM0321A010,
							EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE, 0);
		}
		// IT1-2013-00001074 2013/04/26 Otsuka end

		// ●オプションサービス契約<ISP>登録

// ANK-3217-00-00 MOD START
//		// 上りマッピング
//		setInMapOpSvcKeiIsp(param, TEMPLATE_ID_EKK0361D010, opSvcKeiMap, iktFlg, iktMap);
//		// サービスIF実行
//		executeSC(handle, param, TEMPLATE_ID_EKK0361D010, TEMPLATE_ID_EKK0361D010, BLANK, IN_COLUMN_LIST_EKK0361D010, BLANK);
//
//		// 下りマッピング
//		this.setOutMapOpSvcKeiIsp(param, TEMPLATE_ID_EKK0361D010);
//
//		// 処理結果取得
//		HashMap resultMap = (HashMap)opSvcKeiMap.get(TEMP_TEMPLATE_KEY_KK0361D010);
//		// オプションサービス契約番号
//		//String opSvcKeiNo = (String)resultMap.get(EKK0361D010CBSMsg.OP_SVC_KEI_NO);
//
//		// 更新年月日時分秒
//		String updDtmBf = (String)resultMap.get(EKK0361D010CBSMsg.UPD_DTM);
		// 更新年月日時分秒
		String updDtmBf = JFUStrConst.EMPTY;
		
		// ＧＨ端末
		String ghTanmt = JFUStrConst.EMPTY;
		
		// eoスマートリンク登録マップ
		HashMap<String, Object> smartLinAddMap = (HashMap<String, Object>)param.getData(JFU_SMART_LIN_ADD2_CC);
		
		if (null != smartLinAddMap)
		{
			ghTanmt = (String)smartLinAddMap.get(GH_TANMT);
		}
		
		// ＧＨ端末が"1"(購入する)以外の場合、マッピングを行う
		if (!JFUStrConst.GH_TANMT_BUY.equals(ghTanmt))
		{
			// 上りマッピング
			setInMapOpSvcKeiIsp(param, TEMPLATE_ID_EKK0361D010, opSvcKeiMap, iktFlg, iktMap);
			// サービスIF実行
			executeSC(handle, param, TEMPLATE_ID_EKK0361D010, TEMPLATE_ID_EKK0361D010, BLANK, IN_COLUMN_LIST_EKK0361D010, BLANK);

			// 下りマッピング
			this.setOutMapOpSvcKeiIsp(param, TEMPLATE_ID_EKK0361D010);

			// 処理結果取得
			HashMap resultMap = (HashMap)opSvcKeiMap.get(TEMP_TEMPLATE_KEY_KK0361D010);
			
			// 更新年月日時分秒
			updDtmBf = (String)resultMap.get(EKK0361D010CBSMsg.UPD_DTM);
		}
		else
		{
			// 更新年月日時分秒
			// 共有マップに登録している更新年月日時分秒があれば、そちらが優先
			String updDtm = (String)opSvcKeiMap.get(EKK0361D010CBSMsg.UPD_DTM_BF);
			updDtmBf = JFUBPCommon.getNetSvkeiLastUpdDtm(param, updDtm);
		}
// ANK-3217-00-00 MOD END

		// -------------------------------------------------------------------------------------------------------

		ArrayList kktkSvcKeiList = (ArrayList)kktkSvcMap.get(EKK0341D010SML_LIST);
		HashMap<String, Object> kktkSvcKeiListMap = new HashMap<String, Object>();
		HashMap<String, Object> kktkSvcKeiMap = new HashMap<String, Object>();

		String kktk_svc_cd = "";
		String add_ji_kiki_chg_no = "";
		String taknkikiModelCd_2 = "";
		String tanmtCompsKktkSvcKeiNo = JFUStrConst.EMPTY;
		String idoDiv = JFUStrConst.EMPTY;
		/* 2013/01/07 Y.Saitou ADD */

		// 取得した機器提供サービス契約リストの件数分処理をループさせる
		// 1回目はタブレット、2回目はクレードル
		for (int i = 0; i < kktkSvcKeiList.size(); i++)
		{
			// クレードルが未設定の場合
			if (i != 0 && "".equals(taknkikiModelCd_2))
			{
				// 機器提供サービス契約の登録を行わない
				continue;
			}
			kktkSvcKeiListMap = (HashMap)kktkSvcKeiList.get(i);

			/* 2013/01/07 Y.Saitou MOD */
			// 上りマッピング
			setInMapKktkSvcKei(param, EKK0341D010_SML, kktkSvcKeiListMap, iktFlg, updDtmBf, iktMap, taknkikiModelCd_2);

			// サービスIF実行
			executeSC(handle, param, EKK0341D010_SML, TEMPLATE_ID_EKK0341D010, BLANK, IN_COLUMN_LIST_EKK0341D010, BLANK);

			// 下りマッピング
			this.setOutMapKktkSvcKei(param, EKK0341D010_SML);

			// 処理結果取得
			HashMap resultMap2 = (HashMap)kktkSvcMap.get(TEMP_TEMPLATE_KEY_EKK0341D010 + String.valueOf(i + 1));

			// 機器提供サービス契約番号
			kktk_svc_cd = (String)resultMap2.get(EKK0341D010CBSMsg.KKTK_SVC_KEI_NO);
			// 機器変更番号
			add_ji_kiki_chg_no = (String)resultMap2.get(EKK0341D010CBSMsg.KIKI_CHG_NO);

			// 1回目の機器提供サービス契約登録処理の場合
			if (i == 0)
			{
				// ２回目の処理のために更新年月日時分秒をセット
				updDtmBf = (String)resultMap2.get(EKK0341D010CBSMsg.UPD_DTM);
				// 端末補償登録用の機器提供サービス契約番号
				tanmtCompsKktkSvcKeiNo = (String)resultMap2.get(EKK0341D010CBSMsg.KKTK_SVC_KEI_NO);
				// 異動区分
				idoDiv = (String)resultMap2.get(EKK0341D010CBSMsg.IDO_DIV);
				// 機器情報マップを格納
				kktkSvcKeiMap = kktkSvcKeiListMap;
			}

			// ---割賦契約登録--- クレードルにはつけないらしい。
			if (i == 0)
			{
				// 上りマッピング
				setInMapKapKei(param, TEMPLATE_ID_EKK2541D010, kapKeiMap, kktk_svc_cd, add_ji_kiki_chg_no, iktFlg, tnmt_buy_uk_tntsha_nm, iktMap);
				// サービスIF実行
				executeSC(handle, param, TEMPLATE_ID_EKK2541D010, TEMPLATE_ID_EKK2541D010, BLANK, IN_COLUMN_LIST_EKK02541D010, BLANK);

				/* 2013/01/07 Y.Saitou ADD-START */
				// ★クレードルの宅内機器型式コードを取得
				// ●サービス別機器型式構成条件一覧照会SC
				// 上りマッピング
				setInMapSvcbKkmdstJkn(param, EKK0341D010_SML, kktkSvcMap);
				// サービスIF実行
				executeSC(handle, param, EKK0341D010_SML, TEMPLATE_ID_EKK2331B001, TEMPLATE_ID_EKK2331B001_DETAIL, IN_COLUMN_LIST_EKK2331B001,
						ERROR_COLUMN_EKK2331B001);
				// 結果取得
				if (isExistsTemplateDetail(kktkSvcMap, TEMP_TEMPLATE_KEY_EKK2331B001, TEMPLATE_ID_EKK2331B001_DETAIL))
				{
					// 宅内機器型式コード2
					taknkikiModelCd_2 =
							getTemplateListValue(kktkSvcMap, TEMP_TEMPLATE_KEY_EKK2331B001, TEMPLATE_ID_EKK2331B001_DETAIL,
									EKK2331B001CBSMsg1List.TAKNKIKI_MODEL_CD_2, 0);
				}
				/* 2013/01/07 Y.Saitou ADD-END */
			}
		}

		// ●端末補償登録処理(端末補償の申し込みがある場合のみ登録する)
		boolean tanmtCompsFlg = JFUStrConst.CD00002_1.equals((String)kktkSvcMap.get(TABLET_TANMT_COMPS));
		if(tanmtCompsFlg)
		{
			// ●タブレット端末 端末補償料金プランコード 取得
			String tanmtPplanCd = ((String)kktkSvcMap.get(TABLET_TANMT_COMPS_PPLAN_CD));

			// ●機器オプションサービス契約登録
			// 上りマッピング
			setEKK2811D010(param, EKK0341D010_SML, kktkSvcKeiMap, iktMap, tanmtCompsKktkSvcKeiNo, iktFlg, updDtmBf, tanmtPplanCd);
			// サービスIF実行
			executeSC(handle, param, EKK0341D010_SML, TEMPLATE_ID_EKK2811D010, TEMPLATE_ID_EKK2811D010_DTL,
					IN_COLUMN_LIST_EKK2811D010, ERROR_COLUMN_EKK2811D010);
			// 下りマッピング
			getEKK2811D010(param, EKK0341D010_SML);
		}

		return param;
	}

	// IT1-2013-00001074 2013/04/26 Otsuka start
	
	/**
	 * 上りマッピング項目設定(業務パラメータ管理一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapWorkParam(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ作成
		HashMap<String, Object> inMap = new HashMap<String, Object>();

		param.setData(TEMPLATE_ID_EZM0321A010, inMap);

		// 機能コード設定
		setFuncCode(param, TEMPLATE_ID_EZM0321A010, JPCModelConstant.FUNC_CD_1);
		// 検索エラーなし設定
		ignoreSearchError(param, TEMPLATE_ID_EZM0321A010);

		// ＫＥＹ＿業務パラメータＩＤ
		inMap.put(EZM0321A010CBSMsg.KEY_WORK_PARAM_ID, JFUStrConst.KK_TNMT_BUY_UK_WEB);
	}

	// IT1-2013-00001074 2013/04/26 Otsuka end

	/**
	 * 上りマッピング項目設定(オプションサービス契約＜ISP＞登録)
	 * 
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param ccMap
	 * @param iktFlg true:一括 false:一括でない
	 * @param iktMap
	 * @throws Exception 
	 */
	private void setInMapOpSvcKeiIsp(IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> ccMap, Boolean iktFlg,
			HashMap<String, String> iktMap) throws Exception
	{
		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// オプションサービスコード
		inMap.put(EKK0361D010CBSMsg.OP_SVC_CD, ccMap.get(EKK0361D010CBSMsg.OP_SVC_CD));
		// 料金コースコード
		inMap.put(EKK0361D010CBSMsg.PCRS_CD, ccMap.get(EKK0361D010CBSMsg.PCRS_CD));
		// 料金プランコード
		inMap.put(EKK0361D010CBSMsg.PPLAN_CD, ccMap.get(EKK0361D010CBSMsg.PPLAN_CD));
		// 親契約識別コード
		inMap.put(EKK0361D010CBSMsg.OYA_KEI_SKBT_CD, ccMap.get(EKK0361D010CBSMsg.OYA_KEI_SKBT_CD));

		// サービス契約番号
		if (!iktFlg)
		{
			inMap.put(EKK0361D010CBSMsg.SVC_KEI_NO, ccMap.get(EKK0361D010CBSMsg.SVC_KEI_NO));
		}
		else
		{
			// 一括登録の場合
			inMap.put(EKK0361D010CBSMsg.SVC_KEI_NO, iktMap.get("svc_kei_no"));
		}
		// SYSID
		if (!iktFlg)
		{
			inMap.put(EKK0361D010CBSMsg.SYSID, ccMap.get(EKK0361D010CBSMsg.SYSID));
		}
		else
		{
			// 一括の場合、お客様＜法人＞登録マップまたはお客様＜個人＞登録マップから取得する。
			inMap.put(EKK0361D010CBSMsg.SYSID, iktMap.get("sysid"));
		}

		// 申込明細番号
		if (!iktFlg)
		{
			inMap.put(EKK0361D010CBSMsg.MSKM_DTL_NO, ccMap.get(EKK0361D010CBSMsg.MSKM_DTL_NO));
		}
		else
		{
			// 一括の場合、申込登録マップから取得する。
			inMap.put(EKK0361D010CBSMsg.MSKM_DTL_NO, iktMap.get("mskm_dtl_no"));
		}

		// 異動区分
		inMap.put(EKK0361D010CBSMsg.IDO_DIV, ccMap.get(EKK0361D010CBSMsg.IDO_DIV));

		// 請求契約番号
		if (!iktFlg)
		{
			inMap.put(EKK0361D010CBSMsg.SEIKY_KEI_NO, ccMap.get(EKK0361D010CBSMsg.SEIKY_KEI_NO));
		}
		else
		{
			// 一括登録の場合
			inMap.put(EKK0361D010CBSMsg.SEIKY_KEI_NO, iktMap.get("seiky_kei_no"));
		}

		// 更新年月日時分秒(更新前)
		// 共有マップに登録している更新年月日時分秒があれば、そちらが優先
		String updDtm = (String)ccMap.get(EKK0361D010CBSMsg.UPD_DTM_BF);
		String updDtmBf = JFUBPCommon.getNetSvkeiLastUpdDtm(param, updDtm);
		
		inMap.put(EKK0361D010CBSMsg.UPD_DTM_BF, updDtmBf);

	}

	/**
	 * 上りマッピング項目設定(機器提供サービス契約登録)
	 * 
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param ccMap
	 * @param iktFlg 一括フラグ true:一括 false:一括でない
	 * @param updDtmBf 更新年月日時分秒
	 * @param iktMap 一括登録用Map
	 * @param taknkikiModelCd 宅内機器型式コード
	 * @throws RequestParameterException
	 */	
	private void setInMapKktkSvcKei(IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> ccMap, Boolean iktFlg,
			String updDtmBf, HashMap<String, String> iktMap, String taknkikiModelCd) throws RequestParameterException
	{
		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		HashMap useplaceAddressMap = null;
// ANK-4498-00-00 ADD START
		HashMap kikiSohusAddressMap = null;
// ANK-4498-00-00 ADD END
		/* 分割後の利用場所住所情報 */

		if (iktFlg)
		{
			// 全戸一括の場合
			useplaceAddressMap = (HashMap)param.getData("FUSV016102CC");
		}
		else
		{
			// 本登録の場合
			useplaceAddressMap = (HashMap)param.getData("FUSV016006CC");
		}
//ANK-4498-00-00 MOD START
		
		//マンションの場合
		if("1".equals(inMap.get("MSKM_MNS_TYPE")))
		{
			// 仮登録 全戸一括の場合
			kikiSohusAddressMap = (HashMap)param.getData("FUSV015212CC");
			if (kikiSohusAddressMap == null)
			{
				// 本登録の場合
				kikiSohusAddressMap = (HashMap)param.getData("FUSV016007CC");
			}
		}
		//ホーム・メゾンの場合
		else
		{
			// 全戸一括の場合
			kikiSohusAddressMap = (HashMap)param.getData("FUSV016102CC");
			if (kikiSohusAddressMap == null)
			{
				// 本登録の場合
				kikiSohusAddressMap = (HashMap)param.getData("FUSV016006CC");
			}
		}
		// 2012/09/25 add by Otsuka
//ANK4498-00-00 MOD END
		
		// 機器提供サービスコード
		inMap.put(EKK0341D010CBSMsg.KKTK_SVC_CD, ccMap.get(EKK0341D010CBSMsg.KKTK_SVC_CD));
		// 料金コースコード
		inMap.put(EKK0341D010CBSMsg.PCRS_CD, ccMap.get(EKK0341D010CBSMsg.PCRS_CD));
		// 料金プランコード
		inMap.put(EKK0341D010CBSMsg.PPLAN_CD, ccMap.get(EKK0341D010CBSMsg.PPLAN_CD));

		// 機器提供種別コード
		inMap.put(EKK0341D010CBSMsg.KKTK_SBT_CD, ccMap.get(EKK0341D010CBSMsg.KKTK_SBT_CD));

		// No238 Otsuka 2013/01/28
		// 販売種別コード
		inMap.put(EKK0341D010CBSMsg.HAMBAI_SBT_CD, ccMap.get(EKK0341D010CBSMsg.HAMBAI_SBT_CD));

		// 宅内機器種別コード
		inMap.put(EKK0341D010CBSMsg.TAKNKIKI_SBT_CD, ccMap.get(EKK0341D010CBSMsg.TAKNKIKI_SBT_CD));

		/* 2013/01/07 Y.Saitou MOD-START */
		// add 
		if (null == taknkikiModelCd || "".equals(taknkikiModelCd))
		{
			// 宅内機器型式コード
			inMap.put(EKK0341D010CBSMsg.TAKNKIKI_MODEL_CD, ccMap.get(EKK0341D010CBSMsg.TAKNKIKI_MODEL_CD));
		}
		else
		{
			// 宅内機器型式コード
			inMap.put(EKK0341D010CBSMsg.TAKNKIKI_MODEL_CD, taknkikiModelCd);
		}
		// end
		/* 2013/01/07 Y.Saitou MOD-END */

		// 親契約識別コード
		inMap.put(EKK0341D010CBSMsg.OYA_KEI_SKBT_CD, ccMap.get(EKK0341D010CBSMsg.OYA_KEI_SKBT_CD));

		// サービス契約番号
		if (!iktFlg)
		{
			inMap.put(EKK0341D010CBSMsg.SVC_KEI_NO, ccMap.get(EKK0341D010CBSMsg.SVC_KEI_NO));
		}
		else
		{
			// 一括登録の場合
			inMap.put(EKK0341D010CBSMsg.SVC_KEI_NO, iktMap.get("svc_kei_no"));
		}

		// オプションサービス契約番号
		// inMap.put(EKK0341D010CBSMsg.OP_SVC_KEI_NO, opSvcKeiNo);

		// SYSID
		if (!iktFlg)
		{
			inMap.put(EKK0341D010CBSMsg.SYSID, ccMap.get(EKK0341D010CBSMsg.SYSID));
		}
		else
		{
			// 一括登録の場合
			inMap.put(EKK0341D010CBSMsg.SYSID, iktMap.get("sysid"));
		}
		// 申込明細番号
		if (!iktFlg)
		{
			inMap.put(EKK0341D010CBSMsg.MSKM_DTL_NO, ccMap.get(EKK0341D010CBSMsg.MSKM_DTL_NO));
		}
		else
		{
			// 一括登録の場合
			inMap.put(EKK0341D010CBSMsg.MSKM_DTL_NO, iktMap.get("mskm_dtl_no"));
		}

		//機器引当指定倉庫コード
		inMap.put(EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD, ccMap.get(EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD));
		//機器引当指定倉庫棚コード
		inMap.put(EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD, ccMap.get(EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD));

		// 機器送付先名
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_NM, ccMap.get(EKK0341D010CBSMsg.KIKI_SOHUS_NM));
		// 機器送付先カナ名
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_KANA, ccMap.get(EKK0341D010CBSMsg.KIKI_SOHUS_KANA));

		// 住所分割後の住所情報を設定する

		// 機器送付先住所コード
		if ("".equals(kikiSohusAddressMap.get("ad_cd")))
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_AD_CD, "");
		}
		else
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_AD_CD, kikiSohusAddressMap.get("ad_cd"));
		}

		// 機器送付先郵便番号
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_PCD, ccMap.get(EKK0341D010CBSMsg.KIKI_SOHUS_PCD));

		// 機器送付先都道府県名
		if ("".equals(kikiSohusAddressMap.get("state_nm")))
		{

			inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_STATE_NM, "");
		}
		else
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_STATE_NM, kikiSohusAddressMap.get("state_nm"));
		}

		// 機器送付先市区町村名
		if ("".equals(kikiSohusAddressMap.get("city_nm")))
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_CITY_NM, "");
		}
		else
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_CITY_NM, kikiSohusAddressMap.get("city_nm"));
		}

		// 機器送付先大字通称名
		if ("".equals(kikiSohusAddressMap.get("oaztsu_nm")))
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_OAZTSU_NM, "");
		}
		else
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_OAZTSU_NM, kikiSohusAddressMap.get("oaztsu_nm"));
		}

		// 機器送付先字丁目名
		if ("".equals(kikiSohusAddressMap.get("azcho_nm")))
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_AZCHO_NM, "");
		}
		else
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_AZCHO_NM, kikiSohusAddressMap.get("azcho_nm"));
		}

		// 機器送付先番地号
		if ("".equals(kikiSohusAddressMap.get("after_bnchi")))
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_BNCHIGO, "");
		}
		else
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_BNCHIGO, kikiSohusAddressMap.get("after_bnchi"));
		}

		// 機器送付先住所補記・建物名
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_ADRTTM, ccMap.get(EKK0341D010CBSMsg.KIKI_SOHUS_ADRTTM));
		// 機器送付先住所補記・部屋番号
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_ADRRM, ccMap.get(EKK0341D010CBSMsg.KIKI_SOHUS_ADRRM));
		// 機器送付先電話番号
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_TELNO, ccMap.get(EKK0341D010CBSMsg.KIKI_SOHUS_TELNO));

		// マンション物件番号
		inMap.put(EKK0341D010CBSMsg.MANSION_BUKKEN_NO, ccMap.get(EKK0341D010CBSMsg.MANSION_BUKKEN_NO));
		// 機器送付先_契約者住所差異フラグ
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_KSH_AD_SAI_FLG, ccMap.get(EKK0341D010CBSMsg.KIKI_SOHUS_KSH_AD_SAI_FLG));
		// 機器送付先個別指定フラグ
		inMap.put(EKK0341D010CBSMsg.KIKI_SHS_KBT_SHITEI_FLG, ccMap.get(EKK0341D010CBSMsg.KIKI_SHS_KBT_SHITEI_FLG));

		// ============================= ↓↓No239 住所分割処理後の値を設定するよう修正 2013/01/28 otsuka ↓↓ ============================

		// 機器設置先住所コード
		if ("".equals(useplaceAddressMap.get("ad_cd")))
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_AD_CD, "");
		}
		else
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_AD_CD, useplaceAddressMap.get("ad_cd"));
		}

		// 機器設置先郵便番号
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_PCD, ccMap.get(EKK0341D010CBSMsg.KIKI_STC_SAKI_PCD));

		// 機器設置先都道府県名
		if ("".equals(useplaceAddressMap.get("state_nm")))
		{

			inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_STATE_NM, "");
		}
		else
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_STATE_NM, useplaceAddressMap.get("state_nm"));
		}

		// 機器設置先市区町村名
		if ("".equals(useplaceAddressMap.get("city_nm")))
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_CITY_NM, "");
		}
		else
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_CITY_NM, useplaceAddressMap.get("city_nm"));
		}

		// 機器設置先大字通称名
		if ("".equals(useplaceAddressMap.get("oaztsu_nm")))
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_OAZTSU_NM, "");
		}
		else
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_OAZTSU_NM, useplaceAddressMap.get("oaztsu_nm"));
		}

		// 機器設置先字丁目名
		if ("".equals(useplaceAddressMap.get("azcho_nm")))
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_AZCHO_NM, "");
		}
		else
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_AZCHO_NM, useplaceAddressMap.get("azcho_nm"));
		}

		// 機器設置先番地号
		if ("".equals(useplaceAddressMap.get("after_bnchi")))
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_BNCHIGO, "");
		}
		else
		{
			inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_BNCHIGO, useplaceAddressMap.get("after_bnchi"));
		}

		// 機器設置先住所補記・建物名
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRTTM, ccMap.get(EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRTTM));

		// 機器設置先住所補記・部屋番号
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRRM, ccMap.get(EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRRM));

		// 機器設置先＿契約者住所差異フラグ
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SK_KSH_AD_SAI_FLG, ccMap.get(EKK0341D010CBSMsg.KIKI_STC_SK_KSH_AD_SAI_FLG));

		// 機器設置先電話番号
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SK_TELNO, ccMap.get(EKK0341D010CBSMsg.KIKI_STC_SK_TELNO));

		// ============================= ↑↑No239 住所分割処理後の値を設定するよう修正 2013/01/28 otsuka ↑↑ ============================

		// 住所未確定フラグ
		inMap.put(EKK0341D010CBSMsg.AD_MI_FIX_FLG, ccMap.get(EKK0341D010CBSMsg.AD_MI_FIX_FLG));
		// 配送区分
		inMap.put(EKK0341D010CBSMsg.HAISO_DIV, ccMap.get(EKK0341D010CBSMsg.HAISO_DIV));
		// 異動区分
		inMap.put(EKK0341D010CBSMsg.IDO_DIV, ccMap.get(EKK0341D010CBSMsg.IDO_DIV));
		// 機器付加情報コード
		inMap.put(EKK0341D010CBSMsg.KIKI_HUKA_INFO_CD, ccMap.get(EKK0341D010CBSMsg.KIKI_HUKA_INFO_CD));
		// 機器送付先住所手動入力フラグ
		inMap.put(EKK0341D010CBSMsg.KIKI_SHS_AD_MAN_INPUT_FLG, ccMap.get(EKK0341D010CBSMsg.KIKI_SHS_AD_MAN_INPUT_FLG));

		// 請求契約番号
		if (!iktFlg)
		{
			inMap.put(EKK0341D010CBSMsg.SEIKY_KEI_NO, ccMap.get(EKK0341D010CBSMsg.SEIKY_KEI_NO));
		}
		else
		{
			// 一括登録の場合
			inMap.put(EKK0341D010CBSMsg.SEIKY_KEI_NO, iktMap.get("seiky_kei_no"));
		}
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0341D010CBSMsg.UPD_DTM_BF, updDtmBf);
	}

	/**
	 * 上りマッピング項目設定(割賦契約登録)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param ccMap
	 * @param kktk_svc_cd
	 * @param add_ji_kiki_chg_no
	 * @param iktFlg
	 * @param tnmt_buy_uk_tntsha_nm
	 * @param iktMap
	 * @throws RequestParameterException
	 */
	private void setInMapKapKei(IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> ccMap, String kktk_svc_cd,
			String add_ji_kiki_chg_no, Boolean iktFlg, String tnmt_buy_uk_tntsha_nm, HashMap<String, String> iktMap) throws RequestParameterException
	{
		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 割賦プランコード
		inMap.put(EKK2541D010CBSMsg.KAP_PLAN_CD, ccMap.get(EKK2541D010CBSMsg.KAP_PLAN_CD));
		// 機器提供サービス契約番号
		inMap.put(EKK2541D010CBSMsg.KKTK_SVC_KEI_NO, kktk_svc_cd);
		// 登録時機器変更番号
		inMap.put(EKK2541D010CBSMsg.ADD_JI_KIKI_CHG_NO, add_ji_kiki_chg_no);

		// 申込明細番号
		if (!iktFlg)
		{
			inMap.put(EKK2541D010CBSMsg.MSKM_DTL_NO, ccMap.get(EKK2541D010CBSMsg.MSKM_DTL_NO));
		}
		else
		{
			// 一括登録の場合
			inMap.put(EKK2541D010CBSMsg.MSKM_DTL_NO, iktMap.get("mskm_dtl_no"));
		}

		// 異動区分
		inMap.put(EKK2541D010CBSMsg.IDO_DIV, ccMap.get(EKK2541D010CBSMsg.IDO_DIV));

		// 割賦支払い残回数
		inMap.put(EKK2541D010CBSMsg.KAP_PAY_ZAN_CNT, ccMap.get(EKK2541D010CBSMsg.KAP_PAY_ZAN_CNT));

		// 端末購入通知書出力識別コード
		inMap.put(EKK2541D010CBSMsg.TNMT_BUY_TCHISHO_OPUT_SKCD, ccMap.get(EKK2541D010CBSMsg.TNMT_BUY_TCHISHO_OPUT_SKCD));

		// プレミアムオプション再契約時割引非適用フラグ
		//		inMap.put(EKK2541D010CBSMsg.PRMOP_REKEIJI_WRBHIAPL_FLG, ccMap.get(EKK2541D010CBSMsg.PRMOP_REKEIJI_WRBHIAPL_FLG));

		// 端末購入受付担当者名
		if (tnmt_buy_uk_tntsha_nm == null || tnmt_buy_uk_tntsha_nm.trim().length() == 0)
		{
			inMap.put(EKK2541D010CBSMsg.TNMT_BUY_UK_TNTSHA_NM, (String)ccMap.get("tnmt_buy_uk_tntsha_nm"));
		}
		else
		{
			inMap.put(EKK2541D010CBSMsg.TNMT_BUY_UK_TNTSHA_NM, tnmt_buy_uk_tntsha_nm);
		}
	}

	/* 2013/01/07 Y.Saitou ADD-START */
	
	/**
	 * 上りマッピング項目設定(サービス別機器型式構成条件)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param ccMap
	 * @throws RequestParameterException
	 */
	private void setInMapSvcbKkmdstJkn(IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> ccMap)
			throws RequestParameterException
	{

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		//検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		ArrayList kktkSvcKeiList = (ArrayList)ccMap.get(EKK0341D010SML_LIST);
		HashMap<String, Object> kktkSvcKeiListMap = (HashMap)kktkSvcKeiList.get(0);

		// ＫＥＹ＿サービス別機器型式構成条件種別コード
		inMap.put(EKK2331B001CBSMsg.KEY_SVCB_KKMDST_JKN_SBT_CD, JFUStrConst.CD01371_020);
		// ＫＥＹ＿料金グループコード
		inMap.put(EKK2331B001CBSMsg.KEY_PRC_GRP_CD, (String)kktkSvcKeiListMap.get("prc_grp_cd"));
		// ＫＥＹ＿宅内機器型式コード１
		inMap.put(EKK2331B001CBSMsg.KEY_TAKNKIKI_MODEL_CD_1, (String)kktkSvcKeiListMap.get("taknkiki_model_cd"));

	}

	/* 2013/01/07 Y.Saitou ADD-END */

	/**
	 * 下りマッピング項目設定(オプションサービス契約＜ISP＞登録)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param ccMap CCマップ
	 * @throws RequestParameterException
	 */
	private void setOutMapOpSvcKeiIsp(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// 作業領域のマップを取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// オプションサービス契約番号
		inMap.put(EKK0361D010CBSMsg.OP_SVC_KEI_NO, inMap.get(EKK0361D010CBSMsg.OP_SVC_KEI_NO));

		// ワークマップに登録
		workMap.put("upd_dtm", inMap.get(EKK0361D010CBSMsg.UPD_DTM));
	}

	/**
	 * 下りマッピング項目設定(機器提供サービス契約登録)
	 * 
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param ccMap CCマップ
	 * @throws RequestParameterException
	 */
	private void setOutMapKktkSvcKei(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 作業領域のマップを取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 更新年月日時分秒
		inMap.put(EKK0341D010CBSMsg.UPD_DTM, inMap.get(EKK0341D010CBSMsg.UPD_DTM));

		// 機器提供サービス契約番号
		inMap.put(EKK0341D010CBSMsg.KKTK_SVC_KEI_NO, inMap.get(EKK0341D010CBSMsg.KKTK_SVC_KEI_NO));

		// 機器変更番号
		inMap.put(EKK0341D010CBSMsg.KIKI_CHG_NO, inMap.get(EKK0341D010CBSMsg.KIKI_CHG_NO));

		// ワークマップに登録
		workMap.put("upd_dtm", inMap.get(EKK0341D010CBSMsg.UPD_DTM));

	}

	/**
	 * 機器オプションサービス契約登録の上りマッピングです。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @throws Exception 例外
	 */
	private void setEKK2811D010(IRequestParameterReadWrite param, String fixedText, HashMap kktkSvcKeiMap, HashMap<String, String> iktMap,
			String kktkSvcKeiNo, Boolean iktFlg, String updDtm, String tanmtPplanCd) throws Exception
	{
		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		//検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機器オプションサービスコード
		inMap.put(EKK2811D010CBSMsg.KKOP_SVC_CD, JFUStrConst.KK2801_KKOP_SVC_CD_G03);
		// 料金コースコード
		inMap.put(EKK2811D010CBSMsg.PCRS_CD, JFUStrConst.CD00134_G05);
		// TODO 料金プランコード
		inMap.put(EKK2811D010CBSMsg.PPLAN_CD, tanmtPplanCd);
		// 機器提供サービス契約番号
		inMap.put(EKK2811D010CBSMsg.KKTK_SVC_KEI_NO, kktkSvcKeiNo);

		if (!iktFlg)
		{
			// 一括登録以外
			// SYSID
			inMap.put(EKK2811D010CBSMsg.SYSID, kktkSvcKeiMap.get(EKK0341D010CBSMsg.SYSID));
			// 申込明細番号
			inMap.put(EKK2811D010CBSMsg.MSKM_DTL_NO, kktkSvcKeiMap.get(EKK0361D010CBSMsg.MSKM_DTL_NO));
			// 請求契約番号
			inMap.put(EKK2811D010CBSMsg.SEIKY_KEI_NO, kktkSvcKeiMap.get(EKK0361D010CBSMsg.SEIKY_KEI_NO));
		}
		else
		{
			// 一括登録
			// SYSID
			inMap.put(EKK2811D010CBSMsg.SYSID, iktMap.get("sysid"));
			// 申込明細番号
			inMap.put(EKK2811D010CBSMsg.MSKM_DTL_NO, iktMap.get("mskm_dtl_no"));
			// 請求契約番号
			inMap.put(EKK2811D010CBSMsg.SEIKY_KEI_NO, iktMap.get("seiky_kei_no"));
		}

		// 予約適用年月日
		inMap.put(EKK2811D010CBSMsg.RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));
		// 異動区分
		inMap.put(EKK2811D010CBSMsg.IDO_DIV, kktkSvcKeiMap.get(EKK0361D010CBSMsg.IDO_DIV));
		// 更新年月日時分秒(更新前)
		inMap.put(EKK2811D010CBSMsg.UPD_DTM_BF, updDtm);
	}

	/**
	 * 機器オプションサービス契約登録の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception 例外
	 */
	private void getEKK2811D010(IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 作業領域のマップを取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// ワークマップに登録
		// 更新年月日時分秒
		workMap.put("upd_dtm", inMap.get(EKK2811D010CBSMsg.UPD_DTM));
	}

	/**
	 * チェック処理
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}

	/**
	 * 作業エリア
	 * @param param
	 * @param key
	 * @param fixText
	 * @return String
	 * @throws RequestParameterException
	 */
	private String getWorkMapValue(IRequestParameterReadWrite param, String key, String fixText) throws RequestParameterException
	{
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();

		HashMap inMap = null;
		/* 作業項目情報 */
		if (workMap != null)
		{
			inMap = (HashMap)workMap.get(fixText);
		}
		else
		{
			inMap = null;
		}

		String result = null;
		if (inMap != null)
		{
			result = (String)inMap.get(key);
		}

		if ("".equals(result))
		{
			result = null;
		}

		return result;
	}

	/**
	 * マップ存在チェック
	 * @param opSvcKeiMap
	 * @param kktkSvcMap
	 * @param kapKeiMap
	 * @return boolean
	 */
	private Boolean mapChk(HashMap<String, Object> opSvcKeiMap, HashMap<String, Object> kktkSvcMap, HashMap<String, Object> kapKeiMap)
	{
		if ((opSvcKeiMap == null) || (opSvcKeiMap.isEmpty()))
		{
			// オプションサービス契約＜ISP＞登録マップが存在しない場合は、処理しない
			return false;
		}

		if ((kktkSvcMap == null) || (kktkSvcMap.isEmpty()))
		{
			// 機器提供サービス登録マップが存在しない場合は、処理しない
			return false;
		}

		if ((kapKeiMap == null) || (kapKeiMap.isEmpty()))
		{
			// 割賦契約登録マップが存在しない場合は、処理しない
			return false;
		}

		return true;
	}
}
