/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHTokusokuStatSeniUpd
*	ソースファイル名	：JBSbatCHTokusokuStatSeniUpd.java
*	作成者				：富士通　
*	作成日				：2011年11月21日
*＜機能概要＞
*　督促ステータス遷移更新部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/11/21   富士通		新規作成
*	v3.00		2012/06/07   FJ)山下	【ANK-0024-04-00】ファイル項目追加
*	v3.01		2012/06/27   FJ）冨井	【ST2-2012-0001109】料金対応記録登録データ設定値修正
*	v3.02		2012/07/18   FJ）冨井	【IT2-2012-0001346】料金対応記録登録データ設定値修正（変更後督促ステータス）
*	v3.03		2012/08/22   FJ)本多	【TG1-2012-0000128】対応
*	v3.04.00	2012/08/27	 FJ）成田	【TG1-2012-0000139】料金対応記録登録部品クラスの初期化位置を変更
*	v4.00.00	2012/12/12   Fip)藤田	【IT4-2012-0000157】性能改善
*										・督促異動番号の取得（シーケンス）を入力データに督促番号がない場合のみとし、それ以外は初期値を用いるようにする。
*										・各更新（督促、督促異動、督促債権関連）を配列更新とする。
*	v4.01		2013/01/23   FJ）後藤	【KT1-2013-0000075】債権ステータス追加
*	v4.02		2013/05/28   FJ）後藤	【TG1-2013-0000325】リアル収納、仮収納を未収扱いとした不具合対応
*	v5.00		2013/09/02   FJ）狭間	【OM-2013-0001406】督促異動スキーマ登録の登録内容変更
*	v6.00		2013/12/02   FJ）小掠	【OM-2013-0004484】仮収納債権内訳情報を処理するように追加
*	v6.01		2013/12/09   FJ）小掠	【OM-2013-0004484】請求年月対象外処理追加
*	v28.00.00	2016/11/14	 FJ）田口	【ANK-3033-00-00】mineoの利用停止・強制解約処理の自動化
*	v41.00.00	2019/02/05	 FJ) 原田	【ANK-3396-00-00】利用停止スケジュール変更
*	v44.00.00	2019/06/05	 FJ) 原田	【OM-2019-0000536】強制予告回数が予約レコードに反映されていない
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatMatchServiceInterface;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCHbatPrcTaiokrkAdd;
import eo.business.common.JCHbatSeikyKaknoBusinessUtil;
import eo.business.util.file.JBSbatCHIFM096;
import eo.business.util.file.JBSbatCHIFM101;
import eo.business.util.file.JBSbatCHIFM160;
import eo.business.util.table.JBSbatCH_M_PRC_SCHDL_TEIGI;
import eo.business.util.table.JBSbatCH_T_SAIKEN;
import eo.business.util.table.JBSbatCH_T_TOKUSOKU;
import eo.business.util.table.JBSbatCH_T_TOKUSOKU_IDO;
import eo.business.util.table.JBSbatKK_T_SEIKY_KEI;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JKKStringUtil;
import eo.framework.application.JBSbatBusinessException;
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;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHTokusokuStatSeniUpd extends JBSbatBusinessService implements JBSbatMatchServiceInterface
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/

	/** テーブル(督促)*/
	private static final String D_TBL_NAME_CH_T_TOKUSOKU = "CH_T_TOKUSOKU";

	/** テーブル(督促異動)*/
	private static final String D_TBL_NAME_CH_T_TOKUSOKU_IDO = "CH_T_TOKUSOKU_IDO";

	/** テーブル(督促債権関連)*/
	private static final String D_TBL_NAME_CH_T_TOKUSK_SKN_KNRN = "CH_T_TOKUSK_SKN_KNRN";
	
	/** テーブル(料金スケジュール定義)*/
	private static final String D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI = "CH_M_PRC_SCHDL_TEIGI";

	// ANK-3396-00-00 ADD START
	/** テーブル(請求契約)*/
	private static final String D_TBL_NAME_KK_T_SEIKY_KEI = "KK_T_SEIKY_KEI";
	// ANK-3396-00-00 ADD END

	/** SQL定義キー(CH_SELECT_006)*/
	private static final String CH_T_TOKUSOKU_CH_SELECT_006 = "CH_SELECT_006";

	/** SQL定義キー(CH_SELECT_016)*/
	private static final String CH_T_TOKUSOKU_CH_SELECT_016 = "CH_SELECT_016";

	/** SQL定義キー(CH_UPDATE_001)*/
	private static final String CH_T_TOKUSOKU_CH_UPDATE_001 = "CH_UPDATE_001";

	/** SQL定義キー(CH_SELECT_002)*/
	private static final String CH_T_TOKUSOKU_IDO_CH_SELECT_002 = "CH_SELECT_002";

	/** SQL定義キー(CH_SELECT_014)*/
	private static final String CH_M_PRC_SCHDL_TEIGI_CH_SELECT_014 = "CH_SELECT_014";

	/** SQL定義キー(CH_SELECT_011)*/
	private static final String CH_M_PRC_SCHDL_TEIGI_CH_SELECT_011 = "CH_SELECT_011";

	// ANK-3396-00-00 ADD START
	/** SQL定義キー(DK_SELECT_001)*/
	private static final String KK_T_SEIKY_KEI_DK_SELECT_001 = "DK_SELECT_001";

	/** SQL定義キー(CH_UPDATE_001)*/
	private static final String KK_T_SEIKY_KEI_CH_UPDATE_001 = "CH_UPDATE_001";
	// ANK-3396-00-00 ADD END

	// OM-2019-0000536 ADD START
	/** SQL定義キー(CH_SELECT_018)*/
	private static final String KK_T_SEIKY_KEI_CH_SELECT_018 = "CH_SELECT_018";

	/** SQL定義キー(CH_UPDATE_002)*/
	private static final String KK_T_SEIKY_KEI_CH_UPDATE_002 = "CH_UPDATE_002";
	// OM-2019-0000536 ADD END

	/** テーブルアクセスクラス(督促)*/
	private JBSbatSQLAccess db_CH_T_TOKUSOKU = null;

	/** テーブルアクセスクラス(督促異動)*/
	private JBSbatSQLAccess db_CH_T_TOKUSOKU_IDO = null;

	/** テーブルアクセスクラス(督促債権関連)*/
	private JBSbatSQLAccess db_CH_T_TOKUSK_SKN_KNRN = null;

	/** テーブルアクセスクラス(料金スケジュール定義)*/
	private JBSbatSQLAccess db_CH_M_PRC_SCHDL_TEIGI = null;

	// ANK-3396-00-00 ADD START
	/** テーブルアクセスクラス(請求契約)*/
	private JBSbatSQLAccess db_KK_T_SEIKY_KEI = null;

	/** テーブルアクセスクラス(請求契約)*/
	private JBSbatSQLAccess db_KK_T_SEIKY_KEI_2 = null;
	// ANK-3396-00-00 ADD END

	// ANK-3396-00-00 ADD START
	/** テーブルアクセスクラス(請求契約)*/
	private JBSbatSQLAccess db_KK_T_SEIKY_KEI_3 = null;

	/** テーブルアクセスクラス(請求契約)*/
	private JBSbatSQLAccess db_KK_T_SEIKY_KEI_4 = null;
	// ANK-3396-00-00 ADD END

	/** キーマッチ処理フラグ*/
	private boolean matchProcFlg;

	/** マスタファイル処理フラグ*/
	private boolean mastProcFlg;

	/** トランファイル処理フラグ*/
	private boolean tranProcFlg;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 請求収納業務共通クラス */
	private JCHbatSeikyKaknoBusinessUtil seikyUtil = null;
	
	/** 料金対応記録登録部品 */
	private JCHbatPrcTaiokrkAdd jCHbatPrcTaiokrkAdd = null;
	
	/** 退避．督促データ識別(遷移情報データ)*/
	private String tihTokusokuDataSkbt = null;
	
	/** 督促番号桁数 */
	private static final int TOKUSOKU_NO_LENGTH = 12;
	
	/** 督促異動番号初期値 */
	private static final String TOKUSOKU_IDO_NO_INIT = "0";
	
	/** 督促管理終了年月日(固定値) */
	private static final String TOKUSOKU_KANRI_END_YMD = "20991231";
	
	/** 料金スケジュール定義SQLバインド数（CH_SELECT_014） */
	private static final int SCHDL_TEIGI_014_BIND_CNT = 16;
	
	/** 請求年月:（当月） */
	private String seikyuYm = null;
	
	/** 督促番号 */
	private String tokusokuNo = null;
	
	/** 退避．トランキー */
	private String bkTranKey = null;
	
	/** パラメータ設定用(督促異動番号) */
	private String tokuIdoNo = null;	
	
	/** 未収金額 */
	private BigDecimal mishuAmnt = BigDecimal.ZERO;
	
	/** 退避.マスタマップ */
	private JBSbatServiceInterfaceMap bkMastMap = null;
	
	/** 更新前督促情報 */
	private JBSbatCommonDBInterface befUpdTokInfo = null;
	
	/** 請求処理日フラグ */
	private boolean seikyTrnFlg = false;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CH_T_TOKUSOKU = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_TOKUSOKU);
		db_CH_T_TOKUSOKU_IDO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_TOKUSOKU_IDO);
		db_CH_T_TOKUSK_SKN_KNRN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_TOKUSK_SKN_KNRN);
		db_CH_M_PRC_SCHDL_TEIGI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI);
		// ANK-3396-00-00 ADD START
		db_KK_T_SEIKY_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIKY_KEI);
		db_KK_T_SEIKY_KEI_2 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIKY_KEI);
		// ANK-3396-00-00 ADD END
		// OM-2019-0000536 ADD START
		db_KK_T_SEIKY_KEI_3 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIKY_KEI);
		db_KK_T_SEIKY_KEI_4 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIKY_KEI);
		// OM-2019-0000536 ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial][opeDate=" + super.opeDate + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial][freeItem=" + super.freeItem + "]");
		
		JACbatParamUtil paramUtil = new JACbatParamUtil(super.commonItem);
		
		// 業務機能識別コード取得（料金項目コード（未収金額））
		String gyouParam = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_WKS_MISYU_KINGAKU);
		// 督促データ識別(督促ステータス遷移情報データ)
		tihTokusokuDataSkbt = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_TKSK_DATA_SKBT_02);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][gyouParam=" + gyouParam + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][tihTokusokuDataSkbt=" + tihTokusokuDataSkbt + "]");
		
		// 請求収納業務共通クラス生成
		seikyUtil = new JCHbatSeikyKaknoBusinessUtil(commonItem);
		
		// 当月取得
		getTogetu(paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_TOKUSOKU_EVENT_CD).split(JACStrConst.COMMA));

		// 請求請求処理日確認
		getSchdl();
		
		paramUtil.close();
		// 料金対応記録登録部品の初期処理
		jCHbatPrcTaiokrkAdd = new JCHbatPrcTaiokrkAdd(super.commonItem);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 料金スケジュール定義より当月を取得します。
	 * 
	 * @param tokusokuTrgEvntCd 督促対象イベントコード配列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getTogetu(String[] tokusokuTrgEvntCd) throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getTogetu]");
		
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		while(paramList.getListSize() < SCHDL_TEIGI_014_BIND_CNT - 1)
		{
			for(int i = 0; i < tokusokuTrgEvntCd.length && paramList.getListSize() < SCHDL_TEIGI_014_BIND_CNT - 1; i++)
			{
				// イベントコード設定
				paramList.setValue(tokusokuTrgEvntCd[i]);
			}
		}
		
		paramList.setValue(super.opeDate); 										// バッチ運用日

		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getTogetu][paramList=" + paramList.getList().toString() + "]");
		
		executeCH_M_PRC_SCHDL_TEIGI_CH_SELECT_014(paramList.getList().toArray());
		JBSbatCommonDBInterface dbMap = db_CH_M_PRC_SCHDL_TEIGI.selectNext();

		// 請求スキーマに該当データがあるか判定
		if(dbMap != null)
		{
			// 取得した請求年月を設定
			this.seikyuYm = dbMap.getString(JBSbatCH_M_PRC_SCHDL_TEIGI.SEIKY_YM); 
		}
		else
		{
			assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getTogetu][督促処理対象外]");
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getTogetu][当月=" + this.seikyuYm + "]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getTogetu]");
		
		bkMastMap = new JBSbatServiceInterfaceMap();
	}
	
	/**
	 * 主処理
	 * @param mastMap　入力電文
	 * @param tranMap　入力電文
	 * @param outputInItem  入力情報
	 * @return JBSbatOutputItem 出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap mastMap, JBSbatServiceInterfaceMap tranMap, JBSbatOutputItem outputInItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert mastMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][mastMap = " + mastMap.getMap().toString() + "]") : true;
		assert tranMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][tranMap = " + tranMap.getMap().toString() + "]") : true;

		if(seikyTrnFlg)
		{
			// 入力Ｍのみ存在する
			if (mastMap != null && tranMap == null)
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍのみ存在する]");
				this.setMastProcFlg(true);
			}
			// 入力Ｔのみ存在する
			else if (mastMap == null && tranMap != null)
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｔのみ存在する]");

				String tranSeikyKeiNoKey 	= tranMap.getString(JBSbatCHIFM160.SEIKY_KEI_NO);		// 督促対象未納債権情報．請求契約番号

				if(bkTranKey == null)
				{
					// 更新前督促取得
					befUpdTokInfo = getchkTokusoku(tranSeikyKeiNoKey);

					// 取得結果なしの場合、新規採番
					if(befUpdTokInfo == null)
					{
						tokusokuNo = JCCBatCommon.getFormatedNextSeq(super.commonItem, JACStrConst.SEQ_TOKUSOKU_NO, JACStrConst.KARA_MOJI, TOKUSOKU_NO_LENGTH);
					}
					else
					{
						tokusokuNo = befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_NO);
					}
				}
				else if(!tranSeikyKeiNoKey.equals(bkTranKey))
				{
					//if(kariUmuFlg == true)
					//{
						// 各種スキーマ登録
						addDb();
					//}

					// トランキー退避
					bkTranKey = tranSeikyKeiNoKey;

					// 未収額初期化
					mishuAmnt = BigDecimal.ZERO;

					// 退避．マスタマップ初期化
					bkMastMap =  new JBSbatServiceInterfaceMap();

					// 更新前督促取得
					befUpdTokInfo = getchkTokusoku(tranSeikyKeiNoKey);

					// 取得結果なしの場合、新規採番
					if(befUpdTokInfo == null)
					{
						tokusokuNo = JCCBatCommon.getFormatedNextSeq(super.commonItem, JACStrConst.SEQ_TOKUSOKU_NO, JACStrConst.KARA_MOJI, TOKUSOKU_NO_LENGTH);
					}
					else
					{
						tokusokuNo = befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_NO);
					}
				}
				
				// 督促債権関連取得
				this.getTokuskSknKnrn(tranMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_NO));

				// 未収額加算
				mishuAmnt = mishuAmnt.add(tranMap.getBigDecimal(JBSbatCHIFM160.AMNT));

				this.setTranProcFlg(true);
			}
			// 入力Ｍ、入力Ｔともに存在する
			else
			{
				// 督促データ識別が督促ステータス遷移情報データ以外の場合
				if(!tihTokusokuDataSkbt.equals(mastMap.getString(JBSbatCHIFM101.TOKUSOKU_DATA_SKBT)))
				{
					this.setMastProcFlg(true);
					// 次レコードへ
					return outputInItem;
				}

				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力M、入力Ｔともに存在する]");
				// マッチングキー取得
				String mastSeikyKeiNoKey 	= mastMap.getString(JBSbatCHIFM101.SEIKY_KEI_NO);		// 請求契約配下契約状態情報．請求契約番号
				String tranSeikyKeiNoKey 	= tranMap.getString(JBSbatCHIFM160.SEIKY_KEI_NO);		// 督促対象未納債権情報．請求契約番号

				// 入力Ｍ＝入力Ｔ（マッチ）
				if (mastSeikyKeiNoKey.compareTo(tranSeikyKeiNoKey) == 0)
				{
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍ、入力Ｔともに存在する][入力Ｍ＝入力Ｔ（マッチ）]");

					// 初回以外
					if(bkTranKey != null)
					{
						// 各種スキーマ登録
						addDb();
					}

					// マスタマップ退避
					bkMastMap.getMap().putAll(mastMap.getMap());

					// 未収額初期化
					mishuAmnt = BigDecimal.ZERO;

					// トランキー退避
					bkTranKey = tranSeikyKeiNoKey;

					// 督促番号退避
					tokusokuNo = mastMap.getString(JBSbatCHIFM101.TOKUSOKU_NO);

					// 督促番号が未設定の場合採番
					if(tokusokuNo.equals(JACStrConst.KARA_MOJI))
					{
						tokusokuNo = JCCBatCommon.getFormatedNextSeq(super.commonItem, JACStrConst.SEQ_TOKUSOKU_NO, JACStrConst.KARA_MOJI, TOKUSOKU_NO_LENGTH);
						befUpdTokInfo = null;
					}
					else
					{
						// 更新前督促スキーマ情報検索
						befUpdTokInfo = this.getBefUpdTokusoku();
					}
					this.setMastProcFlg(true);
				}
				// 入力Ｍ＜入力Ｔ
				else if (mastSeikyKeiNoKey.compareTo(tranSeikyKeiNoKey) < 0)
				{
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍ、入力Ｔともに存在する][入力Ｍ＜入力Ｔ]");

					this.setMastProcFlg(true);
				}
				// 入力Ｍ＞入力Ｔ
				else
				{
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍ、入力Ｔともに存在する][入力Ｍ＞入力Ｔ]");

					if(bkTranKey == null)
					{
						// 更新前督促取得
						befUpdTokInfo = getchkTokusoku(tranSeikyKeiNoKey);

						// 取得結果なしの場合、新規採番
						if(befUpdTokInfo == null)
						{
							tokusokuNo = JCCBatCommon.getFormatedNextSeq(super.commonItem, JACStrConst.SEQ_TOKUSOKU_NO, JACStrConst.KARA_MOJI, TOKUSOKU_NO_LENGTH);
						}
						else
						{
							tokusokuNo = befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_NO);
						}
					}
					else if(!tranSeikyKeiNoKey.equals(bkTranKey))
					{
						//if(kariUmuFlg == true)
						//{
							// 各種スキーマ登録
							addDb();
						//}

						// トランキー退避
						bkTranKey = tranSeikyKeiNoKey;

						// 未収額初期化
						mishuAmnt = BigDecimal.ZERO;

						// 退避．マスタマップ初期化
						bkMastMap =  new JBSbatServiceInterfaceMap();

						// 更新前督促取得
						befUpdTokInfo = getchkTokusoku(tranSeikyKeiNoKey);

						// 取得結果なしの場合、新規採番
						if(befUpdTokInfo == null)
						{
							tokusokuNo = JCCBatCommon.getFormatedNextSeq(super.commonItem, JACStrConst.SEQ_TOKUSOKU_NO, JACStrConst.KARA_MOJI, TOKUSOKU_NO_LENGTH);
						}
						else
						{
							tokusokuNo = befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_NO);
						}
					}

					// 督促債権関連取得
					this.getTokuskSknKnrn(tranMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_NO));

					// 未収額加算
					mishuAmnt = mishuAmnt.add(tranMap.getBigDecimal(JBSbatCHIFM160.AMNT));

					this.setTranProcFlg(true);
				}
			}
		}
		else
		{
			// 入力Ｍが存在する
			if (mastMap != null)
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力Ｍが存在する]");
				
				// 督促データ識別が督促ステータス遷移情報データ以外の場合
				if(!tihTokusokuDataSkbt.equals(mastMap.getString(JBSbatCHIFM101.TOKUSOKU_DATA_SKBT)))
				{
					this.setMastProcFlg(true);
					// 次レコードへ
					return outputInItem;
				}
				
				// 督促番号退避
				tokusokuNo = mastMap.getString(JBSbatCHIFM101.TOKUSOKU_NO);
				assert tokusokuNo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][tokusokuNo = " + tokusokuNo + "]") : true;

				// 督促番号が未設定の場合
				if(!tokusokuNo.equals(JACStrConst.KARA_MOJI))
				{

					// 更新前督促スキーマ情報検索
					befUpdTokInfo = this.getBefUpdTokusoku();
					
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][督促更新]");
					// 督促スキーマ更新（請求処理日ステータスのみ）
					this.updTokusokuStat(mastMap);
					
					// 督促異動番号の取得
					tokuIdoNo = getTokuIdoNo(tokusokuNo);
					assert tokuIdoNo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][tokuIdoNo = " + tokuIdoNo + "]") : true;
					
					// 料金対応記録の登録
					this.prcTaiokrkAdd(tokusokuNo, tokuIdoNo, befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_STAT), mastMap.getString(JBSbatCHIFM101.SENI_TOKUSOKU_STAT),  mastMap.getString(JBSbatCHIFM101.SEIKY_KEI_NO), seikyuYm);

					// 督促異動スキーマ登録
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][督促異動追加]");
					this.insTokusokuIdo(befUpdTokInfo);
					
					// ANK-3396-00-00 ADD START
					if(chkUpdSeikyKei(befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_STAT), mastMap.getString(JBSbatCHIFM101.SENI_TOKUSOKU_STAT)))
					{
						JBSbatCommonDBInterface befUpdSeikyKeiInfo = null;
						
						// 更新前請求契約情報の取得
						befUpdSeikyKeiInfo = this.getBefUpdSeikyKeiInfo(mastMap.getString(JBSbatCHIFM101.SEIKY_KEI_NO));
						
						// 請求契約の更新
						assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][請求契約更新]");
						this.updSeikyKei(mastMap.getString(JBSbatCHIFM101.SEIKY_KEI_NO), befUpdSeikyKeiInfo);
						
						// OM-2019-0000536 ADD START
						// 予約レコードが存在する場合、予約レコードも更新する。
						JBSbatCommonDBInterface befUpdRsvSeikyKeiInfo = null;
						
						// 更新前請求契約情報の取得
						befUpdRsvSeikyKeiInfo = this.getBefUpdRsvSeikyKeiInfo(mastMap.getString(JBSbatCHIFM101.SEIKY_KEI_NO));
						
						if (befUpdRsvSeikyKeiInfo != null)
						{
							// 請求契約の更新
							this.updRsvSeikyKei(mastMap.getString(JBSbatCHIFM101.SEIKY_KEI_NO), befUpdRsvSeikyKeiInfo);
						}
						// OM-2019-0000536 ADD END
					}
					// ANK-3396-00-00 ADD END
				}
				
				this.setMastProcFlg(true);
			}
			// 入力Ｔのみ存在する
			else
			{
				this.setTranProcFlg(true);
			}
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		
		return outputInItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	
	/**
	 * マスタ側のキーブレイク処理します。
	 * 
	 * @throws Exception        業務サービス内で発生した例外全般
	 */
	private void addDb()throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][addDb]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][addDb][キーブレイク処理]");
		
		String tokusokuStat = null;
		
		// 仮収納のみの場合
		if(bkMastMap.getMap().size() == 0)
		{
			tokusokuStat = JACStrConst.TOKUSOKU_STAT_NASHI;
		}
		else
		{
			tokusokuStat = bkMastMap.getString(JBSbatCHIFM101.SENI_TOKUSOKU_STAT);
		}
		
		// 更新前督促が存在する場合
		if(befUpdTokInfo != null)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][addDb][督促更新]");
			// 督促スキーマ更新
			this.updTokusoku(tokusokuStat);
			
			// 督促異動番号の取得
			tokuIdoNo = getTokuIdoNo(tokusokuNo);
			assert tokuIdoNo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][addDb][tokuIdoNo = " + tokuIdoNo + "]") : true;
			
			// 督促異動スキーマ登録
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][addDb][督促異動追加]");
			this.insTokusokuIdo(befUpdTokInfo);
			
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][addDb][料金対応記録追加]");
			// 料金対応記録の登録
			this.prcTaiokrkAdd(tokusokuNo, tokuIdoNo, befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_STAT), tokusokuStat, bkTranKey, seikyuYm);
			
			// ANK-3396-00-00 ADD START
			if(chkUpdSeikyKei(befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_STAT), tokusokuStat))
			{
				JBSbatCommonDBInterface befUpdSeikyKeiInfo = null;
				
				// 更新前請求契約情報の取得
				befUpdSeikyKeiInfo = this.getBefUpdSeikyKeiInfo(bkTranKey);
				
				// 請求契約の更新
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][addDb][請求契約更新]");
				this.updSeikyKei(bkTranKey, befUpdSeikyKeiInfo);
				
				// OM-2019-0000536 ADD START
				// 予約レコードが存在する場合、予約レコードも更新する。
				JBSbatCommonDBInterface befUpdRsvSeikyKeiInfo = null;
				
				// 更新前請求契約情報の取得
				befUpdRsvSeikyKeiInfo = this.getBefUpdRsvSeikyKeiInfo(bkTranKey);
				
				if (befUpdRsvSeikyKeiInfo != null)
				{
					// 請求契約の更新
					this.updRsvSeikyKei(bkTranKey, befUpdRsvSeikyKeiInfo);
				}
				// OM-2019-0000536 ADD END
			}
			// ANK-3396-00-00 ADD END
		}
		else
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][addDb][督促追加]");
			// 督促スキーマ登録
			this.insTokusoku(tokusokuStat);

			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][addDb][料金対応記録追加]");
			// 料金対応記録の登録
			this.prcTaiokrkAdd(tokusokuNo, JACStrConst.KARA_MOJI, JACStrConst.KARA_MOJI, tokusokuStat, bkTranKey, seikyuYm);
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][addDb]");
	}
	
	/**
	 * 料金対応記録を登録します。
	 * 
	 * @param tokusokuNo       督促番号
	 * @param tokuIdoNo        督促異動番号
	 * @param tokusokuStat     督促ステータス
	 * @param tokusokuSeniStat 督促遷移ステータス
	 * @param seikyKeiNo       請求契約番号
	 * @param seikyYM          対象年月
	 * @throws Exception       業務サービス内で発生した例外全般
	 */

	private void prcTaiokrkAdd(String tokusokuNo, String tokuIdoNo, String tokusokuStat, String tokusokuSeniStat, String seikyKeiNo, String seikyYM) throws Exception
	{

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][prcTaiokrkAdd]");

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][prcTaiokrkAdd][料金対応記録登録] [tokusokuNo = " + tokusokuNo + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][prcTaiokrkAdd][料金対応記録登録] [tokuIdoNo = " + tokuIdoNo + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][prcTaiokrkAdd][料金対応記録登録] [tokusokuStat = " + tokusokuStat + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][prcTaiokrkAdd][料金対応記録登録] [tokusokuSeniStat = " + tokusokuSeniStat + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][prcTaiokrkAdd][料金対応記録登録] [seykyKeiNo = " +  seikyKeiNo + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][prcTaiokrkAdd][料金対応記録登録] [seikyYM = " +  seikyYM + "]");
		
		
		// 料金対応記録登録データの設定
		JBSbatServiceInterfaceMap prcTaioInMap = new JBSbatServiceInterfaceMap();
		{
			// 01.請求契約番号
			prcTaioInMap.setString(JBSbatCHIFM096.SEIKY_KEI_NO, seikyKeiNo);
			// 02.サービス契約番号
			prcTaioInMap.setString(JBSbatCHIFM096.SVC_KEI_NO, null);
			// 03.対応年月日時分秒
			prcTaioInMap.setString(JBSbatCHIFM096.TAIO_DTM, super.opeDate.concat(JCCBatCommon.getSysDateTimeStamp().substring(8)));
			// 04.料金対応記録種別コード
			prcTaioInMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_CD, JACStrConst.PRC_TAIO_KIROK_SBT_TOK_PRO_BAT);
			// 05.料金対応記録種別詳細コード
			prcTaioInMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_DTL_CD, JACStrConst.PRC_TAIO_KIROK_SBT_DTL_TSSTA);
			// 06.記録対象年月
			prcTaioInMap.setString(JBSbatCHIFM096.KIROK_TG_YM, seikyYM);
			// 07.督促番号
			prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_NO, tokusokuNo);
			// 08.督促異動番号
			prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_IDO_NO, tokuIdoNo);
			// 09.請求番号
			prcTaioInMap.setString(JBSbatCHIFM096.SEIKY_NO, null);
			// 10.金庫番号
			prcTaioInMap.setString(JBSbatCHIFM096.KNK_NO, null);
			// 11.債権番号
			prcTaioInMap.setString(JBSbatCHIFM096.SAIKEN_NO, null);
			// 12.入金番号
			prcTaioInMap.setString(JBSbatCHIFM096.NYUKIN_NO, null);
			// 13.電子ファイル管理番号
			prcTaioInMap.setString(JBSbatCHIFM096.EFILE_KANRI_NO, null);
			// 14.対応履歴連動対象フラグ
			prcTaioInMap.setString(JBSbatCHIFM096.TAIORRKI_RENDO_TG_FLG, JACStrConst.TAIORRKI_RENDO_TG_FLG_HIHYOJI);
			// 15.変更前金額
			prcTaioInMap.setString(JBSbatCHIFM096.AMNT_CHBF, null);
			// 16.変更後金額
			prcTaioInMap.setString(JBSbatCHIFM096.AMNT_CHAF, null);
			// 17.変更前督促ステータス
			prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHBF, tokusokuStat);
			// 18.変更後督促ステータス
			prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHAF, tokusokuSeniStat);
			// 19.変更前金庫料金項目コード
			prcTaioInMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHBF, null);
			// 20.変更後金庫料金項目コード
			prcTaioInMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHAF, null);
			// 21.督促メールパターン
			prcTaioInMap.setString(JBSbatCHIFM096.TOKUSOKU_ML_PTN_CD, null);
			// 22.変更前補償費扱いフラグ
			prcTaioInMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHBF, null);
			// 23.変更後補償費扱いフラグ
			prcTaioInMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHAF, null);
			// 24.記事
			prcTaioInMap.setString(JBSbatCHIFM096.KIJI, null);
		}
		
		// 料金対応記録登録を実行
		jCHbatPrcTaiokrkAdd.prcTaiokrkAdd(prcTaioInMap);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][prcTaiokrkAdd]");
	}

	/**
	 * 督促債権関連情報を取得します。
	 * 
	 * @param saikenNo 債権番号
	 * @return JBSbatCommonDBInterface 督促債権関連情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatCommonDBInterface getTokuskSknKnrn(String saikenNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getTokuskSknKnrn]");
		assert tokusokuNo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getTokuskSknKnrn][tokusokuNo=" + tokusokuNo + "]") : true;
		assert saikenNo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getTokuskSknKnrn][saikenNo=" + saikenNo + "]") : true;

		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();

		// 督促番号
		param.setValue(tokusokuNo);
		
		// 債権番号
		param.setValue(saikenNo);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getTokuskSknKnrn][param = " + param.getList().toString() + "]");

		// SQL実行
		JBSbatCommonDBInterface outputInfo = executeCH_T_TOKUSK_SKN_KNRN_PKSELECT(param.getList().toArray());

		if (outputInfo == null)
		{
			// 該当データなしの場合、督促債権関連スキーマを登録
			this.insTokusokuSknKnrn(saikenNo);
		}

		assert outputInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getTokuskSknKnrn][outputInfo = " + outputInfo + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getTokuskSknKnrn]");

		return outputInfo;
	}

	/**
	 * 督促債権関連スキーマを登録します。
	 * 
	 * @param saikenNo 債権番号
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void insTokusokuSknKnrn(String saikenNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][insTokusokuSknKnrn]");

		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();

		// 1.督促番号
		param.setValue(tokusokuNo);
		// 2.債権番号
		param.setValue(saikenNo);
		// 3.登録年月日時分秒
		param.setValue(null);
		// 4.登録オペレータアカウント
		param.setValue(null);
		// 5.更新年月日時分秒
		param.setValue(null);
		// 6.更新オペレータアカウント
		param.setValue(null);
		// 7.削除年月日時分秒
		param.setValue(null);
		// 8.削除オペレータアカウント
		param.setValue(null);
		// 9.無効フラグ
		param.setValue(JACStrConst.MK_FLG_YK);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][insTokusokuSknKnrn][param = " + param.getList().toString() + "]");

		// SQL実行
		executeCH_T_TOKUSK_SKN_KNRN_PKINSERT(param.getList().toArray());

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][insTokusokuSknKnrn]");
	}

	/**
	 * 督促スキーマを登録します。
	 * 
	 * @param tokusokuStat 督促ステータス
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void insTokusoku(String tokusokuStat) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][insTokusoku]");

		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();

		// 01.督促番号
		param.setValue(tokusokuNo);
		// 02.遷移督促ステータス
		param.setValue(tokusokuStat);
		// 03.請求契約番号
		param.setValue(bkTranKey);
		// 04.督促金額
		param.setValue(mishuAmnt);
		// 05.督促管理開始年月日
		param.setValue(super.opeDate);
		// 06.督促管理終了年月日
		param.setValue(TOKUSOKU_KANRI_END_YMD);
		// 07.督促異動イベントコード
		param.setValue(JACStrConst.TKSKIDO_EVCD_TOKUSHORI);
		// 08.督促異動年月日
		param.setValue(super.opeDate);
		// 09.支払約束受付年月日
		param.setValue(null);
		// 10.支払約束年月日
		param.setValue(null);
		// 11.支払約束履行判定年月日
		param.setValue(null);
		// 12.利用停止解除依頼年月日
		param.setValue(null);
		// 13.利用停止依頼年月日
		param.setValue(null);
		// 14.強制解約依頼年月日
		param.setValue(null);
		// 15.債権回収委託会社委託処理年月日
		param.setValue(null);
		// 16.貸倒処理年月日
		param.setValue(null);
		// 17.登録年月日時分秒
		param.setValue(null);
		// 18.登録オペレータアカウント
		param.setValue(null);
		// 19.更新年月日時分秒
		param.setValue(null);
		// 20.更新オペレータアカウント
		param.setValue(null);
		// 21.削除年月日時分秒
		param.setValue(null);
		// 22.削除オペレータアカウント
		param.setValue(null);
		// 23.無効フラグ
		param.setValue(null);
// ANK-3033-00-00 ADD START
		// 24.mineo督促ステータス
		param.setValue(null);
		// 25.mineo督促理由コード
		param.setValue(null);
		// 26.mineo利用停止解除依頼年月日
		param.setValue(null);
		// 27.mineo利用停止依頼年月日
		param.setValue(null);
		// 28.mineo強制解約依頼年月日
		param.setValue(null);
// ANK-3033-00-00 ADD END
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][insTokusoku][param = " + param.getList().toString() + "]");

		// SQL実行
		executeCH_T_TOKUSOKU_PKINSERT(param.getList().toArray());

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][insTokusoku]");
	}

	/**
	 * 督促異動スキーマを登録します。
	 * 
	 * @param befUpdTokInfo 更新前督促対象情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void insTokusokuIdo( JBSbatCommonDBInterface befUpdTokInfo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][insTokusokuIdo]");
		assert befUpdTokInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][insTokusokuIdo][befUpdTokInfo = " + befUpdTokInfo.getMap().toString() + "]") : true;

		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();

		// 01.督促番号
		param.setValue(tokusokuNo);
		// 02.督促異動番号
		param.setValue(tokuIdoNo);
		// 03.督促異動イベントコード
		param.setValue(befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_IDO_EVENT_CD));
		// 04.督促異動年月日
		param.setValue(befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_IDO_YMD));
		// 05.督促ステータス
		param.setValue(befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_STAT));
		// 06.督促金額
		param.setValue(befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_AMNT));
		// 07.支払約束受付年月日
		param.setValue(befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.PAY_YAKUSOKU_UK_YMD));
		// 08.支払約束年月日
		param.setValue(befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.PAY_YAKUSOKU_YMD));
		// 09.支払約束履行判定年月日
		param.setValue(befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.PAY_YAKUSOKU_RIKO_JDG_YMD));
		// 10.登録年月日時分秒
		param.setValue(null);      
		// 11.登録オペレータアカウント
		param.setValue(null);                                                                                                                        
		// 12.更新年月日時分秒
		param.setValue(null);
		// 13.更新オペレータアカウント
		param.setValue(null);
		// 14.削除年月日時分秒
		param.setValue(null);
		// 15.削除オペレータアカウント
		param.setValue(null);
		// 16.無効フラグ
		param.setValue(null);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][insTokusokuIdo][param = " + param.getList().toString() + "]");

		// SQL実行
		executeCH_T_TOKUSOKU_IDO_PKINSERT(param.getList().toArray());

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][insTokusokuIdo]");
	}

	/**
	 * 督促異動番号を取得します。
	 * 
	 * @param tokusokuNo 督促番号
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private String getTokuIdoNo(String tokusokuNo) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getTokuIdoNo]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getTokuIdoNo][tokusokuNo = " + tokusokuNo + "]");
		
		String tokusokuIdoNo = TOKUSOKU_IDO_NO_INIT;
		
		JBSbatCommonDBInterface tokusokuIdoInfo = selectTokusokuIdo(tokusokuNo);
		
		if (tokusokuIdoInfo != null)
		{
			String tokusokuIdo = tokusokuIdoInfo.getString(JBSbatCH_T_TOKUSOKU_IDO.TOKUSOKU_IDO_NO);
			tokusokuIdoNo = String.valueOf(new BigDecimal(tokusokuIdo).add(BigDecimal.ONE));
		}
		tokusokuIdoNo = seikyUtil.fillString(JCHbatSeikyKaknoBusinessUtil.FillType.Zero, tokusokuIdoNo, JACStrConst.TOKUSOKU_IDO_NO_LENGTH, false);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getTokuIdoNo][tokusokuIdoNo = " + tokusokuIdoNo + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getTokuIdoNo]");
		
		return tokusokuIdoNo;
	}

	/**
	 * 督促異動情報を取得します。
	 * 
	 * @param tokusokuNo 督促異動番号
	 * @return 督促異動情報
	 * @throws Exception
	 */
	private JBSbatCommonDBInterface selectTokusokuIdo(String tokusokuNo) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectTokusokuIdo]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectTokusokuIdo][tokusokuNo = " + tokusokuNo + "]");
		
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		
		// 督促異動.督促番号
		whereParam.setValue(tokusokuNo);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectTokusokuIdo][whereParam = " + whereParam.getList().toString() + "]");
		
		// SQL実行
		executeCH_T_TOKUSOKU_IDO_CH_SELECT_002(whereParam.getList().toArray());
		
		JBSbatCommonDBInterface tokusokuIdoInfo = db_CH_T_TOKUSOKU_IDO.selectNext();
		
		assert tokusokuIdoInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectTokusokuIdo][tokusokuIdoInfo = " + tokusokuIdoInfo.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectTokusokuIdo]");
		
		return tokusokuIdoInfo;
	}

	/**
	 * 督促スキーマを更新します。
	 * 
	 * @param tokusokuStat 督促ステータス
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void updTokusoku(String tokusokuStat) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][updTokusoku]");

		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();

		// 督促対象情報．遷移督促ステータス
		param.setValue(tokusokuStat);
		// 督促対象情報．未納金額
		param.setValue(mishuAmnt);
		// 督促対象情報．イベントコード
		param.setValue(JACStrConst.TKSKIDO_EVCD_TOKUSHORI);
		// バッチ運用日
		param.setValue(super.opeDate);
		// システム日時
		param.setValue(JCCBatCommon.getSysDateTimeStamp());
		// 更新オペレータアカウント
		param.setValue(super.batchUserId);

		/* 条件 */
		// 督促対象情報．督促番号
		param.setValue(tokusokuNo);
		// バッチ運用日
		param.setValue(super.opeDate);
		// バッチ運用日
		param.setValue(super.opeDate);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updTokusoku][param = " + param.getList().toString() + "]");

		// SQL実行
		int rtnCnt = executeCH_T_TOKUSOKU_CH_UPDATE_001(param.getList().toArray());

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][updTokusoku][UPDATE_COUNT: = " + rtnCnt + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][updTokusoku]");
	}
	
	/**
	 * 督促スキーマを更新します。
	 * 
	 * @param tokusokuStat 督促ステータス
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void updTokusokuStat(JBSbatServiceInterfaceMap mastMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][updTokusoku]");

		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();

		// 督促対象情報．遷移督促ステータス
		param.setValue(mastMap.getString(JBSbatCHIFM101.SENI_TOKUSOKU_STAT));
		// 督促対象情報．未納金額
		param.setValue(befUpdTokInfo.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_AMNT));
		// 督促対象情報．イベントコード
		param.setValue(JACStrConst.TKSKIDO_EVCD_TOKUSHORI);
		// バッチ運用日
		param.setValue(super.opeDate);
		// システム日時
		param.setValue(JCCBatCommon.getSysDateTimeStamp());
		// 更新オペレータアカウント
		param.setValue(super.batchUserId);

		/* 条件 */
		// 督促対象情報．督促番号
		param.setValue(tokusokuNo);
		// バッチ運用日
		param.setValue(super.opeDate);
		// バッチ運用日
		param.setValue(super.opeDate);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updTokusoku][param = " + param.getList().toString() + "]");

		// SQL実行
		int rtnCnt = executeCH_T_TOKUSOKU_CH_UPDATE_001(param.getList().toArray());

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][updTokusoku][UPDATE_COUNT: = " + rtnCnt + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][updTokusoku]");
	}

	/**
	 * 更新前督促情報を取得します。
	 * 
	 * @return JBSbatCommonDBInterface 更新前督促情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatCommonDBInterface getBefUpdTokusoku() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getBefUpdTokusoku]");

		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();

		// 督促対象情報．督促番号
		param.setValue(tokusokuNo);
		// バッチ運用日
		param.setValue(super.opeDate);
		// バッチ運用日
		param.setValue(super.opeDate);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getBefUpdTokusoku][param = " + param.getList().toString() + "]");

		// SQL実行
		executeCH_T_TOKUSOKU_CH_SELECT_006(param.getList().toArray());
		JBSbatCommonDBInterface outputInfo = db_CH_T_TOKUSOKU.selectNext();

		if (outputInfo == null)
		{
			// 未存在エラー
			String[] msgParam = new String[] {JBSbatCH_T_TOKUSOKU.TABLE_NAME, param.getList().toString()};
			// 業務エラーとして処理
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECHB0270CH, msgParam);
		}

		assert outputInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getBefUpdTokusoku][outputInfo = " + outputInfo + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getBefUpdTokusoku]");

		return outputInfo;
	}

	/**
	 * 督促情報を取得します。
	 * 
	 * @param SeikyKeiNo 請求契約番号
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatCommonDBInterface getchkTokusoku(String SeikyKeiNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getchkTokusoku]");

		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();

		// 請求契約番号
		param.setValue(SeikyKeiNo);
		// バッチ運用日
		param.setValue(super.opeDate);
		// バッチ運用日
		param.setValue(super.opeDate);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getchkTokusoku][param = " + param.getList().toString() + "]");

		// SQL実行
		executeCH_T_TOKUSOKU_CH_SELECT_016(param.getList().toArray());
		JBSbatCommonDBInterface outputInfo = db_CH_T_TOKUSOKU.selectNext();

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getchkTokusoku]");

		return outputInfo;
	}

	/**
	 * 料金スケジュール定義より請求対象年月を取得します。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getSchdl() throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getSchdl]");
		
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		paramList.setValue(JACStrConst.EVENT_CD_SIKY_TRN_DAY); 			// イベントコード'04'請求処理日
		paramList.setValue(super.opeDate); 								// バッチ運用日
		
		executeCH_M_PRC_SCHDL_TEIGI_CH_SELECT_011(paramList.getList().toArray());
		JBSbatCommonDBInterface dbMap = db_CH_M_PRC_SCHDL_TEIGI.selectNext();

		// 請求スキーマに該当データがあるか判定(あれば請求年月、なければ空文字を返す）
		if(dbMap != null)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getSchdl][請求処理日]");
			seikyTrnFlg = true;
		}
		else
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getSchdl][請求処理日以外]");
			seikyTrnFlg = false;
		}
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getSchdl]");
		return ;
	}
	
	// ANK-3396-00-00 ADD START
	/**
	 * 請求契約テーブルを更新するかの判定を行います。
	 * @param bfTokusokuStat 更新前督促ステータス
	 * @param afTokusokuStat 更新後督促ステータス
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean chkUpdSeikyKei(String bfTokusokuStat, String afTokusokuStat) throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][chkUpdSeikyKei]");
		
		if(!JKKStringUtil.isNullBlank(bfTokusokuStat) && !JKKStringUtil.isNullBlank(afTokusokuStat))
		{
			if((JACStrConst.TOKUSOKU_STAT_USE_STOP_YO_HUBI.equals(bfTokusokuStat)
					|| JACStrConst.TOKUSOKU_STAT_USE_STOP_YO_MI.equals(bfTokusokuStat)
					|| JACStrConst.TOKUSOKU_STAT_USE_STOP_YO_ZUMI.equals(bfTokusokuStat)
					)
					&& JACStrConst.TOKUSOKU_STAT_KYS_KYK_YO_ZUMI.equals(afTokusokuStat)
			)
			{
				// 督促ステータスを"04"、"06"、"10"から"15"に更新した場合、TRUEを返却
				assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][chkUpdSeikyKei]");
				return true;
			}
		}
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][chkUpdSeikyKei]");
		return false;
	}
	
	/**
	 * 更新前請求契約情報を取得します。
	 * 
	 * @param seikyKeiNo 請求契約番号
	 * @return JBSbatCommonDBInterface 更新前請求契約情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatCommonDBInterface getBefUpdSeikyKeiInfo(String seikyKeiNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getBefUpdSeikyKeiInfo]");

		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();

		// 請求契約対象情報．請求契約番号
		param.setValue(seikyKeiNo);
		// バッチ運用日
		param.setValue(super.opeDate);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getBefUpdSeikyKeiInfo][param = " + param.getList().toString() + "]");

		// SQL実行
		executeKK_T_SEIKY_KEI_DK_SELECT_001(param.getList().toArray());
		JBSbatCommonDBInterface outputInfo = db_KK_T_SEIKY_KEI.selectNext();

		if (outputInfo == null)
		{
			// 未存在エラー
			String[] msgParam = new String[] {JBSbatKK_T_SEIKY_KEI.TABLE_NAME, param.getList().toString()};
			// 業務エラーとして処理
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECHB0270CH, msgParam);
		}

		assert outputInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getBefUpdTokusoku][outputInfo = " + outputInfo + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getBefUpdTokusoku]");

		return outputInfo;
	}
	
	/**
	 * 請求契約スキーマを更新します。
	 * 
	 * @param tokusokuStat 督促ステータス
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void updSeikyKei(String seikyKeiNo, JBSbatCommonDBInterface befUpdSeikyKeiInfo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][updSeikyKei]");

		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();

		/* 条件 */
		// 請求契約情報．請求契約番号
		param.setValue(seikyKeiNo);
		// 請求契約情報．世代登録年月日時分秒
		param.setValue(befUpdSeikyKeiInfo.getString(JBSbatKK_T_SEIKY_KEI.GENE_ADD_DTM));

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updTokusoku][param = " + param.getList().toString() + "]");

		// SQL実行
		int rtnCnt = executeKK_T_SEIKY_KEI_CH_UPDATE_001(param.getList().toArray());

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][updSeikyKei][UPDATE_COUNT: = " + rtnCnt + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][updSeikyKei]");
	}
	// ANK-3396-00-00 ADD END
	
	// OM-2019-0000536 ADD START
	/**
	 * 更新前請求契約情報（予約レコード）を取得します。
	 * 
	 * @param seikyKeiNo 請求契約番号
	 * @return JBSbatCommonDBInterface 更新前請求契約情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatCommonDBInterface getBefUpdRsvSeikyKeiInfo(String seikyKeiNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getBefUpdRsvSeikyKeiInfo]");

		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();

		// 請求契約対象情報．請求契約番号
		param.setValue(seikyKeiNo);
		// バッチ運用日
		param.setValue(super.opeDate);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getBefUpdSeikyKeiInfo][param = " + param.getList().toString() + "]");

		// SQL実行
		executeKK_T_SEIKY_KEI_CH_SELECT_018(param.getList().toArray());
		JBSbatCommonDBInterface outputInfo = db_KK_T_SEIKY_KEI_3.selectNext();

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getBefUpdRsvSeikyKeiInfo]");

		return outputInfo;
	}
	
	/**
	 * 請求契約スキーマ（予約レコード）を更新します。
	 * 
	 * @param tokusokuStat 督促ステータス
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void updRsvSeikyKei(String seikyKeiNo, JBSbatCommonDBInterface befUpdSeikyKeiInfo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][updRsvSeikyKei]");

		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();

		/* 条件 */
		// 請求契約情報．請求契約番号
		param.setValue(seikyKeiNo);
		// バッチ運用日
		param.setValue(super.opeDate);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][updRsvSeikyKei][param = " + param.getList().toString() + "]");

		// SQL実行
		int rtnCnt = executeKK_T_SEIKY_KEI_CH_UPDATE_002(param.getList().toArray());

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][updRsvSeikyKei][UPDATE_COUNT: = " + rtnCnt + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][updRsvSeikyKei]");
	}
	// OM-2019-0000536 ADD END
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][terminal][bkTranKey = " + bkTranKey + "]");
		
		if(bkTranKey != null)
		{
			// 各種スキーマ登録
			addDb();
		}

		// 配列更新の終了処理
		db_CH_T_TOKUSOKU_IDO.clearBatch();
		db_CH_T_TOKUSOKU.clearBatch();
		db_CH_T_TOKUSK_SKN_KNRN.clearBatch();
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CH_T_TOKUSOKU.close();
		db_CH_T_TOKUSOKU_IDO.close();
		db_CH_T_TOKUSK_SKN_KNRN.close();
		db_CH_M_PRC_SCHDL_TEIGI.close();
		// ANK-3396-00-00 ADD START
		db_KK_T_SEIKY_KEI.close();
		db_KK_T_SEIKY_KEI_2.close();
		// ANK-3396-00-00 ADD END
		// OM-2019-0000536 ADD START
		db_KK_T_SEIKY_KEI_3.close();
		db_KK_T_SEIKY_KEI_4.close();
		// OM-2019-0000536 ADD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		seikyUtil.close();
		jCHbatPrcTaiokrkAdd.close();
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/

	/**
	 * @return mastProcFlg を戻します。
	 */
	public boolean isMastProcFlg()
	{
		return mastProcFlg;
	}

	/**
	 * @return matchProcFlg を戻します。
	 */
	public boolean isMatchProcFlg()
	{
		return matchProcFlg;
	}

	/**
	 * @return tranProcFlg を戻します。
	 */
	public boolean isTranProcFlg()
	{
		return tranProcFlg;
	}

	/**
	 * @param mast_ProcFlg 設定する mastProcFlg。
	 */
	public void setMastProcFlg(boolean mast_ProcFlg)
	{
		this.mastProcFlg = mast_ProcFlg;
	}

	/**
	 * @param match_ProcFlg 設定する matchProcFlg。
	 */
	public void setMatchProcFlg(boolean match_ProcFlg)
	{
		this.matchProcFlg = match_ProcFlg;
	}

	/**
	 * @param tran_ProcFlg 設定する tranProcFlg。
	 */
	public void setTranProcFlg(boolean tran_ProcFlg)
	{
		this.tranProcFlg = tran_ProcFlg;
	}

	/**
	 * SQLKEY(CH_SELECT_006)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	督促番号
	 *		 	督促管理開始年月日
	 *		 	督促管理終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_TOKUSOKU_CH_SELECT_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_CH_T_TOKUSOKU.selectBySqlDefine(paramList, CH_T_TOKUSOKU_CH_SELECT_006);
	}

	/**
	 * SQLKEY(CH_SELECT_016)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求契約番号
	 *		 	督促管理開始年月日
	 *		 	督促管理終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_TOKUSOKU_CH_SELECT_016(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_CH_T_TOKUSOKU.selectBySqlDefine(paramList, CH_T_TOKUSOKU_CH_SELECT_016);
	}

	/**
	 * SQLKEY(CH_UPDATE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	督促ステータス
	 *		 	督促金額
	 *		 	督促異動イベントコード
	 *		 	督促異動年月日
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	督促番号
	 *		 	督促管理開始年月日
	 *		 	督促管理終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeCH_T_TOKUSOKU_CH_UPDATE_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());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());

		// DBアクセスを実行します
		return db_CH_T_TOKUSOKU.executeBySqlDefine(paramList, CH_T_TOKUSOKU_CH_UPDATE_001);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	督促番号				TOKUSOKU_NO
	 *		 	督促ステータス				TOKUSOKU_STAT
	 *		 	請求契約番号				SEIKY_KEI_NO
	 *		 	督促金額				TOKUSOKU_AMNT
	 *		 	督促管理開始年月日				TOKUSOKU_STAYMD
	 *		 	督促管理終了年月日				TOKUSOKU_ENDYMD
	 *		 	督促異動イベントコード				TOKUSOKU_IDO_EVENT_CD
	 *		 	督促異動年月日				TOKUSOKU_IDO_YMD
	 *		 	支払約束受付年月日				PAY_YAKUSOKU_UK_YMD
	 *		 	支払約束年月日				PAY_YAKUSOKU_YMD
	 *		 	支払約束履行判定年月日				PAY_YAKUSOKU_RIKO_JDG_YMD
	 *		 	利用停止解除依頼年月日				USE_STP_RLS_REQ_YMD
	 *		 	利用停止依頼年月日				USE_STP_REQ_YMD
	 *		 	強制解約依頼年月日				KYOSEI_DSL_REQ_YMD
	 *		 	債権回収委託会社委託処理年月日				SKNKSITKCM_ITAKU_TRAN_YMD
	 *		 	貸倒処理年月日				KASHID_TRAN_YMD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	ｍｉｎｅｏ督促ステータス				MINEO_TKSKST
	 *		 	ｍｉｎｅｏ督促理由コード				MINEO_TKSK_RSN_CD
	 *		 	ｍｉｎｅｏ利用停止解除依頼年月日				MINEO_USE_STP_RLS_REQ_YMD
	 *		 	ｍｉｎｅｏ利用停止依頼年月日				MINEO_USE_STP_REQ_YMD
	 *		 	ｍｉｎｅｏ強制解約依頼年月日				MINEO_KYOSEI_DSL_REQ_YMD
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_TOKUSOKU_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TOKUSOKU_NO", setParam[0]);
		setMap.setValue("TOKUSOKU_STAT", setParam[1]);
		setMap.setValue("SEIKY_KEI_NO", setParam[2]);
		setMap.setValue("TOKUSOKU_AMNT", setParam[3]);
		setMap.setValue("TOKUSOKU_STAYMD", setParam[4]);
		setMap.setValue("TOKUSOKU_ENDYMD", setParam[5]);
		setMap.setValue("TOKUSOKU_IDO_EVENT_CD", setParam[6]);
		setMap.setValue("TOKUSOKU_IDO_YMD", setParam[7]);
		setMap.setValue("PAY_YAKUSOKU_UK_YMD", setParam[8]);
		setMap.setValue("PAY_YAKUSOKU_YMD", setParam[9]);
		setMap.setValue("PAY_YAKUSOKU_RIKO_JDG_YMD", setParam[10]);
		setMap.setValue("USE_STP_RLS_REQ_YMD", setParam[11]);
		setMap.setValue("USE_STP_REQ_YMD", setParam[12]);
		setMap.setValue("KYOSEI_DSL_REQ_YMD", setParam[13]);
		setMap.setValue("SKNKSITKCM_ITAKU_TRAN_YMD", setParam[14]);
		setMap.setValue("KASHID_TRAN_YMD", setParam[15]);
		setMap.setValue("ADD_DTM", setParam[16]);
		setMap.setValue("ADD_OPEACNT", setParam[17]);
		setMap.setValue("UPD_DTM", setParam[18]);
		setMap.setValue("UPD_OPEACNT", setParam[19]);
		setMap.setValue("DEL_DTM", setParam[20]);
		setMap.setValue("DEL_OPEACNT", setParam[21]);
		setMap.setValue("MK_FLG", setParam[22]);
// ANK-3033-00-00 ADD START
		setMap.setValue("MINEO_TKSKST", setParam[23]);
		setMap.setValue("MINEO_TKSK_RSN_CD", setParam[24]);
		setMap.setValue("MINEO_USE_STP_RLS_REQ_YMD", setParam[25]);
		setMap.setValue("MINEO_USE_STP_REQ_YMD", setParam[26]);
		setMap.setValue("MINEO_KYOSEI_DSL_REQ_YMD", setParam[27]);
// ANK-3033-00-00 ADD END
	
		// DBアクセスを実行します
		db_CH_T_TOKUSOKU.insertByPrimaryKeysBatch(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	督促番号				TOKUSOKU_NO
	 *		 	督促異動番号				TOKUSOKU_IDO_NO
	 *		 	督促異動イベントコード				TOKUSOKU_IDO_EVENT_CD
	 *		 	督促異動年月日				TOKUSOKU_IDO_YMD
	 *		 	督促ステータス				TOKUSOKU_STAT
	 *		 	督促金額				TOKUSOKU_AMNT
	 *		 	支払約束受付年月日				PAY_YAKUSOKU_UK_YMD
	 *		 	支払約束年月日				PAY_YAKUSOKU_YMD
	 *		 	支払約束履行判定年月日				PAY_YAKUSOKU_RIKO_JDG_YMD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_TOKUSOKU_IDO_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TOKUSOKU_NO", setParam[0]);
		setMap.setValue("TOKUSOKU_IDO_NO", setParam[1]);
		setMap.setValue("TOKUSOKU_IDO_EVENT_CD", setParam[2]);
		setMap.setValue("TOKUSOKU_IDO_YMD", setParam[3]);
		setMap.setValue("TOKUSOKU_STAT", setParam[4]);
		setMap.setValue("TOKUSOKU_AMNT", setParam[5]);
		setMap.setValue("PAY_YAKUSOKU_UK_YMD", setParam[6]);
		setMap.setValue("PAY_YAKUSOKU_YMD", setParam[7]);
		setMap.setValue("PAY_YAKUSOKU_RIKO_JDG_YMD", setParam[8]);
		setMap.setValue("ADD_DTM", setParam[9]);
		setMap.setValue("ADD_OPEACNT", setParam[10]);
		setMap.setValue("UPD_DTM", setParam[11]);
		setMap.setValue("UPD_OPEACNT", setParam[12]);
		setMap.setValue("DEL_DTM", setParam[13]);
		setMap.setValue("DEL_OPEACNT", setParam[14]);
		setMap.setValue("MK_FLG", setParam[15]);
	
		// DBアクセスを実行します
		db_CH_T_TOKUSOKU_IDO.insertByPrimaryKeysBatch(setMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	督促番号				TOKUSOKU_NO
	 *		 	債権番号				SAIKEN_NO
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_TOKUSK_SKN_KNRN_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TOKUSOKU_NO", setParam[0]);
		setMap.setValue("SAIKEN_NO", setParam[1]);
		setMap.setValue("ADD_DTM", setParam[2]);
		setMap.setValue("ADD_OPEACNT", setParam[3]);
		setMap.setValue("UPD_DTM", setParam[4]);
		setMap.setValue("UPD_OPEACNT", setParam[5]);
		setMap.setValue("DEL_DTM", setParam[6]);
		setMap.setValue("DEL_OPEACNT", setParam[7]);
		setMap.setValue("MK_FLG", setParam[8]);
	
		// DBアクセスを実行します
		db_CH_T_TOKUSK_SKN_KNRN.insertByPrimaryKeysBatch(setMap);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	TOKUSOKU_NO
	 *		 	SAIKEN_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeCH_T_TOKUSK_SKN_KNRN_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("TOKUSOKU_NO", whereParam[0]);
		whereMap.setValue("SAIKEN_NO", whereParam[1]);

		// DBアクセスを実行します
		return db_CH_T_TOKUSK_SKN_KNRN.selectByPrimaryKeys(whereMap);
	}

	/**
	 * SQLKEY(CH_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 executeCH_T_TOKUSOKU_IDO_CH_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CH_T_TOKUSOKU_IDO.selectBySqlDefine(paramList, CH_T_TOKUSOKU_IDO_CH_SELECT_002);
	}
	
	/**
	 * SQLKEY(CH_SELECT_014)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	料金計算日
	 *		 	請求処理日
	 *		 	利用停止予告メール作成日
	 *		 	利用停止日
	 *		 	強制解約予告メール作成日
	 *		 	強制解約日
	 *		 	債権回収依頼日
	 *		 	債権切り離し抽出日
	 *		 	貸倒れ対象者抽出日
	 *		 	利用停止処理日
	 *		 	強制解約処理日
	 *		 	撤去解約依頼
	 *		 	イベントコード
	 *		 	イベントコード
	 *		 	イベントコード
	 *		 	イベント年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_M_PRC_SCHDL_TEIGI_CH_SELECT_014(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());
		paramList.setValue(param[9].toString());
		paramList.setValue(param[10].toString());
		paramList.setValue(param[11].toString());
		paramList.setValue(param[12].toString());
		paramList.setValue(param[13].toString());
		paramList.setValue(param[14].toString());
		paramList.setValue(param[15].toString());

		// DBアクセスを実行します
		db_CH_M_PRC_SCHDL_TEIGI.selectBySqlDefine(paramList, CH_M_PRC_SCHDL_TEIGI_CH_SELECT_014);
	}

	/**
	 * SQLKEY(CH_SELECT_014)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	イベントコード
	 *		 	イベント年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_M_PRC_SCHDL_TEIGI_CH_SELECT_011(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CH_M_PRC_SCHDL_TEIGI.selectBySqlDefine(paramList, CH_M_PRC_SCHDL_TEIGI_CH_SELECT_011);
	}
	
	// ANK-3396-00-00 ADD START
	/**
	 * SQLKEY(DK_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_SEIKY_KEI_DK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SEIKY_KEI.selectBySqlDefine(paramList, KK_T_SEIKY_KEI_DK_SELECT_001);
	}
	
	/**
	 * SQLKEY(CH_UPDATE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	強制解約予告回数
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeKK_T_SEIKY_KEI_CH_UPDATE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		return db_KK_T_SEIKY_KEI_2.executeBySqlDefine(paramList, KK_T_SEIKY_KEI_CH_UPDATE_001);
	}
	// ANK-3396-00-00 ADD END
	
	// OM-2019-0000536 ADD START
	/**
	 * SQLKEY(CH_SELECT_018)で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_SEIKY_KEI_CH_SELECT_018(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SEIKY_KEI_3.selectBySqlDefine(paramList, KK_T_SEIKY_KEI_CH_SELECT_018);
	}
	
	/**
	 * SQLKEY(CH_UPDATE_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeKK_T_SEIKY_KEI_CH_UPDATE_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		return db_KK_T_SEIKY_KEI_4.executeBySqlDefine(paramList, KK_T_SEIKY_KEI_CH_UPDATE_002);
	}
	// OM-2019-0000536 ADD END
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
