/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUAddDchskmCdCC
*   ソースファイル名：JFUAddDchskmCdCC.java
*   作成者          ：富士通
*   日付            ：2012年02月18日
*＜機能概要＞
*   データ抽出項目コード登録部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2012/02/18   FJ）楠山    新規作成
*   v4.00.00    2012/11/02   FJ) 大塚    WEB割キャンペーン 削除機能追加
*   v4.01.00    2013/02/13   FJ) 齋藤   【新規-No.376】WEB割キャンペーン適用期間判定障害
*   v4.01       2013/02/22   FJ) 大塚    No356 マンション割引対応
*   v4.02       2013/03/21   FJ) 藤原    No465 WiMAX白ロム割引適用対応
*   v5.00       2013/07/04   FJ) 瀧澤   【ANK-1548-00-00】取扱コード入力時に呼び出すサービスIFを変更
*   v5.01       2013/07/24   FJ) 瀧澤   【IT1-2013-0001431】マンション割引の期間チェック対応
*   v5.02.00    2013/10/18   FJ) 谷本   【OM-2013-0003440】白ロム申込をデータ抽出項目設定からする対応
*   v8.00       2014/04/13   FJ）文元   【ANK-1997-00-00】【ＮＯ．１３８３】商品券CPの新設(カカクコム、関電CSフォーラム)対応
*   v10.00      2014/08/11   FJ）文元   【ANK-2223-00-00】スマリンタブレット無料キャンペーンのＷＥＢ画面への拡充
*   v39.0.0     2018/12/28   FJ) 大島    OM-2018-0001328
*   v60.00      2022/09/01   FJ) 西川   【ANK-4319-00-00】202210月CP対応
*   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.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 com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;

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.EKK1351A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1351A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1351B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1371B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1371B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1391B004CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1391B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1391C040CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1391D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1401D010CBSMsg;

/**
 * データ抽出項目コード登録コモンコンポーネント部品
 * <br>
 * @author 富士通
 */
public class JFUAddDchskmCdCC extends JFUBaseCC
{
	/** サービスインターフェースID */
	private static final String SIF_EKK1351A010 = "EKK1351A010";
	private static final String SIF_EKK1371B001 = "EKK1371B001";
	private static final String SIF_EKK1391D010 = "EKK1391D010";
	private static final String SIF_EKK1401D010 = "EKK1401D010";
	private static final String SIF_EKK1391C040 = "EKK1391C040";
	private static final String SIF_EKK1351B003 = "EKK1351B003";
	private static final String SIF_EKK1391B004 = "EKK1391B004";

	/** 作業マップ名 */
	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 = "JFUAddHanyoCdCCWork";
	private static final String CC_WORK_AREA_NAME_KEISHA = "JFUAddKeishaServiceCCWork";
	private static final String CC_WORK_AREA_NAME_MSKM = "JFUAddMskmSCWork";

	/** 使用マップ名 */
	private static final String MAP_ID_EKK0091D010 = "EKK0091D010";
	private static final String MAP_ID_EKK0341D010Net = "EKK0341D010Net";
	private static final String MAP_ID_EKK0361D010Net = "EKK0361D010Net";
	private static final String MAP_ID_EKK0361D010NetList = "EKK0361D010NetList";
	private static final String MAP_ID_EKK0171D010 = "EKK0171D010";
	private static final String MAP_ID_EKK0101D010 = "EKK0101D010";
	private static final String MAP_ID_EKK0341D010Tel = "EKK0341D010Tel";
	private static final String MAP_ID_EKK0341D010TelList = "EKK0341D010TelList";
	private static final String MAP_ID_EKK0191D010 = "EKK0191D010";
	private static final String MAP_ID_EKK0191D010List = "EKK0191D010List";
	private static final String MAP_ID_EKK0111D010 = "EKK0111D010";
	private static final String MAP_ID_EKK0341D010Tv = "EKK0341D010Tv";
	private static final String MAP_ID_EKK0341D010TvList = "EKK0341D010TvList";
	private static final String MAP_ID_EKK0181D010 = "EKK0181D010";
	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";
	private static final String MAP_ID_EKK0361D010Mob = "EKK0361D010Mob";
	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 JFUAddDchskmCdCCMap = "JFUAddDchskmCdCC";
	private static final String MAP_ID_EKK0341D010Onu = "EKK0341D010Onu";
	private static final String MAP_ID_EKK0341D010Vonu = "EKK0341D010Vonu";
	private static final String MAP_ID_EKK0341D010SML = "EKK0341D010Sml";
	
	/** データ抽出項目更新年月日時分秒 */
	private static final String DCHSKM_UPD_DTM = "dchskm_upd_dtm";

	/** 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 INTR_CD = "intr_cd";

	/** データ抽出項目設定登録契機コード */
	private static final String DCHSKMST_ADD_OPTY_CD = "dchskmst_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 DCHSKMST_NO = "dchskmst_no";

	/** データ抽出項目コード */
	private static final String ADDDCHSKMCD = "addDchskmCd";

	/** 対象契約識別コード */
	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 SEIOPSVC_KEI_NO = "seiopsvc_kei_no";

	/** サービスコード */
	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 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 AddDchskmCdList = "AddDchskmCdList";
	
	/** データ抽出項目コードリスト名 */
	private static final String TratCdList = "TratCdList";

	/** 最大検索件数 */
	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_EKK1371B001 = "TEMP_TEMPLATE_EKK1371B001_";

	private static final String TEMP_TEMPLATE_EKK1391D010 = "TEMP_TEMPLATE_EKK1391D010_";

	private static final String TEMP_TEMPLATE_EKK1351B003 = "TEMP_TEMPLATE_EKK1351B003_";

	/** EKK1391B004_データ抽出項目設定一覧照会（SYSID） */
	private static final String TEMP_TEMPLATE_EKK1391B004 = "TEMP_TEMPLATE_EKK1391B004_";

	/** 料金グループコード ｅｏ光ネットホームタイプ */
	private static final String PRC_GRP_CD_02 = "02";

	/** 料金グループコード ｅｏ光ネットホームタイプ */
	private static final String PRC_GRP_CD_03 = "03";

	/** 料金グループコード ｅｏ光ネットホームタイプ */
	private static final String PRC_GRP_CD_04 = "04";

	/** 料金グループコード ｅｏモバイル（Ｗｉ−Ｆｉ） */
	private static final String PRC_GRP_CD_07 = "07";

	/** 料金グループコード ｅｏモバイル（ＥＭ） */
	private static final String PRC_GRP_CD_08 = "08";

	/** 料金グループコード ｅｏモバイル（ＵＱ−ＷｉＭＡＸ） */
	private static final String PRC_GRP_CD_09 = "09";

	/** 料金グループコード ｅｏ光電話 */
	private static final String PRC_GRP_CD_10 = "10";

	/** 料金グループコード ｅｏ光テレビ（Ｋ−ＣＡＴ） */
	private static final String PRC_GRP_CD_11 = "11";

	/** 料金グループコード ｅｏ光テレビ（ＫＣＮ） */
	private static final String PRC_GRP_CD_12 = "12";

	/** 料金グループコード ｅｏ光テレビ（再送信） */
	private static final String PRC_GRP_CD_13 = "13";

	/** サービスコード 01 */
	private static final String SVC_CD_01 = "01";

	/** サービスコード 02 */
	private static final String SVC_CD_02 = "02";

	/** サービスコード 03 */
	private static final String SVC_CD_03 = "03";

	/** 適用終了年月日 */
	private static final String END_YMD = "20991231";

	// No356 2013/02/25 Otsuka start
	/** マンションキャンペーンコード */
	private static final String MNSCPCD = "mnsCpCd";

	/** 料金プランコード */
	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 SVC_KEI_NO_UNQ = "svc_kei_no_unq";
	
	/** データ抽出項目コードダミー値 */
	private static final String DTDMY0001 = "DTDMY0001";
	
	/** チェック用料金グループコード */
	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";

	// No356 2013/02/25 Otsuka end

