/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：契約管理
*	モジュール名	：JKKWrisvcDchskmCommonUtil
*	ソースファイル名：JKKWrisvcDchskmCommonUtil.java
*	作成者			：FJ
*	日付			：2011年10月01日
*＜機能概要＞
*	割引サービス、データ抽出項目の自動適用ＣＣ／設定解除ＡＰＩで使用する共通部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v2.00.00	2011/10/01	FJ			新規作成
*	v3.00.00	2011/04/26	FJ			巻取り@対応
*   v4.00.00    2012/08/20  FJ			巻取りAに向けて誤記修正 
*   v4.00.01    2012/10/21  FJ			ロットA分機能追加【ANK-1215-00-00】（回線併合）
*   v4.00.02    2012/11/12  FJ			マンション割引対応【ST2-2012-0001782】
*   v5.00.00    2013/02/14  FJ			ロットB【ANK-1410-00-00】１Gグレードアップ対応
*   v5.00.01    2013/06/10  FJ          【IT2-2013-0000494】STB対応
*   v5.00.02    2013/09/04  FJ          【OM-2013-0001528 】マンション判定削除
*   v7.00.00    2013/11/28  FJ			【ANK-1578-00-00】機器オプション対応
*   v20.00.00   2016/01/05  FJ			【OM-2015-0003357】同一割賦割引が存在する場合に正常に回復されない
*   v37.00.00   2018/04/23  FJ) 澤田    【ANK-3383-00-00】工事費割賦請求STEP2
*   
**********************************************************************/
package eo.common.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;

/**
 * 割引サービス、データ抽出項目の自動適用ＣＣ／設定解除ＡＰＩで使用する共通部品です。
 * <br>
 * @author 富士通
 */
public class JKKWrisvcDchskmCommonUtil
{
	/* ------------------------------------------------------------
	 * 割引サービス自動適用ＣＣ／設定解除ＡＰＩ共通部品定数
	 * ------------------------------------------------------------ */
	/** 空文字 */
	public static final String BLANK = "";
	
	/** 割引サービス／データ抽出項目識別フラグ（割引サービス） */
	public static final String WRIB_DCHS_SKBT_FLAG_WRIB = "1";
	/** 割引サービス／データ抽出項目識別フラグ（データ抽出項目） */
	public static final String WRIB_DCHS_SKBT_FLAG_DCHS = "2";
	
	/** 月初日 */
	public static final String FIRST_DATE = "01";
	
	/** サービス開始フラグ（開始前） */
	public static final String SVC_STA_FLG_BF = "0";
	/** サービス開始フラグ（開始後） */
	public static final String SVC_STA_FLG_AF = "1";
	
	/** サービス開始年月日初期値 */
	public static final String SVC_STA_YMD_INIT = "19000101";
	/** サービス終了年月日初期値 */
	public static final String SVC_END_YMD_INIT = "20991231";
	
	/** 優先順位判定結果（判定元優先） */
	public static final String YUSEN_JUN_JDG_RSLT_JDGMT = "1";
	/** 優先順位判定結果（判定先優先） */
	public static final String YUSEN_JUN_JDG_RSLT_JDGSK = "2";
	/** 優先順位判定結果（同等） */
	public static final String YUSEN_JUN_JDG_RSLT_EVEN = "0";
	
	
	/** 登録／変更区分（登録） */
	public static final String ADD_CHGE_DIV_ADD = "01";
	/** 登録／変更区分（プラン変更） */
	public static final String ADD_CHGE_DIV_PLAN_CHG = "02";
	/** 登録／変更区分（解約） */
	public static final String ADD_CHGE_DIV_DSL = "03";
	/** 登録／変更区分（回復） */
	public static final String ADD_CHGE_DIV_KAIHK = "04";
	/** 登録／変更区分（キャンセル） */
	public static final String ADD_CHGE_DIV_CNCL = "05";
	/** 登録／変更区分（コース変更） */
	public static final String ADD_CHGE_DIV_CRS_CHG = "06";
	/** 登録／変更区分（お客様併合） */
	public static final String ADD_CHGE_DIV_CUST_PLS = "11";
	/** 登録／変更区分（お客様分割） */
	public static final String ADD_CHGE_DIV_CUST_SLT = "12";
	/** 登録／変更区分（請求契約併合） */
	public static final String ADD_CHGE_DIV_BILL_PLS = "13";
	/** 登録／変更区分（請求契約分割） */
	public static final String ADD_CHGE_DIV_BILL_SLT = "14";
// v4.00.01 2012/10/21  ANK-1215-00-00 add start
	/** 登録／変更区分（回線併合） */
	public static final String ADD_CHGE_DIV_LINE_PLS = "15";
// v4.00.01 2012/10/21  ANK-1215-00-00 add end
	
/* v5.00.01 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/** 登録／変更区分（STB） */
	public static final String ADD_CHGE_DIV_STB = "16";
/* v5.00.01 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	//v37.00.00 ADD START
	/** 登録／変更区分（工事費割賦削除） */
	public static final String ADD_CHGE_DIV_KOJIHI_KAP_CP_DEL = "17";
	//v37.00.00 ADD END
	/** グループ区分（基準契約） */
	public static final String GRP_DIV_STDARD_KEI = "00";
	
	/** 割引サービス契約／データ抽出項目設定グループ区分（照会） */
	public static final String WRIBSVK_DCHSKMST_GRP_SHOKAI = "00";
	/** 割引サービス契約／データ抽出項目設定グループ区分（設定） */
	public static final String WRIBSVK_DCHSKMST_GRP_SET = "01";
	/** 割引サービス契約／データ抽出項目設定グループ区分（解除） */
	public static final String WRIBSVK_DCHSKMST_GRP_RLS = "02";
	
	/** 割引サービス契約／データ抽出項目設定解除済フラグ（解除済） */
	public static final String WRIBSVK_DCHSKMST_RLS_ZM = "1";
	
	
	/* ------------------------------------------------------------
	 * コード定義定数
	 * ------------------------------------------------------------ */
	/** サービス契約ステータス（受付済） */
	public static final String SVC_KEI_STAT_UK_ZM = "010";
	/** サービス契約ステータス（照査済） */
	public static final String SVC_KEI_STAT_SHOSA_ZM = "020";
	/** サービス契約ステータス（締結済） */
	public static final String SVC_KEI_STAT_CNC_ZM = "030";
	/** サービス契約ステータス（サービス提供中） */
	public static final String SVC_KEI_STAT_SVC_TK_CHU = "100";
	/** サービス契約ステータス（休止・中断中） */
	public static final String SVC_KEI_STAT_PAUSE_CHU = "210";
	/** サービス契約ステータス（停止中） */
	public static final String SVC_KEI_STAT_STP_CHU = "220";
	/** サービス契約ステータス（解約済） */
	public static final String SVC_KEI_STAT_DSL_ZM = "910";
	/** サービス契約ステータス（キャンセル済） */
	public static final String SVC_KEI_STAT_CNCL_ZM = "920";
	
	/** 機器提供サービス契約ステータス（受付済） */
	public static final String KKTK_SVC_KEI_STAT_UK_ZM = "010";
	/** 機器提供サービス契約ステータス（照査済） */
	public static final String KKTK_SVC_KEI_STAT_SHOSA_ZM = "020";
	/** 機器提供サービス契約ステータス（締結済） */
	public static final String KKTK_SVC_KEI_STAT_CNC_ZM = "030";
	/** 機器提供サービス契約ステータス（サービス提供中） */
	public static final String KKTK_SVC_KEI_STAT_SVC_TK_CHU = "100";
	/** 機器提供サービス契約ステータス（契約変更中） */
	public static final String KKTK_SVC_KEI_STAT_KEI_CHG_CHU = "110";
	/** 機器提供サービス契約ステータス（休止・中断中） */
	public static final String KKTK_SVC_KEI_STAT_PAUSE_CHU = "210";
	/** 機器提供サービス契約ステータス（停止中） */
	public static final String KKTK_SVC_KEI_STAT_STP_CHU = "220";
	/** 機器提供サービス契約ステータス（解約済） */
	public static final String KKTK_SVC_KEI_STAT_DSL_ZM = "910";
	/** 機器提供サービス契約ステータス（キャンセル済） */
	public static final String KKTK_SVC_KEI_STAT_CNCL_ZM = "920";
	
	/** 割引タイプコード（セット割引） */
	public static final String WRIB_TYPE_CD_SET_WRIB = "10";
	/** 割引タイプコード（ファミリーパック割引） */
	public static final String WRIB_TYPE_CD_FP_WRIB = "20";
	/** 割引タイプコード（長期利用割引） */
	public static final String WRIB_TYPE_CD_CHOKI_USE_WRIB = "30";
	/** 割引タイプコード（即割） */
	public static final String WRIB_TYPE_CD_SOKU_WARI = "31";
	/** 割引タイプコード（グループ割引） */
	public static final String WRIB_TYPE_CD_GRP_WRIB = "40";
	/** 割引タイプコード（キャンペーン割引） */
	public static final String WRIB_TYPE_CD_CMP_WARI = "50";
	/** 割引タイプコード（キャンペーン割引(面開発用)） */
	public static final String WRIB_TYPE_CD_CMP_WARI_MNKHT = "51";
	/** 割引タイプコード（コード設定項目） */
	public static final String WRIB_TYPE_CD_CD_SET_KMK = "60";
// v20.00.00 ADD START
	/** 割引タイプコード（割賦割引） */
	public static final String WRIB_TYPE_CD_KAP_WRIB = "42";
// v20.00.00 ADD END
	
	/** 割引適用契機コード（顧客申込） */
	public static final String WRIB_APLY_OPTNTY_CD_CUST_MSKM = "1";
	/** 割引適用契機コード（自動適用） */
	public static final String WRIB_APLY_OPTNTY_CD_AUTO_APLY = "2";
	
	/** 割引解除契機コード（顧客申込） */
	public static final String WRIB_RLS_OPTNTY_CD_CUST_MSKM = "1";
	/** 割引解除契機コード（自動適用） */
	public static final String WRIB_RLS_OPTNTY_CD_AUTO_APLY = "2";
	
	/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//	/** 割引種別コード（一時費用割引） */
//	public static final String WRIB_SBT_CD_ICHIWRI = "1";
//	/** 割引種別コード（月額費用割引） */
//	public static final String WRIB_SBT_CD_GTGK = "2";
	/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
	
	/** キャンペーン開始コード（課金開始日） */
	public static final String CAMPAIGN_STA_CD_CHRG_STAYMD = "01";
	/** キャンペーン開始コード（サービス開始日） */
	public static final String CAMPAIGN_STA_CD_SVC_STAYMD = "02";
	/** キャンペーン開始コード（登録月） */
	public static final String CAMPAIGN_STA_CD_ADD_MON = "03";
	/** キャンペーン開始コード（翌月） */
	public static final String CAMPAIGN_STA_CD_NEXT_MON = "04";
	/** キャンペーン開始コード（翌月(初日は当月)） */
	public static final String CAMPAIGN_STA_CD_NEXT_MON2 = "05";
	/** キャンペーン開始コード（課金開始前月） */
	public static final String CAMPAIGN_STA_CD_CHRG_STA_ZNGTU = "06";
	/** キャンペーン開始コード（プラン変更） */
	public static final String CAMPAIGN_STA_CD_PLAN_CHG = "07";
	/** キャンペーン開始コード（機種変更） */
	public static final String CAMPAIGN_STA_CD_MDL_CHG = "08";
	/** キャンペーン開始コード（出荷日+n日） */
	public static final String CAMPAIGN_STA_CD_SHKA_DATE = "09";
	
	/** 開始調整コード（調整なし） */
	public static final String STA_ADJ_CD_ADJ_NON = "1";
	/** 開始調整コード（月数） */
	public static final String STA_ADJ_CD_MON_CNT = "2";
	/** 開始調整コード（日数） */
	public static final String STA_ADJ_CD_DAY_CNT = "3";
	
	/** キャンペーン終了コード（条件なし） */
	public static final String CAMPAIGN_END_CD_JOKEN_NON = "00";
	/** キャンペーン終了コード（プラン変更） */
	public static final String CAMPAIGN_END_CD_PLAN_CHG = "01";
	
	/** 適用数判別コード（制限無し） */
	public static final String APLY_CNT_HAMBET_CD_LMT_NON = "1";
	/** 適用数判別コード（回数） */
	public static final String APLY_CNT_HAMBET_CD_CNT = "2";
	/** 適用数判別コード（月数） */
	public static final String APLY_CNT_HAMBET_CD_MON_CNT = "3";
	/** 適用数判別コード（日数） */
	public static final String APLY_CNT_HAMBET_CD_DAY_CNT = "4";
	
	/** 適用条件コード（全て一致） */
	public static final String APLY_JOKEN_CD_ALL = "1";
	/** 適用条件コード（一部でも可） */
	public static final String APLY_JOKEN_CD_ICHIBU = "2";
	/** 適用条件コード（グループで一致） */
	public static final String APLY_JOKEN_CD_GRP = "3";
	
	/** 割引登録条件コード（基準契約） */
	public static final String WRIB_ADD_JOKEN_CD_STDARD_KEI = "00";
	/** 割引登録条件コード（条件無し） */
	public static final String WRIB_ADD_JOKEN_CD_JOKEN_NON = "01";
	/** 割引登録条件コード（eoIDが同一であること） */
	public static final String WRIB_ADD_JOKEN_CD_CUST = "02";
	/** 割引登録条件コード（請求先番号が同一であること） */
	public static final String WRIB_ADD_JOKEN_CD_SEI = "03";
	/** 割引登録条件コード（回線契約が同一であること） */
	public static final String WRIB_ADD_JOKEN_CD_KAISEN = "04";
	/** 割引登録条件コード（eoID、請求先番号が同一であること） */
	public static final String WRIB_ADD_JOKEN_CD_CUST_SEI = "05";
	/** 割引登録条件コード（請求先番号、回線契約が同一であること） */
	public static final String WRIB_ADD_JOKEN_CD_SEI_KAISEN = "06";
	
	/** 対象サービス判別コード（条件無し） */
	public static final String TRGT_SVC_HAMBET_CD_JOKEN_NON = "1";
	/** 対象サービス判別コード（新規申込のみ） */
	public static final String TRGT_SVC_HAMBET_CD_NEW_MSKM = "2";
	/** 対象サービス判別コード（既存契約のみ） */
	public static final String TRGT_SVC_HAMBET_CD_KIZON_KEI = "3";
	
	
	/** 割引サービス契約ステータス（受付済） */
	public static final String WRIB_SVC_KEI_STAT_UK_ZM = "010";
	/** 割引サービス契約ステータス（サービス提供中） */
	public static final String WRIB_SVC_KEI_STAT_SVC_TK_CHU = "100";
	/** 割引サービス契約ステータス（適用済） */
	public static final String WRIB_SVC_KEI_STAT_APLY_ZM = "300";
	/** 割引サービス契約ステータス（解約済） */
	public static final String WRIB_SVC_KEI_STAT_DSL_ZM = "910";
	/** 割引サービス契約ステータス（キャンセル済） */
	public static final String WRIB_SVC_KEI_STAT_CNCL_ZM = "920";
	
	/** 料金コースコード（ファミリーパック） */
	public static final String PCRS_CD_FP = "F01";
	/** 料金コースコード（おまかせ安心セット） */
	public static final String PCRS_CD_OMKSANSN_SET = "F02";
	
	/** 料金プランコード（ファミリーパック） */
	public static final String PPLAN_CD_FP = "PF0101";
	/** 料金プランコード（おまかせ安心セット） */
	public static final String PPLAN_CD_OMKSANSN_SET = "PF0201";
	
	/** プラン終了種別コード（プラン変更による終了） */
	public static final String PLAN_END_SBT_CD_PLAN_CHG = "1";
	/** プラン終了種別コード（解約による終了） */
	public static final String PLAN_END_SBT_CD_DSL = "2";
	/** プラン終了種別コード（強制解約による終了） */
	public static final String PLAN_END_SBT_CD_KSI_DSL = "3";
	/** プラン終了種別コード（キャンセルによる終了） */
	public static final String PLAN_END_SBT_CD_CNCL = "4";
	
	/** 即時適用フラグ（しない） */
	public static final String APLY_JUN_OFF = "0";
	/** 即時適用フラグ（する） */
	public static final String APLY_JUN_ON = "1";
	
	/** サービス解約理由コード（通常解約） */
	public static final String SVC_DLRE_CD_TUJYO_DSL = "01";
	/** サービス解約理由コード（強制解約） */
	public static final String SVC_DLRE_CD_KYOSEI_DSL = "02";
	/** サービス解約理由コード（工事起因によるキャンセル） */
	public static final String SVC_DLRE_CD_KOJI_KIIN_CNCL = "03";
	
	/** サービスキャンセル理由コード（その他理由によるキャンセル） */
	public static final String SVC_CANCEL_RSN_CD_OTHER = "05";
	/** サービスキャンセル理由コード（解約による終了） */
	public static final String SVC_CANCEL_RSN_CD_DSL = "06";
	/** サービスキャンセル理由コード（強制解約による終了） */
	public static final String SVC_CANCEL_RSN_CD_KYOSEI_DSL = "07";
	
	/** 登録契機コード（自動適用） */
	public static final String ADD_OPTY_CD_AUTO_APLY = "1";
	/** 登録契機コード（手動適用） */
	public static final String ADD_OPTY_CD_MAN_APLY = "2";
	
	
	/** データ抽出項目設定ステータス（受付済） */
	public static final String DCHSKMST_STAT_UK_ZM = "010";
	/** データ抽出項目設定ステータス（完了済） */
	public static final String DCHSKMST_STAT_FIN_ZM = "100";
	
	/** データ抽出項目設定完了種別コード（適用済） */
	public static final String DCHSKMST_FIN_SBT_CD_APLY_ZM = "010";
	/** データ抽出項目設定完了種別コード（キャンセル） */
	public static final String DCHSKMST_FIN_SBT_CD_CNCL = "020";
	/** データ抽出項目設定完了種別コード（解約） */
	public static final String DCHSKMST_FIN_SBT_CD_DSL = "030";
	
	
	/** 対象契約識別コード（サービス契約） */
	public static final String TG_KEI_SKBT_CD_SVC_KEI = "01";
	/** 対象契約識別コード（サービス契約内訳） */
	public static final String TG_KEI_SKBT_CD_SVC_KEI_UCWK = "03";
	/** 対象契約識別コード（オプションサービス契約） */
	public static final String TG_KEI_SKBT_CD_OP_SVC_KEI = "04";
	/** 対象契約識別コード（サブオプションサービス契約） */
	public static final String TG_KEI_SKBT_CD_SBOP_SVC_KEI = "05";
	/** 対象契約識別コード（機器提供サービス契約） */
	public static final String TG_KEI_SKBT_CD_KKTK_SVC_KEI = "06";
	/** 対象契約識別コード（請求オプションサービス契約） */
	public static final String TG_KEI_SKBT_CD_SEIOPSVC_KEI = "07";
	// ANK-1578-00-00 add start
	/** 対象契約識別コード（機器オプションサービス契約） */
	public static final String TG_KEI_SKBT_CD_KKOP_SVC_KEI = "10"; 
	// ANK-1578-00-00 add end
	
	/**  可否（否） */
	public static final String KH_H = "0";
	/**  可否（可） */
	public static final String KH_K = "1";
	
	/** イベントコード（料金計算日） */
	public static final String EVENT_CD_PRC_CALC_DAY = "03";
	
	/** 事務手数料自動適用要否（無） */
	public static final String RULE0059_AUTO_APLY_H = "0";
	/** 事務手数料自動適用要否（有） */
	public static final String RULE0059_AUTO_APLY_Y = "1";
	
	/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
	/** 割引サービス適用条件種別コード（申込形態） **/
	public static final String WRSV_APLY_JKN_SBT_CD_MSKM_FORM = "01";
	/** 割引サービス適用条件種別コード（申込種別） **/
	public static final String WRSV_APLY_JKN_SBT_CD_MSKM_SBT = "05";
	/** 割引サービス適用条件種別コード（代理店） **/
	public static final String WRSV_APLY_JKN_SBT_CD_AGNT = "06";
	
/* v5.00.00 add start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/** 割引サービス適用条件種別コード（グレードアップキャンペーン） **/
	public static final String WRSV_APLY_JKN_SBT_CD_GREAD_UP_CP = "08";
/* v5.00.00 add end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	//2012/11/12 ST2-2012-0001782 add start
	/** 割引サービス適用条件種別コード（マンション） **/
	public static final String WRSV_APLY_JKN_SBT_CD_MNSN = "11";
	//2012/11/12 ST2-2012-0001782 add end
	
	/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
	
	/* ------------------------------------------------------------
	 * 例外メッセージ定数
	 * ------------------------------------------------------------ */
	/** サービス契約ステータス例外メッセージ */
	private static final String SVC_KEI_STAT_EXPTN_MSG = "対応していないサービス契約ステータスです。";
	/** 対象契約識別コード例外メッセージ */
	private static final String TG_KEI_SKBT_CD_EXPTN_MSG = "対応していない対象契約識別コードです。";
	/** キャンペーン開始コード例外メッセージ */
	private static final String CAMPAIGN_STA_CD_EXPTN_MSG = "対応していないキャンペーン開始コードです。";
	/** 開始調整コード例外メッセージ */
	private static final String STA_ADJ_CD_EXPTN_MSG = "対応していない開始調整コードです。";
	/** 適用数判別コード例外メッセージ */
	private static final String APLY_CNT_HAMBET_CD_EXPTN_MSG = "対応していない適用数判別コードです。";
	/** 対象サービス判別コード例外メッセージ */
	private static final String TG_SVC_HAMBET_CD_EXPTN_MSG = "対応していない対象サービス判別コードです。";
	/** 対象サービス契約数例外メッセージ */
	private static final String TG_SVC_KEI_CNT_EXPTN_MSG = "対象契約サービス数の下限値が上限値より大きい値です。";
	/** 対象サービス契約数例外メッセージ */
	private static final String UPPL_AUTO_APLY_KH_EXPTN_MSG = "対象契約サービス上限が設定されているにも関わらず、上限超適用可否が未設定です。";
	/** 適用条件コード例外メッセージ */
	private static final String APLY_JOKEN_CD_EXPTN_MSG = "対応していない適用条件コードです。";
	/** 可否例外メッセージ */
	private static final String KH_EXPTN_MSG = "対応していない可否フラグです。";
	
	/** 割引サービス／データ抽出項目識別フラグ例外メッセージ */
	private static final String WRIB_DCHS_SKBT_FLAG_EXPTN_MSG = "対応していない割引サービス／データ抽出項目識別フラグです";
	
	
	/* ------------------------------------------------------------
	 * マップ項目定数
	 * ------------------------------------------------------------ */
	////////// 独自定数 //////////
	/** 登録／変更区分（登録） */
	public static final String ADD_CHGE_DIV = "add_chge_div";
	/** グループ区分 */
	public static final String GRP_DIV = "grp_div";
	/** 解除済フラグ */
	public static final String RLS_ZM_FLAG = "rls_zm_flag";
	/** 適用可否 */
	public static final String APLY_KH = "aply_kh";
	
	////////// 各種リスト //////////
	/** サービス契約グループリスト */
	public static final String SVC_KEI_GRP_LIST = "svc_kei_grp_list";
	/** サービス契約リスト */
	public static final String SVC_KEI_LIST = "svc_kei_list";
	
	/** 割引サービスリスト */
	public static final String WRIB_SVC_LIST = "wrib_svc_list";
	/** データ抽出項目リスト */
	public static final String DCHSKM_LIST = "dchskm_list";
	/** 割引サービス対象サービスリスト */
	public static final String WRISVC_TG_SVC_LIST = "wrisvc_tg_svc_list";
	/** データ抽出項目対象サービスリスト */
	public static final String DCHSKM_TG_SVC_LIST = "dchskm_tg_svc_list";
	/** 対象契約サービス契約数 */
	public static final String TRGT_KEI_SVC_KEI_CNT = "trgt_kei_svc_kei_cnt";
	/** 対象契約サービス契約リスト */
	public static final String TRGT_KEI_SVC_KEI_LIST = "trgt_kei_svc_kei_list";
	
	/** 割引サービス契約グループリスト */
	public static final String WRIB_SVC_KEI_GRP_LIST = "wrib_svc_kei_grp_list";
	/** データ抽出項目設定グループリスト */
	public static final String DCHSKMST_GRP_LIST = "dchskmst_grp_list";
	/** 割引サービス契約リスト */
	public static final String WRIB_SVC_KEI_LIST = "wrib_svc_kei_list";
	/** データ抽出項目設定リスト */
	public static final String DCHSKMST_LIST = "dchskmst_list";
	/** 割引サービス対象契約リスト */
	public static final String WRISVC_TG_KEI_LIST = "wrisvc_tg_kei_list";
	/** データ抽出項目設定対象契約リスト */
	public static final String DCHSKMST_TG_KEI_LIST = "dchskmst_tg_kei_list";
	
	/** 申込明細 */
	public static final String MSKM_DTL_LIST = "mskm_dtl_list";
	
	//2012/11/12 ST2-2012-0001782 add START
	/**マンション情報 */
	public static final String MANSION_LIST = "mansion_list";
	//2012/11/12 ST2-2012-0001782 add end
	
	/* ------------------------------------------------------------
	 * テーブル項目定数
	 * ------------------------------------------------------------ */
	////////// 各種テーブル共通 //////////
	/** 世代登録年月日時分秒 */
	public static final String GENE_ADD_DTM = "gene_add_dtm";
	/** 予約適用年月日 */
	public static final String RSV_APLY_YMD = "rsv_aply_ymd";
	/** 登録年月日時分秒 */
	public static final String ADD_DTM = "add_dtm";
	/** 登録オペレータアカウント */
	public static final String ADD_OPEACNT = "add_opeacnt";
	/** 更新年月日時分秒 */
	public static final String UPD_DTM = "upd_dtm";
	/** 更新オペレータアカウント */
	public static final String UPD_OPEACNT = "upd_opeacnt";
	/** 削除年月日時分秒 */
	public static final String DEL_DTM = "del_dtm";
	/** 削除オペレータアカウント */
	public static final String DEL_OPEACNT = "del_opeacnt";
	/** 無効フラグ */
	public static final String MK_FLG = "mk_flg";
	
	////////// 申込 //////////
	/** 申込番号 */
	public static final String MSKM_NO = "mskm_no";
	/** 申込種別コード */
	public static final String MSKM_SBT_CD = "mskm_sbt_cd";
	
	////////// サービス契約 //////////
	/** サービス契約番号 */
	public static final String SVC_KEI_NO = "svc_kei_no";
	/** サービス契約ステータス */
	public static final String SVC_KEI_STAT = "svc_kei_stat";
	/** サービスコード */
	public static final String SVC_CD = "svc_cd";
	/** 料金グループコード */
	public static final String PRC_GRP_CD = "prc_grp_cd";
	
	////////// サービス契約内訳 //////////
	/** サービス契約内訳番号 */
	public static final String SVC_KEI_UCWK_NO = "svc_kei_ucwk_no";
	/** サービス契約内訳ステータス */
	public static final String SVC_KEI_UCWK_STAT = "svc_kei_ucwk_stat";
	
	////////// オプションサービス契約 //////////
	/** オプションサービス契約番号 */
	public static final String OP_SVC_KEI_NO = "op_svc_kei_no";
	/** オプションサービス契約ステータス */
	public static final String OP_SVC_KEI_STAT = "op_svc_kei_stat";
	/** オプションサービスコード */
	public static final String OP_SVC_CD = "op_svc_cd";
	
