/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKintrjhAdd
*	ソースファイル名	：JBSbatKKintrjhAdd.java
*	作成者				：富士通　
*	作成日				：2012年10月16日
*＜機能概要＞
*　紹介者情報登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/10/16	FJ）桑島	新規作成
*	v4.00.01	2013/03/02	FJ）岡田	【IT1-2013-0000362】障害対応
*	v4.00.02	2013/03/03	FJ）藤本	【IKK-2013-0000289】障害対応
*	v5.00.00	2013/01/17	FJ）神吉	【ANK-1418-00-00】お客様検索条件の修正
*	v5.00.01	2013/05/22	FJ）岡田	【IT1-2013-0001207】障害対応
*	v5.00.02	2013/06/27	FJ）中作	【IT1-2013-0001290】障害対応
*	v5.00.03	2013/07/08	FJ）中作	【IT1-2013-0001338】障害対応
*	v5.00.04	2013/08/16	FJ）柳		【ANK-1644-00-00】データ抽出項目設定条件の取得方法変更
*	v5.00.05	2013/08/23	FJ）柳		【IT1-2013-0001606】障害対応
*	v5.00.06	2013/10/04	FJ) 団		【OM-2013-0002748】障害対応
*	v5.00.07	2013/10/17	FJ) 団		【OM-2013-0002684】障害対応
*	v6.00.00	2014/01/14	FJ) 団		【OM-2013-0004754】障害対応
*	v7.00.00	2014/02/19	FJ) 岡田	【OM-2014-0000732】障害対応
*   v22.00.00   2015/11/19  FJ) 広部    【ANK-2732-00-00】プロジェクト正常化施策 ソースの可読性向上
*   v66.00.00	2023/02/14	FJ) 松永	【ANK-4307-00-00】【eo定期】プレミアムクラブリニューアル対応
*				2023/07/21	FJ) 西窪	【#82591】マイナーアラーム出力対応
*********************************************************************/
package eo.business.service;


import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatKKIFE219;
import eo.business.util.file.JBSbatKKIFM030;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatKK_M_DCHSKM_SETE_JKN;
import eo.business.util.table.JBSbatKK_M_DCHSKM_TG_SVC;
import eo.business.util.table.JBSbatKK_M_PPLAN;
import eo.business.util.table.JBSbatKK_M_WRIB_SVC;
import eo.business.util.table.JBSbatKK_T_DCHSKMST;
import eo.business.util.table.JBSbatKK_T_INTR;
import eo.business.util.table.JBSbatKK_T_MSKM_DTL;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_UCWK;
import eo.business.util.table.JBSbatKK_T_WRIB_SVC_KEI;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JPCUtilCommon;
import eo.framework.application.JBSbatBusinessError;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatOracleSeqUtil;
import eo.framework.util.JBSbatStringUtil;
import eo.framework.util.JCCBatchEsbInterface;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKintrjhAdd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(サービス契約内訳)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_UCWK = "KK_T_SVC_KEI_UCWK";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(紹介)*/
	private static final String D_TBL_NAME_KK_T_INTR = "KK_T_INTR";

	/** テーブル(お客様)*/
	private static final String D_TBL_NAME_CK_T_CUST = "CK_T_CUST";

	/** テーブル(データ抽出項目設定条件)*/
	private static final String D_TBL_NAME_KK_M_DCHSKM_SETE_JKN = "KK_M_DCHSKM_SETE_JKN";

	/** テーブル(データ抽出項目対象サービス)*/
	private static final String D_TBL_NAME_KK_M_DCHSKM_TG_SVC = "KK_M_DCHSKM_TG_SVC";

	/** テーブル(データ抽出項目)*/
	private static final String D_TBL_NAME_KK_M_DCHSKM = "KK_M_DCHSKM";

	/** テーブル(データ抽出項目設定)*/
	private static final String D_TBL_NAME_KK_T_DCHSKMST = "KK_T_DCHSKMST";

	/** テーブル(データ抽出項目設定対象契約)*/
	private static final String D_TBL_NAME_KK_T_DCHSKMST_TG_KEI = "KK_T_DCHSKMST_TG_KEI";

	/** テーブル(連絡先)*/
	private static final String D_TBL_NAME_CK_T_RRKS = "CK_T_RRKS";

	/** テーブル(申込明細)*/
	private static final String D_TBL_NAME_KK_T_MSKM_DTL = "KK_T_MSKM_DTL";

	/** テーブル(料金プラン)*/
	private static final String D_TBL_NAME_KK_M_PPLAN = "KK_M_PPLAN";
	
	/** テーブル(割引サービス契約)*/
	private static final String D_TBL_NAME_KK_T_WRIB_SVC_KEI = "KK_T_WRIB_SVC_KEI";

	/** SQL定義キー(KK_SELECT_094)*/
	private static final String KK_T_SVC_KEI_UCWK_KK_SELECT_094 = "KK_SELECT_094";

	/** SQL定義キー(KK_SELECT_219)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_219 = "KK_SELECT_219";

	/** SQL定義キー(KK_SELECT_264)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_264 = "KK_SELECT_264";

	/** SQL定義キー(KK_SELECT_046)*/
	private static final String CK_T_CUST_KK_SELECT_046 = "KK_SELECT_046";

	/** SQL定義キー(KK_SELECT_220)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_220 = "KK_SELECT_220";

	/** SQL定義キー(KK_SELECT_002)*/
	private static final String KK_M_DCHSKM_SETE_JKN_KK_SELECT_002 = "KK_SELECT_002";

	/** SQL定義キー(KK_SELECT_002)*/
	private static final String KK_M_DCHSKM_TG_SVC_KK_SELECT_002 = "KK_SELECT_002";

	/** SQL定義キー(KK_SELECT_007)*/
	private static final String KK_M_DCHSKM_KK_SELECT_007 = "KK_SELECT_007";

	/** SQL定義キー(KK_SELECT_005)*/