	/* ■□ サービス契約一意照会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";

	/** IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_DCHSKM;
	private static final List<String> IN_COLUMN_LIST_DCHSKM_TG_SVC;
	private static final List<String> IN_COLUMN_LIST_DCHSKMST;
	private static final List<String> IN_COLUMN_LIST_DCHSKMST_TG_KEI;
	private static final List<String> IN_COLUMN_LIST_DCHSKMST_FIN;
	private static final List<String> IN_COLUMN_LIST_SVC_KEI;
	private static final List<String> IN_COLUMN_LIST_DCHSKMST_TERM;
	private static final List<String> IN_COLUMN_LIST_EKK1391B004;

	/** IN項目値 */
	static
	{
		IN_COLUMN_LIST_DCHSKM =
				Arrays.asList(EKK1351A010CBSMsg.KEY_DCHSKM_CD, EKK1351A010CBSMsg.KEY_GENE_ADD_DTM, EKK1351A010CBSMsg.KEY_RSV_APLY_YMD);
		IN_COLUMN_LIST_DCHSKM_TG_SVC =
				Arrays.asList(EKK1371B001CBSMsg.KEY_DCHSKM_CD, EKK1371B001CBSMsg.KEY_PRC_GRP_CD, EKK1371B001CBSMsg.KEY_PCRS_CD,
						EKK1371B001CBSMsg.KEY_PPLAN_CD, EKK1371B001CBSMsg.KEY_KJN_YMD, EKK1371B001CBSMsg.MAX_SEARCH_NUM);
		IN_COLUMN_LIST_DCHSKMST =
				Arrays.asList(EKK1391D010CBSMsg.SYSID, EKK1391D010CBSMsg.DCHSKM_CD, EKK1391D010CBSMsg.MSKM_DTL_NO, EKK1391D010CBSMsg.APLY_JUN,
						EKK1391D010CBSMsg.DCHSKMST_YMD, EKK1391D010CBSMsg.DCHSKMST_STA_YMD, EKK1391D010CBSMsg.DCHSKMST_END_YMD,
						EKK1391D010CBSMsg.IDO_DIV, EKK1391D010CBSMsg.GRP_CD, EKK1391D010CBSMsg.INTR_CD, EKK1391D010CBSMsg.MSKM_KISAN_YMD,
						EKK1391D010CBSMsg.DCHSKMST_ADD_OPTY_CD, EKK1391D010CBSMsg.UPD_DTM_BF);
		IN_COLUMN_LIST_DCHSKMST_TG_KEI =
				Arrays.asList(EKK1401D010CBSMsg.DCHSKMST_NO, EKK1401D010CBSMsg.TG_KEI_SKBT_CD, EKK1401D010CBSMsg.SVC_KEI_NO,
						EKK1401D010CBSMsg.SVC_KEI_UCWK_NO, EKK1401D010CBSMsg.OP_SVC_KEI_NO, EKK1401D010CBSMsg.SBOP_SVC_KEI_NO,
						EKK1401D010CBSMsg.KKTK_SVC_KEI_NO, EKK1401D010CBSMsg.SEIOPSVC_KEI_NO, EKK1401D010CBSMsg.SET_ADD_YMD,
						EKK1401D010CBSMsg.DCHSKMST_TG_KEI_TSTAYMD, EKK1401D010CBSMsg.DCHSKMST_TG_KEI_TENDYMD, EKK1401D010CBSMsg.UPD_DTM_BF,
						EKK1401D010CBSMsg.DCHSKM_CD);
		IN_COLUMN_LIST_DCHSKMST_FIN =
				Arrays.asList(EKK1391C040CBSMsg.DCHSKMST_NO, EKK1391C040CBSMsg.DCHSKMST_FIN_SBT_CD, EKK1391C040CBSMsg.DCHSKMST_END_YMD,
						EKK1391C040CBSMsg.IDO_DIV, EKK1391C040CBSMsg.DCHSKMST_FIN_OPTY_CD, EKK1391C040CBSMsg.UPD_DTM_BF,
						EKK1391C040CBSMsg.MSKM_DTL_NO);
		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_DCHSKMST_TERM =
				Arrays.asList(EKK1351B003CBSMsg.KEY_MSKM_SBT_CD, EKK1351B003CBSMsg.KEY_BASE_YMD, EKK1351B003CBSMsg.KEY_DCHS_APLY_OPTNTY_CD,
						EKK1351B003CBSMsg.KEY_DCHS_TYPE_CD, EKK1351B003CBSMsg.KEY_DSP_DCHSKM_CD, EKK1351B003CBSMsg.KEY_DSP_DCHSKM_CD,
						EKK1351B003CBSMsg.KEY_DCHSKM_CD, EKK1351B003CBSMsg.KEY_SET_PSB_STA_YMD_FROM, EKK1351B003CBSMsg.KEY_SET_PSB_STA_YMD_TO,
						EKK1351B003CBSMsg.KEY_SET_PSB_END_YMD_FROM, EKK1351B003CBSMsg.KEY_SET_PSB_END_YMD_TO,
						EKK1351B003CBSMsg.KEY_DCHSKM_TEKI_JYO_SBT_CD, EKK1351B003CBSMsg.KEY_DCHSKM_TEKI_VAL);
		IN_COLUMN_LIST_EKK1391B004 = Arrays.asList(EKK1391B004CBSMsg.KEY_SYSID);
	}
	
	// ■IN項目
	/** 取扱コード */
	private static final String IN_TRAT_CD = "trat_Cd";
	/** 料金グループコード */
	private static final String IN_PRC_GRP_CD = "prc_grp_cd";
	/** 料金コースコード */
	private static final String IN_PCRS_CD = "pcrs_cd";
	/** 料金プランコード */
	private static final String IN_PPLAN_CD = "pplan_cd";

	// ■OUT項目
	/** データ抽出項目コード */
	private static final String OUT_DCHSKM_CD = "dchskm_cd";

	/** データ抽出項目設定のステータスが有効なもの */
	private static final List<String> DCHSKM_KEI_YUKO = Arrays.asList(JFUStrConst.CD00808_010);

	/**
	 * データ抽出項目コード登録処理<br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception Exception
	 */
	public IRequestParameterReadWrite checkDchskmCd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> addDchskmCdMap = (HashMap<String, Object>)param.getData(JFUAddDchskmCdCCMap);
		HashMap<String, Object> addDchskmCdListMap = new HashMap();
		ArrayList addDchskmCdList = (ArrayList)addDchskmCdMap.get(AddDchskmCdList);
		boolean matchFlg = false;
		boolean judFlg = false;

		// 削除コードマップ
		HashMap<String, String> delCodeMap = new HashMap<String, String>();
		// 割引マップ
		HashMap<String, Object> wribMap = new HashMap<String, Object>();