	////////// サブオプションサービス契約 //////////
	/** サブオプションサービス契約番号 */
	public static final String SBOP_SVC_KEI_NO = "sbop_svc_kei_no";
	/** サブオプションサービス契約ステータス */
	public static final String SBOP_SVC_KEI_STAT = "sbop_svc_kei_stat";
	/** サブオプションサービスコード */
	public static final String SBOP_SVC_CD = "sbop_svc_cd";
	
	////////// 機器提供サービス契約 //////////
	/** 機器提供サービス契約番号 */
	public static final String KKTK_SVC_KEI_NO = "kktk_svc_kei_no";
	/** 機器提供サービス契約ステータス */
	public static final String KKTK_SVC_KEI_STAT = "kktk_svc_kei_stat";
	/** 機器提供サービスコード */
	public static final String KKTK_SVC_CD = "kktk_svc_cd";
	/** 機器提供種別コード */
	public static final String KKTK_SBT_CD = "kktk_sbt_cd";
	
	////////// 請求オプションサービス契約 //////////
	/** 請求オプションサービス契約番号 */
	public static final String SEIOPSVC_KEI_NO = "seiopsvc_kei_no";
	/** 請求オプションサービス契約ステータス */
	public static final String SEIOPSVC_KEI_STAT = "seiopsvc_kei_stat";
	/** 請求オプションサービスコード */
	public static final String SEIOPSVC_CD = "seiopsvc_cd";
	
	// 2013/11/07  ANK-1578-00-00 add start
	////////// 機器オプションサービス契約 //////////
	/** 機器オプションサービス契約番号 */
	public static final String KKOP_SVC_KEI_NO = "kkop_svc_kei_no";
	/** 機器オプションサービス契約ステータス */
	public static final String KKOP_SVC_KEI_STAT = "kkop_svc_kei_stat";
	/** 機器オプションサービスコード */
	public static final String KKOP_SVC_CD = "kkop_svc_cd";
	// 2013/11/07  ANK-1578-00-00 add end
	
	////////// サービス契約（内訳、オプション、サブオプション、機器提供、請求オプション、割引）共通 //////////
	/** SYSID */
	public static final String SYSID = "sysid";
	/** 申込明細番号 */
	public static final String MSKM_DTL_NO = "mskm_dtl_no";
	/** 料金コースコード */
	public static final String PCRS_CD = "pcrs_cd";
	/** 料金プランコード */
	public static final String PPLAN_CD = "pplan_cd";
	/** プラン開始年月日 */
	public static final String PLAN_STAYMD = "plan_staymd";
	/** プラン終了年月日 */
	public static final String PLAN_ENDYMD = "plan_endymd";
	/** プラン課金開始年月日 */
	public static final String PLAN_CHRG_STAYMD = "plan_chrg_staymd";
	/** プラン課金終了年月日 */
	public static final String PLAN_CHRG_ENDYMD = "plan_chrg_endymd";
	/** プラン終了種別コード */
	public static final String PLAN_END_SBT_CD = "plan_end_sbt_cd";
	/** サービスキャンセル年月日 */
	public static final String SVC_CANCEL_YMD = "svc_cancel_ymd";
	/** サービスキャンセル理由コード */
	public static final String SVC_CANCEL_RSN_CD = "svc_cancel_rsn_cd";
	/** サービス開始年月日 */
	public static final String SVC_STA_YMD = "svc_sta_ymd";
	/** サービス課金開始年月日 */
	public static final String SVC_CHRG_STAYMD = "svc_chrg_staymd";
	/** サービス終了年月日 */
	public static final String SVC_ENDYMD = "svc_endymd";
	/** サービス課金終了年月日 */
	public static final String SVC_CHRG_ENDYMD = "svc_chrg_endymd";
	/** サービス解約年月日 */
	public static final String SVC_DSL_YMD = "svc_dsl_ymd";
	/** サービス解約理由コード */
	public static final String SVC_DLRE_CD = "svc_dlre_cd";
	/** 回復年月日 */
	public static final String KAIHK_YMD = "kaihk_ymd";
	/** 異動区分 */
	public static final String IDO_DIV = "ido_div";
	
	////////// 割引サービス //////////
	/** 割引サービスコード */
	public static final String WRIB_SVC_CD = "wrib_svc_cd";
	/** 割引タイプコード */
	public static final String WRIB_TYPE_CD = "wrib_type_cd";
	/** 表示用キャンペーンコード */
	public static final String DSP_CAMPAIGN_CD = "dsp_campaign_cd";
	/** 割引サービス名 */
	public static final String WRIB_SVC_NM = "wrib_svc_nm";
	/** 受付開始年月日時分 */
	public static final String UK_STA_YMDHM = "uk_sta_ymdhm";
	/** 受付終了年月日時分 */
	public static final String UK_END_YMDHM = "uk_end_ymdhm";
	/** 割引適用契機コード */
	public static final String WRIB_APLY_OPTNTY_CD = "wrib_aply_optnty_cd";
	/** 割引解除契機コード */
	public static final String WRIB_RLS_OPTNTY_CD = "wrib_rls_optnty_cd";
	/** 割引種別コード */
	public static final String WRIB_SBT_CD = "wrib_sbt_cd";
	/** キャンペーン開始コード */
	public static final String CAMPAIGN_STA_CD = "campaign_sta_cd";
	/** キャンペーン終了コード */
	public static final String CAMPAIGN_END_CD = "campaign_end_cd";
	/** 割引エイジング期間 */
	public static final String WRIB_AGING_PRD = "wrib_aging_prd";
	/** 割引優先順位型コード */
	public static final String YUSEN_JUN_MDL_CD = "yusen_jun_mdl_cd";
	/** 割引優先順位種類コード */
	public static final String YUSEN_JUN_KIND_CD = "yusen_jun_kind_cd";
	/** 割引優先順位タイプコード */
	public static final String YUSEN_JUN_TYPE_CD = "yusen_jun_type_cd";
	/** 割引優先順位タイプ順位 */
	public static final String YUSEN_JUN_TYPE_JUN = "yusen_jun_type_jun";
	/** 割引登録条件コード */
	public static final String WRIB_ADD_JOKEN_CD = "wrib_add_joken_cd";
	/** 割引サービス適用開始年月日 */
	public static final String WRIB_SVC_TSTAYMD = "wrib_svc_tstaymd";
	/** 割引サービス適用終了年月日 */
	public static final String WRIB_SVC_TENDYMD = "wrib_svc_tendymd";
	/** 後続業務依頼基準年月日 */
	public static final String KZKWRK_REQ_STDARD_YMD = "kzkwrk_req_stdard_ymd";
	/** 後続業務依頼基準期間 */
	public static final String KZKWRK_REQ_STDARD_PRD = "kzkwrk_req_stdard_prd";
	
	////////// データ抽出項目 //////////
	/** データ抽出項目コード */
	public static final String DCHSKM_CD = "dchskm_cd";
	/** データ抽出タイプコード */
	public static final String DCHS_TYPE_CD = "dchs_type_cd";
	/** 表示用データ抽出項目コード */
	public static final String DSP_DCHSKM_CD = "dsp_dchskm_cd";
	/** データ抽出項目名 */
	public static final String DCHSKM_NM = "dchskm_nm";
	/** 設定可能開始年月日時分 */
	public static final String SET_PSB_STA_YMDHM = "set_psb_sta_ymdhm";
	/** 設定可能終了年月日時分 */
	public static final String SET_PSB_END_YMDHM = "set_psb_end_ymdhm";
	/** データ抽出適用契機コード */
	public static final String DCHS_APLY_OPTNTY_CD = "dchs_aply_optnty_cd";
	/** データ抽出解除契機コード */
	public static final String DCHS_RLS_OPTNTY_CD = "dchs_rls_optnty_cd";
	/** データ抽出種別コード */
	public static final String DCHS_SBT_CD = "dchs_sbt_cd";
	/** データ抽出項目開始コード */
	public static final String DCHSKM_STA_CD = "dchskm_sta_cd";
	/** データ抽出項目終了コード */
	public static final String DCHSKM_END_CD = "dchskm_end_cd";
	/** データ抽出項目エイジング期間 */
	public static final String DCHSKM_AGING_PRD = "dchskm_aging_prd";
	/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//	/** データ抽出優先順位型コード */
//	public static final String DCHS_YUSEN_JUN_MDL_CD = "dchs_yusen_jun_mdl_cd";
//	/** データ抽出優先順位種類コード */
//	public static final String DCHS_YUSEN_JUN_KIND_CD = "dchs_yusen_jun_kind_cd";
//	/** データ抽出優先順位タイプコード */
//	public static final String DCHS_YUSEN_JUN_TYPE_CD = "dchs_yusen_jun_type_cd";
//	/** データ抽出優先順位タイプ順位 */
//	public static final String DCHS_YUSEN_JUN_TYPE_JUN = "dchs_yusen_jun_type_jun";
	/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
	/** データ抽出登録条件コード */
	public static final String DCHS_ADD_JOKEN_CD = "dchs_add_joken_cd";
	/** データ抽出項目適用開始年月日 */
	public static final String DCHSKM_TSTAYMD = "dchskm_tstaymd";
	/** データ抽出項目適用終了年月日 */
	public static final String DCHSKM_TENDYMD = "dchskm_tendymd";
	
	////////// 割引サービス・データ抽出項目共通 //////////
	/** 開始調整コード */
	public static final String STA_ADJ_CD = "sta_adj_cd";
	/** 開始調整期間 */
	public static final String STA_ADJ = "sta_adj";
	/** 上限適用回数 */
	public static final String UPPL_APLY_CNT = "uppl_aply_cnt";
	/** 上限契約数 */
	public static final String UPPL_KEI_CNT = "uppl_kei_cnt";
	/** 表示順 */
	public static final String DSP_JUN = "dsp_jun";
	/** 条件適用開始年月日 */
	public static final String JOKEN_TSTAYMD = "joken_tstaymd";
	/** 条件適用終了年月日 */
	public static final String JOKEN_TENDYMD = "joken_tendymd";
	/** 適用数判別コード */
	public static final String APLY_CNT_HAMBET_CD = "aply_cnt_hambet_cd";
	/** 適用数 */
	public static final String APLY_CNT = "aply_cnt";
	/** 適用条件コード */
	public static final String APLY_JOKEN_CD = "aply_joken_cd";
	/** 代理店コード */
	public static final String AGNT_CD = "agnt_cd";
	/** 申込形態コード */
	public static final String MSKM_FORM_CD = "mskm_form_cd";
	/** グループ種別コード */
	public static final String GRP_SBT_CD = "grp_sbt_cd";
	/** 紹介種別コード */
	public static final String INTR_SBT_CD = "intr_sbt_cd";
	
	//2012/11/12 ST2-2012-0001782 add start
	/** マンションID */
	public static final String MANSION_ID = "mansion_id";
	/** マンションプランコード */
	public static final String MANSION_PLAN_CD = "mansion_plan_cd";
	//2012/11/12 ST2-2012-0001782 add end
	
	////////// 割引サービス対象サービス //////////
	/** 割引サービス対象サービスコード */
	public static final String WRIB_SVC_TRGT_SVC_CD = "wrib_svc_trgt_svc_cd";
	/** 割引サービス対象サービス適用開始年月日 */
	public static final String WRIB_SVC_TRGT_SVC_TSTAYMD = "wrib_svc_trgt_svc_tstaymd";
	/** 割引サービス対象サービス適用終了年月日 */
	public static final String WRIB_SVC_TRGT_SVC_TENDYMD = "wrib_svc_trgt_svc_tendymd";
	
	////////// データ抽出項目対象サービス //////////
	/** データ抽出項目対象サービスコード */
	public static final String DCHSKM_TG_SVC_CD = "dchskm_tg_svc_cd";
	/** データ抽出項目対象サービス適用開始年月日 */
	public static final String DCHSKM_TG_SVC_TSTAYMD = "dchskm_tg_svc_tstaymd";
	/** データ抽出項目対象サービス適用終了年月日 */
	public static final String DCHSKM_TG_SVC_TENDYMD = "dchskm_tg_svc_tendymd";
	
	////////// 割引サービス対象サービス・データ抽出対象サービス項目共通 //////////
	/** 適用条件グループ */
	public static final String APLY_JOKEN_GRP = "aply_joken_grp";
	/** 変更前サービスコード */
	public static final String CHGE_BF_SVC_CD = "chge_bf_svc_cd";
	/** 変更前料金グループコード */
	public static final String CHGE_BF_PRC_GRP_CD = "chge_bf_prc_grp_cd";
	/** 変更前料金コースコード */
	public static final String CHGE_BF_PCRS_CD = "chge_bf_pcrs_cd";
	/** 変更前料金プランコード */
	public static final String CHGE_BF_PPLAN_CD = "chge_bf_pplan_cd";
	/** 変更前オプションサービスコード */
	public static final String CHGE_BF_OP_SVC_CD = "chge_bf_op_svc_cd";
	/** 変更前サブオプションサービスコード */
	public static final String CHGE_BF_SBOP_SVC_CD = "chge_bf_sbop_svc_cd";
	/** 変更前機器提供サービスコード */
	public static final String CHGE_BF_KKTK_SVC_CD = "chge_bf_kktk_svc_cd";
	/** 変更前機器提供種別コード */
	public static final String CHGE_BF_KKTK_SBT_CD = "chge_bf_kktk_sbt_cd";
	/** 変更前請求オプションサービスコード */
	public static final String CHGE_BF_SEIOPSVC_CD = "chge_bf_seiopsvc_cd";
	// 2013/11/07  ANK-1578-00-00 add start
	/** 変更前機器オプションサービスコード */
	public static final String CHGE_BF_KKOP_SVC_CD = "chge_bf_kkop_svc_cd";
	// 2013/11/07  ANK-1578-00-00 add end
	/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//	/** 工事作業項目コード */
//	public static final String KOJI_WORK_KMK_CD = "koji_work_kmk_cd";
	/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
	/** サービス契約年数 */
	public static final String SVC_KEI_YEAR_CNT = "svc_kei_year_cnt";
	/** 対象契約サービス数 */
	public static final String TRGT_KEI_SVC_CNT = "trgt_kei_svc_cnt";
	/** 対象契約サービス上限 */
	public static final String TRGT_KEI_SVC_UPPL = "trgt_kei_svc_uppl";
	/** 対象サービス判別コード */
	public static final String TRGT_SVC_HAMBET_CD = "trgt_svc_hambet_cd";
	/** 上限超適用可否 */
	public static final String UPPL_AUTO_APLY_KH = "uppl_auto_aply_kh";
	
	////////// 割引サービス契約 //////////
	/** 割引サービス契約番号 */
	public static final String WRIB_SVC_KEI_NO = "wrib_svc_kei_no";
	/** 割引サービス契約ステータス */
	public static final String WRIB_SVC_KEI_STAT = "wrib_svc_kei_stat";
	/** 試用加入年月日 */
	public static final String FTRIAL_KANYU_YMD = "ftrial_kanyu_ymd";
	/** 試用期間終了年月日 */
	public static final String FTRIAL_PRD_ENDYMD = "ftrial_prd_endymd";
	/** 本加入年月日 */
	public static final String HONKANYU_YMD = "honkanyu_ymd";
	/** 本加入移行期限年月日 */
	public static final String HONKANYU_IKO_KIGEN_YMD = "honkanyu_iko_kigen_ymd";
	/** サービス利用開始希望年月日 */
	public static final String SVC_USE_STA_KIBO_YMD = "svc_use_sta_kibo_ymd";
	/** 予約適用開始希望年月日 */
	public static final String RSV_TSTA_KIBO_YMD = "rsv_tsta_kibo_ymd";
	/** 照査年月日 */
	public static final String SHOSA_YMD = "shosa_ymd";
	/** 照査取消年月日 */
	public static final String SHOSA_CL_YMD = "shosa_cl_ymd";
	/** 予約取消年月日 */
	public static final String RSV_CL_YMD = "rsv_cl_ymd";
	/** 予約適用コード */
	public static final String RSV_APLY_CD = "rsv_aply_cd";
	/** サービス解約理由メモ */
	public static final String SVC_DLRE_MEMO = "svc_dlre_memo";
	/** サービス解約手続完了フラグ */
	public static final String SVC_DSL_TTDKI_FIN_FLG = "svc_dsl_ttdki_fin_flg";
	/** サービスキャンセル取消年月日 */
	public static final String SVC_CANCEL_CL_YMD = "svc_cancel_cl_ymd";
	/** サービス解約取消年月日 */
	public static final String SVC_DSL_CL_YMD = "svc_dsl_cl_ymd";
	/** 課金開始年月日補正有無 */
	public static final String CHRG_STA_YMD_HOSEI_UM = "chrg_sta_ymd_hosei_um";
	/** 審査結果送信コード */
	public static final String SKEKKA_SEND_CD = "skekka_send_cd";
	/** 違約金発生コード */
	public static final String PNLTY_HASSEI_CD = "pnlty_hassei_cd";
	/** 照査解約完了コード */
	public static final String SHOSA_DSL_FIN_CD = "shosa_dsl_fin_cd";
	/** 契約締結年月日 */
	public static final String KEI_CNC_YMD = "kei_cnc_ymd";
	/** 割引登録契機コード */
	public static final String WRIB_ADD_OPTY_CD = "wrib_add_opty_cd";
	
	////////// データ抽出項目設定 //////////
	/** データ抽出項目設定番号 */
	public static final String DCHSKMST_NO = "dchskmst_no";
	/** データ抽出項目設定ステータス */
	public static final String DCHSKMST_STAT = "dchskmst_stat";
	/** データ抽出項目設定完了種別コード */
	public static final String DCHSKMST_FIN_SBT_CD = "dchskmst_fin_sbt_cd";
	/** 抽出回数 */
	public static final String CHSHT_CNT = "chsht_cnt";
	/** データ抽出項目設定年月日 */
	public static final String DCHSKMST_YMD = "dchskmst_ymd";
	/** データ抽出項目設定開始年月日 */
	public static final String DCHSKMST_STA_YMD = "dchskmst_sta_ymd";
	/** データ抽出項目設定終了年月日 */
	public static final String DCHSKMST_END_YMD = "dchskmst_end_ymd";
	/** データ抽出項目設定登録契機コード */
	public static final String DCHSKMST_ADD_OPTY_CD = "dchskmst_add_opty_cd";
	
	////////// 割引サービス契約・データ抽出項目設定共通 //////////
	/** 即時適用フラグ */
	public static final String APLY_JUN = "aply_jun";
	/** グループコード */
	public static final String GRP_CD = "grp_cd";
	/** 紹介コード */
	public static final String INTR_CD = "intr_cd";
	
	////////// 割引サービス対象契約 //////////
	/** 割引サービス対象契約番号 */
	public static final String WRIB_SVC_TRGT_KEI_NO = "wrib_svc_trgt_kei_no";
	/** 割引サービス対象契約適用開始年月日 */
	public static final String WRISVC_TG_KEI_TSTAYMD = "wrisvc_tg_kei_tstaymd";
	/** 割引サービス対象契約適用終了年月日 */
	public static final String WRISVC_TG_KEI_TENDYMD = "wrisvc_tg_kei_tendymd";
	
	////////// データ抽出項目設定対象契約 //////////
	/** データ抽出項目設定対象契約番号 */
	public static final String DCHSKMST_TG_KEI_NO = "dchskmst_tg_kei_no";
	/** データ抽出項目設定対象契約適用開始年月日 */
	public static final String DCHSKMST_TG_KEI_TSTAYMD = "dchskmst_tg_kei_tstaymd";
	/** データ抽出項目設定対象契約適用終了年月日 */
	public static final String DCHSKMST_TG_KEI_TENDYMD = "dchskmst_tg_kei_tendymd";
	
	////////// 割引サービス対象契約・データ抽出項目設定対象契約共通 //////////
	/** 対象契約識別コード */
	public static final String TG_KEI_SKBT_CD = "tg_kei_skbt_cd";
	/** 解除年月日 */
	public static final String RLS_YMD = "rls_ymd";
	/** 設定登録年月日 */
	public static final String SET_ADD_YMD = "set_add_ymd";
	
	/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
	////////// 割引サービス適用条件 //////////
	/** 割引サービス適用条件種別コード **/
	public static final String WRSV_APLY_JKN_SBT_CD = "wrsv_aply_jkn_sbt_cd";
	/** 割引サービス適用条件番号 **/
	public static final String WRSV_APLY_JKN_NO = "wrsv_aply_jkn_no";
	/** 割引サービス適用条件値1 **/
	public static final String WRSV_APLY_JKN_VALUE_1 = "wrsv_aply_jkn_value_1";
	/** 割引サービス適用条件値2 **/
	public static final String WRSV_APLY_JKN_VALUE_2 = "wrsv_aply_jkn_value_2";
	/** 割引サービス適用条件値3 **/
	public static final String WRSV_APLY_JKN_VALUE_3 = "wrsv_aply_jkn_value_3";
	/** 割引サービス適用条件値4 **/
	public static final String WRSV_APLY_JKN_VALUE_4 = "wrsv_aply_jkn_value_4";
	/** 割引サービス適用条件値5 **/
	public static final String WRSV_APLY_JKN_VALUE_5 = "wrsv_aply_jkn_value_5";
	/** データ抽出項目設定条件種別コード **/
	public static final String DCHSKM_SETE_JKN_SBT_CD = "dchskm_sete_jkn_sbt_cd";
	/** データ抽出項目設定条件番号 **/
	public static final String DCHSKM_SETE_JKN_NO = "dchskm_sete_jkn_no";
	/** データ抽出項目設定条件値1 **/
	public static final String DCHSKM_SETE_JKN_VALUE_1 = "dchskm_sete_jkn_value_1";
	/** データ抽出項目設定条件値2 **/
	public static final String DCHSKM_SETE_JKN_VALUE_2 = "dchskm_sete_jkn_value_2";
	/** データ抽出項目設定条件値3 **/
	public static final String DCHSKM_SETE_JKN_VALUE_3 = "dchskm_sete_jkn_value_3";
	/** データ抽出項目設定条件値4 **/
	public static final String DCHSKM_SETE_JKN_VALUE_4 = "dchskm_sete_jkn_value_4";
	/** データ抽出項目設定条件値5 **/
	public static final String DCHSKM_SETE_JKN_VALUE_5 = "dchskm_sete_jkn_value_5";
	/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
	
	
	/** 割引サービス／データ抽出項目識別フラグ */
	public static final String WRIB_DCHS_SKBT_FLAG = "wrib_dchs_skbt_flag";
	
	/*
	 * 相関チェック結果
	 */
	/** 1件目が2件目に対し優先 */
	private static final String SOKAN_RSLT_1_GT_2 = "00";
	/** 1件目が2件目に対し劣後 */
	private static final String SOKAN_RSLT_1_LT_2 = "01";
	/** 1件目が2件目に対し同格 */
	private static final String SOKAN_RSLT_1_EQ_2 = "02";
	
	/** 割引相関チェック 割引サービスコード 対 割引サービスコード */
	public static final String W_SVCCD_VS_W_SVCCD   = "00";
	/** 割引相関チェック 割引サービスコード 対 割引タイプコード */
	public static final String W_SVCCD_VS_W_TYPECD  = "01";
	/** 割引相関チェック 割引サービスコード 対 データ抽出項目コード */
	public static final String W_SVCCD_VS_D_SVCCD   = "02";
	/** 割引相関チェック 割引サービスコード 対 データ抽出タイプコード */
	public static final String W_SVCCD_VS_D_TYPECD  = "03";
	/** 割引相関チェック 割引タイプコード 対 割引サービスコード */
	public static final String W_TYPECD_VS_W_SVCCD  = "04";
	/** 割引相関チェック 割引タイプコード 対 割引タイプコード */
	public static final String W_TYPECD_VS_W_TYPECD = "05";
	/** 割引相関チェック 割引タイプコード 対 データ抽出項目コード */
	public static final String W_TYPECD_VS_D_SVCCD  = "06";
	/** 割引相関チェック 割引タイプコード 対 データ抽出タイプコード */
	public static final String W_TYPECD_VS_D_TYPECD = "07";
	/** 割引相関チェック データ抽出項目コード 対 割引サービスコード */
	public static final String D_SVCCD_VS_W_SVCCD   = "08";
	/** 割引相関チェック データ抽出項目コード 対 割引タイプコード */
	public static final String D_SVCCD_VS_W_TYPECD  = "09";
	/** 割引相関チェック データ抽出項目コード 対 データ抽出項目コード */
	public static final String D_SVCCD_VS_D_SVCCD   = "10";
	/** 割引相関チェック データ抽出項目コード 対 データ抽出タイプコード */
	public static final String D_SVCCD_VS_D_TYPECD  = "11";
	/** 割引相関チェック データ抽出タイプコード 対 割引サービスコード */
	public static final String D_TYPECD_VS_W_SVCCD  = "12";
	/** 割引相関チェック データ抽出タイプコード 対 割引タイプコード */
	public static final String D_TYPECD_VS_W_TYPECD = "13";
	/** 割引相関チェック データ抽出タイプコード 対 データ抽出項目コード */
	public static final String D_TYPECD_VS_D_SVCCD  = "14";
	/** 割引相関チェック データ抽出タイプコード 対 データ抽出タイプコード */
	public static final String D_TYPECD_VS_D_TYPECD = "15";
	
	/** 割引相関チェック（割引サービスコード 対 ・・・）*/
	private static final String[] W_SVCCD_VS_LIST = {
		W_SVCCD_VS_W_SVCCD, W_SVCCD_VS_W_TYPECD, W_SVCCD_VS_D_SVCCD, W_SVCCD_VS_D_TYPECD
	};
	/** 割引相関チェック（割引タイプコード 対 ・・・）*/
	private static final String[] W_TYPECD_VS_LIST = {
		W_TYPECD_VS_W_SVCCD, W_TYPECD_VS_W_TYPECD, W_TYPECD_VS_D_SVCCD, W_TYPECD_VS_D_TYPECD
	};
	/** 割引相関チェック（データ抽出項目コード 対 ・・・）*/
	private static final String[] D_SVCCD_VS_LIST = {
		D_SVCCD_VS_W_SVCCD, D_SVCCD_VS_W_TYPECD, D_SVCCD_VS_D_SVCCD, D_SVCCD_VS_D_TYPECD
	};
	/** 割引相関チェック（データ抽出タイプコード 対 ・・・）*/
	private static final String[] D_TYPECD_VS_LIST = {
		D_TYPECD_VS_W_SVCCD, D_TYPECD_VS_W_TYPECD, D_TYPECD_VS_D_SVCCD, D_TYPECD_VS_D_TYPECD
	};
	
	/** 割引サービスコード1 */
	private static final String WRIB_SVC_CD_1 = "wrib_svc_cd_1";
	/** 割引タイプコード1 */
	private static final String WRIB_TYPE_CD_1 = "wrib_type_cd_1";
	/** 割引サービスコード2 */
	private static final String WRIB_SVC_CD_2 = "wrib_svc_cd_2";
	/** 割引タイプコード2 */
	private static final String WRIB_TYPE_CD_2 = "wrib_type_cd_2";
	/** データ抽出項目コード1 */
	private static final String DCHSKM_CD_1 = "dchskm_cd_1";
	/** データ抽出タイプコード1 */
	private static final String DCHS_TYPE_CD_1 = "dchs_type_cd_1";
	/** データ抽出項目コード2 */
	private static final String DCHSKM_CD_2 = "dchskm_cd_2";
	/** データ抽出タイプコード2 */
	private static final String DCHS_TYPE_CD_2 = "dchs_type_cd_2";
	/** 相関チェック結果コード */
	private static final String SOKAN_CKRLT_CD = "sokan_ckrlt_cd";
	/** 割引相関チェック条件種別コード */
	private static final String WRIB_SOKAN_CKJK_SBT_CD = "wrib_sokan_ckjk_sbt_cd";
	
