/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUAddWribSvcCC
*   ソースファイル名：JFUAddWribSvcCC.java
*   作成者          ：富士通
*   日付            ：2012年04月24日
*＜機能概要＞
*   割引サービス登録部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v3.00       2012/04/24   FJ）楠山    新規作成
*   v4.00       2012/10/12   FJ）馬場    IT1-2012-0001295
*   v4.01       2013/02/22   FJ) 大塚    No356 マンション割引対応
*   v4.02       2013/03/21   FJ) 藤原    No465 WiMAX白ロム割引適用対応
*   v5.00       2013/06/27   FJ) 文元    LT-2013-0000126 キャンペーン受付内の割引であるかの判定を追加
*   v5.01       2013/07/13   FJ) 瀧澤    LT-2013-0000485 割引対象サービス対象期間外の場合の対応
*   v5.02       2013/07/24   FJ) 瀧澤   【IT1-2013-0001431】マンション割引の期間チェック対応
*   v10.00      2014/08/11   FJ）文元   【ANK-2223-00-00】スマリンタブレット無料キャンペーンのＷＥＢ画面への拡充
*   v39.0.0     2018/12/28   FJ) 大島    OM-2018-0001328
*   v52.00      2021/02/08   FJ) 張本    ANK-3987-00-00】Netflix導入対応（STEP2）
*   v70.00      2024/02/05   FJ) 美濃原 【ANK-4551-00-00】202404CP対応
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
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.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451B005CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451B005CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0841A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0841B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0841B509CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0851B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0851B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1391D010CBSMsg;