		// 取得したデータ抽出項目コードリストの件数分処理をループさせる
		for (int i = 0; i < addDchskmCdList.size(); i++)
		{
			addDchskmCdListMap = (HashMap)addDchskmCdList.get(i);

			HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(JFUAddDchskmCdCCMap);
			// コード
			String dchskmCd = (String)addDchskmCdListMap.get(ADDDCHSKMCD);
			
			// データ抽出項目対象サービス一覧照会
			// 上りマッピング
			setInMapEKK1371B001(param, JFUAddDchskmCdCCMap, dchskmCd, (String)addDchskmCdListMap.get(MAX_SEARCH_NUM), addDchskmCdListMap);
			// 検索エラーなし設定
			ignoreSearchError(param, JFUAddDchskmCdCCMap);
			// サービスIF実行
			setFuncCode(param, JFUAddDchskmCdCCMap, "1");
			executeSC(handle, param, JFUAddDchskmCdCCMap, SIF_EKK1371B001, EKK1371B001CBSMsg.EKK1371B001CBSMSG1LIST, IN_COLUMN_LIST_DCHSKM_TG_SVC,
					ERR_COLUMN);

			// 件数判定処理
			judFlg = judListCnt(param, JFUAddDchskmCdCCMap, String.valueOf(i + 1));
			if (judFlg == false)
			{
				delCodeMap.put(dchskmCd, dchskmCd);
				continue;
			}

			// 対象判定処理
			matchFlg = judTarget(param, JFUAddDchskmCdCCMap, addDchskmCdListMap);
			if (matchFlg == false)
			{
				delCodeMap.put(dchskmCd, dchskmCd);
				continue;
			}

			// データ抽出項目一覧照会（申込種別コード）設定可能開始年月日時分〜設定可能終了年月日時分
			// データ領域クリア
			initData(param, JFUAddDchskmCdCCMap, IN_COLUMN_LIST_DCHSKMST_TERM);
			// 上りマッピング
			setInMapEKK1351B003(param, JFUAddDchskmCdCCMap, dchskmCd, (String)addDchskmCdListMap.get(MAX_SEARCH_NUM), addDchskmCdListMap);
			// 検索エラーなし設定
			ignoreSearchError(param, JFUAddDchskmCdCCMap);
			// サービスIF実行
			setFuncCode(param, JFUAddDchskmCdCCMap, "1");
			executeSC(handle, param, JFUAddDchskmCdCCMap, SIF_EKK1351B003, EKK1351B003CBSMsg.EKK1351B003CBSMSG1LIST, IN_COLUMN_LIST_DCHSKMST_TERM,
					ERR_COLUMN);

			if (!isExistsTemplateDetail(addDchskmCdMap, getMaxTempTempleteKey(addDchskmCdListMap, TEMP_TEMPLATE_EKK1351B003),
					EKK1351B003CBSMsg.EKK1351B003CBSMSG1LIST))
			{
				// データ抽出項目が、設定期間外なので、登録対象外
				delCodeMap.put(dchskmCd, dchskmCd);
				continue;
			}

			// データ抽出項目一意照会
			HashMap<String, Object> eKK1351A010Map = new HashMap<String, Object>();

			// 上りマッピング
			setInMapEKK1351A010(param, JFUAddDchskmCdCCMap, dchskmCd);
			// サービスIF実行
			setFuncCode(param, JFUAddDchskmCdCCMap, "2");
			executeSC(handle, param, JFUAddDchskmCdCCMap, SIF_EKK1351A010, EKK1351A010CBSMsg.EKK1351A010CBSMSG1LIST, IN_COLUMN_LIST_DCHSKM,
					ERR_COLUMN);
			// データマップ
			HashMap dataMap =
					getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, "TEMP_TEMPLATE_EKK1351A010_"), EKK1351A010CBSMsg.EKK1351A010CBSMSG1LIST, 0);

			eKK1351A010Map.put("dsp_dchskm_cd", dataMap.get("dsp_dchskm_cd"));
			eKK1351A010Map.put("dchskm_nm", dataMap.get("dchskm_nm"));
			eKK1351A010Map.put("set_psb_sta_ymdhm", dataMap.get("set_psb_sta_ymdhm"));
			eKK1351A010Map.put("set_psb_end_ymdhm", dataMap.get("set_psb_end_ymdhm"));

			// 割引情報を設定
			wribMap.put(dchskmCd, eKK1351A010Map);
		}
		
		// 対象外コードリストを返却
		param.setData("delDchskmCodeMap", delCodeMap);
		param.setData("infDchskmCodeMap", wribMap);
		
		return param;
	}
	
	/**
	 * データ抽出項目コード登録処理<br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite addDchskmCd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		HashMap<String, Object> addDchskmCdMap = (HashMap<String, Object>)param.getData(JFUAddDchskmCdCCMap);
		ArrayList addDchskmCdList = new ArrayList();
		HashMap<String, Object> addDchskmCdListMap = new HashMap();

		int getEKK1391D010Cnt = 1;
		boolean matchFlg = false;
		boolean judFlg = false;
		boolean tratCdSetAri = false;

		// 取扱コード取得
		String tratCd = JFUStrConst.EMPTY;
		if (addDchskmCdMap.containsKey(IN_TRAT_CD))
		{
			if (!JFUBPCommon.isNull(addDchskmCdMap.get(IN_TRAT_CD)))
			{
				tratCd = addDchskmCdMap.get(IN_TRAT_CD).toString();
			}
		}

		// サービス契約(ネット)情報取得
		HashMap<String, String> svcKeiNetMap = getSvcKeiNetInfo(param);
		
		// 取扱コードとサービス契約(ネット)情報の設定ありの場合
		if ((!JFUBPCommon.isNull(tratCd)) && (svcKeiNetMap != null && svcKeiNetMap.size() > 0))
		{
			HashMap<Object, Object> fixedTextMap = new HashMap<Object, Object>();
			
			// 取扱コードはFUSV0152上りマップで設定済み
			fixedTextMap.put(IN_TRAT_CD, tratCd);
			// 料金グループ
			fixedTextMap.put(IN_PRC_GRP_CD, svcKeiNetMap.get(PRC_GRP_CD));
			// 料金コース
			fixedTextMap.put(IN_PCRS_CD, svcKeiNetMap.get(PCRS_CD_O));
			// 料金プラン
			fixedTextMap.put(IN_PPLAN_CD, svcKeiNetMap.get(PPLAN_CD_O));
			
			param.setData(fixedText, fixedTextMap);
			
			// ■部品を使用してデータ抽出項目コードを取得（JFUGetDchskmUtil.getDchskmByTratCd：代理店用）
			JFUBPCommon.getDchskmByTratCd(handle, param, fixedText);
			
			HashMap wkMap = (HashMap)param.getData(fixedText);
			
			// データ抽出項目コードが取得できている場合
			if (wkMap.containsKey(OUT_DCHSKM_CD))
			{
				// 値取得
				String dchskmCd = JFUStrConst.EMPTY;
				if (!JFUBPCommon.isNull(wkMap.get(OUT_DCHSKM_CD)))
				{
					dchskmCd = wkMap.get(OUT_DCHSKM_CD).toString();
				}
				
				// 値が存在する場合
				if (!JFUBPCommon.isNull(dchskmCd))
				{
					// @CCのOUTパラメータ設定
					// 部品内で、fixedTextのマップに、データ抽出項目コード、データ抽出項目名
					// 受付開始年月日時分、受付終了年月日時分、表示用データ抽出項目コード
					// を設定している
					
					// AtratCdListから必要項目取得し、データ抽出項目登録用のリストを作成
					// ※取扱コード設定ある場合、tratCdListは必ず1件ある
					ArrayList tratCdList = (ArrayList)addDchskmCdMap.get(TratCdList);
					HashMap tratCdMap = (HashMap)tratCdList.get(0);

					HashMap<String, Object> hanyoMap = new HashMap<String, Object>();

					// ※FUSV0152の上りマップで行なっているのと同様の設定を行なう
					// データ抽出項目コード
					hanyoMap.put(ADDDCHSKMCD, dchskmCd);

					// 即時適用フラグ 適用する
					hanyoMap.put(APLY_JUN, tratCdMap.get(APLY_JUN));

					// SYSID
					hanyoMap.put(SYSID, tratCdMap.get(SYSID));

					// 異動区分
					hanyoMap.put(IDO_DIV, tratCdMap.get(IDO_DIV));

					// 検索最大件数
					hanyoMap.put(MAX_SEARCH_NUM, tratCdMap.get(MAX_SEARCH_NUM));

					// データ抽出項目設定登録契機コード
					hanyoMap.put(DCHSKMST_ADD_OPTY_CD, tratCdMap.get(DCHSKMST_ADD_OPTY_CD));

					// FUSV0152の上りマップから渡されたAddDchskmCdListの内容を採用
					if (addDchskmCdMap.containsKey(AddDchskmCdList))
					{
						addDchskmCdList = (ArrayList)addDchskmCdMap.get(AddDchskmCdList);
					}
					addDchskmCdList.add(hanyoMap);
					addDchskmCdMap.put(AddDchskmCdList, addDchskmCdList);
					
					tratCdSetAri = true;
				}
			}
		}
		
		// 取扱コード設定なしの場合
		if (!tratCdSetAri)
		{
			// FUSV0152の上りマップから渡されたAddDchskmCdListの内容を採用
			if (addDchskmCdMap.containsKey(AddDchskmCdList))
			{
				addDchskmCdList = (ArrayList)addDchskmCdMap.get(AddDchskmCdList);
			}
			
		}

		String sysId = getSYSID(param, JFUAddDchskmCdCCMap);
		// 既に登録している「割引サービス契約」の情報を取得する。
		List<HashMap> ekk1391b004List = new ArrayList<HashMap>();
		if (!JFUBPCommon.isNull(sysId))
		{
			ekk1391b004List = getEKK1391B004(handle, param, JFUAddDchskmCdCCMap, sysId);
		}

		// ■取得したデータ抽出項目コードリストの件数分処理をループさせる
		for (int i = 0; i < addDchskmCdList.size(); i++)
		{
			addDchskmCdListMap = (HashMap)addDchskmCdList.get(i);

			// データ抽出項目対象サービス一覧照会
			// 上りマッピング
			setInMapEKK1371B001(param, JFUAddDchskmCdCCMap, (String)addDchskmCdListMap.get(ADDDCHSKMCD), 
					(String)addDchskmCdListMap.get(MAX_SEARCH_NUM), addDchskmCdListMap);
			// 検索エラーなし設定
			ignoreSearchError(param, JFUAddDchskmCdCCMap);
			// サービスIF実行
			setFuncCode(param, JFUAddDchskmCdCCMap, "1");
			executeSC(handle, param, JFUAddDchskmCdCCMap, SIF_EKK1371B001, EKK1371B001CBSMsg.EKK1371B001CBSMSG1LIST, IN_COLUMN_LIST_DCHSKM_TG_SVC,
					ERR_COLUMN);
// OM-2018-0001328 ADD START
			// eo光TVの最新更新日時を取得する。
			// eoTVサービス契約番号
			HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(JFUAddDchskmCdCCMap);
			if (addDchskmCdListMap.containsKey(SVC_KEI_NO) && !JFUBPCommon.isNull(addDchskmCdListMap.get(SVC_KEI_NO)))
			{
				String cmpSvcKeiNo = (String)addDchskmCdListMap.get(SVC_KEI_NO);

				// ●サービス契約一意照会
				// 上りマッピング
				setInMapSvcKeiUniqueSearch(param, JFUAddDchskmCdCCMap, cmpSvcKeiNo);
				// サービスIF実行
				executeSC(handle, param, JFUAddDchskmCdCCMap, 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サービス契約の更新年月日を退避
				addDchskmCdListMap.put("TvLastUpdDtm", updDtmSvcKei);
			}
// OM-2018-0001328 ADD END
			// 件数判定処理
			judFlg = judListCnt(param, JFUAddDchskmCdCCMap, String.valueOf(i + 1));
			if (judFlg == false)
			{
				continue;
			}

			// 対象判定処理
			matchFlg = judTarget(param, JFUAddDchskmCdCCMap, addDchskmCdListMap);
			if (matchFlg == false)
			{
				continue;
			}

			// データ抽出項目一覧照会（申込種別コード）設定可能開始年月日時分〜設定可能終了年月日時分
			// データ領域クリア
			initData(param, JFUAddDchskmCdCCMap, IN_COLUMN_LIST_DCHSKMST_TERM);
			// 上りマッピング
			setInMapEKK1351B003(param, JFUAddDchskmCdCCMap, (String)addDchskmCdListMap.get(ADDDCHSKMCD), 
					(String)addDchskmCdListMap.get(MAX_SEARCH_NUM), addDchskmCdListMap);
			// 検索エラーなし設定
			ignoreSearchError(param, JFUAddDchskmCdCCMap);
			// サービスIF実行
			setFuncCode(param, JFUAddDchskmCdCCMap, "1");
			executeSC(handle, param, JFUAddDchskmCdCCMap, SIF_EKK1351B003, EKK1351B003CBSMsg.EKK1351B003CBSMSG1LIST, IN_COLUMN_LIST_DCHSKMST_TERM,
					ERR_COLUMN);

			if (!isExistsTemplateDetail(addDchskmCdMap, getMaxTempTempleteKey(addDchskmCdListMap, TEMP_TEMPLATE_EKK1351B003),
					EKK1351B003CBSMsg.EKK1351B003CBSMSG1LIST))
			{
				// データ抽出項目が、設定期間外なので、登録対象外
				continue;
			}

			if (existsKK_T_DCHSKMST(ekk1391b004List, addDchskmCdListMap))
			{
				// データ抽出項目設定に既に登録されているため、スキップ
				continue;
			}

			// データ抽出項目一意照会
			// 上りマッピング
			setInMapEKK1351A010(param, JFUAddDchskmCdCCMap, (String)addDchskmCdListMap.get(ADDDCHSKMCD));
			// サービスIF実行
			setFuncCode(param, JFUAddDchskmCdCCMap, "2");
			executeSC(handle, param, JFUAddDchskmCdCCMap, SIF_EKK1351A010, EKK1351A010CBSMsg.EKK1351A010CBSMSG1LIST, IN_COLUMN_LIST_DCHSKM,
					ERR_COLUMN);

			// 下りマッピング
			setOutMapEKK1351A010(param, JFUAddDchskmCdCCMap);
			
			// データ抽出項目設定登録
			// 上りマッピング
			setInMapEKK1391D010(param, JFUAddDchskmCdCCMap, (String)addDchskmCdListMap.get(ADDDCHSKMCD), i, null);
			// サービスIF実行
			setFuncCode(param, JFUAddDchskmCdCCMap, "1");
			executeSC(handle, param, JFUAddDchskmCdCCMap, SIF_EKK1391D010, "", IN_COLUMN_LIST_DCHSKMST, "");

			// 下りマッピング
			setOutMapEKK1391D010(param, JFUAddDchskmCdCCMap, String.valueOf(getEKK1391D010Cnt));

			// データ抽出項目設定対象サービス登録
			// 上りマッピング
			setInMapEKK1401D010(param, JFUAddDchskmCdCCMap, (String)addDchskmCdListMap.get(ADDDCHSKMCD));
			// サービスIF実行
			setFuncCode(param, JFUAddDchskmCdCCMap, "1");
			executeSC(handle, param, JFUAddDchskmCdCCMap, SIF_EKK1401D010, "", IN_COLUMN_LIST_DCHSKMST_TG_KEI, "");
			getEKK1391D010Cnt += 1;
		}
		return param;
	}

	/**
	 * データ抽出項目コード削除処理
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite delDchskmCd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		setSCInputCommonData(param, new HashMap<String, Object>());
		HashMap<String, Object> inMap = new HashMap<String, Object>();

		inMap = (HashMap<String, Object>)param.getData(SIF_EKK1391C040);

		if ((inMap == null) || (inMap.isEmpty()))
		{
			// 代理店一意照会マップが存在しない場合は、処理しない
			return param;
		}

		// ●サービス契約一意照会
		// 上りマッピング
		setInMapSvcKeiUniqueSearch(param, SIF_EKK1391C040, (String)inMap.get(SVC_KEI_NO_UNQ));
		// サービスIF実行
		executeSC(handle, param, SIF_EKK1391C040, 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);

		// データ抽出項目設定登録
		// 上りマッピング
		setInMapEKK1391C040(param, SIF_EKK1391C040, inMap, updDtmSvcKei);

		executeSC(handle, param, SIF_EKK1391C040, SIF_EKK1391C040, BLANK, IN_COLUMN_LIST_DCHSKMST_FIN, BLANK);

		return param;
	}

	/**
	 * SCインプット共通データ設定処理
	 * <br>
	 * @param param
	 * @param paramMap
	 * @return
	 */
	private HashMap<String, Object> setSCInputCommonData(IRequestParameterReadWrite param, HashMap<String, Object> paramMap)
			throws RequestParameterException
	{
		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		return paramMap;
	}

	/**
	 * 上りマッピング項目設定(データ抽出項目対象サービス一覧照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 * @throws ParseException 
	 */
	private void setInMapEKK1371B001(IRequestParameterReadWrite param, String fixedText, String dchskmCd, String max_search_num,
			HashMap addDchskmCdListMap)
			throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ＫＥＹ＿データ抽出項目コード
		inMap.put(EKK1371B001CBSMsg.KEY_DCHSKM_CD, dchskmCd);
		// ＫＥＹ＿料金グループコード
		inMap.put(EKK1371B001CBSMsg.KEY_PRC_GRP_CD, null);
		// ＫＥＹ＿料金コースコード
		inMap.put(EKK1371B001CBSMsg.KEY_PCRS_CD, null);
		// ＫＥＹ＿料金プランコード
		inMap.put(EKK1371B001CBSMsg.KEY_PPLAN_CD, null);
		/* 2013/02/13 WEB割キャンペーン適用期間判定障害 Y.Saitou MOD */
		// 適用期間チェックする場合
		if (isCheckTerm(addDchskmCdListMap))
		{
			// ＫＥＹ＿基準年月日
			inMap.put(EKK1371B001CBSMsg.KEY_KJN_YMD, JCCBPCommon.getOpeDate(null));
		}
		// 最大検索件数
		inMap.put(EKK1371B001CBSMsg.MAX_SEARCH_NUM, max_search_num);

	}

	/**
	 * 上りマッピング項目設定(データ抽出項目対象サービス一覧照会)割引サービスコード以外設定有り用
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dchskmCd
	 * @param max_search_num
	 * @param prcGrpCd
	 * @param pcrsCd
	 * @param pplanCd
	 * @throws RequestParameterException
	 * @throws ParseException 
	 */
	@SuppressWarnings({ "unchecked", "unused" })
	private void setInMapEKK1371B001OtherSet(IRequestParameterReadWrite param, String fixedText, String dchskmCd, String max_search_num,
			String prcGrpCd, String pcrsCd, String pplanCd) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ＫＥＹ＿データ抽出項目コード
		inMap.put(EKK1371B001CBSMsg.KEY_DCHSKM_CD, dchskmCd);
		// ＫＥＹ＿料金グループコード
		inMap.put(EKK1371B001CBSMsg.KEY_PRC_GRP_CD, prcGrpCd);
		// ＫＥＹ＿料金コースコード
		inMap.put(EKK1371B001CBSMsg.KEY_PCRS_CD, pcrsCd);
		// ＫＥＹ＿料金プランコード
		inMap.put(EKK1371B001CBSMsg.KEY_PPLAN_CD, pplanCd);
		// ＫＥＹ＿基準年月日
		inMap.put(EKK1371B001CBSMsg.KEY_KJN_YMD, JCCBPCommon.getOpeDate(null));
		// 最大検索件数
		inMap.put(EKK1371B001CBSMsg.MAX_SEARCH_NUM, max_search_num);

	}
	
	/**
	 * データ抽出項目一覧照会（申込種別コード）
	 * 
	 * <br>
	 * @param param
	 * @param fixedText
	 * @param dchskmCd
	 * @param max_search_num
	 * @param addDchskmCdListMap
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setInMapEKK1351B003(IRequestParameterReadWrite param, String fixedText, String dchskmCd, String max_search_num,
			HashMap addDchskmCdListMap)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 運用日付
		String opeDate = JCCBPCommon.getOpeDate(null);

		// ＫＥＹ＿データ抽出項目コード
		inMap.put(EKK1371B001CBSMsg.KEY_DCHSKM_CD, dchskmCd);
		
		// 適用期間チェックを行う場合
		if (isCheckTerm(addDchskmCdListMap))
		{
			// ＫＥＹ＿設定可能開始年月日(至)
			inMap.put(EKK1351B003CBSMsg.KEY_SET_PSB_STA_YMD_TO, opeDate);
			// ＫＥＹ＿設定可能終了年月日(自)
			inMap.put(EKK1351B003CBSMsg.KEY_SET_PSB_END_YMD_FROM, opeDate);
		}
		
		// 最大検索件数
		inMap.put(EKK1371B001CBSMsg.MAX_SEARCH_NUM, max_search_num);
	}

	/**
	 * 上りマッピング項目設定(データ抽出項目一意照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dchskmCd
	 * @throws RequestParameterException
	 * @throws ParseException 
	 */
	private void setInMapEKK1351A010(IRequestParameterReadWrite param, String fixedText, String dchskmCd) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ＫＥＹ＿データ抽出項目コード
		inMap.put(EKK1351A010CBSMsg.KEY_DCHSKM_CD, dchskmCd);

		// ＫＥＹ＿世代登録年月日時分秒
		inMap.put(EKK1351A010CBSMsg.KEY_GENE_ADD_DTM, null);

		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK1351A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
	}

	/**
	 * 下りマッピング項目設定(データ抽出項目一意照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 * @throws ParseException 
	 */
	private void setOutMapEKK1351A010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		HashMap<String, Object> inMapDtl = new HashMap();
		ArrayList inMapList = new ArrayList();
		inMapList = (ArrayList)inMap.get(EKK1351A010CBSMsg.EKK1351A010CBSMSG1LIST);
		inMapDtl = (HashMap<String, Object>)inMapList.get(0);

		// 作業領域の取得
		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);
		}

		// 更新年月日時分秒
		workDataMap.put(DCHSKM_UPD_DTM, inMapDtl.get(EKK1351A010CBSMsg1List.UPD_DTM));
		
	}

	/**
	 * 上りマッピング項目設定(データ抽出項目設定登録)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 * @throws ParseException 
	 */
	private void setInMapEKK1391D010(IRequestParameterReadWrite param, String fixedText, String dchskmCd, int index, String updDtm) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		HashMap<String, Object> inMapDtl = new HashMap<String, Object>();
		ArrayList inMapList = new ArrayList();
		HashMap<String, Object> addDchskmCdListMap = new HashMap();
		ArrayList addDchskmCdList = (ArrayList)inMap.get(AddDchskmCdList);
		addDchskmCdListMap = (HashMap)addDchskmCdList.get(index);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		// データ抽出項目登録ワーク取得
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_NAME);

		// 契約者情報ワーク取得
		HashMap workKeishaServiceDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_KEISHA);

		// SYSID
		// WEB層からのマッピングから取得できる場合（追加申込）
		if (addDchskmCdListMap.get(SYSID) == null || "".equals(addDchskmCdListMap.get(SYSID)))
		{

			inMap.put(EKK1391D010CBSMsg.SYSID, workKeishaServiceDataMap.get(SYSID));
		}
		else
		{
			inMap.put(EKK1391D010CBSMsg.SYSID, addDchskmCdListMap.get(SYSID));
		}

		// データ抽出項目コード
		inMap.put(EKK1391D010CBSMsg.DCHSKM_CD, dchskmCd);

		// 申込明細番号
		inMap.put(EKK1391D010CBSMsg.MSKM_DTL_NO, workDataMap.get(MSKM_DTL_NO));

		// 即時適用フラグ
		inMap.put(EKK1391D010CBSMsg.APLY_JUN, (String)addDchskmCdListMap.get(APLY_JUN));

		// データ抽出項目設定年月日
		inMap.put(EKK1391D010CBSMsg.DCHSKMST_YMD, JCCBPCommon.getOpeDate(null));

		// データ抽出項目設定開始年月日
		inMap.put(EKK1391D010CBSMsg.DCHSKMST_STA_YMD, JCCBPCommon.getOpeDate(null));
		
		// データ抽出項目設定終了年月日
		inMap.put(EKK1391D010CBSMsg.DCHSKMST_END_YMD, JFUStrConst.DEFAULT_YYYYMMDD);

		// 異動区分
		inMap.put(EKK1391D010CBSMsg.IDO_DIV, (String)addDchskmCdListMap.get(IDO_DIV));

		// 紹介コード
		inMap.put(EKK1391D010CBSMsg.INTR_CD, null);

		// 申込起算年月日
		inMap.put(EKK1391D010CBSMsg.MSKM_KISAN_YMD, JCCBPCommon.getOpeDate(null));

		// データ抽出項目設定登録契機コード
		inMap.put(EKK1391D010CBSMsg.DCHSKMST_ADD_OPTY_CD, (String)addDchskmCdListMap.get(DCHSKMST_ADD_OPTY_CD));

		// 更新年月日時分秒(更新前)
		if (!JFUBPCommon.isNull(updDtm))
		{
			inMap.put(EKK1391D010CBSMsg.UPD_DTM_BF, updDtm);
		}
		else
		{
			inMap.put(EKK1391D010CBSMsg.UPD_DTM_BF, workDataMap.get(DCHSKM_UPD_DTM));
		}
	}

	/**
	 * 下りマッピング項目設定(データ抽出項目設定登録)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 * @throws ParseException 
	 */
	private void setOutMapEKK1391D010(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(EKK1391D010CBSMsg.DCHSKMST_NO, inMap.get(EKK1391D010CBSMsg.DCHSKMST_NO));

		// 更新年月日時分秒
		inMap.put(EKK1391D010CBSMsg.UPD_DTM, inMap.get(EKK1391D010CBSMsg.UPD_DTM));
	}

	/**
	 * 下りマッピング項目設定(データ抽出項目一意照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 * @throws ParseException 
	 */
	private void setOutMapEKK1391D010(IRequestParameterReadWrite param, String fixedText, String index) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		HashMap<String, Object> eKK1391D010Map = (HashMap<String, Object>)inMap.get(TEMP_TEMPLATE_EKK1391D010 + index);

		// 作業領域の取得
		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);
		}

		// データ抽出項目設定番号
		inMap.put(EKK1391D010CBSMsg.DCHSKMST_NO, inMap.get(EKK1391D010CBSMsg.DCHSKMST_NO));
		workDataMap.put(DCHSKMST_NO, eKK1391D010Map.get(EKK1391D010CBSMsg.DCHSKMST_NO));
		// 更新年月日時分秒
		inMap.put(EKK1391D010CBSMsg.UPD_DTM, inMap.get(EKK1391D010CBSMsg.UPD_DTM));
		workDataMap.put(UPD_DTM, eKK1391D010Map.get(EKK1391D010CBSMsg.UPD_DTM));
	}

	/**
	 * 上りマッピング項目設定(データ抽出項目設定契約対象登録)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 * @throws ParseException 
	 */
	private void setInMapEKK1401D010(IRequestParameterReadWrite param, String fixedText, String dchskmCd) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		HashMap<String, Object> inMapDtl = new HashMap();

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		// データ抽出項目登録ワーク取得
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_NAME);

		// データ抽出項目設定番号
		inMap.put(EKK1401D010CBSMsg.DCHSKMST_NO, workDataMap.get(DCHSKMST_NO));

		// 対象契約識別コード
		inMap.put(EKK1401D010CBSMsg.TG_KEI_SKBT_CD, workDataMap.get(TG_KEI_SKBT_CD));

		// サービス契約番号
		if (workDataMap == null || workDataMap.get(SVC_KEI_NO) == null || "".equals(workDataMap.get(SVC_KEI_NO)))
		{
			inMap.put(EKK1401D010CBSMsg.SVC_KEI_NO, null);
		}
		else
		{
			inMap.put(EKK1401D010CBSMsg.SVC_KEI_NO, workDataMap.get(SVC_KEI_NO));
		}

		// サービス契約内訳番号
		if (workDataMap == null || workDataMap.get(SVC_KEI_UCWK_NO) == null || "".equals(workDataMap.get(SVC_KEI_UCWK_NO)))
		{
			inMap.put(EKK1401D010CBSMsg.SVC_KEI_UCWK_NO, null);
		}
		else
		{
			inMap.put(EKK1401D010CBSMsg.SVC_KEI_UCWK_NO, workDataMap.get(SVC_KEI_UCWK_NO));
		}

		// オプションサービス契約番号
		if (workDataMap == null || workDataMap.get(OP_SVC_KEI_NO) == null || "".equals(workDataMap.get(OP_SVC_KEI_NO)))
		{
			inMap.put(EKK1401D010CBSMsg.OP_SVC_KEI_NO, null);
		}
		else
		{
			inMap.put(EKK1401D010CBSMsg.OP_SVC_KEI_NO, workDataMap.get(OP_SVC_KEI_NO));
		}

		// サブオプションサービス契約番号
		if (workDataMap == null || workDataMap.get(SBOP_SVC_KEI_NO) == null || "".equals(workDataMap.get(SBOP_SVC_KEI_NO)))
		{
			inMap.put(EKK1401D010CBSMsg.SBOP_SVC_KEI_NO, null);
		}
		else
		{
			inMap.put(EKK1401D010CBSMsg.SBOP_SVC_KEI_NO, workDataMap.get(SBOP_SVC_KEI_NO));
		}

		// 機器提供サービス契約番号
		if (workDataMap == null || workDataMap.get(KKTK_SVC_KEI_NO) == null || "".equals(workDataMap.get(KKTK_SVC_KEI_NO)))
		{
			inMap.put(EKK1401D010CBSMsg.KKTK_SVC_KEI_NO, null);
		}
		else
		{
			inMap.put(EKK1401D010CBSMsg.KKTK_SVC_KEI_NO, workDataMap.get(KKTK_SVC_KEI_NO));
		}

		// 請求オプションサービス契約番号
		if (workDataMap == null || workDataMap.get(SEIOPSVC_KEI_NO) == null || "".equals(workDataMap.get(SEIOPSVC_KEI_NO)))
		{
			inMap.put(EKK1401D010CBSMsg.SEIOPSVC_KEI_NO, null);
		}
		else
		{
			inMap.put(EKK1401D010CBSMsg.SEIOPSVC_KEI_NO, workDataMap.get(SEIOPSVC_KEI_NO));
		}

		// 設定登録年月日
		inMap.put(EKK1401D010CBSMsg.SET_ADD_YMD, JCCBPCommon.getOpeDate(null));

		// データ抽出項目設定対象契約適用開始年月日
		inMap.put(EKK1401D010CBSMsg.DCHSKMST_TG_KEI_TSTAYMD, JCCBPCommon.getOpeDate(null));

		// データ抽出項目設定対象契約適用終了年月日
		inMap.put(EKK1401D010CBSMsg.DCHSKMST_TG_KEI_TENDYMD, END_YMD);

		// 更新年月日時分秒(更新前)
		inMap.put(EKK1401D010CBSMsg.UPD_DTM_BF, workDataMap.get(UPD_DTM));

		// データ抽出項目コード
		inMap.put(EKK1401D010CBSMsg.DCHSKM_CD, dchskmCd);
	}

	/**
	 * 上りマッピング項目設定(データ抽出項目設定論理削除)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param updDtmSvcKei サービス契約の最終更新年月日
	 * @throws RequestParameterException
	 * @throws ParseException 
	 */
	@SuppressWarnings("unchecked")
	private void setInMapEKK1391C040(IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> ccMap, String updDtmSvcKei)
			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(EKK1391C040CBSMsg.DCHSKMST_NO, ccMap.get(EKK1391C040CBSMsg.DCHSKMST_NO));

		// データ抽出項目設定完了種別コード
		inMap.put(EKK1391C040CBSMsg.DCHSKMST_FIN_SBT_CD, ccMap.get(EKK1391C040CBSMsg.DCHSKMST_FIN_SBT_CD));

		// データ抽出項目設定終了年月日
		inMap.put(EKK1391C040CBSMsg.DCHSKMST_END_YMD, JCCBPCommon.getOpeDate(null));

		// 異動区分
		inMap.put(EKK1391C040CBSMsg.IDO_DIV, ccMap.get(EKK1391C040CBSMsg.IDO_DIV));

		// データ抽出項目設定完了契機コード
		inMap.put(EKK1391C040CBSMsg.DCHSKMST_FIN_OPTY_CD, ccMap.get(EKK1391C040CBSMsg.DCHSKMST_FIN_OPTY_CD));

		// 更新年月日時分秒(更新前)
		inMap.put(EKK1391C040CBSMsg.UPD_DTM_BF, updDtmSvcKei);
	}

	/**
	 * 対象判定処理
	 * <br>
	 * @param param
	 * @return
	 * @throws Exception 
	 */
	private boolean judTarget(IRequestParameterReadWrite param, String fixedText, HashMap addDchskmCdListMap) throws Exception
	{
		// ユーザデータ取得
		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>();
		ArrayList inMapList = new ArrayList();
		inMapList = (ArrayList)inMap.get(EKK1371B001CBSMsg.EKK1371B001CBSMSG1LIST);
		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 workKeishaServiceDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_KEISHA);
		if (workKeishaServiceDataMap == null)
		{
			workKeishaServiceDataMap = new HashMap();
		}
		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 (addDchskmCdListMap.containsKey(CHK_PRC_GRP_CD) && !JFUBPCommon.isNull(addDchskmCdListMap.get(CHK_PRC_GRP_CD)))
		{
			chkPrcGrpCd = (String)addDchskmCdListMap.get(CHK_PRC_GRP_CD);
		}
		// チェック用料金コースコード取得
		String chkPcrsCd = JFUStrConst.EMPTY;
		if (addDchskmCdListMap.containsKey(CHK_PCRS_CD) && !JFUBPCommon.isNull(addDchskmCdListMap.get(CHK_PCRS_CD)))
		{
			chkPcrsCd = (String)addDchskmCdListMap.get(CHK_PCRS_CD);
		}
		// チェック用料金プランコード取得
		String chkPplanCd = JFUStrConst.EMPTY;
		if (addDchskmCdListMap.containsKey(CHK_PPLAN_CD) && !JFUBPCommon.isNull(addDchskmCdListMap.get(CHK_PPLAN_CD)))
		{
			chkPplanCd = (String)addDchskmCdListMap.get(CHK_PPLAN_CD);
		}
		
		// データ抽出項目対象サービス一覧照会で取得したデータの件数分ループさせる。
		for (int i = 0; i < inMapList.size(); i++)
		{
			inMapDtl = (HashMap<String, Object>)inMapList.get(i);
			String svcCd = "";
			String prcGrpCd = "";
			String kktkSvcCd = "";
			String opSvcCd = "";
			String sbOpSvcCd = "";
			String seiOpSvcCd = "";
			String prcsCd = "";

			// No356 2013/02/25 Otsuka start
			String pPlanCd = "";
			// No356 2013/02/25 Otsuka end

			if (null != (String)inMapDtl.get(EKK1371B001CBSMsg1List.SVC_CD))
			{
				svcCd = (String)inMapDtl.get(EKK1371B001CBSMsg1List.SVC_CD);
			}
			if (null != (String)inMapDtl.get(EKK1371B001CBSMsg1List.PRC_GRP_CD))
			{
				prcGrpCd = (String)inMapDtl.get(EKK1371B001CBSMsg1List.PRC_GRP_CD);
			}
			if (null != (String)inMapDtl.get(EKK1371B001CBSMsg1List.KKTK_SVC_CD))
			{
				kktkSvcCd = (String)inMapDtl.get(EKK1371B001CBSMsg1List.KKTK_SVC_CD);
			}
			if (null != (String)inMapDtl.get(EKK1371B001CBSMsg1List.OP_SVC_CD))
			{
				opSvcCd = (String)inMapDtl.get(EKK1371B001CBSMsg1List.OP_SVC_CD);
			}
			if (null != (String)inMapDtl.get(EKK1371B001CBSMsg1List.SBOP_SVC_CD))
			{
				sbOpSvcCd = (String)inMapDtl.get(EKK1371B001CBSMsg1List.SBOP_SVC_CD);
			}
			if (null != (String)inMapDtl.get(EKK1371B001CBSMsg1List.SEIOPSVC_CD))
			{
				seiOpSvcCd = (String)inMapDtl.get(EKK1371B001CBSMsg1List.SEIOPSVC_CD);
			}
			if (null != (String)inMapDtl.get(EKK1371B001CBSMsg1List.PCRS_CD))
			{
				prcsCd = (String)inMapDtl.get(EKK1371B001CBSMsg1List.PCRS_CD);
			}
			// No356 2013/02/25 Otsuka start
			if (null != (String)inMapDtl.get(EKK1371B001CBSMsg1List.PPLAN_CD))
			{
				// 料金プランコード
				pPlanCd = (String)inMapDtl.get(EKK1371B001CBSMsg1List.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 ((SVC_CD_01.equals(svcCd) && ("".equals(prcGrpCd) || prcGrpCd == null))
						|| (SVC_CD_01.equals(svcCd)
								&& (PRC_GRP_CD_02.equals(prcGrpCd) || PRC_GRP_CD_03.equals(prcGrpCd) || PRC_GRP_CD_04.equals(prcGrpCd))
								&& 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)
					{
						workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_01); // No356 2013/02/25 Otsuka
						workDataMap.put(SVC_KEI_NO, workSvcKeiNetDataMap.get(SVC_KEI_NO));
						workDataMap.put(KKTK_SVC_KEI_NO, null);
						workDataMap.put(OP_SVC_KEI_NO, null);
						workDataMap.put(SVC_KEI_UCWK_NO, null);
						workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_NET));
						workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
						return true;
					}
					// 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);
			}
				
			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 (addDchskmCdListMap.containsKey(SVC_KEI_NO) && !JFUBPCommon.isNull(addDchskmCdListMap.get(SVC_KEI_NO)))
			{
				cmpSvcKeiNo = (String)addDchskmCdListMap.get(SVC_KEI_NO);
			}
			// eoTVサービス申込明細番号
			if (addDchskmCdListMap.containsKey(MSKM_DTL_NO) && !JFUBPCommon.isNull(addDchskmCdListMap.get(MSKM_DTL_NO)))
			{
				cmpSvcMskmDtlNo = (String)addDchskmCdListMap.get(MSKM_DTL_NO);
			}
			// eoTVサービス更新年月日
			if (addDchskmCdListMap.containsKey(UPD_DTM) && !JFUBPCommon.isNull(addDchskmCdListMap.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)addDchskmCdListMap.get("TvLastUpdDtm");
					cmpUpdDtm = (String)addDchskmCdListMap.get(UPD_DTM);
					// パラメータの更新年月日よりeoTVサービス契約の最終更新年月日のほうが未来日の場合
					// eoTVサービス契約の最終更新年月日でレコード追加
					if (cmpUpdDtm.compareTo(tvLastUpdDtm) < 0)
					{
						cmpUpdDtm = tvLastUpdDtm;
					}
				}