	/**
	 * 更新年月日時分秒（割引サービス契約）
	 */
	private static final String UPD_DTM_WRIB_SVC_KEI = "upd_dtm_wrib_svc_kei";
	

	/**
	 * 割引サービス契約グループリスト（データ抽出項目設定グループリスト）を作成します。<BR>
	 * 
	 * @param apiMap 作業領域
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<HashMap<String, Object>> makeWribsvkDchskmstGrpList(HashMap<String, Object> apiMap,
			String wribDchsSkbtFlag) throws Throwable
	{
		// 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList
				= (ArrayList<HashMap<String, Object>>)getMapData(apiMap, WRIB_SVC_KEI_GRP_LIST, DCHSKMST_GRP_LIST, wribDchsSkbtFlag);
		
		if (wribsvkDchskmstGrpList == null)
		{
			wribsvkDchskmstGrpList = new ArrayList<HashMap<String, Object>>();
			setMapData(apiMap, WRIB_SVC_KEI_GRP_LIST, DCHSKMST_GRP_LIST, wribDchsSkbtFlag, wribsvkDchskmstGrpList);
		}
		else
		{
			wribsvkDchskmstGrpList.clear();
		}
		
		/* --------------------------------------------------------------------------------
		 * 割引サービス契約の「グループ区分」ごとに、割引サービス契約リスト作成
		 * -------------------------------------------------------------------------------- */
		// 割引サービス契約／データ抽出項目設定グループ区分
		String[] wribSvcKeiGrpDivList = {
				WRIBSVK_DCHSKMST_GRP_SHOKAI,
				WRIBSVK_DCHSKMST_GRP_SET,
				WRIBSVK_DCHSKMST_GRP_RLS,
		};
		
		HashMap<String, Object> mapWribsvkDchskmstGrp = null;
		for (String wribSvcKeiGrpDiv : wribSvcKeiGrpDivList)
		{
			// 割引サービス契約グループ（データ抽出項目設定グループ）
			mapWribsvkDchskmstGrp = new HashMap<String, Object>();
			
			// 割引サービス契約グループ（データ抽出項目設定グループ）.グループ区分
			mapWribsvkDchskmstGrp.put(GRP_DIV, wribSvcKeiGrpDiv);
			
			// 割引サービス契約グループ.割引サービス契約リスト（データ抽出項目設定グループ.データ抽出項目設定リスト）
			setMapData(mapWribsvkDchskmstGrp, WRIB_SVC_KEI_LIST, DCHSKMST_LIST, wribDchsSkbtFlag,
					new ArrayList<HashMap<String, Object>>());
			
			wribsvkDchskmstGrpList.add(mapWribsvkDchskmstGrp);
		}
		