/**
 * 割引サービスコード登録コモンコンポーネント部品
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUAddWribSvcCdCC extends JFUBaseCC
{
	/** サービスインターフェースID */
	/** 割引サービス一覧照会（基準年月日） */
	private static final String SIF_EKK0841B003 = "EKK0841B003";
	/** 割引サービス一意紹介 */
	private static final String SIF_EKK0851B001 = "EKK0851B001";
	/** 割引サービス契約登録 */
	private static final String SIF_EKK0451D010 = "EKK0451D010";
	/** 割引一意照会 */
	private static final String SIF_EKK0841B001 = "EKK0841B001";
	/** EKK0841A010_割引サービス一意照会 */
	private static final String SIF_EKK0841A010 = "EKK0841A010";
	/** EKK0451B005_割引サービス契約一覧照会（SYSID）*/
	private static final String SIF_EKK0451B005 = "EKK0451B005";

	/** 作業マップ名 */
	/** サービス契約ネット作業マップ */
	private static final String CC_WORK_AREA_NAME_SVC_NET = "JFUAddSvcKeiNetCCWork";
	/** サービス契約電話作業マップ */
	private static final String CC_WORK_AREA_NAME_SVC_TEL = "JFUAddSvcKeiTelCCWork";
	/** サービス契約テレビ作業マップ */
	private static final String CC_WORK_AREA_NAME_SVC_TV = "JFUAddSvcKeiTvCCWork";
	/** サービス契約モバイル作業マップ */
	private static final String CC_WORK_AREA_NAME_SVC_MOB = "JFUAddSvcKeiMobCCWork";
	/** 割引サービス作業マップ */
	private static final String CC_WORK_NAME = "JFUAddWribSvcCCWork";
	/** 割引サービス作業マップリスト */
	private static final String CC_WORK_WRIB_SVC_LIST = "JFUAddWribSvcCCWorkList";
	/** 契約者サービス作業マップ */
	private static final String CC_WORK_AREA_NAME_KEISHA = "JFUAddKeishaServiceCCWork";
	/** 申込作業マップ */
	private static final String CC_WORK_AREA_NAME_MSKM = "JFUAddMskmSCWork";

	/** 使用マップ名 */
	/** サービス契約＜eo光ネット＞登録マップ */
	private static final String MAP_ID_EKK0091D010 = "EKK0091D010";
	/** 機器提供サービス＜eo光ネット＞登録マップ */
	private static final String MAP_ID_EKK0341D010NET = "EKK0341D010Net";
	/** オプションサービス契約＜ISP>登録マップ */
	private static final String MAP_ID_EKK0361D010NET = "EKK0361D010Net";
	/** オプションサービス契約＜ISP>登録マップリスト */
	private static final String MAP_ID_EKK0361D010NETLIST = "EKK0361D010NetList";
	/** サービス契約内訳＜eo光ネット＞登録マップ */
	private static final String MAP_ID_EKK0171D010 = "EKK0171D010";
	/** サービス契約＜eo光TV＞登録マップ */
	private static final String MAP_ID_EKK0101D010 = "EKK0101D010";
	/** 機器提供サービス＜eo光電話＞登録マップ */
	private static final String MAP_ID_EKK0341D010TEL = "EKK0341D010Tel";
	/** 機器提供サービス＜eo光電話＞登録マップリスト */
	private static final String MAP_ID_EKK0341D010TELLIST = "EKK0341D010TelList";
	/** サービス契約内訳＜eo光電話＞登録マップ */
	private static final String MAP_ID_EKK0191D010 = "EKK0191D010";
	/** サービス契約内訳＜eo光電話＞登録マップリスト */
	private static final String MAP_ID_EKK0191D010LIST = "EKK0191D010List";
	/** サービス契約＜eo光電話＞登録マップリスト */
	private static final String MAP_ID_EKK0111D010 = "EKK0111D010";
	/** 機器提供サービス＜eo光TV＞登録マップ */
	private static final String MAP_ID_EKK0341D010TV = "EKK0341D010Tv";
	/** 機器提供サービス＜eo光TV＞登録マップリスト */
	private static final String MAP_ID_EKK0341D010TVLIST = "EKK0341D010TvList";
	/** サービス契約内訳＜eo光TV＞登録マップ */
	private static final String MAP_ID_EKK0181D010 = "EKK0181D010";
	/** サービス契約内訳＜eo光TV＞登録マップリスト */
	private static final String MAP_ID_EKK0181D010LIST = "EKK0181D010List";
	/** サービス契約＜ｅｏモバイル＞登録マップ */
	private static final String MAP_ID_EKK0121D010 = "EKK0121D010";
	/** 機器提供サービス＜ｅｏモバイル＞登録マップ */
	private static final String MAP_ID_EKK0341D010MOB = "EKK0341D010Mob";
	/** 機器提供サービス＜ｅｏモバイル＞登録マップリスト */
	private static final String MAP_ID_EKK0341D010MOBLIST = "EKK0341D010MobList";
	/** オプションサービス契約＜ISP>登録マップ */
	private static final String MAP_ID_EKK0361D010MOB = "EKK0361D010Mob";
	/** オプションサービス契約＜ISP>登録マップリスト */
	private static final String MAP_ID_EKK0361D010MOBLIST = "EKK0361D010MobList";
	/** サービス契約内訳＜ｅｏモバイル＞登録マップ */
	private static final String MAP_ID_EKK0201D010 = "EKK0201D010";
	/** サービス契約内訳＜ｅｏモバイル＞登録マップリスト */
	private static final String MAP_ID_EKK0201D010LIST = "EKK0201D010List";
	/** 割引サービス登録マップ */
	private static final String JFUADDWRIBSVCCCMAP = "JFUAddWribSvcCdCC";
	/** 機器提供サービスONU登録マップ */
	private static final String MAP_ID_EKK0341D010ONU = "EKK0341D010Onu";
	/** 機器提供サービスVONU登録マップ */
	private static final String MAP_ID_EKK0341D010VONU = "EKK0341D010Vonu";
	/** 機器提供サービス契約スマートリンク登録マップ */
	private static final String MAP_ID_EKK0341D010SML = "EKK0341D010Sml";

	/** SYSID */
	private static final String SYSID = "sysid";

	/** 申込明細番号 */
	private static final String MSKM_DTL_NO = "mskm_dtl_no";

	/** 即時適用フラグ */
	private static final String APLY_JUN = "aply_jun";

	/** 異動区分 */
	private static final String IDO_DIV = "ido_div";

	/** 割引登録契機コード */
	private static final String WRIB_ADD_OPTY_CD = "wrib_add_opty_cd";

	/** 実行種別 */
	private static final String MDL_EXEC_KIND = "mdl_exec_kind";
	/** 実行種別 "1":自動登録用 ※仮登録時は設定しない。本登録で重複登録を抑止。 */
	private static final String MDL_EXEC_KIND_AUTO = "1";

	/** 割引サービスコード */
	private static final String ADDWRIBSVCCD = "addWribSvcCd";

	/** 対象契約識別コード */
	private static final String TG_KEI_SKBT_CD = "tg_kei_skbt_cd";

	/** サービス契約番号 */
	private static final String SVC_KEI_NO = "svc_kei_no";

	/** サービス契約内訳番号 */
	private static final String SVC_KEI_UCWK_NO = "svc_kei_ucwk_no";

	/** オプションサービス契約番号 */
	private static final String OP_SVC_KEI_NO = "op_svc_kei_no";

	/** 機器提供サービス契約番号 */
	private static final String KKTK_SVC_KEI_NO = "kktk_svc_kei_no";

	/** サブオプションサービス契約番号 */
	private static final String SBOP_SVC_KEI_NO = "sbop_svc_kei_no";

	/** 割引サービス対象サービスコード */
	private static final String WRIB_SVC_TRGT_SVC_CD = "wrib_svc_trgt_svc_cd";

	/** サービスコード */
	private static final String SVC_CD = "svc_cd";

	/** 料金グループコード */
	private static final String PRC_GRP_CD = "prc_grp_cd";

	/** 機器提供サービスコード */
	private static final String KKTK_SVC_CD = "kktk_svc_cd";

	/** オプションサービスコード */
	private static final String OP_SVC_CD = "op_svc_cd";

	/** 料金コースコード */
	private static final String PCRS_CD = "pcrs_cd";

	/** 料金プランコード */
	private static final String PPLAN_CD = "pplan_cd";

	/** 料金コース（サービス契約＜eo光ネット＞登録後） */
	private static final String PCRS_CD_O = "pcrs_cd_o";

	/** 料金プランコード（サービス契約＜eo光ネット＞登録後） */
	private static final String PPLAN_CD_O = "pplan_cd_o";

	/** 割引サービス契約自動継続識別コード */
	private static final String WRIB_SVC_KEI_AT_KEIZK_SKCD = "wrib_svc_kei_at_keizk_skcd";

	/** 申込明細番号 ネット */
	private static final String MSKM_DTL_NO_NET = "ekk0091_mskm_dtl_no";

	/** 申込明細番号 電話 */
	private static final String MSKM_DTL_NO_TEL = "ekk0111_mskm_dtl_no";

	/** 申込明細番号 テレビ */
	private static final String MSKM_DTL_NO_TV = "ekk0101_mskm_dtl_no";

	/** 申込明細番号 モバイル */
	private static final String MSKM_DTL_NO_MOB = "ekk0121_mskm_dtl_no";

	/** 空白 */
	private static final String BLANK = "";

	/** 更新年月日時分秒 */
	private static final String UPD_DTM = "upd_dtm";

	/** 割引サービスリスト名 */
	private static final String ADDWRIBSVCLIST = "AddWribSvcCdList";

	/** 最大検索件数 */
	private static final String MAX_SEARCH_NUM = "max_search_num";

	/** 取得検索件数 */
	private static final String TOTAL_SEARCH_NUM = "total_search_num";

	/** エラー項目名 */
	private static final String ERR_COLUMN = "key_dchskmst_cd_err";

	/** 割引サービス対象サービステンプレート名 */
	private static final String TEMP_TEMPLATE_EKK0851B001 = "TEMP_TEMPLATE_EKK0851B001_";

	/** 適用終了年月日 */
	private static final String END_YMD = "20991231";
	
	/** チェック用料金グループコード */
	private static final String CHK_PRC_GRP_CD = "chk_prc_grp_cd";

	/** チェック用料金コースコード */
	private static final String CHK_PCRS_CD = "chk_pcrs_cd";

	/** チェック用料金プランコード */
	private static final String CHK_PPLAN_CD = "chk_pplan_cd";

	/** 適用期間チェック有無 */
	private static final String CHK_TERM = "chk_term";
	
	/** マンションキャンペーンフラグ */
	private static final String MNS_CP_FLG = "mnsCpFlg";

	/** IN項目リスト */
	/** 割引サービス対象サービス一覧照会 */
	private static final List<String> IN_COLUMN_LIST_WRISVC_TG_SVC;
	/** 割引サービス契約登録 */
	private static final List<String> IN_COLUMN_LIST_WRIB_SVC_KEI;
	/** 割引サービス一覧照会（基準年月日） */
	private static final List<String> IN_COLUMN_LIST_WRIB_SVC;
	/** サービス契約一意照会 */
	private static final List<String> IN_COLUMN_LIST_SVC_KEI;
	/** EKK0451B005_割引サービス契約一覧照会（SYSID）*/
	private static final List<String> IN_COLUMN_LIST_EKK0451B005;

	
	// No356 2013/02/22 Otsuka マンション割引対応追加 start
	/** IN項目リスト */
	/** 割引サービス一覧照会（基準年月日）テンプレート名 */
	private static final String TEMP_TEMPLATE_EKK0841B003 = "TEMP_TEMPLATE_EKK0841B003_";
	
	/** 割引サービス対象サービステンプレート名 */
	private static final String TEMP_TEMPLATE_EKK0841B509 = "TEMP_TEMPLATE_EKK0841B509_";

	// No356 2013/02/22 Otsuka マンション割引対応追加 end
	/** EKK0451B005_割引サービス契約一覧照会（SYSID） */
	private static final String TEMP_TEMPLATE_EKK0451B005 = "TEMP_TEMPLATE_EKK0451B005_";

	/** IN項目値 */
	static
	{
		IN_COLUMN_LIST_WRIB_SVC =
			Arrays.asList(EKK0841B003CBSMsg.KEY_KJNYMD, EKK0841B003CBSMsg.KEY_WRIB_TYPE_CD, EKK0841B003CBSMsg.KEY_WRIB_APLY_OPTNTY_CD,
					EKK0841B003CBSMsg.KEY_DSP_CAMPAIGN_CD, EKK0841B003CBSMsg.KEY_WRIB_SVC_CD, EKK0841B003CBSMsg.KEY_UK_STA_YMD_FROM,
					EKK0841B003CBSMsg.KEY_UK_STA_YMD_TO, EKK0841B003CBSMsg.KEY_UK_END_YMD_FROM, EKK0841B003CBSMsg.KEY_UK_END_YMD_TO,
					EKK0841B003CBSMsg.KEY_MSKM_SBT_CD, EKK0841B003CBSMsg.KEY_WRIB_SVC_TEKI_JYO_SBT_CD, EKK0841B003CBSMsg.KEY_WRIB_SVC_TEKI_VAL);
		IN_COLUMN_LIST_WRISVC_TG_SVC =
				Arrays.asList(EKK0851B001CBSMsg.KEY_WRIB_SVC_CD, EKK0851B001CBSMsg.KEY_PRC_GRP_CD, EKK0851B001CBSMsg.KEY_PCRS_CD,
						EKK0851B001CBSMsg.KEY_PPLAN_CD, EKK0851B001CBSMsg.KEY_KJNYMD, EKK0851B001CBSMsg.MAX_SEARCH_NUM);
		IN_COLUMN_LIST_WRIB_SVC_KEI =
				Arrays.asList(EKK0451D010CBSMsg.SYSID, EKK0451D010CBSMsg.WRIB_SVC_CD, EKK0451D010CBSMsg.PCRS_CD, EKK0451D010CBSMsg.PPLAN_CD,
						EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD, EKK0451D010CBSMsg.RSV_TSTA_KIBO_YMD, EKK0451D010CBSMsg.MSKM_DTL_NO,
						EKK0451D010CBSMsg.APLY_JUN, EKK0451D010CBSMsg.PNLTY_HASSEI_CD, EKK0451D010CBSMsg.IDO_DIV, EKK0451D010CBSMsg.MSKM_KISAN_YMD,
						EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD, EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD, EKK0451D010CBSMsg1List.SVC_KEI_NO,
						EKK0451D010CBSMsg1List.SVC_KEI_UCWK_NO, EKK0451D010CBSMsg1List.OP_SVC_KEI_NO, EKK0451D010CBSMsg1List.SBOP_SVC_KEI_NO,
						EKK0451D010CBSMsg1List.KKTK_SVC_KEI_NO, EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD, EKK0451D010CBSMsg1List.SET_ADD_YMD,
						EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD, EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD, EKK0451D010CBSMsg.UPD_DTM_BF,
						EKK0451D010CBSMsg.WRIB_SVC_KEI_AT_KEIZK_SKCD);
		IN_COLUMN_LIST_SVC_KEI =
			Arrays.asList(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, EKK0081A010CBSMsg.KEY_RSV_APLY_YMD);
		IN_COLUMN_LIST_EKK0451B005 = Arrays.asList(EKK0451B005CBSMsg.KEY_SYSID);
	}
	
	/** IN項目リスト(割引一意照会) */
	private static final List<String> IN_COLUMN_LIST_EKK0841A010 =
			Arrays.asList(EKK0841A010CBSMsg.KEY_WRIB_SVC_CD, EKK0841A010CBSMsg.KEY_GENE_ADD_DTM, EKK0841A010CBSMsg.KEY_RSV_APLY_YMD);

	/** 関連チェックエラー項目(割引サービス一覧照会（基準年月日）) */
	private static final String ERROR_COLUMN_EKK0841B003 = null;
	
	/* ■□ サービス契約一意照会SC ■□ */
	/** テンプレートID(サービス契約一意照会) */
	private static final String SIF_EKK0081A010 = "EKK0081A010";
	/** テンプレートID(サービス契約一意照会明細) */
	private static final String SIF_EKK0081A010_DETAIL = EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST;
	/** 関連チェックエラー項目(サービス契約一意照会) */
	private static final String ERROR_COLUMN_SVC_KEI = EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(サービス契約一意照会) */
	private static final String TEMP_TEMPLATE_KEY_SVC_KEI = TEMP_TEMPLATE_PRIFIX + SIF_EKK0081A010 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/** 割引サービス契約のステータスが無効なもの */
	private static final List<String> WRIB_SVC_KEI_MUKO = Arrays.asList(JFUStrConst.CD00055_910, JFUStrConst.CD00055_920);

	/**
	 * 割引サービスコード登録処理.<br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite checkWribSvcCd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> addWribSvcMap = (HashMap<String, Object>)param.getData(JFUADDWRIBSVCCCMAP);
		HashMap<String, Object> addWribSvcListMap = new HashMap();
		ArrayList addWribSvcList = (ArrayList)addWribSvcMap.get(ADDWRIBSVCLIST);

		int targetCount = 0;
		boolean judFlg = false;

		// 削除コードマップ
		HashMap<String, String> delCodeMap = new HashMap<String, String>();
		// 割引マップ
		HashMap<String, Object> wribMap = new HashMap<String, Object>();
		
		// 取得した割引サービスコードリストの件数分処理をループさせる
		for (int i = 0; i < addWribSvcList.size(); i++)
		{
			addWribSvcListMap = (HashMap)addWribSvcList.get(i);

			String wribSvcCd = (String)addWribSvcListMap.get(ADDWRIBSVCCD);

			String mnsCpFlg = (String)addWribSvcListMap.get(MNS_CP_FLG);


			// ユーザデータ初期化
			initData(param, JFUADDWRIBSVCCCMAP, IN_COLUMN_LIST_WRIB_SVC);
			// 割引サービス一覧照会（基準年月日）
			setInMapEKK0841B003(param, JFUADDWRIBSVCCCMAP, wribSvcCd, (String)addWribSvcListMap.get(MAX_SEARCH_NUM), addWribSvcListMap);
			// 検索エラーなし設定
			ignoreSearchError(param, JFUADDWRIBSVCCCMAP);
			// サービスIF実行
			setFuncCode(param, JFUADDWRIBSVCCCMAP, "1");
			
			executeSC(handle, param, JFUADDWRIBSVCCCMAP, SIF_EKK0841B003, EKK0841B003CBSMsg.EKK0841B003CBSMSG1LIST, IN_COLUMN_LIST_WRIB_SVC,
					ERROR_COLUMN_EKK0841B003);
			
			HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(JFUADDWRIBSVCCCMAP);

			// 結果取得
			int pfx = i + 1;
			if (!isExistsTemplateDetail(inMap, TEMP_TEMPLATE_EKK0841B003 + pfx, EKK0841B003CBSMsg.EKK0841B003CBSMSG1LIST))
			{
				// 割引サービスコードに該当する割引は、受付期間外なので、処理対象外
				delCodeMap.put(wribSvcCd, wribSvcCd);
				continue;
			}
			
			// 割引サービス対象サービス一覧照会
			// 上りマッピング
			setInMapEKK0851B001(param, JFUADDWRIBSVCCCMAP, wribSvcCd, (String)addWribSvcListMap.get(MAX_SEARCH_NUM));
			// 検索エラーなし設定
			ignoreSearchError(param, JFUADDWRIBSVCCCMAP);
			// サービスIF実行
			setFuncCode(param, JFUADDWRIBSVCCCMAP, "1");
			executeSC(handle, param, JFUADDWRIBSVCCCMAP, SIF_EKK0851B001, EKK0851B001CBSMsg.EKK0851B001CBSMSG1LIST, IN_COLUMN_LIST_WRISVC_TG_SVC,
					ERR_COLUMN);

			mnsCpFlg = JFUStrConst.CD00002_0;

			// 件数判定処理
			judFlg = judListCnt(param, JFUADDWRIBSVCCCMAP, String.valueOf(i + 1), mnsCpFlg);
			if (judFlg == false)
			{
				delCodeMap.put(wribSvcCd, wribSvcCd);
				continue;
			}

			// 対象判定処理
			targetCount = judTarget(param, JFUADDWRIBSVCCCMAP, wribSvcCd, mnsCpFlg, addWribSvcListMap);
			if (targetCount < 1)
			{
				delCodeMap.put(wribSvcCd, wribSvcCd);
				continue;
			}

			// 割引サービス対象サービス一覧照会
			HashMap<String, Object> eKK0841A010Map = new HashMap<String, Object>();

			// 上りマッピング
			setInMapEKK0841A010(param, JFUADDWRIBSVCCCMAP, wribSvcCd);
			// サービスIF実行
			setFuncCode(param, JFUADDWRIBSVCCCMAP, "2");
			executeSC(handle, param, JFUADDWRIBSVCCCMAP, SIF_EKK0841A010, EKK0841A010CBSMsg.EKK0841A010CBSMSG1LIST, IN_COLUMN_LIST_EKK0841A010,
					ERR_COLUMN);
			// データマップ
			HashMap dataMap =
					getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, "TEMP_TEMPLATE_EKK0841A010_"), EKK0841A010CBSMsg.EKK0841A010CBSMSG1LIST, 0);

			eKK0841A010Map.put("dsp_campaign_cd", dataMap.get("dsp_campaign_cd"));
			eKK0841A010Map.put("wrib_svc_nm", dataMap.get("wrib_svc_nm"));
			eKK0841A010Map.put("uk_sta_ymdhm", dataMap.get("uk_sta_ymdhm"));
			eKK0841A010Map.put("uk_end_ymdhm", dataMap.get("uk_end_ymdhm"));
			
			// 割引情報を設定
			wribMap.put(wribSvcCd, eKK0841A010Map);
		}
		
		// 対象外コードリストを返却
		param.setData("delWribSvcCodeMap", delCodeMap);
		param.setData("infWribSvcCodeMap", wribMap);
		
		return param;
	}

	/**
	 * 上りマッピング項目設定(割引サービス契約一意照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 * @throws ParseException 
	 */
	private void setInMapEKK0841A010(IRequestParameterReadWrite param, String fixedText, String wribSvcCd) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ＫＥＹ＿割引サービスコード
		inMap.put(EKK0841A010CBSMsg.KEY_WRIB_SVC_CD, wribSvcCd);

		// ＫＥＹ＿世代登録年月日時分秒
		inMap.put(EKK0841A010CBSMsg.KEY_GENE_ADD_DTM, null);

		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK0841A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
	}

	/**
	 * 割引サービスコード登録処理.<br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite addWribSvcCd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> addWribSvcMap = (HashMap<String, Object>)param.getData(JFUADDWRIBSVCCCMAP);
		HashMap<String, Object> addWribSvcListMap = new HashMap();
		ArrayList addWribSvcList = (ArrayList)addWribSvcMap.get(ADDWRIBSVCLIST);
		HashMap workDataMap = new HashMap();
		ArrayList workDataList = null;
		Map workMap = null;

		int targetCount = 0;
		boolean judFlg = false;
		String mskm_dtm_no = "";

		String sysId = getSYSID(param, JFUADDWRIBSVCCCMAP);
		// 既に登録している「割引サービス契約」の情報を取得する。
		List<HashMap> ekk0451b005List = new ArrayList<HashMap>();
		if (!JFUBPCommon.isNull(sysId))
		{
			ekk0451b005List = getEKK0451B005(handle, param, JFUADDWRIBSVCCCMAP, sysId);
		}

		// 取得した割引サービスコードリストの件数分処理をループさせる
		for (int i = 0; i < addWribSvcList.size(); i++)
		{
			String keep_mskm_dtm_no = "";
			addWribSvcListMap = (HashMap)addWribSvcList.get(i);

			// No356 2013/02/22 Otsuka マンション割引対応追加 start
			String mnsCpFlg = (String)addWribSvcListMap.get(MNS_CP_FLG);

			// 受付開始期間内判定
			// ユーザデータ初期化
			initData(param, JFUADDWRIBSVCCCMAP, IN_COLUMN_LIST_WRIB_SVC);
			// 割引サービス一覧照会（基準年月日）マスタ
			setInMapEKK0841B003(param, JFUADDWRIBSVCCCMAP, (String)addWribSvcListMap.get(ADDWRIBSVCCD),
					(String)addWribSvcListMap.get(MAX_SEARCH_NUM), addWribSvcListMap);
			// 検索エラーなし設定
			ignoreSearchError(param, JFUADDWRIBSVCCCMAP);
			// サービスIF実行
			setFuncCode(param, JFUADDWRIBSVCCCMAP, "1");
			
			executeSC(handle, param, JFUADDWRIBSVCCCMAP, SIF_EKK0841B003, EKK0841B003CBSMsg.EKK0841B003CBSMSG1LIST, IN_COLUMN_LIST_WRIB_SVC,
					ERROR_COLUMN_EKK0841B003);
			
			HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(JFUADDWRIBSVCCCMAP);
			// 結果取得
			int pfx = i + 1;
			if (!isExistsTemplateDetail(inMap, TEMP_TEMPLATE_EKK0841B003 + pfx, EKK0841B003CBSMsg.EKK0841B003CBSMSG1LIST))
			{
				// 割引サービスコードに該当する割引は、受付期間外なので、処理対象外
				continue;
			}
// OM-2018-0001328 ADD START
			// eo光TVの最新更新日時を取得する。
			// eoTVサービス契約番号
			if (addWribSvcListMap.containsKey(SVC_KEI_NO) && !JFUBPCommon.isNull(addWribSvcListMap.get(SVC_KEI_NO)))
			{
				String cmpSvcKeiNo = (String)addWribSvcListMap.get(SVC_KEI_NO);

				// ●サービス契約一意照会
				// テンプレート領域クリア
				inMap.remove(TEMP_TEMPLATE_KEY_SVC_KEI);
				// 上りマッピング
				setInMapSvcKeiUniqueSearch(param, JFUADDWRIBSVCCCMAP, cmpSvcKeiNo);
				// サービスIF実行
				executeSC(handle, param, JFUADDWRIBSVCCCMAP, SIF_EKK0081A010, SIF_EKK0081A010_DETAIL, IN_COLUMN_LIST_SVC_KEI, ERROR_COLUMN_SVC_KEI);
				// 更新年月日時分秒
				String updDtmSvcKei = getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_SVC_KEI, SIF_EKK0081A010_DETAIL, EKK0081A010CBSMsg1List.LAST_UPD_DTM, 0);
				// eoTVサービス契約の更新年月日を退避
				addWribSvcListMap.put("TvLastUpdDtm", updDtmSvcKei);
			}
// OM-2018-0001328 ADD END
			// 割引サービス対象サービス一覧照会
			// 上りマッピング
			setInMapEKK0851B001(param, JFUADDWRIBSVCCCMAP, (String)addWribSvcListMap.get(ADDWRIBSVCCD), (String)addWribSvcListMap.get(MAX_SEARCH_NUM));
			// 検索エラーなし設定
			ignoreSearchError(param, JFUADDWRIBSVCCCMAP);
			// サービスIF実行
			setFuncCode(param, JFUADDWRIBSVCCCMAP, "1");
			executeSC(handle, param, JFUADDWRIBSVCCCMAP, SIF_EKK0851B001, EKK0851B001CBSMsg.EKK0851B001CBSMSG1LIST, IN_COLUMN_LIST_WRISVC_TG_SVC,
					ERR_COLUMN);

			mnsCpFlg = JFUStrConst.CD00002_0;

			// 件数判定処理
			judFlg = judListCnt(param, JFUADDWRIBSVCCCMAP, String.valueOf(i + 1), mnsCpFlg);
			if (judFlg == false)
			{
				continue;
			}
			//			}
			// No356 2013/02/22 Otsuka マンション割引対応追加 end

			// 対象判定処理
			targetCount = judTarget(param, JFUADDWRIBSVCCCMAP, (String)addWribSvcListMap.get(ADDWRIBSVCCD), mnsCpFlg, addWribSvcListMap);
			if (targetCount < 1)
			{
				continue;
			}

			// 作業領域の取得
			workMap = (Map)param.getMappingWorkArea();
			if (workMap == null)
			{
				workMap = new HashMap();
				param.setMappingWorkArea(workMap);
			}
			// 割引サービス登録ワーク取得
			workDataMap = (HashMap)workMap.get(CC_WORK_NAME);

			// 割引サービス登録ワークリスト取得
			workDataList = (ArrayList)workDataMap.get(CC_WORK_WRIB_SVC_LIST);

			for (int loopCount = 0; loopCount < workDataList.size(); loopCount++)
			{
				HashMap workDataListMap = (HashMap)workDataList.get(loopCount);
				mskm_dtm_no = (String)workDataListMap.get(MSKM_DTL_NO);

				if (!keep_mskm_dtm_no.equals(mskm_dtm_no))
				{
					if (existsKK_T_WRIB_SVC_KEI(ekk0451b005List, addWribSvcListMap))
					{
						// 割引サービス契約に既に登録されているため、スキップ
						continue;
					}
					// 割引サービス契約登録
					// 上りマッピング
					setInMapEKK0451D010(param, JFUADDWRIBSVCCCMAP, (String)addWribSvcListMap.get(ADDWRIBSVCCD), (String)addWribSvcListMap.get(SYSID),
							mskm_dtm_no, i, null);
					// サービスIF実行
					setFuncCode(param, JFUADDWRIBSVCCCMAP, "1");
					executeSC(handle, param, JFUADDWRIBSVCCCMAP, SIF_EKK0451D010, EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST,
							IN_COLUMN_LIST_WRIB_SVC_KEI, BLANK);

					keep_mskm_dtm_no = mskm_dtm_no;
				}
			}
		}
		return param;
	}

	/**
	 * 上りマッピング項目設定(割引サービス一覧照会（基準年月日）)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param wribSvcCd 割引サービスコード
	 * @param max_search_num 最大検索件数
	 * @param addWribSvcListMap 割引コードマップ
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0841B003(IRequestParameterReadWrite param, String fixedText, String wribSvcCd, String max_search_num, HashMap addWribSvcListMap)
			throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ＫＥＹ＿割引サービスコード
		inMap.put(EKK0841B003CBSMsg.KEY_WRIB_SVC_CD, wribSvcCd);

		// 適用期間チェックする場合
		if (isCheckTerm(addWribSvcListMap))
		{
			// ＫＥＹ＿基準年月日
			inMap.put(EKK0841B003CBSMsg.KEY_KJNYMD, JCCBPCommon.getOpeDate(null));
		}
		
		// 最大検索件数
		inMap.put(EKK0841B003CBSMsg.MAX_SEARCH_NUM, max_search_num);
	}
	
	/**
	 * 上りマッピング項目設定(割引サービス対象サービス一覧照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param wribSvcCd 割引サービスコード
	 * @param max_search_num 最大検索件数
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0851B001(IRequestParameterReadWrite param, String fixedText, String wribSvcCd, String max_search_num)
			throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ＫＥＹ＿割引サービスコード
		inMap.put(EKK0851B001CBSMsg.KEY_WRIB_SVC_CD, wribSvcCd);
		// ＫＥＹ＿料金グループコード
		inMap.put(EKK0851B001CBSMsg.KEY_PRC_GRP_CD, null);
		// ＫＥＹ＿料金コースコード
		inMap.put(EKK0851B001CBSMsg.KEY_PCRS_CD, null);
		// ＫＥＹ＿料金プランコード
		inMap.put(EKK0851B001CBSMsg.KEY_PPLAN_CD, null);
		// ＫＥＹ＿基準年月日
		inMap.put(EKK0851B001CBSMsg.KEY_KJNYMD, JCCBPCommon.getOpeDate(null)); // 2013/02/22 Otsuka
		// 最大検索件数
		inMap.put(EKK0851B001CBSMsg.MAX_SEARCH_NUM, max_search_num);

	}

	/**
	 * 上りマッピング項目設定(割引サービス対象サービス一覧照会)割引サービスコード以外設定有り用
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param wribSvcCd 割引サービスコード
	 * @param max_search_num 最大検索件数
	 * @param prcGrpCd 料金グループ
	 * @param pcrsCd 料金コース
	 * @param pplanCd 料金プラン
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0851B001OtherSet(IRequestParameterReadWrite param, String fixedText, String wribSvcCd, String max_search_num,
			String prcGrpCd, String pcrsCd, String pplanCd) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ＫＥＹ＿割引サービスコード
		inMap.put(EKK0851B001CBSMsg.KEY_WRIB_SVC_CD, wribSvcCd);
		// ＫＥＹ＿料金グループコード
		inMap.put(EKK0851B001CBSMsg.KEY_PRC_GRP_CD, prcGrpCd);
		// ＫＥＹ＿料金コースコード
		inMap.put(EKK0851B001CBSMsg.KEY_PCRS_CD, pcrsCd);
		// ＫＥＹ＿料金プランコード
		inMap.put(EKK0851B001CBSMsg.KEY_PPLAN_CD, pplanCd);
		// ＫＥＹ＿基準年月日
		inMap.put(EKK0851B001CBSMsg.KEY_KJNYMD, JCCBPCommon.getOpeDate(null));
		// 最大検索件数
		inMap.put(EKK0851B001CBSMsg.MAX_SEARCH_NUM, max_search_num);

	}
	
	/**
	 * 上りマッピング項目設定(割引サービス契約登録)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param wribSvcCd 割引サービスコード
	 * @param index 対象件数番号
	 * @param index 登録対象件数番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0451D010(IRequestParameterReadWrite param, String fixedText, String wribSvcCd, String sysId, String mskm_dtl_no,
			int index, String updDtm) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		//		HashMap<String, Object> inMapDtl = new HashMap<String, Object>();
		HashMap<String, Object> addWribSvcCdDtl = new HashMap<String, Object>();
		//		ArrayList inMapList = new ArrayList();
		HashMap<String, Object> addWribSvcCdListMap = new HashMap<String, Object>();
		ArrayList addWribSvcCdList = (ArrayList)inMap.get(ADDWRIBSVCLIST);
		ArrayList addWribSvcCdDtlList = new ArrayList();
		addWribSvcCdListMap = (HashMap)addWribSvcCdList.get(index);
		String set_upd_dtm = "";

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		// 割引サービス登録ワーク取得
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_NAME);

		// 割引サービス登録ワークリスト取得
		ArrayList workDataList = (ArrayList)workDataMap.get(CC_WORK_WRIB_SVC_LIST);

		// 契約者情報ワーク取得
		HashMap workKeishaServiceDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_KEISHA);

		// SYSID
		if (sysId == null || "".equals(sysId))
		{
			inMap.put(EKK0451D010CBSMsg.SYSID, workKeishaServiceDataMap.get(SYSID));
		}
		else
		{
			inMap.put(EKK0451D010CBSMsg.SYSID, sysId);
		}

		// 申込明細番号
		inMap.put(EKK0451D010CBSMsg.MSKM_DTL_NO, mskm_dtl_no);

		// 割引サービスコード
		inMap.put(EKK0451D010CBSMsg.WRIB_SVC_CD, wribSvcCd);

		// 料金コースコード
		inMap.put(EKK0451D010CBSMsg.PCRS_CD, (String)addWribSvcCdListMap.get(PCRS_CD));

		// 料金プランコード
		inMap.put(EKK0451D010CBSMsg.PPLAN_CD, (String)addWribSvcCdListMap.get(PPLAN_CD));

		// サービス利用開始希望年月日
		inMap.put(EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD, null);

		// 予約適用開始希望年月日
		inMap.put(EKK0451D010CBSMsg.RSV_TSTA_KIBO_YMD, null);

		// 即時適用フラグ
		inMap.put(EKK0451D010CBSMsg.APLY_JUN, (String)addWribSvcCdListMap.get(APLY_JUN));

		// 違約金発生コード
		inMap.put(EKK0451D010CBSMsg.PNLTY_HASSEI_CD, JFUStrConst.CD01375_0);

		// 異動区分
		inMap.put(EKK0451D010CBSMsg.IDO_DIV, (String)addWribSvcCdListMap.get(IDO_DIV));

		// 申込起算年月日
		inMap.put(EKK0451D010CBSMsg.MSKM_KISAN_YMD, JCCBPCommon.getOpeDate(null));

		// 割引登録契機コード
		inMap.put(EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD, (String)addWribSvcCdListMap.get(WRIB_ADD_OPTY_CD));

		for (int i = 0; i < workDataList.size(); i++)
		{
			HashMap workDataListMap = (HashMap)workDataList.get(i);

			addWribSvcCdDtl = new HashMap<String, Object>();

			String get_mskm_dtm_no = (String)workDataListMap.get(MSKM_DTL_NO);

			if (mskm_dtl_no.equals(get_mskm_dtm_no))
			{
				// 対象契約識別コード
				addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD, workDataListMap.get(TG_KEI_SKBT_CD));

				// サービス契約番号
				if (workDataListMap == null || workDataListMap.get(SVC_KEI_NO) == null || "".equals(workDataListMap.get(SVC_KEI_NO)))
				{
					addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.SVC_KEI_NO, null);
				}
				else
				{
					addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.SVC_KEI_NO, workDataListMap.get(SVC_KEI_NO));
				}

				// サービス契約内訳番号
				if (workDataListMap == null || workDataListMap.get(SVC_KEI_UCWK_NO) == null || "".equals(workDataListMap.get(SVC_KEI_UCWK_NO)))
				{
					addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.SVC_KEI_UCWK_NO, null);
				}
				else
				{
					addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.SVC_KEI_UCWK_NO, workDataListMap.get(SVC_KEI_UCWK_NO));
				}

				// オプションサービス契約番号
				if (workDataListMap == null || workDataListMap.get(OP_SVC_KEI_NO) == null || "".equals(workDataListMap.get(OP_SVC_KEI_NO)))
				{
					addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.OP_SVC_KEI_NO, null);
				}
				else
				{
					addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.OP_SVC_KEI_NO, workDataListMap.get(OP_SVC_KEI_NO));
				}

				// サブオプションサービス契約番号
				if (workDataListMap == null || workDataListMap.get(SBOP_SVC_KEI_NO) == null || "".equals(workDataListMap.get(SBOP_SVC_KEI_NO)))
				{
					addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.SBOP_SVC_KEI_NO, null);
				}
				else
				{
					addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.SBOP_SVC_KEI_NO, workDataListMap.get(SBOP_SVC_KEI_NO));
				}

				// 機器提供サービス契約番号
				if (workDataListMap == null || workDataListMap.get(KKTK_SVC_KEI_NO) == null || "".equals(workDataListMap.get(KKTK_SVC_KEI_NO)))
				{
					addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.KKTK_SVC_KEI_NO, null);
				}
				else
				{
					addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.KKTK_SVC_KEI_NO, workDataListMap.get(KKTK_SVC_KEI_NO));
				}

				// 割引サービス対象サービスコード
				addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD, workDataListMap.get(WRIB_SVC_TRGT_SVC_CD));

				// 設定登録年月日
				addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.SET_ADD_YMD, JCCBPCommon.getOpeDate(null));

				// 割引サービス対象契約適用開始年月日
				addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD, JCCBPCommon.getOpeDate(null));

				// 割引サービス対象契約適用終了年月日
				addWribSvcCdDtl.put(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD, END_YMD);

				addWribSvcCdDtlList.add(addWribSvcCdDtl);

				// 更新年月日時分秒(更新前)
				if (!JFUBPCommon.isNull(updDtm))
				{
					set_upd_dtm = updDtm;
					inMap.put(EKK1391D010CBSMsg.UPD_DTM_BF, updDtm);
				}
				else
				{
					set_upd_dtm = (String)workDataListMap.get(UPD_DTM);
				}
			}
		}

		inMap.put(EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST, addWribSvcCdDtlList);

		// 更新年月日時分秒(更新前)
		inMap.put(EKK0451D010CBSMsg.UPD_DTM_BF, set_upd_dtm);

		// 2012.10.12 baba  IT1-2012-0001295 start
		// 割引サービス契約自動継続識別コード
		inMap.put(EKK0451D010CBSMsg.WRIB_SVC_KEI_AT_KEIZK_SKCD, (String)addWribSvcCdListMap.get(WRIB_SVC_KEI_AT_KEIZK_SKCD));
		// 2012.10.12 baba  IT1-2012-0001295 end

	}

	/**
	 * 上りマッピング項目設定(サービス契約一意照会)
	 * 
	 * <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 サービスメッセージ
	 * @return int
	 * @throws RequestParameterException 
	 */
	private int judTarget(IRequestParameterReadWrite param, String fixedText, String wribSvcCd, String mnsCpFlg, HashMap addWribSvcListMap)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		HashMap<String, Object> subMap = new HashMap<String, Object>();
		HashMap<String, Object> telkikiMap = new HashMap<String, Object>();
		HashMap<String, Object> tvkikiMap = new HashMap<String, Object>();
		HashMap<String, Object> mobKikiMap = new HashMap<String, Object>();
		HashMap<String, Object> netOpMap = new HashMap<String, Object>();
		HashMap<String, Object> mobOpMap = new HashMap<String, Object>();
		HashMap<String, Object> telUcwkMap = new HashMap<String, Object>();
		HashMap<String, Object> tvUcwkMap = new HashMap<String, Object>();
		HashMap<String, Object> mobUcwkMap = new HashMap<String, Object>();
		HashMap<String, Object> inMapDtl = new HashMap<String, Object>();
		HashMap<String, Object> wribSvcMap = new HashMap<String, Object>();
		ArrayList wribSvcList = new ArrayList();
		ArrayList inMapList = new ArrayList();
		inMapList = (ArrayList)inMap.get(EKK0851B001CBSMsg.EKK0851B001CBSMSG1LIST);
		String targetsvcCd = "";
		String targetPrcGrpCd = "";

		// No356 2013/02/23 Otsuka start
		String targetPcrsCd = "";
		String targetPplanCd = "";
		// No356 2013/02/23 Otsuka end

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		// 割引サービス登録ワーク取得
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_NAME);
		if (workDataMap == null)
		{
			workDataMap = new HashMap();
			workMap.put(CC_WORK_NAME, workDataMap);
		}

		// 契約者情報ワーク取得
		HashMap workMskmDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_MSKM);
		if (workMskmDataMap == null)
		{
			workMskmDataMap = new HashMap();
		}
		HashMap workSvcKeiNetDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_SVC_NET);
		if (workSvcKeiNetDataMap == null)
		{
			workSvcKeiNetDataMap = new HashMap();
		}
		HashMap workSvcKeiTelDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_SVC_TEL);
		if (workSvcKeiTelDataMap == null)
		{
			workSvcKeiTelDataMap = new HashMap();
		}
		HashMap workSvcKeiTvDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_SVC_TV);
		if (workSvcKeiTvDataMap == null)
		{
			workSvcKeiTvDataMap = new HashMap();
		}
		HashMap workSvcKeiMobDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_SVC_MOB);
		if (workSvcKeiMobDataMap == null)
		{
			workSvcKeiMobDataMap = new HashMap();
		}

		// チェック用料金グループコード取得
		String chkPrcGrpCd = JFUStrConst.EMPTY;
		if (addWribSvcListMap.containsKey(CHK_PRC_GRP_CD) && !JFUBPCommon.isNull(addWribSvcListMap.get(CHK_PRC_GRP_CD)))
		{
			chkPrcGrpCd = (String)addWribSvcListMap.get(CHK_PRC_GRP_CD);
		}		
		// チェック用料金コースコード取得
		String chkPcrsCd = JFUStrConst.EMPTY;
		if (addWribSvcListMap.containsKey(CHK_PCRS_CD) && !JFUBPCommon.isNull(addWribSvcListMap.get(CHK_PCRS_CD)))
		{
			chkPcrsCd = (String)addWribSvcListMap.get(CHK_PCRS_CD);
		}
		// チェック用料金プランコード取得
		String chkPplanCd = JFUStrConst.EMPTY;
		if (addWribSvcListMap.containsKey(CHK_PPLAN_CD) && !JFUBPCommon.isNull(addWribSvcListMap.get(CHK_PPLAN_CD)))
		{
			chkPplanCd = (String)addWribSvcListMap.get(CHK_PPLAN_CD);
		}
		
		// 割引サービス対象サービス一覧照会で取得したデータの件数分ループさせる。
		for (int i = 0; i < inMapList.size(); i++)
		{
			String svcCd = "";
			String prcGrpCd = "";
			String kktkSvcCd = "";
			String opSvcCd = "";
			String sbOpSvcCd = "";
			String seiOpSvcCd = "";
			String prcsCd = "";
			String wribSvcTrgtSvcCd = "";

			// No356 2013/02/25 Otsuka start
			String pPlanCd = "";
			// No356 2013/02/25 Otsuka end

			inMapDtl = (HashMap<String, Object>)inMapList.get(i);

			if (null != (String)inMapDtl.get(EKK0851B001CBSMsg1List.SVC_CD))
			{
				svcCd = (String)inMapDtl.get(EKK0851B001CBSMsg1List.SVC_CD);
			}
			if (null != (String)inMapDtl.get(EKK0851B001CBSMsg1List.PRC_GRP_CD))
			{
				prcGrpCd = (String)inMapDtl.get(EKK0851B001CBSMsg1List.PRC_GRP_CD);
			}
			if (null != (String)inMapDtl.get(EKK0851B001CBSMsg1List.KKTK_SVC_CD))
			{
				kktkSvcCd = (String)inMapDtl.get(EKK0851B001CBSMsg1List.KKTK_SVC_CD);
			}
			if (null != (String)inMapDtl.get(EKK0851B001CBSMsg1List.OP_SVC_CD))
			{
				opSvcCd = (String)inMapDtl.get(EKK0851B001CBSMsg1List.OP_SVC_CD);
			}
			if (null != (String)inMapDtl.get(EKK0851B001CBSMsg1List.SBOP_SVC_CD))
			{
				sbOpSvcCd = (String)inMapDtl.get(EKK0851B001CBSMsg1List.SBOP_SVC_CD);
			}
			if (null != (String)inMapDtl.get(EKK0851B001CBSMsg1List.SEIOPSVC_CD))
			{
				seiOpSvcCd = (String)inMapDtl.get(EKK0851B001CBSMsg1List.SEIOPSVC_CD);
			}
			if (null != (String)inMapDtl.get(EKK0851B001CBSMsg1List.PCRS_CD))
			{
				prcsCd = (String)inMapDtl.get(EKK0851B001CBSMsg1List.PCRS_CD);
			}
			if (null != (String)inMapDtl.get(EKK0851B001CBSMsg1List.WRIB_SVC_TRGT_SVC_CD))
			{
				// 割引サービス対象サービスコード
				wribSvcTrgtSvcCd = (String)inMapDtl.get(EKK0851B001CBSMsg1List.WRIB_SVC_TRGT_SVC_CD);
			}
			// No356 2013/02/25 Otsuka start
			if (null != (String)inMapDtl.get(EKK0851B001CBSMsg1List.PPLAN_CD))
			{
				// 料金プランコード
				pPlanCd = (String)inMapDtl.get(EKK0851B001CBSMsg1List.PPLAN_CD);
			}
			// No356 2013/02/25 Otsuka end

			// サービス契約判定
			// ホームタイプ
			// eo光ネット登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0091D010);
			if (inMap != null)
			{
				targetsvcCd = (String)inMap.get(SVC_CD);
				targetPrcGrpCd = (String)inMap.get(PRC_GRP_CD);

				// No356 2013/02/25 Otsuka start
				targetPcrsCd = (String)inMap.get(PCRS_CD_O);
				targetPplanCd = (String)inMap.get(PPLAN_CD_O);
				boolean setFlg = true;
				// No356 2013/02/25 Otsuka end

				if ((targetsvcCd.equals(svcCd) && ("".equals(prcGrpCd) || prcGrpCd == null))
						|| (targetsvcCd.equals(svcCd) && targetPrcGrpCd.equals(prcGrpCd)))
				{
					// No356 2013/02/25 Otsuka start
					// 料金プランコードが存在する場合
					if (!"".equals(prcsCd) && prcsCd != null)
					{
						// 料金コースコードが違う場合は設定フラグをfalseにする
						if (!prcsCd.equals(targetPcrsCd))
						{
							setFlg = false;
						}
					}

					// 料金コースコードが存在する場合
					if (setFlg && !"".equals(pPlanCd) && pPlanCd != null)
					{
						// 料金プランコードが違う場合は設定フラグをfalseにする
						if (!pPlanCd.equals(targetPplanCd))
						{
							setFlg = false;
						}
					}

					if (setFlg)
					{
						wribSvcMap = new HashMap<String, Object>();
						wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_01); // No356 2013/02/25 Otsuka
						wribSvcMap.put(SVC_KEI_NO, workSvcKeiNetDataMap.get(SVC_KEI_NO));
						wribSvcMap.put(KKTK_SVC_KEI_NO, null);
						wribSvcMap.put(OP_SVC_KEI_NO, null);
						wribSvcMap.put(SVC_KEI_UCWK_NO, null);
						wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
						wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_NET));
						wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
						wribSvcList.add(wribSvcMap);
					}
					// No356 2013/02/25 Otsuka end
				}
			}
			
			// スマリンキャンペーン割引登録の為の設定
			String cmpKikiSvcKeiNo = JFUStrConst.EMPTY;
			String cmpKikiSvcMskmDtlNo = JFUStrConst.EMPTY;
			String cmpKikiUpdDtm = JFUStrConst.EMPTY;
			// 機器提供サービス契約スマートリンク登録マップが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0341D010SML);
			if (inMap != null)
			{
				cmpKikiSvcKeiNo = (String)inMap.get(SVC_KEI_NO);
				cmpKikiSvcMskmDtlNo = (String)inMap.get(MSKM_DTL_NO);
				cmpKikiUpdDtm = (String)inMap.get(UPD_DTM);
			}
