/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKCsOpChKagiOpClRsltUpd
*	ソースファイル名		：JBSbatKKCsOpChKagiOpClRsltUpd.java
*	作成者				：富士通　
*	作成日				：2025年01月07日
*＜機能概要＞
*　スカパーオプションチャンネル鍵開け閉め結果反映部品です。
*＜修正履歴＞
*	バージョン	修正日  修正者       修正内容
*	v74.00.00       2025/01/07  GDC)R.DelaRosa  「案件番号：ANK-4592-00-00」テレビ新コース（スカパー用）導入対応
*	v74.00.01       2025/03/26  FJ)明石         「案件番号：ANK-4592-00-00」テレビ新コース（スカパー用）導入対応
*********************************************************************/
package eo.business.service;

import java.io.File;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCCbatShoriIraiUtil;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKLST13408;
import eo.business.util.table.JBSbatCC_T_DLYD_TRN_REQ;
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_IDO_RSV;
import eo.business.util.table.JBSbatKK_T_OP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.common.constant.JKKStrConst;
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.JBSbatBusinessFileUtil;
import eo.framework.util.JBSbatCheckUtil;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;

public class JBSbatKKCsOpChKagiOpClRsltUpd extends JBSbatBusinessService {

	/** スカパー画面操作結果リスト名 */
	private static final String KKLST13408_DEF = "KKLST13408.def";
	/** 入力定義ファイルパス */
	private static final String DIR_IND = "IND";
	/** 改行コード */
	private static final String LINE_SEPARATOR = "\r\n";
	private static final String DOUBLE_QUOTE = "\"";
	/** ファイルコード */
	private static final String FILE_CD = "0000";
	/** 処理管理番号：スカパー画面操作結果リスト取込 */
	private static final String KKLST13409_TRN_KANRI_NO = "000000000284";
	/** 処理管理番号：スカパー画面操作結果リスト取込エラー */
	private static final String KKLST13410_TRN_KANRI_NO = "000000000285";
	/** ディレイド処理結果コード(完了) */
	private static final String DLYD_TRN_RSLT_CD_COMPLETE = "1";
	/** ディレイド処理結果コード(業務エラー) */
	private static final String DLYD_TRN_RSLT_CD_APP_ERR = "2";

	/** 結果コード: "00"（正常） */
	private static final String RESULT_CODE_NORMAL = "00";

	/** レコード項目長 */
	private static final int RECORD_ITEM_MAX_COUNT = 13;
	/** 処理区分: "01" オプション申込 */
	private static final String PRC_TYPE_OPTION_APPLICATION = "01";
	/** 処理区分: "02" オプション解約 */
	private static final String PRC_TYPE_OPTION_CANCEL = "02";
	/** 処理区分: "03" コース変更（新） */
	private static final String PRC_TYPE_COURSE_CHG_NEW = "03";
	/** 処理区分: "04" コース変更（旧） */
	private static final String PRC_TYPE_COURSE_CHG_OLD = "04";
	/** 処理区分: "05" CASカード鍵開け */
	private static final String PRC_TYPE_CAS_CRD_UNLOCK = "05";
	/** 処理区分: "06" CASカード鍵閉め */
	private static final String PRC_TYPE_CAS_CRD_LOCK = "06";
	/** スカパー連携ステータス: 鍵開け依頼中 */
	private static final String SPTV_RNK_STAT_020 = "020";
	/** スカパー連携ステータス: 契約変更中鍵開け依頼中 */
	private static final String SPTV_RNK_STAT_021 = "021";
	/** スカパー連携ステータス: 鍵開けエラー */
	private static final String SPTV_RNK_STAT_090 = "090";
	/** スカパー連携ステータス: 契約変更中鍵開けエラー */
	private static final String SPTV_RNK_STAT_091 = "091";
	/** スカパー連携ステータス: 鍵開け済み */
	private static final String SPTV_RNK_STAT_100 = "100";
	/** スカパー連携ステータス: 鍵閉め依頼中 */
	private static final String SPTV_RNK_STAT_120 = "120";
	/** スカパー連携ステータス: 鍵閉めエラー */
	private static final String SPTV_RNK_STAT_190 = "190";
	/** スカパー連携ステータス: 鍵閉め済み */
	private static final String SPTV_RNK_STAT_200 = "200";
	/** スカパー連携ステータス: 削除 */
	private static final String SPTV_RNK_STAT_910 = "910";
	/** スカパー連携ステータス: 契約変更中鍵開け依頼前 */
	private static final String SPTV_RNK_STAT_011 = "011";
	/** スカパー連携ステータス: 鍵閉め依頼前 */
	private static final String SPTV_RNK_STAT_110 = "110";

	/** CASカード管理.鍵閉め理由コード: "1"（個別鍵閉め）*/
	private static final String CARD_INDIVIDUAL_LOCK = "1";
	/** CASカード管理.鍵閉め理由コード: "2"（コース変更に伴う鍵閉め）*/
	private static final String CARD_LOCK_CHG_COURSE = "2";
	/** CASカード管理.鍵閉め理由コード: "3"（サービスに伴う鍵閉め）*/
	private static final String CARD_SERVICE_LOCK = "3";

	/** オプションサービス契約ステータスが"030"（締結済） */
	private static final String OP_SVC_KEI_STAT_030 = "030";
	/** オプションサービス契約ステータスが"100"（サービス提供中） */
	private static final String OP_SVC_KEI_STAT_100 = "100";
	/** オプションサービス契約ステータスが"210"（休止・中断中） */
	private static final String OP_SVC_KEI_STAT_210 = "210";
	/** オプションサービス契約ステータスが"220"（停止中） */
	private static final String OP_SVC_KEI_STAT_220 = "220";
	/** オプションサービス契約ステータスが"910"（解約済） */
	private static final String OP_SVC_KEI_STAT_910 = "910";
	/** オプションサービス契約ステータスが"920"（キャンセル済） */
	private static final String OP_SVC_KEI_STAT_920 = "920";
	/** サービス契約ステータスが"010"（締結済） */
	private static final String SVC_KEI_STAT_010 = "010";
	/** サービス契約ステータスが"020"(照査済) */
	private static final String SVC_KEI_STAT_020 = "020";
	/** サービス契約ステータスが"030"（締結済） */
	private static final String SVC_KEI_STAT_030 = "030";
	/** サービス契約ステータスが"100"（サービス提供中） */
	private static final String SVC_KEI_STAT_100 = "100";
	/** 料金コースコードが"AC0"（CSベーシック） */
	private static final String CS_BASIC = "AC0";
	/** 料金コースコードが"AC1"（CSプレミアム） */
	private static final String CS_PREMIUM = "AC1";

	/** SQL定義キー(KK_SELECT_011)*/
	private static final String KK_T_OP_SVC_KEI_KK_SELECT_011 = "KK_SELECT_011";
	/** SQL定義キー(KK_SELECT_001)*/
	private static final String KK_T_CSNT_OPSVKEI_KK_SELECT_001 = "KK_SELECT_001";
	/** SQL定義キー(KK_SELECT_002)*/
	private static final String KK_T_CSNT_OPSVKEI_KK_SELECT_002 = "KK_SELECT_002";
	/** SQL定義キー(KK_SELECT_150)*/
	private static final String KK_T_OP_SVC_KEI_KK_SELECT_150 = "KK_SELECT_150";
	/** SQL定義キー(KK_SELECT_366)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_366 = "KK_SELECT_366";
	/** SQL定義キー(KK_SELECT_001)*/
	private static final String KK_T_CASCD_KNRI_KK_SELECT_001 = "KK_SELECT_001";
	/** SQL定義キー(KK_UPDATE_002)*/
	private static final String KK_T_CASCD_KNRI_KK_UPDATE_002 = "KK_UPDATE_002";
	/** SQL定義キー(KK_UPDATE_003)*/
	private static final String KK_T_CASCD_KNRI_KK_UPDATE_003 = "KK_UPDATE_003";
	/** SQL定義キー(KK_UPDATE_004)*/
	private static final String KK_T_CASCD_KNRI_KK_UPDATE_004 = "KK_UPDATE_004";
	/** SQL定義キー(KK_UPDATE_005)*/
	private static final String KK_T_CASCD_KNRI_KK_UPDATE_005 = "KK_UPDATE_005";
	/** SQL定義キー(KK_UPDATE_006)*/
	private static final String KK_T_CASCD_KNRI_KK_UPDATE_006 = "KK_UPDATE_006";
	/** SQL定義キー(KK_DELETE_001)*/
	private static final String KK_T_CASCD_KNRI_KK_DELETE_001 = "KK_DELETE_001";;
	/** SQL定義キー(KK_INSERT_001)*/
	private static final String KK_T_CASCD_KNRI_RK_KK_INSERT_001 = "KK_INSERT_001";
	/** SQL定義キー(KK_SELECT_003)*/
	private static final String KK_T_CSNT_OPSVKEI_KK_SELECT_005 = "KK_SELECT_005";
	/** SQL定義キー(KK_DELETE_001)*/
	private static final String KK_T_CSNT_OPSVKEI_KK_DELETE_001 = "KK_DELETE_001";
	/** SQL定義キー(KK_UPDATE_002)*/
	private static final String KK_T_CSNT_OPSVKEI_KK_UPDATE_002 = "KK_UPDATE_002";
	/** SQL定義キー(KK_UPDATE_003)*/
	private static final String KK_T_CSNT_OPSVKEI_KK_UPDATE_003 = "KK_UPDATE_003";
	/** SQL定義キー(KK_INSERT_001)*/
	private static final String KK_T_CSNT_OPSVKEI_RK_KK_INSERT_001 = "KK_INSERT_001";
	/** SQL定義キー(KK_SELECT_113)*/
	private static final String KK_T_IDO_RSV_KK_SELECT_113 = "KK_SELECT_113";
	/** SQL定義キー(KK_SELECT_012)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_012 = "KK_SELECT_012";

	/** テーブル(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_CASCD_KNRI = "KK_T_CASCD_KNRI";
	/** テーブル(オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_OP_SVC_KEI = "KK_T_OP_SVC_KEI";
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";
	/** テーブル(CAS番号対象オプションサービス契約履歴)*/
	private static final String D_TBL_NAME_KK_T_CSNT_OPSVKEI_RK = "KK_T_CSNT_OPSVKEI_RK";
	/** テーブル(CASカード管理履歴)*/
	private static final String D_TBL_NAME_KK_T_CASCD_KNRI_RK = "KK_T_CASCD_KNRI_RK";
	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";
	/** テーブル(異動予約)*/
	private static final String D_TBL_NAME_KK_T_IDO_RSV = "KK_T_IDO_RSV";

	/** テーブルアクセスクラス(CASカード管理)*/
	private JBSbatSQLAccess db_KK_T_CASCD_KNRI = null;
	/** テーブルアクセスクラス(CAS番号対象オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_CSNT_OPSVKEI = null;
	/** テーブルアクセスクラス(CAS番号対象オプションサービス契約履歴)*/
	private JBSbatSQLAccess db_KK_T_CSNT_OPSVKEI_RK = null;
	/** テーブルアクセスクラス(CASカード管理履歴)*/
	private JBSbatSQLAccess db_KK_T_CASCD_KNRI_RK = null;
	/** テーブルアクセスクラス(オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI = null;
	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	/** テーブルアクセスクラス(異動予約)*/
	private JBSbatSQLAccess db_KK_T_IDO_RSV = null;

