/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKVDateValidation
*	ソースファイル名	：JBSbatKVDateValidation.java
*	作成者				：富士通　
*	作成日				：2013年06月05日
*＜機能概要＞
*　契約異動検証日付検証部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2013/06/05   富士通		新規作成
*	v5.00.00	2013/08/22	 FJ)竹之下	【OM-2013-0000397 】メッセージ変更
*	v5.00.00	2013/09/18	 FJ)竹之下	【OM-2013-0002073 】
*	v5.00.00	2013/09/18	 FJ)竹之下	【OM-2013-0002406 】
*********************************************************************/
package eo.business.service;

import static eo.common.util.JKKStringUtil.isNullBlank;

import java.util.ArrayList;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JKVBatChkTgt;
import eo.business.common.JKVBatIdoKnsJkn;
import eo.business.util.file.JBSbatKVIFM008;
import eo.business.util.file.JBSbatKVIFM010;
import eo.business.util.table.JBSbatDK_T_HAISO_TG_BPIN;
import eo.business.util.table.JBSbatKK_T_ADCHG_DTL;
import eo.business.util.table.JBSbatKK_T_KAISEN_TG_SVKEI;
import eo.business.util.table.JBSbatKK_T_KAP_KEI;
import eo.business.util.table.JBSbatKK_T_KKTK_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_OP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SBOP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_UCWK;
import eo.business.util.table.JBSbatKV_M_KEI_IDO_KNSJKN;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatDateUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKVDateValidation extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(住所変更明細)*/
	private static final String D_TBL_NAME_KK_T_ADCHG_DTL = "KK_T_ADCHG_DTL";

	/** テーブル(契約異動検証条件)*/
	private static final String D_TBL_NAME_KV_M_KEI_IDO_KNSJKN = "KV_M_KEI_IDO_KNSJKN";

	/** テーブル(サービス契約)*/
	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_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_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";

	/** テーブル(請求オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_SEIOPSVC_KEI = "KK_T_SEIOPSVC_KEI";

	/** テーブル(利用停止期間)*/
	private static final String D_TBL_NAME_KK_T_USE_STP_PRD = "KK_T_USE_STP_PRD";

	/** テーブル(割賦契約)*/
	private static final String D_TBL_NAME_KK_T_KAP_KEI = "KK_T_KAP_KEI";

	/** テーブル(課金先)*/
	private static final String D_TBL_NAME_KK_T_KAKINS = "KK_T_KAKINS";

	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(料金グループ)*/
	private static final String D_TBL_NAME_KK_M_PPLAN = "KK_M_PPLAN";

	/** テーブル(回線対象サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KAISEN_TG_SVKEI = "KK_T_KAISEN_TG_SVKEI";

	/** テーブル(宅内機器型式)*/
	private static final String D_TBL_NAME_ZM_M_TAKNKIKI_MODEL = "ZM_M_TAKNKIKI_MODEL";

	/** テーブル(配送対象物品)*/
	private static final String D_TBL_NAME_DK_T_HAISO_TG_BPIN = "DK_T_HAISO_TG_BPIN";
	/** SQL定義キー(KV_SELECT_001)*/
	private static final String DK_T_HAISO_TG_BPIN_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_ADCHG_DTL_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_002)*/
	private static final String KK_T_ADCHG_DTL_KV_SELECT_002 = "KV_SELECT_002";
	
	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KV_M_KEI_IDO_KNSJKN_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_002)*/
	private static final String KV_M_KEI_IDO_KNSJKN_KV_SELECT_002 = "KV_SELECT_002";

	/** SQL定義キー(KV_SELECT_008)*/
	private static final String KK_T_SVC_KEI_KV_SELECT_008 = "KV_SELECT_008";

	/** SQL定義キー(KV_SELECT_009)*/
	private static final String KK_T_SVC_KEI_KV_SELECT_009 = "KV_SELECT_009";

	/** SQL定義キー(KV_SELECT_010)*/
	private static final String KK_T_SVC_KEI_KV_SELECT_010 = "KV_SELECT_010";

	/** SQL定義キー(KV_SELECT_011)*/
	private static final String KK_T_SVC_KEI_KV_SELECT_011 = "KV_SELECT_011";

	/** SQL定義キー(KV_SELECT_012)*/
	private static final String KK_T_SVC_KEI_KV_SELECT_012 = "KV_SELECT_012";

	/** SQL定義キー(KV_SELECT_004)*/
	private static final String KK_T_SVC_KEI_UCWK_KV_SELECT_004 = "KV_SELECT_004";

	/** SQL定義キー(KV_SELECT_005)*/
	private static final String KK_T_SVC_KEI_UCWK_KV_SELECT_005 = "KV_SELECT_005";

	/** SQL定義キー(KV_SELECT_006)*/
	private static final String KK_T_SVC_KEI_UCWK_KV_SELECT_006 = "KV_SELECT_006";

	/** SQL定義キー(KV_SELECT_007)*/
	private static final String KK_T_SVC_KEI_UCWK_KV_SELECT_007 = "KV_SELECT_007";

	/** SQL定義キー(KV_SELECT_008)*/
	private static final String KK_T_SVC_KEI_UCWK_KV_SELECT_008 = "KV_SELECT_008";

	/** SQL定義キー(KV_SELECT_013)*/
	private static final String KK_T_SVC_KEI_UCWK_KV_SELECT_013 = "KV_SELECT_013";

	/** SQL定義キー(KV_SELECT_005)*/
	private static final String KK_T_OP_SVC_KEI_KV_SELECT_005 = "KV_SELECT_005";

	/** SQL定義キー(KV_SELECT_015)*/
	private static final String KK_T_OP_SVC_KEI_KV_SELECT_015 = "KV_SELECT_015";

	/** SQL定義キー(KV_SELECT_016)*/
	private static final String KK_T_OP_SVC_KEI_KV_SELECT_016 = "KV_SELECT_016";

	/** SQL定義キー(KV_SELECT_014)*/
	private static final String KK_T_OP_SVC_KEI_KV_SELECT_014 = "KV_SELECT_014";
	
	/** SQL定義キー(KV_SELECT_004)*/
	private static final String KK_T_SBOP_SVC_KEI_KV_SELECT_004 = "KV_SELECT_004";

	/** SQL定義キー(KV_SELECT_006)*/
	private static final String KK_T_SBOP_SVC_KEI_KV_SELECT_006 = "KV_SELECT_006";

	/** SQL定義キー(KV_SELECT_004)*/
	private static final String KK_T_KKTK_SVC_KEI_KV_SELECT_004 = "KV_SELECT_004";

	/** SQL定義キー(KV_SELECT_008)*/
	private static final String KK_T_KKTK_SVC_KEI_KV_SELECT_008 = "KV_SELECT_008";

	/** SQL定義キー(KV_SELECT_009)*/
	private static final String KK_T_KKTK_SVC_KEI_KV_SELECT_009 = "KV_SELECT_009";

	/** SQL定義キー(KV_SELECT_002)*/
	private static final String KK_T_SEIOPSVC_KEI_KV_SELECT_002 = "KV_SELECT_002";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_USE_STP_PRD_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_KAP_KEI_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_002)*/
	private static final String KK_T_KAP_KEI_KV_SELECT_002 = "KV_SELECT_002";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String ZM_M_CD_NM_KANRI_KV_SELECT_001 = "KV_SELECT_001";
	
	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_M_PPLAN_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_002)*/
	private static final String KK_T_KAISEN_TG_SVKEI_KV_SELECT_002 = "KV_SELECT_002";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_KAKINS_KV_SELECT_001 = "KV_SELECT_001";

	/** テーブルアクセスクラス(住所変更明細)*/
	private JBSbatSQLAccess db_KK_T_ADCHG_DTL = null;

	/** テーブルアクセスクラス(契約異動検証条件)*/
	private JBSbatSQLAccess db_KV_M_KEI_IDO_KNSJKN = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(サービス契約内訳)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_UCWK = null;

	/** テーブルアクセスクラス(オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI = null;

	/** テーブルアクセスクラス(オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI_2 = null;
	
	/** テーブルアクセスクラス(サブオプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_SBOP_SVC_KEI = null;

	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;

	/** テーブルアクセスクラス(請求オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_SEIOPSVC_KEI = null;

	/** テーブルアクセスクラス(利用停止期間)*/
	private JBSbatSQLAccess db_KK_T_USE_STP_PRD = null;

	/** テーブルアクセスクラス(割賦契約)*/
	private JBSbatSQLAccess db_KK_T_KAP_KEI = null;

	/** テーブルアクセスクラス(割賦契約)*/
	private JBSbatSQLAccess db_KK_T_KAP_KEI_2 = null;
	
	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	
	/** テーブルアクセスクラス(料金グループ)*/
	private JBSbatSQLAccess db_KK_M_PPLAN = null;

	/** テーブルアクセスクラス(宅内機器型式)*/
	private JBSbatSQLAccess db_ZM_M_TAKNKIKI_MODEL = null;

	/** テーブルアクセスクラス(回線対象サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KAISEN_TG_SVKEI = null;

	/** テーブルアクセスクラス(課金先)*/
	private JBSbatSQLAccess db_KK_T_KAKINS = null;
	/** テーブルアクセスクラス(配送対象物品)*/
	private JBSbatSQLAccess db_DK_T_HAISO_TG_BPIN = null;

	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 異動区分 オプション引継 */
	private static final String IDO_DIV_OPTION_HKTG="00003";
	/** 異動区分 回復 */
	private static final String IDO_DIV_KFK="00004";
	/** 異動区分 eoTV変更 */
	private static final String IDO_DIV_EOTV_CHG="00018";
	/** 異動区分 住所変更登録 */
	private static final String IDO_DIV_ADCHG_TRK="00019";
	/** 異動区分 機器引継 */
	private static final String IDO_DIV_KIKIHKTG="00029";
	/** 異動区分 オプション設定 */
	private static final String IDO_DIV_OPTION_SET="00031";
	/** 異動区分 強制解約 */
	private static final String IDO_DIV_DLS_KYOSEI="00064";
	/** 異動区分 割賦情報変更 */
	private static final String IDO_DIV_KAP_CHG="00075";
	/** 異動区分 光電話・番号変更 */
//	private static final String IDO_DIV_HIKARI_TEL_CHG = "00042";
	/** 異動区分 機器契約変更(解約系) */
	private static final String IDO_DIV_KK_DSL_CHG = "00026";
	/** 異動区分 機器機種変更 */
	private static final String IDO_DIV_KK_KSY_CHG = "00028";
	
	/** 入力項目 異動区分 */
	private String idoDiv = null;
	/** 入力項目 進捗ステータス */
	private String prgStat = null;
	/** 入力項目 料金グループコード */
	private String prcGrpCd = null;
	/** 入力項目 料金コースコード */
	private String pcrsCd = null;
	/** 入力項目 料金プランコード */
	private String pplanCd = null;
	/** 入力項目 SYSID */
	private String sysid = null;
	/** 入力項目 サービス契約番号 */
	private String svcKeiNo = null;
	/** 入力項目 プラン課金開始年月日 */
	private String planChrgStaYmd = null;
	/** 入力項目 サービス開始年月日 */
	private String svcStaYmd = null;
	/** 入力項目 請求契約番号 */
	private String seikyKeiNo = null;
	/** 入力項目 照査年月日 */
	private String shosaYmd = null;
	/** 入力項目 オプションサービス契約番号 */
	private String optSvcKNo = null;
	/** 入力項目 サービス契約内訳番号 */
	private String SvckUchwKNo = null;
	/** 入力項目 サービス契約ステータス */
	private String svcStat = null;
	/** 実行モード */
	private String mod;
	/** 実行モード 調査対象のみ */
	private static final String KNSH_TG_ONLY = "1";
	/** 実行モード 調査対象外不要 */
	private static final String KNSH_TG_NORMAL = "2";
	/** 実行モード 全件 */
	private static final String KNSH_TG_ALL = "3";
	/** 実行モード 調査対象・DB不整合 */
	private static final String KNSH_TG_DB = "4";
	
	/** 調査対象区分 読み飛ばし */
	private static final String KNSHO_TG_KBN_SKP = "0";
	/** 調査対象区分 検証対象 */
	private static final String KNSHO_TG_KBN_NG = "1";
	/** 調査対象区分 正常 */
	private static final String KNSHO_TG_KBN_OK = "2";
	/** 調査対象区分 検証対象外 */
	private static final String KNSHO_TG_KBN_NO = "3";
	/** 調査対象区分 ＤＢ不整合 */
	private static final String KNSHO_TG_KBN_DB = "4";

	/** 調査対象区分名称 検証対象 */
	private static final String KNSHO_TG_KBN_NM_NG = "調査対象";
	/** 調査対象区分名称 正常 */
	private static final String KNSHO_TG_KBN_NM_OK = "正常";
	/** 調査対象区分名称 検証対象外 */
	private static final String KNSHO_TG_KBN_NM_NO = "日付検証対象外";
	/** 調査対象区分名称 ＤＢ不整合 */
	private static final String KNSHO_TG_KBN_NM_DB = "ＤＢ不整合";
	
	/** 進捗ステータス 解約完了 */
	private static final String PRG_DSL_FIN = "1304";
	/** 進捗ステータス サービス提供中 */
	private static final String PRG_SVC_TKCH = "1000";
	/** 進捗ステータス 光電話番号変更完了 */
//	private static final String PRG_HIKARI_TEL_FIN = "B304";
	/** 進捗ステータス レンタル解約完了 */
	private static final String PRG_RENT_DSL_FIN = "3200";
	/** 進捗ステータス 接続機器変更完了 */
	private static final String PRG_KK_DSL_CHG = "3302";
	/** 進捗ステータス 機種変更申込受付 */
	private static final String PRG_KK_CHG = "3501";

	/** オプションチェックパターン７リスト */
	private List<JKVBatChkTgt> opChkListPtn07 = null;
	/** サブオプションチェックパターン７リスト */
	private List<JKVBatChkTgt> sbopChkListPtn07 = null;

	/** 初回読込フラグ */
	private boolean firstFlg = true;
	
	/** 終了年月日 初期値 */
	private static final String INIT_END_YMD = "20991231";

	/** 対象外判定モード 指定なし */
	private static final String MODE_DEFAULT = "0";
	/** 対象外判定モード 引継先指定 */
	private static final String MODE_HKTG_SAKI = "1";
	/** 対象外判定モード 引継元指定 */
	private static final String MODE_HKTG_MOTO = "2";

	/** 宅内機器異動コード 追加 */
	private static final String TAKNKIKI_CD_ADD = "01";
	/** 宅内機器異動コード 一部撤去 */
	private static final String TAKNKIKI_CD_ICBTKY = "03";
	
	/** オプションチェックリスト */
	private List<String> opChkList = null;
	/** サブオプションチェックリスト */
	private List<String> sbopChkList = null;
	/** シェルからの運用日 */
	private String opeDate = "";
	/** 不整合DB名 */
	private String fuseigoDbName = "";
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_ADCHG_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ADCHG_DTL);
		db_KV_M_KEI_IDO_KNSJKN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KV_M_KEI_IDO_KNSJKN);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_SVC_KEI_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_UCWK);
		db_KK_T_OP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);
		db_KK_T_OP_SVC_KEI_2 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);
		db_KK_T_SBOP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SBOP_SVC_KEI);
		db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		db_KK_T_SEIOPSVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIOPSVC_KEI);
		db_KK_T_USE_STP_PRD = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_USE_STP_PRD);
		db_KK_T_KAP_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAP_KEI);
		db_KK_T_KAP_KEI_2 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAP_KEI);
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_KK_M_PPLAN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PPLAN);
		db_KK_T_KAISEN_TG_SVKEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAISEN_TG_SVKEI);
		db_ZM_M_TAKNKIKI_MODEL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_TAKNKIKI_MODEL);
		db_KK_T_KAKINS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAKINS);
		db_DK_T_HAISO_TG_BPIN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_HAISO_TG_BPIN);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		String[] freeItemArray = commonItem.getFreeItem().split("@");