//	private static final String CK_T_RRKS_KK_SELECT_005 = "KK_SELECT_005";

	/** SQL定義キー(KK_SELECT_022)*/
	private static final String KK_T_MSKM_DTL_KK_SELECT_022 = "KK_SELECT_022";

	/** SQL定義キー(KK_SELECT_013)*/
	private static final String KK_T_DCHSKMST_KK_SELECT_013 = "KK_SELECT_013";

	/** SQL定義キー(KK_SELECT_048)*/
	private static final String KK_T_WRIB_SVC_KEI_KK_SELECT_048 = "KK_SELECT_048";
	
	/** テーブルアクセスクラス(サービス契約内訳)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_UCWK = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(紹介)*/
	private JBSbatSQLAccess db_KK_T_INTR = null;

	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;

	/** テーブルアクセスクラス(データ抽出項目設定条件)*/
	private JBSbatSQLAccess db_KK_M_DCHSKM_SETE_JKN = null;

	/** テーブルアクセスクラス(データ抽出項目対象サービス)*/
	private JBSbatSQLAccess db_KK_M_DCHSKM_TG_SVC = null;

	/** テーブルアクセスクラス(データ抽出項目)*/
	private JBSbatSQLAccess db_KK_M_DCHSKM = null;

	/** テーブルアクセスクラス(データ抽出項目設定)*/
	private JBSbatSQLAccess db_KK_T_DCHSKMST = null;

	/** テーブルアクセスクラス(データ抽出項目設定対象契約)*/
	private JBSbatSQLAccess db_KK_T_DCHSKMST_TG_KEI = null;

	/** テーブルアクセスクラス(連絡先)*/
	private JBSbatSQLAccess db_CK_T_RRKS = null;

	/** テーブルアクセスクラス(申込明細)*/
	private JBSbatSQLAccess db_KK_T_MSKM_DTL = null;

	/** テーブルアクセスクラス(料金プラン)*/
	private JBSbatSQLAccess db_KK_M_PPLAN = null;
	
	/** テーブルアクセスクラス(割引サービス契約)*/
	private JBSbatSQLAccess db_KK_T_WRIB_SVC_KEI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** エラー理由(紹介コードなし)*/
	private static final String ERR_RSN_NON_INTR_CD = "紹介コードなし";
	
	/** エラー理由(お客さまＩＤなし)*/
	private static final String ERR_RSN_NON_CUST_ID = "お客さまＩＤなし";
	
	/** エラー理由(お客さまＩＤがＣＰ対象外)*/
	private static final String ERR_RSN_CUST_ID_CPTG = "お客さまＩＤがＣＰ対象外";
	
	/** エラー理由(紹介コード重複)*/
	private static final String ERR_RSN_SHOKAI_CD_DBLE = "紹介コード重複";
	
	/** SYSID（データ抽出項目設定）*/
	private String sysid_dchskmst = "";
	
	/** 出力ファイルソートキー */
	private static final String[] SORT_KEYS  = {
		JBSbatKKIFE219.SHOKAISHA_SYSID,		// 紹介者SYSID
		JBSbatKKIFE219.INTR_CD				// 紹介者コード
	};
	
	/** 出力共通電文保持*/
	private ArrayList<JBSbatServiceInterfaceMap> mapList =  new ArrayList<JBSbatServiceInterfaceMap>();
	
	// ANK-4307-00-00 ADD START
	
	/** ユースケースID */
	private final String USECASE_ID = "KKSV1021";
	
	/** オペレーションID */
	private final String OPERATION_ID = "KKSV1021OP";
	
	/** SCタイトル */
	private final String SC_TITLE_KKSV102101SC= "KKSV102101SC";
	
	/** エラー情報格納キー */
	private static final String ERR_KEY_KKSV1021 = "ERR_KEY_KKSV1021";
	
	/** 空白 */
	private static final String BLANK = "";
	
	/** テーブルアクセスクラス（業務パラメータ） */
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;
	
	/** テーブル(割引サービス契約)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";
	
	/** SQL定義キー(KK_SELECT_016)*/
	private static final String ZM_M_WORK_PARAM_KNRI_KK_SELECT_016 = "KK_SELECT_016";
	
	/** SQL定義キー(KK_SELECT_022)*/
	private static final String KK_T_MSKM_DTL_KK_SELECT_024 = "KK_SELECT_024";
	
	/** 業務パラメータ取得カラム名(WORK_PARAM_ID) */
	private static final String KK_INTR_PRPOINT = "KK_INTR_PRPOINT";
	
	/** 業務パラメータ取得カラム名(WORK_PARAM_ID) */
	private static final String KK_PRCL_RNAL_YMD = "KK_PRCL_RNAL_YMD";
	
	/** プレミアムクラブリニューアル日付取得エラー */
	private static final String ERR_RSN_PRMCL_DAY_ERR = "プレミアムクラブリニューアル日付取得エラー";
	
	/** プレミアムクラブポイント取得エラー */
	private static final String ERR_RSN_PRMCL_POINT_ERR = "プレミアムクラブポイント取得エラー";
	
	/** TRANK連携エラー */
	private static final String ERR_RSN_TRANK_LINK_ERR = "ＴＲＡＮＫ連携エラー";
	
	/** 判定結果：可 */
	private static final String RESULT_OK = "0";
	
	/** 判定結果：否 */
	private static final String RESULT_NG = "1";
	
	/** 判定結果：エラー */
	private static final String RESULT_ERROR = "9";
	// ANK-4307-00-00 ADD END
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_SVC_KEI_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_UCWK);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_INTR = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_INTR);
		db_CK_T_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_KK_M_DCHSKM_SETE_JKN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_DCHSKM_SETE_JKN);
		db_KK_M_DCHSKM_TG_SVC = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_DCHSKM_TG_SVC);
		db_KK_M_DCHSKM = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_DCHSKM);
		db_KK_T_DCHSKMST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_DCHSKMST);
		db_KK_T_DCHSKMST_TG_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_DCHSKMST_TG_KEI);
		db_CK_T_RRKS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_RRKS);
		db_KK_T_MSKM_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM_DTL);
		db_KK_M_PPLAN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PPLAN);
		db_KK_T_WRIB_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_WRIB_SVC_KEI);
		// ANK-4307-00-00 ADD START
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		// ANK-4307-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		super.logPrint.printDebugLog("execute_START");
		
		// 読み込んだサービス開始対象契約取得ファイルよりサービス開始処理種別コードが
		// 「10：サービス開始登録」または「20：サービス開始登録（工事起因）」以外は対象外とする。
		String svc_kis_srsb_cd = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM030.SVC_KIS_SRSB_CD));
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		if(!"10".equals(svc_kis_srsb_cd) && !"20".equals(svc_kis_srsb_cd))
		if(!JBSbatKKConst.KKIFM030_SVC_KIS_SRSB_CD_10.equals(svc_kis_srsb_cd) && !JBSbatKKConst.KKIFM030_SVC_KIS_SRSB_CD_20.equals(svc_kis_srsb_cd))
		// ++++++++++ v22.00.00 変更終了 ++++++++++
		{
			super.logPrint.printDebugLog("■対象外：" + svc_kis_srsb_cd + "：" + inMap.getString(JBSbatKKIFM030.SVC_KEI_NO));
			super.logPrint.printDebugLog("execute_END");
			return null;
		}
		

		// 出力情報
		JBSbatOutputItem outItem = new JBSbatOutputItem();
		
		// 出力ファイルデータMAP
		JBSbatServiceInterfaceMap outDataMap = new JBSbatServiceInterfaceMap();
		
		//紹介者情報登録対象抽出と登録処理
		outDataMap = createSvcStaTgInf(outDataMap,inMap);
		
		if(null != outDataMap)
		{
			mapList.add(outDataMap);
		}
		
		// 読み込んだファイルの最終レコードの場合。
		if(commonItem.isEndRecordFlg())
		{
			//出力対象となる情報を作成する
			outItem = outFileSort(outItem);

		}
		
		super.logPrint.printDebugLog("execute_END");
		
		return outItem;


		/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/

	}
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_SVC_KEI_UCWK.close();
		db_KK_T_SVC_KEI.close();
		db_KK_T_INTR.close();
		db_CK_T_CUST.close();
		db_KK_M_DCHSKM_SETE_JKN.close();
		db_KK_M_DCHSKM_TG_SVC.close();
		db_KK_M_DCHSKM.close();
		db_KK_T_DCHSKMST.close();
		db_KK_T_DCHSKMST_TG_KEI.close();
		db_CK_T_RRKS.close();
		db_KK_T_MSKM_DTL.close();
		db_KK_M_PPLAN.close();
		db_KK_T_WRIB_SVC_KEI.close();
		// ANK-4307-00-00 ADD START
		db_ZM_M_WORK_PARAM_KNRI.close();
		// ANK-4307-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_094)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約内訳番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_UCWK_KK_SELECT_094(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_KK_SELECT_094);
	}

	/**
	 * SQLKEY(KK_SELECT_219)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_219(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_219);
		
	}

	/**
	 * SQLKEY(KK_SELECT_264)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_264(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_264);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	INTR_CD
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_INTR_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("INTR_CD", whereParam[0]);

		// DBアクセスを実行します
		return db_KK_T_INTR.selectByPrimaryKeys(whereMap);
	}

	/**
	 * SQLKEY(KK_SELECT_046)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SYSID
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_CUST_KK_SELECT_046(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_KK_SELECT_046);
	}

	/**
	 * SQLKEY(KK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	データ抽出項目設定条件値1
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_DCHSKM_SETE_JKN_KK_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_M_DCHSKM_SETE_JKN.selectBySqlDefine(paramList, KK_M_DCHSKM_SETE_JKN_KK_SELECT_002);
	}

	/**
	 * SQLKEY(KK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	データ抽出項目コード
	 *		 	サービスコード
	 *		 	料金グループコード
	 *		 	料金コースコード
	 *		 	料金プランコード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_DCHSKM_TG_SVC_KK_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());

		// DBアクセスを実行します
		db_KK_M_DCHSKM_TG_SVC.selectBySqlDefine(paramList, KK_M_DCHSKM_TG_SVC_KK_SELECT_002);
	}

	/**
	 * SQLKEY(KK_SELECT_007)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	データ抽出項目コード
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_DCHSKM_KK_SELECT_007(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_M_DCHSKM.selectBySqlDefine(paramList, KK_M_DCHSKM_KK_SELECT_007);
	}

	/**
	 * SQLKEY(KK_SELECT_048)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_WRIB_SVC_KEI_KK_SELECT_048(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_WRIB_SVC_KEI.selectBySqlDefine(paramList, KK_T_WRIB_SVC_KEI_KK_SELECT_048);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	データ抽出項目設定番号				DCHSKMST_NO
	 *		 	世代登録年月日時分秒				GENE_ADD_DTM
	 *		 	データ抽出項目設定ステータス				DCHSKMST_STAT
	 *		 	データ抽出項目設定完了種別コード				DCHSKMST_FIN_SBT_CD
	 *		 	ＳＹＳＩＤ				SYSID
	 *		 	データ抽出項目コード				DCHSKM_CD
	 *		 	抽出回数				CHSHT_CNT
	 *		 	申込明細番号				MSKM_DTL_NO
	 *		 	即時適用フラグ				APLY_JUN
	 *		 	データ抽出項目設定年月日				DCHSKMST_YMD
	 *		 	データ抽出項目設定開始年月日				DCHSKMST_STA_YMD
	 *		 	データ抽出項目設定終了年月日				DCHSKMST_END_YMD
	 *		 	異動区分				IDO_DIV
	 *		 	グループコード				GRP_CD
	 *		 	紹介コード				INTR_CD
	 *		 	申込起算年月日				MSKM_KISAN_YMD
	 *		 	データ抽出項目設定登録契機コード				DCHSKMST_ADD_OPTY_CD
	 *		 	データ抽出項目設定完了契機コード				DCHSKMST_FIN_OPTY_CD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_DCHSKMST_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("DCHSKMST_NO", setParam[0]);
		setMap.setValue("GENE_ADD_DTM", setParam[1]);
		setMap.setValue("DCHSKMST_STAT", setParam[2]);
		setMap.setValue("DCHSKMST_FIN_SBT_CD", setParam[3]);
		setMap.setValue("SYSID", setParam[4]);
		setMap.setValue("DCHSKM_CD", setParam[5]);
		setMap.setValue("CHSHT_CNT", setParam[6]);
		setMap.setValue("MSKM_DTL_NO", setParam[7]);
		setMap.setValue("APLY_JUN", setParam[8]);
		setMap.setValue("DCHSKMST_YMD", setParam[9]);
		setMap.setValue("DCHSKMST_STA_YMD", setParam[10]);
		setMap.setValue("DCHSKMST_END_YMD", setParam[11]);
		setMap.setValue("IDO_DIV", setParam[12]);
		setMap.setValue("GRP_CD", setParam[13]);
		setMap.setValue("INTR_CD", setParam[14]);
		setMap.setValue("MSKM_KISAN_YMD", setParam[15]);
		setMap.setValue("DCHSKMST_ADD_OPTY_CD", setParam[16]);
		setMap.setValue("DCHSKMST_FIN_OPTY_CD", setParam[17]);
		setMap.setValue("ADD_DTM", setParam[18]);
		setMap.setValue("ADD_OPEACNT", setParam[19]);
		setMap.setValue("UPD_DTM", setParam[20]);
		setMap.setValue("UPD_OPEACNT", setParam[21]);
		setMap.setValue("DEL_DTM", setParam[22]);
		setMap.setValue("DEL_OPEACNT", setParam[23]);
		setMap.setValue("MK_FLG", setParam[24]);
		setMap.setValue("ADD_UNYO_YMD", setParam[25]);
		setMap.setValue("ADD_TRN_ID", setParam[26]);
		setMap.setValue("UPD_UNYO_YMD", setParam[27]);
		setMap.setValue("UPD_TRN_ID", setParam[28]);
		setMap.setValue("DEL_UNYO_YMD", setParam[29]);
		setMap.setValue("DEL_TRN_ID", setParam[30]);
	
		// DBアクセスを実行します
		db_KK_T_DCHSKMST.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	データ抽出項目設定番号				DCHSKMST_NO
	 *		 	データ抽出項目設定対象契約番号				DCHSKMST_TG_KEI_NO
	 *		 	世代登録年月日時分秒				GENE_ADD_DTM
	 *		 	対象契約識別コード				TG_KEI_SKBT_CD
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	サービス契約内訳番号				SVC_KEI_UCWK_NO
	 *		 	オプションサービス契約番号				OP_SVC_KEI_NO
	 *		 	サブオプションサービス契約番号				SBOP_SVC_KEI_NO
	 *		 	機器提供サービス契約番号				KKTK_SVC_KEI_NO
	 *		 	請求オプションサービス契約番号				SEIOPSVC_KEI_NO
	 *		 	解除年月日				RLS_YMD
	 *		 	設定登録年月日				SET_ADD_YMD
	 *		 	データ抽出項目設定対象契約適用開始年月日				DCHSKMST_TG_KEI_TSTAYMD
	 *		 	データ抽出項目設定対象契約適用終了年月日				DCHSKMST_TG_KEI_TENDYMD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_DCHSKMST_TG_KEI_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("DCHSKMST_NO", setParam[0]);
		setMap.setValue("DCHSKMST_TG_KEI_NO", setParam[1]);
		setMap.setValue("GENE_ADD_DTM", setParam[2]);
		setMap.setValue("TG_KEI_SKBT_CD", setParam[3]);
		setMap.setValue("SVC_KEI_NO", setParam[4]);
		setMap.setValue("SVC_KEI_UCWK_NO", setParam[5]);
		setMap.setValue("OP_SVC_KEI_NO", setParam[6]);
		setMap.setValue("SBOP_SVC_KEI_NO", setParam[7]);
		setMap.setValue("KKTK_SVC_KEI_NO", setParam[8]);
		setMap.setValue("SEIOPSVC_KEI_NO", setParam[9]);
		setMap.setValue("RLS_YMD", setParam[10]);
		setMap.setValue("SET_ADD_YMD", setParam[11]);
		setMap.setValue("DCHSKMST_TG_KEI_TSTAYMD", setParam[12]);
		setMap.setValue("DCHSKMST_TG_KEI_TENDYMD", setParam[13]);
		setMap.setValue("ADD_DTM", setParam[14]);
		setMap.setValue("ADD_OPEACNT", setParam[15]);
		setMap.setValue("UPD_DTM", setParam[16]);
		setMap.setValue("UPD_OPEACNT", setParam[17]);
		setMap.setValue("DEL_DTM", setParam[18]);
		setMap.setValue("DEL_OPEACNT", setParam[19]);
		setMap.setValue("MK_FLG", setParam[20]);
		setMap.setValue("ADD_UNYO_YMD", setParam[21]);
		setMap.setValue("ADD_TRN_ID", setParam[22]);
		setMap.setValue("UPD_UNYO_YMD", setParam[23]);
		setMap.setValue("UPD_TRN_ID", setParam[24]);
		setMap.setValue("DEL_UNYO_YMD", setParam[25]);
		setMap.setValue("DEL_TRN_ID", setParam[26]);
	
		// DBアクセスを実行します
		db_KK_T_DCHSKMST_TG_KEI.insertByPrimaryKeys(setMap);
	}

//	/**
//	 * SQLKEY(KK_SELECT_005)でDBアクセスを行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.引数でバイント変数を設定します。<br>
//	 *
//	 * 2.DBアクセスを実行します。<br>
//	 * 
//	 * 3.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
//	 *		 	SYSID
//	 *		 	予約適用年月日
//	 * </pre>
//	 * <p>
//	 * @param param バイント変数の値配列。
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private void executeCK_T_RRKS_KK_SELECT_005(Object[] param) throws Exception
//	{
//		// バイント変数のリストを生成します
//		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
//		paramList.setValue(param[0].toString());
//		paramList.setValue(param[1].toString());
//
//		// DBアクセスを実行します
//		db_CK_T_RRKS.selectBySqlDefine(paramList, CK_T_RRKS_KK_SELECT_005);
//	}

	/**
	 * SQLKEY(KK_SELECT_022)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	申込明細番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MSKM_DTL_KK_SELECT_022(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM_DTL.selectBySqlDefine(paramList, KK_T_MSKM_DTL_KK_SELECT_022);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	PCRS_CD
	 *		 	PPLAN_CD
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_M_PPLAN_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("PCRS_CD", whereParam[0]);
		whereMap.setValue("PPLAN_CD", whereParam[1]);

		// DBアクセスを実行します
		return db_KK_M_PPLAN.selectByPrimaryKeys(whereMap);
	}
	
	/**
	 * SQLKEY(KK_SELECT_013)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	紹介者コード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_DCHSKMST_KK_SELECT_013(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_DCHSKMST.selectBySqlDefine(paramList, KK_T_DCHSKMST_KK_SELECT_013);
	}	
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * サービス開始対象契約取得ファイルより、処理対象のサービス契約番号を取得を行います。
	 * サービス契約番号を元に紹介者情報を取得し、データ抽出項目設定TBL、データ抽出項目設定対象契約TBLへ
	 * 登録処理を行う。エラーデータに関しては、中間ファイルへ格納する。
	 * <br>
	 * @param inMap 中間ファイル
	 * @throws Exception 
	 */	
	private JBSbatServiceInterfaceMap createSvcStaTgInf(JBSbatServiceInterfaceMap outMap, JBSbatServiceInterfaceMap inMap) throws Exception
	{
		super.logPrint.printDebugLog("createSvcStaTgInf_START");
		
		String searchJkn_svcKeiNo = inMap.getString(JBSbatKKIFM030.SVC_KEI_NO);
		super.logPrint.printDebugLog("searchJkn_svcKeiNo:" + searchJkn_svcKeiNo);
		
		// サービス契約番号が未設定の場合
		// KKPRC00901にて出力されたファイルKKIFM030008.csvで電話のサービス契約の場合に
		// サービス契約内訳起点となり、サービス契約番号が設定されておらず、サービス契約内訳番号が
		// 設定されるのでサービス契約内訳番号よりサービス契約番号の検索を行う。
		if("".equals(searchJkn_svcKeiNo))
		{
			String[] param = {JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM030.SVC_KEI_UCWK_NO)), super.opeDate};
			this.executeKK_T_SVC_KEI_UCWK_KK_SELECT_094(param);
			JBSbatCommonDBInterface svc_kei_ucwk_map = db_KK_T_SVC_KEI_UCWK.selectNext();
			if(null != svc_kei_ucwk_map)
			{
				searchJkn_svcKeiNo = JBSbatStringUtil.Rtrim(svc_kei_ucwk_map.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_NO));
				super.logPrint.printDebugLog("■サービス契約内訳番号よりサービス契約番号：" + searchJkn_svcKeiNo);
			}
		}
		
		String[] whereParam_svc = {searchJkn_svcKeiNo,super.opeDate};
		this.executeKK_T_SVC_KEI_KK_SELECT_219(whereParam_svc);
		
		// 検索結果がある場合
		JBSbatCommonDBInterface outDbMap_svcKei = db_KK_T_SVC_KEI.selectNext();
		if(null != outDbMap_svcKei)
		{
			// 検索条件　サービスコード
			String searchJkn_svcCd = "";
			
			// 検索条件　料金グループコード
			String searchJkn_prcGrpCd = "";
			
			// 検索条件　紹介コード
			String searchJkn_intrCd = JBSbatStringUtil.Rtrim(outDbMap_svcKei.getString(JBSbatKK_T_SVC_KEI.INTR_CD));
			
			// 検索条件　料金コースコード
			String searchJkn_pcrsCd = "";
			
			// 検索条件　料金プランコード
			String searchJkn_pplanCd = "";
			
			super.logPrint.printDebugLog("紹介コード(KK_T_SVC_KEI_KK_SELECT_219)：" +  searchJkn_intrCd);
			
			// (b) 対象サービス契約（被紹介者・申込時点）抽出
			// サービス契約TBLを検索し、申込時点の情報を取得します。
			JBSbatCommonDBInterface outDbMap264 = this.selectSvcKei264(searchJkn_svcKeiNo);
			
			// 検索結果がない場合、レコードスキップします。
			if (null == outDbMap264)
			{
				super.logPrint.printDebugLog(
						"対象サービス契約（被紹介者・申込時点）抽出(KK_T_SVC_KEI_KK_SELECT_264)：検索結果なし");
				return null;
			}
			
			// 検索条件　申込明細番号
			String searchJkn_mskmDtlNo = JBSbatStringUtil.Rtrim(
					outDbMap264.getString(JBSbatKK_T_SVC_KEI.MSKM_DTL_NO));
			
			// 検索条件　異動区分
			String searchJkn_idodiv = JBSbatStringUtil.Rtrim(outDbMap264.getString(JBSbatKK_T_SVC_KEI.IDO_DIV));
			
			super.logPrint.printDebugLog("申込明細番号(KK_T_SVC_KEI_KK_SELECT_264)：" + searchJkn_mskmDtlNo);
			super.logPrint.printDebugLog("異動区分(KK_T_SVC_KEI_KK_SELECT_264)    ：" + searchJkn_idodiv);
			
			//紹介者SYSID
			String sysid = "";
			//紹介者サービス契約番号
			String svcKeiNo = "";
			//データ抽出項目コード
			String dchskmCd = "";
			// お客様名
			String custNm = "";
			
			//(d). 割引サービス契約スキーマ検索
			super.logPrint.printDebugLog("割引サービスコード検索　運用日：" + super.opeDate);
			super.logPrint.printDebugLog("割引サービスコード検索　被紹介者サービス契約番号：" + searchJkn_svcKeiNo);
			
			//検索パラメータ設定
			String[] wribWhereParam = {super.opeDate, searchJkn_svcKeiNo};
			this.executeKK_T_WRIB_SVC_KEI_KK_SELECT_048(wribWhereParam);
		
			// 割引サービスコード検索結果(1件想定)
			JBSbatCommonDBInterface wribSvcCdMap = db_KK_T_WRIB_SVC_KEI.selectNext();
			if (null == wribSvcCdMap) 
			{
				//エラーデータ出力処理はなし
				super.logPrint.printDebugLog("割引サービスコード検索結果なし");
				return null;
			}
			
			//割引サービスコード
			String wribSvcCd = JBSbatStringUtil.Rtrim(wribSvcCdMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_CD));
			//表示用キャンペーンコード
			String dspCampaignCd = JBSbatStringUtil.Rtrim(wribSvcCdMap.getString(JBSbatKK_M_WRIB_SVC.DSP_CAMPAIGN_CD));
			
			//(a) 紹介スキーマ検索
			String[] whereParam_intr = {searchJkn_intrCd};
			
			JBSbatCommonDBInterface outDbMap_intr = null;
			outDbMap_intr = executeKK_T_INTR_PKSELECT(whereParam_intr);
			
			// 検索結果がある場合
			if(null != outDbMap_intr)
			{
				// 紹介者SYSID
				sysid = JBSbatStringUtil.Rtrim(outDbMap_intr.getString(JBSbatKK_T_INTR.SYSID));
				// 紹介者サービス契約番号
				svcKeiNo = JBSbatStringUtil.Rtrim(outDbMap_intr.getString(JBSbatKK_T_INTR.SVC_KEI_NO));
				
				super.logPrint.printDebugLog("SYSID(紹介スキーマ検索)           ：" + sysid);
				super.logPrint.printDebugLog("サービス契約番号(紹介スキーマ検索)：" + svcKeiNo);
				
			}
			else
			{
				outMapEdit(outMap, sysid, searchJkn_intrCd, searchJkn_mskmDtlNo,
				searchJkn_svcKeiNo, searchJkn_pcrsCd, searchJkn_pplanCd, svcKeiNo, ERR_RSN_NON_INTR_CD, dspCampaignCd);
				return outMap;
			}
			
