/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCKchgechuMladClr
*	ソースファイル名	：JBSbatCKchgechuMladClr.java
*	作成者				：富士通　
*	作成日				：2011年08月03日
*＜機能概要＞
*　変更中メールアドレスクリア部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/03   富士通		新規作成
*   v27.00.00   2016/10/10   FJ) 阮     ANK-2987-00-00対応  
*   v27.01.00   2016/10/17   FJ) 阮     IT1-2016-0000149対応  
*   v27.02.00   2016/11/07   FJ) 藤本   【ST-2016-0000034】eoメールアドレスに紐付くオプトインメール受信設定を無効化している(水平展開対応)
*   v33.00.00   2017/08/06   FJ)三原    【ANK-3194-00-00】コンテンツ同意・メールアドレス登録改善
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatCKIFM904;
import eo.business.util.table.JBSbatCK_T_OPTINM_RCV_SET;
import eo.business.util.table.JBSbatCK_T_RRKS;
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.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCKchgechuMladClr extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(お客様)*/
	private static final String D_TBL_NAME_CK_T_CUST = "CK_T_CUST";

	/** テーブル(連絡先)*/
	private static final String D_TBL_NAME_CK_T_RRKS = "CK_T_RRKS";
	// ANK-2987-00-00 ADD START
	/** テーブル(オプトインメール受信設定)*/
	private static final String D_TBL_NAME_CK_T_OPTINM_RCV_SET = "CK_T_OPTINM_RCV_SET";
	// ANK-2987-00-00 ADD END
	
	//---------v33.00.00 ANK-3194-00-00_ADD START---------//
	/** テーブル(異動予約)*/
	private static final String D_TBL_NAME_KK_T_IDO_RSV = "KK_T_IDO_RSV";
	
	/** テーブル(エイジング)*/
	private static final String D_TBL_NAME_ZM_T_AGING = "ZM_T_AGING";
	//---------v33.00.00 ANK-3194-00-00_ADD END-----------//
	
	/** SQL定義キー(CK_SELECT_905)*/
	private static final String CK_T_CUST_CK_SELECT_905 = "CK_SELECT_905";

	/** SQL定義キー(CK_UPDATE_901)*/
	private static final String CK_T_RRKS_CK_UPDATE_901 = "CK_UPDATE_901";

	/** SQL定義キー(CK_UPDATE_901)*/
	private static final String CK_T_CUST_CK_UPDATE_901 = "CK_UPDATE_901";
	
	// ANK-2987-00-00 ADD START
	/** SQL定義キー(CK_SELECT_007)*/
	private static final String CK_T_RRKS_CK_SELECT_007 = "CK_SELECT_007";
	
	/** SQL定義キー(CK_SELECT_002)*/
	private static final String CK_T_OPTINM_RCV_SET_Ck_SELECT_002 = "CK_SELECT_002";
	// ANK-2987-00-00 ADD END

	//---------v33.00.00 ANK-3194-00-00_ADD START---------//	
	/** SQL定義キー(CK_UPDATE_902)*/
	private static final String CK_T_RRKS_CK_UPDATE_902 = "CK_UPDATE_902";

	/** SQL定義キー_エイジング(KK_DELETE_003)*/
	private static final String ZM_T_AGING_KK_DELETE_003 = "KK_DELETE_003";
	//---------v33.00.00 ANK-3194-00-00_ADD END-----------//

	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;

	/** テーブルアクセスクラス(連絡先)*/
	private JBSbatSQLAccess db_CK_T_RRKS = null;
	
	// ANK-2987-00-00 ADD START
	/** テーブルアクセスクラス(連絡先)*/
	private JBSbatSQLAccess db_CK_T_OPTINM_RCV = null;
	// ANK-2987-00-00 ADD END
	
	//---------v33.00.00 ANK-3194-00-00_ADD START---------//
	/** テーブルアクセスクラス(異動予約)*/
	private JBSbatSQLAccess db_KK_T_IDO_RSV = null;
	
	/** テーブルアクセスクラス(エイジング)*/
	private JBSbatSQLAccess db_ZM_T_AGING = null;
	
	/** エイジング種別コード_ニックネーム*/
	private static final String AGING_SBT_CD_NICKNAME_003 = "003";

	/** エイジング種別コード_eoID*/
	private static final String AGING_SBT_CD_EOID_004 = "004";
	//---------v33.00.00 ANK-3194-00-00_ADD END-----------//

	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @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_RRKS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_RRKS);
		// ANK-2987-00-00 ADD START
		db_CK_T_OPTINM_RCV = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_OPTINM_RCV_SET);
		// ANK-2987-00-00 ADD END
		// ANK-3194-00-00 ADD START
		// 異動予約
		db_KK_T_IDO_RSV = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_IDO_RSV);
		// エイジング
		db_ZM_T_AGING = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_AGING);
		// ANK-3194-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		//連絡先番号の取得
		String rrksNo = inMap.getString(JBSbatCKIFM904.RRKS_NO);
		
		//世代登録年月日時分秒の取得
		String geneAddDtm = (String)inMap.get(JBSbatCKIFM904.GENE_ADD_DTM);
		
		//SYSIDの取得
		String sysid = (String)inMap.get(JBSbatCKIFM904.SYSID);
		
		//更新年月日時分秒の取得
		String updDtm = (String)inMap.get(JBSbatCKIFM904.UPD_DTM);

		//---------v33.00.00 ANK-3194-00-00_ADD START---------//
		//メールアドレス変更受付年月日
		String mladChgeUkYmd = (String)inMap.get(JBSbatCKIFM904.MLAD_CHGE_UK_YMD);
		//連絡先メールアドレス
		String rrksMlad = (String)inMap.get(JBSbatCKIFM904.MLAD);
		//異動予約番号
		String idoRsvNo = (String)inMap.get(JBSbatCKIFM904.IDO_RSV_NO);
		//パラメータ4_eoID
		String parameter4 = (String)inMap.get(JBSbatCKIFM904.PARAMETER_4);
		//パラメータ21_ニックネーム
		String parameter21 = (String)inMap.get(JBSbatCKIFM904.PARAMETER_21);
		//---------v33.00.00 ANK-3194-00-00_ADD END-----------//		
		// お客様テーブルの最新データのデータ取得、および 排他ロック
		JBSbatCommonDBInterface custMap = getCustMap(sysid);

		if(updDtm.equals(custMap.getString("UPD_DTM")))
		{
			String nowDtm = getBatchDatetime();

			//連絡先テーブルを更新する。
			updateRkks(rrksNo, geneAddDtm, nowDtm);
			//---------v33.00.00 ANK-3194-00-00_ADD START---------//
			// 連絡先.予約適用コード='2'、連絡先.予約適用年月日＝メールアドレス変更受付年月日
			// 連絡先.メールアドレス=連絡先メールアドレスのデータに対して更新
			updateRkks2(rrksNo, nowDtm, rrksMlad, mladChgeUkYmd);
			//---------v33.00.00 ANK-3194-00-00_ADD END-----------//
  		
			//お客様テーブルの更新年月日時分秒を更新する。
			updCustUpdDtm(sysid, custMap.getString("GENE_ADD_DTM"), nowDtm);
			// ANK-2987-00-00 ADD START
			// 連絡先テーブルを検索する(更新したキーにて)
			// SQL実行結果取得用mapを生成（連絡先）
			JBSbatCommonDBInterface rrksMap = new JBSbatCommonDBInterface(); 
			JBSbatCommonDBInterface optimRcvSetMap = new JBSbatCommonDBInterface(); 
			
			// ST-2016-0000034 MOD START
//			String [] selectParamOp = {super.opeDate, sysid, rrksNo};
//			executeCK_T_RRKS_SELECT_001(selectParamOp);
			// eoメールアドレスでない連絡先を取得(eoメールアドレスに紐付くオプトインメール受信設定は無効化しない)
			String [] selectParamOp = {rrksNo, super.opeDate};
			executeCK_T_RRKS_SELECT_007(selectParamOp);
			// ST-2016-0000034 MOD END
			
			// 検索結果を取得する
			for(rrksMap = db_CK_T_RRKS.selectNext(); null != rrksMap ; rrksMap = db_CK_T_RRKS.selectNext())
			{
				// 検索結果の連絡先情報を変数に設定する。
				String mlad = JBSbatStringUtil.Rtrim(rrksMap.getString(JBSbatCK_T_RRKS.MLAD));
				
				// オプトインメール受信設定の一覧照会
				String [] selectParamoptim = {sysid, mlad};
				executeCK_T_OPTINM_RCV_SET_SELECT_002(selectParamoptim);
				
				// IT1-2016-0000149 DEL START
//				if (db_CK_T_OPTINM_RCV.selectNext() != null)
//				{
				// IT1-2016-0000149 DEL END
					for(optimRcvSetMap = db_CK_T_OPTINM_RCV.selectNext(); null != optimRcvSetMap ; optimRcvSetMap = db_CK_T_OPTINM_RCV.selectNext())
					{
						// オプトインメール受信設定の無効化を行なう
						updateOptinMail(
								(String)JBSbatStringUtil.Rtrim(optimRcvSetMap.getString(JBSbatCK_T_OPTINM_RCV_SET.OPTINM_NO)),
								(String)JBSbatStringUtil.Rtrim(optimRcvSetMap.getString(JBSbatCK_T_OPTINM_RCV_SET.SYSID)),
								(String)JBSbatStringUtil.Rtrim(optimRcvSetMap.getString(JBSbatCK_T_OPTINM_RCV_SET.MLAD)),
								(String)JBSbatStringUtil.Rtrim(optimRcvSetMap.getString(JBSbatCK_T_OPTINM_RCV_SET.GENE_ADD_DTM)),
								// IT1-2016-0000149 MOD START
//								custMap
								custMap,
								(String)JBSbatStringUtil.Rtrim(optimRcvSetMap.getString(JBSbatCK_T_OPTINM_RCV_SET.RCV_DIV)),
								(String)JBSbatStringUtil.Rtrim(optimRcvSetMap.getString(JBSbatCK_T_OPTINM_RCV_SET.RCV_SETTE_YMD))
								// IT1-2016-0000149 MOD END
								);
					}
				}
			// IT1-2016-0000149 DEL START
//			}
			// IT1-2016-0000149 DEL END
			// ANK-2987-00-00 ADD END
		}
		//---------v33.00.00 ANK-3194-00-00_ADD START---------//
		if (!(idoRsvNo == null || "".equals(idoRsvNo)))
		{
			// 異動予約テーブルを更新する
			updatecKktIdoRsv(sysid, idoRsvNo, getBatchDatetime());
			// エイジングテーブルを更新する
			//パラメータ４_eoIDが空白以外の場合
			if(!(parameter4 == null || "".equals(parameter4)))
			{
				//お客様スキーマのeoIDと比較する
				if (!parameter4.equals(custMap.getString("EOID")))
				{
					deleteZmTAging(parameter4, AGING_SBT_CD_EOID_004);
				}
			}
			//パラメータ21_ニックネームが空白以外の場合
			if(!(parameter21 == null || "".equals(parameter21)))
			{
				//お客様スキーマのニックネームと比較する
				if(!parameter21.equals(custMap.getString("NKNAME")))
				{
					deleteZmTAging(parameter21, AGING_SBT_CD_NICKNAME_003);
				}
			}
		}
		//---------v33.00.00 ANK-3194-00-00_ADD END-----------//

		
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CK_T_CUST.close();
		db_CK_T_RRKS.close();
		// ANK-2987-00-00 ADD START
		db_CK_T_OPTINM_RCV.close();
		// ANK-2987-00-00 ADD END
		//---------v33.00.00 ANK-3194-00-00_ADD START---------//
		db_KK_T_IDO_RSV.close();  // 異動予約
		db_ZM_T_AGING.close();    // エイジング
		//---------v33.00.00 ANK-3194-00-00_ADD END-----------//
		
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(CK_SELECT_905)で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_CK_SELECT_905(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_CK_SELECT_905);
	}

	/**
	 * SQLKEY(CK_UPDATE_901)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	運用日付
	 *		 	運用日付
	 *		 	更新オペレータアカウント
	 *		 	連絡先番号
	 *		 	世代登録年月日時分秒
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_RRKS_CK_UPDATE_901(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_CK_T_RRKS.executeBySqlDefine(paramList, CK_T_RRKS_CK_UPDATE_901);
	}

	/**
	 * SQLKEY(CK_UPDATE_901)で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_CK_UPDATE_901(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_CK_T_CUST.executeBySqlDefine(paramList, CK_T_CUST_CK_UPDATE_901);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * バッチ日付(8桁)を取得する
	 * @return バッチ日時
	 * @throws Exception
	 */
	private String getBatchDate() throws Exception
	{
		return JCCBatCommon.getSysDate();
	}
	
	/**
	 * バッチ日時(17桁)を取得する
	 * @return バッチ日時
	 * @throws Exception
	 */
	private String getBatchDatetime() throws Exception
	{
		return JCCBatCommon.getSysDateTimeStamp();
	}


	/**
	 * 連絡先テーブルの更新
	 * @param rrksNo
	 * @param geneAddDtm
	 * @throws Exception
	 */
	private void updateRkks(String rrksNo , String geneAddDtm, String updDtm) throws Exception
	{

		Object[] param = {
			getBatchDate(),               // 予約終了日
			updDtm,                       // 更新日時
			rrksNo,                       // 連絡先番号
			geneAddDtm,                   // 世代登録年月日時分秒
		};
		executeCK_T_RRKS_CK_UPDATE_901(param);
	}

	//---------v33.00.00 ANK-3194-00-00_ADD START---------//
	/**
	 * 連絡先テーブルの更新
	 * @param rrksNo
	 * @param updDtm
	 * @param rrksMlad
	 * @param mladChgeUkYmd
	 * 
	 * @throws Exception
	 */
	private void updateRkks2(String rrksNo, String updDtm, String rrksMlad, String mladChgeUkYmd) throws Exception
	{
		Object[] param = 
		{
			getBatchDate(),               // 予約終了日
			updDtm,                       // 更新日時
			rrksNo,                       // 連絡先番号
			rrksMlad,                     // 連絡先メールアドレス
			mladChgeUkYmd                 // メールアドレス変更受付年月日
		};
		executeCK_T_RRKS_CK_UPDATE_902(param);
	}
	
	/**
	 * SQLKEY(CK_UPDATE_902)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約終了日
	 *		 	更新日時
	 *		 	連絡先番号
	 *		 	連絡先メールアドレス
	 *			メールアドレス変更受付年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_RRKS_CK_UPDATE_902(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());
		
		// DBアクセスを実行します
		db_CK_T_RRKS.executeBySqlDefine(paramList, CK_T_RRKS_CK_UPDATE_902);
	}	
	//---------v33.00.00 ANK-3194-00-00_ADD END-----------//

	/**
	 * お客様テーブルの最新レコード取得、および 排他ロック。<br />
	 * @param sysid SYSID
	 * @return お客様情報
	 * @throws Exception
	 */
	private JBSbatCommonDBInterface getCustMap(String sysid) throws Exception
	{
		JBSbatCommonDBInterface custMap = null;
		Object[] param = {sysid};
		executeCK_T_CUST_CK_SELECT_905(param);
		custMap = db_CK_T_CUST.selectNext();
		return custMap;
	}
	/**
	 * お客様テーブルの更新年月日時分秒を更新する。
	 * @param sysid
	 * @param ganeAddDtm
	 * @throws Exception
	 */
	private void updCustUpdDtm(String sysid, String ganeAddDtm, String updDtm) throws Exception
	{
		Object[] param = {
				updDtm,                   // 更新日時
				sysid,                    // SYSID
				ganeAddDtm                // 世代登録年月日時分秒
		};
		executeCK_T_CUST_CK_UPDATE_901(param);
	}
	
	// ANK-2987-00-00 ADD START
	/**
	 * SQLKEY(CK_SELECT_007)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	連絡先番号
	 *		 	バッチ運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	// ST-2016-0000034 MOD START
//	private void executeCK_T_RRKS_SELECT_001(Object[] param) throws Exception
	private void executeCK_T_RRKS_SELECT_007(Object[] param) throws Exception
	// ST-2016-0000034 MOD END
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		// ST-2016-0000034 DEL START
//		paramList.setValue(param[2].toString());
		// ST-2016-0000034 DEL END

		// DBアクセスを実行します
		db_CK_T_RRKS.selectBySqlDefine(paramList, CK_T_RRKS_CK_SELECT_007);
	}
	
	/**
	 * SQLKEY(CK_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 executeCK_T_OPTINM_RCV_SET_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CK_T_OPTINM_RCV.selectBySqlDefine(paramList, CK_T_OPTINM_RCV_SET_Ck_SELECT_002);
	}
	
	/**
	 * オプトインメール受信設定の無効化を行います。
	 * <br>
	 * @param sysid SYSID
	 * @param gene_add_dtm 世代登録年月日時分秒
	 * @throws Exception メソッド内で発生した例外全般。
	 */
