/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKCASCardDel
*	ソースファイル名	：JBSbatKKCASCardDel.java
*	作成者				：富士通　
*	作成日				：2024年11月07日
*＜機能概要＞
*	CASカード削除
*＜修正履歴＞
*	バージョン	修正日  修正者       修正内容
*	v74.0.0		2025/01/14	GDC)V.Auditor	「ANK-4592-00-00」テレビ新コース（スカパー用）導入対応
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM138;
import eo.business.util.table.JBSbatKK_T_CASCD_KNRI;
import eo.business.util.table.JBSbatKK_T_CASCD_KNRI_RK;
import eo.business.util.table.JBSbatKK_T_CSNT_OPSVKEI;
import eo.business.util.table.JBSbatKK_T_CSNT_OPSVKEI_RK;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (CASカード削除) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKCASCardDel extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(CASカード管理)*/
	private static final String D_TBL_NAME_KK_T_CASCD_KNRI = "KK_T_CASCD_KNRI";
	
	/** テーブル(CASカード管理履歴)*/
	private static final String D_TBL_NAME_KK_T_CASCD_KNRI_RK = "KK_T_CASCD_KNRI_RK";
	
	/** テーブル(CAS番号対象オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_CSNT_OPSVKEI = "KK_T_CSNT_OPSVKEI";
	
	/** テーブル(CAS番号対象オプションサービス契約履歴)*/
	private static final String D_TBL_NAME_KK_T_CSNT_OPSVKEI_RK = "KK_T_CSNT_OPSVKEI_RK";
	
	/** SQL定義キー(KK_SELECT_004)*/
	private static final String KK_T_CASCD_KNRI_KK_SELECT_004 = "KK_SELECT_004";
	
	/** SQL定義キー(KK_SELECT_004)*/
	private static final String KK_T_CSNT_OPSVKEI_KK_SELECT_004 = "KK_SELECT_004";
	
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";
	
	/** SQL定義キー(KK_SELECT_397)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_397 = "KK_SELECT_397";
	
	/** テーブルアクセスクラス(CASカード管理)*/
	private JBSbatSQLAccess db_KK_T_CASCD_KNRI = null;
	
	/** テーブルアクセスクラス(CASカード管理 KK_SELECT_004)*/
	private JBSbatSQLAccess db_KK_T_CASCD_KNRI_SEL_004 = null;

	/** テーブルアクセスクラス(CASカード管理履歴)*/
	private JBSbatSQLAccess db_KK_T_CASCD_KNRI_RK = null;

	/** テーブルアクセスクラス(CAS番号対象オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_CSNT_OPSVKEI = null;
	
	/** テーブルアクセスクラス(CAS番号対象オプションサービス契約 KK_SELECT_004)*/
	private JBSbatSQLAccess db_KK_T_CSNT_OPSVKEI_SEL_004 = null;
	
	/** テーブルアクセスクラス(CAS番号対象オプションサービス契約履歴)*/
	private JBSbatSQLAccess db_KK_T_CSNT_OPSVKEI_RK = null;
	
	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 定義ファイル(回復不可契約情報更新用ファイル) */
	private static final String KKIFM138_DEF = "KKIFM138.def";
	
	/** 入力定義ファイルパス */
	private static final String DIR_IND = "IND";
	
	/** スカパー連携ステータス 鍵閉め済み */
	private static final String SPTV_RNK_STAT_200 = "200";
	
	/** スカパー連携ステータス 削除 */
	private static final String SPTV_RNK_STAT_910 = "910";
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		// DBアクセスクラスを生成します
		db_KK_T_CASCD_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CASCD_KNRI);
		db_KK_T_CASCD_KNRI_SEL_004 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CASCD_KNRI);
		db_KK_T_CASCD_KNRI_RK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CASCD_KNRI_RK);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_CSNT_OPSVKEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CSNT_OPSVKEI);
		db_KK_T_CSNT_OPSVKEI_SEL_004 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CSNT_OPSVKEI);
		db_KK_T_CSNT_OPSVKEI_RK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CSNT_OPSVKEI_RK);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// フリー項目を取得する
		String[] freeItems = freeItem.split(JKKStrConst.SEMI_COLON);
		
		//回復不可契約情報更新用ファイル読み込み
		String kkifm138DefName = JBSbatAplConst.getAplConstValue(DIR_IND) + KKIFM138_DEF;
		JBSbatInputFileUtil kkifm138FileUtil = new JBSbatInputFileUtil(freeItems[0]);
		JBSbatDefFileUtil kkifm138FileDef = new JBSbatDefFileUtil(kkifm138DefName, kkifm138FileUtil);
		kkifm138FileUtil.createReader();
		
		//回復不可契約情報更新用ファイルの件数分繰り返す
		while (kkifm138FileUtil.ready())
		{
			// ファイルから１レコードを取得する
			String line = kkifm138FileUtil.readLine();
			
			// １レコードの情報をマップに格納する
			JBSbatServiceInterfaceMap recordMap = kkifm138FileDef.lineToObject(line, kkifm138FileUtil, 0);
			
			//項目数不一致の場合
			if (recordMap.isInputErrorFlg())
			{
				return null;
			}
			
			//@.回復不可契約情報更新用ファイル.サービス契約番号 = CASカード管理.サービス契約番号
			String svcKeiNo = (String)recordMap.getMap().get(JBSbatKKIFM138.SVC_KEI_NO);
			//A.CASカード管理.スカパー連携ステータス = "鍵閉め済み"
			//(a).CASカード管理を以下の内容で検索
			executeKK_T_CASCD_KNRI_KK_SELECT_004(new String[]{ svcKeiNo, SPTV_RNK_STAT_200 });
			JBSbatCommonDBInterface casCdKnriMap = db_KK_T_CASCD_KNRI_SEL_004.selectNext();
			//(b).(a)が存在しない場合
			if (casCdKnriMap == null)
			{
				//処理対象外として、次の一件を読み込む
				continue;
			}
			
			//(c).(a)が存在する場合
			//(c)-1.サービス契約を以下の内容で検索
			JBSbatCommonDBInterface svcKeiMap = executeKK_T_SVC_KEI_KK_SELECT_397(new String[]{ svcKeiNo, super.opeDate });
			
			//(c)-2.(c)-1が存在しない場合
			if (svcKeiMap == null)
			{
				//処理対象外として、次の一件を読み込む
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0370AI, new String[] {svcKeiNo});
				continue;
			}
			
			//(c)-3.(c)-1が存在する場合
			//@.(c)-1で取得したサービス契約.回復不可契約抽出済フラグが"1"の場合：処理継続
			//A.(c)-1で取得したサービス契約.回復不可契約抽出済フラグが"1"以外の場合：処理対象外として、次の一件を読み込む
			String nonRecoverableFlg = svcKeiMap.getString(JBSbatKK_T_SVC_KEI.KAIHK_FAIL_KEI_CST_ZM_FLG);
			if (!nonRecoverableFlg.equals("1"))
			{
				//処理対象外として、次の一件を読み込む
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0370AI, new String[] {svcKeiNo});
				continue;
			}
			
			while(null != casCdKnriMap) {
				
				//(c)-4.スキーマに対して、以下の処理を実施
				//@.(a)で抽出した全件をCASカード管理から物理削除する。
				String casCdNo = casCdKnriMap.getString(JBSbatKK_T_CASCD_KNRI.CASCD_NO);
				int deleteCount1 = executeKK_T_CASCD_KNRI_PKDELETE(new String[]{ casCdNo });
				if (deleteCount1 != 0)
				{
					//A.@で物理削除した全件をCASカード管理履歴に登録する。
					this.insertCasCdKnriRk(casCdKnriMap, SPTV_RNK_STAT_910);
				}
				
				//(d).CAS番号対象オプションサービス契約を以下の内容で検索
				//@.(c).CAS番号 = CAS番号対象オプションサービス契約.CAS番号
				//A.CAS番号対象オプションサービス契約.スカパー連携ステータス = "鍵閉め済み"
				executeKK_T_CSNT_OPSVKEI_SELECT_004(new String[]{ casCdNo, SPTV_RNK_STAT_200 });
				JBSbatCommonDBInterface csntOpsvKeiMap = db_KK_T_CSNT_OPSVKEI_SEL_004.selectNext();
				
				//(e).(d)が存在しない場合
				if (csntOpsvKeiMap == null)
				{
					//処理対象外として、次の一件を読み込む
					casCdKnriMap = db_KK_T_CASCD_KNRI_SEL_004.selectNext();
					continue;
				}
				
				while(null != csntOpsvKeiMap) {
					//(f).(d)が存在する場合
					//@.(d)で抽出した全件をCAS番号対象オプションサービス契約から物理削除する
					String opSvcKeiNo = csntOpsvKeiMap.getString(JBSbatKK_T_CSNT_OPSVKEI.OP_SVC_KEI_NO);
					int deleteCount2 = executeKK_T_KK_T_CSNT_OPSVKEI_PKDELETE(new String[]{ opSvcKeiNo});
					if (deleteCount2 != 0)
					{
						//A.@で物理削除した全件をCAS番号対象オプションサービス契約履歴に登録する
						this.insertCsntOpsvkeiRk(csntOpsvKeiMap, SPTV_RNK_STAT_910);
					}
					// 次のCAS番号を取得する。（最大8件）
					csntOpsvKeiMap = db_KK_T_CSNT_OPSVKEI_SEL_004.selectNext();
				}
				
				// 次のCAS番号を取得する。（最大3件）
				casCdKnriMap = db_KK_T_CASCD_KNRI_SEL_004.selectNext();
			}
		}
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	CAS番号
	 *		 	スカパー連携ステータス
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_CASCD_KNRI_KK_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_CASCD_KNRI_SEL_004.selectBySqlDefine(paramList, KK_T_CASCD_KNRI_KK_SELECT_004);
	}
	
	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	オプションサービス契約番号	
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_CSNT_OPSVKEI_SELECT_004(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue(whereParam[0].toString());
		whereMap.setValue(whereParam[1].toString());
		
		// DBアクセスを実行します
		db_KK_T_CSNT_OPSVKEI_SEL_004.selectBySqlDefine(whereMap, KK_T_CSNT_OPSVKEI_KK_SELECT_004);
	}
	
	/**
	 * SQLKEY(KK_SELECT_397)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	世代登録年月日時分秒
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_SVC_KEI_KK_SELECT_397(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_397);
		
		return db_KK_T_SVC_KEI.selectNext();
	}
	
	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	CASカード番号				CASCD_NO
	 *		 	履歴登録年月日時分秒		RK_ADD_DTM
	 *		 	枠番号					FRAME_NO
	 *		 	スカパー連携ステータス		SPTV_RNK_STAT
	 *		 	サービス契約番号			SVC_KEI_NO
	 *		 	CATV顧客番号				CATV_CUST_NO
	 *		 	CAS番号登録年月日		CAS_NO_ADD_YMD
	 *		 	CAS番号削除年月日		CAS_NO_DEL_YMD
	 *		 	鍵開け年月日				KEYOPN_YMD
	 *		 	コース変更鍵開け年月日		CSCH_KEYOPN_YMD
	 *		 	鍵閉め年月日				KEYCLS_YMD
	 *		 	CAS番号適用年月日		CAS_NO_APLY_YMD
	 *		 	鍵閉め理由コード			KEYCLS_RSN_CD
	 *		 	登録年月日時分秒			ADD_DTM
	 *		 	登録オペレータアカウント		ADD_OPEACNT
	 *		 	更新年月日時分秒			UPD_DTM
	 *		 	更新オペレータアカウント		UPD_OPEACNT
	 *		 	削除年月日時分秒			DEL_DTM
	 *		 	削除オペレータアカウント		DEL_OPEACNT
	 *		 	無効フラグ					MK_FLG
	 *		 	登録運用年月日			ADD_UNYO_YMD
	 *		 	登録処理ID				ADD_TRN_ID
	 *		 	更新運用年月日			UPD_UNYO_YMD
	 *		 	更新処理ID				UPD_TRN_ID
	 *		 	削除運用年月日			DEL_UNYO_YMD
	 *		 	削除処理ID				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_CASCD_KNRI_RK_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("CASCD_NO", setParam[0]);
		setMap.setValue("RK_ADD_DTM", setParam[1]);
		setMap.setValue("FRAME_NO", setParam[2]);
		setMap.setValue("SPTV_RNK_STAT", setParam[3]);
		setMap.setValue("SVC_KEI_NO", setParam[4]);
		setMap.setValue("CATV_CUST_NO", setParam[5]);
		setMap.setValue("CAS_NO_ADD_YMD", setParam[6]);
		setMap.setValue("CAS_NO_DEL_YMD", setParam[7]);
		setMap.setValue("KEYOPN_YMD", setParam[8]);
		setMap.setValue("CSCH_KEYOPN_YMD", setParam[9]);
		setMap.setValue("KEYCLS_YMD", setParam[10]);
		setMap.setValue("CAS_NO_APLY_YMD", setParam[11]);
		setMap.setValue("KEYCLS_RSN_CD", setParam[12]);
		db_KK_T_CASCD_KNRI_RK.insertByPrimaryKeys(setMap);
	}
	
	/**
	 * CASカード管理履歴を登録します。
	 * <br>
	 * @param outMap CASカード管理履歴検索結果
	 * @param sptvRnkStat スカパー連携ステータス
	 * @throws Exception 
	 */
	private void insertCasCdKnriRk(JBSbatCommonDBInterface outMap, String stat) throws Exception
	{
		// 登録用データ格納
		Object[] param_add = new Object[13];
		// システム日付を取得
		String sysdate = JBSbatDateUtil.getSystemDateTimeStamp();
		// CASカード番号
		param_add[0] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.CASCD_NO));
		// 履歴登録年月日時分秒
		param_add[1] = sysdate;
		// 枠番号
		param_add[2] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.FRAME_NO));
		// スカパー連携ステータス
		param_add[3] = stat;
		// サービス契約番号
		param_add[4] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.SVC_KEI_NO));
		// CATV顧客番号
		param_add[5] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.CATV_CUST_NO));
		// CAS番号登録年月日
		param_add[6] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.CAS_NO_ADD_YMD));
		// CAS番号削除年月日
		param_add[7] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.CAS_NO_DEL_YMD));
		// 鍵開け年月日
		param_add[8] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.KEYOPN_YMD));
		// コース変更鍵開け年月日
		param_add[9] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.CSCH_KEYOPN_YMD));
		// 鍵閉め年月日
		param_add[10] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.KEYCLS_YMD));
		// CAS番号適用年月日
		param_add[11] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.CAS_NO_APLY_YMD));
		// 鍵閉め理由コード
		param_add[12] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.KEYCLS_RSN_CD));
		// CAS番号対象オプションサービス契約履歴の登録を実行する
		this.executeKK_T_CASCD_KNRI_RK_PKINSERT(param_add);
	}
	
	/**
	 * PK(物理削除)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	CASカード番号				CASCD_NO
	 *		 	スカパー連携ステータス		SPTV_RNK_STAT
	 *		 	サービス契約番号			SVC_KEI_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeKK_T_CASCD_KNRI_PKDELETE(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("CASCD_NO", setParam[0]);
		return db_KK_T_CASCD_KNRI.deleteByPrimaryKeys(setMap);
	}
	
	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	オプションサービス契約番号		OP_SVC_KEI_NO
	 *			履歴登録年月日時分秒		RK_ADD_DTM
	 *		 	CASカード番号				CASCD_NO
	 *		 	スカパー連携ステータス		SPTV_RNK_STAT
	 *		 	鍵開け年月日				KEYOPN_YMD
	 *		 	鍵閉め年月日				KEYCLS_YMD
	 *		 	CAS番号対象適用年月日		CAS_NO_TG_APLY_YMD
	 *		 	鍵閉め理由コード			KEYCLS_RSN_CD
	 *		 	登録年月日時分秒			ADD_DTM
	 *		 	登録オペレータアカウント		ADD_OPEACNT
	 *		 	更新年月日時分秒			UPD_DTM
	 *		 	更新オペレータアカウント		UPD_OPEACNT
	 *		 	削除年月日時分秒			DEL_DTM
	 *		 	削除オペレータアカウント		DEL_OPEACNT
	 *		 	無効フラグ					MK_FLG
	 *		 	登録運用年月日			ADD_UNYO_YMD
	 *		 	登録処理ID				ADD_TRN_ID
	 *		 	更新運用年月日			UPD_UNYO_YMD
	 *		 	更新処理ID				UPD_TRN_ID
	 *		 	削除運用年月日			DEL_UNYO_YMD
	 *		 	削除処理ID				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_CSNT_OPSVKEI_RK_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("OP_SVC_KEI_NO", setParam[0]);
		setMap.setValue("RK_ADD_DTM", setParam[1]);
		setMap.setValue("CASCD_NO", setParam[2]);
		setMap.setValue("SPTV_RNK_STAT", setParam[3]);
		setMap.setValue("KEYOPN_YMD", setParam[4]);
		setMap.setValue("KEYCLS_YMD", setParam[5]);
		setMap.setValue("CAS_NO_TG_APLY_YMD", setParam[6]);
		setMap.setValue("KEYCLS_RSN_CD", setParam[7]);
		db_KK_T_CSNT_OPSVKEI_RK.insertByPrimaryKeys(setMap);
	}
	
	/**
	 * CAS番号対象オプションサービス契約履歴を登録します。
	 * <br>
	 * @param outMap CAS番号対象オプションサービス契約履歴検索結果
	 * @param kojiakJssiYmd 工事案件実施年月日
	 * @throws Exception 
	 */
	private void insertCsntOpsvkeiRk(JBSbatCommonDBInterface outMap, String stat) throws Exception
	{
		// 登録用データ格納
		Object[] param_add = new Object[8];
		// システム日付を取得
		String sysdate = JBSbatDateUtil.getSystemDateTimeStamp();
		// オプションサービス契約番号
		param_add[0] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.OP_SVC_KEI_NO));
		// 履歴登録年月日時分秒
		param_add[1] = sysdate;
		// CASカード番号
		param_add[2] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.CASCD_NO));
		// スカパー連携ステータス
		param_add[3] = stat;
		// 鍵開け年月日
		param_add[4] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.KEYOPN_YMD));
		// 鍵閉め年月日
		param_add[5] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.KEYCLS_YMD));
		// CAS番号対象適用年月日
		param_add[6] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.CAS_NO_TG_APLY_YMD));
		// 鍵閉め理由コード
		param_add[7] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.KEYCLS_RSN_CD));
		// CAS番号対象オプションサービス契約履歴の登録を実行する
		this.executeKK_T_CSNT_OPSVKEI_RK_PKINSERT(param_add);
	}
	
	/**
	 * PK(物理削除)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	CASカード番号				CASCD_NO
	 *		 	スカパー連携ステータス		SPTV_RNK_STAT
	 *		 	サービス契約番号			SVC_KEI_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeKK_T_KK_T_CSNT_OPSVKEI_PKDELETE(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("OP_SVC_KEI_NO", setParam[0]);
		return db_KK_T_CSNT_OPSVKEI.deleteByPrimaryKeys(setMap);
	}

	
}
