/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHSknksitkcmPrcTaiokrkDataMake
*	ソースファイル名	：JBSbatCHSknksitkcmPrcTaiokrkDataMake.java
*	作成者				：富士通　
*	作成日				：2021年07月30日
*＜機能概要＞
*　債権回収委託会社料金対応記録データ作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v54.00.00	2021/07/30  FJ)山地		【ANK-4079-00-00】債権委託先会社からの入金処理システム化対応
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatCHIFM096;
import eo.business.util.file.JBSbatCHIFM401;
import eo.business.util.table.JBSbatCH_M_PRC_KMK_CS_CHGE;
import eo.business.util.table.JBSbatCH_M_SKNKSITKCM;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JPCEditString;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
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;

/**
* 債権回収委託会社料金対応記録データ作成部品 <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHSknksitkcmPrcTaiokrkDataMake extends JBSbatBusinessService
{
	/** テーブル(料金項目抽出変換)*/
	private static final String D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE = "CH_M_PRC_KMK_CS_CHGE";
	
	/** テーブル(債権回収委託会社)*/
	private static final String D_TBL_NAME_CH_M_SKNKSITKCM = "CH_M_SKNKSITKCM";
	
	/** テーブル(不良顧客)*/
	private static final String D_TBL_NAME_CK_T_HURYO_CUST = "CK_T_HURYO_CUST";
	
	/** SQL定義キー(CH_SELECT_012)*/
	private static final String CH_M_PRC_KMK_CS_CHGE_CH_SELECT_012 = "CH_SELECT_012";
	
	/** SQL定義キー(CH_SELECT_002)*/
	private static final String CH_M_SKNKSITKCM_CH_SELECT_002 = "CH_SELECT_002";
	
	/** SQL定義キー(CH_SELECT_003)*/
	private static final String CK_T_HURYO_CUST_CH_SELECT_003 = "CH_SELECT_003";
	
	/** テーブルアクセスクラス(料金項目抽出変換)*/
	private JBSbatSQLAccess db_CH_M_PRC_KMK_CS_CHGE = null;
	
	/** テーブルアクセスクラス(債権回収委託会社)*/
	private JBSbatSQLAccess db_CH_M_SKNKSITKCM = null;
	
	/** テーブルアクセスクラス(不良顧客)*/
	private JBSbatSQLAccess db_CK_T_HURYO_CUST = null;
	
	/** 料金項目コード（入金額） */
	private String kmkCdNyukinAmnt = null;
	
	/** 料金項目コード（金庫登録（預り金）） */
	private String kmkCdKnkAddDpsit = null;
	
	/** 料金項目コード（金庫登録（仮受金）） */
	private String kmkCdKnkAddKruk = null;
	
	/** 前レコード入金番号 */
	private String prevNyukinNo = null;
	
	/** 督促ステータス変更フラグ */
	private String statChgFlg = null;
	
	/** 債権委託会社名マップ */
	private HashMap<String, String> sknItkCmpNmMap = null;
	
	/** 出力レコードマップ */
	private HashMap<String, JBSbatServiceInterfaceMap> outputRecMap = new HashMap<String, JBSbatServiceInterfaceMap>();
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		// DBアクセスクラスを生成します
		db_CH_M_PRC_KMK_CS_CHGE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE);
		
		db_CH_M_SKNKSITKCM = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_SKNKSITKCM);
		
		db_CK_T_HURYO_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_HURYO_CUST);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		
		// 料金項目抽出変換スキーマ検索用業務機能識別コードリスト形成
		ArrayList<String> workKinoSkbtCdList = new ArrayList<String>();
		
		// 業務機能識別コード：料金項目コード（入金額）
		workKinoSkbtCdList.add(JACStrConst.WKPARA_CH_WKS_NYUKIN_AMNT);
		
		// 業務機能識別コード：料金項目コード（金庫登録（預り金））
		workKinoSkbtCdList.add(JACStrConst.WKPARA_CH_WKS_AZUKARI_AMNT);
		
		// 業務機能識別コード：料金項目コード（金庫登録（仮受金））
		workKinoSkbtCdList.add(JACStrConst.WKPARA_CH_WKS_KARIUKE_AMNT);
		
		// 料金項目コードを取得
		JACbatParamUtil paramUtil = new JACbatParamUtil(commonItem);
		for (int i = 0; i < workKinoSkbtCdList.size(); i++)
		{
			// 業務機能識別コード値を取得
			String gyomuKinoSkbtCd = paramUtil.getGyoumuParameter(workKinoSkbtCdList.get(i));
			
			// 料金項目抽出変換スキーマより料金項目コードを取得
			String kmkCd = getPrcKmkCd(gyomuKinoSkbtCd);
			if (JACStrConst.WKPARA_CH_WKS_NYUKIN_AMNT.equals(workKinoSkbtCdList.get(i)))
			{
				// 料金項目コード（入金額）
				kmkCdNyukinAmnt = kmkCd;
			}
			else if (JACStrConst.WKPARA_CH_WKS_AZUKARI_AMNT.equals(workKinoSkbtCdList.get(i)))
			{
				// 料金項目コード（金庫登録（預り金））
				kmkCdKnkAddDpsit = kmkCd;
			}
			else if (JACStrConst.WKPARA_CH_WKS_KARIUKE_AMNT.equals(workKinoSkbtCdList.get(i)))
			{
				// 料金項目コード（金庫登録（仮受金））
				kmkCdKnkAddKruk = kmkCd;
			}
		}
		paramUtil.close();
		
		// 債権委託会社名マップを作成する
		this.sknItkCmpNmMap = new HashMap<String, String>();
		getSknItkCmpNmMap();
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][freeItem=" + super.freeItem + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, String.format("[L][initial][kmkCdNyukinAmnt=%s]", kmkCdNyukinAmnt));
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, String.format("[L][initial][kmkCdKnkAddDpsit=%s]", kmkCdKnkAddDpsit));
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, String.format("[L][initial][kmkCdKnkAddKruk=%s]", kmkCdKnkAddKruk));
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][inMap=" + inMap.getMap().toString() + "]") : true;
		
		// 出力電文作成
		JBSbatOutputItem outputBean = makeOutputBean(inMap);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 出力電文の残りを出力
	 * 
	 * @throws Exception 
	 */
	private void executeRemainRecord() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][executeOutputRecord]");
		
		// ファイル出力部品を取得
		JBSbatOutputFileUtil fileUtil = super.commonItem.getOutPutFile();
		// 設定されているエンコード形式を退避
		String enc = fileUtil.getEncode();
		// encodeの形式がSHIFT-JISの場合、MS932に変換
		if (JACStrConst.ENCODE_SJIS.toUpperCase().equals(enc.toUpperCase()))
		{
			enc = JACStrConst.ENCODE_MS932;
		}
		
		//出力定義ファイル名を取得する。
		String outFileDefName = JBSbatAplConst.getAplConstValue("OTD") + super.freeItem;
		
		// 出力定義ファイルオブジェクトを生成する
		JBSbatDefFileUtil outFileDef = new JBSbatDefFileUtil(outFileDefName, fileUtil);
		// 退避したエンコード形式を戻す（出力定義ファイルオブジェクト生成時に上書きが発生しているため）
		fileUtil.setEncode(enc);
		
		// 出力電文出力
		JBSbatOutputItem outputInItem = new JBSbatOutputItem();
		getOutputItem(outputInItem);
		int listSize = outputInItem.getOutMapList().size();
		for (int i = 0; i < listSize; i++)
		{
			fileUtil.print((JBSbatServiceInterfaceMap)outputInItem.getOutMapList().get(i), outFileDef);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][executeOutputRecord]");
	}
	
	/**
	 * 出力電文を取得します。
	 * 
	 * @param inMap 入力電文
	 * @return outputBean 出力電文
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatOutputItem makeOutputBean(JBSbatServiceInterfaceMap inMap) throws Exception 
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputBean]");

		JBSbatOutputItem outputBean = new JBSbatOutputItem();

		// 入金番号が変化したタイミングの場合、出力電文にレコード情報を追加する
		String nyukinNo = inMap.getString(JBSbatCHIFM401.NYUKIN_NO);
		if ((prevNyukinNo != null) && (nyukinNo.equals(prevNyukinNo) == false))
		{
			getOutputItem(outputBean);
		}
		
		// 料金対応記録登録情報作成
		String prcKmkCd = inMap.getString(JBSbatCHIFM401.PRC_KMK_CD);
		statChgFlg = inMap.getString(JBSbatCHIFM401.TOKUSOKU_STAT_CHG_FLG);
		
		if (statChgFlg.equals(JACStrConst.TOKUSOKU_STAT_CHG_ARI) || statChgFlg.equals(JACStrConst.TOKUSOKU_STAT_CHG_DEL)
				|| statChgFlg.equals(JACStrConst.TOKUSOKU_STAT_CHG_ARI_DEL))
		{
			// 督促ステータス更新有無を判定し、ステータス更新を実施した
			// レコードの場合のみ、料金対応記録情報を作成する。
			makePrcInfStatUpd(inMap);
		}
		else if ((prcKmkCd.equals(kmkCdKnkAddDpsit)) || (prcKmkCd.equals(kmkCdKnkAddKruk)))
		{
			// 債権充当結果データ.料金項目コードが金庫登録（預り金）または金庫登録（仮受金）。
			// 「金庫登録」の料金対応記録情報を作成する。
			makePrcInfKinko(inMap);
		}
		else if (prcKmkCd.equals(kmkCdNyukinAmnt))
		{
			// 債権充当結果データ.料金項目コードが入金額。
			// 「手動入金」の料金対応記録情報を作成する。
			makePrcInfManNyukin(inMap);
		}
		
		// 前レコード入金番号更新
		prevNyukinNo = nyukinNo;

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputBean]");
		return outputBean;
	}
	
	
	/**
	 * 料金項目コードを取得する
	 * 
	 * @param gyomuKinoSkbtCd 業務機能識別コード
	 * @return 料金項目コード
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private String getPrcKmkCd(String gyomuKinoSkbtCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getPrcKmkCd]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getPrcKmkCd][gyomuKinoSkbtCd=" + gyomuKinoSkbtCd + "]");
		
		// 検索条件の設定
		// システムコード
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		whereParam.setValue(super.systemCode);
		
		// 業務機能識別コード
		whereParam.setValue(JPCEditString.fillHalfSpace(gyomuKinoSkbtCd, JACStrConst.WORK_KINO_SKBT_LENGTH, true));
		
		// 抽出変換コード（抽出のみ）
		whereParam.setValue(JACStrConst.CHSHT_CHG_CD_CST);
		
		// 適用開始年月日
		whereParam.setValue(super.opeDate);
		
		// 適用終了年月日
		whereParam.setValue(super.opeDate);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getPrcKmkCd][whereParam=" + whereParam.getList().toString() + "]");
		
		// SQL実行
		executeCH_M_PRC_KMK_CS_CHGE_CH_SELECT_012(whereParam.getList().toArray());
		
		// 検索結果取得
		JBSbatCommonDBInterface dbMap = db_CH_M_PRC_KMK_CS_CHGE.selectNext();
		if (dbMap == null)
		{
			// マスタ未存在エラー
			String[] msgParam = new String[]{ JBSbatCH_M_PRC_KMK_CS_CHGE.TABLE_NAME, whereParam.getList().toString() };
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECHB0270CH, msgParam);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getPrcKmkCd][dbMap=" + dbMap.getMap().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getPrcKmkCd]");
		return dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.PRC_KMK_CD);
	}
	
	/**
	 * 料金対応記録登録情報を付与した出力電文を取得する
	 * @param outputBean 出力電文
	 * @throws Exception
	 */
	private void getOutputItem(JBSbatOutputItem outputBean) throws Exception 
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getOutputItem]");
		
		// 料金対応記録登録情報（手動入金）出力
		JBSbatServiceInterfaceMap autoMap = outputRecMap.get(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_MAN);
		if (autoMap != null)
		{
			// 出力共通電文に設定
			autoMap.setOutFlg(true);
			outputBean.addOutMapList(autoMap);
		}
		
		// 料金対応記録登録情報（督促ステータス変更）出力
		JBSbatServiceInterfaceMap tsstaMap = outputRecMap.get(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_TSSTA);
		if (tsstaMap != null)
		{
			// 出力共通電文に設定
			tsstaMap.setOutFlg(true);
			outputBean.addOutMapList(tsstaMap);
		}
		
		// 料金対応記録登録情報（利用停止解除）出力
		JBSbatServiceInterfaceMap rytskMap = outputRecMap.get(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_RYTSK);
		if (rytskMap != null)
		{
			// 出力共通電文に設定
			rytskMap.setOutFlg(true);
			outputBean.addOutMapList(rytskMap);
		}
		
		// 料金対応記録登録情報（不良顧客削除）出力
		JBSbatServiceInterfaceMap hrkdlMap = outputRecMap.get(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_HRKDL);
		if (hrkdlMap != null)
		{
			// 出力共通電文に設定
			hrkdlMap.setOutFlg(true);
			outputBean.addOutMapList(hrkdlMap);
		}
		
		// 料金対応記録登録情報（金庫登録）出力
		JBSbatServiceInterfaceMap kinkoMap = outputRecMap.get(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_KINKO);
		if (kinkoMap != null)
		{
			// 出力共通電文に設定
			kinkoMap.setOutFlg(true);
			outputBean.addOutMapList(kinkoMap);
		}
		
		// 出力レコードマップクリア
		outputRecMap.clear();
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getOutputItem]");
	}
	
	/**
	 * 債権委託会社名マップを作成します。
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void getSknItkCmpNmMap() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getSknItkCmpNmMap]");
		
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		// 検索条件設定
		paramList.setValue(super.opeDate);							// 債権委託会社適用開始年月日
		paramList.setValue(super.opeDate);							// 債権委託会社適用終了年月日
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getSknItkCmpNmMap][paramList=" + paramList.getList().toString() + "]");
		
		// SQL実行
		executeCH_M_SKNKSITKCM_CH_SELECT_002(paramList.getList().toArray());
		
		// 結果を取得
		JBSbatCommonDBInterface dbMap = db_CH_M_SKNKSITKCM.selectNext();
		
		// 取得結果がない場合
		if(null == dbMap)
		{
			// ログ出力（【最重要】ＤＢ未存在エラー）
			String[] msgParam = new String[]
			{ JBSbatCH_M_SKNKSITKCM.TABLE_NAME, paramList.getList().toString() };
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECHB0270CH, msgParam);
		}
		
		// 結果をマップに設定
		while(dbMap != null)
		{
			// 債権回収委託会社コード 
			String sknksitkcmCd = dbMap.getString(JBSbatCH_M_SKNKSITKCM.SKNKSITKCM_CD);
			
			// 債権回収委託会社名
			String sknksitkcmNm = dbMap.getString(JBSbatCH_M_SKNKSITKCM.SKNKSITKCM_NM);
			
			// 債権委託会社名マップ 
			// Key:債権回収委託会社コード Value:債権回収委託会社名
			this.sknItkCmpNmMap.put(sknksitkcmCd, sknksitkcmNm);
			
			dbMap = db_CH_M_SKNKSITKCM.selectNext();
		}
		assert this.sknItkCmpNmMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getSknItkCmpNmMap][sknItkCmpNmMap=" + this.sknItkCmpNmMap.toString() + "]") : true;

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getSknItkCmpNmMap]");
		
		return;
	}
	
	/**
	 * ステータス更新実施レコード検出時の料金対応記録情報を作成する
	 * @param inMap 入力電文
	 * @throws Exception
	 */
	private void makePrcInfStatUpd(JBSbatServiceInterfaceMap inMap) throws Exception 
	{
		String taioDtm = super.opeDate.concat(JCCBatCommon.getSysDateTimeStamp().substring(8));

		// 債権充当結果データ.督促ステータス変更フラグ == "変更あり"
		// 「督促ステータス変更」「不良顧客削除」の2レコード分、料金対応記録情報を作成する。
		// 条件により「利用停止解除」レコードも作成する。

		//債権充当結果データ.督促ステータス変更フラグ == "1"または"3"の場合のみ
		//料金対応記録情報（督促ステータス変更）を作成する。
		if(!statChgFlg.equals(JACStrConst.TOKUSOKU_STAT_CHG_DEL))
		{
			// 料金対応記録情報（督促ステータス変更）作成
			JBSbatServiceInterfaceMap tokusokuStatMap = new JBSbatServiceInterfaceMap();

			// 01. 請求契約番号
			tokusokuStatMap.setString(JBSbatCHIFM096.SEIKY_KEI_NO, 					inMap.getString(JBSbatCHIFM401.SEIKY_KEI_NO));
			// 02. サービス契約番号（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.SVC_KEI_NO, 					JACStrConst.KARA_MOJI);
			// 03. 対応年月日時分秒（バッチ運用日＋システム時刻）
			tokusokuStatMap.setString(JBSbatCHIFM096.TAIO_DTM, 						taioDtm);
			// 04. 料金対応記録種別コード（債権回収委託会社一括入金）
			tokusokuStatMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_CD, 		JACStrConst.PRC_TAIO_KRK_SBT_SKNKSITKCM_IKN_NYUKIN);
			// 05. 料金対応記録種別詳細コード（督促ステータス変更）
			tokusokuStatMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_DTL_CD, 	JACStrConst.PRC_TAIO_KIROK_SBT_DTL_TSSTA);
			// 06. 記録対象年月（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.KIROK_TG_YM, 					JACStrConst.KARA_MOJI);
			// 07. 督促番号（債権充当結果データ.督促番号）
			tokusokuStatMap.setString(JBSbatCHIFM096.TOKUSOKU_NO, 					inMap.getString(JBSbatCHIFM401.TOKUSOKU_NO));
			// 08. 督促異動番号（債権充当結果データ.督促異動番号）
			tokusokuStatMap.setString(JBSbatCHIFM096.TOKUSOKU_IDO_NO, 				inMap.getString(JBSbatCHIFM401.TOKUSOKU_IDO_NO));
			// 09. 請求番号（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.SEIKY_NO, 						JACStrConst.KARA_MOJI);
			// 10. 金庫番号（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.KNK_NO, 						JACStrConst.KARA_MOJI);
			// 11. 債権番号（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.SAIKEN_NO, 					JACStrConst.KARA_MOJI);
			// 12. 入金番号（債権充当結果データ.入金番号）
			tokusokuStatMap.setString(JBSbatCHIFM096.NYUKIN_NO, 					inMap.getString(JBSbatCHIFM401.NYUKIN_NO));
			// 13. 電子ファイル管理番号（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.EFILE_KANRI_NO, 				JACStrConst.KARA_MOJI);
			// 14. 対応履歴連動対象フラグ（対応履歴へ表示しない）
			tokusokuStatMap.setString(JBSbatCHIFM096.TAIORRKI_RENDO_TG_FLG, 		JACStrConst.TAIORRKI_RENDO_TG_FLG_HIHYOJI);
			// 15. 変更前金額（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.AMNT_CHBF, 					JACStrConst.KARA_MOJI);
			// 16. 変更後金額（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.AMNT_CHAF, 					JACStrConst.KARA_MOJI);
			// 17. 変更前督促ステータス（債権充当結果データ.変更前督促ステータス）
			tokusokuStatMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHBF, 			inMap.getString(JBSbatCHIFM401.TOKUSOKU_STAT_BF));
			// 18. 変更後督促ステータス（債権充当結果データ.変更後督促ステータス）
			tokusokuStatMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHAF, 			inMap.getString(JBSbatCHIFM401.TOKUSOKU_STAT_AF));
			// 19. 変更前金庫料金項目コード（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHBF, 			JACStrConst.KARA_MOJI);
			// 20. 変更後金庫料金項目コード（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHAF, 			JACStrConst.KARA_MOJI);
			// 21. 督促メールパターン（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.TOKUSOKU_ML_PTN_CD, 			JACStrConst.KARA_MOJI);
			// 22. 変更前補償費扱いフラグ（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHBF, 		JACStrConst.KARA_MOJI);
			// 23. 変更後補償費扱いフラグ（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHAF, 		JACStrConst.KARA_MOJI);
			// 24. 記事（固定値）
			tokusokuStatMap.setString(JBSbatCHIFM096.KIJI, 							JACStrConst.KARA_MOJI);

			// 出力レコードマップへ格納
			outputRecMap.put(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_TSSTA, tokusokuStatMap);
		}

		String nyukinStatCd = inMap.getString(JBSbatCHIFM401.NYUKIN_STAT);
		
		//債権充当結果データ.督促ステータス変更フラグ == "2"または"3"　かつ
		//債権充当結果データ.入金ステータス == "入金済み"の場合のみ、料金対応記録情報（不良顧客削除）作成
		if ((statChgFlg.equals(JACStrConst.TOKUSOKU_STAT_CHG_DEL) || statChgFlg.equals(JACStrConst.TOKUSOKU_STAT_CHG_ARI_DEL))
				&& nyukinStatCd.equals(JACStrConst.NYUKIN_STAT_ZUMI))
		{
			// 債権充当結果データ.入金ステータス == "入金済み"(通常充当)
			// 料金対応記録情報（不良顧客削除）作成
			JBSbatServiceInterfaceMap huryoDelMap = new JBSbatServiceInterfaceMap();

			//不良顧客の存在チェック
			// 検索条件の設定
			// 請求契約番号
			JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
			whereParam.setValue(inMap.getString(JBSbatCHIFM401.SEIKY_KEI_NO));

			executeCK_T_HURYO_CUST_CH_SELECT_003(whereParam.getList().toArray());
			// 検索結果取得
			JBSbatCommonDBInterface dbMap = db_CK_T_HURYO_CUST.selectNext();
			if (dbMap != null)
			{
				// 不良顧客が存在する場合のみ作成
			
				// 01. 請求契約番号（債権充当結果データ.請求契約番号）
				huryoDelMap.setString(JBSbatCHIFM096.SEIKY_KEI_NO, 					inMap.getString(JBSbatCHIFM401.SEIKY_KEI_NO));
				// 02. サービス契約番号（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.SVC_KEI_NO, 					JACStrConst.KARA_MOJI);
				// 03. 対応年月日時分秒（バッチ運用日＋システム時刻）
				huryoDelMap.setString(JBSbatCHIFM096.TAIO_DTM, 						taioDtm);
				// 04. 料金対応記録種別コード（債権回収委託会社一括入金）
				huryoDelMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_CD, 		JACStrConst.PRC_TAIO_KRK_SBT_SKNKSITKCM_IKN_NYUKIN);
				// 05. 料金対応記録種別詳細コード（不良顧客削除）
				huryoDelMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_DTL_CD, 	JACStrConst.PRC_TAIO_KIROK_SBT_DTL_HRKDL);
				// 06. 記録対象年月（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.KIROK_TG_YM, 					JACStrConst.KARA_MOJI);
				// 07. 督促番号（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.TOKUSOKU_NO, 					JACStrConst.KARA_MOJI);
				// 08. 督促異動番号（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.TOKUSOKU_IDO_NO, 				JACStrConst.KARA_MOJI);
				// 09. 請求番号（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.SEIKY_NO, 						JACStrConst.KARA_MOJI);
				// 10. 金庫番号（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.KNK_NO, 						JACStrConst.KARA_MOJI);
				// 11. 債権番号（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.SAIKEN_NO, 					JACStrConst.KARA_MOJI);
				// 12. 入金番号（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.NYUKIN_NO, 					JACStrConst.KARA_MOJI);
				// 13. 電子ファイル管理番号（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.EFILE_KANRI_NO, 				JACStrConst.KARA_MOJI);
				// 14. 対応履歴連動対象フラグ（対応履歴へ表示しない）
				huryoDelMap.setString(JBSbatCHIFM096.TAIORRKI_RENDO_TG_FLG, 		JACStrConst.TAIORRKI_RENDO_TG_FLG_HIHYOJI);
				// 15. 変更前金額（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.AMNT_CHBF, 					JACStrConst.KARA_MOJI);
				// 16. 変更後金額（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.AMNT_CHAF, 					JACStrConst.KARA_MOJI);
				// 17. 変更前督促ステータス（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHBF, 			JACStrConst.KARA_MOJI);
				// 18. 変更後督促ステータス（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHAF, 			JACStrConst.KARA_MOJI);
				// 19. 変更前金庫料金項目コード（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHBF, 			JACStrConst.KARA_MOJI);
				// 20. 変更後金庫料金項目コード（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHAF, 			JACStrConst.KARA_MOJI);
				// 21. 督促メールパターン（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.TOKUSOKU_ML_PTN_CD, 			JACStrConst.KARA_MOJI);
				// 22. 変更前補償費扱いフラグ（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHBF, 		JACStrConst.KARA_MOJI);
				// 23. 変更後補償費扱いフラグ（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHAF, 		JACStrConst.KARA_MOJI);
				// 24. 記事（固定値）
				huryoDelMap.setString(JBSbatCHIFM096.KIJI, JACStrConst.KARA_MOJI);
	
				// 出力レコードマップへ格納
				outputRecMap.put(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_HRKDL, huryoDelMap);
			}
		}

		String tokusokuStatBf = inMap.getString(JBSbatCHIFM401.TOKUSOKU_STAT_BF);
		
		//債権充当結果データ.変更前督促ステータス == "利用停止済"　かつ
		//債権充当結果データ.督促ステータス変更フラグ == "2"以外の場合のみ、料金対応記録情報（利用停止解除）作成
		if (tokusokuStatBf.equals(JACStrConst.TOKUSOKU_STAT_USE_STOP) && !statChgFlg.equals(JACStrConst.TOKUSOKU_STAT_CHG_DEL))
		{
			// 債権充当結果データ.変更前督促ステータス == "利用停止済"
			// 料金対応記録情報（利用停止解除）作成
			JBSbatServiceInterfaceMap stopRelMap = new JBSbatServiceInterfaceMap();

			// 01. 請求契約番号（債権充当結果データ.請求契約番号）
			stopRelMap.setString(JBSbatCHIFM096.SEIKY_KEI_NO, 				inMap.getString(JBSbatCHIFM401.SEIKY_KEI_NO));
			// 02. サービス契約番号（固定値）
			stopRelMap.setString(JBSbatCHIFM096.SVC_KEI_NO, 				JACStrConst.KARA_MOJI);
			// 03. 対応年月日時分秒（バッチ運用日＋システム時刻）
			stopRelMap.setString(JBSbatCHIFM096.TAIO_DTM, 					taioDtm);
			// 04. 料金対応記録種別コード（債権回収委託会社一括入金）
			stopRelMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_CD, 		JACStrConst.PRC_TAIO_KRK_SBT_SKNKSITKCM_IKN_NYUKIN);
			// 05. 料金対応記録種別詳細コード（利用停止解除）
			stopRelMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_DTL_CD, 	JACStrConst.PRC_TAIO_KIROK_SBT_DTL_RYTSK);
			// 06. 記録対象年月（固定値）
			stopRelMap.setString(JBSbatCHIFM096.KIROK_TG_YM, 				JACStrConst.KARA_MOJI);
			// 07. 督促番号（固定値）
			stopRelMap.setString(JBSbatCHIFM096.TOKUSOKU_NO, 				JACStrConst.KARA_MOJI);
			// 08. 督促異動番号（固定値）
			stopRelMap.setString(JBSbatCHIFM096.TOKUSOKU_IDO_NO, 			JACStrConst.KARA_MOJI);
			// 09. 請求番号（固定値）
			stopRelMap.setString(JBSbatCHIFM096.SEIKY_NO, 					JACStrConst.KARA_MOJI);
			// 10. 金庫番号（固定値）
			stopRelMap.setString(JBSbatCHIFM096.KNK_NO, 					JACStrConst.KARA_MOJI);
			// 11. 債権番号（固定値）
			stopRelMap.setString(JBSbatCHIFM096.SAIKEN_NO, 					JACStrConst.KARA_MOJI);
			// 12. 入金番号（債権充当結果データ.入金番号）
			stopRelMap.setString(JBSbatCHIFM096.NYUKIN_NO, 					inMap.getString(JBSbatCHIFM401.NYUKIN_NO));
			// 13. 電子ファイル管理番号（固定値）
			stopRelMap.setString(JBSbatCHIFM096.EFILE_KANRI_NO, 			JACStrConst.KARA_MOJI);
			// 14. 対応履歴連動対象フラグ（対応履歴へ表示しない）
			stopRelMap.setString(JBSbatCHIFM096.TAIORRKI_RENDO_TG_FLG, 		JACStrConst.TAIORRKI_RENDO_TG_FLG_HIHYOJI);
			// 15. 変更前金額（固定値）
			stopRelMap.setString(JBSbatCHIFM096.AMNT_CHBF, 					JACStrConst.KARA_MOJI);
			// 16. 変更後金額（固定値）
			stopRelMap.setString(JBSbatCHIFM096.AMNT_CHAF, 					JACStrConst.KARA_MOJI);
			// 17. 変更前督促ステータス（固定値）
			stopRelMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHBF, 		JACStrConst.KARA_MOJI);
			// 18. 変更後督促ステータス（固定値）
			stopRelMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHAF, 		JACStrConst.KARA_MOJI);
			// 19. 変更前金庫料金項目コード（固定値）
			stopRelMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHBF, 		JACStrConst.KARA_MOJI);
			// 20. 変更後金庫料金項目コード（固定値）
			stopRelMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHAF, 		JACStrConst.KARA_MOJI);
			// 21. 督促メールパターン（固定値）
			stopRelMap.setString(JBSbatCHIFM096.TOKUSOKU_ML_PTN_CD, 		JACStrConst.KARA_MOJI);
			// 22. 変更前補償費扱いフラグ（固定値）
			stopRelMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHBF, 		JACStrConst.KARA_MOJI);
			// 23. 変更後補償費扱いフラグ（固定値）
			stopRelMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHAF, 		JACStrConst.KARA_MOJI);
			// 24. 記事（固定値）
			stopRelMap.setString(JBSbatCHIFM096.KIJI, 						JACStrConst.KARA_MOJI);

			// 出力レコードマップへ格納
			outputRecMap.put(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_RYTSK, stopRelMap);
		}
	}
	
	/**
	 * 「金庫登録」の料金対応記録情報を作成する
	 * @param inMap 入力電文
	 * @throws Exception
	 */
	private void makePrcInfKinko(JBSbatServiceInterfaceMap inMap) throws Exception 
	{
		String taioDtm = super.opeDate.concat(JCCBatCommon.getSysDateTimeStamp().substring(8));
		String nyukinStatCd = inMap.getString(JBSbatCHIFM401.NYUKIN_STAT);
		if (nyukinStatCd.equals(JACStrConst.NYUKIN_STAT_ZUMI))
		{
			// 債権充当結果データ.入金ステータス == "入金済み"(通常充当)
			// 料金対応記録情報（金庫登録）作成
			JBSbatServiceInterfaceMap kinkoMap = new JBSbatServiceInterfaceMap();
			
			// 01. 請求契約番号（債権充当結果データ.請求契約番号）
			kinkoMap.setString(JBSbatCHIFM096.SEIKY_KEI_NO, 				inMap.getString(JBSbatCHIFM401.SEIKY_KEI_NO));
			// 02. サービス契約番号（固定値）
			kinkoMap.setString(JBSbatCHIFM096.SVC_KEI_NO, 					JACStrConst.KARA_MOJI);
			// 03. 対応年月日時分秒（バッチ運用日＋システム時刻）
			kinkoMap.setString(JBSbatCHIFM096.TAIO_DTM, 					taioDtm);
			// 04. 料金対応記録種別コード（債権回収委託会社一括入金）
			kinkoMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_CD, 		JACStrConst.PRC_TAIO_KRK_SBT_SKNKSITKCM_IKN_NYUKIN);
			// 05. 料金対応記録種別詳細コード（金庫登録）
			kinkoMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_DTL_CD, 	JACStrConst.PRC_TAIO_KIROK_SBT_DTL_KINKO);
			// 06. 記録対象年月（固定値）
			kinkoMap.setString(JBSbatCHIFM096.KIROK_TG_YM, 					JACStrConst.KARA_MOJI);
			// 07. 督促番号（固定値）
			kinkoMap.setString(JBSbatCHIFM096.TOKUSOKU_NO, 					JACStrConst.KARA_MOJI);
			// 08. 督促異動番号（固定値）
			kinkoMap.setString(JBSbatCHIFM096.TOKUSOKU_IDO_NO, 				JACStrConst.KARA_MOJI);
			// 09. 請求番号（固定値）
			kinkoMap.setString(JBSbatCHIFM096.SEIKY_NO, 					JACStrConst.KARA_MOJI);
			// 10. 金庫番号（債権充当結果データ.金庫番号）
			kinkoMap.setString(JBSbatCHIFM096.KNK_NO, 						inMap.getString(JBSbatCHIFM401.KNK_NO));
			// 11. 債権番号（固定値）
			kinkoMap.setString(JBSbatCHIFM096.SAIKEN_NO, 					JACStrConst.KARA_MOJI);
			// 12. 入金番号（債権充当結果データ.入金番号）
			kinkoMap.setString(JBSbatCHIFM096.NYUKIN_NO, 					inMap.getString(JBSbatCHIFM401.NYUKIN_NO));
			// 13. 電子ファイル管理番号（固定値）
			kinkoMap.setString(JBSbatCHIFM096.EFILE_KANRI_NO, 				JACStrConst.KARA_MOJI);
			// 14. 対応履歴連動対象フラグ（対応履歴へ表示しない）
			kinkoMap.setString(JBSbatCHIFM096.TAIORRKI_RENDO_TG_FLG, 		JACStrConst.TAIORRKI_RENDO_TG_FLG_HIHYOJI);
			// 15. 変更前金額（固定値）
			kinkoMap.setString(JBSbatCHIFM096.AMNT_CHBF, 					JACStrConst.KARA_MOJI);
			// 16. 変更後金額（債権充当結果データ.金額）
			kinkoMap.set(JBSbatCHIFM096.AMNT_CHAF, 							inMap.get(JBSbatCHIFM401.AMNT));
			// 17. 変更前督促ステータス（固定値）
			kinkoMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHBF, 			JACStrConst.KARA_MOJI);
			// 18. 変更後督促ステータス（固定値）
			kinkoMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHAF, 			JACStrConst.KARA_MOJI);
			// 20. 変更後料金グループコード（固定値）
			kinkoMap.setString(JBSbatCHIFM096.PRC_GRP_CD_CHAF, 				JACStrConst.PRC_GRP_CD_SP);
			// 22. 変更後料金コースコード（固定値）
			kinkoMap.setString(JBSbatCHIFM096.PCRS_CD_CHAF, 				JACStrConst.PCRS_CD_SP);
			// 24. 変更後料金サービスコード（固定値）
			kinkoMap.setString(JBSbatCHIFM096.PRC_SVC_CD_CHAF, 				JACStrConst.PRC_SVC_CD_SP);
			// 25. 変更前金庫料金項目コード（固定値）
			kinkoMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHBF, 			JACStrConst.KARA_MOJI);
			// 26. 変更後金庫料金項目コード（債権充当結果データ.料金項目コード）
			kinkoMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHAF, 			inMap.getString(JBSbatCHIFM401.PRC_KMK_CD));
			// 27. 督促メールパターン（固定値）
			kinkoMap.setString(JBSbatCHIFM096.TOKUSOKU_ML_PTN_CD, 			JACStrConst.KARA_MOJI);
			// 28. 変更前補償費扱いフラグ（固定値）
			kinkoMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHBF, 		JACStrConst.KARA_MOJI);
			// 29. 変更後補償費扱いフラグ（固定値）
			kinkoMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHAF, 		JACStrConst.KARA_MOJI);
			// 32. 記事（固定値）
			kinkoMap.setString(JBSbatCHIFM096.KIJI, 						JACStrConst.KARA_MOJI);
			
			// 出力レコードマップへ格納
			outputRecMap.put(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_KINKO, kinkoMap);
		}
	}
	
	/**
	 * 「手動入金」の料金対応記録情報を作成する
	 * @param inMap 入力電文
	 * @throws Exception
	 */
	private void makePrcInfManNyukin(JBSbatServiceInterfaceMap inMap) throws Exception 
	{
		String taioDtm = super.opeDate.concat(JCCBatCommon.getSysDateTimeStamp().substring(8));
		String nyukinStatCd = inMap.getString(JBSbatCHIFM401.NYUKIN_STAT);
		if (nyukinStatCd.equals(JACStrConst.NYUKIN_STAT_ZUMI))
		{
			// 債権充当結果データ.入金ステータス == "入金済み"(通常充当)
			// 料金対応記録情報（手動入金）作成
			JBSbatServiceInterfaceMap manNyukinMap = new JBSbatServiceInterfaceMap();
			
			// 01. 請求契約番号（債権充当結果データ.請求契約番号）
			manNyukinMap.setString(JBSbatCHIFM096.SEIKY_KEI_NO, 				inMap.getString(JBSbatCHIFM401.SEIKY_KEI_NO));
			// 02. サービス契約番号（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.SVC_KEI_NO, 					JACStrConst.KARA_MOJI);
			// 03. 対応年月日時分秒（バッチ運用日＋システム時刻）
			manNyukinMap.setString(JBSbatCHIFM096.TAIO_DTM, 					taioDtm);
			// 04. 料金対応記録種別コード（債権回収委託会社一括入金）
			manNyukinMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_CD, 		JACStrConst.PRC_TAIO_KRK_SBT_SKNKSITKCM_IKN_NYUKIN);
			// 05. 料金対応記録種別詳細コード（手動入金）
			manNyukinMap.setString(JBSbatCHIFM096.PRC_TAIO_KIROK_SBT_DTL_CD, 	JACStrConst.TKRK_SBTD_MANUAL_NYUKIN);
			// 06. 記録対象年月（債権充当結果データ．請求年月）
			manNyukinMap.setString(JBSbatCHIFM096.KIROK_TG_YM, 					inMap.getString(JBSbatCHIFM401.SEIKY_YM));
			// 07. 督促番号（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.TOKUSOKU_NO, 					JACStrConst.KARA_MOJI);
			// 08. 督促異動番号（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.TOKUSOKU_IDO_NO, 				JACStrConst.KARA_MOJI);
			// 09. 請求番号（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.SEIKY_NO, 					JACStrConst.KARA_MOJI);
			// 10. 金庫番号（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.KNK_NO, 						JACStrConst.KARA_MOJI);
			// 11. 債権番号（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.SAIKEN_NO, 					JACStrConst.KARA_MOJI);
			// 12. 入金番号（債権充当結果データ.入金番号）
			manNyukinMap.setString(JBSbatCHIFM096.NYUKIN_NO, 					inMap.getString(JBSbatCHIFM401.NYUKIN_NO));
			// 13. 電子ファイル管理番号（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.EFILE_KANRI_NO, 				JACStrConst.KARA_MOJI);
			// 14. 対応履歴連動対象フラグ（対応履歴へ表示しない）
			manNyukinMap.setString(JBSbatCHIFM096.TAIORRKI_RENDO_TG_FLG, 		JACStrConst.TAIORRKI_RENDO_TG_FLG_HIHYOJI);
			// 15. 変更前金額（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.AMNT_CHBF, 					JACStrConst.KARA_MOJI);
			// 16. 変更後金額（債権充当結果データ.金額）
			manNyukinMap.set(JBSbatCHIFM096.AMNT_CHAF, 							inMap.get(JBSbatCHIFM401.AMNT));
			// 17. 変更前督促ステータス（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHBF, 			JACStrConst.KARA_MOJI);
			// 18. 変更後督促ステータス（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.TOKUSOKU_STAT_CHAF, 			JACStrConst.KARA_MOJI);
			// 19. 変更前金庫料金項目コード（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHBF, 			JACStrConst.KARA_MOJI);
			// 20. 変更後金庫料金項目コード（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.KNK_PRC_KMK_CD_CHAF, 			JACStrConst.KARA_MOJI);
			// 21. 督促メールパターン（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.TOKUSOKU_ML_PTN_CD, 			JACStrConst.KARA_MOJI);
			// 22. 変更前補償費扱いフラグ（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHBF, 		JACStrConst.KARA_MOJI);
			// 23. 変更後補償費扱いフラグ（固定値）
			manNyukinMap.setString(JBSbatCHIFM096.COMPENSATION_FLG_CHAF, 		JACStrConst.KARA_MOJI);
			
			// 24. 記事（債権回収委託会社入金結果リスト.債権委託会社名 + "全角スペース" + 債権回収委託会社入金結果リスト.記事）
			String sknksitkcmCd = inMap.getString(JBSbatCHIFM401.SKNKSITKCM_CD);
			String sknksitkcmkiji = inMap.getString(JBSbatCHIFM401.KIJI);
			
			if(this.sknItkCmpNmMap.containsKey(sknksitkcmCd))
			{
				String kijiSknItkCmCd = JACStrConst.DOUBLE_QUOTE + sknksitkcmCd + JACStrConst.DOUBLE_QUOTE;
				String kijiSknItkCmNm = JBSbatKKConst.STR_STA_KAKKO + this.sknItkCmpNmMap.get(sknksitkcmCd) + JBSbatKKConst.STR_END_KAKKO;
				
				String Kiji = makeStr(kijiSknItkCmCd, kijiSknItkCmNm, JACStrConst.FULL_SPACE_1, sknksitkcmkiji);
				
				manNyukinMap.setString(JBSbatCHIFM096.KIJI, 					Kiji);
			}
			// 債権回収委託会社マスタに存在しない債権回収委託会社コードの場合
			else
			{
				manNyukinMap.setString(JBSbatCHIFM096.KIJI, 					JACStrConst.KARA_MOJI);
				// ログ出力（【エラー】ＤＢ未存在エラー）
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW,
						new String[] {JBSbatCH_M_SKNKSITKCM.TABLE_NAME, sknksitkcmCd});
			}
			
			// 出力レコードマップへ格納
			outputRecMap.put(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_MAN, manNyukinMap);
		}
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		
		// DBアクセスクラスをクローズします
		db_CH_M_PRC_KMK_CS_CHGE.close();
		db_CH_M_SKNKSITKCM.close();
		db_CK_T_HURYO_CUST.close();
		
		// 出力電文の残りを出力
		executeRemainRecord();
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 文字を連結します
	 * @param  string 文字
	 * @return strBuf 連結した文字列
	 */
	private String makeStr(String ...string)
	{
		StringBuffer strBuf = new StringBuffer();
		for(String str:string)
		{
			if(str == null)
			{
				strBuf.append(JACStrConst.KARA_MOJI);
			}
			else
			{
				strBuf.append(str);
			}
		}
		return strBuf.toString();
	}
	
	/**
	 * SQLKEY(CH_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 executeCH_M_PRC_KMK_CS_CHGE_CH_SELECT_012(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_CH_M_PRC_KMK_CS_CHGE.selectBySqlDefine(paramList, CH_M_PRC_KMK_CS_CHGE_CH_SELECT_012);
	}
	
	/**
	 * SQLKEY(CH_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 executeCH_M_SKNKSITKCM_CH_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		
		// DBアクセスを実行します
		db_CH_M_SKNKSITKCM.selectBySqlDefine(paramList, CH_M_SKNKSITKCM_CH_SELECT_002);
	}
	
	/**
	 * SQLKEY(CH_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 executeCK_T_HURYO_CUST_CH_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CK_T_HURYO_CUST.selectBySqlDefine(paramList, CK_T_HURYO_CUST_CH_SELECT_003);
	}
}