// IT1-2016-0000149 MOD START
//	private void updateOptinMail(String optinmNo, String sysid, String mlad, String gene, JBSbatCommonDBInterface custMap) throws Exception
	private void updateOptinMail(String optinmNo, String sysid, String mlad, String gene, JBSbatCommonDBInterface custMap, String rcvDiv, String rcvSetYmd) throws Exception
// IT1-2016-0000149 MOD END
	{
		JBSbatCommonDBInterface paramMap = new JBSbatCommonDBInterface();
// IT1-2016-0000149 DEL START
//		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		
//		// SYSID、世代登録年月日時分秒を設定
//		whereMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.OPTINM_NO, optinmNo);
//		// SYSID、世代登録年月日時分秒を設定
//		whereMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.SYSID, sysid);
//		// SYSID、世代登録年月日時分秒を設定
//		whereMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.MLAD, mlad);
//		// SYSID、世代登録年月日時分秒を設定
//		whereMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.GENE_ADD_DTM, gene)
// IT1-2016-0000149 DEL END
		
// IT1-2016-0000149 ADD START
		// 更新時間の共通化
		String nowTime = JCCBatCommon.getSysDateTimeStamp();
		// オプトインメール番号 指定
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.OPTINM_NO, optinmNo);
		// ＳＹＳＩＤ
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.SYSID, sysid);
		// メールアドレス
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.MLAD, mlad);
		// 世代登録年月日時分秒
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.GENE_ADD_DTM, nowTime);
		// 受信区分
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.RCV_DIV, rcvDiv);
		// 受信設定年月日
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.RCV_SETTE_YMD, rcvSetYmd);
		// 受信解除年月日
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.RCV_RLS_YMD, null);
		// オプトインメール受信設定回復年月日
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.OPTINM_RCV_SETTE_KAIHK_YMD, null);
// IT1-2016-0000149 ADD END
		
		// ステータスの更新結果を指定
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.OPTINM_RCV_SETTE_STAT, "020");
		// 無効年月日の更新結果を指定
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.OPTINM_RCV_SETTE_MK_YMD, getBatchDate());
		
