/*********************************************************************
*   All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKejbShosaChkBase
*   ソースファイル名：JKKejbShosaChkBase.java
*   作成者          ：富士通
*   日付            ：2011年07月15日
*＜機能概要＞
*   照査チェック部品スーパークラス
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*   v1.00.00    2011/07/15  富士通      新規作成
*   v5.00.00    2011/01/15  FJ)坂本     ANK-1272-00-00
*   v5.00.01    2011/01/15  FJ)藤本     ST1-2012-0000846
*   v5.00.02    2011/01/25  FJ)藤本     ANK-1272-00-00
*   v5.00.03    2011/02/05  FJ)藤本     IT1-2013-0000197 
*	v5.00.04	2013/02/05	FJ)坂本		ST4-2012-0000263
*	v5.00.05	2013/02/07	FJ)寺園		ANK-1421-00-00
*	v5.00.06	2013/02/08	FJ)藤本		IT1-2013-0000148
*   v5.00.07    2013/02/21  FJ)寺本     OT-2013-0000090
*   v5.00.08    2013/03/04  FJ)福井     ST3-2013-0000507
*   v5.00.09    2013/03/15  FJ)沖田     ST3-2013-0000684
*   v5.00.10    2013/04/05  FJ)福井     IT1-2013-0000772
*   v5.00.11    2013/04/09  FJ)沖田     IT1-2013-0000756
*   v5.00.12    2013/04/24  FJ)竹内     IT1-2013-0001033
*   v5.00.13    2013/04/30  FJ)寺本     OT-2013-0000675
*   v5.00.14    2013/04/30  FJ)福井     -
*   v5.00.15    2013/09/05  FJ)沖田     OM-2013-0001520
*   v5.00.16    2013/09/09  FJ)寺本     OM-2013-0001846
*   v7.00.00    2013/11/29  FJ)小島     ANK-1578-00-00
*   v7.00.01    2013/11/29  FJ)小島     IT2-2013-0000874
*   v7.00.02    2013/01/24  FJ)大山     ANK-1811-00-00
*   v8.00.00    2014/06/04  FJ)小島     ST4-2014-0000025
*  v10.00.00    2014/09/24  FJ)伊藤     IT1-2014-0000310
*  v11.00.00    2014/12/29  FJ)谷口     OM-2014-0003911
*  v12.00.00    2015/01/23  FJ)三村     OM-2015-0000108
*  v33.00.00    2017/08/01  FJ)平野     ANK-3217-00-00
*  v31.00.00    2017/11/16  FJ) クウン 【ANK-3136-00-00】OPMSハードウエア保守切れ対応(STEP2-2)
*  v31.00.00    2017/12/05  FJ)孫       ANK-3136-00-00
*  v36.00.00    2018/01/23  FJ)クウン  【ANK-3296-00-00】標準工事費分割請求
*  v31.00.01    2018/06/21  FJ)麻生    【IT1-2018-0000098】正常な設備流用時にチェックエラーが発生する
*  v31.00.02    2018/07/19  FJ)中原    【IT2-2018-0000069】設備流用時の設備流用元チェックエラー
*  v31.00.03    2018/08/01  FJ) 三原   【IT1-2018-0000114】新規申込・照査前登録で登録した機器が消える
*  v54.00.00    2021/07/13  FJ)寺川    【ANK-4084-00-00】政策対応（競争ルール）テレビ＋電話申込照査時のエラーチェック対応
*  v56.00.00    2021/11/29  FJ)新谷    【ANK-4154-00-00】【eo】不要資産削除対応
*  v59.00.00    2022/08/01  FJ)鈴木    【ANK-4330-00-00】消費者保護ガイドライン改正対応（Step2）
*  v61.00.00	2022/11/10	FJ)北川	   【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応(Step1対応)
*  v61.00.01    2023/08/29  FJ)吉田    【IT2-2023-0000010】サービス契約照査チェックに機器重複チェックを追加
*  v71.00.00	2024/01/23	FJ)藤本涼  【ANK-4468-00-00】eo光ネット「シンプルプラン」追加対応
*  v71.00.11    2024/06/04  FJ)森下    【ANK-4468-11-00】eo光ネット「シンプルプラン」追加対応 仕変11
*  v71.00.28    2024/07/12  FJ)森下    【ANK-4468-28-00】eo光ネット「シンプルプラン」追加対応 仕変28
*  v72.00.00    2024/08/27  FJ) 張 	   【ANK-4494-00-00】【eo定期】双方向番ポ対応_STEP2
*  v72.00.00    2024/07/19  FJ)森下    【ANK-4577-00-00】eo光ネット「シンプルプラン」追加対応(Step2)
*  v72.00.00    2024/10/08  FJ)森下    【IT2-2024-0000012】返品チェックにソートを追加
*  v73.00.00    2025/02/25  FJ)舘山    【#83584】HGW瑕疵内障害
**********************************************************************/

package eo.ejb.common.db;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.model.base.CAANConnectionMgr;
import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANJDBCUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.ejb.common.JSYejbConnection;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;

import eo.common.constant.JKKStrConst;
import eo.common.util.JCCFrameworkException;
import eo.common.util.JKKStringUtil;
import eo.common.util.JPCDateUtil;
import eo.common.util.JPCUtilCommon;
import eo.ejb.cbm.cbmmsg.ZM0321CBMMsg;
import eo.ejb.cbm.entity.CK0011ETMsg;
import eo.ejb.cbm.entity.DK0011ETMsg;
import eo.ejb.cbm.entity.DK0011LE;
import eo.ejb.cbm.entity.DK0021ETMsg;
import eo.ejb.cbm.entity.DK0021LE;
import eo.ejb.cbm.entity.KK0021ETMsg;
import eo.ejb.cbm.entity.KK0081ETMsg;
import eo.ejb.cbm.entity.KK0101ETMsg;
import eo.ejb.cbm.entity.KK0161ETMsg;
import eo.ejb.cbm.entity.KK0191ETMsg;
import eo.ejb.cbm.entity.KK0191LE;
import eo.ejb.cbm.entity.KK0241ETMsg;
import eo.ejb.cbm.entity.KK0241LE;
import eo.ejb.cbm.entity.KK0251ETMsg;
import eo.ejb.cbm.entity.KK0341ETMsg;
import eo.ejb.cbm.entity.KK0341LE;
import eo.ejb.cbm.entity.KK0351ETMsg;
import eo.ejb.cbm.entity.KK0451ETMsg;
import eo.ejb.cbm.entity.KK0481ETMsg;
import eo.ejb.cbm.entity.KK0591ETMsg;
import eo.ejb.cbm.entity.KK0621ETMsg;
import eo.ejb.cbm.entity.KK0621LE;
import eo.ejb.cbm.entity.KK0791ETMsg;
import eo.ejb.cbm.entity.KK0861ETMsg;
import eo.ejb.cbm.entity.KK0861LE;
import eo.ejb.cbm.entity.KK0871ETMsg;
import eo.ejb.cbm.entity.KK0871LE;
import eo.ejb.cbm.entity.KK0881ETMsg;
import eo.ejb.cbm.entity.KK0881LE;
import eo.ejb.cbm.entity.KK0891ETMsg;
import eo.ejb.cbm.entity.KK0891LE;
import eo.ejb.cbm.entity.KK0931ETMsg;
import eo.ejb.cbm.entity.KK1071ETMsg;
import eo.ejb.cbm.entity.KK1681ETMsg;
import eo.ejb.cbm.entity.KK1861ETMsg;
import eo.ejb.cbm.entity.KK2001ETMsg;
import eo.ejb.cbm.entity.KK2331ETMsg;
import eo.ejb.cbm.entity.KK2331LE;
import eo.ejb.cbm.entity.KK2451ETMsg;
import eo.ejb.cbm.entity.KK2451LE;
import eo.ejb.cbm.entity.KK2541ETMsg;
import eo.ejb.cbm.entity.KK2811ETMsg;
import eo.ejb.cbm.entity.KK3131ETMsg;
import eo.ejb.cbm.entity.KU0011ETMsg;
import eo.ejb.cbm.entity.KU0011LE;
import eo.ejb.cbm.entity.KU0081ETMsg;
import eo.ejb.cbm.entity.KU0081LE;
import eo.ejb.cbm.entity.KU0091ETMsg;
import eo.ejb.cbm.entity.KU0091LE;
import eo.ejb.cbm.entity.KU0281ETMsg;
import eo.ejb.cbm.entity.TU0021ETMsg;
import eo.ejb.cbm.entity.TU0021LE;
import eo.ejb.cbm.entity.ZM0321ETMsg;
import eo.ejb.common.JCCAuthorityCtrlCache;
import eo.ejb.common.JKKModelCommon;
import eo.ejb.common.JKKModelConst;
import eo.ejb.common.entity.JKKejbKK0191KRCK;

/**
 * <p>
 * 照査チェック部品のスーパークラスです。
 * </p>
 * @author 富士通
 */
public class JKKejbShosaChkBase
{
	/** 申込明細カレント */
	private List<Map<String, String>> mskmDtlList = null;

	/** 機器提供情報リスト */
	private List<Map<String, String>> kktkInfoList = null;

	/** オプション情報リスト */
	private List<Map<String, String>> opInfoList = null;

	/** 部屋番号情報リスト */
	private List<Map<String, String>> adrrmInfoList = null;

	/** 督促情報リスト */
	private List<Map<String, String>> tokusokuInfoList = null;

	/** 申込書番号重複情報リスト */
	private List<Map<String, String>> mskmSyoNumberList = null;

	/** 未照査サービス契約情報リスト */
	private List<Map<String, String>> svcMiSyosaList = null;

	/** 照査不可サービス契約情報リスト */
	private List<Map<String, String>> notSvcKeiSyosaList = null;
	
	/** 利用場所情報リスト */
	private List<Map<String, String>> usePlaceInfoList = null;

	/** 回線対象サービス契約情報リスト */
	private List<Map<String, String>> kaiTgSvkeiInfoList = null;

	/** 入居予定年月日情報リスト */
	private List<Map<String, String>> nyukyoRsvYmdInfoList = null;

	/** 利用場所番地情報リスト */
	private List<Map<String, String>> usePlaceBnchiInfoList = null;

	/** 同一請求契約サービス契約リスト */
	private List<Map<String, String>> svcKeiSameSeqList = null;

	/** 申込番号 */
	private static final String MSKM_NO = "MSKM_NO";

	/** 申込書番号 */
	private static final String MSKMSHO_NO = "MSKMSHO_NO";

	/** 申込明細ステータス */
	private static final String MSKM_DTL_STAT = "MSKM_DTL_STAT";

	/** SYSID */
	private static final String SYSID = "SYSID";

	/** 申込年月日 */
	private static final String MSKM_YMD = "MSKM_YMD";

	/** サービスコード */
	private static final String SVC_CD = "SVC_CD";

	/** 申込明細のオプション引継有無 */
	private static final String OP_SVC_HKTGI_UM = "OP_SVC_HKTGI_UM";

	/** 機器提供サービス契約番号 */
	private static final String KKTK_SVC_KEI_NO = "KKTK_SVC_KEI_NO";

	/** 料金コースコード(機器提供サービス契約) */
	private static final String KK0341_PCRS_CD = "KK0341_PCRS_CD";

	/** 機器提供サービスコード(機器提供サービス契約) */
	private static final String KK0341_KKTK_SVC_CD = "KK0341_KKTK_SVC_CD";

	/** 料金コースコード(料金コース_機器提供サービス) */
	private static final String KK0801_PCRS_CD = "KK0801_PCRS_CD";

	/** 機器提供サービスコード(料金コース_機器提供サービス) */
	private static final String KK0801_KKTK_SVC_CD = "KK0801_KKTK_SVC_CD";

	/** 料金コース_機器提供サービス適用開始年月日 */
	private static final String PCRS_KKTK_SVC_TSTAYMD = "PCRS_KKTK_SVC_TSTAYMD";

	/** 料金コース_機器提供サービス適用終了年月日 */
	private static final String PCRS_KKTK_SVC_TENDYMD = "PCRS_KKTK_SVC_TENDYMD";

	/** 最小機器提供サービス数 */
	private static final String MIN_KKTK_SVC_CNT = "MIN_KKTK_SVC_CNT";

	/** 最大機器提供サービス数 */
	private static final String MAX_KKTK_SVC_CNT = "MAX_KKTK_SVC_CNT";

	/** オプションサービス契約番号 */
	private static final String OP_SVC_KEI_NO = "OP_SVC_KEI_NO";

	/** オプションサービス契約.料金コースコード */
	private static final String KK0351_PCRS_CD = "KK0351_PCRS_CD";

	/** オプションサービス契約.オプションサービスコード */
	private static final String KK0351_OP_SVC_CD = "KK0351_OP_SVC_CD";

	/** 料金コース_オプションサービス.料金コースコード */
	private static final String KK0811_PCRS_CD = "KK0811_PCRS_CD";

	/** 料金コース_オプションサービス.オプションサービスコード */
	private static final String KK0811_OP_SVC_CD = "KK0811_OP_SVC_CD";

	/** 料金コース_オプションサービス適用開始年月日 */
	private static final String PCRS_OP_SVC_TSTAYMD = "PCRS_OP_SVC_TSTAYMD";

	/** 料金コース_オプションサービス適用終了年月日 */
	private static final String PCRS_OP_SVC_TENDYMD = "PCRS_OP_SVC_TENDYMD";

	/** オプションサービス契約引継発生年月日 */
	private static final String OP_SVC_KEI_HKHASYMD = "OP_SVC_KEI_HKHASYMD";

	/** 初期オプションサービス数 */
	private static final String SHK_OP_SVC_CNT = "SHK_OP_SVC_CNT";

	/** 最大オプションサービス数 */
	private static final String MAX_OP_SVC_CNT = "MAX_OP_SVC_CNT";

	/** 督促ステータス */
	private static final String TOKUSOKU_STAT = "TOKUSOKU_STAT";

	/** 無効フラグ */
	private static final String MK_FLG = "MK_FLG";

	/** 審査番号 */
	private static final String JUDGE_NO = "JUDGE_NO";

	/** 申込明細.申込明細番号 */
	private static final String MSKM_DTL_NO = "MSKM_DTL_NO";

	/** サービス契約.自動照査処理状態コード */
	private static final String AUTO_SHOSA_TRAN_STAT_CD = "AUTO_SHOSA_TRAN_STAT_CD";

	/** 審査.審査判定結果コード */
	private static final String JUDGE_JUDGE_RSLT_CD = "JUDGE_JUDGE_RSLT_CD";

	/** サービス契約回線内訳番号 */
	private static final String SVC_KEI_KAISEN_UCWK_NO = "SVC_KEI_KAISEN_UCWK_NO";

	/** サービス契約回線内訳番号2(SQL取得項目用) */
	private static final String SVC_KEI_KAISEN_UCWK_NO_02 = "SVC_KEI_KAISEN_UCWK_NO_02";

	/** 起動元コード（オンライン）**/
	protected static final String KIDOMOTO_CODE_ONLINE = "01";

	/** 起動元コード（バッチ）**/
	protected static final String KIDOMOTO_CODE_BATCH = "02";

	/** セット申込単独チェックフラグ(セット申込のみチェック)**/
	protected static final String SET_MSKM_SNGL_CHK_FLG_SET = "1";

	/** 無効フラグ(有効) **/
	protected static final String MK_FLG_0 = "0";

	/** 自動照査チェック対象コード(対象) **/
	protected static final String AUTO_SHOSA_CHK_TG_CD_1 = "1";

	/** サービス提供エリア警告広域指定範囲コード(都道府県以下全域) */
	protected static final String SVTA_KKKU_WDASTISCP_CD_01 = "01";

	/** サービス提供エリア警告広域指定範囲コード(市区町村以下全域) */
	protected static final String SVTA_KKKU_WDASTISCP_CD_02 = "02";

	/** サービス提供エリア警告広域指定範囲コード(大字通称以下全域) */
	protected static final String SVTA_KKKU_WDASTISCP_CD_03 = "03";

	/** サービス提供エリア警告広域指定範囲コード(字丁目以下全域) */
	protected static final String SVTA_KKKU_WDASTISCP_CD_04 = "04";

	/** チェック種別コード(メゾン物件警告) */
	protected static final String CHK_SBT_CD_01 = "01";

	/** チェック種別コード(ホームタイプ未展開エリア警告) */
	protected static final String CHK_SBT_CD_04 = "04";

	/** チェック種別コード(マンションタイプ物件警告) */
	protected static final String CHK_SBT_CD_05 = "05";

	/** チェック種別コード(再送信エリア警告) */
	protected static final String CHK_SBT_CD_06 = "06";

	/** チェック種別コード(面開発案件エリア警告) */
	protected static final String CHK_SBT_CD_08 = "08";

	/** サービスコード(インターネットサービス) */
	protected static final String SVC_CD_01 = "01";

	/** サービスコード(光電話) */
	protected static final String SVC_CD_02 = "02";

	/** サービスコード(テレビサービス) */
	protected static final String SVC_CD_03 = "03";

	/** 料金グループコード(eo光ネットホームタイプ) */
	protected static final String PRC_GRP_CD_02 = "02";

	/** 料金グループコード(ｅｏ光ネットメゾンタイプ) */
	protected static final String PRC_GRP_CD_03 = "03";

	/** 料金グループコード(ｅｏ光ネットマンションタイプ) */
	protected static final String PRC_GRP_CD_04 = "04";

	/** 料金グループコード(ｅｏモバイル（ＥＭ）) */
	protected static final String PRC_GRP_CD_08 = "08";

	/** 料金グループコード(ｅｏ光電話) */
	protected static final String PRC_GRP_CD_10 = "10";

	/** 料金グループコード(ｅｏ光テレビ（Ｋ−ＣＡＴ）) */
	protected static final String PRC_GRP_CD_11 = "11";

	/** 料金グループコード(ｅｏ光テレビ（ＫＣＮ）) */
	protected static final String PRC_GRP_CD_12 = "12";

	/** 料金グループコード(ｅｏ光テレビ（再送信）) */
	protected static final String PRC_GRP_CD_13 = "13";

	/** 料金コースコード(３Ｇ　７．２Ｍ　光ハイブリッドタイプ) */
	protected static final String PRC_PCRS_CD_3G_HYBRID = "A59";

	/** 料金コースコード(３Ｇ　４２Ｍ　光ハイブリッドタイプ) */
	protected static final String PRC_PCRS_CD_3G_42_HYBRID = "A60";

	// ANK-4468-00-00 ADD START
	/** 料金コースコード(eo光シンプルプラン　１０ギガコース) */
	protected static final String PRC_PCRS_CD_SIMPLEPLAN_10G = "A97";

	/** 料金コースコード(eo光シンプルプラン　１０ギガコース　Netflixパック) */
	protected static final String PRC_PCRS_CD_SIMPLEPLAN_10G_NETFLIX = "A99";
	// ANK-4468-00-00 ADD END

	/** 照査対象コード(申込年月日期間超過チェック) **/
	protected static final String SHOSACHK_TRG_001 = "001";

	/**照査対象コード(サービス開始希望年月日設定チェック)**/
	protected static final String SHOSACHK_TRG_002 = "002";

	/**照査対象コード(サービス開始希望年月日未来日チェック)**/
	protected static final String SHOSACHK_TRG_003 = "003";

	/**照査対象コード(面開発案件チェック)**/
	protected static final String SHOSACHK_TRG_004 = "004";

	/**照査対象コード(提供必須機器チェック)**/
	protected static final String SHOSACHK_TRG_005 = "005";

	/**照査対象コード(提供外機器存在チェック)**/
	protected static final String SHOSACHK_TRG_006 = "006";

	/**照査対象コード(機器提供サービス契約数下限チェック)**/
	protected static final String SHOSACHK_TRG_007 = "007";

	/**照査対象コード(機器提供サービス契約数上限チェック)**/
	protected static final String SHOSACHK_TRG_008 = "008";

	/**照査対象コード(提供必須オプションチェック)**/
	protected static final String SHOSACHK_TRG_009 = "009";

	/**照査対象コード(提供外オプション存在チェック)**/
	protected static final String SHOSACHK_TRG_010 = "010";

	/**照査対象コード(オプションサービス契約数下限チェック)**/
	protected static final String SHOSACHK_TRG_011 = "011";

	/**照査対象コード(オプションサービス契約数上限チェック)**/
	protected static final String SHOSACHK_TRG_012 = "012";

	/**照査対象コード(自動登録割引存在チェック)**/
	protected static final String SHOSACHK_TRG_013 = "013";

	/**照査対象コード(適用外割引存在チェック)**/
	protected static final String SHOSACHK_TRG_014 = "014";

	/**照査対象コード(自動登録データ抽出項目存在チェック)**/
	protected static final String SHOSACHK_TRG_015 = "015";

	/**照査対象コード(適用外データ抽出項目存在チェック)**/
	protected static final String SHOSACHK_TRG_016 = "016";

	/**照査対象コード(督促状態チェック)**/
	protected static final String SHOSACHK_TRG_017 = "017";

	/**照査対象コード(お客様退会チェック)**/
	protected static final String SHOSACHK_TRG_018 = "018";

	/**照査対象コード(オプション引継チェック)**/
	protected static final String SHOSACHK_TRG_019 = "019";

	/**照査対象コード(オプション引継希望チェック)**/
	protected static final String SHOSACHK_TRG_020 = "020";

	/**照査対象コード(部屋番号重複チェック)**/
	protected static final String SHOSACHK_TRG_021 = "021";

	/**照査対象コード(同番移転存在チェック)**/
	protected static final String SHOSACHK_TRG_022 = "022";

	/**照査対象コード(同番移転状態チェック)**/
	protected static final String SHOSACHK_TRG_023 = "023";

	/**照査対象コード(入居予定年月日未来日チェック)**/
	protected static final String SHOSACHK_TRG_024 = "024";

	/**照査対象コード(利用場所番地未確定チェック)**/
	protected static final String SHOSACHK_TRG_025 = "025";

	/**照査対象コード(利用場所警告エリアチェック)**/
	protected static final String SHOSACHK_TRG_026 = "026";

	/**照査対象コード(同一利用場所使用サービス整合性チェック)**/
	protected static final String SHOSACHK_TRG_027 = "027";
	
	/**照査対象コード(申込書番号重複チェック)**/
	protected static final String SHOSACHK_TRG_028 = "028";

	/**照査対象コード(未照査サービス契約存在チェック)**/
	protected static final String SHOSACHK_TRG_029 = "029";

	/**照査対象コード(ファミリーパック契約数チェック)**/
	protected static final String SHOSACHK_TRG_030 = "030";

	/**照査対象コード(マンションサービス状態チェック)**/
	protected static final String SHOSACHK_TRG_031 = "031";

	/**照査対象コード(テレビコース整合性チェック)**/
	protected static final String SHOSACHK_TRG_032 = "032";

	/**照査対象コード(照査取消日チェック)**/
	protected static final String SHOSACHK_TRG_033 = "033";

	/**照査対象コード(工事状態チェック)**/
	protected static final String SHOSACHK_TRG_034 = "034";

	/**照査対象コード(機器配送状態チェック)**/
	protected static final String SHOSACHK_TRG_035 = "035";

	/**照査対象コード(照査不可サービス契約存在チェック)**/
	protected static final String SHOSACHK_TRG_036 = "036";

	/**照査対象コード(光ハイブリット回線契約数チェック)**/
	protected static final String SHOSACHK_TRG_038 = "038";

	/**照査対象コード(サービス契約総戸数チェック)**/
	protected static final String SHOSACHK_TRG_039 = "039";

	/**審査結果補記チェック（照査OK）**/
	protected static final String SHOSACHK_TRG_040 = "040";

	/**審査結果補記チェック（照査NG）**/
	protected static final String SHOSACHK_TRG_041 = "041";

	/**エリアチェック審査結果チェック**/
	protected static final String SHOSACHK_TRG_042 = "042";

	/**モバイル機器整合性チェック**/
	protected static final String SHOSACHK_TRG_043 = "043";

	/**申込書明細番号不整合チェック**/
	protected static final String SHOSACHK_TRG_044 = "044";

	/**フェムトセルオプション存在チェック**/
	protected static final String SHOSACHK_TRG_045 = "045";

	/**コース変更チェック**/
	protected static final String SHOSACHK_TRG_046 = "046";

	/**ファミリーパック割引数チェック**/
	protected static final String SHOSACHK_TRG_047 = "047";

	/**同番移転保留チェック**/
	protected static final String SHOSACHK_TRG_048 = "048";

	/**同番移転不可チェック**/
	protected static final String SHOSACHK_TRG_049 = "049";

	/**同番移転結果(可否)チェック**/
	protected static final String SHOSACHK_TRG_050 = "050";

	/**同番移転状態不整合チェック**/
	protected static final String SHOSACHK_TRG_051 = "051";

	/**タブレット端末台数チェック**/
	protected static final String SHOSACHK_TRG_053 = "053";

	/**宅内プラットホーム整合性チェック**/
	protected static final String SHOSACHK_TRG_054 = "054";

	/**番ポ電話番号法人契約使用中チェック**/
	protected static final String SHOSACHK_TRG_055 = "055";

	/**マンション照査状態チェック**/
	protected static final String SHOSACHK_TRG_056 = "056";
	
	/**サービス追加時の配送作成可否チェック**/
	protected static final String SHOSACHK_TRG_057 = "057";

	/**マンション(光配線)従量制受付可否チェック**/
	protected static final String SHOSACHK_TRG_058 = "058";

	/**同番移転結果(未設定)チェック**/
	protected static final String SHOSACHK_TRG_059 = "059";

	/**仮登録スマートバリュー存在チェック**/
	protected static final String SHOSACHK_TRG_060 = "060";

	/**照査対象コード(機器提供サービス契約数下限チェック（ＰＬＣ）)**/
	protected static final String SHOSACHK_TRG_061 = "061";
	
	/**照査対象コード(審査OKチェック)**/
	protected static final String SHOSACHK_TRG_063 = "063";
	
	/**照査対象コード(リンクSTB配送区分チェック)*/
	protected static final String SHOSACHK_TRG_064 = "064";

	/**照査対象コード(未返却ＶＡ解約ＳＯＤ発行チェック)*/
	protected static final String SHOSACHK_TRG_065 = "065";

	//---------v31.00.00 ANK-3136-00-00_ADD START---------//
	/**照査対象コード（同一回線内工事案件存在チェック)**/
	protected static final String SHOSACHK_TRG_068 = "068";
	
	/**照査対象コード（ONU-VONU機器存在チェック)**/
	protected static final String SHOSACHK_TRG_069 = "069";
	
	/**照査対象コード（工事案件最新基本工事チェック)**/
	protected static final String SHOSACHK_TRG_070 = "070";
	
	/**照査対象コード（流用元機器返品チェック)**/
	protected static final String SHOSACHK_TRG_071 = "071";
	
	/**照査対象コード（流用元機器返品チェック)**/
	protected static final String SHOSACHK_TRG_072 = "072";
	
	/**照査対象コード（PON種別チェック)**/
	protected static final String SHOSACHK_TRG_073 = "073";
	
	/**照査対象コード（マンション物件チェック)**/
	protected static final String SHOSACHK_TRG_074 = "074";
	
	//---------v36.00.00 ANK-3296-00-00_ADD START---------//
	/**照査対象コード(標準工事費制度存在チェック)*/
	protected static final String SHOSACHK_TRG_075 = "075";
	//---------v36.00.00 ANK-3296-00-00_ADD END-----------//
	
	// ANK-3136-00-00 2017/12/05 ADD START
	/**照査対象コード(設備流用存在チェック)*/
	protected static final String SHOSACHK_TRG_076 = "076";
	// ANK-3136-00-00 2017/12/05 ADD END
	
// ANK-4330-00-00 DEL START
// ANK-4084-00-00 ADD START
//	/**照査対象コード(工事費割賦分割CP適用チェック)*/
//	protected static final String SHOSACHK_TRG_077 = "077";
// ANK-4084-00-00 ADD END
// ANK-4330-00-00 DEL END
	
	//	IT2-2023-0000010 2023/08/28 ADD START
	/**照査対象コード(ONU重複チェック)*/
	protected static final String SHOSACHK_TRG_081 = "081";

	/**照査対象コード(多機能ルーター重複チェック)*/
	protected static final String SHOSACHK_TRG_082 = "082";
	// IT2-2023-0000010 2023/08/28 ADD END

	// ANK-4468-28-00 ADD START
	/**照査対象コード(乗換元サービス契約番号重複チェック)*/
	protected static final String SHOSACHK_TRG_085 = "085";
	// ANK-4468-28-00 ADD END

	// ANK-4468-00-00 ADD START
	/**照査対象コード(契約者年齢整合性チェック)*/
	protected static final String SHOSACHK_TRG_084 = "084";
	// ANK-4468-00-00 ADD END
	
	/**料金コースPON条件コード_E-PON/GE-PON併用**/
	protected static final String PON_JOKEN_CD_1 = "1";
	
	/**料金コースPON条件コード_GE-PONのみ**/
	protected static final String PON_JOKEN_CD_2 = "2";
	
	/**料金コースPON条件コード_E-PONのみ**/
	protected static final String PON_JOKEN_CD_3 = "3";
	
	/**料金コースPON条件コード_10GE-PONのみ**/
	protected static final String PON_JOKEN_CD_4 = "4";
	
	/**PON種別コード_10GE-PONのみ**/
	protected static final String PON_SBT_CD_3 = "3";
	/** 業務パラメータ（設備流用ダミー機器（ＯＮＵ） */
	private static final String WORK_PARAM_TAKNAI_EQUIP_CD_KK_SBRY_DUMMY_ONU = "KK_SBRY_DUMMY_ONU";
	
	/** 業務パラメータ（設備流用ダミー機器（Ｖ−ＯＮＵ） */
	private static final String WORK_PARAM_TAKNAI_EQUIP_CD_KK_SBRY_DUMMY_V_ONU = "KK_SBRY_DUMMY_V-ONU";
	
	/** リターンコード*/
	protected static final String RETURN_CD = "RETURN_CD";
	
	/** 機器提供変更番号 */
	protected static final String KK0341_KIKI_CHG_NO = "KIKI_CHG_NO";
	
	/** 機器提供サービス契約番号 */
	protected static final String KK0341_KKTK_SVC_KEI_NO = "KKTK_SVC_KEI_NO";

	/** チェック結果（2_異常（返品機器））**/
	protected static final String RETURN_NG_2 = "2";

	/** チェック結果（1_異常（予約適用中））**/
	protected static final String RETURN_NG_1 = "1";
	
	/** チェック結果（0_正常）**/
	protected static final String RETURN_NG_0_RSL_SEIJO = "0";
	
	/** 最新基本工事フラグ_1**/
	private static final String RCNT_KIHON_KOJI_FLG_1 = "1";

	/** PON種別コード**/
	private static final String PON_SBT_CD = "PON_SBT_CD";
	
	/** 設備流用有無_有**/
	protected static final String EQUIP_RYUYO_UMU_ARI = "1";
	
	// ANK-4468-11-00 ADD START
	/** 設備流用有無_有_eo光ネット**/
	protected static final String[] EQUIP_RYUYO_UMU_ARI_LIST = {"1", "2", "3"};
	// ANK-4468-11-00 ADD END
	
	
	//---------v31.00.00 ANK-3136-00-00_ADD END-----------//

	// ANK-3136-00-00 2017/12/05 ADD START
	/**工事案件番号*/
	private static final String JOJIAK_NO = "JOJIAK_NO";
	// ANK-3136-00-00 2017/12/05 ADD END

	/** 住居形態種別（ホーム）**/
	protected static final String JYUKOKEITAI_HOME = "01";

	/** 住居形態種別（メゾン）**/
	protected static final String JYUKOKEITAI_MEZON = "02";

	/** 住居形態種別（マンション）**/
	protected static final String JYUKOKEITAI_MANSHON = "03";

	/** チェック対象種別（ADSL） */
	protected static final String ADSL_FLAG = "1";

	/** チェック対象種別（ADSL以外） */
	protected static final String ADSL_EXCEPT_FLAG = "2";

	// 20140924 IT1-2014-0000310 Add Start
	/** 状態遷移定義（登録済） */
	private static final String STATE_TRKFIN = "120";
	// 20140924 IT1-2014-0000310 Add End
	
	/** 状態遷移定義（工事完了済） */
	private static final String STATE_KOJIFIN = "200";

	/** 状態遷移定義（中止） */
	private static final String STATE_SUSPEND = "900";

	/** 状態遷移定義（解約）* */
	private static final String STATE_DSL = "910";

	/** 状態遷移定義（キャンセル）* */
	private static final String STATE_CANCEL = "920";

	/** オプションサービス引継有無(有) */
	private static final String OP_SVC_HKTG_ON = "1";

	/** チェック結果（OK）**/
	private static final String RETURN_OK = "0";

	/** チェック結果（NG）**/
	private static final String RETURN_NG = "1";

	/** 処理タイプ（上限チェック）**/
	private static final String UPPL_CHK = "0";

	/** 処理タイプ（下限チェック）**/
	private static final String LOWL_CHK = "1";

	/** マンション物件コード（マンション）**/
	private static final String MANSION_BUKKEN_CD_MANSION = "001";

	/** マンション物件コード（メゾン）**/
	private static final String MANSION_BUKKEN_CD_MEZON = "002";

	/** 自動照査処理状態コード（対象外コード） */
	private static final String AUTO_SHOSA_TRAN_STAT_CD_2 = "2";

	/** 審査判定結果コード（NGコード） */
	private static final String RESULT_CD_NG = "01";

	/** 業務パラメータ（光ハイブリッド最大契約数） */
	private static final String WORK_PARAM_HHB_MAX_CNT = "KK_HHB_MAX_KEI_CNT";

	/** 光ハイブリット回線契約数チェック用.ネット扱い料金グループコード */
	private static final HashMap<String, String> HASH_NET_GRP_CD = new HashMap<String, String>();

	static
	{
		HASH_NET_GRP_CD.put(PRC_GRP_CD_02, PRC_GRP_CD_02);
		HASH_NET_GRP_CD.put(PRC_GRP_CD_03, PRC_GRP_CD_03);
		HASH_NET_GRP_CD.put(PRC_GRP_CD_04, PRC_GRP_CD_04);
	}

	/** サービス別機器型式構成条件種別コード（eoモバイル光ハイブリッド） */
	private static final String SVCB_KKMDST_JKN_SBT_HBR = "010";

	/** 条件設定単位コード（サービス契約料金コース） */
	private static final String JKN_SETTE_TANI_PCRS = "02";

	/** 条件判定用申込種類識別コード（新規） */
	private static final String JKN_JDG_KIND_NEW = "01";

	/** 条件判定用申込種類識別コード（変更） */
	private static final String JKN_JDG_KIND_CNG = "02";

	/** サービス契約ステータス（照査済） */
	private static final String SVC_KEI_STAT_SHOSA_ZUMI = "020";

	// ANK-4468-28-00 ADD START
	/** サービス契約ステータス（サービス提供中） */
	private static final String SVC_KEI_STAT_TEIKYO_CHU = "100";
	// ANK-4468-28-00 ADD END
	
	/** サービス契約ステータス（解約） */
	private static final String SVC_KEI_STAT_DSL = "910";
	
	/** サービス契約ステータス（キャンセル済） */
	private static final String SVC_KEI_STAT_CANCEL = "920";
	
	/** ファミリーパック割引数チェック件数 */
	private static final int FAM_PACK_WR_KENSU = 6;

	/** 同番移転依頼制御コード（保留） */
	private static final String DOBANITEN_REQ_CTRL_HORYU = "0";

	/** 同番移転判定コード（未設定） */
	private static final String DOBANITEN_HANTEI_MISETTEI = "0";

	/** 同番移転判定コード（可） */
	private static final String DOBANITEN_HANTEI_KA = "1";

	/** 同番移転判定コード（否） */
	private static final String DOBANITEN_HANTEI_HI = "2";

	/** 同番移転判定コード（判定中） */
	private static final String DOBANITEN_HANTEI_HANTEITYU = "3";

	/** 同番移転可否（否） */
	private static final String DOBANITEN_KH_HI = "0";

	/** 照査済フラグ（済） */
	private static final String SHOSA_ZUMI_FLG_SUMI = "1";

	/** 料金プランコード（マンションタイプ光配線　１００Ｍライトコース） */
	private static final String PPLAN_CD_MANS_100M_LIGHT = "PA5611";
	
	/** 可否（可） */
	private static final String KH_K = "1";
	
	/** 照査処理条件コード（照査関連日数チェック条件） */
	private static final String SHOSA_TRN_JOKEN_CD_SHOSA_KRNISU = "30001";
	
	/** 照査処理条件詳細番号（0001） */
	private static final String SHOSA_TRN_JOKEN_DTL_NO_0001 = "0001";
	
	/** 照査処理条件詳細番号（0002） */
	private static final String SHOSA_TRN_JOKEN_DTL_NO_0002 = "0002";

	/** 照査処理条件詳細番号（0003） */
	private static final String SHOSA_TRN_JOKEN_DTL_NO_0003 = "0003";
	
	/** 同日指定：含む */
	private static final String INC_DATE = "1";
	
	/** 料金プラン体系識別コード：従量制 */
	private static final String PPLAN_TIKI_SKCD_JYURYO = "1";
	
	/** 照査解約完了コード（照査OK） */
	private static final String SHOSA_DSL_FIN_CD_OK = "1";
	
	/** 照査解約完了コード（照査NG） */
	private static final String SHOSA_DSL_FIN_CD_NG = "2";
	
	/** 機器提供サービスコード処理区分（C015：ＰＬＣ以外） */
	protected static final String KKTK_SVC_CD_KBN_1 = "1";

	/** 機器提供サービスコード処理区分（C015：ＰＬＣ） */
	protected static final String KKTK_SVC_CD_KBN_2 = "2";

	/** 機器提供サービスコード（C014：ルータ） */
	protected static final String KKTK_SVC_CD_KBN_C014 = "C014";

	/** 機器提供サービスコード（C015：ＰＬＣ） */
	protected static final String KKTK_SVC_CD_KBN_C015 = "C015";

	/** 機器提供サービスコード（C023：ＩＰ−ＳＴＢ） */
	protected static final String KKTK_SVC_CD_KBN_C023 = "C023";

	/** 機器提供サービスコード（C024：多機能ルータ） */
	protected static final String KKTK_SVC_CD_KBN_C024 = "C024";
	
//	IT2-2023-0000010 2023/08/29 ADD START
	/** 機器提供サービスコード（C012：ONU） */
	protected static final String KKTK_SVC_CD_KBN_C012 = "C012";
	
	/** 機器提供サービスコード（C025：ＨＧＷ） */
	protected static final String KKTK_SVC_CD_KBN_C025 = "C025";
//	IT2-2023-0000010 2023/08/29 ADD END

	/** 機器オプションサービスコード（G01：ｅｏ光多機能ルーター　ルーター機能） */
	protected static final String KKOP_SVC_CD_G01 = "G01";

	/** 機器オプションサービスコード（G02：ｅｏ光多機能ルーター　電話アダプター機能） */
	protected static final String KKOP_SVC_CD_G02 = "G02";
	
	// ANK-4315-00-00 ADD START
	/** 流用ＮＧ親機種別コード(04) */
	protected static final String NG_OYA_KIKI_SBT_CD = "04";
	// ANK-4315-00-00 ADD END
	
	// OM-2014-0003911 ADD START
	/** 同番移転可否（可） */
	private static final String DOBANITEN_KH_KA = "1";
	// OM-2014-0003911 ADD END

	//---------v36.00.00 ANK-3296-00-00_ADD START---------//
	/** 業務パラメータ管理_標準工事費割賦制度開始年月日 */
	protected static final String WORK_PARAM_KK_HJNKJH_KAPSD_SYMD = "KK_HJNKJH_KAPSD_SYMD";
	//---------v36.00.00 ANK-3296-00-00_ADD END-----------//

	/**
	 * <p>
	 * サービス契約情報を取得する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return サービス契約情報
	 **/
	protected CAANMsg getSvckei(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		// パラメータチェック
		if (svcKeiNo == null || kidoCd == null)
		{
			return null;
		}

		// サービス契約カレントレコード検索
		CAANMsg msg0081 = new CAANMsg(KK0081ETMsg.class.getName());
		msg0081.set(KK0081ETMsg.SVC_KEI_NO, svcKeiNo);
		msg0081.set(KK0081ETMsg.RSV_APLY_YMD, getOpeDate(inMsg, kidoCd));
		CAANMsg crtMsg = new JKKejbKK0081DBABase().findByCurrent(msg0081);

		// 存在しない場合
		if (crtMsg == null)
		{
			return null;
		}

		// 解約済み・キャンセル済みは対象外
		if (STATE_DSL.equals(crtMsg.getString(KK0081ETMsg.SVC_KEI_STAT)) || STATE_CANCEL.equals(crtMsg.getString(KK0081ETMsg.SVC_KEI_STAT)))
		{
			return null;
		}

		return crtMsg;
	}

	// ANK-4468-00-00 ADD START
	/**
	 * <p>
	 * お客様情報を取得する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param sysid SYSID
	 * @param kidoCd 起動元コード
	 * @return サービス契約情報
	 **/
	protected CAANMsg getCust(CAANMsg inMsg, String sysid, String kidoCd)
	{
		// パラメータチェック
		if (sysid == null || kidoCd == null)
		{
			return null;
		}

		// お客様カレントレコード検索
		CAANMsg msg0011 = new CAANMsg(CK0011ETMsg.class.getName());
		msg0011.set(CK0011ETMsg.SYSID, sysid);
		msg0011.set(CK0011ETMsg.RSV_APLY_YMD, getOpeDate(inMsg, kidoCd));
		CAANMsg crtMsg = new JCKejbCK0011DBABase().findByCurrent(msg0011);

		// 存在しない場合
		if (crtMsg == null)
		{
			return null;
		}

		return crtMsg;
	}
	// ANK-4468-00-00 ADD END

	/**
	 * <p>
	 * 運用日付を取得する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param kidoCd 起動元コード
	 * @return 運用日付
	 */
	private String getOpeDate(CAANMsg inMsg, String kidoCd)
	{
		// オンライン運用日
		if (KIDOMOTO_CODE_ONLINE.equals(kidoCd))
		{
			return JKKModelCommon.getOpeDate(inMsg);
		}
		// バッチ運用日
		else if (KIDOMOTO_CODE_BATCH.equals(kidoCd))
		{
			return JKKModelCommon.getBatOpeDate(inMsg);
		}
		else
		{
			return JKKModelCommon.getSysDate();
		}
	}

	/**
	 * <p>
	 * 提供外機器存在チェックを実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkSonzaiTkGaiKiki(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkSonzaiTkGaiKiki SHOSA_TG_CD = " + SHOSACHK_TRG_006);
		
		String opeDate = getOpeDate(inMsg, kidoCd);

		// 機器提供情報リスト取得
		getKktkInfoList(svcKeiNo, opeDate);

		for (Map<String, String> kktkInfo : kktkInfoList)
		{
			// 料金コース_機器提供サービスの情報を取得できなかった場合
			if (null == kktkInfo.get(KK0801_PCRS_CD))
			{
				return RETURN_NG;
			}
			// 適用開始日を迎えていない場合、チェックNGとする
			if (!isChkTStaYmd(kktkInfo.get(PCRS_KKTK_SVC_TSTAYMD), opeDate))
			{
				return RETURN_NG;
			}
			// 適用終了日を迎えている場合、チェックNGとする
			if (!isChkTEndYmd(kktkInfo.get(PCRS_KKTK_SVC_TENDYMD), opeDate))
			{
				return RETURN_NG;
			}
		}

		return RETURN_OK;
	}
	
	// ANK-4315-00-00 ADD START
	/**
	 * <p>
	 * 流用元親機種別コード取得処理
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param svcCd サービスコード
	 * @param kojiAkNo 工事案件番号（設備流用元の工事案件番号）
	 * @param kidoCd 起動元コード
	 * @return 判定結果
	 */
	protected String chkExistRyuyoMotoOyakiki(CAANMsg inMsg, String kojiAkNo, String kidoCd)
	{
		// 返却結果
		String Return_CD = null;
	
		//コネクション
		Connection con = null;
	
		//プリペアステートメント
		PreparedStatement pstmt = null;
	
		//リザルトセット
		ResultSet rsltQuery = null;
	
		//SQL文
		StringBuffer sbsql = new StringBuffer();
		sbsql.append("  SELECT   ");
		sbsql.append("   KU0281.OYA_KIKI_SBT_CD     ");
		sbsql.append("    FROM    ");
		sbsql.append("    KU_T_MKSYICHI_AKI_IF KU0281     ");
		sbsql.append("    INNER JOIN KU_T_SVKEI_KOJIAK KU0081    ");
		sbsql.append("     ON KU0281.SVC_KEI_KAISEN_UCWK_NO = KU0081.SVC_KEI_KAISEN_UCWK_NO    ");
		sbsql.append("    WHERE    ");
		sbsql.append("    KU0081.KOJIAK_NO = ?    ");
		sbsql.append("    AND KU0081.MK_FLG = '0'    ");
		sbsql.append("    AND GENE_ADD_DTM = (    ");
		sbsql.append("    SELECT    ");
		sbsql.append("    MAX(KU0281_GENE.GENE_ADD_DTM)    ");
		sbsql.append("    FROM     ");
		sbsql.append("    KU_T_MKSYICHI_AKI_IF KU0281_GENE      ");
		sbsql.append("    WHERE      ");
		sbsql.append("    KU0281_GENE.SVC_KEI_KAISEN_UCWK_NO = KU0281.SVC_KEI_KAISEN_UCWK_NO           ");
		sbsql.append("    AND KU0281_GENE.MK_FLG = '0'          ");
		sbsql.append("    ) ");
		
		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KU0281ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbsql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbsql);
			
			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, kojiAkNo);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			//取得親機種別コードを返却
			if (rsltQuery.next())
			{
				Return_CD = rsltQuery.getString(1);
				return Return_CD;
			}
			
		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
		return RETURN_OK;
	}
	// ANK-4315-00-00 ADD END

	// IT2-2023-0000010 2023/08/29 ADD START
	/**
	 * <p>
	 * ＯＮＵ重複チェックを実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkDbleOnu(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkDbleOnu SHOSA_TG_CD = " + SHOSACHK_TRG_081);
		
		// 回線機器リスト取得
		CAANMsg[] msgKK0341ByKK0241List = getKktkSvcKeiBySvcKaiUcwk(svcKeiNo);
		// 機器予約リスト取得
		CAANMsg[] msgKK0341RsvList = new CAANMsg[0];
		
		// =========
		// == ONU ==
		// =========
		// 機器存在フラグ(ONU)
		boolean existONU = false;
		// 機器製造番号(ONU)
		String kikiSeizoNoONU = JKKStrConst.KARA;
		
		// =========
		// == HGW ==
		// =========
		// 機器存在フラグ(HGW)
		boolean existHGW = false;
		// 機器製造番号(HGW)
		String kikiSeizoNoHGW = JKKStrConst.KARA;
		
		// 各種回線機器が存在するかチェックする
		for (CAANMsg kktkInfo : msgKK0341ByKK0241List)
		{
			// 機器提供サービス契約番号
			String kktkSvcKeiNo = kktkInfo.getString(KK0341ETMsg.KKTK_SVC_KEI_NO);
			// 機器提供サービスコード
			String kktkSvcCd = kktkInfo.getString(KK0341ETMsg.KKTK_SVC_CD);
			// 機器提供サービス契約ステータス
			String kktkSvcKeiStat = kktkInfo.getString(KK0341ETMsg.KKTK_SVC_KEI_STAT);
			
			// 機器提供サービス契約ステータスが"解約済／キャンセル済"の場合
			if(JKKStrConst.CD00056_STAT_DSLZUMI.equals(kktkSvcKeiStat) || JKKStrConst.CD00056_STAT_CANCELZUMI.equals(kktkSvcKeiStat))
			{
				// チェック対象外とする
				continue;
			}
			
			// 機器提供サービスコードが"C012：ＯＮＵ"の場合
			if (KKTK_SVC_CD_KBN_C012.equals(kktkSvcCd))
			{
				// ONUが存在しているものとする
				existONU = true;
				// ONU機器製造番号退避
				kikiSeizoNoONU = kktkInfo.getString(KK0341ETMsg.KIKI_SEIZO_NO);
				
				// 対象機器の予約レコードを確認する
				msgKK0341RsvList = getKktkSvcKeiRsv(kktkSvcKeiNo, getOpeDate(inMsg, kidoCd));
				// 対象機器の予約レコードがあれば、
				if (msgKK0341RsvList != null && msgKK0341RsvList.length > 0)
				{
					// 予約レコードの機器製造番号を優先する
					kikiSeizoNoONU = msgKK0341RsvList[0].getString(KK0341ETMsg.KIKI_SEIZO_NO);
				}
			}
			// 機器提供サービスコードが"C025：ＨＧＷ"の場合
			else if (KKTK_SVC_CD_KBN_C025.equals(kktkSvcCd))
			{
				// HGWが存在している
				existHGW = true;
				// HGW機器製造番号退避
				kikiSeizoNoHGW = kktkInfo.getString(KK0341ETMsg.KIKI_SEIZO_NO);
				
				// 対象機器の予約レコードを確認する
				msgKK0341RsvList = getKktkSvcKeiRsv(kktkSvcKeiNo, getOpeDate(inMsg, kidoCd));
				// 対象機器の予約レコードがあれば、
				if (msgKK0341RsvList != null && msgKK0341RsvList.length > 0)
				{
					// 予約レコードの機器製造番号を優先する
					kikiSeizoNoHGW = msgKK0341RsvList[0].getString(KK0341ETMsg.KIKI_SEIZO_NO);
				}
			}
		}
		
		// 重複チェック処理
		// ONUとHGWを両方保持している場合
		if (existONU && existHGW)
		{
			// 出荷状態をチェックする
			// (機器製造番号が決定していれば出荷済みと判断する)
			
			// ONU：未出荷／HGW：未出荷の場合
			if (JKKStringUtil.isNullEmpty(kikiSeizoNoONU) && JKKStringUtil.isNullEmpty(kikiSeizoNoHGW))
			{
				// ＮＧとする
				return RETURN_NG;
			}
			// ONU：未出荷／HGW：出荷済みの場合
			else if (JKKStringUtil.isNullEmpty(kikiSeizoNoONU) && !JKKStringUtil.isNullEmpty(kikiSeizoNoHGW))
			{
				// ＮＧとする
				return RETURN_NG;
			}
			// ONU：出荷済み／HGW：未出荷の場合
			else if (!JKKStringUtil.isNullEmpty(kikiSeizoNoONU) && JKKStringUtil.isNullEmpty(kikiSeizoNoHGW))
			{
				// ＯＫとする
				return RETURN_OK;
			}
			// ONU：出荷済み／HGW：出荷済みの場合
			else if (!JKKStringUtil.isNullEmpty(kikiSeizoNoONU) && !JKKStringUtil.isNullEmpty(kikiSeizoNoHGW))
			{
				// ＯＫとする
				return RETURN_OK;
			}
			// 想定しえない状態の場合
			else 
			{
				// ＮＧとする
				return RETURN_NG;
			}
		}
		// ONUもしくはHGWのいずれかしか保持していない場合、あるいは両方共保持していない場合
		// ＯＫとする
		return RETURN_OK;
	}
	
	/**
	 * <p>
	 * 多機能ルーターとＨＧＷの重複チェックを実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkDbleTknrt(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkDbleTknrt SHOSA_TG_CD = " + SHOSACHK_TRG_082);
		
		// 回線機器リスト取得
		CAANMsg[] msgKK0341ByKK0241List = getKktkSvcKeiBySvcKaiUcwk(svcKeiNo);
		// 機器予約リスト取得
		CAANMsg[] msgKK0341RsvList = new CAANMsg[0];
		
		// ====================
		// == 多機能ルーター ==
		// ====================
		// 機器存在フラグ(多機能ルーター)
		boolean existTknrt = false;
		// 機器製造番号(多機能ルーター)
		String kikiSeizoNoTknrt = JKKStrConst.KARA;
		
		// =========
		// == HGW ==
		// =========
		// 機器存在フラグ(HGW)
		boolean existHGW = false;
		// 機器製造番号(HGW)
		String kikiSeizoNoHGW = JKKStrConst.KARA;
		
		// 各種回線機器が存在するかチェックする
		for (CAANMsg kktkInfo : msgKK0341ByKK0241List)
		{
			// 機器提供サービス契約番号
			String kktkSvcKeiNo = kktkInfo.getString(KK0341ETMsg.KKTK_SVC_KEI_NO);
			// 機器提供サービスコード
			String kktkSvcCd = kktkInfo.getString(KK0341ETMsg.KKTK_SVC_CD);
			// 機器提供サービス契約ステータス
			String kktkSvcKeiStat = kktkInfo.getString(KK0341ETMsg.KKTK_SVC_KEI_STAT);
			
			// 機器提供サービス契約ステータスが"解約済／キャンセル済"の場合
			if(JKKStrConst.CD00056_STAT_DSLZUMI.equals(kktkSvcKeiStat) || JKKStrConst.CD00056_STAT_CANCELZUMI.equals(kktkSvcKeiStat))
			{
				// チェック対象外とする
				continue;
			}
			
			// 機器提供サービスコードが"C024：ＯＮＵ"の場合
			if (KKTK_SVC_CD_KBN_C024.equals(kktkSvcCd))
			{
				// ONUが存在しているものとする
				existTknrt = true;
				// ONU機器製造番号退避
				kikiSeizoNoTknrt = kktkInfo.getString(KK0341ETMsg.KIKI_SEIZO_NO);
				
				// 対象機器の予約レコードを確認する
				msgKK0341RsvList = getKktkSvcKeiRsv(kktkSvcKeiNo, getOpeDate(inMsg, kidoCd));
				// 対象機器の予約レコードがあれば、
				if (msgKK0341RsvList != null && msgKK0341RsvList.length > 0)
				{
					// 予約レコードの機器製造番号を優先する
					kikiSeizoNoTknrt = msgKK0341RsvList[0].getString(KK0341ETMsg.KIKI_SEIZO_NO);
				}
			}
			// 機器提供サービスコードが"C025：ＨＧＷ"の場合
			else if (KKTK_SVC_CD_KBN_C025.equals(kktkSvcCd))
			{
				// HGWが存在している
				existHGW = true;
				// HGW機器製造番号退避
				kikiSeizoNoHGW = kktkInfo.getString(KK0341ETMsg.KIKI_SEIZO_NO);
				
				// 対象機器の予約レコードを確認する
				msgKK0341RsvList = getKktkSvcKeiRsv(kktkSvcKeiNo, getOpeDate(inMsg, kidoCd));
				// 対象機器の予約レコードがあれば、
				if (msgKK0341RsvList != null && msgKK0341RsvList.length > 0)
				{
					// 予約レコードの機器製造番号を優先する
					kikiSeizoNoHGW = msgKK0341RsvList[0].getString(KK0341ETMsg.KIKI_SEIZO_NO);
				}
			}
		}
		
		// 重複チェック処理
		// ONUとHGWを両方保持している場合
		if (existTknrt && existHGW)
		{
			// 出荷状態をチェックする
			// (機器製造番号が決定していれば出荷済みと判断する)
			
			// ONU：未出荷／HGW：未出荷の場合
			if (JKKStringUtil.isNullEmpty(kikiSeizoNoTknrt) && JKKStringUtil.isNullEmpty(kikiSeizoNoHGW))
			{
				// ＮＧとする
				return RETURN_NG;
			}
			// ONU：未出荷／HGW：出荷済みの場合
			else if (JKKStringUtil.isNullEmpty(kikiSeizoNoTknrt) && !JKKStringUtil.isNullEmpty(kikiSeizoNoHGW))
			{
				// ＮＧとする
				return RETURN_NG;
			}
			// ONU：出荷済み／HGW：未出荷の場合
			else if (!JKKStringUtil.isNullEmpty(kikiSeizoNoTknrt) && JKKStringUtil.isNullEmpty(kikiSeizoNoHGW))
			{
				// ＯＫとする
				return RETURN_OK;
			}
			// ONU：出荷済み／HGW：出荷済みの場合
			else if (!JKKStringUtil.isNullEmpty(kikiSeizoNoTknrt) && !JKKStringUtil.isNullEmpty(kikiSeizoNoHGW))
			{
				// ＯＫとする
				return RETURN_OK;
			}
			// 想定しえない状態の場合
			else 
			{
				// ＮＧとする
				return RETURN_NG;
			}
		}
		// ONUもしくはHGWのいずれかしか保持していない場合、あるいは両方共保持していない場合
		// ＯＫとする
		return RETURN_OK;
	}
	// IT2-2023-0000010 2023/08/29 ADD END
	
	/**
	 * <p>
	 * 機器提供サービス契約数下限チェックを実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @param kktkSvcCdKbn 機器提供サービスコード処理区分
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkLowlKktkSvcKei(CAANMsg inMsg, String svcKeiNo, String kidoCd, String kktkSvcCdKbn)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkLowlKktkSvcKei SHOSA_TG_CD = " + SHOSACHK_TRG_007);
		
		return chkLowlUpplKktkSvcKei(inMsg, svcKeiNo, kidoCd, LOWL_CHK, kktkSvcCdKbn);
	}

	/**
	 * <p>
	 * 機器提供サービス契約数上限チェックを実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @param kktkSvcCdKbn 機器提供サービスコード処理区分
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkUpplKktkSvcKei(CAANMsg inMsg, String svcKeiNo, String kidoCd, String kktkSvcCdKbn)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkUpplKktkSvcKei SHOSA_TG_CD = " + SHOSACHK_TRG_008);
		
		return chkLowlUpplKktkSvcKei(inMsg, svcKeiNo, kidoCd, UPPL_CHK, kktkSvcCdKbn);
	}

	/**
	 * <p>
	 * 機器提供サービス契約数上限下限チェックを実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @param type 上限下限チェックタイプ（上限:1、下限:2）
	 * @param kktkSvcCdKbn 機器提供サービスコード処理区分
	 * @return チェック結果（OK:0、NG:1）
	 */
	private String chkLowlUpplKktkSvcKei(CAANMsg inMsg, String svcKeiNo, String kidoCd, String type, String kktkSvcCdKbn)
	{
		String opeDate = getOpeDate(inMsg, kidoCd);

		// 機器提供情報リスト取得
		getKktkInfoList(svcKeiNo, opeDate);

		// 集計用
		Map<String, Long> mapKeyCnt = new HashMap<String, Long>();

		// 機器提供情報リストから料金コースコード、機器提供サービスコード単位で集計
		for (Map<String, String> kktkInfo : kktkInfoList)
		{
			// 料金コース_機器提供サービスの情報を取得できなかった場合
			if (null == kktkInfo.get(KK0801_PCRS_CD))
			{
				continue;
			}
			// 適用開始日を迎えていない場合
			if (!isChkTStaYmd(kktkInfo.get(PCRS_KKTK_SVC_TSTAYMD), opeDate))
			{
				continue;
			}
			// 適用終了日を迎えている場合
			if (!isChkTEndYmd(kktkInfo.get(PCRS_KKTK_SVC_TENDYMD), opeDate))
			{
				continue;
			}
			// 下限チェックかつオンラインの場合
			if (LOWL_CHK.equals(type) && KIDOMOTO_CODE_ONLINE.equals(kidoCd))
			{
				// 機器提供サービスコード処理区分（C015：ＰＬＣ以外）の場合
				if (KKTK_SVC_CD_KBN_1.equals(kktkSvcCdKbn))
				{
					// 機器提供サービスコード（C014：ルータ、C015：ＰＬＣ、C023：ＩＰ−ＳＴＢ）の場合
					if (KKTK_SVC_CD_KBN_C014.equals(kktkInfo.get(KK0801_KKTK_SVC_CD)) || 
							KKTK_SVC_CD_KBN_C015.equals(kktkInfo.get(KK0801_KKTK_SVC_CD)) || 
							KKTK_SVC_CD_KBN_C023.equals(kktkInfo.get(KK0801_KKTK_SVC_CD)))
					{
						continue;
					}
				}
				// 機器提供サービスコード処理区分（C015：ＰＬＣ）の場合
				if (KKTK_SVC_CD_KBN_2.equals(kktkSvcCdKbn))
				{
					// 機器提供サービスコード（C015：ＰＬＣ）以外の場合
					if (!KKTK_SVC_CD_KBN_C015.equals(kktkInfo.get(KK0801_KKTK_SVC_CD)))
					{
						continue;
					}
				}
			}
//				IT2-2023-0000010 MOD START
//			// 下限チェックかつ多機能ルータの場合
//			if (LOWL_CHK.equals(type) && KKTK_SVC_CD_KBN_C024.equals(kktkInfo.get(KK0801_KKTK_SVC_CD)))
			// 下限チェックかつ多機能ルーターかＨＧＷの場合
			if ((LOWL_CHK.equals(type) && KKTK_SVC_CD_KBN_C024.equals(kktkInfo.get(KK0801_KKTK_SVC_CD)))
					|| (LOWL_CHK.equals(type) && KKTK_SVC_CD_KBN_C025.equals(kktkInfo.get(KK0801_KKTK_SVC_CD))))
//				IT2-2023-0000010 MOD END
			{
				continue;
			}
			
//			IT2-2023-0000010 MOD START
//			// 上限チェックかつ多機能ルータの場合
//			if (UPPL_CHK.equals(type) && KKTK_SVC_CD_KBN_C024.equals(kktkInfo.get(KK0801_KKTK_SVC_CD)))
			// 上限チェックかつ多機能ルーターかＨＧＷの場合
			if ((UPPL_CHK.equals(type) && KKTK_SVC_CD_KBN_C024.equals(kktkInfo.get(KK0801_KKTK_SVC_CD)))
				|| (UPPL_CHK.equals(type) && KKTK_SVC_CD_KBN_C025.equals(kktkInfo.get(KK0801_KKTK_SVC_CD))))
//			IT2-2023-0000010 MOD END
			{
				
				if (!checkKkopSvcKei(inMsg, kktkInfo.get(KKTK_SVC_KEI_NO), kktkInfo.get(SVC_CD), opeDate))
				{
					continue;
				}
			
			}

			StringBuffer keyb = new StringBuffer();
			keyb.append(kktkInfo.get(KK0801_PCRS_CD));
			keyb.append(",");
			keyb.append(kktkInfo.get(KK0801_KKTK_SVC_CD));
			keyb.append(",");
			if (null != kktkInfo.get(MIN_KKTK_SVC_CNT))
			{
				keyb.append(kktkInfo.get(MIN_KKTK_SVC_CNT));
			}
			keyb.append(",");
			if (null != kktkInfo.get(MAX_KKTK_SVC_CNT))
			{
				keyb.append(kktkInfo.get(MAX_KKTK_SVC_CNT));
			}

			if (mapKeyCnt.containsKey(keyb.toString()))
			{
				//取り出してカウントUP
				long cnt = mapKeyCnt.get(keyb.toString()).longValue();
				cnt++;
				mapKeyCnt.put(keyb.toString(), cnt);
			}
			else
			{
				mapKeyCnt.put(keyb.toString(), new Long(1L));
			}
		}

		// 料金コース_機器提供サービスの下限・上限値チェック
		for (String key : mapKeyCnt.keySet())
		{
			String[] keys = key.split(",", -1);
			String shkCnt = keys[2];
			String maxCnt = keys[3];
			long keyCnt = mapKeyCnt.get(key).longValue();

			// 下限チェックの場合
			if (LOWL_CHK.equals(type))
			{
				// 最小機器提供サービス数と集計結果を比較
				if (!"".equals(shkCnt) && Long.valueOf(shkCnt) > keyCnt)
				{
					return RETURN_NG;
				}
			}
			// 上記以外(上限チェック)
			else
			{
				// 最大機器提供サービス数と集計結果を比較
				if (!"".equals(maxCnt) && Long.valueOf(maxCnt) < keyCnt)
				{
					return RETURN_NG;
				}
			}
		}

		// チェックOK
		return RETURN_OK;
	}

	/**
	 * <p>
	 * 提供外オプション存在チェックを実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkSonzaiTkGaiOp(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkSonzaiTkGaiOp SHOSA_TG_CD = " + SHOSACHK_TRG_010);
		
		String opeDate = getOpeDate(inMsg, kidoCd);

		getOpInfoList(svcKeiNo, opeDate);

		for (Map<String, String> opInfo : opInfoList)
		{
			// 料金コース_オプションサービスの情報を取得できなかった場合
			if (null == opInfo.get(KK0811_PCRS_CD))
			{
				return RETURN_NG;
			}
			// 適用開始日を迎えていない場合、チェックNGとする
			if (!isChkTStaYmd(opInfo.get(PCRS_OP_SVC_TSTAYMD), opeDate))
			{
				return RETURN_NG;
			}
			// 適用終了日を迎えている場合、チェックNGとする
			if (!isChkTEndYmd(opInfo.get(PCRS_OP_SVC_TENDYMD), opeDate))
			{
				return RETURN_NG;
			}
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * オプションサービス契約数下限チェックを実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkLowlOpSvcKei(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkLowlOpSvcKei SHOSA_TG_CD = " + SHOSACHK_TRG_011);
		
		return chkLowlUpplOpSvcKei(inMsg, svcKeiNo, kidoCd, LOWL_CHK);
	}

	/**
	 * <p>
	 * オプションサービス契約数上限チェックを実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkUpplOpSvcKei(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkUpplOpSvcKei SHOSA_TG_CD = " + SHOSACHK_TRG_012);
		
		return chkLowlUpplOpSvcKei(inMsg, svcKeiNo, kidoCd, UPPL_CHK);
	}

	/**
	 * <p>
	 * オプションサービス契約数上限チェック（電話）を実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkUpplOpSvcKeiTel(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		// サービス契約番号に紐付く、オプションサービス契約情報を取得
		ArrayList<Long> retArray = getOpSvcKeiInfoWithSvcCnt(svcKeiNo, getOpeDate(inMsg, kidoCd));

		// 取得した件数の判定
		for (Long retLng: retArray)
		{
			// 取得した件数が2件以上の場合、チェックNGとする
			if (retLng > 1)
			{
				return RETURN_NG;
			}
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * オプションサービス契約数上限下限チェックを実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @param type 上限下限チェックタイプ（上限:1、下限:2）
	 * @return チェック結果（OK:0、NG:1）
	 */
	private String chkLowlUpplOpSvcKei(CAANMsg inMsg, String svcKeiNo, String kidoCd, String type)
	{
		String opeDate = getOpeDate(inMsg, kidoCd);

		getOpInfoList(svcKeiNo, opeDate);

		// 処理済みオプションサービス契約保持用
		Map<String, Long> mapOpSvcKeiCnt = new HashMap<String, Long>();

		// オプションサービス契約検索結果から料金コース、オプションサービス単位で集計
		for (Map<String, String> opInfo : opInfoList)
		{
			// 料金コース_オプションサービスの情報を取得できなかった場合
			if (null == opInfo.get(KK0811_PCRS_CD))
			{
				continue;
			}
			// 適用開始日を迎えていない場合
			if (!isChkTStaYmd(opInfo.get(PCRS_OP_SVC_TSTAYMD), opeDate))
			{
				continue;
			}
			// 適用終了日を迎えている場合
			if (!isChkTEndYmd(opInfo.get(PCRS_OP_SVC_TENDYMD), opeDate))
			{
				continue;
			}

			StringBuffer keyb = new StringBuffer();
			keyb.append(opInfo.get(KK0811_PCRS_CD));
			keyb.append(",");
			keyb.append(opInfo.get(KK0811_OP_SVC_CD));
			keyb.append(",");
			if (null != opInfo.get(SHK_OP_SVC_CNT))
			{
				keyb.append(opInfo.get(SHK_OP_SVC_CNT));
			}
			keyb.append(",");
			if (null != opInfo.get(MAX_OP_SVC_CNT))
			{
				keyb.append(opInfo.get(MAX_OP_SVC_CNT));
			}

			if (mapOpSvcKeiCnt.containsKey(keyb.toString()))
			{
				//取り出してカウントUP
				long cnt = mapOpSvcKeiCnt.get(keyb.toString()).longValue();
				cnt++;
				mapOpSvcKeiCnt.put(keyb.toString(), cnt);
			}
			else
			{
				mapOpSvcKeiCnt.put(keyb.toString(), new Long(1L));
			}
		}

		// 料金コース_オプションサービスの下限・上限値チェック
		for (String key : mapOpSvcKeiCnt.keySet())
		{
			String[] keys = key.split(",", -1);
			String shkCnt = keys[2];
			String maxCnt = keys[3];
			long opSvcKeiCnt = mapOpSvcKeiCnt.get(key).longValue();

			// 下限チェックの場合
			if (LOWL_CHK.equals(type))
			{
				// 初期オプションサービス数と集計結果を比較
				if (!"".equals(shkCnt) && Long.valueOf(shkCnt) > opSvcKeiCnt)
				{
					return RETURN_NG;
				}
			}
			// 上記以外(上限チェック)
			else
			{
				// 最大オプションサービス数と集計結果を比較
				if (!"".equals(maxCnt) && Long.valueOf(maxCnt) < opSvcKeiCnt)
				{
					return RETURN_NG;
				}
			}
		}

		// チェックOK
		return RETURN_OK;
	}

	/**
	 * <p>
	 * 申込年月日期間超過チェックを行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param mskmDtlNo チェック対象の申込明細番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果(0：OK, 1:NG)
	 */
	protected String chkChokMoshikomiYmdPrd(CAANMsg inMsg, String mskmDtlNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkChokMoshikomiYmdPrd SHOSA_TG_CD = " + SHOSACHK_TRG_001);
		
		// 申込明細番号のnull空チェックを実施
		if (mskmDtlNo == null || "".equals(mskmDtlNo))
		{
			// 申込明細番号が設定されていない場合、OKを返却
			return RETURN_OK;
		}

		// 申込明細のカレントレコードを検索
		getMskmDtlList(mskmDtlNo);

		// 申込明細のカレントが存在しなければOKを返却する
		if (mskmDtlList.size() > 0)
		{
			// 申込年月日が設定されていない場合、OKを返却する
			if (mskmDtlList.get(0).get(MSKM_YMD) == null)
			{
				return RETURN_OK;
			}

			// 申込年月日取得
			String mskmDate = mskmDtlList.get(0).get(MSKM_YMD);


			// 照査処理条件スキーマのカレント検索を行う
			CAANMsg msgkk2001 = new CAANMsg(KK2001ETMsg.class.getName());
			msgkk2001.set(KK2001ETMsg.SHOSA_TRN_JOKEN_CD, SHOSA_TRN_JOKEN_CD_SHOSA_KRNISU);
			msgkk2001.set(KK2001ETMsg.SHOSA_TRN_JOKEN_DTL_NO, SHOSA_TRN_JOKEN_DTL_NO_0001);
			msgkk2001.set(KK2001ETMsg.RSV_APLY_YMD, getOpeDate(inMsg, kidoCd));
			CAANMsg retKK2001 = new JKKejbKK2001DBABase().findByCurrent(msgkk2001);

			if (null == retKK2001)
			{
				return RETURN_NG;
			}

			// 照査申込年月日経過上限日数を取得
			String mskmymdKikjgnisu = null;
			if (KIDOMOTO_CODE_BATCH.equals(kidoCd)) {
				// バッチからの場合、自動照査申込年月日経過上限日数
				mskmymdKikjgnisu = retKK2001.getString(KK2001ETMsg.ATSHOSA_MSKMYMD_KIKJGNISU);
			} else if(KIDOMOTO_CODE_ONLINE.equals(kidoCd)) {
				// 画面からの場合、手動照査申込年月日経過上限日数
				mskmymdKikjgnisu = retKK2001.getString(KK2001ETMsg.MANSHOSA_MSKMYMD_KIKJGNISU);
			}
			if (null == mskmymdKikjgnisu || "".equals(mskmymdKikjgnisu))
			{
				return RETURN_NG;
			}
			
			// 現在の申込年月日経過許容日数を取得する
			String keikaKyoyouYmd = JPCDateUtil.addDay(mskmDate, Integer.parseInt(mskmymdKikjgnisu));

			// 運用日が申込年月日経過許容日数を超えていないかチェックする
			if (JPCDateUtil.subtractDay(keikaKyoyouYmd, getOpeDate(inMsg, kidoCd)) < 0)
			{
				// 超えていたらNGを返却する
				return RETURN_NG;
			}
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * サービス開始希望年月日設定チェック
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param svcUseStaKiboYmd サービス開始希望年月日
	 * @return チェック結果(0:OK,1:NG)
	 */
	protected String chkSetSvcStaKiboYmd(CAANMsg inMsg, String svcUseStaKiboYmd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkSetSvcStaKiboYmd SHOSA_TG_CD = " + SHOSACHK_TRG_002);
		
		// サービス利用開始希望年月日に値が設定されていない場合、NGを返却
		if (svcUseStaKiboYmd == null || "".equals(svcUseStaKiboYmd))
		{
			return RETURN_NG;
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * サービス開始希望年月日未来日チェック
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param svcUseStaKiboYmd サービス開始希望年月日
	 * @param kidoCd 起動元コード
	 * @return チェック結果(0:OK,1:NG)
	 */
	protected String chkFutureSvcStaKiboYmd(CAANMsg inMsg, String svcUseStaKiboYmd, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkFutureSvcStaKiboYmd SHOSA_TG_CD = " + SHOSACHK_TRG_003);
		
		// サービス利用開始希望年月日に値が設定されていない場合、OKを返却
		if (svcUseStaKiboYmd == null || "".equals(svcUseStaKiboYmd))
		{
			return RETURN_OK;
		}
		// 照査処理条件スキーマのカレント検索を行う
		CAANMsg msgkk2001 = new CAANMsg(KK2001ETMsg.class.getName());
		msgkk2001.set(KK2001ETMsg.SHOSA_TRN_JOKEN_CD, SHOSA_TRN_JOKEN_CD_SHOSA_KRNISU);
		msgkk2001.set(KK2001ETMsg.SHOSA_TRN_JOKEN_DTL_NO, SHOSA_TRN_JOKEN_DTL_NO_0002);
		msgkk2001.set(KK2001ETMsg.RSV_APLY_YMD, getOpeDate(inMsg, kidoCd));
		CAANMsg retKK2001 = new JKKejbKK2001DBABase().findByCurrent(msgkk2001);

		if (null == retKK2001)
		{
			return RETURN_NG;
		}

		// サービス利用開始希望年月日未来上限日数を取得
		String svcusestaKiboymdFtjgnisu = retKK2001.getString(KK2001ETMsg.SVCUSESTA_KIBOYMD_FTJGNISU);
		if (null == svcusestaKiboymdFtjgnisu || "".equals(svcusestaKiboymdFtjgnisu))
		{
			return RETURN_NG;
		}
		
		int workSvcusestaKiboymdFtjgnisu = Integer.parseInt(svcusestaKiboymdFtjgnisu);


		// サービス利用開始希望年月日未来許容日を取得する
		String miraiKyoyouYmd = JPCDateUtil.addDay(svcUseStaKiboYmd, -workSvcusestaKiboymdFtjgnisu);

		// 運用日を超えていないかチェックする
		if (JPCDateUtil.subtractDay(miraiKyoyouYmd, getOpeDate(inMsg, kidoCd)) > 0)
		{
			// 運用日を超えていたらNGを返却する
			return RETURN_NG;
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * 面開発案件チェックを行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param menkaihatsu 面開発案件番号
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkMenkaihatsu(CAANMsg inMsg, String menkaihatsu)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkMenkaihatsu SHOSA_TG_CD = " + SHOSACHK_TRG_004);
		
		// 面開発番号が設定されていた場合、NGを返却する
		if (menkaihatsu != null && !"".equals(menkaihatsu))
		{
			return RETURN_NG;
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * 提供機器必須チェックを行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param msgKK0081 サービス契約カレントレコードメッセージ
	 * @param kidoCd 起動コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkTeikyoKKHissu(CAANMsg inMsg, CAANMsg msgKK0081, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkTeikyoKKHissu SHOSA_TG_CD = " + SHOSACHK_TRG_005);
		
		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);

		// サービス別機器提供構成条件のレコードを取得する
		CAANMsg[] retMsgKK2331List = findByCondKK2331Cond1(msgKK0081.getString(KK0081ETMsg.PCRS_CD), opeDate);

		// サービス別機器提供構成条件が取得できなかった場合はチェックOKとする
		if (1 > retMsgKK2331List.length)
		{
			return RETURN_OK;
		}

		// 提供機器必須チェックメイン処理を呼び出し、結果を返却する
		return chkTeikyoKKHissuMain(msgKK0081.getString(KK0081ETMsg.SVC_KEI_NO), retMsgKK2331List, opeDate);
	}

	/**
	 * <p>
	 * 提供機器必須チェックを行います（関連制約用）。
	 * </p>
	 * @param inMsg 処理対象のメッセージ
	 * @param msgKK0081 サービス契約のカレントレコードメッセージ
	 * @param tagYmd サービス別機器提供構成条件検索用日付
	 * @return チェックOKの場合はtrue。チェックNGの場合はfalse。
	 */
	public boolean chkTeikyoKKHissuKRCK(CAANMsg inMsg, CAANMsg msgKK0081, String tagYmd)
	{
		// サービス別機器提供構成条件のレコードを取得する
		CAANMsg[] retMsgKK2331List = findByCondKK2331Cond2(inMsg.getString(KK0081ETMsg.PCRS_CD), msgKK0081.getString(KK0081ETMsg.PCRS_CD), tagYmd);

		// サービス別機器提供構成条件が取得できなかった場合はチェックOKとする
		if (1 > retMsgKK2331List.length)
		{
			return true;
		}

		// 提供機器必須チェックメイン処理を呼び出す
		String retRslt = chkTeikyoKKHissuMain(inMsg.getString(KK0081ETMsg.SVC_KEI_NO), retMsgKK2331List, JKKModelCommon.getOpeDate(inMsg));

		// 結果をbooleanに変換して返却
		if (RETURN_OK.equals(retRslt))
		{
			return true;
		}

		return false;
	}

	/**
	 * <p>
	 * 提供機器必須チェックのメイン処理を行います。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param retMsgKK2331List 比較対象のサービス別機器提供構成条件の配列
	 * @param opeDate 運用日付
	 * @return チェック結果(OK:0, NG:1)
	 */
	private String chkTeikyoKKHissuMain(String svcKeiNo, CAANMsg[] retMsgKK2331List, String opeDate)
	{
		// サービス契約番号に紐付く、機器提供サービス契約の宅内機器型式コードを取得する
		ArrayList<String> taknaiKikiList = getTakunaiKikiWithSvc(svcKeiNo, opeDate);

		// 宅内機器型式コードが取得できなかった場合はNGを返却
		if (1 > taknaiKikiList.size())
		{
			return RETURN_NG;
		}

		// サービス別機器提供構成条件の内容と機器提供サービス契約が一致しているかをチェックする
		for (CAANMsg retMsgKK2331: retMsgKK2331List)
		{
			// 宅内機器型式コード１が、機器提供のリストに存在しない場合は次の明細へ
			if (!taknaiKikiList.contains(retMsgKK2331.getString(KK2331ETMsg.TAKNKIKI_MODEL_CD_1)))
			{
				continue;
			}

			// 宅内機器型式コード２が、機器提供のリストに存在しない場合は次の明細へ
			if (!taknaiKikiList.contains(retMsgKK2331.getString(KK2331ETMsg.TAKNKIKI_MODEL_CD_2)))
			{
				continue;
			}

			// 両方が存在していた場合はOKを返却
			return RETURN_OK;
		}
		
		// 全ての組み合わせが一致しなかった場合はNGを返却
		return RETURN_NG;
	}

	/**
	 * <p>
	 * 督促状態チェックを行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkStatTokusoku(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkStatTokusoku SHOSA_TG_CD = " + SHOSACHK_TRG_017);
		
		// サービス契約に紐付く督促情報を取得する
		getTokusoku(svcKeiNo, getOpeDate(inMsg, kidoCd));

		// 督促情報が取得できたらNGを返却
		if (tokusokuInfoList.size() != 0)
		{
			return RETURN_NG;
		}

		return RETURN_OK;

	}

	/**
	 * <p>
	 * オプション引継チェックを行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果(オプションサービス契約引継発生年月日が設定されていない場合OK:0, それ以外の場合NG:1)
	 */
	protected String chkOpHktgi(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkOpHktgi SHOSA_TG_CD = " + SHOSACHK_TRG_019);
		
		String opeDate = getOpeDate(inMsg, kidoCd);

		getOpInfoList(svcKeiNo, opeDate);

		for (Map<String, String> opInfo : opInfoList)
		{
			// オプションサービス契約引継発生年月日が設定されている場合、NGを返却
			if (null != opInfo.get(OP_SVC_KEI_HKHASYMD))
			{
				return RETURN_NG;
			}

		}
		return RETURN_OK;
	}

	/**
	 * <p>
	 * オプション引継チェックを行います。
	 * </p>
	 * @param inETMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @return チェック結果がOKの場合true、NGの場合false
	 */
	public boolean isChkOpHktgi(CAANMsg inETMsg, String svcKeiNo)
	{
		if(RETURN_OK.equals(this.chkOpHktgi(inETMsg, svcKeiNo, KIDOMOTO_CODE_ONLINE)))
		{
			// オプションサービス契約引継発生年月日が設定されていない場合(オプション引継チェック結果がOKの場合)
			return true;
		}

		// オプションサービス契約引継発生年月日が設定されている場合(オプション引継チェック結果がNGの場合)
		return false;
	}
	
	/**
	 * <p>
	 * オプション引継希望チェック
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param mskmDtlNo 申込明細番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkKiboOpHktgi(CAANMsg inMsg, String mskmDtlNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkKiboOpHktgi SHOSA_TG_CD = " + SHOSACHK_TRG_020);
		
		// 申込明細番号が指定されていない場合、OKを返却
		if (mskmDtlNo == null || "".equals(mskmDtlNo))
		{
			return RETURN_OK;
		}

		// 申込明細のカレントレコードを検索
		getMskmDtlList(mskmDtlNo);

		// 申込明細のカレントが存在しなければOKを返却する
		if (mskmDtlList.size() > 0)
		{
			
			// 申込明細ステータスがキャンセル済("920")の場合、OKを返却
			if (STATE_CANCEL.equals(mskmDtlList.get(0).get(KK0021ETMsg.MSKM_DTL_STAT)))
			{
				return RETURN_OK;
			}
			
			// 申込明細のオプション引継有無チェック
			if (OP_SVC_HKTG_ON.equals(mskmDtlList.get(0).get(OP_SVC_HKTGI_UM)))
			{
				// オプション引継有無が有の場合、NGを返却
				return RETURN_NG;
			}
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * 部屋番号重複チェックを行います。
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param sysId SYSID
	 * @param kidoCd 起動元コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkDbleAdrrm(CAANMsg inMsg, String svcKeiNo, String sysId, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkDbleAdrrm SHOSA_TG_CD = " + SHOSACHK_TRG_021);
		
		// サービス契約番号が指定されていない場合、OKを返却する
		if (svcKeiNo == null || "".equals(svcKeiNo))
		{
			return RETURN_OK;
		}

		// 重複する部屋番号を取得する
		getAdrrmInfoList(svcKeiNo, sysId, getOpeDate(inMsg, kidoCd));
		
		Map<String, String> map = new HashMap<String, String>();
		
		// サービス契約回線内訳番号1をMapに詰め込む
		for (Map<String, String> adrrmInfo : adrrmInfoList)
		{
			map.put(adrrmInfo.get(SVC_KEI_KAISEN_UCWK_NO), adrrmInfo.get(SVC_KEI_KAISEN_UCWK_NO));
		}

		for (Map<String, String> adrrmInfo2 : adrrmInfoList)
		{
			// Mapに詰めた値にサービス契約回線内訳番号2の値が存在するかチェックする
			if (!map.containsKey(adrrmInfo2.get(SVC_KEI_KAISEN_UCWK_NO_02)))
			{
				// 存在しない値があったらNGを返却する
				return RETURN_NG;
			}
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * 入居予定年月日未来日チェック
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param menkaihatsu 面開発案件番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkFutureNyukyoRsvYmd(CAANMsg inMsg, String svcKeiNo, String menkaihatsu, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkFutureNyukyoRsvYmd SHOSA_TG_CD = " + SHOSACHK_TRG_024);
		
		// サービス契約番号が指定されていない場合、OKを返却する
		if (svcKeiNo == null || "".equals(svcKeiNo))
		{
			return RETURN_OK;
		}

		// 面開発案件番号が指定されていない場合、OKを返却する
		if (menkaihatsu == null || "".equals(menkaihatsu))
		{
			return RETURN_OK;
		}

		// 照査処理条件スキーマのカレント検索を行う
		CAANMsg msgkk2001 = new CAANMsg(KK2001ETMsg.class.getName());
		msgkk2001.set(KK2001ETMsg.SHOSA_TRN_JOKEN_CD, SHOSA_TRN_JOKEN_CD_SHOSA_KRNISU);
		msgkk2001.set(KK2001ETMsg.SHOSA_TRN_JOKEN_DTL_NO, SHOSA_TRN_JOKEN_DTL_NO_0003);
		msgkk2001.set(KK2001ETMsg.RSV_APLY_YMD, getOpeDate(inMsg, kidoCd));
		CAANMsg retKK2001 = new JKKejbKK2001DBABase().findByCurrent(msgkk2001);

		if (null == retKK2001)
		{
			return RETURN_NG;
		}

		// 入居予定年月日未来上限日数を取得
		String nyukyoRsymdFtjgnisu = retKK2001.getString(KK2001ETMsg.NYUKYO_RSYMD_FTJGNISU);
		if (null == nyukyoRsymdFtjgnisu || "".equals(nyukyoRsymdFtjgnisu))
		{
			return RETURN_NG;
		}

		// 入居予定年月日情報リストの取得
		getNyukyoRsvYmdInfoList(svcKeiNo, getOpeDate(inMsg, kidoCd));

		for (int i = 0; i < nyukyoRsvYmdInfoList.size(); i++)
		{
			// 入居予定年月日
			String nyukyoRsvYmd = nyukyoRsvYmdInfoList.get(i).get(KK0251ETMsg.NYUKYO_RSV_YMD);
			// 入居予定年月日-入居予定年月日未来許容日を算出
			String kyoyouYmd = JPCDateUtil.addDay(nyukyoRsvYmd, - Integer.parseInt(nyukyoRsymdFtjgnisu));

			// 算出した結果が運用日を過ぎていないか確認する
			if (JPCDateUtil.subtractDay(kyoyouYmd, getOpeDate(inMsg, kidoCd)) > 0)
			{
				// 運用日を過ぎていたらNGを返却する
				return RETURN_NG;
			}
		}
		return RETURN_OK;
	}

	/**
	 * <p>
	 * 利用場所番地未確定チェックを行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkMiFixUsePlaceBachi(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkMiFixUsePlaceBachi SHOSA_TG_CD = " + SHOSACHK_TRG_025);
		
		// サービス契約番号が指定されていない場合、OKを返却する
		if (svcKeiNo == null || "".equals(svcKeiNo))
		{
			return RETURN_OK;
		}

		// 利用場所番地情報リストの取得
		getUsePlaceBnchiInfoList(svcKeiNo, getOpeDate(inMsg, kidoCd));

		// 取得できない場合エラー
		if (usePlaceBnchiInfoList.size() < 1)
		{
			return RETURN_OK;
		}

		return RETURN_NG;

	}

	/**
	 * <p>
	 * 利用場所警告エリアチェックを行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス番号
	 * @param svcCd サービスコード
	 * @param prcGrpCd 料金グループコード
	 * @param pcrsCd 料金コースコード
	 * @param pplanCd 料金プランコード
	 * @param tkHoshikiKeiNo 提供方式契約番号
	 * @param menkaihatAnkenNo 面開発案件番号
	 * @param kidoCd 起動元コード
	 * @param type 住所形態種別
	 * @return 配列 [0]:チェック結果(OK:0, NG:1) [1]:チェック種別コード
	 */
	protected String[] chkWarUsePlaceArea(CAANMsg inMsg, String svcKeiNo, String svcCd, String prcGrpCd, String pcrsCd, String pplanCd,
			String tkHoshikiKeiNo, String menkaihatAnkenNo, String kidoCd, String type)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkWarUsePlaceArea SHOSA_TG_CD = " + SHOSACHK_TRG_026);
		
		// 返却用配列（[0]：チェック結果、[1]：チェック種別コード）
		String[] retStg = new String[]{RETURN_OK, null};

		// ANK-4154-00-00 2021/11/29 ADD START
		// 権限設定プロパティファイル 設定値取得
		HashMap<String, String> authPropMap = new HashMap<String, String>();
		JCCAuthorityCtrlCache.setPath();
		try
		{
			authPropMap = JCCAuthorityCtrlCache.getMapOnline("KKW086010PJP");
		}
		catch (Exception e)
		{
			throw new JCCFrameworkException("権限制御定義ファイルキャッシュ情報の取得に失敗しました。", e);
		}

		// 利用場所警告エリアチェック実行権限があるか判定
		boolean doChkWarUsePlaceArea = true;
		if (authPropMap != null) {
			for(String key : authPropMap.keySet())
			{
				if (key.contains("KKW08601") && authPropMap.get(key).contains("DELETE"))
				{
					doChkWarUsePlaceArea = false;
					break;
				}
			}
		}

		if (!doChkWarUsePlaceArea)
		{
			return retStg;
		}
		// ANK-4154-00-00 2021/11/29 ADD END
		
		// 回線対象サービス契約情報リストを取得
		getKaiTgSvkeiInfoList(svcKeiNo, getOpeDate(inMsg, kidoCd));

		for (int i = 0; i < kaiTgSvkeiInfoList.size(); i++)
		{
			// チェック種別コードを取得
			ArrayList<String> chkSbtCdList = getChkSbtCd(svcCd, prcGrpCd, pcrsCd, pplanCd, kidoCd, i);
			
			if(null == chkSbtCdList)
			{
				continue;
			}

			for (int j = 0; j < chkSbtCdList.size(); j++)
			{
				if (!isChkSrtCheck(chkSbtCdList.get(j), type, svcKeiNo, svcCd, prcGrpCd, menkaihatAnkenNo))
				{
					// チェック結果NG、チェック種別コードを設定して返却する
					retStg[0] = RETURN_NG;
					retStg[1] = chkSbtCdList.get(j);

					return retStg;
				}
			}

		}
		return retStg;
	}

	/**
	 * <p>
	 * 同一利用場所使用サービス整合性チェック	
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param mskmDtlNo 申込明細番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkUseSvcSeiDouitsu(CAANMsg inMsg, String svcKeiNo, String mskmDtlNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkUseSvcSeiDouitsu SHOSA_TG_CD = " + SHOSACHK_TRG_027);
		
		// 申込明細のカレントレコードを検索
		getMskmDtlList(mskmDtlNo);

		// 申込明細のカレントが存在しなければOKを返却する
		if (mskmDtlList.size() > 0)
		{
			// 申込明細ステータスがキャンセル済("920")の場合、OKを返却
			if (STATE_CANCEL.equals(mskmDtlList.get(0).get(KK0021ETMsg.MSKM_DTL_STAT)))
			{
				return RETURN_OK;
			}

			// 同一利用場所を取得する
			getUsePlaceInfoList(svcKeiNo, mskmDtlList.get(0).get(KK0021ETMsg.MSKM_NO), getOpeDate(inMsg, kidoCd));

			Map<String, String> map = new HashMap<String, String>();
			
			// サービス契約回線内訳番号1をMapに詰め込む
			for (Map<String, String> usePlaceInfo : usePlaceInfoList)
			{
				map.put(usePlaceInfo.get(SVC_KEI_KAISEN_UCWK_NO), usePlaceInfo.get(SVC_KEI_KAISEN_UCWK_NO));
			}
			
			for (Map<String, String> usePlaceInfo2 : usePlaceInfoList)
			{
				// Mapに詰めた値にサービス契約回線内訳番号2の値が存在するかチェックする
				if (!map.containsKey(usePlaceInfo2.get(SVC_KEI_KAISEN_UCWK_NO_02)))
				{
					// 存在しない値があったらNGを返却する
					return RETURN_NG;
				}
			}
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * 適用開始日の判断を実施する
	 * </p>
	 * @param baseYmd 適用開始年月日
	 * @param trgYmd 運用日付
	 * @return true:適用範囲内、false:適用範囲外
	 */
	private boolean isChkTStaYmd(String baseYmd, String trgYmd)
	{
		// 適用開始年月日が設定されていない場合、適用開始されていないと判断
		if (baseYmd == null || "".equals(baseYmd))
		{
			return false;
		}
		// 適用開始日を迎えていない場合、falseとする
		if (JPCUtilCommon.isPastDate(trgYmd, baseYmd, "0"))
		{
			return false;
		}

		return true;
	}

	/**
	 * <p>
	 * 適用終了日の判断を実施する
	 * </p>
	 * @param baseYmd 適用終了年月日
	 * @param trgYmd 運用日付
	 * @return true:適用範囲内、false:適用範囲外
	 */
	private boolean isChkTEndYmd(String baseYmd, String trgYmd)
	{
		// 適用終了日が設定されていない場合、適用終了されていないと判断
		if (baseYmd == null || "".equals(baseYmd))
		{
			return true;
		}
		// 適用終了日を迎えている場合、falseとする
		if (JPCUtilCommon.isFutureDate(trgYmd, baseYmd, "0"))
		{
			return false;
		}

		return true;
	}

	/**
	 * <p>
	 * 住居形態種別を取得する
	 * </p>
	 * @param tkHoshikiKeiNo 提供方式契約番号
	 * @return 住居形態種別
	 */
	protected String getJyuKyoKeiType(String tkHoshikiKeiNo)
	{
		// 提供方式契約番号が未設定の場合
		if (tkHoshikiKeiNo == null || "".equals(tkHoshikiKeiNo))
		{
			// ホームタイプ
			return JYUKOKEITAI_HOME;
		}

		// 提供方式契約→回線使用契約→オーナー契約→マンション物件で検索し
		// マンション物件のマンション物件コードにてマンション、メゾンを判断
		CAANMsg[] retMsgList = null;

		try
		{
			// 提供方式契約検索
			CAANMsg msgKK0891 = new CAANMsg(KK0891ETMsg.class.getName());
			msgKK0891.set(KK0891ETMsg.TK_HOSHIKI_KEI_NO, tkHoshikiKeiNo);
			msgKK0891.set(KK0891ETMsg.MK_FLG, "0");
			KK0891LE leKK0891 = new KK0891LE();
			retMsgList = leKK0891.findByCondition(msgKK0891);
			if (retMsgList.length == 0)
			{
				// ホームタイプ
				return JYUKOKEITAI_HOME;
			}

			// 回線使用契約検索
			CAANMsg msgKK0881 = new CAANMsg(KK0881ETMsg.class.getName());
			msgKK0881.set(KK0881ETMsg.KAISEN_USE_KEI_NO, retMsgList[0].getString(KK0891ETMsg.KAISEN_USE_KEI_NO));
			msgKK0881.set(KK0881ETMsg.MK_FLG, "0");
			KK0881LE leKK0881 = new KK0881LE();
			retMsgList = leKK0881.findByCondition(msgKK0881);
			if (retMsgList.length == 0)
			{
				// ホームタイプ
				return JYUKOKEITAI_HOME;
			}

			// オーナー契約検索
			CAANMsg msgKK0871 = new CAANMsg(KK0871ETMsg.class.getName());
			msgKK0871.set(KK0871ETMsg.OWNR_KEI_NO, retMsgList[0].getString(KK0881ETMsg.OWNR_KEI_NO));
			msgKK0871.set(KK0871ETMsg.MK_FLG, "0");
			KK0871LE leKK0871 = new KK0871LE();
			retMsgList = leKK0871.findByCondition(msgKK0871);
			if (retMsgList.length == 0)
			{
				// ホームタイプ
				return JYUKOKEITAI_HOME;
			}

			// マンション物件検索
			CAANMsg msgKK0861 = new CAANMsg(KK0861ETMsg.class.getName());
			msgKK0861.set(KK0861ETMsg.MANSION_BUKKEN_NO, retMsgList[0].getString(KK0871ETMsg.MANSION_BUKKEN_NO));
			msgKK0861.set(KK0861ETMsg.MK_FLG, "0");
			KK0861LE leKK0861 = new KK0861LE();
			retMsgList = leKK0861.findByCondition(msgKK0861);
			if (retMsgList.length == 0)
			{
				// ホームタイプ
				return JYUKOKEITAI_HOME;
			}

			// マンション物件コードより「マンション」「メゾン」を判断
			if (MANSION_BUKKEN_CD_MANSION.equals(retMsgList[0].getString(KK0861ETMsg.MANSION_BUKKEN_CD)))
			{
				return JYUKOKEITAI_MANSHON;
			}
			else if (MANSION_BUKKEN_CD_MEZON.equals(retMsgList[0].getString(KK0861ETMsg.MANSION_BUKKEN_CD)))
			{
				return JYUKOKEITAI_MEZON;

			}

			// ホームタイプ
			return JYUKOKEITAI_HOME;

		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

	}

	/**
	 * <p>
	 * チェック種別コード取得処理
	 * </p>
	 * @param svcCd サービスコード
	 * @param prcGrpCd 料金グループコード
	 * @param pcrsCd 料金コースコード
	 * @param pplanCd 料金プランコード
	 * @param kidoCd 起動元コード
	 * @param i 回線対象サービス契約情報リストのインデックス
	 * @return サービス提供エリア警告対象住所の検索結果
	 */
	private ArrayList<String> getChkSbtCd(String svcCd, String prcGrpCd, String pcrsCd, String pplanCd, String kidoCd, int i)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;
		// バインド変数設定値保持用領域
		ArrayList<Object> arraylist = new ArrayList<Object>();
		// PreparedStatementのパラメータカウント
		int iPCnt = 0;

		String kaisenPlaceStateNm = kaiTgSvkeiInfoList.get(i).get(KK0251ETMsg.KAISEN_PLACE_STATE_NM);
		String kaisenPlaceCityNm = kaiTgSvkeiInfoList.get(i).get(KK0251ETMsg.KAISEN_PLACE_CITY_NM);
		String kaisenPlaceOaztsuNm = kaiTgSvkeiInfoList.get(i).get(KK0251ETMsg.KAISEN_PLACE_OAZTSU_NM);
		String kaisenPlaceAzchoNm = kaiTgSvkeiInfoList.get(i).get(KK0251ETMsg.KAISEN_PLACE_AZCHO_NM);
		String kaisenPlaceBnchigo = kaiTgSvkeiInfoList.get(i).get(KK0251ETMsg.KAISEN_PLACE_BNCHIGO);

		// SQL文
		StringBuffer sbSql = new StringBuffer();
		sbSql.append(" SELECT KK0931.CHK_SBT_CD");
		sbSql.append("   FROM (");
		sbSql.append("         SELECT KK0931_01.SVC_CD");
		sbSql.append("                ,KK0931_01.PRC_GRP_CD");
		sbSql.append("                ,KK0931_01.PCRS_CD");
		sbSql.append("                ,KK0931_01.PPLAN_CD");
		sbSql.append("                ,KK0931_01.CHK_SBT_CD");
		sbSql.append("                ,KK0931_01.AUTO_SHOSA_CHK_TG_CD");
		sbSql.append("           FROM KK_M_SVTA_KKKU_TAIAD KK0931_01");
		sbSql.append("          WHERE KK0931_01.SVTA_KKKU_WDASTISCP_CD = '01'");
		if (null == kaisenPlaceStateNm || "".equals(kaisenPlaceStateNm))
		{
			sbSql.append("            AND KK0931_01.SVTA_KKKU_TG_STATE_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_01.SVTA_KKKU_TG_STATE_NM = ?");
			arraylist.add(kaisenPlaceStateNm);
		}
		sbSql.append("            AND KK0931_01.MK_FLG = '0'");
		sbSql.append("         UNION");
		sbSql.append("         SELECT KK0931_02.SVC_CD");
		sbSql.append("                ,KK0931_02.PRC_GRP_CD");
		sbSql.append("                ,KK0931_02.PCRS_CD");
		sbSql.append("                ,KK0931_02.PPLAN_CD");
		sbSql.append("                ,KK0931_02.CHK_SBT_CD");
		sbSql.append("                ,KK0931_02.AUTO_SHOSA_CHK_TG_CD");
		sbSql.append("           FROM KK_M_SVTA_KKKU_TAIAD KK0931_02");
		sbSql.append("          WHERE KK0931_02.SVTA_KKKU_WDASTISCP_CD = '02'");
		if (null == kaisenPlaceStateNm || "".equals(kaisenPlaceStateNm))
		{
			sbSql.append("            AND KK0931_02.SVTA_KKKU_TG_STATE_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_02.SVTA_KKKU_TG_STATE_NM = ?");
			arraylist.add(kaisenPlaceStateNm);
		}
		if (null == kaisenPlaceCityNm || "".equals(kaisenPlaceCityNm))
		{
			sbSql.append("            AND KK0931_02.SVTA_KKKU_TG_CITY_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_02.SVTA_KKKU_TG_CITY_NM = ?");
			arraylist.add(kaisenPlaceCityNm);
		}
		sbSql.append("            AND KK0931_02.MK_FLG = '0'");
		sbSql.append("         UNION");
		sbSql.append("         SELECT KK0931_03.SVC_CD");
		sbSql.append("                ,KK0931_03.PRC_GRP_CD");
		sbSql.append("                ,KK0931_03.PCRS_CD");
		sbSql.append("                ,KK0931_03.PPLAN_CD");
		sbSql.append("                ,KK0931_03.CHK_SBT_CD");
		sbSql.append("                ,KK0931_03.AUTO_SHOSA_CHK_TG_CD");
		sbSql.append("           FROM KK_M_SVTA_KKKU_TAIAD KK0931_03");
		sbSql.append("          WHERE KK0931_03.SVTA_KKKU_WDASTISCP_CD = '03'");
		if (null == kaisenPlaceStateNm || "".equals(kaisenPlaceStateNm))
		{
			sbSql.append("            AND KK0931_03.SVTA_KKKU_TG_STATE_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_03.SVTA_KKKU_TG_STATE_NM = ?");
			arraylist.add(kaisenPlaceStateNm);
		}
		if (null == kaisenPlaceCityNm || "".equals(kaisenPlaceCityNm))
		{
			sbSql.append("            AND KK0931_03.SVTA_KKKU_TG_CITY_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_03.SVTA_KKKU_TG_CITY_NM = ?");
			arraylist.add(kaisenPlaceCityNm);
		}
		if (null == kaisenPlaceOaztsuNm || "".equals(kaisenPlaceOaztsuNm))
		{
			sbSql.append("            AND KK0931_03.SVTA_KKKU_TG_OAZTSU_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_03.SVTA_KKKU_TG_OAZTSU_NM = ?");
			arraylist.add(kaisenPlaceOaztsuNm);
		}
		sbSql.append("            AND KK0931_03.MK_FLG = '0'");
		sbSql.append("         UNION");
		sbSql.append("         SELECT KK0931_04.SVC_CD");
		sbSql.append("                ,KK0931_04.PRC_GRP_CD");
		sbSql.append("                ,KK0931_04.PCRS_CD");
		sbSql.append("                ,KK0931_04.PPLAN_CD");
		sbSql.append("                ,KK0931_04.CHK_SBT_CD");
		sbSql.append("                ,KK0931_04.AUTO_SHOSA_CHK_TG_CD");
		sbSql.append("           FROM KK_M_SVTA_KKKU_TAIAD KK0931_04");
		sbSql.append("          WHERE KK0931_04.SVTA_KKKU_WDASTISCP_CD = '04'");
		if (null == kaisenPlaceStateNm || "".equals(kaisenPlaceStateNm))
		{
			sbSql.append("            AND KK0931_04.SVTA_KKKU_TG_STATE_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_04.SVTA_KKKU_TG_STATE_NM = ?");
			arraylist.add(kaisenPlaceStateNm);
		}
		if (null == kaisenPlaceCityNm || "".equals(kaisenPlaceCityNm))
		{
			sbSql.append("            AND KK0931_04.SVTA_KKKU_TG_CITY_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_04.SVTA_KKKU_TG_CITY_NM = ?");
			arraylist.add(kaisenPlaceCityNm);
		}
		if (null == kaisenPlaceOaztsuNm || "".equals(kaisenPlaceOaztsuNm))
		{
			sbSql.append("            AND KK0931_04.SVTA_KKKU_TG_OAZTSU_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_04.SVTA_KKKU_TG_OAZTSU_NM = ?");
			arraylist.add(kaisenPlaceOaztsuNm);
		}
		if (null == kaisenPlaceAzchoNm || "".equals(kaisenPlaceAzchoNm))
		{
			sbSql.append("            AND KK0931_04.SVTA_KKKU_TG_AZCHO_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_04.SVTA_KKKU_TG_AZCHO_NM = ?");
			arraylist.add(kaisenPlaceAzchoNm);
		}
		sbSql.append("            AND KK0931_04.MK_FLG = '0'");
		sbSql.append("         UNION");
		sbSql.append("         SELECT KK0931_05.SVC_CD");
		sbSql.append("                ,KK0931_05.PRC_GRP_CD");
		sbSql.append("                ,KK0931_05.PCRS_CD");
		sbSql.append("                ,KK0931_05.PPLAN_CD");
		sbSql.append("                ,KK0931_05.CHK_SBT_CD");
		sbSql.append("                ,KK0931_05.AUTO_SHOSA_CHK_TG_CD");
		sbSql.append("           FROM KK_M_SVTA_KKKU_TAIAD KK0931_05");
		sbSql.append("          WHERE (KK0931_05.SVTA_KKKU_WDASTISCP_CD NOT IN ('01','02','03','04')");
		sbSql.append("                 OR KK0931_05.SVTA_KKKU_WDASTISCP_CD IS NULL)");
		if (null == kaisenPlaceStateNm || "".equals(kaisenPlaceStateNm))
		{
			sbSql.append("            AND KK0931_05.SVTA_KKKU_TG_STATE_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_05.SVTA_KKKU_TG_STATE_NM = ?");
			arraylist.add(kaisenPlaceStateNm);
		}
		if (null == kaisenPlaceCityNm || "".equals(kaisenPlaceCityNm))
		{
			sbSql.append("            AND KK0931_05.SVTA_KKKU_TG_CITY_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_05.SVTA_KKKU_TG_CITY_NM = ?");
			arraylist.add(kaisenPlaceCityNm);
		}
		if (null == kaisenPlaceOaztsuNm || "".equals(kaisenPlaceOaztsuNm))
		{
			sbSql.append("            AND KK0931_05.SVTA_KKKU_TG_OAZTSU_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_05.SVTA_KKKU_TG_OAZTSU_NM = ?");
			arraylist.add(kaisenPlaceOaztsuNm);
		}
		if (null == kaisenPlaceAzchoNm || "".equals(kaisenPlaceAzchoNm))
		{
			sbSql.append("            AND KK0931_05.SVTA_KKKU_TG_AZCHO_NM IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_05.SVTA_KKKU_TG_AZCHO_NM = ?");
			arraylist.add(kaisenPlaceAzchoNm);
		}
		if (null == kaisenPlaceBnchigo || "".equals(kaisenPlaceBnchigo))
		{
			sbSql.append("            AND KK0931_05.SVTA_KKKU_TG_BNCHIGO IS NULL");
		}
		else
		{
			sbSql.append("            AND KK0931_05.SVTA_KKKU_TG_BNCHIGO = ?");
			arraylist.add(kaisenPlaceBnchigo);
		}
		sbSql.append("            AND KK0931_05.MK_FLG = '0'");
		sbSql.append("        ) KK0931");
		sbSql.append("  WHERE KK0931.SVC_CD = ?");
		sbSql.append("    AND KK0931.PRC_GRP_CD = ?");
		sbSql.append("    AND KK0931.PCRS_CD = ?");
		sbSql.append("    AND KK0931.PPLAN_CD = ?");
		if (KIDOMOTO_CODE_BATCH.equals(kidoCd))
		{
			sbSql.append("    AND KK0931.AUTO_SHOSA_CHK_TG_CD = '1'");
		}

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0931ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			for (int iCnt = 0; iCnt < arraylist.size(); iCnt++)
			{
				// バインド変数に設定
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, arraylist.get(iCnt));
			}

			CAANJDBCUtil.setParam(pstmt, ++iPCnt, svcCd);
			CAANJDBCUtil.setParam(pstmt, ++iPCnt, prcGrpCd);
			CAANJDBCUtil.setParam(pstmt, ++iPCnt, pcrsCd);
			CAANJDBCUtil.setParam(pstmt, ++iPCnt, pplanCd);
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 返却用リスト
			ArrayList<String> retList = new ArrayList<String>();

			// 取得結果をリストに格納
			while (rsltQuery.next())
			{
				retList.add(rsltQuery.getString(KK0931ETMsg.CHK_SBT_CD));
			}

			return retList;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * チェック種別に従って各種チェックを行う
	 * </p>
	 * @param chkSbtCd チェック種別コード
	 * @param type マンション種別コード
	 * @param svckeiNo サービス契約番号
	 * @param svcCd サービスコード
	 * @param prcGrpCd 料金グループコード
	 * @param menkaihatAnkenNo 面開発案件番号
	 * @return チェック結果を返却
	 */
	private boolean isChkSrtCheck(String chkSbtCd, String type, String svckeiNo, String svcCd, String prcGrpCd, String menkaihatAnkenNo)
	{
		// チェック種別コードがメゾン物件警告(01)の場合
		if (CHK_SBT_CD_01.equals(chkSbtCd))
		{
			// マンション種別コードが"メゾン"(02)以外だった場合、エラー
			// 提供方式契約番号が未設定の場合は、マンション種別が取得できず住居形態種別がホームになる為、マンション種別コードのみの判定可能。
			if (!JYUKOKEITAI_MEZON.equals(type))
			{
				return false;
			}
		}

		// チェック種別コードがホームタイプ未展開エリア警告(04)の場合
		if (CHK_SBT_CD_04.equals(chkSbtCd))
		{
			// サービスコードがインターネットサービスかつ料金グループコードが"eo光ネットホームタイプ"(02)だった場合、エラー
			if (SVC_CD_01.equals(svcCd) && PRC_GRP_CD_02.equals(prcGrpCd))
			{
				return false;
			}

		}

		// チェック種別コードがマンションタイプ物件警告(05)の場合
		if (CHK_SBT_CD_05.equals(chkSbtCd))
		{
			// マンション種別コードが"マンション"(01)以外だった場合、エラー
			// 提供方式契約番号が未設定の場合は、マンション種別が取得できず住居形態種別がホームになる為、マンション種別コードのみの判定可能。
			if (!JYUKOKEITAI_MANSHON.equals(type))
			{
				return false;
			}
		}

		// チェック種別コードが再送信エリア警告(06)の場合
		if (CHK_SBT_CD_06.equals(chkSbtCd))
		{
			// サービスコードがテレビサービス(03)かチェックする
			if (SVC_CD_03.equals(svcCd))
			{
				// サービス契約<eo光TV>のカレント検索を行う
				CAANMsg msgKK0101 = getSvcKeiEohTv(svckeiNo);

				// 取得できなかった場合、エラー
				if (msgKK0101 == null)
				{
					return false;
				}

				// 電波障害案件番号が設定されていない場合、エラー
				if (msgKK0101.isNull(KK0101ETMsg.DMPS_ANKEN_NO))
				{
					return false;
				}
			}

		}

		// チェック種別コードが面開発案件エリア警告(08)の場合
		if (CHK_SBT_CD_08.equals(chkSbtCd))
		{
			// 面開発案件番号が未設定の場合、エラー
			if (menkaihatAnkenNo == null || "".equals(menkaihatAnkenNo))
			{
				return false;
			}
		}

		return true;
	}

	/**
	 * <p>
	 * サービス契約<eo光TV>のカレント検索を行う
	 * </p>
	 * @param svckeiNo サービス契約番号
	 * @return サービス契約の取得結果
	 */
	private CAANMsg getSvcKeiEohTv(String svckeiNo)
	{
		// サービス契約<eo光TV>のカレント検索を行う
		CAANMsg msgKK0101 = new CAANMsg(KK0101ETMsg.class.getName());
		msgKK0101.set(KK0101ETMsg.SVC_KEI_NO, svckeiNo);

		CAANMsg curMsg = new JKKejbKK0101DBABase().findByCurrent(msgKK0101);

		return curMsg;
	}

	/**
	 * <p>
	 * 申込書番号重複チェック
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param mskmDtlNo 申込明細番号
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkDuplicateMskmshoNo(CAANMsg inMsg, String mskmDtlNo)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkDuplicateMskmshoNo SHOSA_TG_CD = " + SHOSACHK_TRG_028);
		
		// 申込明細のカレントレコードを検索
		getMskmDtlList(mskmDtlNo);

		// 申込明細のカレントが存在しなければOKを返却する
		if (mskmDtlList.size() > 0)
		{
			// 申込明細ステータスがキャンセル済("920")の場合、OKを返却
			if (STATE_CANCEL.equals(mskmDtlList.get(0).get(KK0021ETMsg.MSKM_DTL_STAT)))
			{
				return RETURN_OK;
			}

			// 申込書番号に紐づく申込書番号重複情報リストを取得
			getMskmSyoNumberList(mskmDtlList.get(0).get(MSKMSHO_NO), mskmDtlList.get(0).get(KK0021ETMsg.MSKM_NO));

			// 申込書番号重複情報リストが存在する場合、NGを返却する
			if (mskmSyoNumberList.size() > 0)
			{
				return RETURN_NG;
			}

		}

		return RETURN_OK;

	}

	/**
	 * <p>
	 * 未照査サービス契約存在チェック
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param mskmDtlNo 申込明細番号
	 * @param kidoCd 機動元コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkSonzaiSvcMiSyosa(CAANMsg inMsg, String mskmDtlNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkSonzaiSvcMiSyosa SHOSA_TG_CD = " + SHOSACHK_TRG_029);
		
		// 申込明細のカレントレコードを検索
		getMskmDtlList(mskmDtlNo);

		// 申込明細のカレントが存在しなければOKを返却する
		if (mskmDtlList.size() > 0)
		{
			// 申込明細ステータスがキャンセル済("920")の場合、OKを返却
			if (STATE_CANCEL.equals(mskmDtlList.get(0).get(KK0021ETMsg.MSKM_DTL_STAT)))
			{
				return RETURN_OK;
			}

			// 未照査サービス契約情報を取得する
			getSvcMiSyosaList(mskmDtlList.get(0).get(KK0021ETMsg.SYSID), mskmDtlNo, getOpeDate(inMsg, kidoCd));

			for (Map<String, String> svcMiSyosa : svcMiSyosaList)
			{
				// 申込番号の比較
				if (!mskmDtlList.get(0).get(KK0021ETMsg.MSKM_NO).equals(svcMiSyosa.get(MSKM_NO)))
				{
					return RETURN_NG;
				}
			}
		}
		return RETURN_OK;
	}

	/**
	 * <p>
	 * 照査取消日チェックを行います。
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param syosaYmd 照査年月日
	 * @param kidoCd 起動元コード
	 * @param shosaDslFinCd 照査解約完了コード
	 * @return チェック結果(照査年月日と運用年月日が同日の場合OK:0、それ以外の場合NG:1)
	 */
	protected String chkSyosaCancelDay(CAANMsg inMsg, String syosaYmd, String kidoCd, String shosaDslFinCd)
	{
		// 運用日取得
		String opeDate = JKKModelCommon.getOpeDate(inMsg);

		// 照査解約完了コードが"1"(照査OK)以外の場合処理をOKとし処理を終了する
		if (!SHOSA_DSL_FIN_CD_OK.equals(shosaDslFinCd))
		{
			return RETURN_OK;
		}

		// 照査年月日と運用日を比較
		if (!opeDate.equals(syosaYmd))
		{
			// 照査年月日と運用日が同じでなければNGを返却
			return RETURN_NG;
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * 照査取消日チェックを行います。
	 * </p>
	 * @param inETMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @return チェック結果がOKの場合true、NGの場合false
	 */
	public boolean isChkSyosaCancelDay(CAANMsg inETMsg, String svcKeiNo)
	{
		// サービス契約番号が一致するカレントレコードを取得する
		CAANMsg kk0081Cond = new CAANMsg(KK0081ETMsg.class.getName());
		kk0081Cond.set(KK0081ETMsg.SVC_KEI_NO, svcKeiNo);
		kk0081Cond.set(KK0081ETMsg.RSV_APLY_YMD, JKKModelCommon.getOpeDate(inETMsg));
		CAANMsg kk0081Cur = new JKKejbKK0081DBABase().findByCurrent(kk0081Cond);
		
		if (null == kk0081Cur)
		{
			// サービス契約のカレントレコードが存在しない場合
			return false;
		}

		String syosaYmd = kk0081Cur.getString(KK0081ETMsg.SHOSA_YMD);
		String shosaDslFinCd = kk0081Cur.getString(KK0081ETMsg.SHOSA_DSL_FIN_CD);
		
		if (RETURN_OK.equals(this.chkSyosaCancelDay(inETMsg, syosaYmd, KIDOMOTO_CODE_ONLINE, shosaDslFinCd)))
		{
			// 照査年月日と運用日が同じ場合(照査取消日チェック結果がOKの場合)
			return true;
		}

		// 照査年月日と運用日が同じでない場合(照査取消日チェック結果がNGの場合)
		return false;
	}
	
	/**
	 * <p>
	 * 工事状態チェックを行います。
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param svcKeiNo サービス契約番号(ADSLの場合に使用)
	 * @param mskmDtlNo 申込明細番号(ADSL以外の場合に使用)
	 * @param kidoCd 起動元コード
	 * @param chkCd チェック対象種別(1:ADSL、2:ADSL以外)
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkStatusKoji(CAANMsg inMsg, String svcKeiNo, String mskmDtlNo, String kidoCd, String chkCd)
	{
		// チェック対象種別により処理を分岐する
		if (ADSL_FLAG.equals(chkCd))
		{
			// ADSL工事の検索を行う
			CAANMsg[] msgKK0621List = getADSLKoji(svcKeiNo);

			for (int i = 0; i < msgKK0621List.length; i++)
			{
				// 工事案件依頼年月日が設定されていた場合NGを返却
				if (!msgKK0621List[i].isNull(KK0621ETMsg.RENKEI_DTM))
				{
					return RETURN_NG;
				}
			}
		}
		else
		{
			// 申込明細_工事案内の全件検索
			CAANMsg[] msgKU0091List = getMskmDtlKojiAk(inMsg, mskmDtlNo, kidoCd);

			for (int i = 0; i < msgKU0091List.length; i++)
			{
				// 工事案件のカレント検索
				CAANMsg msgKU0011 = getKojiAk(msgKU0091List[i].getString(KU0091ETMsg.KOJIAK_NO));
				// 工事案件のレコードが存在しなければ次のレコードへ
				if (msgKU0011 == null)
				{
					continue;
				}

				// 工事案件依頼年月日が設定されていた場合NGを返却
				if (!msgKU0011.isNull(KU0011ETMsg.KOJIAK_REQYMD))
				{
					return RETURN_NG;
				}
			}
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * 工事状態チェック(ADSL)を行います。
	 * </p>
	 * @param inETMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param mskmDtlNo 申込明細番号
	 * @return チェック結果がOKの場合true、NGの場合false
	 */
	public boolean isChkStatusKojiADSL(CAANMsg inETMsg, String svcKeiNo, String mskmDtlNo)
	{
		if(RETURN_OK.equals(this.chkStatusKoji(inETMsg, svcKeiNo, mskmDtlNo, KIDOMOTO_CODE_ONLINE, ADSL_FLAG)))
		{
			// サービス契約番号をキーに取得した「ADSL工事」レコードの連携年月日時分秒が設定されていない場合
			// (工事状態チェック結果がOKの場合)
			return true;
		}

		// 上記以外の場合(工事状態チェック結果がNGの場合)
		return false;
	}
	
	/**
	 * <p>
	 * 工事状態チェック(ADSL以外)を行います。
	 * </p>
	 * @param inETMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param mskmDtlNo 申込明細番号
	 * @return チェック結果がOKの場合true、NGの場合false
	 */
	public boolean isChkStatusKojiExceptADSL(CAANMsg inETMsg, String svcKeiNo, String mskmDtlNo)
	{
		if(RETURN_OK.equals(this.chkStatusKoji(inETMsg, svcKeiNo, mskmDtlNo, KIDOMOTO_CODE_ONLINE, ADSL_EXCEPT_FLAG)))
		{
			// 指定された"申込明細番号"に紐付く「工事案件」の"工事案件ステータス" が"中止(900)"
			// または"工事案件依頼年月日"が設定されていない場合(工事状態チェック結果がOKの場合)
			return true;
		}

		// 上記以外の場合(工事状態チェック結果がNGの場合)
		return false;
	}
	
	/**
	 * <p>
	 * 機器配送状態チェックを行います。
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param judgeCd 判定コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkStatusKikiHaisou(CAANMsg inMsg, String svcKeiNo, String judgeCd)
	{
		// 回線経由の機器提供サービス契約のチェック有無
		boolean isKaisenChk = true;
		
		
		// サービス契約番号のパラメータチェック
		if (svcKeiNo == null || "".equals(svcKeiNo))
		{
			return RETURN_OK;
		}

		// 判定コードが1の場合について、カレントの異動区分を取得
		if("1".equals(judgeCd))
		{
			CAANMsg msg = new JKKejbKK0081DBABase().getKK0081Current(svcKeiNo, JKKModelCommon.getOpeDate(inMsg));
			// 異動区分がサービス追加の場合
			if(JKKModelConst.IDO_DIV_SVC_ADD.equals(msg.getString(KK0081ETMsg.IDO_DIV)))
			{
				isKaisenChk = false;
			}			
		}
		
		// 機器提供サービスのカレント検索
		CAANMsg[] msgKK0341List = getKktkSvcKei(svcKeiNo);
		// 配送対象物品の検索を行う
		CAANMsg[] msgDK0021List1 = getHaisoTgBpin(msgKK0341List);
		
		// 回線対象サービス契約、サービス契約回線内訳経由で機器提供サービスのカレント検索
		CAANMsg[] msgKK0341ByKK0241List = getKktkSvcKeiBySvcKaiUcwk(svcKeiNo);
        // 配送対象物品の検索を行う
		CAANMsg[] msgDK0021List2 = getHaisoTgBpin(msgKK0341ByKK0241List);

		// 配送のカレント検索を行い、対象の配送ステータスが存在しないかチェックする。
		// （判定コード「0」「1」：受付済("001")、中止("005")以外）
		if (isAfterHaisoPreparation(msgDK0021List1))
		{
			return RETURN_NG;
		}
		// もう一方のレコードでも配送のカレント検索とステータスチェックを実施
		if(isKaisenChk){
			if (isAfterHaisoPreparation(msgDK0021List2))
			{
				return RETURN_NG;
			}
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * 機器配送状態チェックを行います。
	 * </p>
	 * @param inETMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param judgeCd 判定コード
	 * @return チェック結果がOKの場合true、NGの場合false
	 */
	public boolean isChkStatusKikiHaisou(CAANMsg inETMsg, String svcKeiNo, String judgeCd)
	{
		if(RETURN_OK.equals(this.chkStatusKikiHaisou(inETMsg, svcKeiNo, judgeCd)))
		{
			// 機器配送状態チェック結果がOKの場合
			return true;
		}

		// 機器配送状態チェック結果がNGの場合
		return false;
	}
	
	/**
	 * <p>
	 * サービス契約番号に紐付く機器提供サービスのカレント検索を行います。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @return サービス契約番号に紐付く機器提供サービスのカレントレコードのリスト
	 */
	private CAANMsg[] getKktkSvcKei(String svcKeiNo)
	{
		CAANMsg kk0341Cond = new CAANMsg(KK0341ETMsg.class.getName());
		kk0341Cond.set(KK0341ETMsg.SVC_KEI_NO, svcKeiNo);
		kk0341Cond.set(KK0341ETMsg.MK_FLG, MK_FLG_0);
		
		CAANMsg[] kk0341List = null;

		// サービス契約番号に紐付く機器提供サービス契約を取得
		try
		{
			kk0341List = new KK0341LE().findByCondition(kk0341Cond);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}
		
		ArrayList<String> kktkSvcKeiNoList = new ArrayList<String>();
		
		for (CAANMsg msg : kk0341List)
		{
			String kktkSvcKeiNo = msg.getString(KK0341ETMsg.KKTK_SVC_KEI_NO);
			kktkSvcKeiNoList.add(kktkSvcKeiNo);
		}
		
		// 取得結果の機器提供サービス契約番号を集約し、機器提供サービス契約のカレントレコードを取得
		CAANMsg kk0341Cur = new CAANMsg(KK0341ETMsg.class.getName());
		ArrayList<CAANMsg> al = new ArrayList<CAANMsg>();
		
		kktkSvcKeiNoList = mergeValues(kktkSvcKeiNoList);
		
		CAANMsg kk0341CurCond = new CAANMsg(KK0341ETMsg.class.getName());
		String opeDate = JKKModelCommon.getOpeDate(kk0341CurCond);

		for (String kktkSvcKeiNo : kktkSvcKeiNoList)
		{
			kk0341CurCond.set(KK0341ETMsg.KKTK_SVC_KEI_NO, kktkSvcKeiNo);
			kk0341CurCond.set(KK0341ETMsg.RSV_APLY_YMD, opeDate);
			
			kk0341Cur = new JKKejbKK0341DBABase().findByCurrent(kk0341CurCond);
			al.add(kk0341Cur);
		}

		return kk0341List;
	}
		
	/**
	 * <p>
	 * サービス契約番号に紐付く機器提供サービスのカレント検索を行います(回線対象サービス契約経由)。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @return 回線対象サービス契約経由でサービス契約番号に紐付く機器提供サービスのカレントレコードのリスト
	 */
	private CAANMsg[] getKktkSvcKeiBySvcKaiUcwk(String svcKeiNo)
	{
		// サービス契約番号に紐付く回線対象サービス契約の検索
		CAANMsg[] kk0241List = getKaisenTgSvkeiViaSvcKei(svcKeiNo);

		CAANMsg[] kk0341List = null;
		ArrayList<CAANMsg> al = new ArrayList<CAANMsg>();
		String svcKeiKaisenUcwkNo = null;

		for (CAANMsg kk0241Msg : kk0241List)
		{
			// 取得した回線対象サービス契約のサービス契約回線内訳番号に紐付く機器提供サービス契約のカレント検索
			svcKeiKaisenUcwkNo = kk0241Msg.getString(KK0241ETMsg.SVC_KEI_KAISEN_UCWK_NO);
			kk0341List = getKktkSvcKeiViaKaisen(svcKeiKaisenUcwkNo);
			
			for (CAANMsg kk0341Msg : kk0341List)
			{
				// 機器提供サービス契約の取得結果をリストに格納
				al.add(kk0341Msg);
			}
		}
		
		return al.toArray(new CAANMsg[0]);
	}
		
	// IT2-2023-0000010 ADD START
	/**
	 * <p>
	 * 機器提供サービス契約番号に紐付く機器提供サービスの予約検索を行います。
	 * </p>
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @return 機器提供サービス契約番号に紐付く機器提供サービス契約の予約レコードのリスト
	 */
	private CAANMsg[] getKktkSvcKeiRsv(String kktkSvcKeiNo, String opeDate)
	{
		CAANMsg kk0341Cond = new CAANMsg(KK0341ETMsg.class.getName());
		kk0341Cond.set(KK0341ETMsg.KKTK_SVC_KEI_NO, kktkSvcKeiNo);
		kk0341Cond.set(KK0341ETMsg.RSV_APLY_YMD, opeDate);
		
		CAANMsg[] kk0341List = null;

		// サービス契約回線内訳番号に紐付く機器提供サービス契約
		kk0341List = new JKKejbKK0341DBABase().findByReserve(kk0341Cond);
		
		return kk0341List;
	}
	// IT2-2023-0000010 ADD END
	
	/**
	 * <p>
	 * サービス契約番号に紐付く回線対象サービス契約の検索を行います。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @return サービス契約番号に紐付く回線対象サービス契約のリスト
	 */
	private CAANMsg[] getKaisenTgSvkeiViaSvcKei(String svcKeiNo)
	{
		CAANMsg kk0241Cond = new CAANMsg(KK0241ETMsg.class.getName());
		kk0241Cond.set(KK0241ETMsg.SVC_KEI_NO, svcKeiNo);
		kk0241Cond.set(KK0241ETMsg.MK_FLG, MK_FLG_0);
		
		CAANMsg[] kk0241List = null;
		
		// サービス契約番号に紐付く機器提供
		try
		{
			kk0241List = new KK0241LE().findByCondition(kk0241Cond);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}
		
		return kk0241List;
	}
		
	/**
	 * <p>
	 * サービス契約回線内訳番号に紐付く機器提供サービスのカレント検索を行います。
	 * </p>
	 * @param svcKeiKaisenUcwkNo サービス契約回線内訳番号
	 * @return サービス契約回線内訳番号に紐付く機器提供サービスのカレントレコードのリスト
	 */
	private CAANMsg[] getKktkSvcKeiViaKaisen(String svcKeiKaisenUcwkNo)
	{
		CAANMsg kk0341Cond = new CAANMsg(KK0341ETMsg.class.getName());
		kk0341Cond.set(KK0341ETMsg.SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);
		kk0341Cond.set(KK0341ETMsg.MK_FLG, MK_FLG_0);
		
		CAANMsg[] kk0341List = null;

		// サービス契約回線内訳番号に紐付く機器提供サービス契約
		try
		{
			kk0341List = new KK0341LE().findByCondition(kk0341Cond);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}
		
		ArrayList<String> kktkSvcKeiNoList = new ArrayList<String>();
		
		for (CAANMsg msg : kk0341List)
		{
			String kktkSvcKeiNo = msg.getString(KK0341ETMsg.KKTK_SVC_KEI_NO);
			kktkSvcKeiNoList.add(kktkSvcKeiNo);
		}
		
		// 取得結果の機器提供サービス契約番号を集約し、機器提供サービス契約のカレントレコードを取得
		CAANMsg kk0341Cur = new CAANMsg(KK0341ETMsg.class.getName());
		ArrayList<CAANMsg> al = new ArrayList<CAANMsg>();
		
		kktkSvcKeiNoList = mergeValues(kktkSvcKeiNoList);
		
		CAANMsg kk0341CurCond = new CAANMsg(KK0341ETMsg.class.getName());
		String opeDate = JKKModelCommon.getOpeDate(kk0341CurCond);

		for (String kktkSvcKeiNo : kktkSvcKeiNoList)
		{
			kk0341CurCond.set(KK0341ETMsg.KKTK_SVC_KEI_NO, kktkSvcKeiNo);
			kk0341CurCond.set(KK0341ETMsg.RSV_APLY_YMD, opeDate);
			
			kk0341Cur = new JKKejbKK0341DBABase().findByCurrent(kk0341CurCond);
			al.add(kk0341Cur);
		}

		return al.toArray(new CAANMsg[0]);
	}
		
	/**
	 * <p>
	 * リストで受け取った値を一意に集約します(null値は集約対象外)。
	 * </p>
	 * @param al 集約対象リスト
	 * @return 集約結果リスト
	 */
	private ArrayList<String> mergeValues(ArrayList<String> al)
	{
		ArrayList<String> ret = new ArrayList<String>();
		
		for (String value : al)
		{
			if (null == value)
			{
				// null値は集約対象外
				continue;
			}
			
			boolean addFlg = true;
			
			for (String mergedValue : ret)
			{
				if (mergedValue.equals(value))
				{
					addFlg = false;
					break;
				}
			}
			
			if (addFlg)
			{
				ret.add(value);
			}
			
		}
		
		return ret;
	}
	
	/**
	 * <p>
	 * 照査不可サービス契約存在チェック
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param mskmDtlNo 申込明細番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkNotSvcKeiSyosa(CAANMsg inMsg, String mskmDtlNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkNotSvcKeiSyosa SHOSA_TG_CD = " + SHOSACHK_TRG_036);
		
		// 申込明細のカレントレコードを検索
		getMskmDtlList(mskmDtlNo);

		// 申込明細のカレントが存在しなければOKを返却する
		if (mskmDtlList.size() > 0)
		{
			
			// 申込明細ステータスがキャンセル済("920")の場合、OKを返却
			if (STATE_CANCEL.equals(mskmDtlList.get(0).get(KK0021ETMsg.MSKM_DTL_STAT)))
			{
				return RETURN_OK;
			}
			
			// 照査不可サービス契約情報を取得する
			getNotSvcKeiSyosaList(mskmDtlNo, mskmDtlList.get(0).get(KK0021ETMsg.MSKM_NO), getOpeDate(inMsg, kidoCd));

			// レコードが0件の場合は、OKを返却する
			for (Map<String, String> notSvcKeiSyosa : notSvcKeiSyosaList)
			{
				// 自動照査処理状態コードチェック(対象外(2)だった場合はNGを返却)
				if (AUTO_SHOSA_TRAN_STAT_CD_2.equals(notSvcKeiSyosa.get(AUTO_SHOSA_TRAN_STAT_CD)))
				{

					return RETURN_NG;
				}

				// 審査番号が設定されているかチェック
				if (notSvcKeiSyosa.get(JUDGE_NO) == null)
				{
					// 審査番号が設定されていない場合、審査レコードが存在しないためNG
					return RETURN_NG;
				}

				// 審査判定結果コードチェック(審査判定結果コードがNG("01")だった場合NGを返却)
				// NULLの場合は審査されていないため照査不可
				if (notSvcKeiSyosa.get(JUDGE_JUDGE_RSLT_CD) == null || RESULT_CD_NG.equals(notSvcKeiSyosa.get(JUDGE_JUDGE_RSLT_CD)))
				{
					return RETURN_NG;
				}

			}
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * 光ハイブリット回線契約数チェック
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param msgKK0081 サービス契約カレントレコード情報
	 * @param kidoCd 起動元コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String[] chkHikariHybridLineNum(CAANMsg inMsg, CAANMsg msgKK0081, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkHikariHybridLineNum SHOSA_TG_CD = " + SHOSACHK_TRG_038);
		
		// サービス契約カレントレコードの料金コースコードが
		// （"A59"（３Ｇ　７．２Ｍ　光ハイブリッドタイプ）または"A60"（３Ｇ　４２Ｍ　光ハイブリッドタイプ））以外の場合、OKを返却
		if (!(PRC_PCRS_CD_3G_HYBRID.equals(msgKK0081.getString(KK0081ETMsg.PCRS_CD)) ||
				PRC_PCRS_CD_3G_42_HYBRID.equals(msgKK0081.getString(KK0081ETMsg.PCRS_CD))))
		{
			// チェック結果, 置換文字列空白を返却
			return new String[]{RETURN_OK, ""};
		}

		// サービス契約番号に紐付く同一請求契約のサービス契約を検索
		getSvcKeiSameSeq(msgKK0081.getString(KK0081ETMsg.SVC_KEI_NO), getOpeDate(inMsg, kidoCd));

		// レコードが取得できなかった場合はNGを返却する
		if (null == svcKeiSameSeqList || svcKeiSameSeqList.size() == 0)
		{
			// チェック結果, 置換文字列ネット契約：0、光ハイブリッド契約：0を返却
			return new String[]{RETURN_NG, "0;0"};
		}

		// 取得したサービス契約のレコードをサービスコード単位に集計する
		int numNet = 0;
		int numMob = 0;

		for (int i = 0; i < svcKeiSameSeqList.size(); i++)
		{
			// 料金グループコードが以下の場合はネットにカウントする
			// "02"（ｅｏ光ネットホームタイプ）
			// "03"（ｅｏ光ネットメゾンタイプ）
			// "04"（ｅｏ光ネットマンションタイプ）
			if (HASH_NET_GRP_CD.containsKey(svcKeiSameSeqList.get(i).get(KK0081ETMsg.PRC_GRP_CD)))
			{
				numNet++;
			}

			// 料金コースコードが "A59"（３Ｇ　７．２Ｍ　光ハイブリッドタイプ）
			// または "A60"（３Ｇ　４２Ｍ　光ハイブリッドタイプ）の場合はモバイルにカウントする
			if (PRC_PCRS_CD_3G_HYBRID.equals(svcKeiSameSeqList.get(i).get(KK0081ETMsg.PCRS_CD)) ||
					PRC_PCRS_CD_3G_42_HYBRID.equals(svcKeiSameSeqList.get(i).get(KK0081ETMsg.PCRS_CD)))
			{
				numMob++;
			}
		}

		// 業務パラメータ取得（光ハイブリッド最大契約数）
		int param = 0;

		String macCnt = new JKKejbZM0321DBAccess().getParamE(WORK_PARAM_HHB_MAX_CNT);

		if (null != macCnt)
		{
			param = Integer.parseInt(macCnt);			
		}

		// モバイルの契約数が、ネットの契約数 × 最大契約数より多い場合はNGを返却
		if (numMob > numNet * param)
		{
			// チェック結果, 置換文字列=ネット契約：集計値、光ハイブリッド契約：集計値を返却
			return new String[]{RETURN_NG, numNet + ";" + numMob};
		}

		return new String[]{RETURN_OK, ""};
	}

	/**
	 * <p>
	 * サービス契約総戸数チェック
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param msgKK0081 サービス契約カレントレコード情報
	 * @param kidoCd 起動元コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkSvcKeiAllHouseNum(CAANMsg inMsg, CAANMsg msgKK0081, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkSvcKeiAllHouseNum SHOSA_TG_CD = " + SHOSACHK_TRG_039);
		
		// 運用日付の取得
		String opeDate = getOpeDate(inMsg, kidoCd);

		// 提供方式契約番号に紐付く提供方式契約の情報を取得
		CAANMsg retMsgKK0891 = getKaisenUseKeiBkn(msgKK0081.getString(KK0081ETMsg.TK_HOSHIKI_KEI_NO));

		// 該当のデータが存在しない場合はNGを返却する
		if (retMsgKK0891.isNull(KK0891ETMsg.TTL_KOSU))
		{
			return RETURN_NG;
		}
		
		// 物件管理番号に紐付く、カレントレコードと同じサービスのサービス契約件数を取得
		Long cntSameSvcKei = getSvcKeiSameKaisen(retMsgKK0891.getString(KK0891ETMsg.BKN_KNRI_NO), msgKK0081.getString(KK0081ETMsg.SVC_CD), opeDate);
		
		// 取得したデータの件数が総戸数を上回っている場合はNGを返却する
		if (cntSameSvcKei > retMsgKK0891.getStringAsLong(KK0891ETMsg.TTL_KOSU))
		{
			return RETURN_NG;
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * 提供方式契約のレコードを取得する
	 * </p>
	 * @param tkHoshikiKeiNo 提供方式契約番号
	 * @return 提供方式契約のレコード
	 *          提供方式契約にレコードが存在しなかった場合nullを返却する
	 */
	private CAANMsg getTkHoushikiKei(String tkHoshikiKeiNo)
	{
		// 提供方式契約検索
		CAANMsg msgKK0891 = new CAANMsg(KK0891ETMsg.class.getName());
		CAANMsg[] msgKK0891List = null;
		msgKK0891.set(KK0891ETMsg.TK_HOSHIKI_KEI_NO, tkHoshikiKeiNo);
		msgKK0891.set(KK0891ETMsg.MK_FLG, "0");
		KK0891LE le = new KK0891LE();

		try
		{
			msgKK0891List = le.findByCondition(msgKK0891);

		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

		if (msgKK0891List.length == 0)
		{
			return null;
		}

		// 唯一のPK、提供方式契約番号で検索をおこなっているため、取得できた場合結果は一件のみ
		return msgKK0891List[0];
	}

	/**
	 * <p>
	 * サービス契約番号に紐付くADSL工事のレコードを取得する。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @return ADSL工事のレコード
	 *          有効なレコードが存在しない場合はnullを返却する
	 *          レコードの件数が0の場合もnullを返却する
	 */
	private CAANMsg[] getADSLKoji(String svcKeiNo)
	{
		CAANMsg[] msgKK0621List = null;

		// ADSL工事全件検索
		CAANMsg msgKK0621 = new CAANMsg(KK0621ETMsg.class.getName());
		msgKK0621.set(KK0621ETMsg.SVC_KEI_NO, svcKeiNo);
		msgKK0621.set(KK0621ETMsg.MK_FLG, MK_FLG_0);
		KK0621LE leKK0621 = new KK0621LE();

		try
		{
			msgKK0621List = leKK0621.findByCondition(msgKK0621);

		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

		return msgKK0621List;
	}

	/**
	 * <p>
	 * 特定条件に一致するサービス別機器提供構成条件の全件検索を行う。
	 * </p>
	 * @param pcrcCd 料金コースコード
	 * @param opeDate 運用日付
	 * @return 以下の条件を満たすサービス別機器提供構成条件のレコードの配列
	 *          ┠サービス別機器型式構成条件種別コード："010"（eoモバイル光ハイブリッド）
	 *          ┠条件設定単位コード："02"（サービス契約料金コース）
	 *          ┠料金コースコード：引数の値
	 *          ┠条件判定用申込種類識別コード："01"（新規）
	 *          ┠サービス別機器型式構成条件適用開始年月日：運用日付以前
	 *          ┠サービス別機器型式構成条件適用終了年月日：運用日付以降
	 *          ┗無効フラグ："0"（有効）
	 */
	private CAANMsg[] findByCondKK2331Cond1(String pcrcCd, String opeDate)
	{
		// サービス別機器提供構成条件のレコードを取得する
		CAANMsg inMsgKK2331 = new CAANMsg(KK2331ETMsg.class.getName());
		inMsgKK2331.set(KK2331ETMsg.SVCB_KKMDST_JKN_SBT_CD, SVCB_KKMDST_JKN_SBT_HBR);
		inMsgKK2331.set(KK2331ETMsg.JKN_SETTE_TANI_CD, JKN_SETTE_TANI_PCRS);
		inMsgKK2331.set(KK2331ETMsg.PCRS_CD, pcrcCd);
		inMsgKK2331.set(KK2331ETMsg.JKN_JDG_MKM_KIND_SKBT_CD, JKN_JDG_KIND_NEW);
		inMsgKK2331.set(KK2331ETMsg.MK_FLG, MK_FLG_0);

		CAANMsg[] retMsgKK2331List = null;

		try
		{
			retMsgKK2331List = new KK2331LE().findByCondition(inMsgKK2331);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		// 返却用リスト
		ArrayList<CAANMsg> retArray = new ArrayList<CAANMsg>();

		for (CAANMsg retMsgKK2331: retMsgKK2331List)
		{
			// 取得したレコードが適用期間外の場合は除外する
			if (!isChkTStaYmd(retMsgKK2331.getString(KK2331ETMsg.SVCB_KKMDST_JKN_TSTAYMD), opeDate))
			{
				continue;
			}
			if (!isChkTEndYmd(retMsgKK2331.getString(KK2331ETMsg.SVCB_KKMDST_JKN_TENDYMD), opeDate))
			{
				continue;
			}

			retArray.add(retMsgKK2331);
		}

		return (CAANMsg[])retArray.toArray(new CAANMsg[0]);
	}

	/**
	 * <p>
	 * 特定条件に一致するサービス別機器提供構成条件の全件検索を行う。
	 * </p>
	 * @param pcrcCd 料金コースコード
	 * @param pcrcCdBf 変更前料金コースコード
	 * @param opeDate 運用日付
	 * @return 以下の条件を満たすサービス別機器提供構成条件のレコードの配列
	 *          ┠サービス別機器型式構成条件種別コード："010"（eoモバイル光ハイブリッド）
	 *          ┠条件設定単位コード："02"（サービス契約料金コース）
	 *          ┠料金コースコード：引数の値
	 *          ┠変更前料金コースコード：引数の値
	 *          ┠条件判定用申込種類識別コード："02"（変更）
	 *          ┠サービス別機器型式構成条件適用開始年月日：運用日付以前
	 *          ┠サービス別機器型式構成条件適用終了年月日：運用日付以降
	 *          ┗無効フラグ："0"（有効）
	 */
	private CAANMsg[] findByCondKK2331Cond2(String pcrcCd, String pcrcCdBf, String opeDate)
	{
		// サービス別機器提供構成条件のレコードを取得する
		CAANMsg inMsgKK2331 = new CAANMsg(KK2331ETMsg.class.getName());
		inMsgKK2331.set(KK2331ETMsg.SVCB_KKMDST_JKN_SBT_CD, SVCB_KKMDST_JKN_SBT_HBR);
		inMsgKK2331.set(KK2331ETMsg.JKN_SETTE_TANI_CD, JKN_SETTE_TANI_PCRS);
		inMsgKK2331.set(KK2331ETMsg.PCRS_CD, pcrcCd);
		inMsgKK2331.set(KK2331ETMsg.CHGE_BF_PCRS_CD, pcrcCdBf);
		inMsgKK2331.set(KK2331ETMsg.JKN_JDG_MKM_KIND_SKBT_CD, JKN_JDG_KIND_CNG);
		inMsgKK2331.set(KK2331ETMsg.MK_FLG, MK_FLG_0);

		CAANMsg[] retMsgKK2331List = null;

		try
		{
			retMsgKK2331List = new KK2331LE().findByCondition(inMsgKK2331);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		// 返却用リスト
		ArrayList<CAANMsg> retArray = new ArrayList<CAANMsg>();

		for (CAANMsg retMsgKK2331: retMsgKK2331List)
		{
			// 取得したレコードが適用期間外の場合は除外する
			if (!isChkTStaYmd(retMsgKK2331.getString(KK2331ETMsg.SVCB_KKMDST_JKN_TSTAYMD), opeDate))
			{
				continue;
			}
			if (!isChkTEndYmd(retMsgKK2331.getString(KK2331ETMsg.SVCB_KKMDST_JKN_TENDYMD), opeDate))
			{
				continue;
			}

			retArray.add(retMsgKK2331);
		}

		return (CAANMsg[])retArray.toArray(new CAANMsg[0]);
	}

	/**
	 * <p>
	 * 申込明細番号に紐付く申込明細_工事案件を取得する
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param mskmDtlNo 申込明細番号
	 * @param kidoCd 起動コード
	 * @return 申込明細_工事案件のレコード
	 *          有効なレコードが存在しない場合はnullを返却する
	 *          レコードの件数が0の場合もnullを返却する
	 */
	private CAANMsg[] getMskmDtlKojiAk(CAANMsg inMsg, String mskmDtlNo, String kidoCd)
	{
		CAANMsg[] msgKU0091List = null;
		ArrayList<CAANMsg> list = new ArrayList<CAANMsg>();

		// 申込明細_工事案件検索
		CAANMsg msgKU0091 = new CAANMsg(KU0091ETMsg.class.getName());
		msgKU0091.set(KU0091ETMsg.MSKM_DTL_NO, mskmDtlNo);
		msgKU0091.set(KU0091ETMsg.MK_FLG, MK_FLG_0);
		KU0091LE le = new KU0091LE();

		try
		{
			msgKU0091List = le.findByCondition(msgKU0091);

		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

		for (int i = 0; i < msgKU0091List.length; i++)
		{
			// 申込明細_工事案件適用開始年月日が運用日を迎えていなければ次のレコードへ
			if (!isChkTStaYmd(msgKU0091List[i].getString(KU0091ETMsg.MSKM_DTL_KOJIAK_TSTAYMD), getOpeDate(inMsg, kidoCd)))
			{
				continue;
			}
			// 申込明細_工事案件適用終了年月日が運用日を迎えていたら次のレコードへ
			if (!isChkTEndYmd(msgKU0091List[i].getString(KU0091ETMsg.MSKM_DTL_KOJIAK_TENDYMD), getOpeDate(inMsg, kidoCd)))
			{
				continue;
			}

			// 有効なメソッドをリストに格納する
			list.add(msgKU0091List[i]);
		}

		return (CAANMsg[])list.toArray(new CAANMsg[0]);
	}

	/**
	 * <p>
	 * 工事案件のレコードを取得する
	 * ※ステータスのチェックも同時に実施する
	 * </p>
	 * @param kojiakNo 工事案件番号
	 * @return 工事案件のレコード
	 *          存在しない場合はnullを返却する
	 */
	private CAANMsg getKojiAk(String kojiakNo)
	{
		CAANMsg[] msgKU0011List = null;

		// 工事案件の検索
		CAANMsg msgKU0011 = new CAANMsg(KU0011ETMsg.class.getName());
		msgKU0011.set(KU0011ETMsg.KOJIAK_NO, kojiakNo);
		msgKU0011.set(KU0011ETMsg.MK_FLG, MK_FLG_0);
		KU0011LE leKK0011 = new KU0011LE();

		try
		{
			msgKU0011List = leKK0011.findByCondition(msgKU0011);

		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

		// レコードが存在しなければnullを返却する
		if (msgKU0011List.length == 0)
		{
			return null;
		}
		
		// 20140924 IT1-2014-0000310 Update Start
//		// 工事案件ステータスが中止("900"),"工事完了済(200)"の場合nullを返却する
//		if (STATE_SUSPEND.equals(msgKU0011List[0].getString(KU0011ETMsg.KOJIAK_STAT))
//				|| STATE_KOJIFIN.equals(msgKU0011List[0].getString(KU0011ETMsg.KOJIAK_STAT)))
//		{
//			return null;
//		}
		// 工事案件ステータス「120」かつ マンション工事案件状態コードが設定されている場合
		if (STATE_TRKFIN.equals(msgKU0011List[0].getString(KU0011ETMsg.KOJIAK_STAT)) && 
			!msgKU0011List[0].isNull(KU0011ETMsg.MANS_KOJIAK_STAT_CD)) {
			
			// マンション工事案件状態コードが中止("900"),"工事完了済(200)"の場合nullを返却する
			if (STATE_SUSPEND.equals(msgKU0011List[0].getString(KU0011ETMsg.MANS_KOJIAK_STAT_CD))
					|| STATE_KOJIFIN.equals(msgKU0011List[0].getString(KU0011ETMsg.MANS_KOJIAK_STAT_CD)))
			{
				return null;
			}
		} else {
			// 工事案件ステータスが中止("900"),"工事完了済(200)"の場合nullを返却する
			if (STATE_SUSPEND.equals(msgKU0011List[0].getString(KU0011ETMsg.KOJIAK_STAT))
					|| STATE_KOJIFIN.equals(msgKU0011List[0].getString(KU0011ETMsg.KOJIAK_STAT)))
			{
				return null;
			}
		}
		// 20140924 IT1-2014-0000310 Update End

		// PKで検索しているため、取得できるレコードは必ず1件
		return msgKU0011List[0];
	}

	/**
	 * <p>
	 * 機器提供サービス契約に紐付く配送対象物品の検索
	 * </p>
	 * @param msgKK0341List 機器提供サービス契約のレコード
	 * @return 配送物品
	 */
	private CAANMsg[] getHaisoTgBpin(CAANMsg[] msgKK0341List)
	{
		CAANMsg[] msgDK0021List = null;
		ArrayList<CAANMsg> list = new ArrayList<CAANMsg>();

		try
		{
			for (int i = 0; i < msgKK0341List.length; i++)
			{
				// 配送対象物品の検索
				CAANMsg msgDK0021 = new CAANMsg(DK0021ETMsg.class.getName());
				msgDK0021.set(DK0021ETMsg.KKTK_SVC_KEI_NO, msgKK0341List[i].getString(KK0341ETMsg.KKTK_SVC_KEI_NO));
				msgDK0021.set(DK0021ETMsg.MK_FLG, MK_FLG_0);
				DK0021LE le = new DK0021LE();

				msgDK0021List = le.findByCondition(msgDK0021);

				// 取得した配送対象物品をリストに格納する
				for (int j = 0; j < msgDK0021List.length; j++)
				{
					list.add(msgDK0021List[j]);
				}
			}
		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

		return (CAANMsg[])list.toArray(new CAANMsg[0]);
	}

	/**
	 * <p>
	 * 配送の検索を行う
	 * </p>
	 * @param msgDK0021List メッセージキャリアの配列
	 * @return 配送の取得結果
	 */
	private CAANMsg[] getHaiso(CAANMsg[] msgDK0021List)
	{
		CAANMsg[] msgDK0011List = null;
		ArrayList<CAANMsg> list = new ArrayList<CAANMsg>();

		try
		{
			for (int i = 0; i < msgDK0021List.length; i++)
			{
				CAANMsg msgDK0011 = new CAANMsg(DK0011ETMsg.class.getName());
				msgDK0011.set(DK0011ETMsg.HAISO_NO, msgDK0021List[i].getString(DK0021ETMsg.HAISO_NO));
				msgDK0011.set(DK0011ETMsg.MK_FLG, MK_FLG_0);
				DK0011LE le = new DK0011LE();

				msgDK0011List = le.findByCondition(msgDK0011);

				for (int j = 0; j < msgDK0011List.length; j++)
				{
					list.add(msgDK0011List[j]);
				}
			}
		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

		return (CAANMsg[])list.toArray(new CAANMsg[0]);
	}

	/**
	 * <p>
	 * 配送ステータスが指示済以降の配送がないかチェックする
	 * ※指示済以降とは[002:指示済]、[003:出荷済]、[004:完了済]
	 *   中止は指示済以降に含めない
	 * </p>
	 * @param inMsgList 配送対象物品のレコード
	 * @return true:指示済以降のステータスが存在した
	 *          false:指示済以降のステータスが存在しなかった
	 */
	private boolean isAfterHaisoPreparation(CAANMsg[] inMsgList)
	{
		// 配送レコード取得
		CAANMsg[] msgDK0011List = getHaiso(inMsgList);

		for (int i = 0; i < msgDK0011List.length; i++)
		{
			// 配送ステータスを取得
			String status = msgDK0011List[i].getString(DK0011ETMsg.HAISO_STAT);

			// 受付済み(001)、中止(005)以外の場合、指示済み以降のためtrueを返却する
			if (!JKKModelConst.HAISO_STAT_UK_ZM.equals(status) && !JKKModelConst.HAISO_STAT_STP.equals(status))
			{
				return true;
			}
		}

		return false;
	}

	/**
	 * <p>
	 * サービス契約番号に紐づく機器提供情報リストを取得します。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日付
	 */
	private void getKktkInfoList(String svcKeiNo, String opeDate)
	{
		if (null != kktkInfoList)
		{
			// 機器提供情報リストが取得済の場合、処理を終了する
			return;
		}

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT KK0341.KKTK_SVC_KEI_NO ");
		sbSql.append("      , KK0341.PCRS_CD AS KK0341_PCRS_CD ");
		sbSql.append("      , KK0341.KKTK_SVC_CD AS KK0341_KKTK_SVC_CD ");
		sbSql.append("      , KK0801.PCRS_CD AS KK0801_PCRS_CD ");
		sbSql.append("      , KK0801.KKTK_SVC_CD AS KK0801_KKTK_SVC_CD ");
		sbSql.append("      , KK0801.PCRS_KKTK_SVC_TSTAYMD ");
		sbSql.append("      , KK0801.PCRS_KKTK_SVC_TENDYMD ");
		sbSql.append("      , KK0801.MIN_KKTK_SVC_CNT ");
		sbSql.append("      , KK0801.MAX_KKTK_SVC_CNT ");
		sbSql.append("      , KK0081.SVC_CD ");
		sbSql.append(" FROM   KK_T_KKTK_SVC_KEI KK0341 ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("        ( SELECT KK0081_TEMP.SVC_KEI_NO ");
		sbSql.append("               , KK0081_TEMP.SVC_CD ");
		sbSql.append("               , KK0081_TEMP.PCRS_CD ");
		sbSql.append("          FROM   KK_T_SVC_KEI KK0081_TEMP ");
		sbSql.append("          WHERE  ( KK0081_TEMP.SVC_KEI_NO, KK0081_TEMP.RSV_APLY_YMD || KK0081_TEMP.GENE_ADD_DTM) = ");
		sbSql.append("                 ( SELECT KK0081_TEMP_GENE.SVC_KEI_NO, MAX(KK0081_TEMP_GENE.RSV_APLY_YMD || KK0081_TEMP_GENE.GENE_ADD_DTM) AS KK0081_TEMP_MAX ");
		sbSql.append("                   FROM   KK_T_SVC_KEI KK0081_TEMP_GENE ");
		sbSql.append("                   WHERE  KK0081_TEMP_GENE.SVC_KEI_NO = KK0081_TEMP.SVC_KEI_NO ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.MK_FLG = '0' ");
		sbSql.append("                   GROUP BY KK0081_TEMP_GENE.SVC_KEI_NO ");
		sbSql.append("                 ) ");
		sbSql.append("        ) KK0081 ");
		sbSql.append("        ON  KK0341.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append(" LEFT OUTER JOIN ");
		sbSql.append("        ( SELECT KK0801_TEMP.PCRS_CD ");
		sbSql.append("               , KK0801_TEMP.KKTK_SVC_CD ");
		sbSql.append("               , KK0801_TEMP.PCRS_KKTK_SVC_TSTAYMD ");
		sbSql.append("               , KK0801_TEMP.PCRS_KKTK_SVC_TENDYMD ");
		sbSql.append("               , KK0801_TEMP.MIN_KKTK_SVC_CNT ");
		sbSql.append("               , KK0801_TEMP.MAX_KKTK_SVC_CNT ");
		sbSql.append("          FROM   KK_M_PCRS_KKTK_SVC KK0801_TEMP ");
		sbSql.append("          WHERE  ( KK0801_TEMP.PCRS_CD, KK0801_TEMP.KKTK_SVC_CD, KK0801_TEMP.RSV_APLY_YMD || KK0801_TEMP.GENE_ADD_DTM) = ");
		sbSql.append("                 ( SELECT KK0801_TEMP_GENE.PCRS_CD, KK0801_TEMP_GENE.KKTK_SVC_CD, MAX(KK0801_TEMP_GENE.RSV_APLY_YMD || KK0801_TEMP_GENE.GENE_ADD_DTM) AS KK0801_TEMP_MAX ");
		sbSql.append("                   FROM   KK_M_PCRS_KKTK_SVC KK0801_TEMP_GENE ");
		sbSql.append("                   WHERE  KK0801_TEMP_GENE.PCRS_CD = KK0801_TEMP.PCRS_CD ");
		sbSql.append("                   AND    KK0801_TEMP_GENE.KKTK_SVC_CD = KK0801_TEMP.KKTK_SVC_CD ");
		sbSql.append("                   AND    KK0801_TEMP_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("                   AND    KK0801_TEMP_GENE.MK_FLG = '0' ");
		sbSql.append("                   GROUP BY KK0801_TEMP_GENE.PCRS_CD, KK0801_TEMP_GENE.KKTK_SVC_CD ");
		sbSql.append("                 ) ");
		sbSql.append("        ) KK0801 ");
		sbSql.append("        ON  KK0081.PCRS_CD = KK0801.PCRS_CD ");
		sbSql.append("        AND KK0341.KKTK_SVC_CD = KK0801.KKTK_SVC_CD ");
		sbSql.append(" WHERE  KK0341.SVC_KEI_NO = ? ");
		sbSql.append(" AND    KK0341.KKTK_SVC_KEI_STAT NOT IN ('910', '920') ");
		sbSql.append(" AND    ( KK0341.KKTK_SVC_KEI_NO, KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM) = ");
		sbSql.append("        ( SELECT KK0341_GENE.KKTK_SVC_KEI_NO, MAX(KK0341_GENE.RSV_APLY_YMD || KK0341_GENE.GENE_ADD_DTM) AS KK0341_MAX ");
		sbSql.append("          FROM   KK_T_KKTK_SVC_KEI KK0341_GENE ");
		sbSql.append("          WHERE  KK0341_GENE.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ");
		sbSql.append("          AND    KK0341_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("          AND    KK0341_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("          AND    KK0341_GENE.MK_FLG = '0' ");
		sbSql.append("          GROUP BY KK0341_GENE.KKTK_SVC_KEI_NO ");
		sbSql.append("        ) ");
		sbSql.append(" UNION ALL ");
		sbSql.append(" SELECT KK0341.KKTK_SVC_KEI_NO ");
		sbSql.append("      , KK0341.PCRS_CD AS KK0341_PCRS_CD ");
		sbSql.append("      , KK0341.KKTK_SVC_CD AS KK0341_KKTK_SVC_CD ");
		sbSql.append("      , KK0801.PCRS_CD AS KK0801_PCRS_CD ");
		sbSql.append("      , KK0801.KKTK_SVC_CD AS KK0801_KKTK_SVC_CD ");
		sbSql.append("      , KK0801.PCRS_KKTK_SVC_TSTAYMD ");
		sbSql.append("      , KK0801.PCRS_KKTK_SVC_TENDYMD ");
		sbSql.append("      , KK0801.MIN_KKTK_SVC_CNT ");
		sbSql.append("      , KK0801.MAX_KKTK_SVC_CNT ");
		sbSql.append("      , KK0081.SVC_CD ");
		sbSql.append(" FROM   KK_T_KAISEN_TG_SVKEI KK0241 ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("        KK_T_KKTK_SVC_KEI KK0341 ");
		sbSql.append("        ON KK0241.SVC_KEI_KAISEN_UCWK_NO = KK0341.SVC_KEI_KAISEN_UCWK_NO ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("        ( SELECT KK0081_TEMP.SVC_KEI_NO ");
		sbSql.append("               , KK0081_TEMP.SVC_CD ");
		sbSql.append("               , KK0081_TEMP.PCRS_CD ");
		sbSql.append("          FROM   KK_T_SVC_KEI KK0081_TEMP ");
		sbSql.append("          WHERE  ( KK0081_TEMP.SVC_KEI_NO, KK0081_TEMP.RSV_APLY_YMD || KK0081_TEMP.GENE_ADD_DTM) = ");
		sbSql.append("                 ( SELECT KK0081_TEMP_GENE.SVC_KEI_NO, MAX(KK0081_TEMP_GENE.RSV_APLY_YMD || KK0081_TEMP_GENE.GENE_ADD_DTM) AS KK0081_TEMP_MAX ");
		sbSql.append("                   FROM   KK_T_SVC_KEI KK0081_TEMP_GENE ");
		sbSql.append("                   WHERE  KK0081_TEMP_GENE.SVC_KEI_NO = KK0081_TEMP.SVC_KEI_NO ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.MK_FLG = '0' ");
		sbSql.append("                   GROUP BY KK0081_TEMP_GENE.SVC_KEI_NO ");
		sbSql.append("                 ) ");
		sbSql.append("        ) KK0081 ");
		sbSql.append("        ON  KK0241.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append(" LEFT OUTER JOIN ");
		sbSql.append("        ( SELECT KK0801_TEMP.PCRS_CD ");
		sbSql.append("               , KK0801_TEMP.KKTK_SVC_CD ");
		sbSql.append("               , KK0801_TEMP.PCRS_KKTK_SVC_TSTAYMD ");
		sbSql.append("               , KK0801_TEMP.PCRS_KKTK_SVC_TENDYMD ");
		sbSql.append("               , KK0801_TEMP.MIN_KKTK_SVC_CNT ");
		sbSql.append("               , KK0801_TEMP.MAX_KKTK_SVC_CNT ");
		sbSql.append("          FROM   KK_M_PCRS_KKTK_SVC KK0801_TEMP ");
		sbSql.append("          WHERE  ( KK0801_TEMP.PCRS_CD, KK0801_TEMP.KKTK_SVC_CD, KK0801_TEMP.RSV_APLY_YMD || KK0801_TEMP.GENE_ADD_DTM) = ");
		sbSql.append("                 ( SELECT KK0801_TEMP_GENE.PCRS_CD, KK0801_TEMP_GENE.KKTK_SVC_CD, MAX(KK0801_TEMP_GENE.RSV_APLY_YMD || KK0801_TEMP_GENE.GENE_ADD_DTM) AS KK0801_TEMP_MAX ");
		sbSql.append("                   FROM   KK_M_PCRS_KKTK_SVC KK0801_TEMP_GENE ");
		sbSql.append("                   WHERE  KK0801_TEMP_GENE.PCRS_CD = KK0801_TEMP.PCRS_CD ");
		sbSql.append("                   AND    KK0801_TEMP_GENE.KKTK_SVC_CD = KK0801_TEMP.KKTK_SVC_CD ");
		sbSql.append("                   AND    KK0801_TEMP_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("                   AND    KK0801_TEMP_GENE.MK_FLG = '0' ");
		sbSql.append("                   GROUP BY KK0801_TEMP_GENE.PCRS_CD, KK0801_TEMP_GENE.KKTK_SVC_CD ");
		sbSql.append("                 ) ");
		sbSql.append("        ) KK0801 ");
		sbSql.append("        ON  KK0081.PCRS_CD = KK0801.PCRS_CD ");
		sbSql.append("        AND KK0341.KKTK_SVC_CD = KK0801.KKTK_SVC_CD ");
		sbSql.append(" WHERE  KK0241.SVC_KEI_NO = ? ");
		sbSql.append(" AND    KK0241.KAISEN_UCWK_USE_STAYMD <= ? ");
		sbSql.append(" AND    KK0241.KAISEN_UCWK_USE_ENDYMD >= ? ");
		sbSql.append(" AND    KK0241.MK_FLG = '0' ");
// ▽▽▽ #83584 Modify START
		//		sbSql.append(" AND    ((KK0081.SVC_CD IN ('01', '02') AND KK0341.KKTK_SVC_CD IN ('C005', 'C006', 'C008', 'C012', 'C024')) ");
		sbSql.append(" AND    ((KK0081.SVC_CD IN ('01', '02') AND KK0341.KKTK_SVC_CD IN ('C005', 'C006', 'C008', 'C012', 'C024', 'C025')) ");
// △△△ #83584 Modify END
		sbSql.append("         OR  ");
		sbSql.append("         (KK0081.SVC_CD = '03' AND KK0341.KKTK_SVC_CD = 'C013'))  ");
		sbSql.append(" AND    KK0341.KKTK_SVC_KEI_STAT NOT IN ('910', '920') ");
		sbSql.append(" AND    ( KK0341.KKTK_SVC_KEI_NO, KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM) = ");
		sbSql.append("        ( SELECT KK0341_GENE.KKTK_SVC_KEI_NO, MAX(KK0341_GENE.RSV_APLY_YMD || KK0341_GENE.GENE_ADD_DTM) AS KK0341_MAX ");
		sbSql.append("          FROM   KK_T_KKTK_SVC_KEI KK0341_GENE ");
		sbSql.append("          WHERE  KK0341_GENE.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ");
		sbSql.append("          AND    KK0341_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("          AND    KK0341_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("          AND    KK0341_GENE.MK_FLG = '0' ");
		sbSql.append("          GROUP BY KK0341_GENE.KKTK_SVC_KEI_NO ");
		sbSql.append("        ) ");

		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK0341ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, opeDate);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 4, opeDate);
			CAANJDBCUtil.setParam(pstmt, 5, opeDate);
			CAANJDBCUtil.setParam(pstmt, 6, opeDate);
			CAANJDBCUtil.setParam(pstmt, 7, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 8, opeDate);
			CAANJDBCUtil.setParam(pstmt, 9, opeDate);
			CAANJDBCUtil.setParam(pstmt,10, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(KKTK_SVC_KEI_NO, rsltQuery.getString(1));
				mapRslt.put(KK0341_PCRS_CD, rsltQuery.getString(2));
				mapRslt.put(KK0341_KKTK_SVC_CD, rsltQuery.getString(3));
				mapRslt.put(KK0801_PCRS_CD, rsltQuery.getString(4));
				mapRslt.put(KK0801_KKTK_SVC_CD, rsltQuery.getString(5));
				mapRslt.put(PCRS_KKTK_SVC_TSTAYMD, rsltQuery.getString(6));
				mapRslt.put(PCRS_KKTK_SVC_TENDYMD, rsltQuery.getString(7));
				mapRslt.put(MIN_KKTK_SVC_CNT, rsltQuery.getString(8));
				mapRslt.put(MAX_KKTK_SVC_CNT, rsltQuery.getString(9));
				mapRslt.put(SVC_CD, rsltQuery.getString(10));

				listRslt.add(mapRslt);
			}

			kktkInfoList = listRslt;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * サービス契約番号に紐づくオプション情報リストを取得します。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日付
	 */
	private void getOpInfoList(String svcKeiNo, String opeDate)
	{
		if (null != opInfoList)
		{
			// オプション情報リストが取得済の場合、処理を終了する
			return;
		}

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT KK0351.OP_SVC_KEI_NO ");
		sbSql.append("      , KK0351.PCRS_CD AS KK0351_PCRS_CD ");
		sbSql.append("      , KK0351.OP_SVC_CD AS KK0351_OP_SVC_CD ");
		sbSql.append("      , KK0811.PCRS_CD AS KK0811_PCRS_CD ");
		sbSql.append("      , KK0811.OP_SVC_CD AS KK0811_OP_SVC_CD ");
		sbSql.append("      , KK0811.PCRS_OP_SVC_TSTAYMD ");
		sbSql.append("      , KK0811.PCRS_OP_SVC_TENDYMD ");
		sbSql.append("      , KK0811.SHK_OP_SVC_CNT ");
		sbSql.append("      , KK0811.MAX_OP_SVC_CNT ");
		sbSql.append("      , KK0351.OP_SVC_KEI_HKHASYMD ");
		sbSql.append(" FROM   KK_T_OP_SVC_KEI KK0351 ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("        ( SELECT KK0081_TEMP.SVC_KEI_NO ");
		sbSql.append("               , KK0081_TEMP.PCRS_CD ");
		sbSql.append("          FROM   KK_T_SVC_KEI KK0081_TEMP ");
		sbSql.append("          WHERE  ( KK0081_TEMP.SVC_KEI_NO, KK0081_TEMP.RSV_APLY_YMD || KK0081_TEMP.GENE_ADD_DTM) = ");
		sbSql.append("                 ( SELECT KK0081_TEMP_GENE.SVC_KEI_NO, MAX(KK0081_TEMP_GENE.RSV_APLY_YMD || KK0081_TEMP_GENE.GENE_ADD_DTM) AS KK0081_TEMP_MAX ");
		sbSql.append("                   FROM   KK_T_SVC_KEI KK0081_TEMP_GENE ");
		sbSql.append("                   WHERE  KK0081_TEMP_GENE.SVC_KEI_NO = KK0081_TEMP.SVC_KEI_NO ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.MK_FLG = '0' ");
		sbSql.append("                   GROUP BY KK0081_TEMP_GENE.SVC_KEI_NO ");
		sbSql.append("                 ) ");
		sbSql.append("        ) KK0081 ");
		sbSql.append("        ON  KK0351.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append(" LEFT OUTER JOIN ");
		sbSql.append("        ( SELECT KK0811_TEMP.PCRS_CD ");
		sbSql.append("               , KK0811_TEMP.OP_SVC_CD ");
		sbSql.append("               , KK0811_TEMP.PCRS_OP_SVC_TSTAYMD ");
		sbSql.append("               , KK0811_TEMP.PCRS_OP_SVC_TENDYMD ");
		sbSql.append("               , KK0811_TEMP.SHK_OP_SVC_CNT ");
		sbSql.append("               , KK0811_TEMP.MAX_OP_SVC_CNT ");
		sbSql.append("          FROM   KK_M_PCRS_OP_SVC KK0811_TEMP ");
		sbSql.append("          WHERE  ( KK0811_TEMP.PCRS_CD, KK0811_TEMP.OP_SVC_CD, KK0811_TEMP.RSV_APLY_YMD || KK0811_TEMP.GENE_ADD_DTM) = ");
		sbSql.append("                 ( SELECT KK0811_TEMP_GENE.PCRS_CD, KK0811_TEMP_GENE.OP_SVC_CD, MAX(KK0811_TEMP_GENE.RSV_APLY_YMD || KK0811_TEMP_GENE.GENE_ADD_DTM) AS KK0811_TEMP_MAX ");
		sbSql.append("                   FROM   KK_M_PCRS_OP_SVC KK0811_TEMP_GENE ");
		sbSql.append("                   WHERE  KK0811_TEMP_GENE.PCRS_CD = KK0811_TEMP.PCRS_CD ");
		sbSql.append("                   AND    KK0811_TEMP_GENE.OP_SVC_CD = KK0811_TEMP.OP_SVC_CD ");
		sbSql.append("                   AND    KK0811_TEMP_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("                   AND    KK0811_TEMP_GENE.MK_FLG = '0' ");
		sbSql.append("                   GROUP BY KK0811_TEMP_GENE.PCRS_CD, KK0811_TEMP_GENE.OP_SVC_CD ");
		sbSql.append("                 ) ");
		sbSql.append("        ) KK0811 ");
		sbSql.append("        ON  KK0081.PCRS_CD = KK0811.PCRS_CD ");
		sbSql.append("        AND KK0351.OP_SVC_CD = KK0811.OP_SVC_CD ");
		sbSql.append(" WHERE  KK0351.SVC_KEI_NO = ? ");
		sbSql.append(" AND    KK0351.OP_SVC_KEI_STAT NOT IN ('910', '920') ");
		sbSql.append(" AND    ( KK0351.OP_SVC_KEI_NO, KK0351.RSV_APLY_YMD || KK0351.GENE_ADD_DTM) = ");
		sbSql.append("        ( SELECT KK0351_GENE.OP_SVC_KEI_NO, MAX(KK0351_GENE.RSV_APLY_YMD || KK0351_GENE.GENE_ADD_DTM) AS KK0351_MAX ");
		sbSql.append("          FROM   KK_T_OP_SVC_KEI KK0351_GENE ");
		sbSql.append("          WHERE  KK0351_GENE.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO ");
		sbSql.append("          AND    KK0351_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("          AND    KK0351_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("          AND    KK0351_GENE.MK_FLG = '0' ");
		sbSql.append("          GROUP BY KK0351_GENE.OP_SVC_KEI_NO ");
		sbSql.append("        ) ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0351ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, opeDate);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 4, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(OP_SVC_KEI_NO, rsltQuery.getString(1));
				mapRslt.put(KK0351_PCRS_CD, rsltQuery.getString(2));
				mapRslt.put(KK0351_OP_SVC_CD, rsltQuery.getString(3));
				mapRslt.put(KK0811_PCRS_CD, rsltQuery.getString(4));
				mapRslt.put(KK0811_OP_SVC_CD, rsltQuery.getString(5));
				mapRslt.put(PCRS_OP_SVC_TSTAYMD, rsltQuery.getString(6));
				mapRslt.put(PCRS_OP_SVC_TENDYMD, rsltQuery.getString(7));
				mapRslt.put(SHK_OP_SVC_CNT, rsltQuery.getString(8));
				mapRslt.put(MAX_OP_SVC_CNT, rsltQuery.getString(9));
				mapRslt.put(OP_SVC_KEI_HKHASYMD, rsltQuery.getString(10));

				listRslt.add(mapRslt);
			}

			opInfoList = listRslt;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * サービス契約番号に紐付く課金先を取得し、
	 * その課金先に紐付く督促レコードのステータスを取得する
	 * </p>
	 * @param svcKeiNo サービス契約
	 * @param opeDate 運用日付
	 */
	private void getTokusoku(String svcKeiNo, String opeDate)
	{
		// 既に督促情報が取得済みであれば処理は行わない
		if (tokusokuInfoList != null)
		{
			return;
		}

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文_基本部1
		StringBuffer sbSql = new StringBuffer();

		// SQL文生成
		sbSql.append(" SELECT CH0231.TOKUSOKU_STAT ");
		sbSql.append("      , CH0231.MK_FLG ");
		sbSql.append(" FROM   CH_T_TOKUSOKU CH0231 ");
		sbSql.append(" INNER JOIN ( ");
		sbSql.append("     SELECT KK0321.SEIKY_KEI_NO ");
		sbSql.append("          , KK0321.KAKINS_TSTAYMD ");
		sbSql.append("          , KK0321.KAKINS_TENDYMD ");
		sbSql.append("          , KK0321.MK_FLG ");
		sbSql.append("     FROM   KK_T_KAKINS KK0321 ");
		sbSql.append("     WHERE  EXISTS ( ");
		sbSql.append("         SELECT 1 ");
		sbSql.append("         FROM   KK_T_SVC_KEI KK0081 ");
		sbSql.append("         WHERE  KK0321.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append("         AND    KK0081.SVC_KEI_NO = ?  ");
		sbSql.append("         AND    KK0081.SVC_KEI_STAT NOT IN('910', '920') ");
		sbSql.append("         AND   (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) = ( ");
		sbSql.append("             SELECT KK0081_TEMP.SVC_KEI_NO, MAX(KK0081_TEMP.RSV_APLY_YMD || KK0081_TEMP.GENE_ADD_DTM) AS KK0081_TEMP_MAX ");
		sbSql.append("             FROM   KK_T_SVC_KEI KK0081_TEMP ");
		sbSql.append("             WHERE  KK0081_TEMP.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append("             AND    KK0081_TEMP.RSV_APLY_CD = '2' ");
		sbSql.append("             AND    KK0081_TEMP.RSV_APLY_YMD <= ? ");
		sbSql.append("             AND    KK0081_TEMP.MK_FLG = '0' ");
		sbSql.append("             GROUP BY KK0081_TEMP.SVC_KEI_NO ");
		sbSql.append("         ) ");
		sbSql.append("     ) ");
		sbSql.append("     UNION ALL ");
		sbSql.append("     SELECT KK0321.SEIKY_KEI_NO ");
		sbSql.append("          , KK0321.KAKINS_TSTAYMD ");
		sbSql.append("          , KK0321.KAKINS_TENDYMD ");
		sbSql.append("          , KK0321.MK_FLG ");
		sbSql.append("     FROM   KK_T_KAKINS KK0321 ");
		sbSql.append("     WHERE  EXISTS ( ");
		sbSql.append("         SELECT 1 ");
		sbSql.append("         FROM   KK_T_SVC_KEI_UCWK KK0161 ");
		sbSql.append("         WHERE  KK0321.SVC_KEI_UCWK_NO = KK0161.SVC_KEI_UCWK_NO ");
		sbSql.append("         AND    KK0161.SVC_KEI_NO = ? ");
		sbSql.append("         AND    KK0161.SVC_KEI_UCWK_STAT NOT IN('910', '920') ");
		sbSql.append("         AND   (KK0161.SVC_KEI_UCWK_NO, KK0161.RSV_APLY_YMD || KK0161.GENE_ADD_DTM) = ( ");
		sbSql.append("             SELECT KK0161_TEMP.SVC_KEI_UCWK_NO, MAX(KK0161_TEMP.RSV_APLY_YMD || KK0161_TEMP.GENE_ADD_DTM) AS KK0161_TEMP_MAX ");
		sbSql.append("             FROM   KK_T_SVC_KEI_UCWK KK0161_TEMP ");
		sbSql.append("             WHERE  KK0161_TEMP.SVC_KEI_UCWK_NO = KK0161.SVC_KEI_UCWK_NO ");
		sbSql.append("             AND    KK0161_TEMP.RSV_APLY_CD = '2' ");
		sbSql.append("             AND    KK0161_TEMP.RSV_APLY_YMD <= ? ");
		sbSql.append("             AND    KK0161_TEMP.MK_FLG = '0' ");
		sbSql.append("             GROUP BY KK0161_TEMP.SVC_KEI_UCWK_NO ");
		sbSql.append("         ) ");
		sbSql.append("     ) ");
		sbSql.append("     UNION ALL ");
		sbSql.append("     SELECT KK0321.SEIKY_KEI_NO ");
		sbSql.append("          , KK0321.KAKINS_TSTAYMD ");
		sbSql.append("          , KK0321.KAKINS_TENDYMD ");
		sbSql.append("          , KK0321.MK_FLG ");
		sbSql.append("     FROM   KK_T_KAKINS KK0321 ");
		sbSql.append("     WHERE  EXISTS ( ");
		sbSql.append("         SELECT 1 ");
		sbSql.append("         FROM   KK_T_KKTK_SVC_KEI KK0341 ");
		sbSql.append("         WHERE  KK0321.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ");
		sbSql.append("         AND    KK0341.SVC_KEI_NO = ? ");
		sbSql.append("         AND    KK0341.KKTK_SVC_KEI_STAT NOT IN('910', '920') ");
		sbSql.append("         AND   (KK0341.KKTK_SVC_KEI_NO, KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM) = ( ");
		sbSql.append("             SELECT KK0341_TEMP.KKTK_SVC_KEI_NO, MAX(KK0341_TEMP.RSV_APLY_YMD || KK0341_TEMP.GENE_ADD_DTM) AS KK0341_TEMP_MAX ");
		sbSql.append("             FROM   KK_T_KKTK_SVC_KEI KK0341_TEMP ");
		sbSql.append("             WHERE  KK0341_TEMP.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ");
		sbSql.append("             AND    KK0341_TEMP.RSV_APLY_CD = '2' ");
		sbSql.append("             AND    KK0341_TEMP.RSV_APLY_YMD <= ? ");
		sbSql.append("             AND    KK0341_TEMP.MK_FLG = '0' ");
		sbSql.append("             GROUP BY KK0341_TEMP.KKTK_SVC_KEI_NO ");
		sbSql.append("         ) ");
		sbSql.append("     ) ");
		sbSql.append("     UNION ALL ");
		sbSql.append("     SELECT KK0321.SEIKY_KEI_NO ");
		sbSql.append("          , KK0321.KAKINS_TSTAYMD ");
		sbSql.append("          , KK0321.KAKINS_TENDYMD ");
		sbSql.append("          , KK0321.MK_FLG ");
		sbSql.append("     FROM   KK_T_KAKINS KK0321 ");
		sbSql.append("     WHERE  EXISTS ( ");
		sbSql.append("         SELECT 1 ");
		sbSql.append("         FROM   KK_T_KKTK_SVC_KEI KK0341 ");
		sbSql.append("         WHERE  KK0321.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ");
		sbSql.append("         AND    KK0341.SVC_KEI_KAISEN_UCWK_NO in ( ");
		sbSql.append("             SELECT KK0241.SVC_KEI_KAISEN_UCWK_NO ");
		sbSql.append("             FROM   KK_T_KAISEN_TG_SVKEI KK0241 ");
		sbSql.append("             WHERE  KK0241.SVC_KEI_NO = ? ");
		sbSql.append("             AND    KK0241.KAISEN_UCWK_USE_STAYMD <= ? ");
		sbSql.append("             AND    KK0241.KAISEN_UCWK_USE_ENDYMD >= ? ");
		sbSql.append("             AND    KK0241.MK_FLG = '0' ");
		sbSql.append("         ) ");
		sbSql.append("         AND    KK0341.KKTK_SVC_KEI_STAT NOT IN('910', '920') ");
		sbSql.append("         AND   (KK0341.KKTK_SVC_KEI_NO, KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM) = ( ");
		sbSql.append("             SELECT KK0341_TEMP.KKTK_SVC_KEI_NO, MAX(KK0341_TEMP.RSV_APLY_YMD || KK0341_TEMP.GENE_ADD_DTM) AS KK0341_TEMP_MAX ");
		sbSql.append("             FROM   KK_T_KKTK_SVC_KEI KK0341_TEMP ");
		sbSql.append("             WHERE  KK0341_TEMP.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ");
		sbSql.append("             AND    KK0341_TEMP.RSV_APLY_CD = '2' ");
		sbSql.append("             AND    KK0341_TEMP.RSV_APLY_YMD <= ? ");
		sbSql.append("             AND    KK0341_TEMP.MK_FLG = '0' ");
		sbSql.append("             GROUP BY KK0341_TEMP.KKTK_SVC_KEI_NO ");
		sbSql.append("         ) ");
		sbSql.append("     ) ");
		sbSql.append("     UNION ALL ");
		sbSql.append("     SELECT KK0321.SEIKY_KEI_NO ");
		sbSql.append("          , KK0321.KAKINS_TSTAYMD ");
		sbSql.append("          , KK0321.KAKINS_TENDYMD ");
		sbSql.append("          , KK0321.MK_FLG ");
		sbSql.append("     FROM   KK_T_KAKINS KK0321 ");
		sbSql.append("     WHERE  EXISTS ( ");
		sbSql.append("         SELECT 1 ");
		sbSql.append("         FROM   KK_T_OP_SVC_KEI KK0351  ");
		sbSql.append("         WHERE  KK0321.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO ");
		sbSql.append("         AND    KK0351.SVC_KEI_NO = ? ");
		sbSql.append("         AND    KK0351.OP_SVC_KEI_STAT NOT IN('910', '920') ");
		sbSql.append("         AND   (KK0351.OP_SVC_KEI_NO, KK0351.RSV_APLY_YMD || KK0351.GENE_ADD_DTM) = ( ");
		sbSql.append("             SELECT KK0351_TEMP.OP_SVC_KEI_NO, MAX(KK0351_TEMP.RSV_APLY_YMD || KK0351_TEMP.GENE_ADD_DTM) AS KK0351_TEMP_MAX ");
		sbSql.append("             FROM   KK_T_OP_SVC_KEI KK0351_TEMP ");
		sbSql.append("             WHERE  KK0351_TEMP.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO ");
		sbSql.append("             AND    KK0351_TEMP.RSV_APLY_CD = '2' ");
		sbSql.append("             AND    KK0351_TEMP.RSV_APLY_YMD <= ? ");
		sbSql.append("             AND    KK0351_TEMP.MK_FLG = '0' ");
		sbSql.append("             GROUP BY KK0351_TEMP.OP_SVC_KEI_NO ");
		sbSql.append("         ) ");
		sbSql.append("     ) ");
		sbSql.append("     UNION ALL ");
		sbSql.append("     SELECT KK0321.SEIKY_KEI_NO ");
		sbSql.append("          , KK0321.KAKINS_TSTAYMD ");
		sbSql.append("          , KK0321.KAKINS_TENDYMD ");
		sbSql.append("          , KK0321.MK_FLG ");
		sbSql.append("     FROM   KK_T_KAKINS KK0321 ");
		sbSql.append("     WHERE  EXISTS ( ");
		sbSql.append("         SELECT 1 ");
		sbSql.append("         FROM   KK_T_SBOP_SVC_KEI KK0401  ");
		sbSql.append("         WHERE  KK0321.OP_SVC_KEI_NO = KK0401.OP_SVC_KEI_NO ");
		sbSql.append("         AND    KK0321.SBOP_SVC_KEI_NO = KK0401.SBOP_SVC_KEI_NO ");
		sbSql.append("         AND    KK0401.OP_SVC_KEI_NO in ( ");
		sbSql.append("             SELECT KK0351.OP_SVC_KEI_NO ");
		sbSql.append("             FROM   KK_T_OP_SVC_KEI KK0351 ");
		sbSql.append("             WHERE  KK0351.SVC_KEI_NO = ? ");
		sbSql.append("             AND    KK0351.OP_SVC_KEI_STAT NOT IN('910', '920') ");
		sbSql.append("             AND   (KK0351.OP_SVC_KEI_NO, KK0351.RSV_APLY_YMD || KK0351.GENE_ADD_DTM) = ( ");
		sbSql.append("                 SELECT KK0351_TEMP.OP_SVC_KEI_NO, MAX(KK0351_TEMP.RSV_APLY_YMD || KK0351_TEMP.GENE_ADD_DTM) AS KK0351_TEMP_MAX ");
		sbSql.append("                 FROM   KK_T_OP_SVC_KEI KK0351_TEMP ");
		sbSql.append("                 WHERE  KK0351_TEMP.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO ");
		sbSql.append("                 AND    KK0351_TEMP.RSV_APLY_CD = '2' ");
		sbSql.append("                 AND    KK0351_TEMP.RSV_APLY_YMD <= ? ");
		sbSql.append("                 AND    KK0351_TEMP.MK_FLG = '0' ");
		sbSql.append("                 GROUP BY KK0351_TEMP.OP_SVC_KEI_NO ");
		sbSql.append("             ) ");
		sbSql.append("         ) ");
		sbSql.append("         AND    KK0401.SBOP_SVC_KEI_STAT NOT IN('910', '920') ");
		sbSql.append("         AND   (KK0401.OP_SVC_KEI_NO, KK0401.SBOP_SVC_KEI_NO, KK0401.RSV_APLY_YMD || KK0401.GENE_ADD_DTM) = ( ");
		sbSql.append("             SELECT KK0401_TEMP.OP_SVC_KEI_NO, KK0401_TEMP.SBOP_SVC_KEI_NO, MAX(KK0401_TEMP.RSV_APLY_YMD || KK0401_TEMP.GENE_ADD_DTM) AS KK0401_TEMP_MAX ");
		sbSql.append("             FROM   KK_T_SBOP_SVC_KEI KK0401_TEMP ");
		sbSql.append("             WHERE  KK0401_TEMP.OP_SVC_KEI_NO = KK0401.OP_SVC_KEI_NO ");
		sbSql.append("             AND    KK0401_TEMP.SBOP_SVC_KEI_NO = KK0401.SBOP_SVC_KEI_NO ");
		sbSql.append("             AND    KK0401_TEMP.RSV_APLY_CD = '2' ");
		sbSql.append("             AND    KK0401_TEMP.RSV_APLY_YMD <= ? ");
		sbSql.append("             AND    KK0401_TEMP.MK_FLG = '0' ");
		sbSql.append("             GROUP BY KK0401_TEMP.OP_SVC_KEI_NO, KK0401_TEMP.SBOP_SVC_KEI_NO ");
		sbSql.append("         ) ");
		sbSql.append("     ) ");
		sbSql.append("     UNION ALL ");
		sbSql.append("     SELECT KK0321.SEIKY_KEI_NO ");
		sbSql.append("          , KK0321.KAKINS_TSTAYMD ");
		sbSql.append("          , KK0321.KAKINS_TENDYMD ");
		sbSql.append("          , KK0321.MK_FLG ");
		sbSql.append("     FROM   KK_T_KAKINS KK0321 ");
		sbSql.append("     WHERE  EXISTS ( ");
		sbSql.append("         SELECT 1 ");
		sbSql.append("         FROM   KK_T_SEIOPSVC_KEI KK0441  ");
		sbSql.append("         WHERE  KK0321.SEIOPSVC_KEI_NO = KK0441.SEIOPSVC_KEI_NO ");
		sbSql.append("         AND    KK0441.SVC_KEI_NO = ? ");
		sbSql.append("         AND    KK0441.SEIOPSVC_KEI_STAT NOT IN('910', '920') ");
		sbSql.append("         AND   (KK0441.SEIOPSVC_KEI_NO, KK0441.RSV_APLY_YMD || KK0441.GENE_ADD_DTM) = ( ");
		sbSql.append("             SELECT KK0441_TEMP.SEIOPSVC_KEI_NO, MAX(KK0441_TEMP.RSV_APLY_YMD || KK0441_TEMP.GENE_ADD_DTM) AS KK0441_TEMP_MAX ");
		sbSql.append("             FROM   KK_T_SEIOPSVC_KEI KK0441_TEMP ");
		sbSql.append("             WHERE  KK0441_TEMP.SEIOPSVC_KEI_NO = KK0441.SEIOPSVC_KEI_NO ");
		sbSql.append("             AND    KK0441_TEMP.RSV_APLY_CD = '2' ");
		sbSql.append("             AND    KK0441_TEMP.RSV_APLY_YMD <= ? ");
		sbSql.append("             AND    KK0441_TEMP.MK_FLG = '0' ");
		sbSql.append("             GROUP BY KK0441_TEMP.SEIOPSVC_KEI_NO ");
		sbSql.append("         ) ");
		sbSql.append("     ) ");
		sbSql.append(" ) KK0321_RESULT ");
		sbSql.append(" ON     KK0321_RESULT.SEIKY_KEI_NO = CH0231.SEIKY_KEI_NO ");
		sbSql.append(" AND    KK0321_RESULT.KAKINS_TSTAYMD <= ? ");
		sbSql.append(" AND    KK0321_RESULT.KAKINS_TENDYMD >= ? ");
		sbSql.append(" AND    KK0321_RESULT.MK_FLG = '0' ");
		sbSql.append(" WHERE  CH0231.TOKUSOKU_STAT >= '40' ");
		sbSql.append(" AND    CH0231.MK_FLG = '0' ");

		try
		{
			// コネクション取得
			con = JSYejbConnection.getConnection(KK0351ETMsg.getTableName());

			// prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			// バインド変数の設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 4, opeDate);
			CAANJDBCUtil.setParam(pstmt, 5, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 6, opeDate);
			CAANJDBCUtil.setParam(pstmt, 7, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 8, opeDate);
			CAANJDBCUtil.setParam(pstmt, 9, opeDate);
			CAANJDBCUtil.setParam(pstmt, 10, opeDate);
			CAANJDBCUtil.setParam(pstmt, 11, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 12, opeDate);
			CAANJDBCUtil.setParam(pstmt, 13, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 14, opeDate);
			CAANJDBCUtil.setParam(pstmt, 15, opeDate);
			CAANJDBCUtil.setParam(pstmt, 16, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 17, opeDate);
			CAANJDBCUtil.setParam(pstmt, 18, opeDate);
			CAANJDBCUtil.setParam(pstmt, 19, opeDate);

			// ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				HashMap<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(TOKUSOKU_STAT, rsltQuery.getString(1));
				mapRslt.put(MK_FLG, rsltQuery.getString(2));
				listRslt.add(mapRslt);
			}
			// 取得した情報をメンバ変数に格納
			tokusokuInfoList = listRslt;

		}
		catch (SQLException e1)
		{
			throw new CAANRuntimeException(e1);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 申込書番号に紐づく申込書番号重複情報リストを取得します。
	 * </p>
	 * @param mskmShoNo 申込書番号
	 * @param mskmNo 申込番号
	 */
	private void getMskmSyoNumberList(String mskmShoNo, String mskmNo)
	{
		if (mskmShoNo == null || "".equals(mskmShoNo))
		{
			return;
		}

		if (null != mskmSyoNumberList)
		{
			// 申込書番号重複情報リストが取得済の場合、処理を終了する
			return;
		}

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT KK0021.MSKM_DTL_NO ");
		sbSql.append(" FROM   KK_T_MSKM_DTL KK0021 ");
		sbSql.append(" WHERE  KK0021.MSKMSHO_NO = ? ");
		sbSql.append(" AND    KK0021.MSKM_NO NOT IN (?) ");
		sbSql.append(" AND    KK0021.MSKM_DTL_STAT NOT IN ('920') ");
		sbSql.append(" AND   (KK0021.MSKM_DTL_NO, KK0021.GENE_ADD_DTM) = ");
		sbSql.append("     ( SELECT KK0021_GENE.MSKM_DTL_NO, MAX(KK0021_GENE.GENE_ADD_DTM) AS KK0021_MAX ");
		sbSql.append("       FROM   KK_T_MSKM_DTL KK0021_GENE ");
		sbSql.append("       WHERE  KK0021_GENE.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ");
		sbSql.append("       AND    KK0021_GENE.MK_FLG = '0' ");
		sbSql.append("       GROUP BY KK0021_GENE.MSKM_DTL_NO ");
		sbSql.append("     ) ");

		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK0021ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, mskmShoNo);
			CAANJDBCUtil.setParam(pstmt, 2, mskmNo);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(MSKM_DTL_NO, rsltQuery.getString(1));

				listRslt.add(mapRslt);
			}

			mskmSyoNumberList = listRslt;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * SYSIDに紐づく未照査サービス契約情報リストを取得します。
	 * </p>
	 * @param sysID SYSID
	 * @param mskmDtlNo 申込明細番号
	 * @param opeDate 運用日付
	 */
	private void getSvcMiSyosaList(String sysID, String mskmDtlNo, String opeDate)
	{
		if (sysID == null || "".equals(sysID))
		{
			return;
		}

		if (null != svcMiSyosaList)
		{
			// 未照査サービス契約情報リストが取得済の場合、処理を終了する
			return;
		}

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT KK0021.MSKM_NO ");
		sbSql.append(" FROM   KK_T_MSKM_DTL KK0021 ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("        KK_T_SVC_KEI KK0081 ");
		sbSql.append("    ON  KK0081.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ");
		sbSql.append(" WHERE  KK0081.SYSID = ? ");
		sbSql.append(" AND    KK0081.MSKM_DTL_NO NOT IN (?) ");
		sbSql.append(" AND    KK0081.SVC_KEI_STAT = '010' ");
		sbSql.append(" AND   (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) = ");
		sbSql.append("    ( SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ");
		sbSql.append("      FROM   KK_T_SVC_KEI KK0081_GENE ");
		sbSql.append("      WHERE  KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append("      AND    KK0081_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("      AND    KK0081_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("      AND    KK0081_GENE.MK_FLG = '0' ");
		sbSql.append("      GROUP BY KK0081_GENE.SVC_KEI_NO ");
		sbSql.append("    ) ");
		sbSql.append(" AND   KK0021.MSKM_DTL_STAT NOT IN ('920')  ");
		sbSql.append(" AND  (KK0021.MSKM_DTL_NO, KK0021.GENE_ADD_DTM) = ");
		sbSql.append(" ( SELECT KK0021_GENE.MSKM_DTL_NO, MAX(KK0021_GENE.GENE_ADD_DTM) AS KK0021_MAX ");
		sbSql.append(" FROM  KK_T_MSKM_DTL KK0021_GENE ");
		sbSql.append(" WHERE KK0021_GENE.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ");
		sbSql.append(" AND   KK0021_GENE.MK_FLG = '0' ");
		sbSql.append(" GROUP BY KK0021_GENE.MSKM_DTL_NO ");
		sbSql.append(" ) ");

		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK0021ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, sysID);
			CAANJDBCUtil.setParam(pstmt, 2, mskmDtlNo);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(MSKM_NO, rsltQuery.getString(1));

				listRslt.add(mapRslt);
			}

			svcMiSyosaList = listRslt;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 申込番号に紐づく照査不可サービス契約情報リストを取得します。
	 * </p>
	 * @param mskmDtlNo 申込明細番号
	 * @param mskmNo 申込番号
	 * @param opeDate 運用日付
	 */
	private void getNotSvcKeiSyosaList(String mskmDtlNo, String mskmNo, String opeDate)
	{

		if (null != notSvcKeiSyosaList)
		{
			// 照査不可サービス契約情報リストが取得済の場合、処理を終了する
			return;
		}

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT KK0081.AUTO_SHOSA_TRAN_STAT_CD ");
		sbSql.append("      , KK1071.JUDGE_NO ");
		sbSql.append("      , KK1071.JUDGE_JUDGE_RSLT_CD ");
		sbSql.append(" FROM   KK_T_MSKM_DTL KK0021 ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("        KK_T_SVC_KEI KK0081 ");
		sbSql.append("    ON  KK0081.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ");
		sbSql.append(" LEFT OUTER JOIN ");
		sbSql.append("    ( SELECT KK1071_TEMP.SVC_KEI_NO ");
		sbSql.append("           , KK1071_TEMP.JUDGE_NO ");
		sbSql.append("           , KK1071_TEMP.JUDGE_JUDGE_RSLT_CD ");
		sbSql.append("      FROM   KK_T_JUDGE KK1071_TEMP");
		sbSql.append("      WHERE  KK1071_TEMP.MK_FLG = '0'");
		sbSql.append("         ");
		sbSql.append("        ) KK1071 ");
		sbSql.append("      ON KK0081.SVC_KEI_NO = KK1071.SVC_KEI_NO ");
		sbSql.append(" WHERE KK0021.MSKM_NO = ?");
		sbSql.append(" AND KK0021.MSKM_DTL_NO NOT IN (?) ");
		sbSql.append(" AND KK0081.SVC_KEI_STAT = '010' ");
		sbSql.append(" AND (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) = ");
		sbSql.append(" ( SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ");
		sbSql.append("   FROM   KK_T_SVC_KEI KK0081_GENE ");
		sbSql.append("   WHERE  KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append("   AND    KK0081_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("   AND    KK0081_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("   AND    KK0081_GENE.MK_FLG = '0' ");
		sbSql.append("   GROUP BY KK0081_GENE.SVC_KEI_NO ");
		sbSql.append(" ) ");

		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK0021ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, mskmNo);
			CAANJDBCUtil.setParam(pstmt, 2, mskmDtlNo);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(AUTO_SHOSA_TRAN_STAT_CD, rsltQuery.getString(1));
				mapRslt.put(JUDGE_NO, rsltQuery.getString(2));
				mapRslt.put(JUDGE_JUDGE_RSLT_CD, rsltQuery.getString(3));

				listRslt.add(mapRslt);
			}

			notSvcKeiSyosaList = listRslt;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 部屋番号情報リストを取得します。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param sysid SYSID
	 * @param opeDate 運用日付
	 */
	private void getAdrrmInfoList(String svcKeiNo, String sysid, String opeDate)
	{

		if (null != adrrmInfoList)
		{
			// 部屋番号情報リストが取得済の場合、処理を終了する
			return;
		}

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT KK0241_01.SVC_KEI_KAISEN_UCWK_NO  ");
		sbSql.append("      , KK0241_02.SVC_KEI_KAISEN_UCWK_NO  ");
		sbSql.append(" FROM   KK_T_KAISEN_TG_SVKEI KK0241_01  ");
		sbSql.append(" INNER JOIN KK_T_SVKEI_KAISEN_UW KK0251_01 ");
		sbSql.append(" ON  KK0241_01.SVC_KEI_KAISEN_UCWK_NO = KK0251_01.SVC_KEI_KAISEN_UCWK_NO  ");
		sbSql.append(" INNER JOIN KK_T_SVKEI_KAISEN_UW KK0251_02 ");
		sbSql.append(" ON  KK0251_01.MANSION_BUKKEN_NO = KK0251_02.MANSION_BUKKEN_NO    ");
		sbSql.append(" AND KK0251_01.KAISEN_PLACE_ADRRM = KK0251_02.KAISEN_PLACE_ADRRM  ");
		sbSql.append(" INNER JOIN KK_T_KAISEN_TG_SVKEI KK0241_02 ");
		sbSql.append(" ON  KK0251_02.SVC_KEI_KAISEN_UCWK_NO = KK0241_02.SVC_KEI_KAISEN_UCWK_NO  ");
		sbSql.append(" INNER JOIN KK_T_SVC_KEI KK0081  ");
		sbSql.append(" ON KK0241_02.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append(" WHERE  KK0241_01.SVC_KEI_NO = ? ");
		sbSql.append(" AND    KK0241_01.KAISEN_UCWK_USE_STAYMD <= ?  ");
		sbSql.append(" AND    KK0241_01.KAISEN_UCWK_USE_ENDYMD >= ?  ");
		sbSql.append(" AND    KK0241_01.MK_FLG = '0' ");
		sbSql.append(" AND   KK0251_01.SVC_KEI_KAISEN_UCWK_STAT NOT IN ('210','920')  ");
		sbSql.append(" AND   (KK0251_01.SVC_KEI_KAISEN_UCWK_NO, KK0251_01.GENE_ADD_DTM) = ");
		sbSql.append("       (SELECT KK0251_01_GENE.SVC_KEI_KAISEN_UCWK_NO, MAX(KK0251_01_GENE.GENE_ADD_DTM) AS KK0251_01_MAX  ");
		sbSql.append("        FROM   KK_T_SVKEI_KAISEN_UW KK0251_01_GENE  ");
		sbSql.append("        WHERE  KK0251_01_GENE.SVC_KEI_KAISEN_UCWK_NO = KK0251_01.SVC_KEI_KAISEN_UCWK_NO ");
		sbSql.append("        AND    KK0251_01_GENE.MK_FLG = '0' ");
		sbSql.append("        GROUP BY KK0251_01_GENE.SVC_KEI_KAISEN_UCWK_NO) ");
		sbSql.append(" AND   KK0251_02.SVC_KEI_KAISEN_UCWK_STAT NOT IN ('210','920')  ");
		sbSql.append(" AND   (KK0251_02.SVC_KEI_KAISEN_UCWK_NO, KK0251_02.GENE_ADD_DTM) = ");
		sbSql.append("       (SELECT KK0251_02_GENE.SVC_KEI_KAISEN_UCWK_NO, MAX(KK0251_02_GENE.GENE_ADD_DTM) AS KK0251_02_MAX  ");
		sbSql.append("        FROM   KK_T_SVKEI_KAISEN_UW KK0251_02_GENE  ");
		sbSql.append("        WHERE  KK0251_02_GENE.SVC_KEI_KAISEN_UCWK_NO = KK0251_02.SVC_KEI_KAISEN_UCWK_NO ");
		sbSql.append("        AND    KK0251_02_GENE.MK_FLG = '0' ");
		sbSql.append("        GROUP BY KK0251_02_GENE.SVC_KEI_KAISEN_UCWK_NO) ");
		sbSql.append(" AND    KK0241_02.KAISEN_UCWK_USE_STAYMD <= ?  ");
		sbSql.append(" AND    KK0241_02.KAISEN_UCWK_USE_ENDYMD >= ?  ");
		sbSql.append(" AND    KK0241_02.MK_FLG = '0' ");
		sbSql.append(" AND   KK0081.SYSID <> ? ");
		sbSql.append(" AND   KK0081.SVC_KEI_STAT NOT IN ('910','920')  ");
		sbSql.append(" AND   (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) =  ");
		sbSql.append("       (SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX  ");
		sbSql.append("                 FROM KK_T_SVC_KEI KK0081_GENE  ");
		sbSql.append("                 WHERE KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append("        AND    KK0081_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("        AND    KK0081_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("                 AND   KK0081_GENE.MK_FLG = '0' ");
		sbSql.append("                 GROUP BY KK0081_GENE.SVC_KEI_NO) ");

		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK0021ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);
			CAANJDBCUtil.setParam(pstmt, 4, opeDate);
			CAANJDBCUtil.setParam(pstmt, 5, opeDate);
			CAANJDBCUtil.setParam(pstmt, 6, sysid);
			CAANJDBCUtil.setParam(pstmt, 7, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(SVC_KEI_KAISEN_UCWK_NO, rsltQuery.getString(1));
				mapRslt.put(SVC_KEI_KAISEN_UCWK_NO_02, rsltQuery.getString(2));

				listRslt.add(mapRslt);
			}

			adrrmInfoList = listRslt;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 申込明細のカレントを検索する
	 * </p>
	 * @param mskmDtlNo 申込明細番号
	 */
	private void getMskmDtlList(String mskmDtlNo)
	{
		// 既に申込明細が取得済みであれば処理は行わない
		if (mskmDtlList != null)
		{
			return;
		}

		// 申込明細のカレント検索を行う
		CAANMsg msgKK0021 = new CAANMsg(KK0021ETMsg.class.getName());
		msgKK0021.set(KK0021ETMsg.MSKM_DTL_NO, mskmDtlNo);
		CAANMsg retKK0021 = new JKKejbKK0021DBABase().findByCurrent(msgKK0021);

		List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

		if (retKK0021 == null)
		{
			mskmDtlList = listRslt;

			return;
		}

		HashMap<String, String> mapRslt = new HashMap<String, String>();

		mapRslt.put(MSKM_NO, retKK0021.getString(KK0021ETMsg.MSKM_NO));
		mapRslt.put(MSKMSHO_NO, retKK0021.getString(KK0021ETMsg.MSKMSHO_NO));
		mapRslt.put(MSKM_DTL_STAT, retKK0021.getString(KK0021ETMsg.MSKM_DTL_STAT));
		mapRslt.put(SYSID, retKK0021.getString(KK0021ETMsg.SYSID));
		mapRslt.put(MSKM_YMD, retKK0021.getString(KK0021ETMsg.MSKM_YMD));
		mapRslt.put(OP_SVC_HKTGI_UM, retKK0021.getString(KK0021ETMsg.OP_SVC_HKTGI_UM));

		listRslt.add(mapRslt);

		mskmDtlList = listRslt;
	}

	/**
	 * <p>
	 * 入居予定年月日情報リストを取得します。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日
	 */
	private void getNyukyoRsvYmdInfoList(String svcKeiNo, String opeDate)
	{
		if (null != nyukyoRsvYmdInfoList)
		{
			// 入居予定年月日情報リストが取得済の場合、処理を終了する
			return;
		}

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append("SELECT ");
		sbSql.append(" KK0241.SVC_KEI_NO, ");
		sbSql.append(" KK0241.SVC_KEI_KAISEN_UCWK_NO, ");
		sbSql.append(" KK0251.NYUKYO_RSV_YMD  ");
		sbSql.append("FROM ");
		sbSql.append(" KK_T_KAISEN_TG_SVKEI KK0241 ");
		sbSql.append(" INNER JOIN KK_T_SVKEI_KAISEN_UW KK0251 ");
		sbSql.append("  ON KK0241.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO ");
		sbSql.append("WHERE ");
		sbSql.append(" KK0241.SVC_KEI_NO = ? AND ");
		sbSql.append(" KK0241.KAISEN_UCWK_USE_STAYMD <= ? AND ");
		sbSql.append(" KK0241.KAISEN_UCWK_USE_ENDYMD >= ? AND ");
		sbSql.append(" KK0241.MK_FLG = '0' AND ");
		sbSql.append(" (KK0251.SVC_KEI_KAISEN_UCWK_NO, KK0251.GENE_ADD_DTM) = ");
		sbSql.append("  (SELECT KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO, MAX(KK0251_GENE.GENE_ADD_DTM) AS KK0251_MAX ");
		sbSql.append("   FROM KK_T_SVKEI_KAISEN_UW KK0251_GENE ");
		sbSql.append("   WHERE KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO ");
		sbSql.append("   AND   KK0251_GENE.MK_FLG = '0' ");
		sbSql.append("   GROUP BY KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO) AND ");
		sbSql.append(" KK0251.SVC_KEI_KAISEN_UCWK_STAT NOT IN('920') ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0241ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(KK0241ETMsg.SVC_KEI_NO, rsltQuery.getString(1));
				mapRslt.put(KK0241ETMsg.SVC_KEI_KAISEN_UCWK_NO, rsltQuery.getString(2));
				mapRslt.put(KK0251ETMsg.NYUKYO_RSV_YMD, rsltQuery.getString(3));

				listRslt.add(mapRslt);
			}

			nyukyoRsvYmdInfoList = listRslt;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 利用場所番地情報リストを取得します。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日
	 */
	private void getUsePlaceBnchiInfoList(String svcKeiNo, String opeDate)
	{
		if (null != usePlaceBnchiInfoList)
		{
			// 利用場所番地情報リストが取得済の場合、処理を終了する
			return;
		}

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append("SELECT ");
		sbSql.append(" KK0241.SVC_KEI_NO, ");
		sbSql.append(" KK0241.SVC_KEI_KAISEN_UCWK_NO, ");
		sbSql.append(" KK0251.KISN_PLC_AD_MI_FIX_FLG, ");
		sbSql.append(" KK0251.KAISEN_PLACE_STATE_NM, ");
		sbSql.append(" KK0251.KAISEN_PLACE_CITY_NM, ");
		sbSql.append(" KK0251.KAISEN_PLACE_OAZTSU_NM, ");
		sbSql.append(" KK0251.KAISEN_PLACE_BNCHIGO  ");
		sbSql.append("FROM ");
		sbSql.append(" KK_T_KAISEN_TG_SVKEI KK0241 ");
		sbSql.append(" INNER JOIN KK_T_SVKEI_KAISEN_UW KK0251 ");
		sbSql.append("  ON KK0241.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO ");
		sbSql.append("WHERE ");
		sbSql.append(" KK0241.SVC_KEI_NO = ? AND ");
		sbSql.append(" KK0241.KAISEN_UCWK_USE_STAYMD <= ? AND ");
		sbSql.append(" KK0241.KAISEN_UCWK_USE_ENDYMD >= ? AND ");
		sbSql.append(" KK0241.MK_FLG = '0' AND ");
		sbSql.append(" (KK0251.SVC_KEI_KAISEN_UCWK_NO, KK0251.GENE_ADD_DTM) = ");
		sbSql.append("  (SELECT KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO, MAX(KK0251_GENE.GENE_ADD_DTM) AS KK0251_MAX ");
		sbSql.append("   FROM KK_T_SVKEI_KAISEN_UW KK0251_GENE ");
		sbSql.append("   WHERE KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO ");
		sbSql.append("   AND   KK0251_GENE.MK_FLG = '0' ");
		sbSql.append("   GROUP BY KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO) AND ");
		sbSql.append(" KK0251.SVC_KEI_KAISEN_UCWK_STAT NOT IN('920') AND ");
		sbSql.append("  (KK0251.KAISEN_PLACE_STATE_NM IS NULL OR ");
		sbSql.append("   KK0251.KAISEN_PLACE_CITY_NM IS NULL OR ");
		sbSql.append("   KK0251.KAISEN_PLACE_BNCHIGO IS NULL ");
		sbSql.append("  )");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0241ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(KK0241ETMsg.SVC_KEI_NO, rsltQuery.getString(1));
				mapRslt.put(KK0241ETMsg.SVC_KEI_KAISEN_UCWK_NO, rsltQuery.getString(2));
				mapRslt.put(KK0251ETMsg.KAISEN_PLACE_STATE_NM, rsltQuery.getString(3));
				mapRslt.put(KK0251ETMsg.KAISEN_PLACE_CITY_NM, rsltQuery.getString(4));
				mapRslt.put(KK0251ETMsg.KAISEN_PLACE_OAZTSU_NM, rsltQuery.getString(5));
				mapRslt.put(KK0251ETMsg.KAISEN_PLACE_BNCHIGO, rsltQuery.getString(6));

				listRslt.add(mapRslt);
			}

			usePlaceBnchiInfoList = listRslt;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 回線対象サービス契約情報リストを取得します。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日
	 */
	private void getKaiTgSvkeiInfoList(String svcKeiNo, String opeDate)
	{
		if (null != kaiTgSvkeiInfoList)
		{
			// 回線対象情報リストが取得済の場合、処理を終了する
			return;
		}

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append("SELECT ");
		sbSql.append(" KK0241.SVC_KEI_NO, ");
		sbSql.append(" KK0241.SVC_KEI_KAISEN_UCWK_NO, ");
		sbSql.append(" KK0251.KAISEN_PLACE_STATE_NM, ");
		sbSql.append(" KK0251.KAISEN_PLACE_CITY_NM, ");
		sbSql.append(" KK0251.KAISEN_PLACE_OAZTSU_NM, ");
		sbSql.append(" KK0251.KAISEN_PLACE_AZCHO_NM,  ");
		sbSql.append(" KK0251.KAISEN_PLACE_BNCHIGO  ");
		sbSql.append("FROM ");
		sbSql.append(" KK_T_KAISEN_TG_SVKEI KK0241 ");
		sbSql.append(" INNER JOIN KK_T_SVKEI_KAISEN_UW KK0251 ");
		sbSql.append("  ON KK0241.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO ");
		sbSql.append("WHERE ");
		sbSql.append(" KK0241.SVC_KEI_NO = ? AND ");
		sbSql.append(" KK0241.KAISEN_UCWK_USE_STAYMD <= ? AND ");
		sbSql.append(" KK0241.KAISEN_UCWK_USE_ENDYMD >= ? AND ");
		sbSql.append(" KK0241.MK_FLG = '0' AND ");
		sbSql.append(" (KK0251.SVC_KEI_KAISEN_UCWK_NO, KK0251.GENE_ADD_DTM) = ");
		sbSql.append("  (SELECT KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO, MAX(KK0251_GENE.GENE_ADD_DTM) AS KK0251_MAX ");
		sbSql.append("   FROM KK_T_SVKEI_KAISEN_UW KK0251_GENE ");
		sbSql.append("   WHERE KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO ");
		sbSql.append("   AND   KK0251_GENE.MK_FLG = '0' ");
		sbSql.append("   GROUP BY KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO) AND ");
		sbSql.append(" KK0251.SVC_KEI_KAISEN_UCWK_STAT NOT IN('920') ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0241ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(KK0241ETMsg.SVC_KEI_NO, rsltQuery.getString(1));
				mapRslt.put(KK0241ETMsg.SVC_KEI_KAISEN_UCWK_NO, rsltQuery.getString(2));
				mapRslt.put(KK0251ETMsg.KAISEN_PLACE_STATE_NM, rsltQuery.getString(3));
				mapRslt.put(KK0251ETMsg.KAISEN_PLACE_CITY_NM, rsltQuery.getString(4));
				mapRslt.put(KK0251ETMsg.KAISEN_PLACE_OAZTSU_NM, rsltQuery.getString(5));
				mapRslt.put(KK0251ETMsg.KAISEN_PLACE_AZCHO_NM, rsltQuery.getString(6));
				mapRslt.put(KK0251ETMsg.KAISEN_PLACE_BNCHIGO, rsltQuery.getString(7));
				listRslt.add(mapRslt);
			}

			kaiTgSvkeiInfoList = listRslt;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 利用場所情報リストを取得します。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param mskmNo 申込番号
	 * @param sysid SYSID
	 * @param opeDate 運用日
	 */
	private void getUsePlaceInfoList(String svcKeiNo, String mskmNo, String opeDate)
	{

		if (usePlaceInfoList != null)
		{
			// 利用場所情報リストが取得済の場合、処理を終了する
			return;
		}

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append("SELECT KK0241_01.SVC_KEI_KAISEN_UCWK_NO  ");
		sbSql.append("     , KK0241_02.SVC_KEI_KAISEN_UCWK_NO  ");
		sbSql.append("FROM   KK_T_KAISEN_TG_SVKEI KK0241_01  ");
		sbSql.append("INNER JOIN KK_T_SVKEI_KAISEN_UW KK0251_01 ");
		sbSql.append("ON  KK0241_01.SVC_KEI_KAISEN_UCWK_NO = KK0251_01.SVC_KEI_KAISEN_UCWK_NO  ");
		sbSql.append("INNER JOIN KK_T_SVKEI_KAISEN_UW KK0251_02 ");
		sbSql.append("ON (KK0251_01.KAISEN_CD || KK0251_01.KAISEN_PLACE_STATE_NM || KK0251_01.KAISEN_PLACE_CITY_NM || ");
		sbSql.append("   KK0251_01.KAISEN_PLACE_OAZTSU_NM || KK0251_01.KAISEN_PLACE_AZCHO_NM || ");
		sbSql.append("   KK0251_01.KAISEN_PLACE_BNCHIGO || KK0251_01.KAISEN_PLACE_ADRTTM) = ");
		sbSql.append("   (KK0251_02.KAISEN_CD || KK0251_02.KAISEN_PLACE_STATE_NM || KK0251_02.KAISEN_PLACE_CITY_NM || ");
		sbSql.append("   KK0251_02.KAISEN_PLACE_OAZTSU_NM || KK0251_02.KAISEN_PLACE_AZCHO_NM || ");
		sbSql.append("   KK0251_02.KAISEN_PLACE_BNCHIGO || KK0251_02.KAISEN_PLACE_ADRTTM) ");
		sbSql.append("INNER JOIN KK_T_KAISEN_TG_SVKEI KK0241_02 ");
		sbSql.append("ON  KK0251_02.SVC_KEI_KAISEN_UCWK_NO = KK0241_02.SVC_KEI_KAISEN_UCWK_NO  ");
		sbSql.append("INNER JOIN KK_T_SVC_KEI KK0081  ");
		sbSql.append("ON KK0241_02.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append("INNER JOIN KK_T_MSKM_DTL KK0021  ");
		sbSql.append("ON KK0081.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ");
		sbSql.append("WHERE  KK0241_01.SVC_KEI_NO = ? ");
		sbSql.append("AND    KK0241_01.KAISEN_UCWK_USE_STAYMD <= ?  ");
		sbSql.append("AND    KK0241_01.KAISEN_UCWK_USE_ENDYMD >= ?  ");
		sbSql.append("AND    KK0241_01.MK_FLG = '0' ");
		sbSql.append("AND   KK0251_01.SVC_KEI_KAISEN_UCWK_STAT NOT IN ('210','920')  ");
		sbSql.append("AND   (KK0251_01.SVC_KEI_KAISEN_UCWK_NO, KK0251_01.GENE_ADD_DTM) = ");
		sbSql.append("      (SELECT KK0251_01_GENE.SVC_KEI_KAISEN_UCWK_NO, MAX(KK0251_01_GENE.GENE_ADD_DTM) AS KK0251_01_MAX  ");
		sbSql.append("       FROM   KK_T_SVKEI_KAISEN_UW KK0251_01_GENE  ");
		sbSql.append("       WHERE  KK0251_01_GENE.SVC_KEI_KAISEN_UCWK_NO = KK0251_01.SVC_KEI_KAISEN_UCWK_NO ");
		sbSql.append("       AND    KK0251_01_GENE.MK_FLG = '0' ");
		sbSql.append("       GROUP BY KK0251_01_GENE.SVC_KEI_KAISEN_UCWK_NO) ");
		sbSql.append("AND   KK0251_02.SVC_KEI_KAISEN_UCWK_STAT NOT IN ('210','920')  ");
		sbSql.append("AND   (KK0251_02.SVC_KEI_KAISEN_UCWK_NO, KK0251_02.GENE_ADD_DTM) = ");
		sbSql.append("      (SELECT KK0251_02_GENE.SVC_KEI_KAISEN_UCWK_NO, MAX(KK0251_02_GENE.GENE_ADD_DTM) AS KK0251_02_MAX  ");
		sbSql.append("       FROM   KK_T_SVKEI_KAISEN_UW KK0251_02_GENE  ");
		sbSql.append("       WHERE  KK0251_02_GENE.SVC_KEI_KAISEN_UCWK_NO = KK0251_02.SVC_KEI_KAISEN_UCWK_NO ");
		sbSql.append("       AND    KK0251_02_GENE.MK_FLG = '0' ");
		sbSql.append("       GROUP BY KK0251_02_GENE.SVC_KEI_KAISEN_UCWK_NO) ");
		sbSql.append("AND    KK0241_02.KAISEN_UCWK_USE_STAYMD <= ?  ");
		sbSql.append("AND    KK0241_02.KAISEN_UCWK_USE_ENDYMD >= ?  ");
		sbSql.append("AND    KK0241_02.MK_FLG = '0' ");
		sbSql.append("AND   KK0081.SVC_KEI_STAT NOT IN ('910','920')  ");
		sbSql.append("AND   (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) =  ");
		sbSql.append("      (SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX  ");
		sbSql.append("       FROM   KK_T_SVC_KEI KK0081_GENE  ");
		sbSql.append("       WHERE  KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append("       AND    KK0081_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("       AND    KK0081_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("       AND    KK0081_GENE.MK_FLG = '0' ");
		sbSql.append("       GROUP BY KK0081_GENE.SVC_KEI_NO) ");
		sbSql.append("AND   KK0021.MSKM_NO <> ? ");
		sbSql.append("AND   KK0021.MSKM_DTL_STAT <>'920' ");
		sbSql.append("AND   (KK0021.MSKM_DTL_NO, KK0021.GENE_ADD_DTM) =  ");
		sbSql.append("      (SELECT KK0021_GENE.MSKM_DTL_NO, MAX(KK0021_GENE.GENE_ADD_DTM) AS KK0021_MAX  ");
		sbSql.append("       FROM   KK_T_MSKM_DTL KK0021_GENE  ");
		sbSql.append("       WHERE  KK0021_GENE.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ");
		sbSql.append("       AND    KK0021_GENE.MK_FLG = '0' ");
		sbSql.append("       GROUP BY KK0021_GENE.MSKM_DTL_NO) ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0241ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);
			CAANJDBCUtil.setParam(pstmt, 4, opeDate);
			CAANJDBCUtil.setParam(pstmt, 5, opeDate);
			CAANJDBCUtil.setParam(pstmt, 6, opeDate);
			CAANJDBCUtil.setParam(pstmt, 7, mskmNo);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(SVC_KEI_KAISEN_UCWK_NO, rsltQuery.getString(1));
				mapRslt.put(SVC_KEI_KAISEN_UCWK_NO_02, rsltQuery.getString(2));
				listRslt.add(mapRslt);
			}

			usePlaceInfoList = listRslt;
		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * <p>
	 * サービス契約番号に紐付く、同一請求契約のサービス契約リストを取得します。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日
	 */
	private void getSvcKeiSameSeq(String svcKeiNo, String opeDate)
	{
		if (null != svcKeiSameSeqList)
		{
			// 同一請求契約サービス契約リストが取得済の場合、処理を終了する
			return;
		}

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append("SELECT  ");
		sbSql.append("    KK0081_1.PRC_GRP_CD  ");
		sbSql.append("    , KK0081_1.PCRS_CD  ");
		sbSql.append("FROM  ");
		sbSql.append("    KK_T_KAKINS KK0321_1  ");
		sbSql.append("    INNER JOIN KK_T_KAKINS KK0321_2  ");
		sbSql.append("    ON KK0321_2.SEIKY_KEI_NO = KK0321_1.SEIKY_KEI_NO  ");
		sbSql.append("    INNER JOIN KK_T_SVC_KEI KK0081_1  ");
		sbSql.append("    ON KK0081_1.SVC_KEI_NO = KK0321_2.SVC_KEI_NO  ");
		sbSql.append("WHERE  ");
		sbSql.append("    KK0321_1.SVC_KEI_NO = ?  ");
		sbSql.append("    AND KK0321_1.KAKINS_TSTAYMD <= ?  ");
		sbSql.append("    AND KK0321_1.KAKINS_TENDYMD >= ?  ");
		sbSql.append("    AND KK0321_1.MK_FLG = '0'  ");
		sbSql.append("    AND KK0321_2.KAKINS_TSTAYMD <= ?  ");
		sbSql.append("    AND KK0321_2.KAKINS_TENDYMD >= ?  ");
		sbSql.append("    AND KK0321_2.MK_FLG = '0'  ");
		sbSql.append("    AND KK0081_1.SVC_KEI_STAT NOT IN ('910', '920')  ");
		sbSql.append("    AND (KK0081_1.SVC_KEI_NO, KK0081_1.RSV_APLY_YMD || KK0081_1.GENE_ADD_DTM) =  ");
		sbSql.append("        (SELECT KK0081_1_GENE.SVC_KEI_NO, MAX(KK0081_1_GENE.RSV_APLY_YMD || KK0081_1_GENE.GENE_ADD_DTM) AS KK0081_1_MAX  ");
		sbSql.append("        FROM KK_T_SVC_KEI KK0081_1_GENE   ");
		sbSql.append("        WHERE KK0081_1_GENE.SVC_KEI_NO = KK0081_1.SVC_KEI_NO  ");
		sbSql.append("        AND KK0081_1_GENE.RSV_APLY_YMD <= ?  ");
		sbSql.append("        AND KK0081_1_GENE.RSV_APLY_CD = '2'  ");
		sbSql.append("        AND KK0081_1_GENE.MK_FLG= '0'  ");
		sbSql.append("        GROUP BY KK0081_1_GENE.SVC_KEI_NO)  ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0081ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);
			CAANJDBCUtil.setParam(pstmt, 4, opeDate);
			CAANJDBCUtil.setParam(pstmt, 5, opeDate);
			CAANJDBCUtil.setParam(pstmt, 6, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(KK0081ETMsg.PRC_GRP_CD, rsltQuery.getString(1));
				mapRslt.put(KK0081ETMsg.PCRS_CD, rsltQuery.getString(2));

				listRslt.add(mapRslt);
			}

			svcKeiSameSeqList = listRslt;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 提供方式契約番号に紐付く、提供方式契約の情報を取得します。
	 * </p>
	 * @param tkHskKeiNo 提供方式契約番号
	 * @return 対象の提供方式契約番号に紐付く提供方式契約の物件管理番号と総戸数
	 */
	private CAANMsg getKaisenUseKeiBkn(String tkHskKeiNo)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append("SELECT  ");
		sbSql.append("    KK0891.BKN_KNRI_NO  ");
		sbSql.append("    , KK0891.TTL_KOSU  ");
		sbSql.append("FROM  ");
		sbSql.append("    KK_T_TK_HOSHIKI_KEI KK0891  ");
		sbSql.append("WHERE  ");
		sbSql.append("    KK0891.TK_HOSHIKI_KEI_NO = ?  ");
		sbSql.append("    AND KK0891.MK_FLG = '0'  ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0081ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, tkHskKeiNo);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			CAANMsg retMsg = new CAANMsg(KK0891ETMsg.class.getName());

			// 取得結果をマップに格納
			if (rsltQuery.next())
			{
				retMsg.set(KK0891ETMsg.BKN_KNRI_NO, rsltQuery.getString(1));
				retMsg.set(KK0891ETMsg.TTL_KOSU, rsltQuery.getString(2));
			}

			return retMsg;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 物件管理番号に紐付く、同一サービスのサービス契約の件数を取得します。
	 * </p>
	 * @param bknKnriNo 物件管理番号
	 * @param svcCd サービスコード
	 * @param opeDate 運用日
	 * @return 対象の物件管理番号に紐付く同一サービスのサービス契約の件数
	 */
	private Long getSvcKeiSameKaisen(String bknKnriNo, String svcCd, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append("SELECT  ");
		sbSql.append("    COUNT(*) AS CNT  ");
		sbSql.append("FROM  ");
		sbSql.append("    KK_T_TK_HOSHIKI_KEI KK0891  ");
		sbSql.append("    INNER JOIN KK_T_SVC_KEI KK0081  ");
		sbSql.append("    ON KK0081.TK_HOSHIKI_KEI_NO = KK0891.TK_HOSHIKI_KEI_NO  ");
		sbSql.append("WHERE  ");
		sbSql.append("    KK0891.BKN_KNRI_NO = ?  ");
		sbSql.append("    AND KK0081.SVC_CD = ?  ");
		sbSql.append("    AND KK0081.PRC_GRP_CD <> '99' ");
		sbSql.append("    AND KK0081.SVC_KEI_STAT NOT IN ('910', '920') ");
		sbSql.append("    AND KK0891.MK_FLG = '0'  ");
		sbSql.append("    AND (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) =  ");
		sbSql.append("        (SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX  ");
		sbSql.append("         FROM KK_T_SVC_KEI KK0081_GENE  ");
		sbSql.append("         WHERE KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO  ");
		sbSql.append("         AND KK0081_GENE.RSV_APLY_YMD <= ?  ");
		sbSql.append("         AND KK0081_GENE.RSV_APLY_CD = '2'  ");
		sbSql.append("         AND KK0081_GENE.MK_FLG= '0'  ");
		sbSql.append("         GROUP BY KK0081_GENE.SVC_KEI_NO)  ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0081ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, bknKnriNo);
			CAANJDBCUtil.setParam(pstmt, 2, svcCd);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			Long retLng = 0L;

			// 取得結果をマップに格納
			if (rsltQuery.next())
			{
				retLng = rsltQuery.getLong(1);
			}

			return retLng;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * サービス契約番号に紐付く、機器提供サービス契約の宅内機器型式コードを取得します。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日
	 * @return サービス契約番号に紐付く、機器提供サービス契約の宅内機器型式コードのリスト
	 */
	private ArrayList<String> getTakunaiKikiWithSvc(String svcKeiNo, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT ");
		sbSql.append("     KK0341.TAKNKIKI_MODEL_CD ");
		sbSql.append(" FROM ");
		sbSql.append("     KK_T_KKTK_SVC_KEI KK0341 ");
		sbSql.append(" WHERE ");
		sbSql.append("     KK0341.SVC_KEI_NO = ? ");
		sbSql.append("     AND KK0341.KKTK_SVC_KEI_STAT IN ('010', '020', '030', '100') ");
		sbSql.append("     AND (KK0341.KKTK_SVC_KEI_NO, KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM) = ");
		sbSql.append("         (SELECT KK0341_GENE.KKTK_SVC_KEI_NO, MAX(KK0341_GENE.RSV_APLY_YMD || KK0341_GENE.GENE_ADD_DTM) AS KK0341_MAX ");
		sbSql.append("          FROM   KK_T_KKTK_SVC_KEI KK0341_GENE ");
		sbSql.append("          WHERE  KK0341_GENE.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ");
		sbSql.append("          AND    KK0341_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("          AND    KK0341_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("          AND    KK0341_GENE.MK_FLG= '0' ");
		sbSql.append("          GROUP BY KK0341_GENE.KKTK_SVC_KEI_NO) ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0081ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 返却用リスト
			ArrayList<String> retList = new ArrayList<String>();

			// 取得結果をリストに格納
			while (rsltQuery.next())
			{
				retList.add(rsltQuery.getString(KK0341ETMsg.TAKNKIKI_MODEL_CD));
			}

			return retList;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * サービス契約番号に紐付く、オプションサービス契約情報を取得します。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日
	 * @return サービス契約番号に紐付く、オプションサービス契約情報件数のリスト
	 */
	private ArrayList<Long> getOpSvcKeiInfoWithSvcCnt(String svcKeiNo, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT ");
		sbSql.append("     KK0161.SVC_KEI_UCWK_NO ");
		sbSql.append("     , KK0351.OP_SVC_CD ");
		sbSql.append("     , COUNT(*) AS CNT ");
		sbSql.append(" FROM ");
		sbSql.append("     KK_T_OP_SVC_KEI KK0351 ");
		sbSql.append("     INNER JOIN KK_T_SVC_KEI_UCWK KK0161 ");
		sbSql.append("     ON KK0161.SVC_KEI_UCWK_NO = KK0351.SVC_KEI_UCWK_NO ");
		sbSql.append(" WHERE ");
		sbSql.append("     KK0351.OP_SVC_KEI_STAT NOT IN ('910', '920') ");
		sbSql.append("     AND KK0161.SVC_KEI_NO = ? ");
		sbSql.append("     AND KK0161.SVC_KEI_UCWK_NO = KK0351.SVC_KEI_UCWK_NO ");
		sbSql.append("     AND KK0161.SVC_KEI_UCWK_STAT NOT IN ('910', '920') ");
		sbSql.append("     AND (KK0351.OP_SVC_KEI_NO, KK0351.RSV_APLY_YMD || KK0351.GENE_ADD_DTM) = ");
		sbSql.append("         (SELECT KK0351_GENE.OP_SVC_KEI_NO, MAX(KK0351_GENE.RSV_APLY_YMD || KK0351_GENE.GENE_ADD_DTM) AS KK0351_MAX ");
		sbSql.append("          FROM   KK_T_OP_SVC_KEI KK0351_GENE ");
		sbSql.append("          WHERE  KK0351_GENE.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO ");
		sbSql.append("          AND    KK0351_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("          AND    KK0351_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("          AND    KK0351_GENE.MK_FLG = '0' ");
		sbSql.append("          GROUP BY KK0351_GENE.OP_SVC_KEI_NO) ");
		sbSql.append("     AND (KK0161.SVC_KEI_UCWK_NO, KK0161.RSV_APLY_YMD || KK0161.GENE_ADD_DTM) = ");
		sbSql.append("         (SELECT KK0161_GENE.SVC_KEI_UCWK_NO, MAX(KK0161_GENE.RSV_APLY_YMD || KK0161_GENE.GENE_ADD_DTM) AS KK0161_MAX ");
		sbSql.append("          FROM   KK_T_SVC_KEI_UCWK KK0161_GENE ");
		sbSql.append("          WHERE  KK0161_GENE.SVC_KEI_UCWK_NO = KK0161.SVC_KEI_UCWK_NO ");
		sbSql.append("          AND    KK0161_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("          AND    KK0161_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("          AND    KK0161_GENE.MK_FLG = '0' ");
		sbSql.append("          GROUP BY KK0161_GENE.SVC_KEI_UCWK_NO) ");
		sbSql.append(" GROUP BY ");
		sbSql.append("     KK0161.SVC_KEI_UCWK_NO ");
		sbSql.append("     , KK0351.OP_SVC_CD ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0351ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 返却用リスト
			ArrayList<Long> retList = new ArrayList<Long>();

			// 取得結果をリストに格納
			while (rsltQuery.next())
			{
				retList.add(rsltQuery.getLong("CNT"));
			}

			return retList;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * <p>
	 * 審査結果補記チェック（照査OK）処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param skekkaHokiCd 審査結果補記コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkSinsaHokiChkShosa(CAANMsg inMsg, String skekkaHokiCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkSinsaHokiChkShosa SHOSA_TG_CD = " + SHOSACHK_TRG_040 + ", " + SHOSACHK_TRG_041);
		
		// 審査結果補記コードに値（０１）が設定されている場合はNGを返却する
		if (null != skekkaHokiCd && "01".equals(skekkaHokiCd))
		{
			return RETURN_NG;
		}
		return RETURN_OK;

	}

	/**
	 * <p>
	 * 審査結果補記チェック（照査NG）処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param skekkaHokiCd 審査結果補記コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkSinsaHokiChkShosaNg(CAANMsg inMsg, String skekkaHokiCd)
	{

		// 審査結果補記コードに値が設定されている場合はOKを返却する
		if (null != skekkaHokiCd && !"".equals(skekkaHokiCd))
		{
			return RETURN_OK;
		}
		return RETURN_NG;

	}
	
	/**
	 * <p>
	 * エリアチェック審査結果チェック処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkAreaChkSinsaKekka(CAANMsg inMsg, String svcKeiNo)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkAreaChkSinsaKekka SHOSA_TG_CD = " + SHOSACHK_TRG_042);
		
		// 審査情報取得処理を行う
		String judgeJudgeRsltCd = getJudgeJudgeRsltCd(svcKeiNo);

		// 審査判定結果コードが01：NGの場合NGを返却する
		if (RESULT_CD_NG.equals(judgeJudgeRsltCd))
		{
			return RETURN_NG;
		}
		return RETURN_OK;
	}

	/**
	 * <p>
	 * モバイル機器整合性チェック処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkMobileKiki(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkMobileKiki SHOSA_TG_CD = " + SHOSACHK_TRG_043);
		
		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);
		
		// サービス契約番号に紐付く、機器提供サービス契約の宅内機器型式コードを取得する
		ArrayList<String> taknaiKikiList = getTakunaiKikiWithSvc(svcKeiNo, opeDate);

		// 宅内機器型式コードが取得できない場合処理を終了する
		if (null != taknaiKikiList && taknaiKikiList.size() > 0)
		{
			if (null != taknaiKikiList.get(0) && !"".equals(taknaiKikiList.get(0)))
			{
				// サービス別宅内機器型式候補件数取得処理を実行する
				Long cnt = getCntSvcbtTkmdlKho(taknaiKikiList.get(0));
				if (cnt < 1L)
				{
					return RETURN_NG;
				}
			}
		}
		return RETURN_OK;
	}

	/**
	 * <p>
	 * 申込書明細番号不整合チェック処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param sysId SYSID
	 * @param mskmDtlNo 申込明細番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkMskmshoDtlNo(CAANMsg inMsg, String sysId, String mskmDtlNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkMskmshoDtlNo SHOSA_TG_CD = " + SHOSACHK_TRG_044);
		
		// 申込明細のカレントレコードを検索
		getMskmDtlList(mskmDtlNo);
		// 申込明細のカレントが存在しなければOKを返却する
		if (mskmDtlList.size() > 0)
		{
			// 申込書番号が取得できない場合は後続処理をしない
			if (null != mskmDtlList.get(0).get(MSKMSHO_NO) && !"".equals(mskmDtlList.get(0).get(MSKMSHO_NO)))
			{

				String mskmshoNo = mskmDtlList.get(0).get(MSKMSHO_NO);
				List<Map<String, String>> resultList = new ArrayList<Map<String, String>>();
				// 申込書明細番号チェック情報を取得する
				// 運用日付を取得
				String opeDate = getOpeDate(inMsg, kidoCd);

				resultList = getMskmshoDtlNoChkInfoList(mskmshoNo, sysId, opeDate);

				// 取得結果が1件以下の場合は後続処理をしない
				if (null != resultList && resultList.size() > 1)
				{

					// ネット・電話用申込書明細番号
					String netTelMskmshoDtlNo = null;
					// テレビ用申込書明細番号
					String tvMskmshoDtlNo = null;

					// 取得結果を比較しチェックを行う 
					for (Map<String, String> resultInfo : resultList)
					{

						// サービス契約ステータスを取得
						String svcKeiStat = resultInfo.get(KK0081ETMsg.SVC_KEI_STAT);

						// 解約済、キャンセル済は対象外とする
						if (!SVC_KEI_STAT_DSL.equals(svcKeiStat) && !SVC_KEI_STAT_CANCEL.equals(svcKeiStat))
						{

							// 料金グループコードを取得
							String prcGrpCd = resultInfo.get(KK0081ETMsg.PRC_GRP_CD);
							// 申込書明細番号を取得
							String mskmshoDtlNo = resultInfo.get(KK0021ETMsg.MSKMSHO_DTL_NO);

							// eo光ネットホームタイプ、eo光ネットメゾンタイプ、eo光ネットマンションタイプ、eo光電話の場合
							if (PRC_GRP_CD_02.equals(prcGrpCd) || PRC_GRP_CD_03.equals(prcGrpCd) || 
									PRC_GRP_CD_04.equals(prcGrpCd) || PRC_GRP_CD_10.equals(prcGrpCd))
							{

								// ネット・電話用申込書明細番号が未設定の場合、申込書明細番号を設定
								if (null == netTelMskmshoDtlNo || "".equals(netTelMskmshoDtlNo))
								{
									netTelMskmshoDtlNo = mskmshoDtlNo;
								}
								// ネット・電話用申込書明細番号と申込書明細番号が異なっていればNGを返却
								else if (!netTelMskmshoDtlNo.equals(mskmshoDtlNo))
								{
									return RETURN_NG;
								}
								// テレビの申込書明細番号と同じ場合NGを返却する 
								if (null != tvMskmshoDtlNo && !"".equals(tvMskmshoDtlNo) && tvMskmshoDtlNo.equals(netTelMskmshoDtlNo))
								{
									return RETURN_NG;
								}
							}
							// eo光テレビ(K-CAT)、eo光テレビ(KCN)、eo光テレビ(再送信)の場合	
							else if (PRC_GRP_CD_11.equals(prcGrpCd) || PRC_GRP_CD_12.equals(prcGrpCd) || PRC_GRP_CD_13.equals(prcGrpCd))
							{

								// テレビ用申込書明細番号が未設定の場合、申込書明細番号を設定する
								if (null == tvMskmshoDtlNo || "".equals(tvMskmshoDtlNo))
								{
									tvMskmshoDtlNo = mskmshoDtlNo;
								}
								// テレビ用申込書明細番号と異なっていればNGを返却
								else if (!tvMskmshoDtlNo.equals(mskmshoDtlNo))
								{
									return RETURN_NG;
								}
								// ネット・電話用申込書明細番号と同じであればNGを返却
								if (null != netTelMskmshoDtlNo && !"".equals(netTelMskmshoDtlNo) && netTelMskmshoDtlNo.equals(tvMskmshoDtlNo))
								{
									return RETURN_NG;
								}
							}
						}
					}
				}
			}
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * 審査情報取得処理
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @return 審査判定結果コード
	 */
	private String getJudgeJudgeRsltCd(String svcKeiNo)
	{
		if (svcKeiNo == null || "".equals(svcKeiNo))
		{
			return null;
		}

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT KK1071.JUDGE_JUDGE_RSLT_CD ");
		sbSql.append(" FROM   KK_T_JUDGE KK1071 ");
		sbSql.append(" WHERE  KK1071.SVC_KEI_NO = ? ");
		sbSql.append(" AND    KK1071.JUDGE_SBT_CD = '13' ");
		sbSql.append(" AND    KK1071.MK_FLG = '0' ");

		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK1071ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			String judgeJudgeRsltCd = null;

			if (rsltQuery.next())
			{

				judgeJudgeRsltCd = rsltQuery.getString(1);
			}
			return judgeJudgeRsltCd;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * サービス別宅内機器型式候補件数取得処理
	 * </p>
	 * @param taknkikiModelCd 宅内機器型式コード
	 * @return 取得件数
	 */
	private Long getCntSvcbtTkmdlKho(String taknkikiModelCd)
	{

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT COUNT(*) AS CNT ");
		sbSql.append(" FROM   KK_M_SVCBT_TKMDL_KHO KK1861 ");
		sbSql.append(" WHERE  KK1861.TAKNKIKI_MODEL_CD = ? ");
		sbSql.append(" AND    KK1861.ADD_KH = '1' ");
		sbSql.append(" AND    KK1861.MK_FLG = '0' ");

		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK1861ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, taknkikiModelCd);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			Long cnt = 0L;

			if (rsltQuery.next())
			{

				cnt = rsltQuery.getLong(1);
			}
			return cnt;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 申込書明細番号整合チェック情報取得処理
	 * </p>
	 * @param mskmshoNo 申込書番号
	 * @param sysId SYSID
	 * @param opeDate 運用日付
	 * @return 取得結果
	 */
	private List<Map<String, String>> getMskmshoDtlNoChkInfoList(String mskmshoNo, String sysId, String opeDate)
	{

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT ");
		sbSql.append("     KK0021.MSKMSHO_DTL_NO ");
		sbSql.append("     ,KK0081.SVC_KEI_NO ");
		sbSql.append("     ,KK0081.SVC_CD ");
		sbSql.append("     ,KK0081.SVC_KEI_STAT ");
		sbSql.append("     ,KK0081.PRC_GRP_CD ");
		sbSql.append("  FROM ");
		sbSql.append("    KK_T_MSKM_DTL KK0021 ");
		sbSql.append("  INNER JOIN ");
		sbSql.append("    KK_T_SVC_KEI KK0081 ");
		sbSql.append("    ON KK0081.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ");
		sbSql.append("  WHERE ");
		sbSql.append("    KK0021.MSKMSHO_NO = ? ");
		sbSql.append("    AND    KK0021.SYSID = ? ");
		sbSql.append("    AND    (KK0021.MSKM_DTL_NO, KK0021.GENE_ADD_DTM) = ");
		sbSql.append("         ( SELECT KK0021_GENE.MSKM_DTL_NO, MAX(KK0021_GENE.GENE_ADD_DTM) AS KK0021_MAX ");
		sbSql.append("           FROM   KK_T_MSKM_DTL KK0021_GENE ");
		sbSql.append("           WHERE  KK0021_GENE.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ");
		sbSql.append("           AND    KK0021_GENE.MK_FLG = '0' ");
		sbSql.append("           GROUP BY KK0021_GENE.MSKM_DTL_NO ");
		sbSql.append("         ) ");
		sbSql.append("    AND    (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) = ");
		sbSql.append("         ( SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ");
		sbSql.append("           FROM   KK_T_SVC_KEI KK0081_GENE ");
		sbSql.append("           WHERE  KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append("           AND    KK0081_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("           AND    KK0081_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("           AND    KK0081_GENE.MK_FLG = '0' ");
		sbSql.append("           GROUP BY KK0081_GENE.SVC_KEI_NO ");
		sbSql.append("         ) ");

		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK0021ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, mskmshoNo);
			CAANJDBCUtil.setParam(pstmt, 2, sysId);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(KK0021ETMsg.MSKMSHO_DTL_NO, rsltQuery.getString(1));
				mapRslt.put(KK0081ETMsg.SVC_KEI_NO, rsltQuery.getString(2));
				mapRslt.put(KK0081ETMsg.SVC_CD, rsltQuery.getString(3));
				mapRslt.put(KK0081ETMsg.SVC_KEI_STAT, rsltQuery.getString(4));
				mapRslt.put(KK0081ETMsg.PRC_GRP_CD, rsltQuery.getString(5));

				listRslt.add(mapRslt);
			}

			return listRslt;
		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * フェムトセルオプション存在チェックを実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkSonzaiFemtOp(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkSonzaiFemtOp SHOSA_TG_CD = " + SHOSACHK_TRG_045);
		
		// サービス契約番号が指定されていない場合、OKを返却する
		if (svcKeiNo == null || "".equals(svcKeiNo))
		{
			return RETURN_OK;
		}

		String opeDate = getOpeDate(inMsg, kidoCd);

		List<Map<String, String>> femtOpList = getFemtOpList(svcKeiNo, opeDate);

		if (femtOpList.size() < 1)
		{
			return RETURN_OK;
		}
		else
		{
			return RETURN_NG;
		}
	}

	/**
	 * <p>
	 * コース変更チェックを実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkCrsChg(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkCrsChg SHOSA_TG_CD = " + SHOSACHK_TRG_046);
		
		// サービス契約番号が指定されていない場合、OKを返却する
		if (svcKeiNo == null || "".equals(svcKeiNo))
		{
			return RETURN_OK;
		}

		String opeDate = getOpeDate(inMsg, kidoCd);

		List<Map<String, String>> idoRsvCrsChgList = getIdoRsvCrsChgList(svcKeiNo, opeDate);

		if (idoRsvCrsChgList.size() < 1)
		{
			return RETURN_OK;
		}
		else
		{
			return RETURN_NG;
		}
	}

	/**
	 * <p>
	 * ファミリーパック割引数チェックを実施する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param sysId SYSID
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkFamPackWrNum(CAANMsg inMsg, String sysId, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkFamPackWrNum SHOSA_TG_CD = " + SHOSACHK_TRG_047);
		
		// SYSIDが指定されていない場合、OKを返却する
		if (sysId == null || "".equals(sysId))
		{
			return RETURN_OK;
		}

		String opeDate = getOpeDate(inMsg, kidoCd);

		Long famPackWrCnt = getFamPackWrCnt(sysId, opeDate);

		if (famPackWrCnt.intValue() < FAM_PACK_WR_KENSU)
		{
			return RETURN_OK;
		}
		else
		{
			return RETURN_NG;
		}
	}
	
	// ANK-4494-00-00 DEL START
//	/**
//	 * <p>
//	 * 同番移転保留チェックを行います。
//	 * </p>
//	 * @param inMsg メッセージキャリア
//	 * @param svcKeiNo サービス契約番号
//	 * @param kidoCd 起動コード
//	 * @return チェック結果(OK:0, NG:1)
//	 */
//	protected String chkHoryuDobaniten(CAANMsg inMsg, String svcKeiNo, String kidoCd)
//	{
//		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkHoryuDobaniten SHOSA_TG_CD = " + SHOSACHK_TRG_048);
//		
//		// サービス契約番号が指定されていない場合、OKを返却する
//		if (svcKeiNo == null || "".equals(svcKeiNo))
//		{
//			return RETURN_OK;
//		}
//
//		// サービス契約内訳<eo光電話>を取得する
//		CAANMsg[] msgKK0191List = getSvcKeiUcwkEoHikariTel2(inMsg, svcKeiNo, kidoCd);
//
//		for (int i = 0; i < msgKK0191List.length; i++)
//		{
//			// 同番移転依頼制御コードの値が"0"(保留)の場合、NG
//			if (DOBANITEN_REQ_CTRL_HORYU.equals(msgKK0191List[i].getString(KK0191ETMsg.DOBANITEN_REQ_CTRL_CD)))
//			{
//				return RETURN_NG;
//			}
//
//		}
//
//		return RETURN_OK;
//	}
//
//	/**
//	 * <p>
//	 * 同番移転不可チェックを行います。
//	 * </p>
//	 * @param inMsg メッセージキャリア
//	 * @param svcKeiNo サービス契約番号
//	 * @param kidoCd 起動コード
//	 * @return チェック結果(OK:0, NG:1)
//	 */
//	protected String chkNotDobaniten(CAANMsg inMsg, String svcKeiNo, String kidoCd)
//	{
//		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkNotDobaniten SHOSA_TG_CD = " + SHOSACHK_TRG_049);
//		
//		// サービス契約番号が指定されていない場合、OKを返却する
//		if (svcKeiNo == null || "".equals(svcKeiNo))
//		{
//			return RETURN_OK;
//		}
//
//		// サービス契約内訳<eo光電話>を取得する
//		CAANMsg[] msgKK0191List = getSvcKeiUcwkEoHikariTel2(inMsg, svcKeiNo, kidoCd);
//
//		for (int i = 0; i < msgKK0191List.length; i++)
//		{
//			// 同番移転依頼制御コードの値が"0"(保留)以外かつ同番移転判定コードの値が"2"(否)の場合、NG
//			if (!DOBANITEN_REQ_CTRL_HORYU.equals(msgKK0191List[i].getString(KK0191ETMsg.DOBANITEN_REQ_CTRL_CD)) &&
//					DOBANITEN_HANTEI_HI.equals(msgKK0191List[i].getString(KK0191ETMsg.DOBANITEN_JDG_CD)))
//			{
//				return RETURN_NG;
//			}
//
//		}
//
//		return RETURN_OK;
//	}
//
//	/**
//	 * <p>
//	 * 同番移転結果チェック(可否)を行います。
//	 * </p>
//	 * @param inMsg メッセージキャリア
//	 * @param svcKeiNo サービス契約番号
//	 * @param kidoCd 起動コード
//	 * @return チェック結果(OK:0, NG:1)
//	 */
//	protected String chkKekkaDobaniten(CAANMsg inMsg, String svcKeiNo, String kidoCd)
//	{
//		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkKekkaDobaniten SHOSA_TG_CD = " + SHOSACHK_TRG_050);
//
//		// サービス契約番号が指定されていない場合、OKを返却する
//		if (svcKeiNo == null || "".equals(svcKeiNo))
//		{
//			return RETURN_OK;
//		}
//
//		// サービス契約内訳<eo光電話>を取得する
//		CAANMsg[] msgKK0191List = getSvcKeiUcwkEoHikariTel2(inMsg, svcKeiNo, kidoCd);
//
//		// OM-2014-0003911 ADD START
//		int dobanChkTg = 0;
//		// 1番号か2番号かの判定を行う。
//		dobanChkTg = msgKK0191List.length;
//		boolean dobanChkOkFlg = false;
//		// OM-2014-0003911 ADD END
//		
//		for (int i = 0; i < msgKK0191List.length; i++)
//		{
//			// 同番移転申込有無の値が"1"(有)の場合、以下のチェックを実施する
//			if (JKKModelConst.DOBANITEN_ARI.equals(msgKK0191List[i].getString(KK0191ETMsg.DOBANITEN_MSKM_UM)))
//			{
//				// 同番移転依頼制御コードの値が"0"(保留)以外かつ同番移転判定コードの値が"0"(未設定)の場合
//				if (!DOBANITEN_REQ_CTRL_HORYU.equals(msgKK0191List[i].getString(KK0191ETMsg.DOBANITEN_REQ_CTRL_CD))
//						&& DOBANITEN_HANTEI_MISETTEI.equals(msgKK0191List[i].getString(KK0191ETMsg.DOBANITEN_JDG_CD)))
//				{
//					// サービス契約内訳番号、電話番号に紐づく同番移転情報を取得
//					// OM-2014-0003911 MOD START
//					// サービス契約内訳番号、電話番号に紐づく同番移転情報を降順で取得
////					CAANMsg[] msgTU0021List = getDoubanIten(msgKK0191List[i].getString(KK0191ETMsg.SVC_KEI_UCWK_NO), msgKK0191List[i].getString(KK0191ETMsg.TELNO));
//					ArrayList<HashMap<String, String>> msgTU0021List = getDoubanItenCheck(msgKK0191List[i].getString(KK0191ETMsg.SVC_KEI_UCWK_NO), msgKK0191List[i].getString(KK0191ETMsg.TELNO));
//					// OM-2014-0003911 MOD END
//
//					// OM-2014-0003911 DEL START
////					for (int j = 0; j < msgTU0021List.length; j++)
//					// OM-2014-0003911 DEL END
//					// OM-2014-0003911 ADD START
//					// 20150123 OM-2015-0000108 MOD START
//					// 同番移転情報が取れなかった場合は次へ
//					// 20150123 OM-2015-0000108 MOD END
//					if(msgTU0021List == null || msgTU0021List.size() == 0)
//					{
//						// 20150123 OM-2015-0000108 DEL START
////						return RETURN_NG;
//						// 20150123 OM-2015-0000108 DEL END
//						// 20150123 OM-2015-0000108 ADD START
//						continue;
//						// 20150123 OM-2015-0000108 ADD END
//					}
//					else
//					{
//						HashMap<String, String> msgTU0021 = msgTU0021List.get(0);
//						
//						//同番移転可否が"1"(可)の場合、OK
//						if (DOBANITEN_KH_KA.equals(msgTU0021.get(TU0021ETMsg.DOBANITEN_KH)))
//						{
//							// 対象が1番号の場合は、OKを返す。
//							if (dobanChkTg == 1)
//							{
//								return RETURN_OK;
//							}
//							// 対象が2番号の場合は、フラグをセットし、次内訳番号をみる。
//							else if (dobanChkTg == 2)
//							{
//								if (dobanChkOkFlg)
//								{
//									return RETURN_OK;
//								}
//								else
//								{
//									dobanChkOkFlg = true;
//									continue;
//								}
//							}
//						}
//					// OM-2014-0003911 ADD END
//						// OM-2014-0003911 DEL START
//						// 同番ステータスが"当番移転取消"以外のデータを取得するように変更した為条件を削除
//						// 同番ステータスが"同番移転取消"の場合
////						if (JKKModelConst.DOBANITEN_CL.equals(msgTU0021List[j].getString(TU0021ETMsg.DOBANITEN_STAT)))
////						{
////							continue;
////						}
//						// OM-2014-0003911 DEL END
//
//						//同番移転可否が"0"(否)の場合、NG
//						// OM-2014-0003911 MOD START
////						if (DOBANITEN_KH_HI.equals(msgTU0021List[j].getString(TU0021ETMsg.DOBANITEN_KH)))
//						if (DOBANITEN_KH_HI.equals(msgTU0021.get(TU0021ETMsg.DOBANITEN_KH)))
//						// OM-2014-0003911 MOD END
//						{
//							return RETURN_NG;
//						}
//					}
//				}
//			}
//		}
//		return RETURN_OK;
//	}
//
//	/**
//	 * <p>
//	 * 同番移転状態不整合チェックを行います。
//	 * </p>
//	 * @param inMsg メッセージキャリア
//	 * @param svcKeiNo サービス契約番号
//	 * @param kidoCd 起動コード
//	 * @return チェック結果(OK:0, NG:1)
//	 */
//	protected String chkDobaniten(CAANMsg inMsg, String svcKeiNo, String kidoCd)
//	{
//		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkDobaniten SHOSA_TG_CD = " + SHOSACHK_TRG_051);
//		
//		// サービス契約番号が指定されていない場合、OKを返却する
//		if (svcKeiNo == null || "".equals(svcKeiNo))
//		{
//			return RETURN_OK;
//		}
//
//		// サービス契約内訳<eo光電話>を取得する
//		CAANMsg[] msgKK0191List = getSvcKeiUcwkEoHikariTel2(inMsg, svcKeiNo, kidoCd);
//
//		for (int i = 0; i < msgKK0191List.length; i++)
//		{
//			// 同番移転依頼制御コードの値が"0"(保留)以外かつ(同番移転判定コードの値が"1"(可)または"3"(判定中))の場合
//			if (!DOBANITEN_REQ_CTRL_HORYU.equals(msgKK0191List[i].getString(KK0191ETMsg.DOBANITEN_REQ_CTRL_CD)) &&
//					(DOBANITEN_HANTEI_KA.equals(msgKK0191List[i].getString(KK0191ETMsg.DOBANITEN_JDG_CD)) ||
//							DOBANITEN_HANTEI_HANTEITYU.equals(msgKK0191List[i].getString(KK0191ETMsg.DOBANITEN_JDG_CD))))
//			{
//
//				// サービス契約内訳番号、電話番号に紐づく同番移転情報を取得
//				CAANMsg[] msgTU0021List = getDoubanIten(msgKK0191List[i].getString(KK0191ETMsg.SVC_KEI_UCWK_NO), msgKK0191List[i].getString(KK0191ETMsg.TELNO));
//
//				for (int j = 0; j < msgTU0021List.length; j++)
//				{
//					//同番移転可否が"0"(否)またはnullの場合、NG
//					if (DOBANITEN_KH_HI.equals(msgTU0021List[j].getString(TU0021ETMsg.DOBANITEN_KH)) ||
//							msgTU0021List[j].getString(TU0021ETMsg.DOBANITEN_KH) == null)
//					{
//						return RETURN_NG;
//					}
//				}
//			}
//
//		}
//
//		return RETURN_OK;
//	}
	// ANK-4494-00-00 DEL END
	
	/**
	 * <p>
	 * オプションサービス契約カレント情報（フェムトセル）を取得します。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日付
	 * @return 対象のサービス契約番号に紐付くオプションサービス契約カレント情報（フェムトセル）リスト
	 */
	private List<Map<String, String>> getFemtOpList(String svcKeiNo, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT KK0351.OP_SVC_KEI_NO ");
		sbSql.append("      , KK0351.PCRS_CD AS KK0351_PCRS_CD ");
		sbSql.append("      , KK0351.OP_SVC_CD AS KK0351_OP_SVC_CD ");
		sbSql.append("      , KK0351.OP_SVC_KEI_HKHASYMD ");
		sbSql.append(" FROM   KK_T_OP_SVC_KEI KK0351 ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("        ( SELECT KK0081_TEMP.SVC_KEI_NO ");
		sbSql.append("               , KK0081_TEMP.PCRS_CD ");
		sbSql.append("          FROM   KK_T_SVC_KEI KK0081_TEMP ");
		sbSql.append("          WHERE  KK0081_TEMP.RSV_APLY_YMD || KK0081_TEMP.GENE_ADD_DTM = ");
		sbSql.append("                 ( SELECT MAX(KK0081_TEMP_GENE.RSV_APLY_YMD || KK0081_TEMP_GENE.GENE_ADD_DTM) AS KK0081_TEMP_MAX ");
		sbSql.append("                   FROM   KK_T_SVC_KEI KK0081_TEMP_GENE ");
		sbSql.append("                   WHERE  KK0081_TEMP_GENE.SVC_KEI_NO = KK0081_TEMP.SVC_KEI_NO ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.MK_FLG = '0' ");
		sbSql.append("                 ) ");
		sbSql.append("        ) KK0081 ");
		sbSql.append("        ON  KK0351.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append(" WHERE  KK0351.SVC_KEI_NO = ? ");
		sbSql.append(" AND    KK0351.OP_SVC_KEI_STAT NOT IN ('910', '920') ");
		sbSql.append(" AND    KK0351.RSV_APLY_YMD || KK0351.GENE_ADD_DTM = ");
		sbSql.append("        ( SELECT MAX(KK0351_GENE.RSV_APLY_YMD || KK0351_GENE.GENE_ADD_DTM) AS KK0351_MAX ");
		sbSql.append("          FROM   KK_T_OP_SVC_KEI KK0351_GENE ");
		sbSql.append("          WHERE  KK0351_GENE.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO ");
		sbSql.append("          AND    KK0351_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("          AND    KK0351_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("          AND    KK0351_GENE.MK_FLG = '0' ");
		sbSql.append("        ) ");
		sbSql.append(" AND    KK0351.OP_SVC_CD = 'B075' ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0351ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, opeDate);
			CAANJDBCUtil.setParam(pstmt, 2, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(OP_SVC_KEI_NO, rsltQuery.getString(1));
				mapRslt.put(KK0351_PCRS_CD, rsltQuery.getString(2));
				mapRslt.put(KK0351_OP_SVC_CD, rsltQuery.getString(3));

				listRslt.add(mapRslt);
			}

			return listRslt;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 異動予約情報（コース変更）を取得します。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日付
	 * @return 対象のサービス契約番号に紐付く異動予約情報（コース変更）リスト
	 */
	private List<Map<String, String>> getIdoRsvCrsChgList(String svcKeiNo, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT KK1681.IDO_RSV_NO ");
		sbSql.append(" FROM   KK_T_IDO_RSV KK1681 ");
		sbSql.append(" WHERE  KK1681.SVC_KEI_NO = ? ");
		sbSql.append(" AND    KK1681.IDO_DIV = '00009' ");
		sbSql.append(" AND    KK1681.RSV_APLY_YMD <= ? ");
		sbSql.append(" AND    KK1681.MK_FLG = '0' ");
		sbSql.append(" AND    (KK1681.IDO_RSV_STAT_CD = '00' OR KK1681.IDO_RSV_STAT_CD = '03') ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK1681ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();

			// 取得結果をマップに格納
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(KK1681ETMsg.IDO_RSV_NO, rsltQuery.getString(1));

				listRslt.add(mapRslt);
			}

			return listRslt;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * SYSIDに紐付く、割引サービス対象契約の情報を取得します。
	 * </p>
	 * @param sysId SYSID
	 * @param opeDate 運用日付
	 * @return 対象のSYSIDに紐付く割引サービス対象契約
	 */
	private Long getFamPackWrCnt(String sysId, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT SUM(CNT) AS CNT ");
		sbSql.append(" FROM ");
		sbSql.append(" ( ");
		sbSql.append(" SELECT COUNT(KK0081.SVC_KEI_NO) AS CNT ");
		sbSql.append(" FROM   KK_T_SVC_KEI KK0081 ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("        ( SELECT KK0481_TEMP.SVC_KEI_NO ");
		sbSql.append("               , KK0481_TEMP.WRIB_SVC_KEI_NO ");
		sbSql.append("          FROM   KK_T_WRISVC_TG_KEI KK0481_TEMP ");
		sbSql.append("          WHERE  KK0481_TEMP.WRISVC_TG_KEI_TSTAYMD || KK0481_TEMP.GENE_ADD_DTM = ");
		sbSql.append("                 ( SELECT MAX(KK0481_TEMP_GENE.WRISVC_TG_KEI_TSTAYMD || KK0481_TEMP_GENE.GENE_ADD_DTM) AS KK0481_TEMP_MAX ");
		sbSql.append("                   FROM   KK_T_WRISVC_TG_KEI KK0481_TEMP_GENE ");
		sbSql.append("                   WHERE  KK0481_TEMP_GENE.WRIB_SVC_KEI_NO = KK0481_TEMP.WRIB_SVC_KEI_NO ");
		sbSql.append("                   AND    KK0481_TEMP_GENE.WRIB_SVC_TRGT_KEI_NO = KK0481_TEMP.WRIB_SVC_TRGT_KEI_NO ");
		sbSql.append("                   AND    KK0481_TEMP_GENE.WRISVC_TG_KEI_TSTAYMD <= ? ");
		sbSql.append("                   AND    KK0481_TEMP_GENE.WRISVC_TG_KEI_TENDYMD >= ? ");
		sbSql.append("                   AND    KK0481_TEMP_GENE.MK_FLG = '0' ");
		sbSql.append("                 ) ");
		sbSql.append("        ) KK0481 ");
		sbSql.append("        ON  KK0081.SVC_KEI_NO = KK0481.SVC_KEI_NO ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("        ( SELECT KK0451_TEMP.WRIB_SVC_KEI_NO ");
		sbSql.append("               , KK0451_TEMP.WRIB_SVC_CD ");
		sbSql.append("          FROM   KK_T_WRIB_SVC_KEI KK0451_TEMP ");
		sbSql.append("          WHERE  KK0451_TEMP.RSV_APLY_YMD || KK0451_TEMP.GENE_ADD_DTM = ");
		sbSql.append("                 ( SELECT MAX(KK0451_TEMP_GENE.RSV_APLY_YMD || KK0451_TEMP_GENE.GENE_ADD_DTM) AS KK0451_TEMP_MAX ");
		sbSql.append("                   FROM   KK_T_WRIB_SVC_KEI KK0451_TEMP_GENE ");
		sbSql.append("                   WHERE  KK0451_TEMP_GENE.WRIB_SVC_KEI_NO = KK0451_TEMP.WRIB_SVC_KEI_NO ");
		sbSql.append("                   AND    KK0451_TEMP_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("                   AND    KK0451_TEMP_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("                   AND    KK0451_TEMP_GENE.MK_FLG = '0' ");
		sbSql.append("                 ) ");
		sbSql.append("        ) KK0451 ");
		sbSql.append("        ON  KK0481.WRIB_SVC_KEI_NO = KK0451.WRIB_SVC_KEI_NO ");
		sbSql.append(" WHERE  KK0081.SYSID = ? ");
		sbSql.append(" AND    KK0081.SVC_KEI_STAT NOT IN ('910', '920') ");
		sbSql.append(" AND    KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ");
		sbSql.append("        ( SELECT MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ");
		sbSql.append("          FROM   KK_T_SVC_KEI KK0081_GENE ");
		sbSql.append("          WHERE  KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append("          AND    KK0081_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("          AND    KK0081_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("          AND    KK0081_GENE.MK_FLG = '0' ");
		sbSql.append("        ) ");
		sbSql.append(" AND    KK0451.WRIB_SVC_CD = 'W00000006' ");
		sbSql.append(" UNION ALL ");
		sbSql.append(" SELECT COUNT(KK1681.IDO_RSV_NO) AS CNT ");
		sbSql.append(" FROM   KK_T_IDO_RSV KK1681 ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("        ( SELECT KK0081_TEMP.SVC_KEI_NO ");
		sbSql.append("               , KK0081_TEMP.SVC_KEI_STAT ");
		sbSql.append("          FROM   KK_T_SVC_KEI KK0081_TEMP ");
		sbSql.append("          WHERE  KK0081_TEMP.RSV_APLY_YMD || KK0081_TEMP.GENE_ADD_DTM = ");
		sbSql.append("                 ( SELECT MAX(KK0081_TEMP_GENE.RSV_APLY_YMD || KK0081_TEMP_GENE.GENE_ADD_DTM) AS KK0081_TEMP_MAX ");
		sbSql.append("                   FROM   KK_T_SVC_KEI KK0081_TEMP_GENE ");
		sbSql.append("                   WHERE  KK0081_TEMP_GENE.SVC_KEI_NO = KK0081_TEMP.SVC_KEI_NO ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("                   AND    KK0081_TEMP_GENE.MK_FLG = '0' ");
		sbSql.append("                 ) ");
		sbSql.append("        ) KK0081 ");
		sbSql.append("        ON  KK1681.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("        ( SELECT KK0481_TEMP.SVC_KEI_NO ");
		sbSql.append("               , KK0481_TEMP.WRIB_SVC_KEI_NO ");
		sbSql.append("          FROM   KK_T_WRISVC_TG_KEI KK0481_TEMP ");
		sbSql.append("          WHERE  KK0481_TEMP.WRISVC_TG_KEI_TSTAYMD || KK0481_TEMP.GENE_ADD_DTM = ");
		sbSql.append("                 ( SELECT MAX(KK0481_TEMP_GENE.WRISVC_TG_KEI_TSTAYMD || KK0481_TEMP_GENE.GENE_ADD_DTM) AS KK0481_TEMP_MAX ");
		sbSql.append("                   FROM   KK_T_WRISVC_TG_KEI KK0481_TEMP_GENE ");
		sbSql.append("                   WHERE  KK0481_TEMP_GENE.WRIB_SVC_KEI_NO = KK0481_TEMP.WRIB_SVC_KEI_NO ");
		sbSql.append("                   AND    KK0481_TEMP_GENE.WRIB_SVC_TRGT_KEI_NO = KK0481_TEMP.WRIB_SVC_TRGT_KEI_NO ");
		sbSql.append("                   AND    KK0481_TEMP_GENE.WRISVC_TG_KEI_TSTAYMD <= ? ");
		sbSql.append("                   AND    KK0481_TEMP_GENE.WRISVC_TG_KEI_TENDYMD >= ? ");
		sbSql.append("                   AND    KK0481_TEMP_GENE.MK_FLG = '0' ");
		sbSql.append("                 ) ");
		sbSql.append("        ) KK0481 ");
		sbSql.append("        ON  KK0081.SVC_KEI_NO = KK0481.SVC_KEI_NO ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("        ( SELECT KK0451_TEMP.WRIB_SVC_KEI_NO ");
		sbSql.append("               , KK0451_TEMP.WRIB_SVC_CD ");
		sbSql.append("          FROM   KK_T_WRIB_SVC_KEI KK0451_TEMP ");
		sbSql.append("          WHERE  KK0451_TEMP.RSV_APLY_YMD || KK0451_TEMP.GENE_ADD_DTM = ");
		sbSql.append("                 ( SELECT MAX(KK0451_TEMP_GENE.RSV_APLY_YMD || KK0451_TEMP_GENE.GENE_ADD_DTM) AS KK0451_TEMP_MAX ");
		sbSql.append("                   FROM   KK_T_WRIB_SVC_KEI KK0451_TEMP_GENE ");
		sbSql.append("                   WHERE  KK0451_TEMP_GENE.WRIB_SVC_KEI_NO = KK0451_TEMP.WRIB_SVC_KEI_NO ");
		sbSql.append("                   AND    KK0451_TEMP_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("                   AND    KK0451_TEMP_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("                   AND    KK0451_TEMP_GENE.MK_FLG = '0' ");
		sbSql.append("                 ) ");
		sbSql.append("        ) KK0451 ");
		sbSql.append("        ON  KK0481.WRIB_SVC_KEI_NO = KK0451.WRIB_SVC_KEI_NO ");
		sbSql.append(" WHERE  KK1681.HEIGO_SK_SYSID = ? ");
		sbSql.append(" AND    (KK1681.IDO_RSV_STAT_CD = '00' OR KK1681.IDO_RSV_STAT_CD = '03') ");
		sbSql.append(" AND    KK0081.SVC_KEI_STAT NOT IN ('910', '920') ");
		sbSql.append(" AND    KK0451.WRIB_SVC_CD = 'W00000006' ");
		sbSql.append(" ) ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0081ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			int i = 1;
			CAANJDBCUtil.setParam(pstmt, i++, opeDate);
			CAANJDBCUtil.setParam(pstmt, i++, opeDate);
			CAANJDBCUtil.setParam(pstmt, i++, opeDate);
			CAANJDBCUtil.setParam(pstmt, i++, sysId);
			CAANJDBCUtil.setParam(pstmt, i++, opeDate);
			CAANJDBCUtil.setParam(pstmt, i++, opeDate);
			CAANJDBCUtil.setParam(pstmt, i++, opeDate);
			CAANJDBCUtil.setParam(pstmt, i++, opeDate);
			CAANJDBCUtil.setParam(pstmt, i++, opeDate);
			CAANJDBCUtil.setParam(pstmt, i++, sysId);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			Long retLng = 0L;

			// 取得結果をマップに格納
			if (rsltQuery.next())
			{
				retLng = rsltQuery.getLong(1);
			}

			return retLng;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * サービス契約番号に紐づく「サービス契約内訳」を取得します。（解約済・キャンセル済を除く）
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return サービス契約内訳のメッセージキャリア配列
	 */
	private CAANMsg[] getSvcKeiUcwk2(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		// 該当の「サービス契約」配下の「サービス契約内訳」を取得する。
		JKKejbKK0161DBABase kk0161Dba = new JKKejbKK0161DBABase();
		CAANMsg[] kk0161MsgList = kk0161Dba.getKK0161bySvcKei(svcKeiNo, null, getOpeDate(inMsg, kidoCd));
		
		// 解約済、キャンセル済を除外する
		kk0161MsgList = kk0161Dba.getKK0161OutDsLCl(kk0161MsgList);

		return kk0161MsgList;
	}

	/**
	 * <p>
	 * サービス契約番号に紐付くサービス契約内訳＜eo光電話＞を取得する。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return サービス契約内訳＜eo光電話＞
	 *          取得できない場合はnullを返却する
	 */
	private CAANMsg[] getSvcKeiUcwkEoHikariTel2(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		ArrayList<CAANMsg> list = new ArrayList<CAANMsg>();

		// 該当の「サービス契約」配下の「サービス契約内訳」(解約済・キャンセル済を除く)を取得する。
		CAANMsg[] kk0161MsgList = getSvcKeiUcwk2(inMsg, svcKeiNo, kidoCd);

		// 対応する「サービス契約内訳<eo光電話>」を取得する。
		for (CAANMsg kk0161Msg : kk0161MsgList)
		{
			// 検索条件の設定
			CAANMsg msg0191 = new CAANMsg(KK0191ETMsg.class.getName());
			msg0191.set(KK0191ETMsg.SVC_KEI_UCWK_NO, kk0161Msg.getString(KK0161ETMsg.SVC_KEI_UCWK_NO));
			msg0191.set(KK0191ETMsg.GENE_ADD_DTM, kk0161Msg.getString(KK0161ETMsg.GENE_ADD_DTM));
			CAANMsg kk0191Msg = new KK0191LE().findByPrimaryKey(msg0191);
			list.add(kk0191Msg);
		}

		return (CAANMsg[])list.toArray(new CAANMsg[0]);
	}

	/**
	 * <p>
	 * サービス契約内訳番号、電話番号に紐付く同番移転を取得する（カレントレコード）
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @param telNo 電話番号
	 * @return 同番移転情報
	 */
	private CAANMsg[] getDoubanIten(String svcKeiUcwkNo, String telNo)
	{
		ArrayList<CAANMsg> list = new ArrayList<CAANMsg>();
		HashMap<String, String> hash = new HashMap<String, String>();

		// 同番移転の検索
		CAANMsg msgTU0021 = new CAANMsg(TU0021ETMsg.class.getName());
		msgTU0021.set(TU0021ETMsg.SVC_KEI_UCWK_NO, svcKeiUcwkNo);
		msgTU0021.set(TU0021ETMsg.NTT_TELNO, telNo);
		TU0021LE le = new TU0021LE();
		CAANMsg[] msgTU0021List = null;
		try
		{
			msgTU0021List = le.findByCondition(msgTU0021);
		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

		for (int i = 0; i < msgTU0021List.length; i++)
		{
			if (hash.containsKey(msgTU0021List[i].getString(TU0021ETMsg.DOBANITEN_NO)))
			{
				continue;
			}
			hash.put(msgTU0021List[i].getString(TU0021ETMsg.DOBANITEN_NO), msgTU0021List[i].getString(TU0021ETMsg.DOBANITEN_NO));

			// 同番移転カレントレコード取得
			msgTU0021 = new CAANMsg(TU0021ETMsg.class.getName());
			msgTU0021.set(TU0021ETMsg.DOBANITEN_NO, msgTU0021List[i].getString(TU0021ETMsg.DOBANITEN_NO));
			String cmpSvcKeiUcwkNo = "";
			if (svcKeiUcwkNo != null)
			{
				cmpSvcKeiUcwkNo = svcKeiUcwkNo;
			}
			String cmpTelNo = "";
			if (telNo != null)
			{
				cmpTelNo = telNo;
			}
			CAANMsg curMsg = new JKKejbTU0021DBABase().findByCurrent(msgTU0021);
			if (curMsg == null
					|| !(cmpSvcKeiUcwkNo.equals(curMsg.getString(TU0021ETMsg.SVC_KEI_UCWK_NO)) && cmpTelNo.equals(curMsg
							.getString(TU0021ETMsg.NTT_TELNO))))
			{
				continue;
			}
			list.add(curMsg);
		}

		return (CAANMsg[])list.toArray(new CAANMsg[0]);
	}


	/**
	 * <p>
	 * タブレット端末台数チェック処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkTabletTnmtNum(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkTabletTnmtNum SHOSA_TG_CD = " + SHOSACHK_TRG_053);
		
		// サービス契約番号が空の場合、OKを返却する
		if (null == svcKeiNo || "".equals(svcKeiNo))
		{
			return RETURN_OK;
		}

		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);
		// タブレット端末情報を取得する
		ArrayList<String> tabletInfoList = getTabletInfoList(svcKeiNo, opeDate);
		// タブレット端末が２台以上の場合、エラーを返却する
		if (null != tabletInfoList && tabletInfoList.size() > 1)
		{
			return RETURN_NG;
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * 宅内プラットホーム整合性チェック処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkTakniPlathome(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkTakniPlathome SHOSA_TG_CD = " + SHOSACHK_TRG_054);
		
		// サービス契約番号が空の場合、OKを返却する
		if (null == svcKeiNo || "".equals(svcKeiNo))
		{
			return RETURN_OK;
		}

		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);

		// オプションサービス契約（スマートリンクプレミアム）を取得する
		ArrayList<String> opSvcInfoList = getOpSvcKeiSmartLinkPremium(svcKeiNo, opeDate);
		// タブレット端末情報を取得する
		ArrayList<String> tabletInfoList = getTabletInfoList(svcKeiNo, opeDate);
		
		// オプションサービス契約、タブレット端末情報の両方が取得できない場合、正常終了
		if ((null == opSvcInfoList || opSvcInfoList.size() == 0) && (null == tabletInfoList || tabletInfoList.size() == 0))
		{
			return RETURN_OK;
		}
		// オプションサービス契約、タブレット端末情報の両方が取得できる場合
		if ((null != opSvcInfoList && opSvcInfoList.size() > 0) && (null != tabletInfoList && tabletInfoList.size() > 0))
		{
			// 割賦契約(機器提供サービス契約番号)取得
			ArrayList<String> kapKeiList = getKapKei(tabletInfoList.get(0), opeDate);
			
			// 割賦契約が取得できない場合エラーとする
			if(null == kapKeiList || kapKeiList.size() == 0)
			{
				return RETURN_NG;
			}
		}
		// オプションサービス契約、タブレット端末情報の一方が取得できない場合、エラーとする
		else
		{
			return RETURN_NG;
		}
		
		return RETURN_OK;
	}
	
	
	/**
	 * <p>
	 * タブレット端末取得処理
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日付
	 * @return タブレット端末情報リスト
	 */
	private ArrayList<String> getTabletInfoList(String svcKeiNo, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

//ANK-3217-00-00 ADD START
		// 業務パラメータ管理用
		Connection conZM0321 = null;
		PreparedStatement pstmtZM0321 = null;
		ResultSet rsZM0321 = null;

		// GH宅内機器型式コード
		String tmpGhTakCode = null;
		String[] ghTakCode = null;
		
		// SQL文(GH宅内機器型式コード取得)
		StringBuffer ghSql = new StringBuffer();
		
		ghSql.append("SELECT ")
		.append("    ZM0321.WORK_PARAM_SETTE_VALUE ")
		.append("FROM ")
		.append("    ZM_M_WORK_PARAM_KNRI ZM0321 ")
		.append("WHERE ")
		.append("    WORK_PARAM_ID = 'KK_GH_TKKKMDL' ")
		.append("AND WORK_PARAM_TSTAYMD <= ? ")
		.append("AND WORK_PARAM_TENDYMD >= ? ")
		.append("AND MK_FLG = '0'");
		
		try
		{
			conZM0321 = JSYejbConnection.getConnection(ZM0321ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmtZM0321 = conZM0321.prepareStatement(ghSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), ghSql);
			
			// バインド変数設定
			CAANJDBCUtil.setParam(pstmtZM0321, 1, opeDate);
			CAANJDBCUtil.setParam(pstmtZM0321, 2, opeDate);

			// ResultSetの取得
			rsZM0321 = pstmtZM0321.executeQuery();
			
			// 結果の取得
			while(rsZM0321.next())
			{
				tmpGhTakCode = rsZM0321.getString(ZM0321CBMMsg.WORK_PARAM_SETTE_VALUE);
				ghTakCode = tmpGhTakCode.split(",");
			}
		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsZM0321 != null)
				{
					rsZM0321.close();
				}
				if (pstmtZM0321 != null)
				{
					pstmtZM0321.close();
				}
				if (conZM0321 != null)
				{
					CAANConnectionMgr.getInstance().close(conZM0321);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
//ANK-3217-00-00 ADD END
		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT KK0341.KKTK_SVC_KEI_NO ");
		sbSql.append("  FROM KK_T_KKTK_SVC_KEI KK0341 ");
		sbSql.append("  WHERE KK0341.SVC_KEI_NO = ? ");
		sbSql.append("   AND KK0341.KKTK_SVC_KEI_STAT NOT IN ('910', '920') ");
		sbSql.append("   AND KK0341.KKTK_SVC_CD = 'C021' ");
		sbSql.append("   AND KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM = ");
		sbSql.append("       ( SELECT MAX(KK0341_GENE.RSV_APLY_YMD || KK0341_GENE.GENE_ADD_DTM) AS KK0341_MAX ");
		sbSql.append("         FROM   KK_T_KKTK_SVC_KEI KK0341_GENE ");
		sbSql.append("         WHERE  KK0341_GENE.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ");
		sbSql.append("         AND    KK0341_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("         AND    KK0341_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("         AND    KK0341_GENE.MK_FLG = '0' ");
		sbSql.append("        ) ");
//ANK-3217-00-00 ADD START
		if (ghTakCode != null)
		{
			sbSql.append("   AND (KK0341.TAKNKIKI_MODEL_CD IS NULL ");
			sbSql.append("    OR KK0341.TAKNKIKI_MODEL_CD NOT IN (");
			// GH宅内機器型式コードを展開
			for (String code : ghTakCode)
			{
				sbSql.append("'" + code + "',");
			}
			// 最後のカンマを除去
			sbSql.deleteCharAt(sbSql.lastIndexOf(","));
			sbSql.append("))");
		}
//ANK-3217-00-00 ADD END

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0341ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 返却用リスト
			ArrayList<String> retList = new ArrayList<String>();

			// 取得結果をリストに格納
			while (rsltQuery.next())
			{
				retList.add(rsltQuery.getString(KK0341ETMsg.KKTK_SVC_KEI_NO));
			}

			return retList;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	
	/**
	 * <p>
	 * オプションサービス契約(B077)取得処理
	 * オプションサービス契約のスマートリンクプレミアムを取得する
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日付
	 * @return オプションサービス契約情報
	 */
	private ArrayList<String> getOpSvcKeiSmartLinkPremium(String svcKeiNo, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();
		sbSql.append(" SELECT  ");
		sbSql.append("    KK0351.OP_SVC_KEI_NO  ");
		sbSql.append(" FROM   KK_T_OP_SVC_KEI KK0351 ");
		sbSql.append(" WHERE  KK0351.SVC_KEI_NO = ? ");
		sbSql.append(" AND KK0351.OP_SVC_CD = 'B077' ");
		sbSql.append(" AND KK0351.OP_SVC_KEI_STAT NOT IN ('910', '920') ");
		sbSql.append(" AND KK0351.RSV_APLY_YMD || KK0351.GENE_ADD_DTM =  ");
		sbSql.append("      (SELECT MAX(KK0351_GENE.RSV_APLY_YMD || KK0351_GENE.GENE_ADD_DTM) AS KK0351_MAX  ");
		sbSql.append("       FROM   KK_T_OP_SVC_KEI KK0351_GENE  ");
		sbSql.append("       WHERE  KK0351_GENE.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO  ");
		sbSql.append("       AND    KK0351_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("       AND    KK0351_GENE.RSV_APLY_CD = '2'  ");
		sbSql.append("       AND    KK0351_GENE.MK_FLG = '0')  ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0351ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 返却用リスト
			ArrayList<String> retList = new ArrayList<String>();

			// 取得結果をリストに格納
			while (rsltQuery.next())
			{
				retList.add(rsltQuery.getString(KK0351ETMsg.OP_SVC_KEI_NO));
			}

			return retList;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * <p>
	 * 割賦契約(機器提供サービス契約番号)取得処理
	 * </p>
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param opeDate 運用日付
	 * @return 割賦契約情報
	 */
	private ArrayList<String> getKapKei(String kktkSvcKeiNo, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();
		sbSql.append(" SELECT KK2541.KAP_KEI_NO ");
		sbSql.append(" FROM KK_T_KAP_KEI KK2541 ");
		sbSql.append(" WHERE KK2541.KKTK_SVC_KEI_NO = ?  ");
		sbSql.append("   AND KK2541.KAP_KEI_STAT NOT IN ('910', '920') ");
		sbSql.append("   AND KK2541.RSV_APLY_YMD || KK2541.GENE_ADD_DTM = ");
		sbSql.append("       (SELECT MAX(KK2541_GENE.RSV_APLY_YMD || KK2541_GENE.GENE_ADD_DTM) AS KK2541_MAX ");
		sbSql.append("        FROM KK_T_KAP_KEI KK2541_GENE ");
		sbSql.append("        WHERE KK2541_GENE.KAP_KEI_NO = KK2541.KAP_KEI_NO ");
		sbSql.append("          AND KK2541_GENE.RSV_APLY_YMD <= ?  ");
		sbSql.append("          AND KK2541_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("          AND KK2541_GENE.MK_FLG = '0' ) ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK2541ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, kktkSvcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 返却用リスト
			ArrayList<String> retList = new ArrayList<String>();

			// 取得結果をリストに格納
			while (rsltQuery.next())
			{
				retList.add(rsltQuery.getString(KK2541ETMsg.KAP_KEI_NO));
			}

			return retList;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * <p>
	 * 番ポ電話番号法人契約使用中チェック処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkBmpTlnHjinKeiUse(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkBmpTlnHjinKeiUse SHOSA_TG_CD = " + SHOSACHK_TRG_055);
		
		// サービス契約番号が空の場合、OKを返却する
		if (null == svcKeiNo || "".equals(svcKeiNo))
		{
			return RETURN_OK;
		}

		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);

		// 番ポ電話番号法人契約使用中の件数を取得する
		long cnt = getBmpTlnHjinKeiCnt(svcKeiNo, opeDate);
		if (0L == cnt)
		{
			return RETURN_OK;
		}

		return RETURN_NG;

	}
	
	/**
	 * <p>
	 * 番ポ電話番号法人契約使用中件数取得処理
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日付
	 * @return 番ポ電話番号法人契約使用中件数
	 */
	private long getBmpTlnHjinKeiCnt(String svcKeiNo, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append("SELECT  ");
		sbSql.append("    COUNT(*) AS CNT  ");
		sbSql.append("FROM KK_T_SVC_KEI_UCWK KK0161 ");
		sbSql.append("  INNER JOIN KK_T_SVKEIUW_EOH_TEL KK0191 ");
		sbSql.append("    ON KK0161.SVC_KEI_UCWK_NO = KK0191.SVC_KEI_UCWK_NO ");
		sbSql.append("    AND KK0161.GENE_ADD_DTM = KK0191.GENE_ADD_DTM ");
		sbSql.append("  INNER JOIN ZM_M_TELNO ZM0121 ");
		sbSql.append("    ON KK0191.TELNO = ZM0121.TELNO ");
		sbSql.append("WHERE KK0161.SVC_KEI_NO = ? ");
		sbSql.append("      AND KK0161.SVC_KEI_UCWK_STAT NOT IN('910', '920') ");
		sbSql.append("      AND KK0161.RSV_APLY_YMD || KK0161.GENE_ADD_DTM = ");
		sbSql.append("          (SELECT MAX (KK0161_GENE.RSV_APLY_YMD || KK0161_GENE.GENE_ADD_DTM) AS KK0161_GENE_MAX ");
		sbSql.append("           FROM KK_T_SVC_KEI_UCWK KK0161_GENE ");
		sbSql.append("           WHERE KK0161_GENE.SVC_KEI_UCWK_NO = KK0161.SVC_KEI_UCWK_NO ");
		sbSql.append("           AND KK0161_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("           AND KK0161_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("           AND KK0161_GENE.MK_FLG = '0' ");
		sbSql.append("          ) ");
		sbSql.append("      AND KK0191.BMP_UM = '1' ");
		sbSql.append("      AND ZM0121.KOJIN_HOJIN_TLN_TAI_CD = '2' ");
		sbSql.append("      AND ZM0121.MK_FLG = '0' ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0161ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			long retLng = 0L;

			// 取得結果をマップに格納
			if (rsltQuery.next())
			{
				retLng = rsltQuery.getLong(1);
			}

			return retLng;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * <p>
	 * マンション照査状態チェック処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param tkHoshikiKeiNo 提供方式契約番号
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkMansionShosa(CAANMsg inMsg, String tkHoshikiKeiNo) 
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkMansionShosa SHOSA_TG_CD = " + SHOSACHK_TRG_056);
		
		CAANMsg retMsgList = null;

		retMsgList = getTkHoushikiKei(tkHoshikiKeiNo);
		
		if(null == retMsgList)
		{
			throw new CAANRuntimeException("提供方式契約が特定できませんでした。提供方式契約番号：" + tkHoshikiKeiNo);
		}

		String shosaZumiFlg = retMsgList.getString(KK0891ETMsg.SHOSA_ZUMI_FLG);
		if(SHOSA_ZUMI_FLG_SUMI.equals(shosaZumiFlg))
		{
			return RETURN_OK;
		}

		return RETURN_NG;
	}
	
	
	/**
	 * <p>
	 * サービス追加時の配送作成可否チェック処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkHaisoCreKh(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{

		// サービス契約番号が空の場合、OKを返却する
		if (null == svcKeiNo || "".equals(svcKeiNo))
		{
			return RETURN_OK;
		}

		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);

		// 同一回線のサービス契約を取得しその取得結果の件数を取得する
		Long cnt = getSvcKeiDouituKaisen(svcKeiNo, opeDate);
		if (0 < cnt)
		{
			return RETURN_NG;
		}

		return RETURN_OK;

	}

	/**
	 * <p>
	 * 同一回線のサービス契約を取得しその取得結果を返却します
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日付
	 * @return 同一回線のサービス契約を取得しその取得結果数を返却する
	 */
	private Long getSvcKeiDouituKaisen(String svcKeiNo, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT  ")
			.append("     COUNT(*) AS CNT ")
			.append(" FROM  ")
			.append("     KK_T_SVC_KEI KK0081 ")
			.append("     INNER JOIN  ")
			.append("         (SELECT  SVC_KEI_NO ")
			.append("                 ,SVC_KEI_KAISEN_UCWK_NO ")
			.append("            FROM  KK_T_KAISEN_TG_SVKEI KK0241_01 ")
			.append("           WHERE  KK0241_01.KAISEN_UCWK_USE_STAYMD <= ? ")
			.append("             AND  KK0241_01.KAISEN_UCWK_USE_ENDYMD >= ? ")
			.append("             AND  KK0241_01.MK_FLG = '0'  ")
			.append("             AND  KK0241_01.SVC_KEI_KAISEN_UCWK_NO  IN( ")
			.append("                      SELECT  KK0241_02.SVC_KEI_KAISEN_UCWK_NO ")
			.append("                        FROM  KK_T_KAISEN_TG_SVKEI KK0241_02 ")
			.append("                       WHERE  KK0241_02.SVC_KEI_NO = ? ")
			.append("                         AND  KK0241_02.KAISEN_UCWK_USE_STAYMD <= ? ")
			.append("                         AND  KK0241_02.KAISEN_UCWK_USE_ENDYMD >= ? ")
			.append("                         AND  KK0241_02.MK_FLG = '0' ")
			.append("                      ) ")
			.append("         ) KK0241 ")
			.append("     ON KK0081.SVC_KEI_NO = KK0241.SVC_KEI_NO ")
			.append("     INNER JOIN KK_T_SVKEI_KAISEN_UW KK0251 ")
			.append("     ON KK0241.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO ")
			.append("     INNER JOIN KU_T_SVKEI_KOJIAK KU0081 ")
			.append("     ON KK0081.SVC_KEI_NO = KU0081.SVC_KEI_NO ")
			.append("     INNER JOIN KU_T_KOJIAK KU0011 ")
			.append("     ON KU0081.KOJIAK_NO = KU0011.KOJIAK_NO ")
			.append(" WHERE ")
			.append("         KK0081.SVC_CD = '02'  ")
			.append("     AND KK0081.SVC_KEI_STAT = '030' ")
			.append("     AND KU0011.KOJIAK_STAT IN ('160', '170', '180', '190', '200', '900') ")
			.append("     AND KU0081.SVKEI_KOJIAK_TSTAYMD <= ? ")
			.append("     AND KU0081.SVKEI_KOJIAK_TENDYMD >= ? ")
			.append("     AND (KK0251.SVC_KEI_KAISEN_UCWK_NO, KK0251.GENE_ADD_DTM) =  ")
			.append("         (SELECT KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO, MAX(KK0251_GENE.GENE_ADD_DTM) AS KK0251_MAX   ")
			.append("            FROM KK_T_SVKEI_KAISEN_UW KK0251_GENE   ")
			.append("           WHERE KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO  ")
			.append("             AND KK0251_GENE.MK_FLG = '0'  ")
			.append("           GROUP BY KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO)  ")
			.append("     AND (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) =   ")
			.append("         (SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX   ")
			.append("            FROM KK_T_SVC_KEI KK0081_GENE   ")
			.append("           WHERE KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO   ")
			.append("             AND KK0081_GENE.RSV_APLY_YMD <= ?   ")
			.append("             AND KK0081_GENE.RSV_APLY_CD = '2'   ")
			.append("             AND KK0081_GENE.MK_FLG= '0'   ")
			.append("           GROUP BY KK0081_GENE.SVC_KEI_NO)   ")
			.append("     AND KU0081.MK_FLG = '0' ")
			.append("     AND KU0011.MK_FLG = '0' ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK0081ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, opeDate);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 4, opeDate);
			CAANJDBCUtil.setParam(pstmt, 5, opeDate);
			CAANJDBCUtil.setParam(pstmt, 6, opeDate);
			CAANJDBCUtil.setParam(pstmt, 7, opeDate);
			CAANJDBCUtil.setParam(pstmt, 8, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			Long retLng = 0L;

			// 取得結果をマップに格納
			if (rsltQuery.next())
			{
				retLng = rsltQuery.getLong(1);
			}

			return retLng;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * <p>
	 * マンション(光配線)従量制受付可否チェック
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param tkHoshikiKeiNo 提供方式契約番号
	 * @param pplanCd 料金プランコード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkMansJuryoUkKh (CAANMsg inMsg, String tkHoshikiKeiNo, String pplanCd)
	{

		if (!PPLAN_CD_MANS_100M_LIGHT.equals(pplanCd))
		{
			return RETURN_OK;
		}

		if (null == tkHoshikiKeiNo || "".equals(tkHoshikiKeiNo))
		{
			return RETURN_OK;
		}
		
		try
		{
			// 提供方式契約検索
			CAANMsg[] retMsgList = null;
			CAANMsg msgKK0891 = new CAANMsg(KK0891ETMsg.class.getName());
			msgKK0891.set(KK0891ETMsg.TK_HOSHIKI_KEI_NO, tkHoshikiKeiNo);
			msgKK0891.set(KK0891ETMsg.MK_FLG, "0");
			KK0891LE leKK0891 = new KK0891LE();
			retMsgList = leKK0891.findByCondition(msgKK0891);

			if (null == retMsgList || retMsgList.length == 0)
			{
				return RETURN_OK;
			}

			String eohntJuryoPlanMkmKh = retMsgList[0].getString(KK0891ETMsg.EOHNT_JURYO_PLAN_MKM_KH);

			if (KH_K.equals(eohntJuryoPlanMkmKh))
			{
				return RETURN_OK;
			}

			return RETURN_NG;
		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}
	}
	 
	/**
	 * <p>
	 * 同番移転結果チェック(未設定)を行います。
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkKekkaDobaniten_2(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		// サービス契約番号が指定されていない場合、OKを返却する
		if (svcKeiNo == null || "".equals(svcKeiNo))
		{
			return RETURN_OK;
		}

		// サービス契約内訳<eo光電話>を取得する
		CAANMsg[] msgKK0191List = getSvcKeiUcwkEoHikariTel2(inMsg, svcKeiNo, kidoCd);

		for (int i = 0; i < msgKK0191List.length; i++)
		{
			// 同番移転申込有無の値が"1"(有)の場合、以下のチェックを実施する
			if (JKKModelConst.DOBANITEN_ARI.equals(msgKK0191List[i].getString(KK0191ETMsg.DOBANITEN_MSKM_UM)))
			{
				// 同番移転依頼制御コードの値が"0"(保留)以外かつ同番移転判定コードの値が"0"(未設定)の場合
				if (!DOBANITEN_REQ_CTRL_HORYU.equals(msgKK0191List[i].getString(KK0191ETMsg.DOBANITEN_REQ_CTRL_CD)) &&
						DOBANITEN_HANTEI_MISETTEI.equals(msgKK0191List[i].getString(KK0191ETMsg.DOBANITEN_JDG_CD)))
				{
					// サービス契約内訳番号、電話番号に紐づく同番移転情報を取得
					CAANMsg[] msgTU0021List = getDoubanIten(msgKK0191List[i].getString(KK0191ETMsg.SVC_KEI_UCWK_NO), msgKK0191List[i].getString(KK0191ETMsg.TELNO));
	
					for (int j = 0; j < msgTU0021List.length; j++)
					{
						// 同番ステータスが"同番移転取消"の場合
						if (JKKModelConst.DOBANITEN_CL.equals(msgTU0021List[j].getString(TU0021ETMsg.DOBANITEN_STAT)))
						{
							continue;
						}

						//同番移転可否がnullの場合、NG
						if (msgTU0021List[j].getString(TU0021ETMsg.DOBANITEN_KH) == null)
						{
							return RETURN_NG;
						}
					}
				}
			}
		}

		return RETURN_OK;
	}
	
	/**
	 * 仮登録スマートバリュー存在チェック
	 * <p>
	 * 仮登録スマートバリュー存在チェックを行います
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動コード
	 * @return チェック結果(OK:0, NG:1)
	 */
	protected String chkExistsPrEntrySmtVal(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		// (1) 仮登録スマートバリュー取得処理を行う
		// サービス契約番号が指定されていない場合、チェック結果OKを返却する
		if (svcKeiNo == null || "".equals(svcKeiNo))
		{
			return RETURN_OK;
		}

		String opeDate = getOpeDate(inMsg, kidoCd);

		// (1)-2　仮登録スマートバリュー取得処理を呼び出し、他事業者割引契約番号一覧を取得する
		ArrayList<String> getSmtValTajgsWribKeiNoList = getPrEntrySmtValTjgWrbKeiNo(inMsg, svcKeiNo, opeDate);

		// 他事業者割引契約番号一覧画取得できない場合"締結済"とみなす。チェック結果OKを返却して処理を終了する
		if (null == getSmtValTajgsWribKeiNoList)
		{
			return RETURN_OK;
		}

		// (2) スマートバリュー照査NG判定取得処理を行う	
		try
		{
			String keyTajgsWribKeiNo = null;
			for (int i = 0; i < getSmtValTajgsWribKeiNoList.size(); i++)
			{
				// スマートバリューに紐付くもう一方のサービス契約が存在するかを判定する
				CAANMsg inKK2451 = new CAANMsg(KK2451ETMsg.class.getName());
				inKK2451.set(KK2451ETMsg.TAJGS_WRIB_KEI_NO, getSmtValTajgsWribKeiNoList.get(i));
				inKK2451.set(KK2451ETMsg.MK_FLG, MK_FLG_0);

				KK2451LE leKK2451 = new KK2451LE();

				// 他事業者割引契約番号をキーとして、他事業者割引契約対象契約の全件検索を実行する
				CAANMsg[] outKK2451 = leKK2451.findByCondition(inKK2451);

				// 他事業者割引契約対象契約が取得できない場合、処理の頭に戻る。
				if (null == outKK2451 || outKK2451.length == 0)
				{
					continue;
				}

				keyTajgsWribKeiNo = null;

				// 他事業者割引契約対象契約が取得できた場合
				for (int j = 0; j < outKK2451.length; j++)
				{
					// 他事業者割引契約対象契約のサービス契約番号が、パラメータ「サービス契約番号」と一致する場合、処理の頭に戻る
					if (outKK2451[j].getString(KK2451ETMsg.SVC_KEI_NO).equals(svcKeiNo))
					{
						continue;
					}

					// 他事業者割引契約対象契約.他事業者割引契約対象契約適用開始年月日≦運用日付
					// ≦他事業者割引契約対象契約.他事業者割引契約対象契約適用終了年月日でない場合、処理の頭に戻る
					if (!(JPCUtilCommon.isPastDate(outKK2451[j].getString(KK2451ETMsg.TAJGSWKEI_TGKEI_TSTAYMD), opeDate, INC_DATE) 
							&& JPCUtilCommon.isFutureDate(outKK2451[j].getString(KK2451ETMsg.TAJGSWKEI_TGKEI_TENDYMD), opeDate, INC_DATE)))
					{
						continue;
					}

					// 他事業者割引契約対象契約.サービス契約番号に紐付くサービス契約のカレントレコードがあるか判断する
					CAANMsg inKK0081 = new CAANMsg(KK0081ETMsg.class.getName());
					inKK0081.set(KK0081ETMsg.SVC_KEI_NO, outKK2451[j].getString(KK0081ETMsg.SVC_KEI_NO));
					inKK0081.set(KK0081ETMsg.RSV_APLY_YMD, opeDate);

					CAANMsg outKK0081 = new JKKejbKK0081DBABase().findByCurrent(inKK0081);

					// カレントレコードが存在しない場合、処理の頭に戻る
					if (null == outKK0081)
					{
						continue;
					}

					keyTajgsWribKeiNo = getSmtValTajgsWribKeiNoList.get(i);
					break;
				}

				// スマートバリューに紐付くもう一方のサービス契約が存在しない場合、チェック結果NGを返却して処理を終了する
				if (keyTajgsWribKeiNo == null)
				{
					return RETURN_NG;
				}

				// (2)-3　スマートバリュー照査NG判定取得処理の呼出を行い、結果が0件を超過している場合、チェック結果NGを返却して処理を終了する
				HashMap<String, String> rsltMap = getSmtValShosaNG(inMsg, keyTajgsWribKeiNo, svcKeiNo, opeDate);

				if (null != rsltMap)
				{

					String svcKeiStat = rsltMap.get(KK0081ETMsg.SVC_KEI_STAT);
					String shosaDslFinCd = rsltMap.get(KK0081ETMsg.SHOSA_DSL_FIN_CD);

					// 解約済またはキャンセル済の場合エラーとする
					if (SVC_KEI_STAT_DSL.equals(svcKeiStat) || SVC_KEI_STAT_CANCEL.equals(svcKeiStat))
					{
						return RETURN_NG;
					}

					// サービス契約ステータスが照査済かつ照査解約完了コードが照査NGの場合エラーとする
					if (SVC_KEI_STAT_SHOSA_ZUMI.equals(svcKeiStat) && SHOSA_DSL_FIN_CD_NG.equals(shosaDslFinCd))
					{
						return RETURN_NG;
					}

					String svcCd = rsltMap.get(KK0081ETMsg.SVC_CD);

					// インターネットサービスの場合
					if (SVC_CD_01.equals(svcCd))
					{
						String pcrsCd = rsltMap.get(KK0081ETMsg.PCRS_CD);
						String pplanCd = rsltMap.get(KK0081ETMsg.PPLAN_CD);

						CAANMsg[] kk0591MsgList = new JKKejbKK0591DBABase().getKK05911byPKAplyPrdChu(null, pcrsCd, pplanCd, opeDate);

						if (null == kk0591MsgList || kk0591MsgList.length == 0)
						{
							throw new CAANRuntimeException("料金プランが特定できませんでした。料金コースコード：" + pcrsCd + "料金プランコード：" + pplanCd);
						}

						String eohntPplanTikiSkcd = kk0591MsgList[0].getString(KK0591ETMsg.EOHNT_PPLAN_TIKI_SKCD);
						// 従量制の場合
						if (PPLAN_TIKI_SKCD_JYURYO.equals(eohntPplanTikiSkcd))
						{
							return RETURN_NG;
						}
					}
				}
			}
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		// 上記全てに当てはまらない場合、仮登録のスマートバリューが存在している且
		// スマートバリューに紐付くもう一方のサービス契約がキャンセル済・解約済・照査NGでないとして、チェック結果OKを返却して処理を終了する
		return RETURN_OK;
	}

	/**
	 * <p>
	 * 仮登録スマートバリュー取得処理
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日付
	 * @return
	 */
	private ArrayList<String> getPrEntrySmtValTjgWrbKeiNo(CAANMsg inMsg, String svcKeiNo, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// 返却用リスト
		ArrayList<String> retList = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT KK2451.TAJGS_WRIB_KEI_NO ");
		sbSql.append("   FROM KK_T_TAJGSWKEI_TGKEI KK2451 ");
		sbSql.append("  INNER JOIN KK_T_TAJGS_WRIB_KEI KK2441 ");
		sbSql.append("     ON KK2441.TAJGS_WRIB_KEI_NO = KK2451.TAJGS_WRIB_KEI_NO ");
		sbSql.append("  WHERE KK2451.SVC_KEI_NO = ? ");
		sbSql.append("    AND KK2451.TAJGSWKEI_TGKEI_TSTAYMD <= ? ");
		sbSql.append("    AND KK2451.TAJGSWKEI_TGKEI_TENDYMD >= ? ");
		sbSql.append("    AND KK2451.MK_FLG = '0' ");
		sbSql.append("    AND (KK2441.TAJGS_WRIB_KEI_CNCL_YMD IS NULL ");
		sbSql.append("        OR KK2441.TAJGS_WRIB_KEI_CNCL_YMD = '20991231') ");
		sbSql.append("    AND (KK2441.TAJGS_WRIB_KEI_CNC_YMD IS NULL ");
		sbSql.append("        OR KK2441.TAJGS_WRIB_KEI_CNC_YMD = '20991231') ");
		sbSql.append("    AND KK2441.MK_FLG = '0' ");

		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK2451ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			String retKey = null;
			retList = new ArrayList<String>();
			
			// 取得結果をリストに格納
			while (rsltQuery.next())
			{
				retKey = rsltQuery.getString(KK2451ETMsg.TAJGS_WRIB_KEI_NO);

				if (!retList.contains(retKey))
				{
					retList.add(retKey);
				}
			}
		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
		return retList;
	}
	
	/**
	 * <p>
	 * スマートバリュー照査NG判定取得処理
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param tajgsWribKeiNo
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日付
	 * @return
	 */
	private HashMap<String, String> getSmtValShosaNG(CAANMsg inMsg, String tajgsWribKeiNo, String svcKeiNo, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT KK0081.SVC_CD ");
		sbSql.append("        ,KK0081.PCRS_CD ");
		sbSql.append("        ,KK0081.PPLAN_CD ");
		sbSql.append("        ,KK0081.SVC_KEI_STAT ");
		sbSql.append("        ,KK0081.SHOSA_DSL_FIN_CD ");
		sbSql.append("   FROM KK_T_TAJGSWKEI_TGKEI KK2451 ");
		sbSql.append("  INNER JOIN KK_T_SVC_KEI KK0081 ");
		sbSql.append("     ON KK0081.SVC_KEI_NO = KK2451.SVC_KEI_NO ");
		sbSql.append("  WHERE KK2451.TAJGS_WRIB_KEI_NO = ? ");
		sbSql.append("    AND KK2451.SVC_KEI_NO <> ? ");
		sbSql.append("    AND KK2451.TAJGSWKEI_TGKEI_TSTAYMD <= ? ");
		sbSql.append("    AND KK2451.TAJGSWKEI_TGKEI_TENDYMD >= ? ");
		sbSql.append("    AND KK2451.MK_FLG = '0' ");
		sbSql.append("    AND (KK0081.SVC_KEI_NO , KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) = ");
		sbSql.append("        (SELECT KK0081_GENE.SVC_KEI_NO , MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS MAX_GENE ");
		sbSql.append("           FROM KK_T_SVC_KEI KK0081_GENE ");
		sbSql.append("          WHERE KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append("            AND KK0081_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("            AND KK0081_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("            AND KK0081_GENE.MK_FLG = '0' ");
		sbSql.append("          GROUP BY KK0081_GENE.SVC_KEI_NO) ");

		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK2451ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, tajgsWribKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);
			CAANJDBCUtil.setParam(pstmt, 4, opeDate);
			CAANJDBCUtil.setParam(pstmt, 5, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			HashMap<String, String> map = null;
			// 取得結果をマップに格納
			if (rsltQuery.next())
			{
				map = new HashMap<String, String>();
				map.put(KK0081ETMsg.SVC_CD, rsltQuery.getString(1));
				map.put(KK0081ETMsg.PCRS_CD, rsltQuery.getString(2));
				map.put(KK0081ETMsg.PPLAN_CD, rsltQuery.getString(3));
				map.put(KK0081ETMsg.SVC_KEI_STAT, rsltQuery.getString(4));
				map.put(KK0081ETMsg.SHOSA_DSL_FIN_CD, rsltQuery.getString(5));
			}
			
			return map;
		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * フェムトセルオプション存在チェック
	 * </p>
	 * @param inETMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @return チェック結果がOKの場合true、NGの場合false
	 */
	public boolean isChkSonzaiFemtOp(CAANMsg inETMsg, String svcKeiNo)
	{
		if(RETURN_OK.equals(this.chkSonzaiFemtOp(inETMsg, svcKeiNo, KIDOMOTO_CODE_ONLINE)))
		{
			// フェムトセルオプション存在チェック結果がOKの場合
			return true;
		}

		// フェムトセルオプション存在チェック結果がNGの場合
		return false;
	}

	/**
	 * <p>
	 * コース変更チェック
	 * </p>
	 * @param inETMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @return チェック結果がOKの場合true、NGの場合false
	 */
	public boolean isChkCrsChg(CAANMsg inETMsg, String svcKeiNo)
	{
		if (RETURN_OK.equals(this.chkCrsChg(inETMsg, svcKeiNo, KIDOMOTO_CODE_ONLINE)))
		{
			// コース変更チェック結果がOKの場合
			return true;
		}

		// コース変更チェック結果がNGの場合
		return false;
	}

	/**
	 * <p>
	 * 審査OKチェック
	 * </p>
	 * @param inETMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @return
	 */
	protected String chkShinsaOK(CAANMsg inETMsg, String svcKeiNo)
	{
		// サービス契約番号が未設定の場合
		if (svcKeiNo == null || svcKeiNo.isEmpty())
		{
			return RETURN_OK;
		}

		// 審査スキーマを検索し、審査種別コードが"01"のレコードが1件以上存在しない場合エラー
		long chk1KK1071Cnt = this.getCntKK1071bySvcKeiNo(svcKeiNo, 1);

		// 検索結果が0件の場合はエラーとする
		if (chk1KK1071Cnt == 0L)
		{
			return RETURN_NG;
		}

		// 審査スキーマを検索し、審査種別コードが"06"のレコードが1件以上存在しない場合エラー
		long chk2KK1071Cnt = this.getCntKK1071bySvcKeiNo(svcKeiNo, 2);

		// 検索結果が0件の場合はエラーとする
		if (chk2KK1071Cnt == 0L)
		{
			return RETURN_NG;
		}

		// 審査スキーマを検索し、審査種別コードが"01"または"06"のレコードでなく審査判定結果コードが"NG","  ",未設定
		// のものが存在した場合エラーとする
		Long chk3KK1071Cnt = this.getCntKK1071bySvcKeiNo(svcKeiNo, 3);

		// 検索結果が1件以上存在する場合はエラー
		if (chk3KK1071Cnt >= 1)
		{
			return RETURN_NG;
		}
		return RETURN_OK;
	}


	/**
	 * <p>
	 * リンクSTB配送区分チェック処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkLinkStbHaisoDiv(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkLinkStbHaisoDivChkShosa SHOSA_TG_CD = " + SHOSACHK_TRG_064);

		// サービス契約番号が未設定の場合
		if (svcKeiNo == null || svcKeiNo.isEmpty())
		{
			return RETURN_OK;
		}
		
		// サービス契約番号に紐づく「機器提供サービス契約」(ＳＴＢ)を取得する
		JKKejbKK0341DBABase kk0341Dba = new JKKejbKK0341DBABase();
		// 個別検索条件マップ
		HashMap<String, String[]> searchMap = new HashMap<String, String[]>();
		// 追加検索条件：機器提供サービス契約.機器提供サービスコード = "ＳＴＢ"
		searchMap.put(KK0341ETMsg.KKTK_SVC_CD, new String[]{JKKModelConst.KKTK_SVC_CD_STB});
		CAANMsg[] kk0341ETMsg = kk0341Dba.getKK0341bySvcKei(svcKeiNo, searchMap, getOpeDate(inMsg, kidoCd), "4");
		
		// 解約済、キャンセル済を除外する
		kk0341ETMsg = kk0341Dba.getKK0341OutDsLCl(kk0341ETMsg);
		
		for (CAANMsg kk0341Msg : kk0341ETMsg)
		{
			// リンクSTBフラグが"有"かつ配送区分が"手渡し"以外の場合、エラー
			if (JKKModelConst.UM_U.equals(kk0341Msg.getString(KK0341ETMsg.LINK_STB_FLG)) 
					&& !JKKModelConst.HAISO_DIV_HAND_WATASHI.equals(kk0341Msg.getString(KK0341ETMsg.HAISO_DIV))) 
			{
				return RETURN_NG;
			}
		}
		return RETURN_OK;
	}

	/**
	 * <p>
	 * サービス契約番号に紐付く審査のレコード件数を返却します。
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param chkFlg 1,2：審査種別コードのみ条件に追加　3：審査種別コード、審査判定結果コードを条件に追加
	 * @return サービス契約番号に紐付く審査のレコード件数
	 */
	private long getCntKK1071bySvcKeiNo(String svcKeiNo, int chkFlg)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT COUNT(*) ")
			 .append("   FROM KK_T_JUDGE KK1071 ")
			 .append("  WHERE KK1071.SVC_KEI_NO = ? ")
			 .append("    AND KK1071.MK_FLG = '0' ");
		// チェックフラグが"1"の場合
		if (chkFlg == 1)
		{
			sbSql.append("   AND KK1071.JUDGE_SBT_CD = '01' ");
		}
		else if (chkFlg == 2)
		{
			sbSql.append("   AND KK1071.JUDGE_SBT_CD = '06' ");
		}
		// チェックフラグが"2"の場合
		else if (chkFlg == 3)
		{
			sbSql.append("   AND (KK1071.JUDGE_SBT_CD NOT IN ('01', '06') ")
				 .append("        OR KK1071.JUDGE_SBT_CD IS NULL) ")
				 .append("   AND (KK1071.JUDGE_JUDGE_RSLT_CD = '01' ")
				 .append("        OR TRIM(KK1071.JUDGE_JUDGE_RSLT_CD) IS NULL) ");
		}
		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK1071ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			long retLng = 0L;

			// 取得結果をマップに格納
			if (rsltQuery.next())
			{
				retLng = rsltQuery.getLong(1);
			}

			return retLng;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 未返却ＶＡ解約ＳＯＤ発行チェック処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkMiRtnVADslSodHak(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkMiRtnVADslSodHak SHOSA_TG_CD = " + SHOSACHK_TRG_065);

		// サービス契約番号が未設定の場合
		if (svcKeiNo == null || svcKeiNo.isEmpty())
		{
			return RETURN_OK;
		}

		// 該当の「サービス契約」配下の「サービス契約内訳<eo光電話>」(解約済・キャンセル済を除く)を取得する。
		CAANMsg[] kk0191MsgList = getSvcKeiUcwkEoHikariTel2(inMsg, svcKeiNo, kidoCd);

		// チェック対象となる電話番号リスト
		ArrayList<String> telnoList = new ArrayList<String>();
		for (CAANMsg kk0191Msg : kk0191MsgList)
		{
			telnoList.add(kk0191Msg.getString(KK0191ETMsg.TELNO));
		}

		// 該当の電話番号を過去に使用していた「サービス契約」(eo光電話)のVA機器に対する解約(または消去)SODが未発行である場合、エラー
		JKKejbKK0191KRCK instance = new JKKejbKK0191KRCK();
		if (!instance.isMiRtnVADslSodHak(inMsg, svcKeiNo, telnoList))
		{
			return RETURN_NG;
		}

		return RETURN_OK;
	}

	/**
	 * <p>
	 * 機器提供サービス契約数上限チェックの対象チェック処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param svcCd サービスコード
	 * @param opeDate 運用日付
	 * @return チェック結果がOKの場合true、NGの場合false
	 */
	private boolean checkKkopSvcKei(CAANMsg inMsg, String kktkSvcKeiNo, String svcCd, String opeDate)
	{
		// 機器提供サービス契約番号に紐づく機器オプションサービス契約のリストを取得
		ArrayList<String> list = getKkopSvcCd(kktkSvcKeiNo, opeDate);
		
		for (String kkopSvcCd: list)
		{
			if (svcCd.equals(SVC_CD_01))
			{
				// ネットの場合、機器オプションサービスコードがG01であればチェック対象
				if (KKOP_SVC_CD_G01.equals(kkopSvcCd))
				{
					return true;
				}
			}
			else if (svcCd.equals(SVC_CD_02))
			{
				// 電話の場合、機器オプションサービスコードがG02であればチェック対象
				if (KKOP_SVC_CD_G02.equals(kkopSvcCd))
				{
					return true;
				}
			}
		}
		
		return false;
	}
	
	/**
	 * <p>
	 * 機器オプションサービスコード取得処理
	 * </p>
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param opeDate 運用日付
	 * @return 機器オプションサービスコード
	 */
	private ArrayList<String> getKkopSvcCd(String kktkSvcKeiNo, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();
		sbSql.append(" SELECT KK2811.KKOP_SVC_CD ");
		sbSql.append(" FROM KK_T_KKOP_SVC_KEI KK2811 ");
		sbSql.append(" WHERE KK2811.KKTK_SVC_KEI_NO = ?  ");
		sbSql.append("   AND KK2811.KKOP_SVC_KEI_STAT IN ('010', '020', '030', '100', '210', '220') ");
		sbSql.append("   AND KK2811.RSV_APLY_YMD || KK2811.GENE_ADD_DTM = ");
		sbSql.append("       (SELECT MAX(KK2811_GENE.RSV_APLY_YMD || KK2811_GENE.GENE_ADD_DTM) AS KK2811_MAX ");
		sbSql.append("        FROM KK_T_KKOP_SVC_KEI KK2811_GENE ");
		sbSql.append("        WHERE KK2811_GENE.KKOP_SVC_KEI_NO = KK2811.KKOP_SVC_KEI_NO ");
		sbSql.append("          AND KK2811_GENE.RSV_APLY_YMD <= ?  ");
		sbSql.append("          AND KK2811_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("          AND KK2811_GENE.MK_FLG = '0'  ");
		sbSql.append("        GROUP BY KK2811_GENE.KKOP_SVC_KEI_NO) ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK2811ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, kktkSvcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 返却用リスト
			ArrayList<String> retList = new ArrayList<String>();

			// 取得結果をリストに格納
			while (rsltQuery.next())
			{
				retList.add(rsltQuery.getString(KK2811ETMsg.KKOP_SVC_CD));
			}

			return retList;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	// OM-2014-0003911 ADD START
	/**
	 * <p>
	 * 同番移転取得処理
	 * </p>
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @param telNo 電話番号
	 * @return 同番移転情報
	 */
	private ArrayList<HashMap<String, String>> getDoubanItenCheck(String svcKeiUcwkNo, String telNo)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();
		sbSql.append(" SELECT ");
		sbSql.append("     TU0021.DOBANITEN_NO, ");
		sbSql.append("     TU0021.DOBANITEN_STAT, ");
		sbSql.append("     TU0021.DOBANITEN_KH ");
		sbSql.append(" FROM ");
		sbSql.append("     TU_T_DOBANITEN TU0021 ");
		sbSql.append(" WHERE ");
		sbSql.append("     TU0021.SVC_KEI_UCWK_NO = ? ");
		sbSql.append(" AND TU0021.NTT_TELNO= ? ");
		sbSql.append(" AND TU0021.DOBANITEN_STAT <> '090' ");
		sbSql.append(" AND TU0021.MK_FLG = '0' ");
		sbSql.append(" AND TU0021.DOBANITEN_NO || TU0021.GENE_ADD_DTM = ");
		sbSql.append("     (SELECT MAX(TU0021_GENE.DOBANITEN_NO || TU0021_GENE.GENE_ADD_DTM) AS TU0021_MAX ");
		sbSql.append("      FROM   TU_T_DOBANITEN TU0021_GENE ");
		sbSql.append("      WHERE  TU0021_GENE.SVC_KEI_UCWK_NO = TU0021.SVC_KEI_UCWK_NO ");
		sbSql.append("        AND  TU0021_GENE.NTT_TELNO = TU0021.NTT_TELNO ");
		sbSql.append("        AND  TU0021_GENE.MK_FLG = '0' ");
		sbSql.append("    GROUP BY TU0021_GENE.SVC_KEI_UCWK_NO) ");
		
		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(TU0021ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiUcwkNo);
			CAANJDBCUtil.setParam(pstmt, 2, telNo);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 返却用リスト
			ArrayList<HashMap<String, String>> retList = new ArrayList<HashMap<String, String>>();

			// 取得結果をリストに格納
			while (rsltQuery.next())
			{
				HashMap<String, String> mapRslt = new HashMap<String, String>();
				
				mapRslt.put(TU0021ETMsg.DOBANITEN_NO, rsltQuery.getString(1));
				mapRslt.put(TU0021ETMsg.DOBANITEN_STAT, rsltQuery.getString(2));
				mapRslt.put(TU0021ETMsg.DOBANITEN_KH, rsltQuery.getString(3));
				
				retList.add(mapRslt);
			}

			return retList;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}
	// OM-2014-0003911 ADD END
	
	//---------v31.00.00 ANK-3136-00-00_ADD START---------//
	/**
	 * <p>
	 * 同一回戦内工事案件存在チェック
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param svcCd サービスコード
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return 判定結果
	 */
	protected String chkExistsDitKaisenKojiak(CAANMsg inMsg, String svcCd, String svcKeiNo, String kidoCd)
	{
		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);

		// 同一回線のサービス契約を取得しその取得結果の件数を取得する
		 getKaiTgSvkeiInfoList(svcKeiNo, opeDate);
		// 取得件数が0件の場合
		if (kaiTgSvkeiInfoList == null || kaiTgSvkeiInfoList.size() == 0)
		{
			return RETURN_OK;
		}
		// 1件以上の場合
		else
		{
			CAANMsg[] retMsgList = null;
			// サービス契約回線番号取得
			String svcKeiKaisenNo = kaiTgSvkeiInfoList.get(0).get(KK0251ETMsg.SVC_KEI_KAISEN_UCWK_NO);
			// 
			try
			{
				// サービス契約_工事案件
				CAANMsg msgKU0081ETMsg = new CAANMsg(KU0081ETMsg.class.getName());
				msgKU0081ETMsg.set(KU0081ETMsg.SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenNo);
				msgKU0081ETMsg.set(KU0081ETMsg.MK_FLG, "0");
				KU0081LE leKU0081 = new KU0081LE();
				retMsgList = leKU0081.findByCondition(msgKU0081ETMsg);
				// 処理結果判定	
				return getparamSvcCdJugde(retMsgList, svcCd);
			}
			catch (CAANException e1)
			{
				throw new CAANRuntimeException(e1);
			}
		}
	}
	/**
	 * <p>
	 * 処理結果判定
	 * </p>
	 * @param retMsgList メッセージキャリア
	 * @param paramSvcCd サービスコード
	 * @return 処理結果
	 */
	private String getparamSvcCdJugde(CAANMsg[] retMsgList , String paramSvcCd)
	{
		if (retMsgList.length == 0)
		{
			//取得件数が0件の場合
			return RETURN_OK;
		}
		else 
		{
			for (int i = 0; i < retMsgList.length ; i++)
			{
				//サービスコード取得
				String svcCD = retMsgList[i].getString(KU0081ETMsg.SVC_CD);
				if(SVC_CD_01.equals(paramSvcCd) || SVC_CD_02.equals(paramSvcCd))
				{
					if (SVC_CD_01.equals(svcCD) || SVC_CD_02.equals(svcCD))
					{
						return RETURN_NG;
					}
				}
				else if (SVC_CD_03.equals(paramSvcCd))
				{
					if (SVC_CD_03.equals(svcCD))
					{
						return RETURN_NG;
					}
				}
				else
				{
					return RETURN_OK;
				}
			}
		}
		return RETURN_OK;
	}
	
	/**
	 * <p>
	 * ONU-VONU機器存在チェック
	 * </p>
	 * @param sysID メッセージキャリア
	 * @param sysID サービスコード
	 * @param sysID サービス契約番号
	 * @param mskmDtlNo 起動元コード
	 * @return opeDate 運用日付
	 */
	protected String chkExistsOnuVonuKk(CAANMsg inMsg, String svcCd, String svcKeiNo, String kidoCd)
	{
		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);

		// 同一回線のサービス契約を取得しその取得結果の件数を取得する
		 getKaiTgSvkeiInfoList(svcKeiNo, opeDate);
		// 取得件数が0件の場合
		if (kaiTgSvkeiInfoList == null || kaiTgSvkeiInfoList.size() == 0)
		{
			return RETURN_OK;
		}
		// 1件以上の場合
		else
		{
			// サービス契約回線番号取得
			String svcKeiKaisenNo = kaiTgSvkeiInfoList.get(0).get(KK0251ETMsg.SVC_KEI_KAISEN_UCWK_NO);
			// コネクション
			Connection con = null;

			// プリペアステートメント
			PreparedStatement pstmt = null;

			// リザルトセット
			ResultSet rsltQuery = null;

			// SQL文
			StringBuffer sbSql = new StringBuffer();

			sbSql.append(" SELECT ")
				 .append("     KK0341.TAKNKIKI_MODEL_CD ")
				 .append(" FROM ")
				 .append("     KK_T_KKTK_SVC_KEI KK0341 ")
				 .append(" WHERE ")
				 .append("     KK0341.SVC_KEI_KAISEN_UCWK_NO = ? ")
				 .append("     AND KK0341.KKTK_SVC_KEI_STAT IN ('010', '020', '030', '100', '210', '220') ")
				 .append("     AND KK0341.TAKNKIKI_SBT_CD = ?  ")  
				 .append("     AND (KK0341.KKTK_SVC_KEI_NO, KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM) = ")
				 .append("         (SELECT KK0341_GENE.KKTK_SVC_KEI_NO, MAX(KK0341_GENE.RSV_APLY_YMD || KK0341_GENE.GENE_ADD_DTM) AS KK0341_MAX ")
				 .append("          FROM   KK_T_KKTK_SVC_KEI KK0341_GENE ")
				 .append("          WHERE  KK0341_GENE.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ")
				 .append("          AND    KK0341_GENE.RSV_APLY_YMD <= ? ")
				 .append("          AND    KK0341_GENE.RSV_APLY_CD = '2' ")
				 .append("          AND    KK0341_GENE.MK_FLG= '0' ")
				 .append("          GROUP BY KK0341_GENE.KKTK_SVC_KEI_NO ")
				 .append("         )   ");

			try
			{
				//コネクション取得
				con = JSYejbConnection.getConnection(KK0341ETMsg.getTableName());

				//prepareStatementにSQL文をセット
				pstmt = con.prepareStatement(sbSql.toString());

				//ログ出力(SQL文の出力)
				JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);
				
				int cnt = 1;
				// バインド変数設定
				CAANJDBCUtil.setParam(pstmt, cnt++ , svcKeiKaisenNo);
				//(サービスコード:01、02の場合、D0を設定、サービスコード:03の場合、E0を設定）
				if (SVC_CD_01.equals(svcCd) || SVC_CD_02.equals(svcCd))
				{
					CAANJDBCUtil.setParam(pstmt, cnt++ , JKKStrConst.TAKNKIKI_SBT_CD_ONU);
				}
				else
				{
					CAANJDBCUtil.setParam(pstmt, cnt++ , JKKStrConst.TAKNKIKI_SBT_CD_VONU);
				}
				CAANJDBCUtil.setParam(pstmt, cnt++, opeDate);

				// ResultSetの取得
				rsltQuery = pstmt.executeQuery();
				
				// 業務パラメータ取得_設備流用ダミー機器（ＯＮＵ）
				String kkSbryDummyOnu = new JKKejbZM0321DBAccess().getParamE(WORK_PARAM_TAKNAI_EQUIP_CD_KK_SBRY_DUMMY_ONU);
				// 業務パラメータ取得_設備流用ダミー機器（Ｖ−ＯＮＵ）
				String kkSbryDummyVonu = new JKKejbZM0321DBAccess().getParamE(WORK_PARAM_TAKNAI_EQUIP_CD_KK_SBRY_DUMMY_V_ONU);
				
				//取得件数が0件の場合、チェック結果OKとして返却する
				// 取得結果情報判定
				while (rsltQuery.next())
				{
					//宅内機器コード取得
					String taknkikiModelCd = rsltQuery.getString(KK0341ETMsg.TAKNKIKI_MODEL_CD);
					//ダミー機器の存在チェック
					if (SVC_CD_01.equals(svcCd) || SVC_CD_02.equals(svcCd))
					{
						// v31.00.03 IT1-2018-0000114 MOD START
						//if(kkSbryDummyOnu.equals(taknkikiModelCd))
						if(kkSbryDummyOnu.equals(taknkikiModelCd) || JKKStringUtil.isNullBlank(taknkikiModelCd))
						// v31.00.03 IT1-2018-0000114 MOD END
						{
							return 	RETURN_OK;
						}
						else
						{
							return RETURN_NG;
						}
					}
					else
					{
						// v31.00.03 IT1-2018-0000114 MOD START
						//if(kkSbryDummyVonu.equals(taknkikiModelCd))
						if(kkSbryDummyVonu.equals(taknkikiModelCd) || JKKStringUtil.isNullBlank(taknkikiModelCd))
						// v31.00.03 IT1-2018-0000114 MOD END
						{
							return 	RETURN_OK;
						}
						else
						{
							return RETURN_NG;
						}
					}
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
			finally
			{
				// 資源の解放
				try
				{
					if (rsltQuery != null)
					{
						rsltQuery.close();
					}
					if (pstmt != null)
					{
						pstmt.close();
					}
					if (con != null)
					{
						CAANConnectionMgr.getInstance().close(con);
					}
				}
				catch (SQLException e)
				{
					throw new CAANRuntimeException(e);
				}
			}
		}
		return RETURN_OK;
	}
	
	/**
	 * <p>
	 * 工事案件最新基本工事チェック
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param kojiAkNo サービスコード
	 * @param kidoCd 起動元コード
	 * @return 判定結果
	 */
	protected String chkExistsKojiakRcntKihonKoji(CAANMsg inMsg, String kojiAkNo, String kidoCd)
	{
		try
		{
			CAANMsg[] retMsgList = null;
			// サービス契約_工事案件
			CAANMsg msgKU0011ETMsg = new CAANMsg(KU0011ETMsg.class.getName());
			msgKU0011ETMsg.set(KU0011ETMsg.KOJIAK_NO, kojiAkNo);
			msgKU0011ETMsg.set(KU0011ETMsg.MK_FLG, "0");
			KU0011LE leKU0011LE = new KU0011LE();
			retMsgList = leKU0011LE.findByCondition(msgKU0011ETMsg);
			if (retMsgList == null || retMsgList.length == 0)
			{
				return RETURN_NG;
			}
			else 
			{
				// 工事案件ステータスが"200_工事完了済み"
				// かつ最新基本工事フラグが"1"の場合
				// チェック結果OK、処理終了する
				if (JKKModelConst.KOJIAK_STAT_KOJI_FIN_ZM.equals(retMsgList[0].getString(KU0011ETMsg.KOJIAK_STAT))
						&& RCNT_KIHON_KOJI_FLG_1.equals(retMsgList[0].getString(KU0011ETMsg.RCNT_KIHON_KOJI_FLG)))
				{
					return RETURN_OK;
				}
				// 上記以外の場合
				else 
				{
					return RETURN_NG;
				}
			}
		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}
	}
	
	/**
	 * <p>
	 * 流用元機器返品チェック
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param svcCd サービスコード
	 * @param kojiAkNo 工事案件番号（設備流用元の工事案件番号）
	 * @param kidoCd 起動元コード
	 * @return 判定結果
	 */
	protected HashMap<String, String> chkExistsRyuyoMotoKikiHenpin(CAANMsg inMsg, String svcCd, String kojiAkNo, String kidoCd)
	{
		// 返却結果
		HashMap<String, String> rstMap = new HashMap<String, String>();
		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append("     SELECT ")
			 .append("            KK0341.KKTK_SVC_KEI_NO ")
			 .append("            , KK0341.KKTK_SVC_KEI_STAT ")
			 .append("            , KK0341.SVC_DSL_YMD ")
			 .append("            , KK0341.KIKI_CHG_NO ")
			 .append("            , KK0341.RSV_APLY_CD ")
			 .append("       FROM KK_T_KKTK_SVC_KEI KK0341")
			 .append(" INNER JOIN KU_T_SVKEI_KOJIAK KU0081 ")
			 .append("         ON KK0341.SVC_KEI_KAISEN_UCWK_NO = KU0081.SVC_KEI_KAISEN_UCWK_NO ")
			 .append("        AND KU0081.KOJIAK_NO = ?  ")
			 // IT1-2018-0000098 MOD START
//			 .append("        AND KU0081.SVC_CD = ?  ")
			 ;
			 //(サービスコード:01または02の場合、サービスコードに01、02の両方を設定、それ以外の場合は入力のサービスコードを設定）
			 if (SVC_CD_01.equals(svcCd) || SVC_CD_02.equals(svcCd))
			 {
				 sbSql.append("        AND KU0081.SVC_CD in (?, ?)  ");
			 }
			 else
			 {
				 sbSql.append("        AND KU0081.SVC_CD = ?  ");
			 }
		sbSql
			 // IT1-2018-0000098 MOD END
			 .append("        AND KU0081.SVKEI_KOJIAK_TSTAYMD <= ? ")
			 // IT2-2018-0000069  DEL START
			 //.append("        AND KU0081.SVKEI_KOJIAK_TENDYMD >= ? ")
			 // IT2-2018-0000069  DEL END
			 .append("        AND KU0081.MK_FLG='0' ")
		 // ANK-4577-00-00 MOD START
//			 .append("      WHERE KK0341.TAKNKIKI_SBT_CD = ? ")                                         // (サービスコードによりD0もしくはE0を設定)
			 ;
			 //(サービスコード:01または02の場合、宅内機器種別コードに"D0","S0"を設定、それ以外の場合は宅内機器種別コードに"E0"を設定）
			 if (SVC_CD_01.equals(svcCd) || SVC_CD_02.equals(svcCd))
			 {
				 sbSql.append("        WHERE KK0341.TAKNKIKI_SBT_CD in (?, ?)  ");
			 }
			 else
			 {
				 sbSql.append("        WHERE KK0341.TAKNKIKI_SBT_CD = ?  ");
			 }
		sbSql
		 // ANK-4577-00-00 MOD END
			 .append("        AND KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM = ")
			 .append("             (SELECT MAX(KK0341_GENE.RSV_APLY_YMD || KK0341_GENE.GENE_ADD_DTM) ")
			 .append("                FROM KK_T_KKTK_SVC_KEI KK0341_GENE ")
			 .append("               WHERE KK0341_GENE.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ")
			 .append("                 AND KK0341_GENE.MK_FLG = '0') ")
		 // IT2-2024-0000012 MOD START
//			 .append("        AND KK0341.KKTK_SVC_KEI_STAT IN ('100','210','220','910') ");            //(機器の工事が完了済が前提）
			 .append("        AND KK0341.KKTK_SVC_KEI_STAT IN ('100','210','220','910') ")            //(機器の工事が完了済が前提）
			 .append(" ORDER BY KK0341.KKTK_SVC_KEI_STAT ASC, KK0341.SVC_ENDYMD DESC ");
		// IT2-2024-0000012 MOD END

		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK0341ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);
			
			// カウント数
			int cnt = 1;
			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, cnt++, kojiAkNo);
			// IT1-2018-0000098 MOD START
//			CAANJDBCUtil.setParam(pstmt, cnt++, svcCd);
			//(サービスコード:01または02の場合、サービスコードに01、02の両方を設定、それ以外の場合は入力のサービスコードを設定）
			if (SVC_CD_01.equals(svcCd) || SVC_CD_02.equals(svcCd))
			{
				CAANJDBCUtil.setParam(pstmt, cnt++, SVC_CD_01);
				CAANJDBCUtil.setParam(pstmt, cnt++, SVC_CD_02);
			}
			else
			{
				CAANJDBCUtil.setParam(pstmt, cnt++, svcCd);
			}
			// IT1-2018-0000098 MOD END
			CAANJDBCUtil.setParam(pstmt, cnt++, opeDate);
			 // IT2-2018-0000069  DEL START
			//CAANJDBCUtil.setParam(pstmt, cnt++, opeDate);
			 // IT2-2018-0000069  DEL END
			//(サービスコード:01、02の場合、D0,S0を設定、サービスコード:03の場合、E0を設定）
			if (SVC_CD_01.equals(svcCd) || SVC_CD_02.equals(svcCd))
			{
				CAANJDBCUtil.setParam(pstmt, cnt++, JKKStrConst.TAKNKIKI_SBT_CD_ONU);
				// ANK-4577-00-00 ADD START
				CAANJDBCUtil.setParam(pstmt, cnt++, JKKStrConst.TAKNKIKI_SBT_CD_HGW);
				// ANK-4577-00-00 ADD END
			}
			else
			{
				CAANJDBCUtil.setParam(pstmt, cnt++, JKKStrConst.TAKNKIKI_SBT_CD_VONU);
			}

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// 取得結果情報判定
			while (rsltQuery.next())
			{
				// サービス解約年月日
				String svcKaiyakuYmd = rsltQuery.getString(KK0341ETMsg.SVC_DSL_YMD);
				// 予約適用コード
				String rsvAplyCd = rsltQuery.getString(KK0341ETMsg.RSV_APLY_CD);
				// 機器変更番号
				String kikiChgNo = rsltQuery.getString(KK0341ETMsg.KIKI_CHG_NO);
				// 機器提供サービス契約番号 
				String kktkSvcKeiNo = rsltQuery.getString(KK0341ETMsg.KKTK_SVC_KEI_NO);
				//機器提供サービス契約のサービス解約年月日が"20991231" もしくはNULL, かつ予約適用コードが"1"の場合、チェック結果:1_NG
				if((JKKStringUtil.isNullBlank(svcKaiyakuYmd) || JKKModelConst.DATE_MAX.equals(svcKaiyakuYmd))
					&&  JKKModelConst.RSV_APLY_CD_RSV_TTDK_CHU.equals(rsvAplyCd))
				{
					rstMap.put(RETURN_CD, RETURN_NG_1);
					return 	rstMap;
				}
				else
				{
					// SQL文
					long henPinCnt = this.getHenpinKikiExitsCk(kikiChgNo, kktkSvcKeiNo);
					if (0 == henPinCnt)
					{
						rstMap.put(RETURN_CD, RETURN_OK);
						rstMap.put(KK0341_KIKI_CHG_NO, kikiChgNo);
						rstMap.put(KK0341_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
						return rstMap;
					}
				}
			}
			//取得件数が0件の場合、チェック結果NGとして返却する
			// すべてレコードが返品される場合
			rstMap.put(RETURN_CD, RETURN_NG_2);
			return rstMap;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 返品機器チェック
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param kojiAkNo サービスコード
	 * @param kidoCd 起動元コード
	 * @return 判定結果
	 */
	protected Long getHenpinKikiExitsCk(String kikiChgNo, String kktkSvcKeiNo)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer henPinchkSql = new StringBuffer();
		Long lDataCnt = 0L;
		
		henPinchkSql.append("     SELECT COUNT(*) AS CNT  ")
					.append("       FROM DK_T_HMPIN_KIKI DK0301 ")
					.append("      WHERE DK0301.KKTK_SVC_KEI_NO = ?   ")       //(1).機器提供サービス契約番号
					.append("        AND DK0301.KIKI_CHG_NO =  ?      ")       //(1).機器変更番号  
					.append("        AND DK0301.HMPIN_KIKI_STAT in ('002','003') ")
					.append("        AND DK0301.MK_FLG='0' ");
		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK0341ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(henPinchkSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), henPinchkSql);
			
			// カウント数
			int cnt = 1;
			// バインド変数設定:機器提供サービス契約番号
			CAANJDBCUtil.setParam(pstmt, cnt++, kktkSvcKeiNo);
			// バインド変数設定:機器変更番号
			CAANJDBCUtil.setParam(pstmt, cnt++, kikiChgNo);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			//取得件数が0件の場合、チェック結果OKとして返却する
			while (rsltQuery.next())
			{
				lDataCnt = rsltQuery.getLong("CNT");
			}
			
		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
		return lDataCnt;
	}
	
	/**
	 * <p>
	 * PON種別チェック
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param svcCd サービスコード
	 * @param kojiAkNo 工事案件番号（設備流用元の工事案件番号）
	 * @param prcsCd 料金コースコード
	 * @param kidoCd 起動元コード
	 * @return 判定結果
	 */
	protected String chkExistsPonSbt(CAANMsg inMsg, String kktkSvcKeiNo, String kikiChgNo, String prcsCd, String kidoCd)
	{
		// 料金コースマスタから料金コースPON条件コードの取得を行う
		String pcrsMsPonJokenCd = this.getpcrsMsPonJokenCd(inMsg, prcsCd, kidoCd);
		
		if(pcrsMsPonJokenCd == null)
		{
			return RETURN_NG;
		}
		// 返却値
		String rstCd = RETURN_OK;
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append(" SELECT KK0341.KKTK_SVC_KEI_NO ")
			 .append("        , KK0341.TAKNKIKI_MODEL_CD ")
			 .append("        , (SELECT ZM0411.PON_SBT_CD ")
			 .append("             FROM ZM_M_TAKNKIKI_MODEL ZM0411 ")
			 .append("            WHERE ZM0411.TAKNKIKI_MODEL_CD = KK0341.TAKNKIKI_MODEL_CD ")
			 .append("              AND ZM0411.MK_FLG = '0' ")
			 .append("          ) AS PON_SBT_CD ")
			 .append("   FROM KK_T_KKTK_SVC_KEI KK0341 ")
			 // ANK-4577-00-00 MOD START
//			 .append("  WHERE KK0341.TAKNKIKI_SBT_CD = 'D0' ")
			 .append("  WHERE KK0341.TAKNKIKI_SBT_CD in ('D0','S0') ")
			 // ANK-4577-00-00 MOD END
			 .append("    AND KK0341.KKTK_SVC_KEI_NO = ? ")
			 .append("    AND KK0341.KIKI_CHG_NO = ? ")
			 .append("    AND KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM = ")
			 .append("          (SELECT MAX(KK0341_GENE.RSV_APLY_YMD || KK0341_GENE.GENE_ADD_DTM) ")
			 .append("             FROM KK_T_KKTK_SVC_KEI KK0341_GENE ")
			 .append("            WHERE KK0341_GENE.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ")
			 .append("              AND KK0341_GENE.MK_FLG = '0') ");

		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK0341ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);
			
			// カウント数
			int cnt = 1;
			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, cnt++, kktkSvcKeiNo);  // 機器提供サービス契約番号
			CAANJDBCUtil.setParam(pstmt, cnt++, kikiChgNo);     // 機器変更番号

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			//取得件数が0件の場合、チェック結果OKとして返却する

			// 取得結果情報判定
			while (rsltQuery.next())
			{
				String ponSbtCd = rsltQuery.getString(PON_SBT_CD);
				rstCd = this.getPonSbtJudge(pcrsMsPonJokenCd, ponSbtCd);
			}
		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
		return rstCd;
	}
	
	/**
	 * <p>
	 * 料金コースマスタから料金コースの料金コースPON条件コード取得処理
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param pcrsCd 料金コースコード
	 * @param kidoCd 起動元コード
	 * @return 判定結果
	 */
	private String getpcrsMsPonJokenCd(CAANMsg inMsg, String pcrsCd, String kidoCd)
	{
		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);

		// 返却用
		String ponJokenCd = null;
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append("SELECT KK0791.PCRS_PON_JOKEN_CD ")
			 .append("  FROM KK_M_PCRS KK0791 ")
			 .append(" WHERE KK0791.PCRS_CD = ? ")
			 .append("   AND KK0791.RSV_APLY_YMD || KK0791.GENE_ADD_DTM =  ")
			 .append("       (SELECT MAX(KK0791_GENE.RSV_APLY_YMD || KK0791_GENE.GENE_ADD_DTM) AS KK0791_MAX ")
			 .append("          FROM KK_M_PCRS KK0791_GENE ")
			 .append("         WHERE KK0791_GENE.PCRS_CD = KK0791.PCRS_CD ")
			 .append("           AND KK0791_GENE.RSV_APLY_YMD <= ?) ")
			 .append("   AND KK0791.MK_FLG = '0' ");
		
		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK0341ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);
			
			// カウント数
			int cnt = 1;
			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, cnt++, pcrsCd);
			CAANJDBCUtil.setParam(pstmt, cnt++, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			//取得件数が0件の場合
			// 取得結果情報判定
			while (rsltQuery.next())
			{
				ponJokenCd = rsltQuery.getString(KK0791ETMsg.PCRS_PON_JOKEN_CD);
			}
			return ponJokenCd;
		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}	
	}
	
	/**
	 * <p>
	 * PON種別判定
	 * </p>
	 * @param pcrsMsPonJokenCd 料金コースPON条件コード
	 * @param ponSbtCd PON種別コード
	 * @return 判定結果
	 */
	private String getPonSbtJudge(String pcrsMsPonJokenCd, String ponSbtCd)
	{
		String rstCd = RETURN_NG;
		if (JKKStringUtil.isNullBlank(pcrsMsPonJokenCd)
				|| PON_JOKEN_CD_3.equals(pcrsMsPonJokenCd))
		{
			return RETURN_NG;
		}
		else if (PON_JOKEN_CD_1.equals(pcrsMsPonJokenCd)
						&& (JKKModelConst.PON_SBT_CD_E_PON.equals(ponSbtCd) 
						|| JKKModelConst.PON_SBT_CD_GE_PON.equals(ponSbtCd) 
						|| PON_SBT_CD_3.equals(ponSbtCd)))
		{
			return RETURN_OK;
		}
		else if (PON_JOKEN_CD_2.equals(pcrsMsPonJokenCd))
		{
			if(JKKModelConst.PON_SBT_CD_E_PON.equals(ponSbtCd))
			{
				return RETURN_NG;
			}
			else if (JKKModelConst.PON_SBT_CD_GE_PON.equals(ponSbtCd) || PON_SBT_CD_3.equals(ponSbtCd))
			{
				return RETURN_OK;
			}
		}
		else if (PON_JOKEN_CD_4.equals(pcrsMsPonJokenCd))
		{
			if(JKKModelConst.PON_SBT_CD_E_PON.equals(ponSbtCd)
				|| JKKModelConst.PON_SBT_CD_GE_PON.equals(ponSbtCd))
			{
				return RETURN_NG;
			}
			else if (PON_SBT_CD_3.equals(ponSbtCd))
			{
				return RETURN_OK;
			}
		}
		return rstCd;
	}

	/**
	 * <p>
	 * マンション物件チェック
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param svcCd サービスコード
	 * @param kojiAkNo 工事案件番号（設備流用元の工事案件番号）
	 * @param kidoCd 起動元コード
	 * @return 判定結果
	 */
	protected String chkMansBuken(CAANMsg inMsg,String kojiAkNo, String kidoCd)
	{

		// 料金コースマスタから料金コースの「料金コースPON条件コード」の取得を行う
		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);

		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append("      SELECT KK0081.SVC_KEI_NO ")
			 .append("             , KK0861.MANSION_BUKKEN_CD ")
			 .append("        FROM KK_T_SVC_KEI KK0081 ")
			 .append("  INNER JOIN KK_T_TK_HOSHIKI_KEI KK0891 ")
			 .append("          ON KK0891.TK_HOSHIKI_KEI_NO = KK0081.TK_HOSHIKI_KEI_NO ")
			 .append("  INNER JOIN KK_T_KAISEN_USE_KEI KK0881 ")
			 .append("          ON KK0881.KAISEN_USE_KEI_NO = KK0891.KAISEN_USE_KEI_NO ")
			 .append("  INNER JOIN KK_M_MANSION_COURSE KK0911 ")
			 .append("          ON KK0911.MANSION_COURSE_CD = KK0881.MANSION_COURSE_CD ")
			 .append("  INNER JOIN KK_T_OWNR_KEI KK0871 ")
			 .append("          ON KK0871.OWNR_KEI_NO = KK0881.OWNR_KEI_NO ")
			 .append("  INNER JOIN KK_M_MANS_SVC_MENU KK0901 ")
			 .append("          ON KK0901.MANSION_SVC_MENU_CD = KK0871.MANSION_SVC_MENU_CD ")
			 .append("  INNER JOIN KK_T_MANSION_BUKKEN KK0861 ")
			 .append("          ON KK0861.MANSION_BUKKEN_NO = KK0871.MANSION_BUKKEN_NO ")
			 .append("  INNER JOIN KU_T_SVKEI_KOJIAK KU0081 ")
			 .append("          ON KK0081.SVC_KEI_NO = KU0081.SVC_KEI_NO ")
			 .append("         AND KU0081.KOJIAK_NO = ?  ")
			 .append("         AND KU0081.SVKEI_KOJIAK_TSTAYMD <= ?  ")
			 .append("         AND KU0081.SVKEI_KOJIAK_TENDYMD >= ?  ")
			 .append("         AND KU0081.MK_FLG='0' ")
			 .append("       WHERE KK0891.MK_FLG = '0' ")
			 .append("         AND KK0881.MK_FLG = '0' ")
			 .append("         AND (KK0911.MANSION_COURSE_CD, KK0911.RSV_APLY_YMD || KK0911.GENE_ADD_DTM) = ")
			 .append("             ( SELECT KK0911_GENE.MANSION_COURSE_CD, MAX(KK0911_GENE.RSV_APLY_YMD || KK0911_GENE.GENE_ADD_DTM) AS KK0911_MAX ")
			 .append("                 FROM KK_M_MANSION_COURSE KK0911_GENE ")
			 .append("                WHERE KK0911_GENE.MANSION_COURSE_CD = KK0911.MANSION_COURSE_CD ")
			 .append("                  AND KK0911_GENE.RSV_APLY_YMD <= ? ")
			 .append("                  AND KK0911_GENE.MK_FLG = '0' ")
			 .append("             GROUP BY KK0911_GENE.MANSION_COURSE_CD) ")
			 .append("         AND KK0871.MK_FLG = '0' ")
			 .append("         AND (KK0901.MANSION_SVC_MENU_CD, KK0901.RSV_APLY_YMD || KK0901.GENE_ADD_DTM) = ")
			 .append("             ( SELECT KK0901_GENE.MANSION_SVC_MENU_CD, MAX(KK0901_GENE.RSV_APLY_YMD || KK0901_GENE.GENE_ADD_DTM) AS KK0901_MAX ")
			 .append("                 FROM KK_M_MANS_SVC_MENU KK0901_GENE ")
			 .append("                WHERE KK0901_GENE.MANSION_SVC_MENU_CD = KK0901.MANSION_SVC_MENU_CD ")
			 .append("                  AND KK0901_GENE.RSV_APLY_YMD <= ? ")
			 .append("                  AND KK0901_GENE.MK_FLG = '0' ")
			 .append("             GROUP BY KK0901_GENE.MANSION_SVC_MENU_CD) ")
			 .append("         AND KK0861.MK_FLG = '0' ")
			 .append("         AND (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) = ")
			 .append("             ( SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ")
			 .append("                 FROM KK_T_SVC_KEI KK0081_GENE ")
			 .append("                WHERE KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
			 .append("                  AND KK0081_GENE.RSV_APLY_YMD <= ? ")
			 .append("                  AND KK0081_GENE.RSV_APLY_CD = '2' ")
			 .append("                  AND KK0081_GENE.MK_FLG = '0' ")
			 .append("             GROUP BY KK0081_GENE.SVC_KEI_NO) ");


		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK0081ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);
			
			// カウント数
			int cnt = 1;
			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, cnt++, kojiAkNo);
			CAANJDBCUtil.setParam(pstmt, cnt++, opeDate);
			CAANJDBCUtil.setParam(pstmt, cnt++, opeDate);
			CAANJDBCUtil.setParam(pstmt, cnt++, opeDate);
			CAANJDBCUtil.setParam(pstmt, cnt++, opeDate);
			CAANJDBCUtil.setParam(pstmt, cnt++, opeDate);
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			//取得件数が0件の場合、チェック結果OKとして返却する
			// 取得結果情報判定
			while (rsltQuery.next())
			{
				String mansionBukkenCd = rsltQuery.getString(KK0861ETMsg.MANSION_BUKKEN_CD);
				if (MANSION_BUKKEN_CD_MANSION.equals(mansionBukkenCd))
				{
					return RETURN_NG;
				}
				else
				{
					return RETURN_OK;
				}
			}
			return RETURN_OK;
		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}	
	}
	// 【ANK-3296-00-00】標準工事費分割請求にて同一の処理が作成されるため
	//  当初削除
//	/**
//	 * <p>
//	 * 申込明細情報を取得する。
//	 * </p>
//	 * @param inMsg 処理対象メッセージキャリア
//	 * @param mskmDtlNo 申込明細番号
//	 * @param kidoCd 起動元コード
//	 * @return サービス契約情報
//	 **/
//	protected CAANMsg getMskmDtl(CAANMsg inMsg, String mskmDtlNo, String kidoCd)
//	{
//		// パラメータチェック
//		if (mskmDtlNo == null || kidoCd == null)
//		{
//			return null;
//		}
//
//		// サービス契約カレントレコード検索
//		CAANMsg msgKK0021ETMsg = new CAANMsg(KK0021ETMsg.class.getName());
//		msgKK0021ETMsg.set(KK0021ETMsg.MSKM_DTL_NO, mskmDtlNo);
//		CAANMsg crtMsg = new JKKejbKK0021DBABase().findByCurrent(msgKK0021ETMsg);
//
//		// 存在しない場合
//		if (crtMsg == null)
//		{
//			return null;
//		}
//
//		return crtMsg;
//	}
	//---------v31.00.00 ANK-3136-00-00_ADD END-----------//

	//ANK-3136-00-00 2017/12/05 ADD START
	/**
	 * <p>
	 * 設備流用存在チェック処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @param kidoCd 起動コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	public String chkSonzaiExistsEquipRyuyo(CAANMsg inMsg, String svcKeiNo, String kidoCd)
	{
		// サービス契約番号が未設定の場合
		if (svcKeiNo == null || svcKeiNo.isEmpty())
		{
			return RETURN_OK;
		}

		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);
		
		// 機器提供サービス契約番号に紐づく機器オプションサービス契約のリストを取得
		long existEquipRyuyo = getExistsEquipRyuyo(svcKeiNo, opeDate);
		
		// 検索結果が0件の場合はエラーとする
		if (existEquipRyuyo > 0)
		{
			return RETURN_NG;
		}
		
		return RETURN_OK;
	}
	
	/**
	 * <p>
	 * 設備流用存在チェックを行います。
	 * </p>
	 * @param inETMsg 処理対象のメッセージキャリア
	 * @param svcKeiNo サービス契約番号
	 * @return チェック結果がOKの場合true、NGの場合false
	 */
	public boolean ischkExistsEquipRyuyo(CAANMsg inETMsg, String svcKeiNo)
	{
		if(RETURN_OK.equals(this.chkSonzaiExistsEquipRyuyo(inETMsg, svcKeiNo, KIDOMOTO_CODE_ONLINE)))
		{
			// 設備流用チェックの結果OK
			return true;
		}

		// 設備流用チェックの結果NG
		return false;
	}
	
	/**
	 * <p>
	 * サービス契約番号からサービス契約工事案件、工事案件を検索し、工事案件ステータスが中止以外の設備流用有のレコードを取得処理
	 * </p>
	 * @param svcKeiNo サービス契約番号
	 * @param opeDate 運用日付
	 * @return 機器オプションサービスコード
	 */
	private long getExistsEquipRyuyo(String svcKeiNo, String opeDate)
	{
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();
		sbSql.append(" SELECT ");
		sbSql.append("   COUNT(*) ");
		sbSql.append(" FROM ");
		sbSql.append("   KK_T_MSKM_DTL KK0021 ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("   KU_T_MSKM_DTL_KOJIAK KU0091 ");
		sbSql.append(" ON ");
		sbSql.append("   KU0091.MSKM_DTL_NO =KK0021.MSKM_DTL_NO ");
		sbSql.append(" INNER JOIN ");
		sbSql.append("   KU_T_KOJIAK KU0011 ");
		sbSql.append(" ON ");
		sbSql.append("   KU0011.KOJIAK_NO = KU0091.KOJIAK_NO ");
		sbSql.append(" WHERE ");
		sbSql.append("   KK0021.MSKM_NO = ( ");
		sbSql.append("     SELECT ");
		sbSql.append("       KK0021_TMP.MSKM_NO ");
		sbSql.append("     FROM");
		sbSql.append("       KK_T_MSKM_DTL KK0021_TMP ");
		sbSql.append("     INNER JOIN ");
		sbSql.append("       KK_T_SVC_KEI KK0081 ");
		sbSql.append("     ON ");
		sbSql.append("       KK0081.MSKM_DTL_NO = KK0021_TMP.MSKM_DTL_NO AND ");
		sbSql.append("       KK0081.SVC_KEI_NO = ? AND ");
		sbSql.append("       KK0081.MK_FLG='0' AND ");
		sbSql.append("       KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ( ");
		sbSql.append("         SELECT ");
		sbSql.append("           MIN(KK0081.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MIN ");
		sbSql.append("         FROM ");
		sbSql.append("           KK_T_SVC_KEI KK0081_GENE ");
		sbSql.append("         WHERE ");
		sbSql.append("           KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
		sbSql.append("           AND KK0081_GENE.RSV_APLY_YMD <= ? ");
		sbSql.append("           AND KK0081_GENE.RSV_APLY_CD = '2' ");
		sbSql.append("           AND KK0081_GENE.MK_FLG = '0' ");
		sbSql.append("       ) ");
		sbSql.append("     WHERE ");
		sbSql.append("       KK0021_TMP.GENE_ADD_DTM = ( ");
		sbSql.append("         SELECT MAX(MSKM_DTL_GENE.GENE_ADD_DTM) AS MSKM_DTL_MAX ");
		sbSql.append("         FROM  KK_T_MSKM_DTL MSKM_DTL_GENE ");
		sbSql.append("         WHERE  MSKM_DTL_GENE.MSKM_DTL_NO = KK0021_TMP.MSKM_DTL_NO ");
		sbSql.append("         AND    MSKM_DTL_GENE.MK_FLG = '0') ");
		sbSql.append("       ) ");
		sbSql.append("   AND KK0021.GENE_ADD_DTM = ( ");
		sbSql.append("     SELECT MAX(MSKM_DTL_GENE.GENE_ADD_DTM) AS MSKM_DTL_MAX ");
		sbSql.append("     FROM  KK_T_MSKM_DTL MSKM_DTL_GENE ");
		sbSql.append("     WHERE  MSKM_DTL_GENE.MSKM_DTL_NO = KK0021.MSKM_DTL_NO ");
		sbSql.append("     AND    MSKM_DTL_GENE.MK_FLG = '0') ");
		sbSql.append("   AND KU0011.KOJIAK_STAT <> '900' ");
// ANK-4468-11-00 MOD START
//		sbSql.append("   AND KU0011.EQUIP_RYUYO_UM = '1' ");
		sbSql.append("   AND KU0011.EQUIP_RYUYO_UM in ('1','2','3') ");
// ANK-4468-11-00 MOD END
		sbSql.append("   AND KU0011.MK_FLG='0' ");
		sbSql.append("   AND KU0091.MK_FLG='0' ");

		try
		{

			//コネクション取得
			con = JSYejbConnection.getConnection(KK2811ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			Long retLng = 0L;

			// 取得結果をマップに格納
			if (rsltQuery.next())
			{
				retLng = rsltQuery.getLong(1);
			}

			return retLng;

		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}
	//ANK-3136-00-00 2017/12/05 ADD END
	
	//---------v36.00.00 ANK-3296-00-00_ADD START---------//
	/**
	 * <p>
	 * 同一回線上に異なる標準工事費の申込があるかのチェック処理
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param inSvcKeiNo サービス契約番号
	 * @param inSvcCd サービスコード
	 * @param inMskYmd 申込年月日
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 */
	protected String chkExistsStdardKojihi(CAANMsg inMsg, String inSvcKeiNo, String inSvcCd, String inMskYmd, String kidoCd)
	{
		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);
		// 返却結果を設定する
		String resultCd = RETURN_OK;

		// サービス契約番号、サービスコード、申込明細番号が空の場合、OKを返却する
		if (JKKStringUtil.isNullBlank(inSvcKeiNo)
			|| JKKStringUtil.isNullBlank(inSvcCd)
			|| JKKStringUtil.isNullBlank(inMskYmd))
		{
			return RETURN_OK;
		}
		// 同一回線のサービス契約を取得しその取得結果の件数を取得する
		 getKaiTgSvkeiInfoList(inSvcKeiNo, opeDate);
		// 取得件数が0件の場合
		if (kaiTgSvkeiInfoList == null || kaiTgSvkeiInfoList.size() == 0)
		{
			return RETURN_OK;
		}
		// 1件以上の場合
		else
		{
			// サービス契約回線内訳番号取得
			String svcKeiKaisenNo = kaiTgSvkeiInfoList.get(0).get(KK0251ETMsg.SVC_KEI_KAISEN_UCWK_NO);
			
			// コネクション
			Connection con = null;

			// プリペアステートメント
			PreparedStatement pstmt = null;

			// リザルトセット
			ResultSet rsltQuery = null;

			// SQL文
			StringBuffer sbSql = new StringBuffer();

			sbSql.append("     SELECT KK0241.SVC_KEI_NO ")
				 .append("            , KK0081.MSKM_DTL_NO ")
				 .append("            , KK0081.SVC_CD ")
				 .append("            , KK0021.MSKM_YMD ")
				 .append("       FROM KK_T_KAISEN_TG_SVKEI KK0241 ")
				 .append(" INNER JOIN KK_T_SVC_KEI KK0081 ")
				 .append("         ON KK0241.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
				 .append(" INNER JOIN KK_T_MSKM_DTL KK0021 ")
				 .append("         ON KK0021.MSKM_DTL_NO = KK0081.MSKM_DTL_NO ")
				 .append("      WHERE KK0241.SVC_KEI_KAISEN_UCWK_NO = ? ")
				 .append("        AND KK0241.SVC_KEI_NO NOT IN ? ")
				 .append("        AND KK0241.KAISEN_UCWK_USE_STAYMD <=  ? ")
				 .append("        AND KK0241.KAISEN_UCWK_USE_ENDYMD >=  ? ")
				 .append("        AND KK0241.MK_FLG = '0' ")
				 .append("        AND (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) = ")
				 .append("            ( SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ")
				 .append("                FROM KK_T_SVC_KEI KK0081_GENE ")
				 .append("               WHERE KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
				 .append("                 AND KK0081_GENE.RSV_APLY_YMD <=  ? ")
				 .append("                 AND KK0081_GENE.RSV_APLY_CD = '2' ")
				 .append("                 AND KK0081_GENE.MK_FLG = '0' ")
				 .append("            GROUP BY KK0081_GENE.SVC_KEI_NO ")
				 .append("            ) ")
				 .append("        AND KK0081.SVC_CD = ? ")
				 .append("        AND KK0081.SVC_KEI_STAT = '010' ")
				 .append("        AND (KK0021.MSKM_DTL_NO, KK0021.GENE_ADD_DTM) =  ")
				 .append("            ( SELECT KK0021_GENE.MSKM_DTL_NO, MAX(KK0021_GENE.GENE_ADD_DTM) AS KK0021_MAX  ")
				 .append("                FROM KK_T_MSKM_DTL KK0021_GENE  ")
				 .append("               WHERE KK0021_GENE.MSKM_DTL_NO = KK0021.MSKM_DTL_NO  ")
				 .append("                 AND KK0021_GENE.MK_FLG = '0'  ")
				 .append("            GROUP BY KK0021_GENE.MSKM_DTL_NO  ")
				 .append("            ) ");

			try
			{
				//コネクション取得
				con = JSYejbConnection.getConnection(KK0341ETMsg.getTableName());

				//prepareStatementにSQL文をセット
				pstmt = con.prepareStatement(sbSql.toString());

				//ログ出力(SQL文の出力)
				JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);
				
				int cnt = 1;
				// バインド変数設定
				// サービス契約回線内訳番号
				CAANJDBCUtil.setParam(pstmt, cnt++ , svcKeiKaisenNo);
				// サービス契約番号
				CAANJDBCUtil.setParam(pstmt, cnt++ , inSvcKeiNo);
				// 運用日付
				CAANJDBCUtil.setParam(pstmt, cnt++, opeDate);
				CAANJDBCUtil.setParam(pstmt, cnt++, opeDate);
				CAANJDBCUtil.setParam(pstmt, cnt++, opeDate);
				// サービスコード:01_ネットの場合、02_電話を設定する
				if (SVC_CD_01.equals(inSvcCd))
				{
					CAANJDBCUtil.setParam(pstmt, cnt++ , SVC_CD_02);
				}
				// サービスコード:02_電話の場合、01_ネットを設定する
				else if (SVC_CD_02.equals(inSvcCd))
				{
					CAANJDBCUtil.setParam(pstmt, cnt++ , SVC_CD_01);
				}
				
				// ResultSetの取得
				rsltQuery = pstmt.executeQuery();
				
				//取得件数が0件の場合、チェック結果OKとして返却する
				// 取得結果情報判定
				//同一回線の別サービスの申込年月日
				String mskYmd1 = null;
				while (rsltQuery.next())
				{
					//同一回線の別サービスの申込年月日を取得する
				    mskYmd1 = rsltQuery.getString(KK0021ETMsg.MSKM_YMD);
				}
				// 同一回線のINPUTサービスの申込年月日を取得する
				// 旧標準工事制度と新標準工事費制度を判定する
				if (!(JKKStringUtil.isNullBlank(mskYmd1)))
				{
					// 業務パラメータ管理．標準工事費割賦制度開始年月日を取得する
					String hjnkjhKapsdSymd = new JKKejbZM0321DBAccess().getParamE(WORK_PARAM_KK_HJNKJH_KAPSD_SYMD);

					if ((mskYmd1.compareTo(hjnkjhKapsdSymd) < 0 && inMskYmd.compareTo(hjnkjhKapsdSymd) >= 0)
							|| (mskYmd1.compareTo(hjnkjhKapsdSymd) >= 0 && inMskYmd.compareTo(hjnkjhKapsdSymd) < 0))
					{
						resultCd = RETURN_NG;
					}
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
			finally
			{
				// 資源の解放
				try
				{
					if (rsltQuery != null)
					{
						rsltQuery.close();
					}
					if (pstmt != null)
					{
						pstmt.close();
					}
					if (con != null)
					{
						CAANConnectionMgr.getInstance().close(con);
					}
				}
				catch (SQLException e)
				{
					throw new CAANRuntimeException(e);
				}
			}
		}
		return resultCd;
	}
	/**
	 * <p>
	 * 申込明細情報を取得する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param mskmDtlNo 申込明細番号
	 * @param kidoCd 起動元コード
	 * @return サービス契約情報
	 **/
	protected CAANMsg getMskmDtl(CAANMsg inMsg, String mskmDtlNo, String kidoCd)
	{
		// パラメータチェック
		if (mskmDtlNo == null || kidoCd == null)
		{
			return null;
		}

		// サービス契約カレントレコード検索
		CAANMsg msgKK0021ETMsg = new CAANMsg(KK0021ETMsg.class.getName());
		msgKK0021ETMsg.set(KK0021ETMsg.MSKM_DTL_NO, mskmDtlNo);
		CAANMsg crtMsg = new JKKejbKK0021DBABase().findByCurrent(msgKK0021ETMsg);

		// 存在しない場合
		if (crtMsg == null)
		{
			return null;
		}

		return crtMsg;
	}
	//---------v36.00.00 ANK-3296-00-00_ADD END-----------//

	// ANK-4468-00-00 ADD START
	/**
	 * <p>
	 * 契約者年齢整合性チェック
	 * </p>
	 * @param inMsg メッセージキャリア
	 * @param birthd 生年月日
	 * @param kidoCd 起動元コード
	 * @return 判定結果
	 */
	protected String chkKeishaOldSeigosei(CAANMsg inMsg, String birthd, String kidoCd)
	{
		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);
		
		// 基準日
		int sysDateY = Integer.parseInt(JPCUtilCommon.toYearFromYmd(opeDate));
		int sysDateM = Integer.parseInt(JPCUtilCommon.toMonthFromYmd(opeDate));
		int sysDateD = Integer.parseInt(JPCUtilCommon.toDayFromYmd(opeDate));
		
		// 生年月日
		int yValue = Integer.parseInt(JPCUtilCommon.toYearFromYmd(birthd));
		int mValue = Integer.parseInt(JPCUtilCommon.toMonthFromYmd(birthd));
		int dValue = Integer.parseInt(JPCUtilCommon.toDayFromYmd(birthd));
		
		// 年齢設定
		int age = sysDateY - yValue;
		if (sysDateM < mValue || (sysDateM == mValue && sysDateD < dValue))
		{
			age = age - 1;
		}
		
		// 18歳未満の場合、NG
		if (age < 18)
		{
			return RETURN_NG;
		}
		
		return RETURN_OK;
	}
	// ANK-4468-00-00 ADD END

	// ANK-4468-28-00 ADD START
	/**
	 * <p>
	 * 照査対象の乗換元サービス契約番号に紐づくサービス契約番号を取得する。
	 * </p>
	 * @param inMsg 処理対象メッセージキャリア
	 * @param サービス契約番号
	 * @param nrkemtSvkeiNo 乗換元サービス契約番号
	 * @param kidoCd 起動元コード
	 * @return チェック結果（OK:0、NG:1）
	 **/
	protected String chkDuplicateNrkemtSvkeiNo(CAANMsg inMsg, String svcKeiNo, String nrkemtSvkeiNo, String kidoCd){

		JSYejbLog.println(JSYejbLog.EXECUTION, getClass(), "JKKejbShosaChkBase.chkMskmshoDtlNo SHOSA_TG_CD = " + SHOSACHK_TRG_085);
		
		// 返却結果を設定する
		String resultCd = RETURN_OK;

		// 運用日付を取得
		String opeDate = getOpeDate(inMsg, kidoCd);
		
		// コネクション
		Connection con = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// SQL文
		StringBuffer sbSql = new StringBuffer();

		sbSql.append("SELECT KK0081.SVC_KEI_NO,KK0081.SVC_KEI_STAT ")
			 .append("  FROM KK_T_SVC_KEI KK0081 ")
			 .append(" INNER JOIN KK_T_SVC_KEI_EOH_NET KK0091 ")
			 .append("   ON KK0081.SVC_KEI_NO = KK0091.SVC_KEI_NO ")
			 .append("   AND KK0081.GENE_ADD_DTM = KK0091.GENE_ADD_DTM  ")
			 .append("     WHERE KK0091.NRKEMT_SVKEI_NO = ? ")
			 .append("       AND (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) =  ")
			 .append("        (SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_GENE_MAX ")
			 .append("           FROM KK_T_SVC_KEI KK0081_GENE ")
			 .append("          WHERE KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
			 .append("            AND KK0081_GENE.RSV_APLY_YMD <= ? ")
			 .append("            AND KK0081_GENE.RSV_APLY_CD = '2' ")
			 .append("            AND KK0081_GENE.MK_FLG = '0' ")
			 .append("          GROUP BY KK0081_GENE.SVC_KEI_NO) ");
		
		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK0081ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			CAANJDBCUtil.setParam(pstmt, 1, nrkemtSvkeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 取得結果をマップに格納
			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();
			while (rsltQuery.next())
			{
				Map<String, String> mapRslt = new HashMap<String, String>();

				mapRslt.put(KK0081ETMsg.SVC_KEI_NO, rsltQuery.getString(1));
				mapRslt.put(KK0081ETMsg.SVC_KEI_STAT, rsltQuery.getString(2));

				listRslt.add(mapRslt);
			}

			//取得結果から判定
			if (listRslt.size() == 0){
				// 取得件数0件ならばOKを返す
				resultCd = RETURN_OK;
			} else {
				Map<String, String> mapRslt = new HashMap<String, String>();
				for(int i = 0; i<listRslt.size(); i++){
					mapRslt = listRslt.get(i);
					String retSvcKeiNo = mapRslt.get(KK0081ETMsg.SVC_KEI_NO);
					String retSvcKeiStat = mapRslt.get(KK0081ETMsg.SVC_KEI_STAT);
					// 照査対象のサービス契約番号と同じならばコンティニュー
					if (retSvcKeiNo.equals(svcKeiNo)){
						continue;
					} else {
						// ステータスが受付済〜サービス提供中ならばNGを返す
						if (SVC_KEI_STAT_TEIKYO_CHU.compareTo(retSvcKeiStat) >= 0){
							resultCd = RETURN_NG;
							break;
						} else {
							continue;
						}
					}
				}
			}
			
		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	return resultCd;
	}
	// ANK-4468-28-00 ADD END

// ANK-4330-00-00 DEL START
// ANK-4084-00-00 ADD START
//	/**
//	 * <p>
//	 * 工事費割賦分割CP適用チェック
//	 * </p>
//	 * @param inMsg メッセージキャリア
//	 * @param svcKeiNo サービス契約番号
//	 * @param kidoCd 起動元コード
//	 * @return チェック結果（OK:0、NG:1）
//	 */
//	protected String chkKojihiKapBnktCp(CAANMsg inMsg, String svcKeiNo, String kidoCd)
//	{
//		// 運用日付を取得
//		String opeDate = getOpeDate(inMsg, kidoCd);
//
//		// 同一回線のサービス契約を取得しその取得結果の件数を取得する
//		 getKaiTgSvkeiInfoList(svcKeiNo, opeDate);
//		// 取得件数が0件の場合
//		if (kaiTgSvkeiInfoList == null || kaiTgSvkeiInfoList.size() == 0)
//		{
//			return RETURN_OK;
//		}
//		// 1件以上の場合
//		else
//		{
//			// サービス契約回線番号取得
//			String svcKeiKaisenNo = kaiTgSvkeiInfoList.get(0).get(KK0251ETMsg.SVC_KEI_KAISEN_UCWK_NO);
//			// コネクション
//			Connection con = null;
//
//			// プリペアステートメント
//			PreparedStatement pstmt = null;
//
//			// リザルトセット
//			ResultSet rsltQuery = null;
//
//			// SQL文
//			StringBuffer sbSql = new StringBuffer();
//
//			sbSql.append(" SELECT KK0081.SVC_CD ")
//				 .append("   FROM KK_T_KAISEN_TG_SVKEI KK0241 ")
//				 .append("  INNER JOIN KK_T_SVC_KEI KK0081 ")
//				 .append("     ON KK0241.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
//				 .append("  WHERE KK0241.SVC_KEI_KAISEN_UCWK_NO = ? ")
//				 .append("    AND KK0241.SVC_KEI_NO <> ? ")
//				 .append("    AND KK0241.KAISEN_UCWK_USE_STAYMD <= ? ")
//				 .append("    AND KK0241.KAISEN_UCWK_USE_ENDYMD >= ? ")
//				 .append("    AND KK0241.MK_FLG = '0' ")
//				 .append("    AND (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) = ")
//				 .append("        (SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ")
//				 .append("           FROM KK_T_SVC_KEI KK0081_GENE ")
//				 .append("          WHERE KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
//				 .append("            AND KK0081_GENE.RSV_APLY_YMD <= ? ")
//				 .append("            AND KK0081_GENE.RSV_APLY_CD = '2' ")
//				 .append("            AND KK0081_GENE.MK_FLG = '0' ")
//				 .append("          GROUP BY KK0081_GENE.SVC_KEI_NO ) ")
//				 .append("    AND KK0081.SVC_KEI_STAT NOT IN ('910','920') ");
//
//			try
//			{
//				// コネクション取得
//				con = JSYejbConnection.getConnection(KK0241ETMsg.getTableName());
//				
//				// prepareStatementにSQL文をセット
//				pstmt = con.prepareStatement(sbSql.toString());
//				
//				// ログ出力(SQL文の出力)
//				JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);
//				
//				// バインド変数設定
//				// サービス契約回線内訳番号
//				CAANJDBCUtil.setParam(pstmt, 1, svcKeiKaisenNo);
//				// サービス契約番号
//				CAANJDBCUtil.setParam(pstmt, 2, svcKeiNo);
//				// 運用日付
//				CAANJDBCUtil.setParam(pstmt, 3, opeDate);
//				CAANJDBCUtil.setParam(pstmt, 4, opeDate);
//				CAANJDBCUtil.setParam(pstmt, 5, opeDate);
//				
//				// ResultSetの取得
//				rsltQuery = pstmt.executeQuery();
//				// 取得件数が0件の場合、チェック結果OKとして返却する
//				// 取得結果情報判定
//				List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();
//
//				// 取得結果をマップに格納
//				while (rsltQuery.next())
//				{
//					Map<String, String> mapRslt = new HashMap<String, String>();
//
//					mapRslt.put(KK0081ETMsg.SVC_CD, rsltQuery.getString(1));
//					listRslt.add(mapRslt);
//				}
//				
//				// サービスコードにネットが存在する場合、チェック結果OKとして返却する
//				// テレビが存在する場合、割賦プランコード、割引サービスコードのチェックを行う
//				// どちらでもない場合、チェック結果OKとして返却する
//				boolean tvFlg = false;
//				for(Map<String, String> mapChk : listRslt)
//				{
//					if(JKKStrConst.CD00130_01.equals(mapChk.get(KK0081ETMsg.SVC_CD)))
//					{
//						return RETURN_OK;
//					} 
//					if(JKKStrConst.CD00130_03.equals(mapChk.get(KK0081ETMsg.SVC_CD)))
//					{
//						tvFlg = true;
//					}
//				}
//				
//				if(tvFlg)
//				{
//					// 割賦プランコードのチェック
//					if(RETURN_NG.equals(chkKapPlanCd(svcKeiKaisenNo)))
//					{
//						return RETURN_NG;
//					// 割引サービスコードのチェック
//					}
//					else if(RETURN_NG.equals(chkWribSvcCd(svcKeiNo, opeDate)))
//					{
//						return RETURN_NG;
//					}
//				}
//			}
//			catch (SQLException e)
//			{
//				throw new CAANRuntimeException(e);
//			}
//			finally
//			{
//				// 資源の解放
//				try
//				{
//					if (rsltQuery != null)
//					{
//						rsltQuery.close();
//					}
//					if (pstmt != null)
//					{
//						pstmt.close();
//					}
//					if (con != null)
//					{
//						CAANConnectionMgr.getInstance().close(con);
//					}
//				}
//				catch (SQLException e)
//				{
//					throw new CAANRuntimeException(e);
//				}
//			}
//		}
//		return RETURN_OK;
//	}
//
//	/**
//	 * <p>
//	 * 割賦プランコードチェック
//	 * </p>
//	 * @param svcKeiKaisenNo サービス契約回線内訳番号
//	 * @return チェック結果（OK:0、NG:1）
//	 */
//	private String chkKapPlanCd(String svcKeiKaisenNo)
//	{
//		// コネクション
//		Connection con = null;
//
//		// プリペアステートメント
//		PreparedStatement pstmt = null;
//
//		// リザルトセット
//		ResultSet rsltQuery = null;
//
//		// SQL文
//		StringBuffer sbSql = new StringBuffer();
//
//		sbSql.append("  SELECT KK3131.KAP_PLAN_CD ")
//			 .append("    FROM KK_T_KOJIHI_KAP_KEI KK3131 ")
//			 .append("   WHERE KK3131.SVC_KEI_KAISEN_UCWK_NO = ? ")
//			 .append("     AND (KK3131.KOJIHI_KAP_KEI_NO, KK3131.GENE_ADD_DTM) = ")
//			 .append("         (SELECT KK3131_GENE.KOJIHI_KAP_KEI_NO, MAX(KK3131_GENE.GENE_ADD_DTM) AS KK3131_MAX ")
//			 .append("            FROM KK_T_KOJIHI_KAP_KEI KK3131_GENE ")
//			 .append("           WHERE KK3131_GENE.KOJIHI_KAP_KEI_NO = KK3131.KOJIHI_KAP_KEI_NO ")
//			 .append("             AND KK3131_GENE.MK_FLG = '0' ")
//			 .append("        GROUP BY KK3131_GENE.KOJIHI_KAP_KEI_NO) ")
//			 .append("     AND KK3131.KAP_KEI_STAT = '010' ");
//
//		try
//		{
//			// コネクション取得
//			con = JSYejbConnection.getConnection(KK3131ETMsg.getTableName());
//
//			// prepareStatementにSQL文をセット
//			pstmt = con.prepareStatement(sbSql.toString());
//
//			// ログ出力(SQL文の出力)
//			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);
//			
//			// バインド変数設定
//			// サービス契約回線内訳番号
//			CAANJDBCUtil.setParam(pstmt, 1, svcKeiKaisenNo);
//			
//			// ResultSetの取得
//			rsltQuery = pstmt.executeQuery();
//			// 取得件数が0件の場合、チェック結果OKとして返却する
//			// 取得結果情報判定
//			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();
//
//			// 取得結果をマップに格納
//			while (rsltQuery.next())
//			{
//				Map<String, String> mapRslt = new HashMap<String, String>();
//
//				mapRslt.put(KK3131ETMsg.KAP_PLAN_CD, rsltQuery.getString(1));
//				listRslt.add(mapRslt);
//			}
//			for(Map<String, String> mapChkKapCd : listRslt)
//			{
//				if(JKKStrConst.KAP_PLAN_CD_BUNKATSU_24_10PER.equals(mapChkKapCd.get(KK3131ETMsg.KAP_PLAN_CD)))
//				{
//					return RETURN_NG;
//				} 
//			}
//		}
//		catch (SQLException e)
//		{
//			throw new CAANRuntimeException(e);
//		}
//		finally
//		{
//			// 資源の解放
//			try
//			{
//				if (rsltQuery != null)
//				{
//					rsltQuery.close();
//				}
//				if (pstmt != null)
//				{
//					pstmt.close();
//				}
//				if (con != null)
//				{
//					CAANConnectionMgr.getInstance().close(con);
//				}
//			}
//			catch (SQLException e)
//			{
//				throw new CAANRuntimeException(e);
//			}
//		}
//		return RETURN_OK;
//	}
//
//	/**
//	 * <p>
//	 * 割引サービスコードチェック
//	 * </p>
//	 * @param svcKeiNo サービス契約番号
//	 * @param opeDate 運用日付
//	 * @return チェック結果（OK:0、NG:1）
//	 */
//	private String chkWribSvcCd(String svcKeiNo, String opeDate)
//	{
//		// コネクション
//		Connection con = null;
//
//		// プリペアステートメント
//		PreparedStatement pstmt = null;
//
//		// リザルトセット
//		ResultSet rsltQuery = null;
//
//		// SQL文
//		StringBuffer sbSql = new StringBuffer();
//
//		sbSql.append("  SELECT KK0451.WRIB_SVC_CD ")
//			 .append("    FROM KK_T_WRISVC_TG_KEI KK0481 ")
//			 .append("   INNER JOIN KK_T_WRIB_SVC_KEI KK0451 ")
//			 .append("      ON KK0481.WRIB_SVC_KEI_NO = KK0451.WRIB_SVC_KEI_NO ")
//			 .append("   WHERE KK0481.SVC_KEI_NO = ? ")
//			 .append("     AND (KK0481.WRIB_SVC_KEI_NO, KK0481.WRIB_SVC_TRGT_KEI_NO, KK0481.GENE_ADD_DTM) = ")
//			 .append("         (SELECT KK0481_GENE.WRIB_SVC_KEI_NO, KK0481_GENE.WRIB_SVC_TRGT_KEI_NO, MAX(KK0481_GENE.GENE_ADD_DTM) AS KK0481_MAX ")
//			 .append("            FROM KK_T_WRISVC_TG_KEI KK0481_GENE ")
//			 .append("           WHERE KK0481_GENE.WRIB_SVC_KEI_NO = KK0481.WRIB_SVC_KEI_NO ")
//			 .append("             AND KK0481_GENE.WRIB_SVC_TRGT_KEI_NO = KK0481.WRIB_SVC_TRGT_KEI_NO ")
//			 .append("             AND KK0481_GENE.MK_FLG = '0' ")
//			 .append("        GROUP BY KK0481_GENE.WRIB_SVC_KEI_NO, KK0481_GENE.WRIB_SVC_TRGT_KEI_NO ) ")
//			 .append("     AND (KK0451.WRIB_SVC_KEI_NO, KK0451.RSV_APLY_YMD || KK0451.GENE_ADD_DTM) = ")
//			 .append("         (SELECT KK0451_GENE.WRIB_SVC_KEI_NO, MAX(KK0451_GENE.RSV_APLY_YMD || KK0451_GENE.GENE_ADD_DTM) AS KK0451_MAX ")
//			 .append("            FROM KK_T_WRIB_SVC_KEI KK0451_GENE ")
//			 .append("           WHERE KK0451_GENE.WRIB_SVC_KEI_NO = KK0451.WRIB_SVC_KEI_NO ")
//			 .append("             AND KK0451_GENE.RSV_APLY_YMD <= ? ")
//			 .append("             AND KK0451_GENE.RSV_APLY_CD = '2' ")
//			 .append("             AND KK0451_GENE.MK_FLG = '0' ")
//			 .append("        GROUP BY KK0451_GENE.WRIB_SVC_KEI_NO ) ")
//			 .append("     AND KK0451.WRIB_SVC_KEI_STAT = '010' ");
//
//		try
//		{
//			// コネクション取得
//			con = JSYejbConnection.getConnection(KK0481ETMsg.getTableName());
//
//			// prepareStatementにSQL文をセット
//			pstmt = con.prepareStatement(sbSql.toString());
//
//			// ログ出力(SQL文の出力)
//			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);
//			
//			// バインド変数設定
//			// サービス契約番号
//			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
//			// 運用日付
//			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
//			
//			// ResultSetの取得
//			rsltQuery = pstmt.executeQuery();
//			// 取得件数が0件の場合、チェック結果OKとして返却する
//			// 取得結果情報判定
//			List<Map<String, String>> listRslt = new ArrayList<Map<String, String>>();
//
//			// 取得結果をマップに格納
//			while (rsltQuery.next())
//			{
//				Map<String, String> mapRslt = new HashMap<String, String>();
//
//				mapRslt.put(KK0451ETMsg.WRIB_SVC_CD, rsltQuery.getString(1));
//				listRslt.add(mapRslt);
//			}
//			for(Map<String, String> mapChkWribSvcCd : listRslt)
//			{
//				if(JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_24.equals(mapChkWribSvcCd.get(KK0451ETMsg.WRIB_SVC_CD)))
//				{
//					return RETURN_NG;
//				} 
//			}
//		}
//		catch (SQLException e)
//		{
//			throw new CAANRuntimeException(e);
//		}
//		finally
//		{
//			// 資源の解放
//			try
//			{
//				if (rsltQuery != null)
//				{
//					rsltQuery.close();
//				}
//				if (pstmt != null)
//				{
//					pstmt.close();
//				}
//				if (con != null)
//				{
//					CAANConnectionMgr.getInstance().close(con);
//				}
//			}
//			catch (SQLException e)
//			{
//				throw new CAANRuntimeException(e);
//			}
//		}
//		return RETURN_OK;
//	}
// ANK-4084-00-00 ADD END
// ANK-4330-00-00 DEL END
}