		return wribsvkDchskmstGrpList;
	}
	
	/**
	 * 自動適用対象の割引サービスリスト（データ抽出項目リスト）<code>wrisvcDchskmList</code>をもとに、
	 * 割引サービス契約リスト（データ抽出項目設定リスト）の作成を行います。<BR>
	 * 
	 * @param wrisvcDchskmList 割引サービスリスト（データ抽出項目リスト）
	 * @param wribsvkDchskmstListForSet 設定データ用・割引サービス契約リスト（データ抽出項目設定リスト）
	 * @param opeDate 運用日付
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return ArrayList<HashMap<String, Object>> 割引サービス契約リスト（データ抽出項目設定リスト）
	 * @throws Throwable
	 */
	public static ArrayList<HashMap<String, Object>> makeWribsvkDchskmstListForSet(
			ArrayList<HashMap<String, Object>> wrisvcDchskmList, ArrayList<HashMap<String, Object>> wribsvkDchskmstListForSet,
			String opeDate, String wribDchsSkbtFlag) throws Throwable
	{
		/* --------------------------------------------------------------------------------
		 * 割引サービス契約リスト（データ抽出項目設定リスト）作成ループ
		 * 【割引サービス（データ抽出項目）単位】処理
		 * -------------------------------------------------------------------------------- */
		for (HashMap<String, Object> mapWrisvcDchskm : wrisvcDchskmList)
		{
			// 割引サービス契約マップ（データ抽出項目設定マップ）作成
			HashMap<String, Object> mapWribsvkDchskmst = makeWribsvkDchskmstMapForSet(mapWrisvcDchskm, opeDate, wribDchsSkbtFlag);
			wribsvkDchskmstListForSet.add(mapWribsvkDchskmst);
		}
		
		return wribsvkDchskmstListForSet;
	}
	
	/**
	 * 自動適用対象の割引サービスマップ（データ抽出項目マップ）<code>inMapWrisvcDchskm</code>をもとに、
	 * 割引サービス契約マップ（データ抽出項目設定マップ）の作成を行います。<BR>
	 * 
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param opeDate 運用日付
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return HashMap<String, Object> 割引サービス対象契約マップ（データ抽出項目設定対象契約マップ）
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private static HashMap<String, Object> makeWribsvkDchskmstMapForSet(
			HashMap<String, Object> inMapWrisvcDchskm, String opeDate, String wribDchsSkbtFlag) throws Throwable
	{
		// 割引サービス契約マップ（データ抽出項目設定マップ）
		HashMap<String, Object> mapWribsvkDchskmst = new HashMap<String, Object>();
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
			// 割引サービス.割引種別コード → 割引サービス契約.割引種別コード
//			mapWribsvkDchskmst.put(WRIB_SBT_CD, (String)inMapWrisvcDchskm.get(WRIB_SBT_CD));
			/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
			
			// 割引サービス.割引サービスコード → 割引サービス契約.割引サービスコード
			mapWribsvkDchskmst.put(WRIB_SVC_CD, (String)inMapWrisvcDchskm.get(WRIB_SVC_CD));
			
			/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
			// 割引サービス.割引サービス名 → 割引サービス契約.割引サービス名
			mapWribsvkDchskmst.put(WRIB_SVC_NM, (String)inMapWrisvcDchskm.get(WRIB_SVC_NM));
			
			// 割引サービス.割引タイプコード → 割引サービス契約.割引タイプコード
			mapWribsvkDchskmst.put(WRIB_TYPE_CD, (String)inMapWrisvcDchskm.get(WRIB_TYPE_CD));
			
			// 割引サービス契約番号 → 割引サービス契約.割引サービス契約番号
			mapWribsvkDchskmst.put(WRIB_SVC_KEI_NO, (String)inMapWrisvcDchskm.get(WRIB_SVC_KEI_NO));
			
			// 申込明細番号 → 割引サービス契約.申込明細番号
			mapWribsvkDchskmst.put(MSKM_DTL_NO, (String)inMapWrisvcDchskm.get(MSKM_DTL_NO));
			
			// 更新年月日時分秒（割引サービス契約） → 割引サービス契約.更新年月日時分秒（割引サービス契約）
			mapWribsvkDchskmst.put(UPD_DTM_WRIB_SVC_KEI, (String)inMapWrisvcDchskm.get(UPD_DTM_WRIB_SVC_KEI));
			/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
			
			// 割引サービス.割引タイプコード
			String wribTypeCd = (String)inMapWrisvcDchskm.get(WRIB_TYPE_CD);
			
			// 暫定で割引タイプコードが「ファミリーパック割引」のときに料金コースを決め打ちで設定
			// 「ファミリーパック割引」の場合
			if (WRIB_TYPE_CD_FP_WRIB.equals(wribTypeCd))
			{
				// 割引サービス契約.料金コースコード
				mapWribsvkDchskmst.put(PCRS_CD, PCRS_CD_FP);
				
				// 割引サービス契約.料金プランコード
				mapWribsvkDchskmst.put(PPLAN_CD, PPLAN_CD_FP);
			}
			else
			{
				// 割引サービス契約.料金コースコード
				mapWribsvkDchskmst.put(PCRS_CD, null);
				
				// 割引サービス契約.料金プランコード
				mapWribsvkDchskmst.put(PPLAN_CD, null);
			}
			
			// 割引サービス.割引優先順位型コード → 割引サービス契約.割引優先順位型コード
			mapWribsvkDchskmst.put(YUSEN_JUN_MDL_CD, (String)inMapWrisvcDchskm.get(YUSEN_JUN_MDL_CD));
			
			// 割引サービス.割引優先順位種類コード → 割引サービス契約.割引優先順位種類コード
			mapWribsvkDchskmst.put(YUSEN_JUN_KIND_CD, (String)inMapWrisvcDchskm.get(YUSEN_JUN_KIND_CD));
			
			// 割引サービス.割引優先順位タイプコード → 割引サービス契約.割引優先順位タイプコード
			mapWribsvkDchskmst.put(YUSEN_JUN_TYPE_CD, (String)inMapWrisvcDchskm.get(YUSEN_JUN_TYPE_CD));
			
			// 割引サービス.割引優先順位タイプ順位 → 割引サービス契約.割引優先順位タイプ順位
			mapWribsvkDchskmst.put(YUSEN_JUN_TYPE_JUN, (String)inMapWrisvcDchskm.get(YUSEN_JUN_TYPE_JUN));
			
			// 割引サービス.割引サービス対象サービスリスト
			ArrayList<HashMap<String, Object>> wrisvcTgSvcList
					= (ArrayList<HashMap<String, Object>>)inMapWrisvcDchskm.get(WRISVC_TG_SVC_LIST);
			
			// 割引サービス対象契約リスト作成
			ArrayList<HashMap<String, Object>> wribsvkTgKeiList
					= makeWribsvkDchskmstTgKeiList(wrisvcTgSvcList, opeDate, wribDchsSkbtFlag);
			
			// 割引サービス対象契約リスト → 割引サービス契約.割引サービス対象契約リスト
			mapWribsvkDchskmst.put(WRISVC_TG_KEI_LIST, wribsvkTgKeiList);
			
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// データ抽出項目.データ抽出種別コード → データ抽出項目設定.データ抽出種別コード
			mapWribsvkDchskmst.put(DCHS_SBT_CD, (String)inMapWrisvcDchskm.get(DCHS_SBT_CD));
			
			// データ抽出項目.データ抽出項目コード → データ抽出項目設定.データ抽出項目コード
			mapWribsvkDchskmst.put(DCHSKM_CD, (String)inMapWrisvcDchskm.get(DCHSKM_CD));
			
			/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
			// データ抽出項目.データ抽出項目名 → データ抽出項目設定.データ抽出項目名
			mapWribsvkDchskmst.put(DCHSKM_NM, (String)inMapWrisvcDchskm.get(DCHSKM_NM));
			
			// データ抽出項目.データ抽出タイプコード → データ抽出項目設定.データ抽出タイプコード
			mapWribsvkDchskmst.put(DCHS_TYPE_CD, (String)inMapWrisvcDchskm.get(DCHS_TYPE_CD));
			/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
			
			/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//			// データ抽出項目.データ抽出優先順位型コード → データ抽出項目設定.データ抽出優先順位型コード
//			mapWribsvkDchskmst.put(DCHS_YUSEN_JUN_MDL_CD, (String)inMapWrisvcDchskm.get(DCHS_YUSEN_JUN_MDL_CD));
//			
//			// データ抽出項目.データ抽出優先順位種類コード → データ抽出項目設定.データ抽出優先順位種類コード
//			mapWribsvkDchskmst.put(DCHS_YUSEN_JUN_KIND_CD, (String)inMapWrisvcDchskm.get(DCHS_YUSEN_JUN_KIND_CD));
//			
//			// データ抽出項目.データ抽出優先順位タイプコード → データ抽出項目設定.データ抽出優先順位タイプコード
//			mapWribsvkDchskmst.put(DCHS_YUSEN_JUN_TYPE_CD, (String)inMapWrisvcDchskm.get(DCHS_YUSEN_JUN_TYPE_CD));
//			
//			// データ抽出項目.データ抽出優先順位タイプ順位 → データ抽出項目設定.データ抽出優先順位タイプ順位
//			mapWribsvkDchskmst.put(DCHS_YUSEN_JUN_TYPE_JUN, (String)inMapWrisvcDchskm.get(DCHS_YUSEN_JUN_TYPE_JUN));
			/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
			
			// データ抽出項目.データ抽出項目対象サービスリスト
			ArrayList<HashMap<String, Object>> dchskmTgSvcList
					= (ArrayList<HashMap<String, Object>>)inMapWrisvcDchskm.get(DCHSKM_TG_SVC_LIST);
			
			// データ抽出項目設定対象契約リスト作成
			ArrayList<HashMap<String, Object>> dchskmstTgKeiList
					= makeWribsvkDchskmstTgKeiList(dchskmTgSvcList, opeDate, wribDchsSkbtFlag);
			
			// データ抽出項目設定対象契約リスト → データ抽出項目設定.データ抽出項目設定対象契約リスト
			mapWribsvkDchskmst.put(DCHSKMST_TG_KEI_LIST, dchskmstTgKeiList);

			/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
			// データ抽出項目設定.データ抽出項目設定開始年月日を設定
			setStaymd(inMapWrisvcDchskm, mapWribsvkDchskmst, opeDate, wribDchsSkbtFlag);
			/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
		}
		
		// 即時適用フラグ（しない） → 割引サービス契約（データ抽出項目設定）.即時適用フラグ
		mapWribsvkDchskmst.put(APLY_JUN, APLY_JUN_OFF);
		
		/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//		// 割引サービス契約.サービス開始年月日、割引サービス契約.サービス課金開始年月日、
//		// データ抽出項目設定.データ抽出項目設定開始年月日を設定
//		setStaymd(inMapWrisvcDchskm, mapWribsvkDchskmst, opeDate, wribDchsSkbtFlag);
		/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
		
		return mapWribsvkDchskmst;
	}
	
	/**
	 * 自動適用対象の割引サービス対象サービスリスト（データ抽出項目対象サービスリスト）<code>wrisvcDchskmTgSvcList</code>をもとに、
	 * 割引サービス対象契約リスト（データ抽出項目設定対象契約リスト）を作成します。<BR>
	 * 
	 * @param wrisvcDchskmTgSvcList 割引サービス対象サービスリスト（データ抽出項目対象サービスリスト）
	 * @param opeDate 運用日付
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return ArrayList<HashMap<String, Object>> 割引サービス対象契約リスト（データ抽出項目設定対象契約リスト）
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private static ArrayList<HashMap<String, Object>> makeWribsvkDchskmstTgKeiList(
			ArrayList<HashMap<String, Object>> wrisvcDchskmTgSvcList, String opeDate, String wribDchsSkbtFlag) throws Throwable
	{
		// 割引サービス対象契約リスト（データ抽出項目設定対象契約リスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstTgKeiList = new ArrayList<HashMap<String, Object>>();
		
		/* --------------------------------------------------------------------------------
		 * 割引サービス対象契約リスト（データ抽出項目設定対象契約リスト）作成ループ
		 * 【割引サービス対象サービス（データ抽出項目対象サービス）単位】処理
		 * -------------------------------------------------------------------------------- */
		for (HashMap<String, Object> mapWrisvcDchskmTgSvc : wrisvcDchskmTgSvcList)
		{
			// 割引サービス対象サービス（データ抽出項目対象サービス）.対象契約サービス契約リスト
			ArrayList<HashMap<String, Object>> trgtKeiSvcKeiList
					= (ArrayList<HashMap<String, Object>>)mapWrisvcDchskmTgSvc.get(TRGT_KEI_SVC_KEI_LIST);
			
			// 割引サービス対象サービス.割引サービス対象サービスコード
			// （データ抽出項目対象サービス.データ抽出項目対象サービスコード）
			String trgtSvcCd = (String)getMapData(mapWrisvcDchskmTgSvc, WRIB_SVC_TRGT_SVC_CD, DCHSKM_TG_SVC_CD, wribDchsSkbtFlag);
			
			/* --------------------------------------------------------------------------------
			 * 割引サービス対象契約リスト（データ抽出項目設定対象契約リスト）作成ループ
			 * 【対象契約サービス契約単位】処理
			 * -------------------------------------------------------------------------------- */
			for (HashMap<String, Object> mapTrgtKeiSvcKei : trgtKeiSvcKeiList)
			{
				// 割引サービス対象契約マップ（データ抽出項目設定対象契約マップ）作成
				HashMap<String, Object> mapWrisvcTgKei
						= makeWribsvkDchskmstTgKeiMap(mapTrgtKeiSvcKei, trgtSvcCd, opeDate, wribDchsSkbtFlag);
				wribsvkDchskmstTgKeiList.add(mapWrisvcTgKei);
			}
		}
		
		return wribsvkDchskmstTgKeiList;
	}
	
	/**
	 * 自動適用対象の対象契約サービス契約マップ<code>inMapTgKeiSvcKei</code>をもとに、
	 * 割引サービス対象契約マップ（データ抽出項目設定対象契約マップ）を作成します。<BR>
	 * 
	 * @param inMapTgKeiSvcKei 対象契約サービス契約マップ
	 * @param trgtSvcCd 割引サービス対象サービスコード（データ抽出項目対象サービスコード）
	 * @param opeDate 運用日付
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return HashMap<String, Object> 割引サービス対象契約マップ（データ抽出項目設定対象契約マップ）
	 * @throws Throwable
	 */
	private static HashMap<String, Object> makeWribsvkDchskmstTgKeiMap(HashMap<String, Object> inMapTgKeiSvcKei,
			String trgtSvcCd, String opeDate, String wribDchsSkbtFlag) throws Throwable
	{
		/* --------------------------------------------------------------------------------
		 * 対象契約識別コードをもとにサービス契約番号を取得
		 * -------------------------------------------------------------------------------- */
		// 対象契約サービス契約.対象契約識別コード
		String tgKeiSkbtCd = (String)inMapTgKeiSvcKei.get(TG_KEI_SKBT_CD);
		
		// サービス契約番号
		String svcKeiNo = null;
		// サービス契約内訳番号
		String svcKeiUcwkNo = null;
		// オプションサービス契約番号
		String opSvcKeiNo = null;
		// サブオプションサービス契約番号
		String sbopSvcKeiNo = null;
		// 機器提供サービス契約番号
		String kktkSvcKeiNo = null;
		// 請求オプションサービス契約番号
		String seiopsvcKeiNo = null;
		// ANK-1578-00-00 add start
		// 機器オプションサービス契約番号
		String kkopsvcKeiNo = null;
		// ANK-1578-00-00 add end
		
		if (TG_KEI_SKBT_CD_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// 対象契約サービス契約.サービス契約番号
			svcKeiNo = (String)inMapTgKeiSvcKei.get(SVC_KEI_NO);
		}
		else if (TG_KEI_SKBT_CD_SVC_KEI_UCWK.equals(tgKeiSkbtCd))
		{
			// 対象契約サービス契約.サービス契約内訳番号
			svcKeiUcwkNo = (String)inMapTgKeiSvcKei.get(SVC_KEI_UCWK_NO);
		}
		else if (TG_KEI_SKBT_CD_OP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// 対象契約サービス契約.オプションサービス契約番号
			opSvcKeiNo = (String)inMapTgKeiSvcKei.get(OP_SVC_KEI_NO);
		}
		else if (TG_KEI_SKBT_CD_SBOP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
			// 対象契約サービス契約.オプションサービス契約番号
			opSvcKeiNo = (String)inMapTgKeiSvcKei.get(OP_SVC_KEI_NO);
			/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
			// 対象契約サービス契約.サブオプションサービス契約番号
			sbopSvcKeiNo = (String)inMapTgKeiSvcKei.get(SBOP_SVC_KEI_NO);
		}
		else if (TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// 対象契約サービス契約.機器提供サービス契約番号
			kktkSvcKeiNo = (String)inMapTgKeiSvcKei.get(KKTK_SVC_KEI_NO);
		}
		else if (TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(tgKeiSkbtCd))
		{
			// 対象契約サービス契約.請求オプションサービス契約番号
			seiopsvcKeiNo = (String)inMapTgKeiSvcKei.get(SEIOPSVC_KEI_NO);
		}
		// ANK-1578-00-00 add start
		else if (TG_KEI_SKBT_CD_KKOP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// 対象契約サービス契約.請求オプションサービス契約番号
			kkopsvcKeiNo = (String)inMapTgKeiSvcKei.get(KKOP_SVC_KEI_NO);
		}
		// ANK-1578-00-00 add end
		
		/* --------------------------------------------------------------------------------
		 * サービス契約番号を割引サービス対象契約リストに設定
		 * -------------------------------------------------------------------------------- */
		// 割引サービス対象契約（データ抽出項目設定対象契約）
		HashMap<String, Object> mapWribsvkDchskmstTgKei = new HashMap<String, Object>();
		
		// 対象契約識別コード → 割引サービス対象契約（データ抽出項目設定対象契約）.対象契約識別コード
		mapWribsvkDchskmstTgKei.put(TG_KEI_SKBT_CD, tgKeiSkbtCd);
		
		// サービス契約番号 → 割引サービス対象契約（データ抽出項目設定対象契約）.サービス契約番号
		mapWribsvkDchskmstTgKei.put(SVC_KEI_NO, svcKeiNo);
		
		// サービス契約内訳番号 → 割引サービス対象契約（データ抽出項目設定対象契約）.サービス契約内訳番号
		mapWribsvkDchskmstTgKei.put(SVC_KEI_UCWK_NO, svcKeiUcwkNo);
		
		// オプションサービス契約番号 → 割引サービス対象契約（データ抽出項目設定対象契約）.オプションサービス契約番号
		mapWribsvkDchskmstTgKei.put(OP_SVC_KEI_NO, opSvcKeiNo);
		
		// サブオプションサービス契約番号 → 割引サービス対象契約（データ抽出項目設定対象契約）.サブオプションサービス契約番号
		mapWribsvkDchskmstTgKei.put(SBOP_SVC_KEI_NO, sbopSvcKeiNo);
		
		// 機器提供サービス契約番号 → 割引サービス対象契約（データ抽出項目設定対象契約）.機器提供サービス契約番号
		mapWribsvkDchskmstTgKei.put(KKTK_SVC_KEI_NO, kktkSvcKeiNo);
		
		// 請求オプションサービス契約番号 → 割引サービス対象契約（データ抽出項目設定対象契約）.請求オプションサービス契約番号
		mapWribsvkDchskmstTgKei.put(SEIOPSVC_KEI_NO, seiopsvcKeiNo);
		
		// ANK-1578-00-00 add start
		// 機器オプションサービス契約番号 → 割引サービス対象契約（データ抽出項目設定対象契約）.機器オプションサービス契約番号
		mapWribsvkDchskmstTgKei.put(KKOP_SVC_KEI_NO, kkopsvcKeiNo);
		// ANK-1578-00-00 add end
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 入力パラメータ.割引サービス対象サービスコード → 割引サービス対象契約.割引サービス対象サービスコード
			mapWribsvkDchskmstTgKei.put(WRIB_SVC_TRGT_SVC_CD, trgtSvcCd);
		}
		
		// 運用日付 → 割引サービス対象契約（データ抽出項目設定対象契約）.設定登録年月日
		mapWribsvkDchskmstTgKei.put(SET_ADD_YMD, opeDate);
		
		// 運用日付
		//  → 割引サービス対象契約.割引サービス対象契約適用開始年月日（データ抽出項目設定対象契約.データ抽出項目設定対象契約適用開始年月日）
		setMapData(mapWribsvkDchskmstTgKei, WRISVC_TG_KEI_TSTAYMD, DCHSKMST_TG_KEI_TSTAYMD, wribDchsSkbtFlag, opeDate);
		
		// サービス終了年月日初期値
		//  → 割引サービス対象契約.割引サービス対象契約適用終了年月日（データ抽出項目設定対象契約.データ抽出項目設定対象契約適用終了年月日）
		setMapData(mapWribsvkDchskmstTgKei, WRISVC_TG_KEI_TENDYMD, DCHSKMST_TG_KEI_TENDYMD, wribDchsSkbtFlag, SVC_END_YMD_INIT);
		
		return mapWribsvkDchskmstTgKei;
	}
		
	/**
	 * 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）の作成を行います。<BR>
	 * 
	 * @param wribsvkDchskmstListForShokai 照会データ用・割引サービス契約リスト（データ抽出項目設定リスト）
	 * @param wribsvkDchskmstListForRls 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）
	 * @param opeDate 運用日付
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return ArrayList<HashMap<String, Object>> 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）
	 * @throws Throwable 
	 */
	public static ArrayList<HashMap<String, Object>> makeWribsvkDchskmstListForRls(
			ArrayList<HashMap<String, Object>> wribsvkDchskmstListForShokai,
			ArrayList<HashMap<String, Object>> wribsvkDchskmstListForRls,
			String opeDate, String wribDchsSkbtFlag) throws Throwable
	{
		/* ----------------------------------------------------------------------------------------------------
		 * 同時適用不可となった照会データ用・割引サービス契約（データ抽出項目設定）
		 *  → 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）設定
		 * ---------------------------------------------------------------------------------------------------- */
		// 適用不可と判定された割引サービス契約（データ抽出項目設定）を解除データに設定
		for (HashMap<String, Object> mapWribsvkDchskmst : wribsvkDchskmstListForShokai)
		{
			// 割引サービス契約（データ抽出項目設定）.適用可否
			String aplyKh = (String)mapWribsvkDchskmst.get(APLY_KH);
			if (KH_H.equals(aplyKh))
			{
				// 適用可否「否」：解除データ用・割引サービス（データ抽出項目）を作成する
				HashMap<String, Object> mapRlsWribsvkDchskmst = new HashMap<String, Object>(mapWribsvkDchskmst);
				
				// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
				if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
				{
					// 割引サービス契約.割引サービス契約ステータス
					String wribSvcKeiStat = (String)mapRlsWribsvkDchskmst.get(WRIB_SVC_KEI_STAT);
					
					// 割引サービス契約ステータス：「受付済」の場合
					if (WRIB_SVC_KEI_STAT_UK_ZM.equals(wribSvcKeiStat))
					{
						// サービスキャンセル理由コード（その他理由によるキャンセル）
						//  → 割引サービス契約.サービスキャンセル理由コード
						mapRlsWribsvkDchskmst.put(SVC_CANCEL_RSN_CD, SVC_CANCEL_RSN_CD_OTHER);
					}
					// 割引サービス契約ステータス：「サービス提供中」の場合
					if (WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(wribSvcKeiStat))
					{
						// サービス解約理由コード（通常解約）  → 割引サービス契約.サービス解約理由コード
						mapRlsWribsvkDchskmst.put(SVC_DLRE_CD, SVC_DLRE_CD_TUJYO_DSL);
						
						// 割引サービス契約.サービス終了年月日
						mapRlsWribsvkDchskmst.put(SVC_ENDYMD, opeDate);
						
						// 割引サービス契約.サービス課金終了年月日
						mapRlsWribsvkDchskmst.put(SVC_CHRG_ENDYMD, opeDate);
					}
				}
				// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
				else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
				{
					// データ抽出項目設定完了種別コード（適用済） → データ抽出項目設定.データ抽出項目設定完了種別コード
					mapRlsWribsvkDchskmst.put(DCHSKMST_FIN_SBT_CD, DCHSKMST_FIN_SBT_CD_APLY_ZM);
					
					// データ抽出項目設定.データ抽出項目設定終了年月日
					mapRlsWribsvkDchskmst.put(DCHSKMST_END_YMD, opeDate);
				}
				
				wribsvkDchskmstListForRls.add(mapRlsWribsvkDchskmst);
			}
		}
		
		return wribsvkDchskmstListForRls;
	}
	
	/**
	 * 割引サービス契約.サービス開始年月日、割引サービス契約.サービス課金開始年月日、
	 * データ抽出項目設定.データ抽出項目設定開始年月日を設定します。<BR>
	 * 
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
	 * @param opeDate 運用日付
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @throws Exception
	 */
	private static void setStaymd(HashMap<String, Object> inMapWrisvcDchskm,
			HashMap<String, Object> inMapWribsvkDchskmst, String opeDate, String wribDchsSkbtFlag) throws Exception
	{
		// 割引サービス.割引サービス対象サービス.対象契約サービス契約（データ抽出項目.データ抽出項目対象サービス.対象契約サービス契約）のうち、
		// 最も遅いサービス開始年月日[0]、サービス課金開始年月日[1]取得
		String[] lastSvcStaYmd = getLastSvcStaYmd(inMapWrisvcDchskm, opeDate, wribDchsSkbtFlag);
		
		// 割引サービス契約.割引サービス対象契約（データ抽出項目設定.データ抽出項目設定対象契約）のうち、
		// 最も遅い割引サービス対象契約適用開始年月日（データ抽出項目設定対象契約適用開始年月日）
		String lastTgKeiTstaYmd = getLastTgKeiTstaYmd(inMapWribsvkDchskmst, opeDate, wribDchsSkbtFlag);
		
		// 割引サービス契約.サービス課金開始年月日（データ抽出項目設定.データ抽出項目設定開始年月日）算出用の基準年月日選定
		String stdardymd = selectStdardymd(inMapWrisvcDchskm, inMapWribsvkDchskmst,
				lastSvcStaYmd, lastTgKeiTstaYmd, opeDate, wribDchsSkbtFlag);
		
		// 割引サービス契約.サービス課金開始年月日（データ抽出項目設定.データ抽出項目設定開始年月日）算出
		String svcChrgStaymd = calcSvcChrgStaymd(inMapWrisvcDchskm, stdardymd);
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			String svcStaYmd = null;
			if (lastSvcStaYmd != null)
			{
				svcStaYmd = lastSvcStaYmd[0];
			}
			
			// 割引サービス契約.サービス開始年月日
			inMapWribsvkDchskmst.put(SVC_STA_YMD, svcStaYmd);
			
			// 割引サービス契約.サービス課金開始年月日
			inMapWribsvkDchskmst.put(SVC_CHRG_STAYMD, svcChrgStaymd);
			
			// 割引サービス契約.サービス終了年月日
			inMapWribsvkDchskmst.put(SVC_ENDYMD, calcEndYmd(inMapWrisvcDchskm, svcStaYmd));
			
			// 割引サービス契約.サービス課金終了年月日
			inMapWribsvkDchskmst.put(SVC_CHRG_ENDYMD, calcEndYmd(inMapWrisvcDchskm, svcChrgStaymd));
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// データ抽出項目設定.データ抽出項目設定開始年月日
			inMapWribsvkDchskmst.put(DCHSKMST_STA_YMD, svcChrgStaymd);
			
			// データ抽出項目設定.データ抽出項目設定終了年月日
			inMapWribsvkDchskmst.put(DCHSKMST_END_YMD, calcEndYmd(inMapWrisvcDchskm, svcChrgStaymd));
		}
		else
		{
			throw new Exception(WRIB_DCHS_SKBT_FLAG_EXPTN_MSG);
		}
		
		return;
	}
	
	/**
	 * 割引サービス（データ抽出項目）<code>inMapWrisvcDchskm</code>に設定されている適用数判別コード、適用数を用いて、
	 * 開始年月日<code>staYmd</code>から終了年月日を算出します。<BR>
	 * 
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param staYmd 開始年月日
	 * 
	 * @return 終了年月日
	 * @throws Exception
	 */
	private static String calcEndYmd(HashMap<String, Object> inMapWrisvcDchskm, String staYmd) throws Exception
	{
		if (staYmd == null || BLANK.equals(staYmd))
		{
			return null;
		}
		
		// 割引サービス（データ抽出項目）.適用数判別コード
		String aplyCntHambetCd = (String)inMapWrisvcDchskm.get(APLY_CNT_HAMBET_CD);
		
		// 割引サービス（データ抽出項目）.適用数
		String aplyCnt = (String)inMapWrisvcDchskm.get(APLY_CNT);
		// 適用数はNOT NULL制約が付いていないが、NULLの場合は０とする
		int aplyCntVal = 0;
		if (!(aplyCnt == null || BLANK.equals(aplyCnt)))
		{
			aplyCntVal = Integer.parseInt(aplyCnt);
		}
		
		// 終了年月日
		String endYmd = null;
		
		// 適用数判別コード「制限無し」、「回数」の場合
		if (APLY_CNT_HAMBET_CD_LMT_NON.equals(aplyCntHambetCd) || APLY_CNT_HAMBET_CD_CNT.equals(aplyCntHambetCd))
		{
			// デフォルト値を設定
			endYmd = SVC_END_YMD_INIT;
		}
		// 適用数判別コード「月数」の場合
		else if (APLY_CNT_HAMBET_CD_MON_CNT.equals(aplyCntHambetCd))
		{
			// 終了年月日 = 開始年月日 + 適用数（月）
			endYmd = JPCDateUtil.addMonth(staYmd, aplyCntVal);
		}
		// 適用数判別コード「日数」の場合、サービス開始年月日、サービス課金開始年月日に適用数（日）を加算した日付を設定
		else if (APLY_CNT_HAMBET_CD_DAY_CNT.equals(aplyCntHambetCd))
		{
			// 終了年月日 = 開始年月日 + 適用数（日）
			endYmd = JPCDateUtil.addDay(staYmd, aplyCntVal);
		}
		else
		{
			throw new Exception(APLY_CNT_HAMBET_CD_EXPTN_MSG);
		}
		
		return endYmd;
	}
	
	/**
	 * 割引サービスマップ（データ抽出項目マップ）<code>inMapWrisvcDchskm</code>に紐づく、
	 * 全ての対象契約サービス契約のうち、最も遅いサービス開始年月日、サービス課金開始年月日をそれぞれ抽出します。
	 * 
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param opeDate 運用日付
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return String[] 対象契約サービス契約のうち、最も遅いサービス開始年月日[0]、サービス課金開始年月日[1]
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private static String[] getLastSvcStaYmd(HashMap<String, Object> inMapWrisvcDchskm,
			String opeDate, String wribDchsSkbtFlag) throws Exception
	{
		// 割引サービス.割引サービス対象サービスリスト（データ抽出項目.データ抽出項目対象サービスリスト）
		ArrayList<HashMap<String, Object>> wrisvcDchskmTgSvcList
				= (ArrayList<HashMap<String, Object>>)getMapData(inMapWrisvcDchskm,
						WRISVC_TG_SVC_LIST, DCHSKM_TG_SVC_LIST, wribDchsSkbtFlag);
		
		/* --------------------------------------------------------------------------------
		 * 最も遅いサービス開始年月日、サービス課金開始年月日の抽出ループ
		 * 【割引サービス対象サービス（データ抽出項目対象サービス）単位】処理
		 * -------------------------------------------------------------------------------- */
		String[] lastSvcStaYmd = {SVC_STA_YMD_INIT, SVC_STA_YMD_INIT};
		
		for (HashMap<String, Object> mapWrisvcDchskmTgSvc : wrisvcDchskmTgSvcList)
		{
			// 割引サービス対象サービス（データ抽出項目対象サービス）.対象契約サービス契約リスト
			ArrayList<HashMap<String, Object>> trgtKeiSvcKeiList
					= (ArrayList<HashMap<String, Object>>)mapWrisvcDchskmTgSvc.get(TRGT_KEI_SVC_KEI_LIST);
			
			/* --------------------------------------------------------------------------------
			 * 最も遅いサービス開始年月日、サービス課金開始年月日の抽出ループ
			 * 【対象契約サービス契約単位】処理
			 * -------------------------------------------------------------------------------- */
			for (HashMap<String, Object> mapSvcKei : trgtKeiSvcKeiList)
			{
				// サービス開始判定
				String judgeRslt = judgeSvcKeiSta(mapSvcKei);
				
				// サービス開始前の契約が１つでもある場合、開始年月日の算出は不可能
				if (SVC_STA_FLG_BF.equals(judgeRslt))
				{
					return null;
				}
				// サービス開始後の場合
				else if (SVC_STA_FLG_AF.equals(judgeRslt))
				{
					// 割引サービス対象サービス（データ抽出項目対象サービス）.対象契約サービス契約.サービス開始年月日
					String svcStaYmd = (String)mapSvcKei.get(SVC_STA_YMD);
					if (svcStaYmd == null || BLANK.equals(svcStaYmd))
					{
						throw new Exception("サービス開始後にも関わらず、サービス開始日が未設定です");
					}
					if (svcStaYmd.compareTo(lastSvcStaYmd[0]) > 0)
					{
						// 最も遅いサービス開始年月日を更新
						lastSvcStaYmd[0] = svcStaYmd;
					}
					
					// 割引サービス対象サービス（データ抽出項目対象サービス）.対象契約サービス契約.サービス課金開始年月日
					String svcChrgStaymd = (String)mapSvcKei.get(SVC_CHRG_STAYMD);
					if (svcChrgStaymd == null || BLANK.equals(svcChrgStaymd))
					{
						throw new Exception("サービス開始後にも関わらず、サービス課金開始日が未設定です");
					}
					if (svcChrgStaymd.compareTo(lastSvcStaYmd[1]) > 0)
					{
						// 最も遅いサービス課金開始年月日を更新
						lastSvcStaYmd[1] = svcChrgStaymd;
					}
				}
			}
		}
		
		// 最も遅いサービス開始年月日が運用日付より未来日の場合
		// 【最も遅いサービス開始年月日 > 運用日付】
		if (lastSvcStaYmd[0].compareTo(opeDate) > 0)
		{
			return null;
		}
		
		return lastSvcStaYmd;
	}
	
	/**
	 * 割引サービス契約マップ（データ抽出項目設定マップ）<code>inMapWribsvkDchskmst</code>に紐づく、
	 * 全ての割引サービス対象契約（データ抽出項目設定対象契約）のうち、
	 * 最も遅い割引サービス対象契約適用開始年月日（データ抽出項目設定対象契約適用開始年月日）を抽出します。
	 * 
	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
	 * @param opeDate 運用日付
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return String 割引サービス対象契約（データ抽出項目設定対象契約）のうち、
	 * 最も遅い割引サービス対象契約適用開始年月日（データ抽出項目設定対象契約適用開始年月日）
	 */
	@SuppressWarnings("unchecked")
	private static String getLastTgKeiTstaYmd(HashMap<String, Object> inMapWribsvkDchskmst,
			String opeDate, String wribDchsSkbtFlag)
	{
		// 割引サービス契約.割引サービス対象契約リスト（データ抽出項目設定.データ抽出項目設定対象契約リスト）
		ArrayList<HashMap<String, Object>> wrisvcDchskmTgKeiList
				= (ArrayList<HashMap<String, Object>>)getMapData(inMapWribsvkDchskmst,
						WRISVC_TG_KEI_LIST, DCHSKMST_TG_KEI_LIST, wribDchsSkbtFlag);
		
		/* --------------------------------------------------------------------------------
		 * 最も遅い割引サービス対象契約適用開始年月日（データ抽出項目設定対象契約適用開始年月日）の抽出ループ
		 * 【割引サービス対象契約（データ抽出項目設定対象契約）単位】処理
		 * -------------------------------------------------------------------------------- */
		String lastTgKeiTstaYmd = SVC_STA_YMD_INIT;
		
		for (HashMap<String, Object> mapWrisvcDchskmTgKei : wrisvcDchskmTgKeiList)
		{
			// 割引サービス契約.割引サービス対象契約.割引サービス対象契約適用開始年月日
			// （データ抽出項目設定.データ抽出項目設定対象契約.データ抽出項目設定対象契約適用開始年月日）
			String wrisvcDchskmTgKeiTstaYmd = (String)getMapData(mapWrisvcDchskmTgKei,
					WRISVC_TG_KEI_TSTAYMD, DCHSKMST_TG_KEI_TSTAYMD, wribDchsSkbtFlag);
			
			if (wrisvcDchskmTgKeiTstaYmd.compareTo(lastTgKeiTstaYmd) > 0)
			{
				// 最も遅い割引サービス対象契約適用開始年月日（データ抽出項目設定対象契約適用開始年月日）を更新
				lastTgKeiTstaYmd = wrisvcDchskmTgKeiTstaYmd;
			}
		}
		
		// 最も遅い割引サービス対象契約適用開始年月日（データ抽出項目設定対象契約適用開始年月日）が運用日付より未来日の場合
		// 【最も遅い割引サービス対象契約適用開始年月日（データ抽出項目設定対象契約適用開始年月日） > 運用日付】
		if (lastTgKeiTstaYmd.compareTo(opeDate) > 0)
		{
			return null;
		}
		
		return null;
	}
	
	/**
	 * 割引サービスマップ（データ抽出項目マップ）<code>inMapWrisvcDchskm</code>の
	 * キャンペーン開始コード（データ抽出項目開始コード）により、
	 * 割引サービス契約.サービス課金開始年月日（データ抽出項目設定.データ抽出項目設定開始年月日）を算出するための
	 * 基準年月日を選定します。
	 * 
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
	 * @param lastSvcStaYmd 対象契約サービス契約のうち、最も遅いサービス開始年月日[0]、サービス課金開始年月日[1]
	 * @param lastTgKeiTstaYmd 割引サービス対象契約（データ抽出項目設定対象契約）のうち、
	 * 最も遅い割引サービス対象契約適用開始年月日（データ抽出項目設定対象契約適用開始年月日）
	 * @param opeDate 運用日付
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return String 基準年月日
	 * @throws Exception
	 */
	private static String selectStdardymd(HashMap<String, Object> inMapWrisvcDchskm, HashMap<String, Object> inMapWribsvkDchskmst,
			String[] lastSvcStaYmd, String lastTgKeiTstaYmd, String opeDate, String wribDchsSkbtFlag) throws Exception
	{
		// 基準年月日
		String stdardymd = null;
		
		// 割引サービス.キャンペーン開始コード（データ抽出項目.データ抽出項目開始コード）
		String staCd = (String)getMapData(inMapWrisvcDchskm, CAMPAIGN_STA_CD, DCHSKM_STA_CD, wribDchsSkbtFlag);
		
		// キャンペーン開始コード（データ抽出項目開始コード）が「登録月」、「翌月」、「翌月(初日は当月)」の場合
		if (CAMPAIGN_STA_CD_ADD_MON.equals(staCd)
				|| CAMPAIGN_STA_CD_NEXT_MON.equals(staCd) || CAMPAIGN_STA_CD_NEXT_MON2.equals(staCd))
		{
			// 登録年月日
			//String addYmd = null;
			String addYmd = lastTgKeiTstaYmd;

			// 割引サービス対象契約（データ抽出項目設定対象契約）のうち、最も遅い設定登録年月日が未定の場合
			if (lastTgKeiTstaYmd == null || BLANK.equals(lastTgKeiTstaYmd))
			{
				addYmd = opeDate;
			}
			
			// 「登録月」の場合
			if (CAMPAIGN_STA_CD_ADD_MON.equals(staCd))
			{
				stdardymd = addYmd;
			}
			// 現行と異なるため、要検討。巻取りでマスタ、コード見直し予定。
			// 「翌月」の場合
			else if (CAMPAIGN_STA_CD_NEXT_MON.equals(staCd))
			{
				
// 2012/11/22 ST2-2012-0001782 Fortify同時対応 add start
				if (!JKKStringUtil.isNullBlank(addYmd)) {
// 2012/11/22 ST2-2012-0001782 Fortify同時対応 add end
				
					// 当月1日
					String thisMonFirst = addYmd.substring(0, 6) + FIRST_DATE;
					// 翌月1日
					stdardymd = JPCDateUtil.addMonth(thisMonFirst, 1);
				
// 2012/11/22 ST2-2012-0001782 Fortify同時対応 add start
				}
// 2012/11/22 ST2-2012-0001782 Fortify同時対応 add end
				
			}
			// 現行と異なるため、要検討。巻取りでマスタ、コード見直し予定。
			// 「翌月(初日は当月)」の場合
			else if (CAMPAIGN_STA_CD_NEXT_MON2.equals(staCd))
			{
				
// 2012/11/22 ST2-2012-0001782 Fortify同時対応 add start
				if (!JKKStringUtil.isNullBlank(addYmd)) {
// 2012/11/22 ST2-2012-0001782 Fortify同時対応 add end
				
					// 当月1日
					String thisMonFirst = addYmd.substring(0, 6) + FIRST_DATE;
					if (FIRST_DATE.equals(addYmd.substring(6, 8)))
					{
						stdardymd = thisMonFirst;
					}
					else
					{
						// 翌月1日
						stdardymd = JPCDateUtil.addMonth(thisMonFirst, 1);
					}
				
// 2012/11/22 ST2-2012-0001782 Fortify同時対応 add start
				}
// 2012/11/22 ST2-2012-0001782 Fortify同時対応 add end
			}
		}
		// キャンペーン開始コード（データ抽出項目開始コード）が「課金開始日」、「サービス開始日」、「課金開始前月」の場合
		else if (CAMPAIGN_STA_CD_CHRG_STAYMD.equals(staCd) || CAMPAIGN_STA_CD_SVC_STAYMD.equals(staCd)
				|| CAMPAIGN_STA_CD_CHRG_STA_ZNGTU.equals(staCd))
		{
			// 対象契約サービス契約のうち、最も遅いサービス開始年月日[0]、サービス課金開始年月日[1]が未定の場合
			if (lastSvcStaYmd == null)
			{
				return null;
			}
			
			// 「課金開始日」の場合
			if (CAMPAIGN_STA_CD_CHRG_STAYMD.equals(staCd))
			{
				stdardymd = lastSvcStaYmd[1];
			}
			// 「サービス開始日」の場合
			else if (CAMPAIGN_STA_CD_SVC_STAYMD.equals(staCd))
			{
				stdardymd = lastSvcStaYmd[0];
			}
			// 「課金開始前月」の場合
			else if (CAMPAIGN_STA_CD_CHRG_STA_ZNGTU.equals(staCd))
			{
				stdardymd = JPCDateUtil.addMonth(lastSvcStaYmd[1], -1);
			}
		}
		// キャンペーン開始コード（データ抽出項目開始コード）が「プラン変更」の場合
		else if (CAMPAIGN_STA_CD_PLAN_CHG.equals(staCd))
		{
			// 暫定値
			stdardymd = opeDate;
		}
		// キャンペーン開始コード（データ抽出項目開始コード）が「機種変更」の場合
		else if (CAMPAIGN_STA_CD_MDL_CHG.equals(staCd))
		{
			// 暫定値
			stdardymd = opeDate;
		}
		// キャンペーン開始コード（データ抽出項目開始コード）が「出荷日+n日」の場合
		else if (CAMPAIGN_STA_CD_SHKA_DATE.equals(staCd))
		{
			// 暫定値
			stdardymd = opeDate;
		}
		else
		{
			throw new Exception(CAMPAIGN_STA_CD_EXPTN_MSG);
		}
		
		return stdardymd;
	}
	
	/**
	 * 割引サービスマップ（データ抽出項目マップ）<code>inMapWrisvcDchskm</code>の
	 * 開始調整コード、開始調整期間により、基準年月日<code>stdardymd</code>から
	 * 割引サービス契約.サービス課金開始年月日（データ抽出項目設定.データ抽出項目設定開始年月日）を算出します。
	 * 
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param stdardymd 基準年月日
	 * 
	 * @return String 割引サービス契約.サービス課金開始年月日（データ抽出項目設定.データ抽出項目設定開始年月日）
	 * @throws Exception 
	 */
	private static String calcSvcChrgStaymd(HashMap<String, Object> inMapWrisvcDchskm, String stdardymd) throws Exception
	{
		// 基準年月日が未定の場合
		if (stdardymd == null)
		{
			return null;
		}
		
		// 割引サービス（データ抽出項目）.開始調整コード
		String staAdjCd = (String)inMapWrisvcDchskm.get(STA_ADJ_CD);
		// 割引サービス（データ抽出項目）.開始調整期間
		String staAdj = (String)inMapWrisvcDchskm.get(STA_ADJ);
		
		// 開始調整コードはNOT NULL制約が付いていないが、NULLの場合は「調整なし」とする
		if (staAdjCd == null || BLANK.equals(staAdjCd))
		{
			staAdjCd = STA_ADJ_CD_ADJ_NON;
		}
		// 開始調整期間はNOT NULL制約が付いていないが、NULLの場合は０とする
		int staAdjVal = 0;
		if (!(staAdj == null || BLANK.equals(staAdj)))
		{
			staAdjVal = Integer.parseInt(staAdj);
		}
		
		// サービス課金開始年月日（データ抽出項目設定開始年月日）
		String svcChrgStaymd = null;
		
		// 開始調整コードが「調整なし」の場合
		if (STA_ADJ_CD_ADJ_NON.equals(staAdjCd))
		{
			svcChrgStaymd = stdardymd;
		}
		// 開始調整コードが「月数」の場合
		else if (STA_ADJ_CD_MON_CNT.equals(staAdjCd))
		{
			// サービス課金開始年月日（データ抽出項目設定開始年月日） = 基準年月日 + 開始調整期間（月）
			svcChrgStaymd = JPCDateUtil.addMonth(stdardymd, staAdjVal);
		}
		// 開始調整コードが「日数」の場合
		else if (STA_ADJ_CD_DAY_CNT.equals(staAdjCd))
		{
			// サービス課金開始年月日（データ抽出項目設定開始年月日） = 基準年月日 + 開始調整期間（日）
			svcChrgStaymd = JPCDateUtil.addDay(stdardymd, staAdjVal);
		}
		else
		{
			throw new Exception(STA_ADJ_CD_EXPTN_MSG);
		}
		
		return svcChrgStaymd;
	}
	
	/**
	 * 割引サービス契約.サービス終了年月日、割引サービス契約.サービス課金終了年月日、
	 * データ抽出項目設定.データ抽出項目設定終了年月日を設定します。<BR>
	 * 
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
	 * @param trgtKeiSvcKeiList 対象契約サービス契約リスト
	 * @param opeDate 運用日付
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @throws Exception
	 */
	public static void setEndymd(HashMap<String, Object> inMapWrisvcDchskm,
			HashMap<String, Object> inMapWribsvkDchskmst, ArrayList<HashMap<String, Object>> trgtKeiSvcKeiList,
			String opeDate, String wribDchsSkbtFlag) throws Exception
	{
		// 対象契約サービス契約のうち、最も早いサービス終了年月日[0]、サービス課金終了年月日[1]取得
		String[] firstSvcEndYmd = getFirstSvcEndYmd(trgtKeiSvcKeiList, opeDate);
		
		// サービス終了年月日が決まらない場合、終了日にはnullを設定し、処理を終了する
		if (firstSvcEndYmd == null)
		{
			// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
			if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
			{
				// 割引サービス契約.サービス終了年月日
				inMapWribsvkDchskmst.put(SVC_ENDYMD, null);
				
				// 割引サービス契約.サービス課金終了年月日
				inMapWribsvkDchskmst.put(SVC_CHRG_ENDYMD, null);
			}
			// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
			else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
			{
				// データ抽出項目設定.データ抽出項目設定終了年月日
				inMapWribsvkDchskmst.put(DCHSKMST_END_YMD, null);
			}
			
			return;
		}
		
		/* --------------------------------------------------------------------------------
		 * サービス課金終了年月日算出のための基準年月日決定
		 * キャンペーン終了コード（データ抽出項目終了コード）により、基準年月日を選定する
		 * -------------------------------------------------------------------------------- */
		// 割引サービス.キャンペーン終了コード（データ抽出項目.データ抽出項目終了コード）
		String endCd = (String)getMapData(inMapWrisvcDchskm, CAMPAIGN_END_CD, DCHSKM_END_CD, wribDchsSkbtFlag);
		
		// 基準年月日
		String stdardymd = null;
		
		// キャンペーン終了コード（データ抽出項目終了コード）が「条件なし」の場合
		if (CAMPAIGN_END_CD_JOKEN_NON.equals(endCd))
		{
			stdardymd = firstSvcEndYmd[1];
		}
		// キャンペーン終了コード（データ抽出項目終了コード）が「プラン変更」の場合
		else if (CAMPAIGN_END_CD_PLAN_CHG.equals(endCd))
		{
			// 暫定値
			stdardymd = firstSvcEndYmd[1];
		}
		else
		{
			throw new Exception(CAMPAIGN_STA_CD_EXPTN_MSG);
		}
		
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 割引サービス契約.サービス終了年月日
			inMapWribsvkDchskmst.put(SVC_ENDYMD, firstSvcEndYmd);
			
			// 割引サービス契約.サービス課金終了年月日
			inMapWribsvkDchskmst.put(SVC_CHRG_ENDYMD, stdardymd);
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// データ抽出項目設定.データ抽出項目設定終了年月日
			inMapWribsvkDchskmst.put(DCHSKMST_END_YMD, stdardymd);
		}
		else
		{
			throw new Exception(WRIB_DCHS_SKBT_FLAG_EXPTN_MSG);
		}
		
		return;
	}
	
	/**
	 * 全ての対象契約サービス契約のうち、最も早いサービス終了年月日、サービス課金終了年月日をそれぞれ抽出します。
	 * 
	 * @param trgtKeiSvcKeiList 対象契約サービス契約リスト
	 * @param opeDate 運用日付
	 * 
	 * @return String[] 対象契約サービス契約のうち、最も早いサービス終了年月日[0]、サービス課金終了年月日[1]
	 */
	private static String[] getFirstSvcEndYmd(ArrayList<HashMap<String, Object>> trgtKeiSvcKeiList, String opeDate)
	{
		// 対象契約サービス契約のうち、最も早いサービス終了年月日[0]、サービス課金終了年月日[1]
		String[] firstSvcEndYmd = {SVC_END_YMD_INIT, SVC_END_YMD_INIT};
		
		/* --------------------------------------------------------------------------------
		 * 最も早いサービス終了年月日、サービス課金終了年月日の抽出ループ
		 * 【対象契約サービス契約単位】処理
		 * -------------------------------------------------------------------------------- */
		for (HashMap<String, Object> mapSvcKei : trgtKeiSvcKeiList)
		{
			// 対象契約サービス契約.サービス終了年月日
			String svcEndYmd = (String)mapSvcKei.get(SVC_ENDYMD);
			if (svcEndYmd == null || BLANK.equals(svcEndYmd))
			{
				// データ不正でシステムエラーとするか？
				return null;
			}
			if (svcEndYmd.compareTo(firstSvcEndYmd[0]) < 0)
			{
				firstSvcEndYmd[0] = svcEndYmd;
			}
			
			// 対象契約サービス契約.サービス課金終了年月日
			String svcChrgEndymd = (String)mapSvcKei.get(SVC_CHRG_ENDYMD);
			if (svcChrgEndymd == null || BLANK.equals(svcChrgEndymd))
			{
				// データ不正でシステムエラーとするか？
				return null;
			}
			if (svcChrgEndymd.compareTo(firstSvcEndYmd[1]) < 0)
			{
				firstSvcEndYmd[1] = svcChrgEndymd;
			}
		}
		
		// 最も早いサービス終了年月日が運用日付より未来日の場合、未来適用となるため、抽出値はクリア
		// 【最も早いサービス終了年月日 > 運用日付】
		if (firstSvcEndYmd[0].compareTo(opeDate) > 0)
		{
			return null;
		}
		
		return firstSvcEndYmd;
	}
	
	/**
	 * 割引サービス（データ抽出項目）の上限適用回数チェックを行います。<BR>
	 * <BR>
	 * 割引サービス（データ抽出項目）<code>inMapWrisvcDchskm</code>について、
	 * 同一お客様（SYSID）における適用中件数<code>aplyCnt</code>が
	 * 上限適用回数未満であればチェックＯＫとし、上限適用回数以上であればチェックＮＧとします。
	 * 
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param aplyCnt 同一お客様（SYSID）における適用中件数
	 * 
	 * @return boolean true:チェックＯＫ, false:チェックＮＧ
	 * @throws Exception
	 */
	public static boolean chkUpplAplyCnt(HashMap<String, Object> inMapWrisvcDchskm, int aplyCnt) throws Exception
	{
		// 割引サービス（データ抽出項目）.上限適用回数
		String upplAplyCnt = (String)inMapWrisvcDchskm.get(UPPL_APLY_CNT);
		
		// 上限適用回数はNOT NULL制約が付いていないが、NULLの場合はチェック不要とみなす
		if (upplAplyCnt == null || BLANK.equals(upplAplyCnt))
		{
			// チェックＯＫ
			return true;
		}
		
		if (aplyCnt < Integer.parseInt(upplAplyCnt))
		{
			// チェックＯＫ
			return true;
		}
		else
		{
			// チェックＮＧ
			return false;
		}
	}
	
	/**
	 * 割引サービス（データ抽出項目）の上限契約数チェックを行います。<BR>
	 * <BR>
	 * 割引サービス（データ抽出項目）<code>inMapWrisvcDchskm</code>について、
	 * eo顧客基幹システム全体における契約件数<code>keiCnt</code>が
	 * 上限契約数未満であればチェックＯＫとし、上限契約数以上であればチェックＮＧとします。
	 * 
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param keiCnt eo顧客基幹システム全体における契約件数
	 * 
	 * @return boolean true:チェックＯＫ, false:チェックＮＧ
	 * @throws Exception
	 */
	public static boolean chkUpplKeiCnt(HashMap<String, Object> inMapWrisvcDchskm, int keiCnt) throws Exception
	{
		// 割引サービス（データ抽出項目）.上限契約数
		String upplKeiCnt = (String)inMapWrisvcDchskm.get(UPPL_KEI_CNT);
		
		// 上限契約数はNOT NULL制約が付いていないが、NULLの場合はチェック不要とみなす
		if (upplKeiCnt == null || BLANK.equals(upplKeiCnt))
		{
			// チェックＯＫ
			return true;
		}
		
		if (keiCnt < Integer.parseInt(upplKeiCnt))
		{
			// チェックＯＫ
			return true;
		}
		else
		{
			// チェックＮＧ
			return false;
		}
	}
	
	/**
	 * サービス契約の各種サービスコードと、割引サービス対象サービス（データ抽出項目対象サービス）の各種サービスコード
	 * とのマッチングチェックを行います。<BR>
	 * <BR>
	 * 割引サービス対象サービス（データ抽出項目対象サービス）<code>inMapWrisvcDchskmTgSvc</code>で設定されている各種サービスコードと、
	 * サービス契約<code>inMapSvcKei</code>の各種サービスコードが
	 * 全て合致していればチェックＯＫとし、１つでも合致していなければチェックＮＧとします。<BR>
	 * チェック項目は下記９項目（プラン変更の場合は、変更前のコードも含む）<BR>
	 * @サービスコード（変更前サービスコード）<BR>
	 * A料金グループコード（変更前料金グループコード）<BR>
	 * B料金コースコード（変更前料金コースコード）<BR>
	 * C料金プランコード（変更前料金プランコード）<BR>
	 * Dオプションサービスコード（変更前オプションサービスコード）<BR>
	 * Eサブオプションサービスコード（変更前サブオプションサービスコード）<BR>
	 * F機器提供サービスコード（変更前機器提供サービスコード）<BR>
	 * G機器提供種別コード（変更前機器提供種別コード）<BR>
	 * H請求オプションサービスコード（変更前請求オプションサービスコード）
	 * 
	 * @param inMapWrisvcDchskmTgSvc 割引サービス対象サービスマップ（データ抽出項目対象サービスマップ）
	 * @param inMapSvcKei サービス契約マップ
	 * 
	 * @return boolean true:チェックＯＫ, false:チェックＮＧ
	 * @throws Exception
	 */
	public static boolean chkVariSvcCd(HashMap<String, Object> inMapWrisvcDchskmTgSvc,
			HashMap<String, Object> inMapSvcKei) throws Exception
	{
		// 割引サービス対象サービス（データ抽出項目対象サービス）.サービスコード
		String svcCd = (String)inMapWrisvcDchskmTgSvc.get(SVC_CD);
		if (!(svcCd == null || BLANK.equals(svcCd)))
		{
			// サービス契約.サービスコード
			if (!svcCd.equals((String)inMapSvcKei.get(SVC_CD)))
			{
				// チェックＮＧ
				return false;
			}
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）.変更前サービスコード
			String chgeBfSvcCd = (String)inMapWrisvcDchskmTgSvc.get(CHGE_BF_SVC_CD);
			if (!(chgeBfSvcCd == null || BLANK.equals(chgeBfSvcCd)))
			{
				// サービス契約.変更前サービスコード
				if (!chgeBfSvcCd.equals((String)inMapSvcKei.get(CHGE_BF_SVC_CD)))
				{
					// チェックＮＧ
					return false;
				}
			}
		}
		
		// 割引サービス対象サービス（データ抽出項目対象サービス）.料金グループコード
		String prcGrpCd = (String)inMapWrisvcDchskmTgSvc.get(PRC_GRP_CD);
		if (!(prcGrpCd == null || BLANK.equals(prcGrpCd)))
		{
			// サービス契約.料金グループコード
			if (!prcGrpCd.equals((String)inMapSvcKei.get(PRC_GRP_CD)))
			{
				// チェックＮＧ
				return false;
			}
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）.変更前料金グループコード
			String chgeBfPrcGrpCd = (String)inMapWrisvcDchskmTgSvc.get(CHGE_BF_PRC_GRP_CD);
			if (!(chgeBfPrcGrpCd == null || BLANK.equals(chgeBfPrcGrpCd)))
			{
				// サービス契約.変更前料金グループコード
				if (!chgeBfPrcGrpCd.equals((String)inMapSvcKei.get(CHGE_BF_PRC_GRP_CD)))
				{
					// チェックＮＧ
					return false;
				}
			}
		}
		
		// 割引サービス対象サービス（データ抽出項目対象サービス）.料金コースコード
		String pcrsCd = (String)inMapWrisvcDchskmTgSvc.get(PCRS_CD);
		if (!(pcrsCd == null || BLANK.equals(pcrsCd)))
		{
			// サービス契約.料金コースコード
			if (!pcrsCd.equals((String)inMapSvcKei.get(PCRS_CD)))
			{
				// チェックＮＧ
				return false;
			}
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）.変更前料金コースコード
			String chgeBfPcrsCd = (String)inMapWrisvcDchskmTgSvc.get(CHGE_BF_PCRS_CD);
			if (!(chgeBfPcrsCd == null || BLANK.equals(chgeBfPcrsCd)))
			{
				// サービス契約.変更前料金コースコード
				if (!chgeBfPcrsCd.equals((String)inMapSvcKei.get(CHGE_BF_PCRS_CD)))
				{
					// チェックＮＧ
					return false;
				}
			}
		}
		
		// 割引サービス対象サービス（データ抽出項目対象サービス）.料金プランコード
		String pplanCd = (String)inMapWrisvcDchskmTgSvc.get(PPLAN_CD);
		if (!(pplanCd == null || BLANK.equals(pplanCd)))
		{
			// サービス契約.料金プランコード
			if (!pplanCd.equals((String)inMapSvcKei.get(PPLAN_CD)))
			{
				// チェックＮＧ
				return false;
			}
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）.変更前料金プランコード
			String chgeBfPplanCd = (String)inMapWrisvcDchskmTgSvc.get(CHGE_BF_PPLAN_CD);
			if (!(chgeBfPplanCd == null || BLANK.equals(chgeBfPplanCd)))
			{
				// サービス契約.変更前料金プランコード
				if (!chgeBfPplanCd.equals((String)inMapSvcKei.get(CHGE_BF_PPLAN_CD)))
				{
					// チェックＮＧ
					return false;
				}
			}
		}
		
		// 割引サービス対象サービス（データ抽出項目対象サービス）.オプションサービスコード
		String opSvcCd = (String)inMapWrisvcDchskmTgSvc.get(OP_SVC_CD);
		if (!(opSvcCd == null || BLANK.equals(opSvcCd)))
		{
			// サービス契約.オプションサービスコード
			if (!opSvcCd.equals((String)inMapSvcKei.get(OP_SVC_CD)))
			{
				// チェックＮＧ
				return false;
			}
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）.変更前オプションサービスコード
			String chgeBfOpSvcCd = (String)inMapWrisvcDchskmTgSvc.get(CHGE_BF_OP_SVC_CD);
			if (!(chgeBfOpSvcCd == null || BLANK.equals(chgeBfOpSvcCd)))
			{
				// サービス契約.変更前オプションサービスコード
				if (!chgeBfOpSvcCd.equals((String)inMapSvcKei.get(CHGE_BF_OP_SVC_CD)))
				{
					// チェックＮＧ
					return false;
				}
			}
		}
		
		// 割引サービス対象サービス（データ抽出項目対象サービス）.サブオプションサービスコード
		String sbopSvcCd = (String)inMapWrisvcDchskmTgSvc.get(SBOP_SVC_CD);
		if (!(sbopSvcCd == null || BLANK.equals(sbopSvcCd)))
		{
			// サービス契約.サブオプションサービスコード
			if (!sbopSvcCd.equals((String)inMapSvcKei.get(SBOP_SVC_CD)))
			{
				// チェックＮＧ
				return false;
			}
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）.変更前サブオプションサービスコード
			String chgeBfSbopSvcCd = (String)inMapWrisvcDchskmTgSvc.get(CHGE_BF_SBOP_SVC_CD);
			if (!(chgeBfSbopSvcCd == null || BLANK.equals(chgeBfSbopSvcCd)))
			{
				// サービス契約.変更前サブオプションサービスコード
				if (!chgeBfSbopSvcCd.equals((String)inMapSvcKei.get(CHGE_BF_SBOP_SVC_CD)))
				{
					// チェックＮＧ
					return false;
				}
			}
		}
		
		// 割引サービス対象サービス（データ抽出項目対象サービス）.機器提供サービスコード
		String kktkSvcCd = (String)inMapWrisvcDchskmTgSvc.get(KKTK_SVC_CD);
		if (!(kktkSvcCd == null || BLANK.equals(kktkSvcCd)))
		{
			// サービス契約.機器提供サービスコード
			if (!kktkSvcCd.equals((String)inMapSvcKei.get(KKTK_SVC_CD)))
			{
				// チェックＮＧ
				return false;
			}
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）.変更前機器提供サービスコード
			String chgeBfKktkSvcCd = (String)inMapWrisvcDchskmTgSvc.get(CHGE_BF_KKTK_SVC_CD);
			if (!(chgeBfKktkSvcCd == null || BLANK.equals(chgeBfKktkSvcCd)))
			{
				// サービス契約.変更前機器提供サービスコード
				if (!chgeBfKktkSvcCd.equals((String)inMapSvcKei.get(CHGE_BF_KKTK_SVC_CD)))
				{
					// チェックＮＧ
					return false;
				}
			}
		}
		
		// 割引サービス対象サービス（データ抽出項目対象サービス）.機器提供種別コード
		String kktkSbtCd = (String)inMapWrisvcDchskmTgSvc.get(KKTK_SBT_CD);
		if (!(kktkSbtCd == null || BLANK.equals(kktkSbtCd)))
		{
			// サービス契約.機器提供種別コード
			if (!kktkSbtCd.equals((String)inMapSvcKei.get(KKTK_SBT_CD)))
			{
				// チェックＮＧ
				return false;
			}
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）.変更前機器提供種別コード
			String chgeBfKktkSbtCd = (String)inMapWrisvcDchskmTgSvc.get(CHGE_BF_KKTK_SBT_CD);
			if (!(chgeBfKktkSbtCd == null || BLANK.equals(chgeBfKktkSbtCd)))
			{
				// サービス契約.変更前機器提供種別コード
				if (!chgeBfKktkSbtCd.equals((String)inMapSvcKei.get(CHGE_BF_KKTK_SBT_CD)))
				{
					// チェックＮＧ
					return false;
				}
			}
		}
		
		// 割引サービス対象サービス（データ抽出項目対象サービス）.請求オプションサービスコード
		String seiopsvcCd = (String)inMapWrisvcDchskmTgSvc.get(SEIOPSVC_CD);
		if (!(seiopsvcCd == null || BLANK.equals(seiopsvcCd)))
		{
			// サービス契約.請求オプションサービスコード
			if (!seiopsvcCd.equals((String)inMapSvcKei.get(SEIOPSVC_CD)))
			{
				// チェックＮＧ
				return false;
			}
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）.変更前請求オプションサービスコード
			String chgeBfSeiopsvcCd = (String)inMapWrisvcDchskmTgSvc.get(CHGE_BF_SEIOPSVC_CD);
			if (!(chgeBfSeiopsvcCd == null || BLANK.equals(chgeBfSeiopsvcCd)))
			{
				// サービス契約.変更前請求オプションサービスコード
				if (!chgeBfSeiopsvcCd.equals((String)inMapSvcKei.get(CHGE_BF_SEIOPSVC_CD)))
				{
					// チェックＮＧ
					return false;
				}
			}
		}
		
		// 2013/11/07  ANK-1578-00-00 add start
		// 割引サービス対象サービス（データ抽出項目対象サービス）.機器オプションサービスコード
		String kkopsvcCd = (String)inMapWrisvcDchskmTgSvc.get(KKOP_SVC_CD);
		if (!(kkopsvcCd == null || BLANK.equals(kkopsvcCd)))
		{
			// サービス契約.機器オプションサービスコード
			if (!kkopsvcCd.equals((String)inMapSvcKei.get(KKOP_SVC_CD)))
			{
				// チェックＮＧ
				return false;
			}
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）.変更前機器オプションサービスコード
			String chgeBfKkopsvcCd = (String)inMapWrisvcDchskmTgSvc.get(CHGE_BF_KKOP_SVC_CD);
			if (!(chgeBfKkopsvcCd == null || BLANK.equals(chgeBfKkopsvcCd)))
			{
				// サービス契約.変更前請求オプションサービスコード
				if (!chgeBfKkopsvcCd.equals((String)inMapSvcKei.get(CHGE_BF_KKOP_SVC_CD)))
				{
					// チェックＮＧ
					return false;
				}
			}
		}
		// 2013/11/07  ANK-1578-00-00 add end
		
		// チェックＯＫ
		return true;
	}
	
	/**
	 * サービス契約の状態（新規申込or既存契約or対象外）と、
	 * 割引サービス対象サービス（データ抽出項目対象サービス）の対象サービス判別コードのマッチングチェックを行います。<BR>
	 * <BR>
	 * サービス契約<code>inMapSvcKei</code>のサービス契約ステータスが、
	 * 割引サービス対象サービス（データ抽出項目対象サービス）<code>inMapWrisvcDchskmTgSvc</code>の対象サービス判別コードを
	 * 満たしていればチェックＯＫとし、満たしていなければチェックＮＧとします。
	 * 
	 * @param inMapWrisvcDchskmTgSvc 割引サービス対象サービスマップ（データ抽出項目対象サービスマップ）
	 * @param inMapSvcKei サービス契約マップ
	 * 
	 * @return boolean true:チェックＯＫ, false:チェックＮＧ
	 * @throws Exception
	 */
	public static boolean chkTrgtSvcHambetCd(HashMap<String, Object> inMapWrisvcDchskmTgSvc,
			HashMap<String, Object> inMapSvcKei) throws Exception
	{
		// 割引サービス対象サービス（データ抽出項目対象サービス）.対象サービス判別コード
		String trgtSvcHambetCd = (String)inMapWrisvcDchskmTgSvc.get(TRGT_SVC_HAMBET_CD);
		// 対象サービス判別コードはNOT NULL制約が付いていないが、NULLの場合はチェック不要とみなす
		// 「条件無し」もあるので、NOT NULLが妥当。DB改修を検討します
		if (trgtSvcHambetCd == null || BLANK.equals(trgtSvcHambetCd))
		{
			// チェックＯＫ
			return true;
		}
		
		// 対象サービス判別コード（条件無し）の場合
		if (TRGT_SVC_HAMBET_CD_JOKEN_NON.equals(trgtSvcHambetCd))
		{
			// チェックＯＫ
			return true;
		}
		// 対象サービス判別コード（新規申込のみ）の場合
		else if (TRGT_SVC_HAMBET_CD_NEW_MSKM.equals(trgtSvcHambetCd))
		{
			// サービス開始判定
			String judgeRslt = judgeSvcKeiSta(inMapSvcKei);
			
			if (SVC_STA_FLG_BF.equals(judgeRslt))
			{
				// サービス開始前の場合、チェックＯＫ
				return true;
			}
			else
			{
				// チェックＮＧ
				return false;
			}
		}
		// 対象サービス判別コード（既存契約のみ）の場合
		else if (TRGT_SVC_HAMBET_CD_KIZON_KEI.equals(trgtSvcHambetCd))
		{
			// サービス開始判定
			String judgeRslt = judgeSvcKeiSta(inMapSvcKei);
			
			if (SVC_STA_FLG_AF.equals(judgeRslt))
			{
				// サービス開始後の場合、チェックＯＫ
				return true;
			}
			else
			{
				// チェックＮＧ
				return false;
			}
		}
		else
		{
			throw new Exception(TG_SVC_HAMBET_CD_EXPTN_MSG);
		}
	}
	
	/**
	 * サービス契約の契約年数のチェックを行います。<BR>
	 * <BR>
	 * サービス契約<code>inMapSvcKei</code>の契約年数が、
	 * 割引サービス対象サービス（データ抽出項目対象サービス）<code>inMapWrisvcDchskmTgSvc</code>のサービス契約年数を
	 * 満たしていればチェックＯＫとし、満たしていなければチェックＮＧとします。
	 * 
	 * @param inMapWrisvcDchskmTgSvc 割引サービス対象サービスマップ（データ抽出項目対象サービスマップ）
	 * @param inMapSvcKei サービス契約マップ
	 * @param opeDate 運用日付
	 * 
	 * @return boolean true:チェックＯＫ, false:チェックＮＧ
	 * @throws Exception
	 */
	public static boolean chkSvcKeiYearCnt(HashMap<String, Object> inMapWrisvcDchskmTgSvc, HashMap<String, Object> inMapSvcKei,
			String opeDate) throws Exception
	{
		// 割引サービス対象サービス（データ抽出項目対象サービス）.サービス契約年数
		String svcKeiYearCnt = (String)inMapWrisvcDchskmTgSvc.get(SVC_KEI_YEAR_CNT);
		// サービス契約年数はNOT NULL制約が付いていないが、NULLの場合はチェック不要とみなす
		if (svcKeiYearCnt == null || BLANK.equals(svcKeiYearCnt))
		{
			// チェックＯＫ
			return true;
		}
		// 最低契約年数
		int minKeiYearCnt = Integer.parseInt(svcKeiYearCnt);
		
		// サービス契約.サービス開始年月日
		String svcStaYmd = (String)inMapSvcKei.get(SVC_STA_YMD);
		// サービス開始年月日が設定されていない場合
		if (svcStaYmd == null || BLANK.equals(svcStaYmd))
		{
			// チェックＮＧ：サービス契約年数は0年以下とみなす
			return false;
		}
		
		// 現在の契約年数 >= 最低契約年数 か判定
		// 【現在の契約年数(= 運用日付 - サービス開始年月日) >= 最低契約年数】
		//  ⇔ 【運用日付 >= サービス開始年月日 + 最低契約年数】
		if (opeDate.compareTo(JPCDateUtil.addYear(svcStaYmd, minKeiYearCnt)) >= 0)
		{
			// チェックＯＫ
			return true;
		}
		else
		{
			// チェックＮＧ
			return false;
		}
	}
	
	/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
	/**
	 * サービス契約の割引サービス適用条件（データ抽出項目設定条件）チェックを行います。<BR>
	 * <BR>
	 * 対象のサービス契約が割引サービス適用条件（データ抽出項目設定条件）の条件を
	 * 満たしていればチェックＯＫとし、満たしていなければチェックＮＧとします。
	 * 
	 * @param mapWrisvcDchskmAplyJkn   割引サービス適用条件マップ（データ抽出項目設定条件マップ）
	 * @param mapWrisvcDchskmTgSvcKei  割引サービス対象サービス契約（データ抽出項目対象サービス契約マップ）
	 * @param wribDchsSkbtFlag         割引サービス／データ抽出項目識別フラグ
	 * @param ccMap                    作業領域
	 * @param mtChkFixFlg              マンション判定確定フラグ
	 * @param wrisvcDchskmAplyJknList  割引サービス適用条件（データ抽出項目設定条件）
	 */
	@SuppressWarnings("unchecked")