// IT1-2016-0000149 ADD START
		// 登録年月日時分秒
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.ADD_DTM, nowTime);
		// 登録オペレータアカウント
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.ADD_OPEACNT, super.batchUserId);
// IT1-2016-0000149 ADD END
		
		// 更新年月日時分秒を更新。
// IT1-2016-0000149 DEL START
//		String nowTime = JCCBatCommon.getSysDateTimeStamp();
// IT1-2016-0000149 DEL END
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.UPD_DTM, nowTime);
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.UPD_OPEACNT, super.batchUserId);
		
// IT1-2016-0000149 ADD START
		// 形式設定群
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.DEL_DTM, null);
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.DEL_OPEACNT, null);
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.MK_FLG, "0");
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.ADD_UNYO_YMD, null);
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.ADD_TRN_ID, null);
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.UPD_UNYO_YMD, null);
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.UPD_TRN_ID, null);
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.DEL_UNYO_YMD, null);
		paramMap.setValue(JBSbatCK_T_OPTINM_RCV_SET.DEL_TRN_ID, null);
// IT1-2016-0000149 ADD END

// IT1-2016-0000149 MOD START
//		db_CK_T_CUST.updateByPrimaryKeys(whereMap, paramMap);
		db_CK_T_OPTINM_RCV.insertByPrimaryKeys(paramMap);