// ANK-3908-00-00 ADD START
			// メッシュWIFI割引登録の為の設定
			subMap = (HashMap<String, Object>)param.getData("EKK0341D010");
			if (subMap != null)
			{
				int netOpCnt = ((ArrayList)subMap.get("EKK0341D010List")).size();
				for (int j = 0; j < netOpCnt; j++)
				{
					inMap = (HashMap)((ArrayList)subMap.get("EKK0341D010List")).get(j);
					targetPcrsCd = (String)inMap.get(PCRS_CD);
					targetPplanCd = (String)inMap.get(PPLAN_CD);
					if (JFUStrConst.CD00134_CA2.equals(targetPcrsCd) && JFUStrConst.CD00565_PCA201.equals(targetPplanCd))
					{
						cmpKikiSvcKeiNo = (String)inMap.get(SVC_KEI_NO);
						cmpKikiSvcMskmDtlNo = (String)inMap.get(MSKM_DTL_NO);
						cmpKikiUpdDtm = (String)inMap.get(UPD_DTM);
					}
				}
			}
// ANK-3908-00-00 ADD END
			String cmpSvcKeiNo = JFUStrConst.EMPTY;
			String cmpSvcMskmDtlNo = JFUStrConst.EMPTY;
			String cmpUpdDtm = JFUStrConst.EMPTY;
			if (workSvcKeiNetDataMap != null && workSvcKeiNetDataMap.size() > 0)
			{
				cmpSvcKeiNo = (String)workSvcKeiNetDataMap.get(SVC_KEI_NO);
				cmpUpdDtm = (String)workSvcKeiNetDataMap.get(UPD_DTM);
			}
			else if (!JFUBPCommon.isNull(cmpKikiSvcKeiNo))
			{
				cmpSvcKeiNo = cmpKikiSvcKeiNo;
				cmpUpdDtm = cmpKikiUpdDtm;
			}
					
			if (workMskmDataMap != null && workSvcKeiNetDataMap.size() > 0)
			{
				cmpSvcMskmDtlNo = (String)workMskmDataMap.get(MSKM_DTL_NO_NET);
			}
			else if (!JFUBPCommon.isNull(cmpKikiSvcMskmDtlNo))
			{
				cmpSvcMskmDtlNo = cmpKikiSvcMskmDtlNo;
			}