	/** スカパー画面操作結果取込リストファイルオブジェクト */
	private JBSbatBusinessFileUtil kklst13409FileObj = null;
	/** スカパー画面操作エラー情報リストファイルオブジェクト */
	private JBSbatBusinessFileUtil kklst13410FileObj = null;
	/** スカパー画面操作結果取込リストファイル名編集用 */
	private static final String KKLST13409_FILE_NM = "スカパー画面操作結果取込リスト_yyyymmddhhmmss.csv";
	/** スカパー画面操作エラー情報リストファイル名編集用 */
	private static final String KKLST13410_FILE_NM = "スカパー画面操作エラー情報リスト_yyyymmddhhmmss.csv";
	/** ファイル名で利用するタイムスタンプのフォーマット */
	private static final String FILE_TIMESTAMP_FORMAT = "yyyymmddhhmmss";
	/** スカパー画面操作結果リスト取込 */
	private int kklst13409Cnt = 0;
	/** スカパー画面操作結果リスト取込エラー */
	private int kklst13410Cnt = 0;
	/** スカパー画面操作結果リスト取込 */
	private int kklst13409ErrCnt = 0;
	

	/**
	 * 必須、属性チェックテーブル
	 * 10.特記事項->10.1.エラー処理を参照してください。
	 *
	 */
	private enum RecordItem{
		/** LINE_NUMBER*/
		行番号								(true,	new String[] { "1", "5" },	"ketasuu2",	"hannkakusuuji1",	JBSbatKKLST13408.LINE_NUMBER),
		/** SUBSCRIPTION_MONTH_DATE_TIME */
		申込年月日時分秒						(true,	new String[] { "17" },	"",	"day_hour1",	JBSbatKKLST13408.SUBSCRIPTION_MONTH_DATE_TIME),
		/** CAS_NUMBER */
		CAS番号								(true,	new String[] { "20" },	"ketasuu1",	"hannkakusuuji1",	JBSbatKKLST13408.CAS_NUMBER),
		/** PROCESS_CLASSIFICATION */
		処理区分								(true,	new String[] { "2" },	"ketasuu1",	"hannkakusuuji1",	JBSbatKKLST13408.PROCESS_CLASSIFICATION),
		/** SKYPER_COOPERATION_DAY */
		スカパー連携日							(false,	new String[] { "8" },	"",	"year_month_day1",	JBSbatKKLST13408.SKYPER_COOPERATION_DAY), // 処理区分が"06"（CASカード鍵閉め）以外の場合、必須
		/** PRODUCT_CODE */
		商品コード								(false,	new String[] { "3" },	"ketasuu1",	"hannkakuesuuji1",	JBSbatKKLST13408.PRODUCT_CODE), // 処理区分が"06"（CASカード鍵閉め）以外の場合、必須
		/** PRODUCT_NAME */
		商品名称								(false,	new String[] { "1", "121" },	"ketasuu2",	"zenkaku",	JBSbatKKLST13408.PRODUCT_NAME), // 処理区分が"06"（CASカード鍵閉め）以外の場合、必須
		/** CATV_CUSTOMER_NUMBER */
		CATV顧客番号							(true,	new String[] { "10" },	"ketasuu1",	"hannkakusuuji1",	JBSbatKKLST13408.CATV_CUSTOMER_NUMBER),
		/** SERVICE_CONTRACT_NUMBER */
		サービス契約番号						(true,	new String[] { "10" },	"ketasuu1",	"hannkakuesuuji1",	JBSbatKKLST13408.SERVICE_CONTRACT_NUMBER),
		/** OPTIONAL_CONTRACT_NUMBER */
		オプションサービス契約番号					(false,	new String[] { "12" },	"ketasuu1",	"hannkakuesuuji1",	JBSbatKKLST13408.OPTIONAL_CONTRACT_NUMBER), // 処理区分が"01"（オプション申込）、"02"（オプション解約）の場合、必須
		/** RESULT_CODE */
		結果コード								(true,	new String[] { "2" },	"ketasuu1",	"hannkakusuuji1",	JBSbatKKLST13408.RESULT_CODE),
		/** ERROR_MESSAGE */
		エラーメッセージ							(false,	new String[] { "0" ,"100" },	"ketasuu2",	"mix",	JBSbatKKLST13408.ERROR_MESSAGE), // エラーコードが"00"（正常）以外の場合、必須
		/** PROCESS_COMPLETION_DATE_AND_TIME */
		処理完了日時							(true,	new String[] { "17" },	"",	"day_hour1",	JBSbatKKLST13408.PROCESS_COMPLETION_DATE_AND_TIME);

		private final boolean required;
		private final String[] numberOfDigits;
		private final String digitPattern;
		private final String pattern;
		private final String itemName;

		RecordItem(boolean required, String[] numberOfDigits, String digitPattern, String pattern, String itemName){
			this.required = required;
			this.numberOfDigits = numberOfDigits;
			this.digitPattern = digitPattern;
			this.pattern = pattern;
			this.itemName = itemName;
		}
	}

	/**
	 * 
	 * 10.特記事項-> 10.2.エラー処理-> (2)エラーメッセージ
	 *
	 */
	private enum ErrorTable{

		NORMAL								(""),

		// エラーコード							// エラーメッセージ一
		/** 入力ファイルの内容が異常です。 */
		E010								("入力ファイルの内容が異常です。"),
		/** 必須エラー */
		E020								("必須エラー（%1%）"),
		/** 桁数エラー */
		E030								("桁数エラー（%1%）"),
		/** 属性エラー */
		E040								("属性エラー（%1%）"),
		/** CASカード管理にレコードが存在しません。 */
		E050								("CASカード管理にレコードが存在しません。"),
		/** CAS番号対象オプションサービス契約にレコードが存在しません。 */
		E060								("CAS番号対象オプションサービス契約にレコードが存在しません。"),
		/** オプションサービス契約にレコードが存在しません。 */
		E070								("オプションサービス契約にレコードが存在しません。"),
		/** 鍵開け可能なステータス状態ではありません */
		E080								("鍵開け可能なステータス状態ではありません。"),
		/** 鍵閉め可能なステータス状態ではありません */
		E090								("鍵閉め可能なステータス状態ではありません。"),
		/** スカパー側から鍵開けエラーが返却されました */
		E110								("スカパー側から鍵開けエラーが返却されました。"),
		/** スカパー側から鍵閉めエラーが返却されました */
		E120								("スカパー側から鍵閉めエラーが返却されました。"),
		/** オプションサービス契約のステータスが不正です */
		W010								("オプションサービス契約のステータスが不正です。"),
		/** サービス契約のステータスが不正です */
		W020								("サービス契約のステータスが不正です。");

		private final String errorMessage;

		ErrorTable(String errorMessage){
			this.errorMessage = errorMessage;
		}

		/**
		 * エラーメッセージテーブル内のエラーメッセージを取得します
		 * @return エラーメッセージ
		 */
		private String getErrorMessage(){
			return this.errorMessage;
		}
	}