// IT1-2016-0000149 MOD END
		
		//お客様テーブルの更新年月日時分秒を更新する。
		updCustUpdDtm(sysid, custMap.getString("GENE_ADD_DTM"), nowTime);
	}
	// ANK-2987-00-00 ADD END
	//---------v33.00.00 ANK-3194-00-00_ADD START---------//
	/**
	 * 異動予約テーブルの更新
	 * @param sysid_SYSID
	 * @param idoRsvNo_異動予約番号
	 * @param nowDtm_更新年月日時分秒
	 * @throws Exception
	 */
	private void updatecKktIdoRsv(String sysid, String idoRsvNo, String nowDtm) throws Exception
	{
		String[] value = new String[6];
		// 異動予約取消年月日
		value[0] = getBatchDate();
		//異動予約状態コードに"02"(取消済)を設定
		value[1] = "02";
		// 更新年月日時分秒
		value[2] = nowDtm;
		// 更新オペレータアカウント
		value[3] = super.batchUserId;
		// 更新運用年月日
		value[4] = getBatchDate();
		// 更新処理ID
		value[5] = super.jobid;
		
		String[] whereparam = new String[1];
		// 異動予約番号
		whereparam[0] = idoRsvNo;
		
		executeKK_T_IDO_RSV_PKUPDATE(value, whereparam);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *			異動予約取消年月日			IDO_RSV_CL_YMD
	 *			異動予約状態コード			IDO_RSV_STAT_CD
	 *			更新年月日時分秒			UPD_DTM
	 *			更新オペレータアカウント	UPD_OPEACNT
	 *			更新運用年月日				UPD_UNYO_YMD
	 *			更新処理ID					UPD_TRN_ID
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *			異動予約番号				IDO_RSV_NO
	 *			異動区分					IDO_DIV
	 *		 	KK_T_IDO_RSV
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_IDO_RSV_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		// 異動予約取消年月日
		setMap.setValue("IDO_RSV_CL_YMD", setParam[0]);
		// 異動予約状態コード
		setMap.setValue("IDO_RSV_STAT_CD", setParam[1]);
		// 更新年月日時分秒
		setMap.setValue("UPD_DTM", setParam[2]);
		// 更新オペレータアカウント
		setMap.setValue("UPD_OPEACNT", setParam[3]);
		// 更新運用年月日
		setMap.setValue("UPD_UNYO_YMD", setParam[4]);
		// 更新処理ID
		setMap.setValue("UPD_TRN_ID", setParam[5]);

		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		// 異動予約番号
		whereMap.setValue("IDO_RSV_NO", whereParam[0]);

		// DBアクセスを実行します
		db_KK_T_IDO_RSV.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * エイジングテーブルの削除
	 * @param parameter_パラメータ_エイジング対象値
	 * @param agingSbtCd_エイジング種別コード
	 * @throws Exception
	 */
	private void deleteZmTAging(String parameter, String agingSbtCd) throws Exception
	{
		Object[] param = {
				parameter,               // パラメータ_エイジング対象値
				agingSbtCd,              // エイジング種別コード
		};
		executeZM_T_AGINGKK_DELETE_003(param);
	}
	
	/**
	 * SQLKEY(KK_DELETE_003)で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_T_AGINGKK_DELETE_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		// DBアクセスを実行します
		db_ZM_T_AGING.executeBySqlDefine(paramList, ZM_T_AGING_KK_DELETE_003);
	}
	//---------v33.00.00 ANK-3194-00-00_ADD END-----------//
}