// ANK-3473-00-00 ADD START
			// お祝いパック用にeoTV契約サービスの情報を取得する
			// eoTVサービス契約番号
			if (addWribSvcListMap.containsKey(SVC_KEI_NO) && !JFUBPCommon.isNull(addWribSvcListMap.get(SVC_KEI_NO)))
			{
				cmpSvcKeiNo = (String)addWribSvcListMap.get(SVC_KEI_NO);
			}
			// eoTVサービス申込明細番号
			if (addWribSvcListMap.containsKey(MSKM_DTL_NO) && !JFUBPCommon.isNull(addWribSvcListMap.get(MSKM_DTL_NO)))
			{
				cmpSvcMskmDtlNo = (String)addWribSvcListMap.get(MSKM_DTL_NO);
			}
			// eoTVサービス更新年月日
			if (addWribSvcListMap.containsKey(UPD_DTM) && !JFUBPCommon.isNull(addWribSvcListMap.get(UPD_DTM)))
			{
// OM-2018-0001328 MOD START
				HashMap workDataMap_upddtm = (HashMap)workMap.get("JFUAddServiceCommonWork");
				if (workDataMap_upddtm == null)
				{
					cmpUpdDtm = JFUStrConst.EMPTY;
				} else {
					// 機器提供サービス契約の最終更新年月日時分秒を使用する。
					cmpUpdDtm = (String)workDataMap_upddtm.get("TvLastUpdDtm");
				}
				// 機器提供サービス契約の最終更新年月日時分秒が未設定の場合
				if (JFUBPCommon.isNull(cmpUpdDtm))
				{
					// eoTVサービス契約の最終更新年月日を取得
					String tvLastUpdDtm = (String)addWribSvcListMap.get("TvLastUpdDtm");
					cmpUpdDtm = (String)addWribSvcListMap.get(UPD_DTM);
					// パラメータの更新年月日よりeoTVサービス契約の最終更新年月日のほうが未来日の場合
					// eoTVサービス契約の最終更新年月日でレコード追加
					if (cmpUpdDtm.compareTo(tvLastUpdDtm) < 0)
					{
						cmpUpdDtm = tvLastUpdDtm;
					}
				}
// OM-2018-0001328 MOD END
			}