	@Override
	public void initial(JBSbatCommonItem commonItem) throws Exception {
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_OP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);
		db_KK_T_CASCD_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CASCD_KNRI);
		db_KK_T_CSNT_OPSVKEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CSNT_OPSVKEI);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_CASCD_KNRI_RK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CASCD_KNRI_RK);
		db_KK_T_CSNT_OPSVKEI_RK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CSNT_OPSVKEI_RK);
		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		db_KK_T_IDO_RSV = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_IDO_RSV);

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// ディレイド処理依頼情報リストを取得する
		List<HashMap<String, Object>> shoriIraiList = JCCbatShoriIraiUtil.getShoriIraiInfo(commonItem, this.jobid);

		// ディレイド処理依頼情報リストが取得できない場合、処理を終了する
		if (null == shoriIraiList)
		{
			return null;
		}

		// 初回処理フラグ true:初回、false:初回以外
		boolean firstTranFlg = true;
		// フリー項目を取得する
		String[] freeItems = freeItem.split(JKKBatConst.S_PARAM_DELIM);

		for (HashMap<String, Object> shoriIrai : shoriIraiList)
		{
			try{
				// ディレイド処理依頼番号
				String shoriIraiNo = (String)shoriIrai.get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO);

				// 初回以外の場合
				if (!firstTranFlg)
				{
					// ディレイド処理依頼結果更新
					JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, DLYD_TRN_RSLT_CD_COMPLETE, null);
					continue;
				}

				firstTranFlg = false;

				String kklst13408FilePath = JCCBatCommon.searchDenshiFile(commonItem, (String)shoriIrai.get(JBSbatCC_T_DLYD_TRN_REQ.INPUT_EFILE_KANRI_NO));

				JBSbatInputFileUtil kklst13408ContFileUtil = new JBSbatInputFileUtil(kklst13408FilePath);
				kklst13408ContFileUtil.setEncode(JKKStrConst.ENCODE_SJIS);						// 文字コード
				kklst13408ContFileUtil.setLine(LINE_SEPARATOR);							// 改行コード

				// Readerオブジェクトを生成する
				kklst13408ContFileUtil.createReader();

				// システム日時を取得する
				String sysDateTime = JKKBatCommon.getSysDateTime();

				// ファイル名
				String kklst13409FileName = KKLST13409_FILE_NM.replaceAll(FILE_TIMESTAMP_FORMAT, sysDateTime);
				// ファイル名
				String kklst13410FileName = KKLST13410_FILE_NM.replaceAll(FILE_TIMESTAMP_FORMAT, sysDateTime);

				// スカパー画面操作結果取込リストファイルパス
				String kklst13409FilePath = freeItems[0] + kklst13409FileName;
				// スカパー画面操作エラー情報リストファイルパス
				String kklst13410FilePath = freeItems[0] + kklst13410FileName;

				// スカパー画面操作結果取込リストファイルオブジェクトを生成する
				kklst13409FileObj = JKKBatCommon.createBusinessFileUtil(kklst13409FilePath,
						JKKBatConst.SJIS, JKKStrConst.LINE_SEPARATOR, JKKBatConst.S_SEP_CAM);

				// スカパー画面操作エラー情報リストファイルオブジェクトを生成する
				kklst13410FileObj = JKKBatCommon.createBusinessFileUtil(kklst13410FilePath,
						JKKBatConst.SJIS, JKKStrConst.LINE_SEPARATOR, JKKBatConst.S_SEP_CAM);
				boolean errorFlag = false;
				boolean errorListFlag = false;
				boolean fileErrorFlag = false;
				kklst13409Cnt = 0;
				kklst13410Cnt = 0;
				kklst13409ErrCnt = 0;

				while (kklst13408ContFileUtil.ready()) {

					// 初期化します
					errorFlag = false;
					errorListFlag = false;

					// ファイルから１レコードを取得する
					String line = kklst13408ContFileUtil.readLine();

					String kklst13408DefName = JBSbatAplConst.getAplConstValue(DIR_IND).concat(KKLST13408_DEF);

					JBSbatInputFileUtil kklst13408FileUtil = new JBSbatInputFileUtil(kklst13408FilePath);

					JBSbatDefFileUtil kklst13408FileDef = new JBSbatDefFileUtil(
							kklst13408DefName, kklst13408FileUtil);
					// ファイルから１レコードを取得する
					// １レコードの情報をマップに格納する
					JBSbatServiceInterfaceMap recordMap = kklst13408FileDef.lineToObject(line, kklst13408FileUtil, 0);

					if (line != null) {
						String[] columns = line.split(JKKStrConst.KDDI_CONMA, -1);
						int columnLength = columns.length;

						// (b)ファイルチェック. 項目数に対して入力ファイルの項目が多いまたは少ない場合、(1)スカパー画面操作結果取込リストを出力し、当該レコードの処理を終了する。
						if(columnLength != RECORD_ITEM_MAX_COUNT){
							// エラーが発生した場合、レコードのプロセスを終了します。E010メッセージ
							// 入力ファイルの内容が異常です
							createKKLST13409(recordMap, ErrorTable.E010.name() , ErrorTable.E010.getErrorMessage());
							errorFlag = true;
							fileErrorFlag = true;
							kklst13409ErrCnt++;
							// 次のレコードに進みます
							continue;
						}

						// (c)属性チェック. 特記事項
						// 必須、属性チェック
						errorFlag = checkRecordItem(recordMap); 
						if (errorFlag) {
							//当該レコードの処理を継続（(f)に遷移）
							processRecord(recordMap, errorFlag, errorListFlag);
							fileErrorFlag = true;
							kklst13409ErrCnt++;
							continue;
						}

						// 処理区分
						String processClassification = (String)recordMap.getMap().get(JBSbatKKLST13408.PROCESS_CLASSIFICATION);
						// オプションサービス契約番号
						String SKYPEROptionServiceNumber = (String)recordMap.getMap().get(JBSbatKKLST13408.OPTIONAL_CONTRACT_NUMBER);
						// CAS番号
						String CASCardNumber = (String)recordMap.getMap().get(JBSbatKKLST13408.CAS_NUMBER);
						ErrorTable errCode = ErrorTable.NORMAL;
						JBSbatCommonDBInterface dataMap = null;

						// (d)関連チェック
						// @処理区分が"01"（オプション申込）
						if(PRC_TYPE_OPTION_APPLICATION.equals(processClassification)){

							// @-1.CAS番号対象オプションサービス契約の存在チェック
							// (ア)スカパー画面操作結果リストのオプションサービス契約番号とCAS番号対象オプションサービス契約のオプションサービス契約番号が一致する。
							executeKK_T_CSNT_OPSVKEI_KK_SELECT_001(new String[]{ SKYPEROptionServiceNumber });
							dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
							if (null == dataMap || 1 > Integer.parseInt(dataMap.getString("CNT"))) {
								errCode = ErrorTable.E060;
								createKKLST13409(recordMap, errCode.name(), errCode.getErrorMessage());
								errorFlag = true;
								fileErrorFlag = true;
								processRecord(recordMap, errorFlag, errorListFlag);
								kklst13409ErrCnt++;
								continue;
							}

							// @-2.オプションサービス契約の存在チェック
							// (ア)スカパー画面操作結果リストのオプションサービス契約番号とオプションサービス契約のオプションサービス契約番号が一致する。
							executeKK_T_OP_SVC_KEI_KK_SELECT_150(new String[]{ SKYPEROptionServiceNumber, super.opeDate });
							dataMap = db_KK_T_OP_SVC_KEI.selectNext();
							if (null == dataMap || 1 > Integer.parseInt(dataMap.getString("CNT"))) {
								errCode = ErrorTable.E070;
								createKKLST13409(recordMap, errCode.name(), errCode.getErrorMessage());
								errorFlag = true;
								fileErrorFlag = true;
								processRecord(recordMap, errorFlag, errorListFlag);
								kklst13409ErrCnt++;
								continue;
							}

							// @-3.CAS番号対象オプションサービス契約のステータスチェック
							// (ア)CAS番号対象オプションサービス契約のスカパー連携ステータスが"020"（鍵開け依頼中）、"090"（鍵開けエラー）。
							executeKK_T_CSNT_OPSVKEI_KK_SELECT_002(new String[]{ SKYPEROptionServiceNumber });
							dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
							String SKYPERLinkageStatus = dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.SPTV_RNK_STAT);
							if (!(SPTV_RNK_STAT_020.equals(SKYPERLinkageStatus)
									|| SPTV_RNK_STAT_090.equals(SKYPERLinkageStatus))) {
								errCode = ErrorTable.E080;
								createKKLST13409(recordMap, errCode.name(), errCode.getErrorMessage());
								errorFlag = true;
								fileErrorFlag = true;
								processRecord(recordMap, errorFlag, errorListFlag);
								kklst13409ErrCnt++;
								continue;
							}

							// (e)関連チェックを行う
							// @-1.オプションサービス契約のステータスチェック
							// (ア)オプションサービス契約のオプションサービス契約ステータスが"030"（締結済）、"100"（サービス提供中）。
							executeKK_T_OP_SVC_KEI_KK_SELECT_011(new String[]{ SKYPEROptionServiceNumber, super.opeDate });
							JBSbatCommonDBInterface opSvcKeiMap = new JBSbatCommonDBInterface();
							opSvcKeiMap = db_KK_T_OP_SVC_KEI.selectNext();
							String opSvcKeiStat = "";
							if(opSvcKeiMap != null){
								// 検索結果のオプションサービス契約ステータスをフィールド変数に設定する。
								opSvcKeiStat = JBSbatStringUtil.Rtrim(opSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT));
								if(!(OP_SVC_KEI_STAT_030.equals(opSvcKeiStat)||
										OP_SVC_KEI_STAT_100.equals(opSvcKeiStat))){
									createKKLST13410(recordMap, ErrorTable.W010.name(), ErrorTable.W010.getErrorMessage());
									errorListFlag = true;
									processRecord(recordMap, errorFlag, errorListFlag);
									kklst13409ErrCnt++;
									continue;
								}
							}
							// エラーなし
							processRecord(recordMap, errorFlag, errorListFlag);
						}
						// A処理区分が"02"（オプション解約）
						else if(PRC_TYPE_OPTION_CANCEL.equals(processClassification)){
							// (d)関連チェック
							// A-1.CAS番号対象オプションサービス契約の存在チェック
							executeKK_T_CSNT_OPSVKEI_KK_SELECT_001(new String[]{ SKYPEROptionServiceNumber });
							dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
							if (null == dataMap || 1 > Integer.parseInt(dataMap.getString("CNT"))) {
								errCode = ErrorTable.E060;
								createKKLST13409(recordMap, errCode.name(), errCode.getErrorMessage());
								errorFlag = true;
								fileErrorFlag = true;
								processRecord(recordMap, errorFlag, errorListFlag);
								kklst13409ErrCnt++;
								continue;
							}

							// A-2.オプションサービス契約の存在チェック
							// (ア)スカパー画面操作結果リストのオプションサービス契約番号とオプションサービス契約のオプションサービス契約番号が一致する。
							executeKK_T_OP_SVC_KEI_KK_SELECT_150(new String[]{ SKYPEROptionServiceNumber, super.opeDate });
							dataMap = db_KK_T_OP_SVC_KEI.selectNext();
							if (null == dataMap || 1 > Integer.parseInt(dataMap.getString("CNT"))) {
								errCode = ErrorTable.E070;
								createKKLST13409(recordMap, errCode.name(), errCode.getErrorMessage());
								errorFlag = true;
								fileErrorFlag = true;
								processRecord(recordMap, errorFlag, errorListFlag);
								kklst13409ErrCnt++;
								continue;
							}

							// A-3.CAS番号対象オプションサービス契約のステータスチェック
							executeKK_T_CSNT_OPSVKEI_KK_SELECT_002(new String[]{ SKYPEROptionServiceNumber });
							dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
							String SKYPERLinkageStatus = dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.SPTV_RNK_STAT);
							if (!(SPTV_RNK_STAT_190.equals(SKYPERLinkageStatus)
									|| SPTV_RNK_STAT_120.equals(SKYPERLinkageStatus))) {
								errCode = ErrorTable.E090;
								createKKLST13409(recordMap, errCode.name(), errCode.getErrorMessage());
								errorFlag = true;
								fileErrorFlag = true;
								processRecord(recordMap, errorFlag, errorListFlag);
								kklst13409ErrCnt++;
								continue;
							}

							// (e)関連チェックを行う
							// (ア)オプションサービス契約のオプションサービス契約ステータスが"910"（解約済）
							executeKK_T_OP_SVC_KEI_KK_SELECT_011(new String[]{ SKYPEROptionServiceNumber, super.opeDate });
							JBSbatCommonDBInterface opSvcKeiMap = new JBSbatCommonDBInterface();
							opSvcKeiMap = db_KK_T_OP_SVC_KEI.selectNext();
							String opSvcKeiStat = "";
							if(opSvcKeiMap != null){
								// 検索結果のオプションサービス契約ステータスをフィールド変数に設定する。
								opSvcKeiStat = JBSbatStringUtil.Rtrim(opSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT));
								if(!OP_SVC_KEI_STAT_910.equals(opSvcKeiStat)){
									createKKLST13410(recordMap, ErrorTable.W010.name(), ErrorTable.W010.getErrorMessage());
									errorListFlag = true;
									processRecord(recordMap, errorFlag, errorListFlag);
									kklst13409ErrCnt++;
									continue;
								}
							}
							// エラーなし
							processRecord(recordMap, errorFlag, errorListFlag);
						}
						// B処理区分が"03"（コース変更（新））
						// C処理区分が"04"（コース変更（旧））
						else if (PRC_TYPE_COURSE_CHG_NEW.equals(processClassification)
								|| PRC_TYPE_COURSE_CHG_OLD.equals(processClassification)) {
							// (d)関連チェック
							// B-1.CASカード管理の存在チェック
							// (ア)スカパー画面操作結果リストのCASカード番号とCASカード管理のCASカード番号が一致する。
							executeKK_T_CASCD_KNRI_KK_SELECT_001(new String[]{ CASCardNumber});
							dataMap = db_KK_T_CASCD_KNRI.selectNext();
							if (null == dataMap) {
								errCode = ErrorTable.E050;
								createKKLST13409(recordMap, errCode.name(), errCode.getErrorMessage());
								errorFlag = true;
								fileErrorFlag = true;
								processRecord(recordMap, errorFlag, errorListFlag);
								kklst13409ErrCnt++;
								continue;
							}
							// B-2.CASカード管理のステータスチェック
							String SKYPERLinkageStatus = dataMap.getString(JBSbatKK_T_CASCD_KNRI.SPTV_RNK_STAT);
							if (!(SPTV_RNK_STAT_021.equals(SKYPERLinkageStatus)
									|| SPTV_RNK_STAT_091.equals(SKYPERLinkageStatus))) {
								errCode = ErrorTable.E080;
								createKKLST13409(recordMap, errCode.name(), errCode.getErrorMessage());
								errorFlag = true;
								fileErrorFlag = true;
								processRecord(recordMap, errorFlag, errorListFlag);
								kklst13409ErrCnt++;
								continue;
							}

							// (e)関連チェックを行う
							// C処理区分が"04"（コース変更（旧）） 場合, 処理なし
							if(PRC_TYPE_COURSE_CHG_NEW.equals(processClassification)){
								String svcNumber = (String)recordMap.getMap().get(JBSbatKKLST13408.SERVICE_CONTRACT_NUMBER);
								executeKK_T_SVC_KEI_KK_SELECT_366(new String[]{ svcNumber, super.opeDate });
								dataMap = db_KK_T_SVC_KEI.selectNext();
								String trgtSvcKeiStat = dataMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);
								// (ア)サービス契約のサービス契約ステータスが"010"(受付済),"020"(照査済),"030"（締結済）,"100"（サービス提供中）。
								if(!(SVC_KEI_STAT_010.equals(trgtSvcKeiStat) ||
										SVC_KEI_STAT_020.equals(trgtSvcKeiStat) ||
										SVC_KEI_STAT_030.equals(trgtSvcKeiStat) ||
										SVC_KEI_STAT_100.equals(trgtSvcKeiStat))){
									createKKLST13410(recordMap, ErrorTable.W020.name(), ErrorTable.W020.getErrorMessage());
									errorListFlag = true;
									processRecord(recordMap, errorFlag, errorListFlag);
									kklst13409ErrCnt++;
									continue;
								}
							}
							// エラーなし
							processRecord(recordMap, errorFlag, errorListFlag);
						}
						// D処理区分が"05"（CASカード鍵開け）
						else if(PRC_TYPE_CAS_CRD_UNLOCK.equals(processClassification)){
							// (d)関連チェック
							// D-1.CASカード管理の存在チェック
							// (ア)スカパーCSV鍵開け結果リストのCASカード番号とCASカード管理のCASカード番号が一致する。
							executeKK_T_CASCD_KNRI_KK_SELECT_001(new String[]{ CASCardNumber });
							dataMap = db_KK_T_CASCD_KNRI.selectNext();
							if (null == dataMap) {
								errCode = ErrorTable.E050;
								createKKLST13409(recordMap, errCode.name(), errCode.getErrorMessage());
								errorFlag = true;
								fileErrorFlag = true;
								processRecord(recordMap, errorFlag, errorListFlag);
								kklst13409ErrCnt++;
								continue;
							}
							// D-2.CASカード管理のステータスチェック
							String SKYPERLinkageStatus = dataMap.getString(JBSbatKK_T_CASCD_KNRI.SPTV_RNK_STAT);
							if (!(SPTV_RNK_STAT_020.equals(SKYPERLinkageStatus)
									|| SPTV_RNK_STAT_090.equals(SKYPERLinkageStatus))) {
								errCode = ErrorTable.E080;
								createKKLST13409(recordMap, errCode.name(), errCode.getErrorMessage());
								errorFlag = true;
								fileErrorFlag = true;
								processRecord(recordMap, errorFlag, errorListFlag);
								kklst13409ErrCnt++;
								continue;
							} 

							// (e)関連チェックを行う
							// (ア)サービス契約のサービス契約ステータスが"010"(受付済),"020"(照査済),"030"（締結済）,"100"（サービス提供中）。
							String svcNumber = (String)recordMap.getMap().get(JBSbatKKLST13408.SERVICE_CONTRACT_NUMBER);
							executeKK_T_SVC_KEI_KK_SELECT_366(new String[]{ svcNumber, super.opeDate });
							dataMap = db_KK_T_SVC_KEI.selectNext();
							String trgtSvcKeiStat = dataMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);
							// (ア)サービス契約のサービス契約ステータスが"010"(受付済),"020"(照査済),"030"（締結済）,"100"（サービス提供中）。
							if(!(SVC_KEI_STAT_010.equals(trgtSvcKeiStat) ||
									SVC_KEI_STAT_020.equals(trgtSvcKeiStat) ||
									SVC_KEI_STAT_030.equals(trgtSvcKeiStat) ||
									SVC_KEI_STAT_100.equals(trgtSvcKeiStat))){
								createKKLST13410(recordMap, ErrorTable.W020.name(), ErrorTable.W020.getErrorMessage());
								errorListFlag = true;
								processRecord(recordMap, errorFlag, errorListFlag);
								kklst13409ErrCnt++;
								continue;
							}
							// エラーなし
							processRecord(recordMap, errorFlag, errorListFlag);
						}
						// E処理区分が"06"（CASカード鍵閉め）
						else if(PRC_TYPE_CAS_CRD_LOCK.equals(processClassification)){
							// (d)関連チェック
							// E-1.CASカード管理の存在チェック
							// (ア)スカパーCSV鍵閉め結果リストのCASカード番号とCASカード管理のCASカード番号が一致する。
							executeKK_T_CASCD_KNRI_KK_SELECT_001(new String[]{ CASCardNumber });
							dataMap = db_KK_T_CASCD_KNRI.selectNext();
							if (null == dataMap) {
								errCode = ErrorTable.E050;
								createKKLST13409(recordMap, errCode.name(), errCode.getErrorMessage());
								errorFlag = true;
								fileErrorFlag = true;
								processRecord(recordMap, errorFlag, errorListFlag);
								kklst13409ErrCnt++;
								continue;
							}

							// E-2.CASカード管理のステータスチェック
							// (ア)CASカード管理のスカパー連携ステータスが"120"（鍵閉め依頼中）、"190"（鍵閉めエラー）。
							String SKYPERLinkageStatus = dataMap.getString(JBSbatKK_T_CASCD_KNRI.SPTV_RNK_STAT);
							if (!(SPTV_RNK_STAT_120.equals(SKYPERLinkageStatus)
									|| SPTV_RNK_STAT_190.equals(SKYPERLinkageStatus))) {
								errCode = ErrorTable.E090;
								createKKLST13409(recordMap, errCode.name(), errCode.getErrorMessage());
								errorFlag = true;
								fileErrorFlag = true;
								processRecord(recordMap, errorFlag, errorListFlag);
								kklst13409ErrCnt++;
								continue;
							}
							// エラーなし
							processRecord(recordMap, errorFlag, errorListFlag);
						}
					}
					
				}
				// ループの外側

				JKKBatCommon.closeBusinessFileUtil(kklst13409FileObj);
				JKKBatCommon.closeBusinessFileUtil(kklst13410FileObj);

				// (g)スカパー画面操作結果リストを全件読み込み後、(1)スカパー画面操作結果取込リスト／(2)スカパー画面操作エラー情報リストを登録する。
				// @(1)スカパー画面操作結果取込リスト／(2)スカパー画面操作エラー情報リストが有件の場合、
				// (1)スカパー画面操作結果取込リスト／(2)スカパー画面操作エラー情報リストを登録する。
				// ディレイド処理依頼結果コード："2"（業務エラー）
				// 電子ファイル管理／ダウンロードファイル管理の登録
				// エラーなしの場合
				if (kklst13410Cnt > 0)
				{
					JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, DLYD_TRN_RSLT_CD_APP_ERR, null);
				}
				else
				{
					JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, DLYD_TRN_RSLT_CD_COMPLETE, null);
				}

				if (kklst13409Cnt > 0) {
					JKKBatCommon.createFile(commonItem,										// バッチ共通パラメータ電文
											KKLST13409_TRN_KANRI_NO,						// 処理管理番号
											Long.valueOf(kklst13409Cnt),					// データ件数
											FILE_CD,										// ファイルコード
											freeItems[0],									// ファイルディレクトリ
											kklst13409FileName,								// ファイル名
											JBSbatDateUtil.adjustMonth(super.opeDate, 1), 	// ファイル削除年月日（日中バッチ運用日 + 1ヶ月）
											db_ZM_T_DL_FILE_KANRI,							// テーブルアクセスクラス
											false);											// 圧縮実行フラグ
				}

				if (kklst13410Cnt > 0) {
					JKKBatCommon.createFile(commonItem,										// バッチ共通パラメータ電文
											KKLST13410_TRN_KANRI_NO,						// 処理管理番号
											Long.valueOf(kklst13410Cnt),					// データ件数
											FILE_CD,										// ファイルコード
											freeItems[0],									// ファイルディレクトリ
											kklst13410FileName,								// ファイル名
											JBSbatDateUtil.adjustMonth(super.opeDate, 1), 	// ファイル削除年月日（日中バッチ運用日 + 1ヶ月）
											db_ZM_T_DL_FILE_KANRI,							// テーブルアクセスクラス
											false);											// 圧縮実行フラグ
				}

				// (h)処理詳細(b)(c)(d)でチェックエラーが発生した場合、以下のログを出力する（複数件であっても、1行のみ）。
				if (fileErrorFlag) {
					super.logPrint.printBusinessErrorLog("EKKB2400TW", new String[] {
							"スカパーオプションチャンネル鍵閉め登録結果反映", "スカパー画面操作結果取込リスト" });
				}

				if (kklst13408ContFileUtil != null) {

					kklst13408ContFileUtil.close();
				}
			}
			catch(Exception e)
			{
				// 想定外のエラー発生時は、ロールバック後にディレイド処理依頼だけをエラー更新してコミット。
				commonItem.getConnection().rollback();
				JCCBatCommon.updateShoriIraiResult(
						commonItem, (String)shoriIrai.get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO), JKKStrConst.DLYD_TRN_RSLT_CD_SYS_ERR, null);
				commit();

				// エラー通知は必要なので例外はそのまま投げる
				throw e;
			}
		}
		return null;
		/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * CASカード管理・CAS番号対象オプションサービス契約の内容を更新／スカパー画面操作エラー情報リストを出力する。
	 * @param recordMap レコード
	 * @param errCode 
	 * @throws Exception 
	 */
	private void processRecord(JBSbatServiceInterfaceMap recordMap, boolean errCode, boolean errListFlg) throws Exception {

		
		String processClassification = (String)recordMap.getMap().get(JBSbatKKLST13408.PROCESS_CLASSIFICATION);
		String resultCode = (String) recordMap.getMap().get(JBSbatKKLST13408.RESULT_CODE);
		String opSvcKeiNo = (String)recordMap.getMap().get(JBSbatKKLST13408.OPTIONAL_CONTRACT_NUMBER);
		String coopDay = (String) recordMap.getMap().get(JBSbatKKLST13408.SKYPER_COOPERATION_DAY);
		String cascdNo = (String) recordMap.getMap().get(JBSbatKKLST13408.CAS_NUMBER);
		boolean errFlg = errListFlg;
		boolean opSvcKeiFlg = false;

		// @処理区分が"01"（オプション申込）
		if (PRC_TYPE_OPTION_APPLICATION.equals(processClassification)) {
			if (RESULT_CODE_NORMAL.equals(resultCode)) {
				if (!errCode) { // @-1-1.処理詳細(c)(d)でエラーが発生していない場合、以下の更新処理を実施する。
					// (13)CAS番号対象オプションサービス契約(更新)
					executeKK_T_CSNT_OPSVKEI_KK_UPDATE_002(new String[] {
							SPTV_RNK_STAT_100, coopDay, opSvcKeiNo });

					// (18)CAS番号対象オプションサービス契約履歴(登録)
					JBSbatCommonDBInterface dbInfoCsntPk = executeKK_T_CSNT_OPSVKEI_PKSELECT(new String[] { opSvcKeiNo });
					if (null != dbInfoCsntPk) {
						// CAS番号対象オプションサービス契約履歴を登録します。
						this.addCsntOpsvkeiRk(dbInfoCsntPk);
					}
					
					if(!errFlg)
					{
						createKKLST13409(recordMap, "", ErrorTable.NORMAL.getErrorMessage());
					}
				}
			}
			else {
				if (!errCode) { // @-2-1.処理詳細(c)(d)でエラーが発生していない場合、以下の更新処理を実施する。
					// (14)CAS番号対象オプションサービス契約(更新)
					executeKK_T_CSNT_OPSVKEI_KK_UPDATE_003(new String[] {
							SPTV_RNK_STAT_090, opSvcKeiNo });

					// (19)CAS番号対象オプションサービス契約履歴(登録)
					JBSbatCommonDBInterface dbInfoCsntPk = executeKK_T_CSNT_OPSVKEI_PKSELECT(new String[] { opSvcKeiNo });
					if (null != dbInfoCsntPk) {
						// CAS番号対象オプションサービス契約履歴を登録します。
						this.addCsntOpsvkeiRk(dbInfoCsntPk);
					}
				}
				// スカパーCSV鍵開けエラーリストを出力し、当該レコードの処理を終了する。
				// （結果反映エラーコード：E110／結果反映エラーメッセージ：スカパー側から鍵開けエラーが返却されました。）
				createKKLST13410(recordMap, ErrorTable.E110.name(), ErrorTable.E110.getErrorMessage());
			}
		}
		// A処理区分が"02"（オプション解約）
		else if(PRC_TYPE_OPTION_CANCEL.equals(processClassification)){
			if(RESULT_CODE_NORMAL.equals(resultCode)){
				if (!errCode) { // A-1-1.処理詳細(c)(d)でエラーが発生していない場合、以下の更新処理を実施する。

					JBSbatCommonDBInterface dbInfoCsntPk = executeKK_T_CSNT_OPSVKEI_PKSELECT(new String[]{ opSvcKeiNo });
					// (15)CAS番号対象オプションサービス契約(物理削除)
					executeKK_T_CSNT_OPSVKEI_KK_DELETE_001(new String[] { opSvcKeiNo });

					// (20)CAS番号対象オプションサービス契約履歴(登録)
					// (21)CAS番号対象オプションサービス契約履歴(登録)
					if(null != dbInfoCsntPk)
					{
						// CAS番号対象オプションサービス契約履歴を登録します。
						this.addCsntOpsvkeiRk(dbInfoCsntPk, SPTV_RNK_STAT_200, coopDay); // (20)CAS番号対象オプションサービス契約履歴(登録)
						this.addCsntOpsvkeiRk(dbInfoCsntPk, SPTV_RNK_STAT_910, coopDay); // (21)CAS番号対象オプションサービス契約履歴(登録)
					}
					// 正常処理ログリスト出力
					if(!errFlg)
					{
						createKKLST13409(recordMap, "", ErrorTable.NORMAL.getErrorMessage());
					}
				}
			}
			else{
				if (!errCode) {
					// (17)CAS番号対象オプションサービス契約(更新)
					executeKK_T_CSNT_OPSVKEI_KK_UPDATE_003(new String[] {
							SPTV_RNK_STAT_190, opSvcKeiNo });
					// (22)CAS番号対象オプションサービス契約履歴(登録)
					JBSbatCommonDBInterface dbInfoCsntPk = executeKK_T_CSNT_OPSVKEI_PKSELECT(new String[] { opSvcKeiNo });
					if (null != dbInfoCsntPk) {
						// CAS番号対象オプションサービス契約履歴を登録します。
						this.addCsntOpsvkeiRk(dbInfoCsntPk);
					}
				}
				// スカパーCSV鍵開けエラーリストを出力し、当該レコードの処理を終了する。
				// （結果反映エラーコード：E120／結果反映エラーメッセージ：スカパー側から鍵閉めエラーが返却されました。）
				createKKLST13410(recordMap, ErrorTable.E120.name(), ErrorTable.E120.getErrorMessage());
			}
		}
		// B処理区分が"03"（コース変更（新））
		// C処理区分が"04"（コース変更（旧））
		else if (PRC_TYPE_COURSE_CHG_NEW.equals(processClassification)
				|| PRC_TYPE_COURSE_CHG_OLD.equals(processClassification)) {
			if (RESULT_CODE_NORMAL.equals(resultCode)) {
				if (!errCode) {
					// (6)CASカード管理(更新)
					executeKK_T_CASCD_KNRI_KK_UPDATE_002(new String[] {
							SPTV_RNK_STAT_100, cascdNo });

					// (12)CASカード管理履歴(登録)
					JBSbatCommonDBInterface dbInfoCascdKnriPk = executeKK_T_CASCD_KNRI_PKSELECT(new String[] { cascdNo });
					this.addCascdKnriRk(dbInfoCascdKnriPk);
					
					if(!errFlg)
					{
						createKKLST13409(recordMap, "", ErrorTable.NORMAL.getErrorMessage());
					}
				}
			}
			else {
				if (!errCode) {
					// (28)CASカード管理(更新)
					executeKK_T_CASCD_KNRI_KK_UPDATE_003(new String[] {
							SPTV_RNK_STAT_091, cascdNo });

					// (29)CASカード管理履歴(登録)
					JBSbatCommonDBInterface dbInfoCascdKnriPk = executeKK_T_CASCD_KNRI_PKSELECT(new String[] { cascdNo });
					this.addCascdKnriRk(dbInfoCascdKnriPk);
				}
				// スカパーCSV鍵開けエラーリストを出力し、当該レコードの処理を終了する。
				// （結果反映エラーコード：E110／結果反映エラーメッセージ：スカパー側から鍵開けエラーが返却されました。）
				createKKLST13410(recordMap, ErrorTable.E110.name(), ErrorTable.E110.getErrorMessage());
			}
		}
		// D処理区分が"05"（CASカード鍵開け）
		else if(PRC_TYPE_CAS_CRD_UNLOCK.equals(processClassification)){
			if(RESULT_CODE_NORMAL.equals(resultCode)){
				if (!errCode) {
					// (1)CASカード管理(更新)
					executeKK_T_CASCD_KNRI_KK_UPDATE_004(new String[] {
							SPTV_RNK_STAT_100, coopDay, cascdNo });

					// (7)CASカード管理履歴(登録)
					JBSbatCommonDBInterface dbInfoCascdKnriPk = executeKK_T_CASCD_KNRI_PKSELECT(new String[] { cascdNo });
					this.addCascdKnriRk(dbInfoCascdKnriPk);

					// D-1-1-2.処理詳細(c)(d)でエラーが発生していない場合 且つ コース変更の予約が存在する場合（※１）、以下の更新処理を実施する。
					// ※１：異動区分：コース変更／異動予約状態コード：未反映・予約手続中
					String svcKeiNo = (String)recordMap.getMap().get(JBSbatKKLST13408.SERVICE_CONTRACT_NUMBER);
					executeKK_T_IDO_RSV_KK_SELECT_113(new String[] { svcKeiNo });
					JBSbatCommonDBInterface idoRSVMap = new JBSbatCommonDBInterface();
					idoRSVMap = db_KK_T_IDO_RSV.selectNext();

					if (null != idoRSVMap) {
						// サービス契約.料金コースコード
						executeKK_T_SVC_KEI_KK_SELECT_012(new String[] { svcKeiNo, super.opeDate });
						JBSbatCommonDBInterface svcKeiMap = new JBSbatCommonDBInterface();
						svcKeiMap = db_KK_T_SVC_KEI.selectNext();
						String oldCourseCode = "";
						if (null != svcKeiMap) {
							oldCourseCode = JBSbatStringUtil.Rtrim(svcKeiMap.getString(JBSbatKK_T_SVC_KEI.PCRS_CD));
						}
						// 異動予約.新料金コースコード
						String newCourseCode = "";
						newCourseCode = JBSbatStringUtil.Rtrim(idoRSVMap.getString(JBSbatKK_T_IDO_RSV.NEW_PCRS_CD));

						if (CS_BASIC.equals(oldCourseCode)
								&& CS_PREMIUM.equals(newCourseCode)) {
							// 011(契約変更中鍵開け依頼前）
							String ym = super.opeDate.substring(0, 6);
							StringBuffer sb = new StringBuffer();
							sb.append(ym);
							sb.append(JBSbatDateUtil.getEndOfMonth(ym));

							executeKK_T_CASCD_KNRI_KK_UPDATE_006(
								new String[] {
										SPTV_RNK_STAT_011,
										sb.toString(), // コース変更鍵開け年月日
										cascdNo
										});
							dbInfoCascdKnriPk = executeKK_T_CASCD_KNRI_PKSELECT(new String[] { cascdNo });
							this.addCascdKnriRk(dbInfoCascdKnriPk);
						}
						else if (CS_PREMIUM.equals(oldCourseCode)
								&& CS_BASIC.equals(newCourseCode)) {
							// 011(契約変更中鍵開け依頼前）
							StringBuffer sb = new StringBuffer();
							sb.append(super.opeDate.substring(0, 6));
							sb.append("01");
							executeKK_T_CASCD_KNRI_KK_UPDATE_006(
									new String[] {
											SPTV_RNK_STAT_011,
											JBSbatDateUtil.adjustMonth(sb.toString(), 1), // コース変更鍵開け年月日
											cascdNo
											});
							dbInfoCascdKnriPk = executeKK_T_CASCD_KNRI_PKSELECT(new String[] { cascdNo });
							this.addCascdKnriRk(dbInfoCascdKnriPk);
						}
						else if(!(CS_PREMIUM.equals(newCourseCode) || CS_BASIC.equals(newCourseCode)) &&
								(CS_PREMIUM.equals(oldCourseCode) || CS_BASIC.equals(oldCourseCode))){
							// 110（鍵閉め依頼前）
							StringBuffer sb = new StringBuffer();
							sb.append(super.opeDate.substring(0, 6));
							sb.append("01");
							executeKK_T_CASCD_KNRI_KK_UPDATE_005(
									new String[] {
											SPTV_RNK_STAT_110,
											JBSbatDateUtil.adjustMonth(sb.toString(), 1), // 鍵閉め年月日
// 2025/03/27 ANK-4592-00-00 ADD START
											CARD_LOCK_CHG_COURSE,
// 2025/03/27 ANK-4592-00-00 ADD END
											cascdNo
											});
							dbInfoCascdKnriPk = executeKK_T_CASCD_KNRI_PKSELECT(new String[] { cascdNo });
							this.addCascdKnriRk(dbInfoCascdKnriPk);
						}
					}
					if(!errFlg)
					{
						createKKLST13409(recordMap, "", ErrorTable.NORMAL.getErrorMessage());
					}
				}
			}
			else {
				if (!errCode) {
					// (2)CASカード管理(更新)
					executeKK_T_CASCD_KNRI_KK_UPDATE_003(new String[] {
							SPTV_RNK_STAT_090, cascdNo });

					// (8)CASカード管理履歴(登録)
					JBSbatCommonDBInterface dbInfoCascdKnriPk = executeKK_T_CASCD_KNRI_PKSELECT(new String[] { cascdNo });
					this.addCascdKnriRk(dbInfoCascdKnriPk);
				}
				// スカパーCSV鍵開けエラーリストを出力し、当該レコードの処理を終了する。
				// （結果反映エラーコード：E110／結果反映エラーメッセージ：スカパー側から鍵開けエラーが返却されました。）
				createKKLST13410(recordMap, ErrorTable.E110.name(), ErrorTable.E110.getErrorMessage());
			}
		}
		// E処理区分が"06"（CASカード鍵閉め）
		else if(PRC_TYPE_CAS_CRD_LOCK.equals(processClassification)){
			// CAS番号
			String CASCardNumber = (String)recordMap.getMap().get(JBSbatKKLST13408.CAS_NUMBER);
			executeKK_T_CASCD_KNRI_KK_SELECT_001(new String[]{ CASCardNumber });
			JBSbatCommonDBInterface cascd_Map = db_KK_T_CASCD_KNRI.selectNext();
			String cardLockCode = null;
			if(cascd_Map != null){
				cardLockCode = cascd_Map.getString(JBSbatKK_T_CASCD_KNRI.KEYCLS_RSN_CD);
			}

			// E-1.スカパー画面操作結果リストの結果コードが"00"（正常）且つ、CASカード管理.鍵閉め理由コードが"1"（個別鍵閉め）の場合 
			if(RESULT_CODE_NORMAL.equals(resultCode) && CARD_INDIVIDUAL_LOCK.equals(cardLockCode)){
				// E-1-1.処理詳細(c)(d)でエラーが発生していない場合、以下の更新処理を実施する。
				if (!errCode) {
					JBSbatCommonDBInterface dataMap = new JBSbatCommonDBInterface();
					executeKK_T_CSNT_OPSVKEI_KK_SELECT_005(new String[]{ CASCardNumber });
					dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
					// E-1-2.処理詳細(c)(d)でエラーが発生していない場合 且つ CASカード管理に紐づくCAS番号対象オプションサービス契約が存在する場合、以下の更新処理を実施する。
					while(null != dataMap){
						// オプションサービス契約のステータスチェック
						// (ア)オプションサービス契約のサービス契約ステータスが"210"（休止・中断中）,"220"（停止中）,"910"（解約済）,"920"（キャンセル済）。
						executeKK_T_OP_SVC_KEI_KK_SELECT_011(new String[]{ dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.OP_SVC_KEI_NO), super.opeDate });
						JBSbatCommonDBInterface opSvcKeiMap = new JBSbatCommonDBInterface();
						opSvcKeiMap = db_KK_T_OP_SVC_KEI.selectNext();
						if(null == opSvcKeiMap)
						{
							createKKLST13409(recordMap, ErrorTable.E070.name(), ErrorTable.E070.getErrorMessage());
							errFlg = true;
							opSvcKeiFlg = true;
							break;
						}
						dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
					}
					
					if(!opSvcKeiFlg){
						
						executeKK_T_CSNT_OPSVKEI_KK_SELECT_005(new String[]{ CASCardNumber });
						dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
						while(null != dataMap){
							// オプションサービス契約のステータスチェック
							// (ア)オプションサービス契約のサービス契約ステータスが"210"（休止・中断中）,"220"（停止中）,"910"（解約済）,"920"（キャンセル済）。
							executeKK_T_OP_SVC_KEI_KK_SELECT_011(new String[]{ dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.OP_SVC_KEI_NO), super.opeDate });
							JBSbatCommonDBInterface opSvcKeiMap = new JBSbatCommonDBInterface();
							opSvcKeiMap = db_KK_T_OP_SVC_KEI.selectNext();
							String opSvcKeiStat = "";
							if(null != opSvcKeiMap)
							{
								// 検索結果のオプションサービス契約ステータスをフィールド変数に設定する。
								opSvcKeiStat = JBSbatStringUtil.Rtrim(opSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT)); 
								if(!(OP_SVC_KEI_STAT_210.equals(opSvcKeiStat) ||
										OP_SVC_KEI_STAT_220.equals(opSvcKeiStat) ||
											OP_SVC_KEI_STAT_910.equals(opSvcKeiStat) ||
											OP_SVC_KEI_STAT_920.equals(opSvcKeiStat))) {
									// 条件に合致しない場合、ワーニングをとする
									createKKLST13410(recordMap, ErrorTable.W010.name(), ErrorTable.W010.getErrorMessage());
									errFlg = true;
								}
							}

							JBSbatCommonDBInterface dbInfoCsntPk = executeKK_T_CSNT_OPSVKEI_PKSELECT(new String[] { dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.OP_SVC_KEI_NO) });

							// (15)CAS番号対象オプションサービス契約(物理削除)
							executeKK_T_CSNT_OPSVKEI_KK_DELETE_001(new String[] { dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.OP_SVC_KEI_NO) });

							// (20)CAS番号対象オプションサービス契約履歴(登録)
							// (21)CAS番号対象オプションサービス契約履歴(登録)
							if (null != dbInfoCsntPk) {
								// CAS番号対象オプションサービス契約履歴を登録します。
								this.addCsntOpsvkeiRk(dbInfoCsntPk, SPTV_RNK_STAT_200,
										super.opeDate);
								this.addCsntOpsvkeiRk(dbInfoCsntPk, SPTV_RNK_STAT_910,
										super.opeDate);
							}
							dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
						}
						
						// E-1-1.処理詳細(c)(d)でエラーが発生していない場合、以下の更新処理を実施する。
						JBSbatCommonDBInterface dbInfoCascdKnriPk = executeKK_T_CASCD_KNRI_PKSELECT(new String[] { cascdNo });		
						// (3)CASカード管理(物理削除)
						executeKK_T_CASCD_KNRI_KK_DELETE_001(new String[] { cascdNo });

						// (9)CASカード管理履歴(登録)
						// (10)CASカード管理履歴(登録)
						this.addCascdKnriRk(dbInfoCascdKnriPk, SPTV_RNK_STAT_200,
								super.opeDate);
						this.addCascdKnriRk(dbInfoCascdKnriPk, SPTV_RNK_STAT_910,
								super.opeDate);

						if(!errFlg)
						{
							createKKLST13409(recordMap, "", ErrorTable.NORMAL.getErrorMessage());
						}
					}
				}
			}
			// E-2.スカパー画面操作結果リストの結果コードが"00"（正常）且つ、CASカード管理.鍵閉め理由コードが"2"（コース変更に伴う鍵閉め）の場合
			else if (RESULT_CODE_NORMAL.equals(resultCode) && CARD_LOCK_CHG_COURSE.equals(cardLockCode)){
				if(!errCode){
					// (4)CASカード管理(更新)
					JBSbatCommonDBInterface dataMap = new JBSbatCommonDBInterface();
					executeKK_T_CSNT_OPSVKEI_KK_SELECT_005(new String[]{ CASCardNumber });

				// E-2-2.処理詳細(c)(d)でエラーが発生していない場合 且つ CASカード管理に紐づくCAS番号対象オプションサービス契約が存在する場合、以下の更新処理を実施する。
					dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
					while(null != dataMap){
						// ・オプションサービス契約のステータスチェック
						// (ア)オプションサービス契約のサービス契約ステータスが"210"（休止・中断中）,"220"（停止中）,"910"（解約済）,"920"（キャンセル済）。
						executeKK_T_OP_SVC_KEI_KK_SELECT_011(new String[]{ dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.OP_SVC_KEI_NO), super.opeDate });
						JBSbatCommonDBInterface opSvcKeiMap = new JBSbatCommonDBInterface();
						opSvcKeiMap = db_KK_T_OP_SVC_KEI.selectNext();
						if(null == opSvcKeiMap)
						{
							createKKLST13409(recordMap, ErrorTable.E070.name(), ErrorTable.E070.getErrorMessage());
							errFlg = true;
							opSvcKeiFlg = true;
							break;
						}
						dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
					}
					
					if(!opSvcKeiFlg){
						
						executeKK_T_CSNT_OPSVKEI_KK_SELECT_005(new String[]{ CASCardNumber });
						dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
						
						while(null != dataMap){
							// ・オプションサービス契約のステータスチェック
							// (ア)オプションサービス契約のサービス契約ステータスが"210"（休止・中断中）,"220"（停止中）,"910"（解約済）,"920"（キャンセル済）。
							executeKK_T_OP_SVC_KEI_KK_SELECT_011(new String[]{ dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.OP_SVC_KEI_NO), super.opeDate });
							JBSbatCommonDBInterface opSvcKeiMap = new JBSbatCommonDBInterface();
							opSvcKeiMap = db_KK_T_OP_SVC_KEI.selectNext();
							String opSvcKeiStat = "";
							if(null != opSvcKeiMap)
							{
								// 検索結果のオプションサービス契約ステータスをフィールド変数に設定する。
								opSvcKeiStat = JBSbatStringUtil.Rtrim(opSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT)); 
								if(!(OP_SVC_KEI_STAT_210.equals(opSvcKeiStat) ||
										OP_SVC_KEI_STAT_220.equals(opSvcKeiStat) ||
											OP_SVC_KEI_STAT_910.equals(opSvcKeiStat) ||
											OP_SVC_KEI_STAT_920.equals(opSvcKeiStat))) {
									// 条件に合致しない場合、ワーニングをとする
									createKKLST13410(recordMap, ErrorTable.W010.name(), ErrorTable.W010.getErrorMessage());
									errFlg = true;
								}
							}
							JBSbatCommonDBInterface dbInfoCsntPk = executeKK_T_CSNT_OPSVKEI_PKSELECT(new String[] { dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.OP_SVC_KEI_NO) });
		
							// (15)CAS番号対象オプションサービス契約(物理削除)
							executeKK_T_CSNT_OPSVKEI_KK_DELETE_001(new String[] { dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.OP_SVC_KEI_NO) });
		
							// (20)CAS番号対象オプションサービス契約履歴(登録)
							// (21)CAS番号対象オプションサービス契約履歴(登録)
							if (null != dbInfoCsntPk) {
								// CAS番号対象オプションサービス契約履歴を登録します。
								this.addCsntOpsvkeiRk(dbInfoCsntPk, SPTV_RNK_STAT_200,
										super.opeDate);
								this.addCsntOpsvkeiRk(dbInfoCsntPk, SPTV_RNK_STAT_910,
										super.opeDate);
							}
							dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
						}
						
						// (4)CASカード管理(更新)
						executeKK_T_CASCD_KNRI_KK_UPDATE_004(new String[] {
								SPTV_RNK_STAT_200, super.opeDate, cascdNo });
		
						// (9)CASカード管理履歴(登録)
						JBSbatCommonDBInterface dbInfoCascdKnriPk = executeKK_T_CASCD_KNRI_PKSELECT(new String[] { cascdNo });
						this.addCascdKnriRk(dbInfoCascdKnriPk);
		
					// 正常処理ログリスト出力
						if(!errFlg)
						{
							createKKLST13409(recordMap, "", ErrorTable.NORMAL.getErrorMessage());
						}
					}
				}
			}
			// E-3.スカパー画面操作結果リストの結果コードが"00"（正常）且つ、CASカード管理.鍵閉め理由コードが"3"（サービスに伴う鍵閉め）の場合
			else if(RESULT_CODE_NORMAL.equals(resultCode) && CARD_SERVICE_LOCK.equals(cardLockCode)){
				if(!errCode){
				// CAS番号
					JBSbatCommonDBInterface dataMap = new JBSbatCommonDBInterface();
					executeKK_T_CSNT_OPSVKEI_KK_SELECT_005(new String[]{ CASCardNumber });
				// E-3-1.処理詳細(c)(d)でエラーが発生していない場合、以下の更新処理を実施する。
		
					dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
					while(null != dataMap){
						// オプションサービス契約のステータスチェック
						// (ア)オプションサービス契約のサービス契約ステータスが"210"（休止・中断中）,"220"（停止中）,"910"（解約済）,"920"（キャンセル済）。
						executeKK_T_OP_SVC_KEI_KK_SELECT_011(new String[]{ dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.OP_SVC_KEI_NO), super.opeDate });
						JBSbatCommonDBInterface opSvcKeiMap = new JBSbatCommonDBInterface();
						opSvcKeiMap = db_KK_T_OP_SVC_KEI.selectNext();
						if(null == opSvcKeiMap)
						{
							createKKLST13409(recordMap, ErrorTable.E070.name(), ErrorTable.E070.getErrorMessage());
							errFlg = true;
							opSvcKeiFlg = true;
							break;
						}
						dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
					}
					
					if(!opSvcKeiFlg){
						
						executeKK_T_CSNT_OPSVKEI_KK_SELECT_005(new String[]{ CASCardNumber });
						dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
						
						while(null != dataMap){
							// オプションサービス契約のステータスチェック
							// (ア)オプションサービス契約のサービス契約ステータスが"210"（休止・中断中）,"220"（停止中）,"910"（解約済）,"920"（キャンセル済）。
							executeKK_T_OP_SVC_KEI_KK_SELECT_011(new String[]{ dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.OP_SVC_KEI_NO), super.opeDate });
							JBSbatCommonDBInterface opSvcKeiMap = new JBSbatCommonDBInterface();
							opSvcKeiMap = db_KK_T_OP_SVC_KEI.selectNext();
							String opSvcKeiStat = "";
							if(null != opSvcKeiMap)
							{
								// 検索結果のオプションサービス契約ステータスをフィールド変数に設定する。
								opSvcKeiStat = JBSbatStringUtil.Rtrim(opSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT)); 
								if(!(OP_SVC_KEI_STAT_210.equals(opSvcKeiStat) ||
										OP_SVC_KEI_STAT_220.equals(opSvcKeiStat) ||
											OP_SVC_KEI_STAT_910.equals(opSvcKeiStat) ||
											OP_SVC_KEI_STAT_920.equals(opSvcKeiStat))) {
									// 条件に合致しない場合、ワーニングをとする
									createKKLST13410(recordMap, ErrorTable.W010.name(), ErrorTable.W010.getErrorMessage());
									errFlg = true;
								}
							}
		
							// (16)CAS番号対象オプションサービス契約(更新)
							executeKK_T_CSNT_OPSVKEI_KK_UPDATE_002(new String[] {
									SPTV_RNK_STAT_200, super.opeDate, dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.OP_SVC_KEI_NO) });
		
							// (20)CAS番号対象オプションサービス契約履歴(登録)
							JBSbatCommonDBInterface dbInfoCsntPk = executeKK_T_CSNT_OPSVKEI_PKSELECT(new String[] { dataMap.getString(JBSbatKK_T_CSNT_OPSVKEI.OP_SVC_KEI_NO) });
							if (null != dbInfoCsntPk) {
								// CAS番号対象オプションサービス契約履歴を登録します。
								this.addCsntOpsvkeiRk(dbInfoCsntPk);
							}
							dataMap = db_KK_T_CSNT_OPSVKEI.selectNext();
						}
						// (4)CASカード管理(更新)
						executeKK_T_CASCD_KNRI_KK_UPDATE_004(new String[] {
								SPTV_RNK_STAT_200, super.opeDate, cascdNo });
						// (9)CASカード管理履歴(登録)
						JBSbatCommonDBInterface dbInfoCascdKnriPk = executeKK_T_CASCD_KNRI_PKSELECT(new String[] { cascdNo });
						this.addCascdKnriRk(dbInfoCascdKnriPk);
						
					// 正常処理ログリスト出力
						if(!errFlg)
						{
							createKKLST13409(recordMap, "", ErrorTable.NORMAL.getErrorMessage());
						}
					}
				}
			}
			// E-4.スカパー画面操作結果リストの結果コードが"00"（正常）以外の場合
			else if(!RESULT_CODE_NORMAL.equals(resultCode)){
				// E-4-1.処理詳細(c)(d)でエラーが発生していない場合、以下の更新処理を実施する。
				if(!errCode){
					// (5)CASカード管理(更新)
					executeKK_T_CASCD_KNRI_KK_UPDATE_003(new String[] {
							SPTV_RNK_STAT_190, cascdNo });

					// (11)CASカード管理履歴(登録)
					JBSbatCommonDBInterface dbInfoCascdKnriPk = executeKK_T_CASCD_KNRI_PKSELECT(new String[] { cascdNo });
					this.addCascdKnriRk(dbInfoCascdKnriPk);
				}
				// スカパーCSV鍵開けエラーリストを出力し、当該レコードの処理を終了する。
				createKKLST13410(recordMap, ErrorTable.E120.name(), ErrorTable.E120.getErrorMessage());
			}
		}
	}

	/**
	 * SQLKEY(KK_SELECT_366)で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_366(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_366);
	}

	/**
	 * SQLKEY(KK_SELECT_011)で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_OP_SVC_KEI_KK_SELECT_011(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KK_SELECT_011);
	}

	/**
	 * SQLKEY(KK_SELECT_150)で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_OP_SVC_KEI_KK_SELECT_150(Object[] param) throws Exception {

		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KK_SELECT_150);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	CASカード番号
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_CASCD_KNRI_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("CASCD_NO", whereParam[0]);

		// DBアクセスを実行します
		return db_KK_T_CASCD_KNRI.selectByPrimaryKeys(whereMap);
	}

	/**
	 * SQLKEY(KK_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	CASカード番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_CASCD_KNRI_KK_SELECT_001(String[] param) throws Exception {

		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		db_KK_T_CASCD_KNRI.selectBySqlDefine(paramList, KK_T_CASCD_KNRI_KK_SELECT_001);
	}

	/**
	 * SQLKEY(KK_DELETE_001)で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_CASCD_KNRI_KK_DELETE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_CASCD_KNRI.executeBySqlDefine(paramList, KK_T_CASCD_KNRI_KK_DELETE_001);
	}

	/** 
	 * SQLKEY(KK_UPDATE_002)で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_UPDATE_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_CASCD_KNRI.executeBySqlDefine(paramList, KK_T_CASCD_KNRI_KK_UPDATE_002);
	}

	/** 
	 * SQLKEY(KK_UPDATE_003)で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_UPDATE_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_CASCD_KNRI.executeBySqlDefine(paramList, KK_T_CASCD_KNRI_KK_UPDATE_003);
	}

	/** 
	 * SQLKEY(KK_UPDATE_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			スカパー連携ステータス
	 *			CAS番号対象適用年月日
	 *			CAS番号適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_CASCD_KNRI_KK_UPDATE_004(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_KK_T_CASCD_KNRI.executeBySqlDefine(paramList, KK_T_CASCD_KNRI_KK_UPDATE_004);
	}

	/**
	 * SQLKEY(KK_UPDATE_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			スカパー連携ステータス
	 *			CAS番号対象適用年月日
	 *			鍵閉め年月日
	 *			CAS番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_CASCD_KNRI_KK_UPDATE_005(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
// 2025/03/27 ANK-4592-00-00 ADD START
		paramList.setValue(param[3].toString());
// 2025/03/27 ANK-4592-00-00 ADD END

		// DBアクセスを実行します
		db_KK_T_CASCD_KNRI.executeBySqlDefine(paramList, KK_T_CASCD_KNRI_KK_UPDATE_005);
	}

	/** 
	 * SQLKEY(KK_UPDATE_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *			スカパー連携ステータス
	 *			CAS番号対象適用年月日
	 *			鍵閉め年月日
	 *			CAS番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_CASCD_KNRI_KK_UPDATE_006(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_KK_T_CASCD_KNRI.executeBySqlDefine(paramList, KK_T_CASCD_KNRI_KK_UPDATE_006);
	}

	/**
	 * 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 JBSbatCommonDBInterface executeKK_T_CSNT_OPSVKEI_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("OP_SVC_KEI_NO", whereParam[0]);

		// DBアクセスを実行します
		return db_KK_T_CSNT_OPSVKEI.selectByPrimaryKeys(whereMap);
	}

	/**
	 * SQLKEY(KK_SELECT_001)で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_CSNT_OPSVKEI_KK_SELECT_001(Object[] param) throws Exception {

		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		db_KK_T_CSNT_OPSVKEI.selectBySqlDefine(paramList, KK_T_CSNT_OPSVKEI_KK_SELECT_001);
	}

	/**
	 * 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_T_CSNT_OPSVKEI_KK_SELECT_002(Object[] param) throws Exception {

		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		db_KK_T_CSNT_OPSVKEI.selectBySqlDefine(paramList, KK_T_CSNT_OPSVKEI_KK_SELECT_002);
	}

	/** 
	 * SQLKEY(KK_SELECT_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 executeKK_T_CSNT_OPSVKEI_KK_SELECT_005(Object[] param) throws Exception {

		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_CSNT_OPSVKEI.selectBySqlDefine(paramList, KK_T_CSNT_OPSVKEI_KK_SELECT_005);
	}

	/**
	 * SQLKEY(KK_DELETE_001)で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_CSNT_OPSVKEI_KK_DELETE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_CSNT_OPSVKEI.executeBySqlDefine(paramList, KK_T_CSNT_OPSVKEI_KK_DELETE_001);
	}

	/** 
	 * SQLKEY(KK_UPDATE_002)で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_CSNT_OPSVKEI_KK_UPDATE_002(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_KK_T_CSNT_OPSVKEI.executeBySqlDefine(paramList, KK_T_CSNT_OPSVKEI_KK_UPDATE_002);
	}

	/** 
	 * SQLKEY(KK_UPDATE_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 executeKK_T_CSNT_OPSVKEI_KK_UPDATE_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_CSNT_OPSVKEI.executeBySqlDefine(paramList, KK_T_CSNT_OPSVKEI_KK_UPDATE_003);
	}

	/**
	 * SQLKEY(KK_SELECT_012)で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_012(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_012);
	}

	/** 
	 * SQLKEY(KK_SELECT_113)で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_IDO_RSV_KK_SELECT_113(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_IDO_RSV.selectBySqlDefine(paramList, KK_T_IDO_RSV_KK_SELECT_113);
	}

	/**
	 * 文字列のNULLおよび空文字チェックを行います。
	 * <br>
	 * @param value チェック対象の文字列
	 * @return 文字列に値が格納されている場合はtrue、格納されていない場合はfalse
	 */
	private boolean isNotNullCheck(String value)
	{
		if (value == null)
		{
			return false;
		}

		if (0 == value.trim().length())
		{
			return false;
		}

		return true;
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	@Override
	public void terminal() throws Exception {
		/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_CSNT_OPSVKEI.close();
		db_KK_T_CASCD_KNRI_RK.close();
		db_KK_T_CSNT_OPSVKEI_RK.close();
		db_KK_T_OP_SVC_KEI.close();
		db_KK_T_CASCD_KNRI.close();
		db_KK_T_SVC_KEI.close();
		db_ZM_T_DL_FILE_KANRI.close();
		db_KK_T_IDO_RSV.close();
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * CAS番号対象オプションサービス契約履歴を登録します。
	 * <br>
	 * @param outMap サービス契約回線内訳検索結果
	 * @param kojiakJssiYmd 工事案件実施年月日
	 * @throws Exception 
	 */
	private void addCsntOpsvkeiRk(JBSbatCommonDBInterface outMap) throws Exception
	{
		// 登録用データ格納
		Object[] param_add = new Object[21];
		// システム日付を取得
		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] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.SPTV_RNK_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));
		// 登録年月日時分秒
		param_add[8] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.UPD_DTM));
		// 登録オペレータアカウント
		param_add[9] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.UPD_OPEACNT));
		// 更新年月日時分秒
		param_add[10] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.UPD_DTM));
		// 更新オペレータアカウント
		param_add[11] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.UPD_OPEACNT));
		// 削除年月日時分秒
		param_add[12] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.DEL_DTM));
		// 削除オペレータアカウント
		param_add[13] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.DEL_OPEACNT));
		// 無効フラグ（０：有効）
		param_add[14] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.MK_FLG));
		// 登録運用年月日
		param_add[15] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.UPD_UNYO_YMD));
		// 登録処理ID
		param_add[16] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.UPD_TRN_ID));
		// 更新運用年月日
		param_add[17] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.UPD_UNYO_YMD));
		// 更新処理ID
		param_add[18] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.UPD_TRN_ID));
		// 削除運用年月日
		param_add[19] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.DEL_UNYO_YMD));
		// 削除処理ID
		param_add[20] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CSNT_OPSVKEI_RK.DEL_TRN_ID));
		// CAS番号対象オプションサービス契約履歴の登録を実行する
		this.executeKK_T_CSNT_OPSVKEI_RK_KK_INSERT_001(param_add);
	}

	/**
	 * CAS番号対象オプションサービス契約履歴を登録します。
	 * <br>
	 * @param outMap サービス契約回線内訳検索結果
	 * @param stat スカパー連携ステータス
	 * @throws Exception 
	 */
	private void addCsntOpsvkeiRk(JBSbatCommonDBInterface outMap, String stat, String coopDay) 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));
		// 履歴登録年月日時分秒
