/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHKhriFailIcrnMake
*	ソースファイル名	：JBSbatCHKhriFailIcrnMake.java
*	作成者				：富士通　
*	作成日				：2011年09月27日
*＜機能概要＞
*　口座振替不能者一覧作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/27   富士通		新規作成
*	v4.00.00	2013/05/01   FJ)高川	【TG1-2013-0000275】突合試験不一致対応
*	V5.00.00	2013/10/09   FJ)前田	【OM-2013-0002955】口座振替手続不備結果コードを口座振替手続不能者コードを見に行くように修正
*	V67.00.00	2023/05/29   FJ)永江	【ANK-4415-00-00】口振請求及びWeb申込システム移行 STEP1
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCHbatSeikyKaknoBusinessUtil;
import eo.business.util.file.JBSbatCHIFE031;
import eo.business.util.file.JBSbatCHIFM001;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.common.constant.JACStrConst;
import eo.common.constant.JDKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.constant.JZM0171Constant;
import eo.common.util.JPCUtilCommon;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatBusinessFileUtil;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* 口座振替不能者一覧作成 <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHKhriFailIcrnMake extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";
	// ANK-4415-00-00 ADD START
	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";
	// ANK-4415-00-00 ADD END
	/** SQL定義キー(CH_SELECT_005)*/
	private static final String ZM_M_CD_NM_KANRI_CH_SELECT_005 = "CH_SELECT_005";
	// ANK-4415-00-00 ADD START
	/** SQL定義キー(CH_INSERT_001)*/
	private static final String ZM_T_DL_FILE_KANRI_CH_INSERT_001 = "CH_INSERT_001";
	// ANK-4415-00-00 ADD END
	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	// ANK-4415-00-00 ADD START
	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	// ANK-4415-00-00 ADD END
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**▼▼▼▼▼▼クラス変数追加 開始▼▼▼▼▼▼*/
	
	/** 口座振替不能結果コードマップ */
	private HashMap<String, String> khriFailRsltMap = null;
	
	/** 前回金融機関コード */
	private String prvBankCd = JACStrConst.KARA_MOJI;
	
	/** 前回支店コード */
	private String prvShitenCd = JACStrConst.KARA_MOJI;
	
	/** 支店名ラベル */
	private static final String SHITEN_NM_LABEL = "支店：";
	// ANK-4415-00-00 ADD START
	/** ファイルコード */
	private static final String FILE_CD = "0000";
	
	/** 処理管理番号 */
	private static final String TRN_KANRI_NO = "000000000262";
	
	/** 出力ファイル名編集用 */
	private static final String CHLST602_FILE_NM = "口座振替不能者一覧表_YYYYMM.csv";
	
	/** ヘッダチェック数 */
	public static final int HEAD_CHK_CNT = 0;
	
	/** レコード件数（ＳＭＢＣＦＳ） */
	private int chlst602Cnt = 0;
	
	/** ヘッダ編集用＿金融機関コード */
	private static final String H_BANK_CD = "金融機関コード";
	
	/** ヘッダ編集用＿金融機関名 */
	private static final String H_BANK_NM = "金融機関名";
	
	/** ヘッダ編集用＿支店コード */
	private static final String H_SHITEN_CD = "支店コード";
	
	/** ヘッダ編集用＿支店名 */
	private static final String H_SHITEN_NM = "支店名";
	
	/** ヘッダ編集用＿請求先番号 */
	private static final String H_SEIKY_SAKI_NO = "請求先番号";
	
	/** ヘッダ編集用＿請求先名 */
	private static final String H_SEIKY_SAKI = "請求先名";
	
	/** ヘッダ編集用＿請求月 */
	private static final String H_SEIKY_MON = "請求月";
	
	/** ヘッダ編集用＿種目-番号 */
	private static final String H_SHUMOKU_KOZA_NO = "種目-番号";
	
	/** ヘッダ編集用＿口座名義人 */
	private static final String H_KOZA_MEIGIN = "口座名義人";
	
	/** ヘッダ編集用＿請求金額 */
	private static final String H_SEIKY_AMNT = "請求金額";
	
	/** ヘッダ編集用＿振替結果コード */
	private static final String H_KHRI_RSLT_CD = "振替結果コード";
	
	/** ヘッダ編集用＿振替結果 */
	private static final String H_KHRI_RSLT_NM = "振替結果";
	
	/** フリー項目 */
	private String[] freeItems = null;
	
	/** 口座振替不能者一覧ファイルパス */
	private String chlst602FilePath = null;
	
	/** 口座振替不能者一覧ファイルオブジェクト */
	private JBSbatBusinessFileUtil chlst602FileObj = null;
	
	/** タイムスタンプ変換用 */
	private static final String FILE_TIMESTAMP_FORMAT = "YYYYMM";
	
	/** ファイル名編集用＿年月日 */
	private String sysDate = null;
	
	/** ファイル名編集用＿年月 */
	private String sysMonth = null;
	// ANK-4415-00-00 ADD END
	/**▲▲▲▲▲▲クラス変数追加 終了▲▲▲▲▲▲*/
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		// ANK-4415-00-00 ADD START
		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		// ANK-4415-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][freeItem=" + super.freeItem + "]");
		
		// 口座振替不能結果コードマップに値を設定
		setKhriFailRsltMap();
		
		// ANK-4415-00-00 ADD START
		// 口座振替不能者一覧ファイルのヘッダ部を設定する
		makeOutputHeadInfo();
		// ANK-4415-00-00 ADD END
		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]");
		
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
		// 口座振替不能結果コードマップに入力．振替結果コードが含まれる場合
		if(khriFailRsltMap.containsKey(inMap.getString(JBSbatCHIFM001.KHRI_RSLT_CD)))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][口座振替不能結果コードマップに入力．振替結果コードが含まれる場合]");
			
			// ANK-4415-00-00 ADD START
			if(JACStrConst.SHNKKNCD_BANK_KOZA_CREAR.equals(inMap.getString(JBSbatCHIFM001.SYUNO_KIKN_CD))
				 || (JACStrConst.SHNKKNCD_BANK_KOZA_YUCHO_CP.equals(inMap.getString(JBSbatCHIFM001.SYUNO_KIKN_CD))))
			{
			// ANK-4415-00-00 ADD END
				outputItem.addOutMapList(makeOutputInfo(inMap));
			// ANK-4415-00-00 ADD START
			}
			else if(JACStrConst.SHNKKNCD_BANK_KOZA_SMBCFS.equals(inMap.getString(JBSbatCHIFM001.SYUNO_KIKN_CD))
				 || (JACStrConst.SHNKKNCD_BANK_KOZA_YUCHO_SMBCFS.equals(inMap.getString(JBSbatCHIFM001.SYUNO_KIKN_CD))))
			{
				makeOutputDwnInfo(inMap);
			}
			// ANK-4415-00-00 ADD END
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// ANK-4415-00-00 ADD START
		//電子ファイル管理、ダウンロードリスト登録処理
		insertOutputDwnInfo();
		// ANK-4415-00-00 ADD END
		// DBアクセスクラスをクローズします
		db_ZM_M_CD_NM_KANRI.close();
		// ANK-4415-00-00 ADD START
		db_ZM_T_DL_FILE_KANRI.close();
		// ANK-4415-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	
	/**▼▼▼▼▼▼メソッド追加 開始▼▼▼▼▼▼*/
	
	/**
	 * 口座振替不能結果コードマップに値を設定します。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void setKhriFailRsltMap() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setKhriFailRsltMap]");
		
		khriFailRsltMap = new HashMap<String, String>();
		
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		
		// コード種別コード
		whereParam.setValue(JZM0171Constant.CD01599);
		// 適用開始年月日
		whereParam.setValue(opeDate);
		// 適用終了年月日
		whereParam.setValue(opeDate);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setKhriFailRsltMap][" + whereParam.getList().toString() + "]");
		
		// SQL実行
		executeZM_M_CD_NM_KANRI_CH_SELECT_005(whereParam.getList().toArray());
		
		// 検索結果取得
		JBSbatCommonDBInterface cdNmMap = db_ZM_M_CD_NM_KANRI.selectNext();
		
		// 取得できなかった場合
		if(cdNmMap == null)
		{
			// ログ出力
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW,
					new String[] {JBSbatZM_M_CD_NM_KANRI.TABLE_NAME, whereParam.getList().toString()});
		}
		// 上記以外の場合
		else
		{
			while(cdNmMap != null)
			{
				// 口座振替不能結果コードマップに検索結果を設定
				khriFailRsltMap.put(cdNmMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV), cdNmMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM));
			
				cdNmMap = db_ZM_M_CD_NM_KANRI.selectNext();
			}
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setKhriFailRsltMap][" + khriFailRsltMap.toString() + "]");
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setKhriFailRsltMap]");
		
		return;
	}
	
	/**
	 * 出力情報を作成します。
	 * 
	 * @param inMap 入力情報
	 * @return JBSbatServiceInterfaceMap 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap makeOutputInfo(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		JBSbatServiceInterfaceMap outBean = new JBSbatServiceInterfaceMap();
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputFile]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputFile][prvBankCd=" + prvBankCd + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputFile][prvShitenCd=" + prvShitenCd + "]");
		
		// 金融機関コード
		String bankCd = inMap.getString(JBSbatCHIFM001.BANK_CD);
		// 支店コード
		String shitenCd = inMap.getString(JBSbatCHIFM001.SHITEN_CD);
		// 支店名ラベル
		String shitenNmLabel = JACStrConst.KARA_MOJI;
		// 支店名
		String shitenNm = JACStrConst.KARA_MOJI;
		// 種目-番号用連結文字
		String conStr = JACStrConst.KARA_MOJI;
		
		// 前回金融機関コード＝入力．金融機関コード　かつ　前回支店コード＝入力．支店コードの場合
		if(prvBankCd.equals(bankCd) && prvShitenCd.equals(shitenCd))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputFile][前回金融機関コード＝入力．金融機関コード　かつ　前回支店コード＝入力．支店コードの場合]");
			
			// 空文字を設定
			shitenCd = JACStrConst.KARA_MOJI;
		}
		// 上記以外の場合
		else
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputFile][前回金融機関コード≠入力．金融機関コード　または　前回支店コード≠入力．支店コードの場合]");
			
			shitenNmLabel = SHITEN_NM_LABEL;
			shitenNm = inMap.getString(JBSbatCHIFM001.SHITEN_NM);
		}
		
		// 金融機関が郵便局の場合
		if(JACStrConst.BANK_CD_YUBIN.equals(bankCd))
		{
			conStr = JACStrConst.SPACE_1;
		}
		// 上記以外の場合
		else
		{
			conStr = JACStrConst.HYPHEN;
		}
		
		// 金融機関コード
		outBean.set(JBSbatCHIFE031.BANK_CD, bankCd);
		// 金融機関名
		outBean.set(JBSbatCHIFE031.BANK_NM, inMap.getString(JBSbatCHIFM001.BANK_NM));
		// 支店名ラベル
		outBean.set(JBSbatCHIFE031.SHITEN_LABEL, shitenNmLabel);
		// 支店コード
		outBean.set(JBSbatCHIFE031.SHITEN_CD, shitenCd);
		// 支店名
		outBean.set(JBSbatCHIFE031.SHITEN_NM, shitenNm);
		// 請求先番号
		outBean.set(JBSbatCHIFE031.SEIKY_SAKI_NO, inMap.getString(JBSbatCHIFM001.SEIKY_KEI_NO));
		// 請求先名
		outBean.set(JBSbatCHIFE031.SEIKY_SAKI, inMap.getString(JBSbatCHIFM001.SEIKY_SAKI));
		// 請求月
		outBean.set(JBSbatCHIFE031.SEIKY_MON, JPCUtilCommon.formatDate(inMap.getString(JBSbatCHIFM001.SEIKY_YM).concat("01")).substring(0, 7));
		// 種目-番号
		outBean.set(JBSbatCHIFE031.SHUMOKU_KOZA_NO, inMap.getString(JBSbatCHIFM001.YOKIN_KAMOKU).concat(conStr).concat(inMap.getString(JBSbatCHIFM001.KOZA_NO)));
		// 口座名義人
		outBean.set(JBSbatCHIFE031.KOZA_MEIGIN, inMap.getString(JBSbatCHIFM001.KOZA_MEIGIN));
		// 請求金額
		outBean.set(JBSbatCHIFE031.SEIKY_AMNT, JPCUtilCommon.formatNumber(inMap.getBigDecimal(JBSbatCHIFM001.DEBIT_AMNT).toString()));
		// 振替結果コード
		outBean.set(JBSbatCHIFE031.KHRI_RSLT_CD, inMap.getString(JBSbatCHIFM001.KHRI_RSLT_CD));
		// 振替結果
		outBean.set(JBSbatCHIFE031.KHRI_RSLT_NM, khriFailRsltMap.get(inMap.getString(JBSbatCHIFM001.KHRI_RSLT_CD)));
		
		// 出力情報を""で囲む
		outBean.setMap(JCHbatSeikyKaknoBusinessUtil.quote(outBean.getMap(), JACStrConst.DOUBLE_QUOTE, JACStrConst.DOUBLE_QUOTE));
		
		outBean.setOutFlg(true);
		
		// 前回金融機関コード更新
		prvBankCd = bankCd;
		// 前回支店コード更新
		prvShitenCd = inMap.getString(JBSbatCHIFM001.SHITEN_CD);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputFile]");
		
		return outBean;
	}
// ANK-4415-00-00 ADD START
	/**
	 * 出力情報（ダウンロードリストのヘッダ部）を作成します。
	 * 
	 * @param inMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void makeOutputHeadInfo() throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputDwnFile]");
		
		// フリー項目を取得する
		freeItems = freeItem.split(JACStrConst.FREE_DIV);
		
		// システム日時を取得する
		sysDate = JCCBatCommon.getSysDate();
		sysMonth = sysDate.substring(0,6);
		
		// 口座振替不能者一覧ファイルのファイルパス
		chlst602FilePath = freeItems[0] + CHLST602_FILE_NM.replace(FILE_TIMESTAMP_FORMAT, sysMonth);
		
		// 口座振替不能者一覧ファイルのファイルオブジェクト
		chlst602FileObj = JCCBatCommon.createBusinessFileUtil(
				chlst602FilePath, JACStrConst.ENCODE_SJIS, JACStrConst.LINE_SEPARATOR, JACStrConst.COMMA);
		
		if(HEAD_CHK_CNT == chlst602Cnt)
		{
			// 口座振替不能者一覧ファイルにヘッダ部を出力する
			ArrayList<String> headerInfo = new ArrayList<String>();
			// 金融機関コード
			headerInfo.add(H_BANK_CD);
			// 金融機関名
			headerInfo.add(H_BANK_NM);
			// 支店コード
			headerInfo.add(H_SHITEN_CD);
			// 支店名
			headerInfo.add(H_SHITEN_NM);
			// 請求先番号
			headerInfo.add(H_SEIKY_SAKI_NO);
			// 請求先名
			headerInfo.add(H_SEIKY_SAKI);
			// 請求月
			headerInfo.add(H_SEIKY_MON);
			// 種目-番号
			headerInfo.add(H_SHUMOKU_KOZA_NO);
			// 口座名義人
			headerInfo.add(H_KOZA_MEIGIN);
			// 請求金額
			headerInfo.add(H_SEIKY_AMNT);
			// 振替結果コード
			headerInfo.add(H_KHRI_RSLT_CD);
			// 振替結果
			headerInfo.add(H_KHRI_RSLT_NM);
		
			JCCBatCommon.printDoubleQuoteBusinessFileUtil(chlst602FileObj, headerInfo);
		
			// 出力件数カウントアップ
			chlst602Cnt++;
		}
	}
	
	/**
	 * 出力情報（ダウンロードリスト）を作成します。
	 * 
	 * @param inMap 入力情報
	 * @return JBSbatServiceInterfaceMap 出力情報（ダウンロードリスト）
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void makeOutputDwnInfo(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputDwnFile]");
		
		// 金融機関コード
		String bankCd = inMap.getString(JBSbatCHIFM001.BANK_CD);
		// 支店コード
		String shitenCd = inMap.getString(JBSbatCHIFM001.SHITEN_CD);
		// 支店名
		String shitenNm = inMap.getString(JBSbatCHIFM001.SHITEN_NM);
		// 種目-番号用連結文字
		String conStr = JACStrConst.KARA_MOJI;
		
		// 金融機関が郵便局の場合
		if(JACStrConst.BANK_CD_YUBIN.equals(bankCd))
		{
			conStr = JACStrConst.SPACE_1;
		}
		// 上記以外の場合
		else
		{
			conStr = JACStrConst.HYPHEN;
		}
		
		ArrayList<String> dataInfo = new ArrayList<String>();

		// 金融機関コード
		dataInfo.add(JBSbatStringUtil.Rtrim(bankCd));
		// 金融機関名
		dataInfo.add(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCHIFM001.BANK_NM)));
		// 支店コード
		dataInfo.add(JBSbatStringUtil.Rtrim(shitenCd));
		// 支店名
		dataInfo.add(JBSbatStringUtil.Rtrim(shitenNm));
		// 請求先番号
		dataInfo.add(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCHIFM001.SEIKY_KEI_NO)));
		// 請求先名
		dataInfo.add(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCHIFM001.SEIKY_SAKI)));
		// 請求月
		dataInfo.add(JPCUtilCommon.formatDate(inMap.getString(JBSbatCHIFM001.SEIKY_YM).concat("01")).substring(0, 7));
		// 種目-番号
		dataInfo.add(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCHIFM001.YOKIN_KAMOKU).concat(conStr).concat(inMap.getString(JBSbatCHIFM001.KOZA_NO))));
		// 口座名義人
		dataInfo.add(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCHIFM001.KOZA_MEIGIN)));
		// 請求金額
		dataInfo.add(JPCUtilCommon.formatNumber(inMap.getBigDecimal(JBSbatCHIFM001.DEBIT_AMNT).toString()));
		// 振替結果コード
		dataInfo.add(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatCHIFM001.KHRI_RSLT_CD)));
		// 振替結果
		dataInfo.add(JBSbatStringUtil.Rtrim(khriFailRsltMap.get(inMap.getString(JBSbatCHIFM001.KHRI_RSLT_CD))));
		
		JCCBatCommon.printDoubleQuoteBusinessFileUtil(chlst602FileObj, dataInfo);
		
		// 出力件数カウントアップ
		chlst602Cnt++;
	}	
	
	/**
	 * 出力情報（ダウンロードリスト）を登録します。
	 * 
	 * @param inMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void insertOutputDwnInfo() throws Exception
	{
		// ファイルをクローズする
		JCCBatCommon.closeBusinessFileUtil(chlst602FileObj);

		// 電子ファイル管理登録処理
		JBSbatCommonItem arg0 = commonItem;								// 業務共通電文
		String arg1 = FILE_CD;											// ファイルコード
		String arg2 = chlst602FilePath;									// ファイルパス
		String arg3 = JBSbatDateUtil.adjustMonth(super.opeDate, 3);		// ファイル削除年月日（運用日付 + 3ヶ月）
		String[] rc = JCCBatCommon.createDenshiFile(arg0, arg1, arg2, arg3);
		
		// ログ出力
		super.logPrint.printDebugLog("電子ファイル管理番号(" + rc[0] +  ")、世代登録年月日時分秒(" + rc[1] + ")");
		
		// ダウンロードファイル管理登録処理
		String[] setParam = new String[5];
		String chlst60FileName = CHLST602_FILE_NM.replace(FILE_TIMESTAMP_FORMAT, sysMonth);
		setParam[0] = TRN_KANRI_NO;							// 処理管理番号
		setParam[1] = chlst60FileName;						// ファイル名
		setParam[2] = String.valueOf(chlst602Cnt);			// データ件数
		setParam[3] = rc[0];								// 電子ファイル管理番号
		setParam[4] = rc[1];								// 世代登録年月日時分秒
		executeZM_T_DL_FILE_KANRI_CH_INSERT_001(setParam);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputFile]");
		
	}	
// ANK-4415-00-00 ADD END
	
	/**▲▲▲▲▲▲メソッド追加 終了▲▲▲▲▲▲*/
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * SQLKEY(CH_SELECT_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	コード種別コード
	 *		 	適用開始年月日
	 *		 	適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_CD_NM_KANRI_CH_SELECT_005(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_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_CH_SELECT_005);
	}
// ANK-4415-00-00 ADD START
	/**
	 * SQLKEY(CH_INSERT_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 executeZM_T_DL_FILE_KANRI_CH_INSERT_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());

		// DBアクセスを実行します
		db_ZM_T_DL_FILE_KANRI.executeBySqlDefine(paramList, ZM_T_DL_FILE_KANRI_CH_INSERT_001);
	}
// ANK-4415-00-00 ADD END
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