//		mod = super.freeItem;	運用日をシェルから引継に変更
		mod = freeItemArray[0];
		this.opeDate = freeItemArray[1];
		commonItem.getLogPrint().printDebugLog("バッチ運用日:" + this.opeDate);
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
	try{
			idoDiv=inMap.getString(JBSbatKVIFM010.IDO_DIV);
			prgStat=inMap.getString(JBSbatKVIFM010.PRG_STAT);
			prcGrpCd=inMap.getString(JBSbatKVIFM010.PRC_GRP_CD);
			pcrsCd=inMap.getString(JBSbatKVIFM010.PCRS_CD);
			pplanCd=inMap.getString(JBSbatKVIFM010.PPLAN_CD);
			sysid=inMap.getString(JBSbatKVIFM010.SYSID);
			svcKeiNo=inMap.getString(JBSbatKVIFM010.SVC_KEI_NO);
			planChrgStaYmd=inMap.getString(JBSbatKVIFM010.PLAN_CHRG_STAYMD);
			svcStaYmd=inMap.getString(JBSbatKVIFM010.SVC_STA_YMD);
			seikyKeiNo = inMap.getString(JBSbatKVIFM010.SEIKY_KEI_NO);
			shosaYmd = inMap.getString(JBSbatKVIFM010.SHOSA_YMD);
			optSvcKNo = inMap.getString(JBSbatKVIFM010.OP_SVC_KEI_NO);
			SvckUchwKNo = inMap.getString(JBSbatKVIFM010.SVC_KEI_UCWK_NO);
			svcStat = inMap.getString(JBSbatKVIFM010.SVC_KEI_STAT);
			fuseigoDbName = "";
			opChkListPtn07 = new ArrayList<JKVBatChkTgt>();
			sbopChkListPtn07 = new ArrayList<JKVBatChkTgt>();
			opChkList = new ArrayList<String>();
			sbopChkList = new ArrayList<String>();
			
			// 出力ファイルオブジェクトを生成
			JBSbatOutputItem outputItem = new JBSbatOutputItem();
	
			//出力値編集
			if(firstFlg){
				setHeader(outputItem);
				firstFlg = false;
			}
	
			// 異動区分が住所変更・登録で進捗ステータスが解約完了またはサービス提供中の場合
			if(IDO_DIV_ADCHG_TRK.equals(idoDiv) &&
					(PRG_DSL_FIN.equals(prgStat) || PRG_SVC_TKCH.equals(prgStat))){
	
				if(PRG_DSL_FIN.equals(prgStat)){
					// 住所変更を検索
					executeKK_T_ADCHG_DTL_KV_SELECT_001(new Object[]{svcKeiNo});
				} else if(PRG_SVC_TKCH.equals(prgStat)){
					// 住所変更を検索
					executeKK_T_ADCHG_DTL_KV_SELECT_002(new Object[]{svcKeiNo});
				}
	
				for(JBSbatCommonDBInterface adChgResult= db_KK_T_ADCHG_DTL.selectNext();adChgResult!=null;adChgResult= db_KK_T_ADCHG_DTL.selectNext()){
	
					// 住所変更時サービス契約異動種別コードを取得
					String adchgJiSvkeiIdoSbtCd = adChgResult.getString(JBSbatKK_T_ADCHG_DTL.SVC_KEI_IDO_SBT_CD);
	
					// 住所変更時サービス契約異動種別コードが設定されている場合
					if(adchgJiSvkeiIdoSbtCd != null){
	
						// 契約異動検証条件を検索（住所変更時サービス契約異動種別コード指定）
						executeKV_M_KEI_IDO_KNSJKN_KV_SELECT_001(new Object[]{idoDiv,prgStat,prcGrpCd,adchgJiSvkeiIdoSbtCd});
						// 検証条件を取得しチェックを行う
						createIdoKnsJkn(outputItem);
					} else {
						// 契約異動検証条件を検索（住所変更時サービス契約異動種別コード指定なし）
						executeKV_M_KEI_IDO_KNSJKN_KV_SELECT_002(new Object[]{idoDiv,prgStat,prcGrpCd});
						// 検証条件を取得しチェックを行う
						createIdoKnsJkn(outputItem);
					}
				}
			} else {
				// 契約異動検証条件を検索（住所変更以外）
				executeKV_M_KEI_IDO_KNSJKN_KV_SELECT_002(new Object[]{idoDiv,prgStat,prcGrpCd});
				// 検証条件を取得しチェックを行う
				createIdoKnsJkn(outputItem);
			}
			
			// オプションサービス契約のチェックを行う
			chkOption(outputItem);
			
			return outputItem;
		}catch(Exception e)
		{
			super.logPrint.printBusinessErrorLog("EKKB0960AI", new String[]{
					"info：" + e + " " + svcKeiNo + " " + idoDiv
					+ " " + getStaCkInfo(e)});
			return null;
		}
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_ADCHG_DTL.close();
		db_KV_M_KEI_IDO_KNSJKN.close();
		db_KK_T_SVC_KEI.close();
		db_KK_T_SVC_KEI_UCWK.close();
		db_KK_T_OP_SVC_KEI.close();
		db_KK_T_OP_SVC_KEI_2.close();
		db_KK_T_SBOP_SVC_KEI.close();
		db_KK_T_KKTK_SVC_KEI.close();
		db_KK_T_SEIOPSVC_KEI.close();
		db_KK_T_USE_STP_PRD.close();
		db_KK_T_KAP_KEI.close();
		db_KK_T_KAP_KEI_2.close();
		db_ZM_M_CD_NM_KANRI.close();
		db_KK_M_PPLAN.close();
		db_KK_T_KAISEN_TG_SVKEI.close();
		db_ZM_M_TAKNKIKI_MODEL.close();
		db_KK_T_KAKINS.close();
		db_DK_T_HAISO_TG_BPIN.close();
		super.logPrint.printDebugLog("terminal_End");
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * アウトプットファイルのヘッダー部設定
	 * アウトプットファイルのヘッダー部を設定する
	 * @param JBSbatOutputItem outputItem　出力共通電文クラス
	 * @throws Exception
	 */
	private void setHeader(JBSbatOutputItem outputItem) throws Exception{
		
		// 出力値編集
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		outMap.setString(JBSbatKVIFM008.SYSID,"ＳＹＳＩＤ");
		outMap.setString(JBSbatKVIFM008.SVC_KEI_NO,"サービス契約番号");
		outMap.setString(JBSbatKVIFM008.SEIKY_KEI_NO,"請求契約番号");
		outMap.setString(JBSbatKVIFM008.SCHMA_NM,"スキーマ（名称）");
		outMap.setString(JBSbatKVIFM008.KEY_KMK_NM,"キー項目（名称）");
		outMap.setString(JBSbatKVIFM008.KEY_KMK_VAL,"キー項目値");
		outMap.setString(JBSbatKVIFM008.IDO_DIV,"異動区分");
		outMap.setString(JBSbatKVIFM008.IDO_DIV_NM,"異動区分名称");
		outMap.setString(JBSbatKVIFM008.PRG_STAT,"進捗ステータス");
		outMap.setString(JBSbatKVIFM008.PRG_STAT_NM,"進捗ステータス名称");
		
		outMap.setString(JBSbatKVIFM008.PPLAN_CD,"料金プランコード");
		outMap.setString(JBSbatKVIFM008.PPLAN_NM,"料金プラン名称");
		outMap.setString(JBSbatKVIFM008.SHOSA_YMD, "照査年月日");
		outMap.setString(JBSbatKVIFM008.KNS_KMK_NM,"検証項目（名称）");
		outMap.setString(JBSbatKVIFM008.KNS_KMK_VAL,"検証項目値");
		outMap.setString(JBSbatKVIFM008.HKK_KMK_NM,"比較項目（名称）");
		outMap.setString(JBSbatKVIFM008.HKK_KMK_VAL,"比較項目値");
		outMap.setString(JBSbatKVIFM008.CHK_PATTERN,"チェックパターン");
		outMap.setString(JBSbatKVIFM008.KNSHO_TG_KBN,"調査対象区分");
		outMap.setString(JBSbatKVIFM008.KNSHO_TG_KBN_NM,"調査対象区分名称");
		
		outMap.setOutFlg(true);
		
		outputItem.addOutMapList(outMap);
	}

	/**
	 * 契約異動検証条件生成処理
	 * 契約異動検証条件の検索結果を取得し、チェック処理を呼び出す
	 * @param JBSbatOutputItem outputItem　出力共通電文クラス
	 * @throws Exception
	 */
	private void createIdoKnsJkn(JBSbatOutputItem outputItem) throws Exception{
		
		// 契約異動検証条件の検索結果を取得
		JBSbatCommonDBInterface result = db_KV_M_KEI_IDO_KNSJKN.selectNext();

		// 検索結果が0件の場合
		if(result == null){
			// 実行モードが全件出力の場合
			if(KNSH_TG_ALL.equals(mod)){
				// 出力編集
				JBSbatServiceInterfaceMap outMap = getOutMap();
				// 検証対象外を編集
				outMap.setString(JBSbatKVIFM008.KNSHO_TG_KBN,KNSHO_TG_KBN_NO);
				outMap.setString(JBSbatKVIFM008.KNSHO_TG_KBN_NM,KNSHO_TG_KBN_NM_NO);
				outputItem.addOutMapList(outMap);
			}
		}

		for(;result!=null;result= db_KV_M_KEI_IDO_KNSJKN.selectNext()){
			// 異動検証条件の保持
			JKVBatIdoKnsJkn idoKnsJkn = new JKVBatIdoKnsJkn(
					result.getString(JBSbatKV_M_KEI_IDO_KNSJKN.SCHMA_NM_EINM),
					result.getString(JBSbatKV_M_KEI_IDO_KNSJKN.KNSHO_TG_KMK_NM_EINM),
					result.getString(JBSbatKV_M_KEI_IDO_KNSJKN.KNSHO_TG_VALUE_SNSTSTD_CD),
					result.getString(JBSbatKV_M_KEI_IDO_KNSJKN.KNSHO_TG_VALUE_SNSTWAY_CD)
					);
			// チェックリストを取得
			List<JKVBatChkTgt> chkTgtList = getChkList(idoKnsJkn);
			// チェック実行
			chkExecute(idoKnsJkn,chkTgtList,outputItem);
		}
	}

	/**
	 * チェック主処理
	 * チェックリストを取得しチェックを行い、モードに応じた結果を出力する
	 * @param JKVBatIdoKnsJkn idoKnsJkn 異動検証条件保持クラス
	 * @param JBSbatOutputItem outputItem　出力共通電文クラス
	 * @throws Exception
	 */
	private void chkExecute(JKVBatIdoKnsJkn idoKnsJkn,List<JKVBatChkTgt> chkTgtList,JBSbatOutputItem outputItem) throws Exception {
		// チェックリストが空の場合
		if(chkTgtList.isEmpty() && opChkListPtn07.isEmpty() && sbopChkListPtn07.isEmpty()){
			// 対象スキーマがサービス契約の場合
			if(D_TBL_NAME_KK_T_SVC_KEI.equals(idoKnsJkn.getScmName())){
				// 検証対象とする
				JBSbatServiceInterfaceMap outMap = getOutMap();
				outMap.setString(JBSbatKVIFM008.SCHMA_NM,"サービス契約");
				outMap.setString(JBSbatKVIFM008.KEY_KMK_NM,"サービス契約番号");
				outMap.setString(JBSbatKVIFM008.KNSHO_TG_KBN,KNSHO_TG_KBN_DB);
				outMap.setString(JBSbatKVIFM008.KNSHO_TG_KBN_NM,KNSHO_TG_KBN_NM_DB + fuseigoDbName);
				outputItem.addOutMapList(outMap);
			}
		}

		// リストの件数分チェックを行う
		for(JKVBatChkTgt chkTgt:chkTgtList){
			// パターン毎のチェックを行う
			if(KNSHO_TG_KBN_OK.equals(chkTgt.getTgtKbn())){
				// チェック結果が初期値の場合にチェックを行う
				patternChk(chkTgt,idoKnsJkn);
			}
			
			// 検証結果がスキップ対象
			if(KNSHO_TG_KBN_SKP.equals(chkTgt.getTgtKbn())){
				continue;
			}

			// モードに応じて出力レベルを設定
			if(KNSH_TG_ONLY.equals(mod)){
				// 調査対象のみ出力
				if(KNSHO_TG_KBN_NG.equals(chkTgt.getTgtKbn())){
					JBSbatServiceInterfaceMap outMap = getOutMap();
					setOutMap(outMap, chkTgt, idoKnsJkn);
					outputItem.addOutMapList(outMap);
				}
			} else if(KNSH_TG_NORMAL.equals(mod)){
				// 調査対象と正常を出力
				if(KNSHO_TG_KBN_NG.equals(chkTgt.getTgtKbn()) ||
						KNSHO_TG_KBN_OK.equals(chkTgt.getTgtKbn())){
					JBSbatServiceInterfaceMap outMap = getOutMap();
					setOutMap(outMap, chkTgt, idoKnsJkn);
					outputItem.addOutMapList(outMap);
				}
			} else if(KNSH_TG_DB.equals(mod)){
				// 調査対象とDB不整合を出力
				if(KNSHO_TG_KBN_NG.equals(chkTgt.getTgtKbn()) ||
						KNSHO_TG_KBN_DB.equals(chkTgt.getTgtKbn())){
					JBSbatServiceInterfaceMap outMap = getOutMap();
					setOutMap(outMap, chkTgt, idoKnsJkn);
					outputItem.addOutMapList(outMap);
				}
			} else {
				// 全件出力
				JBSbatServiceInterfaceMap outMap = getOutMap();
				setOutMap(outMap, chkTgt, idoKnsJkn);
				outputItem.addOutMapList(outMap);
			}
		}
	}

	/**
	 * チェックリスト取得
	 * 異動検証条件の設定値より各スキーマを検索し、チェック対象リストに設定する
	 * @param JKVBatIdoKnsJkn idoKnsJkn 異動検証条件保持クラス
	 * @throws Exception
	 */
	private List<JKVBatChkTgt> getChkList(JKVBatIdoKnsJkn idoKnsJkn) throws Exception {
		// チェック対象リストを生成
		List<JKVBatChkTgt> chkTgtList = new ArrayList<JKVBatChkTgt>();

		String schmNm = idoKnsJkn.getScmName();
		// スキーマ名を取得して検索を行う
		if(D_TBL_NAME_KK_T_SVC_KEI.equals(schmNm)){
			if("1422".equals(prgStat))		//進捗:コース変更の場合は運用日の翌日を引数に設定
			{
				String plusOne = JBSbatDateUtil.adjustDate(this.opeDate,1);
				executeKK_T_SVC_KEI_KV_SELECT_008(new Object[]{svcKeiNo,idoDiv, plusOne});
			}else
			{
				// サービス契約の検索
				executeKK_T_SVC_KEI_KV_SELECT_008(new Object[]{svcKeiNo,idoDiv,this.opeDate});
			}
			setChkDate(db_KK_T_SVC_KEI,idoKnsJkn,chkTgtList);
			
		} else if(D_TBL_NAME_KK_T_SVC_KEI_UCWK.equals(schmNm)){
			//進捗のサービス契約内訳がある場合
			if(!"".equals(SvckUchwKNo))
			{
				executeKK_T_SVC_KEI_UCWK_KV_SELECT_013(
						new Object[]{SvckUchwKNo, idoDiv, this.opeDate});
			}else
			{
				// サービス契約内訳の検索
				executeKK_T_SVC_KEI_UCWK_KV_SELECT_004(new Object[]{svcKeiNo,idoDiv,this.opeDate});
			}
			setChkDate(db_KK_T_SVC_KEI_UCWK,idoKnsJkn,chkTgtList);
			
		} else if(D_TBL_NAME_KK_T_OP_SVC_KEI.equals(schmNm)){
			ArrayList<JBSbatCommonDBInterface> rsltLst = new ArrayList<JBSbatCommonDBInterface>();
			//進捗のオプションサービス契約から
			if(!"".equals(optSvcKNo))
			{
				db_KK_T_OP_SVC_KEI.clearBatch();
				executeKK_T_OP_SVC_KEI_KV_SELECT_016(
						new Object[]{optSvcKNo, this.opeDate ,this.opeDate ,this.opeDate});
				rsltLst = getRslt(db_KK_T_OP_SVC_KEI);
				//該当なしの場合(データが存在してもチェック対象外の場合、chkTgtListに追加されない為)
				db_KK_T_OP_SVC_KEI.clearBatch();
				executeKK_T_OP_SVC_KEI_KV_SELECT_016(
						new Object[]{optSvcKNo, this.opeDate ,this.opeDate ,this.opeDate});
				setChkDate(db_KK_T_OP_SVC_KEI,idoKnsJkn,chkTgtList);
			}
			//該当の有無だけで判定
			if(0 == rsltLst.size())
			{
				//料金グループCD[10]光電話、[11]テレビ 内訳から取得
				if("10".equals(prcGrpCd) || "11".equals(prcGrpCd))
				{
					db_KK_T_OP_SVC_KEI.clearBatch();
					executeKK_T_OP_SVC_KEI_KV_SELECT_015(
							new Object[]{svcKeiNo, this.opeDate ,this.opeDate});
					setChkDate(db_KK_T_OP_SVC_KEI,idoKnsJkn,chkTgtList);
				}
				// オプションサービス契約の検索
				db_KK_T_OP_SVC_KEI.clearBatch();
				executeKK_T_OP_SVC_KEI_KV_SELECT_005(
						new Object[]{svcKeiNo,idoDiv,this.opeDate});
				setChkDate(db_KK_T_OP_SVC_KEI,idoKnsJkn,chkTgtList);
			}
			if(0 < chkTgtList.size())
			{
				fuseigoDbName = "";		//該当ありの場合
			}

		} else if(D_TBL_NAME_KK_T_SBOP_SVC_KEI.equals(schmNm)){
			// サブオプションサービス契約の検索
			executeKK_T_SBOP_SVC_KEI_KV_SELECT_004(new Object[]{svcKeiNo,idoDiv,this.opeDate,this.opeDate});
			setChkDate(db_KK_T_SBOP_SVC_KEI,idoKnsJkn,chkTgtList);
			if(0 == chkTgtList.size())
			{
				//サービス契約内訳からオプションサービス契約番号を取得
				executeKK_T_OP_SVC_KEI_KV_SELECT_015(
						new Object[]{svcKeiNo, this.opeDate ,this.opeDate});

				ArrayList<JBSbatCommonDBInterface> rsltLst = getRslt(db_KK_T_OP_SVC_KEI);
				for(JBSbatCommonDBInterface data : rsltLst)
				{
					db_KK_T_SBOP_SVC_KEI.clearBatch();
					String optCd = data.getString("OUTPUT_NO");
					executeKK_T_SBOP_SVC_KEI_KV_SELECT_006(
							new Object[]{optCd, idoDiv, this.opeDate});
					setChkDate(db_KK_T_SBOP_SVC_KEI,idoKnsJkn,chkTgtList);
				}
			}

		} else if(D_TBL_NAME_KK_T_KKTK_SVC_KEI.equals(schmNm)){
			// 機器提供サービス契約の検索(サービス契約回線対象内訳番号)
			String ksnTgNo = getksnTgNo();
			ArrayList<JBSbatCommonDBInterface> rsltLst = 
				new ArrayList<JBSbatCommonDBInterface>();
			boolean rschSvc = false;
			if(null != ksnTgNo)
			{
				commonItem.getLogPrint().printDebugLog("機器検索 回線対象:" + ksnTgNo);
				executeKK_T_KKTK_SVC_KEI_KV_SELECT_008(
						new Object[]{ksnTgNo, idoDiv, this.opeDate});
				setChkDate(db_KK_T_KKTK_SVC_KEI,idoKnsJkn,chkTgtList);

				db_KK_T_KKTK_SVC_KEI.clearBatch();
				executeKK_T_KKTK_SVC_KEI_KV_SELECT_008(
						new Object[]{ksnTgNo, idoDiv, this.opeDate});
				rsltLst = getRslt(db_KK_T_KKTK_SVC_KEI);

				//運用日が全て異なるかチェック
				for(JBSbatCommonDBInterface kkData : rsltLst)
				{
					if(this.opeDate.equals(kkData.getString(
							JBSbatKK_T_KKTK_SVC_KEI.UPD_UNYO_YMD)))
					{
						rschSvc = true;
					}
				}
			}
			//該当なし or 検索結果の運用日が全て運用日と異なる場合 要確認
			if(0 == rsltLst.size() || !rschSvc)
			{
				//サービス契約番号による検索
				db_KK_T_KKTK_SVC_KEI.clearBatch();
				executeKK_T_KKTK_SVC_KEI_KV_SELECT_004(
						new Object[]{svcKeiNo,idoDiv,this.opeDate});
				setChkDate(db_KK_T_KKTK_SVC_KEI,idoKnsJkn,chkTgtList);
			}
			//上記検索で該当なければ、サービス契約内訳でも検索
			if(0 == chkTgtList.size())
			{
				executeKK_T_SVC_KEI_UCWK_KV_SELECT_004(
						new Object[]{svcKeiNo,idoDiv,this.opeDate});
				ArrayList<JBSbatCommonDBInterface> rsltLstUch = 
					getRslt(db_KK_T_SVC_KEI_UCWK);

				for(JBSbatCommonDBInterface ucwk : rsltLstUch)
				{
					executeKK_T_KKTK_SVC_KEI_KV_SELECT_009(new Object[]{
							ucwk.getString("OUTPUT_NO"),idoDiv,this.opeDate});
					setChkDate(db_KK_T_KKTK_SVC_KEI,idoKnsJkn,chkTgtList);
				}

				if(0 == chkTgtList.size())
				{
					fuseigoDbName = "機器該当なし " + idoDiv;
					if(null != ksnTgNo) fuseigoDbName = fuseigoDbName + " " + ksnTgNo;
				}else fuseigoDbName = "";
			}else
			{
				fuseigoDbName = "";
			}
		} else if(D_TBL_NAME_KK_T_SEIOPSVC_KEI.equals(schmNm)){
			// 請求オプションサービス契約の検索
			executeKK_T_SEIOPSVC_KEI_KV_SELECT_002(new Object[]{svcKeiNo,idoDiv,this.opeDate});
			setChkDate(db_KK_T_SEIOPSVC_KEI,idoKnsJkn,chkTgtList);
			
		} else if(D_TBL_NAME_KK_T_USE_STP_PRD.equals(schmNm)){
			// 利用停止期間の検索
			executeKK_T_USE_STP_PRD_KV_SELECT_001(new Object[]{svcKeiNo});
			setChkDate(db_KK_T_USE_STP_PRD,idoKnsJkn,chkTgtList);
			
		} else if(D_TBL_NAME_KK_T_KAP_KEI.equals(schmNm)){
			// 割賦契約の検索
			executeKK_T_KAP_KEI_KV_SELECT_001(new Object[]{svcKeiNo,idoDiv,this.opeDate,this.opeDate});
			setChkDate(db_KK_T_KAP_KEI,idoKnsJkn,chkTgtList);
		
		} else if(D_TBL_NAME_KK_T_KAKINS.equals(schmNm))
		{
			//課金先の検索 検索条件 異動区分:00016 請求先情報併合,00017 請求先情報分割
			if(null != seikyKeiNo)
			{
				executeKK_T_KAKINS_KV_SELECT_001(new Object[]{seikyKeiNo, svcKeiNo});
				setChkDate(db_KK_T_KAKINS,idoKnsJkn,chkTgtList);
			}
		}
		return chkTgtList;
	}

	/**
	 * チェックデータ設定
	 * スキーマの検索結果より検証対象項目と基準日コード、キー項目をチェック対象に設定する
	 * @param JBSbatSQLAccess sqlAccess スキーマ検索結果
	 * @param JKVBatIdoKnsJkn idoKnsJkn 異動検証条件保持クラス
	 * @param List<JKVBatChkTgt> chkTgtList　チェック対象リスト
	 * @throws Exception
	 */
	private void setChkDate(JBSbatSQLAccess sqlAccess,JKVBatIdoKnsJkn idoKnsJkn,
			List<JKVBatChkTgt> chkTgtList) throws Exception {
		// スキーマ名と項目名の取得
		String scmNm = idoKnsJkn.getScmName();
		String kmkNm = idoKnsJkn.getKmkName();
		fuseigoDbName = "";
		// 全件スキップの場合DB不整合のエラーとする
		int resultCount = 0;
		int skipCount = 0;

		// スキーマの検索結果を取得
		JBSbatCommonDBInterface result = sqlAccess.selectNext();
		if(null == result && !D_TBL_NAME_KK_T_KKTK_SVC_KEI.equals(scmNm))
		{
			fuseigoDbName = "該当なし " + scmNm;
		}
		String skipKey = "";
		for(;result!=null;result= sqlAccess.selectNext())
		{
			if(D_TBL_NAME_KK_T_OP_SVC_KEI.equals(scmNm))
			{
				String uchwk = result.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO);
				StringBuilder uchwkNo = new StringBuilder();

				if(null != uchwk)
				{
					uchwkNo.append(" svc契約内訳番号:");
					uchwkNo.append(uchwk);
					fuseigoDbName = String.valueOf(uchwkNo);
				}
			}

			resultCount++;
			// 強制解約以外の場合に運用日によるスキップ判定
			if(!IDO_DIV_DLS_KYOSEI.equals(idoDiv)){
				if(isSkip(result)){
					skipCount++;
					skipKey = result.getString("OUTPUT_NO");
					continue;
				}
			}

			// 対象外判定をデフォルトで行う
			String mode = MODE_DEFAULT;
			// チェックパターンが15の場合引継先指定で対象外判定を行う
			if("15".equals(idoKnsJkn.getPtn())){
				mode = MODE_HKTG_SAKI;
			}

			// チェック対象外判定
			if(!isChkTgt(idoKnsJkn,result,mode)){
				continue;
			}
			
			// オプション関連チェック対象判定
			if(isChkTgtOption(result,idoKnsJkn)){
				// オプション関連チェックを行うためチェック対象外とする
				continue;
			}

			// チェック対象となったのでチェック対象クラスに格納
			JKVBatChkTgt chkTgt = new JKVBatChkTgt(result,scmNm,kmkNm);

			// 以降はチェック対象クラスの編集（特殊パターン）
			
			String ptn = idoKnsJkn.getPtn();
			
			// チェックパターンが15の場合は基準日を別途取得する
			if("15".equals(ptn)){
				// 引継チェックを行う
				hktgChk(idoKnsJkn,chkTgt,result);

			} else if("04".equals(ptn) && IDO_DIV_KAP_CHG.equals(idoDiv)
					&& JBSbatKK_T_KAP_KEI.KAP_SEIKY_ENDYMD.equals(kmkNm)){
				
				// 割賦チェックを行う
				kapChk(chkTgt, result);
				
			} else if("10".equals(ptn) || "11".equals(ptn) || "12".equals(ptn)){
				
				// キャンセルチェックを行う
				cnclChk(chkTgt, result, scmNm);

			} else if ("08".equals(ptn) && IDO_DIV_KFK.equals(idoDiv)){
				// 回復チェックを行う
				khkChk(chkTgt,result);
			}
			
			//パターン判定
			if(!cnvPttrn(scmNm, result, idoKnsJkn, chkTgt))
			{
				//対象外・OKがセットされていれば、そのまま
				if(KNSHO_TG_KBN_NO.equals(chkTgt.getTgtKbn()) ||
						KNSHO_TG_KBN_OK.equals(chkTgt.getTgtKbn()))
				{
				}else
				{
					chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
				}
				chkTgtList.add(chkTgt);
				//エラーの場合、基準設定する？
				continue;
			}

			if(KNSHO_TG_KBN_OK.equals(chkTgt.getTgtKbn())){
				// チェックパターン変換がなければ、検索結果より基準日、基準日名称を設定
				if(null == chkTgt.getPttrn())
				{
					chkTgt.setKjn(result,idoKnsJkn.getKjnCode(),this.opeDate);
				}
			}

			//オプション・サブオプション・機器ステータス：提供中以外の場合
			if(D_TBL_NAME_KK_T_OP_SVC_KEI.equals(chkTgt.getScmEiName()) ||
					D_TBL_NAME_KK_T_SBOP_SVC_KEI.equals(chkTgt.getScmEiName())||
					D_TBL_NAME_KK_T_KKTK_SVC_KEI.equals(chkTgt.getScmEiName()))
			{
				if("00031".equals(idoDiv))
				{
					String stat = result.getString("STATUS");
					if(!"100".equals(stat))
					{
						chkTgt.setFuseigDbNm(cnvNullToEmp(
								chkTgt.getFuseigDbNm()) + "stat:" + stat);
					}
				}
			}

			// チェック対象リストに格納
			chkTgtList.add(chkTgt);
		}
		
		// 全てスキップ対象で検索結果が0件以外の場合
		if(resultCount == skipCount && resultCount != 0){

			JKVBatChkTgt chkTgt = new JKVBatChkTgt(null,scmNm,kmkNm);
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NO);
			chkTgt.setTgtNo(skipKey);

			//機器提供サービスのみそれぞれ保持
			if(D_TBL_NAME_KK_T_KKTK_SVC_KEI.equals(scmNm))
			{
				fuseigoDbName = fuseigoDbName + " AllSkip";
				chkTgt.setFuseigDbNm(fuseigoDbName);
			}else
			{
				fuseigoDbName = fuseigoDbName + " AllSkip";
			}
			// チェック対象リストに格納
			chkTgtList.add(chkTgt);
		}
	}

	/**
	 * マスタから取得したチェックパターンのままでよいかを判定
	 * @param scmNm
	 * @param result
	 * @param idoKnsJkn
	 * @param chkTgt
	 * @return 判定結果
	 * @throws Exception
	 */
	private boolean cnvPttrn(String scmNm, JBSbatCommonDBInterface result,
			JKVBatIdoKnsJkn idoKnsJkn, JKVBatChkTgt chkTgt) throws Exception
	{
		//サービス契約内訳 かつ 光電話・番号変更
//		if(D_TBL_NAME_KK_T_SVC_KEI_UCWK.equals(scmNm))
//		{
//			 if(IDO_DIV_HIKARI_TEL_CHG.equals(idoDiv) && PRG_HIKARI_TEL_FIN.equals(prgStat))
//			 {
//				 String plnEnd = result.getString(JBSbatKK_T_SVC_KEI_UCWK.PLAN_ENDYMD);
//				 if(!INIT_END_YMD.equals(plnEnd))
//				 {
//					 setPttrn11(idoKnsJkn, chkTgt, result);
//					 return true;
//				 }
//			 }
//		}

		if(D_TBL_NAME_KK_T_OP_SVC_KEI.equals(scmNm) ||
				D_TBL_NAME_KK_T_SBOP_SVC_KEI.equals(scmNm))
		{
			//B085 初期無料オープンは対象外
			if("B085".equals(result.getString("CD")))
			{
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NO);
				return false;
			}
		}
		if(D_TBL_NAME_KK_T_KAP_KEI.equals(scmNm))
		{
			//割賦キャンセルチェック
			String canclYmd = result.getString("SVC_CANCEL_YMD");
			String kapEnd = result.getString(JBSbatKK_T_KAP_KEI.KAP_SEIKY_ENDYMD);
			if(isNullBlank(canclYmd) && isNullBlank(kapEnd))
			{
				chkTgt.setFuseigDbNm("割賦日付設定なし");
				return false;
			}else
			{
				 chkTgt.setKmkName("キャンセル年月日");
				 if(!isNullBlank(canclYmd))
				 {
					 chkTgt.setKmkEiName(JBSbatKK_T_KAP_KEI.KAP_KEI_CANCEL_YMD); //キャンセル
					 chkTgt.setTgtDate(canclYmd);
				 }else
				 {
					 chkTgt.setKmkEiName(JBSbatKK_T_KAP_KEI.KAP_SEIKY_ENDYMD); //キャンセル
					 chkTgt.setTgtDate(kapEnd);
				 }
				 chkTgt.setTgtKbn(KNSHO_TG_KBN_OK);
				return true;
			}
		}

		else if(D_TBL_NAME_KK_T_KKTK_SVC_KEI.equals(scmNm))
		{
			//回線内訳番号がある場合
			if(null!= result.getString(	JBSbatKK_T_KKTK_SVC_KEI.SVC_KEI_KAISEN_UCWK_NO))
			{
				chkTgt.setFuseigDbNm(cnvNullToEmp(chkTgt.getFuseigDbNm()) + 
						"回線内訳番号:" + result.getString(
						JBSbatKK_T_KKTK_SVC_KEI.SVC_KEI_KAISEN_UCWK_NO));
			}

			//機器契約変更(解約) 00026
			if(IDO_DIV_KK_DSL_CHG.equals(idoDiv) &&
					(PRG_KK_DSL_CHG.equals(prgStat) || PRG_RENT_DSL_FIN.equals(prgStat)))
			{
				String kktkCncl = result.getString(JBSbatKK_T_KKTK_SVC_KEI.SVC_CANCEL_YMD);
				String kkPlnChEnd = result.getString(JBSbatKK_T_KKTK_SVC_KEI.PLAN_CHRG_ENDYMD);

				if(isNullBlank(kktkCncl) && 
						(isNullBlank(kkPlnChEnd)|| INIT_END_YMD.equals(kkPlnChEnd)))
				{
					chkTgt.setPttrn("");
					idoKnsJkn.setPtn("");
					super.logPrint.printDebugLog(svcKeiNo +
							" 機器契約変更 キャンセル年月日・プラン課金終了年月日 不正");
					return false;
				}
				//キャンセル年月日の設定あり
				if(!isNullBlank(kktkCncl))
				{
					 chkTgt.setPttrn("08");
					 chkTgt.setKmkName("サービスキャンセル年月日");
					 chkTgt.setKmkEiName(JBSbatKK_T_KKTK_SVC_KEI.SVC_CANCEL_YMD); //キャンセル？
					 chkTgt.setKjn(result, "05", this.opeDate);
					 chkTgt.setTgtDate(kktkCncl);
					 return true;
				}
				else if(!INIT_END_YMD.equals(kkPlnChEnd))
				{
					String plnEndDay = result.getString(JBSbatKK_T_KKTK_SVC_KEI.PLAN_ENDYMD);
					//プラン終了年月日の末尾01の場合
					if(null != plnEndDay && "01".equals(plnEndDay.substring(6,8)))
					{
						setPttrn10(idoKnsJkn, chkTgt, result);
						return true;
					}
					else
					{
						setPttrn11(idoKnsJkn, chkTgt, result);
						return true;
					}
				}
			}
			//機器機種変更 00028
			else if(IDO_DIV_KK_KSY_CHG.equals(idoDiv) && PRG_KK_CHG.equals(prgStat))
			{
				if("910".equals(result.getString("STATUS")))
				{
					//プラン課金終了年月日のチェック
					String plnEndDay = result.getString(JBSbatKK_T_KKTK_SVC_KEI.PLAN_ENDYMD);
					//プラン終了年月日の末尾01の場合
					if(null != plnEndDay && "01".equals(plnEndDay.substring(6,8)))
					{
						setPttrn10(idoKnsJkn, chkTgt, result);
						return true;
					}else
					{
						setPttrn11(idoKnsJkn, chkTgt, result);
						return true;
					}
				}else
				{
					chkTgt.setPttrn("");	//上記条件外は対象外
					chkTgt.setTgtKbn(KNSHO_TG_KBN_NO);
				}
			}
			else if("02".equals(idoKnsJkn.getPtn())) //マスタのパターンCD 02 の場合のみ
			{
				if("00001".equals(idoDiv) || "00002".equals(idoDiv)) //異動区分：新規 または サービス追加
				{
					//配送対象物品を検索  引数：機器提供サービス契約番号
					String kktkSvcNo = result.getString("OUTPUT_NO");

					if(null != kktkSvcNo && PRG_SVC_TKCH.equals(prgStat))	//サービス提供中
					{
						executeDK_T_HAISO_TG_BPIN_KV_SELECT_001(new Object[]{kktkSvcNo});

						JBSbatCommonDBInterface tgHaiso = db_DK_T_HAISO_TG_BPIN.selectNext();
						//「配送対象物品」の工事案件番号が設定されている場合
						if(null != tgHaiso && null != tgHaiso.getString(JBSbatDK_T_HAISO_TG_BPIN.KOJIAK_NO))
						{
							//マスタ通りのチェックパターンのまま
						}else
						{
							chkTgt.setFuseigDbNm("配送対象物品の[工事案件番号]なし " + 
									tgHaiso.getString(JBSbatDK_T_HAISO_TG_BPIN.HAISO_NO));
							chkTgt.setPttrn("");	//上記条件外は対象外
							chkTgt.setTgtKbn(KNSHO_TG_KBN_NO);
							return false;
						}
					}
				}
				//機器提供種別CDにより判定(レンタル or 買取)
				String kktkSbtCd = result.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SBT_CD);
				if("01".equals(kktkSbtCd))	//買取
				{
					chkTgt.setPttrn("07");
					chkTgt.setKmkName("プラン課金開始年月日");
					chkTgt.setKmkEiName(JBSbatKK_T_KKTK_SVC_KEI.PLAN_CHRG_STAYMD);
					chkTgt.setTgtDate(result.getString(JBSbatKK_T_KKTK_SVC_KEI.PLAN_CHRG_STAYMD));
					//対象日nullはありえる？
					chkTgt.setKkTkSbtCd(kktkSbtCd);
					chkTgt.setKjn(result, "03", this.opeDate);
					return true;
				}
			}
		}
		else if(D_TBL_NAME_KK_T_OP_SVC_KEI.equals(scmNm) || D_TBL_NAME_KK_T_SBOP_SVC_KEI.equals(scmNm))
		{
			//解約チェック
			if(IDO_DIV_OPTION_HKTG.equals(idoDiv) && "910".equals(result.getString("STATUS")))
			{
				String dslYmd = result.getString(JBSbatKK_T_OP_SVC_KEI.SVC_DSL_YMD);
				String dslClYmd = result.getString(JBSbatKK_T_OP_SVC_KEI.SVC_DSL_CL_YMD);
				String canclYmd = result.getString(JBSbatKK_T_OP_SVC_KEI.SVC_CANCEL_YMD);

				if(null == dslYmd && null == dslClYmd  && null == canclYmd)
				{
					String msg = cnvNullToEmp(chkTgt.getFuseigDbNm()) + " 解約系日付なし";
					chkTgt.setFuseigDbNm(msg);
					chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
					return false;
				}
				else
				{
					if(null != dslYmd)
					{
						chkTgt.setKjnName("解約年月日");
					}
					else if(null != dslClYmd)
					{
						chkTgt.setKjnName("解約取消年月日");
					}
					else if(null != canclYmd)
					{
						chkTgt.setKjnName("キャンセル年月日");
					}
					chkTgt.setTgtKbn(KNSHO_TG_KBN_OK);
					return false;
				}
			}

			//通話明細送付は開始と課金開始が同日
			if("B028".equals(result.getString("CD")))
			{
				chkTgt.setPttrn("07");	//同日かを判定
				chkTgt.setKjn(result,idoKnsJkn.getKjnCode(),this.opeDate);
				String plnSt = cnvNullToEmp(result.getString(JBSbatKK_T_OP_SVC_KEI.PLAN_STAYMD));
				String plnChSt = cnvNullToEmp(result.getString(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_STAYMD));

				if(!isNullBlank(plnSt) && !isNullBlank(plnChSt))
				{
					if(plnSt.equals(plnChSt))
					{
						chkTgt.setTgtKbn(KNSHO_TG_KBN_OK);
						return false;
					}else
					{
						chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
						chkTgt.setFuseigDbNm("通話明細送付の開始日/課金開始が異なる");
						return false;
					}
				}else
				{
					chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
					chkTgt.setFuseigDbNm("通話明細送付の開始日 or 課金開始が空白");
					return false;
				}
			}
//			else if("B002".equals(result.getString("CD"))) //Myホームページは日付検証外
//			{
//				chkTgt.setTgtKbn(KNSHO_TG_KBN_NO);
//				chkTgt.setFuseigDbNm("MyHP");
//				return false;
//			}

			//オプションサービス契約またはサブオプションサービス契約かつ、以下条件
			if("02".equals(idoKnsJkn.getPtn()) && ("02".equals(prcGrpCd) || "03".equals(prcGrpCd)))
			{
				String kibo = result.getString(JBSbatKK_T_OP_SVC_KEI.SVC_USE_STA_KIBO_YMD);
				if(null != kibo)	//使用開始希望日ありの場合
				{
					if(this.opeDate.compareTo(kibo) < 0)
					{
						chkTgt.setPttrn("");
						chkTgt.setTgtKbn(KNSHO_TG_KBN_NO);
						chkTgt.setFuseigDbNm(" 開始希望未来:" + kibo);
						return false;
					}
				}
				//ステータス
				if(!"100".equals(result.getString("STATUS")))
				{
					fuseigoDbName = "optステータス:" + result.getString("STATUS");
				}

				executeKK_T_SVC_KEI_KV_SELECT_008(new Object[]{svcKeiNo,idoDiv,this.opeDate});

				JBSbatCommonDBInterface svckData = db_KK_T_SVC_KEI.selectNext();

				if(null == svckData)	//該当なし
				{
					return true;	//マスタ通りのチェックパターンのまま
				}
				String svckPlnSt = svckData.getString(JBSbatKK_T_SVC_KEI.PLAN_STAYMD);
				if(null == svckData || null == svckPlnSt)
				{
					return true;	//マスタ通りのチェックパターンのまま
				}
				//元サービスのプラン開始年月日とオプションサービス契約のプラン開始年月日が等しいか判定
				if(svckPlnSt.equals(result.getString(JBSbatKK_T_OP_SVC_KEI.PLAN_STAYMD)))
				{
					//課金開始年月日が元サービスのプラン課金開始年月日の翌月初日であるかを確認
					String nxtMonFrst = JBSbatDateUtil.adjustMonth(planChrgStaYmd,1);
					if("".equals(nxtMonFrst)) return true;	//マスタ通りのチェックパターンのまま？

					super.logPrint.printDebugLog("オプションcheck " + svcKeiNo + " "
							+ scmNm + " " + result.getString("OUTPUT_NO"));
					//パターン02(対象項目違い)を設定
					setPttrn02plus(idoKnsJkn, chkTgt, result);
					chkTgt.setTgtDate(svckData.getString(JBSbatKK_T_SVC_KEI.PLAN_CHRG_STAYMD));
					nxtMonFrst = nxtMonFrst.substring(0,6) + "01";	//翌月初日
					if(!nxtMonFrst.equals(result.getString(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_STAYMD)))
					{
						return false;
					}else
					{
						chkTgt.setTgtKbn(KNSHO_TG_KBN_OK);
						return false;
					}
				}
			}
		}
		return true;
	}

	/**
	 * パターン02のマスタとチェック内容は同じだが、項目が異なる
	 * @param idoKnsJkn
	 * @param chkTgt
	 */
	private void setPttrn02plus(JKVBatIdoKnsJkn idoKnsJkn, JKVBatChkTgt chkTgt,
			JBSbatCommonDBInterface result) throws Exception
	{
		chkTgt.setPttrn("02");
		chkTgt.setKmkEiName(JBSbatKK_T_SVC_KEI.PLAN_CHRG_STAYMD);
		chkTgt.setKmkName("プラン課金開始年月日");
		chkTgt.setKjn(result, "04", this.opeDate);
	}
	/**
	 * パターン11のマスタと同条件をセットする
	 * @param idoKnsJkn
	 * @param chkTgt
	 */
	private void setPttrn11(JKVBatIdoKnsJkn idoKnsJkn, JKVBatChkTgt chkTgt,
			JBSbatCommonDBInterface result) throws Exception
	{
		chkTgt.setPttrn("11");
		chkTgt.setKmkEiName(JBSbatKK_T_SVC_KEI_UCWK.PLAN_CHRG_ENDYMD);
		chkTgt.setKmkName("プラン課金終了年月日");
		chkTgt.setTgtDate(result.getString(JBSbatKK_T_SVC_KEI_UCWK.PLAN_CHRG_ENDYMD));
		chkTgt.setKjn(result, "08", this.opeDate);
	}

	/**
	 * パターン10のマスタと同条件をセットする
	 * @param idoKnsJkn
	 * @param chkTgt
	 */
	private void setPttrn10(JKVBatIdoKnsJkn idoKnsJkn, JKVBatChkTgt chkTgt,
			JBSbatCommonDBInterface result) throws Exception
	{
		chkTgt.setPttrn("10");
		chkTgt.setKmkEiName(JBSbatKK_T_KKTK_SVC_KEI.PLAN_CHRG_ENDYMD);
		chkTgt.setKmkName("プラン課金終了年月日");
		chkTgt.setTgtDate(result.getString(JBSbatKK_T_KKTK_SVC_KEI.PLAN_CHRG_ENDYMD));
		chkTgt.setKjn(result, "08", this.opeDate);
	}

	/**
	 * スキップ判定
	 * 登録運用年月日と更新運用年月日を運用日と比較し、スキップ判定を行う
	 * @param JBSbatCommonDBInterface result　検索結果
	 * @throws Exception
	 */
	private boolean isSkip(JBSbatCommonDBInterface result) throws Exception {
		// 登録運用年月日の取得
		String addUnyoYmd = result.getString(JBSbatKK_T_SVC_KEI.ADD_UNYO_YMD);
		// 更新運用年月日の取得
		String updUnyoYmd = result.getString(JBSbatKK_T_SVC_KEI.UPD_UNYO_YMD);
		//予約適用日が当日ならスキップしない
		if(this.opeDate.equals(result.getString(JBSbatKK_T_SVC_KEI.RSV_APLY_YMD)))
		{
			return false;	//opt以外取ってない
		}
		// 登録運用年月日と更新年月日が運用日と異なる場合
		if(!this.opeDate.equals(addUnyoYmd) &&
				!this.opeDate.equals(updUnyoYmd)){
			// スキップ対象とする
			fuseigoDbName = " " + updUnyoYmd;
			return true;
		}else{
			fuseigoDbName = "";
		}
		return false;
	}

	/**
	 * チェック対象判定
	 * チェックパターン単位に課金終了年月日と終了年月日、回復年月日よりチェック対象判定を行う
	 * @param JKVBatIdoKnsJkn idoKnsJkn 異動検証条件
	 * @param JBSbatCommonDBInterface result　検索結果
	 * @param String mode チェック対象外判定モード
	 * @throws Exception
	 */
	private boolean isChkTgt(JKVBatIdoKnsJkn idoKnsJkn,JBSbatCommonDBInterface result,String mode) throws Exception {
		// チェックパターンの取得
		String ptn = idoKnsJkn.getPtn();

		// 異動区分がオプション設定の場合またはチェックパターンが１５でオプション引継ぎの場合
		if(IDO_DIV_OPTION_SET.equals(idoDiv) || ("15".equals(ptn) && IDO_DIV_OPTION_HKTG.equals(idoDiv))){
			// 課金終了年月日の取得
			String chgEndYmd = null;
			// 終了年月日の取得
			String endYmd = null;
			// 回復年月日の取得
			String khkYmd = result.getString(JBSbatKK_T_SVC_KEI.KAIHK_YMD);
			
			// 対象項目に対応した日付の取得
			String kmkNm = idoKnsJkn.getKmkName();

			// 対象項目がサービス関連の場合
			if (JBSbatKK_T_SVC_KEI.SVC_CHRG_STAYMD.equals(kmkNm) ||
					JBSbatKK_T_SVC_KEI.SVC_STA_YMD.equals(kmkNm) ||
					JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD.equals(kmkNm)){
				// 課金終了年月日はサービス課金終了年月日を取得
				chgEndYmd = result.getString(JBSbatKK_T_SVC_KEI.SVC_CHRG_ENDYMD);
				// 終了年月日はサービス終了年月日を取得
				endYmd = result.getString(JBSbatKK_T_SVC_KEI.SVC_ENDYMD);

			} else {
				// 課金終了年月日はプラン課金終了年月日を取得
				chgEndYmd = result.getString(JBSbatKK_T_SVC_KEI.PLAN_CHRG_ENDYMD);
				// 終了年月日はプラン終了年月日を取得
				endYmd = result.getString(JBSbatKK_T_SVC_KEI.PLAN_ENDYMD);
			}
			
			// パターンに対してチェック対象か判定
			if("02".equals(ptn) || "04".equals(ptn) || "06".equals(ptn)
					 || "07".equals(ptn) || "13".equals(ptn) || ("15".equals(ptn) && MODE_HKTG_SAKI.equals(mode))){
				// 課金終了年月日、終了年月日に値が設定されいる場合か回復年月日がnull以外の場合
				if(!INIT_END_YMD.equals(chgEndYmd) || !INIT_END_YMD.equals(endYmd) || khkYmd != null){
					// チェック対象外とする
					return false;
				}

			} else if ("10".equals(ptn) || "11".equals(ptn) || "12".equals(ptn) ||
					("15".equals(ptn) && MODE_HKTG_MOTO.equals(mode))){

				// 課金終了年月日、終了年月日が初期値または回復年月日がnull以外の場合
				if(INIT_END_YMD.equals(chgEndYmd) || INIT_END_YMD.equals(endYmd) || khkYmd != null){
					// チェック対象外とする
					return false;
				}
			} else if("08".equals(ptn)){
				// 課金終了年月日、終了年月日に値が設定されいる場合か回復年月日がnull以外の場合
				if(!INIT_END_YMD.equals(chgEndYmd) || !INIT_END_YMD.equals(endYmd) || khkYmd == null){
					// チェック対象外とする
					return false;
				}

			}
		}

		// チェックパターンが08で機器引継の場合
		if("08".equals(ptn) && IDO_DIV_KIKIHKTG.equals(idoDiv)){

			String hktgYmd = result.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_HKHASYMD);
			commonItem.getLogPrint().printDebugLog(svcKeiNo + " " + idoDiv +
					" 機器提供サービス契約引継発生年月日:" + hktgYmd);
			// 引継発生年月日が設定されている場合検証対象外とする
			if(hktgYmd != null){
				return false;
			}
		}

		// チェックパターンが02でeoテレビ変更の場合
		if("02".equals(ptn) && IDO_DIV_EOTV_CHG.equals(idoDiv)){
			// 対象スキーマが機器提供サービス契約の場合
			if(D_TBL_NAME_KK_T_KKTK_SVC_KEI.equals(idoKnsJkn.getScmName())){
				
				// 宅内機器異動コードの取得
				String taknkiki = result.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_IDO_CD);
				
				// 宅内機器異動コードが追加以外の場合、検証対象外とする
				if(!TAKNKIKI_CD_ADD.equals(taknkiki)){
					return false;
				}
			}
		}

		// チェックパターンが11でeoテレビ変更の場合
		if("11".equals(ptn) && IDO_DIV_EOTV_CHG.equals(idoDiv)){
			// 対象スキーマが機器提供サービス契約の場合
			if(D_TBL_NAME_KK_T_KKTK_SVC_KEI.equals(idoKnsJkn.getScmName())){
				
				// 宅内機器異動コードの取得
				String taknkiki = result.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_IDO_CD);
				
				// 宅内機器異動コードが一部撤去以外の場合、検証対象外とする
				if(!TAKNKIKI_CD_ICBTKY.equals(taknkiki)){
					return false;
				}
			}
		}

		// チェックパターンが06の場合
		if("06".equals(ptn)){
			// サービス開始年月日≦運用日の場合は検証対象外とする
			if(svcStaYmd.compareTo(this.opeDate) <= 0){
				return false;
			}
		}

		return true;
	}

	/**
	 * オプション関連チェック対象判定
	 * オプション関連のチェック対象か判定を行い、対象リストに設定する
	 * @param JBSbatCommonDBInterface result　検索結果
	 * @param JKVBatIdoKnsJkn idoKnsJkn 契約異動検証条件
	 * @throws Exception
	 */
	private boolean isChkTgtOption(JBSbatCommonDBInterface result,JKVBatIdoKnsJkn idoKnsJkn) throws Exception {

		String scmNm = idoKnsJkn.getScmName();
		String kmkNm = idoKnsJkn.getKmkName();
		String ptn = idoKnsJkn.getPtn();

		// オプションサービス契約の場合
		if(D_TBL_NAME_KK_T_OP_SVC_KEI.equals(scmNm)){
			// オプションサービスコードと契約ステータスを取得
			String opSvcCd = result.getString("CD");
			String opSvcKeiStat = result.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT);

			// オプションがマルチセッションの場合
			if("B015".equals(opSvcCd)){
				
				// サービス終了年月日が初期値の場合
				String svcEndYmd = result.getString(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD);
				if(INIT_END_YMD.equals(svcEndYmd)){
					// チェックパターンが02,もしくは13の場合
					if("02".equals(ptn) || "13".equals(ptn)){
						// チェック対象外判定
						if(opChkList.contains(result.getString("OUTPUT_NO")) && 
								isChkTgt(idoKnsJkn,result,MODE_DEFAULT)){
							
							// オプションチェックリストに設定
							opChkList.add(result.getString("OUTPUT_NO"));
							// サービス用チェッククラス生成
							JKVBatChkTgt chkTgtSvc = new JKVBatChkTgt(result,scmNm,JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_STAYMD);
							chkTgtSvc.setKjn(result, "01", null);
							opChkListPtn07.add(chkTgtSvc);
							
							// プラン用チェッククラス生成
							JKVBatChkTgt chkTgtPln = new JKVBatChkTgt(result,scmNm,JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_STAYMD);
							chkTgtPln.setKjn(result, "03", null);
							opChkListPtn07.add(chkTgtPln);
						}
						return true;
					}
										
				} 
			} else if(IDO_DIV_OPTION_SET.equals(idoDiv)){
				// 異動区分がオプション設定の場合
				
				// サービス契約ステータスがサービス提供中の場合
				if(JBSbatKKConst.SVC_KEI_STAT_SVCTK_CHU.equals(opSvcKeiStat)){
					// 終了系の検証対象は読み飛ばす
					if(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD.equals(kmkNm) ||
							JBSbatKK_T_OP_SVC_KEI.PLAN_ENDYMD.equals(kmkNm) ||
							JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_ENDYMD.equals(kmkNm) ||
							JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_ENDYMD.equals(kmkNm)){
						return true;
					}
				}
				
				// サービス契約ステータスが解約済、キャンセル済の場合
				if(JBSbatKKConst.SVC_KEI_STAT_DLS_ZM.equals(opSvcKeiStat) ||
						JBSbatKKConst.SVC_KEI_STAT_CNCL_ZM.equals(opSvcKeiStat)){
					// 開始系の検証対象は読み飛ばす
					if(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD.equals(kmkNm) ||
							JBSbatKK_T_OP_SVC_KEI.PLAN_STAYMD.equals(kmkNm) ||
							JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_STAYMD.equals(kmkNm) ||
							JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_STAYMD.equals(kmkNm) ||
							JBSbatKK_T_OP_SVC_KEI.KAIHK_YMD.equals(kmkNm)){
						return true;
					}
				}
			}
		} else if(D_TBL_NAME_KK_T_SBOP_SVC_KEI.equals(scmNm)){
			// サブオプションサービス契約の場合
			String sbopSvcCd = result.getString("CD");
			String sbopSvcKeiStat = result.getString(JBSbatKK_T_SBOP_SVC_KEI.SBOP_SVC_KEI_STAT);

			// サブオプションがメール容量、ホームページ容量の場合
			if("D02".equals(sbopSvcCd) || "D04".equals(sbopSvcCd)){
				// サービス終了年月日が初期値の場合
				String svcEndYmd = result.getString(JBSbatKK_T_SBOP_SVC_KEI.SVC_ENDYMD);
				if(INIT_END_YMD.equals(svcEndYmd)){
					// チェックパターンが02,もしくは13の場合
					if("02".equals(ptn) || "13".equals(ptn)){
						
						// チェック対象外判定
						if(sbopChkList.contains(result.getString("OUTPUT_NO")) && 
								isChkTgt(idoKnsJkn,result,MODE_DEFAULT)){
							
							// オプションチェックリストに設定
							sbopChkList.add(result.getString("OUTPUT_NO"));
							// サービス用チェッククラス生成
							JKVBatChkTgt chkTgtSvc = new JKVBatChkTgt(result,scmNm,JBSbatKK_T_SBOP_SVC_KEI.SVC_CHRG_STAYMD);
							chkTgtSvc.setKjn(result, "01", null);
							sbopChkListPtn07.add(chkTgtSvc);
							
							// プラン用チェッククラス生成
							JKVBatChkTgt chkTgtPln = new JKVBatChkTgt(result,scmNm,JBSbatKK_T_SBOP_SVC_KEI.PLAN_CHRG_STAYMD);
							chkTgtPln.setKjn(result, "03", null);
							sbopChkListPtn07.add(chkTgtPln);
						}
						return true;
					}
				} 
			} else if(IDO_DIV_OPTION_SET.equals(idoDiv)){
				// 異動区分がオプション設定の場合
				
				// サービス契約ステータスがサービス提供中の場合
				if(JBSbatKKConst.SVC_KEI_STAT_SVCTK_CHU.equals(sbopSvcKeiStat)){
					// 終了系の検証対象は読み飛ばす
					if(JBSbatKK_T_SBOP_SVC_KEI.SVC_ENDYMD.equals(kmkNm) ||
							JBSbatKK_T_SBOP_SVC_KEI.PLAN_ENDYMD.equals(kmkNm) ||
							JBSbatKK_T_SBOP_SVC_KEI.SVC_CHRG_ENDYMD.equals(kmkNm) ||
							JBSbatKK_T_SBOP_SVC_KEI.PLAN_CHRG_ENDYMD.equals(kmkNm)){
						return true;
					}
				}
				
				// サービス契約ステータスが解約済、キャンセル済の場合
				if(JBSbatKKConst.SVC_KEI_STAT_DLS_ZM.equals(sbopSvcKeiStat) ||
						JBSbatKKConst.SVC_KEI_STAT_CNCL_ZM.equals(sbopSvcKeiStat)){
					// 開始系の検証対象は読み飛ばす
					if(JBSbatKK_T_SBOP_SVC_KEI.SVC_STAYMD.equals(kmkNm) ||
							JBSbatKK_T_SBOP_SVC_KEI.PLAN_STAYMD.equals(kmkNm) ||
							JBSbatKK_T_SBOP_SVC_KEI.SVC_CHRG_STAYMD.equals(kmkNm) ||
							JBSbatKK_T_SBOP_SVC_KEI.PLAN_CHRG_STAYMD.equals(kmkNm) ||
							JBSbatKK_T_SBOP_SVC_KEI.KAIHK_YMD.equals(kmkNm)){
						return true;
					}
				}
			}
		}
		return false;
	}
	
	/**
	 * 引継チェック対象判定
	 * 引継元のプラン課金終了年月日と引継先のプラン課金開始年月日の相関チェックを行う
	 * @param JKVBatIdoKnsJkn idoKnsJkn 契約異動検証条件
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 * @param JBSbatCommonDBInterface result　検索結果
	 * @throws Exception
	 */
	private void hktgChk(JKVBatIdoKnsJkn idoKnsJkn,JKVBatChkTgt chkTgt,JBSbatCommonDBInterface result) throws Exception {
		// 申込明細番号とオプションサービスコードを取得
		String mskmDtlNo = result.getString(JBSbatKK_T_OP_SVC_KEI.MSKM_DTL_NO);
		String opSvcCd = result.getString("CD");
		
		// 申込明細番号とオプションサービスコードが取得できなければ検証対象とする
		if(mskmDtlNo == null || opSvcCd == null){
			chkTgt.setKjnName("プラン課金終了年月日");
			chkTgt.setTgtKbn(KNSHO_TG_KBN_DB);
			fuseigoDbName = " 申込明細、オプションサービス";
		}
		
		executeKK_T_OP_SVC_KEI_KV_SELECT_014(new Object[]{chkTgt.getTgtNo(),idoDiv,mskmDtlNo,opSvcCd});
		// 検索結果より基準日、基準日名称を設定
		JBSbatCommonDBInterface opResult = db_KK_T_OP_SVC_KEI_2.selectNext();

		// 検索に失敗した場合は即エラー
		if(opResult == null){
			chkTgt.setKjnName("プラン課金終了年月日");
			chkTgt.setTgtKbn(KNSHO_TG_KBN_DB);
			fuseigoDbName = " オプションサービス";
		} else{
			// 検索に成功した場合は引継元のレコードが検証対象か判定する
			if(isChkTgt(idoKnsJkn,opResult,MODE_HKTG_MOTO)){
				// 検証対象の場合
				chkTgt.setKjn(opResult,idoKnsJkn.getKjnCode(),this.opeDate);
			} else {
				// スキップ対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_SKP);
			}
			
		}
	}
	
	/**
	 * 割賦チェック
	 * 割賦契約に関するチェックを行う
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 * @param JBSbatCommonDBInterface result　検索結果
	 * @throws Exception
	 */
	private void kapChk(JKVBatChkTgt chkTgt,JBSbatCommonDBInterface result) throws Exception {
		
			// 引継元の割賦契約番号を取得
			String kapKeiNo = result.getString(JBSbatKK_T_KAP_KEI.HKTGI_MOTO_KAP_KEI_NO);
			// 引継元の割賦契約番号を取得できない場合はDB不整合とする
			if(kapKeiNo == null){
				chkTgt.setTgtNo("");
				chkTgt.setTgtDate("");
				chkTgt.setTgtKbn(KNSHO_TG_KBN_DB);
				fuseigoDbName = " 割賦契約";
			}
			// 引継元の割賦契約番号を元に検索を行う
			executeKK_T_KAP_KEI_KV_SELECT_002(new Object[]{kapKeiNo,idoDiv,this.opeDate});
			// 検索に失敗した場合はDB不整合とする
			JBSbatCommonDBInterface kapResult = db_KK_T_KAP_KEI_2.selectNext();	//オプションサービス？
//			//db_KK_T_KAP_KEI_2 に修正 0731
			if(kapResult == null){
				chkTgt.setTgtNo("");
				chkTgt.setTgtDate("");
				chkTgt.setTgtKbn(KNSHO_TG_KBN_DB);
				fuseigoDbName = " 割賦契約";
			}
			// 引継元の割賦契約番号と割賦請求終了年月日をチェッククラスに再設定する
			chkTgt.setTgtDate(kapResult.getString(JBSbatKK_T_KAP_KEI.KAP_SEIKY_ENDYMD));
			chkTgt.setTgtNo(kapResult.getString("OUTPUT_NO"));
			
		
	}
	
	/**
	 * キャンセルチェック
	 * キャンセルレコードに関するチェックを行う
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 * @param JBSbatCommonDBInterface result　検索結果
	 * @param String scmNm 
	 * @throws Exception
	 */
	private void cnclChk(JKVBatChkTgt chkTgt,JBSbatCommonDBInterface result,String scmNm) throws Exception {
		
		// キャンセル判定を行う 対象は機器提供サービス契約のみ
		if(D_TBL_NAME_KK_T_KKTK_SVC_KEI.equals(scmNm)){
			// オプションサービス契約の場合
			if(this.opeDate.compareTo(planChrgStaYmd) < 0){
				// プラン課金開始年月日とプラン課金終了年月日を取得
				String staYmd = result.getString(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_STAYMD);
				String endYmd = result.getString(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_ENDYMD);
				if(staYmd == null || endYmd == null){
					// DB不整合とする
					chkTgt.setTgtKbn(KNSHO_TG_KBN_DB);
					fuseigoDbName = " 機器提供サービス契約 プラン課金開始年月日orプラン課金終了年月日なし";
				} else if(staYmd.compareTo(endYmd) > 0){
					// キャンセルなのでスキップする
					chkTgt.setTgtKbn(KNSHO_TG_KBN_SKP);
				} else {
					// 検証対象とする
					chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
					chkTgt.setKmkName("プラン課金終了年月日");
					chkTgt.setTgtDate(endYmd);
					chkTgt.setKjnName("プラン課金開始年月日");
					chkTgt.setKjnDate(staYmd);
				}
			}
		}
	}

	/**
	 * 回復チェック
	 * 契約ステータスによって検証対象項目を変更する
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 * @param JBSbatCommonDBInterface result　検索結果
	 * @throws Exception
	 */
	private void khkChk(JKVBatChkTgt chkTgt,JBSbatCommonDBInterface result) throws Exception {
		
		// 契約ステータスを取得
		String status = result.getString("STATUS");
		
		// 契約ステータスがサービス提供中の場合はマスタより取得した項目でチェックする
		if(JBSbatKKConst.SVC_KEI_STAT_SVCTK_CHU.equals(status)){
			;
		}
		//変更予定 0806
		else if(JBSbatKKConst.SVC_KEI_STAT_CNC_ZM.equals(status)){
			// 対象項目にサービス解約取消年月日を設定する
			chkTgt.setTgtDate(result.getString(JBSbatKK_T_SVC_KEI.SVC_DSL_CL_YMD));
			chkTgt.setKmkName("サービス解約取消年月日");
		} 
//		else {
//			// 契約ステータスがサービス提供中、締結済以外の場合はDB不整合とする
//			chkTgt.setTgtKbn(KNSHO_TG_KBN_DB);
//			fuseigoDbName = " 契約ステータスがサービス提供中・締結済以外";
//		}
	}


	
	/**
	 * オプションチェック主処理
	 * オプション、サブオプションに関するチェックを行う
	 * @param JBSbatOutputItem outputItem　出力共通電文クラス
	 * @throws Exception
	 */
	private void chkOption(JBSbatOutputItem outputItem) throws Exception {

		// 開始年月日チェックを行う
		for(JKVBatChkTgt chkTgt:opChkListPtn07){
			// 開始年月日チェック用の契約異動検証条件を生成する
			JKVBatIdoKnsJkn idoKnsJkn = new JKVBatIdoKnsJkn(chkTgt.getScmEiName(),chkTgt.getKmkEiName(),null,"07");

			// 開始年月日チェック用のリストを生成する
			List<JKVBatChkTgt> chkTgtList = new ArrayList<JKVBatChkTgt>();

			chkTgtList.add(chkTgt);

			// 開始年月日と課金開始年月日のチェックを行う
			chkExecute(idoKnsJkn,chkTgtList,outputItem);
		}

		// サブオプションサービス契約に関するチェック
		// 開始年月日チェックを行う
		for(JKVBatChkTgt chkTgt:sbopChkListPtn07){
			// 開始年月日チェック用の契約異動検証条件を生成する
			JKVBatIdoKnsJkn idoKnsJkn = new JKVBatIdoKnsJkn(chkTgt.getScmEiName(),chkTgt.getKmkEiName(),null,"07");

			// 開始年月日チェック用のリストを生成する
			List<JKVBatChkTgt> chkTgtList = new ArrayList<JKVBatChkTgt>();

			chkTgtList.add(chkTgt);

			// 開始年月日と課金開始年月日のチェックを行う
			chkExecute(idoKnsJkn,chkTgtList,outputItem);
		}
		
	}

	/**
	 * パターンチェック
	 * パターン毎のチェックを行う
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 * @param JKVBatIdoKnsJkn idoKnsJkn 異動検証条件保持クラス
	 * @throws Exception
	 */
	private void patternChk(JKVBatChkTgt chkTgt,JKVBatIdoKnsJkn idoKnsJkn) throws Exception{
		// パターンを取得する
		String pattern = idoKnsJkn.getPtn();

		//chkTgtに別パターンあれば上書き
		if(null != chkTgt.getPttrn())
		{
			pattern = chkTgt.getPttrn();
		}

		// パターンごとのチェックを行う
		if("01".equals(pattern)){
			chkPattern1(chkTgt);
		} else if("02".equals(pattern)){
			//機器提供種別CD買取[01]の場合
			if("01".equals(chkTgt.getKkTkSbtCd()))
			{
				chkPattern7(chkTgt);
			}else
			{
				chkPattern2(chkTgt);
			}
		} else if("04".equals(pattern)){
			chkPattern4(chkTgt);
		} else if("05".equals(pattern)){
			chkPattern5(chkTgt);
		} else if("06".equals(pattern)){
			chkPattern6(chkTgt);
		} else if("07".equals(pattern)){
			chkPattern7(chkTgt);
		} else if("08".equals(pattern)){
			chkPattern8(chkTgt);
		} else if("09".equals(pattern)){
			chkPattern9(chkTgt);
		} else if("10".equals(pattern)){
			chkPattern10(chkTgt);
		} else if("11".equals(pattern)){
			chkPattern11(chkTgt);
		} else if("12".equals(pattern)){
			chkPattern12(chkTgt);
		} else if("13".equals(pattern)){
			chkPattern13(chkTgt);
		} else if("14".equals(pattern)){
			chkPattern14(chkTgt);
		} else if("15".equals(pattern)){
			chkPattern15(chkTgt);
		} else if("16".equals(pattern)){
			chkPattern16(chkTgt);
		} else if("17".equals(pattern)){
			chkPattern17(chkTgt);
		} else if("18".equals(pattern)){
			chkPattern18(chkTgt);

		} else if("90".equals(pattern)){
			chkPattern90(chkTgt);
		} else if("91".equals(pattern)){
			chkPattern91(chkTgt);
		}
		
		if(KNSHO_TG_KBN_NG.equals(chkTgt.getTgtKbn()))
		{
			super.logPrint.printDebugLog(svcKeiNo + " 対象値:" + chkTgt.getTgtDate() +
					" 対象項目名:" + chkTgt.getKmkName() + " ﾊﾟﾀｰﾝ:" + pattern);
		}
	}

	/**
	 * チェックパターン１
	 * 取得した項目の設定値の前日が開始年月日と等しいことを確認する。
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern1(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		String kjnDate = chkTgt.getKjnDate();
		// 検証対象日付が設定されていない場合
		if(tgtDate == null || kjnDate == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		} else {
			// 検証対象日付の1日前を取得
			String bfDate = JBSbatDateUtil.adjustDate(tgtDate,-1);
			// 基準年月日と異なる場合検証対象とする
			if(!bfDate.equals(kjnDate)){
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			}
		}
	}

	/**
	 * チェックパターン２
	 * 取得した項目の設定値が月初（1日）であることを確認する。
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern2(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		String kjnDate = chkTgt.getKjnDate();
		if(null != chkTgt.getPttrn())		//設定されていればチェックしない
		{
			return;
		}

		// 検証対象日付が設定されていない場合
		if(tgtDate == null || kjnDate == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		} else {
			// 検証対象日付が月初（1日）でない場合検証対象とする
			if(!"01".equals(tgtDate.substring(6, 8))){
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			} else {
				// 月初の場合 対象日付の年月を取得
				String tgtYyyyMm = tgtDate.substring(0, 6);
				// 基準日付の翌月を取得
				String kjnYyyyMm = JBSbatDateUtil.adjustMonth(kjnDate,1).substring(0,6);

				if(!tgtYyyyMm.equals(kjnYyyyMm)){
					chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
				}
			}
		}
	}

	/**
	 * チェックパターン４
	 * 取得した項目に値が設定されていることを確認する。
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern4(JKVBatChkTgt chkTgt){
		// 検証対象日付が設定されていない場合
		if(chkTgt.getTgtDate() == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		}
		// 検証対象が終了年月日の場合
		String kmkNm = chkTgt.getKmkEiName();
		if(JBSbatKK_T_SVC_KEI.PLAN_CHRG_ENDYMD.equals(kmkNm) ||
				JBSbatKK_T_SVC_KEI.SVC_CHRG_ENDYMD.equals(kmkNm) ||
				JBSbatKK_T_SVC_KEI.PLAN_ENDYMD.equals(kmkNm) ||
				JBSbatKK_T_SVC_KEI.SVC_ENDYMD.equals(kmkNm) ||
				JBSbatKK_T_KAP_KEI.KAP_SEIKY_ENDYMD.equals(kmkNm)){
			// 初期値の場合
			if(INIT_END_YMD.equals(chkTgt.getTgtDate())){
				// 検証対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			}
		}
	}
	
	/**
	 * チェックパターン５
	 * 取得した項目の設定値の7日前が開始年月日と等しいことを確認する。
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern5(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		String kjnDate = chkTgt.getKjnDate();
		// 検証対象日付が設定されていない場合
		if(tgtDate == null || kjnDate == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		} else {
			// 検証対象日付の7日前を取得
			String bfDate = JBSbatDateUtil.adjustDate(tgtDate,-7);
			// 基準年月日と異なる場合検証対象とする
			if(!bfDate.equals(kjnDate)){
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			}
		}
	}

	/**
	 * チェックパターン６
	 * 取得した項目の設定値が月初（1日）であることを確認する。
	 * 課金開始年月日の前月と開始年月日の年月が同じ場合、開始年月日が以下の範囲内であること
	 * 課金開始年月日の前々月と開始年月日の年月が同じ場合、開始年月日が以下の範囲内であること
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern6(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		String kjnDate = chkTgt.getKjnDate();

		// 検証対象日付が設定されていない場合
		if(tgtDate == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		} else {
			// 検証対象日付が月初（1日）でない場合検証対象とする
			if(!tgtDate.substring(6, 8).equals("01")){
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			} else {
				
				// 月初の場合基準日との比較を行う
				if(kjnDate == null){
					//基準日が設定されていない場合検証対象とする
					chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
				} else {
					// 基準日(開始年月日)の月を取得
					String staMm = kjnDate.substring(0,6);
					// 基準日(開始年月日)の日を取得
					String staDd = kjnDate.substring(6,8);
					// 検証日付の前月もしくは前々月が基準日の月と同じ場合
					if(staMm.equals(JBSbatDateUtil.adjustMonth(tgtDate,-1).substring(0,6)) ||
							staMm.equals(JBSbatDateUtil.adjustMonth(tgtDate,-2).substring(0,6))){
						// 日付が16日以降ならば検証対象
						if("15".compareTo(staDd) < 0){
							chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
						}
					} else {
						// 検証日付の前月、または前々月が基準日の月と一致しなければ検証対象
						chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
					}
				}
				
			}
		}
	}

	/**
	 * チェックパターン７
	 * 取得した項目と開始年月日が等しいことを確認する。
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern7(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		String kjnDate = chkTgt.getKjnDate();
		if(null != chkTgt.getPttrn())		//設定されていればチェックしない
		{
			return;
		}

		// 検証対象日付が設定されていない場合
		if(tgtDate == null || kjnDate == null){
			commonItem.getLogPrint().printDebugLog(svcKeiNo +
					" パターン７_検証対象日付が設定されていない");
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);

		} else if(!tgtDate.equals(kjnDate)){
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		}
	}
	
	/**
	 * チェックパターン８
	 * 取得した項目の設定値が運用日と等しいこと
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern8(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		// 検証対象日付が設定されていない場合
		if(tgtDate == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			
		} else if(!tgtDate.equals(this.opeDate)){
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		}
	}

	/**
	 * チェックパターン９
	 * 取得した項目の設定値の翌日が解約起算年月日と等しいことを確認する。
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern9(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		String kjnDate = chkTgt.getKjnDate();
		// 検証対象日付が設定されていない場合
		if(tgtDate == null || kjnDate == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			
		} else if(!JBSbatDateUtil.adjustDate(tgtDate,1).equals(kjnDate)){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		}
	}
	
	/**
	 * チェックパターン１０
	 * 取得した項目の設定値の翌日が終了年月日と等しいことを確認する。
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern10(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		String kjnDate = chkTgt.getKjnDate();
		//料金プランCDがＭｙホームページ 要確認
		if("B002".equals(pplanCd))
		{
			if(null == tgtDate)
			{
				chkTgt.setTgtKbn(KNSHO_TG_KBN_SKP);	//検証対象外
				return;
			}
		}

		// 検証対象日付が設定されていない場合
		if(INIT_END_YMD.equals(tgtDate)){
			// 異動区分がオプション設定の場合
			if(IDO_DIV_OPTION_SET.equals(idoDiv)){
				// スキップ対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_SKP);
			}else{
				// 検証対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			}
			
		} else if(tgtDate == null || kjnDate == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);

		} else if(!JBSbatDateUtil.adjustDate(tgtDate,1).equals(kjnDate)){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		}
	}

	/**
	 * チェックパターン１１
	 * 取得した項目の設定値が月末であることを確認する。
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern11(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		String kjnDate = chkTgt.getKjnDate();
		
		// 検証対象日付が設定されていない場合
		if(INIT_END_YMD.equals(tgtDate)){
			// 異動区分がオプション設定の場合
			if(IDO_DIV_OPTION_SET.equals(idoDiv)){
				// スキップ対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_SKP);
			}else{
				// 検証対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			}
			
		} else if(tgtDate == null || kjnDate == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);

		} else {
			// 基準日付の年月を取得
			String kjnYyyyMm = kjnDate.substring(0,6);
			// 基準日付の末日を取得
			String endMonth = kjnYyyyMm + JBSbatDateUtil.getEndOfMonth(kjnYyyyMm);
			
			if(!tgtDate.equals(endMonth)){
				// 検証対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			}
		}
	}

	/**
	 * チェックパターン１２
	 * 取得した項目の設定値が課金終了年月の1日〜末日の範囲内であること
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern12(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		String kjnDate = chkTgt.getKjnDate();
		// 検証対象日付が設定されていない場合
		if(INIT_END_YMD.equals(tgtDate)){
			// 異動区分がオプション設定の場合
			if(IDO_DIV_OPTION_SET.equals(idoDiv)){
				// スキップ対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_SKP);
			}else{
				// 検証対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			}
			
		} else if(tgtDate == null || kjnDate == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);

		} else {
			// 検証対象日付の年月を取得
			String tgtYyyyMm = tgtDate.substring(0,6);
			// 基準日の年月を取得
			String kjnYyyyMm = kjnDate.substring(0,6);
			if(!tgtYyyyMm.equals(kjnYyyyMm)){
				// 検証対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			}
		}
	}
	
	/**
	 * チェックパターン１３
	 * 取得した項目の設定値が課金開始年月日の前月1日〜前月末日であることを確認する。
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern13(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		String kjnDate = chkTgt.getKjnDate();
		// 検証対象日付が設定されていない場合
		if(tgtDate == null){
			// 異動区分がオプション設定の場合
			if(IDO_DIV_OPTION_SET.equals(idoDiv)){
				// スキップ対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_SKP);
			}else{
				// 検証対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
//				commonItem.getLogPrint().printBusinessErrorLog("EKKB0960AI",
//						new String[]{"パターン13_対象日付なし " + 
//						svcKeiNo + " " + idoDiv + " " + chkTgt.getKmkName()});
			}
			
		} else if(kjnDate == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0960AI",
//					new String[]{"パターン13_基準日なし " + svcKeiNo + " " + idoDiv});
		} else {
			// 検証対象日付の年月を取得
			String tgtYyyyMm = tgtDate.substring(0,6);
			// 基準日の前月の年月を取得
			String kjnYyyyMm = JBSbatDateUtil.adjustMonth(kjnDate,-1).substring(0,6);
			if(!tgtYyyyMm.equals(kjnYyyyMm)){
				// 検証対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
//				commonItem.getLogPrint().printBusinessErrorLog("EKKB0960AI",
//						new String[]{"パターン13_課金開始年月日の前月1日〜前月末日ではない " 
//						+ svcKeiNo + " " + idoDiv});
			}
		}
	}

	/**
	 * チェックパターン１４
	 * コース変更後の項目の設定値の前日がコース変更前の項目の設定値と等しいこと
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern14(JKVBatChkTgt chkTgt) throws Exception{
		// 対象日付を取得する
		String tgtDate = chkTgt.getTgtDate();
		
		// 対象番号を取得する（サービス契約内訳の検索キーとなる）
		String key = chkTgt.getTgtNo();

		// スキーマ名と項目名を取得する
		String scmName = chkTgt.getScmEiName();
		String kmkName = chkTgt.getKmkEiName();

		JBSbatCommonDBInterface result = null;
		// 検証対象日付が設定されていない場合
		if(tgtDate == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			
		} else {
			// 検証対象日付の前日を取得する
			String bfTgtDate = JBSbatDateUtil.adjustDate(tgtDate,-1);
			
			// サービス契約の検索
			if(D_TBL_NAME_KK_T_SVC_KEI.equals(scmName)){
				
				// プラン課金開始年月日に対してプラン課金終了年月日を検索する
				if(JBSbatKK_T_SVC_KEI.PLAN_CHRG_STAYMD.equals(kmkName)){
					executeKK_T_SVC_KEI_KV_SELECT_009(new Object[]{svcKeiNo,bfTgtDate});
					
				} else if (JBSbatKK_T_SVC_KEI.SVC_CHRG_STAYMD.equals(kmkName)){
					// サービス課金開始年月日に対してサービス課金終了年月日を検索する
					executeKK_T_SVC_KEI_KV_SELECT_010(new Object[]{svcKeiNo,bfTgtDate});
					
				} else if (JBSbatKK_T_SVC_KEI.PLAN_STAYMD.equals(kmkName)){
					// プラン開始年月日に対してプラン終了年月日を検索する
					executeKK_T_SVC_KEI_KV_SELECT_011(new Object[]{svcKeiNo,bfTgtDate});
					
				} else if (JBSbatKK_T_SVC_KEI.SVC_STA_YMD.equals(kmkName)){
					// サービス開始年月日に対してサービス終了年月日を検索する
					executeKK_T_SVC_KEI_KV_SELECT_012(new Object[]{svcKeiNo,bfTgtDate});
				}
				
				result = db_KK_T_SVC_KEI.selectNext();
				
			} else if(D_TBL_NAME_KK_T_SVC_KEI_UCWK.equals(scmName)){
				// サービス契約内訳の検索
				
				// プラン課金開始年月日に対してプラン課金終了年月日を検索する
				if(JBSbatKK_T_SVC_KEI_UCWK.PLAN_CHRG_STAYMD.equals(kmkName)){
					executeKK_T_SVC_KEI_UCWK_KV_SELECT_005(new Object[]{key,bfTgtDate});
					
				} else if (JBSbatKK_T_SVC_KEI_UCWK.SVC_CHRG_STAYMD.equals(kmkName)){
					// サービス課金開始年月日に対してサービス課金終了年月日を検索する
					executeKK_T_SVC_KEI_UCWK_KV_SELECT_006(new Object[]{key,bfTgtDate});
					
				} else if (JBSbatKK_T_SVC_KEI_UCWK.PLAN_STAYMD.equals(kmkName)){
					// プラン開始年月日に対してプラン終了年月日を検索する
					executeKK_T_SVC_KEI_UCWK_KV_SELECT_007(new Object[]{key,bfTgtDate});
					
				} else if (JBSbatKK_T_SVC_KEI_UCWK.SVC_STA_YMD.equals(kmkName)){
					// サービス開始年月日に対してサービス終了年月日を検索する
					executeKK_T_SVC_KEI_UCWK_KV_SELECT_008(new Object[]{key,bfTgtDate});
				}
				result = db_KK_T_SVC_KEI_UCWK.selectNext();
			}
			
			if(result == null){
				// 検証対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			}
		}
	}

	/**
	 * チェックパターン１５
	 * 引継先の開始日付の前日が引継元の終了日付であることを確認する。
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern15(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		String kjnDate = chkTgt.getKjnDate();
		// 検証対象日付が設定されていない場合
		if(tgtDate == null || kjnDate == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		} else {
			// 検証対象日付の1日前を取得
			String bfDate = JBSbatDateUtil.adjustDate(tgtDate,-1);
			// 基準年月日と異なる場合検証対象とする
			if(!bfDate.equals(kjnDate)){
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			}
		}
	}

	/**
	 * チェックパターン１６
	 * 課金終了年月日が設定されていないことを確認する。
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern16(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		// 検証対象日付が設定されていない場合
		if(!INIT_END_YMD.equals(tgtDate)){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		}
	}
	
	/**
	 * チェックパターン１７
	 * キャンセル年月日または課金終了年月日が設定されていることを確認する。
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern17(JKVBatChkTgt chkTgt){
		String tgtDate = chkTgt.getTgtDate();
		String tgtKmk = chkTgt.getKmkEiName();
		
		if(JBSbatKK_T_SVC_KEI.SVC_CANCEL_YMD.equals(tgtKmk)){
			// 検証対象日付が初期値の場合
			if(tgtDate == null){
				// 検証対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			}
			
		} else {
			// 検証対象日付が初期値の場合
			if(INIT_END_YMD.equals(tgtDate)){
				// 検証対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			}
		}
	}

	/**
	 * チェックパターン１８
	 * プラン課金終了年月日が元サービスの終了年月日と等しいことを確認する。
	 * @param JKVBatChkTgt chkTgt チェック対象クラス
	 */
	private void chkPattern18(JKVBatChkTgt chkTgt)
	{
		String tgtDate = chkTgt.getTgtDate();	//プラン課金終了年月日
		String kjnDate = chkTgt.getKjnDate();	//元サービス終了年月日 要確認
		// 検証対象日付が設定されていない場合
		if(tgtDate == null || kjnDate == null){
			// 検証対象とする
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		}else
		{
			if(!tgtDate.equals(kjnDate))
			{
				// 検証対象とする
				chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
			}
		}
	}

	/**
	 * 機器提供サービス契約[サービス開始年月日]存在チェック
	 * @param rslt
	 * @param chkTgt
	 * @throws Exception
	 */
	private void chkPattern90(JKVBatChkTgt chkTgt) throws Exception
	{
		//初期値はok
//		if(INIT_END_YMD.equals(chkTgt.getPlnEndYmd()))
//		{
//			return;
//		}

		if(isNullBlank(chkTgt.getPlnEndYmd()))
		{
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		}
	}
	/**
	 * プラン終了年月日がプラン課金終了年月日の前日かをチェック
	 * @param chkTgt
	 */
	private void chkPattern91(JKVBatChkTgt chkTgt)
	{
		//ターゲットはプラン課金終了年月日となっている
		String tgtDate = chkTgt.getTgtDate();	//プラン課金終了年月日
		String plnEndDay = chkTgt.getPlnEndYmd();
		//プラン課金終了年月日の前日かをチェック
		if(!plnEndDay.equals(JBSbatDateUtil.adjustDate(tgtDate, -1)))
		{
			chkTgt.setTgtKbn(KNSHO_TG_KBN_NG);
		}
	}
	/**
	 * 出力情報取得
	 * 入力値の単純転送項目を出力情報に設定し返却する
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap getOutMap() throws Exception{

		// 出力値編集
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		// 異動区分の名称を取得
		executeZM_M_CD_NM_KANRI_KV_SELECT_001(new Object[]{"CD00576",idoDiv, opeDate, opeDate});
		String idoDivNm = db_ZM_M_CD_NM_KANRI.selectNext().getString("CD_DIV_NM");

		// 進捗ステータスの名称を取得
		executeZM_M_CD_NM_KANRI_KV_SELECT_001(new Object[]{"CD00647",prgStat, opeDate, opeDate});
		JBSbatCommonDBInterface prgNmRslt = db_ZM_M_CD_NM_KANRI.selectNext();
		String prgStatNm = "";
		if(null != prgNmRslt)
		{
			prgStatNm = prgNmRslt.getString("CD_DIV_NM");
		}
//		String prgStatNm = db_ZM_M_CD_NM_KANRI.selectNext().getString("CD_DIV_NM");
		
		// 料金グループの名称を取得
		executeKK_M_PPLAN_KV_SELECT_001(new Object[]{pcrsCd,pplanCd});
		JBSbatCommonDBInterface planNmRslt = db_KK_M_PPLAN.selectNext();
		String pplanNm = "";
		if(null != planNmRslt)
		{
			pplanNm = planNmRslt.getString("PPLAN_NM");
		}
//		String pplanNm = db_KK_M_PPLAN.selectNext().getString("PPLAN_NM");

		outMap.setString(JBSbatKVIFM008.SYSID,sysid);
		outMap.setString(JBSbatKVIFM008.SVC_KEI_NO,svcKeiNo);
		outMap.setString(JBSbatKVIFM008.SEIKY_KEI_NO, seikyKeiNo);
		outMap.setString(JBSbatKVIFM008.IDO_DIV,idoDiv);
		outMap.setString(JBSbatKVIFM008.IDO_DIV_NM,idoDivNm);
		outMap.setString(JBSbatKVIFM008.PRG_STAT,prgStat);
		outMap.setString(JBSbatKVIFM008.PRG_STAT_NM,prgStatNm);
		outMap.setString(JBSbatKVIFM008.PPLAN_CD,pplanCd);
		outMap.setString(JBSbatKVIFM008.PPLAN_NM,pplanNm);
		outMap.setString(JBSbatKVIFM008.SHOSA_YMD, shosaYmd);
		outMap.setOutFlg(true);

		return outMap;
	}

	/**
	 * 出力情報設定
	 * チェック結果や異動検証条件より出力マップに値を設定する
	 * @param JBSbatServiceInterfaceMap outMap 入出力データを格納するマップ
	 * @param JKVBatChkTgt chkTg チェック対象クラス
	 * @param JKVBatIdoKnsJkn idoKnsJkn 異動検証条件保持クラス
	 * @throws Exception
	 */
	private void setOutMap(JBSbatServiceInterfaceMap outMap,JKVBatChkTgt chkTgt,JKVBatIdoKnsJkn idoKnsJkn) throws Exception{

		// スキーマ名の設定
		outMap.setString(JBSbatKVIFM008.SCHMA_NM,chkTgt.getScmName());
		// キー項目の設定
		outMap.setString(JBSbatKVIFM008.KEY_KMK_VAL,chkTgt.getTgtNo());
		outMap.setString(JBSbatKVIFM008.KEY_KMK_NM,chkTgt.getKeyKmkName());
		
		// 対象コードの設定
		outMap.setString(JBSbatKVIFM008.PPLAN_CD,chkTgt.getTgtCd());
		outMap.setString(JBSbatKVIFM008.PPLAN_NM,chkTgt.getTgtCdName());
		
		// チェック項目の設定
		outMap.setString(JBSbatKVIFM008.KNS_KMK_NM,chkTgt.getKmkName());
		outMap.setString(JBSbatKVIFM008.KNS_KMK_VAL,chkTgt.getTgtDate());
		
		// 基準項目の設定
		outMap.setString(JBSbatKVIFM008.HKK_KMK_NM,chkTgt.getKjnName());
		outMap.setString(JBSbatKVIFM008.HKK_KMK_VAL,chkTgt.getKjnDate());

		//照査年月日
		outMap.setString(JBSbatKVIFM008.SHOSA_YMD, chkTgt.getShosaYmd());

		// チェックパターン、調査対象区分、調査対象区分名称の設定
		outMap.setString(JBSbatKVIFM008.CHK_PATTERN,idoKnsJkn.getPtn());
		if(null != chkTgt.getPttrn())
		{
			outMap.setString(JBSbatKVIFM008.CHK_PATTERN,chkTgt.getPttrn()); //null以外なら？要確認
		}
		outMap.setString(JBSbatKVIFM008.KNSHO_TG_KBN,chkTgt.getTgtKbn());
		String kbnNm = null;
		// 区分に応じた名称を設定
		if(KNSHO_TG_KBN_NG.equals(chkTgt.getTgtKbn())){
			kbnNm = KNSHO_TG_KBN_NM_NG;
		} else if(KNSHO_TG_KBN_OK.equals(chkTgt.getTgtKbn())){
			kbnNm = KNSHO_TG_KBN_NM_OK;
		} else if(KNSHO_TG_KBN_NO.equals(chkTgt.getTgtKbn())){
			kbnNm = KNSHO_TG_KBN_NM_NO;
		} else if(KNSHO_TG_KBN_DB.equals(chkTgt.getTgtKbn())){
			kbnNm = KNSHO_TG_KBN_NM_DB;
		}

		//対象スキーマが機器提供サービスのみそれぞれ保持
		if(!KNSHO_TG_KBN_OK.equals(chkTgt.getTgtKbn()))
		{
			if("機器提供サービス契約".equals(chkTgt.getScmName()) ||
					"オプションサービス契約".equals(chkTgt.getScmName()))
			{
				if(null != chkTgt.getFuseigDbNm())
				{
					fuseigoDbName = " " + cnvNullToEmp(chkTgt.getFuseigDbNm());
				}
			}
		}else
		{
			fuseigoDbName = "";
		}
		//NGの場合
		if(KNSHO_TG_KBN_NG.equals(chkTgt.getTgtKbn()))
		{
			//親サービス契約がステータス：提供中以外
			if(!"100".equals(svcStat))
			{
				String msg = cnvNullToEmp(chkTgt.getFuseigDbNm()) + " 親stat:" + svcStat;
				fuseigoDbName = fuseigoDbName + msg;
			}
		}

		//不整合DB名も出力
		outMap.setString(JBSbatKVIFM008.KNSHO_TG_KBN_NM, kbnNm + fuseigoDbName);
		
		outMap.setOutFlg(true);
	}

	/**
	 * サービス契約回線対象内訳番号を取得
	 * @return
	 * @throws Exception
	 */
	private String getksnTgNo() throws Exception
	{
		executeKK_T_KAISEN_TG_SVKEI_KV_SELECT_002(new Object[]{svcKeiNo, this.opeDate});
		JBSbatCommonDBInterface data = db_KK_T_KAISEN_TG_SVKEI.selectNext();

		if(null == data)
		{
			commonItem.getLogPrint().printDebugLog(svcKeiNo + " " + idoDiv +
					" サービス契約内訳番号なし マスタ定義スキーマ:機器提供サービス");
			return null;
		}
		//複数件はない？
		String ksnTgNo = data.getString(JBSbatKK_T_KAISEN_TG_SVKEI.SVC_KEI_KAISEN_UCWK_NO);
//		commonItem.getLogPrint().printDebugLog(svcKeiNo +" 回線対象番号:" + ksnTgNo);
		return ksnTgNo;
	}
	//データ取得のみ
	private ArrayList<JBSbatCommonDBInterface> getRslt(JBSbatSQLAccess sqlAccess) throws Exception
	{
		ArrayList<JBSbatCommonDBInterface> rsltLst = 
			new ArrayList<JBSbatCommonDBInterface>();
		// スキーマの検索結果を取得
		JBSbatCommonDBInterface result = sqlAccess.selectNext();
		if(null == result)
		{
			return rsltLst;
		}

		while(null != result)
		{
			rsltLst.add(result);
			result = sqlAccess.selectNext();
		}
		return rsltLst;
	}
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * 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 void executeKK_T_ADCHG_DTL_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_ADCHG_DTL.selectBySqlDefine(paramList, KK_T_ADCHG_DTL_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 void executeKK_T_ADCHG_DTL_KV_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_ADCHG_DTL.selectBySqlDefine(paramList, KK_T_ADCHG_DTL_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 void executeKV_M_KEI_IDO_KNSJKN_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());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_KV_M_KEI_IDO_KNSJKN.selectBySqlDefine(paramList, KV_M_KEI_IDO_KNSJKN_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 void executeKV_M_KEI_IDO_KNSJKN_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());

		// DBアクセスを実行します
		db_KV_M_KEI_IDO_KNSJKN.selectBySqlDefine(paramList, KV_M_KEI_IDO_KNSJKN_KV_SELECT_002);
	}

	/**
	 * SQLKEY(KV_SELECT_008)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	異動区分
	 *		 	予約適用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KV_SELECT_008(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_008);
	}

	/**
	 * SQLKEY(KV_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 void executeKK_T_SVC_KEI_KV_SELECT_009(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_009);
	}

	/**
	 * SQLKEY(KV_SELECT_010)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	サービス課金終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KV_SELECT_010(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_010);
	}

	/**
	 * SQLKEY(KV_SELECT_011)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	プラン終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KV_SELECT_011(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_011);
	}

	/**
	 * SQLKEY(KV_SELECT_012)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	サービス終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KV_SELECT_012(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_012);
	}

	/**
	 * SQLKEY(KV_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約内訳番号
	 *		 	異動区分
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_UCWK_KV_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_KV_SELECT_004);
	}

	//サービス契約内訳番号を元に最新取得
	private void executeKK_T_SVC_KEI_UCWK_KV_SELECT_013(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_KV_SELECT_013);
	}
	
	/**
	 * SQLKEY(KV_SELECT_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約内訳番号
	 *		 	プラン課金終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_UCWK_KV_SELECT_005(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_KV_SELECT_005);
	}

	/**
	 * SQLKEY(KV_SELECT_006)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約内訳番号
	 *		 	サービス課金終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_UCWK_KV_SELECT_006(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_KV_SELECT_006);
	}

	/**
	 * SQLKEY(KV_SELECT_007)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約内訳番号
	 *		 	プラン終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_UCWK_KV_SELECT_007(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_KV_SELECT_007);
	}

	/**
	 * SQLKEY(KV_SELECT_008)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約内訳番号
	 *		 	サービス終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_UCWK_KV_SELECT_008(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_KV_SELECT_008);
	}

	/**
	 * SQLKEY(KV_SELECT_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	異動区分
	 *		 	適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_OP_SVC_KEI_KV_SELECT_005(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KV_SELECT_005);
	}
	/**
	 * SQLKEY(KV_SELECT_015)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	異動区分
	 *		 	適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_OP_SVC_KEI_KV_SELECT_015(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KV_SELECT_015);
	}
	//進捗にオプションサービス契約番号がある場合
	private void executeKK_T_OP_SVC_KEI_KV_SELECT_016(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());
		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KV_SELECT_016);
	}
	/**
	 * SQLKEY(KV_SELECT_012)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	異動区分
	 *		 	適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_OP_SVC_KEI_KV_SELECT_014(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());

		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI_2.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KV_SELECT_014);
	}
	
	/**
	 * SQLKEY(KV_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	オプションサービス契約番号
	 *		 	異動区分
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SBOP_SVC_KEI_KV_SELECT_004(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());

		// DBアクセスを実行します
		db_KK_T_SBOP_SVC_KEI.selectBySqlDefine(paramList, KK_T_SBOP_SVC_KEI_KV_SELECT_004);
	}
	//オプションＣＤからサブオプション最新取得
	private void executeKK_T_SBOP_SVC_KEI_KV_SELECT_006(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_SBOP_SVC_KEI.selectBySqlDefine(paramList, KK_T_SBOP_SVC_KEI_KV_SELECT_006);
	}
	/**
	 * SQLKEY(KV_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	機器提供サービス契約番号
	 *		 	異動区分
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KKTK_SVC_KEI_KV_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KV_SELECT_004);
	}
	/**
	 * SQLKEY(KV_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	機器提供サービス契約番号
	 *		 	異動区分
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KKTK_SVC_KEI_KV_SELECT_008(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KV_SELECT_008);
	}
	
	//サービス契約内訳から機器提供取得
	private void executeKK_T_KKTK_SVC_KEI_KV_SELECT_009(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KV_SELECT_009);
	}
	/**
	 * 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 void executeKK_T_SEIOPSVC_KEI_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());

		// DBアクセスを実行します
		db_KK_T_SEIOPSVC_KEI.selectBySqlDefine(paramList, KK_T_SEIOPSVC_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 void executeKK_T_USE_STP_PRD_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_USE_STP_PRD.selectBySqlDefine(paramList, KK_T_USE_STP_PRD_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 void executeKK_T_KAP_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());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_KK_T_KAP_KEI.selectBySqlDefine(paramList, KK_T_KAP_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 void executeKK_T_KAP_KEI_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());

		// DBアクセスを実行します
		db_KK_T_KAP_KEI_2.selectBySqlDefine(paramList, KK_T_KAP_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 void executeZM_M_CD_NM_KANRI_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());
		paramList.setValue(param[3].toString());
		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_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 void executeKK_M_PPLAN_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_M_PPLAN.selectBySqlDefine(paramList, KK_M_PPLAN_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 void executeKK_T_KAISEN_TG_SVKEI_KV_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		// DBアクセスを実行します
		db_KK_T_KAISEN_TG_SVKEI.selectBySqlDefine(paramList, KK_T_KAISEN_TG_SVKEI_KV_SELECT_002);
	}
	//配送対象物品データ取得
	private void executeDK_T_HAISO_TG_BPIN_KV_SELECT_001(Object[] param) throws Exception
	{
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		db_DK_T_HAISO_TG_BPIN.selectBySqlDefine(paramList, DK_T_HAISO_TG_BPIN_KV_SELECT_001);
	}
	//課金先の検索
	private void executeKK_T_KAKINS_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		// DBアクセスを実行します
		db_KK_T_KAKINS.selectBySqlDefine(paramList, KK_T_KAKINS_KV_SELECT_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	/**
	 * null → ""に変換するメソッド
	 * @param val 文字列
	 * @return 変換後文字列
	 */
	private String cnvNullToEmp(String val)
	{
		String rslt = val;
		if(null == val)
		{
			rslt = "";
		}
		return rslt;
	}
	/**
	 * 指定クラスのException情報のみログ出力
	 * @param e
	 * @return
	 */
	private String getStaCkInfo(Exception e)
	{
		StringBuilder sb = new StringBuilder();
		StackTraceElement[] st = e.getStackTrace();

		for(StackTraceElement stInfo :st)
		{
			if(stInfo.getClassName().contains(this.getClassName()))
			{
				sb.append("/");
				sb.append(stInfo.getMethodName());
				sb.append(" Line:");
				sb.append(stInfo.getLineNumber());
			}
		}
		return String.valueOf(sb);
	}
}
