/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCKoldFlgRenkeiTrgtChsht
*	ソースファイル名	：JBSbatCKoldFlgRenkeiTrgtChsht.java
*	作成者				：富士通　
*	作成日				：2011年05月26日
*＜機能概要＞
*　年齢フラグ連携対象抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/05/26   富士通		新規作成
*	v20.00.00	2015/12/24   FJ)藤本	【OM-2015-0003276】性能改善_ＣＫ年齢フラグ送信/年齢フラグ送信Ｄ/EO11B0110J
*********************************************************************/
package eo.business.service;

import static eo.common.constant.JCKStrConst.*;

import java.util.ArrayList;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCKBatCommon;
import eo.business.util.file.JBSbatCKIFM903;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.db.JBSbatSQLAccess;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCKoldFlgRenkeiTrgtChsht extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(お客様)*/
	private static final String D_TBL_NAME_CK_T_CUST = "CK_T_CUST";

	/** テーブル(指示書)*/
	private static final String D_TBL_NAME_CK_T_SJISHO = "CK_T_SJISHO";

	/** SQL定義キー(CK_SELECT_903)*/
	private static final String CK_T_CUST_CK_SELECT_903 = "CK_SELECT_903";

	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;

	/** テーブルアクセスクラス(指示書)*/
	private JBSbatSQLAccess db_CK_T_SJISHO = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 指示書番号*/
	private static final String SEQ_SJISHO = "SEQ_SJISHO_NO";
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CK_T_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_CK_T_SJISHO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_SJISHO);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		//運用日付を取得する。
		String opeDate = commonItem.getOpeDate();

		// 本日誕生日の会員情報を取得する
		List<JBSbatCommonDBInterface> custList = getTargetCustList(opeDate);

		// 対象会員の情報をファイル出力用リストに追加する
		ArrayList<JBSbatServiceInterfaceMap> outMapList = new ArrayList<JBSbatServiceInterfaceMap>();
		for (JBSbatCommonDBInterface mapCust : custList)
		{
			JBSbatServiceInterfaceMap sifMap = convertRecord(mapCust);

			// 年齢フラグを設定する。
			String nenflag = getNenflag((String)sifMap.get("CUST_BIRTHD"), opeDate);

			// 指示書登録（お客様情報）
			entryShijishoForAgeFlg(sifMap, nenflag);

			outMapList.add(sifMap);
		}

		// ファイル出力用リストを返却用パラメータにセットする
		JBSbatOutputItem outMap = new JBSbatOutputItem();
		outMap.setOutMapList(outMapList);

		return outMap;
		/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CK_T_CUST.close();
		db_CK_T_SJISHO.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(CK_SELECT_903)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	21歳誕生日(通年用)
	 *		 	20歳誕生日(通年用)
	 *		 	18歳誕生日(通年用)
	 *		 	15歳誕生日(通年用)
	 *		 	12歳誕生日(通年用)
	 *		 	21歳誕生日(閏年用)
	 *		 	20歳誕生日(閏年用)
	 *		 	18歳誕生日(閏年用)
	 *		 	15歳誕生日(閏年用)
	 *		 	12歳誕生日(閏年用)
	 *		 	運用年月日
	 *		 	標準コンテンツ同意の料金コースコード
	 *		 	運用年月日
	 *		 	標準コンテンツ同意の料金コースコード
	 *		 	運用年月日
	 *		 	21歳誕生日(通年用)
	 *		 	20歳誕生日(通年用)
	 *		 	18歳誕生日(通年用)
	 *		 	15歳誕生日(閏年用)
	 *		 	12歳誕生日(通年用)
	 *		 	21歳誕生日(閏年用)
	 *		 	20歳誕生日(閏年用)
	 *		 	18歳誕生日(閏年用)
	 *		 	15歳誕生日(閏年用)
	 *		 	12歳誕生日(閏年用)
	 *		 	運用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_CUST_CK_SELECT_903(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());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());
		paramList.setValue(param[9].toString());
		paramList.setValue(param[10].toString());
		paramList.setValue(param[11].toString());
		paramList.setValue(param[12].toString());
		paramList.setValue(param[13].toString());
		paramList.setValue(param[14].toString());
		paramList.setValue(param[15].toString());
		paramList.setValue(param[16].toString());
		paramList.setValue(param[17].toString());
		paramList.setValue(param[18].toString());
		paramList.setValue(param[19].toString());
		paramList.setValue(param[20].toString());
		paramList.setValue(param[21].toString());
		paramList.setValue(param[22].toString());
		paramList.setValue(param[23].toString());
		paramList.setValue(param[24].toString());
		paramList.setValue(param[25].toString());
		paramList.setValue(param[26].toString());
		paramList.setValue(param[27].toString());
		paramList.setValue(param[28].toString());

		// DBアクセスを実行します
		db_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_CK_SELECT_903);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	指示書番号				SJISHO_NO
	 *		 	指示書内容枝番				SJISHO_NAIYO_SEQ
	 *		 	処理コード				TRN_CD
	 *		 	対象テーブルＩＤ				TRGT_TABLE_ID
	 *		 	エラー回数				ERR_CNT
	 *		 	処理対象ＳＹＳＩＤ				TRAN_TRGT_SYSID
	 *		 	結果フラグ				RSLT_FLG
	 *		 	パラメータ有効数				PARAMETER_YK_CNT
	 *		 	パラメータ１				PARAMETER_1
	 *		 	パラメータ２				PARAMETER_2
	 *		 	パラメータ３				PARAMETER_3
	 *		 	パラメータ４				PARAMETER_4
	 *		 	パラメータ５				PARAMETER_5
	 *		 	パラメータ６				PARAMETER_6
	 *		 	パラメータ７				PARAMETER_7
	 *		 	パラメータ８				PARAMETER_8
	 *		 	パラメータ９				PARAMETER_9
	 *		 	パラメータ１０				PARAMETER_10
	 *		 	パラメータ１１				PARAMETER_11
	 *		 	パラメータ１２				PARAMETER_12
	 *		 	パラメータ１３				PARAMETER_13
	 *		 	パラメータ１４				PARAMETER_14
	 *		 	パラメータ１５				PARAMETER_15
	 *		 	パラメータ１６				PARAMETER_16
	 *		 	パラメータ１７				PARAMETER_17
	 *		 	パラメータ１８				PARAMETER_18
	 *		 	パラメータ１９				PARAMETER_19
	 *		 	パラメータ２０				PARAMETER_20
	 *		 	パラメータ２１				PARAMETER_21
	 *		 	パラメータ２２				PARAMETER_22
	 *		 	パラメータ２３				PARAMETER_23
	 *		 	パラメータ２４				PARAMETER_24
	 *		 	パラメータ２５				PARAMETER_25
	 *		 	パラメータ２６				PARAMETER_26
	 *		 	パラメータ２７				PARAMETER_27
	 *		 	パラメータ２８				PARAMETER_28
	 *		 	パラメータ２９				PARAMETER_29
	 *		 	パラメータ３０				PARAMETER_30
	 *		 	パラメータ３１				PARAMETER_31
	 *		 	パラメータ３２				PARAMETER_32
	 *		 	パラメータ３３				PARAMETER_33
	 *		 	パラメータ３４				PARAMETER_34
	 *		 	パラメータ３５				PARAMETER_35
	 *		 	パラメータ３６				PARAMETER_36
	 *		 	パラメータ３７				PARAMETER_37
	 *		 	パラメータ３８				PARAMETER_38
	 *		 	パラメータ３９				PARAMETER_39
	 *		 	パラメータ４０				PARAMETER_40
	 *		 	パラメータ４１				PARAMETER_41
	 *		 	パラメータ４２				PARAMETER_42
	 *		 	パラメータ４３				PARAMETER_43
	 *		 	パラメータ４４				PARAMETER_44
	 *		 	パラメータ４５				PARAMETER_45
	 *		 	パラメータ４６				PARAMETER_46
	 *		 	パラメータ４７				PARAMETER_47
	 *		 	パラメータ４８				PARAMETER_48
	 *		 	パラメータ４９				PARAMETER_49
	 *		 	パラメータ５０				PARAMETER_50
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_SJISHO_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("SJISHO_NO", setParam[0]);
		setMap.setValue("SJISHO_NAIYO_SEQ", setParam[1]);
		setMap.setValue("TRN_CD", setParam[2]);
		setMap.setValue("TRGT_TABLE_ID", setParam[3]);
		setMap.setValue("ERR_CNT", setParam[4]);
		setMap.setValue("TRAN_TRGT_SYSID", setParam[5]);
		setMap.setValue("RSLT_FLG", setParam[6]);
		setMap.setValue("PARAMETER_YK_CNT", setParam[7]);
		setMap.setValue("PARAMETER_1", setParam[8]);
		setMap.setValue("PARAMETER_2", setParam[9]);
		setMap.setValue("PARAMETER_3", setParam[10]);
		setMap.setValue("PARAMETER_4", setParam[11]);
		setMap.setValue("PARAMETER_5", setParam[12]);
		setMap.setValue("PARAMETER_6", setParam[13]);
		setMap.setValue("PARAMETER_7", setParam[14]);
		setMap.setValue("PARAMETER_8", setParam[15]);
		setMap.setValue("PARAMETER_9", setParam[16]);
		setMap.setValue("PARAMETER_10", setParam[17]);
		setMap.setValue("PARAMETER_11", setParam[18]);
		setMap.setValue("PARAMETER_12", setParam[19]);
		setMap.setValue("PARAMETER_13", setParam[20]);
		setMap.setValue("PARAMETER_14", setParam[21]);
		setMap.setValue("PARAMETER_15", setParam[22]);
		setMap.setValue("PARAMETER_16", setParam[23]);
		setMap.setValue("PARAMETER_17", setParam[24]);
		setMap.setValue("PARAMETER_18", setParam[25]);
		setMap.setValue("PARAMETER_19", setParam[26]);
		setMap.setValue("PARAMETER_20", setParam[27]);
		setMap.setValue("PARAMETER_21", setParam[28]);
		setMap.setValue("PARAMETER_22", setParam[29]);
		setMap.setValue("PARAMETER_23", setParam[30]);
		setMap.setValue("PARAMETER_24", setParam[31]);
		setMap.setValue("PARAMETER_25", setParam[32]);
		setMap.setValue("PARAMETER_26", setParam[33]);
		setMap.setValue("PARAMETER_27", setParam[34]);
		setMap.setValue("PARAMETER_28", setParam[35]);
		setMap.setValue("PARAMETER_29", setParam[36]);
		setMap.setValue("PARAMETER_30", setParam[37]);
		setMap.setValue("PARAMETER_31", setParam[38]);
		setMap.setValue("PARAMETER_32", setParam[39]);
		setMap.setValue("PARAMETER_33", setParam[40]);
		setMap.setValue("PARAMETER_34", setParam[41]);
		setMap.setValue("PARAMETER_35", setParam[42]);
		setMap.setValue("PARAMETER_36", setParam[43]);
		setMap.setValue("PARAMETER_37", setParam[44]);
		setMap.setValue("PARAMETER_38", setParam[45]);
		setMap.setValue("PARAMETER_39", setParam[46]);
		setMap.setValue("PARAMETER_40", setParam[47]);
		setMap.setValue("PARAMETER_41", setParam[48]);
		setMap.setValue("PARAMETER_42", setParam[49]);
		setMap.setValue("PARAMETER_43", setParam[50]);
		setMap.setValue("PARAMETER_44", setParam[51]);
		setMap.setValue("PARAMETER_45", setParam[52]);
		setMap.setValue("PARAMETER_46", setParam[53]);
		setMap.setValue("PARAMETER_47", setParam[54]);
		setMap.setValue("PARAMETER_48", setParam[55]);
		setMap.setValue("PARAMETER_49", setParam[56]);
		setMap.setValue("PARAMETER_50", setParam[57]);
		setMap.setValue("ADD_DTM", setParam[58]);
		setMap.setValue("ADD_OPEACNT", setParam[59]);
		setMap.setValue("UPD_DTM", setParam[60]);
		setMap.setValue("UPD_OPEACNT", setParam[61]);
		setMap.setValue("DEL_DTM", setParam[62]);
		setMap.setValue("DEL_OPEACNT", setParam[63]);
		setMap.setValue("MK_FLG", setParam[64]);
	
		// DBアクセスを実行します
		db_CK_T_SJISHO.insertByPrimaryKeys(setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * @param inMap   お客様
	 * @param nenflag 年齢フラグ
	 * @throws Exception 
	 */
	private void entryShijishoForAgeFlg(JBSbatServiceInterfaceMap inMap, String nenflag) throws Exception
	{
		
		// 指示書作成（Replica）
		Object[] param = {
				getNextShijishoNo(inMap), // 指示書番号
				"000000000001",           // 指示書内容枝番
				SJISHO_TRN_CD_ADMIN_API,                    // 処理コード
				null,                    // 対象テーブルＩＤ
				0,                        // エラー回数
				inMap.get("SYSID"),       // 処理対象ＳＹＳＩＤ
				"0",                      // 結果フラグ
				19,                       // パラメータ有効数
				ADMIN_SJISHO_PARAM1_UPD_PART, // パラメータ１
				inMap.get("EOID"),        // パラメータ２(eoID)
				inMap.get("SYSID"),       // パラメータ３(メンバーSYSID)
				null,                    // パラメータ４
				null,                    // パラメータ５
				null,                    // パラメータ６
				null,                    // パラメータ７
				nenflag,                    // パラメータ８
				null,                    // パラメータ９
				null,                    // パラメータ１０
				null,                    // パラメータ１１
				null,                    // パラメータ１２
				null,                    // パラメータ１３
				null,                    // パラメータ１４
				null,                    // パラメータ１５
				null,                    // パラメータ１６
				null,                    // パラメータ１７
				null,                    // パラメータ１８
				JCCBatCommon.getSysDateTime(),// パラメータ１９
				null,                    // パラメータ２０
				null,                    // パラメータ２１
				null,                    // パラメータ２２
				null,                    // パラメータ２３
				null,                    // パラメータ２４
				null,                    // パラメータ２５
				null,                    // パラメータ２６
				null,                    // パラメータ２７
				null,                    // パラメータ２８
				null,                    // パラメータ２９
				null,                    // パラメータ３０
				null,                    // パラメータ３１
				null,                    // パラメータ３２
				null,                    // パラメータ３３
				null,                    // パラメータ３４
				null,                    // パラメータ３５
				null,                    // パラメータ３６
				null,                    // パラメータ３７
				null,                    // パラメータ３８
				null,                    // パラメータ３９
				null,                    // パラメータ４０
				null,                    // パラメータ４１
				null,                    // パラメータ４２
				null,                    // パラメータ４３
				null,                    // パラメータ４４
				null,                    // パラメータ４５
				null,                    // パラメータ４６
				null,                    // パラメータ４７
				null,                    // パラメータ４８
				null,                    // パラメータ４９
				null,                    // パラメータ５０
				getBatchDatetime(),      // 登録年月日時分秒
				getUpdOperator(),        // 登録オペレータアカウント
				getBatchDatetime(),      // 更新年月日時分秒
				getUpdOperator(),        // 更新オペレータアカウント
				null,                   // 削除年月日時分秒
				null,                   // 削除オペレータアカウント
				"0",                     // 無効フラグ
		};

		executeCK_T_SJISHO_PKINSERT(param);
	}

	/**
	 * バッチ日時(17桁)を取得する
	 * @return バッチ日時
	 * @throws Exception
	 */
	private String getBatchDatetime() throws Exception
	{
		return JCCBatCommon.getSysDateTimeStamp();
	}
	
	/**
	 * 更新者IDを取得する.
	 * 
	 * @return 更新者ID
	 */
	private String getUpdOperator()
	{
		return commonItem.getBatchUserId();
	}

	/**
	 * 次の指示書番号を取得する
	 * @param inMap
	 * @return String
	 * @throws Exception
	 */
	private String getNextShijishoNo(JBSbatServiceInterfaceMap inMap) throws Exception 
	{
		return JCCBatCommon.getFormatedNextSeq(commonItem, SEQ_SJISHO, JCCBatCommon.getSysDate(), 7);
	}

	/**
	 * 
	 * @param date1
	 * @param date2
	 * @param opeDate
	 * @return  List<JBSbatCommonDBInterface>
	 * @throws Exception
	 */
	
	private List<JBSbatCommonDBInterface> getTargetCustList(String opeDate) throws Exception
	{
		String dateNormal   = "";
		String dateLeapYear = "";
		
		// 年の設定
		int year = Integer.parseInt(opeDate.substring(0, 4));

		// その日に加齢する会員の誕生日を取得する(閏年に誕生した会員用の誕生日も同時に取得する)
		if((year % 4  == 0 && year % 100 != 0) || year % 400 == 0)
		{
			dateNormal = opeDate.substring(4, 8);
			dateLeapYear = dateNormal;
		}
		else
		{
			
			if(opeDate.substring(4, 8).equals("0301"))
			{
				dateNormal = "0301";
				dateLeapYear = "0229";
			}
			else
			{
				dateNormal = opeDate.substring(4, 8);
				dateLeapYear = dateNormal;
			}
		}

		String birthday21 = (year - 21) + dateNormal;          // 21歳を迎える会員の誕生日
		String birthday20 = (year - 20) + dateNormal;          // 20歳を迎える会員の誕生日
		String birthday18 = (year - 18) + dateNormal;          // 18歳を迎える会員の誕生日
		String birthday15 = (year - 15) + dateNormal;          // 15歳を迎える会員の誕生日
		String birthday12 = (year - 12) + dateNormal;          // 12歳を迎える会員の誕生日
		String birthday21Ly = (year - 21) + dateLeapYear;      // 21歳を迎える会員の誕生日(閏年用)
		String birthday20Ly = (year - 20) + dateLeapYear;      // 20歳を迎える会員の誕生日(閏年用)
		String birthday18Ly = (year - 18) + dateLeapYear;      // 18歳を迎える会員の誕生日(閏年用)
		String birthday15Ly = (year - 15) + dateLeapYear;      // 15歳を迎える会員の誕生日(閏年用)
		String birthday12Ly = (year - 12) + dateLeapYear;      // 12歳を迎える会員の誕生日(閏年用)

		// SQLパラメータの設定
		String[] param =
		{
			birthday21, birthday20, birthday18, birthday15, birthday12,             // 通年用のコンテンツ誕生日(21,20,18,15,12歳)
			birthday21Ly, birthday20Ly, birthday18Ly, birthday15Ly, birthday12Ly,   // 閏年用のコンテンツ誕生日(21,20,18,15,12歳)
			opeDate,                                                                // 運用日付
			PCRS_CD_STDARD_CONT_DOI,                                                // 標準コンテンツ同意用の料金コースコード
			opeDate,                                                                // 運用日付
			// 20151224 OM-2015-0003276 性能改善 DEL START
//			PCRS_CD_STDARD_CONT_DOI,                                                // 標準コンテンツ同意用の料金コースコード
//			opeDate,                                                                // 運用日付
			// 20151224 OM-2015-0003276 性能改善 DEL END
			birthday21, birthday20, birthday18, birthday15, birthday12,             // 通年用の契約者誕生日(21,20,18,15,12歳)
			birthday21Ly, birthday20Ly, birthday18Ly, birthday15Ly, birthday12Ly,   // 閏年用の契約者誕生日(21,20,18,15,12歳)
			opeDate,                                                                // 運用日付
			SVC_CD_HOSTING,                                                         // 標準コンテンツ同意用のサービスコード
			opeDate,                                                                // 運用日付
			opeDate                                                                 // 運用日付
			// 20151224 OM-2015-0003276 性能改善 ADD START
			,PCRS_CD_STDARD_CONT_DOI,                                               // 標準コンテンツ同意用の料金コースコード
			opeDate,                                                                // 運用日付
			// 20151224 OM-2015-0003276 性能改善 ADD END
		};

		// 検索実行
		executeCK_T_CUST_CK_SELECT_903(param);

		// 検索結果の取得
		JBSbatCommonDBInterface mapCust = new JBSbatCommonDBInterface();
		List<JBSbatCommonDBInterface> custList = new ArrayList<JBSbatCommonDBInterface>();
		while (true)
		{
			mapCust = db_CK_T_CUST.selectNext();

			if (mapCust == null)
			{
				break;
			}

			custList.add(mapCust);
		}

		return custList;
	}
	
	/**
	 * 対象レコードのデータ型(JBSbatCommonDBInterface)をファイル出力用のデータ型(JBSbatServiceInterfaceMap)に変換する
	 * @param dbMap 出力対象レコード
	 * @return JBSbatServiceInterfaceMapに変換された対象レコード
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap convertRecord(JBSbatCommonDBInterface dbMap) throws Exception
	{

		JBSbatServiceInterfaceMap sifMap = new JBSbatServiceInterfaceMap();
		sifMap.setString(JBSbatCKIFM903.SYSID, dbMap.getString(JBSbatCK_T_CUST.SYSID));
		sifMap.setString(JBSbatCKIFM903.GENE_ADD_DTM, dbMap.getString(JBSbatCK_T_CUST.GENE_ADD_DTM));
		sifMap.setString(JBSbatCKIFM903.UPD_DTM, dbMap.getString(JBSbatCK_T_CUST.UPD_DTM));
		sifMap.setString(JBSbatCKIFM903.EOID, dbMap.getString(JBSbatCK_T_CUST.EOID));
		sifMap.setString(JBSbatCKIFM903.CUST_BIRTHD, dbMap.getString(JBSbatCK_T_CUST.CUST_BIRTHD));
		return sifMap;
	}

	/**
	 * 年齢フラグの算出
	 * @param birthday 誕生日
	 * @param opeDate 運用日
	 * @return 年齢フラグ
	 */
	public static String getNenflag(String birthday, String opeDate) throws Exception
	{
		return JCKBatCommon.getAgeFlg(birthday, opeDate);
	}
}