// 2012/11/22 ST2-2012-0001782 add start
//	public static boolean chkSvcKeiAplyJkn(HashMap<String, Object> mapWrisvcDchskmAplyJkn, 
//			HashMap<String, Object> mapWrisvcDchskmTgSvcKei, String wribDchsSkbtFlag)
	public static boolean chkSvcKeiAplyJkn(HashMap<String, Object> mapWrisvcDchskmAplyJkn, 
												HashMap<String, Object> mapWrisvcDchskmTgSvcKei,
												String wribDchsSkbtFlag,
												HashMap<String, Object> ccMap,
												boolean mtChkFixFlg,
												ArrayList<HashMap<String, Object>> wrisvcDchskmAplyJknList)
// 2012/11/22 ST2-2012-0001782 add end
	{
		// 対象契約候補サービス契約マップ.申込明細マップ
		ArrayList<HashMap<String, Object>> mskmDtlList = 
				(ArrayList<HashMap<String, Object>>) mapWrisvcDchskmTgSvcKei.get(MSKM_DTL_LIST);
		if (mskmDtlList == null || mskmDtlList.isEmpty())
		{
			return true;
		}
		
		HashMap<String, Object> mapMskmDtl = (HashMap<String, Object>) mskmDtlList.get(0);
		
		// 割引サービス適用条件.割引サービス適用条件種別コード（データ抽出項目設定条件.データ抽出項目設定条件種別コード）
		String wrsvAplyJknSbtCd = (String) getMapData(mapWrisvcDchskmAplyJkn, 
				WRSV_APLY_JKN_SBT_CD, DCHSKM_SETE_JKN_SBT_CD, wribDchsSkbtFlag);
		
		if (WRSV_APLY_JKN_SBT_CD_MSKM_FORM.equals(wrsvAplyJknSbtCd))
		{
			// 条件種別コードが申込形態の場合
			String mskmFormCd = (String) mapMskmDtl.get(MSKM_FORM_CD);
			String aplyCndMksmFormCd = (String) getMapData(mapWrisvcDchskmAplyJkn, 
					WRSV_APLY_JKN_VALUE_1, DCHSKM_SETE_JKN_VALUE_1, wribDchsSkbtFlag);
			if (!aplyCndMksmFormCd.equals(mskmFormCd)) 
			{
				// 申込形態コードが不一致の場合、チェックNGとし処理を終了する。
				return false;
			}
		}
		else if (WRSV_APLY_JKN_SBT_CD_AGNT.equals(wrsvAplyJknSbtCd))
		{
			// 条件種別コードが代理店の場合
			String mskmAgntCd = (String) mapMskmDtl.get(AGNT_CD);
			String aplyCndAgntCd = (String) getMapData(mapWrisvcDchskmAplyJkn, 
					WRSV_APLY_JKN_VALUE_1, DCHSKM_SETE_JKN_VALUE_1, wribDchsSkbtFlag);
			if (mskmAgntCd == null || !mskmAgntCd.startsWith(aplyCndAgntCd))
			{
				// 代理店コードが前方一致しない場合、チェックNGとし処理を終了する。
				return false;
			}	
		}
// 2012/11/22 ST2-2012-0001782 add start
		else if (WRSV_APLY_JKN_SBT_CD_MNSN.equals(wrsvAplyJknSbtCd)) {
			
			/******************************************************************************************
			 * 
			 * マンション判定処理
			 * 
			 * 当メソッドは適用条件単位にて処理を繰り返すが,
			 * マンション判定処理はサービス契約リスト単位に処理を行う.
			 * 
			 * 当分岐処理に入るという事は、11：割引サービス適用条件種別コード（マンション）であり,
			 * マンション一致チェックは全て実施する.
			 * 
			 ******************************************************************************************/
// v5.00.33 MOD START
			return true;
//			return isAddWribMansionInf(mapWrisvcDchskmTgSvcKei,
//											wribDchsSkbtFlag,
//											ccMap,
//											mtChkFixFlg,
//											wrisvcDchskmAplyJknList,
//											mapMskmDtl);
// v5.00.33 MOD END
		}
// 2012/11/22 ST2-2012-0001782 add end
		
/* v5.00.00 add start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// 条件種別コードが[グレードアップキャンペーン]の場合
		else if (WRSV_APLY_JKN_SBT_CD_GREAD_UP_CP.equals(wrsvAplyJknSbtCd)) {
			
			String svcKeiNo = (String) mapWrisvcDchskmTgSvcKei.get(SVC_KEI_NO);
			
			for (HashMap<String, Object> map : wrisvcDchskmAplyJknList) {
				
				String jknSbtCd = (String) getMapData(map, WRSV_APLY_JKN_SBT_CD, DCHSKM_SETE_JKN_SBT_CD, wribDchsSkbtFlag);
				
				if (WRSV_APLY_JKN_SBT_CD_GREAD_UP_CP.equals(jknSbtCd)) {
					String cpJkn = (String) getMapData(map, 
							WRSV_APLY_JKN_VALUE_1, DCHSKM_SETE_JKN_VALUE_1, wribDchsSkbtFlag);
					
					if (!JKKStringUtil.isNullBlank(svcKeiNo) && svcKeiNo.equals(cpJkn)) {
						
						return true;
					}
				}
			}
			
			return false;
		}
		
/* v5.00.00 add end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		return true;
	}
	
// 2012/11/22 ST2-2012-0001782 add start
	/**
	 * 
	 * マンションに対しての割引付与判定を行う.<BR>
	 * ※対象割引がマンションか否かの判定は呼び出し元にて行う事.<BR>
	 * <BR>
	 * 
	 * 当処理は業務よりサービス単位に設定された[マンションプランコード]の特定を行い,
	 * 適用条件に一致するか否かの結果を返却する.
	 * 
	 * @param  mapWrisvcDchskmTgSvcKei 割引サービス対象サービス契約（データ抽出項目対象サービス契約マップ）
	 * @param  wribDchsSkbtFlag        割引サービス／データ抽出項目識別フラグ
	 * @param  ccMap                   作業領域
	 * @param  mtChkFixFlg             マンション判定確定フラグ
	 * @param  wrisvcDchskmAplyJknList 割引サービス適用条件（データ抽出項目設定条件）
	 * @param  mapMskmDtl              申込明細情報
	 * 
	 * @return true：マンションプランコード一致、false：それ以外
	 * 
	 */
		
	@SuppressWarnings("unchecked")
	static boolean isAddWribMansionInf(HashMap<String, Object> mapWrisvcDchskmTgSvcKei,
											String wribDchsSkbtFlag,
											HashMap<String, Object> ccMap,
											boolean mtChkFixFlg,
											ArrayList<HashMap<String, Object>> wrisvcDchskmAplyJknList,
											HashMap<String, Object> mapMskmDtl) {
		// 
		// マンション判定時に使用する項目
		// 
		// ・サービス契約番号
		// ・マンションプランコード
		// ・マンション確定フラグ
		// 
		String   svcKeiNo      = "";
		String   mansionPlanCd = "";
		
		// 
		// 当処理にて対象となる項目の取得
		// 
		// ・サービス契約番号
		// ・マンションID
		// 
		String tgSvcKeiNo    = (String) mapWrisvcDchskmTgSvcKei.get(SVC_KEI_NO);
		String mskmMansionId = (String) mapMskmDtl.get(MANSION_ID);
		
		// 
		// チェック済の場合,処理終了
		// 
		if (mtChkFixFlg) {
			return true;
		}
		
		// 
		// 条件種別コードがマンションの場合
		// マンションIDがない場合は,マンションではないため対象外
		// 
		if (JKKStringUtil.isNullBlank(mskmMansionId)) {
			return false;
		}
		
		/*****************************************************************************************************
		 * 
		 * マンション付与判定
		 * 
		 * 対象となるサービス契約番号を全網羅.
		 * 適用条件に一致するマンションプランコードが存在した場合は,処理終了.
		 * 
		 *****************************************************************************************************/
		// サービス契約グループリスト：条件チェックループ
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(SVC_KEI_GRP_LIST);
		for (HashMap<String, Object> mapSvcKeiGrp : svcKeiGrpList) {
			// サービス契約リスト：条件チェックループ
			ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(SVC_KEI_LIST);
			for (HashMap<String, Object> svcKeiMap : svcKeiList) {
				svcKeiNo = (String) svcKeiMap.get(SVC_KEI_NO);
				// 対象となるサービス契約番号が一致する場合のみ,処理続行
				if (tgSvcKeiNo.equals(svcKeiNo)) {
					mansionPlanCd = "";
					ArrayList<HashMap<String, Object>> mansionList = (ArrayList<HashMap<String, Object>>) svcKeiMap.get(MANSION_LIST);
					// マンションリストを保持している場合のみ,処理続行
					if (mansionList != null) {
						// マンションリスト：条件ループ
						for (HashMap<String, Object> mapMansion : mansionList) {
							mansionPlanCd =(String) mapMansion.get(MANSION_PLAN_CD);
							// マンションプランコード特定時のみ,処理続行
							if (!JKKStringUtil.isNullBlank(mansionPlanCd)) {
								
								
								// 割引サービス適用条件：条件チェックループ
								for (HashMap<String, Object> shingleAplyList : wrisvcDchskmAplyJknList) {
									// 割引サービス適用条件.割引サービス適用条件種別コード（データ抽出項目設定条件.データ抽出項目設定条件種別コード）
									String wrsvAplyJknSbtCd = (String) getMapData(shingleAplyList, WRSV_APLY_JKN_SBT_CD, DCHSKM_SETE_JKN_SBT_CD, wribDchsSkbtFlag);
									if (WRSV_APLY_JKN_SBT_CD_MNSN.equals(wrsvAplyJknSbtCd)) {
										
										// 割引サービス適用条件・マンションプランコード
										String aplyCndMansionPlanCd = (String) getMapData(shingleAplyList, 
																							WRSV_APLY_JKN_VALUE_1,
																							DCHSKM_SETE_JKN_VALUE_1,
																							wribDchsSkbtFlag);
										// マンションプランコードが一致する場合
										if (mansionPlanCd.equals(aplyCndMansionPlanCd)) {
											return true;
										}
									}
								}
							}
						}
					}
				}
			}
		}
		// マンションプランード不一致
		return false;
	}
// 2012/11/22 ST2-2012-0001782 add end
	
	/**
	 * 申込種別コードの割引サービス適用条件（データ抽出項目設定条件）のチェックを行います。<BR>
	 * <BR>
	 * 申込種別コードが割引サービス適用条件（データ抽出項目設定条件）の条件を
	 * 満たしていればチェックＯＫとし、満たしていなければチェックＮＧとします。
	 * @param mapWrisvcDchskmAplyJkn 割引サービス適用条件マップ（データ抽出項目設定条件マップ）
	 * @param mskmSbtCd 申込種別コード
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 */
	public static boolean chkMskmSbtCdAplyJkn(ArrayList<HashMap<String, Object>> wrisvcDchskmAplyJknList, 
			String mskmSbtCd, String wribDchsSkbtFlag)
	{
		
		// ++++++++++ v3.0X.00 追加開始 ++++++++++ */
		boolean existsRecords = false;
		boolean existsMatchRecords = false;
		// ++++++++++ v3.0X.00 追加終了 ++++++++++ */		
		
		for (HashMap<String, Object> mapWrisvcDchskmAplyJkn : wrisvcDchskmAplyJknList)
		{
			// 割引サービス適用条件.割引サービス適用条件種別コード（データ抽出項目設定条件.データ抽出項目設定条件種別コード）
			String wrsvAplyJknSbtCd = (String) getMapData(mapWrisvcDchskmAplyJkn, 
					WRSV_APLY_JKN_SBT_CD, DCHSKM_SETE_JKN_SBT_CD, wribDchsSkbtFlag);
			
			if (WRSV_APLY_JKN_SBT_CD_MSKM_SBT.equals(wrsvAplyJknSbtCd))
			{
				// 条件種別コードが申込種別の場合

				// ++++++++++ v3.0X.00 追加開始 ++++++++++ */
				existsRecords = true;
				// ++++++++++ v3.0X.00 追加終了 ++++++++++ */

				String aplyJKNMksmSbtCd = (String) getMapData(mapWrisvcDchskmAplyJkn, 
						WRSV_APLY_JKN_VALUE_1, DCHSKM_SETE_JKN_VALUE_1, wribDchsSkbtFlag);
				// ++++++++++ v3.0X.00 変更開始 ++++++++++ */
//				if (!aplyJKNMksmSbtCd.equals(mskmSbtCd)) 
//				{
//					// 申込種別コードが不一致の場合、チェックNGとし処理を終了する。
//					return false;
//					
//				}
				if (aplyJKNMksmSbtCd.equals(mskmSbtCd)) 
				{
					// 申込種別コードが一致する場合
					existsMatchRecords = true;
				}
				// ++++++++++ v3.0X.00 変更終了 ++++++++++ */
			}
		}
		// ++++++++++ v3.0X.00 変更開始 ++++++++++ */
//		return true;
		if (existsRecords && !existsMatchRecords)
		{
			// 条件種別コードが申込種別のレコードが存在し、かつ申込種別コードが一致するレコードがない場合、チェックNG
			return false;
		} else {
			return true;
		}
		// ++++++++++ v3.0X.00 変更終了 ++++++++++ */
	}
	/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
	
	/**
	 * 割引サービス対象サービス（データ抽出項目対象サービス）の対象契約サービス数チェックを行います。<BR>
	 * <BR>
	 * 割引サービス対象サービス（データ抽出項目対象サービス）に該当する対象契約サービス数<code>trgtKeiSvcCnt</code>が、
	 * 割引サービス対象サービス（データ抽出項目対象サービス）<code>inMapWrisvcDchskmTgSvc</code>の対象契約サービス数の条件を
	 * 満たしていればチェックＯＫとし、満たしていなければチェックＮＧとします。
	 * 
	 * @param inMapWrisvcDchskmTgSvc 割引サービス対象サービスマップ（データ抽出項目対象サービスマップ）
	 * @param trgtKeiSvcCnt 対象契約サービス数
	 * 
	 * @return boolean true:チェックＯＫ, false:チェックＮＧ
	 * @throws Exception
	 */
	public static boolean chkTrgtKeiSvcCnt(HashMap<String, Object> inMapWrisvcDchskmTgSvc,
			int trgtKeiSvcCnt) throws Exception
	{
		// 割引サービス対象サービス（データ抽出項目対象サービス）.対象契約サービス数
		String trgtKeiSvcLowl = (String)inMapWrisvcDchskmTgSvc.get(TRGT_KEI_SVC_CNT);
		// 対象契約サービス数はNOT NULL制約が付いていないが、NULLの場合は０とする
		// 最小対象契約サービス数
		int minTrgtKeiSvcCnt = 0;
		if (!(trgtKeiSvcLowl == null || BLANK.equals(trgtKeiSvcLowl)))
		{
			minTrgtKeiSvcCnt = Integer.parseInt(trgtKeiSvcLowl);
		}
		
		// 割引サービス対象サービス（データ抽出項目対象サービス）.対象契約サービス上限
		String trgtKeiSvcUppl = (String)inMapWrisvcDchskmTgSvc.get(TRGT_KEI_SVC_UPPL);
		// 対象契約サービス上限はNOT NULL制約が付いていないが、NULLの場合はint型最大値とする
		// 最大対象契約サービス数
		int maxTrgtKeiSvcCnt = Integer.MAX_VALUE;
		if (!(trgtKeiSvcUppl == null || BLANK.equals(trgtKeiSvcUppl)))
		{
			maxTrgtKeiSvcCnt = Integer.parseInt(trgtKeiSvcUppl);
		}
		
		// 割引サービス対象サービス（データ抽出項目対象サービス）.上限超適用可否
		String upplAutoAplyKh = (String)inMapWrisvcDchskmTgSvc.get(UPPL_AUTO_APLY_KH);
		// 上限超適用可否はNOT NULL制約が付いていないが、NULLの場合は「否」とする
		if (upplAutoAplyKh == null || BLANK.equals(upplAutoAplyKh))
		{
			if (maxTrgtKeiSvcCnt != Integer.MAX_VALUE)
			{
				// 対象契約サービス上限が設定されている場合に、NULLであればマスタデータ不正
				throw new Exception(UPPL_AUTO_APLY_KH_EXPTN_MSG);
			}
			upplAutoAplyKh = KH_H;
		}
		
		// 対象契約サービス数 < 最小対象契約サービス数
		if (trgtKeiSvcCnt < minTrgtKeiSvcCnt)
		{
			// チェックＮＧ
			return false;
		}
		// 対象契約サービス数 = 最小対象契約サービス数
		else if (trgtKeiSvcCnt == minTrgtKeiSvcCnt)
		{
			// 対象契約サービス数 <= 最大対象契約サービス数
			if (trgtKeiSvcCnt <= maxTrgtKeiSvcCnt)
			{
				// チェックＯＫ
				return true;
			}
			// 対象契約サービス数 > 最大対象契約サービス数
			else
			{
				// 最小対象契約サービス数 > 最大対象契約サービス数 となり、マスタデータ不正
				throw new Exception(TG_SVC_KEI_CNT_EXPTN_MSG);
			}
		}
		// 対象契約サービス数 > 最小対象契約サービス数
		else
		{
			// 対象契約サービス数 <= 最大対象契約サービス数
			if (trgtKeiSvcCnt <= maxTrgtKeiSvcCnt)
			{
				// チェックＯＫ
				return true;
			}
			else
			{
				// 上限超適用可否：可
				if (KH_K.equals(upplAutoAplyKh))
				{
					// チェックＯＫ
					return true;
				}
				// 上限超適用可否：否
				else if (KH_H.equals(upplAutoAplyKh))
				{
					// チェックＮＧ
					return false;
				}
				else
				{
					throw new Exception(KH_EXPTN_MSG);
				}
			}
		}
	}
	
	/**
	 * 割引サービス（データ抽出項目）の適用条件コードチェックを行います。<BR>
	 * <BR>
	 * 割引サービス（データ抽出項目）<code>inMapWrisvcDchskm</code>の適用条件コードで指定されている条件を、
	 * 割引サービス対象サービス（データ抽出項目対象サービス）<code>wrisvcDchskmTgSvcList</code>の対象契約サービス契約が
	 * 満たしていればチェックＯＫとし、満たしていなければチェックＮＧとします。
	 * 
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param wrisvcDchskmTgSvcList 割引サービス対象サービスリスト（データ抽出項目対象サービスリスト）
	 * 
	 * @return boolean true:チェックＯＫ, false:チェックＮＧ
	 * @throws Exception
	 */
	public static boolean chkAplyJokenCd(HashMap<String, Object> inMapWrisvcDchskm,
			ArrayList<HashMap<String, Object>> wrisvcDchskmTgSvcList) throws Exception
	{
		// 割引サービス（データ抽出項目）.適用条件コード
		String aplyJokenCd = (String)inMapWrisvcDchskm.get(APLY_JOKEN_CD);
		// 適用条件コードはNOT NULL制約が付いていないため、DB改修予定。ここでは暫定で、NULLの場合は「一部でも可」とする
		if (aplyJokenCd == null || BLANK.equals(aplyJokenCd))
		{
			aplyJokenCd = APLY_JOKEN_CD_ICHIBU;
		}
		
		// 適用条件コードが「全て一致」の場合
		if (APLY_JOKEN_CD_ALL.equals(aplyJokenCd))
		{
			// 全ての割引サービス対象サービス（データ抽出項目対象サービス）について、適合する対象契約サービス契約が存在するかチェック
			for (HashMap<String, Object> mapWrisvcDchskmTgSvc : wrisvcDchskmTgSvcList)
			{
				// 割引サービス対象サービス（データ抽出項目対象サービス）.対象契約サービス契約数
				int trgtKeiSvcKeiCnt = (Integer)mapWrisvcDchskmTgSvc.get(TRGT_KEI_SVC_KEI_CNT);
				
				// １つでも割引サービス対象サービス（データ抽出項目対象サービス）に適合する、対象契約サービス契約が存在しない場合
				if (trgtKeiSvcKeiCnt <= 0)
				{
					// チェックＮＧ
					return false;
				}
			}
			
			// チェックＯＫ
			return true;
		}
		// 適用条件コードが「一部でも可」の場合
		else if (APLY_JOKEN_CD_ICHIBU.equals(aplyJokenCd))
		{
			// 割引サービス対象サービス（データ抽出項目対象サービス）のうち一部でも、適合する対象契約サービス契約が存在するかチェック
			for (HashMap<String, Object> mapWrisvcDchskmTgSvc : wrisvcDchskmTgSvcList)
			{
				// 割引サービス対象サービス（データ抽出項目対象サービス）.対象契約サービス契約数
				int trgtKeiSvcKeiCnt = (Integer)mapWrisvcDchskmTgSvc.get(TRGT_KEI_SVC_KEI_CNT);
				
				// １つでも割引サービス対象サービス（データ抽出項目対象サービス）に適合する、対象契約サービス契約が存在する場合
				if (trgtKeiSvcKeiCnt > 0)
				{
					// チェックＯＫ
					return true;
				}
			}
			
			// チェックＮＧ
			return false;
		}
		// 適用条件コードが「グループで一致」の場合
		else if (APLY_JOKEN_CD_GRP.equals(aplyJokenCd))
		{
			/* --------------------------------------------------------------------------------
			 * グループ単位で対象契約サービス契約数を集計
			 * -------------------------------------------------------------------------------- */
			// 適用条件グループ（退避用）
			String aplyJokenGrpTaihi = null;
			
			// グループ内対象契約サービス契約数
			int grpTrgtKeiSvcKeiCnt = 0;
			ArrayList<Integer> grpTrgtKeiSvcKeiCntList = new ArrayList<Integer>();
			
			/* サービスIFで割引サービス対象サービスコード昇順に取得しているため、適用条件グループ昇順にサービスIFを改修予定。
			 * ここでは、マスタデータが適用条件グループ昇順にソートされていること前提で対処しない */
			for (HashMap<String, Object> mapWrisvcDchskmTgSvc : wrisvcDchskmTgSvcList)
			{
				// 割引サービス対象サービス（データ抽出項目対象サービス）.適用条件グループ
				String aplyJokenGrp = (String)mapWrisvcDchskmTgSvc.get(APLY_JOKEN_GRP);
				
				if (!aplyJokenGrp.equals(aplyJokenGrpTaihi))
				{
					if (aplyJokenGrpTaihi != null)
					{
						// グループ内対象契約サービス契約数をリストに格納
						grpTrgtKeiSvcKeiCntList.add(grpTrgtKeiSvcKeiCnt);
					}
					
					// 適用条件グループ（退避用）
					aplyJokenGrpTaihi = aplyJokenGrp;
					// グループ内対象契約サービス契約数
					grpTrgtKeiSvcKeiCnt = 0;
				}
				
				// 割引サービス対象サービス（データ抽出項目対象サービス）.対象契約サービス契約数
				int trgtKeiSvcKeiCnt = (Integer)mapWrisvcDchskmTgSvc.get(TRGT_KEI_SVC_KEI_CNT);
				grpTrgtKeiSvcKeiCnt += trgtKeiSvcKeiCnt;
			}
			// グループ内対象契約サービス契約数をリストに格納
			grpTrgtKeiSvcKeiCntList.add(grpTrgtKeiSvcKeiCnt);
			
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）の全ての適用条件グループについて、対応する対象契約サービス契約が存在するかチェック
			for (int i = 0; i < grpTrgtKeiSvcKeiCntList.size(); i++)
			{
				grpTrgtKeiSvcKeiCnt = grpTrgtKeiSvcKeiCntList.get(i);
				
				// １つでもグループ内で対応する、対象契約サービス契約が存在しない場合
				if (grpTrgtKeiSvcKeiCnt <= 0)
				{
					// チェックＮＧ
					return false;
				}
			}
			
			// チェックＯＫ
			return true;
		}
		else
		{
			throw new Exception(APLY_JOKEN_CD_EXPTN_MSG);
		}
	}
	
	/**
	 * 判定元、判定先の割引サービス[契約]（データ抽出項目[設定]）の同時適用可否を判定します。<BR>
	 * <BR>
	 * 割引サービス[契約]（データ抽出項目[設定]）併用可否リスト<code>heiyoKhList</code>において、
	 * 併用可否「否」である割引サービス[契約]（データ抽出項目[設定]）について、優先順位チェックを行います。<BR>
	 * チェック結果をもとに、判定元、判定先の割引サービス[契約]（データ抽出項目[設定]）の適用可否を設定します。
	 * 
	 * @param jdgmtWrisvcDchskmList 判定元・割引サービス[契約]リスト（データ抽出項目[設定]リスト）
	 * @param jdgskWrisvcDchskmList 判定先・割引サービス[契約]リスト（データ抽出項目[設定]リスト）
	 * @param heiyoKhList 割引サービス[契約]（データ抽出項目[設定]）併用可否リスト
	 * @param opeDate 運用日付
	 * @param keiSetteFlag true:判定対象が割引サービス契約（データ抽出項目設定）の場合, false:それ以外
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return ArrayList<String[]> 割引サービス[契約]（データ抽出項目[設定]）適用可否リスト
	 * @throws Throwable
	 */
	public static void jdgDojiAplyKh(
			ArrayList<HashMap<String, Object>> jdgmtWrisvcDchskmList, ArrayList<HashMap<String, Object>> jdgskWrisvcDchskmList,
			ArrayList<String> heiyoKhList, String opeDate, boolean keiSetteFlag, String wribDchsSkbtFlag) throws Throwable
	{
		// 適用可否「可」で初期化
		for (HashMap<String, Object> mapJdgmtWrisvcDchskm : jdgmtWrisvcDchskmList)
		{
			mapJdgmtWrisvcDchskm.put(APLY_KH, KH_K);
		}
		for (HashMap<String, Object> mapJdgskWrisvcDchskm : jdgskWrisvcDchskmList)
		{
			mapJdgskWrisvcDchskm.put(APLY_KH, KH_K);
		}
		
		/* --------------------------------------------------------------------------------
		 * 割引サービス[契約]（データ抽出項目[設定]）適用可否リスト作成ループ
		 * 【判定元・割引サービス[契約]（データ抽出項目[設定]）単位】処理
		 * -------------------------------------------------------------------------------- */
		int n = 0;
		for (int i = 0; i < jdgmtWrisvcDchskmList.size(); i++)
		{
			// 判定元・割引サービス[契約]（データ抽出項目[設定]）
			HashMap<String, Object> mapJdgmtWrisvcDchskm = jdgmtWrisvcDchskmList.get(i);
			
			int start = 0;
			if (jdgmtWrisvcDchskmList == jdgskWrisvcDchskmList)
			{
				/* --------------------------------------------------------------------------------
				 * 判定元リストと判定先リストが同じ場合、
				 * A(i) vs A(j) (i = 0, 1, 2, …, N, j = i+1, i+2, …, N)の組み合わせで判定を行う。
				 *                  判定先    
				 *         A(0) A(1) A(2) A(3)  … A(N)
				 *    A(0)  −   ○   ○   ○   …  ○ 
				 * 判 A(1)  −   −   ○   ○   …  ○ 
				 * 定 A(2)  −   −   −   ○   …  ○ 
				 * 元 A(3)  −   −   −   −   …  ○ 
				 *     …   …   …   …   …   …  ○ 
				 *    A(N)  −   −   −   −   −  − 
				 * -------------------------------------------------------------------------------- */
				start = i + 1;
			}
			else
			{
				/* --------------------------------------------------------------------------------
				 * 判定元リストと判定先リストが異なる場合、
				 * A(i) vs B(j) (i = 0, 1, 2, …, M, j = 0, 1, 2, …, N)の組み合わせで判定を行う。
				 *                  判定先    
				 *         B(0) B(1) B(2) B(3)  … B(N)
				 *    A(0)  ○   ○   ○   ○   …  ○ 
				 * 判 A(1)  ○   ○   ○   ○   …  ○ 
				 * 定 A(2)  ○   ○   ○   ○   …  ○ 
				 * 元 A(3)  ○   ○   ○   ○   …  ○ 
				 *     …   …   …   …   …   …  ○ 
				 *    A(M)  ○   ○   ○   ○   ○  ○ 
				 * -------------------------------------------------------------------------------- */
				start = 0;
			}
			
			/* --------------------------------------------------------------------------------
			 * 割引サービス[契約]（データ抽出項目[設定]）適用可否リスト作成ループ
			 * 【判定先・割引サービス[契約]（データ抽出項目[設定]）単位】処理
			 * -------------------------------------------------------------------------------- */
			for (int j = start; j < jdgskWrisvcDchskmList.size(); j++)
			{
				// 併用可否
				String heiyoKh = heiyoKhList.get(n);
				
				// 併用可否「否」の場合
				if (KH_H.equals(heiyoKh))
				{
					// 判定先・割引サービス[契約]（データ抽出項目[設定]）
					HashMap<String, Object> mapJdgskWrisvcDchskm = jdgskWrisvcDchskmList.get(j);
					
					// 優先順位判定
					String jdgRslt = jdgYusenJun(mapJdgmtWrisvcDchskm, mapJdgskWrisvcDchskm, wribDchsSkbtFlag);
					
					// 併用可否「否」、かつ優先順位判定「判定元優先」の場合
					if (YUSEN_JUN_JDG_RSLT_JDGMT.equals(jdgRslt))
					{
						setAplyKh(mapJdgmtWrisvcDchskm, mapJdgskWrisvcDchskm, opeDate, keiSetteFlag);
					}
					// 併用可否「否」、かつ優先順位判定「判定先優先」の場合
					else if (YUSEN_JUN_JDG_RSLT_JDGSK.equals(jdgRslt))
					{
						// 判定元・割引サービス[契約]（データ抽出項目[設定]）が適用可否「否」
						setAplyKh(mapJdgskWrisvcDchskm, mapJdgmtWrisvcDchskm, opeDate, keiSetteFlag);
					}
					// 併用可否「否」、かつ優先順位判定「同等」の場合
					else if (YUSEN_JUN_JDG_RSLT_EVEN.equals(jdgRslt))
					{
						// 両方の割引サービス[契約]（データ抽出項目[設定]）が適用可否「可」
					}
				}
				n++;
			}
		}
		
		return;
	}
	
	/**
	 * ２つの割引サービス（データ抽出項目）のうち、優先順位の高い方の割引サービス（データ抽出項目）を判定します。<BR>
	 * <BR>
	 * 判定元・割引サービス（データ抽出項目）と判定先・割引サービス（データ抽出項目）の
	 * 優先順位型コード、優先順位種類コード、優先順位タイプコード、優先順位タイプ順位を順に比較します。
	 * 判定元・割引サービス（データ抽出項目）の方が優先順位が高い場合は、判定結果「判定元優先」とし、
	 * 判定先・割引サービス（データ抽出項目）の方が優先順位が高い場合は、判定結果「判定先優先」とし、
	 * 両者が同じ順位の場合は、判定結果「同等」とします。
	 * 
	 * @param inMapJdgmtWrisvcDchskm 判定元・割引サービスマップ（データ抽出項目マップ）
	 * @param inMapJdgskWrisvcDchskm 判定先・割引サービスマップ（データ抽出項目マップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return String 判定結果
	 */
	private static String jdgYusenJun(HashMap<String, Object> inMapJdgmtWrisvcDchskm,
			HashMap<String, Object> inMapJdgskWrisvcDchskm, String wribDchsSkbtFlag)
	{
		int jdgRslt = 0;
		
		/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
		
			/* ++++++++++ v3.00.00 変更開始 ++++++++++ */
			// 判定元・割引サービス.割引優先順位型コード（データ抽出項目.データ抽出優先順位型コード）
	//		String jdgmtYusenJunMdlCd = (String)getMapData(inMapJdgmtWrisvcDchskm,
	//				YUSEN_JUN_MDL_CD, DCHS_YUSEN_JUN_MDL_CD, wribDchsSkbtFlag);
	//		// 判定先・割引サービス.割引優先順位型コード（データ抽出項目.データ抽出優先順位型コード）
	//		String jdgskYusenJunMdlCd = (String)getMapData(inMapJdgskWrisvcDchskm,
	//				YUSEN_JUN_MDL_CD, DCHS_YUSEN_JUN_MDL_CD, wribDchsSkbtFlag);
			// 判定元・割引サービス.割引優先順位型コード（データ抽出項目.データ抽出優先順位型コード）
			String jdgmtYusenJunMdlCd = (String) inMapJdgmtWrisvcDchskm.get(YUSEN_JUN_MDL_CD);
			// 判定先・割引サービス.割引優先順位型コード（データ抽出項目.データ抽出優先順位型コード）
			String jdgskYusenJunMdlCd = (String) inMapJdgskWrisvcDchskm.get(YUSEN_JUN_MDL_CD);
			/* ++++++++++ v3.00.00 変更終了 ++++++++++ */
			
			// 優先順位型コード
			jdgRslt = jdgmtYusenJunMdlCd.compareTo(jdgskYusenJunMdlCd);
			if (jdgRslt < 0)
			{
				// 判定元優先
				return YUSEN_JUN_JDG_RSLT_JDGMT;
			}
			else if (jdgRslt > 0)
			{
				// 判定先優先
				return YUSEN_JUN_JDG_RSLT_JDGSK;
			}
			
			/* ++++++++++ v3.00.00 変更開始 ++++++++++ */
			// 判定元・割引サービス.割引優先順位種類コード（データ抽出項目.データ抽出優先順位種類コード）
	//		String jdgmtYusenJunKindCd = (String)getMapData(inMapJdgmtWrisvcDchskm,
	//				YUSEN_JUN_KIND_CD, DCHS_YUSEN_JUN_KIND_CD, wribDchsSkbtFlag);
	//		// 判定先・割引サービス.割引優先順位種類コード（データ抽出項目.データ抽出優先順位種類コード）
	//		String jdgskYusenJunKindCd = (String)getMapData(inMapJdgskWrisvcDchskm,
	//				YUSEN_JUN_KIND_CD, DCHS_YUSEN_JUN_KIND_CD, wribDchsSkbtFlag);
			// 判定元・割引サービス.割引優先順位種類コード（データ抽出項目.データ抽出優先順位種類コード）
			String jdgmtYusenJunKindCd = (String) inMapJdgmtWrisvcDchskm.get(YUSEN_JUN_KIND_CD);
			// 判定先・割引サービス.割引優先順位種類コード（データ抽出項目.データ抽出優先順位種類コード）
			String jdgskYusenJunKindCd = (String) inMapJdgskWrisvcDchskm.get(YUSEN_JUN_KIND_CD);
			/* ++++++++++ v3.00.00 変更終了 ++++++++++ */
			
			// 優先順位種類コード
			jdgRslt = jdgmtYusenJunKindCd.compareTo(jdgskYusenJunKindCd);
			if (jdgRslt < 0)
			{
				// 判定元優先
				return YUSEN_JUN_JDG_RSLT_JDGMT;
			}
			else if (jdgRslt > 0)
			{
				// 判定先優先
				return YUSEN_JUN_JDG_RSLT_JDGSK;
			}
			
			/* ++++++++++ v3.00.00 変更開始 ++++++++++ */
	//		// 判定元・割引サービス.割引優先順位タイプコード（データ抽出項目.データ抽出優先順位タイプコード）
	//		String jdgmtYusenJunTypeCd = (String)getMapData(inMapJdgmtWrisvcDchskm,
	//		YUSEN_JUN_TYPE_CD, DCHS_YUSEN_JUN_TYPE_CD, wribDchsSkbtFlag);
	//		// 判定先・割引サービス.割引優先順位タイプコード（データ抽出項目.データ抽出優先順位タイプコード）
	//		String jdgskYusenJunTypeCd = (String)getMapData(inMapJdgskWrisvcDchskm,
	//		YUSEN_JUN_TYPE_CD, DCHS_YUSEN_JUN_TYPE_CD, wribDchsSkbtFlag);
			// 判定元・割引サービス.割引優先順位タイプコード（データ抽出項目.データ抽出優先順位タイプコード）
			String jdgmtYusenJunTypeCd = (String) inMapJdgmtWrisvcDchskm.get(YUSEN_JUN_TYPE_CD);
			// 判定先・割引サービス.割引優先順位タイプコード（データ抽出項目.データ抽出優先順位タイプコード）
			String jdgskYusenJunTypeCd = (String) inMapJdgskWrisvcDchskm.get(YUSEN_JUN_TYPE_CD);
			/* ++++++++++ v3.00.00 変更終了 ++++++++++ */
			
			// 優先順位タイプコード
			jdgRslt = jdgmtYusenJunTypeCd.compareTo(jdgskYusenJunTypeCd);
			if (jdgRslt < 0)
			{
				// 判定元優先
				return YUSEN_JUN_JDG_RSLT_JDGMT;
			}
			else if (jdgRslt > 0)
			{
				// 判定先優先
				return YUSEN_JUN_JDG_RSLT_JDGSK;
			}
			
			/* ++++++++++ v3.00.00 変更開始 ++++++++++ */
	//		// 判定元・割引サービス.割引優先順位タイプ順位（データ抽出項目.データ抽出優先順位タイプ順位）
	//		String jdgmtYusenJunTypeJun = (String)getMapData(inMapJdgmtWrisvcDchskm,
	//				YUSEN_JUN_TYPE_JUN, DCHS_YUSEN_JUN_TYPE_JUN, wribDchsSkbtFlag);
	//		// 判定先・割引サービス.割引優先順位タイプ順位（データ抽出項目.データ抽出優先順位タイプ順位）
	//		String jdgskYusenJunTypeJun = (String)getMapData(inMapJdgskWrisvcDchskm,
	//				YUSEN_JUN_TYPE_JUN, DCHS_YUSEN_JUN_TYPE_JUN, wribDchsSkbtFlag);
			// 判定元・割引サービス.割引優先順位タイプ順位（データ抽出項目.データ抽出優先順位タイプ順位）
			String jdgmtYusenJunTypeJun = (String) inMapJdgmtWrisvcDchskm.get(YUSEN_JUN_TYPE_JUN);
			// 判定先・割引サービス.割引優先順位タイプ順位（データ抽出項目.データ抽出優先順位タイプ順位）
			String jdgskYusenJunTypeJun = (String) inMapJdgskWrisvcDchskm.get(YUSEN_JUN_TYPE_JUN);
			/* ++++++++++ v3.00.00 変更終了 ++++++++++ */
			
			// 優先順位タイプ順位
			int jdgmtTypeJun = Integer.parseInt(jdgmtYusenJunTypeJun);
			int jdgskTypeJun = Integer.parseInt(jdgskYusenJunTypeJun);
			
			if (jdgmtTypeJun < jdgskTypeJun)
			{
				// 判定元優先
				return YUSEN_JUN_JDG_RSLT_JDGMT;
			}
			else if (jdgmtTypeJun > jdgskTypeJun)
			{
				// 判定先優先
				return YUSEN_JUN_JDG_RSLT_JDGSK;
			}
			/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
		}
		/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
		
		// 優先順位同等
		return YUSEN_JUN_JDG_RSLT_EVEN;
	}
	
	/**
	 * 優先順位下位の割引サービス[契約]（データ抽出項目[設定]）に適用可否「否」を設定します。
	 * 判定対象が割引サービス契約（データ抽出項目設定）の場合は、
	 * 優先順位上位の割引サービス[契約]（データ抽出項目[設定]）が運用日付時点で開始されている場合のみ設定します。
	 * 
	 * @param inMapWrisvcDchskmYusenJoi 優先順位上位・割引サービス[契約]マップ（データ抽出項目[設定]マップ）
	 * @param inMapWrisvcDchskmYusenKai 優先順位下位・割引サービス[契約]マップ（データ抽出項目[設定]マップ）
	 * @param opeDate 運用日付
	 * @param keiSetteFlag true:判定対象が割引サービス契約（データ抽出項目設定）の場合, false:それ以外
	 */
	private static void setAplyKh(
			HashMap<String, Object> inMapWrisvcDchskmYusenJoi,
			HashMap<String, Object> inMapWrisvcDchskmYusenKai,
			String opeDate, boolean keiSetteFlag)
	{
		// 判定対象が割引サービス（データ抽出項目）の場合
		if (!keiSetteFlag)
		{
			// 優先順位下位・割引サービス（データ抽出項目）が適用可否「否」
			inMapWrisvcDchskmYusenKai.put(APLY_KH, KH_H);
		}
		// 判定対象が割引サービス契約（データ抽出項目設定）の場合
		else
		{
			/* --------------------------------------------------------------------------------
			 * 優先順位下位の割引サービス契約（データ抽出項目設定）が開始済みの場合、
			 * 優先順位上位の割引サービス契約（データ抽出項目設定）が開始するまで適用される
			 * -------------------------------------------------------------------------------- */
			// 優先順位上位・割引サービス契約（データ抽出項目設定）.サービス開始年月日
			String yusenJoiSvcStaYmd = (String)inMapWrisvcDchskmYusenJoi.get(SVC_STA_YMD);
			// 優先順位下位・割引サービス契約（データ抽出項目設定）.サービス開始年月日
			String yusenKaiSvcStaYmd = (String)inMapWrisvcDchskmYusenKai.get(SVC_STA_YMD);
			
			// 優先順位下位の割引サービス契約（データ抽出項目設定）が開始されている場合
			if (!(yusenKaiSvcStaYmd == null || BLANK.equals(yusenKaiSvcStaYmd)) && opeDate.compareTo(yusenKaiSvcStaYmd) >= 0)
			{
				// 優先順位上位の割引サービス契約（データ抽出項目設定）が開始されていない場合
				if (yusenJoiSvcStaYmd == null || BLANK.equals(yusenJoiSvcStaYmd) || opeDate.compareTo(yusenJoiSvcStaYmd) < 0)
				{
					return;
				}
			}
			
			// 優先順位下位・割引サービス契約（データ抽出項目設定）が適用可否「否」
			inMapWrisvcDchskmYusenKai.put(APLY_KH, KH_H);
		}
	}
	
	/**
	 * 同時適用可否判定で適用可否「否」となった割引サービス[契約]（データ抽出項目[設定]）について、
	 * 割引サービス[契約]リスト（データ抽出項目[設定]リスト）<code>wrisvcDchskmList</code>から削除します。<BR>
	 * 
	 * @param wrisvcDchskmList 割引サービス[契約]リスト（データ抽出項目[設定]リスト）
	 */
	public static void removeAplyFailWrisvcDchskm(ArrayList<HashMap<String, Object>> wrisvcDchskmList)
	{
		Iterator<HashMap<String, Object>> itrWrisvcDchskmList = wrisvcDchskmList.iterator();
		while (itrWrisvcDchskmList.hasNext())
		{
			HashMap<String, Object> mapWrisvcDchskm = itrWrisvcDchskmList.next();
			
			// 割引サービス[契約]（データ抽出項目[設定]）.適用可否
			String aplyKh = (String)mapWrisvcDchskm.get(APLY_KH);
			if (KH_H.equals(aplyKh))
			{
				// 適用可否「否」：割引サービス[契約]リスト（データ抽出項目[設定]リスト）から
				// 対象の割引サービス[契約]（データ抽出項目[設定]）を削除する
				itrWrisvcDchskmList.remove();
			}
		}
		
		return;
	}
	