// ANK-3473-00-00 ADD END
			// addWribSvcListMapにチェック用の料金コースコード、料金プランコードが設定されている場合、
			// その内容と突合せ
			// 料金グループが合うこと前提
			// 仮登録以外で当ロジックを通るとき、上記で取得している各マップに情報が無い場合、
			// 料金コース、料金プラン等、必要な情報はロジック側からマッピングする
			// 20140901時点では、スマリンキャンペーンを考慮した内容となっている為、
			// 他キャンペーンが追加で発生した場合は必要ならば改修してください
			if (prcGrpCd.equals(chkPrcGrpCd))
			{
				// マスタの料金コース、料金プランがどちらとも合致するか、
				// マスタの料金コース、料金プランがどちらも未設定か
				if ((prcsCd.equals(chkPcrsCd) && pPlanCd.equals(chkPplanCd)) 
						||((JFUBPCommon.isNull(prcsCd) && JFUBPCommon.isNull(pPlanCd))))
						{
							wribSvcMap = new HashMap<String, Object>();
							wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_01);
							wribSvcMap.put(SVC_KEI_NO, cmpSvcKeiNo);
							wribSvcMap.put(KKTK_SVC_KEI_NO, null);
							wribSvcMap.put(OP_SVC_KEI_NO, null);
							wribSvcMap.put(SVC_KEI_UCWK_NO, null);
							wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
							wribSvcMap.put(MSKM_DTL_NO, cmpSvcMskmDtlNo);
							wribSvcMap.put(UPD_DTM, cmpUpdDtm);
							wribSvcList.add(wribSvcMap);
						}
			}
			
			// eo光電話登録マップHashMapが存在する場合

			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0111D010);
			if (inMap != null)
			{
				targetsvcCd = (String)inMap.get(SVC_CD);
				targetPrcGrpCd = (String)inMap.get(PRC_GRP_CD);

				// No356 2013/02/25 Otsuka start
				targetPcrsCd = (String)inMap.get(PCRS_CD);
				targetPplanCd = (String)inMap.get(PPLAN_CD);
				boolean setFlg = true;
				// No356 2013/02/25 Otsuka end

				if ((targetsvcCd.equals(svcCd) && ("".equals(prcGrpCd) || prcGrpCd == null))
						|| (targetsvcCd.equals(svcCd) && targetPrcGrpCd.equals(prcGrpCd)))
				{
					// No356 2013/02/25 Otsuka start
					// 料金プランコードが存在する場合
					if (!"".equals(prcsCd) && prcsCd != null)
					{
						// 料金コースコードが違う場合は設定フラグをfalseにする
						if (!prcsCd.equals(targetPcrsCd))
						{
							setFlg = false;
						}
					}

					// 料金コースコードが存在する場合
					if (setFlg && !"".equals(pPlanCd) && pPlanCd != null)
					{
						// 料金プランコードが違う場合は設定フラグをfalseにする
						if (!pPlanCd.equals(targetPplanCd))
						{
							setFlg = false;
						}
					}

					if (setFlg)
					{
						wribSvcMap = new HashMap<String, Object>();
						wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_01); // No356 2013/02/25 Otsuka
						wribSvcMap.put(SVC_KEI_NO, workSvcKeiTelDataMap.get(SVC_KEI_NO));
						wribSvcMap.put(KKTK_SVC_KEI_NO, null);
						wribSvcMap.put(OP_SVC_KEI_NO, null);
						wribSvcMap.put(SVC_KEI_UCWK_NO, null);
						wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
						wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TEL));
						wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
						wribSvcList.add(wribSvcMap);
					}
					// No356 2013/02/25 Otsuka end
				}
			}

			// eo光テレビ登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0101D010);
			if (inMap != null)
			{
				targetsvcCd = (String)inMap.get(SVC_CD);
				targetPrcGrpCd = (String)inMap.get(PRC_GRP_CD);
				// No356 2013/02/25 Otsuka start
				targetPcrsCd = (String)inMap.get(PCRS_CD);
				targetPplanCd = (String)inMap.get(PPLAN_CD);
				boolean setFlg = true;
				// No356 2013/02/25 Otsuka end

				if ((targetsvcCd.equals(svcCd) && ("".equals(prcGrpCd) || prcGrpCd == null))
						|| (targetsvcCd.equals(svcCd) && targetPrcGrpCd.equals(prcGrpCd)))
				{
					// No356 2013/02/25 Otsuka start
					// 料金プランコードが存在する場合
					if (!"".equals(prcsCd) && prcsCd != null)
					{
						// 料金コースコードが違う場合は設定フラグをfalseにする
						if (!prcsCd.equals(targetPcrsCd))
						{
							setFlg = false;
						}
					}

					// 料金コースコードが存在する場合
					if (setFlg && !"".equals(pPlanCd) && pPlanCd != null)
					{
						// 料金プランコードが違う場合は設定フラグをfalseにする
						if (!pPlanCd.equals(targetPplanCd))
						{
							setFlg = false;
						}
					}

					if (setFlg)
					{
						wribSvcMap = new HashMap<String, Object>();
						wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_01); // No356 2013/02/25 Otsuka
						wribSvcMap.put(SVC_KEI_NO, workSvcKeiTvDataMap.get(SVC_KEI_NO));
						wribSvcMap.put(KKTK_SVC_KEI_NO, null);
						wribSvcMap.put(OP_SVC_KEI_NO, null);
						wribSvcMap.put(SVC_KEI_UCWK_NO, null);
						wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
						wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TV));
						wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
						wribSvcList.add(wribSvcMap);
					}
					// No356 2013/02/25 Otsuka end
				}
			}

			// eo光モバイル登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0121D010);

			// 2013/03/19【No465】WiMAX白ロム割引適用対応 Fujiwara Add Start
			boolean mobileFlg = false;
			if (inMap == null)
			{
				inMap = (HashMap<String, Object>)param.getData("FUSV016510SC");
				// モバイル単独の場合
				if (inMap != null)
				{
					mobileFlg = true;
				}
			}
			// 2013/03/19【No465】WiMAX白ロム割引適用対応 Fujiwara Add End
			if (inMap != null)
			{
				targetsvcCd = (String)inMap.get(SVC_CD);
				targetPrcGrpCd = (String)inMap.get(PRC_GRP_CD);

				// No356 2013/02/25 Otsuka start
				targetPcrsCd = (String)inMap.get(PCRS_CD);
				targetPplanCd = (String)inMap.get(PPLAN_CD);
				boolean setFlg = true;
				// No356 2013/02/25 Otsuka end

				if ((targetsvcCd.equals(svcCd) && ("".equals(prcGrpCd) || prcGrpCd == null))
						|| (targetsvcCd.equals(svcCd) && targetPrcGrpCd.equals(prcGrpCd)))
				{
					// No356 2013/02/25 Otsuka start
					// 料金プランコードが存在する場合
					if (!"".equals(prcsCd) && prcsCd != null)
					{
						// 料金コースコードが違う場合は設定フラグをfalseにする
						if (!prcsCd.equals(targetPcrsCd))
						{
							setFlg = false;
						}
					}

					// 料金コースコードが存在する場合
					if (setFlg && !"".equals(pPlanCd) && pPlanCd != null)
					{
						// 料金プランコードが違う場合は設定フラグをfalseにする
						if (!pPlanCd.equals(targetPplanCd))
						{
							setFlg = false;
						}
					}

					if (setFlg)
					{
						wribSvcMap = new HashMap<String, Object>();
						wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_01); // No356 2013/02/25 Otsuka

						// 2013/03/19【No465】WiMAX白ロム割引適用対応 Fujiwara Add Start
						// モバイル単独の場合
						if (mobileFlg)
						{
							wribSvcMap.put(SVC_KEI_NO, com.fujitsu.futurity.bp.custom.common.JFUBPCommon.getBPValueString(param, "FUSV016510SC",
									"svc_kei_no"));
						}
						else
						{
							wribSvcMap.put(SVC_KEI_NO, workSvcKeiMobDataMap.get(SVC_KEI_NO));
						}
						// 2013/03/19【No465】WiMAX白ロム割引適用対応 Fujiwara Add End
						wribSvcMap.put(KKTK_SVC_KEI_NO, null);
						wribSvcMap.put(OP_SVC_KEI_NO, null);
						wribSvcMap.put(SVC_KEI_UCWK_NO, null);
						wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
						// 2013/03/19【No465】WiMAX白ロム割引適用対応 Fujiwara Add Start
						// モバイル単独の場合
						if (mobileFlg)
						{
							wribSvcMap.put(MSKM_DTL_NO, com.fujitsu.futurity.bp.custom.common.JPCBPCommon.getBPListValueString(param, "FUSV016505SC",
									"EKK0011D020CBSMsg1List", 0, "mskm_dtl_no"));
						}
						else
						{
							wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_MOB));
						}
						// 2013/03/19【No465】WiMAX白ロム割引適用対応 Fujiwara Add End
						wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
						wribSvcList.add(wribSvcMap);
					}
					// No356 2013/02/25 Otsuka end
				}
			}

			// 機器提供サービス判定
			// eo光ネット登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0091D010);
			if (inMap != null)
			{
				subMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0341D010NET);
				if (subMap != null && kktkSvcCd.equals(subMap.get(KKTK_SVC_CD)))
				{
					// No356 2013/02/25 Otsuka start
					targetPcrsCd = (String)inMap.get(PCRS_CD_O);
					targetPplanCd = (String)inMap.get(PPLAN_CD_O);
					boolean setFlg = true;

					// 料金プランコードが存在する場合
					if (!"".equals(prcsCd) && prcsCd != null)
					{
						// 料金コースコードが違う場合は設定フラグをfalseにする
						if (!prcsCd.equals(targetPcrsCd))
						{
							setFlg = false;
						}
					}

					// 料金コースコードが存在する場合
					if (setFlg && !"".equals(pPlanCd) && pPlanCd != null)
					{
						// 料金プランコードが違う場合は設定フラグをfalseにする
						if (!pPlanCd.equals(targetPplanCd))
						{
							setFlg = false;
						}
					}

					if (setFlg)
					{
						wribSvcMap = new HashMap<String, Object>();
						wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_06); // No356 2013/02/25 Otsuka
						wribSvcMap.put(KKTK_SVC_KEI_NO, subMap.get(KKTK_SVC_KEI_NO));
						wribSvcMap.put(SVC_KEI_NO, null);
						wribSvcMap.put(OP_SVC_KEI_NO, null);
						wribSvcMap.put(SVC_KEI_UCWK_NO, null);
						wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
						wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_NET));
						wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
						wribSvcList.add(wribSvcMap);
					}
					// No356 2013/02/25 Otsuka end
				}
			}

			// eo光電話登録マップHashMapが存在する場合

			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0111D010);
			if (inMap != null)
			{
				subMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0341D010TEL);
				if (subMap != null)
				{
					int telKikiCnt = ((ArrayList)subMap.get(MAP_ID_EKK0341D010TELLIST)).size();
					for (int j = 0; j < telKikiCnt; j++)
					{
						telkikiMap = (HashMap)((ArrayList)subMap.get(MAP_ID_EKK0341D010TELLIST)).get(j);
						if (kktkSvcCd.equals(telkikiMap.get(KKTK_SVC_CD)))
						{
							// No356 2013/02/25 Otsuka start
							targetPcrsCd = (String)inMap.get(PCRS_CD);
							targetPplanCd = (String)inMap.get(PPLAN_CD);
							boolean setFlg = true;

							// 料金プランコードが存在する場合
							if (!"".equals(prcsCd) && prcsCd != null)
							{
								// 料金コースコードが違う場合は設定フラグをfalseにする
								if (!prcsCd.equals(targetPcrsCd))
								{
									setFlg = false;
								}
							}

							// 料金コースコードが存在する場合
							if (setFlg && !"".equals(pPlanCd) && pPlanCd != null)
							{
								// 料金プランコードが違う場合は設定フラグをfalseにする
								if (!pPlanCd.equals(targetPplanCd))
								{
									setFlg = false;
								}
							}

							if (setFlg)
							{
								wribSvcMap = new HashMap<String, Object>();
								wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_06); // No356 2013/02/25 Otsuka
								wribSvcMap.put(KKTK_SVC_KEI_NO, telkikiMap.get(KKTK_SVC_KEI_NO));
								wribSvcMap.put(SVC_KEI_NO, null);
								wribSvcMap.put(OP_SVC_KEI_NO, null);
								wribSvcMap.put(SVC_KEI_UCWK_NO, null);
								wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
								wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TEL));
								wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
								wribSvcList.add(wribSvcMap);
							}
							// No356 2013/02/25 Otsuka end
						}
					}
				}
			}

			// eo光テレビ登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0101D010);
			if (inMap != null)
			{
				subMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0341D010TV);
				if (subMap != null)
				{
					int tvKikiCnt = ((ArrayList)subMap.get(MAP_ID_EKK0341D010TVLIST)).size();
					for (int j = 0; j < tvKikiCnt; j++)
					{
						tvkikiMap = (HashMap)((ArrayList)subMap.get(MAP_ID_EKK0341D010TVLIST)).get(j);
						if (kktkSvcCd.equals(tvkikiMap.get(KKTK_SVC_CD)))
						{
							// No356 2013/02/25 Otsuka start
							targetPcrsCd = (String)inMap.get(PCRS_CD);
							targetPplanCd = (String)inMap.get(PPLAN_CD);
							boolean setFlg = true;

							// 料金プランコードが存在する場合
							if (!"".equals(prcsCd) && prcsCd != null)
							{
								// 料金コースコードが違う場合は設定フラグをfalseにする
								if (!prcsCd.equals(targetPcrsCd))
								{
									setFlg = false;
								}
							}

							// 料金コースコードが存在する場合
							if (setFlg && !"".equals(pPlanCd) && pPlanCd != null)
							{
								// 料金プランコードが違う場合は設定フラグをfalseにする
								if (!pPlanCd.equals(targetPplanCd))
								{
									setFlg = false;
								}
							}

							if (setFlg)
							{
								wribSvcMap = new HashMap<String, Object>();
								wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_06); // No356 2013/02/25 Otsuka
								wribSvcMap.put(KKTK_SVC_KEI_NO, tvkikiMap.get(KKTK_SVC_KEI_NO));
								wribSvcMap.put(SVC_KEI_NO, null);
								wribSvcMap.put(OP_SVC_KEI_NO, null);
								wribSvcMap.put(SVC_KEI_UCWK_NO, null);
								wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
								wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TV));
								wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
								wribSvcList.add(wribSvcMap);
							}
							// No356 2013/02/25 Otsuka end
						}
					}
				}
			}

			// eo光モバイル登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0121D010);
			if (inMap != null)
			{
				subMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0341D010MOB);
				if (subMap != null)
				{
					int mobKikiCnt = ((ArrayList)subMap.get(MAP_ID_EKK0341D010MOBLIST)).size();
					for (int j = 0; j < mobKikiCnt; j++)
					{
						mobKikiMap = (HashMap)((ArrayList)subMap.get(MAP_ID_EKK0341D010MOBLIST)).get(j);
						if (kktkSvcCd.equals(mobKikiMap.get(KKTK_SVC_CD)))
						{
							// No356 2013/02/25 Otsuka start
							targetPcrsCd = (String)inMap.get(PCRS_CD);
							targetPplanCd = (String)inMap.get(PPLAN_CD);
							boolean setFlg = true;

							// 料金プランコードが存在する場合
							if (!"".equals(prcsCd) && prcsCd != null)
							{
								// 料金コースコードが違う場合は設定フラグをfalseにする
								if (!prcsCd.equals(targetPcrsCd))
								{
									setFlg = false;
								}
							}

							// 料金コースコードが存在する場合
							if (setFlg && !"".equals(pPlanCd) && pPlanCd != null)
							{
								// 料金プランコードが違う場合は設定フラグをfalseにする
								if (!pPlanCd.equals(targetPplanCd))
								{
									setFlg = false;
								}
							}

							if (setFlg)
							{
								wribSvcMap = new HashMap<String, Object>();
								wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_06); // No356 2013/02/25 Otsuka
								wribSvcMap.put(KKTK_SVC_KEI_NO, mobKikiMap.get(KKTK_SVC_KEI_NO));
								wribSvcMap.put(SVC_KEI_NO, null);
								wribSvcMap.put(OP_SVC_KEI_NO, null);
								wribSvcMap.put(SVC_KEI_UCWK_NO, null);
								wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
								wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_MOB));
								wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
								wribSvcList.add(wribSvcMap);
							}
							// No356 2013/02/25 Otsuka end
						}
					}
				}
			}

			// ONU登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0341D010ONU);
			if (inMap != null)
			{
				if (kktkSvcCd.equals(inMap.get(KKTK_SVC_CD)))
				{
					// No356 2013/02/25 Otsuka start
					targetPcrsCd = (String)inMap.get(PCRS_CD);
					targetPplanCd = (String)inMap.get(PPLAN_CD);
					boolean setFlg = true;

					// 料金プランコードが存在する場合
					if (!"".equals(prcsCd) && prcsCd != null)
					{
						// 料金コースコードが違う場合は設定フラグをfalseにする
						if (!prcsCd.equals(targetPcrsCd))
						{
							setFlg = false;
						}
					}

					// 料金コースコードが存在する場合
					if (setFlg && !"".equals(pPlanCd) && pPlanCd != null)
					{
						// 料金プランコードが違う場合は設定フラグをfalseにする
						if (!pPlanCd.equals(targetPplanCd))
						{
							setFlg = false;
						}
					}

					if (setFlg)
					{
						wribSvcMap = new HashMap<String, Object>();
						wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_06); // No356 2013/02/25 Otsuka
						wribSvcMap.put(KKTK_SVC_KEI_NO, inMap.get(KKTK_SVC_KEI_NO));
						wribSvcMap.put(SVC_KEI_NO, null);
						wribSvcMap.put(OP_SVC_KEI_NO, null);
						wribSvcMap.put(SVC_KEI_UCWK_NO, null);
						wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
						wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_NET));
						wribSvcMap.put(UPD_DTM, ((HashMap<String, Object>)param.getData(MAP_ID_EKK0091D010)).get(UPD_DTM));
						wribSvcList.add(wribSvcMap);
					}
					// No356 2013/02/25 Otsuka end
				}
			}

			// VONU登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0341D010VONU);
			if (inMap != null)
			{
				if (kktkSvcCd.equals(inMap.get(KKTK_SVC_CD)))
				{
					// No356 2013/02/25 Otsuka start
					targetPcrsCd = (String)inMap.get(PCRS_CD);
					targetPplanCd = (String)inMap.get(PPLAN_CD);
					boolean setFlg = true;

					// 料金プランコードが存在する場合
					if (!"".equals(prcsCd) && prcsCd != null)
					{
						// 料金コースコードが違う場合は設定フラグをfalseにする
						if (!prcsCd.equals(targetPcrsCd))
						{
							setFlg = false;
						}
					}

					// 料金コースコードが存在する場合
					if (setFlg && !"".equals(pPlanCd) && pPlanCd != null)
					{
						// 料金プランコードが違う場合は設定フラグをfalseにする
						if (!pPlanCd.equals(targetPplanCd))
						{
							setFlg = false;
						}
					}

					if (setFlg)
					{
						wribSvcMap = new HashMap<String, Object>();
						wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_06); // No356 2013/02/25 Otsuka
						wribSvcMap.put(KKTK_SVC_KEI_NO, inMap.get(KKTK_SVC_KEI_NO));
						wribSvcMap.put(SVC_KEI_NO, null);
						wribSvcMap.put(OP_SVC_KEI_NO, null);
						wribSvcMap.put(SVC_KEI_UCWK_NO, null);
						wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
						wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TV));
						wribSvcMap.put(UPD_DTM, ((HashMap<String, Object>)param.getData(MAP_ID_EKK0101D010)).get(UPD_DTM));
						wribSvcList.add(wribSvcMap);
					}
					// No356 2013/02/25 Otsuka end
				}
			}

			// オプションサービス判定
			// eo光ネット登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0091D010);
			if (inMap != null)
			{
				subMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0361D010NET);
				if (subMap != null)
				{
					int netOpCnt = ((ArrayList)subMap.get(MAP_ID_EKK0361D010NETLIST)).size();
					for (int j = 0; j < netOpCnt; j++)
					{
						netOpMap = (HashMap)((ArrayList)subMap.get(MAP_ID_EKK0361D010NETLIST)).get(j);
						if (opSvcCd.equals(netOpMap.get(OP_SVC_CD)))
						{
							// No356 2013/02/25 Otsuka start
							targetPcrsCd = (String)netOpMap.get(PCRS_CD);
							targetPplanCd = (String)netOpMap.get(PPLAN_CD);
							boolean setFlg = true;

							// 料金プランコードが存在する場合
							if (!"".equals(prcsCd) && prcsCd != null)
							{
								// 料金コースコードが違う場合は設定フラグをfalseにする
								if (!prcsCd.equals(targetPcrsCd))
								{
									setFlg = false;
								}
							}

							// 料金コースコードが存在する場合
							if (setFlg && !"".equals(pPlanCd) && pPlanCd != null)
							{
								// 料金プランコードが違う場合は設定フラグをfalseにする
								if (!pPlanCd.equals(targetPplanCd))
								{
									setFlg = false;
								}
							}

							if (setFlg)
							{
								wribSvcMap = new HashMap<String, Object>();
								wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_04); // No356 2013/02/25 Otsuka
								wribSvcMap.put(OP_SVC_KEI_NO, netOpMap.get(OP_SVC_KEI_NO));
								wribSvcMap.put(SVC_KEI_NO, null);
								wribSvcMap.put(KKTK_SVC_KEI_NO, null);
								wribSvcMap.put(SVC_KEI_UCWK_NO, null);
								wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
								wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_NET));
								wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
								wribSvcList.add(wribSvcMap);
							}
							// No356 2013/02/25 Otsuka end
						}
					}
				}
			}

			// eoモバイル登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0121D010);
			if (inMap != null)
			{
				subMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0361D010MOB);
				if (subMap != null)
				{
					int mobOpCnt = ((ArrayList)subMap.get(MAP_ID_EKK0361D010MOBLIST)).size();
					for (int j = 0; j < mobOpCnt; j++)
					{
						mobOpMap = (HashMap)((ArrayList)subMap.get(MAP_ID_EKK0361D010MOBLIST)).get(j);
						if (opSvcCd.equals(mobOpMap.get(OP_SVC_CD)))
						{
							// No356 2013/02/25 Otsuka start
							targetPcrsCd = (String)mobOpMap.get(PCRS_CD);
							targetPplanCd = (String)mobOpMap.get(PPLAN_CD);
							boolean setFlg = true;

							// 料金プランコードが存在する場合
							if (!"".equals(prcsCd) && prcsCd != null)
							{
								// 料金コースコードが違う場合は設定フラグをfalseにする
								if (!prcsCd.equals(targetPcrsCd))
								{
									setFlg = false;
								}
							}

							// 料金コースコードが存在する場合
							if (setFlg && !"".equals(pPlanCd) && pPlanCd != null)
							{
								// 料金プランコードが違う場合は設定フラグをfalseにする
								if (!pPlanCd.equals(targetPplanCd))
								{
									setFlg = false;
								}
							}

							if (setFlg)
							{
								wribSvcMap = new HashMap<String, Object>();
								wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_04); // No356 2013/02/25 Otsuka
								wribSvcMap.put(OP_SVC_KEI_NO, mobOpMap.get(OP_SVC_KEI_NO));
								wribSvcMap.put(SVC_KEI_NO, null);
								wribSvcMap.put(KKTK_SVC_KEI_NO, null);
								wribSvcMap.put(SVC_KEI_UCWK_NO, null);
								wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
								wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_MOB));
								wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
								wribSvcList.add(wribSvcMap);
							}
							// No356 2013/02/25 Otsuka end
						}
					}
				}
			}

			// サービスコード、料金グループコード、機器提供サービスコード、オプションサービスコード、
			// サブオプションサービスコード、請求オプションサービスコードの何れかが設定されている場合、
			// サービス契約内訳判定は行わない
			if ((!BLANK.equals(svcCd) && null != svcCd) || (!BLANK.equals(prcGrpCd) && null != prcGrpCd)
					|| (!BLANK.equals(kktkSvcCd) && null != kktkSvcCd) || (!BLANK.equals(opSvcCd) && null != opSvcCd)
					|| (!BLANK.equals(sbOpSvcCd) && null != sbOpSvcCd) || (!BLANK.equals(seiOpSvcCd) && null != seiOpSvcCd))
			{
				continue;
			}

			// サービス契約内訳判定
			// eo光ネット登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0091D010);
			if (inMap != null)
			{
				if (prcsCd.equals(inMap.get(PCRS_CD_O)))
				{
					subMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0171D010);
					if (subMap != null)
					{
						wribSvcMap = new HashMap<String, Object>();
						wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_03); // No356 2013/02/25 Otsuka
						wribSvcMap.put(SVC_KEI_UCWK_NO, subMap.get(SVC_KEI_UCWK_NO));
						wribSvcMap.put(SVC_KEI_NO, null);
						wribSvcMap.put(KKTK_SVC_KEI_NO, null);
						wribSvcMap.put(OP_SVC_KEI_NO, null);
						wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
						wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_NET));
						wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
						wribSvcList.add(wribSvcMap);
					}
				}
			}

			// eo光電話登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0111D010);
			if (inMap != null)
			{
				if (prcsCd.equals(inMap.get(PCRS_CD)))
				{
					subMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0191D010);
					if (subMap != null)
					{
						wribSvcMap = new HashMap<String, Object>();
						telUcwkMap = (HashMap)((ArrayList)subMap.get(MAP_ID_EKK0191D010LIST)).get(0);
						wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_03); // No356 2013/02/25 Otsuka
						wribSvcMap.put(SVC_KEI_UCWK_NO, telUcwkMap.get(SVC_KEI_UCWK_NO));
						wribSvcMap.put(SVC_KEI_NO, null);
						wribSvcMap.put(KKTK_SVC_KEI_NO, null);
						wribSvcMap.put(OP_SVC_KEI_NO, null);
						wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
						wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TEL));
						wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
						wribSvcList.add(wribSvcMap);
					}
				}
			}

			// eo光テレビ登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0101D010);
			if (inMap != null)
			{
				subMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0181D010);
				if (subMap != null)
				{
					int tvUcwkCnt = ((ArrayList)subMap.get(MAP_ID_EKK0181D010LIST)).size();
					for (int j = 0; j < tvUcwkCnt; j++)
					{
						tvUcwkMap = (HashMap)((ArrayList)subMap.get(MAP_ID_EKK0181D010LIST)).get(j);
						if (prcsCd.equals(tvUcwkMap.get(PCRS_CD)))
						{
							wribSvcMap = new HashMap<String, Object>();
							wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_03); // No356 2013/02/25 Otsuka
							wribSvcMap.put(SVC_KEI_UCWK_NO, tvUcwkMap.get(SVC_KEI_UCWK_NO));
							wribSvcMap.put(SVC_KEI_NO, null);
							wribSvcMap.put(KKTK_SVC_KEI_NO, null);
							wribSvcMap.put(OP_SVC_KEI_NO, null);
							wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
							wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TV));
							wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
							wribSvcList.add(wribSvcMap);
						}
					}
				}
			}

			// eoモバイル登録マップHashMapが存在する場合
			inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0121D010);
			if (inMap != null)
			{
				subMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0201D010);
				if (subMap != null)
				{
					int mobUcwkCnt = ((ArrayList)subMap.get(MAP_ID_EKK0201D010LIST)).size();
					for (int j = 0; j < mobUcwkCnt; j++)
					{
						mobUcwkMap = (HashMap)((ArrayList)subMap.get(MAP_ID_EKK0201D010LIST)).get(j);
						if (prcsCd.equals(mobUcwkMap.get(PCRS_CD)))
						{
							wribSvcMap = new HashMap<String, Object>();
							wribSvcMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_03); // No356 2013/02/25 Otsuka
							wribSvcMap.put(SVC_KEI_UCWK_NO, mobUcwkMap.get(SVC_KEI_UCWK_NO));
							wribSvcMap.put(SVC_KEI_NO, null);
							wribSvcMap.put(KKTK_SVC_KEI_NO, null);
							wribSvcMap.put(OP_SVC_KEI_NO, null);
							wribSvcMap.put(WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
							wribSvcMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_MOB));
							wribSvcMap.put(UPD_DTM, inMap.get(UPD_DTM));
							wribSvcList.add(wribSvcMap);
						}
					}
				}
			}
		}

		// 1つの割引サービスコードに登録対象が１件以上存在する場合
		if (wribSvcList.size() > 0)
		{
			if (wribSvcList.size() > 1)
			{
				Collections.sort(wribSvcList, new Comparator()
				{

					/**
					 * 申込明細番号順に並び替える
					 * 
					 * <br>
					 * @param o1
					 * @param o2
					 * @return int
					 */
					public int compare(Object o1, Object o2)
					{
						HashMap map1 = (HashMap)o1;
						HashMap map2 = (HashMap)o2;
						String str1 = (String)map1.get(MSKM_DTL_NO);
						String str2 = (String)map2.get(MSKM_DTL_NO);
						return str1.compareTo(str2);
					}

				});

			}
			workDataMap.put(CC_WORK_WRIB_SVC_LIST, wribSvcList);
			return wribSvcList.size();
		}
		return 0;
	}

	/**
	 * 件数判定処理
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param index 番号
	 * @param mnsCpFlg マンションキャンペーンフラグ
	 * @return boolean
	 * @throws RequestParameterException
	 */
	private boolean judListCnt(IRequestParameterReadWrite param, String fixedText, String index, String mnsCpFlg) throws RequestParameterException
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// No356 Otsuka 2013/02/23 start
		String totalSearchNumStr = "";

		if (JFUStrConst.CD00002_0.equals(mnsCpFlg))
		{
			HashMap<String, Object> eKK0851b010Map = (HashMap<String, Object>)inMap.get(getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK0851B001));
			totalSearchNumStr = (String)eKK0851b010Map.get(TOTAL_SEARCH_NUM);
		}
		// マンションキャンペーンの場合
		if (JFUStrConst.CD00002_1.equals(mnsCpFlg))
		{
			HashMap<String, Object> eEKK0841B509Map = (HashMap<String, Object>)inMap.get(TEMP_TEMPLATE_EKK0841B509 + index);
			if (eEKK0841B509Map != null)
			{
				HashMap<String, Object> eEKK0841B509CBSMsg1List[] =
						(HashMap<String, Object>[])eEKK0841B509Map.get(EKK0841B509CBSMsg.EKK0841B509CBSMSG1LIST);

				if (eEKK0841B509CBSMsg1List != null)
				{
					if (eEKK0841B509CBSMsg1List[0].size() > 0)
					{
						totalSearchNumStr = "1";
					}
				}
			}
		}
		// No356 Otsuka 2013/02/23 end

		int totalSearchNum = 0;

		if (null != totalSearchNumStr && !"".equals(totalSearchNumStr))
		{
			totalSearchNum = Integer.valueOf(totalSearchNumStr);
		}

		if (0 < totalSearchNum)
		{
			return true;
		}
		else
		{
			return false;
		}
	}

	/**
	 * チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> addWribSvcCdMap = (HashMap<String, Object>)param.getData(JFUADDWRIBSVCCCMAP);
		HashMap<String, Object> addWribSvcCdListMap = new HashMap();
		ArrayList addWribSvcCdList = (ArrayList)addWribSvcCdMap.get(ADDWRIBSVCLIST);
		addWribSvcCdListMap = (HashMap)addWribSvcCdList.get(0);
		setInMapEKK0851B001(param, JFUADDWRIBSVCCCMAP, (String)addWribSvcCdListMap.get(ADDWRIBSVCCD), (String)addWribSvcCdListMap.get(MAX_SEARCH_NUM));
		setFuncCode(param, JFUADDWRIBSVCCCMAP, "1");
		return getInvokeCBS(handle, param, JFUADDWRIBSVCCCMAP, SIF_EKK0851B001, EKK0851B001CBSMsg.EKK0851B001CBSMSG1LIST,
				IN_COLUMN_LIST_WRISVC_TG_SVC);
	}
	
	/**
	 * 適用期間チェック有無判定
	 * 
	 * <br>
	 * @param addWribSvcListMap 割引リストマップ
	 * @return true：適用期間チェックする false:適用期間チェックしない
	 */
	private boolean isCheckTerm(HashMap addWribSvcListMap)
	{
		if (!addWribSvcListMap.containsKey(CHK_TERM)
				|| (addWribSvcListMap.containsKey(CHK_TERM) && !JFUBPCommon.isNull(addWribSvcListMap.get(CHK_TERM)) 
						&& JFUStrConst.CD00002_1.equals((String)addWribSvcListMap.get(CHK_TERM))))
		{
			return true;
		}

		return false;
	}

	/**
	 * EKK0451B005_割引サービス契約一覧照会（SYSID）情報取得
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return 登録済の割引サービス契約
	 * @throws Exception
	 */
	private List<HashMap> getEKK0451B005(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String sysId) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		// EKK0451B005_割引サービス契約一覧照会（SYSID）

		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0451B005);
		// 上りマッピング
		setInMapEKK0451B005(param, fixedText, sysId);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		setFuncCode(param, fixedText, "1");
		executeSC(handle, param, fixedText, SIF_EKK0451B005, EKK0451B005CBSMsg.EKK0451B005CBSMSG1LIST, IN_COLUMN_LIST_EKK0451B005,
				EKK0451B005CBSMsg.KEY_SYSID_ERR);
		// データマップ
		List<HashMap> existsDchskmstList =
				getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK0451B005), EKK0451B005CBSMsg.EKK0451B005CBSMSG1LIST);

		if (existsDchskmstList == null)
		{
			return new ArrayList<HashMap>();
		}
		return existsDchskmstList;
	}

	/**
	 * 上りマッピング項目設定(EKK0451B005_割引サービス契約一覧照会（SYSID）)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysId SYSID
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0451B005(IRequestParameterReadWrite param, String fixedText, String sysId) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		// KEY_SYSID
		inMap.put(EKK0451B005CBSMsg.KEY_SYSID, sysId);
	}

	/**
	 * 割引サービス契約に既に登録されているかチェックする。
	 * 
	 * @param ekk1391b004List 登録済の割引サービス契約
	 * @param dtlMap 登録対象になっている割引サービスコード情報
	 * @return true：登録済、false：未登録
	 */
	private boolean existsKK_T_WRIB_SVC_KEI(List<HashMap> ekk1391b004List, HashMap<String, Object> dtlMap)
	{
		String checkMdlExecKind = (String)dtlMap.get(MDL_EXEC_KIND);
		String checkMskmDtlNo = (String)dtlMap.get(MSKM_DTL_NO);
		String checkWribSvcCd = (String)dtlMap.get(ADDWRIBSVCCD);

		// 自動登録キャンペーンでフラグ設定されている場合のみチェックを実施する。
		if (!MDL_EXEC_KIND_AUTO.equals(checkMdlExecKind))
		{
			// 判定外（未登録扱い）
			return false;
		}
		for (HashMap ekk1391b004Map : ekk1391b004List)
		{
			String mskm_dtl_no = (String)ekk1391b004Map.get(EKK0451B005CBSMsg1List.MSKM_DTL_NO);
			String wrib_svc_cd = (String)ekk1391b004Map.get(EKK0451B005CBSMsg1List.WRIB_SVC_CD);
			String wrib_svc_kei_stat = (String)ekk1391b004Map.get(EKK0451B005CBSMsg1List.WRIB_SVC_KEI_STAT);

			if (WRIB_SVC_KEI_MUKO.contains(wrib_svc_kei_stat))
			{
				// 取消済
				continue;
			}
			if (mskm_dtl_no.equals(checkMskmDtlNo) && wrib_svc_cd.equals(checkWribSvcCd))
			{
				// 既に登録済
				return true;
			}

		}
		// 未登録
		return false;
	}

	/**
	 * SYSIDを取得する。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception
	 */
	private String getSYSID(IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// ユーザデータ取得
		HashMap<String, Object> addWribSvcMap = (HashMap<String, Object>)param.getData(fixedText);
		ArrayList addWribSvcList = (ArrayList)addWribSvcMap.get(ADDWRIBSVCLIST);
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
		}
		// 契約者情報ワーク取得
		HashMap workKeishaServiceDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_KEISHA);
		String sysId = null;

		// SYSID
		if (addWribSvcList != null && addWribSvcList.size() > 0)
		{
			HashMap<String, Object> addWribSvcListMap = (HashMap)addWribSvcList.get(0);
			if (addWribSvcListMap != null)
			{
				sysId = (String)addWribSvcListMap.get(SYSID);
			}
		}
		if (JFUBPCommon.isNull(sysId) && (workKeishaServiceDataMap != null))
		{
			sysId = (String)workKeishaServiceDataMap.get(SYSID);
		}
		if (JFUBPCommon.isNull(sysId) && (addWribSvcMap != null))
		{
			sysId = (String)addWribSvcMap.get(SYSID);
		}
		return sysId;
	}
}
