/*********************************************************************
*	All Rights reserved,Copyright c Fujitsu, 2011
**********************************************************************
*＜プログラム内容＞
*	システム名		：プロジェクト共通
*	モジュール名	：JKKBatIdoKns
*	ソースファイル名：JKKBatIdoKns.java
*	作成者			：富士通
*	日付			：2012年09月03日
*＜機能概要＞
*	異動検証を行う共通機能を提供する。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/09/03	富士通		新規作成
*	v5.00.01	2013/04/09	富士通		【KT1-2013-0000482】
*
**********************************************************************/
package eo.business.common;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

import com.fujitsu.futurity.rule.common.JRuleXMLHandler;
import com.fujitsu.futurity.rule.xml.compare.JRuleXMLPattern;
import com.sun.org.apache.bcel.internal.generic.CPInstruction;

import eo.business.util.table.JBSbatKK_T_KAISEN_TG_SVKEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.business.util.table.JBSbatKU_T_KOJIAK;
import eo.business.util.table.JBSbatZM_M_BUSIDAY_KANRI;
import eo.business.util.table.JBSbatZM_M_TAKNKIKI_MODEL;
import eo.common.util.JPCDateUtil;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;


/**
 * データ抽出項目の設定や解除を行う共通クラスです。<p>
 * <br>
 * @author 富士通
 */
public class JKVBatIdoKns
{
	
	/** バッチ共通パラメータ */
	private static JBSbatCommonItem commonItem = null;
	
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";
	
	/** テーブル(サービス契約内訳)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_UCWK = "KK_T_SVC_KEI_UCWK";
	
	/** テーブル(機器提供サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";
	
	/** テーブル(オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_OP_SVC_KEI = "KK_T_OP_SVC_KEI";
	
	/** テーブル(サブオプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_SBOP_SVC_KEI = "KK_T_SBOP_SVC_KEI";

	/** テーブル(工事完了ワーク)*/
	private static final String D_TBL_NAME_KK_T_KJ_FIN_WK = "KK_T_KJ_FIN_WK";

	/** テーブル(ＡＤＳＬ工事)*/
	private static final String D_TBL_NAME_KK_T_ADSL_KOJI = "KK_T_ADSL_KOJI";

	/** テーブル(番ポ工事)*/
	private static final String D_TBL_NAME_TU_T_BMP_KOJI = "TU_T_BMP_KOJI";

	/** テーブル(配送)*/
	private static final String D_TBL_NAME_DK_T_HAISO = "DK_T_HAISO";

	/** テーブル(申込)*/
	private static final String D_TBL_NAME_KK_T_MSKM = "KK_T_MSKM";
	
	/** テーブル(申込明細)*/
	private static final String D_TBL_NAME_KK_T_MSKM_DTL = "KK_T_MSKM_DTL";

	/** テーブル(料金スケジュール定義)*/
	private static final String D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI = "CH_M_PRC_SCHDL_TEIGI";

	/** テーブル(工事案件)*/
	private static final String D_TBL_NAME_KU_T_KOJIAK = "KU_T_KOJIAK";

	/** テーブル(営業日管理)*/
	private static final String D_TBL_NAME_ZM_M_BUSIDAY_KANRI = "ZM_M_BUSIDAY_KANRI";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_SVC_KEI_KV_SELECT_001 = "KV_SELECT_001";
	
	/** SQL定義キー(KV_SELECT_002)*/
	private static final String KK_T_SVC_KEI_KV_SELECT_002 = "KV_SELECT_002";
	