// v20.00.00 ADD START
	/**
	 * 同時適用可否判定で適用可否「否」となった割引サービス[契約]（データ抽出項目[設定]）について、
	 * 割引サービス[契約]リスト（データ抽出項目[設定]リスト）<code>wrisvcDchskmList</code>から削除します。<BR>
	 * 
	 * @param wrisvcDchskmList 割引サービス[契約]リスト（データ抽出項目[設定]リスト）
	 */
	public static void removeAplyFailWrisvcDchskmForKihk(ArrayList<HashMap<String, Object>> wrisvcDchskmList)
	{
		Iterator<HashMap<String, Object>> itrWrisvcDchskmList = wrisvcDchskmList.iterator();
		while (itrWrisvcDchskmList.hasNext())
		{
			HashMap<String, Object> mapWrisvcDchskm = itrWrisvcDchskmList.next();
			
			// 割引サービス[契約]（データ抽出項目[設定]）.適用可否
			String aplyKh = (String)mapWrisvcDchskm.get(APLY_KH);
			String wribTypeCd = (String)mapWrisvcDchskm.get(WRIB_TYPE_CD);
			if (KH_H.equals(aplyKh))
			{
				if(WRIB_TYPE_CD_KAP_WRIB.equals(wribTypeCd))
				{
					continue;
				}
				else
				{
					// 適用可否「否」：割引サービス[契約]リスト（データ抽出項目[設定]リスト）から
					// 対象の割引サービス[契約]（データ抽出項目[設定]）を削除する
					itrWrisvcDchskmList.remove();
				}
			}
		}
		
		return;
	}
