/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKosokuWriFinUpd
*	ソースファイル名	：JBSbatKKKosokuWriFinUpd.java
*	作成者				：富士通　
*	作成日				：2021年01月27日
*＜機能概要＞
*　高速割適用満了登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v52.00.00	2021/01/27	FJ)荒木		ANK-3893-00-00_【10Gフォロー】高速割解約バッチ開発	新規作成
*	v56.00.00	2021/12/14	FJ)鈴木		ANK-4018-00-00_【eo定期】5G・10Gコースの料金改訂対応
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM917;
import eo.business.util.table.JBSbatKK_T_PRG;
import eo.business.util.table.JBSbatKK_T_WRIB_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_WRISVC_KEI_UCWK;
import eo.common.util.JKKStringUtil;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatOracleSeqUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKKosokuWriFinUpd extends JBSbatBusinessService
{
	/** テーブル(割引サービス契約内訳)*/
	private static final String D_TBL_NAME_KK_T_WRISVC_KEI_UCWK = "KK_T_WRISVC_KEI_UCWK";

	/** テーブル(割引サービス契約)*/
	private static final String D_TBL_NAME_KK_T_WRIB_SVC_KEI = "KK_T_WRIB_SVC_KEI";

	/** テーブル(進捗)*/
	private static final String D_TBL_NAME_KK_T_PRG = "KK_T_PRG";

	/** SQL定義キー(KK_SELECT_011)*/
	private static final String KK_T_WRISVC_KEI_UCWK_KK_SELECT_011 = "KK_SELECT_011";

	/** SQL定義キー(KK_SELECT_031)*/
	private static final String KK_T_WRIB_SVC_KEI_KK_SELECT_031 = "KK_SELECT_031";

	/** テーブルアクセスクラス(割引サービス契約内訳)*/
	private JBSbatSQLAccess db_KK_T_WRISVC_KEI_UCWK = null;

	/** テーブルアクセスクラス(割引サービス契約)*/
	private JBSbatSQLAccess db_KK_T_WRIB_SVC_KEI = null;

	/** テーブルアクセスクラス(進捗)*/
	private JBSbatSQLAccess db_KK_T_PRG = null;

	/** テーブルアクセスクラス(共通部品)*/
	private JBSbatSQLAccess stmt = null;
	
	/** シーケンス定義名(SEQ_PRG_NO)*/
	private static final String SEQ_PRG_NO = "SEQ_PRG_NO";
	
	/** システム日時 */
	private String sysDate = null;
	
	// ANK-4018-00-00 ADD START	
	/** 申込明細番号（高速割廃止に伴うデータ補正：固定） */
	private String mskmDtlNo = "999999999999";
	
	/** テーブル(システムパラメータ管理) */
	private static final String TBL_ZM_M_SYS_PARAM_KNRI = "ZM_M_SYS_PARAM_KNRI";
	
	/** SQL定義キー(AC_SELECT_001)*/
	private static final String ZM_M_SYS_PARAM_KNRI_AC_SELECT_001 = "AC_SELECT_001";	
	
	/** DBアクセスクラス(システムパラメータ管理) */
	private JBSbatSQLAccess db_access_sys_param_knri = null;
	
	/** 分割コミット数 */
	protected String commitRcrdCnt = "";
	
	/** 処理件数 */
	int cnt = 0;
	
	// ANK-4018-00-00 ADD END

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_WRISVC_KEI_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_WRISVC_KEI_UCWK);
		db_KK_T_WRIB_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_WRIB_SVC_KEI);
		db_KK_T_PRG = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_PRG);
		// ANK-4018-00-00 ADD START	
		db_access_sys_param_knri = new JBSbatSQLAccess(commonItem, TBL_ZM_M_SYS_PARAM_KNRI);
		
		// コミット分割数の取得
		commitRcrdCnt = getCommitRcrdCnt();
		// ANK-4018-00-00 ADD END
		
		// 共通部品用
		stmt = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_PRG);
		
		// システム年月日時分秒を取得
		this.sysDate = JKKBatCommon.getSysDateTimeStamp();
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 割引サービス契約内訳のカレントを取得する。
		JBSbatCommonDBInterface resultWrisvcKeiUcwk = execKK_T_WRISVC_KEI_UCWK_PKSELECT(inMap);
		// 割引サービス契約のカレントを取得する。
		JBSbatCommonDBInterface resultWribSvcKei = execKK_T_WRIB_SVC_KEI_PKSELECT(inMap);
		
		if (null != resultWribSvcKei && null != resultWrisvcKeiUcwk)
		{
			String wribSvcKeiUcwkStat = resultWrisvcKeiUcwk.getString(JBSbatKK_T_WRISVC_KEI_UCWK.WRIB_SVC_KEI_UCWK_STAT);
			String wribSvcKeiStat = resultWribSvcKei.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_KEI_STAT);
			
			// 割引サービス契約内訳ステータスと割引サービス契約ステータスをチェックする。
			if (!JKKStringUtil.isNullBlank(wribSvcKeiUcwkStat) && !JKKStringUtil.isNullBlank(wribSvcKeiStat) &&
					JKKBatConst.WRISVC_KEI_UCWK_STAT_TOUROKU_ZUMI.equals(wribSvcKeiUcwkStat) &&
					JKKBatConst.WRIB_SVC_KEI_STAT_SVC_TEIKYOTYU.equals(wribSvcKeiStat))
			{
				// 割引サービス内訳の割引サービス契約内訳ステータスを適用済に変更し登録する。
				execKK_T_WRISVC_KEI_UCWK_PKINSERT(inMap, resultWrisvcKeiUcwk);
				// 割引サービス契約の割引サービス契約ステータスを適用済みに変更し登録する。
				execKK_T_WRIB_SVC_KEI_PKINSERT(inMap, resultWribSvcKei);
				// 進捗を登録する。
				execKK_T_PRG_PKINSERT(inMap);
			}
			// ANK-4018-00-00 ADD START	
				// 割引サービス内訳の割引サービス契約内訳ステータス「登録済」かつ、割引サービス契約の割引サービス契約ステータス「受付済」の場合
			else if (JKKBatConst.WRISVC_KEI_UCWK_STAT_TOUROKU_ZUMI.equals(wribSvcKeiUcwkStat) &&
					JKKBatConst.WRIB_SVC_KEI_STAT_UKETSUKE_ZUMI.equals(wribSvcKeiStat))
			{
				// 割引サービス契約の割引サービス契約ステータスをキャンセル済に変更し登録する。
				execKK_T_WRIB_SVC_KEI_PKINSERTCANCEL(inMap, resultWribSvcKei);
				// 進捗を登録する。
				execKK_T_PRG_PKINSERT(inMap);
			}
				// 割引サービス内訳の割引サービス契約内訳ステータス「解約済」かつ、割引サービス契約の割引サービス契約ステータス「解約済」の場合
			else if (JKKBatConst.WRISVC_KEI_UCWK_STAT_KAIYAKU_ZUMI.equals(wribSvcKeiUcwkStat) &&
					JKKBatConst.WRIB_SVC_KEI_STAT_KAIYAKU_ZUMI.equals(wribSvcKeiStat))
			{
				// 割引サービス契約の申込明細番号を「'999999999999'」に更新する。
				execKK_T_WRIB_SVC_KEI_PKUPDATE(inMap, resultWribSvcKei);
			}
			
			if ((cnt != 0) && ((cnt + 1) % Integer.parseInt(commitRcrdCnt) == 0))
			{
				// 分割コミット
				super.commit();
				// DEBUGログ（PT用）
				super.logPrint.printDebugLog("処理件数単位=" + String.valueOf(cnt + 1) );
			}
			
			cnt++;
			// ANK-4018-00-00 ADD END	
		}

		// 次のレコードへ
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_WRISVC_KEI_UCWK.close();
		db_KK_T_WRIB_SVC_KEI.close();
		db_KK_T_PRG.close();
		// ANK-4018-00-00 ADD START	
		db_access_sys_param_knri.close();
		// ANK-4018-00-00 ADD END
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 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 execKK_T_WRISVC_KEI_UCWK_KK_SELECT_011(Object[] param) throws Exception
	{
		// バインド変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		// DBアクセスを実行します
		this.db_KK_T_WRISVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_WRISVC_KEI_UCWK_KK_SELECT_011);
	}

	/**
	 * 割引サービス契約内訳のPK検索を行います。
	 * 
	 * @param inMap 入力レコード
	 * @throws Exception 各種エラー
	 */
	private JBSbatCommonDBInterface execKK_T_WRISVC_KEI_UCWK_PKSELECT(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// サービス契約番号、サービス契約内訳番号に紐づくカレントデータを抽出
		Object[] paramMap = {
				inMap.getString(JBSbatKKIFM917.WRIB_SVC_KEI_NO),
				inMap.getString(JBSbatKKIFM917.WRIB_SVC_KEI_UCWK_NO)
		};
		this.execKK_T_WRISVC_KEI_UCWK_KK_SELECT_011(paramMap);
		JBSbatCommonDBInterface result = this.db_KK_T_WRISVC_KEI_UCWK.selectNext();
		if(null != result)
		{
			// 世代登録年月日時分秒と合わせてPK検索
			JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
			whereMap.setValue(JBSbatKK_T_WRISVC_KEI_UCWK.WRIB_SVC_KEI_NO,
					inMap.getString(JBSbatKKIFM917.WRIB_SVC_KEI_NO));			// 割引サービス契約番号
			whereMap.setValue(JBSbatKK_T_WRISVC_KEI_UCWK.WRIB_SVC_KEI_UCWK_NO,
					inMap.getString(JBSbatKKIFM917.WRIB_SVC_KEI_UCWK_NO));		// 割引サービス契約内訳番号
			whereMap.setValue(JBSbatKK_T_WRISVC_KEI_UCWK.GENE_ADD_DTM,
					result.getString(JBSbatKK_T_WRISVC_KEI_UCWK.GENE_ADD_DTM));	// 世代登録年月日時分秒
			// DBアクセスを実行します
			return db_KK_T_WRISVC_KEI_UCWK.selectByPrimaryKeys(whereMap);
		}
		
		return null;
	}
	
	/**
	 * SQLKEY(KK_SELECT_031)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバインド変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 * 	引数:
	 * 	param:順にバインド変数の値をparam配列に入れます。バインド変数は以下に説明します。
	 * 		割引サービス契約番号
	 * 		予約適用年月日時分秒
	 * </pre>
	 * <p>
	 * @param param バインド変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void execKK_T_WRIB_SVC_KEI_KK_SELECT_031(Object[] param) throws Exception
	{
		// バインド変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		// DBアクセスを実行します
		this.db_KK_T_WRIB_SVC_KEI.selectBySqlDefine(paramList, KK_T_WRIB_SVC_KEI_KK_SELECT_031);
	}
	
	/**
	 * 割引サービス契約のPK検索を行います。
	 * 
	 * @param inMap 入力レコード
	 * @return 
	 * @throws Exception 各種エラー
	 */
	private JBSbatCommonDBInterface execKK_T_WRIB_SVC_KEI_PKSELECT(final JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// カレントレコードを取得する
		Object[] paramMap = {
				inMap.getString(JBSbatKKIFM917.WRIB_SVC_KEI_NO),
				super.opeDate
		};
		this.execKK_T_WRIB_SVC_KEI_KK_SELECT_031(paramMap);
		JBSbatCommonDBInterface result = db_KK_T_WRIB_SVC_KEI.selectNext();
		if(null != result)
		{
			// 世代登録年月日時分秒と合わせてPK検索
			JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
			whereMap.setValue(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_KEI_NO,
					inMap.getString(JBSbatKKIFM917.WRIB_SVC_KEI_NO));			// 割引サービス契約番号
			whereMap.setValue(JBSbatKK_T_WRIB_SVC_KEI.GENE_ADD_DTM,
					result.getString(JBSbatKK_T_WRIB_SVC_KEI.GENE_ADD_DTM));	// 世代登録年月日時分秒
			// DBアクセスを実行します
			return db_KK_T_WRIB_SVC_KEI.selectByPrimaryKeys(whereMap);
		}
		
		return null;
	}
	
	/**
	 * 割引サービス契約内訳を更新して世代を積む
	 * 
	 * @param inMap 入力レコード
	 * @param insDbObj 割引サービス契約内訳登録情報
	 * @throws Exception 各種エラー
	 */
	private void execKK_T_WRISVC_KEI_UCWK_PKINSERT(final JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface insDbObj) throws Exception
	{
		if(null != insDbObj)
		{
			// 処理年月末日
			String opeDateYm = super.opeDate.substring(0,6);
			String chrgEndYmd = opeDateYm + JKKBatCommon.getEndOfMonth(opeDateYm);

			// 項目を更新して世代を積む
			insDbObj.setValue(JBSbatKK_T_WRISVC_KEI_UCWK.GENE_ADD_DTM,				sysDate);										// 世代登録年月日時分秒
			insDbObj.setValue(JBSbatKK_T_WRISVC_KEI_UCWK.WRIB_SVC_KEI_UCWK_STAT,	JKKBatConst.WRISVC_KEI_UCWK_STAT_TEKIYO_ZUMI);	// 割引サービス契約内訳ステータス 
			insDbObj.setValue(JBSbatKK_T_WRISVC_KEI_UCWK.SVC_CHRG_ENDYMD,			chrgEndYmd);									// サービス課金終了年月日
			// DBアクセスを実行します
			this.db_KK_T_WRISVC_KEI_UCWK.insertByPrimaryKeys(insDbObj);
		}
	}
	
	/**
	 * 割引サービス契約を更新して世代を積む(適用済用）
	 * 
	 * @param inMap 入力レコード
	 * @param insDbObj 割引サービス契約登録情報
	 * @throws Exception 各種エラー
	 */
	private void execKK_T_WRIB_SVC_KEI_PKINSERT(final JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface insDbObj) throws Exception
	{
		if(null != insDbObj)
		{
			// 処理年月末日
			String opeDateYm = super.opeDate.substring(0,6);
			String chrgEndYmd = opeDateYm + JKKBatCommon.getEndOfMonth(opeDateYm);
			// 処理年月翌１日
			String endYmd = JKKBatCommon.addDay(chrgEndYmd, 1);

			// 項目を更新して世代を積む
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.GENE_ADD_DTM,			sysDate);										// 世代登録年月日時分秒
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_KEI_STAT,	JKKBatConst.WRIB_SVC_KEI_STAT_TEKIYO_ZUMI);		// 割引サービス契約ステータス
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.RSV_APLY_YMD,			super.opeDate);									// 予約適用年月日
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.PLAN_ENDYMD,			endYmd);										// プラン終了年月日
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.PLAN_CHRG_ENDYMD,		chrgEndYmd);									// プラン課金終了年月日
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.SVC_CHRG_ENDYMD,		chrgEndYmd);									// サービス課金終了年月日
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.PNLTY_HASSEI_CD,		JBSbatKKConst.PNLTY_HSS_NASHI);					// 違約金発生コード
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.IDO_DIV,				JKKBatConst.IDO_DIV_WRIB);						// 異動区分
			// ANK-4018-00-00 ADD START	
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.MSKM_DTL_NO,			mskmDtlNo);										// 申込明細番号('999999999999')
			// ANK-4018-00-00 ADD END
			// DBアクセスを実行します
			this.db_KK_T_WRIB_SVC_KEI.insertByPrimaryKeys(insDbObj);
		}
	}
	
	// ANK-4018-00-00 ADD START	
	/**
	 * 割引サービス契約を更新して世代を積む(キャンセル済用）
	 * 
	 * @param inMap 入力レコード
	 * @param insDbObj 割引サービス契約登録情報
	 * @throws Exception 各種エラー
	 */
	private void execKK_T_WRIB_SVC_KEI_PKINSERTCANCEL(final JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface insDbObj) throws Exception
	{
		if(null != insDbObj)
		{
			// 項目を更新して世代を積む
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.GENE_ADD_DTM,			sysDate);										// 世代登録年月日時分秒
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.MSKM_DTL_NO,			mskmDtlNo);										// 申込明細番号('999999999999')
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_KEI_STAT,	JKKBatConst.WRIB_SVC_KEI_STAT_CANCEL_ZUMI);		// 割引サービス契約ステータス
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.RSV_APLY_YMD,			super.opeDate);									// 予約適用年月日
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.SVC_CANCEL_YMD,		super.opeDate);									// サービスキャンセル年月日
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.SVC_CANCEL_RSN_CD,	JBSbatKKConst.SVC_CANCEL_RSN_CD_OTHER);			// サービスキャンセル理由コード
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.WRIB_DSL_CNCL_OPTY_CD,	"2");										// 割引解約キャンセル契機コード「手動設定」
			insDbObj.setValue(JBSbatKK_T_WRIB_SVC_KEI.IDO_DIV,				JKKBatConst.IDO_DIV_WRIB);						// 異動区分
			// DBアクセスを実行します
			this.db_KK_T_WRIB_SVC_KEI.insertByPrimaryKeys(insDbObj);
		}
	}
	
	/**
	 * 割引サービス契約を更新する(解約済用）
	 * 
	 * @param inMap 入力レコード
	 * @param resultWribSvcKei 割引サービス契約更新情報
	 * @throws Exception 各種エラー
	 */
	private void execKK_T_WRIB_SVC_KEI_PKUPDATE(final JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface resultWribSvcKei) throws Exception
	{
		if(null != resultWribSvcKei)
		{
			//パラメタを設定（WHERE句）
			JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
			whereMap.setValue(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_KEI_NO,				resultWribSvcKei.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_KEI_NO));
			whereMap.setValue(JBSbatKK_T_WRIB_SVC_KEI.GENE_ADD_DTM,					resultWribSvcKei.getString(JBSbatKK_T_WRIB_SVC_KEI.GENE_ADD_DTM));
			
			// 項目を更新する
			JBSbatCommonDBInterface valueMap = new JBSbatCommonDBInterface ();
			valueMap.setValue("MSKM_DTL_NO" , mskmDtlNo);// 申込明細番号('999999999999')
			
			// DBアクセスを実行します
			db_KK_T_WRIB_SVC_KEI.updateByPrimaryKeys(whereMap,valueMap);
		}
	}
	
	/**
	 * 分割コミット数取得<br>
	 * <p>
	 * システムパラメータ管理から分割コミット数を取得
	 * </p>
	 * @return 分割コミット数
	 */
	private String getCommitRcrdCnt() throws Exception{

		// システムパラメータ管理テーブル検索用パラメータ
		String[] sysParamParam = {"COMMIT_CNT"
				, commonItem.getJobid()
				, commonItem.getOpeDate()
				, commonItem.getOpeDate()};

		// システムパラメータ管理テーブル検索
		executeZM_M_SYS_PARAM_KNRI_AC_SELECT_001(sysParamParam);

		JBSbatCommonDBInterface resMap = new JBSbatCommonDBInterface();

		// 分割コミット数
		String commitRcrdCnt = "";

		// システムパラメータより取得した値をセットする。
		while((resMap = db_access_sys_param_knri.selectNext()) != null)
		{
			commitRcrdCnt = resMap.getString("SYS_PARAM_SETTE_VALUE_1");
		}
		//システムパラメータの値がnull
		if(commitRcrdCnt == null)
		{
			//EKKB0090TE	データ値が不正です。(%1%)
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0090TE", new String[]{"SYS_PARAM_SETTE_VALUE_1=" + commitRcrdCnt + "年月日を確認してください"});
		}
		
		return commitRcrdCnt;
	}
	
	/**
	 * SQLKEY(AC_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	システムパラメータ分類コード
	 *		 	システムパラメータID
	 *		 	システムパラメータ適用開始年月日
	 *		 	システムパラメータ適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_SYS_PARAM_KNRI_AC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
	
		// DBアクセスを実行します
		db_access_sys_param_knri.selectBySqlDefine(paramList, ZM_M_SYS_PARAM_KNRI_AC_SELECT_001);
		
	}
	
	// ANK-4018-00-00 ADD END
	
	/**
	 * 進捗を登録する
	 * 
	 * @param inMap 入力レコード
	 * @throws Exception 各種エラー
	 */
	private void execKK_T_PRG_PKINSERT(final JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 進捗番号
		String prgNo = JBSbatStringUtil.padNumFormString(JBSbatOracleSeqUtil.getNextSeq(commonItem.getConnection(), SEQ_PRG_NO), 12);
		// ANK-4018-00-00 DEL START	
		// 申込明細番号
//		String mskmDtlNo = inMap.getString(JBSbatKKIFM917.MSKM_DTL_NO);
		// ANK-4018-00-00 DEL END	
		// サービス契約番号
		String svcKeiNo = inMap.getString(JBSbatKKIFM917.SVC_KEI_NO);
		// 異動区分
		String idoDiv = JKKBatConst.IDO_DIV_WRIB;
		// 異動年月日時分秒
		String idoDtm = JKKBatCommon.getIdoDtmMax(commonItem, svcKeiNo, idoDiv, stmt);
		// 進捗年月日時分秒
		// ANK-4018-00-00 MOD START	
//		夜間バッチ運用年月日前日を設定
//		String prgDtm = JKKBatCommon.addDay(super.opeDate, 1) + sysDate.substring(8);
		String prgDtm = JKKBatCommon.addDay(super.opeDate, -1) + sysDate.substring(8);
		// ANK-4018-00-00 MOD END
		
		JBSbatCommonDBInterface insDbObj = new JBSbatCommonDBInterface();
		insDbObj.setValue(JBSbatKK_T_PRG.PRG_NO,					prgNo);									// 進捗番号
		insDbObj.setValue(JBSbatKK_T_PRG.MSKM_DTL_NO,				mskmDtlNo);								// 申込明細番号('999999999999')
		insDbObj.setValue(JBSbatKK_T_PRG.SEIKY_KEI_NO,				"");									// 請求契約番号
		insDbObj.setValue(JBSbatKK_T_PRG.SEIKY_WAY_NO_KOZA,			"");									// 請求方法番号（口座）
		insDbObj.setValue(JBSbatKK_T_PRG.SEIKY_WAY_NO_CRECARD,		"");									// 請求方法番号（クレジットカード）
		insDbObj.setValue(JBSbatKK_T_PRG.SVC_KEI_NO,				svcKeiNo);								// サービス契約番号
		insDbObj.setValue(JBSbatKK_T_PRG.SVC_KEI_UCWK_NO,			"");									// サービス契約内訳番号
		insDbObj.setValue(JBSbatKK_T_PRG.SVC_KEI_KAISEN_UCWK_NO,	"");									// サービス契約回線内訳番号
		insDbObj.setValue(JBSbatKK_T_PRG.KKTK_SVC_KEI_NO,			"");									// 機器提供サービス契約番号
		insDbObj.setValue(JBSbatKK_T_PRG.OP_SVC_KEI_NO,				"");									// オプションサービス契約番号
		insDbObj.setValue(JBSbatKK_T_PRG.SEIOPSVC_KEI_NO,			"");									// 請求オプションサービス契約番号
		insDbObj.setValue(JBSbatKK_T_PRG.SBOP_SVC_KEI_NO,			"");									// サブオプションサービス契約番号
		insDbObj.setValue(JBSbatKK_T_PRG.WRIB_SVC_KEI_NO,			"");									// 割引サービス契約番号
		insDbObj.setValue(JBSbatKK_T_PRG.IDO_DIV,					idoDiv);								// 異動区分
		insDbObj.setValue(JBSbatKK_T_PRG.IDO_DTM,					idoDtm);								// 異動年月日時分秒
		insDbObj.setValue(JBSbatKK_T_PRG.PRG_STAT,					JBSbatKKConst.CD00647_PRG_STAT_F051);	// 進捗ステータス
		insDbObj.setValue(JBSbatKK_T_PRG.PRG_DTM,					prgDtm);								// 進捗年月日時分秒
		insDbObj.setValue(JBSbatKK_T_PRG.PRG_MEMO,					"");									// 進捗メモ
		// ANK-4018-00-00 MOD START	
//		insDbObj.setValue(JBSbatKK_T_PRG.PRG_TKJK_1,				"");									// 進捗特記事項１
		insDbObj.setValue(JBSbatKK_T_PRG.PRG_TKJK_1,				"高速割廃止に伴うデータ補正");			// 進捗特記事項１
		// ANK-4018-00-00 MOD END	
		insDbObj.setValue(JBSbatKK_T_PRG.PRG_TKJK_2,				"");									// 進捗特記事項２
		insDbObj.setValue(JBSbatKK_T_PRG.ADD_DTM,					sysDate);								// 登録年月日時分秒
		insDbObj.setValue(JBSbatKK_T_PRG.ADD_OPEACNT,				batchUserId);							// 登録オペレータアカウント
		insDbObj.setValue(JBSbatKK_T_PRG.UPD_DTM,					sysDate);								// 更新年月日時分秒
		insDbObj.setValue(JBSbatKK_T_PRG.UPD_OPEACNT,				batchUserId);							// 更新オペレータアカウント
		insDbObj.setValue(JBSbatKK_T_PRG.DEL_DTM,					"");									// 削除年月日時分秒
		insDbObj.setValue(JBSbatKK_T_PRG.DEL_OPEACNT,				"");									// 削除オペレータアカウント
		insDbObj.setValue(JBSbatKK_T_PRG.MK_FLG,					JBSbatKKConst.MK_FLG_YK);				// 無効フラグ
		insDbObj.setValue(JBSbatKK_T_PRG.ADD_UNYO_YMD,				"");									// 登録運用年月日
		insDbObj.setValue(JBSbatKK_T_PRG.ADD_TRN_ID,				"");									// 登録処理ＩＤ
		insDbObj.setValue(JBSbatKK_T_PRG.UPD_UNYO_YMD,				"");									// 更新運用年月日
		insDbObj.setValue(JBSbatKK_T_PRG.UPD_TRN_ID,				"");									// 更新処理ＩＤ
		insDbObj.setValue(JBSbatKK_T_PRG.DEL_UNYO_YMD,				"");									// 削除運用年月日
		insDbObj.setValue(JBSbatKK_T_PRG.DEL_TRN_ID,				"");									// 削除処理ＩＤ
		// DBアクセスを実行します
		db_KK_T_PRG.insertByPrimaryKeys(insDbObj);
	}
}