	/** SQL定義キー(KV_SELECT_006)*/
	private static final String KK_T_SVC_KEI_KV_SELECT_006 = "KV_SELECT_006";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_KKTK_SVC_KEI_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_002)*/
	private static final String KK_T_KKTK_SVC_KEI_KV_SELECT_002 = "KV_SELECT_002";
	
	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_OP_SVC_KEI_KV_SELECT_001 = "KV_SELECT_001";
	
	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_SBOP_SVC_KEI_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_KJ_FIN_WK_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_ADSL_KOJI_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String TU_T_BMP_KOJI_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String DK_T_HAISO_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String DK_T_HAISO_KV_SELECT_002 = "KV_SELECT_002";
	
	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_SVC_KEI_UCWK_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_MSKM_KV_SELECT_001 = "KV_SELECT_001";
	
	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_MSKM_DTL_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String CH_M_PRC_SCHDL_TEIGI_KV_SELECT_002 = "KV_SELECT_002";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KU_T_KOJIAK_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String ZM_M_BUSIDAY_KANRI_KV_SELECT_001 = "KV_SELECT_001";

	
	/** テーブルアクセスクラス(サービス契約)*/
	private static JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	
	/** テーブルアクセスクラス(サービス契約内訳)*/
	private static JBSbatSQLAccess db_KK_T_SVC_KEI_UCWK = null;
	
	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private static JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;
	
	/** テーブルアクセスクラス(オプションサービス契約)*/
	private static JBSbatSQLAccess db_KK_T_OP_SVC_KEI = null;
	
	/** テーブルアクセスクラス(サブオプションサービス契約)*/
	private static JBSbatSQLAccess db_KK_T_SBOP_SVC_KEI = null;
	
	/** テーブルアクセスクラス(工事完了ワーク)*/
	private static JBSbatSQLAccess db_KK_T_KJ_FIN_WK = null;

	/** テーブルアクセスクラス(ＡＤＳＬ工事)*/
	private static JBSbatSQLAccess db_KK_T_ADSL_KOJI = null;

	/** テーブルアクセスクラス(番ポ工事)*/
	private static JBSbatSQLAccess db_TU_T_BMP_KOJI = null;

	/** テーブルアクセスクラス(配送)*/
	private static JBSbatSQLAccess db_DK_T_HAISO = null;

	/** テーブルアクセスクラス(申込)*/
	private static JBSbatSQLAccess db_KK_T_MSKM = null;

	/** テーブルアクセスクラス(申込明細)*/
	private static JBSbatSQLAccess db_KK_T_MSKM_DTL = null;

	/** テーブルアクセスクラス(料金スケジュール定義)*/
	private static JBSbatSQLAccess db_CH_M_PRC_SCHDL_TEIGI = null;

	/** テーブルアクセスクラス(工事案件)*/
	private static JBSbatSQLAccess db_KU_T_KOJIAK = null;

	/** テーブルアクセスクラス(営業部)*/
	private static JBSbatSQLAccess db_ZM_M_BUSIDAY_KANRI = null;

	/** ターゲットスキーマ：サービス契約*/
	public static final int TGSCM_SVC_KEI = 1;

	/** ターゲットスキーマ：サービス契約内訳*/
	public static final int TGSCM_SVC_KEI_UCWK = 2;

	/** ターゲットスキーマ：オプションサービス契約*/
	public static final int TGSCM_OP_SVC_KEI = 3;

	/** ターゲットスキーマ：機器提供サービス契約*/
	public static final int TGSCM_KKTK_SVC_KEI = 4;

	/** ターゲットスキーマ：サブオプションサービス契約*/
	public static final int TGSCM_SBOP_SVC_KEI = 5;

	/** ターゲットスキーマ：請求オプションサービス契約*/
	public static final int TGSCM_SEIOP_SVC_KEI = 6;
	
	/** 改行コード*/
	private static final String CRLF  = "CR+LF";

	/** 文字コード*/
	private static final String SJIS  = "Shift-JIS";
	
	/** 日付形式*/
	private static final String DATE_TYPE = "yyyymmdd";

	/** 異動区分 */
	private static final String IDO_DIV = "IDO_DIV";

	/** サービスコード */
	private static final String SVC_CD = "SVC_CD";

	/** 回線提供会社コード */
	private static final String KAISEN_TK_COMP_CD = "KAISEN_TK_COMP_CD";

	/** 料金グループコード */
	private static final String PRC_GRP_CD = "PRC_GRP_CD";

	/** 料金コースコード */
	private static final String PCRS_CD = "PCRS_CD";
	
	/** 番ポ有無 */
	private static final String BMP_UM = "BMP_UM";
	
	/** 機器出荷有無 */
	private static final String KKSHKA_UM = "KKSHKA_UM";

	/** 工事有無 */
	private static final String KOJI_UM = "KOJI_UM";

	/** 課金開始日補正有無 */
	private static final String CHRG_STA_YMD_HOSEI_UM = "CHRG_STA_YMD_HOSEI_UM";

	/** 機器提供種別コード */
	private static final String KKTK_SBT_CD = "KKTK_SBT_CD";

	/** オプションサービスコード */
	private static final String OP_SVC_CD = "OP_SVC_CD";

	/** インターネットサービス同時申込有無 */
	private static final String INSVC_DOJI_MSKM_UM = "INSVC_DOJI_MSKM_UM";
	
	private static final String DOJI_MSKM = "DOJI_MSKM";

	/** 更新契機 */
	public static final String UP_OPTY = "UP_OPTY";

	/** 解約時課金 */
	public static final String DSLJI_CHRG = "DSLJI_CHRG";

	/** 課金開始前／開始後 */
	public static final String DSL_STA_ZENGO = "DSL_STA_ZENGO";

	/** 申込期間 */
	public static final String MSKM_PRD = "MSKM_PRD";

	/** 即時／翌月*/
	private static final String SKJ_YKJT = "SKJ_YKJT";

	/** 配送方法コード */
	private static final String HAISO_WAY_CD = "HAISO_WAY_CD";
	
	/** 機器提供サービスコード */
	private static final String KKTK_SVC_CD = "KKTK_SVC_CD";

	/** 基準日 */
	private static final String STD_DT = "STD_DT";

	/** 基準日からの相対日 */
	private static final String RELATIVE_DATE_COUNT = "RELATIVE_DATE_COUNT";

	/** 優先基準日 */
	private static final String PRIORITY_STD_DT = "PRIORITY_STD_DT";

	/** 申込基準日 */
	private static final String JUDGE_RSLT = "JUDGE_RSLT";

	/** 申込年月日 */
	private static final String MSKM_YMD = "MSKM_YMD";

	/** サービス開始年月日 */
	private static final String SVC_STAYMD = "SVC_STAYMD";

	/** サービス課金開始年月日 */
	private static final String SVC_CHRG_STAYMD = "SVC_CHRG_STAYMD";

	/** 元のサービス契約のサービス開始日 */
	public static final String KK0081_SVC_STA_YMD = "KK0081_SVC_STA_YMD";

	/** 基準日(サービス開始日) */
	private static final String STD_DT_KK0081_SVC_STA = "1";

	/** 基準日(プラン開始日) */
	private static final String STD_DT_KK0081_PLAN_STA = "2";

	/** 基準日(照査年月日) */
	private static final String STD_DT_SHOSA = "0";

	/** 基準日(工事完了年月日) */
	private static final String STD_DT_KOJI = "1";

	/** 基準日(配送完了年月日) */
	private static final String STD_DT_HAISO = "3";

	/** 基準日(NTT局内工事年月日) */
	private static final String STD_DT_NTT = "4";

	/** 基準日(番ポ工事完了年月日) */
	private static final String STD_DT_BMP = "5";

	/** 基準日(登録年月日) */
	private static final String STD_DT_INS = "6";

	/** 基準日(変更希望日) */
	private static final String STD_DT_UPD = "7";

	/** 基準日(OLT帯域変更日) */
	private static final String STD_DT_OLT = "8";

	/** 基準日(申込.申込受付年月日) */
	public static final String STD_DT_KK0011_MSKM_UK = "2";

	/** 基準日(バッチ運用日) */
	public static final String STD_DT_BAT_OPE = "3";

	/** 基準日(NHK指定の開始日) */
	public static final String STD_DT_NHK_STA = "4";

	/** 基準日(入力値.サービス開始年月日) */
	public static final String STD_DT_INPUT = "5";

	/** 基準日(料金計算日より求めた請求年月の末日) */
	public static final String STD_DT_CH0501_SEIKY_YMD = "6";

	/** 基準日からの相対日(+0) */
	public static final String RELATIVE_DATE_COUNT_0 = "0";

	/** 基準日からの相対日(翌月月初) */
	public static final String RELATIVE_DATE_COUNT_NEXT = "2";

	/** 基準日からの相対日(翌々月月初) */
	public static final String RELATIVE_DATE_COUNT_NEXT_NX = "3";

	/** 基準日からの相対日(+10) */
	public static final String RELATIVE_DATE_COUNT_10 = "1";

	/** 基準日(機器出荷完了日) */
	public static final String STD_DT_KKSHKA_END = "2";

	/** 基準日(工事完了年月日) */
	public static final String STD_DT_KJEND = "3";

	/** 基準日(オプションサービス契約.サービス開始年月日) */
	public static final String STD_DT_KK0351_SVC_STA = "1";

	/** 基準日(サービス課金開始日) */
	public static final String STD_DT_KK0351_SVC_CHRG_STA = "2";

	/** 基準日(サービス終了日) */
	public static final String STD_DT_KK0351_SVC_END = "3";

	/** 基準日(元のサービス契約の課金開始年月日) */
	public static final String STD_DT_KK0351_BEF_SVC_STA = "4";

	/** 優先基準日(サブオプションサービスのサービス開始希望日との大きい方) */
	public static final String PRIORITY_STD_DT_STA_KIBO = "1";
	
	/** 優先基準日(オプションサービスのサービス開始希望日、運用日の最大の物) */
	public static final String PRIORITY_STD_DT_MAX = "2";

	/** 優先基準日(運用日付との大きい方) */
	public static final String PRIORITY_STD_DT_OPE_DATE = "3";

	/** 優先基準日(サービス契約のサービス課金開始年月日が、請求年月の末日より大きい場合は、
		サービス課金開始年月日と同月の末日) */
	public static final String PRIORITY_STD_DT_SRV_KAKIN_YMD_END_DAY = "4";

	/** 優先基準日(関連機器出荷完了日+10日) */
	public static final String PRIORITY_STD_DT_KANREN_KIKI_SYUKKA_DAY = "5";

	/** 月途中日付 */
	public static final String HALF_DATE = "16";

	/** 元のサービス契約のサービス開始日(1〜15日) */
	public static final String KK0081_SVC_STA_FIRST = "1";

	/** 元のサービス契約のサービス開始日(16〜末日) */
	public static final String KK0081_SVC_STA_SECOND = "2";

	/** ルールID RULE0065001*/
	private static final String RULE_ID_0065001 = "RULE0065001";
	
	/** ルールID RULE0066001*/
	private static final String RULE_ID_0066001 = "RULE0066001";
	
	/** ルールID RULE0067001*/
	private static final String RULE_ID_0067001 = "RULE0067001";
	
	/** ルールID RULE0068001*/
	private static final String RULE_ID_0068001 = "RULE0068001";
	
	/** ルールID RULE0073001*/
	private static final String RULE_ID_0073001 = "RULE0073001";
	
	/** ルールID RULE0074001*/
	private static final String RULE_ID_0074001 = "RULE0074001";
	
	/** ルールID RULE0075001*/
	private static final String RULE_ID_0075001 = "RULE0075001";
	
	/** ルールID RULE0076001*/
	private static final String RULE_ID_0076001 = "RULE0076001";

	/** ルールID RULE0088001*/
	private static final String RULE_ID_0088001 = "RULE0088001";

	/**
	 * コンストラクタ
	 * 
	 * @param commonItem バッチ共通パラメータ
	 */
	public JKVBatIdoKns(JBSbatCommonItem commonItem)
	{
		this.commonItem = commonItem;
	}
	
	/**
	 * <dd>メソッド名	：getIdoKns
	 * <dd>メソッド説明	：異動検証の取得を行う
	 * @param  cmnItem 業務共通電文
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	public static void getIdoKns(JBSbatServiceInterfaceMap inMap, JBSbatCommonItem pCommonItem) throws Exception
	{
		commonItem = pCommonItem;

		HashMap<String, Object> map = new HashMap<String, Object>();
		JRuleXMLHandler xmlHandler = null;
		
		// サービス契約番号を取得
		String svc_kei_no = inMap.getString("SVC_KEI_NO");
	    // 検証対象スキーマ識別コードを取得
		Integer knsho_tgscm_skcd = Integer.valueOf(inMap.getString("KNSHO_TGSCM_SKCD"));
		// 検証対象項目を取得
		String knsho_tg_kmk = inMap.getString("KNSHO_TG_KMK_NM_EINM");
		// 異動区分を取得
		String ido_div = inMap.getString("IDO_DIV");
		// 進捗ステータスを取得
		String prg_stat = inMap.getString("PRG_STAT");
		// 異動区分を取得
		String ido_div_nm = inMap.getString("IDO_DIV_NM");
		// 進捗ステータスを取得
		String prg_stat_nm = inMap.getString("PRG_STAT_NM");
		// クラス名を取得
		String class_name = inMap.getString("KEI_IDO_KNSHO_CLASS_NM");

		Object[] paramSvc = null;
		HashMap dataMap = new HashMap();
		JBSbatCommonDBInterface getDataMap = null;
		String StdDt = "";
		String relativeDateCount = "";

		String opeDate = inMap.getString("PRG_DTM").substring(0 , 8);
		
		commonItem.getLogPrint().printDebugLog("運用日:" + opeDate);
		if(class_name.equals("CLASS1"))
		{
			switch(knsho_tgscm_skcd)
			{
				case TGSCM_SVC_KEI:
				case TGSCM_SVC_KEI_UCWK:

					commonItem.getLogPrint().printDebugLog("サービス契約：サービス開始日：" + svc_kei_no + ":" + inMap.get("SVC_KEI_UCWK_NO"));

					String apl_ymd = inMap.getString("PRG_DTM").substring(0, 8);
					// データ抽出条件を設定	
					paramSvc = new Object[]{
							apl_ymd,
							svc_kei_no,	// サービス契約番号
							svc_kei_no	// サービス契約番号
					};
					
					dataMap = new HashMap();

					// DBアクセスクラスを生成します
					executeKK_T_SVC_KEI_KK_SELECT_201(paramSvc);
					getDataMap = db_KK_T_SVC_KEI.selectNext();
					if(getDataMap != null)
					{
						dataMap = getDataMap.getMap();
						
						String prc_grp_cd = (String)dataMap.get("PRC_GRP_CD");
						
						if(prc_grp_cd != null && !"".equals(prc_grp_cd))
						{
							prc_grp_cd  = JBSbatStringUtil.Rtrim(prc_grp_cd);
						}
						
						if("00020".equals(ido_div))
						{
							ido_div = "00001";
						}
						// ルールエンジンで使用する値を設定
						map.put(SVC_CD, dataMap.get("SVC_CD"));
						map.put(KAISEN_TK_COMP_CD, dataMap.get("KAISEN_TK_COMP_CD"));
						map.put(PRC_GRP_CD, prc_grp_cd);
						map.put(KOJI_UM, "1");
						map.put(KKTK_SBT_CD, dataMap.get("KKTK_SBT_CD"));
						map.put(BMP_UM, dataMap.get("BMP_UM"));
						map.put(IDO_DIV, ido_div);
						
						// サービス希望年月日
						String svcKibouYmd = (String)dataMap.get(JBSbatKK_T_SVC_KEI.SVC_USE_STA_KIBO_YMD);
						// VLANID取込み年月日
						String vlanidtrmkYmd = (String)dataMap.get(JBSbatKK_T_SVKEI_KAISEN_UW.TEL_VLAN_ID_TRKM_YMD);

						// 検索条件としてサービス契約番号、バッチ運用日を設定。
						String [] selectParam3 = {svc_kei_no, opeDate , opeDate};

						String kojiUm =executeKU_T_KOJIAK_KV_SELECT_001(selectParam3);
						map.put(KOJI_UM, kojiUm);
						
						if("07".equals(prc_grp_cd) || "16".equals(prc_grp_cd))
						{
							map.put(KAISEN_TK_COMP_CD, "01");
						}
						// サービスコードが電話サービス且つ回線提供会社コードがK-OPT且つ番ポ有無が無且つ異動区分が光電話・番号変更の場合
						if("02".equals(dataMap.get("SVC_CD")) && "01".equals(dataMap.get("KAISEN_TK_COMP_CD")) && "0".equals(dataMap.get("BMP_UM")) && "00042".equals(ido_div))
						{
							// 検索条件としてサービス契約番号、バッチ運用日を設定。
							String [] selectParam = {svc_kei_no, opeDate};
							
							// サービス契約内訳<eo光電話>検索処理の実行。
							executeKK_T_KKTK_SVC_KEI_KV_SELECT_002(selectParam);
							
							JBSbatCommonDBInterface outMap = db_KK_T_KKTK_SVC_KEI.selectNext();
							
							if(outMap == null)
							{
								// (8)機器出荷有無 = 有(固定値)
								map.put(KKSHKA_UM, "1");
							}
							else
							{
								// 検索結果から「ポート数」を取得します。
								String portCnt = JBSbatStringUtil.convDoubleToString(outMap.getBigDecimal(JBSbatZM_M_TAKNKIKI_MODEL.PORT_CNT));
								
								// ポート数が2の場合
								if("2".equals(portCnt))
								{
									// (8)機器出荷有無 = 無(固定値)
									map.put(KKSHKA_UM, "0");
								}
								//それ以外の場合
								else
								{
									// (8)機器出荷有無 = 有(固定値)
									map.put(KKSHKA_UM, "1");
								}
							}
						}
						if("02".equals(dataMap.get("SVC_CD")) && "01".equals(dataMap.get("KAISEN_TK_COMP_CD")) && "0".equals(dataMap.get("BMP_UM")) && "00041".equals(ido_div))
						{
							// (8)機器出荷有無 = 有(固定値)
							map.put(KKSHKA_UM, "1");
						}
						
						xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID_0073001,JRuleXMLPattern.SINGLE_MODE_TYPE);
						outLog(map);	//ログ出力
						ArrayList<ArrayList<HashMap<String, Object>>> getIsList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
						if(getIsList.get(0) != null)
						{
							commonItem.getLogPrint().printDebugLog("STD_DT :" + (String)getIsList.get(0).get(0).get(STD_DT));
							commonItem.getLogPrint().printDebugLog("RELATIVE_DATE_COUNT :" + (String)getIsList.get(0).get(0).get(RELATIVE_DATE_COUNT));
							commonItem.getLogPrint().printDebugLog("PRIORITY_STD_DT :" + (String)getIsList.get(0).get(0).get(PRIORITY_STD_DT));

							StdDt = (String)getIsList.get(0).get(0).get(STD_DT);
							String priorityStdDate = (String)getIsList.get(0).get(0).get(PRIORITY_STD_DT);
							String StdDate = "";
							if (STD_DT_SHOSA.equals(StdDt))
							{
								StdDate = (String) dataMap.get("SHOSA_YMD");
							}
							else if (STD_DT_KOJI.equals(StdDt))
							{
								String [] selectParam = {svc_kei_no, opeDate, opeDate};
								executeKK_T_KJ_FIN_WK_KV_SELECT_001(selectParam);
								JBSbatCommonDBInterface outMap = db_KK_T_KJ_FIN_WK.selectNext();
								
								if(outMap != null)
								{
									StdDate = outMap.getString("KOJIAK_JSSI_YMD");
								}
							}
							else if (STD_DT_HAISO.equals(StdDt))
							{
								String [] selectParam = {opeDate , svc_kei_no  , opeDate};
								executeDK_T_HAISO_KV_SELECT_001(selectParam);
								JBSbatCommonDBInterface outMap = db_DK_T_HAISO.selectNext();
								
								if(outMap != null)
								{
									StdDate = outMap.getString("HAISO_FIN_YMD");
								}
							}
							else if (STD_DT_NTT.equals(StdDt))
							{
								String [] selectParam = {svc_kei_no};
								executeKK_T_ADSL_KOJI_KV_SELECT_001(selectParam);
								JBSbatCommonDBInterface outMap = db_KK_T_ADSL_KOJI.selectNext();
								
								if(outMap != null)
								{
									StdDate = outMap.getString("NTT_KYOKU_NAI_KOJI_YMD");
								}
							}
							else if (STD_DT_BMP.equals(StdDt))
							{
								String [] selectParam = {svc_kei_no};
								executeKK_T_SVC_KEI_UCWK_KV_SELECT_001(selectParam);
								JBSbatCommonDBInterface outMap = db_KK_T_SVC_KEI_UCWK.selectNext();
								if(outMap != null)
								{
									String [] selectParam2 = {outMap.getString("SVC_KEI_UCWK_NO")};
									executeTU_T_BMP_KOJI_KV_SELECT_001(selectParam2);
									outMap = db_TU_T_BMP_KOJI.selectNext();
									if(outMap != null)
									{
										StdDate = outMap.getString("BMP_KOJI_FIN_YMD");
									}
								}
							}
							else if (STD_DT_INS.equals(StdDt))
							{
								StdDate = (String) dataMap.get("RSV_APLY_YMD");
							}
							else if (STD_DT_UPD.equals(StdDt))
							{
								StdDate = (String) dataMap.get("RSV_APLY_YMD");
							}
							else if (STD_DT_OLT.equals(StdDt))
							{
								// 検索条件としてサービス契約番号、バッチ運用日を設定。
								String [] selectParam = {svc_kei_no, opeDate, opeDate};
								executeKK_T_KJ_FIN_WK_KV_SELECT_001(selectParam);
								JBSbatCommonDBInterface outMap = db_KK_T_KJ_FIN_WK.selectNext();
								
								if(outMap != null)
								{
									StdDate = outMap.getString("KOJIAK_JSSI_YMD");
								}
							}
							
							relativeDateCount = (String)getIsList.get(0).get(0).get(RELATIVE_DATE_COUNT);
							if (null == relativeDateCount || "".equals(relativeDateCount))
							{
//								StdDate = JBSbatDateUtil.adjustMonth(StdDate, 1);
//								inMap.set("CHK_YMD", StdDate.substring(0,6) + "01");
								String manKYmd = getMansionKjnYmd(svc_kei_no, opeDate);
								
								
								for(int i = 0; i < Integer.parseInt(manKYmd) + 1 ; i++)
								{
									StdDate = JKVBatIdoKns.getEigyouYmd(StdDate);
								}
							}
							else
							{
								StdDate = JBSbatDateUtil.adjustDate(StdDate,  Integer.parseInt(relativeDateCount));
							}
							
							if("1".equals(priorityStdDate))
							{
								commonItem.getLogPrint().printDebugLog("サービス希望年月日: " + svcKibouYmd);
								if(svcKibouYmd ==null || "".equals(svcKibouYmd))
								{
									inMap.set("CHK_YMD", StdDate);
								}
								else
								{
									if(StdDate.compareTo(svcKibouYmd) < 0) {
										StdDate = svcKibouYmd;
									}
									inMap.set("CHK_YMD", StdDate);
								}
							}
							else if("2".equals(priorityStdDate))
							{
								commonItem.getLogPrint().printDebugLog("VLAN取込み年月日: " + vlanidtrmkYmd);

								if(vlanidtrmkYmd ==null || "".equals(vlanidtrmkYmd))
								{
									inMap.set("CHK_YMD", StdDate);
								}
								else
								{
									if(StdDate.compareTo(vlanidtrmkYmd) < 0) {
										StdDate = vlanidtrmkYmd;
									}
									inMap.set("CHK_YMD", StdDate);
								}
								
							}
							else
							{
								inMap.set("CHK_YMD", StdDate);
							}
						}	
						
					}
					break;
				case TGSCM_OP_SVC_KEI:
					// オプションサービス契約番号を取得
					String op_svc_kei_no = inMap.getString("OP_SVC_KEI_NO");
					commonItem.getLogPrint().printDebugLog("オプションサービス契約：サービス開始日：" + op_svc_kei_no );

					paramSvc = new Object[]{
							svc_kei_no,	// サービス契約番号
							svc_kei_no,	// サービス契約番号
							op_svc_kei_no	// オプションサービス契約番号
					};

					String svc_cd = "";
					String op_svc_cd = "";
					String doji_mksm_flg = "";
					String mskm_dtl_no = "";
					String svc_use_sta_kibo_ymd = "";
					String mskm_uk_dtm = "";
					String mskm_ymd = "";
					String mskm_dtl_ymd = "";
					String svc_sta_ymd = "";
					String svc_chrg_sta_ymd = "";
					

					dataMap = new HashMap();
					executeKK_T_OP_SVC_KEI_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_OP_SVC_KEI.selectNext();
					if(getDataMap != null)
					{
						dataMap = getDataMap.getMap();
						
						if(dataMap.get("SVC_CD") != null)
						{
							// サービスコード
							svc_cd = dataMap.get("SVC_CD").toString();
						}
						if(dataMap.get("OP_SVC_CD") != null)
						{
							// オプションサービスコード
							op_svc_cd = dataMap.get("OP_SVC_CD").toString();
						}
						if(dataMap.get("DJ_MSKM_FLG") != null)
						{
							// 同時申込フラグ
							doji_mksm_flg = dataMap.get("DJ_MSKM_FLG").toString();
						}
						if(dataMap.get("MSKM_DTL_NO") != null)
						{
							// 申込明細番号
							mskm_dtl_no = dataMap.get("MSKM_DTL_NO").toString();
						}
						if(dataMap.get("SVC_USE_STA_KIBO_YMD") != null)
						{
							// 利用開始希望年月日
							svc_use_sta_kibo_ymd = dataMap.get("SVC_USE_STA_KIBO_YMD").toString();
						}
						if(dataMap.get("SVC_STA_YMD") != null)
						{
							// サービス開始年月日
							svc_sta_ymd = dataMap.get("SVC_STA_YMD").toString();
						}
						if(dataMap.get("SVC_CHRG_STAYMD") != null)
						{
							// サービス課金開始年月日
							svc_chrg_sta_ymd = dataMap.get("SVC_CHRG_STAYMD").toString();
						}
					}
					else
					{
						break;
					}
					commonItem.getLogPrint().printDebugLog("SVC_CD:" + svc_cd);
					commonItem.getLogPrint().printDebugLog("OP_SVC_CD:" + op_svc_cd);
					commonItem.getLogPrint().printDebugLog("DJ_MSKM_FLG:" + doji_mksm_flg);
					commonItem.getLogPrint().printDebugLog("MSKM_DTL_NO:" + mskm_dtl_no);
					commonItem.getLogPrint().printDebugLog("SVC_USE_STA_KIBO_YMD:" + svc_use_sta_kibo_ymd);
					commonItem.getLogPrint().printDebugLog("SVC_STA_YMD:" + svc_sta_ymd);
					commonItem.getLogPrint().printDebugLog("SVC_CHRG_STAYMD:" + svc_chrg_sta_ymd);

					dataMap = new HashMap();
					paramSvc = new Object[]{
							mskm_dtl_no// 申込明細番号
					};
					executeKK_T_MSKM_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_MSKM.selectNext();

					if(getDataMap != null)
					{
						dataMap = getDataMap.getMap();
						if(dataMap.get("MSKM_UK_DTM") != null)
						{
								
							// 申込受付年月日
							mskm_uk_dtm = dataMap.get("MSKM_UK_DTM").toString();
						}
						else
						{
							// 申込受付年月日
							mskm_uk_dtm = "";
						}
						
						commonItem.getLogPrint().printDebugLog("申込受付年月日:" +  mskm_uk_dtm);
					}
					else
					{
						break;
					}
					
					dataMap = new HashMap();
					paramSvc = new Object[]{
							mskm_dtl_no// 申込明細番号
					};

					executeKK_T_MSKM_DTL_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_MSKM_DTL.selectNext();

					if(getDataMap != null)
					{
						dataMap = getDataMap.getMap();
						
						if(dataMap.get("MSKM_YMD") != null)
						{
							// 申込受付年月日
							mskm_dtl_ymd = dataMap.get("MSKM_YMD").toString();
						}
						else
						{
							// 申込受付年月日
							mskm_dtl_ymd = "";
						}
						commonItem.getLogPrint().printDebugLog("申込年月日:" +  mskm_dtl_ymd);
					}
					else
					{
						break;
					}
					// 申込期間を取得する。
					String mskm_period = getMskmPeriod(mskm_dtl_ymd, svc_sta_ymd, svc_chrg_sta_ymd);
					
					
					if(svc_cd != null)
					{
						dataMap = getDataMap.getMap();
						// ルールエンジンで使用する値を設定
						map.put(IDO_DIV, ido_div);
						map.put(SVC_CD, svc_cd);
						map.put(OP_SVC_CD, op_svc_cd);
						map.put(MSKM_PRD, mskm_period);
						map.put(SKJ_YKJT, "01");
						map.put(KK0081_SVC_STA_YMD, svc_sta_ymd);
						
						commonItem.getLogPrint().printDebugLog("IDO_DIV:" + ido_div);
						commonItem.getLogPrint().printDebugLog("SVC_CD:" + svc_cd);
						commonItem.getLogPrint().printDebugLog("OP_SVC_CD:" + op_svc_cd);
						commonItem.getLogPrint().printDebugLog("MSKM_PRD:" + mskm_period);
						commonItem.getLogPrint().printDebugLog("KK0081_SVC_STA_YMD:" + svc_sta_ymd);
						commonItem.getLogPrint().printDebugLog("IDO_DTM:" + inMap.getString("IDO_DTM"));

						xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID_0074001,JRuleXMLPattern.SINGLE_MODE_TYPE);
						outLog(map);
						ArrayList<ArrayList<HashMap<String, Object>>> getIsList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
						if(getIsList.get(0) != null)
						{
							commonItem.getLogPrint().printDebugLog("STD_DT:" + (String)getIsList.get(0).get(0).get(STD_DT));
							commonItem.getLogPrint().printDebugLog("RELATIVE_DATE_COUNT:" + (String)getIsList.get(0).get(0).get(RELATIVE_DATE_COUNT));
							commonItem.getLogPrint().printDebugLog("PRIORITY_STD_DT:" + (String)getIsList.get(0).get(0).get(PRIORITY_STD_DT));

							StdDt = (String)getIsList.get(0).get(0).get(STD_DT);
							 relativeDateCount = (String)getIsList.get(0).get(0).get(RELATIVE_DATE_COUNT);
							 String priority_start_dt  = (String)getIsList.get(0).get(0).get(PRIORITY_STD_DT);
								 
							String StdDate = "";
							
							// 実行結果の基準日が「サービス契約のサービス開始年月日」の場合
							if (STD_DT_KK0081_SVC_STA.equals(StdDt))
							{
								// 「元のサービス契約のサービス開始日」を基準日とする
								StdDate = svc_sta_ymd;
							}

							// 実行結果の基準日が「申込受付日」の場合
							else if (STD_DT_KK0011_MSKM_UK.equals(StdDt))
							{
								if(mskm_dtl_no != null)
								{
									paramSvc = new Object[]{
											mskm_dtl_no
									};
									executeKK_T_MSKM_KV_SELECT_001(paramSvc);
									getDataMap = db_KK_T_MSKM.selectNext();
									if(getDataMap != null)
									{
										// 「申込受付年月日」を基準日とする
										if(!"".equals(getDataMap.getString("MSKM_YMD")))
										{
											StdDate = getDataMap.getString("MSKM_YMD");
											commonItem.getLogPrint().printDebugLog("MSKM_YMD：" + StdDate);
										}
									}
								}
							}

							// 実行結果の基準日が「バッチ処理の運用日」の場合
							else if (STD_DT_BAT_OPE.equals(StdDt))
							{
								//  存在チェックのみ
								inMap.set("CHK_YMD", "99999999");
								break;
							}

							// 実行結果の基準日が「NHK指定の開始日」の場合
							else if (STD_DT_NHK_STA.equals(StdDt))
							{
								// 「サービス利用開始希望年月日」を基準日とする
								StdDate = svc_use_sta_kibo_ymd;
							}

							// 実行結果の基準日が「入力値のサービス開始年月日」の場合
							else if (STD_DT_INPUT.equals(StdDt))
							{
								//  存在チェックのみ
								inMap.set("CHK_YMD", "99999999");
								break;
							}
							// 実行結果の基準日が「料金計算日より求めた請求年月の末日」の場合
							else if (STD_DT_CH0501_SEIKY_YMD.equals(StdDt))
							{
//								String opeDate = inMap.getString("IDO_DTM").substring(0,8);

								paramSvc = new Object[]{
										opeDate
								};
								executeCH_M_PRC_SCHDL_TEIGI_KV_SELECT_001(paramSvc);
								getDataMap = db_CH_M_PRC_SCHDL_TEIGI.selectNext();
								if(getDataMap != null)
								{
									// 「申込受付年月日」を基準日とする
									if(!"".equals(getDataMap.getString("SEIKY_YM")))
									{
										String seikyYM = getDataMap.getString("SEIKY_YM");
										StdDate = seikyYM.concat(JPCDateUtil.getEndOfMonth(seikyYM));
									}
								}
								
							}
							
							// 基準日からの相対日が"+0"の場合
							if (RELATIVE_DATE_COUNT_0.equals(relativeDateCount))
							{
								// 基準日を「開始日」とする
//								inMap.set("CHK_YMD", StdDate);
							}

							else if (RELATIVE_DATE_COUNT_NEXT.equals(relativeDateCount))
							{
								// 基準日の翌月を算出する
								StdDate = JBSbatDateUtil.adjustMonth(StdDate, 1);
								if(!"".equals(StdDate))
								{
//									inMap.set("CHK_YMD", StdDate.substring(0,6) + "01");
									StdDate = StdDate.substring(0,6) + "01";
								}
							}

							// 基準日からの相対日が"翌々月月初"の場合
							else if (RELATIVE_DATE_COUNT_NEXT_NX.equals(relativeDateCount))
							{
								// 基準日の翌々月を算出する
								StdDate = JBSbatDateUtil.adjustMonth(StdDate, 2);
								if(!"".equals(StdDate))
								{
//									inMap.set("CHK_YMD", StdDate.substring(0,6) + "01");
									StdDate = StdDate.substring(0,6) + "01";
								}
							}
							if (PRIORITY_STD_DT_STA_KIBO.equals(priority_start_dt))
							{
								if(null == svc_use_sta_kibo_ymd || "".equals(svc_use_sta_kibo_ymd))
								{
									inMap.set("CHK_YMD", StdDate);
									break;
								}
								if(StdDate.compareTo(svc_use_sta_kibo_ymd) < 0)
								{
									inMap.set("CHK_YMD", svc_use_sta_kibo_ymd);
								}
								else
								{
									inMap.set("CHK_YMD", StdDate);
								}
								break;
							}
							else if (PRIORITY_STD_DT_MAX.equals(priority_start_dt))
							{
								// 最も大きい日付を「開始日」とする
								ArrayList<String> arrayMax = new ArrayList<String>();
//								String opeDate = inMap.getString("IDO_DTM").substring(0,8);

								arrayMax.add(StdDate);
								arrayMax.add(opeDate);

								if(null != svc_use_sta_kibo_ymd && !"".equals(svc_use_sta_kibo_ymd))
								{
									arrayMax.add(svc_use_sta_kibo_ymd);
								}
								// 処理対象のリストをソートし、昇順になったソート順を降順に逆転させる
								Collections.sort(arrayMax);
								Collections.reverse(arrayMax);
								
								inMap.set("CHK_YMD", arrayMax.get(0));

								break;
							}
							// 優先基準日が"運用日付との大きい方"の場合
							else if (PRIORITY_STD_DT_OPE_DATE.equals(priority_start_dt))
							{
//								String opeDate = inMap.getString("IDO_DTM").substring(0,8);
								
								if(StdDate.compareTo(opeDate) < 0)
								{
									inMap.set("CHK_YMD", opeDate);
								}
								else
								{
									inMap.set("CHK_YMD", StdDate);
								}
								break;
							}
							// サービス課金開始年月日と同月の末日"の場合
							else if (PRIORITY_STD_DT_SRV_KAKIN_YMD_END_DAY.equals(priority_start_dt))
							{
								if(svc_chrg_sta_ymd == null || "".equals(svc_chrg_sta_ymd))
								{
									inMap.set("CHK_YMD", StdDate);
								}
								else
								{
									inMap.set("CHK_YMD", svc_chrg_sta_ymd);
								}
							}
							// 優先基準日が"関連機器出荷完了日+10日"の場合
							else if (PRIORITY_STD_DT_KANREN_KIKI_SYUKKA_DAY.equals(priority_start_dt))
							{
								
//								String opeDate = inMap.getString("IDO_DTM").substring(0,8);

								paramSvc = new Object[]{
										op_svc_kei_no,
										opeDate,
										opeDate,
										opeDate
								};
								executeDK_T_HAISO_KV_SELECT_002(paramSvc);
								getDataMap = db_DK_T_HAISO.selectNext();
								if(getDataMap != null)
								{
									// 「申込受付年月日」を基準日とする
									if(!"".equals(getDataMap.getString("HAISO_FIN_YMD")))
									{
										String haisoYMD = getDataMap.getString("HAISO_FIN_YMD");
										inMap.set("CHK_YMD", haisoYMD);
										break;
									}
								}
							}
							else
							{
								inMap.set("CHK_YMD", StdDate);
							}
						}	
					}	
					break;

				case TGSCM_KKTK_SVC_KEI:
					// 機器提供サービス契約番号を取得
					String kktk_svc_kei_no = inMap.getString("KKTK_SVC_KEI_NO");
					commonItem.getLogPrint().printDebugLog(
							"機器提供サービス契約：サービス開始日：" + kktk_svc_kei_no );
					paramSvc = new Object[]{
							svc_kei_no,	// サービス契約番号
							kktk_svc_kei_no	// 機器提供サービス契約番号
					};
					
					dataMap = new HashMap();
					executeKK_T_KKTK_SVC_KEI_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_KKTK_SVC_KEI.selectNext();
					if(getDataMap != null)
					{
						dataMap = getDataMap.getMap();
						
						String haisoWayCode = (String)dataMap.get("HAISO_WAY_CD");
						
						if(haisoWayCode == null || "".equals(haisoWayCode))
						{
							haisoWayCode = "2";
						}
						// ルールエンジンで使用する値を設定
						map.put(SVC_CD, dataMap.get("SVC_CD").toString());
						map.put(KKTK_SVC_CD, dataMap.get("KKTK_SVC_CD").toString());
						map.put(IDO_DIV, ido_div);
						map.put(HAISO_WAY_CD, haisoWayCode);

						xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID_0075001,JRuleXMLPattern.SINGLE_MODE_TYPE);
						outLog(map);
						ArrayList<ArrayList<HashMap<String, Object>>> getIsList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
						if(getIsList.get(0) != null)
						{
							StdDt = (String)getIsList.get(0).get(0).get(STD_DT);
							relativeDateCount = (String)getIsList.get(0).get(0).get(RELATIVE_DATE_COUNT);
							String priorityDate = (String)getIsList.get(0).get(0).get(PRIORITY_STD_DT);
							
							commonItem.getLogPrint().printDebugLog("STD_DT:" + StdDt);
							commonItem.getLogPrint().printDebugLog("RELATIVE_DATE_COUNT:" + relativeDateCount);
							commonItem.getLogPrint().printDebugLog("PRIORITY_STD_DT:" + priorityDate);

							String StdDate = "";
							if(STD_DT_KK0081_SVC_STA.equals(StdDt))
							{
								StdDate = (String)dataMap.get("SVC_STA_YMD");
								commonItem.getLogPrint().printDebugLog("SVC_STA_YMD:" + StdDate);
							}
							else if(STD_DT_KKSHKA_END.equals(StdDt))
							{
								String [] selectParam = {opeDate, svc_kei_no, opeDate};
								executeDK_T_HAISO_KV_SELECT_001(selectParam);
								JBSbatCommonDBInterface outMap = db_DK_T_HAISO.selectNext();
								
								if(outMap != null)
								{
									StdDate = outMap.getString("HAISO_FIN_YMD");
								}
							}
							else if(STD_DT_KJEND.equals(StdDt))
							{
								String [] selectParam = {svc_kei_no, opeDate, opeDate};
								executeKK_T_KJ_FIN_WK_KV_SELECT_001(selectParam);
								JBSbatCommonDBInterface outMap = db_KK_T_KJ_FIN_WK.selectNext();
								
								if(outMap != null)
								{
									StdDate = outMap.getString("KOJIAK_JSSI_YMD");
								}
							}
							
							// 基準日が未設定の場合は、処理を終了する
							if(null == StdDate || "".equals(StdDate))
							{
								inMap.set("CHK_YMD", StdDate);
							}
							
							
							
							// 基準日からの相対日が"+0"の場合
							if(RELATIVE_DATE_COUNT_0.equals(relativeDateCount))
							{
								// 開始日に基準日を設定する
								inMap.set("CHK_YMD", StdDate);
							}
							
							// 基準日からの相対日が"+10"の場合
							else if(RELATIVE_DATE_COUNT_10.equals(relativeDateCount))
							{
								StdDate = JBSbatDateUtil.adjustDate(StdDate,  10);
								inMap.set("CHK_YMD", StdDate);
							}
							else
							{
								// 開始日に基準日を設定する
								inMap.set("CHK_YMD", StdDate);
							}
						}	
					}
					break;

				case TGSCM_SBOP_SVC_KEI:
					// サブオプションサービス契約番号を取得
					String sbop_svc_kei_no = inMap.getString("SBOP_SVC_KEI_NO");
					commonItem.getLogPrint().printDebugLog(
							"サブオプションサービス契約：サービス開始日：" + sbop_svc_kei_no );
					paramSvc = new Object[]{
							svc_kei_no,	// サービス契約番号
							svc_kei_no,	// サービス契約番号
							sbop_svc_kei_no	// サブオプションサービス契約番号
					};
					
					String op_svc_staymd = "";
					String sbop_svc_stakibo_ymd = "";
					mskm_dtl_no = "";
					svc_cd = "";
					svc_sta_ymd = "";
					svc_chrg_sta_ymd = "";
					
					dataMap = new HashMap();

					executeKK_T_SBOP_SVC_KEI_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_SBOP_SVC_KEI.selectNext();

					if(getDataMap != null) 
					{
						dataMap = getDataMap.getMap();
						// 申込明細番号
						if(dataMap.get("MSKM_DTL_NO") != null)
						{
							mskm_dtl_no = dataMap.get("MSKM_DTL_NO").toString();
						}
						if(dataMap.get("SVC_CD") != null)
						{
							svc_cd = dataMap.get("SVC_CD").toString();
						}
						if(dataMap.get("SVC_STA_YMD") != null)
						{
							svc_sta_ymd = dataMap.get("SVC_STA_YMD").toString();
						}
						if(dataMap.get("SVC_CHRG_STAYMD") != null)
						{
							svc_chrg_sta_ymd = dataMap.get("SVC_CHRG_STAYMD").toString();
						}
						if(dataMap.get("SVC_STAYMD") != null)
						{
							op_svc_staymd = (String)dataMap.get("SVC_STAYMD");
						}
						if(dataMap.get("SVC_USE_STA_KIBO_YMD") != null)
						{
							sbop_svc_stakibo_ymd = (String)dataMap.get("SVC_USE_STA_KIBO_YMD");
						}
						commonItem.getLogPrint().printDebugLog("MSKM_DTL_NO:" + mskm_dtl_no);
						commonItem.getLogPrint().printDebugLog("SVC_CD:" + svc_cd);
						commonItem.getLogPrint().printDebugLog("SVC_STA_YMD:" + svc_sta_ymd);
						commonItem.getLogPrint().printDebugLog("SVC_CHRG_STAYMD:" + svc_chrg_sta_ymd);
					}
					else
					{
						break;
					}
					dataMap = new HashMap();
					paramSvc = new Object[]{
							mskm_dtl_no// 申込明細番号
					};
					executeKK_T_MSKM_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_MSKM.selectNext();

					if(getDataMap != null)
					{
						dataMap = getDataMap.getMap();
						if(dataMap.get("MSKM_UK_DTM") != null)
						{
							// 申込受付年月日
							mskm_uk_dtm = dataMap.get("MSKM_UK_DTM").toString();
						}
						else
						{
							// 申込受付年月日
							mskm_uk_dtm = "";
						}
						commonItem.getLogPrint().printDebugLog("申込受付年月日:" +  mskm_uk_dtm);
					}
					else
					{
						break;
					}
					
					dataMap = new HashMap();
					paramSvc = new Object[]{
							mskm_dtl_no// 申込明細番号
					};

					executeKK_T_MSKM_DTL_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_MSKM_DTL.selectNext();

					if(getDataMap != null)
					{
						dataMap = getDataMap.getMap();
						
						if(dataMap.get("MSKM_YMD") != null)
						{
							// 申込受付年月日
							mskm_dtl_ymd = dataMap.get("MSKM_YMD").toString();
						}
						else
						{
							// 申込受付年月日
							mskm_dtl_ymd = "";
						}
						commonItem.getLogPrint().printDebugLog("申込年月日:" +  mskm_dtl_ymd);
					}
					else
					{
						break;
					}
					// 申込期間を取得する。
					mskm_period = getMskmPeriod(mskm_dtl_ymd, svc_sta_ymd, svc_chrg_sta_ymd);

					
					
					if(getDataMap != null)
					{
						
						dataMap = getDataMap.getMap();

						// ルールエンジンで使用する値を設定
						//map.put(IDO_DIV, ido_div);
						map.put(SVC_CD, svc_cd);
						map.put(MSKM_PRD, mskm_period);
						xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID_0076001,JRuleXMLPattern.SINGLE_MODE_TYPE);
						outLog(map);
						ArrayList<ArrayList<HashMap<String, Object>>> getIsList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
						if(getIsList.get(0) != null)
						{
							StdDt = (String)getIsList.get(0).get(0).get(STD_DT);
							relativeDateCount = (String)getIsList.get(0).get(0).get(RELATIVE_DATE_COUNT);
							String StdDate = "";
							
							commonItem.getLogPrint().printDebugLog("STD_DT:" + StdDt);
							commonItem.getLogPrint().printDebugLog("RELATIVE_DATE_COUNT:" + relativeDateCount);
							// 実行結果の基準日が「オプションサービス契約のサービス開始年月日」の場合
							if (STD_DT_KK0351_SVC_STA.equals(StdDt))
							{
								// 「サービス開始年月日(オプションサービス契約)」を基準日とする
								StdDate = op_svc_staymd;
							}

							// 実行結果の基準日が「申込受付日」の場合
							else if (STD_DT_KK0011_MSKM_UK.equals(StdDt))
							{
								// 「申込受付年月日」を基準日とする
								StdDate = mskm_dtl_ymd;
							}
							// 優先基準日が"サブオプションサービスのサービス開始希望日との大きい方"の場合
							if (PRIORITY_STD_DT_STA_KIBO.equals((String)getIsList.get(0).get(0).get(PRIORITY_STD_DT)))
							{
								if (StdDate.compareTo(op_svc_staymd) >= 0)
								{
									StdDate = op_svc_staymd;
								}
							}
							inMap.set("CHK_YMD", StdDate);
						}
					}
					break;
			}
		}
		else if(class_name.equals("CLASS2"))
		{
			switch(knsho_tgscm_skcd)
			{
				case TGSCM_SVC_KEI:
				case TGSCM_SVC_KEI_UCWK:

					String apl_ymd = inMap.getString("PRG_DTM").substring(0, 8);
					commonItem.getLogPrint().printDebugLog(
							"サービス契約番号：サービス課金開始日：" + svc_kei_no);
					// データ抽出条件を設定	
					paramSvc = new Object[]{
							apl_ymd,	// 年月日
							svc_kei_no,	// サービス契約番号
							svc_kei_no	// サービス契約番号
					};
					
					dataMap = new HashMap();
					
					executeKK_T_SVC_KEI_KK_SELECT_200(paramSvc);
					getDataMap = db_KK_T_SVC_KEI.selectNext();
					if(getDataMap != null)
					{
						dataMap = getDataMap.getMap();
						
						String prc_grp_cd = (String)dataMap.get("PRC_GRP_CD");
						
						if(prc_grp_cd != null && !"".equals(prc_grp_cd))
						{
							prc_grp_cd  = JBSbatStringUtil.Rtrim(prc_grp_cd);
						}

						String mskm_flg = "0";
						
						if(dataMap.get("DJ_MSKM_FLG") != null)
						{
							mskm_flg = String.valueOf(dataMap.get("DJ_MSKM_FLG"));
						}
						if("00020".equals(ido_div))
						{
							ido_div = "00001";
						}

						// ルールエンジンで使用する値を設定
						map.put(IDO_DIV, ido_div);
						map.put(SVC_CD, dataMap.get("SVC_CD"));
						map.put(PRC_GRP_CD, prc_grp_cd);
						map.put(PCRS_CD, dataMap.get("PCRS_CD"));
						map.put(KAISEN_TK_COMP_CD, dataMap.get("KAISEN_TK_COMP_CD"));
						map.put(KOJI_UM, "0");
						map.put(CHRG_STA_YMD_HOSEI_UM, dataMap.get("CHRG_STA_YMD_HOSEI_UM"));
						map.put(KKTK_SBT_CD, dataMap.get("KKTK_SBT_CD"));
						map.put(INSVC_DOJI_MSKM_UM, mskm_flg);

						// 検索条件としてサービス契約番号、バッチ運用日を設定。
						String [] selectParam3 = {svc_kei_no, opeDate , opeDate};

						String kojiUm =executeKU_T_KOJIAK_KV_SELECT_001(selectParam3);
						map.put(KOJI_UM, kojiUm);
						
						if("07".equals(prc_grp_cd) || "16".equals(prc_grp_cd))
						{
							map.put(KAISEN_TK_COMP_CD, "01");
						}
						
						xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID_0065001,JRuleXMLPattern.SINGLE_MODE_TYPE);
						outLog(map);
						ArrayList<ArrayList<HashMap<String, Object>>> getIsList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
						if(getIsList.get(0) != null)
						{
							StdDt = (String)getIsList.get(0).get(0).get(STD_DT);
							relativeDateCount = (String)getIsList.get(0).get(0).get(RELATIVE_DATE_COUNT);
							String StdDate = "";
							
							commonItem.getLogPrint().printDebugLog("STD_DT:" + StdDt);
							commonItem.getLogPrint().printDebugLog("RELATIVE_DATE_COUNT:" + relativeDateCount);

							// 実行結果の基準日が「サービス開始日」の場合
							if (STD_DT_KK0081_SVC_STA.equals(StdDt))
							{
								// 基準日にサービス開始年月日を設定する。
								StdDate = (String) dataMap.get("SVC_STA_YMD");
							}
							// 実行結果の基準日が「プラン開始日」の場合
							else if (STD_DT_KK0081_PLAN_STA.equals(StdDt))
							{
								// 基準日にプラン開始年月日を設定する。
								StdDate = (String) dataMap.get("PLAN_STAYMD");
							}
							
							// 基準日からの相対日が"翌月月初"の場合
							if (null == relativeDateCount || RELATIVE_DATE_COUNT_NEXT.equals(relativeDateCount))
							{
								// 基準日の翌月を算出する
								StdDate = JBSbatDateUtil.adjustMonth(StdDate, 1);
								if(!"".equals(StdDate))
								{
									inMap.set("CHK_YMD", StdDate.substring(0,6) + "01");
								}
							}
							else
							{
								// 基準日に「基準日からの相対日」を加算し、課金開始日とする。
								StdDate = JBSbatDateUtil.adjustDate(StdDate,  Integer.parseInt(relativeDateCount));
								if(!"".equals(StdDate))
								{
									inMap.set("CHK_YMD", StdDate);
								}
							}
						}	
					}
					break;
				case TGSCM_OP_SVC_KEI:
					// オプションサービス契約番号を取得
					String op_svc_kei_no = inMap.getString("OP_SVC_KEI_NO");
					commonItem.getLogPrint().printDebugLog("オプションサービス契約：サービス課金開始日：" + op_svc_kei_no );
					paramSvc = new Object[]{
							svc_kei_no,	// サービス契約番号
							svc_kei_no,	// サービス契約番号
							op_svc_kei_no	// オプションサービス契約番号
					};

					String svc_cd = "";
					String op_svc_cd = "";
					String doji_mksm_flg = "";
					String mskm_dtl_no = "";
					String svc_use_sta_kibo_ymd = "";
					String mskm_uk_dtm = "";
					String mskm_ymd = "";
					String mskm_dtl_ymd = "";
					String svc_sta_ymd = "";
					String svc_chrg_sta_ymd = "";
					String prc_grp_cd = "";
					
					dataMap = new HashMap();
					executeKK_T_OP_SVC_KEI_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_OP_SVC_KEI.selectNext();
					if(getDataMap != null)
					{
						dataMap = getDataMap.getMap();

						if(dataMap.get("SVC_CD") != null)
						{
							// サービスコード
							svc_cd = dataMap.get("SVC_CD").toString();
						}
						
						if(dataMap.get("OP_SVC_CD") != null)
						{
							// オプションサービスコード
							op_svc_cd = dataMap.get("OP_SVC_CD").toString();
						}
						if(dataMap.get("DJ_MSKM_FLG") != null)
						{
							// 同時申込フラグ
							doji_mksm_flg = dataMap.get("DJ_MSKM_FLG").toString();
						}
						if(dataMap.get("MSKM_DTL_NO") != null)
						{
							// 申込明細番号
							mskm_dtl_no = dataMap.get("MSKM_DTL_NO").toString();
						}
						if(dataMap.get("SVC_USE_STA_KIBO_YMD") != null)
						{
							// 利用開始希望年月日
							svc_use_sta_kibo_ymd = dataMap.get("SVC_USE_STA_KIBO_YMD").toString();
						}
						if(dataMap.get("SVC_STA_YMD") != null)
						{
							// サービス開始年月日
							svc_sta_ymd = dataMap.get("SVC_STA_YMD").toString();
						}
						if(dataMap.get("SVC_CHRG_STAYMD") != null)
						{
							// サービス課金開始年月日
							svc_chrg_sta_ymd = dataMap.get("SVC_CHRG_STAYMD").toString();
						}
						if(dataMap.get("PRC_GRP_CD") != null)
						{
							// 料金グループコード
							prc_grp_cd = dataMap.get("PRC_GRP_CD").toString();
						}
					}
					else
					{
						break;
					}
					dataMap = new HashMap();
					paramSvc = new Object[]{
							mskm_dtl_no// 申込明細番号
					};
					executeKK_T_MSKM_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_MSKM.selectNext();

					if(getDataMap != null)
					{
						dataMap = getDataMap.getMap();
						if(dataMap.get("MSKM_UK_DTM") != null)
						{
							// 申込受付年月日
							mskm_uk_dtm = dataMap.get("MSKM_UK_DTM").toString();
						}
						else
						{
							// 申込受付年月日
							mskm_uk_dtm = "";
						}
						commonItem.getLogPrint().printDebugLog("申込受付年月日:" +  mskm_uk_dtm);
					}
					else
					{
						break;
					}
					
					commonItem.getLogPrint().printDebugLog("SVC_CD:" + svc_cd);
					commonItem.getLogPrint().printDebugLog("OP_SVC_CD:" + op_svc_cd);
					commonItem.getLogPrint().printDebugLog("DJ_MSKM_FLG:" + doji_mksm_flg);
					commonItem.getLogPrint().printDebugLog("MSKM_DTL_NO:" + mskm_dtl_no);
					commonItem.getLogPrint().printDebugLog("SVC_USE_STA_KIBO_YMD:" + svc_use_sta_kibo_ymd);
					commonItem.getLogPrint().printDebugLog("SVC_STA_YMD:" + svc_sta_ymd);
					commonItem.getLogPrint().printDebugLog("SVC_CHRG_STAYMD:" + svc_chrg_sta_ymd);
					commonItem.getLogPrint().printDebugLog("PRC_GRP_CD:" + svc_chrg_sta_ymd);

					dataMap = new HashMap();
					paramSvc = new Object[]{
							mskm_dtl_no// 申込明細番号
					};

					executeKK_T_MSKM_DTL_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_MSKM_DTL.selectNext();

					if(getDataMap != null)
					{
						dataMap = getDataMap.getMap();

						if(dataMap.get("MSKM_YMD") != null)
						{
							// 申込受付年月日
							mskm_dtl_ymd = dataMap.get("MSKM_YMD").toString();
						}
						else
						{
							// 申込受付年月日
							mskm_dtl_ymd = "";
						}
						commonItem.getLogPrint().printDebugLog("申込年月日:" +  mskm_dtl_ymd);
					}
					else
					{
						break;
					}
					// 申込期間を取得する。
					String mskm_period = getMskmPeriod(mskm_dtl_ymd, svc_sta_ymd, svc_chrg_sta_ymd);
					
					if(svc_cd != null)
					{
						
						dataMap = getDataMap.getMap();
						// ルールエンジンで使用する値を設定
						map.put(SVC_CD, svc_cd);
						map.put(OP_SVC_CD, op_svc_cd);
						map.put(UP_OPTY, "1");
						map.put(PRC_GRP_CD, prc_grp_cd);
						map.put(MSKM_PRD, mskm_period);
						map.put(DSLJI_CHRG, "");
						map.put(DSL_STA_ZENGO, "");
						
						commonItem.getLogPrint().printDebugLog("SVC_CD:" + svc_cd);
						commonItem.getLogPrint().printDebugLog("OP_SVC_CD:" + op_svc_cd);
						commonItem.getLogPrint().printDebugLog("UP_OPTY:" + "1");
						commonItem.getLogPrint().printDebugLog("PRC_GRP_CD:" + prc_grp_cd);
						commonItem.getLogPrint().printDebugLog("MSKM_PRD:" + mskm_period);
						commonItem.getLogPrint().printDebugLog("IDO_DTM:" + inMap.getString("IDO_DTM"));

						// 開始日
//						apl_ymd = inMap.getString("IDO_DTM").substring(0, 8);
//						if(!"".equals(apl_ymd))
//						{
//							String staDay = apl_ymd.substring(6);
							// 開始日が1日の場合
//							if("01".equals(staDay))
//							{
								// "1"(1日)
//								map.put("STA_DAY", "1");
//							}
//							else
//							{
////								// "0"(1日以外)
//								map.put("STA_DAY", "0");
///							}
//						}
						xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID_0066001,JRuleXMLPattern.SINGLE_MODE_TYPE);
						outLog(map);
						ArrayList<ArrayList<HashMap<String, Object>>> getIsList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
						if(getIsList.get(0) != null)
						{

							StdDt = (String)getIsList.get(0).get(0).get(STD_DT);
							 relativeDateCount = (String)getIsList.get(0).get(0).get(RELATIVE_DATE_COUNT);
							String StdDate = "";
							commonItem.getLogPrint().printDebugLog("STD_DT:" + StdDt);
							commonItem.getLogPrint().printDebugLog("RELATIVE_DATE_COUNT:" + relativeDateCount);

							if (STD_DT_KK0351_SVC_STA.equals(StdDt))
							{
								// 「サービス開始年月日」を基準日とする
								StdDate = svc_sta_ymd;
							}
							// 実行結果の基準日が「サービス課金開始年月日」の場合
							else if (STD_DT_KK0351_SVC_CHRG_STA.equals(StdDt))
							{
								// 「サービス課金開始年月日」を基準日とする
								StdDate = svc_chrg_sta_ymd;
							}
							// 実行結果の基準日が「サービス終了年月日」の場合
							else if (STD_DT_KK0351_SVC_END.equals(StdDt))
							{
								// 「サービス終了年月日」を基準日とする
//								StdDate = 
								inMap.set("CHK_YMD", "99999999");
								break;
							}
							// 実行結果の基準日が「元のサービス契約の課金開始年月日」の場合
							else if (STD_DT_KK0351_BEF_SVC_STA.equals(StdDt))
							{
								// 「サービス終了年月日」を基準日とする
								inMap.set("CHK_YMD", "99999999");
								break;
							}

							// 基準日からの相対日が"+0"の場合
							if (RELATIVE_DATE_COUNT_0.equals(relativeDateCount))
							{
								// 基準日を「開始日」とする
								inMap.set("CHK_YMD", StdDate);
							}

							// 基準日からの相対日が"翌月月初"の場合
							else if (RELATIVE_DATE_COUNT_NEXT.equals(relativeDateCount))
							{
								// 基準日の翌月を算出する
								StdDate = JBSbatDateUtil.adjustMonth(StdDate, 1);
								if(!"".equals(StdDate))
								{
									inMap.set("CHK_YMD", StdDate.substring(0,6) + "01");
								}
							}

							// 基準日からの相対日が"翌々月月初"の場合
							else if (RELATIVE_DATE_COUNT_NEXT_NX.equals(relativeDateCount))
							{
								// 基準日の翌々月を算出する
								StdDate = JBSbatDateUtil.adjustMonth(StdDate, 2);
								if(!"".equals(StdDate))
								{
									inMap.set("CHK_YMD", StdDate.substring(0,6) + "01");
								}
							}
						}	
						
					}
					break;

				case TGSCM_KKTK_SVC_KEI:
					// 機器提供サービス契約番号を取得
					String kktk_svc_kei_no = inMap.getString("KKTK_SVC_KEI_NO");
					commonItem.getLogPrint().printDebugLog(
							"機器提供サービス契約番号：サービス課金開始日：" + kktk_svc_kei_no);

					paramSvc = new Object[]{
							svc_kei_no,	// サービス契約番号
							kktk_svc_kei_no	// 機器提供サービス契約番号
					};
					
					dataMap = new HashMap();
					executeKK_T_KKTK_SVC_KEI_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_KKTK_SVC_KEI.selectNext();
					if(getDataMap != null)
					{
						

						dataMap = getDataMap.getMap();
							
						// ルールエンジンで使用する値を設定
						map.put(IDO_DIV, ido_div);
						map.put(SVC_CD, dataMap.get("SVC_CD").toString());

						xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID_0067001,JRuleXMLPattern.SINGLE_MODE_TYPE);
						outLog(map);
						ArrayList<ArrayList<HashMap<String, Object>>> getIsList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
						if(getIsList.get(0) != null)
						{
							StdDt = (String)getIsList.get(0).get(0).get(STD_DT);
							relativeDateCount = (String)getIsList.get(0).get(0).get(RELATIVE_DATE_COUNT);
							String StdDate = "";
							commonItem.getLogPrint().printDebugLog("STD_DT:" + StdDt);
							commonItem.getLogPrint().printDebugLog("RELATIVE_DATE_COUNT:" + relativeDateCount);

							StdDate = (String) dataMap.get("SVC_STA_YMD");
							if (RELATIVE_DATE_COUNT_NEXT.equals(relativeDateCount))
								{
									// 基準日の翌月を算出する
									StdDate = JBSbatDateUtil.adjustMonth(StdDate, 1);
									
									if(StdDate != null && StdDate.length() > 5)
									{
										inMap.set("CHK_YMD", StdDate.substring(0,6) + "01");
									}
							}
							else
							{
								inMap.set("CHK_YMD", StdDate);
							}
						}	
					}
					break;

				case TGSCM_SBOP_SVC_KEI:
					// サブオプションサービス契約番号を取得
					String sbop_svc_kei_no = inMap.getString("SBOP_SVC_KEI_NO");
					commonItem.getLogPrint().printDebugLog(
							"サブオプションサービス契約番号：サービス課金開始日：" + sbop_svc_kei_no);

					paramSvc = new Object[]{
							svc_kei_no,	// サービス契約番号
							svc_kei_no,	// サービス契約番号
							sbop_svc_kei_no	// サブオプションサービス契約番号
					};
					
					String op_svc_staymd = "";
					String sbop_svc_stakibo_ymd = "";
					mskm_dtl_no = "";
					prc_grp_cd = "";
					svc_cd = "";
					svc_sta_ymd = "";
					svc_chrg_sta_ymd = "";
					
					dataMap = new HashMap();

					executeKK_T_SBOP_SVC_KEI_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_SBOP_SVC_KEI.selectNext();

					if(getDataMap != null) 
					{
						dataMap = getDataMap.getMap();
						// 申込明細番号
						if(dataMap.get("MSKM_DTL_NO") != null)
						{
							mskm_dtl_no = dataMap.get("MSKM_DTL_NO").toString();
						}
						if(dataMap.get("SVC_CD") != null)
						{
							svc_cd = dataMap.get("SVC_CD").toString();
						}
						if(dataMap.get("SVC_STA_YMD") != null)
						{
							svc_sta_ymd = dataMap.get("SVC_STA_YMD").toString();
						}
						if(dataMap.get("SVC_CHRG_STAYMD") != null)
						{
							svc_chrg_sta_ymd = dataMap.get("SVC_CHRG_STAYMD").toString();
						}
						if(dataMap.get("SVC_STAYMD") != null)
						{
							op_svc_staymd = (String)dataMap.get("SVC_STAYMD");
						}
						if(dataMap.get("SVC_USE_STA_KIBO_YMD") != null)
						{
							sbop_svc_stakibo_ymd = (String)dataMap.get("SVC_USE_STA_KIBO_YMD");
						}
						if(dataMap.get("PRC_GRP_CD") != null)
						{
							prc_grp_cd = (String)dataMap.get("PRC_GRP_CD");
						}
						commonItem.getLogPrint().printDebugLog("MSKM_DTL_NO:" + mskm_dtl_no);
						commonItem.getLogPrint().printDebugLog("SVC_CD:" + svc_cd);
						commonItem.getLogPrint().printDebugLog("SVC_STA_YMD:" + svc_sta_ymd);
						commonItem.getLogPrint().printDebugLog("SVC_CHRG_STAYMD:" + svc_chrg_sta_ymd);
					}
					else
					{
						break;
					}
					dataMap = new HashMap();
					paramSvc = new Object[]{
							mskm_dtl_no// 申込明細番号
					};
					executeKK_T_MSKM_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_MSKM.selectNext();

					if(getDataMap != null)
					{
						dataMap = getDataMap.getMap();
						
						if( dataMap.get("MSKM_UK_DTM") != null)
						{
							// 申込受付年月日
							mskm_uk_dtm = dataMap.get("MSKM_UK_DTM").toString();
						}
						else
						{
							// 申込受付年月日
							mskm_uk_dtm = "";
						}
						commonItem.getLogPrint().printDebugLog("申込受付年月日:" +  mskm_uk_dtm);
					}
					else
					{
						break;
					}
					
					dataMap = new HashMap();
					paramSvc = new Object[]{
							mskm_dtl_no// 申込明細番号
					};

					executeKK_T_MSKM_DTL_KV_SELECT_001(paramSvc);
					getDataMap = db_KK_T_MSKM_DTL.selectNext();

					if(getDataMap != null)
					{
						dataMap = getDataMap.getMap();
						
						if(dataMap.get("MSKM_YMD") != null)
						{
							// 申込受付年月日
							mskm_dtl_ymd = dataMap.get("MSKM_YMD").toString();
						}
						else
						{
							// 申込受付年月日
							mskm_dtl_ymd = "";
						}
						commonItem.getLogPrint().printDebugLog("申込年月日:" +  mskm_dtl_ymd);
					}
					else
					{
						break;
					}
					// 申込期間を取得する。
					mskm_period = getMskmPeriod(mskm_dtl_ymd, svc_sta_ymd, svc_chrg_sta_ymd);

					if(getDataMap != null)
					{
						
						dataMap = getDataMap.getMap();

						// ルールエンジンで使用する値を設定
						map.put(IDO_DIV, ido_div);
						map.put(SVC_CD, svc_cd);
						map.put(UP_OPTY, "1");
						map.put(PRC_GRP_CD, prc_grp_cd);
						map.put(MSKM_PRD, mskm_period);
						// 開始日
						apl_ymd = opeDate;
						if(!"".equals(apl_ymd))
						{
							String staDay = apl_ymd.substring(6);
							// 開始日が1日の場合
							if("01".equals(staDay))
							{
								// "1"(1日)
								map.put("STA_DAY", "1");
							}
							else
							{
								// "0"(1日以外)
								map.put("STA_DAY", "0");
							}
						}
						xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID_0068001,JRuleXMLPattern.SINGLE_MODE_TYPE);
						outLog(map);
						ArrayList<ArrayList<HashMap<String, Object>>> getIsList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
						if(getIsList.get(0) != null)
						{
							StdDt = (String)getIsList.get(0).get(0).get(STD_DT);
							relativeDateCount = (String)getIsList.get(0).get(0).get(RELATIVE_DATE_COUNT);
							
							commonItem.getLogPrint().printDebugLog("STD_DT:"+ StdDt);
							commonItem.getLogPrint().printDebugLog("RELATIVE_DATE_COUNT:"+ relativeDateCount);
							String StdDate = "";
							StdDate = op_svc_staymd;

							if (RELATIVE_DATE_COUNT_NEXT.equals(relativeDateCount))
								{
									// 基準日の翌月を算出する
									StdDate = JBSbatDateUtil.adjustMonth(StdDate, 1);
									if(StdDate != null && StdDate.length() > 5)
									{
										inMap.set("CHK_YMD", StdDate.substring(0,6) + "01");
									}
							}
							else
							{
								inMap.set("CHK_YMD", StdDate);
							}
						}	
					}
					break;
			}
		}
		else if(class_name.equals("CLASS3"))
		{
			commonItem.getLogPrint().printDebugLog("サービス契約：サービス開始日：" + svc_kei_no + ":" + inMap.get("SVC_KEI_UCWK_NO"));

			String apl_ymd = inMap.getString("PRG_DTM").substring(0, 8);
			// データ抽出条件を設定	
			paramSvc = new Object[]{
					apl_ymd,
					svc_kei_no,	// サービス契約番号
					svc_kei_no	// サービス契約番号
			};
			
			dataMap = new HashMap();

			// DBアクセスクラスを生成します
			executeKK_T_SVC_KEI_KK_SELECT_201(paramSvc);
			getDataMap = db_KK_T_SVC_KEI.selectNext();
			if(getDataMap != null)
			{
				dataMap = getDataMap.getMap();
				
				String prc_grp_cd = (String)dataMap.get("PRC_GRP_CD");
				
				if(prc_grp_cd != null && !"".equals(prc_grp_cd))
				{
					prc_grp_cd  = JBSbatStringUtil.Rtrim(prc_grp_cd);
				}
				
				if("00020".equals(ido_div))
				{
					ido_div = "00001";
				}
				// ルールエンジンで使用する値を設定
				map.put(SVC_CD, dataMap.get("SVC_CD"));
				map.put(KAISEN_TK_COMP_CD, dataMap.get("KAISEN_TK_COMP_CD"));
				map.put(PRC_GRP_CD, prc_grp_cd);
				map.put(KOJI_UM, "1");
				map.put(KKTK_SBT_CD, dataMap.get("KKTK_SBT_CD"));
				map.put(BMP_UM, dataMap.get("BMP_UM"));
				map.put(IDO_DIV, ido_div);
				
				// サービス希望年月日
				String svcKibouYmd = (String)dataMap.get(JBSbatKK_T_SVC_KEI.SVC_USE_STA_KIBO_YMD);
				// VLANID取込み年月日
				String vlanidtrmkYmd = (String)dataMap.get(JBSbatKK_T_SVKEI_KAISEN_UW.TEL_VLAN_ID_TRKM_YMD);

				// 検索条件としてサービス契約番号、バッチ運用日を設定。
				String [] selectParam3 = {svc_kei_no, opeDate , opeDate};

				String kojiUm =executeKU_T_KOJIAK_KV_SELECT_001(selectParam3);
				map.put(KOJI_UM, kojiUm);
				
				if("07".equals(prc_grp_cd) || "16".equals(prc_grp_cd))
				{
					map.put(KAISEN_TK_COMP_CD, "01");
				}
				// サービスコードが電話サービス且つ回線提供会社コードがK-OPT且つ番ポ有無が無且つ異動区分が光電話・番号変更の場合
				if("02".equals(dataMap.get("SVC_CD")) && "01".equals(dataMap.get("KAISEN_TK_COMP_CD")) && "0".equals(dataMap.get("BMP_UM")) && "00042".equals(ido_div))
				{
					// 検索条件としてサービス契約番号、バッチ運用日を設定。
					String [] selectParam = {svc_kei_no, opeDate};
					
					// サービス契約内訳<eo光電話>検索処理の実行。
					executeKK_T_KKTK_SVC_KEI_KV_SELECT_002(selectParam);
					
					JBSbatCommonDBInterface outMap = db_KK_T_KKTK_SVC_KEI.selectNext();
					
					if(outMap == null)
					{
						// (8)機器出荷有無 = 有(固定値)
						map.put(KKSHKA_UM, "1");
					}
					else
					{
						// 検索結果から「ポート数」を取得します。
						String portCnt = JBSbatStringUtil.convDoubleToString(outMap.getBigDecimal(JBSbatZM_M_TAKNKIKI_MODEL.PORT_CNT));
						
						// ポート数が2の場合
						if("2".equals(portCnt))
						{
							// (8)機器出荷有無 = 無(固定値)
							map.put(KKSHKA_UM, "0");
						}
						//それ以外の場合
						else
						{
							// (8)機器出荷有無 = 有(固定値)
							map.put(KKSHKA_UM, "1");
						}
					}
				}
				if("02".equals(dataMap.get("SVC_CD")) && "01".equals(dataMap.get("KAISEN_TK_COMP_CD")) && "0".equals(dataMap.get("BMP_UM")) && "00041".equals(ido_div))
				{
					// (8)機器出荷有無 = 有(固定値)
					map.put(KKSHKA_UM, "1");
				}
				
				xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID_0073001,JRuleXMLPattern.SINGLE_MODE_TYPE);
				outLog(map);	//ログ出力
				ArrayList<ArrayList<HashMap<String, Object>>> getIsList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
				if(getIsList.get(0) != null)
				{
					commonItem.getLogPrint().printDebugLog("STD_DT :" + (String)getIsList.get(0).get(0).get(STD_DT));
					commonItem.getLogPrint().printDebugLog("RELATIVE_DATE_COUNT :" + (String)getIsList.get(0).get(0).get(RELATIVE_DATE_COUNT));
					commonItem.getLogPrint().printDebugLog("PRIORITY_STD_DT :" + (String)getIsList.get(0).get(0).get(PRIORITY_STD_DT));

					StdDt = (String)getIsList.get(0).get(0).get(STD_DT);
					String priorityStdDate = (String)getIsList.get(0).get(0).get(PRIORITY_STD_DT);
					String StdDate = "";
					if (STD_DT_SHOSA.equals(StdDt))
					{
						StdDate = (String) dataMap.get("SHOSA_YMD");
					}
					else if (STD_DT_KOJI.equals(StdDt))
					{
						String [] selectParam = {svc_kei_no, opeDate, opeDate};
						executeKK_T_KJ_FIN_WK_KV_SELECT_001(selectParam);
						JBSbatCommonDBInterface outMap = db_KK_T_KJ_FIN_WK.selectNext();
						
						if(outMap != null)
						{
							StdDate = outMap.getString("KOJIAK_JSSI_YMD");
						}
					}
					else if (STD_DT_HAISO.equals(StdDt))
					{
						String [] selectParam = {opeDate , svc_kei_no  , opeDate};
						executeDK_T_HAISO_KV_SELECT_001(selectParam);
						JBSbatCommonDBInterface outMap = db_DK_T_HAISO.selectNext();
						
						if(outMap != null)
						{
							StdDate = outMap.getString("HAISO_FIN_YMD");
						}
					}
					else if (STD_DT_NTT.equals(StdDt))
					{
						String [] selectParam = {svc_kei_no};
						executeKK_T_ADSL_KOJI_KV_SELECT_001(selectParam);
						JBSbatCommonDBInterface outMap = db_KK_T_ADSL_KOJI.selectNext();
						
						if(outMap != null)
						{
							StdDate = outMap.getString("NTT_KYOKU_NAI_KOJI_YMD");
						}
					}
					else if (STD_DT_BMP.equals(StdDt))
					{
						String [] selectParam = {svc_kei_no};
						executeKK_T_SVC_KEI_UCWK_KV_SELECT_001(selectParam);
						JBSbatCommonDBInterface outMap = db_KK_T_SVC_KEI_UCWK.selectNext();
						if(outMap != null)
						{
							String [] selectParam2 = {outMap.getString("SVC_KEI_UCWK_NO")};
							executeTU_T_BMP_KOJI_KV_SELECT_001(selectParam2);
							outMap = db_TU_T_BMP_KOJI.selectNext();
							if(outMap != null)
							{
								StdDate = outMap.getString("BMP_KOJI_FIN_YMD");
							}
						}
					}
					else if (STD_DT_INS.equals(StdDt))
					{
						StdDate = (String) dataMap.get("RSV_APLY_YMD");
					}
					else if (STD_DT_UPD.equals(StdDt))
					{
						StdDate = (String) dataMap.get("RSV_APLY_YMD");
					}
					else if (STD_DT_OLT.equals(StdDt))
					{
						// 検索条件としてサービス契約番号、バッチ運用日を設定。
						String [] selectParam = {svc_kei_no, opeDate, opeDate};
						executeKK_T_KJ_FIN_WK_KV_SELECT_001(selectParam);
						JBSbatCommonDBInterface outMap = db_KK_T_KJ_FIN_WK.selectNext();
						
						if(outMap != null)
						{
							StdDate = outMap.getString("KOJIAK_JSSI_YMD");
						}
					}
					
					relativeDateCount = (String)getIsList.get(0).get(0).get(RELATIVE_DATE_COUNT);
					if (null == relativeDateCount || "".equals(relativeDateCount))
					{
//						StdDate = JBSbatDateUtil.adjustMonth(StdDate, 1);
//						inMap.set("CHK_YMD", StdDate.substring(0,6) + "01");
						String manKYmd = getMansionKjnYmd(svc_kei_no, opeDate);
						
						
						for(int i = 0; i < Integer.parseInt(manKYmd) + 1 ; i++)
						{
							StdDate = JKVBatIdoKns.getEigyouYmd(StdDate);
						}
					}
					else
					{
						StdDate = JBSbatDateUtil.adjustDate(StdDate,  Integer.parseInt(relativeDateCount));
					}
					
					if("1".equals(priorityStdDate))
					{
						commonItem.getLogPrint().printDebugLog("サービス希望年月日: " + svcKibouYmd);
						if(svcKibouYmd ==null || "".equals(svcKibouYmd))
						{
							inMap.set("CHK_YMD", StdDate);
						}
						else
						{
							if(StdDate.compareTo(svcKibouYmd) < 0) {
								StdDate = svcKibouYmd;
							}
							inMap.set("CHK_YMD", StdDate);
						}
					}
					else if("2".equals(priorityStdDate))
					{
						commonItem.getLogPrint().printDebugLog("VLAN取込み年月日: " + vlanidtrmkYmd);

						if(vlanidtrmkYmd ==null || "".equals(vlanidtrmkYmd))
						{
							inMap.set("CHK_YMD", StdDate);
						}
						else
						{
							if(StdDate.compareTo(vlanidtrmkYmd) < 0) {
								StdDate = vlanidtrmkYmd;
							}
							inMap.set("CHK_YMD", StdDate);
						}
						
					}
					else
					{
						inMap.set("CHK_YMD", StdDate);
					}
				}	
				
			}
		}
		else if(class_name.equals("CLASS4"))
		{
			String apl_ymd = inMap.getString("PRG_DTM").substring(0, 8);
			commonItem.getLogPrint().printDebugLog(
					"サービス契約番号：サービス課金開始日：" + svc_kei_no);
			// データ抽出条件を設定	
			paramSvc = new Object[]{
					apl_ymd,	// 年月日
					svc_kei_no,	// サービス契約番号
					svc_kei_no	// サービス契約番号
			};
			
			dataMap = new HashMap();
			
			executeKK_T_SVC_KEI_KK_SELECT_200(paramSvc);
			getDataMap = db_KK_T_SVC_KEI.selectNext();
			if(getDataMap != null)
			{
				dataMap = getDataMap.getMap();
				
				String prc_grp_cd = (String)dataMap.get("PRC_GRP_CD");
				
				if(prc_grp_cd != null && !"".equals(prc_grp_cd))
				{
					prc_grp_cd  = JBSbatStringUtil.Rtrim(prc_grp_cd);
				}

				String mskm_flg = "0";
				
				if(dataMap.get("DJ_MSKM_FLG") != null)
				{
					mskm_flg = String.valueOf(dataMap.get("DJ_MSKM_FLG"));
				}
				if("00020".equals(ido_div))
				{
					ido_div = "00001";
				}

				// ルールエンジンで使用する値を設定
				map.put(IDO_DIV, ido_div);
				map.put(SVC_CD, dataMap.get("SVC_CD"));
				map.put(PRC_GRP_CD, prc_grp_cd);
				map.put(PCRS_CD, dataMap.get("PCRS_CD"));
				map.put(KAISEN_TK_COMP_CD, dataMap.get("KAISEN_TK_COMP_CD"));
				map.put(KOJI_UM, "0");
				map.put(CHRG_STA_YMD_HOSEI_UM, dataMap.get("CHRG_STA_YMD_HOSEI_UM"));
				map.put(KKTK_SBT_CD, dataMap.get("KKTK_SBT_CD"));
				map.put(INSVC_DOJI_MSKM_UM, mskm_flg);

				// 検索条件としてサービス契約番号、バッチ運用日を設定。
				String [] selectParam3 = {svc_kei_no, opeDate , opeDate};

				String kojiUm =executeKU_T_KOJIAK_KV_SELECT_001(selectParam3);
				map.put(KOJI_UM, kojiUm);
				
				if("07".equals(prc_grp_cd) || "16".equals(prc_grp_cd))
				{
					map.put(KAISEN_TK_COMP_CD, "01");
				}
				
				xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID_0065001,JRuleXMLPattern.SINGLE_MODE_TYPE);
				outLog(map);
				ArrayList<ArrayList<HashMap<String, Object>>> getIsList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
				if(getIsList.get(0) != null)
				{
					StdDt = (String)getIsList.get(0).get(0).get(STD_DT);
					relativeDateCount = (String)getIsList.get(0).get(0).get(RELATIVE_DATE_COUNT);
					String StdDate = "";
					
					commonItem.getLogPrint().printDebugLog("STD_DT:" + StdDt);
					commonItem.getLogPrint().printDebugLog("RELATIVE_DATE_COUNT:" + relativeDateCount);

					// 実行結果の基準日が「サービス開始日」の場合
					if (STD_DT_KK0081_SVC_STA.equals(StdDt))
					{
						// 基準日にサービス開始年月日を設定する。
						StdDate = (String) dataMap.get("SVC_STA_YMD");
					}
					// 実行結果の基準日が「プラン開始日」の場合
					else if (STD_DT_KK0081_PLAN_STA.equals(StdDt))
					{
						// 基準日にプラン開始年月日を設定する。
						StdDate = (String) dataMap.get("PLAN_STAYMD");
					}
					
					// 基準日からの相対日が"翌月月初"の場合
					if (null == relativeDateCount || RELATIVE_DATE_COUNT_NEXT.equals(relativeDateCount))
					{
						// 基準日の翌月を算出する
						StdDate = JBSbatDateUtil.adjustMonth(StdDate, 1);
						if(!"".equals(StdDate))
						{
							inMap.set("CHK_YMD", StdDate.substring(0,6) + "01");
						}
					}
					else
					{
						// 基準日に「基準日からの相対日」を加算し、課金開始日とする。
						StdDate = JBSbatDateUtil.adjustDate(StdDate,  Integer.parseInt(relativeDateCount));
						if(!"".equals(StdDate))
						{
							inMap.set("CHK_YMD", StdDate);
						}
					}
				}	
			}
		}
		else
		{
			HashMap getMap =  JKVBatIdoKnsGetYmd.getIdoKnsYmd(class_name,inMap,commonItem);
			if(getMap != null && !getMap.isEmpty() && getMap.get("日付") != null && !getMap.get("日付").equals(""))
			{
				inMap.set("CHK_YMD",getMap.get("日付"));
			}
			else
			{
				inMap.set("CHK_YMD","");
			}
		}
	}
	
	/**
	 * SQLKEY(KK_SELECT_200)でDBアクセスを行います。<br>
	 * <p>1111111111
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	年月日
	 *		 	サービス契約番号
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_SVC_KEI_KK_SELECT_200(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		if(db_KK_T_SVC_KEI == null)
		{
			db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		}
		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_001);
	}
	
	/**
	 * SQLKEY(KK_SELECT_201)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	  *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_SVC_KEI_KK_SELECT_201(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		if(db_KK_T_SVC_KEI == null)
		{
			db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		}
			// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_001);
	}

	/**
	 * SQLKEY(KK_SELECT_200)でDBアクセスを行います。<br>
	 * <p>1111111111
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	年月日
	 *		 	サービス契約番号
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_SVC_KEI_KV_SELECT_006(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		if(db_KK_T_SVC_KEI == null)
		{
			db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		}
		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_006);
	}

	/**
	 * SQLKEY(KK_SELECT_090)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	機器提供サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_KKTK_SVC_KEI_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		if(db_KK_T_KKTK_SVC_KEI == null)
		{
			db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		}
		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KV_SELECT_001);
	}

	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	サービス契約番号
	 *		 	オプションサービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void  executeKK_T_OP_SVC_KEI_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		
		if(db_KK_T_OP_SVC_KEI == null)
		{
			db_KK_T_OP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);
		}
		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KV_SELECT_001);
	}

	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	サービス契約番号
	 *		 	サブオプションサービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_SBOP_SVC_KEI_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		if(db_KK_T_SBOP_SVC_KEI == null)
		{
			db_KK_T_SBOP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SBOP_SVC_KEI);
		}
		// DBアクセスを実行します
		db_KK_T_SBOP_SVC_KEI.selectBySqlDefine(paramList, KK_T_SBOP_SVC_KEI_KV_SELECT_001);
	}
	
	/**
	 * SQLKEY(KV_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_KKTK_SVC_KEI_KV_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		if(db_KK_T_KKTK_SVC_KEI == null)
		{
			db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		}
		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KV_SELECT_002);
	}

	
	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_KJ_FIN_WK_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		if(db_KK_T_KJ_FIN_WK == null)
		{
			db_KK_T_KJ_FIN_WK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KJ_FIN_WK);
		}
		// DBアクセスを実行します
		db_KK_T_KJ_FIN_WK.selectBySqlDefine(paramList, KK_T_KJ_FIN_WK_KV_SELECT_001);
	}
	
	
	/**
	 * SQLKEY(KK_SELECT_009)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_ADSL_KOJI_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		if(db_KK_T_ADSL_KOJI == null)
		{
			db_KK_T_ADSL_KOJI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ADSL_KOJI);
		}
		// DBアクセスを実行します
		db_KK_T_ADSL_KOJI.selectBySqlDefine(paramList, KK_T_ADSL_KOJI_KV_SELECT_001);
	}
	
	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeTU_T_BMP_KOJI_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		if(db_TU_T_BMP_KOJI == null)
		{
			db_TU_T_BMP_KOJI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_TU_T_BMP_KOJI);
		}
		// DBアクセスを実行します
		db_TU_T_BMP_KOJI.selectBySqlDefine(paramList, TU_T_BMP_KOJI_KV_SELECT_001);
	}
	
	
	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeDK_T_HAISO_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		if(db_DK_T_HAISO == null)
		{
			db_DK_T_HAISO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_HAISO);
		}
		// DBアクセスを実行します
		db_DK_T_HAISO.selectBySqlDefine(paramList, DK_T_HAISO_KV_SELECT_001);
	}
	
	/**
	 * SQLKEY(KV_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeDK_T_HAISO_KV_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		if(db_DK_T_HAISO == null)
		{
			db_DK_T_HAISO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_HAISO);
		}
		// DBアクセスを実行します
		db_DK_T_HAISO.selectBySqlDefine(paramList, DK_T_HAISO_KV_SELECT_002);
	}

	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	年月日
	 *		 	サービス契約番号
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_SVC_KEI_UCWK_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		if(db_KK_T_SVC_KEI_UCWK == null)
		{
			db_KK_T_SVC_KEI_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_UCWK);
		}
		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_KV_SELECT_001);
	}
	
	
	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	年月日
	 *		 	サービス契約番号
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_MSKM_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		if(db_KK_T_MSKM == null)
		{
			db_KK_T_MSKM = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM);
		}
		// DBアクセスを実行します
		db_KK_T_MSKM.selectBySqlDefine(paramList, KK_T_MSKM_KV_SELECT_001);
	}
	
	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	年月日
	 *		 	サービス契約番号
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_MSKM_DTL_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		if(db_KK_T_MSKM_DTL == null)
		{
			db_KK_T_MSKM_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM_DTL);
		}
		// DBアクセスを実行します
		db_KK_T_MSKM_DTL.selectBySqlDefine(paramList, KK_T_MSKM_DTL_KV_SELECT_001);
	}

	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	年月日

	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeCH_M_PRC_SCHDL_TEIGI_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		if(db_CH_M_PRC_SCHDL_TEIGI == null)
		{
			db_CH_M_PRC_SCHDL_TEIGI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI);
		}
		// DBアクセスを実行します
		db_CH_M_PRC_SCHDL_TEIGI.selectBySqlDefine(paramList, CH_M_PRC_SCHDL_TEIGI_KV_SELECT_002);
	}

	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	年月日

	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeZM_M_BUSIDAY_KANRI_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		if(db_ZM_M_BUSIDAY_KANRI == null)
		{
			db_ZM_M_BUSIDAY_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_BUSIDAY_KANRI);
		}
		// DBアクセスを実行します
		db_ZM_M_BUSIDAY_KANRI.selectBySqlDefine(paramList, ZM_M_BUSIDAY_KANRI_KV_SELECT_001);
	}

	/**
	 * テーブルアクセスクラスをクローズします。
	 * 
	 * @throws Exception 例外が発生した場合
	 */
	public void close() throws Exception
	{
		if (db_KK_T_SVC_KEI != null)
		{
			db_KK_T_SVC_KEI.close();
		}
		if (db_KK_T_KKTK_SVC_KEI != null)
		{
			db_KK_T_KKTK_SVC_KEI.close();
		}
		if (db_KK_T_OP_SVC_KEI != null)
		{
			db_KK_T_OP_SVC_KEI.close();
		}
		if (db_KK_T_SBOP_SVC_KEI != null)
		{
			db_KK_T_SBOP_SVC_KEI.close();
		}
		if (db_KK_T_KJ_FIN_WK != null)
		{
			db_KK_T_KJ_FIN_WK.close();
		}
		if (db_KK_T_ADSL_KOJI != null)
		{
			db_KK_T_ADSL_KOJI.close();
		}
		if (db_TU_T_BMP_KOJI != null)
		{
			db_TU_T_BMP_KOJI.close();
		}
		if (db_DK_T_HAISO != null)
		{
			db_DK_T_HAISO.close();
		}
		if (db_KK_T_SVC_KEI_UCWK != null)
		{
			db_KK_T_SVC_KEI_UCWK.close();
		}
		if (db_KK_T_MSKM != null)
		{
			db_KK_T_MSKM.close();
		}
		if(db_KK_T_MSKM_DTL != null)
		{
			db_KK_T_MSKM_DTL.close();	
		}
		if(db_KU_T_KOJIAK != null)
		{
			db_KU_T_KOJIAK.close();
		}
		if(db_ZM_M_BUSIDAY_KANRI != null)
		{
			db_ZM_M_BUSIDAY_KANRI.close();
		}
	}
	

	private static String getMskmPeriod(String mskmYmd, String svcStaYmd, String svcChrgStaymd)
	{

		JRuleXMLHandler xmlHandler = null;
		JBSbatCommonDBInterface getDataMap = null;
		Object[] paramSvc = null;
		HashMap dataMap = new HashMap();
		HashMap<String, Object> map = new HashMap<String, Object>();

		String StdDt = "";
		String relativeDateCount = "";

		// ルールエンジンで使用する値を設定
		map.put(MSKM_YMD, mskmYmd);
		map.put(SVC_STAYMD, svcStaYmd);
		map.put(SVC_CHRG_STAYMD, svcChrgStaymd);
		
		xmlHandler = JCCBatCommon.createSokanRuleEngine(RULE_ID_0088001,JRuleXMLPattern.SINGLE_MODE_TYPE);
//		outLog(map);
		ArrayList<ArrayList<HashMap<String, Object>>> getIsList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
		if(getIsList.get(0) != null)
		{
			StdDt = (String)getIsList.get(0).get(0).get(JUDGE_RSLT);
		}	
		return StdDt;
	}

	/**
	 * <p>
	 * サービス開始年月日期間変換処理を行います。
	 * </p>
	 * @param svcStaYmd 元のサービス契約のサービス開始日（日付）
	 * @return 元のサービス契約のサービス開始日（値）
	 */
	private String convSvcStaYmd(String svcStaYmd)
	{
		// 元のサービス契約のサービス開始日が未設定の場合はnullを返却する
		if (svcStaYmd == null || svcStaYmd.equals(""))

		{
			return null;
		}
		
		// サービス開始年月日から日付を取得
		String dd = svcStaYmd;

		// パラメータの日付部分が15日以下の場合、「1〜15日」を返却する
		if (HALF_DATE.compareTo(dd) > 0)
		{
			return KK0081_SVC_STA_FIRST;
		}

		// それ以外の場合、「16〜末日」を返却する
		return KK0081_SVC_STA_SECOND;
	}

	/**
	 * map内容をログ表示する
	 * @param map
	 */
	private static void outLog(HashMap map)
	{
		commonItem.getLogPrint().printDebugLog("map内容↓start");
//		Iterator<String> iterator = map.values().iterator();
		Set<String> keys = map.keySet();
		Iterator<String> iterator = keys.iterator();

		while(iterator.hasNext())
		{
			String key = (String)iterator.next();
			String val = (String)map.get(key);
			commonItem.getLogPrint().printDebugLog(key + ": " + val);
		}
		commonItem.getLogPrint().printDebugLog("map内容_end");
	}

	public static String executeKU_T_KOJIAK_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		String kojiakSbtCd = "";
		String kojiakStat = "";
		
		if(db_KU_T_KOJIAK == null)
		{
			db_KU_T_KOJIAK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_KOJIAK);
		}
		
		// DBアクセスを実行します
		db_KU_T_KOJIAK.selectBySqlDefine(paramList, KU_T_KOJIAK_KV_SELECT_001);
		
		JBSbatCommonDBInterface kojiakMap = new JBSbatCommonDBInterface(); 

		kojiakMap = db_KU_T_KOJIAK.selectNext();

		if(null != kojiakMap)
		{
			kojiakSbtCd   = JBSbatStringUtil.Rtrim(kojiakMap.getString(JBSbatKU_T_KOJIAK.KOJIAK_SBT_CD));		// 工事案件種別コード
			kojiakStat    = JBSbatStringUtil.Rtrim(kojiakMap.getString(JBSbatKU_T_KOJIAK.KOJIAK_STAT));			// 工事案件ステータス
		}

		// 工事有無情報取得結果がない場合。
		if("".equals(kojiakSbtCd) && "".equals(kojiakStat))
		{
			return "0";
		}
		
		// 工事有無情報取得結果がない場合。
		// 工事案件種別コードが「010(プラン変更(工事無し))、011(サービス追加(工事なし))」の場合
		if("".equals(kojiakSbtCd) || "010".equals(kojiakSbtCd) || "011".equals(kojiakSbtCd))
		{
			return "0";
		}
		else
		{
			// 工事案件ステータスの確認
			// 110	なし
			// 120	登録済
			// 900	中止
			if ("110".equals(kojiakStat) || "120".equals(kojiakStat) || "900".equals(kojiakStat)) {
				// (4)工事有無 = ０：工事なし（固定値）
				return "0";
			}
			else
			{
				
				return "1";
			}
		}
	}

	/**
	 * 
	 * マンション基準日を取得します。
	 * 
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private static String getMansionKjnYmd(String svcKeiNo, String opeDate) throws Exception
	{
		// 検索条件としてサービス契約番号、バッチ運用日を設定。
		String [] selectParam135 = {svcKeiNo, opeDate};
		commonItem.getLogPrint().printDebugLog("selectParam135(サービス契約番号)：" +  selectParam135[0]);
		commonItem.getLogPrint().printDebugLog("selectParam135(予約適用年月日)：：" +  selectParam135[1]);
		
		// サービス契約検索処理の実行。
		executeKK_T_SVC_KEI_KV_SELECT_006(selectParam135);
		
		JBSbatCommonDBInterface outMap = db_KK_T_SVC_KEI.selectNext();
		
		if(null == outMap)
		{
			return  "0";
		}
		else
		{
			
			// 検索結果の標準サービス開始日数をフィールド変数に設定する。
			String mansionKjnYmd = outMap.getBigDecimal("STDARD_SVC_STA_NISU") == null ? "" : outMap.getBigDecimal("STDARD_SVC_STA_NISU").toString(); 
			
			if("".equals(mansionKjnYmd))
			{
				mansionKjnYmd = "0";
			}
			
			return mansionKjnYmd;
		}
	}
	/**
	 * 
	 * 営業日を取得します。
	 * 
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private static String getEigyouYmd(String kjnYmd) throws Exception
	{
		// 営業日フラグを取得します。
		String busidayFlg = JKVBatIdoKns.getBusidayFlg(kjnYmd);
		
		// 営業日フラグが"非営業日"の場合。
		if("0".equals(busidayFlg))
		{
			commonItem.getLogPrint().printDebugLog("基準日：" + kjnYmd + "_非営業日");
			// 1年分繰り返す
			for(int i = 0 ; i < 365 ; i++)
			{
				// 基準日を1日ずらす
				kjnYmd = JBSbatDateUtil.adjustDate(kjnYmd, 1);
				
				// 再度営業日フラグを取得します。
				busidayFlg = JKVBatIdoKns.getBusidayFlg(kjnYmd);
				
				// 営業日フラグが"営業日"の場合。
				if("1".equals(busidayFlg))
				{
					// 処理終了
					break;
				}
				else
				{
					commonItem.getLogPrint().printDebugLog("基準日：" + kjnYmd + "_非営業日");
				}
			}
		}
		commonItem.getLogPrint().printDebugLog("基準日：" + kjnYmd+ "_  営業日");
		
		return kjnYmd;
	}

	/**
	 * 
	 * 営業日フラグを返却します。
	 * 
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private static String getBusidayFlg(String kjnYmd) throws Exception
	{
		// 検索条件として基準日を設定。
		String [] selectParam001 = {kjnYmd};
		
		// 営業日管理検索処理の実行。
		executeZM_M_BUSIDAY_KANRI_KV_SELECT_001(selectParam001);
		
		JBSbatCommonDBInterface outMap = db_ZM_M_BUSIDAY_KANRI.selectNext();
		
		if(null == outMap)
		{
			commonItem.getLogPrint().printDebugLog("営業日管理情報が存在しません。");
			return null;
		}
		else
		{
			return JBSbatStringUtil.Rtrim(outMap.getString(JBSbatZM_M_BUSIDAY_KANRI.BUSIDAY_FLG));
		}
	}
}