// OM-2018-0001328 MOD END
			}
// ANK-3473-00-00 ADD END
			// addDchskmCdListMapにチェック用の料金コースコード、料金プランコードが設定されている場合、
			// その内容と突合せ
			// ※料金グループが合うこと前提
			// 仮登録以外で当ロジックを通るとき、上記で取得している各マップに情報が無い場合、
			// 料金コース、料金プラン等、必要な情報はロジック側からマッピングする
			// 20140901時点では、スマリンキャンペーンを考慮した内容となっている為、
			// 他キャンペーンが追加で発生した場合は必要ならば改修してください
			if (prcGrpCd.equals(chkPrcGrpCd))
			{
				// マスタの料金コース、料金プランがどちらとも合致するか、
				// マスタの料金コース、料金プランがどちらも未設定か
				if ((prcsCd.equals(chkPcrsCd) && pPlanCd.equals(chkPplanCd)) || 
						((JFUBPCommon.isNull(prcsCd) && JFUBPCommon.isNull(pPlanCd))))
				{
					workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_01);
					workDataMap.put(SVC_KEI_NO, cmpSvcKeiNo);
					workDataMap.put(KKTK_SVC_KEI_NO, null);
					workDataMap.put(OP_SVC_KEI_NO, null);
					workDataMap.put(SVC_KEI_UCWK_NO, null);
					workDataMap.put(MSKM_DTL_NO, cmpSvcMskmDtlNo);
					workDataMap.put(UPD_DTM, cmpUpdDtm);
					return true;
				}
			}

			// 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 ((SVC_CD_02.equals(svcCd) && ("".equals(prcGrpCd) || prcGrpCd == null))
						|| (SVC_CD_02.equals(svcCd) && PRC_GRP_CD_10.equals(prcGrpCd) && 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)
					{
						workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_01); // No356 2013/02/25 Otsuka
						workDataMap.put(SVC_KEI_NO, workSvcKeiTelDataMap.get(SVC_KEI_NO));
						workDataMap.put(KKTK_SVC_KEI_NO, null);
						workDataMap.put(OP_SVC_KEI_NO, null);
						workDataMap.put(SVC_KEI_UCWK_NO, null);
						workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TEL));
						workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
						return true;
					}
					// 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 ((SVC_CD_03.equals(svcCd) && ("".equals(prcGrpCd) || prcGrpCd == null))
						|| (SVC_CD_03.equals(svcCd)
								&& (PRC_GRP_CD_11.equals(prcGrpCd) || PRC_GRP_CD_12.equals(prcGrpCd) || PRC_GRP_CD_13.equals(prcGrpCd))
								&& 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)
					{
						workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_01); // No356 2013/02/25 Otsuka
						workDataMap.put(SVC_KEI_NO, workSvcKeiTvDataMap.get(SVC_KEI_NO));
						workDataMap.put(KKTK_SVC_KEI_NO, null);
						workDataMap.put(OP_SVC_KEI_NO, null);
						workDataMap.put(SVC_KEI_UCWK_NO, null);
						workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TV));
						workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
						return true;
					}
					// 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 ((SVC_CD_01.equals(svcCd) && ("".equals(prcGrpCd) || prcGrpCd == null))
						|| (SVC_CD_01.equals(svcCd)
								&& (PRC_GRP_CD_07.equals(prcGrpCd) || PRC_GRP_CD_08.equals(prcGrpCd) || PRC_GRP_CD_09.equals(prcGrpCd))
								&& 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)
					{
						workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_01); // No356 2013/02/25 Otsuka
						// 2013/03/19【No465】WiMAX白ロム割引適用対応 Fujiwara Add Start
						// モバイル単独の場合
						if (mobileFlg)
						{
							workDataMap.put(SVC_KEI_NO, com.fujitsu.futurity.bp.custom.common.JFUBPCommon.getBPValueString(param, "FUSV016510SC",
									"svc_kei_no"));
						}
						else
						{
							workDataMap.put(SVC_KEI_NO, workSvcKeiMobDataMap.get(SVC_KEI_NO));
						}
						// 2013/03/19【No465】WiMAX白ロム割引適用対応 Fujiwara Add End
						workDataMap.put(KKTK_SVC_KEI_NO, null);
						workDataMap.put(OP_SVC_KEI_NO, null);
						workDataMap.put(SVC_KEI_UCWK_NO, null);
						// 2013/03/19【No465】WiMAX白ロム割引適用対応 Fujiwara Add Start
						// モバイル単独の場合
						if (mobileFlg)
						{
							workDataMap.put(MSKM_DTL_NO, com.fujitsu.futurity.bp.custom.common.JPCBPCommon.getBPListValueString(param,
									"FUSV016505SC", "EKK0011D020CBSMsg1List", 0, "mskm_dtl_no"));
						}
						else
						{
							workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_MOB));
						}
						// 2013/03/19【No465】WiMAX白ロム割引適用対応 Fujiwara Add End
						workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
						return true;
					}
					// 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)
					{
						workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_06); // No356 2013/02/25 Otsuka
						workDataMap.put(KKTK_SVC_KEI_NO, subMap.get(KKTK_SVC_KEI_NO));
						workDataMap.put(SVC_KEI_NO, null);
						workDataMap.put(OP_SVC_KEI_NO, null);
						workDataMap.put(SVC_KEI_UCWK_NO, null);
						workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_NET));
						workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
						return true;
					}
					// 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)
							{
								workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_06); // No356 2013/02/25 Otsuka
								workDataMap.put(KKTK_SVC_KEI_NO, telkikiMap.get(KKTK_SVC_KEI_NO));
								workDataMap.put(SVC_KEI_NO, null);
								workDataMap.put(OP_SVC_KEI_NO, null);
								workDataMap.put(SVC_KEI_UCWK_NO, null);
								workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TEL));
								workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
								return true;
							}
							// 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)
							{
								workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_06); // No356 2013/02/25 Otsuka
								workDataMap.put(KKTK_SVC_KEI_NO, tvkikiMap.get(KKTK_SVC_KEI_NO));
								workDataMap.put(SVC_KEI_NO, null);
								workDataMap.put(OP_SVC_KEI_NO, null);
								workDataMap.put(SVC_KEI_UCWK_NO, null);
								workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TV));
								workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
								return true;
							}
							// 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)
							{
								workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_06); // No356 2013/02/25 Otsuka
								workDataMap.put(KKTK_SVC_KEI_NO, mobKikiMap.get(KKTK_SVC_KEI_NO));
								workDataMap.put(SVC_KEI_NO, null);
								workDataMap.put(OP_SVC_KEI_NO, null);
								workDataMap.put(SVC_KEI_UCWK_NO, null);
								workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_MOB));
								workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
								return true;
							}
							// 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)
					{
						workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_06); // No356 2013/02/25 Otsuka
						workDataMap.put(KKTK_SVC_KEI_NO, inMap.get(KKTK_SVC_KEI_NO));
						workDataMap.put(SVC_KEI_NO, null);
						workDataMap.put(OP_SVC_KEI_NO, null);
						workDataMap.put(SVC_KEI_UCWK_NO, null);
						workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_NET));
						workDataMap.put(UPD_DTM, ((HashMap<String, Object>)param.getData(MAP_ID_EKK0091D010)).get(UPD_DTM));
						return true;
					}
					// 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)
					{
						workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_06); // No356 2013/02/25 Otsuka
						workDataMap.put(KKTK_SVC_KEI_NO, inMap.get(KKTK_SVC_KEI_NO));
						workDataMap.put(SVC_KEI_NO, null);
						workDataMap.put(OP_SVC_KEI_NO, null);
						workDataMap.put(SVC_KEI_UCWK_NO, null);
						workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TV));
						workDataMap.put(UPD_DTM, ((HashMap<String, Object>)param.getData(MAP_ID_EKK0101D010)).get(UPD_DTM));
						return true;
					}
					// 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)
							{
								workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_04); // No356 2013/02/25 Otsuka
								workDataMap.put(OP_SVC_KEI_NO, netOpMap.get(OP_SVC_KEI_NO));
								workDataMap.put(SVC_KEI_NO, null);
								workDataMap.put(KKTK_SVC_KEI_NO, null);
								workDataMap.put(SVC_KEI_UCWK_NO, null);
								workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_NET));
								workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
								return true;
							}
							// 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)
							{
								workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_04); // No356 2013/02/25 Otsuka
								workDataMap.put(OP_SVC_KEI_NO, mobOpMap.get(OP_SVC_KEI_NO));
								workDataMap.put(SVC_KEI_NO, null);
								workDataMap.put(KKTK_SVC_KEI_NO, null);
								workDataMap.put(SVC_KEI_UCWK_NO, null);
								workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_MOB));
								workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
								return true;
							}
							// 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)
					{
						workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_03); // No356 2013/02/25 Otsuka
						workDataMap.put(SVC_KEI_UCWK_NO, subMap.get(SVC_KEI_UCWK_NO));
						workDataMap.put(SVC_KEI_NO, null);
						workDataMap.put(KKTK_SVC_KEI_NO, null);
						workDataMap.put(OP_SVC_KEI_NO, null);
						workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_NET));
						workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
						return true;
					}
				}
			}

			// 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)
					{
						telUcwkMap = (HashMap)((ArrayList)subMap.get(MAP_ID_EKK0191D010List)).get(0);
						workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_03); // No356 2013/02/25 Otsuka
						workDataMap.put(SVC_KEI_UCWK_NO, telUcwkMap.get(SVC_KEI_UCWK_NO));
						workDataMap.put(SVC_KEI_NO, null);
						workDataMap.put(KKTK_SVC_KEI_NO, null);
						workDataMap.put(OP_SVC_KEI_NO, null);
						workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TEL));
						workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
						return true;
					}
				}
			}

			// 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)))
						{
							workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_03); // No356 2013/02/25 Otsuka
							workDataMap.put(SVC_KEI_UCWK_NO, tvUcwkMap.get(SVC_KEI_UCWK_NO));
							workDataMap.put(SVC_KEI_NO, null);
							workDataMap.put(KKTK_SVC_KEI_NO, null);
							workDataMap.put(OP_SVC_KEI_NO, null);
							workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_TV));
							workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
							return true;
						}
					}
				}
			}

			// 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)))
						{
							workDataMap.put(TG_KEI_SKBT_CD, JFUStrConst.CD00804_03); // No356 2013/02/25 Otsuka
							workDataMap.put(SVC_KEI_UCWK_NO, mobUcwkMap.get(SVC_KEI_UCWK_NO));
							workDataMap.put(SVC_KEI_NO, null);
							workDataMap.put(KKTK_SVC_KEI_NO, null);
							workDataMap.put(OP_SVC_KEI_NO, null);
							workDataMap.put(MSKM_DTL_NO, workMskmDataMap.get(MSKM_DTL_NO_MOB));
							workDataMap.put(UPD_DTM, inMap.get(UPD_DTM));
							return true;
						}
					}
				}
			}
		}
		return false;
	}

	/**
	 * 件数判定処理
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param index 番号
	 * @throws RequestParameterException
	 * @throws ParseException 
	 */
	private boolean judListCnt(IRequestParameterReadWrite param, String fixedText, String index) throws RequestParameterException
	{

		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		HashMap<String, Object> eKK1371b010Map = (HashMap<String, Object>)inMap.get(TEMP_TEMPLATE_EKK1371B001 + index);
		String totalSearchNumStr = (String)eKK1371b010Map.get(TOTAL_SEARCH_NUM);
		int totalSearchNum = 0;

		if (null != totalSearchNumStr && !"".equals(totalSearchNumStr))
		{
			totalSearchNum = Integer.valueOf(totalSearchNumStr);
		}

		if (0 < totalSearchNum)
		{
			return true;
		}
		else
		{
			return false;
		}
	}

	/**
	 * SCの実行ステータスの取得処理
	 * <br>
	 * @param param
	 * @return
	 */
	private int getReturnCode(IRequestParameterReadWrite param) throws Exception
	{
		return Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
	}

	/**
	 * 上りマッピング項目設定(サービス契約一意照会)
	 * 
	 * <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 handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> addDchskmCdMap = (HashMap<String, Object>)param.getData(JFUAddDchskmCdCCMap);
		HashMap<String, Object> addDchskmCdListMap = new HashMap();
		
		// 取扱コードからデータ抽出項目コードが登録される場合、AddDchskmCdListは未設定の場合がある
		if (addDchskmCdMap.get(AddDchskmCdList) == null)
		{
			// ダミー値で実行
			setInMapEKK1371B001(param, JFUAddDchskmCdCCMap, DTDMY0001, JFUStrConst.MAX_SEARCH_NUM, addDchskmCdListMap);
			setFuncCode(param, JFUAddDchskmCdCCMap, JPCModelConstant.FUNC_CD_1);
			return getInvokeCBS(handle, param, JFUAddDchskmCdCCMap, SIF_EKK1371B001, EKK1371B001CBSMsg.EKK1371B001CBSMSG1LIST,
					IN_COLUMN_LIST_DCHSKM_TG_SVC);
		}
		
		ArrayList addDchskmCdList = (ArrayList)addDchskmCdMap.get(AddDchskmCdList);
		addDchskmCdListMap = (HashMap)addDchskmCdList.get(0);
		setInMapEKK1371B001(param, JFUAddDchskmCdCCMap, (String)addDchskmCdListMap.get(ADDDCHSKMCD), 
				(String)addDchskmCdListMap.get(MAX_SEARCH_NUM), addDchskmCdListMap);
		setFuncCode(param, JFUAddDchskmCdCCMap, "1");
		return getInvokeCBS(handle, param, JFUAddDchskmCdCCMap, SIF_EKK1371B001, EKK1371B001CBSMsg.EKK1371B001CBSMSG1LIST,
				IN_COLUMN_LIST_DCHSKM_TG_SVC);
	}
	
	/**
	 * サービス契約情報取得です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @return サービス契約情報取得
	 * @throws RequestParameterException 
	 */
	private HashMap<String, String> getSvcKeiNetInfo(IRequestParameterReadWrite param) throws RequestParameterException
	{
		HashMap retMap = new HashMap<String, Object>();

		// eo光ネット登録マップHashMapが存在する場合
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(MAP_ID_EKK0091D010);
		if (inMap != null && inMap.size() > 0)
		{
			retMap.put(PRC_GRP_CD, (String)inMap.get(PRC_GRP_CD));
			retMap.put(PCRS_CD_O, (String)inMap.get(PCRS_CD_O));
			retMap.put(PPLAN_CD_O, (String)inMap.get(PPLAN_CD_O));
		}

		return retMap;
	}
	
	/**
	 * 適用期間チェック有無判定
	 * 
	 * <br>
	 * @param HashMap 
	 * @param addWribSvcListMap 割引リストマップ
	 * @return true：適用期間チェックする false:適用期間チェックしない
	 * @throws Exception
	 */
	private boolean isCheckTerm(HashMap addDchskmCdListMap)
	{
		if (!addDchskmCdListMap.containsKey(CHK_TERM)
				|| (addDchskmCdListMap.containsKey(CHK_TERM) && !JFUBPCommon.isNull(addDchskmCdListMap.get(CHK_TERM)) 
						&& JFUStrConst.CD00002_1.equals((String)addDchskmCdListMap.get(CHK_TERM))))
		{
			return true;
		}

		return false;
	}

	/**
	 * EKK1391B004_データ抽出項目設定一覧照会（SYSID）情報取得
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysId SYSID
	 * @return 登録済のデータ抽出項目設定
	 * @throws Exception
	 */
	private List<HashMap> getEKK1391B004(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String sysId) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		// EKK1391B004_データ抽出項目設定一覧照会（SYSID）
		HashMap<String, Object> eKK1351A010Map = new HashMap<String, Object>();

		// データ領域クリア
		initData(param, JFUAddDchskmCdCCMap, IN_COLUMN_LIST_EKK1391B004);
		// 上りマッピング
		setInMapEKK1391B004(param, fixedText, sysId);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		setFuncCode(param, fixedText, "1");
		executeSC(handle, param, fixedText, SIF_EKK1391B004, EKK1391B004CBSMsg.EKK1391B004CBSMSG1LIST, IN_COLUMN_LIST_EKK1391B004,
				EKK1391B004CBSMsg.KEY_SYSID_ERR);
		// データマップ
		List<HashMap> existsDchskmstList =
				getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK1391B004), EKK1391B004CBSMsg.EKK1391B004CBSMSG1LIST);

		if (existsDchskmstList == null)
		{
			return new ArrayList<HashMap>();
		}
		return existsDchskmstList;
	}

	/**
	 * 上りマッピング項目設定(EKK1391B004_データ抽出項目設定一覧照会（SYSID）)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysId SYSID
	 * @throws RequestParameterException
	 */
	private void setInMapEKK1391B004(IRequestParameterReadWrite param, String fixedText, String sysId) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		// KEY_SYSID
		inMap.put(EKK1391B004CBSMsg.KEY_SYSID, sysId);
	}

	/**
	 * データ抽出項目設定に既に登録されているかチェックする。
	 * 
	 * @param ekk1391b004List 登録済のデータ抽出項目設定
	 * @param dtlMap 登録対象になっているデータ抽出項目コード情報
	 * @return true：登録済、false：未登録
	 */
	private boolean existsKK_T_DCHSKMST(List<HashMap> ekk1391b004List, HashMap<String, Object> dtlMap)
	{
		String checkMdlExecKind = (String)dtlMap.get(MDL_EXEC_KIND);
		String checkMskmDtlNo = (String)dtlMap.get(MSKM_DTL_NO);
		String checkDchskmCd = (String)dtlMap.get(ADDDCHSKMCD);

		// 自動登録キャンペーンでフラグ設定されている場合のみチェックを実施する。
		if (!MDL_EXEC_KIND_AUTO.equals(checkMdlExecKind))
		{
			// 判定外（未登録扱い）
			return false;
		}
		for (HashMap ekk1391b004Map : ekk1391b004List)
		{
			String mskm_dtl_no = (String)ekk1391b004Map.get(EKK1391B004CBSMsg1List.MSKM_DTL_NO);
			String dchskm_cd = (String)ekk1391b004Map.get(EKK1391B004CBSMsg1List.DCHSKM_CD);
			String dchskmst_stat = (String)ekk1391b004Map.get(EKK1391B004CBSMsg1List.DCHSKMST_STAT);

			if (!DCHSKM_KEI_YUKO.contains(dchskmst_stat))
			{
				// 取消済（申込段階のため、受付済のみ生きている
				continue;
			}
			if (mskm_dtl_no.equals(checkMskmDtlNo) && dchskm_cd.equals(checkDchskmCd))
			{
				// 既に登録済
				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> addDchskmCdMap = (HashMap<String, Object>)param.getData(fixedText);
		ArrayList addDchskmCdList = (ArrayList)addDchskmCdMap.get(AddDchskmCdList);
		// 作業領域の取得
		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 (addDchskmCdList != null && addDchskmCdList.size() > 0)
		{
			HashMap<String, Object> addDchskmCdListMap = (HashMap)addDchskmCdList.get(0);
			if (addDchskmCdListMap != null)
			{
				sysId = (String)addDchskmCdListMap.get(SYSID);
			}
		}
		if (JFUBPCommon.isNull(sysId) && (workKeishaServiceDataMap != null))
		{
			sysId = (String)workKeishaServiceDataMap.get(SYSID);
		}
		if (JFUBPCommon.isNull(sysId) && (addDchskmCdMap != null))
		{
			sysId = (String)addDchskmCdMap.get(SYSID);
		}
		return sysId;
	}
}