//2025/03/26 ANK-4592-00-00 MOD START
		// 一意制約違反対応
		// param_add[1] = sysdate;
		if (SPTV_RNK_STAT_200.equals(stat))
		{
			param_add[1] = sysdate.substring(0,16) + "0";
		}
		else
		{
			param_add[1] = sysdate.substring(0,16) + "1";
		}
//2025/03/26 ANK-4592-00-00 MOD END
		// 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] = coopDay;
		// 鍵閉め理由コード
		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);
	}

	/**
	 * CASカード管理履歴を登録します。
	 * <br>
	 * @param outMap サービス契約回線内訳検索結果
	 * @param stat スカパー連携ステータス
	 * @param courseChangeDate NULLでない場合は、自動的にコース変更鍵開け年月日
	 * @param coopDay スカパーCSV鍵開け結果リストの鍵開け日
	 * @throws Exception 
	 */
	private void addCascdKnriRk(JBSbatCommonDBInterface outMap, String stat, String coopDay) 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));
		// 履歴登録年月日時分秒
// 2025/03/26 ANK-4592-00-00 MOD START
		// 一意制約違反対応
		// param_add[1] = sysdate;
		if (SPTV_RNK_STAT_200.equals(stat))
		{
			param_add[1] = sysdate.substring(0,16) + "0";
		}
		else
		{
			param_add[1] = sysdate.substring(0,16) + "1";
		}