///////////////////////// 20140106 OM-2013-0004754対応  削除開始 /////////////////////////
//			//(b) お客様スキーマ検索
//			custNm = this.getCustNm(sysid);
//			
//			// 検索結果なしの場合
//			if ("".equals(custNm))
//			{
//				outMapEdit(outItem, num++, sysid, searchJkn_intrCd, searchJkn_mskmDtlNo,
//						searchJkn_svcKeiNo, searchJkn_pcrsCd, searchJkn_pplanCd, svcKeiNo, ERR_RSN_SHOKAISHA_MIADD);
//				
//				super.logPrint.printDebugLog("お客様名(お客様スキーマ検索)結果なし");
//				return;
//			}
//			
//			super.logPrint.printDebugLog("お客様名(お客様スキーマ検索)：" +  custNm);
///////////////////////// 20140106 OM-2013-0004754対応  削除終了 /////////////////////////
			
			// (c) サービス契約スキーマ検索
			// 紹介スキーマ.サービス契約番号を元にカレント情報を取得します。
			JBSbatCommonDBInterface outDbMap220 = this.selectSvcKei220(svcKeiNo);
			
			// 検索結果なしの場合、出力編集処理を行います。
			if (null == outDbMap220)
			{
				outMapEdit(outMap, sysid, searchJkn_intrCd, searchJkn_mskmDtlNo,
						searchJkn_svcKeiNo, searchJkn_pcrsCd, searchJkn_pplanCd, svcKeiNo, ERR_RSN_NON_CUST_ID, dspCampaignCd);
				super.logPrint.printDebugLog("カレント情報取得(サービス契約スキーマ検索)結果なし");
				return outMap;
			}
			// 検索条件　料金コースコード
			searchJkn_pcrsCd = JBSbatStringUtil.Rtrim(outDbMap220.getString(JBSbatKK_T_SVC_KEI.PCRS_CD));
			
			// 検索条件　料金プランコード
			searchJkn_pplanCd = JBSbatStringUtil.Rtrim(outDbMap220.getString(JBSbatKK_T_SVC_KEI.PPLAN_CD));
			
			// 検索条件　サービスコード
			searchJkn_svcCd = JBSbatStringUtil.Rtrim(outDbMap220.getString(JBSbatKK_T_SVC_KEI.SVC_CD));
			
			// 検索条件　料金グループコード
			searchJkn_prcGrpCd = JBSbatStringUtil.Rtrim(outDbMap220.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD));
			
			// 検索条件　料金コースコード
			String svcKei_pcrsCd = JBSbatStringUtil.Rtrim(outDbMap220.getString(JBSbatKK_T_SVC_KEI.PCRS_CD));
			
			// 検索条件　料金プランコード
			String svcKei_pplanCd = JBSbatStringUtil.Rtrim(outDbMap220.getString(JBSbatKK_T_SVC_KEI.PPLAN_CD));
			
			super.logPrint.printDebugLog("紹介者情報----サービスコード(KK_T_SVC_KEI_KK_SELECT_220)    ：" + searchJkn_svcCd);
			super.logPrint.printDebugLog("紹介者情報----料金グループコード(KK_T_SVC_KEI_KK_SELECT_220)：" + searchJkn_prcGrpCd);
			super.logPrint.printDebugLog("紹介者情報----料金コースコード(KK_T_SVC_KEI_KK_SELECT_220)  ：" + svcKei_pcrsCd);
			super.logPrint.printDebugLog("紹介者情報----料金プランコード(KK_T_SVC_KEI_KK_SELECT_220)  ：" + svcKei_pplanCd);
			
			//(e)(d).で取得した割引サービスコードより、データ抽出項目設定条件を検索し、データ抽出項目コードを取得する。(1件想定)
			JBSbatCommonDBInterface outDbMap002 = this.selectDchskmTgSvc002(wribSvcCd);
			
			// 検索結果なしの場合、出力編集処理を行います。
			if (null == outDbMap002)
			{
				super.logPrint.printBusinessErrorLog("EKKB0290AW", 
						new String[]{"データ抽出項目設定条件マスタにデータ抽出項目設定条件値1：" + wribSvcCd});
				throw new JBSbatBusinessError();
			}
			// 「データ抽出項目コード」
			dchskmCd = JBSbatStringUtil.Rtrim(outDbMap002.getString(JBSbatKK_M_DCHSKM_SETE_JKN.DCHSKM_CD));
			
			super.logPrint.printDebugLog("データ抽出項目コードデータ抽出項目対象サービススキーマ検索)：" +  dchskmCd);
			
			super.logPrint.printDebugLog("opeDate：" +  super.opeDate);
			super.logPrint.printDebugLog("dchskmCd：" +  dchskmCd);
			super.logPrint.printDebugLog("searchJkn_svcCd：" +  searchJkn_svcCd);
			super.logPrint.printDebugLog("searchJkn_prcGrpCd：" +  searchJkn_prcGrpCd);
			super.logPrint.printDebugLog("searchJkn_pcrsCd：" +  searchJkn_pcrsCd);
			super.logPrint.printDebugLog("searchJkn_pplanCd：" +  searchJkn_pplanCd);
			
			// (f) データ抽出項目対象サービススキーマ検索
			String[] whereParam_dchskm_tg = {super.opeDate, dchskmCd, searchJkn_svcCd,searchJkn_prcGrpCd,svcKei_pcrsCd,svcKei_pplanCd};
			
			this.executeKK_M_DCHSKM_TG_SVC_KK_SELECT_002(whereParam_dchskm_tg);
			
			JBSbatCommonDBInterface outDbMap__dchskm_tg = db_KK_M_DCHSKM_TG_SVC.selectNext();
			
			// 検索結果がない場合、出力編集処理を行います。
			if (null == outDbMap__dchskm_tg)
			{
				outMapEdit(outMap, sysid, searchJkn_intrCd, searchJkn_mskmDtlNo,
						searchJkn_svcKeiNo, searchJkn_pcrsCd, searchJkn_pplanCd, svcKeiNo, ERR_RSN_CUST_ID_CPTG, dspCampaignCd);
				super.logPrint.printDebugLog("データ抽出項目対象サービススキーマ検索結果なし");
				return outMap;
			}
			
			super.logPrint.printDebugLog("データ抽出項目対象サービススキーマ検索--->" + JBSbatStringUtil.Rtrim(outDbMap__dchskm_tg.getString(JBSbatKK_M_DCHSKM_TG_SVC.DCHSKM_CD)));
			
			// (g) データ抽出項目スキーマ検索
			String[] whereParam_dchskm = {dchskmCd,super.opeDate};
			this.executeKK_M_DCHSKM_KK_SELECT_007(whereParam_dchskm);
			// 検索結果がない場合
			JBSbatCommonDBInterface outDbMap_dchskm = db_KK_M_DCHSKM.selectNext();
			if(null == outDbMap_dchskm)
			{
				super.logPrint.printBusinessErrorLog("EKKB0290AW", 
						new String[]{"データ抽出項目マスタにデータ抽出項目コード：" + dchskmCd});
				throw new JBSbatBusinessError();
			}
			// 検索結果がある場合
			else
			{
//				String campaignCd = JBSbatStringUtil.Rtrim(outDbMap_dchskm.getString(JBSbatKK_M_DCHSKM.DSP_DCHSKM_CD));		// エラーリスト設定用
				// (h) 紹介者コードが登録されていない場合
				if(isDchskmst(searchJkn_intrCd, sysid))
				{
					// (h) データ抽出項目設定の編集、登録
					String[] setParam_dchskmst = setDchskmstInfo(sysid,dchskmCd,searchJkn_mskmDtlNo,searchJkn_idodiv,searchJkn_intrCd);
					this.executeKK_T_DCHSKMST_PKINSERT(setParam_dchskmst);

					// (i) データ抽出項目設定対象契約の編集、登録
					String[] setParam_dchskmst_tg = setDchskmstTgInfo(setParam_dchskmst[0],svcKeiNo);
					this.executeKK_T_DCHSKMST_TG_KEI_PKINSERT(setParam_dchskmst_tg);

					// ANK-4307-00-00 ADD START
					// (i-2). プレミアムクラブポイントの登録(TRANK向け)
					// データ抽出項目.データ抽出タイプコードが"60"(ダミーキャンペーン)の場合
					if ("60".equals(outDbMap_dchskm.getValue("DCHS_TYPE_CD")))
					{
						// プレミアムクラブポイント可否判定処理
						String result = premiumClubPointJudge(searchJkn_mskmDtlNo);
						if(result == RESULT_ERROR)
						{
							// エラーデータファイルを出力
							outMapEdit(outMap, sysid, searchJkn_intrCd, searchJkn_mskmDtlNo,
									searchJkn_svcKeiNo, searchJkn_pcrsCd, searchJkn_pplanCd, svcKeiNo,
									ERR_RSN_PRMCL_DAY_ERR, dspCampaignCd);
							return outMap;
						}
						
						if (RESULT_OK.equals(result))
						{
							super.logPrint.printDebugLog("プレミアムクラブポイント付与：" + sysid);
							
							// プレミアムクラブポイント付与処理
							HashMap<Object, Object> resMap = premiumClubPointRegist(sysid);
							if(resMap.containsKey("error"))
							{
								// #82591 ADD START
								super.commonItem.setErrFlg(true);
								// #82591 ADD END
								// エラーデータファイルを出力
								outMapEdit(outMap, sysid, searchJkn_intrCd, searchJkn_mskmDtlNo,
										searchJkn_svcKeiNo, searchJkn_pcrsCd, searchJkn_pplanCd, svcKeiNo,
										(String) resMap.get("error"), dspCampaignCd);
								return outMap;
							}
							
							HashMap<String, String> kksv102101sc = (HashMap<String, String>) resMap.get("KKSV102101SC");
							// 処理結果を確認
							String returnCode = (String)resMap.get("RETURN_CODE");
							// エラーフラグが立っている場合または、リターンコードが"0000"以外の場合
							if("1".equals(kksv102101sc.get("err_flg")) || !"0000".equals(returnCode))
							{
								// #82591 ADD START
								super.commonItem.setErrFlg(true);
								// #82591 ADD END
								// ログとエラーデータファイルを出力
								commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKKB2230CW);
								outMapEdit(outMap, sysid, searchJkn_intrCd, searchJkn_mskmDtlNo,
										searchJkn_svcKeiNo, searchJkn_pcrsCd, searchJkn_pplanCd, svcKeiNo,
										ERR_RSN_TRANK_LINK_ERR, dspCampaignCd);
								return outMap;
							}
						}
					}
					// ANK-4307-00-00 ADD END
				}
				else
				{
					// (h) データ抽出項目設定 紹介者SYSIDと違うSYSIDで既に登録されている場合
					if(!"".equals(sysid_dchskmst))
					{
						outMapEdit(outMap, sysid, searchJkn_intrCd, searchJkn_mskmDtlNo,
								searchJkn_svcKeiNo, searchJkn_pcrsCd, searchJkn_pplanCd, svcKeiNo, ERR_RSN_SHOKAI_CD_DBLE, dspCampaignCd);
						return outMap;
					}
				}

			}
		
		}
		
		super.logPrint.printDebugLog("createSvcStaTgInf_END");
		return null;
	}
	
	/**
	 * 紹介者コードよりデータ抽出項目設定を検索します。
	 * @param intrCd 紹介者コード
	 * @param sysid 紹介者SYSID
	 * @return boolean true:検索結果なし
	 *                  false:検索結果あり
	 * @throws Exception 
	 */	
	private boolean isDchskmst(String intrCd, String sysid) throws Exception
	{
		executeKK_T_DCHSKMST_KK_SELECT_013(new Object[]{intrCd});
		
		JBSbatCommonDBInterface dbMap = db_KK_T_DCHSKMST.selectNext();
		
		// 検索結果なし
		if(null == dbMap)
		{
			return true;
		}
		
		while (null != dbMap)
		{
			sysid_dchskmst = JBSbatStringUtil.Rtrim(dbMap.getString(JBSbatKK_T_DCHSKMST.SYSID));
			if(sysid.equals(sysid_dchskmst))
			{
				sysid_dchskmst = "";
				dbMap = db_KK_T_DCHSKMST.selectNext();
			}
			else
			{
				return false;
			}
		}
		
		return false;
	}

	/**
	 * 出力編集処理を行います。
	 * @param outMap 格納領域
	 * @param sysid 紹介者のsysid
	 * @param searchJkn_intrCd 紹介コード
	 * @param searchJkn_mskmDtlNo 申込明細番号
	 * @param svcKeiNo 紹介者のサービス契約番号
	 * @param searchJkn_pcrsCd 料金コースコード
	 * @param searchJkn_pplanCd 料金プランコード
	 * @param custNm お客様名
	 * @param errRsn エラー理由
	 * @param campaignCd
	 * @throws Exception 
	 */
	private void outMapEdit(JBSbatServiceInterfaceMap outMap, String shokaisha_sysid, String searchJkn_intrCd,
			String searchJkn_mskmDtlNo, String svcKeiNo, String searchJkn_pcrsCd, String searchJkn_pplanCd,
			String shokaisha_svcKeiNo, String errRsn, String campaignCd) throws Exception
	{
		super.logPrint.printDebugLog("outMapEdit_START");
		
		// 申込年月日
		String mskmYmd = "";
		// 申込書明細番号
		String mskmshoDtlNo = "";
		// 料金プラン名
		String pplanDivNm = "";
		
		// 紹介者ＳＹＳＩＤ
		outMap.setString(JBSbatKKIFE219.SHOKAISHA_SYSID, shokaisha_sysid);
		
		// 紹介者サービス契約番号
		outMap.setString(JBSbatKKIFE219.SHOKAISHA_SVC_KEI_NO, shokaisha_svcKeiNo);
		
		// エラー理由
		outMap.setString(JBSbatKKIFE219.ERR_RSN, errRsn);
		
//		//A連絡先スキーマ検索
//		if(!"".equals(shokaisha_sysid))
//		{
//			String[] whereParam_rrks = {shokaisha_sysid,super.opeDate};
//			this.executeCK_T_RRKS_KK_SELECT_005(whereParam_rrks);
//			// 検索結果がある場合
//			JBSbatCommonDBInterface outDbMap_rrks = db_CK_T_RRKS.selectNext();
//			if(null != outDbMap_rrks)
//			{
//				// 電話番号
//				telno = JBSbatStringUtil.Rtrim(outDbMap_rrks.getString(JBSbatCK_T_RRKS.TELNO));
//			}
//		}
//		
//		// 連絡先電話番号
//		outMap.setString(JBSbatKKIFE219.TELNO, telno);
		
		// 紹介コード
		outMap.setString(JBSbatKKIFE219.INTR_CD, searchJkn_intrCd);
		
		//B申込明細スキーマ検索
		if(!"".equals(searchJkn_mskmDtlNo))
		{
			String[] whereParam_mskm_dtl = {searchJkn_mskmDtlNo};
			this.executeKK_T_MSKM_DTL_KK_SELECT_022(whereParam_mskm_dtl);
			// 検索結果がある場合
			JBSbatCommonDBInterface outDbMap_mskm_dtl = db_KK_T_MSKM_DTL.selectNext();
			if(null != outDbMap_mskm_dtl)
			{
				// 申込書明細番号
				mskmshoDtlNo = JBSbatStringUtil.Rtrim(outDbMap_mskm_dtl.getString(JBSbatKK_T_MSKM_DTL.MSKMSHO_DTL_NO));
				// 申込年月日
				mskmYmd = JBSbatStringUtil.Rtrim(outDbMap_mskm_dtl.getString(JBSbatKK_T_MSKM_DTL.MSKM_YMD));
			}
		}
		
		// 申込日をYYYY/MM/DD形式に編集します。
		String mskmYmdEdit = JPCUtilCommon.formatDate(mskmYmd);
		super.logPrint.printDebugLog("mskmYmd    ：" + mskmYmd);
		super.logPrint.printDebugLog("mskmYmdEdit：" + mskmYmdEdit);
		
		// 申込日
		outMap.setString(JBSbatKKIFE219.MSKM_YMD, mskmYmdEdit);
		
		// 申込番号
		outMap.setString(JBSbatKKIFE219.MSKMSHO_DTL_NO, mskmshoDtlNo);
		
		// お客様ＩＤ
		outMap.setString(JBSbatKKIFE219.SVC_KEI_NO, svcKeiNo);
		
		//C料金プランスキーマ検索
		if(!"".equals(searchJkn_pcrsCd) && !"".equals(searchJkn_pplanCd))
		{
			String[] whereParam_pplan = {searchJkn_pcrsCd,searchJkn_pplanCd};
			
			JBSbatCommonDBInterface outDbMap_pplan = null;
			// 検索結果がある場合
			outDbMap_pplan = executeKK_M_PPLAN_PKSELECT(whereParam_pplan);
			if(null != outDbMap_pplan)
			{
				//料金プラン適用開始年月日
				String pplanTstaYmd = JBSbatStringUtil.Rtrim(outDbMap_pplan.getString(JBSbatKK_M_PPLAN.PPLAN_TSTAYMD));
				//料金プラン適用終了年月日
				String pplanTendYmd = JBSbatStringUtil.Rtrim(outDbMap_pplan.getString(JBSbatKK_M_PPLAN.PPLAN_TENDYMD));
				//料金プラン適用開始年月日 <= 運用日 かつ　料金プラン適用終了年月日 >= 運用日
				if((super.opeDate.compareTo(pplanTstaYmd) >= 0) && (super.opeDate.compareTo(pplanTendYmd) <= 0))
				{
					// 料金プラン名
					pplanDivNm = JBSbatStringUtil.Rtrim(outDbMap_pplan.getString(JBSbatKK_M_PPLAN.PPLAN_NM));
					
					//15文字より多い場合切り捨て
					if(pplanDivNm.length() > 15)
					{
						pplanDivNm = pplanDivNm.substring(0, 15);
					}
				}
			}
		}
		
		// 紹介者料金プラン名
		outMap.setString(JBSbatKKIFE219.SHOKAISHA_PPLAN_DIVNM, pplanDivNm);
		
		// キャンペーンコード
		outMap.setString(JBSbatKKIFE219.CAMPAIGN_CD, campaignCd);
		
		// ファイルに出力する
		outMap.setOutFlg(true);

		super.logPrint.printDebugLog("outMapEdit_END");
	}

	
	/**
	 * SQLKEY(KK_SELECT_220)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_220(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_220);
	}	
	
	
	/**
	 * 
	 * テーブルへの登録情報作成を行います。
	 * 
	 * @param svcMap データ抽出項目設定テーブル情報
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private String[] setDchskmstInfo(String sysid,String dchskmCd,String searchJkn_mskmDtlNo,String searchJkn_idodiv,String searchJkn_intrCd) throws Exception
	{
		// システム日付を取得
		String sysDate = JCCBatCommon.getSysDateTimeStamp();
		//シーケンス採番
		String seq_no = JBSbatStringUtil.padNumFormString(JBSbatOracleSeqUtil.getNextSeq(super.commonItem.getConnection(), "SEQ_DCHSKMST_NO"), 12);
		
		String[] setParam = new String[31];
		
		// データ抽出項目設定の登録用。
		setParam[0]  = seq_no;
		setParam[1]  = sysDate;
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		setParam[2]  = "010";
		setParam[2]  = JBSbatKKConst.CD00808_DCHSKMST_STAT_010;
		// ++++++++++ v22.00.00 変更終了 ++++++++++
		setParam[3]  = "";
		setParam[4]  = sysid;
		setParam[5]  = dchskmCd;
		setParam[6]  = "0";						// 抽出回数
		setParam[7]  = searchJkn_mskmDtlNo;
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		setParam[8]  = "1";
		setParam[8]  = JBSbatKKConst.CD00403_APLY_JUN_1;
		// ++++++++++ v22.00.00 変更終了 ++++++++++
		setParam[9]  = super.opeDate;
		setParam[10] = super.opeDate;
		setParam[11]  = "20991231";
		setParam[12]  = searchJkn_idodiv;
		setParam[13]  = "";
		setParam[14]  = searchJkn_intrCd;
		setParam[15]  = "";
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		setParam[16]  = "1";
		setParam[16]  = JBSbatKKConst.CD00874_DCHSKMST_ADD_OPTY_CD_1;
		// ++++++++++ v22.00.00 変更終了 ++++++++++
		setParam[17]  = "";
		setParam[18]  = sysDate;
		setParam[19]  = super.batchUserId;
		setParam[20]  = sysDate;
		setParam[21]  = super.batchUserId;
		setParam[22]  = "";
		setParam[23]  = "";
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		setParam[24] = "0";
		setParam[24] = JBSbatKKConst.MK_FLG_YK;
		// ++++++++++ v22.00.00 変更終了 ++++++++++
		setParam[25]  = "";
		setParam[26]  = "";
		setParam[27]  = "";
		setParam[28]  = "";
		setParam[29]  = "";
		setParam[30]  = "";
		
		return setParam;
	}
	
	/**
	 * 
	 * テーブルへの登録情報作成を行います。
	 * 
	 * @param svcMap データ抽出項目設定対象契約テーブル情報
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private String[] setDchskmstTgInfo(String seq_no_dchkmst,String svcKeiNo) throws Exception
	{
		// システム日付を取得
		String sysDate = JCCBatCommon.getSysDateTimeStamp();
		//シーケンス採番
		String seq_no_tg_kei_no = JBSbatStringUtil.padNumFormString(JBSbatOracleSeqUtil.getNextSeq(super.commonItem.getConnection(), "SEQ_DCHSKMST_TG_KEI_NO"), 12);
		
		String[] setParam = new String[27];
		
		// データ抽出項目設定対象契約の登録用。
		setParam[0]  = seq_no_dchkmst;
		setParam[1]  = seq_no_tg_kei_no;
		setParam[2]  = sysDate;
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		setParam[3]  = "01";
		setParam[3]  = JBSbatKKConst.OYA_KEI_SKBT_CD_SVC_KEI;
		// ++++++++++ v22.00.00 変更終了 ++++++++++
		setParam[4]  = svcKeiNo;
		setParam[5]  = "";
		setParam[6]  = "";
		setParam[7]  = "";
		setParam[8]  = "";
		setParam[9]  = "";
		setParam[10] = "";
		setParam[11]  = super.opeDate;
		setParam[12]  = super.opeDate;
		setParam[13]  = "20991231";
		setParam[14]  = sysDate;
		setParam[15]  = super.batchUserId;
		setParam[16]  = sysDate;
		setParam[17]  = super.batchUserId;
		setParam[18]  = "";
		setParam[19]  = "";
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		setParam[20] = "0";
		setParam[20] = JBSbatKKConst.MK_FLG_YK;
		// ++++++++++ v22.00.00 変更終了 ++++++++++
		setParam[21]  = "";
		setParam[22]  = "";
		setParam[23]  = "";
		setParam[24]  = "";
		setParam[25]  = "";
		setParam[26]  = "";
		
		return setParam;
	}
	
	/**
	 * お客様TBLの検索を行い、お客様名を取得します。(KK_SELECT_046)
	 * <br>
	 * @param sysid SYSID
	 * @return String お客様名
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private String getCustNm(String sysid) throws Exception
	{
		super.logPrint.printDebugLog("getCustNm_START");
		
		String custNm = "";
		
		String[] whereParam_cust = {sysid,super.opeDate};
		this.executeCK_T_CUST_KK_SELECT_046(whereParam_cust);
		
		JBSbatCommonDBInterface outDbMap_cust = db_CK_T_CUST.selectNext();
		
		// 検索結果がある場合
		if (null != outDbMap_cust)
		{
			// お客様名
			custNm = JBSbatStringUtil.Rtrim(outDbMap_cust.getString(JBSbatCK_T_CUST.CUST_NM));
			
			// 15文字より多い場合切り捨て
			if (custNm.length() > 15)
			{
				custNm = custNm.substring(0, 15);
			}
		}
		
		super.logPrint.printDebugLog("getCustNm_END");
		return custNm;
	}
	
	/**
	 * サービス契約TBLの検索を行い、被紹介者・申込時点情報を取得します。(KK_SELECT_264)
	 * <br>
	 * @param searchJkn_svcKeiNo サービス契約番号
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectSvcKei264(String searchJkn_svcKeiNo) throws Exception
	{
		super.logPrint.printDebugLog("selectSvcKei264_START");
		
		// サービス契約TBLを検索して被紹介者・申込時点情報を取得します。
		// サービス契約TBL検索条件項目を設定します。
		Object[] paramList = new Object[2];
		paramList[0] = searchJkn_svcKeiNo;		// サービス契約番号
		paramList[1] = super.opeDate;			// 予約適用年月日
		
		super.logPrint.printDebugLog("paramList[0]：" + paramList[0]);
		super.logPrint.printDebugLog("paramList[1]：" + paramList[1]);
		
		// サービス契約情報検索処理を実行します。
		executeKK_T_SVC_KEI_KK_SELECT_264(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap264 = db_KK_T_SVC_KEI.selectNext();
		
		super.logPrint.printDebugLog("selectSvcKei264_END");
		
		return outDbMap264;
	}
	
	/**
	 * サービス契約TBLの検索を行い、カレント情報を取得します。(KK_SELECT_220)
	 * <br>
	 * @param svcKeino サービス契約番号
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectSvcKei220(String svcKeino) throws Exception
	{
		super.logPrint.printDebugLog("selectSvcKei220_START");
		
		// サービス契約TBLを検索してカレント情報情報を取得します。
		// サービス契約TBL検索条件項目を設定します。
		Object[] paramList = new Object[2];
		paramList[0] = svcKeino;			// サービス契約番号
		paramList[1] = super.opeDate;		// 予約適用年月日
		
		super.logPrint.printDebugLog("paramList[0]：" + paramList[0]);
		super.logPrint.printDebugLog("paramList[1]：" + paramList[1]);
		
		// サービス契約情報検索処理を実行します。
		executeKK_T_SVC_KEI_KK_SELECT_220(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap220 = db_KK_T_SVC_KEI.selectNext();
		
		super.logPrint.printDebugLog("selectSvcKei220_END");
		
		return outDbMap220;
	}
	
	/**
	 * データ抽出項目設定条件TBLの検索を行い、「データ抽出項目コード」を取得します。(KK_SELECT_002)
	 * <br>
	 * @param wribSvcCd 割引サービスコード
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectDchskmTgSvc002(String wribSvcCd) throws Exception
	{
		super.logPrint.printDebugLog("selectDchskmTgSvc002_START");
		
		// データ抽出項目設定条件TBLを検索して「データ抽出項目コード」を取得します。
		// データ抽出項目設定条件TBL検索条件項目を設定します。
		Object[] paramList = new Object[1];
		paramList[0] = wribSvcCd;			// 割引サービスコード
		
		super.logPrint.printDebugLog("paramList[0]：" + paramList[0]);
		
		// データ抽出項目設定条件情報検索処理を実行します。
		executeKK_M_DCHSKM_SETE_JKN_KK_SELECT_002(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap002 = db_KK_M_DCHSKM_SETE_JKN.selectNext();
		
		super.logPrint.printDebugLog("selectDchskmTgSvc002_END");
		
		return outDbMap002;
	}
	
	/**
	 * ソート処理後のデータファイルを出力します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.抽出データ読み込み処理。
	 * 2.データソート処理。
	 * 3.ソート後データ出力処理。
	 * </pre>
	 * <p>
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private JBSbatOutputItem outFileSort(JBSbatOutputItem out_bean) throws Exception
	{
		// ソート用データリスト
		ArrayList<HashMap<String, Comparable>> sortList = new ArrayList<HashMap<String, Comparable>>();
		
		// ソート対象データを設定
		for (int i = 0 ; i < mapList.size() ; i++)
		{
			HashMap<String, Comparable> dataMap = new HashMap<String, Comparable>();
			
			JBSbatServiceInterfaceMap map = (JBSbatServiceInterfaceMap)mapList.get(i);
			dataMap.put(JBSbatKKIFE219.SHOKAISHA_SYSID, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFE219.SHOKAISHA_SYSID)));		// 紹介者SYSID
			dataMap.put(JBSbatKKIFE219.SHOKAISHA_SVC_KEI_NO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFE219.SHOKAISHA_SVC_KEI_NO)));	// 紹介者お客さまＩＤ
			dataMap.put(JBSbatKKIFE219.SHOKAISHA_PPLAN_DIVNM, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFE219.SHOKAISHA_PPLAN_DIVNM)));	// 紹介者料金コース
			dataMap.put(JBSbatKKIFE219.CAMPAIGN_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFE219.CAMPAIGN_CD)));				// キャンペーンコード
			dataMap.put(JBSbatKKIFE219.INTR_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFE219.INTR_CD)));						// 紹介コード
			dataMap.put(JBSbatKKIFE219.MSKM_YMD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFE219.MSKM_YMD)));					// 被紹介者申込日
			dataMap.put(JBSbatKKIFE219.MSKMSHO_DTL_NO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFE219.MSKMSHO_DTL_NO)));		// 被紹介者申込番号
			dataMap.put(JBSbatKKIFE219.SVC_KEI_NO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFE219.SVC_KEI_NO)));				// 被紹介者お客様ＩＤ
			dataMap.put(JBSbatKKIFE219.ERR_RSN, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFE219.ERR_RSN)));						// エラー理由
			
			sortList.add(dataMap);
		}
		
		// ソート処理
		Collections.sort(sortList, new Comparator<Object>()
		{
			/**
			 * ソート処理
			 * @param arg0
			 * @param arg1
			 * @return int
			 */
			public int compare(Object arg0, Object arg1)
			{
				String[] sort_keys = {};
				sort_keys = SORT_KEYS;
				
				for (String key : sort_keys)
				{
					HashMap<String, Comparable> o1 = (HashMap<String, Comparable>)arg0;
					HashMap<String, Comparable> o2 = (HashMap<String, Comparable>)arg1;
					
					Comparable c1 = o1.get(key);
					Comparable c2 = o2.get(key);
					int check = c1.compareTo(c2);
					if (0 != check)
					{
						return check;
					}
				}
				return 0;
			}
		});
		
		// 出力ファイル用にデータを設定
		for (int i = 0 ; i < sortList.size() ; i++)
		{
			HashMap<String, Comparable> dataMap = sortList.get(i);
			//出力対象項目格納領域作成
			JBSbatServiceInterfaceMap out_map = new JBSbatServiceInterfaceMap();
			out_map.setString(JBSbatKKIFE219.NUM, String.valueOf(i + 1));												// 項番
			out_map.setString(JBSbatKKIFE219.SHOKAISHA_SYSID, dataMap.get(JBSbatKKIFE219.SHOKAISHA_SYSID));				// 紹介者SYSID
			out_map.setString(JBSbatKKIFE219.SHOKAISHA_SVC_KEI_NO, dataMap.get(JBSbatKKIFE219.SHOKAISHA_SVC_KEI_NO));	// 紹介者お客さまＩＤ
			out_map.setString(JBSbatKKIFE219.SHOKAISHA_PPLAN_DIVNM, dataMap.get(JBSbatKKIFE219.SHOKAISHA_PPLAN_DIVNM));	// 紹介者料金コース
			out_map.setString(JBSbatKKIFE219.CAMPAIGN_CD, dataMap.get(JBSbatKKIFE219.CAMPAIGN_CD));						// キャンペーンコード
			out_map.setString(JBSbatKKIFE219.INTR_CD, dataMap.get(JBSbatKKIFE219.INTR_CD));								// 紹介コード
			out_map.setString(JBSbatKKIFE219.MSKM_YMD, dataMap.get(JBSbatKKIFE219.MSKM_YMD));							// 申込日
			out_map.setString(JBSbatKKIFE219.MSKMSHO_DTL_NO, dataMap.get(JBSbatKKIFE219.MSKMSHO_DTL_NO));				// 申込番号
			out_map.setString(JBSbatKKIFE219.SVC_KEI_NO, dataMap.get(JBSbatKKIFE219.SVC_KEI_NO));						// お客様ＩＤ
			out_map.setString(JBSbatKKIFE219.ERR_RSN, dataMap.get(JBSbatKKIFE219.ERR_RSN));								// エラー理由
			
			out_map.setOutFlg(true);
			out_bean.addOutMapList(out_map);
		}
		return out_bean;
	}
	// ANK-4307-00-00 ADD START
	/**
	 * プレミアムクラブポイントを登録するかの可否判定を行う。
	 * 
	 * @param mskmDtlNo 申込明細番号
	 * @return 判定結果
	 * @throws Throwable 
	 */
	private String premiumClubPointJudge(String mskmDtlNo) throws Exception
	{
		// プレミアムクラブポイント可否判定変数初期化
		String result = RESULT_NG;
		
		// プレミアムクラブリニューアルの日付を業務パラメータから取得する。
		JBSbatCommonDBInterface workParamKnriMap1 = selectZmWorkParamKnri016(KK_PRCL_RNAL_YMD);
		if(workParamKnriMap1 == null || BLANK.equals(workParamKnriMap1))
		{
			// ログ出力
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKKB2240CW);
			return RESULT_ERROR;
		}
		String premiumYmd = workParamKnriMap1.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE);
		
		// 被紹介者の新規申込時の申込年月日を取得
		String[] mskmDtlNoArr = {mskmDtlNo};
		this.executeKK_T_MSKM_DTL_KK_SELECT_024(mskmDtlNoArr);
		String mskmYmd = BLANK;
		
		// 検索結果がある場合
		JBSbatCommonDBInterface outDbMap_mskm_dtl = db_KK_T_MSKM_DTL.selectNext();
		if(null != outDbMap_mskm_dtl)
		{
			// 申込年月日を取得
			mskmYmd = JBSbatStringUtil.Rtrim(outDbMap_mskm_dtl.getString(JBSbatKK_T_MSKM_DTL.MSKM_YMD));
		} 
		else 
		{
			// 取得できない場合、NGで返却
			return result;
		}
		// 申込年月日判定
		if (mskmYmd != null && !mskmYmd.isEmpty())
		{
			// プレミアムリニューアル年月日以降の場合
			if (premiumYmd.compareTo(mskmYmd) <= 0)
			{
				// プレミアムクラブポイント付与対象とする。
				result = RESULT_OK;
			}
		}
		return result;
	}
	
	/**
	 * プレミアムクラブポイント登録(TRANK)を行う。
	 * 
	 * @param sysid SYSID
	 * @return レスポンス結果を格納したマップ
	 * @exception 何らかのエラーが発生した場合
	 */
	private HashMap<Object, Object> premiumClubPointRegist(String sysid) throws Exception
	{
		// サービスの入力パラメータMap
		HashMap<String, Object> reqMap = new HashMap<String, Object>();
		// プレミアムクラブポイント登録SCの全パラメータMap
		HashMap<String, Object> kksv102101map = new HashMap<String, Object>();
		// プレミアムクラブポイント登録SCのパラメータMap
		reqMap.put(SC_TITLE_KKSV102101SC, kksv102101map);
		// サービスの処理結果が格納されるMAP
		HashMap<Object, Object> resMap = new HashMap<Object, Object>();
		
		// 機能コード(サービスIF)
		kksv102101map.put("func_code", "1");
		// 機能コード(TRANK)
		kksv102101map.put("func_code_trank", "1");
		// SYSID
		kksv102101map.put("sysid", sysid);
		// 適用開始日
		kksv102101map.put("tekiyo_st_ymd", super.opeDate);
		// 進呈区分
		kksv102101map.put("present_kbn", "30");
		// 進呈eoポイント数(業務パラメータから設定値を取得する)
		String gmParamId = KK_INTR_PRPOINT;
		JBSbatCommonDBInterface workParamKnriMap1 = selectZmWorkParamKnri016(gmParamId);
		// 取得できない場合、マップをerrorを設定し、呼び元でログ出力
		if(workParamKnriMap1 == null || BLANK.equals(workParamKnriMap1))
		{
			resMap.put("error", ERR_RSN_PRMCL_POINT_ERR);
			// ログ出力
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKKB2250CW);
			return resMap;
		}
		String presentPtSu = workParamKnriMap1.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE);
		kksv102101map.put("present_pt_su", presentPtSu);
		// SNS種別コード
		kksv102101map.put("sns_sbt_cd", null);
		// 施策申請枝番
		kksv102101map.put("sisk_sins_eda_no", null);
		
		// ユースケースIDを格納するMAP
		HashMap<String, Object>  req = new HashMap<String, Object>();
		req.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, USECASE_ID);
		req.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, OPERATION_ID);
		
		// サービス呼び出し
		JCCBatchEsbInterface.invokeService(super.commonItem, req, reqMap, resMap);
		
		// レスポンスを返却
		return resMap;
	}
	
	/**
	 * 業務パラメータ管理TBLの検索を行い、「データ抽出項目コード」を取得します。(KK_SELECT_002)
	 * <br>
	 * @param gmParamId 業務パラメータID
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectZmWorkParamKnri016(String gmParamId) throws Exception
	{
		super.logPrint.printDebugLog("selectZmWorkParamKnri016_START");
		
		// 業務パラメータ管理条件TBLを検索して「業務パラメータ設定値」を取得します。
		// 業務パラメータ管理設定条件TBL検索条件項目を設定します。
		Object[] paramList = new Object[3];
		paramList[0] = gmParamId;					// 業務パラメータID
		paramList[1] = super.opeDate;				// 適用開始年月日
		paramList[2] = super.opeDate;				// 適用終了年月日
		
		super.logPrint.printDebugLog("paramList[0]：" + paramList[0]);
		super.logPrint.printDebugLog("paramList[1]：" + paramList[1]);
		super.logPrint.printDebugLog("paramList[2]：" + paramList[2]);
		
		// データ抽出項目設定条件情報検索処理を実行します。
		executeZM_M_WORK_PARAM_KNRI_KK_SELECT_016(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap016 = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		
		super.logPrint.printDebugLog("selectZmWorkParamKnri016_END");
		
		return outDbMap016;
	}
	
	/**
	 * SQLKEY(KK_SELECT_024)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_KK_SELECT_016(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_KK_SELECT_016);
	}
	

	/**
	 * SQLKEY(KK_SELECT_022)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	申込明細番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MSKM_DTL_KK_SELECT_024(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM_DTL.selectBySqlDefine(paramList, KK_T_MSKM_DTL_KK_SELECT_024);
	}
	// ANK-4307-00-00 ADD END
}