// v20.00.00 ADD END
	
	/**
	 * 割引サービスの登録タイミングチェックを行います。<BR>
	 * <BR>
	 * 割引サービス契約のサービス課金開始年月日が
	 * 請求年月と同日または過去日であればチェックＯＫとし、請求年月より未来日であればチェックＮＧとします。
	 * 
	 * @param inMapWribsvk 割引サービス契約マップ
	 * @param seikyYm 請求年月
	 * 
	 * @return boolean true:チェックＯＫ, false:チェックＮＧ
	 * @throws Throwable
	 */
	public static boolean chkAddTmg(HashMap<String, Object> inMapWribsvk, String seikyYm) throws Throwable
	{
		// 割引サービス契約.サービス課金開始年月日
		String svcChrgStaymd = (String)inMapWribsvk.get(SVC_CHRG_STAYMD);
		
		if (svcChrgStaymd == null || BLANK.equals(svcChrgStaymd))
		{
			// チェックＮＧ
			return false;
		}
		
		// サービス課金開始年月日が請求年月と同日または過去日の場合
		if (seikyYm.compareTo(svcChrgStaymd) >= 0)
		{
			// チェックＯＫ
			return true;
		}
		// サービス課金開始年月日が請求年月より未来日の場合
		else
		{
			// チェックＮＧ
			return false;
		}
	}
	
	/**
	 * サービス契約ステータスからサービス開始前かサービス開始後かを判定します。<BR>
	 * <BR>
	 * ・サービス契約ステータスが「受付済」、「照査済」、「締結済」の場合、「サービス開始前」<BR>
	 * ・サービス契約ステータスが「サービス提供中」、「契約変更中（機器提供サービス契約のみ）」、
	 * 「休止・中断中」、「停止中」の場合、「サービス開始後」<BR>
	 * ・サービス契約ステータスが「解約済」、「キャンセル済」の場合、「対象外」(null)
	 * 
	 * @param inMapSvcKei サービス契約マップ
	 * 
	 * @return String 対象サービス判別結果
	 * @throws Exception
	 */
	public static String judgeSvcKeiSta(HashMap<String, Object> inMapSvcKei) throws Exception
	{
		// サービス契約ステータス
		String svcKeiStat = null;
		
		/* --------------------------------------------------------------------------------
		 * 対象契約識別コードをもとにサービス契約ステータスを取得
		 * -------------------------------------------------------------------------------- */
		// サービス契約.対象契約識別コード
		String tgKeiSkbtCd = (String)inMapSvcKei.get(TG_KEI_SKBT_CD);
		if (TG_KEI_SKBT_CD_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// サービス契約.サービス契約ステータス
			svcKeiStat = (String)inMapSvcKei.get(SVC_KEI_STAT);
		}
		else if (TG_KEI_SKBT_CD_SVC_KEI_UCWK.equals(tgKeiSkbtCd))
		{
			// サービス契約.サービス契約内訳ステータス
			svcKeiStat = (String)inMapSvcKei.get(SVC_KEI_UCWK_STAT);
		}
		else if (TG_KEI_SKBT_CD_OP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// サービス契約.オプションサービス契約ステータス
			svcKeiStat = (String)inMapSvcKei.get(OP_SVC_KEI_STAT);
		}
		else if (TG_KEI_SKBT_CD_SBOP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// サービス契約.サブオプションサービス契約ステータス
			svcKeiStat = (String)inMapSvcKei.get(SBOP_SVC_KEI_STAT);
		}
		else if (TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// サービス契約.機器提供サービス契約ステータス
			svcKeiStat = (String)inMapSvcKei.get(KKTK_SVC_KEI_STAT);
		}
		else if (TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(tgKeiSkbtCd))
		{
			// サービス契約.請求オプションサービス契約ステータス
			svcKeiStat = (String)inMapSvcKei.get(SEIOPSVC_KEI_STAT);
		}
		// 2013/11/07  ANK-1578-00-00 add start
		else if (TG_KEI_SKBT_CD_KKOP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// サービス契約.機器オプションサービス契約ステータス
			svcKeiStat = (String)inMapSvcKei.get(KKOP_SVC_KEI_STAT);
		}	
		// 2013/11/07  ANK-1578-00-00 add end
		
		/* --------------------------------------------------------------------------------
		 * サービス契約ステータスから対象サービス判別コードを判定
		 * -------------------------------------------------------------------------------- */
		// 対象契約識別コードが「サービス契約」、「サービス契約内訳」、「オプションサービス契約」、
		//「サブオプションサービス契約」、「請求オプションサービス契約」、「機器オプションサービス契約」の場合
		if (TG_KEI_SKBT_CD_SVC_KEI.equals(tgKeiSkbtCd) || TG_KEI_SKBT_CD_SVC_KEI_UCWK.equals(tgKeiSkbtCd)
				|| TG_KEI_SKBT_CD_OP_SVC_KEI.equals(tgKeiSkbtCd) || TG_KEI_SKBT_CD_SBOP_SVC_KEI.equals(tgKeiSkbtCd)
			/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
				|| TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(tgKeiSkbtCd)
			/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
			// 2013/11/07  ANK-1578-00-00 add start
				|| TG_KEI_SKBT_CD_KKOP_SVC_KEI.equals(tgKeiSkbtCd))
			// 2013/11/07  ANK-1578-00-00 add end
		{
			// サービス契約ステータスが「受付済」、「照査済」、「締結済」の場合
			if (SVC_KEI_STAT_UK_ZM.equals(svcKeiStat)
					|| SVC_KEI_STAT_SHOSA_ZM.equals(svcKeiStat) || SVC_KEI_STAT_CNC_ZM.equals(svcKeiStat))
			{
				// サービス開始前
				return SVC_STA_FLG_BF;
			}
			// サービス契約ステータスが「サービス提供中」、「休止・中断中」、「停止中」の場合
			else if (SVC_KEI_STAT_SVC_TK_CHU.equals(svcKeiStat)
					|| SVC_KEI_STAT_PAUSE_CHU.equals(svcKeiStat) || SVC_KEI_STAT_STP_CHU.equals(svcKeiStat))
			{
				// サービス開始後
				return SVC_STA_FLG_AF;
			}
			// サービス契約ステータスが「解約済」、「キャンセル済」の場合
			else if (SVC_KEI_STAT_DSL_ZM.equals(svcKeiStat) || SVC_KEI_STAT_CNCL_ZM.equals(svcKeiStat))
			{
				// 対象外
				return null;
			}
			else
			{
				throw new Exception(SVC_KEI_STAT_EXPTN_MSG);
			}
		}
		// 対象契約識別コードが「機器提供サービス契約」の場合
		else if (TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// 機器提供サービス契約ステータスが「受付済」、「照査済」、「締結済」の場合
			if (KKTK_SVC_KEI_STAT_UK_ZM.equals(svcKeiStat)
					|| KKTK_SVC_KEI_STAT_SHOSA_ZM.equals(svcKeiStat) || KKTK_SVC_KEI_STAT_CNC_ZM.equals(svcKeiStat))
			{
				// サービス開始前
				return SVC_STA_FLG_BF;
			}
			// 機器提供サービス契約ステータスが「サービス提供中」、「契約変更中」、「休止・中断中」、「停止中」の場合
			else if (KKTK_SVC_KEI_STAT_SVC_TK_CHU.equals(svcKeiStat) || KKTK_SVC_KEI_STAT_KEI_CHG_CHU.equals(svcKeiStat)
					|| KKTK_SVC_KEI_STAT_PAUSE_CHU.equals(svcKeiStat) || KKTK_SVC_KEI_STAT_STP_CHU.equals(svcKeiStat))
			{
				// サービス開始後
				return SVC_STA_FLG_AF;
			}
			// 機器提供サービス契約ステータスが「解約済」、「キャンセル済」の場合
			else if (KKTK_SVC_KEI_STAT_DSL_ZM.equals(svcKeiStat) || KKTK_SVC_KEI_STAT_CNCL_ZM.equals(svcKeiStat))
			{
				// 対象外
				return null;
			}
			else
			{
				throw new Exception(SVC_KEI_STAT_EXPTN_MSG);
			}
		}
		/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
		// 対象契約識別コードが「請求オプションサービス契約」の場合
//		else if (TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(tgKeiSkbtCd))
//		{
//			// ステータス定義されてない。。。
//		}
		/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
		else
		{
			throw new Exception(TG_KEI_SKBT_CD_EXPTN_MSG);
		}
	}
	
	/**
	 * 対象のサービス契約番号<code>svcKeiNo</code>のサービス契約が、
	 * 既に割引サービス対象契約（データ抽出項目設定対象契約）として登録されているかどうか判定します。<BR>
	 * <BR>
	 * @対象契約有効判定ループ【割引サービス契約抽出】処理<BR>
	 * 　割引サービス契約リスト（データ抽出項目設定リスト）<code>wribsvkDchskmstList</code>から、
	 *   下記条件を満たす割引サービス契約（データ抽出項目設定）を抽出します。<BR>
	 * 　抽出条件：　割引サービス契約.割引サービスコード（データ抽出項目設定.データ抽出項目コード）<BR>
	 * 　　= 割引サービス.割引サービスコード（データ抽出項目.データ抽出項目コード）<BR>
	 * A対象契約有効判定ループ【割引サービス対象契約（データ抽出項目設定対象契約）適用中・サービス契約抽出】処理<BR>
	 * 　@で抽出された割引サービス契約（データ抽出項目設定）に紐づく、全ての割引サービス対象契約（データ抽出項目設定対象契約）について、
	 *   下記条件を満たすサービス契約を抽出します。<BR>
	 * 　抽出条件：割引サービス対象契約（データ抽出項目設定対象契約）.サービス契約番号 = サービス契約番号<BR>
	 * BAで該当データが抽出された場合、入力パラメータ.サービス契約番号のサービス契約は、対象契約として無効と判定する。
	 * 
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param wribsvkDchskmstList 割引サービス契約リスト（データ抽出項目設定リスト）
	 * @param svcKeiNo サービス契約番号
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return boolean true:対象契約登録済み, false:対象契約未登録
	 */
	@SuppressWarnings("unchecked")
	public static boolean jdgTgKeiAddZm(HashMap<String, Object> inMapWrisvcDchskm,
			ArrayList<HashMap<String, Object>> wribsvkDchskmstList, String svcKeiNo, String wribDchsSkbtFlag)
	{
		/* ----------------------------------------------------------------------------------------------------
		 * 対象契約有効判定ループ【割引サービス契約（データ抽出項目設定）抽出】処理
		 *   抽出条件：割引サービス契約.割引サービスコード = 割引サービス.割引サービスコード
		 *             （データ抽出項目設定.データ抽出項目コード = データ抽出項目.データ抽出項目コード）
		 * ---------------------------------------------------------------------------------------------------- */
		// 割引サービス.割引サービスコード（データ抽出項目.データ抽出項目コード）
		String wrisvcDchskmCd = (String)getMapData(inMapWrisvcDchskm, WRIB_SVC_CD, DCHSKM_CD, wribDchsSkbtFlag);
		
		for (HashMap<String, Object> mapWribsvkDchskmst : wribsvkDchskmstList)
		{
			// 割引サービス契約.割引サービスコード（データ抽出項目設定.データ抽出項目コード）
			String tgWrisvcDchskmCd = (String)getMapData(mapWribsvkDchskmst, WRIB_SVC_CD, DCHSKM_CD, wribDchsSkbtFlag);
			
			// 割引サービス契約.割引サービスコード = 割引サービス.割引サービスコード
			// （データ抽出項目設定.データ抽出項目コード = データ抽出項目.データ抽出項目コード）の場合のみ、以下を実行
			if (wrisvcDchskmCd.equals(tgWrisvcDchskmCd))
			{
				// 割引サービス契約.割引サービス対象契約リスト（データ抽出項目設定.データ抽出項目設定対象契約リスト）
				ArrayList<HashMap<String, Object>> wrisvcDchskmTgKeiList
						= (ArrayList<HashMap<String, Object>>)getMapData(mapWribsvkDchskmst,
								WRISVC_TG_KEI_LIST, DCHSKMST_TG_KEI_LIST, wribDchsSkbtFlag);
				
				/* ----------------------------------------------------------------------------------------------------
				 * 対象契約有効判定ループ【割引サービス対象契約（データ抽出項目設定対象契約）適用中・サービス契約抽出】処理
				 *   抽出条件：割引サービス対象契約（データ抽出項目設定対象契約）.サービス契約番号 = 入力パラメータ.サービス契約番号
				 * ---------------------------------------------------------------------------------------------------- */
				for (HashMap<String, Object> mapWrisvcDchskmTgKei : wrisvcDchskmTgKeiList)
				{
					// 割引サービス対象契約（データ抽出項目設定対象契約）.サービス契約番号
					String tgSvcKeiNo = (String)mapWrisvcDchskmTgKei.get(SVC_KEI_NO);
					
					// 入力パラメータ.サービス契約番号と一致する場合
					if (svcKeiNo.equals(tgSvcKeiNo))
					{
						return true;
					}
				}
			}
		}
		
		return false;
	}
	
	/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
	/**
	 * 対象のサービス契約<code>mapSvcKei</code>が、
	 * 既に割引サービス対象契約（データ抽出項目設定対象契約）として登録されているかどうか判定します。<BR>
	 * <BR>
	 * @対象契約有効判定ループ【割引サービス契約抽出】処理<BR>
	 * 　割引サービス契約リスト（データ抽出項目設定リスト）<code>wribsvkDchskmstList</code>から、
	 *   下記条件を満たす割引サービス契約（データ抽出項目設定）を抽出します。<BR>
	 * 　抽出条件：　割引サービス契約.割引サービスコード（データ抽出項目設定.データ抽出項目コード）<BR>
	 * 　　= 割引サービス.割引サービスコード（データ抽出項目.データ抽出項目コード）<BR>
	 * A対象契約有効判定ループ【割引サービス対象契約（データ抽出項目設定対象契約）適用中・サービス契約抽出】処理<BR>
	 * 　@で抽出された割引サービス契約（データ抽出項目設定）に紐づく、全ての割引サービス対象契約（データ抽出項目設定対象契約）について、
	 *   下記条件を満たすサービス契約を抽出します。<BR>
	 * 　抽出条件：割引サービス対象契約（データ抽出項目設定対象契約）.サービス契約番号 = サービス契約.サービス契約番号<BR>
	 * BAで該当データが抽出された場合、入力パラメータ.サービス契約番号のサービス契約は、対象契約として無効と判定する。
	 * 
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param wribsvkDchskmstList 割引サービス契約リスト（データ抽出項目設定リスト）
	 * @param mapSvcKei 判定対象のサービス契約マップ
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return boolean true:対象契約登録済, false:対象契約未登録
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public static boolean jdgTgKeiAddZm(HashMap<String, Object> inMapWrisvcDchskm,
			ArrayList<HashMap<String, Object>> wribsvkDchskmstList, HashMap<String, Object> mapSvcKei, String wribDchsSkbtFlag) throws Exception
	{
		/* ----------------------------------------------------------------------------------------------------
		 * 対象契約有効判定ループ【割引サービス契約（データ抽出項目設定）抽出】処理
		 *   抽出条件：割引サービス契約.割引サービスコード = 割引サービス.割引サービスコード
		 *             （データ抽出項目設定.データ抽出項目コード = データ抽出項目.データ抽出項目コード）
		 * ---------------------------------------------------------------------------------------------------- */
		// 割引サービス.割引サービスコード（データ抽出項目.データ抽出項目コード）
		String wrisvcDchskmCd = (String)getMapData(inMapWrisvcDchskm, WRIB_SVC_CD, DCHSKM_CD, wribDchsSkbtFlag);
		
		for (HashMap<String, Object> mapWribsvkDchskmst : wribsvkDchskmstList)
		{
			// 割引サービス契約.割引サービスコード（データ抽出項目設定.データ抽出項目コード）
			String tgWrisvcDchskmCd = (String)getMapData(mapWribsvkDchskmst, WRIB_SVC_CD, DCHSKM_CD, wribDchsSkbtFlag);
			
			// 割引サービス契約.割引サービスコード = 割引サービス.割引サービスコード
			// （データ抽出項目設定.データ抽出項目コード = データ抽出項目.データ抽出項目コード）の場合のみ、以下を実行
			if (wrisvcDchskmCd.equals(tgWrisvcDchskmCd))
			{
				// 割引サービス契約.割引サービス対象契約リスト（データ抽出項目設定.データ抽出項目設定対象契約リスト）
				ArrayList<HashMap<String, Object>> wrisvcDchskmTgKeiList
						= (ArrayList<HashMap<String, Object>>)getMapData(mapWribsvkDchskmst,
								WRISVC_TG_KEI_LIST, DCHSKMST_TG_KEI_LIST, wribDchsSkbtFlag);
				
				/* ----------------------------------------------------------------------------------------------------
				 * 対象契約有効判定ループ【割引サービス対象契約（データ抽出項目設定対象契約）適用中・サービス契約抽出】処理
				 *   抽出条件：割引サービス対象契約（データ抽出項目設定対象契約）.サービス契約番号 = 入力パラメータ.サービス契約番号
				 * ---------------------------------------------------------------------------------------------------- */
				for (HashMap<String, Object> mapWrisvcDchskmTgKei : wrisvcDchskmTgKeiList)
				{
					if (isMatchSvcKeiNo(mapWrisvcDchskmTgKei, mapSvcKei))
					{
						return true;
					}
				}
			}
		}
		
		return false;
	}
	/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
	
	/**
	 * 対象契約識別コードに該当するサービス契約番号が一致するか判定する<br>
	 * true:一致する／false:一致しない
	 * 
	 * @param mapWrisvcDchskmTgKei 割引サービス対象契約リスト
	 * @param mapSvcKei 判定対象のサービス契約マップ
	 */
	public static boolean isMatchSvcKeiNo(	HashMap<String, Object> mapWrisvcDchskmTgKei,
												HashMap<String, Object> mapSvcKei) throws Exception
	{
		// サービス契約.対象契約識別コード
		String tgKeiSkbtCd = (String) mapSvcKei.get(TG_KEI_SKBT_CD);
		
		if (TG_KEI_SKBT_CD_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// 対象契約がサービス契約の場合
			// 割引サービス対象契約（データ抽出項目設定対象契約）.サービス契約番号
			String tgSvcKeiNo = (String)mapWrisvcDchskmTgKei.get(SVC_KEI_NO);
			
			// サービス契約.サービス契約番号
			String svcKeiNo = (String)mapSvcKei.get(SVC_KEI_NO);
			// サービス契約.サービス契約番号と一致する場合
			if (svcKeiNo.equals(tgSvcKeiNo))
			{
				return true;
			}
		}
		else if (TG_KEI_SKBT_CD_SVC_KEI_UCWK.equals(tgKeiSkbtCd))
		{
			// 対象契約がサービス契約内訳の場合
			// 割引サービス対象契約（データ抽出項目設定対象契約）.サービス契約内訳番号
			String tgSvcKeiUcwkNo = (String) mapWrisvcDchskmTgKei.get(SVC_KEI_UCWK_NO);
			
			// サービス契約.サービス契約内訳番号
			String svcKeiUcwkNo = (String) mapSvcKei.get(SVC_KEI_UCWK_NO);
			
			// サービス契約.サービス契約内訳番号と一致する場合
			if (svcKeiUcwkNo.equals(tgSvcKeiUcwkNo))
			{
				return true;
			}
			
		}
		else if (TG_KEI_SKBT_CD_OP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// 対象契約がオプションサービス契約の場合
			// 割引サービス対象契約（データ抽出項目設定対象契約）.オプションサービス契約番号
			String tgOpSvcKeiNo = (String) mapWrisvcDchskmTgKei.get(OP_SVC_KEI_NO);
			
			// サービス契約.オプションサービス契約番号
			String opSvcKeiNo = (String) mapSvcKei.get(OP_SVC_KEI_NO);
			
			// サービス契約.オプションサービス契約番号と一致する場合
			if (opSvcKeiNo.equals(tgOpSvcKeiNo))
			{
				return true;
			}
		}
		else if (TG_KEI_SKBT_CD_SBOP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// 対象契約がサブオプションサービス契約の場合
			// 割引サービス対象契約（データ抽出項目設定対象契約）.サブオプションサービス契約番号
			String tgSbopSvcKeiNo = (String) mapWrisvcDchskmTgKei.get(SBOP_SVC_KEI_NO);
			
			// サービス契約.サブオプションサービス契約番号
			String sbopSvcKeiNo = (String) mapSvcKei.get(SBOP_SVC_KEI_NO);
			
			// サービス契約.サブオプションサービス契約番号と一致する場合
			if (sbopSvcKeiNo.equals(tgSbopSvcKeiNo))
			{
				return true;
			}
		}
		else if (TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// 対象契約が機器提供サービス契約の場合
			// 割引サービス対象契約（データ抽出項目設定対象契約）.機器提供サービス契約番号
			String tgKktkSvcKeiNo = (String) mapWrisvcDchskmTgKei.get(KKTK_SVC_KEI_NO);
			
			// サービス契約.機器提供サービス契約番号
			String kktkSvcKeiNo = (String) mapSvcKei.get(KKTK_SVC_KEI_NO);
			
			// サービス契約.機器提供サービス契約番号と一致する場合
			if (kktkSvcKeiNo.equals(tgKktkSvcKeiNo))
			{
				return true;
			}
		}
		else if (TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(tgKeiSkbtCd))
		{
			// 対象契約が請求オプションサービス契約の場合
			// 割引サービス対象契約（データ抽出項目設定対象契約）.請求オプションサービス契約番号
			String tgSeiopSvcKeiNo = (String) mapWrisvcDchskmTgKei.get(SEIOPSVC_KEI_NO);
			
			// サービス契約.請求オプションサービス契約番号
			String seiopSvcKeiNo = (String) mapSvcKei.get(SEIOPSVC_KEI_NO);
			
			// サービス契約.請求オプションサービス契約番号と一致する場合
			if (seiopSvcKeiNo.equals(tgSeiopSvcKeiNo))
			{
				return true;
			}
		}
		// ANK-1578-00-00 add start
		else if (TG_KEI_SKBT_CD_KKOP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// 対象契約が機器オプションサービス契約の場合
			// 割引サービス対象契約（データ抽出項目設定対象契約）.機器オプションサービス契約番号
			String tgKkopSvcKeiNo = (String) mapWrisvcDchskmTgKei.get(KKOP_SVC_KEI_NO);
			
			// サービス契約.機器オプションサービス契約番号
			String kkopSvcKeiNo = (String) mapSvcKei.get(KKOP_SVC_KEI_NO);
			
			// サービス契約.機器オプションサービス契約番号と一致する場合
			if (kkopSvcKeiNo.equals(tgKkopSvcKeiNo))
			{
				return true;
			}
		}
		// ANK-1578-00-00 add end
		else
		{
			throw new Exception(TG_KEI_SKBT_CD_EXPTN_MSG);
		}
		return false;
	}
	
	/**
	 * 取得対象マップ<code>inMap</code>が割引サービスかデータ抽出項目かに応じて、取得項目キーを切り替え、
	 * マップから取得したデータを返却します。<BR>
	 * 
	 * @param inMap 取得対象マップ
	 * @param keyForWrisvc 割引サービス用項目キー
	 * @param keyForDchskm データ抽出項目用項目キー
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return Object 取得データ
	 */
	public static Object getMapData(HashMap<String, Object> inMap,
			String keyForWrisvc, String keyForDchskm, String wribDchsSkbtFlag)
	{
		Object mapData = null;
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			mapData = inMap.get(keyForWrisvc);
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			mapData = inMap.get(keyForDchskm);
		}
		
		return mapData;
	}
	
	/**
	 * 設定対象マップ<code>inMap</code>が割引サービスかデータ抽出項目かに応じて、設定項目キーを切り替え、
	 * マップにデータを設定します。<BR>
	 * 
	 * @param inMap 設定対象マップ
	 * @param keyForWrisvc 割引サービス用項目キー
	 * @param keyForDchskm データ抽出項目用項目キー
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param mapData 設定データ
	 */
	public static void setMapData(HashMap<String, Object> inMap,
			String keyForWrisvc, String keyForDchskm, String wribDchsSkbtFlag, Object mapData)
	{
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			inMap.put(keyForWrisvc, mapData);
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			inMap.put(keyForDchskm, mapData);
		}
		
		return;
	}
	
	/**
	 * 探索対象リスト<code>searchTgList</code>から、探索対象キー<code>searchTgKey</code>の項目が
	 * 探索値と<code>searchValue</code>一致するマップを抽出します。
	 * 
	 * @param searchTgList 探索対象リスト
	 * @param searchTgKey 探索対象キー
	 * @param searchValue 探索値
	 * 
	 * @return HashMap<String, Object> 探索されたマップ
	 * @throws Exception 
	 */
	public static HashMap<String, Object> getMapFromList(ArrayList<HashMap<String, Object>> searchTgList,
			String searchTgKey, String searchValue) throws Exception
	{
		HashMap<String, Object> map = null;
		boolean searchRslt = false;
		
		for (int i = 0; i < searchTgList.size(); i++)
		{
			map = searchTgList.get(i);
			
			String value = (String)map.get(searchTgKey);
			
			if (searchValue.equals(value))
			{
				searchRslt = true;
				break;
			}
		}
		if (!searchRslt)
		{
			throw new Exception();
		}
		
		return map;
	}
	
	/**
	 * 併用可否チェック
	 * 
	 * @param wribsvkDchskmstListForSet
	 * @param wribsvkDchskmstListForShokai
	 * @param rulePatternList
	 * @throws Throwable 
	 */
	public static ArrayList<HashMap<String, Object>> jdgDojiAplyKh(
			ArrayList<HashMap<String, Object>> wribsvkDchskmstListForSet,
			ArrayList<HashMap<String, Object>> wribsvkDchskmstListForShokai,
			ArrayList<HashMap<String, Object>> rulePatternList) throws Throwable
	{
		String diffSvcCd1 = "";
		String diffTypeCd1 = "";
		String diffSvcCd2 = "";
		String diffTypeCd2 = "";
		
		// 割引サービス成立条件合致リスト（併用可否チェック後）
		ArrayList<HashMap<String, Object>> dojiOKList = wribsvkDchskmstListForShokai;
		
		// 割引サービス成立条件合致リスト全件を対象（割引サービスコードで昇順にて並び替え）
		sortArrayList(wribsvkDchskmstListForSet);
		Iterator<HashMap<String, Object>> ite = wribsvkDchskmstListForSet.iterator();
		while (ite.hasNext())
		{
			HashMap<String, Object> matchWribSvcMap = ite.next();
			// 併用可否を否で初期化
			matchWribSvcMap.put(APLY_KH, KH_H);
			
			if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(matchWribSvcMap.get(WRIB_DCHS_SKBT_FLAG)))
			{
				if (diffSvcCd2.equals(matchWribSvcMap.get(WRIB_SVC_CD)))
				{
					// 同じ割引サービスコードは読み飛ばし
					continue;
				}
				diffSvcCd2 = (String)matchWribSvcMap.get(WRIB_SVC_CD);
				diffTypeCd2 = (String)matchWribSvcMap.get(WRIB_TYPE_CD);
			}
			else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(matchWribSvcMap.get(WRIB_DCHS_SKBT_FLAG)))
			{
				if (diffSvcCd2.equals(matchWribSvcMap.get(DCHSKM_CD)))
				{
					// 同じデータ抽出項目コードは読み飛ばし
					continue;
				}
				diffSvcCd2 = (String)matchWribSvcMap.get(DCHSKM_CD);
				diffTypeCd2 = (String)matchWribSvcMap.get(DCHS_TYPE_CD);
			}
			
			
			// 最初だけ無条件に追加
			if (dojiOKList.isEmpty())
			{
				dojiOKList.add(matchWribSvcMap);
				matchWribSvcMap.put(APLY_KH, KH_K);
			}
			else
			{
				boolean addFlg = true;
				for (int i = 0; i < dojiOKList.size(); i++)
				{
					HashMap<String, Object> dojiOKMap = dojiOKList.get(i);
					if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(dojiOKMap.get(WRIB_DCHS_SKBT_FLAG)))
					{
						diffSvcCd1 = (String)dojiOKMap.get(WRIB_SVC_CD);
						diffTypeCd1 = (String)dojiOKMap.get(WRIB_TYPE_CD);
					}
					else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(dojiOKMap.get(WRIB_DCHS_SKBT_FLAG)))
					{
						diffSvcCd1 = (String)dojiOKMap.get(DCHSKM_CD);
						diffTypeCd1 = (String)dojiOKMap.get(DCHS_TYPE_CD);
					}
					
					// 相関チェック結果コード取得
					HashMap<String, Object> ruleInfo = getSokanCkrltCd(rulePatternList, diffSvcCd1, diffTypeCd1, diffSvcCd2, diffTypeCd2);
					String sokanCkrltCd = null;
					String sokanCkjtSbtCd = null;
					if (ruleInfo != null)
					{
						sokanCkrltCd = (String)ruleInfo.get(SOKAN_CKRLT_CD);
						sokanCkjtSbtCd = (String)ruleInfo.get(WRIB_SOKAN_CKJK_SBT_CD);
					}
					
					//--------------------------------
					// 1件目が2件目に対し優先
					// WRIB_SVC_CD_1 > WRIB_SVC_CD_2
					//--------------------------------
					if (SOKAN_RSLT_1_GT_2.equals(sokanCkrltCd))
					{
						// ★契約中レコードに2件目が存在したら解約対象とする
						setAplyKh(wribsvkDchskmstListForShokai, sokanCkjtSbtCd, diffSvcCd2, diffTypeCd2);
						
						addFlg = false;
						// 追加しないことが決定したので次の割引サービス判定へ
						break;
					}
					//--------------------------------
					// 1件目が2件目に対し劣後
					// WRIB_SVC_CD_1 < WRIB_SVC_CD_2
					//--------------------------------
					else if (SOKAN_RSLT_1_LT_2.equals(sokanCkrltCd))
					{
						// ★契約中レコードに1件目が存在したら解約対象とする
						setAplyKh(wribsvkDchskmstListForShokai, sokanCkjtSbtCd, diffSvcCd1, diffTypeCd1);
						
						// WRIB_SVC_CD_1を削除
						// 1件目は必ずリスト内に設定済みなのでリストを全件対象とする
						for (int j = 0; j < dojiOKList.size(); j++)
						{
							HashMap<String, Object> diffWribSvcMap = dojiOKList.get(j);
							
							// リスト内から併用可否で負けたWRIB_SVC_CD_1を削除する為に位置特定
							if (isTargetCdMatch(diffWribSvcMap, sokanCkjtSbtCd, diffSvcCd1, diffTypeCd1))
							{
								diffWribSvcMap.put(APLY_KH, KH_H);
								dojiOKList.remove(j);
								i--;
							}
						}
						addFlg = true;
					}
					//--------------------------------
					// 1件目が2件目に対し同格
					// WRIB_SVC_CD_1 = WRIB_SVC_CD_2
					//--------------------------------
					else if (SOKAN_RSLT_1_EQ_2.equals(sokanCkrltCd))
					{
						addFlg = true;
					}
					//--------------------------------
					// 相関関係が取得できない場合
					//--------------------------------
					else
					{
						addFlg = true;
					}
				}
				if (addFlg)
				{
					// WRIB_SVC_CD_2を追加
					dojiOKList.add(matchWribSvcMap);
					matchWribSvcMap.put(APLY_KH, KH_K);
				}
			}
		}
		
		return dojiOKList;
	}
	/**
	 * 相関チェック結果コード取得
	 * 
	 * @param rulePatternList 割引サービス相関チェックマスタ全件リスト
	 * @param diffSvcCd1 比較用サービスコード1
	 * @param diffTypeCd1 比較用タイプコード1
	 * @param diffSvcCd2 比較用サービスコード2
	 * @param diffTypeCd2 比較用タイプコード2
	 * @return
	 */
	private static HashMap<String, Object> getSokanCkrltCd(ArrayList<HashMap<String, Object>> rulePatternList,
															String diffSvcCd1, String diffTypeCd1, 
															String diffSvcCd2, String diffTypeCd2)
	{
		// 割引サービス相関チェックマスタの全件を走査
		Iterator<HashMap<String, Object>> ite = rulePatternList.iterator();
		while (ite.hasNext())
		{
			// 割引サービス相関チェックマスタ1レコード情報を取得
			HashMap<String, Object> ruleInfo = ite.next();
			
			String sbtCd       = nullToBlank((String)ruleInfo.get(WRIB_SOKAN_CKJK_SBT_CD));
			String wribSvcCd1  = nullToBlank((String)ruleInfo.get(WRIB_SVC_CD_1));
			String wribTypeCd1 = nullToBlank((String)ruleInfo.get(WRIB_TYPE_CD_1));
			String dchskmCd1   = nullToBlank((String)ruleInfo.get(DCHSKM_CD_1));
			String dchsTypeCd1 = nullToBlank((String)ruleInfo.get(DCHS_TYPE_CD_1));
			String wribSvcCd2  = nullToBlank((String)ruleInfo.get(WRIB_SVC_CD_2));
			String wribTypeCd2 = nullToBlank((String)ruleInfo.get(WRIB_TYPE_CD_2));
			String dchskmCd2   = nullToBlank((String)ruleInfo.get(DCHSKM_CD_2));
			String dchsTypeCd2 = nullToBlank((String)ruleInfo.get(DCHS_TYPE_CD_2));
			
			// 割引サービスコード 対 割引サービスコード
			if (W_SVCCD_VS_W_SVCCD.equals(sbtCd))
			{
				if (wribSvcCd1.equals(nullToBlank(diffSvcCd1)) && wribSvcCd2.equals(nullToBlank(diffSvcCd2)))
				{
					return ruleInfo;
				}
			// 割引サービスコード 対 割引タイプコード
			}
			else if (W_SVCCD_VS_W_TYPECD.equals(sbtCd))
			{
				if (wribSvcCd1.equals(nullToBlank(diffSvcCd1)) && wribTypeCd2.equals(nullToBlank(diffTypeCd2)))
				{
					return ruleInfo;
				}
			// 割引サービスコード 対 データ抽出項目コード
			}
			else if (W_SVCCD_VS_D_SVCCD.equals(sbtCd))
			{
				if (wribSvcCd1.equals(nullToBlank(diffSvcCd1)) && dchskmCd2.equals(nullToBlank(diffSvcCd2)))
				{
					return ruleInfo;
				}
			// 割引サービスコード 対 データ抽出タイプコード
			}
			else if (W_SVCCD_VS_D_TYPECD.equals(sbtCd))
			{
				if (wribSvcCd1.equals(nullToBlank(diffSvcCd1)) && dchsTypeCd2.equals(nullToBlank(diffTypeCd2)))
				{
					return ruleInfo;
				}
			// 割引タイプコード 対 割引サービスコード
			}
			else if (W_TYPECD_VS_W_SVCCD.equals(sbtCd))
			{
				if (wribTypeCd1.equals(nullToBlank(diffTypeCd1)) && wribSvcCd2.equals(nullToBlank(diffSvcCd2)))
				{
					return ruleInfo;
				}
			// 割引タイプコード 対 割引タイプコード
			}
			else if (W_TYPECD_VS_W_TYPECD.equals(sbtCd))
			{
				if (wribTypeCd1.equals(nullToBlank(diffTypeCd1)) && wribTypeCd2.equals(nullToBlank(diffTypeCd2)))
				{
					return ruleInfo;
				}
			// 割引タイプコード 対 データ抽出項目コード
			}
			else if (W_TYPECD_VS_D_SVCCD.equals(sbtCd))
			{
				if (wribTypeCd1.equals(nullToBlank(diffTypeCd1)) && dchskmCd2.equals(nullToBlank(diffSvcCd2)))
				{
					return ruleInfo;
				}
			// 割引タイプコード 対 データ抽出タイプコード
			}
			else if (W_TYPECD_VS_D_TYPECD.equals(sbtCd))
			{
				if (wribTypeCd1.equals(nullToBlank(diffTypeCd1)) && dchsTypeCd2.equals(nullToBlank(diffTypeCd2)))
				{
					return ruleInfo;
				}
			// データ抽出項目コード 対 割引サービスコード
			}
			else if (D_SVCCD_VS_W_SVCCD.equals(sbtCd))
			{
				if (dchskmCd1.equals(nullToBlank(diffSvcCd1)) && wribSvcCd2.equals(nullToBlank(diffSvcCd2)))
				{
					return ruleInfo;
				}
			// データ抽出項目コード 対 割引タイプコード
			}
			else if (D_SVCCD_VS_W_TYPECD.equals(sbtCd))
			{
				if (dchskmCd1.equals(nullToBlank(diffSvcCd1)) && wribTypeCd2.equals(nullToBlank(diffTypeCd2)))
				{
					return ruleInfo;
				}
			// データ抽出項目コード 対 データ抽出項目コード
			}
			else if (D_SVCCD_VS_D_SVCCD.equals(sbtCd))
			{
				if (dchskmCd1.equals(nullToBlank(diffSvcCd1)) && dchskmCd2.equals(nullToBlank(diffSvcCd2)))
				{
					return ruleInfo;
				}
			// データ抽出項目コード 対 データ抽出タイプコード
			}
			else if (D_SVCCD_VS_D_TYPECD.equals(sbtCd))
			{
				if (dchskmCd1.equals(nullToBlank(diffSvcCd1)) && dchsTypeCd2.equals(nullToBlank(diffTypeCd2)))
				{
					return ruleInfo;
				}
			// データ抽出タイプコード 対 割引サービスコード
			}
			else if (D_TYPECD_VS_W_SVCCD.equals(sbtCd))
			{
				if (dchsTypeCd1.equals(nullToBlank(diffTypeCd1)) && wribSvcCd2.equals(nullToBlank(diffSvcCd2)))
				{
					return ruleInfo;
				}
			// データ抽出タイプコード 対 割引タイプコード
			}
			else if (D_TYPECD_VS_W_TYPECD.equals(sbtCd))
			{
				if (dchsTypeCd1.equals(nullToBlank(diffTypeCd1)) && wribTypeCd2.equals(nullToBlank(diffTypeCd2)))
				{
					return ruleInfo;
				}
			// データ抽出タイプコード 対 データ抽出項目コード
			}
			else if (D_TYPECD_VS_D_SVCCD.equals(sbtCd))
			{
				if (dchsTypeCd1.equals(nullToBlank(diffTypeCd1)) && dchskmCd2.equals(nullToBlank(diffSvcCd2)))
				{
					return ruleInfo;
				}
			// データ抽出タイプコード 対 データ抽出タイプコード
			}
			else if (D_TYPECD_VS_D_TYPECD.equals(sbtCd))
			{
				if (dchsTypeCd1.equals(nullToBlank(diffTypeCd1)) && dchsTypeCd2.equals(nullToBlank(diffTypeCd2)))
				{
					return ruleInfo;
				}
			}
		}
		return null;
	}

	/**
	 * 引数のサービスコード、又はタイプコードがマップ内に存在するかどうかを判定する
	 * true：存在する、false：存在しない
	 * 
	 * @param map
	 * @param sokanCkjtSbtCd
	 * @param diffSvcCd1
	 * @param diffTypeCd1
	 * @return
	 */
	private static boolean isTargetCdMatch(HashMap<String, Object> map, String sokanCkjtSbtCd, String diffSvcCd1, String diffTypeCd1)
	{
		if (Arrays.asList(W_SVCCD_VS_LIST).contains(sokanCkjtSbtCd))
		{
			if (diffSvcCd1.equals(map.get(WRIB_SVC_CD)))
			{
				return true;
			}
		}
		if (Arrays.asList(W_TYPECD_VS_LIST).contains(sokanCkjtSbtCd))
		{
			if (diffTypeCd1.equals(map.get(WRIB_TYPE_CD)))
			{
				return true;
			}
		}
		if (Arrays.asList(D_SVCCD_VS_LIST).contains(sokanCkjtSbtCd))
		{
			if (diffSvcCd1.equals(map.get(DCHSKM_CD)))
			{
				return true;
			}
		}
		if (Arrays.asList(D_TYPECD_VS_LIST).contains(sokanCkjtSbtCd))
		{
			if (diffTypeCd1.equals(map.get(DCHS_TYPE_CD)))
			{
				return true;
			}
		}
		return false;
	}
	
	/**
	 * 引数のサービスコード、又はタイプコードがリスト内に存在する場合は
	 * 否を設定する。（登録済みの契約情報の解約用）
	 * 
	 * @param wribsvkDchskmstListForShokai
	 * @param sokanCkjtSbtCd
	 * @param diffSvcCd
	 * @param diffTypeCd
	 */
	private static void setAplyKh(
			ArrayList<HashMap<String, Object>> wribsvkDchskmstListForShokai,
			String sokanCkjtSbtCd,
			String diffSvcCd,
			String diffTypeCd)
	{
		if (Arrays.asList(W_SVCCD_VS_LIST).contains(sokanCkjtSbtCd))
		{
			for (HashMap<String, Object> map : wribsvkDchskmstListForShokai)
			{
				if (diffSvcCd.equals(map.get(WRIB_SVC_CD)))
				{
					map.put(APLY_KH, KH_H);
				}
			}
		}
		if (Arrays.asList(W_TYPECD_VS_LIST).contains(sokanCkjtSbtCd))
		{
			for (HashMap<String, Object> map : wribsvkDchskmstListForShokai)
			{
				if (diffTypeCd.equals(map.get(WRIB_TYPE_CD)))
				{
					map.put(APLY_KH, KH_H);
				}
			}
		}
		if (Arrays.asList(D_SVCCD_VS_LIST).contains(sokanCkjtSbtCd))
		{
			for (HashMap<String, Object> map : wribsvkDchskmstListForShokai)
			{
				if (diffSvcCd.equals(map.get(DCHSKM_CD)))
				{
					map.put(APLY_KH, KH_H);
				}
			}
		}
		if (Arrays.asList(D_TYPECD_VS_LIST).contains(sokanCkjtSbtCd))
		{
			for (HashMap<String, Object> map : wribsvkDchskmstListForShokai)
			{
				if (diffTypeCd.equals(map.get(DCHS_TYPE_CD)))
				{
					map.put(APLY_KH, KH_H);
				}
			}
		}
	}
	
	/**
	 * <dd>メソッド名	：sortArrayList
	 * <dd>メソッド説明	：ArrayListのソートを行う。
	 * @param  dataList データリスト
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	public static void sortArrayList(ArrayList<HashMap<String, Object>> dataList) throws Exception
	{
		Collections.sort(dataList, new Comparator<HashMap<String, Object>>()
		{
			/**
			 * <dd>メソッド名	：compare
			 * <dd>メソッド説明	：ハッシュマップの比較を行う。
			 * @param  m1 ハッシュマップ
			 * @param  m2 ハッシュマップ
			 * @return 比較結果
			 */
			public int compare(HashMap<String, Object> m1, HashMap<String, Object> m2)
			{
				// 割引サービスコード(昇順)
				String str = "";
				if(m1.get(WRIB_SVC_CD) != null)
				{
					str = (String)m1.get(WRIB_SVC_CD);
				}
				String str0 = "";
				if(m2.get(WRIB_SVC_CD) != null)
				{
					str0 = (String)m2.get(WRIB_SVC_CD);
				}
				int result = str.compareTo(str0);
				
				return result;
			}
		});
	}
	
	/**
	 * nullを空文字に置き換え
	 * 
	 * @param str
	 * @param halfflg
	 * @return
	 */
	private static String nullToBlank(String str)
	{
		if (str == null)
		{
			return "";
		}
		return str;
	}

}