// 2025/03/26 ANK-4592-00-00 MOD END
		// 枠番号
		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] = coopDay;
		// 鍵閉め理由コード
		param_add[12] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.KEYCLS_RSN_CD));
		// CASカード管理履歴の登録を実行する
		executeKK_T_CASCD_KNRI_RK_PKINSERT(param_add);
	}

	/**
	 * CASカード管理履歴を登録します。
	 * <br>
	 * @param outMap サービス契約回線内訳検索結果
	 * @throws Exception 
	 */
	private void addCascdKnriRk(JBSbatCommonDBInterface outMap) throws Exception
	{
		// 登録用データ格納
		Object[] param_add = new Object[26];
		// システム日付を取得
		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] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.SPTV_RNK_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));
		// 登録年月日時分秒
		param_add[13] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.UPD_DTM));
		// 登録オペレータアカウント
		param_add[14] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.UPD_OPEACNT));
		// 更新年月日時分秒
		param_add[15] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.UPD_DTM));
		// 更新オペレータアカウント
		param_add[16] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.UPD_OPEACNT));
		// 削除年月日時分秒
		param_add[17] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.DEL_DTM));
		// 削除オペレータアカウント
		param_add[18] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.DEL_OPEACNT));
		// 無効フラグ（０：有効）
		param_add[19] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.MK_FLG));
		// 登録運用年月日
		param_add[20] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.UPD_UNYO_YMD));
		// 登録処理ID
		param_add[21] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.UPD_TRN_ID));
		// 更新運用年月日
		param_add[22] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.UPD_UNYO_YMD));
		// 更新処理ID
		param_add[23] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.UPD_TRN_ID));
		// 削除運用年月日
		param_add[24] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.DEL_UNYO_YMD));
		// 削除処理ID
		param_add[25] = JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKK_T_CASCD_KNRI_RK.DEL_TRN_ID));
		// CASカード管理履歴の登録を実行する
		executeKK_T_CASCD_KNRI_RK_KK_INSERT_001(param_add);
	}

	/**
	 * 指定されたバインド変数を元に、CASカード管理履歴をテーブル登録します
	 * 
	 * @param param バイント変数の値配列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_CASCD_KNRI_RK_KK_INSERT_001(Object[] setParam) throws Exception
	{
		// バイント変数のリストの生成
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		for(int i = 0; i < setParam.length; i++)
		{
			paramList.setValue(setParam[i].toString());
		}
		
		//SQL実行
		db_KK_T_CASCD_KNRI_RK.executeBySqlDefine(paramList, KK_T_CASCD_KNRI_RK_KK_INSERT_001);
	}

	/**
	 * 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番号対象オプションサービス契約履歴をテーブル登録します
	 * 
	 * @param param バイント変数の値配列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_CSNT_OPSVKEI_RK_KK_INSERT_001(Object[] setParam) throws Exception
	{
		// バイント変数のリストの生成
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		for(int i = 0; i < setParam.length; i++)
		{
			paramList.setValue(setParam[i].toString());
		}
		//SQL実行
		db_KK_T_CSNT_OPSVKEI_RK.executeBySqlDefine(paramList, KK_T_CSNT_OPSVKEI_RK_KK_INSERT_001);
	}

	/**
	 * 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);
	}

	/**
	 * スカパー画面操作結果取込リストファイルを出力する。<br>
	 * @param recordMap スカパー画面操作結果リスト
	 * @param errCode エラーコード
	 * @param errMessage エラーメッセージ
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void createKKLST13409(JBSbatServiceInterfaceMap recordMap, String errCode, String errMessage) throws Exception{

		
		ArrayList<String> kklst13409Data = new ArrayList<String>();

		// 行番号 
		kklst13409Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.LINE_NUMBER));
		// 申込年月日時分秒
		kklst13409Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.SUBSCRIPTION_MONTH_DATE_TIME));
		// CAS番号
		kklst13409Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.CAS_NUMBER));
		// 処理区分
		kklst13409Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.PROCESS_CLASSIFICATION));
		// スカパー連携日
		kklst13409Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.SKYPER_COOPERATION_DAY));
		// 商品コード
		kklst13409Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.PRODUCT_CODE));
		// 商品名称
		kklst13409Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.PRODUCT_NAME));
		// CATV顧客番号
		kklst13409Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.CATV_CUSTOMER_NUMBER));
		// サービス契約番号
		kklst13409Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.SERVICE_CONTRACT_NUMBER));
		// オプションサービス契約番号
		kklst13409Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.OPTIONAL_CONTRACT_NUMBER));
		// 結果コード
		kklst13409Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.RESULT_CODE));
		// エラーメッセージ
		kklst13409Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.ERROR_MESSAGE));
		// 処理完了日時
		kklst13409Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.PROCESS_COMPLETION_DATE_AND_TIME));
		// 結果反映エラーコード
		kklst13409Data.add(errCode);
		// 結果反映エラーメッセージ
		kklst13409Data.add(errMessage);

		JKKBatCommon.printDoubleQuoteBusinessFileUtil(kklst13409FileObj, kklst13409Data);

		kklst13409Cnt++;
	}

	/**
	 * スカパー画面操作エラー情報リストファイルを出力する。<br>
	 * @param recordMap 
	 * @param errCode
	 * @param errMessage
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void createKKLST13410(JBSbatServiceInterfaceMap recordMap, String errCode, String errMessage) throws Exception{

		
		ArrayList<String> kklst13410Data = new ArrayList<String>();

		// 行番号 
		kklst13410Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.LINE_NUMBER));
		// 申込年月日時分秒
		kklst13410Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.SUBSCRIPTION_MONTH_DATE_TIME));
		// CAS番号
		kklst13410Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.CAS_NUMBER));
		// 処理区分
		kklst13410Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.PROCESS_CLASSIFICATION));
		// スカパー連携日
		kklst13410Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.SKYPER_COOPERATION_DAY));
		// 商品コード
		kklst13410Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.PRODUCT_CODE));
		// 商品名称
		kklst13410Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.PRODUCT_NAME));
		// CATV顧客番号
		kklst13410Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.CATV_CUSTOMER_NUMBER));
		// サービス契約番号
		kklst13410Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.SERVICE_CONTRACT_NUMBER));
		// オプションサービス契約番号
		kklst13410Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.OPTIONAL_CONTRACT_NUMBER));
		// 結果コード
		kklst13410Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.RESULT_CODE));
		// エラーメッセージ
		kklst13410Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.ERROR_MESSAGE));
		// 処理完了日時
		kklst13410Data.add((String)recordMap.getMap().get(JBSbatKKLST13408.PROCESS_COMPLETION_DATE_AND_TIME));
		// 結果反映エラーコード
		kklst13410Data.add(errCode);
		// 結果反映エラーメッセージ
		kklst13410Data.add(errMessage);

		JKKBatCommon.printDoubleQuoteBusinessFileUtil(kklst13410FileObj, kklst13410Data);
		
		createKKLST13409(recordMap, errCode, errMessage);

		kklst13410Cnt++;
	}

	/**
	 * パラメタの単項目チェックを行う。<br>
	 * @param recordMap 入力データ
	 * @return boolean false：エラーなし、true：エラーあり
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private boolean checkRecordItem(JBSbatServiceInterfaceMap recordMap) throws Exception{

		
		ErrorTable errCode = null;
		String itemValue = null;
		boolean checkResult = false;

		for(RecordItem item: RecordItem.values()){
			// 必須
			itemValue = (String)recordMap.getMap().get(item.itemName);
			if(item.required){
				if(!isNotNullCheck(itemValue)){
					errCode = ErrorTable.E020;
					// エラーが発生した場合、(1)スカパー画面操作結果取込リストを出力し
					createKKLST13409(recordMap, errCode.name(),
							errCode.getErrorMessage().replace("%1%", item.name()));
					checkResult = true;
				}
				else {
					checkResult = checkDigit(item, itemValue, recordMap);
				}
			}
			else { // 入力項目がオプションの場合
				String processClassification = (String)recordMap.getMap().get(JBSbatKKLST13408.PROCESS_CLASSIFICATION);
				switch (item) {
				case スカパー連携日: // 処理区分が"06"（CASカード鍵閉め）以外の場合、必須
				case 商品コード: // 処理区分が"06"（CASカード鍵閉め）以外の場合、必須
				case 商品名称: // 処理区分が"06"（CASカード鍵閉め）以外の場合、必須
					if(!PRC_TYPE_CAS_CRD_LOCK.equals(processClassification)){
						if(!isNotNullCheck(itemValue)){
							errCode = ErrorTable.E020;
							// エラーが発生した場合、(1)スカパー画面操作結果取込リストを出力し
							createKKLST13409(recordMap, errCode.name(),
									errCode.getErrorMessage().replace("%1%", item.name()));
							checkResult = true;
						}
						else {
							checkResult = checkDigit(item, itemValue, recordMap);
						}
					}
					break;
				case オプションサービス契約番号: // 処理区分が"01"（オプション申込）、"02"（オプション解約）の場合、必須
					if(PRC_TYPE_OPTION_CANCEL.equals(processClassification)
							|| PRC_TYPE_OPTION_APPLICATION.equals(processClassification)){
						if(!isNotNullCheck(itemValue)){
							errCode = ErrorTable.E020;
							// エラーが発生した場合、(1)スカパー画面操作結果取込リストを出力し
							createKKLST13409(recordMap, errCode.name(),
									errCode.getErrorMessage().replace("%1%", item.name()));
							checkResult = true;
						}
						else {
							checkResult = checkDigit(item, itemValue, recordMap);
						}
					}
					break;
				case エラーメッセージ: // エラーコードが"00"（正常）以外の場合、必須
					String resultCode = (String)recordMap.getMap().get(JBSbatKKLST13408.RESULT_CODE);
					if(!RESULT_CODE_NORMAL.equals(resultCode)){
						if(!isNotNullCheck(itemValue)){
							errCode = ErrorTable.E020;
							// エラーが発生した場合、(1)スカパー画面操作結果取込リストを出力し
							createKKLST13409(recordMap, errCode.name(),
									errCode.getErrorMessage().replace("%1%", item.name()));
							checkResult = true;
						}
						else {
							checkResult = checkDigit(item, itemValue, recordMap);
						}
					}
					break;
				}
			}

			// エラーが発生した場合、ループを中断します。
			if(checkResult){
				break;
			}
		}
		return checkResult;
	}

	/**
	 * エラーがあれば数字をチェックします
	 * 
	 * @param item レコード項目
	 * @param itemValue レコード項目の値
	 * @param recordMap レコードのマップ
	 * @return boolean false：エラーなし、true：エラーあり
	 * @throws Exception
	 */
	private boolean checkDigit(RecordItem item, String itemValue, JBSbatServiceInterfaceMap recordMap) throws Exception{

		
		boolean checkResult = false;
		ErrorTable errCode = null;
		// 桁数
		if("ketasuu2".equals(item.digitPattern)){
			if(!JBSbatCheckUtil.invoke(itemValue, new String[] { "ketasuu2", item.numberOfDigits[0], item.numberOfDigits[1]})) {
				errCode = ErrorTable.E030;
				// エラーが発生した場合、(1)スカパー画面操作結果取込リストを出力し
				createKKLST13409(recordMap, errCode.name(),
						errCode.getErrorMessage().replace("%1%", item.name()));
				checkResult = true;
			}
		}
		if("ketasuu1".equals(item.digitPattern)){
			if(!JBSbatCheckUtil.invoke(itemValue, new String[] { "ketasuu1", item.numberOfDigits[0] })) {
				errCode = ErrorTable.E030;
				// エラーが発生した場合、(1)スカパー画面操作結果取込リストを出力し
				createKKLST13409(recordMap, errCode.name(),
						errCode.getErrorMessage().replace("%1%", item.name()));
				checkResult = true;
			}
		}
		// 形式
		if(!checkResult){
			if (!JBSbatCheckUtil.invoke(itemValue, new String[] { item.pattern })) {
				errCode = ErrorTable.E040;
				// エラーが発生した場合、(1)スカパー画面操作結果取込リストを出力し
				createKKLST13409(recordMap, errCode.name(),
						errCode.getErrorMessage().replace("%1%", item.name()));
				checkResult = true;
			}
		}
		return checkResult;
	}
}
